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:
authorRebecca Turner <me@re-becca.org>2015-05-22 11:33:46 +0300
committerRebecca Turner <me@re-becca.org>2015-06-26 03:27:03 +0300
commitd3c858ce4cfb3aee515bb299eb034fe1b5e44344 (patch)
treee7714c839934a729b68038f4c7dc5ec3ed877638 /node_modules/request
parent24564b9654528d23c726cf9ea82b1aef2044b692 (diff)
deps: deduplicate npm@3 style
Diffstat (limited to 'node_modules/request')
l---------node_modules/request/node_modules/.bin/har-validator1
l---------node_modules/request/node_modules/.bin/uuid1
-rw-r--r--node_modules/request/node_modules/aws-sign2/LICENSE55
-rw-r--r--node_modules/request/node_modules/aws-sign2/README.md4
-rw-r--r--node_modules/request/node_modules/aws-sign2/index.js202
-rw-r--r--node_modules/request/node_modules/aws-sign2/package.json30
-rw-r--r--node_modules/request/node_modules/bl/.npmignore1
-rw-r--r--node_modules/request/node_modules/bl/.travis.yml11
-rw-r--r--node_modules/request/node_modules/bl/LICENSE.md13
-rw-r--r--node_modules/request/node_modules/bl/README.md198
-rw-r--r--node_modules/request/node_modules/bl/bl.js216
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore5
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE18
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/README.md15
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js1
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js89
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js46
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js982
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js210
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js386
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md3
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch604
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js107
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json37
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js106
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md54
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js209
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json19
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js3
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json38
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore2
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE20
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md7
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js221
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json34
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/package.json46
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js1
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js8
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js1
-rw-r--r--node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js1
-rw-r--r--node_modules/request/node_modules/bl/package.json45
-rw-r--r--node_modules/request/node_modules/bl/test/basic-test.js541
-rw-r--r--node_modules/request/node_modules/bl/test/sauce.js38
-rw-r--r--node_modules/request/node_modules/bl/test/test.js9
-rw-r--r--node_modules/request/node_modules/caseless/README.md45
-rw-r--r--node_modules/request/node_modules/caseless/index.js65
-rw-r--r--node_modules/request/node_modules/caseless/package.json57
-rw-r--r--node_modules/request/node_modules/caseless/test.js40
-rw-r--r--node_modules/request/node_modules/combined-stream/License19
-rw-r--r--node_modules/request/node_modules/combined-stream/Readme.md138
-rw-r--r--node_modules/request/node_modules/combined-stream/lib/combined_stream.js188
-rw-r--r--node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore1
-rw-r--r--node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License19
-rw-r--r--node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile7
-rw-r--r--node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md141
-rw-r--r--node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js107
-rw-r--r--node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json64
-rw-r--r--node_modules/request/node_modules/combined-stream/package.json66
-rw-r--r--node_modules/request/node_modules/extend/.jscs.json68
-rw-r--r--node_modules/request/node_modules/extend/.npmignore1
-rw-r--r--node_modules/request/node_modules/extend/.travis.yml36
-rw-r--r--node_modules/request/node_modules/extend/CHANGELOG.md61
-rw-r--r--node_modules/request/node_modules/extend/LICENSE23
-rw-r--r--node_modules/request/node_modules/extend/README.md62
-rw-r--r--node_modules/request/node_modules/extend/component.json32
-rw-r--r--node_modules/request/node_modules/extend/index.js89
-rw-r--r--node_modules/request/node_modules/extend/package.json70
-rw-r--r--node_modules/request/node_modules/forever-agent/LICENSE55
-rw-r--r--node_modules/request/node_modules/forever-agent/README.md4
-rw-r--r--node_modules/request/node_modules/forever-agent/index.js138
-rw-r--r--node_modules/request/node_modules/forever-agent/package.json31
-rw-r--r--node_modules/request/node_modules/form-data/License19
-rw-r--r--node_modules/request/node_modules/form-data/Readme.md175
-rw-r--r--node_modules/request/node_modules/form-data/lib/form_data.js351
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/.travis.yml6
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md65
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/LICENSE19
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/README.md1803
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/bower.json43
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/component.json17
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/base.css182
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/index.html73
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/base.css182
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/index.html73
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/async.js.html3900
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/index.html73
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.css1
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.js1
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sort-arrow-sprite.pngbin209 -> 0 bytes
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sorter.js156
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov.info1452
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/async.js.html3597
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/index.html73
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.css1
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.js1
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/sort-arrow-sprite.pngbin209 -> 0 bytes
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/coverage/sorter.js156
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/lib/async.js1191
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/nyc_output/5074.json1
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/async/package.json95
-rwxr-xr-xnode_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js53
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/HISTORY.md135
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/LICENSE23
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/README.md103
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/index.js188
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/HISTORY.md228
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/LICENSE22
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/README.md82
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/db.json6406
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/index.js11
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/package.json94
-rw-r--r--node_modules/request/node_modules/form-data/node_modules/mime-types/package.json84
-rw-r--r--node_modules/request/node_modules/form-data/package.json80
-rw-r--r--node_modules/request/node_modules/har-validator/LICENSE21
-rw-r--r--node_modules/request/node_modules/har-validator/README.md362
-rwxr-xr-xnode_modules/request/node_modules/har-validator/bin/har-validator45
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/README.md676
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/changelog.md1672
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.js5128
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.min.js31
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/any.js21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/assert.js55
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/async.js209
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bind.js73
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bluebird.js11
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/call_get.js123
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/cancel.js48
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/captured_trace.js492
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/catch_filter.js66
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/context.js38
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/debuggability.js153
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/direct_resolve.js62
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/each.js12
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/errors.js111
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/es5.js80
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/filter.js12
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/finally.js99
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/generators.js136
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/join.js107
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/map.js131
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/method.js44
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/nodeify.js58
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/progress.js76
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise.js700
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_array.js142
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_resolver.js123
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promisify.js294
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/props.js79
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/queue.js90
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/race.js47
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/reduce.js146
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/schedule.js32
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/settle.js40
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/some.js125
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/synchronous_inspection.js94
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/thenables.js89
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/timers.js58
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/using.js202
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/util.js296
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/bluebird/package.json97
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/index.js100
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/license21
l---------node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/has-ansi1
l---------node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/supports-color1
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js56
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json71
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md86
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js11
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json61
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md27
-rwxr-xr-xnode_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/cli.js45
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js4
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js49
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json48
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md44
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json83
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md45
-rwxr-xr-xnode_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/cli.js29
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js43
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json76
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md46
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/package.json74
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md197
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/History.md256
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/LICENSE22
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/Readme.md342
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/index.js1103
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.npmignore3
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.travis.yml5
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/LICENSE22
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/README.md17
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/index.js12
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json31
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/commander/package.json75
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.npmignore2
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.travis.yml3
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md173
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js18
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js14
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js569
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.npmignore1
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.travis.yml3
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md72
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js27
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js61
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json37
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js33
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.npmignore1
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.travis.yml3
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE21
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md19
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js12
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/.npmignore17
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE22
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js5
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json44
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json51
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js12
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/.travis.yml6
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md31
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js79
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json45
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js100
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.npmignore1
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE19
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile4
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md32
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js17
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js15
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json72
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js63
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json67
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js12
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js84
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json82
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json88
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json112
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json68
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json107
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json49
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json32
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json113
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json72
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json143
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json46
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json42
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json28
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json42
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json60
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json96
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json18
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json68
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json23
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json110
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json92
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json128
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json74
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json39
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json330
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json79
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js23
-rw-r--r--node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js429
-rw-r--r--node_modules/request/node_modules/har-validator/package.json85
-rw-r--r--node_modules/request/node_modules/har-validator/src/error.js10
-rw-r--r--node_modules/request/node_modules/har-validator/src/index.js39
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/cache.json13
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/cacheEntry.json31
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/content.json27
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/cookie.json34
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/creator.json18
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/entry.json48
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/har.json11
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/index.js49
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/log.json34
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/page.json30
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/pageTimings.json16
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/postData.json41
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/record.json18
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/request.json55
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/response.json52
-rw-r--r--node_modules/request/node_modules/har-validator/src/schemas/timings.json40
-rw-r--r--node_modules/request/node_modules/hawk/.npmignore20
-rwxr-xr-xnode_modules/request/node_modules/hawk/.travis.yml5
-rwxr-xr-xnode_modules/request/node_modules/hawk/LICENSE28
-rwxr-xr-xnode_modules/request/node_modules/hawk/Makefile8
-rwxr-xr-xnode_modules/request/node_modules/hawk/README.md635
-rw-r--r--node_modules/request/node_modules/hawk/bower.json24
-rw-r--r--node_modules/request/node_modules/hawk/component.json19
-rwxr-xr-xnode_modules/request/node_modules/hawk/example/usage.js78
-rwxr-xr-xnode_modules/request/node_modules/hawk/images/hawk.pngbin6945 -> 0 bytes
-rwxr-xr-xnode_modules/request/node_modules/hawk/images/logo.pngbin71732 -> 0 bytes
-rwxr-xr-xnode_modules/request/node_modules/hawk/index.js1
-rwxr-xr-xnode_modules/request/node_modules/hawk/lib/browser.js641
-rwxr-xr-xnode_modules/request/node_modules/hawk/lib/client.js369
-rwxr-xr-xnode_modules/request/node_modules/hawk/lib/crypto.js126
-rwxr-xr-xnode_modules/request/node_modules/hawk/lib/index.js15
-rwxr-xr-xnode_modules/request/node_modules/hawk/lib/server.js534
-rwxr-xr-xnode_modules/request/node_modules/hawk/lib/utils.js164
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/boom/.npmignore18
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/boom/.travis.yml7
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/boom/LICENSE28
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/boom/README.md597
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/boom/images/boom.pngbin29479 -> 0 bytes
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/boom/lib/index.js301
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/boom/package.json63
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/boom/test/index.js616
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore18
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml5
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE28
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile9
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md14
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/cryptiles/index.js1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js68
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json49
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js108
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore18
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml7
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/LICENSE31
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/Makefile8
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/README.md574
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.pngbin37939 -> 0 bytes
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/index.js1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js132
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js977
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/hoek/package.json60
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js88
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/test/index.js2425
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt0
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js1
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore18
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml5
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/LICENSE28
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/Makefile9
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/README.md68
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js16
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js25
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/index.js1
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js412
-rw-r--r--node_modules/request/node_modules/hawk/node_modules/sntp/package.json49
-rwxr-xr-xnode_modules/request/node_modules/hawk/node_modules/sntp/test/index.js435
-rw-r--r--node_modules/request/node_modules/hawk/package.json55
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/browser.js1453
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/client.js443
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/crypto.js86
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/index.js378
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/message.js261
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/readme.js98
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/server.js985
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/uri.js590
-rwxr-xr-xnode_modules/request/node_modules/hawk/test/utils.js120
-rw-r--r--node_modules/request/node_modules/http-signature/.dir-locals.el6
-rw-r--r--node_modules/request/node_modules/http-signature/.npmignore7
-rw-r--r--node_modules/request/node_modules/http-signature/LICENSE18
-rw-r--r--node_modules/request/node_modules/http-signature/README.md79
-rw-r--r--node_modules/request/node_modules/http-signature/http_signing.md296
-rw-r--r--node_modules/request/node_modules/http-signature/lib/index.js27
-rw-r--r--node_modules/request/node_modules/http-signature/lib/parser.js304
-rw-r--r--node_modules/request/node_modules/http-signature/lib/signer.js178
-rw-r--r--node_modules/request/node_modules/http-signature/lib/util.js306
-rw-r--r--node_modules/request/node_modules/http-signature/lib/verify.js56
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore2
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE19
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/README.md50
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js13
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js27
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js267
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js36
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js317
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js20
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/package.json45
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js172
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js296
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md126
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js245
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json30
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/.npmignore1
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG78
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE24
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/README82
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/README.old298
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js245
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js1485
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js944
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype241
-rw-r--r--node_modules/request/node_modules/http-signature/node_modules/ctype/package.json27
-rwxr-xr-xnode_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf129
-rwxr-xr-xnode_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle839
-rw-r--r--node_modules/request/node_modules/http-signature/package.json77
-rw-r--r--node_modules/request/node_modules/isstream/.npmignore1
-rw-r--r--node_modules/request/node_modules/isstream/.travis.yml12
-rw-r--r--node_modules/request/node_modules/isstream/LICENSE.md11
-rw-r--r--node_modules/request/node_modules/isstream/README.md66
-rw-r--r--node_modules/request/node_modules/isstream/isstream.js27
-rw-r--r--node_modules/request/node_modules/isstream/package.json42
-rw-r--r--node_modules/request/node_modules/isstream/test.js168
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/.npmignore1
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md14
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/LICENSE15
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/Makefile35
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/README.md52
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/package.json68
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/stringify.js27
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/test/mocha.opts2
-rw-r--r--node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js246
-rw-r--r--node_modules/request/node_modules/mime-types/HISTORY.md115
-rw-r--r--node_modules/request/node_modules/mime-types/LICENSE22
-rw-r--r--node_modules/request/node_modules/mime-types/README.md102
-rw-r--r--node_modules/request/node_modules/mime-types/index.js63
-rw-r--r--node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md212
-rw-r--r--node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE22
-rw-r--r--node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md76
-rw-r--r--node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json6359
-rw-r--r--node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js11
-rw-r--r--node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json94
-rw-r--r--node_modules/request/node_modules/mime-types/package.json84
-rw-r--r--node_modules/request/node_modules/node-uuid/.npmignore2
-rw-r--r--node_modules/request/node_modules/node-uuid/LICENSE.md21
-rw-r--r--node_modules/request/node_modules/node-uuid/README.md243
-rw-r--r--node_modules/request/node_modules/node-uuid/benchmark/README.md53
-rw-r--r--node_modules/request/node_modules/node-uuid/benchmark/bench.gnu174
-rwxr-xr-xnode_modules/request/node_modules/node-uuid/benchmark/bench.sh34
-rw-r--r--node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c34
-rw-r--r--node_modules/request/node_modules/node-uuid/benchmark/benchmark.js84
-rwxr-xr-xnode_modules/request/node_modules/node-uuid/bin/uuid26
-rw-r--r--node_modules/request/node_modules/node-uuid/bower.json23
-rw-r--r--node_modules/request/node_modules/node-uuid/component.json18
-rw-r--r--node_modules/request/node_modules/node-uuid/package.json65
-rw-r--r--node_modules/request/node_modules/node-uuid/test/compare_v1.js63
-rw-r--r--node_modules/request/node_modules/node-uuid/test/test.html17
-rw-r--r--node_modules/request/node_modules/node-uuid/test/test.js228
-rw-r--r--node_modules/request/node_modules/node-uuid/uuid.js247
-rw-r--r--node_modules/request/node_modules/oauth-sign/LICENSE55
-rw-r--r--node_modules/request/node_modules/oauth-sign/README.md4
-rw-r--r--node_modules/request/node_modules/oauth-sign/index.js134
-rw-r--r--node_modules/request/node_modules/oauth-sign/package.json59
-rw-r--r--node_modules/request/node_modules/oauth-sign/test.js89
-rw-r--r--node_modules/request/node_modules/qs/.eslintignore1
-rw-r--r--node_modules/request/node_modules/qs/.jshintignore1
-rw-r--r--node_modules/request/node_modules/qs/.npmignore19
-rw-r--r--node_modules/request/node_modules/qs/.travis.yml6
-rw-r--r--node_modules/request/node_modules/qs/CHANGELOG.md88
-rw-r--r--node_modules/request/node_modules/qs/CONTRIBUTING.md1
-rw-r--r--node_modules/request/node_modules/qs/LICENSE28
-rw-r--r--node_modules/request/node_modules/qs/Makefile8
-rw-r--r--node_modules/request/node_modules/qs/Readme.md303
-rw-r--r--node_modules/request/node_modules/qs/bower.json22
-rw-r--r--node_modules/request/node_modules/qs/index.js1
-rw-r--r--node_modules/request/node_modules/qs/lib/index.js15
-rw-r--r--node_modules/request/node_modules/qs/lib/parse.js166
-rw-r--r--node_modules/request/node_modules/qs/lib/stringify.js121
-rw-r--r--node_modules/request/node_modules/qs/lib/utils.js190
-rw-r--r--node_modules/request/node_modules/qs/package.json56
-rw-r--r--node_modules/request/node_modules/qs/test/parse.js455
-rw-r--r--node_modules/request/node_modules/qs/test/stringify.js259
-rw-r--r--node_modules/request/node_modules/qs/test/utils.js28
-rw-r--r--node_modules/request/node_modules/stringstream/.npmignore15
-rw-r--r--node_modules/request/node_modules/stringstream/.travis.yml4
-rw-r--r--node_modules/request/node_modules/stringstream/LICENSE.txt4
-rw-r--r--node_modules/request/node_modules/stringstream/README.md38
-rw-r--r--node_modules/request/node_modules/stringstream/example.js27
-rw-r--r--node_modules/request/node_modules/stringstream/package.json32
-rw-r--r--node_modules/request/node_modules/stringstream/stringstream.js102
-rw-r--r--node_modules/request/node_modules/tough-cookie/.editorconfig12
-rw-r--r--node_modules/request/node_modules/tough-cookie/.jshintrc70
-rw-r--r--node_modules/request/node_modules/tough-cookie/.npmignore4
-rw-r--r--node_modules/request/node_modules/tough-cookie/.travis.yml9
-rw-r--r--node_modules/request/node_modules/tough-cookie/LICENSE74
-rw-r--r--node_modules/request/node_modules/tough-cookie/README.md486
-rw-r--r--node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js293
-rw-r--r--node_modules/request/node_modules/tough-cookie/lib/cookie.js1309
-rw-r--r--node_modules/request/node_modules/tough-cookie/lib/memstore.js170
-rw-r--r--node_modules/request/node_modules/tough-cookie/lib/pathMatch.js61
-rw-r--r--node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js56
-rw-r--r--node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js98
-rw-r--r--node_modules/request/node_modules/tough-cookie/lib/store.js71
-rw-r--r--node_modules/request/node_modules/tough-cookie/package.json66
-rw-r--r--node_modules/request/node_modules/tough-cookie/public-suffix.txt10309
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/api_test.js372
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js468
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js156
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js164
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js162
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/date_test.js79
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js201
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json168
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json48
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json1959
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/ietf_test.js105
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js348
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/lifetime_test.js97
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/parsing_test.js294
-rw-r--r--node_modules/request/node_modules/tough-cookie/test/regression_test.js143
-rw-r--r--node_modules/request/node_modules/tunnel-agent/LICENSE55
-rw-r--r--node_modules/request/node_modules/tunnel-agent/README.md4
-rw-r--r--node_modules/request/node_modules/tunnel-agent/index.js236
-rw-r--r--node_modules/request/node_modules/tunnel-agent/package.json30
-rw-r--r--node_modules/request/package.json127
513 files changed, 76 insertions, 100505 deletions
diff --git a/node_modules/request/node_modules/.bin/har-validator b/node_modules/request/node_modules/.bin/har-validator
deleted file mode 120000
index c6ec16346..000000000
--- a/node_modules/request/node_modules/.bin/har-validator
+++ /dev/null
@@ -1 +0,0 @@
-../har-validator/bin/har-validator \ No newline at end of file
diff --git a/node_modules/request/node_modules/.bin/uuid b/node_modules/request/node_modules/.bin/uuid
deleted file mode 120000
index 80eb14aa1..000000000
--- a/node_modules/request/node_modules/.bin/uuid
+++ /dev/null
@@ -1 +0,0 @@
-../node-uuid/bin/uuid \ No newline at end of file
diff --git a/node_modules/request/node_modules/aws-sign2/LICENSE b/node_modules/request/node_modules/aws-sign2/LICENSE
deleted file mode 100644
index a4a9aee0c..000000000
--- a/node_modules/request/node_modules/aws-sign2/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS \ No newline at end of file
diff --git a/node_modules/request/node_modules/aws-sign2/README.md b/node_modules/request/node_modules/aws-sign2/README.md
deleted file mode 100644
index 763564e0a..000000000
--- a/node_modules/request/node_modules/aws-sign2/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-aws-sign
-========
-
-AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.
diff --git a/node_modules/request/node_modules/aws-sign2/index.js b/node_modules/request/node_modules/aws-sign2/index.js
deleted file mode 100644
index 576e49ddf..000000000
--- a/node_modules/request/node_modules/aws-sign2/index.js
+++ /dev/null
@@ -1,202 +0,0 @@
-
-/*!
- * knox - auth
- * Copyright(c) 2010 LearnBoost <dev@learnboost.com>
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var crypto = require('crypto')
- , parse = require('url').parse
- ;
-
-/**
- * Valid keys.
- */
-
-var keys =
- [ 'acl'
- , 'location'
- , 'logging'
- , 'notification'
- , 'partNumber'
- , 'policy'
- , 'requestPayment'
- , 'torrent'
- , 'uploadId'
- , 'uploads'
- , 'versionId'
- , 'versioning'
- , 'versions'
- , 'website'
- ]
-
-/**
- * Return an "Authorization" header value with the given `options`
- * in the form of "AWS <key>:<signature>"
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function authorization (options) {
- return 'AWS ' + options.key + ':' + sign(options)
-}
-
-module.exports = authorization
-module.exports.authorization = authorization
-
-/**
- * Simple HMAC-SHA1 Wrapper
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function hmacSha1 (options) {
- return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')
-}
-
-module.exports.hmacSha1 = hmacSha1
-
-/**
- * Create a base64 sha1 HMAC for `options`.
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function sign (options) {
- options.message = stringToSign(options)
- return hmacSha1(options)
-}
-module.exports.sign = sign
-
-/**
- * Create a base64 sha1 HMAC for `options`.
- *
- * Specifically to be used with S3 presigned URLs
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function signQuery (options) {
- options.message = queryStringToSign(options)
- return hmacSha1(options)
-}
-module.exports.signQuery= signQuery
-
-/**
- * Return a string for sign() with the given `options`.
- *
- * Spec:
- *
- * <verb>\n
- * <md5>\n
- * <content-type>\n
- * <date>\n
- * [headers\n]
- * <resource>
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function stringToSign (options) {
- var headers = options.amazonHeaders || ''
- if (headers) headers += '\n'
- var r =
- [ options.verb
- , options.md5
- , options.contentType
- , options.date ? options.date.toUTCString() : ''
- , headers + options.resource
- ]
- return r.join('\n')
-}
-module.exports.queryStringToSign = stringToSign
-
-/**
- * Return a string for sign() with the given `options`, but is meant exclusively
- * for S3 presigned URLs
- *
- * Spec:
- *
- * <date>\n
- * <resource>
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function queryStringToSign (options){
- return 'GET\n\n\n' + options.date + '\n' + options.resource
-}
-module.exports.queryStringToSign = queryStringToSign
-
-/**
- * Perform the following:
- *
- * - ignore non-amazon headers
- * - lowercase fields
- * - sort lexicographically
- * - trim whitespace between ":"
- * - join with newline
- *
- * @param {Object} headers
- * @return {String}
- * @api private
- */
-
-function canonicalizeHeaders (headers) {
- var buf = []
- , fields = Object.keys(headers)
- ;
- for (var i = 0, len = fields.length; i < len; ++i) {
- var field = fields[i]
- , val = headers[field]
- , field = field.toLowerCase()
- ;
- if (0 !== field.indexOf('x-amz')) continue
- buf.push(field + ':' + val)
- }
- return buf.sort().join('\n')
-}
-module.exports.canonicalizeHeaders = canonicalizeHeaders
-
-/**
- * Perform the following:
- *
- * - ignore non sub-resources
- * - sort lexicographically
- *
- * @param {String} resource
- * @return {String}
- * @api private
- */
-
-function canonicalizeResource (resource) {
- var url = parse(resource, true)
- , path = url.pathname
- , buf = []
- ;
-
- Object.keys(url.query).forEach(function(key){
- if (!~keys.indexOf(key)) return
- var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])
- buf.push(key + val)
- })
-
- return path + (buf.length ? '?' + buf.sort().join('&') : '')
-}
-module.exports.canonicalizeResource = canonicalizeResource
diff --git a/node_modules/request/node_modules/aws-sign2/package.json b/node_modules/request/node_modules/aws-sign2/package.json
deleted file mode 100644
index 89adc7ded..000000000
--- a/node_modules/request/node_modules/aws-sign2/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "aws-sign2",
- "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.",
- "version": "0.5.0",
- "repository": {
- "url": "git+https://github.com/mikeal/aws-sign.git"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "readme": "aws-sign\n========\n\nAWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/mikeal/aws-sign/issues"
- },
- "homepage": "https://github.com/mikeal/aws-sign#readme",
- "_id": "aws-sign2@0.5.0",
- "_shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63",
- "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
- "_from": "aws-sign2@>=0.5.0 <0.6.0"
-}
diff --git a/node_modules/request/node_modules/bl/.npmignore b/node_modules/request/node_modules/bl/.npmignore
deleted file mode 100644
index 40b878db5..000000000
--- a/node_modules/request/node_modules/bl/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/ \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/.travis.yml b/node_modules/request/node_modules/bl/.travis.yml
deleted file mode 100644
index 7ddb9c975..000000000
--- a/node_modules/request/node_modules/bl/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: node_js
-node_js:
- - 0.8
- - "0.10"
-branches:
- only:
- - master
-notifications:
- email:
- - rod@vagg.org
-script: npm test \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/LICENSE.md b/node_modules/request/node_modules/bl/LICENSE.md
deleted file mode 100644
index ccb24797c..000000000
--- a/node_modules/request/node_modules/bl/LICENSE.md
+++ /dev/null
@@ -1,13 +0,0 @@
-The MIT License (MIT)
-=====================
-
-Copyright (c) 2014 bl contributors
-----------------------------------
-
-*bl contributors listed at <https://github.com/rvagg/bl#contributors>*
-
-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/request/node_modules/bl/README.md b/node_modules/request/node_modules/bl/README.md
deleted file mode 100644
index 6b7fb6d34..000000000
--- a/node_modules/request/node_modules/bl/README.md
+++ /dev/null
@@ -1,198 +0,0 @@
-# bl *(BufferList)*
-
-**A Node.js Buffer list collector, reader and streamer thingy.**
-
-[![NPM](https://nodei.co/npm/bl.png?downloads=true&downloadRank=true)](https://nodei.co/npm/bl/)
-[![NPM](https://nodei.co/npm-dl/bl.png?months=6&height=3)](https://nodei.co/npm/bl/)
-
-**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them!
-
-The original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently.
-
-```js
-const BufferList = require('bl')
-
-var bl = new BufferList()
-bl.append(new Buffer('abcd'))
-bl.append(new Buffer('efg'))
-bl.append('hi') // bl will also accept & convert Strings
-bl.append(new Buffer('j'))
-bl.append(new Buffer([ 0x3, 0x4 ]))
-
-console.log(bl.length) // 12
-
-console.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij'
-console.log(bl.slice(3, 10).toString('ascii')) // 'defghij'
-console.log(bl.slice(3, 6).toString('ascii')) // 'def'
-console.log(bl.slice(3, 8).toString('ascii')) // 'defgh'
-console.log(bl.slice(5, 10).toString('ascii')) // 'fghij'
-
-// or just use toString!
-console.log(bl.toString()) // 'abcdefghij\u0003\u0004'
-console.log(bl.toString('ascii', 3, 8)) // 'defgh'
-console.log(bl.toString('ascii', 5, 10)) // 'fghij'
-
-// other standard Buffer readables
-console.log(bl.readUInt16BE(10)) // 0x0304
-console.log(bl.readUInt16LE(10)) // 0x0403
-```
-
-Give it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**:
-
-```js
-const bl = require('bl')
- , fs = require('fs')
-
-fs.createReadStream('README.md')
- .pipe(bl(function (err, data) { // note 'new' isn't strictly required
- // `data` is a complete Buffer object containing the full data
- console.log(data.toString())
- }))
-```
-
-Note that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream.
-
-Or to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!):
-```js
-const hyperquest = require('hyperquest')
- , bl = require('bl')
- , url = 'https://raw.github.com/rvagg/bl/master/README.md'
-
-hyperquest(url).pipe(bl(function (err, data) {
- console.log(data.toString())
-}))
-```
-
-Or, use it as a readable stream to recompose a list of Buffers to an output source:
-
-```js
-const BufferList = require('bl')
- , fs = require('fs')
-
-var bl = new BufferList()
-bl.append(new Buffer('abcd'))
-bl.append(new Buffer('efg'))
-bl.append(new Buffer('hi'))
-bl.append(new Buffer('j'))
-
-bl.pipe(fs.createWriteStream('gibberish.txt'))
-```
-
-## API
-
- * <a href="#ctor"><code><b>new BufferList([ callback ])</b></code></a>
- * <a href="#length"><code>bl.<b>length</b></code></a>
- * <a href="#append"><code>bl.<b>append(buffer)</b></code></a>
- * <a href="#get"><code>bl.<b>get(index)</b></code></a>
- * <a href="#slice"><code>bl.<b>slice([ start[, end ] ])</b></code></a>
- * <a href="#copy"><code>bl.<b>copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])</b></code></a>
- * <a href="#duplicate"><code>bl.<b>duplicate()</b></code></a>
- * <a href="#consume"><code>bl.<b>consume(bytes)</b></code></a>
- * <a href="#toString"><code>bl.<b>toString([encoding, [ start, [ end ]]])</b></code></a>
- * <a href="#readXX"><code>bl.<b>readDoubleBE()</b></code>, <code>bl.<b>readDoubleLE()</b></code>, <code>bl.<b>readFloatBE()</b></code>, <code>bl.<b>readFloatLE()</b></code>, <code>bl.<b>readInt32BE()</b></code>, <code>bl.<b>readInt32LE()</b></code>, <code>bl.<b>readUInt32BE()</b></code>, <code>bl.<b>readUInt32LE()</b></code>, <code>bl.<b>readInt16BE()</b></code>, <code>bl.<b>readInt16LE()</b></code>, <code>bl.<b>readUInt16BE()</b></code>, <code>bl.<b>readUInt16LE()</b></code>, <code>bl.<b>readInt8()</b></code>, <code>bl.<b>readUInt8()</b></code></a>
- * <a href="#streams">Streams</a>
-
---------------------------------------------------------
-<a name="ctor"></a>
-### new BufferList([ callback | buffer | buffer array ])
-The constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream.
-
-Normally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object.
-
-`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with:
-
-```js
-var bl = require('bl')
-var myinstance = bl()
-
-// equivilant to:
-
-var BufferList = require('bl')
-var myinstance = new BufferList()
-```
-
---------------------------------------------------------
-<a name="length"></a>
-### bl.length
-Get the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list.
-
---------------------------------------------------------
-<a name="append"></a>
-### bl.append(buffer)
-`append(buffer)` adds an additional buffer or BufferList to the internal list.
-
---------------------------------------------------------
-<a name="get"></a>
-### bl.get(index)
-`get()` will return the byte at the specified index.
-
---------------------------------------------------------
-<a name="slice"></a>
-### bl.slice([ start, [ end ] ])
-`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively.
-
-If the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer.
-
---------------------------------------------------------
-<a name="copy"></a>
-### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])
-`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively.
-
---------------------------------------------------------
-<a name="duplicate"></a>
-### bl.duplicate()
-`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example:
-
-```js
-var bl = new BufferList()
-
-bl.append('hello')
-bl.append(' world')
-bl.append('\n')
-
-bl.duplicate().pipe(process.stdout, { end: false })
-
-console.log(bl.toString())
-```
-
---------------------------------------------------------
-<a name="consume"></a>
-### bl.consume(bytes)
-`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers&mdash;initial offsets will be calculated accordingly in order to give you a consistent view of the data.
-
---------------------------------------------------------
-<a name="toString"></a>
-### bl.toString([encoding, [ start, [ end ]]])
-`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information.
-
---------------------------------------------------------
-<a name="readXX"></a>
-### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8()
-
-All of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently.
-
-See the <b><code>[Buffer](http://nodejs.org/docs/latest/api/buffer.html)</code></b> documentation for how these work.
-
---------------------------------------------------------
-<a name="streams"></a>
-### Streams
-**bl** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **bl** instance.
-
---------------------------------------------------------
-
-## Contributors
-
-**bl** is brought to you by the following hackers:
-
- * [Rod Vagg](https://github.com/rvagg)
- * [Matteo Collina](https://github.com/mcollina)
- * [Jarett Cruger](https://github.com/jcrugzz)
-
-=======
-
-<a name="license"></a>
-## License &amp; copyright
-
-Copyright (c) 2013-2014 bl contributors (listed above).
-
-bl is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.
diff --git a/node_modules/request/node_modules/bl/bl.js b/node_modules/request/node_modules/bl/bl.js
deleted file mode 100644
index 7a2f99788..000000000
--- a/node_modules/request/node_modules/bl/bl.js
+++ /dev/null
@@ -1,216 +0,0 @@
-var DuplexStream = require('readable-stream/duplex')
- , util = require('util')
-
-function BufferList (callback) {
- if (!(this instanceof BufferList))
- return new BufferList(callback)
-
- this._bufs = []
- this.length = 0
-
- if (typeof callback == 'function') {
- this._callback = callback
-
- var piper = function (err) {
- if (this._callback) {
- this._callback(err)
- this._callback = null
- }
- }.bind(this)
-
- this.on('pipe', function (src) {
- src.on('error', piper)
- })
- this.on('unpipe', function (src) {
- src.removeListener('error', piper)
- })
- }
- else if (Buffer.isBuffer(callback))
- this.append(callback)
- else if (Array.isArray(callback)) {
- callback.forEach(function (b) {
- Buffer.isBuffer(b) && this.append(b)
- }.bind(this))
- }
-
- DuplexStream.call(this)
-}
-
-util.inherits(BufferList, DuplexStream)
-
-BufferList.prototype._offset = function (offset) {
- var tot = 0, i = 0, _t
- for (; i < this._bufs.length; i++) {
- _t = tot + this._bufs[i].length
- if (offset < _t)
- return [ i, offset - tot ]
- tot = _t
- }
-}
-
-BufferList.prototype.append = function (buf) {
- var isBuffer = Buffer.isBuffer(buf) ||
- buf instanceof BufferList
-
- this._bufs.push(isBuffer ? buf : new Buffer(buf))
- this.length += buf.length
- return this
-}
-
-BufferList.prototype._write = function (buf, encoding, callback) {
- this.append(buf)
- if (callback)
- callback()
-}
-
-BufferList.prototype._read = function (size) {
- if (!this.length)
- return this.push(null)
- size = Math.min(size, this.length)
- this.push(this.slice(0, size))
- this.consume(size)
-}
-
-BufferList.prototype.end = function (chunk) {
- DuplexStream.prototype.end.call(this, chunk)
-
- if (this._callback) {
- this._callback(null, this.slice())
- this._callback = null
- }
-}
-
-BufferList.prototype.get = function (index) {
- return this.slice(index, index + 1)[0]
-}
-
-BufferList.prototype.slice = function (start, end) {
- return this.copy(null, 0, start, end)
-}
-
-BufferList.prototype.copy = function (dst, dstStart, srcStart, srcEnd) {
- if (typeof srcStart != 'number' || srcStart < 0)
- srcStart = 0
- if (typeof srcEnd != 'number' || srcEnd > this.length)
- srcEnd = this.length
- if (srcStart >= this.length)
- return dst || new Buffer(0)
- if (srcEnd <= 0)
- return dst || new Buffer(0)
-
- var copy = !!dst
- , off = this._offset(srcStart)
- , len = srcEnd - srcStart
- , bytes = len
- , bufoff = (copy && dstStart) || 0
- , start = off[1]
- , l
- , i
-
- // copy/slice everything
- if (srcStart === 0 && srcEnd == this.length) {
- if (!copy) // slice, just return a full concat
- return Buffer.concat(this._bufs)
-
- // copy, need to copy individual buffers
- for (i = 0; i < this._bufs.length; i++) {
- this._bufs[i].copy(dst, bufoff)
- bufoff += this._bufs[i].length
- }
-
- return dst
- }
-
- // easy, cheap case where it's a subset of one of the buffers
- if (bytes <= this._bufs[off[0]].length - start) {
- return copy
- ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)
- : this._bufs[off[0]].slice(start, start + bytes)
- }
-
- if (!copy) // a slice, we need something to copy in to
- dst = new Buffer(len)
-
- for (i = off[0]; i < this._bufs.length; i++) {
- l = this._bufs[i].length - start
-
- if (bytes > l) {
- this._bufs[i].copy(dst, bufoff, start)
- } else {
- this._bufs[i].copy(dst, bufoff, start, start + bytes)
- break
- }
-
- bufoff += l
- bytes -= l
-
- if (start)
- start = 0
- }
-
- return dst
-}
-
-BufferList.prototype.toString = function (encoding, start, end) {
- return this.slice(start, end).toString(encoding)
-}
-
-BufferList.prototype.consume = function (bytes) {
- while (this._bufs.length) {
- if (bytes > this._bufs[0].length) {
- bytes -= this._bufs[0].length
- this.length -= this._bufs[0].length
- this._bufs.shift()
- } else {
- this._bufs[0] = this._bufs[0].slice(bytes)
- this.length -= bytes
- break
- }
- }
- return this
-}
-
-BufferList.prototype.duplicate = function () {
- var i = 0
- , copy = new BufferList()
-
- for (; i < this._bufs.length; i++)
- copy.append(this._bufs[i])
-
- return copy
-}
-
-BufferList.prototype.destroy = function () {
- this._bufs.length = 0;
- this.length = 0;
- this.push(null);
-}
-
-;(function () {
- var methods = {
- 'readDoubleBE' : 8
- , 'readDoubleLE' : 8
- , 'readFloatBE' : 4
- , 'readFloatLE' : 4
- , 'readInt32BE' : 4
- , 'readInt32LE' : 4
- , 'readUInt32BE' : 4
- , 'readUInt32LE' : 4
- , 'readInt16BE' : 2
- , 'readInt16LE' : 2
- , 'readUInt16BE' : 2
- , 'readUInt16LE' : 2
- , 'readInt8' : 1
- , 'readUInt8' : 1
- }
-
- for (var m in methods) {
- (function (m) {
- BufferList.prototype[m] = function (offset) {
- return this.slice(offset, offset + methods[m])[m](0)
- }
- }(m))
- }
-}())
-
-module.exports = BufferList
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore b/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore
deleted file mode 100644
index 38344f87a..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-build/
-test/
-examples/
-fs.js
-zlib.js \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE b/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE
deleted file mode 100644
index e3d4e695a..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-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/request/node_modules/bl/node_modules/readable-stream/README.md b/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md
deleted file mode 100644
index 3fb3e8023..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# readable-stream
-
-***Node-core streams for userland***
-
-[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)
-[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)
-
-This package is a mirror of the Streams2 and Streams3 implementations in Node-core.
-
-If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core.
-
-**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.
-
-**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"`
-
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js
deleted file mode 100644
index ca807af87..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_duplex.js")
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
deleted file mode 100644
index b513d61a9..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-module.exports = Duplex;
-
-/*<replacement>*/
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) keys.push(key);
- return keys;
-}
-/*</replacement>*/
-
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-forEach(objectKeys(Writable.prototype), function(method) {
- if (!Duplex.prototype[method])
- Duplex.prototype[method] = Writable.prototype[method];
-});
-
-function Duplex(options) {
- if (!(this instanceof Duplex))
- return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false)
- this.readable = false;
-
- if (options && options.writable === false)
- this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false)
- this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended)
- return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- process.nextTick(this.end.bind(this));
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js
deleted file mode 100644
index 895ca50a1..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough))
- return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function(chunk, encoding, cb) {
- cb(null, chunk);
-};
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js
deleted file mode 100644
index 630722099..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js
+++ /dev/null
@@ -1,982 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-module.exports = Readable;
-
-/*<replacement>*/
-var isArray = require('isarray');
-/*</replacement>*/
-
-
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
-
-Readable.ReadableState = ReadableState;
-
-var EE = require('events').EventEmitter;
-
-/*<replacement>*/
-if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
- return emitter.listeners(type).length;
-};
-/*</replacement>*/
-
-var Stream = require('stream');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-function ReadableState(options, stream) {
- options = options || {};
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.buffer = [];
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = false;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // In streams that never have any data, and do push(null) right away,
- // the consumer can miss the 'end' event if they do some I/O before
- // consuming the stream. So, we don't emit('end') until some reading
- // happens.
- this.calledRead = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
-
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // when piping, we only care about 'readable' events that happen
- // after read()ing all the bytes and not getting any pushback.
- this.ranOut = false;
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- if (!(this instanceof Readable))
- return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- Stream.call(this);
-}
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function(chunk, encoding) {
- var state = this._readableState;
-
- if (typeof chunk === 'string' && !state.objectMode) {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = new Buffer(chunk, encoding);
- encoding = '';
- }
- }
-
- return readableAddChunk(this, state, chunk, encoding, false);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function(chunk) {
- var state = this._readableState;
- return readableAddChunk(this, state, chunk, '', true);
-};
-
-function readableAddChunk(stream, state, chunk, encoding, addToFront) {
- var er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (chunk === null || chunk === undefined) {
- state.reading = false;
- if (!state.ended)
- onEofChunk(stream, state);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (state.ended && !addToFront) {
- var e = new Error('stream.push() after EOF');
- stream.emit('error', e);
- } else if (state.endEmitted && addToFront) {
- var e = new Error('stream.unshift() after end event');
- stream.emit('error', e);
- } else {
- if (state.decoder && !addToFront && !encoding)
- chunk = state.decoder.write(chunk);
-
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) {
- state.buffer.unshift(chunk);
- } else {
- state.reading = false;
- state.buffer.push(chunk);
- }
-
- if (state.needReadable)
- emitReadable(stream);
-
- maybeReadMore(stream, state);
- }
- } else if (!addToFront) {
- state.reading = false;
- }
-
- return needMoreData(state);
-}
-
-
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended &&
- (state.needReadable ||
- state.length < state.highWaterMark ||
- state.length === 0);
-}
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function(enc) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
-};
-
-// Don't raise the hwm > 128MB
-var MAX_HWM = 0x800000;
-function roundUpToNextPowerOf2(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2
- n--;
- for (var p = 1; p < 32; p <<= 1) n |= n >> p;
- n++;
- }
- return n;
-}
-
-function howMuchToRead(n, state) {
- if (state.length === 0 && state.ended)
- return 0;
-
- if (state.objectMode)
- return n === 0 ? 0 : 1;
-
- if (n === null || isNaN(n)) {
- // only flow one buffer at a time
- if (state.flowing && state.buffer.length)
- return state.buffer[0].length;
- else
- return state.length;
- }
-
- if (n <= 0)
- return 0;
-
- // If we're asking for more than the target buffer level,
- // then raise the water mark. Bump up to the next highest
- // power of 2, to prevent increasing it excessively in tiny
- // amounts.
- if (n > state.highWaterMark)
- state.highWaterMark = roundUpToNextPowerOf2(n);
-
- // don't have that much. return null, unless we've ended.
- if (n > state.length) {
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- } else
- return state.length;
- }
-
- return n;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function(n) {
- var state = this._readableState;
- state.calledRead = true;
- var nOrig = n;
- var ret;
-
- if (typeof n !== 'number' || n > 0)
- state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 &&
- state.needReadable &&
- (state.length >= state.highWaterMark || state.ended)) {
- emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- ret = null;
-
- // In cases where the decoder did not receive enough data
- // to produce a full chunk, then immediately received an
- // EOF, state.buffer will contain [<Buffer >, <Buffer 00 ...>].
- // howMuchToRead will see this and coerce the amount to
- // read to zero (because it's looking at the length of the
- // first <Buffer > in state.buffer), and we'll end up here.
- //
- // This can only happen via state.decoder -- no other venue
- // exists for pushing a zero-length chunk into state.buffer
- // and triggering this behavior. In this case, we return our
- // remaining data and end the stream, if appropriate.
- if (state.length > 0 && state.decoder) {
- ret = fromList(n, state);
- state.length -= ret.length;
- }
-
- if (state.length === 0)
- endReadable(this);
-
- return ret;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length - n <= state.highWaterMark)
- doRead = true;
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading)
- doRead = false;
-
- if (doRead) {
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0)
- state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- }
-
- // If _read called its callback synchronously, then `reading`
- // will be false, and we need to re-evaluate how much data we
- // can return to the user.
- if (doRead && !state.reading)
- n = howMuchToRead(nOrig, state);
-
- if (n > 0)
- ret = fromList(n, state);
- else
- ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- }
-
- state.length -= n;
-
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (state.length === 0 && !state.ended)
- state.needReadable = true;
-
- // If we happened to read() exactly the remaining amount in the
- // buffer, and the EOF has been seen at this point, then make sure
- // that we emit 'end' on the very next tick.
- if (state.ended && !state.endEmitted && state.length === 0)
- endReadable(this);
-
- return ret;
-};
-
-function chunkInvalid(state, chunk) {
- var er = null;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-
-function onEofChunk(stream, state) {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // if we've ended and we have some data left, then emit
- // 'readable' now to make sure it gets picked up.
- if (state.length > 0)
- emitReadable(stream);
- else
- endReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (state.emittedReadable)
- return;
-
- state.emittedReadable = true;
- if (state.sync)
- process.nextTick(function() {
- emitReadable_(stream);
- });
- else
- emitReadable_(stream);
-}
-
-function emitReadable_(stream) {
- stream.emit('readable');
-}
-
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- process.nextTick(function() {
- maybeReadMore_(stream, state);
- });
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended &&
- state.length < state.highWaterMark) {
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;
- else
- len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function(n) {
- this.emit('error', new Error('not implemented'));
-};
-
-Readable.prototype.pipe = function(dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
- dest !== process.stdout &&
- dest !== process.stderr;
-
- var endFn = doEnd ? onend : cleanup;
- if (state.endEmitted)
- process.nextTick(endFn);
- else
- src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable) {
- if (readable !== src) return;
- cleanup();
- }
-
- function onend() {
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- function cleanup() {
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', cleanup);
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (!dest._writableState || dest._writableState.needDrain)
- ondrain();
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- unpipe();
- dest.removeListener('error', onerror);
- if (EE.listenerCount(dest, 'error') === 0)
- dest.emit('error', er);
- }
- // This is a brutally ugly hack to make sure that our error handler
- // is attached before any userland ones. NEVER DO THIS.
- if (!dest._events || !dest._events.error)
- dest.on('error', onerror);
- else if (isArray(dest._events.error))
- dest._events.error.unshift(onerror);
- else
- dest._events.error = [onerror, dest._events.error];
-
-
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- // the handler that waits for readable events after all
- // the data gets sucked out in flow.
- // This would be easier to follow with a .once() handler
- // in flow(), but that is too slow.
- this.on('readable', pipeOnReadable);
-
- state.flowing = true;
- process.nextTick(function() {
- flow(src);
- });
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function() {
- var dest = this;
- var state = src._readableState;
- state.awaitDrain--;
- if (state.awaitDrain === 0)
- flow(src);
- };
-}
-
-function flow(src) {
- var state = src._readableState;
- var chunk;
- state.awaitDrain = 0;
-
- function write(dest, i, list) {
- var written = dest.write(chunk);
- if (false === written) {
- state.awaitDrain++;
- }
- }
-
- while (state.pipesCount && null !== (chunk = src.read())) {
-
- if (state.pipesCount === 1)
- write(state.pipes, 0, null);
- else
- forEach(state.pipes, write);
-
- src.emit('data', chunk);
-
- // if anyone needs a drain, then we have to wait for that.
- if (state.awaitDrain > 0)
- return;
- }
-
- // if every destination was unpiped, either before entering this
- // function, or in the while loop, then stop flowing.
- //
- // NB: This is a pretty rare edge case.
- if (state.pipesCount === 0) {
- state.flowing = false;
-
- // if there were data event listeners added, then switch to old mode.
- if (EE.listenerCount(src, 'data') > 0)
- emitDataEvents(src);
- return;
- }
-
- // at this point, no one needed a drain, so we just ran out of data
- // on the next readable event, start it over again.
- state.ranOut = true;
-}
-
-function pipeOnReadable() {
- if (this._readableState.ranOut) {
- this._readableState.ranOut = false;
- flow(this);
- }
-}
-
-
-Readable.prototype.unpipe = function(dest) {
- var state = this._readableState;
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0)
- return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes)
- return this;
-
- if (!dest)
- dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
- if (dest)
- dest.emit('unpipe', this);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
-
- for (var i = 0; i < len; i++)
- dests[i].emit('unpipe', this);
- return this;
- }
-
- // try to find the right one.
- var i = indexOf(state.pipes, dest);
- if (i === -1)
- return this;
-
- state.pipes.splice(i, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1)
- state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function(ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- if (ev === 'data' && !this._readableState.flowing)
- emitDataEvents(this);
-
- if (ev === 'readable' && this.readable) {
- var state = this._readableState;
- if (!state.readableListening) {
- state.readableListening = true;
- state.emittedReadable = false;
- state.needReadable = true;
- if (!state.reading) {
- this.read(0);
- } else if (state.length) {
- emitReadable(this, state);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function() {
- emitDataEvents(this);
- this.read(0);
- this.emit('resume');
-};
-
-Readable.prototype.pause = function() {
- emitDataEvents(this, true);
- this.emit('pause');
-};
-
-function emitDataEvents(stream, startPaused) {
- var state = stream._readableState;
-
- if (state.flowing) {
- // https://github.com/isaacs/readable-stream/issues/16
- throw new Error('Cannot switch to old mode now.');
- }
-
- var paused = startPaused || false;
- var readable = false;
-
- // convert to an old-style stream.
- stream.readable = true;
- stream.pipe = Stream.prototype.pipe;
- stream.on = stream.addListener = Stream.prototype.on;
-
- stream.on('readable', function() {
- readable = true;
-
- var c;
- while (!paused && (null !== (c = stream.read())))
- stream.emit('data', c);
-
- if (c === null) {
- readable = false;
- stream._readableState.needReadable = true;
- }
- });
-
- stream.pause = function() {
- paused = true;
- this.emit('pause');
- };
-
- stream.resume = function() {
- paused = false;
- if (readable)
- process.nextTick(function() {
- stream.emit('readable');
- });
- else
- this.read(0);
- this.emit('resume');
- };
-
- // now make it start, just in case it hadn't already.
- stream.emit('readable');
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function(stream) {
- var state = this._readableState;
- var paused = false;
-
- var self = this;
- stream.on('end', function() {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length)
- self.push(chunk);
- }
-
- self.push(null);
- });
-
- stream.on('data', function(chunk) {
- if (state.decoder)
- chunk = state.decoder.write(chunk);
-
- // don't skip over falsy values in objectMode
- //if (state.objectMode && util.isNullOrUndefined(chunk))
- if (state.objectMode && (chunk === null || chunk === undefined))
- return;
- else if (!state.objectMode && (!chunk || !chunk.length))
- return;
-
- var ret = self.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (typeof stream[i] === 'function' &&
- typeof this[i] === 'undefined') {
- this[i] = function(method) { return function() {
- return stream[method].apply(stream, arguments);
- }}(i);
- }
- }
-
- // proxy certain important events.
- var events = ['error', 'close', 'destroy', 'pause', 'resume'];
- forEach(events, function(ev) {
- stream.on(ev, self.emit.bind(self, ev));
- });
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- self._read = function(n) {
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return self;
-};
-
-
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-function fromList(n, state) {
- var list = state.buffer;
- var length = state.length;
- var stringMode = !!state.decoder;
- var objectMode = !!state.objectMode;
- var ret;
-
- // nothing in the list, definitely empty.
- if (list.length === 0)
- return null;
-
- if (length === 0)
- ret = null;
- else if (objectMode)
- ret = list.shift();
- else if (!n || n >= length) {
- // read it all, truncate the array.
- if (stringMode)
- ret = list.join('');
- else
- ret = Buffer.concat(list, length);
- list.length = 0;
- } else {
- // read just some of it.
- if (n < list[0].length) {
- // just take a part of the first list item.
- // slice is the same for buffers and strings.
- var buf = list[0];
- ret = buf.slice(0, n);
- list[0] = buf.slice(n);
- } else if (n === list[0].length) {
- // first list is a perfect match
- ret = list.shift();
- } else {
- // complex case.
- // we have enough to cover it, but it spans past the first buffer.
- if (stringMode)
- ret = '';
- else
- ret = new Buffer(n);
-
- var c = 0;
- for (var i = 0, l = list.length; i < l && c < n; i++) {
- var buf = list[0];
- var cpy = Math.min(n - c, buf.length);
-
- if (stringMode)
- ret += buf.slice(0, cpy);
- else
- buf.copy(ret, c, 0, cpy);
-
- if (cpy < buf.length)
- list[0] = buf.slice(cpy);
- else
- list.shift();
-
- c += cpy;
- }
- }
- }
-
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0)
- throw new Error('endReadable called on non-empty stream');
-
- if (!state.endEmitted && state.calledRead) {
- state.ended = true;
- process.nextTick(function() {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
- });
- }
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-function indexOf (xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js
deleted file mode 100644
index eb188df3e..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(Transform, Duplex);
-
-
-function TransformState(options, stream) {
- this.afterTransform = function(er, data) {
- return afterTransform(stream, er, data);
- };
-
- this.needTransform = false;
- this.transforming = false;
- this.writecb = null;
- this.writechunk = null;
-}
-
-function afterTransform(stream, er, data) {
- var ts = stream._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb)
- return stream.emit('error', new Error('no writecb in Transform class'));
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data !== null && data !== undefined)
- stream.push(data);
-
- if (cb)
- cb(er);
-
- var rs = stream._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- stream._read(rs.highWaterMark);
- }
-}
-
-
-function Transform(options) {
- if (!(this instanceof Transform))
- return new Transform(options);
-
- Duplex.call(this, options);
-
- var ts = this._transformState = new TransformState(options, this);
-
- // when the writable side finishes, then flush out anything remaining.
- var stream = this;
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- this.once('finish', function() {
- if ('function' === typeof this._flush)
- this._flush(function(er) {
- done(stream, er);
- });
- else
- done(stream);
- });
-}
-
-Transform.prototype.push = function(chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function(chunk, encoding, cb) {
- throw new Error('not implemented');
-};
-
-Transform.prototype._write = function(chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform ||
- rs.needReadable ||
- rs.length < rs.highWaterMark)
- this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function(n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-
-function done(stream, er) {
- if (er)
- return stream.emit('error', er);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- var ws = stream._writableState;
- var rs = stream._readableState;
- var ts = stream._transformState;
-
- if (ws.length)
- throw new Error('calling transform done when ws.length != 0');
-
- if (ts.transforming)
- throw new Error('calling transform done when still transforming');
-
- return stream.push(null);
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js
deleted file mode 100644
index 4bdaa4fa4..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js
+++ /dev/null
@@ -1,386 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, cb), and it'll handle all
-// the drain event emission and buffering.
-
-module.exports = Writable;
-
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
-
-Writable.WritableState = WritableState;
-
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var Stream = require('stream');
-
-util.inherits(Writable, Stream);
-
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
-}
-
-function WritableState(options, stream) {
- options = options || {};
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function(er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.buffer = [];
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-}
-
-function Writable(options) {
- var Duplex = require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, though they're not
- // instanceof Writable, they're instanceof Readable.
- if (!(this instanceof Writable) && !(this instanceof Duplex))
- return new Writable(options);
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function() {
- this.emit('error', new Error('Cannot pipe. Not readable.'));
-};
-
-
-function writeAfterEnd(stream, state, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
-}
-
-// If we get something that is not a buffer, string, null, or undefined,
-// and we're not in objectMode, then that's an error.
-// Otherwise stream chunks are all considered to be of length=1, and the
-// watermarks determine how many objects to keep in the buffer, rather than
-// how many bytes or characters.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode) {
- var er = new TypeError('Invalid non-string/buffer chunk');
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function(chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- else if (!encoding)
- encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function')
- cb = function() {};
-
- if (state.ended)
- writeAfterEnd(this, state, cb);
- else if (validChunk(this, state, chunk, cb))
- ret = writeOrBuffer(this, state, chunk, encoding, cb);
-
- return ret;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode &&
- state.decodeStrings !== false &&
- typeof chunk === 'string') {
- chunk = new Buffer(chunk, encoding);
- }
- return chunk;
-}
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, chunk, encoding, cb) {
- chunk = decodeChunk(state, chunk, encoding);
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret)
- state.needDrain = true;
-
- if (state.writing)
- state.buffer.push(new WriteReq(chunk, encoding, cb));
- else
- doWrite(stream, state, len, chunk, encoding, cb);
-
- return ret;
-}
-
-function doWrite(stream, state, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- if (sync)
- process.nextTick(function() {
- cb(er);
- });
- else
- cb(er);
-
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er)
- onwriteError(stream, state, sync, er, cb);
- else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(stream, state);
-
- if (!finished && !state.bufferProcessing && state.buffer.length)
- clearBuffer(stream, state);
-
- if (sync) {
- process.nextTick(function() {
- afterWrite(stream, state, finished, cb);
- });
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished)
- onwriteDrain(stream, state);
- cb();
- if (finished)
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
-
- for (var c = 0; c < state.buffer.length; c++) {
- var entry = state.buffer[c];
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, len, chunk, encoding, cb);
-
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- c++;
- break;
- }
- }
-
- state.bufferProcessing = false;
- if (c < state.buffer.length)
- state.buffer = state.buffer.slice(c);
- else
- state.buffer.length = 0;
-}
-
-Writable.prototype._write = function(chunk, encoding, cb) {
- cb(new Error('not implemented'));
-};
-
-Writable.prototype.end = function(chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (typeof chunk !== 'undefined' && chunk !== null)
- this.write(chunk, encoding);
-
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished)
- endWritable(this, state, cb);
-};
-
-
-function needFinish(stream, state) {
- return (state.ending &&
- state.length === 0 &&
- !state.finished &&
- !state.writing);
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(stream, state);
- if (need) {
- state.finished = true;
- stream.emit('finish');
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished)
- process.nextTick(cb);
- else
- stream.once('finish', cb);
- }
- state.ended = true;
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md
deleted file mode 100644
index 5a76b4149..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# core-util-is
-
-The `util.is*` functions introduced in Node v0.12.
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch
deleted file mode 100644
index a06d5c05f..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch
+++ /dev/null
@@ -1,604 +0,0 @@
-diff --git a/lib/util.js b/lib/util.js
-index a03e874..9074e8e 100644
---- a/lib/util.js
-+++ b/lib/util.js
-@@ -19,430 +19,6 @@
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--var formatRegExp = /%[sdj%]/g;
--exports.format = function(f) {
-- if (!isString(f)) {
-- var objects = [];
-- for (var i = 0; i < arguments.length; i++) {
-- objects.push(inspect(arguments[i]));
-- }
-- return objects.join(' ');
-- }
--
-- var i = 1;
-- var args = arguments;
-- var len = args.length;
-- var str = String(f).replace(formatRegExp, function(x) {
-- if (x === '%%') return '%';
-- if (i >= len) return x;
-- switch (x) {
-- case '%s': return String(args[i++]);
-- case '%d': return Number(args[i++]);
-- case '%j':
-- try {
-- return JSON.stringify(args[i++]);
-- } catch (_) {
-- return '[Circular]';
-- }
-- default:
-- return x;
-- }
-- });
-- for (var x = args[i]; i < len; x = args[++i]) {
-- if (isNull(x) || !isObject(x)) {
-- str += ' ' + x;
-- } else {
-- str += ' ' + inspect(x);
-- }
-- }
-- return str;
--};
--
--
--// Mark that a method should not be used.
--// Returns a modified function which warns once by default.
--// If --no-deprecation is set, then it is a no-op.
--exports.deprecate = function(fn, msg) {
-- // Allow for deprecating things in the process of starting up.
-- if (isUndefined(global.process)) {
-- return function() {
-- return exports.deprecate(fn, msg).apply(this, arguments);
-- };
-- }
--
-- if (process.noDeprecation === true) {
-- return fn;
-- }
--
-- var warned = false;
-- function deprecated() {
-- if (!warned) {
-- if (process.throwDeprecation) {
-- throw new Error(msg);
-- } else if (process.traceDeprecation) {
-- console.trace(msg);
-- } else {
-- console.error(msg);
-- }
-- warned = true;
-- }
-- return fn.apply(this, arguments);
-- }
--
-- return deprecated;
--};
--
--
--var debugs = {};
--var debugEnviron;
--exports.debuglog = function(set) {
-- if (isUndefined(debugEnviron))
-- debugEnviron = process.env.NODE_DEBUG || '';
-- set = set.toUpperCase();
-- if (!debugs[set]) {
-- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
-- var pid = process.pid;
-- debugs[set] = function() {
-- var msg = exports.format.apply(exports, arguments);
-- console.error('%s %d: %s', set, pid, msg);
-- };
-- } else {
-- debugs[set] = function() {};
-- }
-- }
-- return debugs[set];
--};
--
--
--/**
-- * Echos the value of a value. Trys to print the value out
-- * in the best way possible given the different types.
-- *
-- * @param {Object} obj The object to print out.
-- * @param {Object} opts Optional options object that alters the output.
-- */
--/* legacy: obj, showHidden, depth, colors*/
--function inspect(obj, opts) {
-- // default options
-- var ctx = {
-- seen: [],
-- stylize: stylizeNoColor
-- };
-- // legacy...
-- if (arguments.length >= 3) ctx.depth = arguments[2];
-- if (arguments.length >= 4) ctx.colors = arguments[3];
-- if (isBoolean(opts)) {
-- // legacy...
-- ctx.showHidden = opts;
-- } else if (opts) {
-- // got an "options" object
-- exports._extend(ctx, opts);
-- }
-- // set default options
-- if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
-- if (isUndefined(ctx.depth)) ctx.depth = 2;
-- if (isUndefined(ctx.colors)) ctx.colors = false;
-- if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
-- if (ctx.colors) ctx.stylize = stylizeWithColor;
-- return formatValue(ctx, obj, ctx.depth);
--}
--exports.inspect = inspect;
--
--
--// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
--inspect.colors = {
-- 'bold' : [1, 22],
-- 'italic' : [3, 23],
-- 'underline' : [4, 24],
-- 'inverse' : [7, 27],
-- 'white' : [37, 39],
-- 'grey' : [90, 39],
-- 'black' : [30, 39],
-- 'blue' : [34, 39],
-- 'cyan' : [36, 39],
-- 'green' : [32, 39],
-- 'magenta' : [35, 39],
-- 'red' : [31, 39],
-- 'yellow' : [33, 39]
--};
--
--// Don't use 'blue' not visible on cmd.exe
--inspect.styles = {
-- 'special': 'cyan',
-- 'number': 'yellow',
-- 'boolean': 'yellow',
-- 'undefined': 'grey',
-- 'null': 'bold',
-- 'string': 'green',
-- 'date': 'magenta',
-- // "name": intentionally not styling
-- 'regexp': 'red'
--};
--
--
--function stylizeWithColor(str, styleType) {
-- var style = inspect.styles[styleType];
--
-- if (style) {
-- return '\u001b[' + inspect.colors[style][0] + 'm' + str +
-- '\u001b[' + inspect.colors[style][1] + 'm';
-- } else {
-- return str;
-- }
--}
--
--
--function stylizeNoColor(str, styleType) {
-- return str;
--}
--
--
--function arrayToHash(array) {
-- var hash = {};
--
-- array.forEach(function(val, idx) {
-- hash[val] = true;
-- });
--
-- return hash;
--}
--
--
--function formatValue(ctx, value, recurseTimes) {
-- // Provide a hook for user-specified inspect functions.
-- // Check that value is an object with an inspect function on it
-- if (ctx.customInspect &&
-- value &&
-- isFunction(value.inspect) &&
-- // Filter out the util module, it's inspect function is special
-- value.inspect !== exports.inspect &&
-- // Also filter out any prototype objects using the circular check.
-- !(value.constructor && value.constructor.prototype === value)) {
-- var ret = value.inspect(recurseTimes, ctx);
-- if (!isString(ret)) {
-- ret = formatValue(ctx, ret, recurseTimes);
-- }
-- return ret;
-- }
--
-- // Primitive types cannot have properties
-- var primitive = formatPrimitive(ctx, value);
-- if (primitive) {
-- return primitive;
-- }
--
-- // Look up the keys of the object.
-- var keys = Object.keys(value);
-- var visibleKeys = arrayToHash(keys);
--
-- if (ctx.showHidden) {
-- keys = Object.getOwnPropertyNames(value);
-- }
--
-- // Some type of object without properties can be shortcutted.
-- if (keys.length === 0) {
-- if (isFunction(value)) {
-- var name = value.name ? ': ' + value.name : '';
-- return ctx.stylize('[Function' + name + ']', 'special');
-- }
-- if (isRegExp(value)) {
-- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-- }
-- if (isDate(value)) {
-- return ctx.stylize(Date.prototype.toString.call(value), 'date');
-- }
-- if (isError(value)) {
-- return formatError(value);
-- }
-- }
--
-- var base = '', array = false, braces = ['{', '}'];
--
-- // Make Array say that they are Array
-- if (isArray(value)) {
-- array = true;
-- braces = ['[', ']'];
-- }
--
-- // Make functions say that they are functions
-- if (isFunction(value)) {
-- var n = value.name ? ': ' + value.name : '';
-- base = ' [Function' + n + ']';
-- }
--
-- // Make RegExps say that they are RegExps
-- if (isRegExp(value)) {
-- base = ' ' + RegExp.prototype.toString.call(value);
-- }
--
-- // Make dates with properties first say the date
-- if (isDate(value)) {
-- base = ' ' + Date.prototype.toUTCString.call(value);
-- }
--
-- // Make error with message first say the error
-- if (isError(value)) {
-- base = ' ' + formatError(value);
-- }
--
-- if (keys.length === 0 && (!array || value.length == 0)) {
-- return braces[0] + base + braces[1];
-- }
--
-- if (recurseTimes < 0) {
-- if (isRegExp(value)) {
-- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-- } else {
-- return ctx.stylize('[Object]', 'special');
-- }
-- }
--
-- ctx.seen.push(value);
--
-- var output;
-- if (array) {
-- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
-- } else {
-- output = keys.map(function(key) {
-- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
-- });
-- }
--
-- ctx.seen.pop();
--
-- return reduceToSingleString(output, base, braces);
--}
--
--
--function formatPrimitive(ctx, value) {
-- if (isUndefined(value))
-- return ctx.stylize('undefined', 'undefined');
-- if (isString(value)) {
-- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
-- .replace(/'/g, "\\'")
-- .replace(/\\"/g, '"') + '\'';
-- return ctx.stylize(simple, 'string');
-- }
-- if (isNumber(value)) {
-- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0,
-- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 .
-- if (value === 0 && 1 / value < 0)
-- return ctx.stylize('-0', 'number');
-- return ctx.stylize('' + value, 'number');
-- }
-- if (isBoolean(value))
-- return ctx.stylize('' + value, 'boolean');
-- // For some reason typeof null is "object", so special case here.
-- if (isNull(value))
-- return ctx.stylize('null', 'null');
--}
--
--
--function formatError(value) {
-- return '[' + Error.prototype.toString.call(value) + ']';
--}
--
--
--function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
-- var output = [];
-- for (var i = 0, l = value.length; i < l; ++i) {
-- if (hasOwnProperty(value, String(i))) {
-- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-- String(i), true));
-- } else {
-- output.push('');
-- }
-- }
-- keys.forEach(function(key) {
-- if (!key.match(/^\d+$/)) {
-- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-- key, true));
-- }
-- });
-- return output;
--}
--
--
--function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
-- var name, str, desc;
-- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
-- if (desc.get) {
-- if (desc.set) {
-- str = ctx.stylize('[Getter/Setter]', 'special');
-- } else {
-- str = ctx.stylize('[Getter]', 'special');
-- }
-- } else {
-- if (desc.set) {
-- str = ctx.stylize('[Setter]', 'special');
-- }
-- }
-- if (!hasOwnProperty(visibleKeys, key)) {
-- name = '[' + key + ']';
-- }
-- if (!str) {
-- if (ctx.seen.indexOf(desc.value) < 0) {
-- if (isNull(recurseTimes)) {
-- str = formatValue(ctx, desc.value, null);
-- } else {
-- str = formatValue(ctx, desc.value, recurseTimes - 1);
-- }
-- if (str.indexOf('\n') > -1) {
-- if (array) {
-- str = str.split('\n').map(function(line) {
-- return ' ' + line;
-- }).join('\n').substr(2);
-- } else {
-- str = '\n' + str.split('\n').map(function(line) {
-- return ' ' + line;
-- }).join('\n');
-- }
-- }
-- } else {
-- str = ctx.stylize('[Circular]', 'special');
-- }
-- }
-- if (isUndefined(name)) {
-- if (array && key.match(/^\d+$/)) {
-- return str;
-- }
-- name = JSON.stringify('' + key);
-- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
-- name = name.substr(1, name.length - 2);
-- name = ctx.stylize(name, 'name');
-- } else {
-- name = name.replace(/'/g, "\\'")
-- .replace(/\\"/g, '"')
-- .replace(/(^"|"$)/g, "'");
-- name = ctx.stylize(name, 'string');
-- }
-- }
--
-- return name + ': ' + str;
--}
--
--
--function reduceToSingleString(output, base, braces) {
-- var numLinesEst = 0;
-- var length = output.reduce(function(prev, cur) {
-- numLinesEst++;
-- if (cur.indexOf('\n') >= 0) numLinesEst++;
-- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
-- }, 0);
--
-- if (length > 60) {
-- return braces[0] +
-- (base === '' ? '' : base + '\n ') +
-- ' ' +
-- output.join(',\n ') +
-- ' ' +
-- braces[1];
-- }
--
-- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
--}
--
--
- // NOTE: These type checking functions intentionally don't use `instanceof`
- // because it is fragile and can be easily faked with `Object.create()`.
- function isArray(ar) {
-@@ -522,166 +98,10 @@ function isPrimitive(arg) {
- exports.isPrimitive = isPrimitive;
-
- function isBuffer(arg) {
-- return arg instanceof Buffer;
-+ return Buffer.isBuffer(arg);
- }
- exports.isBuffer = isBuffer;
-
- function objectToString(o) {
- return Object.prototype.toString.call(o);
--}
--
--
--function pad(n) {
-- return n < 10 ? '0' + n.toString(10) : n.toString(10);
--}
--
--
--var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
-- 'Oct', 'Nov', 'Dec'];
--
--// 26 Feb 16:19:34
--function timestamp() {
-- var d = new Date();
-- var time = [pad(d.getHours()),
-- pad(d.getMinutes()),
-- pad(d.getSeconds())].join(':');
-- return [d.getDate(), months[d.getMonth()], time].join(' ');
--}
--
--
--// log is just a thin wrapper to console.log that prepends a timestamp
--exports.log = function() {
-- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
--};
--
--
--/**
-- * Inherit the prototype methods from one constructor into another.
-- *
-- * The Function.prototype.inherits from lang.js rewritten as a standalone
-- * function (not on Function.prototype). NOTE: If this file is to be loaded
-- * during bootstrapping this function needs to be rewritten using some native
-- * functions as prototype setup using normal JavaScript does not work as
-- * expected during bootstrapping (see mirror.js in r114903).
-- *
-- * @param {function} ctor Constructor function which needs to inherit the
-- * prototype.
-- * @param {function} superCtor Constructor function to inherit prototype from.
-- */
--exports.inherits = function(ctor, superCtor) {
-- ctor.super_ = superCtor;
-- ctor.prototype = Object.create(superCtor.prototype, {
-- constructor: {
-- value: ctor,
-- enumerable: false,
-- writable: true,
-- configurable: true
-- }
-- });
--};
--
--exports._extend = function(origin, add) {
-- // Don't do anything if add isn't an object
-- if (!add || !isObject(add)) return origin;
--
-- var keys = Object.keys(add);
-- var i = keys.length;
-- while (i--) {
-- origin[keys[i]] = add[keys[i]];
-- }
-- return origin;
--};
--
--function hasOwnProperty(obj, prop) {
-- return Object.prototype.hasOwnProperty.call(obj, prop);
--}
--
--
--// Deprecated old stuff.
--
--exports.p = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- console.error(exports.inspect(arguments[i]));
-- }
--}, 'util.p: Use console.error() instead');
--
--
--exports.exec = exports.deprecate(function() {
-- return require('child_process').exec.apply(this, arguments);
--}, 'util.exec is now called `child_process.exec`.');
--
--
--exports.print = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stdout.write(String(arguments[i]));
-- }
--}, 'util.print: Use console.log instead');
--
--
--exports.puts = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stdout.write(arguments[i] + '\n');
-- }
--}, 'util.puts: Use console.log instead');
--
--
--exports.debug = exports.deprecate(function(x) {
-- process.stderr.write('DEBUG: ' + x + '\n');
--}, 'util.debug: Use console.error instead');
--
--
--exports.error = exports.deprecate(function(x) {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stderr.write(arguments[i] + '\n');
-- }
--}, 'util.error: Use console.error instead');
--
--
--exports.pump = exports.deprecate(function(readStream, writeStream, callback) {
-- var callbackCalled = false;
--
-- function call(a, b, c) {
-- if (callback && !callbackCalled) {
-- callback(a, b, c);
-- callbackCalled = true;
-- }
-- }
--
-- readStream.addListener('data', function(chunk) {
-- if (writeStream.write(chunk) === false) readStream.pause();
-- });
--
-- writeStream.addListener('drain', function() {
-- readStream.resume();
-- });
--
-- readStream.addListener('end', function() {
-- writeStream.end();
-- });
--
-- readStream.addListener('close', function() {
-- call();
-- });
--
-- readStream.addListener('error', function(err) {
-- writeStream.end();
-- call(err);
-- });
--
-- writeStream.addListener('error', function(err) {
-- readStream.destroy();
-- call(err);
-- });
--}, 'util.pump(): Use readableStream.pipe() instead');
--
--
--var uv;
--exports._errnoException = function(err, syscall) {
-- if (isUndefined(uv)) uv = process.binding('uv');
-- var errname = uv.errname(err);
-- var e = new Error(syscall + ' ' + errname);
-- e.code = errname;
-- e.errno = errname;
-- e.syscall = syscall;
-- return e;
--};
-+} \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
deleted file mode 100644
index 9074e8ebc..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
- return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return isObject(e) &&
- (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-function isBuffer(arg) {
- return Buffer.isBuffer(arg);
-}
-exports.isBuffer = isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-} \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
deleted file mode 100644
index b67333380..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "core-util-is",
- "version": "1.0.1",
- "description": "The `util.is*` functions introduced in Node v0.12.",
- "main": "lib/util.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/core-util-is.git"
- },
- "keywords": [
- "util",
- "isBuffer",
- "isArray",
- "isNumber",
- "isString",
- "isRegExp",
- "isThis",
- "isThat",
- "polyfill"
- ],
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/isaacs/core-util-is/issues"
- },
- "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n",
- "readmeFilename": "README.md",
- "homepage": "https://github.com/isaacs/core-util-is#readme",
- "_id": "core-util-is@1.0.1",
- "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
- "_from": "core-util-is@>=1.0.0 <1.1.0"
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js
deleted file mode 100644
index 007fa1057..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
- return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return isObject(e) && objectToString(e) === '[object Error]';
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-function isBuffer(arg) {
- return arg instanceof Buffer;
-}
-exports.isBuffer = isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md
deleted file mode 100644
index 052a62b8d..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-
-# isarray
-
-`Array#isArray` for older browsers.
-
-## Usage
-
-```js
-var isArray = require('isarray');
-
-console.log(isArray([])); // => true
-console.log(isArray({})); // => false
-```
-
-## Installation
-
-With [npm](http://npmjs.org) do
-
-```bash
-$ npm install isarray
-```
-
-Then bundle for the browser with
-[browserify](https://github.com/substack/browserify).
-
-With [component](http://component.io) do
-
-```bash
-$ component install juliangruber/isarray
-```
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
-
-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/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js
deleted file mode 100644
index ec58596ae..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js
+++ /dev/null
@@ -1,209 +0,0 @@
-
-/**
- * Require the given path.
- *
- * @param {String} path
- * @return {Object} exports
- * @api public
- */
-
-function require(path, parent, orig) {
- var resolved = require.resolve(path);
-
- // lookup failed
- if (null == resolved) {
- orig = orig || path;
- parent = parent || 'root';
- var err = new Error('Failed to require "' + orig + '" from "' + parent + '"');
- err.path = orig;
- err.parent = parent;
- err.require = true;
- throw err;
- }
-
- var module = require.modules[resolved];
-
- // perform real require()
- // by invoking the module's
- // registered function
- if (!module.exports) {
- module.exports = {};
- module.client = module.component = true;
- module.call(this, module.exports, require.relative(resolved), module);
- }
-
- return module.exports;
-}
-
-/**
- * Registered modules.
- */
-
-require.modules = {};
-
-/**
- * Registered aliases.
- */
-
-require.aliases = {};
-
-/**
- * Resolve `path`.
- *
- * Lookup:
- *
- * - PATH/index.js
- * - PATH.js
- * - PATH
- *
- * @param {String} path
- * @return {String} path or null
- * @api private
- */
-
-require.resolve = function(path) {
- if (path.charAt(0) === '/') path = path.slice(1);
- var index = path + '/index.js';
-
- var paths = [
- path,
- path + '.js',
- path + '.json',
- path + '/index.js',
- path + '/index.json'
- ];
-
- for (var i = 0; i < paths.length; i++) {
- var path = paths[i];
- if (require.modules.hasOwnProperty(path)) return path;
- }
-
- if (require.aliases.hasOwnProperty(index)) {
- return require.aliases[index];
- }
-};
-
-/**
- * Normalize `path` relative to the current path.
- *
- * @param {String} curr
- * @param {String} path
- * @return {String}
- * @api private
- */
-
-require.normalize = function(curr, path) {
- var segs = [];
-
- if ('.' != path.charAt(0)) return path;
-
- curr = curr.split('/');
- path = path.split('/');
-
- for (var i = 0; i < path.length; ++i) {
- if ('..' == path[i]) {
- curr.pop();
- } else if ('.' != path[i] && '' != path[i]) {
- segs.push(path[i]);
- }
- }
-
- return curr.concat(segs).join('/');
-};
-
-/**
- * Register module at `path` with callback `definition`.
- *
- * @param {String} path
- * @param {Function} definition
- * @api private
- */
-
-require.register = function(path, definition) {
- require.modules[path] = definition;
-};
-
-/**
- * Alias a module definition.
- *
- * @param {String} from
- * @param {String} to
- * @api private
- */
-
-require.alias = function(from, to) {
- if (!require.modules.hasOwnProperty(from)) {
- throw new Error('Failed to alias "' + from + '", it does not exist');
- }
- require.aliases[to] = from;
-};
-
-/**
- * Return a require function relative to the `parent` path.
- *
- * @param {String} parent
- * @return {Function}
- * @api private
- */
-
-require.relative = function(parent) {
- var p = require.normalize(parent, '..');
-
- /**
- * lastIndexOf helper.
- */
-
- function lastIndexOf(arr, obj) {
- var i = arr.length;
- while (i--) {
- if (arr[i] === obj) return i;
- }
- return -1;
- }
-
- /**
- * The relative require() itself.
- */
-
- function localRequire(path) {
- var resolved = localRequire.resolve(path);
- return require(resolved, parent, path);
- }
-
- /**
- * Resolve relative to the parent.
- */
-
- localRequire.resolve = function(path) {
- var c = path.charAt(0);
- if ('/' == c) return path.slice(1);
- if ('.' == c) return require.normalize(p, path);
-
- // resolve deps by returning
- // the dep in the nearest "deps"
- // directory
- var segs = parent.split('/');
- var i = lastIndexOf(segs, 'deps') + 1;
- if (!i) i = 0;
- path = segs.slice(0, i + 1).join('/') + '/deps/' + path;
- return path;
- };
-
- /**
- * Check if module is defined at `path`.
- */
-
- localRequire.exists = function(path) {
- return require.modules.hasOwnProperty(localRequire.resolve(path));
- };
-
- return localRequire;
-};
-require.register("isarray/index.js", function(exports, require, module){
-module.exports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
-};
-
-});
-require.alias("isarray/index.js", "isarray/index.js");
-
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json
deleted file mode 100644
index 9e31b6838..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name" : "isarray",
- "description" : "Array#isArray for older browsers",
- "version" : "0.0.1",
- "repository" : "juliangruber/isarray",
- "homepage": "https://github.com/juliangruber/isarray",
- "main" : "index.js",
- "scripts" : [
- "index.js"
- ],
- "dependencies" : {},
- "keywords": ["browser","isarray","array"],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT"
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js
deleted file mode 100644
index 5f5ad45d4..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
-};
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
deleted file mode 100644
index fb1eb3786..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "isarray",
- "description": "Array#isArray for older browsers",
- "version": "0.0.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/isarray.git"
- },
- "homepage": "https://github.com/juliangruber/isarray",
- "main": "index.js",
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "*"
- },
- "keywords": [
- "browser",
- "isarray",
- "array"
- ],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/juliangruber/isarray/issues"
- },
- "_id": "isarray@0.0.1",
- "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
- "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "_from": "isarray@0.0.1"
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore
deleted file mode 100644
index 206320cc1..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build
-test
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE
deleted file mode 100644
index 6de584a48..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright Joyent, Inc. and other Node contributors.
-
-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/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md
deleted file mode 100644
index 4d2aa0015..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-**string_decoder.js** (`require('string_decoder')`) from Node.js core
-
-Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details.
-
-Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**
-
-The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js
deleted file mode 100644
index b00e54fb7..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-var Buffer = require('buffer').Buffer;
-
-var isBufferEncoding = Buffer.isEncoding
- || function(encoding) {
- switch (encoding && encoding.toLowerCase()) {
- case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
- default: return false;
- }
- }
-
-
-function assertEncoding(encoding) {
- if (encoding && !isBufferEncoding(encoding)) {
- throw new Error('Unknown encoding: ' + encoding);
- }
-}
-
-// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters. CESU-8 is handled as part of the UTF-8 encoding.
-//
-// @TODO Handling all encodings inside a single object makes it very difficult
-// to reason about this code, so it should be split up in the future.
-// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
-// points as used by CESU-8.
-var StringDecoder = exports.StringDecoder = function(encoding) {
- this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
- assertEncoding(encoding);
- switch (this.encoding) {
- case 'utf8':
- // CESU-8 represents each of Surrogate Pair by 3-bytes
- this.surrogateSize = 3;
- break;
- case 'ucs2':
- case 'utf16le':
- // UTF-16 represents each of Surrogate Pair by 2-bytes
- this.surrogateSize = 2;
- this.detectIncompleteChar = utf16DetectIncompleteChar;
- break;
- case 'base64':
- // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
- this.surrogateSize = 3;
- this.detectIncompleteChar = base64DetectIncompleteChar;
- break;
- default:
- this.write = passThroughWrite;
- return;
- }
-
- // Enough space to store all bytes of a single character. UTF-8 needs 4
- // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
- this.charBuffer = new Buffer(6);
- // Number of bytes received for the current incomplete multi-byte character.
- this.charReceived = 0;
- // Number of bytes expected for the current incomplete multi-byte character.
- this.charLength = 0;
-};
-
-
-// write decodes the given buffer and returns it as JS string that is
-// guaranteed to not contain any partial multi-byte characters. Any partial
-// character found at the end of the buffer is buffered up, and will be
-// returned when calling write again with the remaining bytes.
-//
-// Note: Converting a Buffer containing an orphan surrogate to a String
-// currently works, but converting a String to a Buffer (via `new Buffer`, or
-// Buffer#write) will replace incomplete surrogates with the unicode
-// replacement character. See https://codereview.chromium.org/121173009/ .
-StringDecoder.prototype.write = function(buffer) {
- var charStr = '';
- // if our last write ended with an incomplete multibyte character
- while (this.charLength) {
- // determine how many remaining bytes this buffer has to offer for this char
- var available = (buffer.length >= this.charLength - this.charReceived) ?
- this.charLength - this.charReceived :
- buffer.length;
-
- // add the new bytes to the char buffer
- buffer.copy(this.charBuffer, this.charReceived, 0, available);
- this.charReceived += available;
-
- if (this.charReceived < this.charLength) {
- // still not enough chars in this buffer? wait for more ...
- return '';
- }
-
- // remove bytes belonging to the current character from the buffer
- buffer = buffer.slice(available, buffer.length);
-
- // get the character that was split
- charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
-
- // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
- var charCode = charStr.charCodeAt(charStr.length - 1);
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- this.charLength += this.surrogateSize;
- charStr = '';
- continue;
- }
- this.charReceived = this.charLength = 0;
-
- // if there are no more bytes in this buffer, just emit our char
- if (buffer.length === 0) {
- return charStr;
- }
- break;
- }
-
- // determine and set charLength / charReceived
- this.detectIncompleteChar(buffer);
-
- var end = buffer.length;
- if (this.charLength) {
- // buffer the incomplete character bytes we got
- buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
- end -= this.charReceived;
- }
-
- charStr += buffer.toString(this.encoding, 0, end);
-
- var end = charStr.length - 1;
- var charCode = charStr.charCodeAt(end);
- // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- var size = this.surrogateSize;
- this.charLength += size;
- this.charReceived += size;
- this.charBuffer.copy(this.charBuffer, size, 0, size);
- buffer.copy(this.charBuffer, 0, 0, size);
- return charStr.substring(0, end);
- }
-
- // or just emit the charStr
- return charStr;
-};
-
-// detectIncompleteChar determines if there is an incomplete UTF-8 character at
-// the end of the given buffer. If so, it sets this.charLength to the byte
-// length that character, and sets this.charReceived to the number of bytes
-// that are available for this character.
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
- // determine how many bytes we have to check at the end of this buffer
- var i = (buffer.length >= 3) ? 3 : buffer.length;
-
- // Figure out if one of the last i bytes of our buffer announces an
- // incomplete char.
- for (; i > 0; i--) {
- var c = buffer[buffer.length - i];
-
- // See http://en.wikipedia.org/wiki/UTF-8#Description
-
- // 110XXXXX
- if (i == 1 && c >> 5 == 0x06) {
- this.charLength = 2;
- break;
- }
-
- // 1110XXXX
- if (i <= 2 && c >> 4 == 0x0E) {
- this.charLength = 3;
- break;
- }
-
- // 11110XXX
- if (i <= 3 && c >> 3 == 0x1E) {
- this.charLength = 4;
- break;
- }
- }
- this.charReceived = i;
-};
-
-StringDecoder.prototype.end = function(buffer) {
- var res = '';
- if (buffer && buffer.length)
- res = this.write(buffer);
-
- if (this.charReceived) {
- var cr = this.charReceived;
- var buf = this.charBuffer;
- var enc = this.encoding;
- res += buf.slice(0, cr).toString(enc);
- }
-
- return res;
-};
-
-function passThroughWrite(buffer) {
- return buffer.toString(this.encoding);
-}
-
-function utf16DetectIncompleteChar(buffer) {
- this.charReceived = buffer.length % 2;
- this.charLength = this.charReceived ? 2 : 0;
-}
-
-function base64DetectIncompleteChar(buffer) {
- this.charReceived = buffer.length % 3;
- this.charLength = this.charReceived ? 3 : 0;
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
deleted file mode 100644
index ee7070235..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "string_decoder",
- "version": "0.10.31",
- "description": "The string_decoder module from Node core",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "tap": "~0.4.8"
- },
- "scripts": {
- "test": "tap test/simple/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/rvagg/string_decoder.git"
- },
- "homepage": "https://github.com/rvagg/string_decoder",
- "keywords": [
- "string",
- "decoder",
- "browser",
- "browserify"
- ],
- "license": "MIT",
- "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/rvagg/string_decoder/issues"
- },
- "_id": "string_decoder@0.10.31",
- "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "_from": "string_decoder@>=0.10.0 <0.11.0"
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json b/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json
deleted file mode 100644
index d4c12cab4..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "readable-stream",
- "version": "1.0.33",
- "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x",
- "main": "readable.js",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x",
- "inherits": "~2.0.1"
- },
- "devDependencies": {
- "tap": "~0.2.6"
- },
- "scripts": {
- "test": "tap test/simple/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/readable-stream.git"
- },
- "keywords": [
- "readable",
- "stream",
- "pipe"
- ],
- "browser": {
- "util": false
- },
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "MIT",
- "readme": "# readable-stream\n\n***Node-core streams for userland***\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)\n\nThis package is a mirror of the Streams2 and Streams3 implementations in Node-core.\n\nIf you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core.\n\n**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.\n\n**readable-stream** uses proper patch-level versioning so if you pin to `\"~1.0.0\"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `\"~1.1.0\"`\n\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/isaacs/readable-stream/issues"
- },
- "homepage": "https://github.com/isaacs/readable-stream#readme",
- "_id": "readable-stream@1.0.33",
- "_shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c",
- "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
- "_from": "readable-stream@>=1.0.26 <1.1.0"
-}
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js
deleted file mode 100644
index 27e8d8a55..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_passthrough.js")
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js
deleted file mode 100644
index 8b5337b5c..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = Stream;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js
deleted file mode 100644
index 5d482f078..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_transform.js")
diff --git a/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js b/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js
deleted file mode 100644
index e1e9efdf3..000000000
--- a/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_writable.js")
diff --git a/node_modules/request/node_modules/bl/package.json b/node_modules/request/node_modules/bl/package.json
deleted file mode 100644
index d6930087e..000000000
--- a/node_modules/request/node_modules/bl/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "bl",
- "version": "0.9.4",
- "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!",
- "main": "bl.js",
- "scripts": {
- "test": "node test/test.js | faucet",
- "test-local": "brtapsauce-local test/basic-test.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/rvagg/bl.git"
- },
- "homepage": "https://github.com/rvagg/bl",
- "authors": [
- "Rod Vagg <rod@vagg.org> (https://github.com/rvagg)",
- "Matteo Collina <matteo.collina@gmail.com> (https://github.com/mcollina)",
- "Jarett Cruger <jcrugzz@gmail.com> (https://github.com/jcrugzz)"
- ],
- "keywords": [
- "buffer",
- "buffers",
- "stream",
- "awesomesauce"
- ],
- "license": "MIT",
- "dependencies": {
- "readable-stream": "~1.0.26"
- },
- "devDependencies": {
- "tape": "~2.12.3",
- "hash_file": "~0.1.1",
- "faucet": "~0.0.1",
- "brtapsauce": "~0.3.0"
- },
- "readme": "# bl *(BufferList)*\n\n**A Node.js Buffer list collector, reader and streamer thingy.**\n\n[![NPM](https://nodei.co/npm/bl.png?downloads=true&downloadRank=true)](https://nodei.co/npm/bl/)\n[![NPM](https://nodei.co/npm-dl/bl.png?months=6&height=3)](https://nodei.co/npm/bl/)\n\n**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them!\n\nThe original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently.\n\n```js\nconst BufferList = require('bl')\n\nvar bl = new BufferList()\nbl.append(new Buffer('abcd'))\nbl.append(new Buffer('efg'))\nbl.append('hi') // bl will also accept & convert Strings\nbl.append(new Buffer('j'))\nbl.append(new Buffer([ 0x3, 0x4 ]))\n\nconsole.log(bl.length) // 12\n\nconsole.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij'\nconsole.log(bl.slice(3, 10).toString('ascii')) // 'defghij'\nconsole.log(bl.slice(3, 6).toString('ascii')) // 'def'\nconsole.log(bl.slice(3, 8).toString('ascii')) // 'defgh'\nconsole.log(bl.slice(5, 10).toString('ascii')) // 'fghij'\n\n// or just use toString!\nconsole.log(bl.toString()) // 'abcdefghij\\u0003\\u0004'\nconsole.log(bl.toString('ascii', 3, 8)) // 'defgh'\nconsole.log(bl.toString('ascii', 5, 10)) // 'fghij'\n\n// other standard Buffer readables\nconsole.log(bl.readUInt16BE(10)) // 0x0304\nconsole.log(bl.readUInt16LE(10)) // 0x0403\n```\n\nGive it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**:\n\n```js\nconst bl = require('bl')\n , fs = require('fs')\n\nfs.createReadStream('README.md')\n .pipe(bl(function (err, data) { // note 'new' isn't strictly required\n // `data` is a complete Buffer object containing the full data\n console.log(data.toString())\n }))\n```\n\nNote that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream.\n\nOr to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!):\n```js\nconst hyperquest = require('hyperquest')\n , bl = require('bl')\n , url = 'https://raw.github.com/rvagg/bl/master/README.md'\n\nhyperquest(url).pipe(bl(function (err, data) {\n console.log(data.toString())\n}))\n```\n\nOr, use it as a readable stream to recompose a list of Buffers to an output source:\n\n```js\nconst BufferList = require('bl')\n , fs = require('fs')\n\nvar bl = new BufferList()\nbl.append(new Buffer('abcd'))\nbl.append(new Buffer('efg'))\nbl.append(new Buffer('hi'))\nbl.append(new Buffer('j'))\n\nbl.pipe(fs.createWriteStream('gibberish.txt'))\n```\n\n## API\n\n * <a href=\"#ctor\"><code><b>new BufferList([ callback ])</b></code></a>\n * <a href=\"#length\"><code>bl.<b>length</b></code></a>\n * <a href=\"#append\"><code>bl.<b>append(buffer)</b></code></a>\n * <a href=\"#get\"><code>bl.<b>get(index)</b></code></a>\n * <a href=\"#slice\"><code>bl.<b>slice([ start[, end ] ])</b></code></a>\n * <a href=\"#copy\"><code>bl.<b>copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])</b></code></a>\n * <a href=\"#duplicate\"><code>bl.<b>duplicate()</b></code></a>\n * <a href=\"#consume\"><code>bl.<b>consume(bytes)</b></code></a>\n * <a href=\"#toString\"><code>bl.<b>toString([encoding, [ start, [ end ]]])</b></code></a>\n * <a href=\"#readXX\"><code>bl.<b>readDoubleBE()</b></code>, <code>bl.<b>readDoubleLE()</b></code>, <code>bl.<b>readFloatBE()</b></code>, <code>bl.<b>readFloatLE()</b></code>, <code>bl.<b>readInt32BE()</b></code>, <code>bl.<b>readInt32LE()</b></code>, <code>bl.<b>readUInt32BE()</b></code>, <code>bl.<b>readUInt32LE()</b></code>, <code>bl.<b>readInt16BE()</b></code>, <code>bl.<b>readInt16LE()</b></code>, <code>bl.<b>readUInt16BE()</b></code>, <code>bl.<b>readUInt16LE()</b></code>, <code>bl.<b>readInt8()</b></code>, <code>bl.<b>readUInt8()</b></code></a>\n * <a href=\"#streams\">Streams</a>\n\n--------------------------------------------------------\n<a name=\"ctor\"></a>\n### new BufferList([ callback | buffer | buffer array ])\nThe constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream.\n\nNormally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object.\n\n`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with:\n\n```js\nvar bl = require('bl')\nvar myinstance = bl()\n\n// equivilant to:\n\nvar BufferList = require('bl')\nvar myinstance = new BufferList()\n```\n\n--------------------------------------------------------\n<a name=\"length\"></a>\n### bl.length\nGet the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list.\n\n--------------------------------------------------------\n<a name=\"append\"></a>\n### bl.append(buffer)\n`append(buffer)` adds an additional buffer or BufferList to the internal list.\n\n--------------------------------------------------------\n<a name=\"get\"></a>\n### bl.get(index)\n`get()` will return the byte at the specified index.\n\n--------------------------------------------------------\n<a name=\"slice\"></a>\n### bl.slice([ start, [ end ] ])\n`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively.\n\nIf the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer.\n\n--------------------------------------------------------\n<a name=\"copy\"></a>\n### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])\n`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively.\n\n--------------------------------------------------------\n<a name=\"duplicate\"></a>\n### bl.duplicate()\n`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example:\n\n```js\nvar bl = new BufferList()\n\nbl.append('hello')\nbl.append(' world')\nbl.append('\\n')\n\nbl.duplicate().pipe(process.stdout, { end: false })\n\nconsole.log(bl.toString())\n```\n\n--------------------------------------------------------\n<a name=\"consume\"></a>\n### bl.consume(bytes)\n`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers&mdash;initial offsets will be calculated accordingly in order to give you a consistent view of the data.\n\n--------------------------------------------------------\n<a name=\"toString\"></a>\n### bl.toString([encoding, [ start, [ end ]]])\n`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information.\n\n--------------------------------------------------------\n<a name=\"readXX\"></a>\n### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8()\n\nAll of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently.\n\nSee the <b><code>[Buffer](http://nodejs.org/docs/latest/api/buffer.html)</code></b> documentation for how these work.\n\n--------------------------------------------------------\n<a name=\"streams\"></a>\n### Streams\n**bl** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **bl** instance.\n\n--------------------------------------------------------\n\n## Contributors\n\n**bl** is brought to you by the following hackers:\n\n * [Rod Vagg](https://github.com/rvagg)\n * [Matteo Collina](https://github.com/mcollina)\n * [Jarett Cruger](https://github.com/jcrugzz)\n\n=======\n\n<a name=\"license\"></a>\n## License &amp; copyright\n\nCopyright (c) 2013-2014 bl contributors (listed above).\n\nbl is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/rvagg/bl/issues"
- },
- "_id": "bl@0.9.4",
- "_shasum": "4702ddf72fbe0ecd82787c00c113aea1935ad0e7",
- "_resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz",
- "_from": "bl@>=0.9.0 <0.10.0"
-}
diff --git a/node_modules/request/node_modules/bl/test/basic-test.js b/node_modules/request/node_modules/bl/test/basic-test.js
deleted file mode 100644
index 75116a30f..000000000
--- a/node_modules/request/node_modules/bl/test/basic-test.js
+++ /dev/null
@@ -1,541 +0,0 @@
-var tape = require('tape')
- , crypto = require('crypto')
- , fs = require('fs')
- , hash = require('hash_file')
- , BufferList = require('../')
-
- , encodings =
- ('hex utf8 utf-8 ascii binary base64'
- + (process.browser ? '' : ' ucs2 ucs-2 utf16le utf-16le')).split(' ')
-
-tape('single bytes from single buffer', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abcd'))
-
- t.equal(bl.length, 4)
-
- t.equal(bl.get(0), 97)
- t.equal(bl.get(1), 98)
- t.equal(bl.get(2), 99)
- t.equal(bl.get(3), 100)
-
- t.end()
-})
-
-tape('single bytes from multiple buffers', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.get(0), 97)
- t.equal(bl.get(1), 98)
- t.equal(bl.get(2), 99)
- t.equal(bl.get(3), 100)
- t.equal(bl.get(4), 101)
- t.equal(bl.get(5), 102)
- t.equal(bl.get(6), 103)
- t.equal(bl.get(7), 104)
- t.equal(bl.get(8), 105)
- t.equal(bl.get(9), 106)
- t.end()
-})
-
-tape('multi bytes from single buffer', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abcd'))
-
- t.equal(bl.length, 4)
-
- t.equal(bl.slice(0, 4).toString('ascii'), 'abcd')
- t.equal(bl.slice(0, 3).toString('ascii'), 'abc')
- t.equal(bl.slice(1, 4).toString('ascii'), 'bcd')
-
- t.end()
-})
-
-tape('multiple bytes from multiple buffers', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
- t.equal(bl.slice(3, 10).toString('ascii'), 'defghij')
- t.equal(bl.slice(3, 6).toString('ascii'), 'def')
- t.equal(bl.slice(3, 8).toString('ascii'), 'defgh')
- t.equal(bl.slice(5, 10).toString('ascii'), 'fghij')
-
- t.end()
-})
-
-tape('multiple bytes from multiple buffer lists', function (t) {
- var bl = new BufferList()
-
- bl.append(new BufferList([new Buffer('abcd'), new Buffer('efg')]))
- bl.append(new BufferList([new Buffer('hi'), new Buffer('j')]))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
- t.equal(bl.slice(3, 10).toString('ascii'), 'defghij')
- t.equal(bl.slice(3, 6).toString('ascii'), 'def')
- t.equal(bl.slice(3, 8).toString('ascii'), 'defgh')
- t.equal(bl.slice(5, 10).toString('ascii'), 'fghij')
-
- t.end()
-})
-
-tape('consuming from multiple buffers', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
-
- bl.consume(3)
- t.equal(bl.length, 7)
- t.equal(bl.slice(0, 7).toString('ascii'), 'defghij')
-
- bl.consume(2)
- t.equal(bl.length, 5)
- t.equal(bl.slice(0, 5).toString('ascii'), 'fghij')
-
- bl.consume(1)
- t.equal(bl.length, 4)
- t.equal(bl.slice(0, 4).toString('ascii'), 'ghij')
-
- bl.consume(1)
- t.equal(bl.length, 3)
- t.equal(bl.slice(0, 3).toString('ascii'), 'hij')
-
- bl.consume(2)
- t.equal(bl.length, 1)
- t.equal(bl.slice(0, 1).toString('ascii'), 'j')
-
- t.end()
-})
-
-tape('test readUInt8 / readInt8', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x3
- buf2[2] = 0x4
- buf3[0] = 0x23
- buf3[1] = 0x42
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readUInt8(2), 0x3)
- t.equal(bl.readInt8(2), 0x3)
- t.equal(bl.readUInt8(3), 0x4)
- t.equal(bl.readInt8(3), 0x4)
- t.equal(bl.readUInt8(4), 0x23)
- t.equal(bl.readInt8(4), 0x23)
- t.equal(bl.readUInt8(5), 0x42)
- t.equal(bl.readInt8(5), 0x42)
- t.end()
-})
-
-tape('test readUInt16LE / readUInt16BE / readInt16LE / readInt16BE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x3
- buf2[2] = 0x4
- buf3[0] = 0x23
- buf3[1] = 0x42
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readUInt16BE(2), 0x0304)
- t.equal(bl.readUInt16LE(2), 0x0403)
- t.equal(bl.readInt16BE(2), 0x0304)
- t.equal(bl.readInt16LE(2), 0x0403)
- t.equal(bl.readUInt16BE(3), 0x0423)
- t.equal(bl.readUInt16LE(3), 0x2304)
- t.equal(bl.readInt16BE(3), 0x0423)
- t.equal(bl.readInt16LE(3), 0x2304)
- t.equal(bl.readUInt16BE(4), 0x2342)
- t.equal(bl.readUInt16LE(4), 0x4223)
- t.equal(bl.readInt16BE(4), 0x2342)
- t.equal(bl.readInt16LE(4), 0x4223)
- t.end()
-})
-
-tape('test readUInt32LE / readUInt32BE / readInt32LE / readInt32BE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x3
- buf2[2] = 0x4
- buf3[0] = 0x23
- buf3[1] = 0x42
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readUInt32BE(2), 0x03042342)
- t.equal(bl.readUInt32LE(2), 0x42230403)
- t.equal(bl.readInt32BE(2), 0x03042342)
- t.equal(bl.readInt32LE(2), 0x42230403)
- t.end()
-})
-
-tape('test readFloatLE / readFloatBE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x00
- buf2[2] = 0x00
- buf3[0] = 0x80
- buf3[1] = 0x3f
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readFloatLE(2), 0x01)
- t.end()
-})
-
-tape('test readDoubleLE / readDoubleBE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(10)
- , bl = new BufferList()
-
- buf2[1] = 0x55
- buf2[2] = 0x55
- buf3[0] = 0x55
- buf3[1] = 0x55
- buf3[2] = 0x55
- buf3[3] = 0x55
- buf3[4] = 0xd5
- buf3[5] = 0x3f
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readDoubleLE(2), 0.3333333333333333)
- t.end()
-})
-
-tape('test toString', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.toString('ascii', 0, 10), 'abcdefghij')
- t.equal(bl.toString('ascii', 3, 10), 'defghij')
- t.equal(bl.toString('ascii', 3, 6), 'def')
- t.equal(bl.toString('ascii', 3, 8), 'defgh')
- t.equal(bl.toString('ascii', 5, 10), 'fghij')
-
- t.end()
-})
-
-tape('test toString encoding', function (t) {
- var bl = new BufferList()
- , b = new Buffer('abcdefghij\xff\x00')
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
- bl.append(new Buffer('\xff\x00'))
-
- encodings.forEach(function (enc) {
- t.equal(bl.toString(enc), b.toString(enc), enc)
- })
-
- t.end()
-})
-
-!process.browser && tape('test stream', function (t) {
- var random = crypto.randomBytes(65534)
- , rndhash = hash(random, 'md5')
- , md5sum = crypto.createHash('md5')
- , bl = new BufferList(function (err, buf) {
- t.ok(Buffer.isBuffer(buf))
- t.ok(err === null)
- t.equal(rndhash, hash(bl.slice(), 'md5'))
- t.equal(rndhash, hash(buf, 'md5'))
-
- bl.pipe(fs.createWriteStream('/tmp/bl_test_rnd_out.dat'))
- .on('close', function () {
- var s = fs.createReadStream('/tmp/bl_test_rnd_out.dat')
- s.on('data', md5sum.update.bind(md5sum))
- s.on('end', function() {
- t.equal(rndhash, md5sum.digest('hex'), 'woohoo! correct hash!')
- t.end()
- })
- })
-
- })
-
- fs.writeFileSync('/tmp/bl_test_rnd.dat', random)
- fs.createReadStream('/tmp/bl_test_rnd.dat').pipe(bl)
-})
-
-tape('instantiation with Buffer', function (t) {
- var buf = crypto.randomBytes(1024)
- , buf2 = crypto.randomBytes(1024)
- , b = BufferList(buf)
-
- t.equal(buf.toString('hex'), b.slice().toString('hex'), 'same buffer')
- b = BufferList([ buf, buf2 ])
- t.equal(b.slice().toString('hex'), Buffer.concat([ buf, buf2 ]).toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('test String appendage', function (t) {
- var bl = new BufferList()
- , b = new Buffer('abcdefghij\xff\x00')
-
- bl.append('abcd')
- bl.append('efg')
- bl.append('hi')
- bl.append('j')
- bl.append('\xff\x00')
-
- encodings.forEach(function (enc) {
- t.equal(bl.toString(enc), b.toString(enc))
- })
-
- t.end()
-})
-
-tape('write nothing, should get empty buffer', function (t) {
- t.plan(3)
- BufferList(function (err, data) {
- t.notOk(err, 'no error')
- t.ok(Buffer.isBuffer(data), 'got a buffer')
- t.equal(0, data.length, 'got a zero-length buffer')
- t.end()
- }).end()
-})
-
-tape('unicode string', function (t) {
- t.plan(2)
- var inp1 = '\u2600'
- , inp2 = '\u2603'
- , exp = inp1 + ' and ' + inp2
- , bl = BufferList()
- bl.write(inp1)
- bl.write(' and ')
- bl.write(inp2)
- t.equal(exp, bl.toString())
- t.equal(new Buffer(exp).toString('hex'), bl.toString('hex'))
-})
-
-tape('should emit finish', function (t) {
- var source = BufferList()
- , dest = BufferList()
-
- source.write('hello')
- source.pipe(dest)
-
- dest.on('finish', function () {
- t.equal(dest.toString('utf8'), 'hello')
- t.end()
- })
-})
-
-tape('basic copy', function (t) {
- var buf = crypto.randomBytes(1024)
- , buf2 = new Buffer(1024)
- , b = BufferList(buf)
-
- b.copy(buf2)
- t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy after many appends', function (t) {
- var buf = crypto.randomBytes(512)
- , buf2 = new Buffer(1024)
- , b = BufferList(buf)
-
- b.append(buf)
- b.copy(buf2)
- t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy at a precise position', function (t) {
- var buf = crypto.randomBytes(1004)
- , buf2 = new Buffer(1024)
- , b = BufferList(buf)
-
- b.copy(buf2, 20)
- t.equal(b.slice().toString('hex'), buf2.slice(20).toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy starting from a precise location', function (t) {
- var buf = crypto.randomBytes(10)
- , buf2 = new Buffer(5)
- , b = BufferList(buf)
-
- b.copy(buf2, 0, 5)
- t.equal(b.slice(5).toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy in an interval', function (t) {
- var rnd = crypto.randomBytes(10)
- , b = BufferList(rnd) // put the random bytes there
- , actual = new Buffer(3)
- , expected = new Buffer(3)
-
- rnd.copy(expected, 0, 5, 8)
- b.copy(actual, 0, 5, 8)
-
- t.equal(actual.toString('hex'), expected.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy an interval between two buffers', function (t) {
- var buf = crypto.randomBytes(10)
- , buf2 = new Buffer(10)
- , b = BufferList(buf)
-
- b.append(buf)
- b.copy(buf2, 0, 5, 15)
-
- t.equal(b.slice(5, 15).toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('duplicate', function (t) {
- t.plan(2)
-
- var bl = new BufferList('abcdefghij\xff\x00')
- , dup = bl.duplicate()
-
- t.equal(bl.prototype, dup.prototype)
- t.equal(bl.toString('hex'), dup.toString('hex'))
-})
-
-tape('destroy no pipe', function (t) {
- t.plan(2)
-
- var bl = new BufferList('alsdkfja;lsdkfja;lsdk')
- bl.destroy()
-
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
-})
-
-!process.browser && tape('destroy with pipe before read end', function (t) {
- t.plan(2)
-
- var bl = new BufferList()
- fs.createReadStream(__dirname + '/sauce.js')
- .pipe(bl)
-
- bl.destroy()
-
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
-
-})
-
-!process.browser && tape('destroy with pipe before read end with race', function (t) {
- t.plan(2)
-
- var bl = new BufferList()
- fs.createReadStream(__dirname + '/sauce.js')
- .pipe(bl)
-
- setTimeout(function () {
- bl.destroy()
- setTimeout(function () {
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
- }, 500)
- }, 500)
-})
-
-!process.browser && tape('destroy with pipe after read end', function (t) {
- t.plan(2)
-
- var bl = new BufferList()
- fs.createReadStream(__dirname + '/sauce.js')
- .on('end', onEnd)
- .pipe(bl)
-
- function onEnd () {
- bl.destroy()
-
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
- }
-})
-
-!process.browser && tape('destroy with pipe while writing to a destination', function (t) {
- t.plan(4)
-
- var bl = new BufferList()
- , ds = new BufferList()
-
- fs.createReadStream(__dirname + '/sauce.js')
- .on('end', onEnd)
- .pipe(bl)
-
- function onEnd () {
- bl.pipe(ds)
-
- setTimeout(function () {
- bl.destroy()
-
- t.equals(bl._bufs.length, 0)
- t.equals(bl.length, 0)
-
- ds.destroy()
-
- t.equals(bl._bufs.length, 0)
- t.equals(bl.length, 0)
-
- }, 100)
- }
-})
-
-!process.browser && tape('handle error', function (t) {
- t.plan(2)
- fs.createReadStream('/does/not/exist').pipe(BufferList(function (err, data) {
- t.ok(err instanceof Error, 'has error')
- t.notOk(data, 'no data')
- }))
-})
diff --git a/node_modules/request/node_modules/bl/test/sauce.js b/node_modules/request/node_modules/bl/test/sauce.js
deleted file mode 100644
index a6d28625f..000000000
--- a/node_modules/request/node_modules/bl/test/sauce.js
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env node
-
-const user = process.env.SAUCE_USER
- , key = process.env.SAUCE_KEY
- , path = require('path')
- , brtapsauce = require('brtapsauce')
- , testFile = path.join(__dirname, 'basic-test.js')
-
- , capabilities = [
- { browserName: 'chrome' , platform: 'Windows XP', version: '' }
- , { browserName: 'firefox' , platform: 'Windows 8' , version: '' }
- , { browserName: 'firefox' , platform: 'Windows XP', version: '4' }
- , { browserName: 'internet explorer' , platform: 'Windows 8' , version: '10' }
- , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '9' }
- , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '8' }
- , { browserName: 'internet explorer' , platform: 'Windows XP', version: '7' }
- , { browserName: 'internet explorer' , platform: 'Windows XP', version: '6' }
- , { browserName: 'safari' , platform: 'Windows 7' , version: '5' }
- , { browserName: 'safari' , platform: 'OS X 10.8' , version: '6' }
- , { browserName: 'opera' , platform: 'Windows 7' , version: '' }
- , { browserName: 'opera' , platform: 'Windows 7' , version: '11' }
- , { browserName: 'ipad' , platform: 'OS X 10.8' , version: '6' }
- , { browserName: 'android' , platform: 'Linux' , version: '4.0', 'device-type': 'tablet' }
- ]
-
-if (!user)
- throw new Error('Must set a SAUCE_USER env var')
-if (!key)
- throw new Error('Must set a SAUCE_KEY env var')
-
-brtapsauce({
- name : 'Traversty'
- , user : user
- , key : key
- , brsrc : testFile
- , capabilities : capabilities
- , options : { timeout: 60 * 6 }
-}) \ No newline at end of file
diff --git a/node_modules/request/node_modules/bl/test/test.js b/node_modules/request/node_modules/bl/test/test.js
deleted file mode 100644
index aa9b48771..000000000
--- a/node_modules/request/node_modules/bl/test/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-require('./basic-test')
-
-if (!process.env.SAUCE_KEY || !process.env.SAUCE_USER)
- return console.log('SAUCE_KEY and/or SAUCE_USER not set, not running sauce tests')
-
-if (!/v0\.10/.test(process.version))
- return console.log('Not Node v0.10.x, not running sauce tests')
-
-require('./sauce.js') \ No newline at end of file
diff --git a/node_modules/request/node_modules/caseless/README.md b/node_modules/request/node_modules/caseless/README.md
deleted file mode 100644
index e5077a216..000000000
--- a/node_modules/request/node_modules/caseless/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing.
-
-This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set.
-
-## Usage
-
-```javascript
-var headers = {}
- , c = caseless(headers)
- ;
-c.set('a-Header', 'asdf')
-c.get('a-header') === 'asdf'
-```
-
-## has(key)
-
-Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with.
-
-```javascript
-c.has('a-header') === 'a-Header'
-```
-
-## set(key, value[, clobber=true])
-
-Set is fairly straight forward except that if the header exists and clobber is disabled it will add `','+value` to the existing header.
-
-```javascript
-c.set('a-Header', 'fdas')
-c.set('a-HEADER', 'more', false)
-c.get('a-header') === 'fdsa,more'
-```
-
-## swap(key)
-
-Swaps the casing of a header with the new one that is passed in.
-
-```javascript
-var headers = {}
- , c = caseless(headers)
- ;
-c.set('a-Header', 'fdas')
-c.swap('a-HEADER')
-c.has('a-header') === 'a-HEADER'
-headers === {'a-HEADER': 'fdas'}
-```
diff --git a/node_modules/request/node_modules/caseless/index.js b/node_modules/request/node_modules/caseless/index.js
deleted file mode 100644
index ba711f68d..000000000
--- a/node_modules/request/node_modules/caseless/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-function Caseless (dict) {
- this.dict = dict || {}
-}
-Caseless.prototype.set = function (name, value, clobber) {
- if (typeof name === 'object') {
- for (var i in name) {
- this.set(i, name[i], value)
- }
- } else {
- if (typeof clobber === 'undefined') clobber = true
- var has = this.has(name)
-
- if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value
- else this.dict[has || name] = value
- return has
- }
-}
-Caseless.prototype.has = function (name) {
- var keys = Object.keys(this.dict)
- , name = name.toLowerCase()
- ;
- for (var i=0;i<keys.length;i++) {
- if (keys[i].toLowerCase() === name) return keys[i]
- }
- return false
-}
-Caseless.prototype.get = function (name) {
- name = name.toLowerCase()
- var result, _key
- var headers = this.dict
- Object.keys(headers).forEach(function (key) {
- _key = key.toLowerCase()
- if (name === _key) result = headers[key]
- })
- return result
-}
-Caseless.prototype.swap = function (name) {
- var has = this.has(name)
- if (!has) throw new Error('There is no header than matches "'+name+'"')
- this.dict[name] = this.dict[has]
- delete this.dict[has]
-}
-Caseless.prototype.del = function (name) {
- var has = this.has(name)
- return delete this.dict[has || name]
-}
-
-module.exports = function (dict) {return new Caseless(dict)}
-module.exports.httpify = function (resp, headers) {
- var c = new Caseless(headers)
- resp.setHeader = function (key, value, clobber) {
- return c.set(key, value, clobber)
- }
- resp.hasHeader = function (key) {
- return c.has(key)
- }
- resp.getHeader = function (key) {
- return c.get(key)
- }
- resp.removeHeader = function (key) {
- return c.del(key)
- }
- resp.headers = c.dict
- return c
-}
diff --git a/node_modules/request/node_modules/caseless/package.json b/node_modules/request/node_modules/caseless/package.json
deleted file mode 100644
index d4c0177b1..000000000
--- a/node_modules/request/node_modules/caseless/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "caseless",
- "version": "0.10.0",
- "description": "Caseless object set/get/has, very useful when working with HTTP headers.",
- "main": "index.js",
- "scripts": {
- "test": "node test.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mikeal/caseless.git"
- },
- "keywords": [
- "headers",
- "http",
- "caseless"
- ],
- "test": "node test.js",
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com"
- },
- "license": "BSD",
- "bugs": {
- "url": "https://github.com/mikeal/caseless/issues"
- },
- "devDependencies": {
- "tape": "^2.10.2"
- },
- "gitHead": "9c85efef6c37d48923b79f3f282441414dd691c9",
- "homepage": "https://github.com/mikeal/caseless",
- "_id": "caseless@0.10.0",
- "_shasum": "ed6b2719adcd1fd18f58dc081c0f1a5b43963909",
- "_from": "caseless@>=0.10.0 <0.11.0",
- "_npmVersion": "1.4.14",
- "_npmUser": {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- }
- ],
- "dist": {
- "shasum": "ed6b2719adcd1fd18f58dc081c0f1a5b43963909",
- "tarball": "http://registry.npmjs.org/caseless/-/caseless-0.10.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/caseless/-/caseless-0.10.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/caseless/test.js b/node_modules/request/node_modules/caseless/test.js
deleted file mode 100644
index 084bbaf5e..000000000
--- a/node_modules/request/node_modules/caseless/test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var tape = require('tape')
- , caseless = require('./')
- ;
-
-tape('set get has', function (t) {
- var headers = {}
- , c = caseless(headers)
- ;
- t.plan(17)
- c.set('a-Header', 'asdf')
- t.equal(c.get('a-header'), 'asdf')
- t.equal(c.has('a-header'), 'a-Header')
- t.ok(!c.has('nothing'))
- // old bug where we used the wrong regex
- t.ok(!c.has('a-hea'))
- c.set('a-header', 'fdsa')
- t.equal(c.get('a-header'), 'fdsa')
- t.equal(c.get('a-Header'), 'fdsa')
- c.set('a-HEADER', 'more', false)
- t.equal(c.get('a-header'), 'fdsa,more')
-
- t.deepEqual(headers, {'a-Header': 'fdsa,more'})
- c.swap('a-HEADER')
- t.deepEqual(headers, {'a-HEADER': 'fdsa,more'})
-
- c.set('deleteme', 'foobar')
- t.ok(c.has('deleteme'))
- t.ok(c.del('deleteme'))
- t.notOk(c.has('deleteme'))
- t.notOk(c.has('idonotexist'))
- t.ok(c.del('idonotexist'))
-
- c.set('tva', 'test1')
- c.set('tva-header', 'test2')
- t.equal(c.has('tva'), 'tva')
- t.notOk(c.has('header'))
-
- t.equal(c.get('tva'), 'test1')
-
-})
diff --git a/node_modules/request/node_modules/combined-stream/License b/node_modules/request/node_modules/combined-stream/License
deleted file mode 100644
index 4804b7ab4..000000000
--- a/node_modules/request/node_modules/combined-stream/License
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/request/node_modules/combined-stream/Readme.md b/node_modules/request/node_modules/combined-stream/Readme.md
deleted file mode 100644
index 3a9e025fb..000000000
--- a/node_modules/request/node_modules/combined-stream/Readme.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# combined-stream
-
-A stream that emits multiple other streams one after another.
-
-**NB** Currently `combined-stream` works with streams vesrion 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatability with `combined-stream`.
-
-- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module.
-
-- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another.
-
-## Installation
-
-``` bash
-npm install combined-stream
-```
-
-## Usage
-
-Here is a simple example that shows how you can use combined-stream to combine
-two files into one:
-
-``` javascript
-var CombinedStream = require('combined-stream');
-var fs = require('fs');
-
-var combinedStream = CombinedStream.create();
-combinedStream.append(fs.createReadStream('file1.txt'));
-combinedStream.append(fs.createReadStream('file2.txt'));
-
-combinedStream.pipe(fs.createWriteStream('combined.txt'));
-```
-
-While the example above works great, it will pause all source streams until
-they are needed. If you don't want that to happen, you can set `pauseStreams`
-to `false`:
-
-``` javascript
-var CombinedStream = require('combined-stream');
-var fs = require('fs');
-
-var combinedStream = CombinedStream.create({pauseStreams: false});
-combinedStream.append(fs.createReadStream('file1.txt'));
-combinedStream.append(fs.createReadStream('file2.txt'));
-
-combinedStream.pipe(fs.createWriteStream('combined.txt'));
-```
-
-However, what if you don't have all the source streams yet, or you don't want
-to allocate the resources (file descriptors, memory, etc.) for them right away?
-Well, in that case you can simply provide a callback that supplies the stream
-by calling a `next()` function:
-
-``` javascript
-var CombinedStream = require('combined-stream');
-var fs = require('fs');
-
-var combinedStream = CombinedStream.create();
-combinedStream.append(function(next) {
- next(fs.createReadStream('file1.txt'));
-});
-combinedStream.append(function(next) {
- next(fs.createReadStream('file2.txt'));
-});
-
-combinedStream.pipe(fs.createWriteStream('combined.txt'));
-```
-
-## API
-
-### CombinedStream.create([options])
-
-Returns a new combined stream object. Available options are:
-
-* `maxDataSize`
-* `pauseStreams`
-
-The effect of those options is described below.
-
-### combinedStream.pauseStreams = `true`
-
-Whether to apply back pressure to the underlaying streams. If set to `false`,
-the underlaying streams will never be paused. If set to `true`, the
-underlaying streams will be paused right after being appended, as well as when
-`delayedStream.pipe()` wants to throttle.
-
-### combinedStream.maxDataSize = `2 * 1024 * 1024`
-
-The maximum amount of bytes (or characters) to buffer for all source streams.
-If this value is exceeded, `combinedStream` emits an `'error'` event.
-
-### combinedStream.dataSize = `0`
-
-The amount of bytes (or characters) currently buffered by `combinedStream`.
-
-### combinedStream.append(stream)
-
-Appends the given `stream` to the combinedStream object. If `pauseStreams` is
-set to `true, this stream will also be paused right away.
-
-`streams` can also be a function that takes one parameter called `next`. `next`
-is a function that must be invoked in order to provide the `next` stream, see
-example above.
-
-Regardless of how the `stream` is appended, combined-stream always attaches an
-`'error'` listener to it, so you don't have to do that manually.
-
-Special case: `stream` can also be a String or Buffer.
-
-### combinedStream.write(data)
-
-You should not call this, `combinedStream` takes care of piping the appended
-streams into itself for you.
-
-### combinedStream.resume()
-
-Causes `combinedStream` to start drain the streams it manages. The function is
-idempotent, and also emits a `'resume'` event each time which usually goes to
-the stream that is currently being drained.
-
-### combinedStream.pause();
-
-If `combinedStream.pauseStreams` is set to `false`, this does nothing.
-Otherwise a `'pause'` event is emitted, this goes to the stream that is
-currently being drained, so you can use it to apply back pressure.
-
-### combinedStream.end();
-
-Sets `combinedStream.writable` to false, emits an `'end'` event, and removes
-all streams from the queue.
-
-### combinedStream.destroy();
-
-Same as `combinedStream.end()`, except it emits a `'close'` event instead of
-`'end'`.
-
-## License
-
-combined-stream is licensed under the MIT license.
diff --git a/node_modules/request/node_modules/combined-stream/lib/combined_stream.js b/node_modules/request/node_modules/combined-stream/lib/combined_stream.js
deleted file mode 100644
index 6b5c21b6b..000000000
--- a/node_modules/request/node_modules/combined-stream/lib/combined_stream.js
+++ /dev/null
@@ -1,188 +0,0 @@
-var util = require('util');
-var Stream = require('stream').Stream;
-var DelayedStream = require('delayed-stream');
-
-module.exports = CombinedStream;
-function CombinedStream() {
- this.writable = false;
- this.readable = true;
- this.dataSize = 0;
- this.maxDataSize = 2 * 1024 * 1024;
- this.pauseStreams = true;
-
- this._released = false;
- this._streams = [];
- this._currentStream = null;
-}
-util.inherits(CombinedStream, Stream);
-
-CombinedStream.create = function(options) {
- var combinedStream = new this();
-
- options = options || {};
- for (var option in options) {
- combinedStream[option] = options[option];
- }
-
- return combinedStream;
-};
-
-CombinedStream.isStreamLike = function(stream) {
- return (typeof stream !== 'function')
- && (typeof stream !== 'string')
- && (typeof stream !== 'boolean')
- && (typeof stream !== 'number')
- && (!Buffer.isBuffer(stream));
-};
-
-CombinedStream.prototype.append = function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
-
- if (isStreamLike) {
- if (!(stream instanceof DelayedStream)) {
- var newStream = DelayedStream.create(stream, {
- maxDataSize: Infinity,
- pauseStream: this.pauseStreams,
- });
- stream.on('data', this._checkDataSize.bind(this));
- stream = newStream;
- }
-
- this._handleErrors(stream);
-
- if (this.pauseStreams) {
- stream.pause();
- }
- }
-
- this._streams.push(stream);
- return this;
-};
-
-CombinedStream.prototype.pipe = function(dest, options) {
- Stream.prototype.pipe.call(this, dest, options);
- this.resume();
- return dest;
-};
-
-CombinedStream.prototype._getNext = function() {
- this._currentStream = null;
- var stream = this._streams.shift();
-
-
- if (typeof stream == 'undefined') {
- this.end();
- return;
- }
-
- if (typeof stream !== 'function') {
- this._pipeNext(stream);
- return;
- }
-
- var getStream = stream;
- getStream(function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('data', this._checkDataSize.bind(this));
- this._handleErrors(stream);
- }
-
- this._pipeNext(stream);
- }.bind(this));
-};
-
-CombinedStream.prototype._pipeNext = function(stream) {
- this._currentStream = stream;
-
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('end', this._getNext.bind(this));
- stream.pipe(this, {end: false});
- return;
- }
-
- var value = stream;
- this.write(value);
- this._getNext();
-};
-
-CombinedStream.prototype._handleErrors = function(stream) {
- var self = this;
- stream.on('error', function(err) {
- self._emitError(err);
- });
-};
-
-CombinedStream.prototype.write = function(data) {
- this.emit('data', data);
-};
-
-CombinedStream.prototype.pause = function() {
- if (!this.pauseStreams) {
- return;
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
- this.emit('pause');
-};
-
-CombinedStream.prototype.resume = function() {
- if (!this._released) {
- this._released = true;
- this.writable = true;
- this._getNext();
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
- this.emit('resume');
-};
-
-CombinedStream.prototype.end = function() {
- this._reset();
- this.emit('end');
-};
-
-CombinedStream.prototype.destroy = function() {
- this._reset();
- this.emit('close');
-};
-
-CombinedStream.prototype._reset = function() {
- this.writable = false;
- this._streams = [];
- this._currentStream = null;
-};
-
-CombinedStream.prototype._checkDataSize = function() {
- this._updateDataSize();
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
- this._emitError(new Error(message));
-};
-
-CombinedStream.prototype._updateDataSize = function() {
- this.dataSize = 0;
-
- var self = this;
- this._streams.forEach(function(stream) {
- if (!stream.dataSize) {
- return;
- }
-
- self.dataSize += stream.dataSize;
- });
-
- if (this._currentStream && this._currentStream.dataSize) {
- this.dataSize += this._currentStream.dataSize;
- }
-};
-
-CombinedStream.prototype._emitError = function(err) {
- this._reset();
- this.emit('error', err);
-};
diff --git a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore
deleted file mode 100644
index 9daeafb98..000000000
--- a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License
deleted file mode 100644
index 4804b7ab4..000000000
--- a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile
deleted file mode 100644
index b4ff85a33..000000000
--- a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-SHELL := /bin/bash
-
-test:
- @./test/run.js
-
-.PHONY: test
-
diff --git a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md
deleted file mode 100644
index aca36f9f0..000000000
--- a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# delayed-stream
-
-Buffers events from a stream until you are ready to handle them.
-
-## Installation
-
-``` bash
-npm install delayed-stream
-```
-
-## Usage
-
-The following example shows how to write a http echo server that delays its
-response by 1000 ms.
-
-``` javascript
-var DelayedStream = require('delayed-stream');
-var http = require('http');
-
-http.createServer(function(req, res) {
- var delayed = DelayedStream.create(req);
-
- setTimeout(function() {
- res.writeHead(200);
- delayed.pipe(res);
- }, 1000);
-});
-```
-
-If you are not using `Stream#pipe`, you can also manually release the buffered
-events by calling `delayedStream.resume()`:
-
-``` javascript
-var delayed = DelayedStream.create(req);
-
-setTimeout(function() {
- // Emit all buffered events and resume underlaying source
- delayed.resume();
-}, 1000);
-```
-
-## Implementation
-
-In order to use this meta stream properly, here are a few things you should
-know about the implementation.
-
-### Event Buffering / Proxying
-
-All events of the `source` stream are hijacked by overwriting the `source.emit`
-method. Until node implements a catch-all event listener, this is the only way.
-
-However, delayed-stream still continues to emit all events it captures on the
-`source`, regardless of whether you have released the delayed stream yet or
-not.
-
-Upon creation, delayed-stream captures all `source` events and stores them in
-an internal event buffer. Once `delayedStream.release()` is called, all
-buffered events are emitted on the `delayedStream`, and the event buffer is
-cleared. After that, delayed-stream merely acts as a proxy for the underlaying
-source.
-
-### Error handling
-
-Error events on `source` are buffered / proxied just like any other events.
-However, `delayedStream.create` attaches a no-op `'error'` listener to the
-`source`. This way you only have to handle errors on the `delayedStream`
-object, rather than in two places.
-
-### Buffer limits
-
-delayed-stream provides a `maxDataSize` property that can be used to limit
-the amount of data being buffered. In order to protect you from bad `source`
-streams that don't react to `source.pause()`, this feature is enabled by
-default.
-
-## API
-
-### DelayedStream.create(source, [options])
-
-Returns a new `delayedStream`. Available options are:
-
-* `pauseStream`
-* `maxDataSize`
-
-The description for those properties can be found below.
-
-### delayedStream.source
-
-The `source` stream managed by this object. This is useful if you are
-passing your `delayedStream` around, and you still want to access properties
-on the `source` object.
-
-### delayedStream.pauseStream = true
-
-Whether to pause the underlaying `source` when calling
-`DelayedStream.create()`. Modifying this property afterwards has no effect.
-
-### delayedStream.maxDataSize = 1024 * 1024
-
-The amount of data to buffer before emitting an `error`.
-
-If the underlaying source is emitting `Buffer` objects, the `maxDataSize`
-refers to bytes.
-
-If the underlaying source is emitting JavaScript strings, the size refers to
-characters.
-
-If you know what you are doing, you can set this property to `Infinity` to
-disable this feature. You can also modify this property during runtime.
-
-### delayedStream.dataSize = 0
-
-The amount of data buffered so far.
-
-### delayedStream.readable
-
-An ECMA5 getter that returns the value of `source.readable`.
-
-### delayedStream.resume()
-
-If the `delayedStream` has not been released so far, `delayedStream.release()`
-is called.
-
-In either case, `source.resume()` is called.
-
-### delayedStream.pause()
-
-Calls `source.pause()`.
-
-### delayedStream.pipe(dest)
-
-Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.
-
-### delayedStream.release()
-
-Emits and clears all events that have been buffered up so far. This does not
-resume the underlaying source, use `delayedStream.resume()` instead.
-
-## License
-
-delayed-stream is licensed under the MIT license.
diff --git a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js
deleted file mode 100644
index b38fc85ff..000000000
--- a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js
+++ /dev/null
@@ -1,107 +0,0 @@
-var Stream = require('stream').Stream;
-var util = require('util');
-
-module.exports = DelayedStream;
-function DelayedStream() {
- this.source = null;
- this.dataSize = 0;
- this.maxDataSize = 1024 * 1024;
- this.pauseStream = true;
-
- this._maxDataSizeExceeded = false;
- this._released = false;
- this._bufferedEvents = [];
-}
-util.inherits(DelayedStream, Stream);
-
-DelayedStream.create = function(source, options) {
- var delayedStream = new this();
-
- options = options || {};
- for (var option in options) {
- delayedStream[option] = options[option];
- }
-
- delayedStream.source = source;
-
- var realEmit = source.emit;
- source.emit = function() {
- delayedStream._handleEmit(arguments);
- return realEmit.apply(source, arguments);
- };
-
- source.on('error', function() {});
- if (delayedStream.pauseStream) {
- source.pause();
- }
-
- return delayedStream;
-};
-
-Object.defineProperty(DelayedStream.prototype, 'readable', {
- configurable: true,
- enumerable: true,
- get: function() {
- return this.source.readable;
- }
-});
-
-DelayedStream.prototype.setEncoding = function() {
- return this.source.setEncoding.apply(this.source, arguments);
-};
-
-DelayedStream.prototype.resume = function() {
- if (!this._released) {
- this.release();
- }
-
- this.source.resume();
-};
-
-DelayedStream.prototype.pause = function() {
- this.source.pause();
-};
-
-DelayedStream.prototype.release = function() {
- this._released = true;
-
- this._bufferedEvents.forEach(function(args) {
- this.emit.apply(this, args);
- }.bind(this));
- this._bufferedEvents = [];
-};
-
-DelayedStream.prototype.pipe = function() {
- var r = Stream.prototype.pipe.apply(this, arguments);
- this.resume();
- return r;
-};
-
-DelayedStream.prototype._handleEmit = function(args) {
- if (this._released) {
- this.emit.apply(this, args);
- return;
- }
-
- if (args[0] === 'data') {
- this.dataSize += args[1].length;
- this._checkIfMaxDataSizeExceeded();
- }
-
- this._bufferedEvents.push(args);
-};
-
-DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
- if (this._maxDataSizeExceeded) {
- return;
- }
-
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- this._maxDataSizeExceeded = true;
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
- this.emit('error', new Error(message));
-};
diff --git a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
deleted file mode 100644
index 8ac66b814..000000000
--- a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "author": {
- "name": "Felix Geisendörfer",
- "email": "felix@debuggable.com",
- "url": "http://debuggable.com/"
- },
- "contributors": [
- {
- "name": "Mike Atkins",
- "email": "apeherder@gmail.com"
- }
- ],
- "name": "delayed-stream",
- "description": "Buffers events from a stream until you are ready to handle them.",
- "license": "MIT",
- "version": "1.0.0",
- "homepage": "https://github.com/felixge/node-delayed-stream",
- "repository": {
- "type": "git",
- "url": "git://github.com/felixge/node-delayed-stream.git"
- },
- "main": "./lib/delayed_stream",
- "engines": {
- "node": ">=0.4.0"
- },
- "scripts": {
- "test": "make test"
- },
- "dependencies": {},
- "devDependencies": {
- "fake": "0.2.0",
- "far": "0.0.1"
- },
- "gitHead": "07a9dc99fb8f1a488160026b9ad77493f766fb84",
- "bugs": {
- "url": "https://github.com/felixge/node-delayed-stream/issues"
- },
- "_id": "delayed-stream@1.0.0",
- "_shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619",
- "_from": "delayed-stream@>=1.0.0 <1.1.0",
- "_npmVersion": "2.8.3",
- "_nodeVersion": "1.6.4",
- "_npmUser": {
- "name": "apechimp",
- "email": "apeherder@gmail.com"
- },
- "dist": {
- "shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619",
- "tarball": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "felixge",
- "email": "felix@debuggable.com"
- },
- {
- "name": "apechimp",
- "email": "apeherder@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/combined-stream/package.json b/node_modules/request/node_modules/combined-stream/package.json
deleted file mode 100644
index 93924d1b5..000000000
--- a/node_modules/request/node_modules/combined-stream/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "author": {
- "name": "Felix Geisendörfer",
- "email": "felix@debuggable.com",
- "url": "http://debuggable.com/"
- },
- "name": "combined-stream",
- "description": "A stream that emits multiple other streams one after another.",
- "version": "1.0.5",
- "homepage": "https://github.com/felixge/node-combined-stream",
- "repository": {
- "type": "git",
- "url": "git://github.com/felixge/node-combined-stream.git"
- },
- "main": "./lib/combined_stream",
- "scripts": {
- "test": "node test/run.js"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "devDependencies": {
- "far": "~0.0.7"
- },
- "license": "MIT",
- "gitHead": "cfc7b815d090a109bcedb5bb0f6713148d55a6b7",
- "bugs": {
- "url": "https://github.com/felixge/node-combined-stream/issues"
- },
- "_id": "combined-stream@1.0.5",
- "_shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009",
- "_from": "combined-stream@>=1.0.1 <1.1.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- "dist": {
- "shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009",
- "tarball": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
- },
- "maintainers": [
- {
- "name": "felixge",
- "email": "felix@debuggable.com"
- },
- {
- "name": "celer",
- "email": "dtyree77@gmail.com"
- },
- {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- {
- "name": "apechimp",
- "email": "apeherder@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
-}
diff --git a/node_modules/request/node_modules/extend/.jscs.json b/node_modules/request/node_modules/extend/.jscs.json
deleted file mode 100644
index 496777b71..000000000
--- a/node_modules/request/node_modules/extend/.jscs.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "additionalRules": [],
-
- "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"],
-
- "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
-
- "disallowSpaceAfterKeywords": [],
-
- "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
- "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
- "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
-
- "requireSpaceBetweenArguments": true,
-
- "disallowSpacesInsideParentheses": true,
-
- "disallowSpacesInsideArrayBrackets": true,
-
- "disallowQuotedKeysInObjects": "allButReserved",
-
- "disallowSpaceAfterObjectKeys": true,
-
- "requireCommaBeforeLineBreak": true,
-
- "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
- "requireSpaceAfterPrefixUnaryOperators": [],
-
- "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
- "requireSpaceBeforePostfixUnaryOperators": [],
-
- "disallowSpaceBeforeBinaryOperators": [],
- "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
-
- "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
- "disallowSpaceAfterBinaryOperators": [],
-
- "disallowImplicitTypeConversion": ["binary", "string"],
-
- "disallowKeywords": ["with", "eval"],
-
- "requireKeywordsOnNewLine": [],
- "disallowKeywordsOnNewLine": ["else"],
-
- "requireLineFeedAtFileEnd": true,
-
- "disallowTrailingWhitespace": true,
-
- "disallowTrailingComma": true,
-
- "excludeFiles": ["node_modules/**", "vendor/**"],
-
- "disallowMultipleLineStrings": true,
-
- "requireDotNotation": true,
-
- "requireParenthesesAroundIIFE": true,
-
- "validateLineBreaks": "LF",
-
- "validateQuoteMarks": {
- "escape": true,
- "mark": "'"
- }
-}
-
diff --git a/node_modules/request/node_modules/extend/.npmignore b/node_modules/request/node_modules/extend/.npmignore
deleted file mode 100644
index 30d74d258..000000000
--- a/node_modules/request/node_modules/extend/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test \ No newline at end of file
diff --git a/node_modules/request/node_modules/extend/.travis.yml b/node_modules/request/node_modules/extend/.travis.yml
deleted file mode 100644
index e6f69e8d8..000000000
--- a/node_modules/request/node_modules/extend/.travis.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-language: node_js
-node_js:
- - "iojs-v1.8"
- - "iojs-v1.7"
- - "iojs-v1.6"
- - "iojs-v1.5"
- - "iojs-v1.4"
- - "iojs-v1.3"
- - "iojs-v1.2"
- - "iojs-v1.1"
- - "iojs-v1.0"
- - "0.12"
- - "0.11"
- - "0.10"
- - "0.9"
- - "0.8"
- - "0.6"
- - "0.4"
-before_install:
- - '[ "${TRAVIS_NODE_VERSION}" == "0.6" ] || npm install -g npm@~1.4.6'
-matrix:
- fast_finish: true
- allow_failures:
- - node_js: "iojs-v1.6"
- - node_js: "iojs-v1.5"
- - node_js: "iojs-v1.4"
- - node_js: "iojs-v1.3"
- - node_js: "iojs-v1.2"
- - node_js: "iojs-v1.1"
- - node_js: "iojs-v1.0"
- - node_js: "0.11"
- - node_js: "0.9"
- - node_js: "0.8"
- - node_js: "0.6"
- - node_js: "0.4"
-sudo: false
diff --git a/node_modules/request/node_modules/extend/CHANGELOG.md b/node_modules/request/node_modules/extend/CHANGELOG.md
deleted file mode 100644
index 6f7b56d6e..000000000
--- a/node_modules/request/node_modules/extend/CHANGELOG.md
+++ /dev/null
@@ -1,61 +0,0 @@
-2.0.1 / 2015-04-25
-==================
- * Use an inline `isArray` check, for ES3 browsers. (#27)
- * Some old browsers fail when an identifier is `toString`
- * Test latest `node` and `io.js` versions on `travis-ci`; speed up builds
- * Add license info to package.json (#25)
- * Update `tape`, `jscs`
- * Adding a CHANGELOG
-
-2.0.0 / 2014-10-01
-==================
- * Increase code coverage to 100%; run code coverage as part of tests
- * Add `npm run lint`; Run linter as part of tests
- * Remove nodeType and setInterval checks in isPlainObject
- * Updating `tape`, `jscs`, `covert`
- * General style and README cleanup
-
-1.3.0 / 2014-06-20
-==================
- * Add component.json for browser support (#18)
- * Use SVG for badges in README (#16)
- * Updating `tape`, `covert`
- * Updating travis-ci to work with multiple node versions
- * Fix `deep === false` bug (returning target as {}) (#14)
- * Fixing constructor checks in isPlainObject
- * Adding additional test coverage
- * Adding `npm run coverage`
- * Add LICENSE (#13)
- * Adding a warning about `false`, per #11
- * General style and whitespace cleanup
-
-1.2.1 / 2013-09-14
-==================
- * Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8
- * Updating `tape`
-
-1.2.0 / 2013-09-02
-==================
- * Updating the README: add badges
- * Adding a missing variable reference.
- * Using `tape` instead of `buster` for tests; add more tests (#7)
- * Adding node 0.10 to Travis CI (#6)
- * Enabling "npm test" and cleaning up package.json (#5)
- * Add Travis CI.
-
-1.1.3 / 2012-12-06
-==================
- * Added unit tests.
- * Ensure extend function is named. (Looks nicer in a stack trace.)
- * README cleanup.
-
-1.1.1 / 2012-11-07
-==================
- * README cleanup.
- * Added installation instructions.
- * Added a missing semicolon
-
-1.0.0 / 2012-04-08
-==================
- * Initial commit
-
diff --git a/node_modules/request/node_modules/extend/LICENSE b/node_modules/request/node_modules/extend/LICENSE
deleted file mode 100644
index e16d6a56c..000000000
--- a/node_modules/request/node_modules/extend/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Stefan Thomas
-
-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/request/node_modules/extend/README.md b/node_modules/request/node_modules/extend/README.md
deleted file mode 100644
index 632fb0f96..000000000
--- a/node_modules/request/node_modules/extend/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-[![Build Status][travis-svg]][travis-url]
-[![dependency status][deps-svg]][deps-url]
-[![dev dependency status][dev-deps-svg]][dev-deps-url]
-
-# extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup>
-
-`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.
-
-## Installation
-
-This package is available on [npm][npm-url] as: `extend`
-
-``` sh
-npm install extend
-```
-
-## Usage
-
-**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**
-
-*Extend one object with one or more others, returning the modified object.*
-
-Keep in mind that the target object will be modified, and will be returned from extend().
-
-If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).
-Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
-Warning: passing `false` as the first argument is not supported.
-
-### Arguments
-
-* `deep` *Boolean* (optional)
-If set, the merge becomes recursive (i.e. deep copy).
-* `target` *Object*
-The object to extend.
-* `object1` *Object*
-The object that will be merged into the first.
-* `objectN` *Object* (Optional)
-More objects to merge into the first.
-
-## License
-
-`node-extend` is licensed under the [MIT License][mit-license-url].
-
-## Acknowledgements
-
-All credit to the jQuery authors for perfecting this amazing utility.
-
-Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].
-
-[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg
-[travis-url]: https://travis-ci.org/justmoon/node-extend
-[npm-url]: https://npmjs.org/package/extend
-[mit-license-url]: http://opensource.org/licenses/MIT
-[github-justmoon]: https://github.com/justmoon
-[github-insin]: https://github.com/insin
-[github-ljharb]: https://github.com/ljharb
-[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg
-[deps-svg]: https://david-dm.org/justmoon/node-extend.svg
-[deps-url]: https://david-dm.org/justmoon/node-extend
-[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg
-[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies
-
diff --git a/node_modules/request/node_modules/extend/component.json b/node_modules/request/node_modules/extend/component.json
deleted file mode 100644
index bfb4518a2..000000000
--- a/node_modules/request/node_modules/extend/component.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "extend",
- "author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)",
- "version": "2.0.1",
- "description": "Port of jQuery.extend for node.js and the browser.",
- "scripts": [
- "index.js"
- ],
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "repository" : {
- "type": "git",
- "url": "https://github.com/justmoon/node-extend.git"
- },
- "dependencies": {
- },
- "devDependencies": {
- "tape" : "~3.0.0",
- "covert": "~0.4.0",
- "jscs": "~1.6.2"
- }
-}
-
diff --git a/node_modules/request/node_modules/extend/index.js b/node_modules/request/node_modules/extend/index.js
deleted file mode 100644
index 57a8bcc16..000000000
--- a/node_modules/request/node_modules/extend/index.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var hasOwn = Object.prototype.hasOwnProperty;
-var toStr = Object.prototype.toString;
-var undefined;
-
-var isArray = function isArray(arr) {
- if (typeof Array.isArray === 'function') {
- return Array.isArray(arr);
- }
-
- return toStr.call(arr) === '[object Array]';
-};
-
-var isPlainObject = function isPlainObject(obj) {
- 'use strict';
- if (!obj || toStr.call(obj) !== '[object Object]') {
- return false;
- }
-
- var has_own_constructor = hasOwn.call(obj, 'constructor');
- var has_is_property_of_method = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
- // Not own constructor property must be Object
- if (obj.constructor && !has_own_constructor && !has_is_property_of_method) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
- var key;
- for (key in obj) {}
-
- return key === undefined || hasOwn.call(obj, key);
-};
-
-module.exports = function extend() {
- 'use strict';
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0],
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if (typeof target === 'boolean') {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {
- target = {};
- }
-
- for (; i < length; ++i) {
- options = arguments[i];
- // Only deal with non-null/undefined values
- if (options != null) {
- // Extend the base object
- for (name in options) {
- src = target[name];
- copy = options[name];
-
- // Prevent never-ending loop
- if (target === copy) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
- if (copyIsArray) {
- copyIsArray = false;
- clone = src && isArray(src) ? src : [];
- } else {
- clone = src && isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[name] = extend(deep, clone, copy);
-
- // Don't bring in undefined values
- } else if (copy !== undefined) {
- target[name] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
diff --git a/node_modules/request/node_modules/extend/package.json b/node_modules/request/node_modules/extend/package.json
deleted file mode 100644
index 8eb102ff1..000000000
--- a/node_modules/request/node_modules/extend/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "extend",
- "author": {
- "name": "Stefan Thomas",
- "email": "justmoon@members.fsf.org",
- "url": "http://www.justmoon.net"
- },
- "version": "2.0.1",
- "description": "Port of jQuery.extend for node.js and the browser",
- "main": "index",
- "scripts": {
- "test": "npm run lint && node test/index.js && npm run coverage-quiet",
- "coverage": "covert test/index.js",
- "coverage-quiet": "covert test/index.js --quiet",
- "lint": "jscs *.js */*.js"
- },
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/justmoon/node-extend.git"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "^4.0.0",
- "covert": "^1.0.1",
- "jscs": "^1.11.3"
- },
- "license": "MIT",
- "gitHead": "ce3790222d3d2051f728f74be9565f155ed599c3",
- "bugs": {
- "url": "https://github.com/justmoon/node-extend/issues"
- },
- "homepage": "https://github.com/justmoon/node-extend#readme",
- "_id": "extend@2.0.1",
- "_shasum": "1ee8010689e7395ff9448241c98652bc759a8260",
- "_from": "extend@>=2.0.1 <2.1.0",
- "_npmVersion": "2.8.3",
- "_nodeVersion": "1.8.1",
- "_npmUser": {
- "name": "ljharb",
- "email": "ljharb@gmail.com"
- },
- "dist": {
- "shasum": "1ee8010689e7395ff9448241c98652bc759a8260",
- "tarball": "http://registry.npmjs.org/extend/-/extend-2.0.1.tgz"
- },
- "maintainers": [
- {
- "name": "justmoon",
- "email": "justmoon@members.fsf.org"
- },
- {
- "name": "ljharb",
- "email": "ljharb@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/forever-agent/LICENSE b/node_modules/request/node_modules/forever-agent/LICENSE
deleted file mode 100644
index a4a9aee0c..000000000
--- a/node_modules/request/node_modules/forever-agent/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS \ No newline at end of file
diff --git a/node_modules/request/node_modules/forever-agent/README.md b/node_modules/request/node_modules/forever-agent/README.md
deleted file mode 100644
index 9d5b66343..000000000
--- a/node_modules/request/node_modules/forever-agent/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-forever-agent
-=============
-
-HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.
diff --git a/node_modules/request/node_modules/forever-agent/index.js b/node_modules/request/node_modules/forever-agent/index.js
deleted file mode 100644
index 416c7abd7..000000000
--- a/node_modules/request/node_modules/forever-agent/index.js
+++ /dev/null
@@ -1,138 +0,0 @@
-module.exports = ForeverAgent
-ForeverAgent.SSL = ForeverAgentSSL
-
-var util = require('util')
- , Agent = require('http').Agent
- , net = require('net')
- , tls = require('tls')
- , AgentSSL = require('https').Agent
-
-function getConnectionName(host, port) {
- var name = ''
- if (typeof host === 'string') {
- name = host + ':' + port
- } else {
- // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name.
- name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':')
- }
- return name
-}
-
-function ForeverAgent(options) {
- var self = this
- self.options = options || {}
- self.requests = {}
- self.sockets = {}
- self.freeSockets = {}
- self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets
- self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets
- self.on('free', function(socket, host, port) {
- var name = getConnectionName(host, port)
-
- if (self.requests[name] && self.requests[name].length) {
- self.requests[name].shift().onSocket(socket)
- } else if (self.sockets[name].length < self.minSockets) {
- if (!self.freeSockets[name]) self.freeSockets[name] = []
- self.freeSockets[name].push(socket)
-
- // if an error happens while we don't use the socket anyway, meh, throw the socket away
- var onIdleError = function() {
- socket.destroy()
- }
- socket._onIdleError = onIdleError
- socket.on('error', onIdleError)
- } else {
- // If there are no pending requests just destroy the
- // socket and it will get removed from the pool. This
- // gets us out of timeout issues and allows us to
- // default to Connection:keep-alive.
- socket.destroy()
- }
- })
-
-}
-util.inherits(ForeverAgent, Agent)
-
-ForeverAgent.defaultMinSockets = 5
-
-
-ForeverAgent.prototype.createConnection = net.createConnection
-ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest
-ForeverAgent.prototype.addRequest = function(req, host, port) {
- var name = getConnectionName(host, port)
-
- if (typeof host !== 'string') {
- var options = host
- port = options.port
- host = options.host
- }
-
- if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) {
- var idleSocket = this.freeSockets[name].pop()
- idleSocket.removeListener('error', idleSocket._onIdleError)
- delete idleSocket._onIdleError
- req._reusedSocket = true
- req.onSocket(idleSocket)
- } else {
- this.addRequestNoreuse(req, host, port)
- }
-}
-
-ForeverAgent.prototype.removeSocket = function(s, name, host, port) {
- if (this.sockets[name]) {
- var index = this.sockets[name].indexOf(s)
- if (index !== -1) {
- this.sockets[name].splice(index, 1)
- }
- } else if (this.sockets[name] && this.sockets[name].length === 0) {
- // don't leak
- delete this.sockets[name]
- delete this.requests[name]
- }
-
- if (this.freeSockets[name]) {
- var index = this.freeSockets[name].indexOf(s)
- if (index !== -1) {
- this.freeSockets[name].splice(index, 1)
- if (this.freeSockets[name].length === 0) {
- delete this.freeSockets[name]
- }
- }
- }
-
- if (this.requests[name] && this.requests[name].length) {
- // If we have pending requests and a socket gets closed a new one
- // needs to be created to take over in the pool for the one that closed.
- this.createSocket(name, host, port).emit('free')
- }
-}
-
-function ForeverAgentSSL (options) {
- ForeverAgent.call(this, options)
-}
-util.inherits(ForeverAgentSSL, ForeverAgent)
-
-ForeverAgentSSL.prototype.createConnection = createConnectionSSL
-ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest
-
-function createConnectionSSL (port, host, options) {
- if (typeof port === 'object') {
- options = port;
- } else if (typeof host === 'object') {
- options = host;
- } else if (typeof options === 'object') {
- options = options;
- } else {
- options = {};
- }
-
- if (typeof port === 'number') {
- options.port = port;
- }
-
- if (typeof host === 'string') {
- options.host = host;
- }
-
- return tls.connect(options);
-}
diff --git a/node_modules/request/node_modules/forever-agent/package.json b/node_modules/request/node_modules/forever-agent/package.json
deleted file mode 100644
index 7bdaaaff0..000000000
--- a/node_modules/request/node_modules/forever-agent/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "forever-agent",
- "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.",
- "version": "0.6.1",
- "license": "Apache-2.0",
- "repository": {
- "url": "git+https://github.com/mikeal/forever-agent.git"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "readme": "forever-agent\n=============\n\nHTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/mikeal/forever-agent/issues"
- },
- "homepage": "https://github.com/mikeal/forever-agent#readme",
- "_id": "forever-agent@0.6.1",
- "_shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91",
- "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "_from": "forever-agent@>=0.6.0 <0.7.0"
-}
diff --git a/node_modules/request/node_modules/form-data/License b/node_modules/request/node_modules/form-data/License
deleted file mode 100644
index c7ff12a2f..000000000
--- a/node_modules/request/node_modules/form-data/License
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors
-
- 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/request/node_modules/form-data/Readme.md b/node_modules/request/node_modules/form-data/Readme.md
deleted file mode 100644
index c8a1a55db..000000000
--- a/node_modules/request/node_modules/form-data/Readme.md
+++ /dev/null
@@ -1,175 +0,0 @@
-# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data)
-
-A module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications.
-
-The API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].
-
-[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface
-[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions
-
-## Install
-
-```
-npm install form-data
-```
-
-## Usage
-
-In this example we are constructing a form with 3 fields that contain a string,
-a buffer and a file stream.
-
-``` javascript
-var FormData = require('form-data');
-var fs = require('fs');
-
-var form = new FormData();
-form.append('my_field', 'my value');
-form.append('my_buffer', new Buffer(10));
-form.append('my_file', fs.createReadStream('/foo/bar.jpg'));
-```
-
-Also you can use http-response stream:
-
-``` javascript
-var FormData = require('form-data');
-var http = require('http');
-
-var form = new FormData();
-
-http.request('http://nodejs.org/images/logo.png', function(response) {
- form.append('my_field', 'my value');
- form.append('my_buffer', new Buffer(10));
- form.append('my_logo', response);
-});
-```
-
-Or @mikeal's request stream:
-
-``` javascript
-var FormData = require('form-data');
-var request = require('request');
-
-var form = new FormData();
-
-form.append('my_field', 'my value');
-form.append('my_buffer', new Buffer(10));
-form.append('my_logo', request('http://nodejs.org/images/logo.png'));
-```
-
-In order to submit this form to a web application, call ```submit(url, [callback])``` method:
-
-``` javascript
-form.submit('http://example.org/', function(err, res) {
- // res – response object (http.IncomingMessage) //
- res.resume(); // for node-0.10.x
-});
-
-```
-
-For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.
-
-### Alternative submission methods
-
-You can use node's http client interface:
-
-``` javascript
-var http = require('http');
-
-var request = http.request({
- method: 'post',
- host: 'example.org',
- path: '/upload',
- headers: form.getHeaders()
-});
-
-form.pipe(request);
-
-request.on('response', function(res) {
- console.log(res.statusCode);
-});
-```
-
-Or if you would prefer the `'Content-Length'` header to be set for you:
-
-``` javascript
-form.submit('example.org/upload', function(err, res) {
- console.log(res.statusCode);
-});
-```
-
-To use custom headers and pre-known length in parts:
-
-``` javascript
-var CRLF = '\r\n';
-var form = new FormData();
-
-var options = {
- header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF,
- knownLength: 1
-};
-
-form.append('my_buffer', buffer, options);
-
-form.submit('http://example.com/', function(err, res) {
- if (err) throw err;
- console.log('Done');
-});
-```
-
-Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually:
-
-``` javascript
-someModule.stream(function(err, stdout, stderr) {
- if (err) throw err;
-
- var form = new FormData();
-
- form.append('file', stdout, {
- filename: 'unicycle.jpg',
- contentType: 'image/jpg',
- knownLength: 19806
- });
-
- form.submit('http://example.com/', function(err, res) {
- if (err) throw err;
- console.log('Done');
- });
-});
-```
-
-For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:
-
-``` javascript
-form.submit({
- host: 'example.com',
- path: '/probably.php?extra=params',
- auth: 'username:password'
-}, function(err, res) {
- console.log(res.statusCode);
-});
-```
-
-In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`:
-
-``` javascript
-form.submit({
- host: 'example.com',
- path: '/surelynot.php',
- headers: {'x-test-header': 'test-header-value'}
-}, function(err, res) {
- console.log(res.statusCode);
-});
-```
-
-## Notes
-
-- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.
-- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]
-
-## TODO
-
-- Add new streams (0.10) support and try really hard not to break it for 0.8.x.
-
-## License
-
-Form-Data is licensed under the MIT license.
diff --git a/node_modules/request/node_modules/form-data/lib/form_data.js b/node_modules/request/node_modules/form-data/lib/form_data.js
deleted file mode 100644
index b960dce9d..000000000
--- a/node_modules/request/node_modules/form-data/lib/form_data.js
+++ /dev/null
@@ -1,351 +0,0 @@
-var CombinedStream = require('combined-stream');
-var util = require('util');
-var path = require('path');
-var http = require('http');
-var https = require('https');
-var parseUrl = require('url').parse;
-var fs = require('fs');
-var mime = require('mime-types');
-var async = require('async');
-
-module.exports = FormData;
-function FormData() {
- this._overheadLength = 0;
- this._valueLength = 0;
- this._lengthRetrievers = [];
-
- CombinedStream.call(this);
-}
-util.inherits(FormData, CombinedStream);
-
-FormData.LINE_BREAK = '\r\n';
-
-FormData.prototype.append = function(field, value, options) {
- options = options || {};
-
- var append = CombinedStream.prototype.append.bind(this);
-
- // all that streamy business can't handle numbers
- if (typeof value == 'number') value = ''+value;
-
- // https://github.com/felixge/node-form-data/issues/38
- if (util.isArray(value)) {
- // Please convert your array into string
- // the way web server expects it
- this._error(new Error('Arrays are not supported.'));
- return;
- }
-
- var header = this._multiPartHeader(field, value, options);
- var footer = this._multiPartFooter(field, value, options);
-
- append(header);
- append(value);
- append(footer);
-
- // pass along options.knownLength
- this._trackLength(header, value, options);
-};
-
-FormData.prototype._trackLength = function(header, value, options) {
- var valueLength = 0;
-
- // used w/ getLengthSync(), when length is known.
- // e.g. for streaming directly from a remote server,
- // w/ a known file a size, and not wanting to wait for
- // incoming file to finish to get its size.
- if (options.knownLength != null) {
- valueLength += +options.knownLength;
- } else if (Buffer.isBuffer(value)) {
- valueLength = value.length;
- } else if (typeof value === 'string') {
- valueLength = Buffer.byteLength(value);
- }
-
- this._valueLength += valueLength;
-
- // @check why add CRLF? does this account for custom/multiple CRLFs?
- this._overheadLength +=
- Buffer.byteLength(header) +
- FormData.LINE_BREAK.length;
-
- // empty or either doesn't have path or not an http response
- if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
- return;
- }
-
- // no need to bother with the length
- if (!options.knownLength)
- this._lengthRetrievers.push(function(next) {
-
- if (value.hasOwnProperty('fd')) {
-
- // take read range into a account
- // `end` = Infinity –> read file till the end
- //
- // TODO: Looks like there is bug in Node fs.createReadStream
- // it doesn't respect `end` options without `start` options
- // Fix it when node fixes it.
- // https://github.com/joyent/node/issues/7819
- if (value.end != undefined && value.end != Infinity && value.start != undefined) {
-
- // when end specified
- // no need to calculate range
- // inclusive, starts with 0
- next(null, value.end+1 - (value.start ? value.start : 0));
-
- // not that fast snoopy
- } else {
- // still need to fetch file size from fs
- fs.stat(value.path, function(err, stat) {
-
- var fileSize;
-
- if (err) {
- next(err);
- return;
- }
-
- // update final size based on the range options
- fileSize = stat.size - (value.start ? value.start : 0);
- next(null, fileSize);
- });
- }
-
- // or http response
- } else if (value.hasOwnProperty('httpVersion')) {
- next(null, +value.headers['content-length']);
-
- // or request stream http://github.com/mikeal/request
- } else if (value.hasOwnProperty('httpModule')) {
- // wait till response come back
- value.on('response', function(response) {
- value.pause();
- next(null, +response.headers['content-length']);
- });
- value.resume();
-
- // something else
- } else {
- next('Unknown stream');
- }
- });
-};
-
-FormData.prototype._multiPartHeader = function(field, value, options) {
- var boundary = this.getBoundary();
- var header = '';
-
- // custom header specified (as string)?
- // it becomes responsible for boundary
- // (e.g. to handle extra CRLFs on .NET servers)
- if (options.header != null) {
- header = options.header;
- } else {
- header += '--' + boundary + FormData.LINE_BREAK +
- 'Content-Disposition: form-data; name="' + field + '"';
-
- // fs- and request- streams have path property
- // or use custom filename and/or contentType
- // TODO: Use request's response mime-type
- if (options.filename || value.path) {
- header +=
- '; filename="' + path.basename(options.filename || value.path) + '"' + FormData.LINE_BREAK +
- 'Content-Type: ' + (options.contentType || mime.lookup(options.filename || value.path));
-
- // http response has not
- } else if (value.readable && value.hasOwnProperty('httpVersion')) {
- header +=
- '; filename="' + path.basename(value.client._httpMessage.path) + '"' + FormData.LINE_BREAK +
- 'Content-Type: ' + value.headers['content-type'];
- }
-
- header += FormData.LINE_BREAK + FormData.LINE_BREAK;
- }
-
- return header;
-};
-
-FormData.prototype._multiPartFooter = function(field, value, options) {
- return function(next) {
- var footer = FormData.LINE_BREAK;
-
- var lastPart = (this._streams.length === 0);
- if (lastPart) {
- footer += this._lastBoundary();
- }
-
- next(footer);
- }.bind(this);
-};
-
-FormData.prototype._lastBoundary = function() {
- return '--' + this.getBoundary() + '--';
-};
-
-FormData.prototype.getHeaders = function(userHeaders) {
- var formHeaders = {
- 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
- };
-
- for (var header in userHeaders) {
- formHeaders[header.toLowerCase()] = userHeaders[header];
- }
-
- return formHeaders;
-}
-
-FormData.prototype.getCustomHeaders = function(contentType) {
- contentType = contentType ? contentType : 'multipart/form-data';
-
- var formHeaders = {
- 'content-type': contentType + '; boundary=' + this.getBoundary(),
- 'content-length': this.getLengthSync()
- };
-
- return formHeaders;
-}
-
-FormData.prototype.getBoundary = function() {
- if (!this._boundary) {
- this._generateBoundary();
- }
-
- return this._boundary;
-};
-
-FormData.prototype._generateBoundary = function() {
- // This generates a 50 character boundary similar to those used by Firefox.
- // They are optimized for boyer-moore parsing.
- var boundary = '--------------------------';
- for (var i = 0; i < 24; i++) {
- boundary += Math.floor(Math.random() * 10).toString(16);
- }
-
- this._boundary = boundary;
-};
-
-// Note: getLengthSync DOESN'T calculate streams length
-// As workaround one can calculate file size manually
-// and add it as knownLength option
-FormData.prototype.getLengthSync = function(debug) {
- var knownLength = this._overheadLength + this._valueLength;
-
- // Don't get confused, there are 3 "internal" streams for each keyval pair
- // so it basically checks if there is any value added to the form
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- // https://github.com/felixge/node-form-data/issues/40
- if (this._lengthRetrievers.length) {
- // Some async length retrivers are present
- // therefore synchronous length calculation is false.
- // Please use getLength(callback) to get proper length
- this._error(new Error('Cannot calculate proper length in synchronous way.'));
- }
-
- return knownLength;
-};
-
-FormData.prototype.getLength = function(cb) {
- var knownLength = this._overheadLength + this._valueLength;
-
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- if (!this._lengthRetrievers.length) {
- process.nextTick(cb.bind(this, null, knownLength));
- return;
- }
-
- async.parallel(this._lengthRetrievers, function(err, values) {
- if (err) {
- cb(err);
- return;
- }
-
- values.forEach(function(length) {
- knownLength += length;
- });
-
- cb(null, knownLength);
- });
-};
-
-FormData.prototype.submit = function(params, cb) {
-
- var request
- , options
- , defaults = {
- method : 'post'
- };
-
- // parse provided url if it's string
- // or treat it as options object
- if (typeof params == 'string') {
- params = parseUrl(params);
-
- options = populate({
- port: params.port,
- path: params.pathname,
- host: params.hostname
- }, defaults);
- }
- else // use custom params
- {
- options = populate(params, defaults);
- // if no port provided use default one
- if (!options.port) {
- options.port = options.protocol == 'https:' ? 443 : 80;
- }
- }
-
- // put that good code in getHeaders to some use
- options.headers = this.getHeaders(params.headers);
-
- // https if specified, fallback to http in any other case
- if (options.protocol == 'https:') {
- request = https.request(options);
- } else {
- request = http.request(options);
- }
-
- // get content length and fire away
- this.getLength(function(err, length) {
-
- // TODO: Add chunked encoding when no length (if err)
-
- // add content length
- request.setHeader('Content-Length', length);
-
- this.pipe(request);
- if (cb) {
- request.on('error', cb);
- request.on('response', cb.bind(this, null));
- }
- }.bind(this));
-
- return request;
-};
-
-FormData.prototype._error = function(err) {
- if (this.error) return;
-
- this.error = err;
- this.pause();
- this.emit('error', err);
-};
-
-/*
- * Santa's little helpers
- */
-
-// populates missing values
-function populate(dst, src) {
- for (var prop in src) {
- if (!dst[prop]) dst[prop] = src[prop];
- }
- return dst;
-}
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml b/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml
deleted file mode 100644
index 0a62fcad5..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
- - "0.12"
- - "iojs-v2.1.0"
-after_success: npm run coveralls
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md b/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
deleted file mode 100644
index 80e67358f..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# v1.2.1
-
-Bug Fix:
-
-- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)
-
-# v1.2.0
-
-New Features:
-
-- Added `timesLimit` (#743)
-- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. (#747, #772)
-
-Bug Fixes:
-
-- Fixed a regression in `each` and family with empty arrays that have additional properties. (#775, #777)
-
-
-# v1.1.1
-
-Bug Fix:
-
-- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)
-
-
-# v1.1.0
-
-New Features:
-
-- `cargo` now supports all of the same methods and event callbacks as `queue`.
-- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. (#769)
-- Optimized `map`, `eachOf`, and `waterfall` families of functions
-- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array (#667).
-- The callback is now optional for the composed results of `compose` and `seq`. (#618)
-- Reduced file size by 4kb, (minified version by 1kb)
-- Added code coverage through `nyc` and `coveralls` (#768)
-
-Bug Fixes:
-
-- `forever` will no longer stack overflow with a synchronous iterator (#622)
-- `eachLimit` and other limit functions will stop iterating once an error occurs (#754)
-- Always pass `null` in callbacks when there is no error (#439)
-- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue (#668)
-- `each` and family will properly handle an empty array (#578)
-- `eachSeries` and family will finish if the underlying array is modified during execution (#557)
-- `queue` will throw if a non-function is passed to `q.push()` (#593)
-- Doc fixes (#629, #766)
-
-
-# v1.0.0
-
-No known breaking changes, we are simply complying with semver from here on out.
-
-Changes:
-
-- Start using a changelog!
-- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321)
-- Detect deadlocks in `auto` (#663)
-- Better support for require.js (#527)
-- Throw if queue created with concurrency `0` (#714)
-- Fix unneeded iteration in `queue.resume()` (#758)
-- Guard against timer mocking overriding `setImmediate` (#609 #611)
-- Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729)
-- Use single noop function internally (#546)
-- Optimize internal `_each`, `_map` and `_keys` functions.
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/LICENSE b/node_modules/request/node_modules/form-data/node_modules/async/LICENSE
deleted file mode 100644
index 8f2969858..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2014 Caolan McMahon
-
-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/request/node_modules/form-data/node_modules/async/README.md b/node_modules/request/node_modules/form-data/node_modules/async/README.md
deleted file mode 100644
index 580d79737..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/README.md
+++ /dev/null
@@ -1,1803 +0,0 @@
-# Async.js
-
-[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async)
-[![NPM version](http://img.shields.io/npm/v/async.svg)](https://www.npmjs.org/package/async)
-[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master)
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [Node.js](http://nodejs.org) and installable via `npm install async`,
-it can also be used directly in the browser.
-
-Async is also installable via:
-
-- [bower](http://bower.io/): `bower install async`
-- [component](https://github.com/component/component): `component install
- caolan/async`
-- [jam](http://jamjs.org/): `jam install async`
-- [spm](http://spmjs.io/): `spm install async`
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns
-for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these
-functions assume you follow the Node.js convention of providing a single
-callback as the last argument of your `async` function.
-
-
-## Quick Examples
-
-```javascript
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-
-async.parallel([
- function(){ ... },
- function(){ ... }
-], callback);
-
-async.series([
- function(){ ... },
- function(){ ... }
-]);
-```
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-## Common Pitfalls
-
-<a name="stack-overflow">
-### Synchronous iteration functions
-
-If you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.nextTick` to start a new call stack on the next tick of the event loop.
-
-This can also arise by accident if you callback early in certain cases:
-
-```js
-async.eachSeries(hugeArray, function iterator(item, callback) {
- if (inCache(item)) {
- callback(null, cache[item]); // if many items are cached, you'll overflow
- } else {
- doSomeIO(item, callback);
- }
-}, function done() {
- //...
-});
-```
-
-Just change it to:
-
-```js
-async.eachSeries(hugeArray, function iterator(item, callback) {
- if (inCache(item)) {
- async.setImmediate(function () {
- callback(null, cache[item]);
- });
- } else {
- doSomeIO(item, callback);
- //...
-```
-
-Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral.
-
-If javascript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works.
-
-
-### Binding a context to an iterator
-
-This section is really about `bind`, not about `async`. If you are wondering how to
-make `async` execute your iterators in a given context, or are confused as to why
-a method of another library isn't working as an iterator, study this example:
-
-```js
-// Here is a simple object with an (unnecessarily roundabout) squaring method
-var AsyncSquaringLibrary = {
- squareExponent: 2,
- square: function(number, callback){
- var result = Math.pow(number, this.squareExponent);
- setTimeout(function(){
- callback(null, result);
- }, 200);
- }
-};
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
- // result is [NaN, NaN, NaN]
- // This fails because the `this.squareExponent` expression in the square
- // function is not evaluated in the context of AsyncSquaringLibrary, and is
- // therefore undefined.
-});
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
- // result is [1, 4, 9]
- // With the help of bind we can attach a context to the iterator before
- // passing it to async. Now the square function will be executed in its
- // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
- // will be as expected.
-});
-```
-
-## Download
-
-The source is available for download from
-[GitHub](https://github.com/caolan/async/blob/master/lib/async.js).
-Alternatively, you can install using Node Package Manager (`npm`):
-
- npm install async
-
-As well as using Bower:
-
- bower install async
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
-
-## In the Browser
-
-So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5.
-
-Usage:
-
-```html
-<script type="text/javascript" src="async.js"></script>
-<script type="text/javascript">
-
- async.map(data, asyncProcess, function(err, results){
- alert(results);
- });
-
-</script>
-```
-
-## Documentation
-
-### Collections
-
-* [`each`](#each)
-* [`eachSeries`](#eachSeries)
-* [`eachLimit`](#eachLimit)
-* [`forEachOf`](#forEachOf)
-* [`forEachOfSeries`](#forEachOfSeries)
-* [`forEachOfLimit`](#forEachOfLimit)
-* [`map`](#map)
-* [`mapSeries`](#mapSeries)
-* [`mapLimit`](#mapLimit)
-* [`filter`](#filter)
-* [`filterSeries`](#filterSeries)
-* [`reject`](#reject)
-* [`rejectSeries`](#rejectSeries)
-* [`reduce`](#reduce)
-* [`reduceRight`](#reduceRight)
-* [`detect`](#detect)
-* [`detectSeries`](#detectSeries)
-* [`sortBy`](#sortBy)
-* [`some`](#some)
-* [`every`](#every)
-* [`concat`](#concat)
-* [`concatSeries`](#concatSeries)
-
-### Control Flow
-
-* [`series`](#seriestasks-callback)
-* [`parallel`](#parallel)
-* [`parallelLimit`](#parallellimittasks-limit-callback)
-* [`whilst`](#whilst)
-* [`doWhilst`](#doWhilst)
-* [`until`](#until)
-* [`doUntil`](#doUntil)
-* [`forever`](#forever)
-* [`waterfall`](#waterfall)
-* [`compose`](#compose)
-* [`seq`](#seq)
-* [`applyEach`](#applyEach)
-* [`applyEachSeries`](#applyEachSeries)
-* [`queue`](#queue)
-* [`priorityQueue`](#priorityQueue)
-* [`cargo`](#cargo)
-* [`auto`](#auto)
-* [`retry`](#retry)
-* [`iterator`](#iterator)
-* [`apply`](#apply)
-* [`nextTick`](#nextTick)
-* [`times`](#times)
-* [`timesSeries`](#timesSeries)
-* [`timesLimit`](#timesLimit)
-
-### Utils
-
-* [`memoize`](#memoize)
-* [`unmemoize`](#unmemoize)
-* [`ensureAsync`](#ensureAsync)
-* [`log`](#log)
-* [`dir`](#dir)
-* [`noConflict`](#noConflict)
-
-
-## Collections
-
-<a name="forEach" />
-<a name="each" />
-### each(arr, iterator, [callback])
-
-Applies the function `iterator` to each item in `arr`, in parallel.
-The `iterator` is called with an item from the list, and a callback for when it
-has finished. If the `iterator` passes an error to its `callback`, the main
-`callback` (for the `each` function) is immediately called with the error.
-
-Note, that since this function applies `iterator` to each item in parallel,
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err)` which must be called once it has
- completed. If no error has occurred, the `callback` should be run without
- arguments or with an explicit `null` argument. The array index is not passed
- to the iterator. If you need the index, use [`forEachOf`](#forEachOf).
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions
- have finished, or an error occurs.
-
-__Examples__
-
-
-```js
-// assuming openFiles is an array of file names and saveFile is a function
-// to save the modified contents of that file:
-
-async.each(openFiles, saveFile, function(err){
- // if any of the saves produced an error, err would equal that error
-});
-```
-
-```js
-// assuming openFiles is an array of file names
-
-async.each(openFiles, function(file, callback) {
-
- // Perform operation on file here.
- console.log('Processing file ' + file);
-
- if( file.length > 32 ) {
- console.log('This file name is too long');
- callback('File name too long');
- } else {
- // Do work to process file here
- console.log('File processed');
- callback();
- }
-}, function(err){
- // if any of the file processing produced an error, err would equal that error
- if( err ) {
- // One of the iterations produced an error.
- // All processing will now stop.
- console.log('A file failed to process');
- } else {
- console.log('All files have been processed successfully');
- }
-});
-```
-
----------------------------------------
-
-<a name="forEachSeries" />
-<a name="eachSeries" />
-### eachSeries(arr, iterator, [callback])
-
-The same as [`each`](#each), only `iterator` is applied to each item in `arr` in
-series. The next `iterator` is only called once the current one has completed.
-This means the `iterator` functions will complete in order.
-
-
----------------------------------------
-
-<a name="forEachLimit" />
-<a name="eachLimit" />
-### eachLimit(arr, limit, iterator, [callback])
-
-The same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously
-running at any time.
-
-Note that the items in `arr` are not processed in batches, so there is no guarantee that
-the first `limit` `iterator` functions will complete before any others are started.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `limit` - The maximum number of `iterator`s to run at any time.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err)` which must be called once it has
- completed. If no error has occurred, the callback should be run without
- arguments or with an explicit `null` argument.
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions
- have finished, or an error occurs.
-
-__Example__
-
-```js
-// Assume documents is an array of JSON objects and requestApi is a
-// function that interacts with a rate-limited REST api.
-
-async.eachLimit(documents, 20, requestApi, function(err){
- // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-<a name="forEachOf" />
-<a name="eachOf" />
-
-### forEachOf(obj, iterator, [callback])
-
-Like `each`, except that it iterates over objects, and passes the key as the second argument to the iterator.
-
-__Arguments__
-
-* `obj` - An object or array to iterate over.
-* `iterator(item, key, callback)` - A function to apply to each item in `obj`.
-The `key` is the item's key, or index in the case of an array. The iterator is
-passed a `callback(err)` which must be called once it has completed. If no
-error has occurred, the callback should be run without arguments or with an
-explicit `null` argument.
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs.
-
-__Example__
-
-```js
-var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
-var configs = {};
-
-async.forEachOf(obj, function (value, key, callback) {
- fs.readFile(__dirname + value, "utf8", function (err, data) {
- if (err) return callback(err);
- try {
- configs[key] = JSON.parse(data);
- } catch (e) {
- return callback(e);
- }
- callback();
- })
-}, function (err) {
- if (err) console.error(err.message);
- // configs is now a map of JSON data
- doSomethingWith(configs);
-})
-```
-
----------------------------------------
-
-<a name="forEachOfSeries" />
-<a name="eachOfSeries" />
-
-### forEachOfSeries(obj, iterator, [callback])
-
-Like [`forEachOf`](#forEachOf), except only one `iterator` is run at a time. The order of execution is not guaranteed for objects, but it will be guaranteed for arrays.
-
----------------------------------------
-
-<a name="forEachOfLimit" />
-<a name="eachOfLimit" />
-
-### forEachOfLimit(obj, limit, iterator, [callback])
-
-Like [`forEachOf`](#forEachOf), except the number of `iterator`s running at a given time is controlled by `limit`.
-
-
----------------------------------------
-
-<a name="map" />
-### map(arr, iterator, [callback])
-
-Produces a new array of values by mapping each value in `arr` through
-the `iterator` function. The `iterator` is called with an item from `arr` and a
-callback for when it has finished processing. Each of these callback takes 2 arguments:
-an `error`, and the transformed item from `arr`. If `iterator` passes an error to its
-callback, the main `callback` (for the `map` function) is immediately called with the error.
-
-Note, that since this function applies the `iterator` to each item in parallel,
-there is no guarantee that the `iterator` functions will complete in order.
-However, the results array will be in the same order as the original `arr`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, transformed)` which must be called once
- it has completed with an error (which can be `null`) and a transformed item.
-* `callback(err, results)` - *Optional* A callback which is called when all `iterator`
- functions have finished, or an error occurs. Results is an array of the
- transformed items from the `arr`.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-<a name="mapSeries" />
-### mapSeries(arr, iterator, [callback])
-
-The same as [`map`](#map), only the `iterator` is applied to each item in `arr` in
-series. The next `iterator` is only called once the current one has completed.
-The results array will be in the same order as the original.
-
-
----------------------------------------
-
-<a name="mapLimit" />
-### mapLimit(arr, limit, iterator, [callback])
-
-The same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
-the first `limit` `iterator` functions will complete before any others are started.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `limit` - The maximum number of `iterator`s to run at any time.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, transformed)` which must be called once
- it has completed with an error (which can be `null`) and a transformed item.
-* `callback(err, results)` - A callback which is called when all `iterator`
- calls have finished, or an error occurs. The result is an array of the
- transformed items from the original `arr`.
-
-__Example__
-
-```js
-async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-<a name="select" />
-<a name="filter" />
-### filter(arr, iterator, [callback])
-
-__Alias:__ `select`
-
-Returns a new array of all the values in `arr` which pass an async truth test.
-_The callback for each `iterator` call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
- The `iterator` is passed a `callback(truthValue)`, which must be called with a
- boolean argument once it has completed.
-* `callback(results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished.
-
-__Example__
-
-```js
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-```
-
----------------------------------------
-
-<a name="selectSeries" />
-<a name="filterSeries" />
-### filterSeries(arr, iterator, [callback])
-
-__Alias:__ `selectSeries`
-
-The same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in
-series. The next `iterator` is only called once the current one has completed.
-The results array will be in the same order as the original.
-
----------------------------------------
-
-<a name="reject" />
-### reject(arr, iterator, [callback])
-
-The opposite of [`filter`](#filter). Removes values that pass an `async` truth test.
-
----------------------------------------
-
-<a name="rejectSeries" />
-### rejectSeries(arr, iterator, [callback])
-
-The same as [`reject`](#reject), only the `iterator` is applied to each item in `arr`
-in series.
-
-
----------------------------------------
-
-<a name="reduce" />
-### reduce(arr, memo, iterator, [callback])
-
-__Aliases:__ `inject`, `foldl`
-
-Reduces `arr` into a single value using an async `iterator` to return
-each successive step. `memo` is the initial state of the reduction.
-This function only operates in series.
-
-For performance reasons, it may make sense to split a call to this function into
-a parallel map, and then use the normal `Array.prototype.reduce` on the results.
-This function is for situations where each step in the reduction needs to be async;
-if you can get the data before reducing it, then it's probably a good idea to do so.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `memo` - The initial state of the reduction.
-* `iterator(memo, item, callback)` - A function applied to each item in the
- array to produce the next step in the reduction. The `iterator` is passed a
- `callback(err, reduction)` which accepts an optional error as its first
- argument, and the state of the reduction as the second. If an error is
- passed to the callback, the reduction is stopped and the main `callback` is
- immediately called with the error.
-* `callback(err, result)` - *Optional* A callback which is called after all the `iterator`
- functions have finished. Result is the reduced value.
-
-__Example__
-
-```js
-async.reduce([1,2,3], 0, function(memo, item, callback){
- // pointless async:
- process.nextTick(function(){
- callback(null, memo + item)
- });
-}, function(err, result){
- // result is now equal to the last value of memo, which is 6
-});
-```
-
----------------------------------------
-
-<a name="reduceRight" />
-### reduceRight(arr, memo, iterator, [callback])
-
-__Alias:__ `foldr`
-
-Same as [`reduce`](#reduce), only operates on `arr` in reverse order.
-
-
----------------------------------------
-
-<a name="detect" />
-### detect(arr, iterator, [callback])
-
-Returns the first value in `arr` that passes an async truth test. The
-`iterator` is applied in parallel, meaning the first iterator to return `true` will
-fire the detect `callback` with that result. That means the result might not be
-the first item in the original `arr` (in terms of order) that passes the test.
-
-If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
- The iterator is passed a `callback(truthValue)` which must be called with a
- boolean argument once it has completed. **Note: this callback does not take an error as its first argument.**
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `true`, or after all the `iterator` functions have finished. Result will be
- the first item in the array that passes the truth test (iterator) or the
- value `undefined` if none passed. **Note: this callback does not take an error as its first argument.**
-
-__Example__
-
-```js
-async.detect(['file1','file2','file3'], fs.exists, function(result){
- // result now equals the first file in the list that exists
-});
-```
-
----------------------------------------
-
-<a name="detectSeries" />
-### detectSeries(arr, iterator, [callback])
-
-The same as [`detect`](#detect), only the `iterator` is applied to each item in `arr`
-in series. This means the result is always the first in the original `arr` (in
-terms of array order) that passes the truth test.
-
-
----------------------------------------
-
-<a name="sortBy" />
-### sortBy(arr, iterator, [callback])
-
-Sorts a list by the results of running each `arr` value through an async `iterator`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, sortValue)` which must be called once it
- has completed with an error (which can be `null`) and a value to use as the sort
- criteria.
-* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished, or an error occurs. Results is the items from
- the original `arr` sorted by the values returned by the `iterator` calls.
-
-__Example__
-
-```js
-async.sortBy(['file1','file2','file3'], function(file, callback){
- fs.stat(file, function(err, stats){
- callback(err, stats.mtime);
- });
-}, function(err, results){
- // results is now the original array of files sorted by
- // modified date
-});
-```
-
-__Sort Order__
-
-By modifying the callback parameter the sorting order can be influenced:
-
-```js
-//ascending order
-async.sortBy([1,9,3,5], function(x, callback){
- callback(null, x);
-}, function(err,result){
- //result callback
-} );
-
-//descending order
-async.sortBy([1,9,3,5], function(x, callback){
- callback(null, x*-1); //<- x*-1 instead of x, turns the order around
-}, function(err,result){
- //result callback
-} );
-```
-
----------------------------------------
-
-<a name="some" />
-### some(arr, iterator, [callback])
-
-__Alias:__ `any`
-
-Returns `true` if at least one element in the `arr` satisfies an async test.
-_The callback for each iterator call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`. Once any iterator
-call returns `true`, the main `callback` is immediately called.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in the array
- in parallel. The iterator is passed a `callback(truthValue)`` which must be
- called with a boolean argument once it has completed.
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `true`, or after all the iterator functions have finished. Result will be
- either `true` or `false` depending on the values of the async tests.
-
- **Note: the callbacks do not take an error as their first argument.**
-__Example__
-
-```js
-async.some(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then at least one of the files exists
-});
-```
-
----------------------------------------
-
-<a name="every" />
-### every(arr, iterator, [callback])
-
-__Alias:__ `all`
-
-Returns `true` if every element in `arr` satisfies an async test.
-_The callback for each `iterator` call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in the array
- in parallel. The iterator is passed a `callback(truthValue)` which must be
- called with a boolean argument once it has completed.
-* `callback(result)` - *Optional* A callback which is called after all the `iterator`
- functions have finished. Result will be either `true` or `false` depending on
- the values of the async tests.
-
- **Note: the callbacks do not take an error as their first argument.**
-
-__Example__
-
-```js
-async.every(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then every file exists
-});
-```
-
----------------------------------------
-
-<a name="concat" />
-### concat(arr, iterator, [callback])
-
-Applies `iterator` to each item in `arr`, concatenating the results. Returns the
-concatenated list. The `iterator`s are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of `arr` passed to the `iterator` function.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, results)` which must be called once it
- has completed with an error (which can be `null`) and an array of results.
-* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished, or an error occurs. Results is an array containing
- the concatenated results of the `iterator` function.
-
-__Example__
-
-```js
-async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
- // files is now a list of filenames that exist in the 3 directories
-});
-```
-
----------------------------------------
-
-<a name="concatSeries" />
-### concatSeries(arr, iterator, [callback])
-
-Same as [`concat`](#concat), but executes in series instead of parallel.
-
-
-## Control Flow
-
-<a name="series" />
-### series(tasks, [callback])
-
-Run the functions in the `tasks` array in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run, and `callback` is immediately called with the value of the error.
-Otherwise, `callback` receives an array of results when `tasks` have completed.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function, and the results will be passed to the final `callback` as an object
-instead of an array. This can be a more readable way of handling results from
-[`series`](#series).
-
-**Note** that while many implementations preserve the order of object properties, the
-[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)
-explicitly states that
-
-> The mechanics and order of enumerating the properties is not specified.
-
-So if you rely on the order in which your series of functions are executed, and want
-this to work on all platforms, consider using an array.
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run, each function is passed
- a `callback(err, result)` it must call on completion with an error `err` (which can
- be `null`) and an optional `result` value.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the `task` callbacks.
-
-__Example__
-
-```js
-async.series([
- function(callback){
- // do some stuff ...
- callback(null, 'one');
- },
- function(callback){
- // do some more stuff ...
- callback(null, 'two');
- }
-],
-// optional callback
-function(err, results){
- // results is now equal to ['one', 'two']
-});
-
-
-// an example using an object instead of an array
-async.series({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equal to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-<a name="parallel" />
-### parallel(tasks, [callback])
-
-Run the `tasks` array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main `callback` is immediately called with the value of the error.
-Once the `tasks` have completed, the results are passed to the final `callback` as an
-array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final `callback` as an object
-instead of an array. This can be a more readable way of handling results from
-[`parallel`](#parallel).
-
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run. Each function is passed
- a `callback(err, result)` which it must call on completion with an error `err`
- (which can be `null`) and an optional `result` value.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.parallel([
- function(callback){
- setTimeout(function(){
- callback(null, 'one');
- }, 200);
- },
- function(callback){
- setTimeout(function(){
- callback(null, 'two');
- }, 100);
- }
-],
-// optional callback
-function(err, results){
- // the results array will equal ['one','two'] even though
- // the second function had a shorter timeout.
-});
-
-
-// an example using an object instead of an array
-async.parallel({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equals to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-<a name="parallelLimit" />
-### parallelLimit(tasks, limit, [callback])
-
-The same as [`parallel`](#parallel), only `tasks` are executed in parallel
-with a maximum of `limit` tasks executing at any time.
-
-Note that the `tasks` are not executed in batches, so there is no guarantee that
-the first `limit` tasks will complete before any others are started.
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run, each function is passed
- a `callback(err, result)` it must call on completion with an error `err` (which can
- be `null`) and an optional `result` value.
-* `limit` - The maximum number of `tasks` to run at any time.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the `task` callbacks.
-
----------------------------------------
-
-<a name="whilst" />
-### whilst(test, fn, callback)
-
-Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,
-or an error occurs.
-
-__Arguments__
-
-* `test()` - synchronous truth test to perform before each execution of `fn`.
-* `fn(callback)` - A function which is called each time `test` passes. The function is
- passed a `callback(err)`, which must be called once it has completed with an
- optional `err` argument.
-* `callback(err)` - A callback which is called after the test fails and repeated
- execution of `fn` has stopped.
-
-__Example__
-
-```js
-var count = 0;
-
-async.whilst(
- function () { return count < 5; },
- function (callback) {
- count++;
- setTimeout(callback, 1000);
- },
- function (err) {
- // 5 seconds have passed
- }
-);
-```
-
----------------------------------------
-
-<a name="doWhilst" />
-### doWhilst(fn, test, callback)
-
-The post-check version of [`whilst`](#whilst). To reflect the difference in
-the order of operations, the arguments `test` and `fn` are switched.
-
-`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
-
----------------------------------------
-
-<a name="until" />
-### until(test, fn, callback)
-
-Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,
-or an error occurs.
-
-The inverse of [`whilst`](#whilst).
-
----------------------------------------
-
-<a name="doUntil" />
-### doUntil(fn, test, callback)
-
-Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.
-
----------------------------------------
-
-<a name="forever" />
-### forever(fn, [errback])
-
-Calls the asynchronous function `fn` with a callback parameter that allows it to
-call itself again, in series, indefinitely.
-
-If an error is passed to the callback then `errback` is called with the
-error, and execution stops, otherwise it will never be called.
-
-```js
-async.forever(
- function(next) {
- // next is suitable for passing to things that need a callback(err [, whatever]);
- // it will result in this function being called again.
- },
- function(err) {
- // if next is called with a value in its first parameter, it will appear
- // in here as 'err', and execution will stop.
- }
-);
-```
-
----------------------------------------
-
-<a name="waterfall" />
-### waterfall(tasks, [callback])
-
-Runs the `tasks` array of functions in series, each passing their results to the next in
-the array. However, if any of the `tasks` pass an error to their own callback, the
-next function is not executed, and the main `callback` is immediately called with
-the error.
-
-__Arguments__
-
-* `tasks` - An array of functions to run, each function is passed a
- `callback(err, result1, result2, ...)` it must call on completion. The first
- argument is an error (which can be `null`) and any further arguments will be
- passed as arguments in order to the next task.
-* `callback(err, [results])` - An optional callback to run once all the functions
- have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-```js
-async.waterfall([
- function(callback) {
- callback(null, 'one', 'two');
- },
- function(arg1, arg2, callback) {
- // arg1 now equals 'one' and arg2 now equals 'two'
- callback(null, 'three');
- },
- function(arg1, callback) {
- // arg1 now equals 'three'
- callback(null, 'done');
- }
-], function (err, result) {
- // result now equals 'done'
-});
-```
-
----------------------------------------
-<a name="compose" />
-### compose(fn1, fn2...)
-
-Creates a function which is a composition of the passed asynchronous
-functions. Each function consumes the return value of the function that
-follows. Composing functions `f()`, `g()`, and `h()` would produce the result of
-`f(g(h()))`, only this version uses callbacks to obtain the return values.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* `functions...` - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-function add1(n, callback) {
- setTimeout(function () {
- callback(null, n + 1);
- }, 10);
-}
-
-function mul3(n, callback) {
- setTimeout(function () {
- callback(null, n * 3);
- }, 10);
-}
-
-var add1mul3 = async.compose(mul3, add1);
-
-add1mul3(4, function (err, result) {
- // result now equals 15
-});
-```
-
----------------------------------------
-<a name="seq" />
-### seq(fn1, fn2...)
-
-Version of the compose function that is more natural to read.
-Each function consumes the return value of the previous function.
-It is the equivalent of [`compose`](#compose) with the arguments reversed.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* functions... - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-// Requires lodash (or underscore), express3 and dresende's orm2.
-// Part of an app, that fetches cats of the logged user.
-// This example uses `seq` function to avoid overnesting and error
-// handling clutter.
-app.get('/cats', function(request, response) {
- var User = request.models.User;
- async.seq(
- _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))
- function(user, fn) {
- user.getCats(fn); // 'getCats' has signature (callback(err, data))
- }
- )(req.session.user_id, function (err, cats) {
- if (err) {
- console.error(err);
- response.json({ status: 'error', message: err.message });
- } else {
- response.json({ status: 'ok', message: 'Cats found', data: cats });
- }
- });
-});
-```
-
----------------------------------------
-<a name="applyEach" />
-### applyEach(fns, args..., callback)
-
-Applies the provided arguments to each function in the array, calling
-`callback` after all functions have completed. If you only provide the first
-argument, then it will return a function which lets you pass in the
-arguments as if it were a single function call.
-
-__Arguments__
-
-* `fns` - the asynchronous functions to all call with the same arguments
-* `args...` - any number of separate arguments to pass to the function
-* `callback` - the final argument should be the callback, called when all
- functions have completed processing
-
-
-__Example__
-
-```js
-async.applyEach([enableSearch, updateSchema], 'bucket', callback);
-
-// partial application example:
-async.each(
- buckets,
- async.applyEach([enableSearch, updateSchema]),
- callback
-);
-```
-
----------------------------------------
-
-<a name="applyEachSeries" />
-### applyEachSeries(arr, args..., callback)
-
-The same as [`applyEach`](#applyEach) only the functions are applied in series.
-
----------------------------------------
-
-<a name="queue" />
-### queue(worker, [concurrency])
-
-Creates a `queue` object with the specified `concurrency`. Tasks added to the
-`queue` are processed in parallel (up to the `concurrency` limit). If all
-`worker`s are in progress, the task is queued until one becomes available.
-Once a `worker` completes a `task`, that `task`'s callback is called.
-
-__Arguments__
-
-* `worker(task, callback)` - An asynchronous function for processing a queued
- task, which must call its `callback(err)` argument when finished, with an
- optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`.
-* `concurrency` - An `integer` for determining how many `worker` functions should be
- run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown.
-
-__Queue objects__
-
-The `queue` object returned by this function has the following properties and
-methods:
-
-* `length()` - a function returning the number of items waiting to be processed.
-* `started` - a function returning whether or not any items have been pushed and processed by the queue
-* `running()` - a function returning the number of items currently being processed.
-* `idle()` - a function returning false if there are items waiting or being processed, or true if not.
-* `concurrency` - an integer for determining how many `worker` functions should be
- run in parallel. This property can be changed after a `queue` is created to
- alter the concurrency on-the-fly.
-* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once
- the `worker` has finished processing the task. Instead of a single task, a `tasks` array
- can be submitted. The respective callback is used for every task in the list.
-* `unshift(task, [callback])` - add a new task to the front of the `queue`.
-* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit,
- and further tasks will be queued.
-* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.
-* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.
-* `paused` - a boolean for determining whether the queue is in a paused state
-* `pause()` - a function that pauses the processing of tasks until `resume()` is called.
-* `resume()` - a function that resumes the processing of queued tasks when the queue is paused.
-* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle.
-
-__Example__
-
-```js
-// create a queue object with concurrency 2
-
-var q = async.queue(function (task, callback) {
- console.log('hello ' + task.name);
- callback();
-}, 2);
-
-
-// assign a callback
-q.drain = function() {
- console.log('all items have been processed');
-}
-
-// add some items to the queue
-
-q.push({name: 'foo'}, function (err) {
- console.log('finished processing foo');
-});
-q.push({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-
-// add some items to the queue (batch-wise)
-
-q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
- console.log('finished processing item');
-});
-
-// add some items to the front of the queue
-
-q.unshift({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-```
-
-
----------------------------------------
-
-<a name="priorityQueue" />
-### priorityQueue(worker, concurrency)
-
-The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects:
-
-* `push(task, priority, [callback])` - `priority` should be a number. If an array of
- `tasks` is given, all tasks will be assigned the same priority.
-* The `unshift` method was removed.
-
----------------------------------------
-
-<a name="cargo" />
-### cargo(worker, [payload])
-
-Creates a `cargo` object with the specified payload. Tasks added to the
-cargo will be processed altogether (up to the `payload` limit). If the
-`worker` is in progress, the task is queued until it becomes available. Once
-the `worker` has completed some tasks, each callback of those tasks is called.
-Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work.
-
-While [queue](#queue) passes only one task to one of a group of workers
-at a time, cargo passes an array of tasks to a single worker, repeating
-when the worker is finished.
-
-__Arguments__
-
-* `worker(tasks, callback)` - An asynchronous function for processing an array of
- queued tasks, which must call its `callback(err)` argument when finished, with
- an optional `err` argument.
-* `payload` - An optional `integer` for determining how many tasks should be
- processed per round; if omitted, the default is unlimited.
-
-__Cargo objects__
-
-The `cargo` object returned by this function has the following properties and
-methods:
-
-* `length()` - A function returning the number of items waiting to be processed.
-* `payload` - An `integer` for determining how many tasks should be
- process per round. This property can be changed after a `cargo` is created to
- alter the payload on-the-fly.
-* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called
- once the `worker` has finished processing the task. Instead of a single task, an array of `tasks`
- can be submitted. The respective callback is used for every task in the list.
-* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.
-* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.
-* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.
-* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue)
-
-__Example__
-
-```js
-// create a cargo object with payload 2
-
-var cargo = async.cargo(function (tasks, callback) {
- for(var i=0; i<tasks.length; i++){
- console.log('hello ' + tasks[i].name);
- }
- callback();
-}, 2);
-
-
-// add some items
-
-cargo.push({name: 'foo'}, function (err) {
- console.log('finished processing foo');
-});
-cargo.push({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-cargo.push({name: 'baz'}, function (err) {
- console.log('finished processing baz');
-});
-```
-
----------------------------------------
-
-<a name="auto" />
-### auto(tasks, [callback])
-
-Determines the best order for running the functions in `tasks`, based on their
-requirements. Each function can optionally depend on other functions being completed
-first, and each function is run as soon as its requirements are satisfied.
-
-If any of the functions pass an error to their callback, it will not
-complete (so any other functions depending on it will not run), and the main
-`callback` is immediately called with the error. Functions also receive an
-object containing the results of functions which have completed so far.
-
-Note, all functions are called with a `results` object as a second argument,
-so it is unsafe to pass functions in the `tasks` object which cannot handle the
-extra argument.
-
-For example, this snippet of code:
-
-```js
-async.auto({
- readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
-}, callback);
-```
-
-will have the effect of calling `readFile` with the results object as the last
-argument, which will fail:
-
-```js
-fs.readFile('data.txt', 'utf-8', cb, {});
-```
-
-Instead, wrap the call to `readFile` in a function which does not forward the
-`results` object:
-
-```js
-async.auto({
- readData: function(cb, results){
- fs.readFile('data.txt', 'utf-8', cb);
- }
-}, callback);
-```
-
-__Arguments__
-
-* `tasks` - An object. Each of its properties is either a function or an array of
- requirements, with the function itself the last item in the array. The object's key
- of a property serves as the name of the task defined by that property,
- i.e. can be used when specifying requirements for other tasks.
- The function receives two arguments: (1) a `callback(err, result)` which must be
- called when finished, passing an `error` (which can be `null`) and the result of
- the function's execution, and (2) a `results` object, containing the results of
- the previously executed functions.
-* `callback(err, results)` - An optional callback which is called when all the
- tasks have been completed. It receives the `err` argument if any `tasks`
- pass an error to their callback. Results are always returned; however, if
- an error occurs, no further `tasks` will be performed, and the results
- object will only contain partial results.
-
-
-__Example__
-
-```js
-async.auto({
- get_data: function(callback){
- console.log('in get_data');
- // async code to get some data
- callback(null, 'data', 'converted to array');
- },
- make_folder: function(callback){
- console.log('in make_folder');
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- callback(null, 'folder');
- },
- write_file: ['get_data', 'make_folder', function(callback, results){
- console.log('in write_file', JSON.stringify(results));
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- callback(null, 'filename');
- }],
- email_link: ['write_file', function(callback, results){
- console.log('in email_link', JSON.stringify(results));
- // once the file is written let's email a link to it...
- // results.write_file contains the filename returned by write_file.
- callback(null, {'file':results.write_file, 'email':'user@example.com'});
- }]
-}, function(err, results) {
- console.log('err = ', err);
- console.log('results = ', results);
-});
-```
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-```js
-async.parallel([
- function(callback){
- console.log('in get_data');
- // async code to get some data
- callback(null, 'data', 'converted to array');
- },
- function(callback){
- console.log('in make_folder');
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- callback(null, 'folder');
- }
-],
-function(err, results){
- async.series([
- function(callback){
- console.log('in write_file', JSON.stringify(results));
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- results.push('filename');
- callback(null);
- },
- function(callback){
- console.log('in email_link', JSON.stringify(results));
- // once the file is written let's email a link to it...
- callback(null, {'file':results.pop(), 'email':'user@example.com'});
- }
- ]);
-});
-```
-
-For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding
-new tasks much easier (and the code more readable).
-
-
----------------------------------------
-
-<a name="retry" />
-### retry([times = 5], task, [callback])
-
-Attempts to get a successful response from `task` no more than `times` times before
-returning an error. If the task is successful, the `callback` will be passed the result
-of the successful task. If all attempts fail, the callback will be passed the error and
-result (if any) of the final attempt.
-
-__Arguments__
-
-* `times` - An integer indicating how many times to attempt the `task` before giving up. Defaults to 5.
-* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)`
- which must be called when finished, passing `err` (which can be `null`) and the `result` of
- the function's execution, and (2) a `results` object, containing the results of
- the previously executed functions (if nested inside another control flow).
-* `callback(err, results)` - An optional callback which is called when the
- task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`.
-
-The [`retry`](#retry) function can be used as a stand-alone control flow by passing a
-callback, as shown below:
-
-```js
-async.retry(3, apiMethod, function(err, result) {
- // do something with the result
-});
-```
-
-It can also be embeded within other control flow functions to retry individual methods
-that are not as reliable, like this:
-
-```js
-async.auto({
- users: api.getUsers.bind(api),
- payments: async.retry(3, api.getPayments.bind(api))
-}, function(err, results) {
- // do something with the results
-});
-```
-
-
----------------------------------------
-
-<a name="iterator" />
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the `tasks` array,
-returning a continuation to call the next one after that. It's also possible to
-“peek” at the next iterator with `iterator.next()`.
-
-This function is used internally by the `async` module, but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* `tasks` - An array of functions to run.
-
-__Example__
-
-```js
-var iterator = async.iterator([
- function(){ sys.p('one'); },
- function(){ sys.p('two'); },
- function(){ sys.p('three'); }
-]);
-
-node> var iterator2 = iterator();
-'one'
-node> var iterator3 = iterator2();
-'two'
-node> iterator3();
-'three'
-node> var nextfn = iterator2.next();
-node> nextfn();
-'three'
-```
-
----------------------------------------
-
-<a name="apply" />
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied.
-
-Useful as a shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to automatically apply when the
- continuation is called.
-
-__Example__
-
-```js
-// using apply
-
-async.parallel([
- async.apply(fs.writeFile, 'testfile1', 'test1'),
- async.apply(fs.writeFile, 'testfile2', 'test2'),
-]);
-
-
-// the same process without using apply
-
-async.parallel([
- function(callback){
- fs.writeFile('testfile1', 'test1', callback);
- },
- function(callback){
- fs.writeFile('testfile2', 'test2', callback);
- }
-]);
-```
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-```js
-node> var fn = async.apply(sys.puts, 'one');
-node> fn('two', 'three');
-one
-two
-three
-```
-
----------------------------------------
-
-<a name="nextTick" />
-### nextTick(callback), setImmediate(callback)
-
-Calls `callback` on a later loop around the event loop. In Node.js this just
-calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`
-if available, otherwise `setTimeout(callback, 0)`, which means other higher priority
-events may precede the execution of `callback`.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* `callback` - The function to call on a later loop around the event loop.
-
-__Example__
-
-```js
-var call_order = [];
-async.nextTick(function(){
- call_order.push('two');
- // call_order now equals ['one','two']
-});
-call_order.push('one')
-```
-
-<a name="times" />
-### times(n, iterator, [callback])
-
-Calls the `iterator` function `n` times, and accumulates results in the same manner
-you would use with [`map`](#map).
-
-__Arguments__
-
-* `n` - The number of times to run the function.
-* `iterator` - The function to call `n` times.
-* `callback` - see [`map`](#map)
-
-__Example__
-
-```js
-// Pretend this is some complicated async factory
-var createUser = function(id, callback) {
- callback(null, {
- id: 'user' + id
- })
-}
-// generate 5 users
-async.times(5, function(n, next){
- createUser(n, function(err, user) {
- next(err, user)
- })
-}, function(err, users) {
- // we should now have 5 users
-});
-```
-
-<a name="timesSeries" />
-### timesSeries(n, iterator, [callback])
-
-The same as [`times`](#times), only the iterator is applied to each item in `arr` in
-series. The next `iterator` is only called once the current one has completed.
-The results array will be in the same order as the original.
-
-<a name="timesLimit" />
-### timesLimit(n, limit, iterator, [callback])
-
-The same as [`times`](#times), except a maximum of `limit` iterators are run at a given time, similar to [`mapLimit`](#mapLimit).
-
-
-## Utils
-
-<a name="memoize" />
-### memoize(fn, [hasher])
-
-Caches the results of an `async` function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function.
-
-The cache of results is exposed as the `memo` property of the function returned
-by `memoize`.
-
-__Arguments__
-
-* `fn` - The function to proxy and cache results from.
-* `hasher` - An optional function for generating a custom hash for storing
- results. It has all the arguments applied to it apart from the callback, and
- must be synchronous.
-
-__Example__
-
-```js
-var slow_fn = function (name, callback) {
- // do something
- callback(null, result);
-};
-var fn = async.memoize(slow_fn);
-
-// fn can now be used as if it were slow_fn
-fn('some name', function () {
- // callback
-});
-```
-
-<a name="unmemoize" />
-### unmemoize(fn)
-
-Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized
-form. Handy for testing.
-
-__Arguments__
-
-* `fn` - the memoized function
-
----------------------------------------
-
-<a name="ensureAsync" />
-### ensureAsync(fn)
-
-Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained.
-
-__Arguments__
-
-* `fn` - an async function, one that expects a node-style callback as its last argument
-
-Returns a wrapped function with the exact same call signature as the function passed in.
-
-__Example__
-
-```js
-function sometimesAsync(arg, callback) {
- if (cache[arg]) {
- return callback(null, cache[arg]); // this would be synchronous!!
- } else {
- doSomeIO(arg, callback); // this IO would be asynchronous
- }
-}
-
-// this has a risk of stack overflows if many results are cached in a row
-async.mapSeries(args, sometimesAsync, done);
-
-// this will defer sometimesAsync's callback if necessary,
-// preventing stack overflows
-async.mapSeries(args, async.ensureAsync(sometimesAsync), done);
-
-```
-
----------------------------------------
-
-<a name="log" />
-### log(function, arguments)
-
-Logs the result of an `async` function to the `console`. Only works in Node.js or
-in browsers that support `console.log` and `console.error` (such as FF and Chrome).
-If multiple arguments are returned from the async function, `console.log` is
-called on each argument in order.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, 'hello ' + name);
- }, 1000);
-};
-```
-```js
-node> async.log(hello, 'world');
-'hello world'
-```
-
----------------------------------------
-
-<a name="dir" />
-### dir(function, arguments)
-
-Logs the result of an `async` function to the `console` using `console.dir` to
-display the properties of the resulting object. Only works in Node.js or
-in browsers that support `console.dir` and `console.error` (such as FF and Chrome).
-If multiple arguments are returned from the async function, `console.dir` is
-called on each argument in order.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, {hello: name});
- }, 1000);
-};
-```
-```js
-node> async.dir(hello, 'world');
-{hello: 'world'}
-```
-
----------------------------------------
-
-<a name="noConflict" />
-### noConflict()
-
-Changes the value of `async` back to its original value, returning a reference to the
-`async` object.
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/bower.json b/node_modules/request/node_modules/form-data/node_modules/async/bower.json
deleted file mode 100644
index 60b78284a..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/bower.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "version": "1.2.1",
- "main": "lib/async.js",
- "keywords": [
- "async",
- "callback",
- "utility",
- "module"
- ],
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/caolan/async.git"
- },
- "devDependencies": {
- "benchmark": "bestiejs/benchmark.js",
- "coveralls": "^2.11.2",
- "jshint": "~2.7.0",
- "lodash": ">=2.4.1",
- "mkdirp": "~0.5.1",
- "nodeunit": ">0.0.0",
- "nyc": "^2.1.0",
- "uglify-js": "1.2.x",
- "yargs": "~3.9.1"
- },
- "moduleType": [
- "amd",
- "globals",
- "node"
- ],
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ],
- "authors": [
- "Caolan McMahon"
- ]
-} \ No newline at end of file
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/component.json b/node_modules/request/node_modules/form-data/node_modules/async/component.json
deleted file mode 100644
index 0684c869b..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/component.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "version": "1.2.1",
- "keywords": [
- "async",
- "callback",
- "utility",
- "module"
- ],
- "license": "MIT",
- "main": "lib/async.js",
- "repository": "caolan/async",
- "scripts": [
- "lib/async.js"
- ]
-} \ No newline at end of file
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/base.css b/node_modules/request/node_modules/form-data/node_modules/async/coverage/base.css
deleted file mode 100644
index 7fb882722..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/base.css
+++ /dev/null
@@ -1,182 +0,0 @@
-body, html {
- margin:0; padding: 0;
-}
-body {
- font-family: Helvetica Neue, Helvetica,Arial;
- font-size: 10pt;
-}
-div.header, div.footer {
- background: #eee;
- padding: 1em;
-}
-div.header {
- z-index: 100;
- position: fixed;
- top: 0;
- border-bottom: 1px solid #666;
- width: 100%;
-}
-div.footer {
- border-top: 1px solid #666;
-}
-div.body {
- margin-top: 10em;
-}
-div.meta {
- font-size: 90%;
- text-align: center;
-}
-h1, h2, h3 {
- font-weight: normal;
-}
-h1 {
- font-size: 12pt;
-}
-h2 {
- font-size: 10pt;
-}
-pre {
- font-family: Consolas, Menlo, Monaco, monospace;
- margin: 0;
- padding: 0;
- line-height: 14px;
- font-size: 14px;
- -moz-tab-size: 2;
- -o-tab-size: 2;
- tab-size: 2;
-}
-
-div.path { font-size: 110%; }
-div.path a:link, div.path a:visited { color: #000; }
-table.coverage { border-collapse: collapse; margin:0; padding: 0 }
-
-table.coverage td {
- margin: 0;
- padding: 0;
- color: #111;
- vertical-align: top;
-}
-table.coverage td.line-count {
- width: 50px;
- text-align: right;
- padding-right: 5px;
-}
-table.coverage td.line-coverage {
- color: #777 !important;
- text-align: right;
- border-left: 1px solid #666;
- border-right: 1px solid #666;
-}
-
-table.coverage td.text {
-}
-
-table.coverage td span.cline-any {
- display: inline-block;
- padding: 0 5px;
- width: 40px;
-}
-table.coverage td span.cline-neutral {
- background: #eee;
-}
-table.coverage td span.cline-yes {
- background: #b5d592;
- color: #999;
-}
-table.coverage td span.cline-no {
- background: #fc8c84;
-}
-
-.cstat-yes { color: #111; }
-.cstat-no { background: #fc8c84; color: #111; }
-.fstat-no { background: #ffc520; color: #111 !important; }
-.cbranch-no { background: yellow !important; color: #111; }
-
-.cstat-skip { background: #ddd; color: #111; }
-.fstat-skip { background: #ddd; color: #111 !important; }
-.cbranch-skip { background: #ddd !important; color: #111; }
-
-.missing-if-branch {
- display: inline-block;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: black;
- color: yellow;
-}
-
-.skip-if-branch {
- display: none;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: #ccc;
- color: white;
-}
-
-.missing-if-branch .typ, .skip-if-branch .typ {
- color: inherit !important;
-}
-
-.entity, .metric { font-weight: bold; }
-.metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
-.metric small { font-size: 80%; font-weight: normal; color: #666; }
-
-div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
-div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
-div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
-div.coverage-summary th.file { border-right: none !important; }
-div.coverage-summary th.pic { border-left: none !important; text-align: right; }
-div.coverage-summary th.pct { border-right: none !important; }
-div.coverage-summary th.abs { border-left: none !important; text-align: right; }
-div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
-div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
-div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
-div.coverage-summary td.pic { min-width: 120px !important; }
-div.coverage-summary a:link { text-decoration: none; color: #000; }
-div.coverage-summary a:visited { text-decoration: none; color: #333; }
-div.coverage-summary a:hover { text-decoration: underline; }
-div.coverage-summary tfoot td { border-top: 1px solid #666; }
-
-div.coverage-summary .sorter {
- height: 10px;
- width: 7px;
- display: inline-block;
- margin-left: 0.5em;
- background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
-}
-div.coverage-summary .sorted .sorter {
- background-position: 0 -20px;
-}
-div.coverage-summary .sorted-desc .sorter {
- background-position: 0 -10px;
-}
-
-.high { background: #b5d592 !important; }
-.medium { background: #ffe87c !important; }
-.low { background: #fc8c84 !important; }
-
-span.cover-fill, span.cover-empty {
- display:inline-block;
- border:1px solid #444;
- background: white;
- height: 12px;
-}
-span.cover-fill {
- background: #ccc;
- border-right: 1px solid #444;
-}
-span.cover-empty {
- background: white;
- border-left: none;
-}
-span.cover-full {
- border-right: none !important;
-}
-pre.prettyprint {
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
-}
-.com { color: #999 !important; }
-.ignore-none { color: #999; font-weight: normal; } \ No newline at end of file
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/index.html b/node_modules/request/node_modules/form-data/node_modules/async/coverage/index.html
deleted file mode 100644
index 0a8d4b735..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/index.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for All files</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="prettify.css">
- <link rel="stylesheet" href="base.css">
- <style type='text/css'>
- div.coverage-summary .sorter {
- background-image: url(sort-arrow-sprite.png);
- }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">All files</span></h1>
- <h2>
- Statements: <span class="metric">94.88% <small>(611 / 644)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Branches: <span class="metric">86.91% <small>(239 / 275)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Functions: <span class="metric">95.41% <small>(187 / 196)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Lines: <span class="metric">94.85% <small>(608 / 641)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
- </h2>
- <div class="path"></div>
-</div>
-<div class="body">
-<div class="coverage-summary">
-<table>
-<thead>
-<tr>
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
-</tr>
-</thead>
-<tbody><tr>
- <td class="file high" data-value="lib/"><a href="lib/index.html">lib/</a></td>
- <td data-value="94.88" class="pic high"><span class="cover-fill" style="width: 94px;"></span><span class="cover-empty" style="width:6px;"></span></td>
- <td data-value="94.88" class="pct high">94.88%</td>
- <td data-value="644" class="abs high">(611&nbsp;/&nbsp;644)</td>
- <td data-value="86.91" class="pct high">86.91%</td>
- <td data-value="275" class="abs high">(239&nbsp;/&nbsp;275)</td>
- <td data-value="95.41" class="pct high">95.41%</td>
- <td data-value="196" class="abs high">(187&nbsp;/&nbsp;196)</td>
- <td data-value="94.85" class="pct high">94.85%</td>
- <td data-value="641" class="abs high">(608&nbsp;/&nbsp;641)</td>
- </tr>
-
-</tbody>
-</table>
-</div>
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jun 01 2015 15:22:05 GMT-0700 (PDT)</div>
-</div>
-<script src="prettify.js"></script>
-<script>
-window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
-};
-</script>
-<script src="sorter.js"></script>
-</body>
-</html>
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/base.css b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/base.css
deleted file mode 100644
index 7fb882722..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/base.css
+++ /dev/null
@@ -1,182 +0,0 @@
-body, html {
- margin:0; padding: 0;
-}
-body {
- font-family: Helvetica Neue, Helvetica,Arial;
- font-size: 10pt;
-}
-div.header, div.footer {
- background: #eee;
- padding: 1em;
-}
-div.header {
- z-index: 100;
- position: fixed;
- top: 0;
- border-bottom: 1px solid #666;
- width: 100%;
-}
-div.footer {
- border-top: 1px solid #666;
-}
-div.body {
- margin-top: 10em;
-}
-div.meta {
- font-size: 90%;
- text-align: center;
-}
-h1, h2, h3 {
- font-weight: normal;
-}
-h1 {
- font-size: 12pt;
-}
-h2 {
- font-size: 10pt;
-}
-pre {
- font-family: Consolas, Menlo, Monaco, monospace;
- margin: 0;
- padding: 0;
- line-height: 14px;
- font-size: 14px;
- -moz-tab-size: 2;
- -o-tab-size: 2;
- tab-size: 2;
-}
-
-div.path { font-size: 110%; }
-div.path a:link, div.path a:visited { color: #000; }
-table.coverage { border-collapse: collapse; margin:0; padding: 0 }
-
-table.coverage td {
- margin: 0;
- padding: 0;
- color: #111;
- vertical-align: top;
-}
-table.coverage td.line-count {
- width: 50px;
- text-align: right;
- padding-right: 5px;
-}
-table.coverage td.line-coverage {
- color: #777 !important;
- text-align: right;
- border-left: 1px solid #666;
- border-right: 1px solid #666;
-}
-
-table.coverage td.text {
-}
-
-table.coverage td span.cline-any {
- display: inline-block;
- padding: 0 5px;
- width: 40px;
-}
-table.coverage td span.cline-neutral {
- background: #eee;
-}
-table.coverage td span.cline-yes {
- background: #b5d592;
- color: #999;
-}
-table.coverage td span.cline-no {
- background: #fc8c84;
-}
-
-.cstat-yes { color: #111; }
-.cstat-no { background: #fc8c84; color: #111; }
-.fstat-no { background: #ffc520; color: #111 !important; }
-.cbranch-no { background: yellow !important; color: #111; }
-
-.cstat-skip { background: #ddd; color: #111; }
-.fstat-skip { background: #ddd; color: #111 !important; }
-.cbranch-skip { background: #ddd !important; color: #111; }
-
-.missing-if-branch {
- display: inline-block;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: black;
- color: yellow;
-}
-
-.skip-if-branch {
- display: none;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: #ccc;
- color: white;
-}
-
-.missing-if-branch .typ, .skip-if-branch .typ {
- color: inherit !important;
-}
-
-.entity, .metric { font-weight: bold; }
-.metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
-.metric small { font-size: 80%; font-weight: normal; color: #666; }
-
-div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
-div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
-div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
-div.coverage-summary th.file { border-right: none !important; }
-div.coverage-summary th.pic { border-left: none !important; text-align: right; }
-div.coverage-summary th.pct { border-right: none !important; }
-div.coverage-summary th.abs { border-left: none !important; text-align: right; }
-div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
-div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
-div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
-div.coverage-summary td.pic { min-width: 120px !important; }
-div.coverage-summary a:link { text-decoration: none; color: #000; }
-div.coverage-summary a:visited { text-decoration: none; color: #333; }
-div.coverage-summary a:hover { text-decoration: underline; }
-div.coverage-summary tfoot td { border-top: 1px solid #666; }
-
-div.coverage-summary .sorter {
- height: 10px;
- width: 7px;
- display: inline-block;
- margin-left: 0.5em;
- background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
-}
-div.coverage-summary .sorted .sorter {
- background-position: 0 -20px;
-}
-div.coverage-summary .sorted-desc .sorter {
- background-position: 0 -10px;
-}
-
-.high { background: #b5d592 !important; }
-.medium { background: #ffe87c !important; }
-.low { background: #fc8c84 !important; }
-
-span.cover-fill, span.cover-empty {
- display:inline-block;
- border:1px solid #444;
- background: white;
- height: 12px;
-}
-span.cover-fill {
- background: #ccc;
- border-right: 1px solid #444;
-}
-span.cover-empty {
- background: white;
- border-left: none;
-}
-span.cover-full {
- border-right: none !important;
-}
-pre.prettyprint {
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
-}
-.com { color: #999 !important; }
-.ignore-none { color: #999; font-weight: normal; } \ No newline at end of file
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/index.html b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/index.html
deleted file mode 100644
index 6660bfa56..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/index.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for All files</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="prettify.css">
- <link rel="stylesheet" href="base.css">
- <style type='text/css'>
- div.coverage-summary .sorter {
- background-image: url(sort-arrow-sprite.png);
- }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">All files</span></h1>
- <h2>
- Statements: <span class="metric">94.13% <small>(673 / 715)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Branches: <span class="metric">85% <small>(272 / 320)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Functions: <span class="metric">94.2% <small>(195 / 207)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Lines: <span class="metric">94.36% <small>(669 / 709)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
- </h2>
- <div class="path"></div>
-</div>
-<div class="body">
-<div class="coverage-summary">
-<table>
-<thead>
-<tr>
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
-</tr>
-</thead>
-<tbody><tr>
- <td class="file high" data-value="lib/"><a href="lib/index.html">lib/</a></td>
- <td data-value="94.13" class="pic high"><span class="cover-fill" style="width: 94px;"></span><span class="cover-empty" style="width:6px;"></span></td>
- <td data-value="94.13" class="pct high">94.13%</td>
- <td data-value="715" class="abs high">(673&nbsp;/&nbsp;715)</td>
- <td data-value="85" class="pct high">85%</td>
- <td data-value="320" class="abs high">(272&nbsp;/&nbsp;320)</td>
- <td data-value="94.2" class="pct high">94.2%</td>
- <td data-value="207" class="abs high">(195&nbsp;/&nbsp;207)</td>
- <td data-value="94.36" class="pct high">94.36%</td>
- <td data-value="709" class="abs high">(669&nbsp;/&nbsp;709)</td>
- </tr>
-
-</tbody>
-</table>
-</div>
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun May 24 2015 15:04:25 GMT-0700 (PDT)</div>
-</div>
-<script src="prettify.js"></script>
-<script>
-window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
-};
-</script>
-<script src="sorter.js"></script>
-</body>
-</html>
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/async.js.html b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/async.js.html
deleted file mode 100644
index 951e4c247..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/async.js.html
+++ /dev/null
@@ -1,3900 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for lib/async.js</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="../prettify.css">
- <link rel="stylesheet" href="../base.css">
- <style type='text/css'>
- div.coverage-summary .sorter {
- background-image: url(../sort-arrow-sprite.png);
- }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">lib/async.js</span></h1>
- <h2>
- Statements: <span class="metric">94.13% <small>(673 / 715)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Branches: <span class="metric">85% <small>(272 / 320)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Functions: <span class="metric">94.2% <small>(195 / 207)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Lines: <span class="metric">94.36% <small>(669 / 709)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
- </h2>
- <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">lib/</a> &#187; async.js</div>
-</div>
-<div class="body">
-<pre><table class="coverage">
-<tr><td class="line-count">1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919
-920
-921
-922
-923
-924
-925
-926
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936
-937
-938
-939
-940
-941
-942
-943
-944
-945
-946
-947
-948
-949
-950
-951
-952
-953
-954
-955
-956
-957
-958
-959
-960
-961
-962
-963
-964
-965
-966
-967
-968
-969
-970
-971
-972
-973
-974
-975
-976
-977
-978
-979
-980
-981
-982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
-996
-997
-998
-999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178
-1179
-1180
-1181
-1182
-1183
-1184
-1185
-1186
-1187
-1188
-1189
-1190
-1191
-1192
-1193
-1194
-1195
-1196
-1197
-1198
-1199
-1200
-1201
-1202
-1203
-1204
-1205
-1206
-1207
-1208
-1209
-1210
-1211
-1212
-1213
-1214
-1215
-1216
-1217
-1218
-1219
-1220
-1221
-1222
-1223
-1224
-1225
-1226
-1227
-1228
-1229
-1230
-1231
-1232
-1233
-1234
-1235
-1236
-1237
-1238
-1239
-1240
-1241
-1242
-1243
-1244
-1245
-1246
-1247
-1248
-1249
-1250
-1251
-1252
-1253
-1254
-1255
-1256
-1257
-1258
-1259
-1260
-1261
-1262
-1263
-1264
-1265
-1266
-1267
-1268
-1269
-1270
-1271
-1272
-1273
-1274
-1275
-1276
-1277
-1278
-1279
-1280
-1281
-1282
-1283
-1284
-1285
-1286</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">162</span>
-<span class="cline-any cline-yes">162</span>
-<span class="cline-any cline-yes">162</span>
-<span class="cline-any cline-yes">158</span>
-<span class="cline-any cline-yes">158</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">249</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">249</span>
-<span class="cline-any cline-yes">402</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-yes">222</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-yes">148</span>
-<span class="cline-any cline-yes">148</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-yes">360</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">237</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">219</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">37</span>
-<span class="cline-any cline-yes">37</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">99</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">95</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">81</span>
-<span class="cline-any cline-yes">81</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">35</span>
-<span class="cline-any cline-yes">35</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">33</span>
-<span class="cline-any cline-yes">33</span>
-<span class="cline-any cline-yes">79</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">66</span>
-<span class="cline-any cline-yes">66</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">46</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">33</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-yes">77</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">77</span>
-<span class="cline-any cline-yes">81</span>
-<span class="cline-any cline-yes">81</span>
-<span class="cline-any cline-yes">81</span>
-<span class="cline-any cline-yes">77</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">71</span>
-<span class="cline-any cline-yes">71</span>
-<span class="cline-any cline-yes">71</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">60</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">40</span>
-<span class="cline-any cline-yes">142</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">40</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">39</span>
-<span class="cline-any cline-yes">39</span>
-<span class="cline-any cline-yes">99</span>
-<span class="cline-any cline-yes">97</span>
-<span class="cline-any cline-yes">97</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">39</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">47</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">28</span>
-<span class="cline-any cline-yes">28</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">28</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">23</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">38</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">38</span>
-<span class="cline-any cline-yes">46</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">38</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">39</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">43</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">48</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">37</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">132</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">31</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">37</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">41</span>
-<span class="cline-any cline-yes">40</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">41</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">41</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">62</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-yes">33</span>
-<span class="cline-any cline-yes">33</span>
-<span class="cline-any cline-yes">33</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">51</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
- * async
- * https://github.com/caolan/async
- *
- * Copyright 2010-2014 Caolan McMahon
- * Released under the MIT license
- */
-(function () {
-&nbsp;
- var async = {};
- var noop = function () {};
-&nbsp;
- // global on the server, window in the browser
- var root, previous_async;
-&nbsp;
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof window == 'object' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this === window)</span> {
-<span class="cstat-no" title="statement not covered" > root = window;</span>
- }
- else <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof global == 'object' &amp;&amp; this === global) {
- root = global;
- }
- else {
-<span class="cstat-no" title="statement not covered" > root = this;</span>
- }
-&nbsp;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (root != null) {
- previous_async = root.async;
- }
-&nbsp;
- async.noConflict = <span class="fstat-no" title="function not covered" >function () {</span>
-<span class="cstat-no" title="statement not covered" > root.async = previous_async;</span>
-<span class="cstat-no" title="statement not covered" > return async;</span>
- };
-&nbsp;
- function only_once(fn) {
- var called = false;
- return function() {
- if (called) throw new Error("Callback was already called.");
- called = true;
- fn.apply(root, arguments);
- };
- }
-&nbsp;
- //// cross-browser compatiblity functions ////
-&nbsp;
- var _toString = Object.prototype.toString;
-&nbsp;
- var _isArray = Array.isArray || <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >function (obj) {</span></span>
-<span class="cstat-no" title="statement not covered" > return _toString.call(obj) === '[object Array]';</span>
- };
-&nbsp;
- var _each = function (arr, iterator) {
- var index = -1,
- length = arr.length;
-&nbsp;
- while (++index &lt; length) {
- iterator(arr[index], index, arr);
- }
- };
-&nbsp;
- var _map = function (arr, iterator) {
- var index = -1,
- length = arr.length,
- result = Array(length);
-&nbsp;
- while (++index &lt; length) {
- result[index] = iterator(arr[index], index, arr);
- }
- return result;
- };
-&nbsp;
- var _reduce = function (arr, iterator, memo) {
- _each(arr, function (x, i, a) {
- memo = iterator(memo, x, i, a);
- });
- return memo;
- };
-&nbsp;
- var _forEachOf = function (object, iterator) {
- _each(_keys(object), function (key) {
- iterator(object[key], key);
- });
- };
-&nbsp;
- var _keys = Object.keys || <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >function (obj) {</span></span>
-<span class="cstat-no" title="statement not covered" > var keys = [];</span>
-<span class="cstat-no" title="statement not covered" > for (var k in obj) {</span>
-<span class="cstat-no" title="statement not covered" > if (obj.hasOwnProperty(k)) {</span>
-<span class="cstat-no" title="statement not covered" > keys.push(k);</span>
- }
- }
-<span class="cstat-no" title="statement not covered" > return keys;</span>
- };
-&nbsp;
- var _baseSlice = function (arr, start) {
- start = start || 0;
- var index = -1;
- var length = arr.length;
-&nbsp;
- if (start) {
- length -= start;
- length = length &lt; 0 ? 0 : length;
- }
- var result = Array(length);
-&nbsp;
- while (++index &lt; length) {
- result[index] = arr[index + start];
- }
- return result;
- };
-&nbsp;
- //// exported async module functions ////
-&nbsp;
- //// nextTick implementation with browser-compatible fallback ////
-&nbsp;
- // capture the global reference to guard against fakeTimer mocks
- var _setImmediate;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof setImmediate === 'function') {
- _setImmediate = setImmediate;
- }
-&nbsp;
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof process === 'undefined' || !(process.nextTick)) {
-<span class="cstat-no" title="statement not covered" > if (_setImmediate) {</span>
-<span class="cstat-no" title="statement not covered" > async.nextTick = <span class="fstat-no" title="function not covered" >function (fn) {</span></span>
- // not a direct alias for IE10 compatibility
-<span class="cstat-no" title="statement not covered" > _setImmediate(fn);</span>
- };
-<span class="cstat-no" title="statement not covered" > async.setImmediate = async.nextTick;</span>
- }
- else {
-<span class="cstat-no" title="statement not covered" > async.nextTick = <span class="fstat-no" title="function not covered" >function (fn) {</span></span>
-<span class="cstat-no" title="statement not covered" > setTimeout(fn, 0);</span>
- };
-<span class="cstat-no" title="statement not covered" > async.setImmediate = async.nextTick;</span>
- }
- }
- else {
- async.nextTick = process.nextTick;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (_setImmediate) {
- async.setImmediate = function (fn) {
- // not a direct alias for IE10 compatibility
- _setImmediate(fn);
- };
- }
- else {
-<span class="cstat-no" title="statement not covered" > async.setImmediate = async.nextTick;</span>
- }
- }
-&nbsp;
- async.each = function (arr, iterator, callback) {
- callback = callback || noop;
- if (!arr.length) {
- return callback(null);
- }
- var completed = 0;
- _each(arr, function (x) {
- iterator(x, only_once(done) );
- });
- function done(err) {
- if (err) {
- callback(err);
- callback = noop;
- }
- else {
- completed += 1;
- if (completed &gt;= arr.length) {
- callback(null);
- }
- }
- }
- };
- async.forEach = async.each;
-&nbsp;
- async.eachSeries = function (arr, iterator, callback) {
- callback = callback || noop;
- if (!arr.length) {
- return callback(null);
- }
- var completed = 0;
- var iterate = function () {
- iterator(arr[completed], function (err) {
- if (err) {
- callback(err);
- callback = noop;
- }
- else {
- completed += 1;
- if (completed &gt;= arr.length) {
- callback(null);
- }
- else {
- iterate();
- }
- }
- });
- };
- iterate();
- };
- async.forEachSeries = async.eachSeries;
-&nbsp;
-&nbsp;
- async.eachLimit = function (arr, limit, iterator, callback) {
- var fn = _eachLimit(limit);
- fn.apply(null, [arr, iterator, callback]);
- };
- async.forEachLimit = async.eachLimit;
-&nbsp;
- var _eachLimit = function (limit) {
-&nbsp;
- return function (arr, iterator, callback) {
- callback = callback || noop;
- if (!arr.length || limit &lt;= 0) {
- return callback(null);
- }
- var completed = 0;
- var started = 0;
- var running = 0;
- var errored = false;
-&nbsp;
- (function replenish () {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (completed &gt;= arr.length) {
-<span class="cstat-no" title="statement not covered" > return callback(null);</span>
- }
-&nbsp;
- while (running &lt; limit &amp;&amp; started &lt; arr.length &amp;&amp; !errored) {
- started += 1;
- running += 1;
- iterator(arr[started - 1], function (err) {
- if (err) {
- callback(err);
- errored = true;
- callback = noop;
- }
- else {
- completed += 1;
- running -= 1;
- if (completed &gt;= arr.length) {
- callback(null);
- }
- else {
- replenish();
- }
- }
- });
- }
- })();
- };
- };
-&nbsp;
-&nbsp;
-&nbsp;
- async.forEachOf = async.eachOf = function (object, iterator, callback) {
- callback = callback || function () {};
- var size = object.length || _keys(object).length;
- var completed = 0;
- if (!size) {
- return callback(null);
- }
- _forEachOf(object, function (value, key) {
- iterator(object[key], key, function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- } else {
- completed += 1;
- if (completed === size) {
- callback(null);
- }
- }
- });
- });
- };
-&nbsp;
- async.forEachOfSeries = async.eachOfSeries = function (obj, iterator, callback) {
- callback = callback || function () {};
- var keys = _keys(obj);
- var size = keys.length;
- if (!size) {
- return callback();
- }
- var completed = 0;
- var iterate = function () {
- var sync = true;
- var key = keys[completed];
- iterator(obj[key], key, function (err) {
- if (err) {
- callback(err);
- callback = <span class="fstat-no" title="function not covered" >function () {</span>};
- }
- else {
- completed += 1;
- if (completed &gt;= size) {
- callback(null);
- }
- else {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (sync) {
-<span class="cstat-no" title="statement not covered" > async.nextTick(iterate);</span>
- }
- else {
- iterate();
- }
- }
- }
- });
- sync = false;
- };
- iterate();
- };
-&nbsp;
-&nbsp;
-&nbsp;
- async.forEachOfLimit = async.eachOfLimit = function (obj, limit, iterator, callback) {
- _forEachOfLimit(limit)(obj, iterator, callback);
- };
-&nbsp;
- var _forEachOfLimit = function (limit) {
-&nbsp;
- return function (obj, iterator, callback) {
- callback = callback || function () {};
- var keys = _keys(obj);
- var size = keys.length;
- if (!size || limit &lt;= 0) {
- return callback(null);
- }
- var completed = 0;
- var started = 0;
- var running = 0;
-&nbsp;
- (function replenish () {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (completed &gt;= size) {
-<span class="cstat-no" title="statement not covered" > return callback();</span>
- }
-&nbsp;
- while (running &lt; limit &amp;&amp; started &lt; size) {
- started += 1;
- running += 1;
- var key = keys[started - 1];
- iterator(obj[key], key, function (err) {
- if (err) {
- callback(err);
- callback = <span class="fstat-no" title="function not covered" >function () {</span>};
- }
- else {
- completed += 1;
- running -= 1;
- if (completed &gt;= size) {
- callback(null);
- }
- else {
- replenish();
- }
- }
- });
- }
- })();
- };
- };
-&nbsp;
-&nbsp;
- var doParallel = function (fn) {
- return function () {
- var args = _baseSlice(arguments);
- return fn.apply(null, [async.each].concat(args));
- };
- };
- var doParallelLimit = function(limit, fn) {
- return function () {
- var args = _baseSlice(arguments);
- return fn.apply(null, [_eachLimit(limit)].concat(args));
- };
- };
- var doSeries = function (fn) {
- return function () {
- var args = _baseSlice(arguments);
- return fn.apply(null, [async.eachSeries].concat(args));
- };
- };
-&nbsp;
-&nbsp;
- var _asyncMap = function (eachfn, arr, iterator, callback) {
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- if (!callback) {
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (err) {
- callback(err);
- });
- });
- } else {
- var results = [];
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (err, v) {
- results[x.index] = v;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
- async.map = doParallel(_asyncMap);
- async.mapSeries = doSeries(_asyncMap);
- async.mapLimit = function (arr, limit, iterator, callback) {
- return _mapLimit(limit)(arr, iterator, callback);
- };
-&nbsp;
- var _mapLimit = function(limit) {
- return doParallelLimit(limit, _asyncMap);
- };
-&nbsp;
- // reduce only has a series version, as doing reduce in parallel won't
- // work in many situations.
- async.reduce = function (arr, memo, iterator, callback) {
- async.eachSeries(arr, function (x, callback) {
- iterator(memo, x, function (err, v) {
- memo = v;
- callback(err);
- });
- }, function (err) {
- callback(err || null, memo);
- });
- };
- // inject alias
- async.inject = async.reduce;
- // foldl alias
- async.foldl = async.reduce;
-&nbsp;
- async.reduceRight = function (arr, memo, iterator, callback) {
- var reversed = _map(arr, function (x) {
- return x;
- }).reverse();
- async.reduce(reversed, memo, iterator, callback);
- };
- // foldr alias
- async.foldr = async.reduceRight;
-&nbsp;
- var _filter = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (v) {
- if (v) {
- results.push(x);
- }
- callback();
- });
- }, function (err) {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- };
- async.filter = doParallel(_filter);
- async.filterSeries = doSeries(_filter);
- // select alias
- async.select = async.filter;
- async.selectSeries = async.filterSeries;
-&nbsp;
- var _reject = function (eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, callback) {
- iterator(x.value, function (v) {
- if (!v) {
- results.push(x);
- }
- callback();
- });
- }, function (err) {
- callback(_map(results.sort(<span class="fstat-no" title="function not covered" >function (a, b) {</span>
-<span class="cstat-no" title="statement not covered" > return a.index - b.index;</span>
- }), function (x) {
- return x.value;
- }));
- });
- };
- async.reject = doParallel(_reject);
- async.rejectSeries = doSeries(_reject);
-&nbsp;
- var _detect = function (eachfn, arr, iterator, main_callback) {
- eachfn(arr, function (x, callback) {
- iterator(x, function (result) {
- if (result) {
- main_callback(x);
- main_callback = noop;
- }
- else {
- callback();
- }
- });
- }, <span class="fstat-no" title="function not covered" >function (err) {</span>
-<span class="cstat-no" title="statement not covered" > main_callback();</span>
- });
- };
- async.detect = doParallel(_detect);
- async.detectSeries = doSeries(_detect);
-&nbsp;
- async.some = function (arr, iterator, main_callback) {
- async.each(arr, function (x, callback) {
- iterator(x, function (v) {
- if (v) {
- main_callback(true);
- main_callback = noop;
- }
- callback();
- });
- }, function (err) {
- main_callback(false);
- });
- };
- // any alias
- async.any = async.some;
-&nbsp;
- async.every = function (arr, iterator, main_callback) {
- async.each(arr, function (x, callback) {
- iterator(x, function (v) {
- if (!v) {
- main_callback(false);
- main_callback = noop;
- }
- callback();
- });
- }, function (err) {
- main_callback(true);
- });
- };
- // all alias
- async.all = async.every;
-&nbsp;
- async.sortBy = function (arr, iterator, callback) {
- async.map(arr, function (x, callback) {
- iterator(x, function (err, criteria) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > callback(err);</span>
- }
- else {
- callback(null, {value: x, criteria: criteria});
- }
- });
- }, function (err, results) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- else {
- var fn = function (left, right) {
- var a = left.criteria, b = right.criteria;
- return a &lt; b ? -1 : a &gt; b ? 1 : <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
- };
- callback(null, _map(results.sort(fn), function (x) {
- return x.value;
- }));
- }
- });
- };
-&nbsp;
- async.auto = function (tasks, callback) {
- callback = callback || noop;
- var keys = _keys(tasks);
- var remainingTasks = keys.length;
- if (!remainingTasks) {
- return callback(null);
- }
-&nbsp;
- var results = {};
-&nbsp;
- var listeners = [];
- var addListener = function (fn) {
- listeners.unshift(fn);
- };
- var removeListener = function (fn) {
- for (var i = 0; i &lt; listeners.length; i += 1) {
- if (listeners[i] === fn) {
- listeners.splice(i, 1);
- return;
- }
- }
- };
- var taskComplete = function () {
- remainingTasks--;
- _each(listeners.slice(0), function (fn) {
- fn();
- });
- };
-&nbsp;
- addListener(function () {
- if (!remainingTasks) {
- var theCallback = callback;
- // prevent final callback from calling itself if it errors
- callback = noop;
-&nbsp;
- theCallback(null, results);
- }
- });
-&nbsp;
- _each(keys, function (k) {
- var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
- var taskCallback = function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- if (err) {
- var safeResults = {};
- _each(_keys(results), function(rkey) {
- safeResults[rkey] = results[rkey];
- });
- safeResults[k] = args;
- callback(err, safeResults);
- // stop subsequent errors hitting callback multiple times
- callback = noop;
- }
- else {
- results[k] = args;
- async.setImmediate(taskComplete);
- }
- };
- var requires = task.slice(0, Math.abs(task.length - 1)) || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
- // prevent dead-locks
- var len = requires.length;
- var dep;
- while (len--) {
- if (!(dep = tasks[requires[len]])) {
- throw new Error('Has inexistant dependency');
- }
- if (_isArray(dep) &amp;&amp; !!~dep.indexOf(k)) {
- throw new Error('Has cyclic dependencies');
- }
- }
- var ready = function () {
- return _reduce(requires, function (a, x) {
- return (a &amp;&amp; results.hasOwnProperty(x));
- }, true) &amp;&amp; !results.hasOwnProperty(k);
- };
- if (ready()) {
- task[task.length - 1](taskCallback, results);
- }
- else {
- var listener = function () {
- if (ready()) {
- removeListener(listener);
- task[task.length - 1](taskCallback, results);
- }
- };
- addListener(listener);
- }
- });
- };
-&nbsp;
- async.retry = function(times, task, callback) {
- var DEFAULT_TIMES = 5;
- var attempts = [];
- // Use defaults if times not passed
- if (typeof times === 'function') {
- callback = task;
- task = times;
- times = DEFAULT_TIMES;
- }
- // Make sure times is a number
- times = parseInt(times, 10) || <span class="branch-1 cbranch-no" title="branch not covered" >DEFAULT_TIMES;</span>
- var wrappedTask = function(wrappedCallback, wrappedResults) {
- var retryAttempt = function(task, finalAttempt) {
- return function(seriesCallback) {
- task(function(err, result){
- seriesCallback(!err || finalAttempt, {err: err, result: result});
- }, wrappedResults);
- };
- };
- while (times) {
- attempts.push(retryAttempt(task, !(times-=1)));
- }
- async.series(attempts, function(done, data){
- data = data[data.length - 1];
- (wrappedCallback || callback)(data.err, data.result);
- });
- };
- // If a callback is passed, run this as a controll flow
- return callback ? wrappedTask() : wrappedTask;
- };
-&nbsp;
- async.waterfall = function (tasks, callback) {
- callback = callback || noop;
- if (!_isArray(tasks)) {
- var err = new Error('First argument to waterfall must be an array of functions');
- return callback(err);
- }
- if (!tasks.length) {
- return callback();
- }
- var wrapIterator = function (iterator) {
- return function (err) {
- if (err) {
- callback.apply(null, arguments);
- callback = noop;
- }
- else {
- var args = _baseSlice(arguments, 1);
- var next = iterator.next();
- if (next) {
- args.push(wrapIterator(next));
- }
- else {
- args.push(callback);
- }
- async.setImmediate(function () {
- iterator.apply(null, args);
- });
- }
- };
- };
- wrapIterator(async.iterator(tasks))();
- };
-&nbsp;
- var _parallel = function(eachfn, tasks, callback) {
- callback = callback || noop;
- if (_isArray(tasks)) {
- eachfn.map(tasks, function (fn, callback) {
- <span class="missing-if-branch" title="else path not taken" >E</span>if (fn) {
- fn(function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- callback.call(null, err, args);
- });
- }
- }, callback);
- }
- else {
- var results = {};
- eachfn.each(_keys(tasks), function (k, callback) {
- tasks[k](function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- results[k] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
-&nbsp;
- async.parallel = function (tasks, callback) {
- _parallel({ map: async.map, each: async.each }, tasks, callback);
- };
-&nbsp;
- async.parallelLimit = function(tasks, limit, callback) {
- _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);
- };
-&nbsp;
- async.series = function (tasks, callback) {
- callback = callback || noop;
- if (_isArray(tasks)) {
- async.mapSeries(tasks, function (fn, callback) {
- <span class="missing-if-branch" title="else path not taken" >E</span>if (fn) {
- fn(function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- callback.call(null, err, args);
- });
- }
- }, callback);
- }
- else {
- var results = {};
- async.eachSeries(_keys(tasks), function (k, callback) {
- tasks[k](function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- results[k] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
- };
-&nbsp;
- async.iterator = function (tasks) {
- var makeCallback = function (index) {
- var fn = function () {
- if (tasks.length) {
- tasks[index].apply(null, arguments);
- }
- return fn.next();
- };
- fn.next = function () {
- return (index &lt; tasks.length - 1) ? makeCallback(index + 1): null;
- };
- return fn;
- };
- return makeCallback(0);
- };
-&nbsp;
- async.apply = function (fn) {
- var args = _baseSlice(arguments, 1);
- return function () {
- return fn.apply(
- null, args.concat(_baseSlice(arguments))
- );
- };
- };
-&nbsp;
- var _concat = function (eachfn, arr, fn, callback) {
- var r = [];
- eachfn(arr, function (x, cb) {
- fn(x, function (err, y) {
- r = r.concat(y || []);
- cb(err);
- });
- }, function (err) {
- callback(err, r);
- });
- };
- async.concat = doParallel(_concat);
- async.concatSeries = doSeries(_concat);
-&nbsp;
- async.whilst = function (test, iterator, callback) {
- if (test()) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- async.whilst(test, iterator, callback);
- });
- }
- else {
- callback(null);
- }
- };
-&nbsp;
- async.doWhilst = function (iterator, test, callback) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- var args = _baseSlice(arguments, 1);
- if (test.apply(null, args)) {
- async.doWhilst(iterator, test, callback);
- }
- else {
- callback(null);
- }
- });
- };
-&nbsp;
- async.until = function (test, iterator, callback) {
- if (!test()) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- async.until(test, iterator, callback);
- });
- }
- else {
- callback(null);
- }
- };
-&nbsp;
- async.doUntil = function (iterator, test, callback) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- var args = _baseSlice(arguments, 1);
- if (!test.apply(null, args)) {
- async.doUntil(iterator, test, callback);
- }
- else {
- callback(null);
- }
- });
- };
-&nbsp;
- async.queue = function (worker, concurrency) {
- if (concurrency === undefined) {
- concurrency = 1;
- }
- else if(concurrency === 0) {
- throw new Error('Concurrency must not be zero');
- }
- function _insert(q, data, pos, callback) {
- if (!q.started){
- q.started = true;
- }
- if (!_isArray(data)) {
- data = [data];
- }
- if(data.length === 0) {
- // call drain immediately if there are no tasks
- return async.setImmediate(function() {
- if (q.drain) {
- q.drain();
- }
- });
- }
- _each(data, function(task) {
- var item = {
- data: task,
- callback: typeof callback === 'function' ? callback : null
- };
-&nbsp;
- if (pos) {
- q.tasks.unshift(item);
- } else {
- q.tasks.push(item);
- }
-&nbsp;
- if (q.saturated &amp;&amp; q.tasks.length === q.concurrency) {
- q.saturated();
- }
- async.setImmediate(q.process);
- });
- }
-&nbsp;
- var workers = 0;
- var q = {
- tasks: [],
- concurrency: concurrency,
- saturated: null,
- empty: null,
- drain: null,
- started: false,
- paused: false,
- push: function (data, callback) {
- _insert(q, data, false, callback);
- },
- kill: function () {
- q.drain = null;
- q.tasks = [];
- },
- unshift: function (data, callback) {
- _insert(q, data, true, callback);
- },
- process: function () {
- if (!q.paused &amp;&amp; workers &lt; q.concurrency &amp;&amp; q.tasks.length) {
- var task = q.tasks.shift();
- if (q.empty &amp;&amp; q.tasks.length === 0) {
- q.empty();
- }
- workers += 1;
- var next = function () {
- workers -= 1;
- if (task.callback) {
- task.callback.apply(task, arguments);
- }
- if (q.drain &amp;&amp; q.tasks.length + workers === 0) {
- q.drain();
- }
- q.process();
- };
- var cb = only_once(next);
- worker(task.data, cb);
- }
- },
- length: function () {
- return q.tasks.length;
- },
- running: function () {
- return workers;
- },
- idle: function() {
- return q.tasks.length + workers === 0;
- },
- pause: function () {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (q.paused === true) { <span class="cstat-no" title="statement not covered" >return; </span>}
- q.paused = true;
- },
- resume: function () {
- if (q.paused === false) { return; }
- q.paused = false;
- var resumeCount = Math.min(q.concurrency, q.tasks.length);
- // Need to call q.process once per concurrent
- // worker to preserve full concurrency after pause
- for (var w = 1; w &lt;= resumeCount; w++) {
- async.setImmediate(q.process);
- }
- }
- };
- return q;
- };
-&nbsp;
- async.priorityQueue = function (worker, concurrency) {
-&nbsp;
- function _compareTasks(a, b){
- return a.priority - b.priority;
- }
-&nbsp;
- function _binarySearch(sequence, item, compare) {
- var beg = -1,
- end = sequence.length - 1;
- while (beg &lt; end) {
- var mid = beg + ((end - beg + 1) &gt;&gt;&gt; 1);
- if (compare(item, sequence[mid]) &gt;= 0) {
- beg = mid;
- } else {
- end = mid - 1;
- }
- }
- return beg;
- }
-&nbsp;
- function _insert(q, data, priority, callback) {
- if (!q.started){
- q.started = true;
- }
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!_isArray(data)) {
- data = [data];
- }
- <span class="missing-if-branch" title="if path not taken" >I</span>if(data.length === 0) {
- // call drain immediately if there are no tasks
-<span class="cstat-no" title="statement not covered" > return async.setImmediate(<span class="fstat-no" title="function not covered" >function() {</span></span>
-<span class="cstat-no" title="statement not covered" > if (q.drain) {</span>
-<span class="cstat-no" title="statement not covered" > q.drain();</span>
- }
- });
- }
- _each(data, function(task) {
- var item = {
- data: task,
- priority: priority,
- callback: typeof callback === 'function' ? callback : <span class="branch-1 cbranch-no" title="branch not covered" >null</span>
- };
-&nbsp;
- q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);
-&nbsp;
- <span class="missing-if-branch" title="if path not taken" >I</span>if (q.saturated &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >q.tasks.length === q.concurrency)</span> {
-<span class="cstat-no" title="statement not covered" > q.saturated();</span>
- }
- async.setImmediate(q.process);
- });
- }
-&nbsp;
- // Start with a normal queue
- var q = async.queue(worker, concurrency);
-&nbsp;
- // Override push to accept second parameter representing priority
- q.push = function (data, priority, callback) {
- _insert(q, data, priority, callback);
- };
-&nbsp;
- // Remove unshift function
- delete q.unshift;
-&nbsp;
- return q;
- };
-&nbsp;
- async.cargo = function (worker, payload) {
- var working = false,
- tasks = [];
-&nbsp;
- var cargo = {
- tasks: tasks,
- payload: payload,
- saturated: null,
- empty: null,
- drain: null,
- drained: true,
- push: function (data, callback) {
- if (!_isArray(data)) {
- data = [data];
- }
- _each(data, function(task) {
- tasks.push({
- data: task,
- callback: typeof callback === 'function' ? callback : null
- });
- cargo.drained = false;
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cargo.saturated &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >tasks.length === payload)</span> {
-<span class="cstat-no" title="statement not covered" > cargo.saturated();</span>
- }
- });
- async.setImmediate(cargo.process);
- },
- process: function process() {
- if (working) return;
- if (tasks.length === 0) {
- if(cargo.drain &amp;&amp; !cargo.drained) cargo.drain();
- cargo.drained = true;
- return;
- }
-&nbsp;
- var ts = typeof payload === 'number' ?
- tasks.splice(0, payload) :
-<span class="branch-1 cbranch-no" title="branch not covered" > tasks.splice(0, tasks.length);</span>
-&nbsp;
- var ds = _map(ts, function (task) {
- return task.data;
- });
-&nbsp;
- <span class="missing-if-branch" title="if path not taken" >I</span>if(cargo.empty) <span class="cstat-no" title="statement not covered" >cargo.empty();</span>
- working = true;
- worker(ds, function () {
- working = false;
-&nbsp;
- var args = arguments;
- _each(ts, function (data) {
- if (data.callback) {
- data.callback.apply(null, args);
- }
- });
-&nbsp;
- process();
- });
- },
- length: function () {
- return tasks.length;
- },
- running: <span class="fstat-no" title="function not covered" >function () {</span>
-<span class="cstat-no" title="statement not covered" > return working;</span>
- }
- };
- return cargo;
- };
-&nbsp;
- var _console_fn = function (name) {
- return function (fn) {
- var args = _baseSlice(arguments, 1);
- fn.apply(null, args.concat([function (err) {
- var args = _baseSlice(arguments, 1);
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof console !== 'undefined') {
- if (err) {
- <span class="missing-if-branch" title="else path not taken" >E</span>if (console.error) {
- console.error(err);
- }
- }
- else <span class="missing-if-branch" title="else path not taken" >E</span>if (console[name]) {
- _each(args, function (x) {
- console[name](x);
- });
- }
- }
- }]));
- };
- };
- async.log = _console_fn('log');
- async.dir = _console_fn('dir');
- /*async.info = _console_fn('info');
- async.warn = _console_fn('warn');
- async.error = _console_fn('error');*/
-&nbsp;
- async.memoize = function (fn, hasher) {
- var memo = {};
- var queues = {};
- hasher = hasher || function (x) {
- return x;
- };
- var memoized = function () {
- var args = _baseSlice(arguments);
- var callback = args.pop();
- var key = hasher.apply(null, args);
- if (key in memo) {
- async.nextTick(function () {
- callback.apply(null, memo[key]);
- });
- }
- else if (key in queues) {
- queues[key].push(callback);
- }
- else {
- queues[key] = [callback];
- fn.apply(null, args.concat([function () {
- memo[key] = _baseSlice(arguments);
- var q = queues[key];
- delete queues[key];
- for (var i = 0, l = q.length; i &lt; l; i++) {
- q[i].apply(null, arguments);
- }
- }]));
- }
- };
- memoized.memo = memo;
- memoized.unmemoized = fn;
- return memoized;
- };
-&nbsp;
- async.unmemoize = function (fn) {
- return function () {
- return (fn.unmemoized || fn).apply(null, arguments);
- };
- };
-&nbsp;
- async.times = function (count, iterator, callback) {
- var counter = [];
- for (var i = 0; i &lt; count; i++) {
- counter.push(i);
- }
- return async.map(counter, iterator, callback);
- };
-&nbsp;
- async.timesSeries = function (count, iterator, callback) {
- var counter = [];
- for (var i = 0; i &lt; count; i++) {
- counter.push(i);
- }
- return async.mapSeries(counter, iterator, callback);
- };
-&nbsp;
- async.seq = function (/* functions... */) {
- var fns = arguments;
- return function () {
- var that = this;
- var args = _baseSlice(arguments);
- var callback = args.pop();
- async.reduce(fns, args, function (newargs, fn, cb) {
- fn.apply(that, newargs.concat([function () {
- var err = arguments[0];
- var nextargs = _baseSlice(arguments, 1);
- cb(err, nextargs);
- }]));
- },
- function (err, results) {
- callback.apply(that, [err].concat(results));
- });
- };
- };
-&nbsp;
- async.compose = function (/* functions... */) {
- return async.seq.apply(null, Array.prototype.reverse.call(arguments));
- };
-&nbsp;
- var _applyEach = function (eachfn, fns /*args...*/) {
- var go = function () {
- var that = this;
- var args = _baseSlice(arguments);
- var callback = args.pop();
- return eachfn(fns, function (fn, cb) {
- fn.apply(that, args.concat([cb]));
- },
- callback);
- };
- if (arguments.length &gt; 2) {
- var args = _baseSlice(arguments, 2);
- return go.apply(this, args);
- }
- else {
- return go;
- }
- };
- async.applyEach = doParallel(_applyEach);
- async.applyEachSeries = doSeries(_applyEach);
-&nbsp;
- async.forever = function (fn, callback) {
- function next(err) {
- if (err) {
- <span class="missing-if-branch" title="else path not taken" >E</span>if (callback) {
- return callback(err);
- }
-<span class="cstat-no" title="statement not covered" > throw err;</span>
- }
- fn(next);
- }
- next();
- };
-&nbsp;
- // Node.js
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof module !== 'undefined' &amp;&amp; module.exports) {
- module.exports = async;
- }
- // AMD / RequireJS
- else <span class="cstat-no" title="statement not covered" >if (typeof define !== 'undefined' &amp;&amp; define.amd) {</span>
-<span class="cstat-no" title="statement not covered" > define([], <span class="fstat-no" title="function not covered" >function () {</span></span>
-<span class="cstat-no" title="statement not covered" > return async;</span>
- });
- }
- // included directly via &lt;script&gt; tag
- else {
-<span class="cstat-no" title="statement not covered" > root.async = async;</span>
- }
-&nbsp;
-}());
-&nbsp;</pre></td></tr>
-</table></pre>
-
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun May 24 2015 15:04:25 GMT-0700 (PDT)</div>
-</div>
-<script src="../prettify.js"></script>
-<script>
-window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
-};
-</script>
-<script src="../sorter.js"></script>
-</body>
-</html>
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/index.html b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/index.html
deleted file mode 100644
index 2a4e91322..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/lib/index.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for lib/</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="../prettify.css">
- <link rel="stylesheet" href="../base.css">
- <style type='text/css'>
- div.coverage-summary .sorter {
- background-image: url(../sort-arrow-sprite.png);
- }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">lib/</span></h1>
- <h2>
- Statements: <span class="metric">94.13% <small>(673 / 715)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Branches: <span class="metric">85% <small>(272 / 320)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Functions: <span class="metric">94.2% <small>(195 / 207)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Lines: <span class="metric">94.36% <small>(669 / 709)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
- </h2>
- <div class="path"><a href="../index.html">All files</a> &#187; lib/</div>
-</div>
-<div class="body">
-<div class="coverage-summary">
-<table>
-<thead>
-<tr>
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
-</tr>
-</thead>
-<tbody><tr>
- <td class="file high" data-value="async.js"><a href="async.js.html">async.js</a></td>
- <td data-value="94.13" class="pic high"><span class="cover-fill" style="width: 94px;"></span><span class="cover-empty" style="width:6px;"></span></td>
- <td data-value="94.13" class="pct high">94.13%</td>
- <td data-value="715" class="abs high">(673&nbsp;/&nbsp;715)</td>
- <td data-value="85" class="pct high">85%</td>
- <td data-value="320" class="abs high">(272&nbsp;/&nbsp;320)</td>
- <td data-value="94.2" class="pct high">94.2%</td>
- <td data-value="207" class="abs high">(195&nbsp;/&nbsp;207)</td>
- <td data-value="94.36" class="pct high">94.36%</td>
- <td data-value="709" class="abs high">(669&nbsp;/&nbsp;709)</td>
- </tr>
-
-</tbody>
-</table>
-</div>
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun May 24 2015 15:04:25 GMT-0700 (PDT)</div>
-</div>
-<script src="../prettify.js"></script>
-<script>
-window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
-};
-</script>
-<script src="../sorter.js"></script>
-</body>
-</html>
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.css b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.css
deleted file mode 100644
index b317a7cda..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
-.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.js b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.js
deleted file mode 100644
index ef51e0386..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/prettify.js
+++ /dev/null
@@ -1 +0,0 @@
-window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.ignoreCase){ac=true}else{if(/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){S=true;ac=false;break}}}var Y={b:8,t:9,n:10,v:11,f:12,r:13};function ab(ah){var ag=ah.charCodeAt(0);if(ag!==92){return ag}var af=ah.charAt(1);ag=Y[af];if(ag){return ag}else{if("0"<=af&&af<="7"){return parseInt(ah.substring(1),8)}else{if(af==="u"||af==="x"){return parseInt(ah.substring(2),16)}else{return ah.charCodeAt(1)}}}}function T(af){if(af<32){return(af<16?"\\x0":"\\x")+af.toString(16)}var ag=String.fromCharCode(af);if(ag==="\\"||ag==="-"||ag==="["||ag==="]"){ag="\\"+ag}return ag}function X(am){var aq=am.substring(1,am.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));var ak=[];var af=[];var ao=aq[0]==="^";for(var ar=ao?1:0,aj=aq.length;ar<aj;++ar){var ah=aq[ar];if(/\\[bdsw]/i.test(ah)){ak.push(ah)}else{var ag=ab(ah);var al;if(ar+2<aj&&"-"===aq[ar+1]){al=ab(aq[ar+2]);ar+=2}else{al=ag}af.push([ag,al]);if(!(al<65||ag>122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;ar<af.length;++ar){var at=af[ar];if(at[0]<=ap[1]+1){ap[1]=Math.max(ap[1],at[1])}else{ai.push(ap=at)}}var an=["["];if(ao){an.push("^")}an.push.apply(an,ak);for(var ar=0;ar<ai.length;++ar){var at=ai[ar];an.push(T(at[0]));if(at[1]>at[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){an[af]=-1}}}}for(var ak=1;ak<an.length;++ak){if(-1===an[ak]){an[ak]=++ad}}for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am;if(an[am]===undefined){aj[ak]="(?:"}}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){aj[ak]="\\"+an[am]}}}}for(var ak=0,am=0;ak<ah;++ak){if("^"===aj[ak]&&"^"!==aj[ak+1]){aj[ak]=""}}if(al.ignoreCase&&S){for(var ak=0;ak<ah;++ak){var ag=aj[ak];var ai=ag.charAt(0);if(ag.length>=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.global||ae.multiline){throw new Error(""+ae)}aa.push("(?:"+W(ae)+")")}return new RegExp(aa.join("|"),ac?"gi":"g")}function a(V){var U=/(?:^|\s)nocode(?:\s|$)/;var X=[];var T=0;var Z=[];var W=0;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=document.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Y=S&&"pre"===S.substring(0,3);function aa(ab){switch(ab.nodeType){case 1:if(U.test(ab.className)){return}for(var ae=ab.firstChild;ae;ae=ae.nextSibling){aa(ae)}var ad=ab.nodeName;if("BR"===ad||"LI"===ad){X[W]="\n";Z[W<<1]=T++;Z[(W++<<1)|1]=ab}break;case 3:case 4:var ac=ab.nodeValue;if(ac.length){if(!Y){ac=ac.replace(/[ \t\r\n]+/g," ")}else{ac=ac.replace(/\r\n?/g,"\n")}X[W]=ac;Z[W<<1]=T;T+=ac.length;Z[(W++<<1)|1]=ab}break}}aa(V);return{sourceCode:X.join("").replace(/\n$/,""),spans:Z}}function B(S,U,W,T){if(!U){return}var V={sourceCode:U,basePos:S};W(V);T.push.apply(T,V.decorations)}var v=/\S/;function o(S){var V=undefined;for(var U=S.firstChild;U;U=U.nextSibling){var T=U.nodeType;V=(T===1)?(V?S:U):(T===3)?(v.test(U.nodeValue)?S:V):V}return V===S?undefined:V}function g(U,T){var S={};var V;(function(){var ad=U.concat(T);var ah=[];var ag={};for(var ab=0,Z=ad.length;ab<Z;++ab){var Y=ad[ab];var ac=Y[3];if(ac){for(var ae=ac.length;--ae>=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae<aq;++ae){var ag=an[ae];var ap=aj[ag];var ai=void 0;var am;if(typeof ap==="string"){am=false}else{var aa=S[ag.charAt(0)];if(aa){ai=ag.match(aa[1]);ap=aa[0]}else{for(var ao=0;ao<X;++ao){aa=T[ao];ai=ag.match(aa[1]);if(ai){ap=aa[0];break}}if(!ai){ap=F}}am=ap.length>=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y<W.length;++Y){ae(W[Y])}if(ag===(ag|0)){W[0].setAttribute("value",ag)}var aa=ac.createElement("OL");aa.className="linenums";var X=Math.max(0,((ag-1))|0)||0;for(var Y=0,T=W.length;Y<T;++Y){af=W[Y];af.className="L"+((Y+X)%10);if(!af.firstChild){af.appendChild(ac.createTextNode("\xA0"))}aa.appendChild(af)}V.appendChild(aa)}function D(ac){var aj=/\bMSIE\b/.test(navigator.userAgent);var am=/\n/g;var al=ac.sourceCode;var an=al.length;var V=0;var aa=ac.spans;var T=aa.length;var ah=0;var X=ac.decorations;var Y=X.length;var Z=0;X[Y]=an;var ar,aq;for(aq=ar=0;aq<Y;){if(X[aq]!==X[aq+2]){X[ar++]=X[aq++];X[ar++]=X[aq++]}else{aq+=2}}Y=ar;for(aq=ar=0;aq<Y;){var at=X[aq];var ab=X[aq+1];var W=aq+2;while(W+2<=Y&&X[W+1]===ab){W+=2}X[ar++]=at;X[ar++]=ab;aq=W}Y=X.length=ar;var ae=null;while(ah<T){var af=aa[ah];var S=aa[ah+2]||an;var ag=X[Z];var ap=X[Z+2]||an;var W=Math.min(S,ap);var ak=aa[ah+1];var U;if(ak.nodeType!==1&&(U=al.substring(V,W))){if(aj){U=U.replace(am,"\r")}ak.nodeValue=U;var ai=ak.ownerDocument;var ao=ai.createElement("SPAN");ao.className=X[Z+1];var ad=ak.parentNode;ad.replaceChild(ao,ak);ao.appendChild(ak);if(V<S){aa[ah+1]=ak=ai.createTextNode(al.substring(W,S));ad.insertBefore(ak,ao.nextSibling)}}V=W;if(V>=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*</.test(S)?"default-markup":"default-code"}return t[T]}c(K,["default-code"]);c(g([],[[F,/^[^<?]+/],[E,/^<!\w[^>]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa<ac.length;++aa){for(var Z=0,V=ac[aa].length;Z<V;++Z){T.push(ac[aa][Z])}}ac=null;var W=Date;if(!W.now){W={now:function(){return +(new Date)}}}var X=0;var S;var ab=/\blang(?:uage)?-([\w.]+)(?!\S)/;var ae=/\bprettyprint\b/;function U(){var ag=(window.PR_SHOULD_USE_CONTINUATION?W.now()+250:Infinity);for(;X<T.length&&W.now()<ag;X++){var aj=T[X];var ai=aj.className;if(ai.indexOf("prettyprint")>=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X<T.length){setTimeout(U,250)}else{if(ad){ad()}}}U()}window.prettyPrintOne=y;window.prettyPrint=b;window.PR={createSimpleLexer:g,registerLangHandler:c,sourceDecorator:i,PR_ATTRIB_NAME:P,PR_ATTRIB_VALUE:n,PR_COMMENT:j,PR_DECLARATION:E,PR_KEYWORD:z,PR_LITERAL:G,PR_NOCODE:N,PR_PLAIN:F,PR_PUNCTUATION:L,PR_SOURCE:J,PR_STRING:C,PR_TAG:m,PR_TYPE:O}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sort-arrow-sprite.png b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sort-arrow-sprite.png
deleted file mode 100644
index 03f704a60..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sort-arrow-sprite.png
+++ /dev/null
Binary files differ
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sorter.js b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sorter.js
deleted file mode 100644
index 6afb736c3..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov-report/sorter.js
+++ /dev/null
@@ -1,156 +0,0 @@
-var addSorting = (function () {
- "use strict";
- var cols,
- currentSort = {
- index: 0,
- desc: false
- };
-
- // returns the summary table element
- function getTable() { return document.querySelector('.coverage-summary table'); }
- // returns the thead element of the summary table
- function getTableHeader() { return getTable().querySelector('thead tr'); }
- // returns the tbody element of the summary table
- function getTableBody() { return getTable().querySelector('tbody'); }
- // returns the th element for nth column
- function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
-
- // loads all columns
- function loadColumns() {
- var colNodes = getTableHeader().querySelectorAll('th'),
- colNode,
- cols = [],
- col,
- i;
-
- for (i = 0; i < colNodes.length; i += 1) {
- colNode = colNodes[i];
- col = {
- key: colNode.getAttribute('data-col'),
- sortable: !colNode.getAttribute('data-nosort'),
- type: colNode.getAttribute('data-type') || 'string'
- };
- cols.push(col);
- if (col.sortable) {
- col.defaultDescSort = col.type === 'number';
- colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>';
- }
- }
- return cols;
- }
- // attaches a data attribute to every tr element with an object
- // of data values keyed by column name
- function loadRowData(tableRow) {
- var tableCols = tableRow.querySelectorAll('td'),
- colNode,
- col,
- data = {},
- i,
- val;
- for (i = 0; i < tableCols.length; i += 1) {
- colNode = tableCols[i];
- col = cols[i];
- val = colNode.getAttribute('data-value');
- if (col.type === 'number') {
- val = Number(val);
- }
- data[col.key] = val;
- }
- return data;
- }
- // loads all row data
- function loadData() {
- var rows = getTableBody().querySelectorAll('tr'),
- i;
-
- for (i = 0; i < rows.length; i += 1) {
- rows[i].data = loadRowData(rows[i]);
- }
- }
- // sorts the table using the data for the ith column
- function sortByIndex(index, desc) {
- var key = cols[index].key,
- sorter = function (a, b) {
- a = a.data[key];
- b = b.data[key];
- return a < b ? -1 : a > b ? 1 : 0;
- },
- finalSorter = sorter,
- tableBody = document.querySelector('.coverage-summary tbody'),
- rowNodes = tableBody.querySelectorAll('tr'),
- rows = [],
- i;
-
- if (desc) {
- finalSorter = function (a, b) {
- return -1 * sorter(a, b);
- };
- }
-
- for (i = 0; i < rowNodes.length; i += 1) {
- rows.push(rowNodes[i]);
- tableBody.removeChild(rowNodes[i]);
- }
-
- rows.sort(finalSorter);
-
- for (i = 0; i < rows.length; i += 1) {
- tableBody.appendChild(rows[i]);
- }
- }
- // removes sort indicators for current column being sorted
- function removeSortIndicators() {
- var col = getNthColumn(currentSort.index),
- cls = col.className;
-
- cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
- col.className = cls;
- }
- // adds sort indicators for current column being sorted
- function addSortIndicators() {
- getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
- }
- // adds event listeners for all sorter widgets
- function enableUI() {
- var i,
- el,
- ithSorter = function ithSorter(i) {
- var col = cols[i];
-
- return function () {
- var desc = col.defaultDescSort;
-
- if (currentSort.index === i) {
- desc = !currentSort.desc;
- }
- sortByIndex(i, desc);
- removeSortIndicators();
- currentSort.index = i;
- currentSort.desc = desc;
- addSortIndicators();
- };
- };
- for (i =0 ; i < cols.length; i += 1) {
- if (cols[i].sortable) {
- el = getNthColumn(i).querySelector('.sorter');
- if (el.addEventListener) {
- el.addEventListener('click', ithSorter(i));
- } else {
- el.attachEvent('onclick', ithSorter(i));
- }
- }
- }
- }
- // adds sorting functionality to the UI
- return function () {
- if (!getTable()) {
- return;
- }
- cols = loadColumns();
- loadData(cols);
- addSortIndicators();
- enableUI();
- };
-})();
-
-window.addEventListener('load', addSorting);
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov.info b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov.info
deleted file mode 100644
index 00e08de06..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lcov.info
+++ /dev/null
@@ -1,1452 +0,0 @@
-TN:
-SF:./lib/async.js
-FN:8,(anonymous_1)
-FN:11,(anonymous_2)
-FN:30,(anonymous_3)
-FN:35,only_once
-FN:37,(anonymous_5)
-FN:48,(anonymous_6)
-FN:52,(anonymous_7)
-FN:61,(anonymous_8)
-FN:72,(anonymous_9)
-FN:73,(anonymous_10)
-FN:79,(anonymous_11)
-FN:80,(anonymous_12)
-FN:85,(anonymous_13)
-FN:95,(anonymous_14)
-FN:124,(anonymous_15)
-FN:131,(anonymous_16)
-FN:140,(anonymous_17)
-FN:150,(anonymous_18)
-FN:156,(anonymous_19)
-FN:159,done
-FN:174,(anonymous_21)
-FN:180,(anonymous_22)
-FN:181,(anonymous_23)
-FN:202,(anonymous_24)
-FN:208,(anonymous_25)
-FN:210,(anonymous_26)
-FN:220,replenish
-FN:228,(anonymous_28)
-FN:252,(anonymous_29)
-FN:253,(anonymous_30)
-FN:259,(anonymous_31)
-FN:260,(anonymous_32)
-FN:263,(anonymous_33)
-FN:274,(anonymous_34)
-FN:275,(anonymous_35)
-FN:282,(anonymous_36)
-FN:285,(anonymous_37)
-FN:288,(anonymous_38)
-FN:312,(anonymous_39)
-FN:316,(anonymous_40)
-FN:318,(anonymous_41)
-FN:319,(anonymous_42)
-FN:329,replenish
-FN:338,(anonymous_44)
-FN:341,(anonymous_45)
-FN:360,(anonymous_46)
-FN:361,(anonymous_47)
-FN:366,(anonymous_48)
-FN:367,(anonymous_49)
-FN:372,(anonymous_50)
-FN:373,(anonymous_51)
-FN:380,(anonymous_52)
-FN:381,(anonymous_53)
-FN:385,(anonymous_54)
-FN:386,(anonymous_55)
-FN:392,(anonymous_56)
-FN:393,(anonymous_57)
-FN:397,(anonymous_58)
-FN:404,(anonymous_59)
-FN:408,(anonymous_60)
-FN:414,(anonymous_61)
-FN:415,(anonymous_62)
-FN:416,(anonymous_63)
-FN:420,(anonymous_64)
-FN:429,(anonymous_65)
-FN:430,(anonymous_66)
-FN:438,(anonymous_67)
-FN:440,(anonymous_68)
-FN:443,(anonymous_69)
-FN:444,(anonymous_70)
-FN:450,(anonymous_71)
-FN:451,(anonymous_72)
-FN:453,(anonymous_73)
-FN:464,(anonymous_74)
-FN:466,(anonymous_75)
-FN:469,(anonymous_76)
-FN:470,(anonymous_77)
-FN:476,(anonymous_78)
-FN:477,(anonymous_79)
-FN:479,(anonymous_80)
-FN:487,(anonymous_81)
-FN:488,(anonymous_82)
-FN:489,(anonymous_83)
-FN:498,(anonymous_84)
-FN:505,(anonymous_85)
-FN:506,(anonymous_86)
-FN:507,(anonymous_87)
-FN:514,(anonymous_88)
-FN:521,(anonymous_89)
-FN:522,(anonymous_90)
-FN:523,(anonymous_91)
-FN:530,(anonymous_92)
-FN:537,(anonymous_93)
-FN:538,(anonymous_94)
-FN:539,(anonymous_95)
-FN:547,(anonymous_96)
-FN:552,(anonymous_97)
-FN:556,(anonymous_98)
-FN:563,(anonymous_99)
-FN:574,(anonymous_100)
-FN:577,(anonymous_101)
-FN:585,(anonymous_102)
-FN:587,(anonymous_103)
-FN:592,(anonymous_104)
-FN:602,(anonymous_105)
-FN:604,(anonymous_106)
-FN:611,(anonymous_107)
-FN:636,(anonymous_108)
-FN:637,(anonymous_109)
-FN:645,(anonymous_110)
-FN:656,(anonymous_111)
-FN:667,(anonymous_112)
-FN:668,(anonymous_113)
-FN:669,(anonymous_114)
-FN:670,(anonymous_115)
-FN:678,(anonymous_116)
-FN:687,(anonymous_117)
-FN:696,(anonymous_118)
-FN:697,(anonymous_119)
-FN:711,(anonymous_120)
-FN:720,(anonymous_121)
-FN:723,(anonymous_122)
-FN:725,(anonymous_123)
-FN:737,(anonymous_124)
-FN:738,(anonymous_125)
-FN:746,(anonymous_126)
-FN:752,(anonymous_127)
-FN:756,(anonymous_128)
-FN:760,(anonymous_129)
-FN:763,(anonymous_130)
-FN:765,(anonymous_131)
-FN:777,(anonymous_132)
-FN:778,(anonymous_133)
-FN:786,(anonymous_134)
-FN:792,(anonymous_135)
-FN:793,(anonymous_136)
-FN:794,(anonymous_137)
-FN:800,(anonymous_138)
-FN:808,(anonymous_139)
-FN:810,(anonymous_140)
-FN:817,(anonymous_141)
-FN:819,(anonymous_142)
-FN:820,(anonymous_143)
-FN:824,(anonymous_144)
-FN:831,(anonymous_145)
-FN:833,(anonymous_146)
-FN:845,(anonymous_147)
-FN:846,(anonymous_148)
-FN:860,(anonymous_149)
-FN:862,(anonymous_150)
-FN:874,(anonymous_151)
-FN:875,(anonymous_152)
-FN:889,(anonymous_153)
-FN:896,_insert
-FN:905,(anonymous_155)
-FN:911,(anonymous_156)
-FN:939,(anonymous_157)
-FN:942,(anonymous_158)
-FN:946,(anonymous_159)
-FN:949,(anonymous_160)
-FN:956,(anonymous_161)
-FN:970,(anonymous_162)
-FN:973,(anonymous_163)
-FN:976,(anonymous_164)
-FN:979,(anonymous_165)
-FN:983,(anonymous_166)
-FN:997,(anonymous_167)
-FN:999,_compareTasks
-FN:1003,_binarySearch
-FN:1017,_insert
-FN:1026,(anonymous_171)
-FN:1032,(anonymous_172)
-FN:1052,(anonymous_173)
-FN:1062,(anonymous_174)
-FN:1073,(anonymous_175)
-FN:1077,(anonymous_176)
-FN:1089,process
-FN:1101,(anonymous_178)
-FN:1107,(anonymous_179)
-FN:1111,(anonymous_180)
-FN:1120,(anonymous_181)
-FN:1123,(anonymous_182)
-FN:1130,(anonymous_183)
-FN:1131,(anonymous_184)
-FN:1133,(anonymous_185)
-FN:1142,(anonymous_186)
-FN:1156,(anonymous_187)
-FN:1159,(anonymous_188)
-FN:1162,(anonymous_189)
-FN:1167,(anonymous_190)
-FN:1176,(anonymous_191)
-FN:1191,(anonymous_192)
-FN:1192,(anonymous_193)
-FN:1197,(anonymous_194)
-FN:1205,(anonymous_195)
-FN:1213,(anonymous_196)
-FN:1215,(anonymous_197)
-FN:1219,(anonymous_198)
-FN:1220,(anonymous_199)
-FN:1226,(anonymous_200)
-FN:1232,(anonymous_201)
-FN:1236,(anonymous_202)
-FN:1237,(anonymous_203)
-FN:1241,(anonymous_204)
-FN:1257,(anonymous_205)
-FN:1258,next
-FN:1276,(anonymous_207)
-FNF:207
-FNH:195
-FNDA:1,(anonymous_1)
-FNDA:27,(anonymous_2)
-FNDA:0,(anonymous_3)
-FNDA:162,only_once
-FNDA:162,(anonymous_5)
-FNDA:0,(anonymous_6)
-FNDA:249,(anonymous_7)
-FNDA:76,(anonymous_8)
-FNDA:54,(anonymous_9)
-FNDA:54,(anonymous_10)
-FNDA:4,(anonymous_11)
-FNDA:7,(anonymous_12)
-FNDA:0,(anonymous_13)
-FNDA:237,(anonymous_14)
-FNDA:0,(anonymous_15)
-FNDA:0,(anonymous_16)
-FNDA:219,(anonymous_17)
-FNDA:37,(anonymous_18)
-FNDA:99,(anonymous_19)
-FNDA:95,done
-FNDA:35,(anonymous_21)
-FNDA:79,(anonymous_22)
-FNDA:76,(anonymous_23)
-FNDA:9,(anonymous_24)
-FNDA:27,(anonymous_25)
-FNDA:22,(anonymous_26)
-FNDA:77,replenish
-FNDA:77,(anonymous_28)
-FNDA:5,(anonymous_29)
-FNDA:1,(anonymous_30)
-FNDA:7,(anonymous_31)
-FNDA:7,(anonymous_32)
-FNDA:1,(anonymous_33)
-FNDA:5,(anonymous_34)
-FNDA:1,(anonymous_35)
-FNDA:6,(anonymous_36)
-FNDA:6,(anonymous_37)
-FNDA:0,(anonymous_38)
-FNDA:9,(anonymous_39)
-FNDA:9,(anonymous_40)
-FNDA:9,(anonymous_41)
-FNDA:1,(anonymous_42)
-FNDA:20,replenish
-FNDA:20,(anonymous_44)
-FNDA:0,(anonymous_45)
-FNDA:6,(anonymous_46)
-FNDA:25,(anonymous_47)
-FNDA:13,(anonymous_48)
-FNDA:12,(anonymous_49)
-FNDA:6,(anonymous_50)
-FNDA:20,(anonymous_51)
-FNDA:40,(anonymous_52)
-FNDA:142,(anonymous_53)
-FNDA:3,(anonymous_54)
-FNDA:3,(anonymous_55)
-FNDA:99,(anonymous_56)
-FNDA:97,(anonymous_57)
-FNDA:39,(anonymous_58)
-FNDA:7,(anonymous_59)
-FNDA:13,(anonymous_60)
-FNDA:10,(anonymous_61)
-FNDA:24,(anonymous_62)
-FNDA:24,(anonymous_63)
-FNDA:10,(anonymous_64)
-FNDA:1,(anonymous_65)
-FNDA:3,(anonymous_66)
-FNDA:3,(anonymous_67)
-FNDA:9,(anonymous_68)
-FNDA:9,(anonymous_69)
-FNDA:9,(anonymous_70)
-FNDA:3,(anonymous_71)
-FNDA:3,(anonymous_72)
-FNDA:6,(anonymous_73)
-FNDA:3,(anonymous_74)
-FNDA:9,(anonymous_75)
-FNDA:9,(anonymous_76)
-FNDA:9,(anonymous_77)
-FNDA:3,(anonymous_78)
-FNDA:0,(anonymous_79)
-FNDA:3,(anonymous_80)
-FNDA:5,(anonymous_81)
-FNDA:15,(anonymous_82)
-FNDA:15,(anonymous_83)
-FNDA:0,(anonymous_84)
-FNDA:3,(anonymous_85)
-FNDA:9,(anonymous_86)
-FNDA:9,(anonymous_87)
-FNDA:3,(anonymous_88)
-FNDA:3,(anonymous_89)
-FNDA:9,(anonymous_90)
-FNDA:9,(anonymous_91)
-FNDA:3,(anonymous_92)
-FNDA:2,(anonymous_93)
-FNDA:6,(anonymous_94)
-FNDA:6,(anonymous_95)
-FNDA:2,(anonymous_96)
-FNDA:6,(anonymous_97)
-FNDA:6,(anonymous_98)
-FNDA:13,(anonymous_99)
-FNDA:27,(anonymous_100)
-FNDA:13,(anonymous_101)
-FNDA:25,(anonymous_102)
-FNDA:47,(anonymous_103)
-FNDA:25,(anonymous_104)
-FNDA:34,(anonymous_105)
-FNDA:28,(anonymous_106)
-FNDA:1,(anonymous_107)
-FNDA:54,(anonymous_108)
-FNDA:54,(anonymous_109)
-FNDA:22,(anonymous_110)
-FNDA:3,(anonymous_111)
-FNDA:3,(anonymous_112)
-FNDA:13,(anonymous_113)
-FNDA:7,(anonymous_114)
-FNDA:7,(anonymous_115)
-FNDA:3,(anonymous_116)
-FNDA:8,(anonymous_117)
-FNDA:18,(anonymous_118)
-FNDA:19,(anonymous_119)
-FNDA:18,(anonymous_120)
-FNDA:13,(anonymous_121)
-FNDA:21,(anonymous_122)
-FNDA:21,(anonymous_123)
-FNDA:6,(anonymous_124)
-FNDA:6,(anonymous_125)
-FNDA:2,(anonymous_126)
-FNDA:7,(anonymous_127)
-FNDA:6,(anonymous_128)
-FNDA:10,(anonymous_129)
-FNDA:18,(anonymous_130)
-FNDA:18,(anonymous_131)
-FNDA:3,(anonymous_132)
-FNDA:3,(anonymous_133)
-FNDA:1,(anonymous_134)
-FNDA:9,(anonymous_135)
-FNDA:38,(anonymous_136)
-FNDA:25,(anonymous_137)
-FNDA:46,(anonymous_138)
-FNDA:6,(anonymous_139)
-FNDA:6,(anonymous_140)
-FNDA:3,(anonymous_141)
-FNDA:9,(anonymous_142)
-FNDA:9,(anonymous_143)
-FNDA:3,(anonymous_144)
-FNDA:6,(anonymous_145)
-FNDA:5,(anonymous_146)
-FNDA:10,(anonymous_147)
-FNDA:10,(anonymous_148)
-FNDA:6,(anonymous_149)
-FNDA:5,(anonymous_150)
-FNDA:10,(anonymous_151)
-FNDA:10,(anonymous_152)
-FNDA:20,(anonymous_153)
-FNDA:45,_insert
-FNDA:2,(anonymous_155)
-FNDA:56,(anonymous_156)
-FNDA:37,(anonymous_157)
-FNDA:1,(anonymous_158)
-FNDA:8,(anonymous_159)
-FNDA:132,(anonymous_160)
-FNDA:63,(anonymous_161)
-FNDA:37,(anonymous_162)
-FNDA:4,(anonymous_163)
-FNDA:7,(anonymous_164)
-FNDA:3,(anonymous_165)
-FNDA:4,(anonymous_166)
-FNDA:2,(anonymous_167)
-FNDA:10,_compareTasks
-FNDA:8,_binarySearch
-FNDA:8,_insert
-FNDA:0,(anonymous_171)
-FNDA:8,(anonymous_172)
-FNDA:8,(anonymous_173)
-FNDA:5,(anonymous_174)
-FNDA:41,(anonymous_175)
-FNDA:44,(anonymous_176)
-FNDA:62,process
-FNDA:44,(anonymous_178)
-FNDA:21,(anonymous_179)
-FNDA:44,(anonymous_180)
-FNDA:10,(anonymous_181)
-FNDA:0,(anonymous_182)
-FNDA:2,(anonymous_183)
-FNDA:6,(anonymous_184)
-FNDA:6,(anonymous_185)
-FNDA:8,(anonymous_186)
-FNDA:7,(anonymous_187)
-FNDA:9,(anonymous_188)
-FNDA:11,(anonymous_189)
-FNDA:4,(anonymous_190)
-FNDA:6,(anonymous_191)
-FNDA:2,(anonymous_192)
-FNDA:4,(anonymous_193)
-FNDA:3,(anonymous_194)
-FNDA:2,(anonymous_195)
-FNDA:6,(anonymous_196)
-FNDA:6,(anonymous_197)
-FNDA:14,(anonymous_198)
-FNDA:14,(anonymous_199)
-FNDA:6,(anonymous_200)
-FNDA:3,(anonymous_201)
-FNDA:3,(anonymous_202)
-FNDA:3,(anonymous_203)
-FNDA:9,(anonymous_204)
-FNDA:1,(anonymous_205)
-FNDA:51,next
-FNDA:0,(anonymous_207)
-DA:8,1
-DA:10,1
-DA:11,1
-DA:14,1
-DA:16,1
-DA:17,0
-DA:19,1
-DA:20,1
-DA:23,0
-DA:26,1
-DA:27,1
-DA:30,1
-DA:31,0
-DA:32,0
-DA:35,1
-DA:36,162
-DA:37,162
-DA:38,162
-DA:39,158
-DA:40,158
-DA:46,1
-DA:48,1
-DA:49,0
-DA:52,1
-DA:53,249
-DA:56,249
-DA:57,402
-DA:61,1
-DA:62,76
-DA:66,76
-DA:67,222
-DA:69,76
-DA:72,1
-DA:73,54
-DA:74,54
-DA:76,54
-DA:79,1
-DA:80,4
-DA:81,7
-DA:85,1
-DA:86,0
-DA:87,0
-DA:88,0
-DA:89,0
-DA:92,0
-DA:95,1
-DA:96,237
-DA:97,237
-DA:98,237
-DA:100,237
-DA:101,148
-DA:102,148
-DA:104,237
-DA:106,237
-DA:107,360
-DA:109,237
-DA:117,1
-DA:118,1
-DA:119,1
-DA:122,1
-DA:123,0
-DA:124,0
-DA:126,0
-DA:128,0
-DA:131,0
-DA:132,0
-DA:134,0
-DA:138,1
-DA:139,1
-DA:140,1
-DA:142,219
-DA:146,0
-DA:150,1
-DA:151,37
-DA:152,37
-DA:153,3
-DA:155,34
-DA:156,34
-DA:157,99
-DA:159,1
-DA:160,95
-DA:161,14
-DA:162,14
-DA:165,81
-DA:166,81
-DA:167,27
-DA:172,1
-DA:174,1
-DA:175,35
-DA:176,35
-DA:177,2
-DA:179,33
-DA:180,33
-DA:181,79
-DA:182,76
-DA:183,10
-DA:184,10
-DA:187,66
-DA:188,66
-DA:189,20
-DA:192,46
-DA:197,33
-DA:199,1
-DA:202,1
-DA:203,9
-DA:204,9
-DA:206,1
-DA:208,1
-DA:210,27
-DA:211,22
-DA:212,22
-DA:213,5
-DA:215,17
-DA:216,17
-DA:217,17
-DA:218,17
-DA:220,17
-DA:221,77
-DA:222,0
-DA:225,77
-DA:226,81
-DA:227,81
-DA:228,81
-DA:229,77
-DA:230,6
-DA:231,6
-DA:232,6
-DA:235,71
-DA:236,71
-DA:237,71
-DA:238,11
-DA:241,60
-DA:252,1
-DA:253,5
-DA:254,5
-DA:255,5
-DA:256,5
-DA:257,1
-DA:259,4
-DA:260,7
-DA:261,7
-DA:262,2
-DA:263,2
-DA:265,5
-DA:266,5
-DA:267,3
-DA:274,1
-DA:275,5
-DA:276,5
-DA:277,5
-DA:278,5
-DA:279,1
-DA:281,4
-DA:282,4
-DA:283,6
-DA:284,6
-DA:285,6
-DA:286,6
-DA:287,1
-DA:288,1
-DA:291,5
-DA:292,5
-DA:293,3
-DA:296,2
-DA:297,0
-DA:300,2
-DA:305,6
-DA:307,4
-DA:312,1
-DA:313,9
-DA:316,1
-DA:318,9
-DA:319,9
-DA:320,9
-DA:321,9
-DA:322,9
-DA:323,2
-DA:325,7
-DA:326,7
-DA:327,7
-DA:329,7
-DA:330,20
-DA:331,0
-DA:334,20
-DA:335,22
-DA:336,22
-DA:337,22
-DA:338,22
-DA:339,20
-DA:340,1
-DA:341,1
-DA:344,19
-DA:345,19
-DA:346,19
-DA:347,6
-DA:350,13
-DA:360,1
-DA:361,6
-DA:362,25
-DA:363,25
-DA:366,1
-DA:367,13
-DA:368,12
-DA:369,12
-DA:372,1
-DA:373,6
-DA:374,20
-DA:375,20
-DA:380,1
-DA:381,40
-DA:382,142
-DA:384,40
-DA:385,1
-DA:386,3
-DA:387,3
-DA:391,39
-DA:392,39
-DA:393,99
-DA:394,97
-DA:395,97
-DA:398,39
-DA:402,1
-DA:403,1
-DA:404,1
-DA:405,7
-DA:408,1
-DA:409,13
-DA:414,1
-DA:415,10
-DA:416,24
-DA:417,24
-DA:418,24
-DA:421,10
-DA:425,1
-DA:427,1
-DA:429,1
-DA:430,1
-DA:431,3
-DA:433,1
-DA:436,1
-DA:438,1
-DA:439,3
-DA:440,3
-DA:441,9
-DA:443,3
-DA:444,9
-DA:445,9
-DA:446,6
-DA:448,9
-DA:451,3
-DA:452,3
-DA:454,6
-DA:458,1
-DA:459,1
-DA:461,1
-DA:462,1
-DA:464,1
-DA:465,3
-DA:466,3
-DA:467,9
-DA:469,3
-DA:470,9
-DA:471,9
-DA:472,3
-DA:474,9
-DA:477,3
-DA:478,0
-DA:480,3
-DA:484,1
-DA:485,1
-DA:487,1
-DA:488,5
-DA:489,15
-DA:490,15
-DA:491,7
-DA:492,7
-DA:495,8
-DA:499,0
-DA:502,1
-DA:503,1
-DA:505,1
-DA:506,3
-DA:507,9
-DA:508,9
-DA:509,2
-DA:510,2
-DA:512,9
-DA:515,3
-DA:519,1
-DA:521,1
-DA:522,3
-DA:523,9
-DA:524,9
-DA:525,3
-DA:526,3
-DA:528,9
-DA:531,3
-DA:535,1
-DA:537,1
-DA:538,2
-DA:539,6
-DA:540,6
-DA:541,0
-DA:544,6
-DA:548,2
-DA:549,0
-DA:552,2
-DA:553,6
-DA:554,6
-DA:556,2
-DA:557,6
-DA:563,1
-DA:564,13
-DA:565,13
-DA:566,13
-DA:567,13
-DA:568,1
-DA:571,12
-DA:573,12
-DA:574,12
-DA:575,27
-DA:577,12
-DA:578,13
-DA:579,19
-DA:580,13
-DA:581,13
-DA:585,12
-DA:586,25
-DA:587,25
-DA:588,47
-DA:592,12
-DA:593,25
-DA:594,7
-DA:596,7
-DA:598,7
-DA:602,12
-DA:603,34
-DA:604,34
-DA:605,28
-DA:606,28
-DA:607,27
-DA:609,28
-DA:610,3
-DA:611,3
-DA:612,1
-DA:614,3
-DA:615,3
-DA:617,3
-DA:620,25
-DA:621,25
-DA:624,34
-DA:626,34
-DA:627,34
-DA:628,34
-DA:629,23
-DA:630,1
-DA:632,22
-DA:633,1
-DA:636,32
-DA:637,54
-DA:638,54
-DA:641,32
-DA:642,17
-DA:645,15
-DA:646,22
-DA:647,13
-DA:648,13
-DA:651,15
-DA:656,1
-DA:657,3
-DA:658,3
-DA:660,3
-DA:661,2
-DA:662,2
-DA:663,2
-DA:666,3
-DA:667,3
-DA:668,3
-DA:669,13
-DA:670,7
-DA:671,7
-DA:675,3
-DA:676,13
-DA:678,3
-DA:679,3
-DA:680,3
-DA:684,3
-DA:687,1
-DA:688,8
-DA:689,8
-DA:690,1
-DA:691,1
-DA:693,7
-DA:694,1
-DA:696,6
-DA:697,18
-DA:698,19
-DA:699,1
-DA:700,1
-DA:703,18
-DA:704,18
-DA:705,18
-DA:706,12
-DA:709,6
-DA:711,18
-DA:712,18
-DA:717,6
-DA:720,1
-DA:721,13
-DA:722,13
-DA:723,11
-DA:724,21
-DA:725,21
-DA:726,21
-DA:727,21
-DA:728,19
-DA:730,21
-DA:736,2
-DA:737,2
-DA:738,6
-DA:739,6
-DA:740,6
-DA:741,4
-DA:743,6
-DA:744,6
-DA:747,2
-DA:752,1
-DA:753,7
-DA:756,1
-DA:757,6
-DA:760,1
-DA:761,10
-DA:762,10
-DA:763,9
-DA:764,18
-DA:765,18
-DA:766,18
-DA:767,18
-DA:768,17
-DA:770,18
-DA:776,1
-DA:777,1
-DA:778,3
-DA:779,3
-DA:780,3
-DA:781,2
-DA:783,3
-DA:784,3
-DA:787,1
-DA:792,1
-DA:793,9
-DA:794,38
-DA:795,25
-DA:796,24
-DA:798,25
-DA:800,38
-DA:801,46
-DA:803,38
-DA:805,9
-DA:808,1
-DA:809,6
-DA:810,6
-DA:811,6
-DA:817,1
-DA:818,3
-DA:819,3
-DA:820,9
-DA:821,9
-DA:822,9
-DA:825,3
-DA:828,1
-DA:829,1
-DA:831,1
-DA:832,6
-DA:833,5
-DA:834,5
-DA:835,0
-DA:837,5
-DA:841,1
-DA:845,1
-DA:846,10
-DA:847,10
-DA:848,0
-DA:850,10
-DA:851,10
-DA:852,8
-DA:855,2
-DA:860,1
-DA:861,6
-DA:862,5
-DA:863,5
-DA:864,0
-DA:866,5
-DA:870,1
-DA:874,1
-DA:875,10
-DA:876,10
-DA:877,0
-DA:879,10
-DA:880,10
-DA:881,8
-DA:884,2
-DA:889,1
-DA:890,20
-DA:891,3
-DA:893,17
-DA:894,1
-DA:896,1
-DA:897,45
-DA:898,17
-DA:900,45
-DA:901,39
-DA:903,45
-DA:905,2
-DA:906,2
-DA:907,1
-DA:911,43
-DA:912,56
-DA:917,56
-DA:918,8
-DA:920,48
-DA:923,56
-DA:924,2
-DA:926,56
-DA:930,19
-DA:931,19
-DA:940,37
-DA:943,1
-DA:944,1
-DA:947,8
-DA:950,132
-DA:951,63
-DA:952,63
-DA:953,1
-DA:955,63
-DA:956,63
-DA:957,63
-DA:958,63
-DA:959,31
-DA:961,63
-DA:962,9
-DA:964,63
-DA:966,63
-DA:967,63
-DA:971,37
-DA:974,4
-DA:977,7
-DA:980,3
-DA:981,3
-DA:984,4
-DA:985,3
-DA:986,3
-DA:989,3
-DA:990,5
-DA:994,19
-DA:997,1
-DA:999,1
-DA:1000,10
-DA:1003,1
-DA:1004,8
-DA:1006,8
-DA:1007,10
-DA:1008,10
-DA:1009,6
-DA:1011,4
-DA:1014,8
-DA:1017,1
-DA:1018,8
-DA:1019,2
-DA:1021,8
-DA:1022,8
-DA:1024,8
-DA:1026,0
-DA:1027,0
-DA:1028,0
-DA:1032,8
-DA:1033,8
-DA:1039,8
-DA:1041,8
-DA:1042,0
-DA:1044,8
-DA:1049,2
-DA:1052,2
-DA:1053,8
-DA:1057,2
-DA:1059,2
-DA:1062,1
-DA:1063,5
-DA:1066,5
-DA:1074,41
-DA:1075,40
-DA:1077,41
-DA:1078,44
-DA:1082,44
-DA:1083,44
-DA:1084,0
-DA:1087,41
-DA:1090,62
-DA:1091,54
-DA:1092,33
-DA:1093,33
-DA:1094,33
-DA:1097,21
-DA:1101,21
-DA:1102,44
-DA:1105,21
-DA:1106,21
-DA:1107,21
-DA:1108,21
-DA:1110,21
-DA:1111,21
-DA:1112,44
-DA:1113,9
-DA:1117,21
-DA:1121,10
-DA:1124,0
-DA:1127,5
-DA:1130,1
-DA:1131,2
-DA:1132,6
-DA:1133,6
-DA:1134,6
-DA:1135,6
-DA:1136,6
-DA:1137,2
-DA:1138,2
-DA:1141,4
-DA:1142,4
-DA:1143,8
-DA:1150,1
-DA:1151,1
-DA:1156,1
-DA:1157,7
-DA:1158,7
-DA:1159,7
-DA:1160,9
-DA:1162,7
-DA:1163,11
-DA:1164,11
-DA:1165,11
-DA:1166,11
-DA:1167,4
-DA:1168,4
-DA:1171,7
-DA:1172,1
-DA:1175,6
-DA:1176,6
-DA:1177,6
-DA:1178,6
-DA:1179,6
-DA:1180,6
-DA:1181,7
-DA:1186,7
-DA:1187,7
-DA:1188,7
-DA:1191,1
-DA:1192,2
-DA:1193,4
-DA:1197,1
-DA:1198,3
-DA:1199,3
-DA:1200,6
-DA:1202,3
-DA:1205,1
-DA:1206,2
-DA:1207,2
-DA:1208,10
-DA:1210,2
-DA:1213,1
-DA:1214,6
-DA:1215,6
-DA:1216,6
-DA:1217,6
-DA:1218,6
-DA:1219,6
-DA:1220,14
-DA:1221,14
-DA:1222,14
-DA:1223,14
-DA:1227,6
-DA:1232,1
-DA:1233,3
-DA:1236,1
-DA:1237,3
-DA:1238,3
-DA:1239,3
-DA:1240,3
-DA:1241,3
-DA:1242,9
-DA:1246,3
-DA:1247,2
-DA:1248,2
-DA:1251,1
-DA:1254,1
-DA:1255,1
-DA:1257,1
-DA:1258,1
-DA:1259,51
-DA:1260,1
-DA:1261,1
-DA:1263,0
-DA:1265,50
-DA:1267,1
-DA:1271,1
-DA:1272,1
-DA:1275,0
-DA:1276,0
-DA:1277,0
-DA:1282,0
-LF:709
-LH:669
-BRDA:16,1,0,0
-BRDA:16,1,1,1
-BRDA:16,2,0,1
-BRDA:16,2,1,0
-BRDA:19,3,0,1
-BRDA:19,3,1,0
-BRDA:19,4,0,1
-BRDA:19,4,1,1
-BRDA:26,5,0,1
-BRDA:26,5,1,0
-BRDA:38,6,0,4
-BRDA:38,6,1,158
-BRDA:48,7,0,1
-BRDA:48,7,1,0
-BRDA:85,8,0,1
-BRDA:85,8,1,0
-BRDA:88,9,0,0
-BRDA:88,9,1,0
-BRDA:96,10,0,237
-BRDA:96,10,1,89
-BRDA:100,11,0,148
-BRDA:100,11,1,89
-BRDA:102,12,0,42
-BRDA:102,12,1,106
-BRDA:118,13,0,1
-BRDA:118,13,1,0
-BRDA:122,14,0,0
-BRDA:122,14,1,1
-BRDA:122,15,0,1
-BRDA:122,15,1,1
-BRDA:123,16,0,0
-BRDA:123,16,1,0
-BRDA:139,17,0,1
-BRDA:139,17,1,0
-BRDA:151,18,0,37
-BRDA:151,18,1,3
-BRDA:152,19,0,3
-BRDA:152,19,1,34
-BRDA:160,20,0,14
-BRDA:160,20,1,81
-BRDA:166,21,0,27
-BRDA:166,21,1,54
-BRDA:175,22,0,35
-BRDA:175,22,1,1
-BRDA:176,23,0,2
-BRDA:176,23,1,33
-BRDA:182,24,0,10
-BRDA:182,24,1,66
-BRDA:188,25,0,20
-BRDA:188,25,1,46
-BRDA:211,26,0,22
-BRDA:211,26,1,1
-BRDA:212,27,0,5
-BRDA:212,27,1,17
-BRDA:212,28,0,22
-BRDA:212,28,1,19
-BRDA:221,29,0,0
-BRDA:221,29,1,77
-BRDA:225,30,0,158
-BRDA:225,30,1,135
-BRDA:225,30,2,87
-BRDA:229,31,0,6
-BRDA:229,31,1,71
-BRDA:237,32,0,11
-BRDA:237,32,1,60
-BRDA:253,33,0,5
-BRDA:253,33,1,1
-BRDA:254,34,0,5
-BRDA:254,34,1,4
-BRDA:256,35,0,1
-BRDA:256,35,1,4
-BRDA:261,36,0,2
-BRDA:261,36,1,5
-BRDA:266,37,0,3
-BRDA:266,37,1,2
-BRDA:275,38,0,5
-BRDA:275,38,1,1
-BRDA:278,39,0,1
-BRDA:278,39,1,4
-BRDA:286,40,0,1
-BRDA:286,40,1,5
-BRDA:292,41,0,3
-BRDA:292,41,1,2
-BRDA:296,42,0,0
-BRDA:296,42,1,2
-BRDA:319,43,0,9
-BRDA:319,43,1,1
-BRDA:322,44,0,2
-BRDA:322,44,1,7
-BRDA:322,45,0,9
-BRDA:322,45,1,8
-BRDA:330,46,0,0
-BRDA:330,46,1,20
-BRDA:334,47,0,42
-BRDA:334,47,1,35
-BRDA:339,48,0,1
-BRDA:339,48,1,19
-BRDA:346,49,0,6
-BRDA:346,49,1,13
-BRDA:384,50,0,1
-BRDA:384,50,1,39
-BRDA:421,51,0,10
-BRDA:421,51,1,7
-BRDA:445,52,0,6
-BRDA:445,52,1,3
-BRDA:471,53,0,3
-BRDA:471,53,1,6
-BRDA:490,54,0,7
-BRDA:490,54,1,8
-BRDA:508,55,0,2
-BRDA:508,55,1,7
-BRDA:524,56,0,3
-BRDA:524,56,1,6
-BRDA:540,57,0,0
-BRDA:540,57,1,6
-BRDA:548,58,0,0
-BRDA:548,58,1,2
-BRDA:554,59,0,3
-BRDA:554,59,1,3
-BRDA:554,60,0,3
-BRDA:554,60,1,0
-BRDA:564,61,0,13
-BRDA:564,61,1,4
-BRDA:567,62,0,1
-BRDA:567,62,1,12
-BRDA:579,63,0,13
-BRDA:579,63,1,6
-BRDA:593,64,0,7
-BRDA:593,64,1,18
-BRDA:603,65,0,20
-BRDA:603,65,1,14
-BRDA:606,66,0,27
-BRDA:606,66,1,1
-BRDA:609,67,0,3
-BRDA:609,67,1,25
-BRDA:624,68,0,34
-BRDA:624,68,1,0
-BRDA:629,69,0,1
-BRDA:629,69,1,22
-BRDA:632,70,0,1
-BRDA:632,70,1,21
-BRDA:632,71,0,22
-BRDA:632,71,1,5
-BRDA:637,72,0,54
-BRDA:637,72,1,30
-BRDA:638,73,0,54
-BRDA:638,73,1,43
-BRDA:641,74,0,17
-BRDA:641,74,1,15
-BRDA:646,75,0,13
-BRDA:646,75,1,9
-BRDA:660,76,0,2
-BRDA:660,76,1,1
-BRDA:666,77,0,3
-BRDA:666,77,1,0
-BRDA:671,78,0,7
-BRDA:671,78,1,5
-BRDA:680,79,0,3
-BRDA:680,79,1,2
-BRDA:684,80,0,2
-BRDA:684,80,1,1
-BRDA:688,81,0,8
-BRDA:688,81,1,3
-BRDA:689,82,0,1
-BRDA:689,82,1,7
-BRDA:693,83,0,1
-BRDA:693,83,1,6
-BRDA:698,84,0,1
-BRDA:698,84,1,18
-BRDA:705,85,0,12
-BRDA:705,85,1,6
-BRDA:721,86,0,13
-BRDA:721,86,1,2
-BRDA:722,87,0,11
-BRDA:722,87,1,2
-BRDA:724,88,0,21
-BRDA:724,88,1,0
-BRDA:727,89,0,19
-BRDA:727,89,1,2
-BRDA:740,90,0,4
-BRDA:740,90,1,2
-BRDA:761,91,0,10
-BRDA:761,91,1,1
-BRDA:762,92,0,9
-BRDA:762,92,1,1
-BRDA:764,93,0,18
-BRDA:764,93,1,0
-BRDA:767,94,0,17
-BRDA:767,94,1,1
-BRDA:780,95,0,2
-BRDA:780,95,1,1
-BRDA:795,96,0,24
-BRDA:795,96,1,1
-BRDA:801,97,0,29
-BRDA:801,97,1,17
-BRDA:821,98,0,9
-BRDA:821,98,1,3
-BRDA:832,99,0,5
-BRDA:832,99,1,1
-BRDA:834,100,0,0
-BRDA:834,100,1,5
-BRDA:847,101,0,0
-BRDA:847,101,1,10
-BRDA:851,102,0,8
-BRDA:851,102,1,2
-BRDA:861,103,0,5
-BRDA:861,103,1,1
-BRDA:863,104,0,0
-BRDA:863,104,1,5
-BRDA:876,105,0,0
-BRDA:876,105,1,10
-BRDA:880,106,0,8
-BRDA:880,106,1,2
-BRDA:890,107,0,3
-BRDA:890,107,1,17
-BRDA:893,108,0,1
-BRDA:893,108,1,16
-BRDA:897,109,0,17
-BRDA:897,109,1,28
-BRDA:900,110,0,39
-BRDA:900,110,1,6
-BRDA:903,111,0,2
-BRDA:903,111,1,43
-BRDA:906,112,0,1
-BRDA:906,112,1,1
-BRDA:914,113,0,23
-BRDA:914,113,1,33
-BRDA:917,114,0,8
-BRDA:917,114,1,48
-BRDA:923,115,0,2
-BRDA:923,115,1,54
-BRDA:923,116,0,56
-BRDA:923,116,1,9
-BRDA:950,117,0,63
-BRDA:950,117,1,69
-BRDA:950,118,0,132
-BRDA:950,118,1,125
-BRDA:950,118,2,103
-BRDA:952,119,0,1
-BRDA:952,119,1,62
-BRDA:952,120,0,63
-BRDA:952,120,1,5
-BRDA:958,121,0,31
-BRDA:958,121,1,32
-BRDA:961,122,0,9
-BRDA:961,122,1,54
-BRDA:961,123,0,63
-BRDA:961,123,1,34
-BRDA:980,124,0,0
-BRDA:980,124,1,3
-BRDA:984,125,0,1
-BRDA:984,125,1,3
-BRDA:1008,126,0,6
-BRDA:1008,126,1,4
-BRDA:1018,127,0,2
-BRDA:1018,127,1,6
-BRDA:1021,128,0,8
-BRDA:1021,128,1,0
-BRDA:1024,129,0,0
-BRDA:1024,129,1,8
-BRDA:1027,130,0,0
-BRDA:1027,130,1,0
-BRDA:1036,131,0,8
-BRDA:1036,131,1,0
-BRDA:1041,132,0,0
-BRDA:1041,132,1,8
-BRDA:1041,133,0,8
-BRDA:1041,133,1,0
-BRDA:1074,134,0,40
-BRDA:1074,134,1,1
-BRDA:1080,135,0,9
-BRDA:1080,135,1,35
-BRDA:1083,136,0,0
-BRDA:1083,136,1,44
-BRDA:1083,137,0,44
-BRDA:1083,137,1,0
-BRDA:1090,138,0,8
-BRDA:1090,138,1,54
-BRDA:1091,139,0,33
-BRDA:1091,139,1,21
-BRDA:1092,140,0,3
-BRDA:1092,140,1,30
-BRDA:1092,141,0,33
-BRDA:1092,141,1,30
-BRDA:1097,142,0,21
-BRDA:1097,142,1,0
-BRDA:1105,143,0,0
-BRDA:1105,143,1,21
-BRDA:1112,144,0,9
-BRDA:1112,144,1,35
-BRDA:1135,145,0,6
-BRDA:1135,145,1,0
-BRDA:1136,146,0,2
-BRDA:1136,146,1,4
-BRDA:1137,147,0,2
-BRDA:1137,147,1,0
-BRDA:1141,148,0,4
-BRDA:1141,148,1,0
-BRDA:1159,149,0,7
-BRDA:1159,149,1,6
-BRDA:1166,150,0,4
-BRDA:1166,150,1,7
-BRDA:1171,151,0,1
-BRDA:1171,151,1,6
-BRDA:1193,152,0,4
-BRDA:1193,152,1,1
-BRDA:1246,153,0,2
-BRDA:1246,153,1,1
-BRDA:1259,154,0,1
-BRDA:1259,154,1,50
-BRDA:1260,155,0,1
-BRDA:1260,155,1,0
-BRDA:1271,156,0,1
-BRDA:1271,156,1,0
-BRDA:1271,157,0,1
-BRDA:1271,157,1,1
-BRDA:1275,158,0,0
-BRDA:1275,158,1,0
-BRDA:1275,159,0,0
-BRDA:1275,159,1,0
-BRF:320
-BRH:272
-end_of_record
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/async.js.html b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/async.js.html
deleted file mode 100644
index d1ba21268..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/async.js.html
+++ /dev/null
@@ -1,3597 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for lib/async.js</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="../prettify.css">
- <link rel="stylesheet" href="../base.css">
- <style type='text/css'>
- div.coverage-summary .sorter {
- background-image: url(../sort-arrow-sprite.png);
- }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">lib/async.js</span></h1>
- <h2>
- Statements: <span class="metric">94.88% <small>(611 / 644)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Branches: <span class="metric">86.91% <small>(239 / 275)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Functions: <span class="metric">95.41% <small>(187 / 196)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Lines: <span class="metric">94.85% <small>(608 / 641)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
- </h2>
- <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">lib/</a> &#187; async.js</div>
-</div>
-<div class="body">
-<pre><table class="coverage">
-<tr><td class="line-count">1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919
-920
-921
-922
-923
-924
-925
-926
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936
-937
-938
-939
-940
-941
-942
-943
-944
-945
-946
-947
-948
-949
-950
-951
-952
-953
-954
-955
-956
-957
-958
-959
-960
-961
-962
-963
-964
-965
-966
-967
-968
-969
-970
-971
-972
-973
-974
-975
-976
-977
-978
-979
-980
-981
-982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
-996
-997
-998
-999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178
-1179
-1180
-1181
-1182
-1183
-1184
-1185</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">200</span>
-<span class="cline-any cline-yes">200</span>
-<span class="cline-any cline-yes">200</span>
-<span class="cline-any cline-yes">196</span>
-<span class="cline-any cline-yes">196</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">168</span>
-<span class="cline-any cline-yes">168</span>
-<span class="cline-any cline-yes">176</span>
-<span class="cline-any cline-yes">157</span>
-<span class="cline-any cline-yes">157</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">138</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">39</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">328</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">328</span>
-<span class="cline-any cline-yes">480</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">104</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">104</span>
-<span class="cline-any cline-yes">148</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">104</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-yes">76</span>
-<span class="cline-any cline-yes">61</span>
-<span class="cline-any cline-yes">61</span>
-<span class="cline-any cline-yes">243</span>
-<span class="cline-any cline-yes">243</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">53</span>
-<span class="cline-any cline-yes">53</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-yes">151</span>
-<span class="cline-any cline-yes">151</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-yes">50299</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50259</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">59</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50236</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">45</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">39</span>
-<span class="cline-any cline-yes">109</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">105</span>
-<span class="cline-any cline-yes">16</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">31</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">123</span>
-<span class="cline-any cline-yes">123</span>
-<span class="cline-any cline-yes">123</span>
-<span class="cline-any cline-yes">29</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">94</span>
-<span class="cline-any cline-yes">90</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">79</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">59</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">94</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">44</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">32</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">29</span>
-<span class="cline-any cline-yes">29</span>
-<span class="cline-any cline-yes">29</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">29</span>
-<span class="cline-any cline-yes">119</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">107</span>
-<span class="cline-any cline-yes">173</span>
-<span class="cline-any cline-yes">173</span>
-<span class="cline-any cline-yes">71</span>
-<span class="cline-any cline-yes">71</span>
-<span class="cline-any cline-yes">17</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">71</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">102</span>
-<span class="cline-any cline-yes">102</span>
-<span class="cline-any cline-yes">97</span>
-<span class="cline-any cline-yes">97</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">90</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">69</span>
-<span class="cline-any cline-yes">67</span>
-<span class="cline-any cline-yes">67</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">26</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">14</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">28</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">47</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">36</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">30</span>
-<span class="cline-any cline-yes">30</span>
-<span class="cline-any cline-yes">29</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">30</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">36</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">36</span>
-<span class="cline-any cline-yes">36</span>
-<span class="cline-any cline-yes">36</span>
-<span class="cline-any cline-yes">23</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">56</span>
-<span class="cline-any cline-yes">54</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">34</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">22</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-yes">12</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">18</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-yes">23</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">13</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">19</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">25</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">38</span>
-<span class="cline-any cline-yes">46</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">38</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">92</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">91</span>
-<span class="cline-any cline-yes">91</span>
-<span class="cline-any cline-yes">84</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">91</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">105</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">105</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">97</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">105</span>
-<span class="cline-any cline-yes">28</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">105</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">26</span>
-<span class="cline-any cline-yes">26</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">84</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">207</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">112</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">30</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">112</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-yes">27</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">89</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">5</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">26</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">21</span>
-<span class="cline-any cline-yes">63</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">20</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">8</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">11</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">4</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">10</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">7</span>
-<span class="cline-any cline-yes">16</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-yes">15</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">6</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">9</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">3</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">50052</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50050</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">2</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">24</span>
-<span class="cline-any cline-yes">50072</span>
-<span class="cline-any cline-yes">50072</span>
-<span class="cline-any cline-yes">50072</span>
-<span class="cline-any cline-yes">50070</span>
-<span class="cline-any cline-yes">50070</span>
-<span class="cline-any cline-yes">50017</span>
-<span class="cline-any cline-yes">50017</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">53</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">50072</span>
-<span class="cline-any cline-yes">50072</span>
-<span class="cline-any cline-yes">50072</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-yes">1</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-no">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span>
-<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
- * async
- * https://github.com/caolan/async
- *
- * Copyright 2010-2014 Caolan McMahon
- * Released under the MIT license
- */
-(function () {
-&nbsp;
- var async = {};
- function noop() {}
-&nbsp;
- // global on the server, window in the browser
- var root, previous_async;
-&nbsp;
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof window == 'object' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this === window)</span> {
-<span class="cstat-no" title="statement not covered" > root = window;</span>
- }
- else <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof global == 'object' &amp;&amp; this === global) {
- root = global;
- }
- else {
-<span class="cstat-no" title="statement not covered" > root = this;</span>
- }
-&nbsp;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (root != null) {
- previous_async = root.async;
- }
-&nbsp;
- async.noConflict = <span class="fstat-no" title="function not covered" >function () {</span>
-<span class="cstat-no" title="statement not covered" > root.async = previous_async;</span>
-<span class="cstat-no" title="statement not covered" > return async;</span>
- };
-&nbsp;
- function only_once(fn) {
- var called = false;
- return function() {
- if (called) throw new Error("Callback was already called.");
- called = true;
- fn.apply(this, arguments);
- };
- }
-&nbsp;
- function _once(fn) {
- var called = false;
- return function() {
- if (called) return;
- called = true;
- fn.apply(this, arguments);
- };
- }
-&nbsp;
- //// cross-browser compatiblity functions ////
-&nbsp;
- var _toString = Object.prototype.toString;
-&nbsp;
- var _isArray = Array.isArray || <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >function (obj) {</span></span>
-<span class="cstat-no" title="statement not covered" > return _toString.call(obj) === '[object Array]';</span>
- };
-&nbsp;
- function _isArrayLike(arr) {
- return _isArray(arr) || (
- // has a positive integer length property
- typeof arr.length === "number" &amp;&amp;
- arr.length &gt;= 0 &amp;&amp;
- arr.length % 1 === 0
- );
- }
-&nbsp;
- function _each(coll, iterator) {
- return _isArrayLike(coll) ?
- _arrayEach(coll, iterator) :
- _forEachOf(coll, iterator);
- }
-&nbsp;
- function _arrayEach(arr, iterator) {
- var index = -1,
- length = arr.length;
-&nbsp;
- while (++index &lt; length) {
- iterator(arr[index], index, arr);
- }
- }
-&nbsp;
- function _map(arr, iterator) {
- var index = -1,
- length = arr.length,
- result = Array(length);
-&nbsp;
- while (++index &lt; length) {
- result[index] = iterator(arr[index], index, arr);
- }
- return result;
- }
-&nbsp;
- function _reduce(arr, iterator, memo) {
- _arrayEach(arr, function (x, i, a) {
- memo = iterator(memo, x, i, a);
- });
- return memo;
- }
-&nbsp;
- function _forEachOf(object, iterator) {
- _arrayEach(_keys(object), function (key) {
- iterator(object[key], key);
- });
- }
-&nbsp;
- var _keys = Object.keys || <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >function (obj) {</span></span>
-<span class="cstat-no" title="statement not covered" > var keys = [];</span>
-<span class="cstat-no" title="statement not covered" > for (var k in obj) {</span>
-<span class="cstat-no" title="statement not covered" > if (obj.hasOwnProperty(k)) {</span>
-<span class="cstat-no" title="statement not covered" > keys.push(k);</span>
- }
- }
-<span class="cstat-no" title="statement not covered" > return keys;</span>
- };
-&nbsp;
- function _keyIterator(coll) {
- var i = -1;
- var len;
- var keys;
- if (_isArrayLike(coll)) {
- len = coll.length;
- return function next() {
- i++;
- return i &lt; len ? i : null;
- };
- } else {
- keys = _keys(coll);
- len = keys.length;
- return function next() {
- i++;
- return i &lt; len ? keys[i] : null;
- };
- }
- }
-&nbsp;
- function _baseSlice(arr, start) {
- start = start || 0;
- var index = -1;
- var length = arr.length;
-&nbsp;
- if (start) {
- length -= start;
- length = length &lt; 0 ? 0 : length;
- }
- var result = Array(length);
-&nbsp;
- while (++index &lt; length) {
- result[index] = arr[index + start];
- }
- return result;
- }
-&nbsp;
- function _withoutIndex(iterator) {
- return function (value, index, callback) {
- return iterator(value, callback);
- };
- }
-&nbsp;
- //// exported async module functions ////
-&nbsp;
- //// nextTick implementation with browser-compatible fallback ////
-&nbsp;
- // capture the global reference to guard against fakeTimer mocks
- var _setImmediate;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof setImmediate === 'function') {
- _setImmediate = setImmediate;
- }
-&nbsp;
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof process === 'undefined' || !(process.nextTick)) {
-<span class="cstat-no" title="statement not covered" > if (_setImmediate) {</span>
-<span class="cstat-no" title="statement not covered" > async.nextTick = <span class="fstat-no" title="function not covered" >function (fn) {</span></span>
- // not a direct alias for IE10 compatibility
-<span class="cstat-no" title="statement not covered" > _setImmediate(fn);</span>
- };
-<span class="cstat-no" title="statement not covered" > async.setImmediate = async.nextTick;</span>
- }
- else {
-<span class="cstat-no" title="statement not covered" > async.nextTick = <span class="fstat-no" title="function not covered" >function (fn) {</span></span>
-<span class="cstat-no" title="statement not covered" > setTimeout(fn, 0);</span>
- };
-<span class="cstat-no" title="statement not covered" > async.setImmediate = async.nextTick;</span>
- }
- }
- else {
- async.nextTick = process.nextTick;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (_setImmediate) {
- async.setImmediate = function (fn) {
- // not a direct alias for IE10 compatibility
- _setImmediate(fn);
- };
- }
- else {
-<span class="cstat-no" title="statement not covered" > async.setImmediate = async.nextTick;</span>
- }
- }
-&nbsp;
- async.forEach =
- async.each = function (arr, iterator, callback) {
- return async.eachOf(arr, _withoutIndex(iterator), callback);
- };
-&nbsp;
- async.forEachSeries =
- async.eachSeries = function (arr, iterator, callback) {
- return async.eachOfSeries(arr, _withoutIndex(iterator), callback);
- };
-&nbsp;
-&nbsp;
- async.forEachLimit =
- async.eachLimit = function (arr, limit, iterator, callback) {
- return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback);
- };
-&nbsp;
- async.forEachOf =
- async.eachOf = function (object, iterator, callback) {
- callback = _once(callback || noop);
- object = object || [];
- var size = object.length || _keys(object).length;
- var completed = 0;
- if (!size) {
- return callback(null);
- }
- _each(object, function (value, key) {
- iterator(object[key], key, only_once(done));
- });
- function done(err) {
- if (err) {
- callback(err);
- }
- else {
- completed += 1;
- if (completed &gt;= size) {
- callback(null);
- }
- }
- }
- };
-&nbsp;
- async.forEachOfSeries =
- async.eachOfSeries = function (obj, iterator, callback) {
- callback = _once(callback || noop);
- obj = obj || [];
- var nextKey = _keyIterator(obj);
- function iterate() {
- var sync = true;
- var key = nextKey();
- if (key === null) {
- return callback(null);
- }
- iterator(obj[key], key, function (err) {
- if (err) {
- callback(err);
- }
- else {
- if (sync) {
- async.nextTick(iterate);
- }
- else {
- iterate();
- }
- }
- });
- sync = false;
- }
- iterate();
- };
-&nbsp;
-&nbsp;
-&nbsp;
- async.forEachOfLimit =
- async.eachOfLimit = function (obj, limit, iterator, callback) {
- _eachOfLimit(limit)(obj, iterator, callback);
- };
-&nbsp;
- function _eachOfLimit(limit) {
-&nbsp;
- return function (obj, iterator, callback) {
- callback = _once(callback || noop);
- obj = obj || [];
- var nextKey = _keyIterator(obj);
- if (limit &lt;= 0) {
- return callback(null);
- }
- var done = false;
- var running = 0;
- var errored = false;
-&nbsp;
- (function replenish () {
- if (done &amp;&amp; running &lt;= 0) {
- return callback(null);
- }
-&nbsp;
- while (running &lt; limit &amp;&amp; !errored) {
- var key = nextKey();
- if (key === null) {
- done = true;
- if (running &lt;= 0) {
- callback(null);
- }
- return;
- }
- running += 1;
- iterator(obj[key], key, function (err) {
- running -= 1;
- if (err) {
- callback(err);
- errored = true;
- }
- else {
- replenish();
- }
- });
- }
- })();
- };
- }
-&nbsp;
-&nbsp;
- function doParallel(fn) {
- return function (obj, iterator, callback) {
- return fn(async.eachOf, obj, iterator, callback);
- };
- }
- function doParallelLimit(limit, fn) {
- return function (obj, iterator, callback) {
- return fn(_eachOfLimit(limit), obj, iterator, callback);
- };
- }
- function doSeries(fn) {
- return function (obj, iterator, callback) {
- return fn(async.eachOfSeries, obj, iterator, callback);
- };
- }
-&nbsp;
- function _asyncMap(eachfn, arr, iterator, callback) {
- callback = _once(callback || noop);
- var results = [];
- eachfn(arr, function (value, index, callback) {
- iterator(value, function (err, v) {
- results[index] = v;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
-&nbsp;
- async.map = doParallel(_asyncMap);
- async.mapSeries = doSeries(_asyncMap);
- async.mapLimit = function (arr, limit, iterator, callback) {
- return _mapLimit(limit)(arr, iterator, callback);
- };
-&nbsp;
- function _mapLimit(limit) {
- return doParallelLimit(limit, _asyncMap);
- }
-&nbsp;
- // reduce only has a series version, as doing reduce in parallel won't
- // work in many situations.
- async.inject =
- async.foldl =
- async.reduce = function (arr, memo, iterator, callback) {
- async.eachOfSeries(arr, function (x, i, callback) {
- iterator(memo, x, function (err, v) {
- memo = v;
- callback(err);
- });
- }, function (err) {
- callback(err || null, memo);
- });
- };
-&nbsp;
- async.foldr =
- async.reduceRight = function (arr, memo, iterator, callback) {
- var reversed = _map(arr, function (x) {
- return x;
- }).reverse();
- async.reduce(reversed, memo, iterator, callback);
- };
-&nbsp;
- function _filter(eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, index, callback) {
- iterator(x.value, function (v) {
- if (v) {
- results.push(x);
- }
- callback();
- });
- }, function () {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- }
-&nbsp;
- async.select =
- async.filter = doParallel(_filter);
-&nbsp;
- async.selectSeries =
- async.filterSeries = doSeries(_filter);
-&nbsp;
- function _reject(eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, index, callback) {
- iterator(x.value, function (v) {
- if (!v) {
- results.push(x);
- }
- callback();
- });
- }, function () {
- callback(_map(results.sort(<span class="fstat-no" title="function not covered" >function (a, b) {</span>
-<span class="cstat-no" title="statement not covered" > return a.index - b.index;</span>
- }), function (x) {
- return x.value;
- }));
- });
- }
- async.reject = doParallel(_reject);
- async.rejectSeries = doSeries(_reject);
-&nbsp;
- function _detect(eachfn, arr, iterator, main_callback) {
- eachfn(arr, function (x, index, callback) {
- iterator(x, function (result) {
- if (result) {
- main_callback(x);
- main_callback = noop;
- }
- else {
- callback();
- }
- });
- }, <span class="fstat-no" title="function not covered" >function () {</span>
-<span class="cstat-no" title="statement not covered" > main_callback();</span>
- });
- }
- async.detect = doParallel(_detect);
- async.detectSeries = doSeries(_detect);
-&nbsp;
- async.any =
- async.some = function (arr, iterator, main_callback) {
- async.eachOf(arr, function (x, _, callback) {
- iterator(x, function (v) {
- if (v) {
- main_callback(true);
- main_callback = noop;
- }
- callback();
- });
- }, function () {
- main_callback(false);
- });
- };
-&nbsp;
- async.all =
- async.every = function (arr, iterator, main_callback) {
- async.eachOf(arr, function (x, _, callback) {
- iterator(x, function (v) {
- if (!v) {
- main_callback(false);
- main_callback = noop;
- }
- callback();
- });
- }, function () {
- main_callback(true);
- });
- };
-&nbsp;
- async.sortBy = function (arr, iterator, callback) {
- async.map(arr, function (x, callback) {
- iterator(x, function (err, criteria) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > callback(err);</span>
- }
- else {
- callback(null, {value: x, criteria: criteria});
- }
- });
- }, function (err, results) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- else {
- callback(null, _map(results.sort(comparator), function (x) {
- return x.value;
- }));
- }
-&nbsp;
- });
-&nbsp;
- function comparator(left, right) {
- var a = left.criteria, b = right.criteria;
- return a &lt; b ? -1 : a &gt; b ? 1 : <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
- }
- };
-&nbsp;
- async.auto = function (tasks, callback) {
- callback = _once(callback || noop);
- var keys = _keys(tasks);
- var remainingTasks = keys.length;
- if (!remainingTasks) {
- return callback(null);
- }
-&nbsp;
- var results = {};
-&nbsp;
- var listeners = [];
- function addListener(fn) {
- listeners.unshift(fn);
- }
- function removeListener(fn) {
- for (var i = 0; i &lt; listeners.length; i += 1) {
- if (listeners[i] === fn) {
- listeners.splice(i, 1);
- return;
- }
- }
- }
- function taskComplete() {
- remainingTasks--;
- _arrayEach(listeners.slice(0), function (fn) {
- fn();
- });
- }
-&nbsp;
- addListener(function () {
- if (!remainingTasks) {
- callback(null, results);
- }
- });
-&nbsp;
- _arrayEach(keys, function (k) {
- var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
- function taskCallback(err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- if (err) {
- var safeResults = {};
- _arrayEach(_keys(results), function(rkey) {
- safeResults[rkey] = results[rkey];
- });
- safeResults[k] = args;
- callback(err, safeResults);
- }
- else {
- results[k] = args;
- async.setImmediate(taskComplete);
- }
- }
- var requires = task.slice(0, Math.abs(task.length - 1)) || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
- // prevent dead-locks
- var len = requires.length;
- var dep;
- while (len--) {
- if (!(dep = tasks[requires[len]])) {
- throw new Error('Has inexistant dependency');
- }
- if (_isArray(dep) &amp;&amp; !!~dep.indexOf(k)) {
- throw new Error('Has cyclic dependencies');
- }
- }
- function ready() {
- return _reduce(requires, function (a, x) {
- return (a &amp;&amp; results.hasOwnProperty(x));
- }, true) &amp;&amp; !results.hasOwnProperty(k);
- }
- if (ready()) {
- task[task.length - 1](taskCallback, results);
- }
- else {
- addListener(listener);
- }
- function listener() {
- if (ready()) {
- removeListener(listener);
- task[task.length - 1](taskCallback, results);
- }
- }
- });
- };
-&nbsp;
- async.retry = function(times, task, callback) {
- var DEFAULT_TIMES = 5;
- var attempts = [];
- // Use defaults if times not passed
- if (typeof times === 'function') {
- callback = task;
- task = times;
- times = DEFAULT_TIMES;
- }
- // Make sure times is a number
- times = parseInt(times, 10) || <span class="branch-1 cbranch-no" title="branch not covered" >DEFAULT_TIMES;</span>
-&nbsp;
- function wrappedTask(wrappedCallback, wrappedResults) {
- function retryAttempt(task, finalAttempt) {
- return function(seriesCallback) {
- task(function(err, result){
- seriesCallback(!err || finalAttempt, {err: err, result: result});
- }, wrappedResults);
- };
- }
-&nbsp;
- while (times) {
- attempts.push(retryAttempt(task, !(times-=1)));
- }
- async.series(attempts, function(done, data){
- data = data[data.length - 1];
- (wrappedCallback || callback)(data.err, data.result);
- });
- }
-&nbsp;
- // If a callback is passed, run this as a controll flow
- return callback ? wrappedTask() : wrappedTask;
- };
-&nbsp;
- async.waterfall = function (tasks, callback) {
- callback = _once(callback || noop);
- if (!_isArray(tasks)) {
- var err = new Error('First argument to waterfall must be an array of functions');
- return callback(err);
- }
- if (!tasks.length) {
- return callback();
- }
- function wrapIterator(iterator) {
- return function (err) {
- if (err) {
- callback.apply(null, arguments);
- }
- else {
- var args = _baseSlice(arguments, 1);
- var next = iterator.next();
- if (next) {
- args.push(wrapIterator(next));
- }
- else {
- args.push(callback);
- }
- ensureAsync(iterator).apply(null, args);
- }
- };
- }
- wrapIterator(async.iterator(tasks))();
- };
-&nbsp;
- function _parallel(eachfn, tasks, callback) {
- callback = callback || noop;
- var results = _isArrayLike(tasks) ? [] : {};
-&nbsp;
- eachfn(tasks, function (task, key, callback) {
- task(function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- results[key] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
-&nbsp;
- async.parallel = function (tasks, callback) {
- _parallel(async.eachOf, tasks, callback);
- };
-&nbsp;
- async.parallelLimit = function(tasks, limit, callback) {
- _parallel(_eachOfLimit(limit), tasks, callback);
- };
-&nbsp;
- async.series = function (tasks, callback) {
- callback = callback || noop;
- var results = _isArrayLike(tasks) ? [] : {};
-&nbsp;
- async.eachOfSeries(tasks, function (task, key, callback) {
- task(function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length &lt;= 1) {
- args = args[0];
- }
- results[key] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- };
-&nbsp;
- async.iterator = function (tasks) {
- function makeCallback(index) {
- function fn() {
- if (tasks.length) {
- tasks[index].apply(null, arguments);
- }
- return fn.next();
- }
- fn.next = function () {
- return (index &lt; tasks.length - 1) ? makeCallback(index + 1): null;
- };
- return fn;
- }
- return makeCallback(0);
- };
-&nbsp;
- async.apply = function (fn) {
- var args = _baseSlice(arguments, 1);
- return function () {
- return fn.apply(
- null, args.concat(_baseSlice(arguments))
- );
- };
- };
-&nbsp;
- function _concat(eachfn, arr, fn, callback) {
- var result = [];
- eachfn(arr, function (x, index, cb) {
- fn(x, function (err, y) {
- result = result.concat(y || []);
- cb(err);
- });
- }, function (err) {
- callback(err, result);
- });
- }
- async.concat = doParallel(_concat);
- async.concatSeries = doSeries(_concat);
-&nbsp;
- async.whilst = function (test, iterator, callback) {
- if (test()) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- async.whilst(test, iterator, callback);
- });
- }
- else {
- callback(null);
- }
- };
-&nbsp;
- async.doWhilst = function (iterator, test, callback) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- var args = _baseSlice(arguments, 1);
- if (test.apply(null, args)) {
- async.doWhilst(iterator, test, callback);
- }
- else {
- callback(null);
- }
- });
- };
-&nbsp;
- async.until = function (test, iterator, callback) {
- if (!test()) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- async.until(test, iterator, callback);
- });
- }
- else {
- callback(null);
- }
- };
-&nbsp;
- async.doUntil = function (iterator, test, callback) {
- iterator(function (err) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
-<span class="cstat-no" title="statement not covered" > return callback(err);</span>
- }
- var args = _baseSlice(arguments, 1);
- if (!test.apply(null, args)) {
- async.doUntil(iterator, test, callback);
- }
- else {
- callback(null);
- }
- });
- };
-&nbsp;
- function _queue(worker, concurrency, payload) {
- if (concurrency == null) {
- concurrency = 1;
- }
- else if(concurrency === 0) {
- throw new Error('Concurrency must not be zero');
- }
- function _insert(q, data, pos, callback) {
- if (callback != null &amp;&amp; typeof callback !== "function") {
- throw new Error("task callback must be a function");
- }
- q.started = true;
- if (!_isArray(data)) {
- data = [data];
- }
- if(data.length === 0 &amp;&amp; q.idle()) {
- // call drain immediately if there are no tasks
- return async.setImmediate(function() {
- q.drain();
- });
- }
- _arrayEach(data, function(task) {
- var item = {
- data: task,
- callback: callback || noop
- };
-&nbsp;
- if (pos) {
- q.tasks.unshift(item);
- } else {
- q.tasks.push(item);
- }
-&nbsp;
- if (q.tasks.length === q.concurrency) {
- q.saturated();
- }
- async.setImmediate(q.process);
- });
- }
-&nbsp;
- var workers = 0;
- var q = {
- tasks: [],
- concurrency: concurrency,
- saturated: noop,
- empty: noop,
- drain: noop,
- started: false,
- paused: false,
- push: function (data, callback) {
- _insert(q, data, false, callback);
- },
- kill: function () {
- q.drain = noop;
- q.tasks = [];
- },
- unshift: function (data, callback) {
- _insert(q, data, true, callback);
- },
- process: function () {
- if (!q.paused &amp;&amp; workers &lt; q.concurrency &amp;&amp; q.tasks.length) {
- var tasks = payload ?
- q.tasks.splice(0, payload) :
-<span class="branch-1 cbranch-no" title="branch not covered" > q.tasks.splice(0, q.tasks.length);</span>
-&nbsp;
- var data = _map(tasks, function (task) {
- return task.data;
- });
-&nbsp;
- if (q.tasks.length === 0) {
- q.empty();
- }
- workers += 1;
- var cb = only_once(next);
- worker(data, cb);
- }
-&nbsp;
- function next() {
- workers -= 1;
- var args = arguments;
- _arrayEach(tasks, function (task) {
- task.callback.apply(task, args);
- });
- if (q.tasks.length + workers === 0) {
- q.drain();
- }
- q.process();
- }
- },
- length: function () {
- return q.tasks.length;
- },
- running: function () {
- return workers;
- },
- idle: function() {
- return q.tasks.length + workers === 0;
- },
- pause: function () {
- q.paused = true;
- },
- resume: function () {
- if (q.paused === false) { return; }
- q.paused = false;
- var resumeCount = Math.min(q.concurrency, q.tasks.length);
- // Need to call q.process once per concurrent
- // worker to preserve full concurrency after pause
- for (var w = 1; w &lt;= resumeCount; w++) {
- async.setImmediate(q.process);
- }
- }
- };
- return q;
- }
-&nbsp;
- async.queue = function (worker, concurrency) {
- var q = _queue(function (items, cb) {
- worker(items[0], cb);
- }, concurrency, 1);
-&nbsp;
- return q;
- };
-&nbsp;
- async.priorityQueue = function (worker, concurrency) {
-&nbsp;
- function _compareTasks(a, b){
- return a.priority - b.priority;
- }
-&nbsp;
- function _binarySearch(sequence, item, compare) {
- var beg = -1,
- end = sequence.length - 1;
- while (beg &lt; end) {
- var mid = beg + ((end - beg + 1) &gt;&gt;&gt; 1);
- if (compare(item, sequence[mid]) &gt;= 0) {
- beg = mid;
- } else {
- end = mid - 1;
- }
- }
- return beg;
- }
-&nbsp;
- function _insert(q, data, priority, callback) {
- <span class="missing-if-branch" title="if path not taken" >I</span>if (callback != null &amp;&amp; typeof callback !== "function") {
-<span class="cstat-no" title="statement not covered" > throw new Error("task callback must be a function");</span>
- }
- q.started = true;
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!_isArray(data)) {
- data = [data];
- }
- <span class="missing-if-branch" title="if path not taken" >I</span>if(data.length === 0) {
- // call drain immediately if there are no tasks
-<span class="cstat-no" title="statement not covered" > return async.setImmediate(<span class="fstat-no" title="function not covered" >function() {</span></span>
-<span class="cstat-no" title="statement not covered" > q.drain();</span>
- });
- }
- _arrayEach(data, function(task) {
- var item = {
- data: task,
- priority: priority,
- callback: typeof callback === 'function' ? callback : <span class="branch-1 cbranch-no" title="branch not covered" >noop</span>
- };
-&nbsp;
- q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);
-&nbsp;
- if (q.tasks.length === q.concurrency) {
- q.saturated();
- }
- async.setImmediate(q.process);
- });
- }
-&nbsp;
- // Start with a normal queue
- var q = async.queue(worker, concurrency);
-&nbsp;
- // Override push to accept second parameter representing priority
- q.push = function (data, priority, callback) {
- _insert(q, data, priority, callback);
- };
-&nbsp;
- // Remove unshift function
- delete q.unshift;
-&nbsp;
- return q;
- };
-&nbsp;
- async.cargo = function (worker, payload) {
- return _queue(worker, 1, payload);
- };
-&nbsp;
- function _console_fn(name) {
- return function (fn) {
- var args = _baseSlice(arguments, 1);
- fn.apply(null, args.concat([function (err) {
- var args = _baseSlice(arguments, 1);
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof console !== 'undefined') {
- if (err) {
- <span class="missing-if-branch" title="else path not taken" >E</span>if (console.error) {
- console.error(err);
- }
- }
- else <span class="missing-if-branch" title="else path not taken" >E</span>if (console[name]) {
- _arrayEach(args, function (x) {
- console[name](x);
- });
- }
- }
- }]));
- };
- }
- async.log = _console_fn('log');
- async.dir = _console_fn('dir');
- /*async.info = _console_fn('info');
- async.warn = _console_fn('warn');
- async.error = _console_fn('error');*/
-&nbsp;
- async.memoize = function (fn, hasher) {
- var memo = {};
- var queues = {};
- hasher = hasher || function (x) {
- return x;
- };
- function memoized() {
- var args = _baseSlice(arguments);
- var callback = args.pop();
- var key = hasher.apply(null, args);
- if (key in memo) {
- async.nextTick(function () {
- callback.apply(null, memo[key]);
- });
- }
- else if (key in queues) {
- queues[key].push(callback);
- }
- else {
- queues[key] = [callback];
- fn.apply(null, args.concat([function () {
- memo[key] = _baseSlice(arguments);
- var q = queues[key];
- delete queues[key];
- for (var i = 0, l = q.length; i &lt; l; i++) {
- q[i].apply(null, arguments);
- }
- }]));
- }
- }
- memoized.memo = memo;
- memoized.unmemoized = fn;
- return memoized;
- };
-&nbsp;
- async.unmemoize = function (fn) {
- return function () {
- return (fn.unmemoized || fn).apply(null, arguments);
- };
- };
-&nbsp;
- async.times = function (count, iterator, callback) {
- var counter = [];
- for (var i = 0; i &lt; count; i++) {
- counter.push(i);
- }
- return async.map(counter, iterator, callback);
- };
-&nbsp;
- async.timesSeries = function (count, iterator, callback) {
- var counter = [];
- for (var i = 0; i &lt; count; i++) {
- counter.push(i);
- }
- return async.mapSeries(counter, iterator, callback);
- };
-&nbsp;
- async.seq = function (/* functions... */) {
- var fns = arguments;
- return function () {
- var that = this;
- var args = _baseSlice(arguments);
-&nbsp;
- var callback = args.slice(-1)[0];
- if (typeof callback == 'function') {
- args.pop();
- } else {
- callback = noop;
- }
-&nbsp;
- async.reduce(fns, args, function (newargs, fn, cb) {
- fn.apply(that, newargs.concat([function () {
- var err = arguments[0];
- var nextargs = _baseSlice(arguments, 1);
- cb(err, nextargs);
- }]));
- },
- function (err, results) {
- callback.apply(that, [err].concat(results));
- });
- };
- };
-&nbsp;
- async.compose = function (/* functions... */) {
- return async.seq.apply(null, Array.prototype.reverse.call(arguments));
- };
-&nbsp;
-&nbsp;
- function _applyEach(eachfn, fns /*args...*/) {
- function go() {
- var that = this;
- var args = _baseSlice(arguments);
- var callback = args.pop();
- return eachfn(fns, function (fn, _, cb) {
- fn.apply(that, args.concat([cb]));
- },
- callback);
- }
- if (arguments.length &gt; 2) {
- var args = _baseSlice(arguments, 2);
- return go.apply(this, args);
- }
- else {
- return go;
- }
- }
-&nbsp;
- async.applyEach = function (/*fns, args...*/) {
- var args = _baseSlice(arguments);
- return _applyEach.apply(null, [async.eachOf].concat(args));
- };
- async.applyEachSeries = function (/*fns, args...*/) {
- var args = _baseSlice(arguments);
- return _applyEach.apply(null, [async.eachOfSeries].concat(args));
- };
-&nbsp;
-&nbsp;
- async.forever = function (fn, callback) {
- var done = only_once(callback || <span class="branch-1 cbranch-no" title="branch not covered" >noop)</span>;
- var task = ensureAsync(fn);
- function next(err) {
- if (err) {
- return done(err);
- }
- task(next);
- }
- next();
- };
-&nbsp;
- function ensureAsync(fn) {
- return function (/*...args, callback*/) {
- var args = _baseSlice(arguments);
- var callback = args.pop();
- args.push(function () {
- var innerArgs = arguments;
- if (sync) {
- async.setImmediate(function () {
- callback.apply(null, innerArgs);
- });
- } else {
- callback.apply(null, innerArgs);
- }
- });
- var sync = true;
- fn.apply(this, args);
- sync = false;
- };
- }
-&nbsp;
- async.ensureAsync = ensureAsync;
-&nbsp;
- // Node.js
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof module !== 'undefined' &amp;&amp; module.exports) {
- module.exports = async;
- }
- // AMD / RequireJS
- else <span class="cstat-no" title="statement not covered" >if (typeof define !== 'undefined' &amp;&amp; define.amd) {</span>
-<span class="cstat-no" title="statement not covered" > define([], <span class="fstat-no" title="function not covered" >function () {</span></span>
-<span class="cstat-no" title="statement not covered" > return async;</span>
- });
- }
- // included directly via &lt;script&gt; tag
- else {
-<span class="cstat-no" title="statement not covered" > root.async = async;</span>
- }
-&nbsp;
-}());
-&nbsp;</pre></td></tr>
-</table></pre>
-
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jun 01 2015 15:22:05 GMT-0700 (PDT)</div>
-</div>
-<script src="../prettify.js"></script>
-<script>
-window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
-};
-</script>
-<script src="../sorter.js"></script>
-</body>
-</html>
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/index.html b/node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/index.html
deleted file mode 100644
index c7eedeb38..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/lib/index.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for lib/</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="../prettify.css">
- <link rel="stylesheet" href="../base.css">
- <style type='text/css'>
- div.coverage-summary .sorter {
- background-image: url(../sort-arrow-sprite.png);
- }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">lib/</span></h1>
- <h2>
- Statements: <span class="metric">94.88% <small>(611 / 644)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Branches: <span class="metric">86.91% <small>(239 / 275)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Functions: <span class="metric">95.41% <small>(187 / 196)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Lines: <span class="metric">94.85% <small>(608 / 641)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
- </h2>
- <div class="path"><a href="../index.html">All files</a> &#187; lib/</div>
-</div>
-<div class="body">
-<div class="coverage-summary">
-<table>
-<thead>
-<tr>
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
-</tr>
-</thead>
-<tbody><tr>
- <td class="file high" data-value="async.js"><a href="async.js.html">async.js</a></td>
- <td data-value="94.88" class="pic high"><span class="cover-fill" style="width: 94px;"></span><span class="cover-empty" style="width:6px;"></span></td>
- <td data-value="94.88" class="pct high">94.88%</td>
- <td data-value="644" class="abs high">(611&nbsp;/&nbsp;644)</td>
- <td data-value="86.91" class="pct high">86.91%</td>
- <td data-value="275" class="abs high">(239&nbsp;/&nbsp;275)</td>
- <td data-value="95.41" class="pct high">95.41%</td>
- <td data-value="196" class="abs high">(187&nbsp;/&nbsp;196)</td>
- <td data-value="94.85" class="pct high">94.85%</td>
- <td data-value="641" class="abs high">(608&nbsp;/&nbsp;641)</td>
- </tr>
-
-</tbody>
-</table>
-</div>
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jun 01 2015 15:22:05 GMT-0700 (PDT)</div>
-</div>
-<script src="../prettify.js"></script>
-<script>
-window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
-};
-</script>
-<script src="../sorter.js"></script>
-</body>
-</html>
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.css b/node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.css
deleted file mode 100644
index b317a7cda..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
-.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.js b/node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.js
deleted file mode 100644
index ef51e0386..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/prettify.js
+++ /dev/null
@@ -1 +0,0 @@
-window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.ignoreCase){ac=true}else{if(/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){S=true;ac=false;break}}}var Y={b:8,t:9,n:10,v:11,f:12,r:13};function ab(ah){var ag=ah.charCodeAt(0);if(ag!==92){return ag}var af=ah.charAt(1);ag=Y[af];if(ag){return ag}else{if("0"<=af&&af<="7"){return parseInt(ah.substring(1),8)}else{if(af==="u"||af==="x"){return parseInt(ah.substring(2),16)}else{return ah.charCodeAt(1)}}}}function T(af){if(af<32){return(af<16?"\\x0":"\\x")+af.toString(16)}var ag=String.fromCharCode(af);if(ag==="\\"||ag==="-"||ag==="["||ag==="]"){ag="\\"+ag}return ag}function X(am){var aq=am.substring(1,am.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));var ak=[];var af=[];var ao=aq[0]==="^";for(var ar=ao?1:0,aj=aq.length;ar<aj;++ar){var ah=aq[ar];if(/\\[bdsw]/i.test(ah)){ak.push(ah)}else{var ag=ab(ah);var al;if(ar+2<aj&&"-"===aq[ar+1]){al=ab(aq[ar+2]);ar+=2}else{al=ag}af.push([ag,al]);if(!(al<65||ag>122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;ar<af.length;++ar){var at=af[ar];if(at[0]<=ap[1]+1){ap[1]=Math.max(ap[1],at[1])}else{ai.push(ap=at)}}var an=["["];if(ao){an.push("^")}an.push.apply(an,ak);for(var ar=0;ar<ai.length;++ar){var at=ai[ar];an.push(T(at[0]));if(at[1]>at[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){an[af]=-1}}}}for(var ak=1;ak<an.length;++ak){if(-1===an[ak]){an[ak]=++ad}}for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am;if(an[am]===undefined){aj[ak]="(?:"}}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){aj[ak]="\\"+an[am]}}}}for(var ak=0,am=0;ak<ah;++ak){if("^"===aj[ak]&&"^"!==aj[ak+1]){aj[ak]=""}}if(al.ignoreCase&&S){for(var ak=0;ak<ah;++ak){var ag=aj[ak];var ai=ag.charAt(0);if(ag.length>=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.global||ae.multiline){throw new Error(""+ae)}aa.push("(?:"+W(ae)+")")}return new RegExp(aa.join("|"),ac?"gi":"g")}function a(V){var U=/(?:^|\s)nocode(?:\s|$)/;var X=[];var T=0;var Z=[];var W=0;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=document.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Y=S&&"pre"===S.substring(0,3);function aa(ab){switch(ab.nodeType){case 1:if(U.test(ab.className)){return}for(var ae=ab.firstChild;ae;ae=ae.nextSibling){aa(ae)}var ad=ab.nodeName;if("BR"===ad||"LI"===ad){X[W]="\n";Z[W<<1]=T++;Z[(W++<<1)|1]=ab}break;case 3:case 4:var ac=ab.nodeValue;if(ac.length){if(!Y){ac=ac.replace(/[ \t\r\n]+/g," ")}else{ac=ac.replace(/\r\n?/g,"\n")}X[W]=ac;Z[W<<1]=T;T+=ac.length;Z[(W++<<1)|1]=ab}break}}aa(V);return{sourceCode:X.join("").replace(/\n$/,""),spans:Z}}function B(S,U,W,T){if(!U){return}var V={sourceCode:U,basePos:S};W(V);T.push.apply(T,V.decorations)}var v=/\S/;function o(S){var V=undefined;for(var U=S.firstChild;U;U=U.nextSibling){var T=U.nodeType;V=(T===1)?(V?S:U):(T===3)?(v.test(U.nodeValue)?S:V):V}return V===S?undefined:V}function g(U,T){var S={};var V;(function(){var ad=U.concat(T);var ah=[];var ag={};for(var ab=0,Z=ad.length;ab<Z;++ab){var Y=ad[ab];var ac=Y[3];if(ac){for(var ae=ac.length;--ae>=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae<aq;++ae){var ag=an[ae];var ap=aj[ag];var ai=void 0;var am;if(typeof ap==="string"){am=false}else{var aa=S[ag.charAt(0)];if(aa){ai=ag.match(aa[1]);ap=aa[0]}else{for(var ao=0;ao<X;++ao){aa=T[ao];ai=ag.match(aa[1]);if(ai){ap=aa[0];break}}if(!ai){ap=F}}am=ap.length>=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y<W.length;++Y){ae(W[Y])}if(ag===(ag|0)){W[0].setAttribute("value",ag)}var aa=ac.createElement("OL");aa.className="linenums";var X=Math.max(0,((ag-1))|0)||0;for(var Y=0,T=W.length;Y<T;++Y){af=W[Y];af.className="L"+((Y+X)%10);if(!af.firstChild){af.appendChild(ac.createTextNode("\xA0"))}aa.appendChild(af)}V.appendChild(aa)}function D(ac){var aj=/\bMSIE\b/.test(navigator.userAgent);var am=/\n/g;var al=ac.sourceCode;var an=al.length;var V=0;var aa=ac.spans;var T=aa.length;var ah=0;var X=ac.decorations;var Y=X.length;var Z=0;X[Y]=an;var ar,aq;for(aq=ar=0;aq<Y;){if(X[aq]!==X[aq+2]){X[ar++]=X[aq++];X[ar++]=X[aq++]}else{aq+=2}}Y=ar;for(aq=ar=0;aq<Y;){var at=X[aq];var ab=X[aq+1];var W=aq+2;while(W+2<=Y&&X[W+1]===ab){W+=2}X[ar++]=at;X[ar++]=ab;aq=W}Y=X.length=ar;var ae=null;while(ah<T){var af=aa[ah];var S=aa[ah+2]||an;var ag=X[Z];var ap=X[Z+2]||an;var W=Math.min(S,ap);var ak=aa[ah+1];var U;if(ak.nodeType!==1&&(U=al.substring(V,W))){if(aj){U=U.replace(am,"\r")}ak.nodeValue=U;var ai=ak.ownerDocument;var ao=ai.createElement("SPAN");ao.className=X[Z+1];var ad=ak.parentNode;ad.replaceChild(ao,ak);ao.appendChild(ak);if(V<S){aa[ah+1]=ak=ai.createTextNode(al.substring(W,S));ad.insertBefore(ak,ao.nextSibling)}}V=W;if(V>=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*</.test(S)?"default-markup":"default-code"}return t[T]}c(K,["default-code"]);c(g([],[[F,/^[^<?]+/],[E,/^<!\w[^>]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa<ac.length;++aa){for(var Z=0,V=ac[aa].length;Z<V;++Z){T.push(ac[aa][Z])}}ac=null;var W=Date;if(!W.now){W={now:function(){return +(new Date)}}}var X=0;var S;var ab=/\blang(?:uage)?-([\w.]+)(?!\S)/;var ae=/\bprettyprint\b/;function U(){var ag=(window.PR_SHOULD_USE_CONTINUATION?W.now()+250:Infinity);for(;X<T.length&&W.now()<ag;X++){var aj=T[X];var ai=aj.className;if(ai.indexOf("prettyprint")>=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X<T.length){setTimeout(U,250)}else{if(ad){ad()}}}U()}window.prettyPrintOne=y;window.prettyPrint=b;window.PR={createSimpleLexer:g,registerLangHandler:c,sourceDecorator:i,PR_ATTRIB_NAME:P,PR_ATTRIB_VALUE:n,PR_COMMENT:j,PR_DECLARATION:E,PR_KEYWORD:z,PR_LITERAL:G,PR_NOCODE:N,PR_PLAIN:F,PR_PUNCTUATION:L,PR_SOURCE:J,PR_STRING:C,PR_TAG:m,PR_TYPE:O}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/sort-arrow-sprite.png b/node_modules/request/node_modules/form-data/node_modules/async/coverage/sort-arrow-sprite.png
deleted file mode 100644
index 03f704a60..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/sort-arrow-sprite.png
+++ /dev/null
Binary files differ
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/coverage/sorter.js b/node_modules/request/node_modules/form-data/node_modules/async/coverage/sorter.js
deleted file mode 100644
index 6afb736c3..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/coverage/sorter.js
+++ /dev/null
@@ -1,156 +0,0 @@
-var addSorting = (function () {
- "use strict";
- var cols,
- currentSort = {
- index: 0,
- desc: false
- };
-
- // returns the summary table element
- function getTable() { return document.querySelector('.coverage-summary table'); }
- // returns the thead element of the summary table
- function getTableHeader() { return getTable().querySelector('thead tr'); }
- // returns the tbody element of the summary table
- function getTableBody() { return getTable().querySelector('tbody'); }
- // returns the th element for nth column
- function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
-
- // loads all columns
- function loadColumns() {
- var colNodes = getTableHeader().querySelectorAll('th'),
- colNode,
- cols = [],
- col,
- i;
-
- for (i = 0; i < colNodes.length; i += 1) {
- colNode = colNodes[i];
- col = {
- key: colNode.getAttribute('data-col'),
- sortable: !colNode.getAttribute('data-nosort'),
- type: colNode.getAttribute('data-type') || 'string'
- };
- cols.push(col);
- if (col.sortable) {
- col.defaultDescSort = col.type === 'number';
- colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>';
- }
- }
- return cols;
- }
- // attaches a data attribute to every tr element with an object
- // of data values keyed by column name
- function loadRowData(tableRow) {
- var tableCols = tableRow.querySelectorAll('td'),
- colNode,
- col,
- data = {},
- i,
- val;
- for (i = 0; i < tableCols.length; i += 1) {
- colNode = tableCols[i];
- col = cols[i];
- val = colNode.getAttribute('data-value');
- if (col.type === 'number') {
- val = Number(val);
- }
- data[col.key] = val;
- }
- return data;
- }
- // loads all row data
- function loadData() {
- var rows = getTableBody().querySelectorAll('tr'),
- i;
-
- for (i = 0; i < rows.length; i += 1) {
- rows[i].data = loadRowData(rows[i]);
- }
- }
- // sorts the table using the data for the ith column
- function sortByIndex(index, desc) {
- var key = cols[index].key,
- sorter = function (a, b) {
- a = a.data[key];
- b = b.data[key];
- return a < b ? -1 : a > b ? 1 : 0;
- },
- finalSorter = sorter,
- tableBody = document.querySelector('.coverage-summary tbody'),
- rowNodes = tableBody.querySelectorAll('tr'),
- rows = [],
- i;
-
- if (desc) {
- finalSorter = function (a, b) {
- return -1 * sorter(a, b);
- };
- }
-
- for (i = 0; i < rowNodes.length; i += 1) {
- rows.push(rowNodes[i]);
- tableBody.removeChild(rowNodes[i]);
- }
-
- rows.sort(finalSorter);
-
- for (i = 0; i < rows.length; i += 1) {
- tableBody.appendChild(rows[i]);
- }
- }
- // removes sort indicators for current column being sorted
- function removeSortIndicators() {
- var col = getNthColumn(currentSort.index),
- cls = col.className;
-
- cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
- col.className = cls;
- }
- // adds sort indicators for current column being sorted
- function addSortIndicators() {
- getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
- }
- // adds event listeners for all sorter widgets
- function enableUI() {
- var i,
- el,
- ithSorter = function ithSorter(i) {
- var col = cols[i];
-
- return function () {
- var desc = col.defaultDescSort;
-
- if (currentSort.index === i) {
- desc = !currentSort.desc;
- }
- sortByIndex(i, desc);
- removeSortIndicators();
- currentSort.index = i;
- currentSort.desc = desc;
- addSortIndicators();
- };
- };
- for (i =0 ; i < cols.length; i += 1) {
- if (cols[i].sortable) {
- el = getNthColumn(i).querySelector('.sorter');
- if (el.addEventListener) {
- el.addEventListener('click', ithSorter(i));
- } else {
- el.attachEvent('onclick', ithSorter(i));
- }
- }
- }
- }
- // adds sorting functionality to the UI
- return function () {
- if (!getTable()) {
- return;
- }
- cols = loadColumns();
- loadData(cols);
- addSortIndicators();
- enableUI();
- };
-})();
-
-window.addEventListener('load', addSorting);
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js b/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js
deleted file mode 100644
index 07ffd8423..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js
+++ /dev/null
@@ -1,1191 +0,0 @@
-/*!
- * async
- * https://github.com/caolan/async
- *
- * Copyright 2010-2014 Caolan McMahon
- * Released under the MIT license
- */
-(function () {
-
- var async = {};
- function noop() {}
-
- // global on the server, window in the browser
- var root, previous_async;
-
- if (typeof window == 'object' && this === window) {
- root = window;
- }
- else if (typeof global == 'object' && this === global) {
- root = global;
- }
- else {
- root = this;
- }
-
- if (root != null) {
- previous_async = root.async;
- }
-
- async.noConflict = function () {
- root.async = previous_async;
- return async;
- };
-
- function only_once(fn) {
- var called = false;
- return function() {
- if (called) throw new Error("Callback was already called.");
- called = true;
- fn.apply(this, arguments);
- };
- }
-
- function _once(fn) {
- var called = false;
- return function() {
- if (called) return;
- called = true;
- fn.apply(this, arguments);
- };
- }
-
- //// cross-browser compatiblity functions ////
-
- var _toString = Object.prototype.toString;
-
- var _isArray = Array.isArray || function (obj) {
- return _toString.call(obj) === '[object Array]';
- };
-
- function _isArrayLike(arr) {
- return _isArray(arr) || (
- // has a positive integer length property
- typeof arr.length === "number" &&
- arr.length >= 0 &&
- arr.length % 1 === 0
- );
- }
-
- function _each(coll, iterator) {
- return _isArrayLike(coll) ?
- _arrayEach(coll, iterator) :
- _forEachOf(coll, iterator);
- }
-
- function _arrayEach(arr, iterator) {
- var index = -1,
- length = arr.length;
-
- while (++index < length) {
- iterator(arr[index], index, arr);
- }
- }
-
- function _map(arr, iterator) {
- var index = -1,
- length = arr.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iterator(arr[index], index, arr);
- }
- return result;
- }
-
- function _range(count) {
- return _map(Array(count), function (v, i) { return i; });
- }
-
- function _reduce(arr, iterator, memo) {
- _arrayEach(arr, function (x, i, a) {
- memo = iterator(memo, x, i, a);
- });
- return memo;
- }
-
- function _forEachOf(object, iterator) {
- _arrayEach(_keys(object), function (key) {
- iterator(object[key], key);
- });
- }
-
- var _keys = Object.keys || function (obj) {
- var keys = [];
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {
- keys.push(k);
- }
- }
- return keys;
- };
-
- function _keyIterator(coll) {
- var i = -1;
- var len;
- var keys;
- if (_isArrayLike(coll)) {
- len = coll.length;
- return function next() {
- i++;
- return i < len ? i : null;
- };
- } else {
- keys = _keys(coll);
- len = keys.length;
- return function next() {
- i++;
- return i < len ? keys[i] : null;
- };
- }
- }
-
- function _baseSlice(arr, start) {
- start = start || 0;
- var index = -1;
- var length = arr.length;
-
- if (start) {
- length -= start;
- length = length < 0 ? 0 : length;
- }
- var result = Array(length);
-
- while (++index < length) {
- result[index] = arr[index + start];
- }
- return result;
- }
-
- function _withoutIndex(iterator) {
- return function (value, index, callback) {
- return iterator(value, callback);
- };
- }
-
- //// exported async module functions ////
-
- //// nextTick implementation with browser-compatible fallback ////
-
- // capture the global reference to guard against fakeTimer mocks
- var _setImmediate;
- if (typeof setImmediate === 'function') {
- _setImmediate = setImmediate;
- }
-
- if (typeof process === 'undefined' || !(process.nextTick)) {
- if (_setImmediate) {
- async.nextTick = function (fn) {
- // not a direct alias for IE10 compatibility
- _setImmediate(fn);
- };
- async.setImmediate = async.nextTick;
- }
- else {
- async.nextTick = function (fn) {
- setTimeout(fn, 0);
- };
- async.setImmediate = async.nextTick;
- }
- }
- else {
- async.nextTick = process.nextTick;
- if (_setImmediate) {
- async.setImmediate = function (fn) {
- // not a direct alias for IE10 compatibility
- _setImmediate(fn);
- };
- }
- else {
- async.setImmediate = async.nextTick;
- }
- }
-
- async.forEach =
- async.each = function (arr, iterator, callback) {
- return async.eachOf(arr, _withoutIndex(iterator), callback);
- };
-
- async.forEachSeries =
- async.eachSeries = function (arr, iterator, callback) {
- return async.eachOfSeries(arr, _withoutIndex(iterator), callback);
- };
-
-
- async.forEachLimit =
- async.eachLimit = function (arr, limit, iterator, callback) {
- return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback);
- };
-
- async.forEachOf =
- async.eachOf = function (object, iterator, callback) {
- callback = _once(callback || noop);
- object = object || [];
- var size = _isArrayLike(object) ? object.length : _keys(object).length;
- var completed = 0;
- if (!size) {
- return callback(null);
- }
- _each(object, function (value, key) {
- iterator(object[key], key, only_once(done));
- });
- function done(err) {
- if (err) {
- callback(err);
- }
- else {
- completed += 1;
- if (completed >= size) {
- callback(null);
- }
- }
- }
- };
-
- async.forEachOfSeries =
- async.eachOfSeries = function (obj, iterator, callback) {
- callback = _once(callback || noop);
- obj = obj || [];
- var nextKey = _keyIterator(obj);
- var key = nextKey();
- function iterate() {
- var sync = true;
- if (key === null) {
- return callback(null);
- }
- iterator(obj[key], key, only_once(function (err) {
- if (err) {
- callback(err);
- }
- else {
- key = nextKey();
- if (key === null) {
- return callback(null);
- } else {
- if (sync) {
- async.nextTick(iterate);
- } else {
- iterate();
- }
- }
- }
- }));
- sync = false;
- }
- iterate();
- };
-
-
-
- async.forEachOfLimit =
- async.eachOfLimit = function (obj, limit, iterator, callback) {
- _eachOfLimit(limit)(obj, iterator, callback);
- };
-
- function _eachOfLimit(limit) {
-
- return function (obj, iterator, callback) {
- callback = _once(callback || noop);
- obj = obj || [];
- var nextKey = _keyIterator(obj);
- if (limit <= 0) {
- return callback(null);
- }
- var done = false;
- var running = 0;
- var errored = false;
-
- (function replenish () {
- if (done && running <= 0) {
- return callback(null);
- }
-
- while (running < limit && !errored) {
- var key = nextKey();
- if (key === null) {
- done = true;
- if (running <= 0) {
- callback(null);
- }
- return;
- }
- running += 1;
- iterator(obj[key], key, only_once(function (err) {
- running -= 1;
- if (err) {
- callback(err);
- errored = true;
- }
- else {
- replenish();
- }
- }));
- }
- })();
- };
- }
-
-
- function doParallel(fn) {
- return function (obj, iterator, callback) {
- return fn(async.eachOf, obj, iterator, callback);
- };
- }
- function doParallelLimit(limit, fn) {
- return function (obj, iterator, callback) {
- return fn(_eachOfLimit(limit), obj, iterator, callback);
- };
- }
- function doSeries(fn) {
- return function (obj, iterator, callback) {
- return fn(async.eachOfSeries, obj, iterator, callback);
- };
- }
-
- function _asyncMap(eachfn, arr, iterator, callback) {
- callback = _once(callback || noop);
- var results = [];
- eachfn(arr, function (value, index, callback) {
- iterator(value, function (err, v) {
- results[index] = v;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
-
- async.map = doParallel(_asyncMap);
- async.mapSeries = doSeries(_asyncMap);
- async.mapLimit = function (arr, limit, iterator, callback) {
- return _mapLimit(limit)(arr, iterator, callback);
- };
-
- function _mapLimit(limit) {
- return doParallelLimit(limit, _asyncMap);
- }
-
- // reduce only has a series version, as doing reduce in parallel won't
- // work in many situations.
- async.inject =
- async.foldl =
- async.reduce = function (arr, memo, iterator, callback) {
- async.eachOfSeries(arr, function (x, i, callback) {
- iterator(memo, x, function (err, v) {
- memo = v;
- callback(err);
- });
- }, function (err) {
- callback(err || null, memo);
- });
- };
-
- async.foldr =
- async.reduceRight = function (arr, memo, iterator, callback) {
- var reversed = _map(arr, function (x) {
- return x;
- }).reverse();
- async.reduce(reversed, memo, iterator, callback);
- };
-
- function _filter(eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, index, callback) {
- iterator(x.value, function (v) {
- if (v) {
- results.push(x);
- }
- callback();
- });
- }, function () {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- }
-
- async.select =
- async.filter = doParallel(_filter);
-
- async.selectSeries =
- async.filterSeries = doSeries(_filter);
-
- function _reject(eachfn, arr, iterator, callback) {
- var results = [];
- arr = _map(arr, function (x, i) {
- return {index: i, value: x};
- });
- eachfn(arr, function (x, index, callback) {
- iterator(x.value, function (v) {
- if (!v) {
- results.push(x);
- }
- callback();
- });
- }, function () {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- }
- async.reject = doParallel(_reject);
- async.rejectSeries = doSeries(_reject);
-
- function _detect(eachfn, arr, iterator, main_callback) {
- eachfn(arr, function (x, index, callback) {
- iterator(x, function (result) {
- if (result) {
- main_callback(x);
- main_callback = noop;
- }
- else {
- callback();
- }
- });
- }, function () {
- main_callback();
- });
- }
- async.detect = doParallel(_detect);
- async.detectSeries = doSeries(_detect);
-
- async.any =
- async.some = function (arr, iterator, main_callback) {
- async.eachOf(arr, function (x, _, callback) {
- iterator(x, function (v) {
- if (v) {
- main_callback(true);
- main_callback = noop;
- }
- callback();
- });
- }, function () {
- main_callback(false);
- });
- };
-
- async.all =
- async.every = function (arr, iterator, main_callback) {
- async.eachOf(arr, function (x, _, callback) {
- iterator(x, function (v) {
- if (!v) {
- main_callback(false);
- main_callback = noop;
- }
- callback();
- });
- }, function () {
- main_callback(true);
- });
- };
-
- async.sortBy = function (arr, iterator, callback) {
- async.map(arr, function (x, callback) {
- iterator(x, function (err, criteria) {
- if (err) {
- callback(err);
- }
- else {
- callback(null, {value: x, criteria: criteria});
- }
- });
- }, function (err, results) {
- if (err) {
- return callback(err);
- }
- else {
- callback(null, _map(results.sort(comparator), function (x) {
- return x.value;
- }));
- }
-
- });
-
- function comparator(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }
- };
-
- async.auto = function (tasks, callback) {
- callback = _once(callback || noop);
- var keys = _keys(tasks);
- var remainingTasks = keys.length;
- if (!remainingTasks) {
- return callback(null);
- }
-
- var results = {};
-
- var listeners = [];
- function addListener(fn) {
- listeners.unshift(fn);
- }
- function removeListener(fn) {
- for (var i = 0; i < listeners.length; i += 1) {
- if (listeners[i] === fn) {
- listeners.splice(i, 1);
- return;
- }
- }
- }
- function taskComplete() {
- remainingTasks--;
- _arrayEach(listeners.slice(0), function (fn) {
- fn();
- });
- }
-
- addListener(function () {
- if (!remainingTasks) {
- callback(null, results);
- }
- });
-
- _arrayEach(keys, function (k) {
- var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
- function taskCallback(err) {
- var args = _baseSlice(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- if (err) {
- var safeResults = {};
- _arrayEach(_keys(results), function(rkey) {
- safeResults[rkey] = results[rkey];
- });
- safeResults[k] = args;
- callback(err, safeResults);
- }
- else {
- results[k] = args;
- async.setImmediate(taskComplete);
- }
- }
- var requires = task.slice(0, Math.abs(task.length - 1)) || [];
- // prevent dead-locks
- var len = requires.length;
- var dep;
- while (len--) {
- if (!(dep = tasks[requires[len]])) {
- throw new Error('Has inexistant dependency');
- }
- if (_isArray(dep) && !!~dep.indexOf(k)) {
- throw new Error('Has cyclic dependencies');
- }
- }
- function ready() {
- return _reduce(requires, function (a, x) {
- return (a && results.hasOwnProperty(x));
- }, true) && !results.hasOwnProperty(k);
- }
- if (ready()) {
- task[task.length - 1](taskCallback, results);
- }
- else {
- addListener(listener);
- }
- function listener() {
- if (ready()) {
- removeListener(listener);
- task[task.length - 1](taskCallback, results);
- }
- }
- });
- };
-
- async.retry = function(times, task, callback) {
- var DEFAULT_TIMES = 5;
- var attempts = [];
- // Use defaults if times not passed
- if (typeof times === 'function') {
- callback = task;
- task = times;
- times = DEFAULT_TIMES;
- }
- // Make sure times is a number
- times = parseInt(times, 10) || DEFAULT_TIMES;
-
- function wrappedTask(wrappedCallback, wrappedResults) {
- function retryAttempt(task, finalAttempt) {
- return function(seriesCallback) {
- task(function(err, result){
- seriesCallback(!err || finalAttempt, {err: err, result: result});
- }, wrappedResults);
- };
- }
-
- while (times) {
- attempts.push(retryAttempt(task, !(times-=1)));
- }
- async.series(attempts, function(done, data){
- data = data[data.length - 1];
- (wrappedCallback || callback)(data.err, data.result);
- });
- }
-
- // If a callback is passed, run this as a controll flow
- return callback ? wrappedTask() : wrappedTask;
- };
-
- async.waterfall = function (tasks, callback) {
- callback = _once(callback || noop);
- if (!_isArray(tasks)) {
- var err = new Error('First argument to waterfall must be an array of functions');
- return callback(err);
- }
- if (!tasks.length) {
- return callback();
- }
- function wrapIterator(iterator) {
- return function (err) {
- if (err) {
- callback.apply(null, arguments);
- }
- else {
- var args = _baseSlice(arguments, 1);
- var next = iterator.next();
- if (next) {
- args.push(wrapIterator(next));
- }
- else {
- args.push(callback);
- }
- ensureAsync(iterator).apply(null, args);
- }
- };
- }
- wrapIterator(async.iterator(tasks))();
- };
-
- function _parallel(eachfn, tasks, callback) {
- callback = callback || noop;
- var results = _isArrayLike(tasks) ? [] : {};
-
- eachfn(tasks, function (task, key, callback) {
- task(function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- results[key] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
-
- async.parallel = function (tasks, callback) {
- _parallel(async.eachOf, tasks, callback);
- };
-
- async.parallelLimit = function(tasks, limit, callback) {
- _parallel(_eachOfLimit(limit), tasks, callback);
- };
-
- async.series = function (tasks, callback) {
- callback = callback || noop;
- var results = _isArrayLike(tasks) ? [] : {};
-
- async.eachOfSeries(tasks, function (task, key, callback) {
- task(function (err) {
- var args = _baseSlice(arguments, 1);
- if (args.length <= 1) {
- args = args[0];
- }
- results[key] = args;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- };
-
- async.iterator = function (tasks) {
- function makeCallback(index) {
- function fn() {
- if (tasks.length) {
- tasks[index].apply(null, arguments);
- }
- return fn.next();
- }
- fn.next = function () {
- return (index < tasks.length - 1) ? makeCallback(index + 1): null;
- };
- return fn;
- }
- return makeCallback(0);
- };
-
- async.apply = function (fn) {
- var args = _baseSlice(arguments, 1);
- return function () {
- return fn.apply(
- null, args.concat(_baseSlice(arguments))
- );
- };
- };
-
- function _concat(eachfn, arr, fn, callback) {
- var result = [];
- eachfn(arr, function (x, index, cb) {
- fn(x, function (err, y) {
- result = result.concat(y || []);
- cb(err);
- });
- }, function (err) {
- callback(err, result);
- });
- }
- async.concat = doParallel(_concat);
- async.concatSeries = doSeries(_concat);
-
- async.whilst = function (test, iterator, callback) {
- if (test()) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- async.whilst(test, iterator, callback);
- });
- }
- else {
- callback(null);
- }
- };
-
- async.doWhilst = function (iterator, test, callback) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- var args = _baseSlice(arguments, 1);
- if (test.apply(null, args)) {
- async.doWhilst(iterator, test, callback);
- }
- else {
- callback(null);
- }
- });
- };
-
- async.until = function (test, iterator, callback) {
- if (!test()) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- async.until(test, iterator, callback);
- });
- }
- else {
- callback(null);
- }
- };
-
- async.doUntil = function (iterator, test, callback) {
- iterator(function (err) {
- if (err) {
- return callback(err);
- }
- var args = _baseSlice(arguments, 1);
- if (!test.apply(null, args)) {
- async.doUntil(iterator, test, callback);
- }
- else {
- callback(null);
- }
- });
- };
-
- function _queue(worker, concurrency, payload) {
- if (concurrency == null) {
- concurrency = 1;
- }
- else if(concurrency === 0) {
- throw new Error('Concurrency must not be zero');
- }
- function _insert(q, data, pos, callback) {
- if (callback != null && typeof callback !== "function") {
- throw new Error("task callback must be a function");
- }
- q.started = true;
- if (!_isArray(data)) {
- data = [data];
- }
- if(data.length === 0 && q.idle()) {
- // call drain immediately if there are no tasks
- return async.setImmediate(function() {
- q.drain();
- });
- }
- _arrayEach(data, function(task) {
- var item = {
- data: task,
- callback: callback || noop
- };
-
- if (pos) {
- q.tasks.unshift(item);
- } else {
- q.tasks.push(item);
- }
-
- if (q.tasks.length === q.concurrency) {
- q.saturated();
- }
- });
- async.setImmediate(q.process);
- }
- function _next(q, tasks) {
- return function(){
- workers -= 1;
- var args = arguments;
- _arrayEach(tasks, function (task) {
- task.callback.apply(task, args);
- });
- if (q.tasks.length + workers === 0) {
- q.drain();
- }
- q.process();
- };
- }
-
- var workers = 0;
- var q = {
- tasks: [],
- concurrency: concurrency,
- saturated: noop,
- empty: noop,
- drain: noop,
- started: false,
- paused: false,
- push: function (data, callback) {
- _insert(q, data, false, callback);
- },
- kill: function () {
- q.drain = noop;
- q.tasks = [];
- },
- unshift: function (data, callback) {
- _insert(q, data, true, callback);
- },
- process: function () {
- if (!q.paused && workers < q.concurrency && q.tasks.length) {
- while(workers < q.concurrency && q.tasks.length){
- var tasks = payload ?
- q.tasks.splice(0, payload) :
- q.tasks.splice(0, q.tasks.length);
-
- var data = _map(tasks, function (task) {
- return task.data;
- });
-
- if (q.tasks.length === 0) {
- q.empty();
- }
- workers += 1;
- var cb = only_once(_next(q, tasks));
- worker(data, cb);
- }
- }
- },
- length: function () {
- return q.tasks.length;
- },
- running: function () {
- return workers;
- },
- idle: function() {
- return q.tasks.length + workers === 0;
- },
- pause: function () {
- q.paused = true;
- },
- resume: function () {
- if (q.paused === false) { return; }
- q.paused = false;
- var resumeCount = Math.min(q.concurrency, q.tasks.length);
- // Need to call q.process once per concurrent
- // worker to preserve full concurrency after pause
- for (var w = 1; w <= resumeCount; w++) {
- async.setImmediate(q.process);
- }
- }
- };
- return q;
- }
-
- async.queue = function (worker, concurrency) {
- var q = _queue(function (items, cb) {
- worker(items[0], cb);
- }, concurrency, 1);
-
- return q;
- };
-
- async.priorityQueue = function (worker, concurrency) {
-
- function _compareTasks(a, b){
- return a.priority - b.priority;
- }
-
- function _binarySearch(sequence, item, compare) {
- var beg = -1,
- end = sequence.length - 1;
- while (beg < end) {
- var mid = beg + ((end - beg + 1) >>> 1);
- if (compare(item, sequence[mid]) >= 0) {
- beg = mid;
- } else {
- end = mid - 1;
- }
- }
- return beg;
- }
-
- function _insert(q, data, priority, callback) {
- if (callback != null && typeof callback !== "function") {
- throw new Error("task callback must be a function");
- }
- q.started = true;
- if (!_isArray(data)) {
- data = [data];
- }
- if(data.length === 0) {
- // call drain immediately if there are no tasks
- return async.setImmediate(function() {
- q.drain();
- });
- }
- _arrayEach(data, function(task) {
- var item = {
- data: task,
- priority: priority,
- callback: typeof callback === 'function' ? callback : noop
- };
-
- q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);
-
- if (q.tasks.length === q.concurrency) {
- q.saturated();
- }
- async.setImmediate(q.process);
- });
- }
-
- // Start with a normal queue
- var q = async.queue(worker, concurrency);
-
- // Override push to accept second parameter representing priority
- q.push = function (data, priority, callback) {
- _insert(q, data, priority, callback);
- };
-
- // Remove unshift function
- delete q.unshift;
-
- return q;
- };
-
- async.cargo = function (worker, payload) {
- return _queue(worker, 1, payload);
- };
-
- function _console_fn(name) {
- return function (fn) {
- var args = _baseSlice(arguments, 1);
- fn.apply(null, args.concat([function (err) {
- var args = _baseSlice(arguments, 1);
- if (typeof console !== 'undefined') {
- if (err) {
- if (console.error) {
- console.error(err);
- }
- }
- else if (console[name]) {
- _arrayEach(args, function (x) {
- console[name](x);
- });
- }
- }
- }]));
- };
- }
- async.log = _console_fn('log');
- async.dir = _console_fn('dir');
- /*async.info = _console_fn('info');
- async.warn = _console_fn('warn');
- async.error = _console_fn('error');*/
-
- async.memoize = function (fn, hasher) {
- var memo = {};
- var queues = {};
- hasher = hasher || function (x) {
- return x;
- };
- function memoized() {
- var args = _baseSlice(arguments);
- var callback = args.pop();
- var key = hasher.apply(null, args);
- if (key in memo) {
- async.nextTick(function () {
- callback.apply(null, memo[key]);
- });
- }
- else if (key in queues) {
- queues[key].push(callback);
- }
- else {
- queues[key] = [callback];
- fn.apply(null, args.concat([function () {
- memo[key] = _baseSlice(arguments);
- var q = queues[key];
- delete queues[key];
- for (var i = 0, l = q.length; i < l; i++) {
- q[i].apply(null, arguments);
- }
- }]));
- }
- }
- memoized.memo = memo;
- memoized.unmemoized = fn;
- return memoized;
- };
-
- async.unmemoize = function (fn) {
- return function () {
- return (fn.unmemoized || fn).apply(null, arguments);
- };
- };
-
- function _times(mapper) {
- return function (count, iterator, callback) {
- mapper(_range(count), iterator, callback);
- };
- }
-
- async.times = _times(async.map);
- async.timesSeries = _times(async.mapSeries);
- async.timesLimit = function (count, limit, iterator, callback) {
- return async.mapLimit(_range(count), limit, iterator, callback);
- };
-
- async.seq = function (/* functions... */) {
- var fns = arguments;
- return function () {
- var that = this;
- var args = _baseSlice(arguments);
-
- var callback = args.slice(-1)[0];
- if (typeof callback == 'function') {
- args.pop();
- } else {
- callback = noop;
- }
-
- async.reduce(fns, args, function (newargs, fn, cb) {
- fn.apply(that, newargs.concat([function () {
- var err = arguments[0];
- var nextargs = _baseSlice(arguments, 1);
- cb(err, nextargs);
- }]));
- },
- function (err, results) {
- callback.apply(that, [err].concat(results));
- });
- };
- };
-
- async.compose = function (/* functions... */) {
- return async.seq.apply(null, Array.prototype.reverse.call(arguments));
- };
-
-
- function _applyEach(eachfn, fns /*args...*/) {
- function go() {
- var that = this;
- var args = _baseSlice(arguments);
- var callback = args.pop();
- return eachfn(fns, function (fn, _, cb) {
- fn.apply(that, args.concat([cb]));
- },
- callback);
- }
- if (arguments.length > 2) {
- var args = _baseSlice(arguments, 2);
- return go.apply(this, args);
- }
- else {
- return go;
- }
- }
-
- async.applyEach = function (/*fns, args...*/) {
- var args = _baseSlice(arguments);
- return _applyEach.apply(null, [async.eachOf].concat(args));
- };
- async.applyEachSeries = function (/*fns, args...*/) {
- var args = _baseSlice(arguments);
- return _applyEach.apply(null, [async.eachOfSeries].concat(args));
- };
-
-
- async.forever = function (fn, callback) {
- var done = only_once(callback || noop);
- var task = ensureAsync(fn);
- function next(err) {
- if (err) {
- return done(err);
- }
- task(next);
- }
- next();
- };
-
- function ensureAsync(fn) {
- return function (/*...args, callback*/) {
- var args = _baseSlice(arguments);
- var callback = args.pop();
- args.push(function () {
- var innerArgs = arguments;
- if (sync) {
- async.setImmediate(function () {
- callback.apply(null, innerArgs);
- });
- } else {
- callback.apply(null, innerArgs);
- }
- });
- var sync = true;
- fn.apply(this, args);
- sync = false;
- };
- }
-
- async.ensureAsync = ensureAsync;
-
- // Node.js
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = async;
- }
- // AMD / RequireJS
- else if (typeof define !== 'undefined' && define.amd) {
- define([], function () {
- return async;
- });
- }
- // included directly via <script> tag
- else {
- root.async = async;
- }
-
-}());
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/nyc_output/5074.json b/node_modules/request/node_modules/form-data/node_modules/async/nyc_output/5074.json
deleted file mode 100644
index b01ba22c8..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/nyc_output/5074.json
+++ /dev/null
@@ -1 +0,0 @@
-{"./lib/async.js":{"path":"./lib/async.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":0,"7":1,"8":1,"9":0,"10":1,"11":1,"12":1,"13":0,"14":0,"15":1,"16":200,"17":200,"18":200,"19":4,"20":196,"21":196,"22":1,"23":168,"24":168,"25":176,"26":19,"27":157,"28":157,"29":1,"30":1,"31":0,"32":1,"33":138,"34":1,"35":39,"36":1,"37":328,"38":328,"39":480,"40":1,"41":104,"42":104,"43":148,"44":104,"45":1,"46":56,"47":54,"48":56,"49":1,"50":5,"51":11,"52":1,"53":0,"54":0,"55":0,"56":0,"57":0,"58":1,"59":76,"60":76,"61":76,"62":76,"63":61,"64":61,"65":243,"66":243,"67":15,"68":15,"69":15,"70":53,"71":53,"72":1,"73":50259,"74":50259,"75":50259,"76":50259,"77":151,"78":151,"79":50259,"80":50259,"81":50299,"82":50259,"83":1,"84":19,"85":59,"86":1,"87":1,"88":1,"89":1,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":1,"98":1,"99":1,"100":50236,"101":0,"102":1,"103":5,"104":1,"105":5,"106":1,"107":9,"108":1,"109":45,"110":45,"111":45,"112":45,"113":45,"114":6,"115":39,"116":109,"117":1,"118":105,"119":16,"120":89,"121":89,"122":31,"123":1,"124":44,"125":44,"126":44,"127":1,"128":123,"129":123,"130":123,"131":29,"132":94,"133":90,"134":11,"135":79,"136":20,"137":59,"138":94,"139":44,"140":1,"141":9,"142":1,"143":32,"144":32,"145":32,"146":32,"147":32,"148":3,"149":29,"150":29,"151":29,"152":29,"153":119,"154":12,"155":107,"156":173,"157":173,"158":71,"159":71,"160":17,"161":71,"162":102,"163":102,"164":97,"165":97,"166":7,"167":7,"168":90,"169":1,"170":5,"171":19,"172":1,"173":8,"174":8,"175":1,"176":5,"177":12,"178":1,"179":25,"180":25,"181":25,"182":69,"183":67,"184":67,"185":25,"186":1,"187":1,"188":1,"189":8,"190":1,"191":8,"192":1,"193":11,"194":26,"195":25,"196":25,"197":10,"198":1,"199":1,"200":3,"201":1,"202":1,"203":3,"204":3,"205":9,"206":3,"207":9,"208":9,"209":6,"210":9,"211":3,"212":3,"213":6,"214":1,"215":1,"216":1,"217":3,"218":3,"219":9,"220":3,"221":9,"222":9,"223":3,"224":9,"225":3,"226":0,"227":3,"228":1,"229":1,"230":1,"231":5,"232":15,"233":15,"234":7,"235":7,"236":8,"237":0,"238":1,"239":1,"240":1,"241":3,"242":9,"243":9,"244":2,"245":2,"246":9,"247":3,"248":1,"249":3,"250":9,"251":9,"252":3,"253":3,"254":9,"255":3,"256":1,"257":2,"258":6,"259":6,"260":0,"261":6,"262":2,"263":0,"264":2,"265":6,"266":1,"267":6,"268":6,"269":1,"270":14,"271":14,"272":14,"273":14,"274":1,"275":13,"276":13,"277":1,"278":28,"279":1,"280":13,"281":19,"282":13,"283":13,"284":1,"285":25,"286":25,"287":47,"288":13,"289":25,"290":7,"291":13,"292":36,"293":1,"294":30,"295":30,"296":29,"297":30,"298":5,"299":5,"300":1,"301":5,"302":5,"303":25,"304":25,"305":36,"306":36,"307":36,"308":36,"309":23,"310":1,"311":22,"312":1,"313":1,"314":56,"315":54,"316":34,"317":19,"318":15,"319":1,"320":22,"321":13,"322":13,"323":1,"324":3,"325":3,"326":3,"327":2,"328":2,"329":2,"330":3,"331":1,"332":1,"333":13,"334":7,"335":7,"336":3,"337":13,"338":3,"339":3,"340":3,"341":3,"342":1,"343":8,"344":8,"345":1,"346":1,"347":7,"348":1,"349":1,"350":18,"351":19,"352":1,"353":18,"354":18,"355":18,"356":12,"357":6,"358":18,"359":6,"360":1,"361":13,"362":13,"363":13,"364":27,"365":27,"366":27,"367":23,"368":27,"369":27,"370":13,"371":1,"372":7,"373":1,"374":6,"375":1,"376":10,"377":10,"378":10,"379":21,"380":21,"381":21,"382":19,"383":21,"384":21,"385":10,"386":1,"387":1,"388":1,"389":25,"390":24,"391":25,"392":38,"393":46,"394":38,"395":9,"396":1,"397":6,"398":6,"399":6,"400":1,"401":3,"402":3,"403":9,"404":9,"405":9,"406":3,"407":1,"408":1,"409":1,"410":6,"411":5,"412":5,"413":0,"414":5,"415":1,"416":1,"417":10,"418":10,"419":0,"420":10,"421":10,"422":8,"423":2,"424":1,"425":6,"426":5,"427":5,"428":0,"429":5,"430":1,"431":1,"432":10,"433":10,"434":0,"435":10,"436":10,"437":8,"438":2,"439":1,"440":27,"441":3,"442":24,"443":1,"444":1,"445":92,"446":1,"447":91,"448":91,"449":84,"450":91,"451":2,"452":2,"453":89,"454":105,"455":105,"456":8,"457":97,"458":105,"459":28,"460":105,"461":26,"462":26,"463":84,"464":1,"465":1,"466":8,"467":207,"468":89,"469":89,"470":112,"471":89,"472":30,"473":89,"474":89,"475":89,"476":1,"477":89,"478":89,"479":89,"480":112,"481":89,"482":27,"483":89,"484":50,"485":5,"486":9,"487":3,"488":4,"489":1,"490":3,"491":3,"492":3,"493":5,"494":26,"495":1,"496":21,"497":63,"498":20,"499":1,"500":1,"501":10,"502":1,"503":8,"504":8,"505":10,"506":10,"507":6,"508":4,"509":8,"510":1,"511":8,"512":0,"513":8,"514":8,"515":8,"516":8,"517":0,"518":0,"519":8,"520":8,"521":8,"522":8,"523":2,"524":8,"525":2,"526":2,"527":8,"528":2,"529":2,"530":1,"531":6,"532":1,"533":2,"534":6,"535":6,"536":6,"537":6,"538":6,"539":2,"540":2,"541":4,"542":4,"543":8,"544":1,"545":1,"546":1,"547":7,"548":7,"549":7,"550":9,"551":1,"552":11,"553":11,"554":11,"555":11,"556":4,"557":4,"558":7,"559":1,"560":6,"561":6,"562":6,"563":6,"564":6,"565":6,"566":7,"567":7,"568":7,"569":7,"570":1,"571":2,"572":4,"573":1,"574":3,"575":3,"576":6,"577":3,"578":1,"579":2,"580":2,"581":10,"582":2,"583":1,"584":7,"585":7,"586":7,"587":7,"588":7,"589":7,"590":6,"591":1,"592":7,"593":16,"594":15,"595":15,"596":15,"597":6,"598":1,"599":3,"600":1,"601":1,"602":3,"603":3,"604":3,"605":3,"606":9,"607":3,"608":2,"609":2,"610":1,"611":1,"612":2,"613":2,"614":1,"615":1,"616":1,"617":1,"618":2,"619":2,"620":1,"621":50052,"622":2,"623":50050,"624":2,"625":1,"626":24,"627":50072,"628":50072,"629":50072,"630":50070,"631":50070,"632":50017,"633":50017,"634":53,"635":50072,"636":50072,"637":50072,"638":1,"639":1,"640":1,"641":0,"642":0,"643":0,"644":0},"b":{"1":[0,1],"2":[1,0],"3":[1,0],"4":[1,1],"5":[1,0],"6":[4,196],"7":[19,157],"8":[1,0],"9":[138,30,7,7],"10":[34,5],"11":[1,0],"12":[0,0],"13":[61,15],"14":[164,79],"15":[32,21],"16":[50259,50108],"17":[151,50108],"18":[42,109],"19":[1,0],"20":[0,1],"21":[1,1],"22":[0,0],"23":[1,0],"24":[45,3],"25":[45,1],"26":[45,11],"27":[6,39],"28":[16,89],"29":[31,58],"30":[44,2],"31":[44,1],"32":[29,94],"33":[11,79],"34":[20,59],"35":[32,2],"36":[32,1],"37":[3,29],"38":[12,107],"39":[119,54],"40":[209,186],"41":[71,102],"42":[17,54],"43":[7,90],"44":[25,1],"45":[10,7],"46":[6,3],"47":[3,6],"48":[7,8],"49":[2,7],"50":[3,6],"51":[0,6],"52":[0,2],"53":[3,3],"54":[3,0],"55":[14,4],"56":[1,13],"57":[13,6],"58":[7,18],"59":[20,16],"60":[29,1],"61":[5,25],"62":[36,0],"63":[1,22],"64":[1,21],"65":[22,5],"66":[56,32],"67":[54,43],"68":[19,15],"69":[13,9],"70":[2,1],"71":[3,0],"72":[7,5],"73":[3,2],"74":[2,1],"75":[8,3],"76":[1,7],"77":[1,6],"78":[1,18],"79":[12,6],"80":[13,2],"81":[11,2],"82":[23,4],"83":[10,1],"84":[9,1],"85":[19,2],"86":[24,1],"87":[29,17],"88":[9,3],"89":[5,1],"90":[0,5],"91":[0,10],"92":[8,2],"93":[5,1],"94":[0,5],"95":[0,10],"96":[8,2],"97":[3,24],"98":[1,23],"99":[1,91],"100":[92,32],"101":[84,7],"102":[2,89],"103":[91,2],"104":[105,68],"105":[8,97],"106":[28,77],"107":[89,118],"108":[207,200,165],"109":[89,0],"110":[30,59],"111":[27,62],"112":[1,3],"113":[6,4],"114":[0,8],"115":[8,8],"116":[8,0],"117":[0,8],"118":[8,0],"119":[2,6],"120":[6,0],"121":[2,4],"122":[2,0],"123":[4,0],"124":[7,6],"125":[4,7],"126":[1,6],"127":[4,1],"128":[6,1],"129":[2,1],"130":[2,0],"131":[2,50050],"132":[50017,53],"133":[1,0],"134":[1,1],"135":[0,0],"136":[0,0]},"f":{"1":1,"2":157,"3":0,"4":200,"5":200,"6":168,"7":176,"8":0,"9":138,"10":39,"11":328,"12":104,"13":56,"14":54,"15":5,"16":11,"17":0,"18":76,"19":243,"20":53,"21":50259,"22":19,"23":59,"24":0,"25":0,"26":50236,"27":5,"28":5,"29":9,"30":45,"31":109,"32":105,"33":44,"34":123,"35":90,"36":9,"37":32,"38":32,"39":119,"40":97,"41":5,"42":19,"43":8,"44":8,"45":5,"46":12,"47":25,"48":69,"49":67,"50":25,"51":8,"52":8,"53":11,"54":26,"55":25,"56":10,"57":1,"58":3,"59":3,"60":9,"61":9,"62":9,"63":3,"64":3,"65":6,"66":3,"67":9,"68":9,"69":9,"70":3,"71":0,"72":3,"73":5,"74":15,"75":15,"76":0,"77":3,"78":9,"79":9,"80":3,"81":3,"82":9,"83":9,"84":3,"85":2,"86":6,"87":6,"88":2,"89":6,"90":6,"91":14,"92":28,"93":13,"94":25,"95":47,"96":25,"97":36,"98":30,"99":1,"100":56,"101":54,"102":22,"103":3,"104":3,"105":13,"106":7,"107":7,"108":3,"109":8,"110":18,"111":19,"112":13,"113":27,"114":27,"115":13,"116":7,"117":6,"118":10,"119":21,"120":21,"121":10,"122":9,"123":38,"124":25,"125":46,"126":6,"127":6,"128":3,"129":9,"130":9,"131":3,"132":6,"133":5,"134":10,"135":10,"136":6,"137":5,"138":10,"139":10,"140":27,"141":92,"142":2,"143":105,"144":84,"145":1,"146":8,"147":207,"148":112,"149":89,"150":112,"151":50,"152":5,"153":9,"154":3,"155":4,"156":21,"157":63,"158":2,"159":10,"160":8,"161":8,"162":0,"163":8,"164":8,"165":6,"166":2,"167":6,"168":6,"169":8,"170":7,"171":9,"172":11,"173":4,"174":6,"175":2,"176":4,"177":3,"178":2,"179":7,"180":7,"181":16,"182":15,"183":6,"184":3,"185":3,"186":3,"187":9,"188":2,"189":1,"190":2,"191":50052,"192":24,"193":50072,"194":50070,"195":50017,"196":0},"fnMap":{"1":{"name":"(anonymous_1)","line":8,"loc":{"start":{"line":8,"column":1},"end":{"line":8,"column":13}}},"2":{"name":"noop","line":11,"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":20}}},"3":{"name":"(anonymous_3)","line":30,"loc":{"start":{"line":30,"column":23},"end":{"line":30,"column":35}}},"4":{"name":"only_once","line":35,"loc":{"start":{"line":35,"column":4},"end":{"line":35,"column":27}}},"5":{"name":"(anonymous_5)","line":37,"loc":{"start":{"line":37,"column":15},"end":{"line":37,"column":26}}},"6":{"name":"_once","line":44,"loc":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}}},"7":{"name":"(anonymous_7)","line":46,"loc":{"start":{"line":46,"column":15},"end":{"line":46,"column":26}}},"8":{"name":"(anonymous_8)","line":57,"loc":{"start":{"line":57,"column":36},"end":{"line":57,"column":51}}},"9":{"name":"_isArrayLike","line":61,"loc":{"start":{"line":61,"column":4},"end":{"line":61,"column":31}}},"10":{"name":"_each","line":70,"loc":{"start":{"line":70,"column":4},"end":{"line":70,"column":35}}},"11":{"name":"_arrayEach","line":76,"loc":{"start":{"line":76,"column":4},"end":{"line":76,"column":39}}},"12":{"name":"_map","line":85,"loc":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}}},"13":{"name":"_reduce","line":96,"loc":{"start":{"line":96,"column":4},"end":{"line":96,"column":42}}},"14":{"name":"(anonymous_14)","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":43}}},"15":{"name":"_forEachOf","line":103,"loc":{"start":{"line":103,"column":4},"end":{"line":103,"column":42}}},"16":{"name":"(anonymous_16)","line":104,"loc":{"start":{"line":104,"column":34},"end":{"line":104,"column":49}}},"17":{"name":"(anonymous_17)","line":109,"loc":{"start":{"line":109,"column":31},"end":{"line":109,"column":46}}},"18":{"name":"_keyIterator","line":119,"loc":{"start":{"line":119,"column":4},"end":{"line":119,"column":32}}},"19":{"name":"next","line":125,"loc":{"start":{"line":125,"column":19},"end":{"line":125,"column":35}}},"20":{"name":"next","line":132,"loc":{"start":{"line":132,"column":19},"end":{"line":132,"column":35}}},"21":{"name":"_baseSlice","line":139,"loc":{"start":{"line":139,"column":4},"end":{"line":139,"column":36}}},"22":{"name":"_withoutIndex","line":156,"loc":{"start":{"line":156,"column":4},"end":{"line":156,"column":37}}},"23":{"name":"(anonymous_23)","line":157,"loc":{"start":{"line":157,"column":15},"end":{"line":157,"column":49}}},"24":{"name":"(anonymous_24)","line":174,"loc":{"start":{"line":174,"column":29},"end":{"line":174,"column":43}}},"25":{"name":"(anonymous_25)","line":181,"loc":{"start":{"line":181,"column":29},"end":{"line":181,"column":43}}},"26":{"name":"(anonymous_26)","line":190,"loc":{"start":{"line":190,"column":33},"end":{"line":190,"column":47}}},"27":{"name":"(anonymous_27)","line":201,"loc":{"start":{"line":201,"column":17},"end":{"line":201,"column":52}}},"28":{"name":"(anonymous_28)","line":206,"loc":{"start":{"line":206,"column":23},"end":{"line":206,"column":58}}},"29":{"name":"(anonymous_29)","line":212,"loc":{"start":{"line":212,"column":22},"end":{"line":212,"column":64}}},"30":{"name":"(anonymous_30)","line":217,"loc":{"start":{"line":217,"column":19},"end":{"line":217,"column":57}}},"31":{"name":"(anonymous_31)","line":225,"loc":{"start":{"line":225,"column":22},"end":{"line":225,"column":44}}},"32":{"name":"done","line":228,"loc":{"start":{"line":228,"column":8},"end":{"line":228,"column":27}}},"33":{"name":"(anonymous_33)","line":242,"loc":{"start":{"line":242,"column":25},"end":{"line":242,"column":60}}},"34":{"name":"iterate","line":246,"loc":{"start":{"line":246,"column":8},"end":{"line":246,"column":27}}},"35":{"name":"(anonymous_35)","line":252,"loc":{"start":{"line":252,"column":36},"end":{"line":252,"column":51}}},"36":{"name":"(anonymous_36)","line":273,"loc":{"start":{"line":273,"column":24},"end":{"line":273,"column":66}}},"37":{"name":"_eachOfLimit","line":277,"loc":{"start":{"line":277,"column":4},"end":{"line":277,"column":33}}},"38":{"name":"(anonymous_38)","line":279,"loc":{"start":{"line":279,"column":15},"end":{"line":279,"column":50}}},"39":{"name":"replenish","line":290,"loc":{"start":{"line":290,"column":13},"end":{"line":290,"column":35}}},"40":{"name":"(anonymous_40)","line":305,"loc":{"start":{"line":305,"column":44},"end":{"line":305,"column":59}}},"41":{"name":"doParallel","line":321,"loc":{"start":{"line":321,"column":4},"end":{"line":321,"column":28}}},"42":{"name":"(anonymous_42)","line":322,"loc":{"start":{"line":322,"column":15},"end":{"line":322,"column":50}}},"43":{"name":"doParallelLimit","line":326,"loc":{"start":{"line":326,"column":4},"end":{"line":326,"column":40}}},"44":{"name":"(anonymous_44)","line":327,"loc":{"start":{"line":327,"column":15},"end":{"line":327,"column":50}}},"45":{"name":"doSeries","line":331,"loc":{"start":{"line":331,"column":4},"end":{"line":331,"column":26}}},"46":{"name":"(anonymous_46)","line":332,"loc":{"start":{"line":332,"column":15},"end":{"line":332,"column":50}}},"47":{"name":"_asyncMap","line":337,"loc":{"start":{"line":337,"column":4},"end":{"line":337,"column":56}}},"48":{"name":"(anonymous_48)","line":340,"loc":{"start":{"line":340,"column":20},"end":{"line":340,"column":54}}},"49":{"name":"(anonymous_49)","line":341,"loc":{"start":{"line":341,"column":28},"end":{"line":341,"column":46}}},"50":{"name":"(anonymous_50)","line":345,"loc":{"start":{"line":345,"column":11},"end":{"line":345,"column":26}}},"51":{"name":"(anonymous_51)","line":352,"loc":{"start":{"line":352,"column":21},"end":{"line":352,"column":63}}},"52":{"name":"_mapLimit","line":356,"loc":{"start":{"line":356,"column":4},"end":{"line":356,"column":30}}},"53":{"name":"(anonymous_53)","line":364,"loc":{"start":{"line":364,"column":19},"end":{"line":364,"column":60}}},"54":{"name":"(anonymous_54)","line":365,"loc":{"start":{"line":365,"column":32},"end":{"line":365,"column":58}}},"55":{"name":"(anonymous_55)","line":366,"loc":{"start":{"line":366,"column":30},"end":{"line":366,"column":48}}},"56":{"name":"(anonymous_56)","line":370,"loc":{"start":{"line":370,"column":11},"end":{"line":370,"column":26}}},"57":{"name":"(anonymous_57)","line":376,"loc":{"start":{"line":376,"column":24},"end":{"line":376,"column":65}}},"58":{"name":"(anonymous_58)","line":377,"loc":{"start":{"line":377,"column":33},"end":{"line":377,"column":46}}},"59":{"name":"_filter","line":383,"loc":{"start":{"line":383,"column":4},"end":{"line":383,"column":54}}},"60":{"name":"(anonymous_60)","line":385,"loc":{"start":{"line":385,"column":24},"end":{"line":385,"column":40}}},"61":{"name":"(anonymous_61)","line":388,"loc":{"start":{"line":388,"column":20},"end":{"line":388,"column":50}}},"62":{"name":"(anonymous_62)","line":389,"loc":{"start":{"line":389,"column":30},"end":{"line":389,"column":43}}},"63":{"name":"(anonymous_63)","line":395,"loc":{"start":{"line":395,"column":11},"end":{"line":395,"column":23}}},"64":{"name":"(anonymous_64)","line":396,"loc":{"start":{"line":396,"column":39},"end":{"line":396,"column":55}}},"65":{"name":"(anonymous_65)","line":398,"loc":{"start":{"line":398,"column":16},"end":{"line":398,"column":29}}},"66":{"name":"_reject","line":410,"loc":{"start":{"line":410,"column":4},"end":{"line":410,"column":54}}},"67":{"name":"(anonymous_67)","line":412,"loc":{"start":{"line":412,"column":24},"end":{"line":412,"column":40}}},"68":{"name":"(anonymous_68)","line":415,"loc":{"start":{"line":415,"column":20},"end":{"line":415,"column":50}}},"69":{"name":"(anonymous_69)","line":416,"loc":{"start":{"line":416,"column":30},"end":{"line":416,"column":43}}},"70":{"name":"(anonymous_70)","line":422,"loc":{"start":{"line":422,"column":11},"end":{"line":422,"column":23}}},"71":{"name":"(anonymous_71)","line":423,"loc":{"start":{"line":423,"column":39},"end":{"line":423,"column":55}}},"72":{"name":"(anonymous_72)","line":425,"loc":{"start":{"line":425,"column":16},"end":{"line":425,"column":29}}},"73":{"name":"_detect","line":433,"loc":{"start":{"line":433,"column":4},"end":{"line":433,"column":59}}},"74":{"name":"(anonymous_74)","line":434,"loc":{"start":{"line":434,"column":20},"end":{"line":434,"column":50}}},"75":{"name":"(anonymous_75)","line":435,"loc":{"start":{"line":435,"column":24},"end":{"line":435,"column":42}}},"76":{"name":"(anonymous_76)","line":444,"loc":{"start":{"line":444,"column":11},"end":{"line":444,"column":23}}},"77":{"name":"(anonymous_77)","line":452,"loc":{"start":{"line":452,"column":17},"end":{"line":452,"column":57}}},"78":{"name":"(anonymous_78)","line":453,"loc":{"start":{"line":453,"column":26},"end":{"line":453,"column":52}}},"79":{"name":"(anonymous_79)","line":454,"loc":{"start":{"line":454,"column":24},"end":{"line":454,"column":37}}},"80":{"name":"(anonymous_80)","line":461,"loc":{"start":{"line":461,"column":11},"end":{"line":461,"column":23}}},"81":{"name":"(anonymous_81)","line":467,"loc":{"start":{"line":467,"column":18},"end":{"line":467,"column":58}}},"82":{"name":"(anonymous_82)","line":468,"loc":{"start":{"line":468,"column":26},"end":{"line":468,"column":52}}},"83":{"name":"(anonymous_83)","line":469,"loc":{"start":{"line":469,"column":24},"end":{"line":469,"column":37}}},"84":{"name":"(anonymous_84)","line":476,"loc":{"start":{"line":476,"column":11},"end":{"line":476,"column":23}}},"85":{"name":"(anonymous_85)","line":481,"loc":{"start":{"line":481,"column":19},"end":{"line":481,"column":54}}},"86":{"name":"(anonymous_86)","line":482,"loc":{"start":{"line":482,"column":23},"end":{"line":482,"column":46}}},"87":{"name":"(anonymous_87)","line":483,"loc":{"start":{"line":483,"column":24},"end":{"line":483,"column":49}}},"88":{"name":"(anonymous_88)","line":491,"loc":{"start":{"line":491,"column":11},"end":{"line":491,"column":35}}},"89":{"name":"(anonymous_89)","line":496,"loc":{"start":{"line":496,"column":62},"end":{"line":496,"column":75}}},"90":{"name":"comparator","line":503,"loc":{"start":{"line":503,"column":8},"end":{"line":503,"column":41}}},"91":{"name":"(anonymous_91)","line":509,"loc":{"start":{"line":509,"column":17},"end":{"line":509,"column":44}}},"92":{"name":"addListener","line":520,"loc":{"start":{"line":520,"column":8},"end":{"line":520,"column":33}}},"93":{"name":"removeListener","line":523,"loc":{"start":{"line":523,"column":8},"end":{"line":523,"column":36}}},"94":{"name":"taskComplete","line":531,"loc":{"start":{"line":531,"column":8},"end":{"line":531,"column":32}}},"95":{"name":"(anonymous_95)","line":533,"loc":{"start":{"line":533,"column":43},"end":{"line":533,"column":57}}},"96":{"name":"(anonymous_96)","line":538,"loc":{"start":{"line":538,"column":20},"end":{"line":538,"column":32}}},"97":{"name":"(anonymous_97)","line":544,"loc":{"start":{"line":544,"column":25},"end":{"line":544,"column":38}}},"98":{"name":"taskCallback","line":546,"loc":{"start":{"line":546,"column":12},"end":{"line":546,"column":39}}},"99":{"name":"(anonymous_99)","line":553,"loc":{"start":{"line":553,"column":47},"end":{"line":553,"column":62}}},"100":{"name":"ready","line":576,"loc":{"start":{"line":576,"column":12},"end":{"line":576,"column":29}}},"101":{"name":"(anonymous_101)","line":577,"loc":{"start":{"line":577,"column":41},"end":{"line":577,"column":57}}},"102":{"name":"listener","line":587,"loc":{"start":{"line":587,"column":12},"end":{"line":587,"column":32}}},"103":{"name":"(anonymous_103)","line":596,"loc":{"start":{"line":596,"column":18},"end":{"line":596,"column":50}}},"104":{"name":"wrappedTask","line":608,"loc":{"start":{"line":608,"column":8},"end":{"line":608,"column":62}}},"105":{"name":"retryAttempt","line":609,"loc":{"start":{"line":609,"column":12},"end":{"line":609,"column":54}}},"106":{"name":"(anonymous_106)","line":610,"loc":{"start":{"line":610,"column":23},"end":{"line":610,"column":48}}},"107":{"name":"(anonymous_107)","line":611,"loc":{"start":{"line":611,"column":25},"end":{"line":611,"column":46}}},"108":{"name":"(anonymous_108)","line":620,"loc":{"start":{"line":620,"column":35},"end":{"line":620,"column":55}}},"109":{"name":"(anonymous_109)","line":630,"loc":{"start":{"line":630,"column":22},"end":{"line":630,"column":49}}},"110":{"name":"wrapIterator","line":639,"loc":{"start":{"line":639,"column":8},"end":{"line":639,"column":40}}},"111":{"name":"(anonymous_111)","line":640,"loc":{"start":{"line":640,"column":19},"end":{"line":640,"column":34}}},"112":{"name":"_parallel","line":660,"loc":{"start":{"line":660,"column":4},"end":{"line":660,"column":48}}},"113":{"name":"(anonymous_113)","line":664,"loc":{"start":{"line":664,"column":22},"end":{"line":664,"column":53}}},"114":{"name":"(anonymous_114)","line":665,"loc":{"start":{"line":665,"column":17},"end":{"line":665,"column":32}}},"115":{"name":"(anonymous_115)","line":673,"loc":{"start":{"line":673,"column":11},"end":{"line":673,"column":26}}},"116":{"name":"(anonymous_116)","line":678,"loc":{"start":{"line":678,"column":21},"end":{"line":678,"column":48}}},"117":{"name":"(anonymous_117)","line":682,"loc":{"start":{"line":682,"column":26},"end":{"line":682,"column":59}}},"118":{"name":"(anonymous_118)","line":686,"loc":{"start":{"line":686,"column":19},"end":{"line":686,"column":46}}},"119":{"name":"(anonymous_119)","line":690,"loc":{"start":{"line":690,"column":34},"end":{"line":690,"column":65}}},"120":{"name":"(anonymous_120)","line":691,"loc":{"start":{"line":691,"column":17},"end":{"line":691,"column":32}}},"121":{"name":"(anonymous_121)","line":699,"loc":{"start":{"line":699,"column":11},"end":{"line":699,"column":26}}},"122":{"name":"(anonymous_122)","line":704,"loc":{"start":{"line":704,"column":21},"end":{"line":704,"column":38}}},"123":{"name":"makeCallback","line":705,"loc":{"start":{"line":705,"column":8},"end":{"line":705,"column":37}}},"124":{"name":"fn","line":706,"loc":{"start":{"line":706,"column":12},"end":{"line":706,"column":26}}},"125":{"name":"(anonymous_125)","line":712,"loc":{"start":{"line":712,"column":22},"end":{"line":712,"column":34}}},"126":{"name":"(anonymous_126)","line":720,"loc":{"start":{"line":720,"column":18},"end":{"line":720,"column":32}}},"127":{"name":"(anonymous_127)","line":722,"loc":{"start":{"line":722,"column":15},"end":{"line":722,"column":27}}},"128":{"name":"_concat","line":729,"loc":{"start":{"line":729,"column":4},"end":{"line":729,"column":48}}},"129":{"name":"(anonymous_129)","line":731,"loc":{"start":{"line":731,"column":20},"end":{"line":731,"column":44}}},"130":{"name":"(anonymous_130)","line":732,"loc":{"start":{"line":732,"column":18},"end":{"line":732,"column":36}}},"131":{"name":"(anonymous_131)","line":736,"loc":{"start":{"line":736,"column":11},"end":{"line":736,"column":26}}},"132":{"name":"(anonymous_132)","line":743,"loc":{"start":{"line":743,"column":19},"end":{"line":743,"column":55}}},"133":{"name":"(anonymous_133)","line":745,"loc":{"start":{"line":745,"column":21},"end":{"line":745,"column":36}}},"134":{"name":"(anonymous_134)","line":757,"loc":{"start":{"line":757,"column":21},"end":{"line":757,"column":57}}},"135":{"name":"(anonymous_135)","line":758,"loc":{"start":{"line":758,"column":17},"end":{"line":758,"column":32}}},"136":{"name":"(anonymous_136)","line":772,"loc":{"start":{"line":772,"column":18},"end":{"line":772,"column":54}}},"137":{"name":"(anonymous_137)","line":774,"loc":{"start":{"line":774,"column":21},"end":{"line":774,"column":36}}},"138":{"name":"(anonymous_138)","line":786,"loc":{"start":{"line":786,"column":20},"end":{"line":786,"column":56}}},"139":{"name":"(anonymous_139)","line":787,"loc":{"start":{"line":787,"column":17},"end":{"line":787,"column":32}}},"140":{"name":"_queue","line":801,"loc":{"start":{"line":801,"column":4},"end":{"line":801,"column":50}}},"141":{"name":"_insert","line":808,"loc":{"start":{"line":808,"column":8},"end":{"line":808,"column":49}}},"142":{"name":"(anonymous_142)","line":818,"loc":{"start":{"line":818,"column":42},"end":{"line":818,"column":53}}},"143":{"name":"(anonymous_143)","line":822,"loc":{"start":{"line":822,"column":29},"end":{"line":822,"column":44}}},"144":{"name":"(anonymous_144)","line":850,"loc":{"start":{"line":850,"column":18},"end":{"line":850,"column":44}}},"145":{"name":"(anonymous_145)","line":853,"loc":{"start":{"line":853,"column":18},"end":{"line":853,"column":30}}},"146":{"name":"(anonymous_146)","line":857,"loc":{"start":{"line":857,"column":21},"end":{"line":857,"column":47}}},"147":{"name":"(anonymous_147)","line":860,"loc":{"start":{"line":860,"column":21},"end":{"line":860,"column":33}}},"148":{"name":"(anonymous_148)","line":866,"loc":{"start":{"line":866,"column":43},"end":{"line":866,"column":59}}},"149":{"name":"next","line":878,"loc":{"start":{"line":878,"column":16},"end":{"line":878,"column":32}}},"150":{"name":"(anonymous_150)","line":881,"loc":{"start":{"line":881,"column":38},"end":{"line":881,"column":54}}},"151":{"name":"(anonymous_151)","line":890,"loc":{"start":{"line":890,"column":20},"end":{"line":890,"column":32}}},"152":{"name":"(anonymous_152)","line":893,"loc":{"start":{"line":893,"column":21},"end":{"line":893,"column":33}}},"153":{"name":"(anonymous_153)","line":896,"loc":{"start":{"line":896,"column":18},"end":{"line":896,"column":29}}},"154":{"name":"(anonymous_154)","line":899,"loc":{"start":{"line":899,"column":19},"end":{"line":899,"column":31}}},"155":{"name":"(anonymous_155)","line":902,"loc":{"start":{"line":902,"column":20},"end":{"line":902,"column":32}}},"156":{"name":"(anonymous_156)","line":916,"loc":{"start":{"line":916,"column":18},"end":{"line":916,"column":49}}},"157":{"name":"(anonymous_157)","line":917,"loc":{"start":{"line":917,"column":23},"end":{"line":917,"column":44}}},"158":{"name":"(anonymous_158)","line":924,"loc":{"start":{"line":924,"column":26},"end":{"line":924,"column":57}}},"159":{"name":"_compareTasks","line":926,"loc":{"start":{"line":926,"column":8},"end":{"line":926,"column":36}}},"160":{"name":"_binarySearch","line":930,"loc":{"start":{"line":930,"column":8},"end":{"line":930,"column":56}}},"161":{"name":"_insert","line":944,"loc":{"start":{"line":944,"column":8},"end":{"line":944,"column":54}}},"162":{"name":"(anonymous_162)","line":954,"loc":{"start":{"line":954,"column":42},"end":{"line":954,"column":53}}},"163":{"name":"(anonymous_163)","line":958,"loc":{"start":{"line":958,"column":29},"end":{"line":958,"column":44}}},"164":{"name":"(anonymous_164)","line":978,"loc":{"start":{"line":978,"column":17},"end":{"line":978,"column":53}}},"165":{"name":"(anonymous_165)","line":988,"loc":{"start":{"line":988,"column":18},"end":{"line":988,"column":45}}},"166":{"name":"_console_fn","line":992,"loc":{"start":{"line":992,"column":4},"end":{"line":992,"column":31}}},"167":{"name":"(anonymous_167)","line":993,"loc":{"start":{"line":993,"column":15},"end":{"line":993,"column":29}}},"168":{"name":"(anonymous_168)","line":995,"loc":{"start":{"line":995,"column":40},"end":{"line":995,"column":55}}},"169":{"name":"(anonymous_169)","line":1004,"loc":{"start":{"line":1004,"column":41},"end":{"line":1004,"column":54}}},"170":{"name":"(anonymous_170)","line":1018,"loc":{"start":{"line":1018,"column":20},"end":{"line":1018,"column":42}}},"171":{"name":"(anonymous_171)","line":1021,"loc":{"start":{"line":1021,"column":27},"end":{"line":1021,"column":40}}},"172":{"name":"memoized","line":1024,"loc":{"start":{"line":1024,"column":8},"end":{"line":1024,"column":28}}},"173":{"name":"(anonymous_173)","line":1029,"loc":{"start":{"line":1029,"column":31},"end":{"line":1029,"column":43}}},"174":{"name":"(anonymous_174)","line":1038,"loc":{"start":{"line":1038,"column":44},"end":{"line":1038,"column":56}}},"175":{"name":"(anonymous_175)","line":1053,"loc":{"start":{"line":1053,"column":22},"end":{"line":1053,"column":36}}},"176":{"name":"(anonymous_176)","line":1054,"loc":{"start":{"line":1054,"column":13},"end":{"line":1054,"column":25}}},"177":{"name":"(anonymous_177)","line":1059,"loc":{"start":{"line":1059,"column":18},"end":{"line":1059,"column":55}}},"178":{"name":"(anonymous_178)","line":1067,"loc":{"start":{"line":1067,"column":24},"end":{"line":1067,"column":61}}},"179":{"name":"(anonymous_179)","line":1075,"loc":{"start":{"line":1075,"column":16},"end":{"line":1075,"column":46}}},"180":{"name":"(anonymous_180)","line":1077,"loc":{"start":{"line":1077,"column":15},"end":{"line":1077,"column":27}}},"181":{"name":"(anonymous_181)","line":1088,"loc":{"start":{"line":1088,"column":36},"end":{"line":1088,"column":63}}},"182":{"name":"(anonymous_182)","line":1089,"loc":{"start":{"line":1089,"column":47},"end":{"line":1089,"column":59}}},"183":{"name":"(anonymous_183)","line":1095,"loc":{"start":{"line":1095,"column":12},"end":{"line":1095,"column":36}}},"184":{"name":"(anonymous_184)","line":1101,"loc":{"start":{"line":1101,"column":20},"end":{"line":1101,"column":50}}},"185":{"name":"_applyEach","line":1106,"loc":{"start":{"line":1106,"column":4},"end":{"line":1106,"column":49}}},"186":{"name":"go","line":1107,"loc":{"start":{"line":1107,"column":8},"end":{"line":1107,"column":22}}},"187":{"name":"(anonymous_187)","line":1111,"loc":{"start":{"line":1111,"column":31},"end":{"line":1111,"column":52}}},"188":{"name":"(anonymous_188)","line":1125,"loc":{"start":{"line":1125,"column":22},"end":{"line":1125,"column":50}}},"189":{"name":"(anonymous_189)","line":1129,"loc":{"start":{"line":1129,"column":28},"end":{"line":1129,"column":56}}},"190":{"name":"(anonymous_190)","line":1135,"loc":{"start":{"line":1135,"column":20},"end":{"line":1135,"column":44}}},"191":{"name":"next","line":1138,"loc":{"start":{"line":1138,"column":8},"end":{"line":1138,"column":27}}},"192":{"name":"ensureAsync","line":1147,"loc":{"start":{"line":1147,"column":4},"end":{"line":1147,"column":29}}},"193":{"name":"(anonymous_193)","line":1148,"loc":{"start":{"line":1148,"column":15},"end":{"line":1148,"column":48}}},"194":{"name":"(anonymous_194)","line":1151,"loc":{"start":{"line":1151,"column":22},"end":{"line":1151,"column":34}}},"195":{"name":"(anonymous_195)","line":1154,"loc":{"start":{"line":1154,"column":39},"end":{"line":1154,"column":51}}},"196":{"name":"(anonymous_196)","line":1175,"loc":{"start":{"line":1175,"column":19},"end":{"line":1175,"column":31}}}},"statementMap":{"1":{"start":{"line":8,"column":0},"end":{"line":1184,"column":5}},"2":{"start":{"line":10,"column":4},"end":{"line":10,"column":19}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":22}},"4":{"start":{"line":14,"column":4},"end":{"line":14,"column":29}},"5":{"start":{"line":16,"column":4},"end":{"line":24,"column":5}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":22}},"7":{"start":{"line":19,"column":9},"end":{"line":24,"column":5}},"8":{"start":{"line":20,"column":8},"end":{"line":20,"column":22}},"9":{"start":{"line":23,"column":8},"end":{"line":23,"column":20}},"10":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"11":{"start":{"line":27,"column":6},"end":{"line":27,"column":34}},"12":{"start":{"line":30,"column":4},"end":{"line":33,"column":6}},"13":{"start":{"line":31,"column":8},"end":{"line":31,"column":36}},"14":{"start":{"line":32,"column":8},"end":{"line":32,"column":21}},"15":{"start":{"line":35,"column":4},"end":{"line":42,"column":5}},"16":{"start":{"line":36,"column":8},"end":{"line":36,"column":27}},"17":{"start":{"line":37,"column":8},"end":{"line":41,"column":10}},"18":{"start":{"line":38,"column":12},"end":{"line":38,"column":72}},"19":{"start":{"line":38,"column":24},"end":{"line":38,"column":72}},"20":{"start":{"line":39,"column":12},"end":{"line":39,"column":26}},"21":{"start":{"line":40,"column":12},"end":{"line":40,"column":38}},"22":{"start":{"line":44,"column":4},"end":{"line":51,"column":5}},"23":{"start":{"line":45,"column":8},"end":{"line":45,"column":27}},"24":{"start":{"line":46,"column":8},"end":{"line":50,"column":10}},"25":{"start":{"line":47,"column":12},"end":{"line":47,"column":31}},"26":{"start":{"line":47,"column":24},"end":{"line":47,"column":31}},"27":{"start":{"line":48,"column":12},"end":{"line":48,"column":26}},"28":{"start":{"line":49,"column":12},"end":{"line":49,"column":38}},"29":{"start":{"line":55,"column":4},"end":{"line":55,"column":46}},"30":{"start":{"line":57,"column":4},"end":{"line":59,"column":6}},"31":{"start":{"line":58,"column":8},"end":{"line":58,"column":56}},"32":{"start":{"line":61,"column":4},"end":{"line":68,"column":5}},"33":{"start":{"line":62,"column":8},"end":{"line":67,"column":10}},"34":{"start":{"line":70,"column":4},"end":{"line":74,"column":5}},"35":{"start":{"line":71,"column":8},"end":{"line":73,"column":39}},"36":{"start":{"line":76,"column":4},"end":{"line":83,"column":5}},"37":{"start":{"line":77,"column":6},"end":{"line":78,"column":30}},"38":{"start":{"line":80,"column":6},"end":{"line":82,"column":7}},"39":{"start":{"line":81,"column":8},"end":{"line":81,"column":41}},"40":{"start":{"line":85,"column":4},"end":{"line":94,"column":5}},"41":{"start":{"line":86,"column":6},"end":{"line":88,"column":33}},"42":{"start":{"line":90,"column":6},"end":{"line":92,"column":7}},"43":{"start":{"line":91,"column":8},"end":{"line":91,"column":57}},"44":{"start":{"line":93,"column":6},"end":{"line":93,"column":20}},"45":{"start":{"line":96,"column":4},"end":{"line":101,"column":5}},"46":{"start":{"line":97,"column":8},"end":{"line":99,"column":11}},"47":{"start":{"line":98,"column":12},"end":{"line":98,"column":43}},"48":{"start":{"line":100,"column":8},"end":{"line":100,"column":20}},"49":{"start":{"line":103,"column":4},"end":{"line":107,"column":5}},"50":{"start":{"line":104,"column":8},"end":{"line":106,"column":11}},"51":{"start":{"line":105,"column":12},"end":{"line":105,"column":39}},"52":{"start":{"line":109,"column":4},"end":{"line":117,"column":6}},"53":{"start":{"line":110,"column":8},"end":{"line":110,"column":22}},"54":{"start":{"line":111,"column":8},"end":{"line":115,"column":9}},"55":{"start":{"line":112,"column":12},"end":{"line":114,"column":13}},"56":{"start":{"line":113,"column":16},"end":{"line":113,"column":29}},"57":{"start":{"line":116,"column":8},"end":{"line":116,"column":20}},"58":{"start":{"line":119,"column":4},"end":{"line":137,"column":5}},"59":{"start":{"line":120,"column":8},"end":{"line":120,"column":19}},"60":{"start":{"line":121,"column":8},"end":{"line":121,"column":16}},"61":{"start":{"line":122,"column":8},"end":{"line":122,"column":17}},"62":{"start":{"line":123,"column":8},"end":{"line":136,"column":9}},"63":{"start":{"line":124,"column":12},"end":{"line":124,"column":30}},"64":{"start":{"line":125,"column":12},"end":{"line":128,"column":14}},"65":{"start":{"line":126,"column":16},"end":{"line":126,"column":20}},"66":{"start":{"line":127,"column":16},"end":{"line":127,"column":42}},"67":{"start":{"line":130,"column":12},"end":{"line":130,"column":31}},"68":{"start":{"line":131,"column":12},"end":{"line":131,"column":30}},"69":{"start":{"line":132,"column":12},"end":{"line":135,"column":14}},"70":{"start":{"line":133,"column":16},"end":{"line":133,"column":20}},"71":{"start":{"line":134,"column":16},"end":{"line":134,"column":48}},"72":{"start":{"line":139,"column":4},"end":{"line":154,"column":5}},"73":{"start":{"line":140,"column":8},"end":{"line":140,"column":27}},"74":{"start":{"line":141,"column":8},"end":{"line":141,"column":23}},"75":{"start":{"line":142,"column":8},"end":{"line":142,"column":32}},"76":{"start":{"line":144,"column":8},"end":{"line":147,"column":9}},"77":{"start":{"line":145,"column":10},"end":{"line":145,"column":26}},"78":{"start":{"line":146,"column":10},"end":{"line":146,"column":43}},"79":{"start":{"line":148,"column":8},"end":{"line":148,"column":35}},"80":{"start":{"line":150,"column":8},"end":{"line":152,"column":9}},"81":{"start":{"line":151,"column":10},"end":{"line":151,"column":45}},"82":{"start":{"line":153,"column":8},"end":{"line":153,"column":22}},"83":{"start":{"line":156,"column":4},"end":{"line":160,"column":5}},"84":{"start":{"line":157,"column":8},"end":{"line":159,"column":10}},"85":{"start":{"line":158,"column":12},"end":{"line":158,"column":45}},"86":{"start":{"line":167,"column":4},"end":{"line":167,"column":22}},"87":{"start":{"line":168,"column":4},"end":{"line":170,"column":5}},"88":{"start":{"line":169,"column":8},"end":{"line":169,"column":37}},"89":{"start":{"line":172,"column":4},"end":{"line":198,"column":5}},"90":{"start":{"line":173,"column":8},"end":{"line":185,"column":9}},"91":{"start":{"line":174,"column":12},"end":{"line":177,"column":14}},"92":{"start":{"line":176,"column":16},"end":{"line":176,"column":34}},"93":{"start":{"line":178,"column":12},"end":{"line":178,"column":48}},"94":{"start":{"line":181,"column":12},"end":{"line":183,"column":14}},"95":{"start":{"line":182,"column":16},"end":{"line":182,"column":34}},"96":{"start":{"line":184,"column":12},"end":{"line":184,"column":48}},"97":{"start":{"line":188,"column":8},"end":{"line":188,"column":42}},"98":{"start":{"line":189,"column":8},"end":{"line":197,"column":9}},"99":{"start":{"line":190,"column":12},"end":{"line":193,"column":14}},"100":{"start":{"line":192,"column":14},"end":{"line":192,"column":32}},"101":{"start":{"line":196,"column":12},"end":{"line":196,"column":48}},"102":{"start":{"line":200,"column":4},"end":{"line":203,"column":6}},"103":{"start":{"line":202,"column":8},"end":{"line":202,"column":68}},"104":{"start":{"line":205,"column":4},"end":{"line":208,"column":6}},"105":{"start":{"line":207,"column":8},"end":{"line":207,"column":74}},"106":{"start":{"line":211,"column":4},"end":{"line":214,"column":6}},"107":{"start":{"line":213,"column":8},"end":{"line":213,"column":75}},"108":{"start":{"line":216,"column":4},"end":{"line":239,"column":6}},"109":{"start":{"line":218,"column":8},"end":{"line":218,"column":43}},"110":{"start":{"line":219,"column":8},"end":{"line":219,"column":30}},"111":{"start":{"line":220,"column":8},"end":{"line":220,"column":57}},"112":{"start":{"line":221,"column":8},"end":{"line":221,"column":26}},"113":{"start":{"line":222,"column":8},"end":{"line":224,"column":9}},"114":{"start":{"line":223,"column":12},"end":{"line":223,"column":34}},"115":{"start":{"line":225,"column":8},"end":{"line":227,"column":11}},"116":{"start":{"line":226,"column":12},"end":{"line":226,"column":56}},"117":{"start":{"line":228,"column":8},"end":{"line":238,"column":9}},"118":{"start":{"line":229,"column":10},"end":{"line":237,"column":11}},"119":{"start":{"line":230,"column":14},"end":{"line":230,"column":28}},"120":{"start":{"line":233,"column":14},"end":{"line":233,"column":29}},"121":{"start":{"line":234,"column":14},"end":{"line":236,"column":15}},"122":{"start":{"line":235,"column":18},"end":{"line":235,"column":33}},"123":{"start":{"line":241,"column":4},"end":{"line":268,"column":6}},"124":{"start":{"line":243,"column":8},"end":{"line":243,"column":43}},"125":{"start":{"line":244,"column":8},"end":{"line":244,"column":24}},"126":{"start":{"line":245,"column":8},"end":{"line":245,"column":40}},"127":{"start":{"line":246,"column":8},"end":{"line":266,"column":9}},"128":{"start":{"line":247,"column":12},"end":{"line":247,"column":28}},"129":{"start":{"line":248,"column":12},"end":{"line":248,"column":32}},"130":{"start":{"line":249,"column":12},"end":{"line":251,"column":13}},"131":{"start":{"line":250,"column":16},"end":{"line":250,"column":38}},"132":{"start":{"line":252,"column":12},"end":{"line":264,"column":15}},"133":{"start":{"line":253,"column":16},"end":{"line":263,"column":17}},"134":{"start":{"line":254,"column":20},"end":{"line":254,"column":34}},"135":{"start":{"line":257,"column":20},"end":{"line":262,"column":21}},"136":{"start":{"line":258,"column":24},"end":{"line":258,"column":48}},"137":{"start":{"line":261,"column":24},"end":{"line":261,"column":34}},"138":{"start":{"line":265,"column":12},"end":{"line":265,"column":25}},"139":{"start":{"line":267,"column":8},"end":{"line":267,"column":18}},"140":{"start":{"line":272,"column":4},"end":{"line":275,"column":6}},"141":{"start":{"line":274,"column":8},"end":{"line":274,"column":53}},"142":{"start":{"line":277,"column":4},"end":{"line":318,"column":5}},"143":{"start":{"line":279,"column":8},"end":{"line":317,"column":10}},"144":{"start":{"line":280,"column":12},"end":{"line":280,"column":47}},"145":{"start":{"line":281,"column":12},"end":{"line":281,"column":28}},"146":{"start":{"line":282,"column":12},"end":{"line":282,"column":44}},"147":{"start":{"line":283,"column":12},"end":{"line":285,"column":13}},"148":{"start":{"line":284,"column":16},"end":{"line":284,"column":38}},"149":{"start":{"line":286,"column":12},"end":{"line":286,"column":29}},"150":{"start":{"line":287,"column":12},"end":{"line":287,"column":28}},"151":{"start":{"line":288,"column":12},"end":{"line":288,"column":32}},"152":{"start":{"line":290,"column":12},"end":{"line":316,"column":17}},"153":{"start":{"line":291,"column":16},"end":{"line":293,"column":17}},"154":{"start":{"line":292,"column":20},"end":{"line":292,"column":42}},"155":{"start":{"line":295,"column":16},"end":{"line":315,"column":17}},"156":{"start":{"line":296,"column":20},"end":{"line":296,"column":40}},"157":{"start":{"line":297,"column":20},"end":{"line":303,"column":21}},"158":{"start":{"line":298,"column":24},"end":{"line":298,"column":36}},"159":{"start":{"line":299,"column":24},"end":{"line":301,"column":25}},"160":{"start":{"line":300,"column":28},"end":{"line":300,"column":43}},"161":{"start":{"line":302,"column":24},"end":{"line":302,"column":31}},"162":{"start":{"line":304,"column":20},"end":{"line":304,"column":33}},"163":{"start":{"line":305,"column":20},"end":{"line":314,"column":23}},"164":{"start":{"line":306,"column":24},"end":{"line":306,"column":37}},"165":{"start":{"line":307,"column":24},"end":{"line":313,"column":25}},"166":{"start":{"line":308,"column":28},"end":{"line":308,"column":42}},"167":{"start":{"line":309,"column":28},"end":{"line":309,"column":43}},"168":{"start":{"line":312,"column":28},"end":{"line":312,"column":40}},"169":{"start":{"line":321,"column":4},"end":{"line":325,"column":5}},"170":{"start":{"line":322,"column":8},"end":{"line":324,"column":10}},"171":{"start":{"line":323,"column":12},"end":{"line":323,"column":61}},"172":{"start":{"line":326,"column":4},"end":{"line":330,"column":5}},"173":{"start":{"line":327,"column":8},"end":{"line":329,"column":10}},"174":{"start":{"line":328,"column":12},"end":{"line":328,"column":68}},"175":{"start":{"line":331,"column":4},"end":{"line":335,"column":5}},"176":{"start":{"line":332,"column":8},"end":{"line":334,"column":10}},"177":{"start":{"line":333,"column":12},"end":{"line":333,"column":67}},"178":{"start":{"line":337,"column":4},"end":{"line":348,"column":5}},"179":{"start":{"line":338,"column":8},"end":{"line":338,"column":43}},"180":{"start":{"line":339,"column":8},"end":{"line":339,"column":25}},"181":{"start":{"line":340,"column":8},"end":{"line":347,"column":11}},"182":{"start":{"line":341,"column":12},"end":{"line":344,"column":15}},"183":{"start":{"line":342,"column":16},"end":{"line":342,"column":35}},"184":{"start":{"line":343,"column":16},"end":{"line":343,"column":30}},"185":{"start":{"line":346,"column":12},"end":{"line":346,"column":35}},"186":{"start":{"line":350,"column":4},"end":{"line":350,"column":38}},"187":{"start":{"line":351,"column":4},"end":{"line":351,"column":42}},"188":{"start":{"line":352,"column":4},"end":{"line":354,"column":6}},"189":{"start":{"line":353,"column":8},"end":{"line":353,"column":57}},"190":{"start":{"line":356,"column":4},"end":{"line":358,"column":5}},"191":{"start":{"line":357,"column":8},"end":{"line":357,"column":49}},"192":{"start":{"line":362,"column":4},"end":{"line":373,"column":6}},"193":{"start":{"line":365,"column":8},"end":{"line":372,"column":11}},"194":{"start":{"line":366,"column":12},"end":{"line":369,"column":15}},"195":{"start":{"line":367,"column":16},"end":{"line":367,"column":25}},"196":{"start":{"line":368,"column":16},"end":{"line":368,"column":30}},"197":{"start":{"line":371,"column":12},"end":{"line":371,"column":40}},"198":{"start":{"line":375,"column":4},"end":{"line":381,"column":6}},"199":{"start":{"line":377,"column":8},"end":{"line":379,"column":21}},"200":{"start":{"line":378,"column":12},"end":{"line":378,"column":21}},"201":{"start":{"line":380,"column":8},"end":{"line":380,"column":57}},"202":{"start":{"line":383,"column":4},"end":{"line":402,"column":5}},"203":{"start":{"line":384,"column":8},"end":{"line":384,"column":25}},"204":{"start":{"line":385,"column":8},"end":{"line":387,"column":11}},"205":{"start":{"line":386,"column":12},"end":{"line":386,"column":40}},"206":{"start":{"line":388,"column":8},"end":{"line":401,"column":11}},"207":{"start":{"line":389,"column":12},"end":{"line":394,"column":15}},"208":{"start":{"line":390,"column":16},"end":{"line":392,"column":17}},"209":{"start":{"line":391,"column":20},"end":{"line":391,"column":36}},"210":{"start":{"line":393,"column":16},"end":{"line":393,"column":27}},"211":{"start":{"line":396,"column":12},"end":{"line":400,"column":16}},"212":{"start":{"line":397,"column":16},"end":{"line":397,"column":41}},"213":{"start":{"line":399,"column":16},"end":{"line":399,"column":31}},"214":{"start":{"line":404,"column":4},"end":{"line":405,"column":39}},"215":{"start":{"line":407,"column":4},"end":{"line":408,"column":43}},"216":{"start":{"line":410,"column":4},"end":{"line":429,"column":5}},"217":{"start":{"line":411,"column":8},"end":{"line":411,"column":25}},"218":{"start":{"line":412,"column":8},"end":{"line":414,"column":11}},"219":{"start":{"line":413,"column":12},"end":{"line":413,"column":40}},"220":{"start":{"line":415,"column":8},"end":{"line":428,"column":11}},"221":{"start":{"line":416,"column":12},"end":{"line":421,"column":15}},"222":{"start":{"line":417,"column":16},"end":{"line":419,"column":17}},"223":{"start":{"line":418,"column":20},"end":{"line":418,"column":36}},"224":{"start":{"line":420,"column":16},"end":{"line":420,"column":27}},"225":{"start":{"line":423,"column":12},"end":{"line":427,"column":16}},"226":{"start":{"line":424,"column":16},"end":{"line":424,"column":41}},"227":{"start":{"line":426,"column":16},"end":{"line":426,"column":31}},"228":{"start":{"line":430,"column":4},"end":{"line":430,"column":39}},"229":{"start":{"line":431,"column":4},"end":{"line":431,"column":43}},"230":{"start":{"line":433,"column":4},"end":{"line":447,"column":5}},"231":{"start":{"line":434,"column":8},"end":{"line":446,"column":11}},"232":{"start":{"line":435,"column":12},"end":{"line":443,"column":15}},"233":{"start":{"line":436,"column":16},"end":{"line":442,"column":17}},"234":{"start":{"line":437,"column":20},"end":{"line":437,"column":37}},"235":{"start":{"line":438,"column":20},"end":{"line":438,"column":41}},"236":{"start":{"line":441,"column":20},"end":{"line":441,"column":31}},"237":{"start":{"line":445,"column":12},"end":{"line":445,"column":28}},"238":{"start":{"line":448,"column":4},"end":{"line":448,"column":39}},"239":{"start":{"line":449,"column":4},"end":{"line":449,"column":43}},"240":{"start":{"line":451,"column":4},"end":{"line":464,"column":6}},"241":{"start":{"line":453,"column":8},"end":{"line":463,"column":11}},"242":{"start":{"line":454,"column":12},"end":{"line":460,"column":15}},"243":{"start":{"line":455,"column":16},"end":{"line":458,"column":17}},"244":{"start":{"line":456,"column":20},"end":{"line":456,"column":40}},"245":{"start":{"line":457,"column":20},"end":{"line":457,"column":41}},"246":{"start":{"line":459,"column":16},"end":{"line":459,"column":27}},"247":{"start":{"line":462,"column":12},"end":{"line":462,"column":33}},"248":{"start":{"line":466,"column":4},"end":{"line":479,"column":6}},"249":{"start":{"line":468,"column":8},"end":{"line":478,"column":11}},"250":{"start":{"line":469,"column":12},"end":{"line":475,"column":15}},"251":{"start":{"line":470,"column":16},"end":{"line":473,"column":17}},"252":{"start":{"line":471,"column":20},"end":{"line":471,"column":41}},"253":{"start":{"line":472,"column":20},"end":{"line":472,"column":41}},"254":{"start":{"line":474,"column":16},"end":{"line":474,"column":27}},"255":{"start":{"line":477,"column":12},"end":{"line":477,"column":32}},"256":{"start":{"line":481,"column":4},"end":{"line":507,"column":6}},"257":{"start":{"line":482,"column":8},"end":{"line":501,"column":11}},"258":{"start":{"line":483,"column":12},"end":{"line":490,"column":15}},"259":{"start":{"line":484,"column":16},"end":{"line":489,"column":17}},"260":{"start":{"line":485,"column":20},"end":{"line":485,"column":34}},"261":{"start":{"line":488,"column":20},"end":{"line":488,"column":67}},"262":{"start":{"line":492,"column":12},"end":{"line":499,"column":13}},"263":{"start":{"line":493,"column":16},"end":{"line":493,"column":37}},"264":{"start":{"line":496,"column":16},"end":{"line":498,"column":20}},"265":{"start":{"line":497,"column":20},"end":{"line":497,"column":35}},"266":{"start":{"line":503,"column":8},"end":{"line":506,"column":9}},"267":{"start":{"line":504,"column":12},"end":{"line":504,"column":54}},"268":{"start":{"line":505,"column":12},"end":{"line":505,"column":46}},"269":{"start":{"line":509,"column":4},"end":{"line":594,"column":6}},"270":{"start":{"line":510,"column":8},"end":{"line":510,"column":43}},"271":{"start":{"line":511,"column":8},"end":{"line":511,"column":32}},"272":{"start":{"line":512,"column":8},"end":{"line":512,"column":41}},"273":{"start":{"line":513,"column":8},"end":{"line":515,"column":9}},"274":{"start":{"line":514,"column":12},"end":{"line":514,"column":34}},"275":{"start":{"line":517,"column":8},"end":{"line":517,"column":25}},"276":{"start":{"line":519,"column":8},"end":{"line":519,"column":27}},"277":{"start":{"line":520,"column":8},"end":{"line":522,"column":9}},"278":{"start":{"line":521,"column":12},"end":{"line":521,"column":34}},"279":{"start":{"line":523,"column":8},"end":{"line":530,"column":9}},"280":{"start":{"line":524,"column":12},"end":{"line":529,"column":13}},"281":{"start":{"line":525,"column":16},"end":{"line":528,"column":17}},"282":{"start":{"line":526,"column":20},"end":{"line":526,"column":43}},"283":{"start":{"line":527,"column":20},"end":{"line":527,"column":27}},"284":{"start":{"line":531,"column":8},"end":{"line":536,"column":9}},"285":{"start":{"line":532,"column":12},"end":{"line":532,"column":29}},"286":{"start":{"line":533,"column":12},"end":{"line":535,"column":15}},"287":{"start":{"line":534,"column":16},"end":{"line":534,"column":21}},"288":{"start":{"line":538,"column":8},"end":{"line":542,"column":11}},"289":{"start":{"line":539,"column":12},"end":{"line":541,"column":13}},"290":{"start":{"line":540,"column":16},"end":{"line":540,"column":40}},"291":{"start":{"line":544,"column":8},"end":{"line":593,"column":11}},"292":{"start":{"line":545,"column":12},"end":{"line":545,"column":65}},"293":{"start":{"line":546,"column":12},"end":{"line":563,"column":13}},"294":{"start":{"line":547,"column":16},"end":{"line":547,"column":52}},"295":{"start":{"line":548,"column":16},"end":{"line":550,"column":17}},"296":{"start":{"line":549,"column":20},"end":{"line":549,"column":35}},"297":{"start":{"line":551,"column":16},"end":{"line":562,"column":17}},"298":{"start":{"line":552,"column":20},"end":{"line":552,"column":41}},"299":{"start":{"line":553,"column":20},"end":{"line":555,"column":23}},"300":{"start":{"line":554,"column":24},"end":{"line":554,"column":58}},"301":{"start":{"line":556,"column":20},"end":{"line":556,"column":42}},"302":{"start":{"line":557,"column":20},"end":{"line":557,"column":47}},"303":{"start":{"line":560,"column":20},"end":{"line":560,"column":38}},"304":{"start":{"line":561,"column":20},"end":{"line":561,"column":53}},"305":{"start":{"line":564,"column":12},"end":{"line":564,"column":74}},"306":{"start":{"line":566,"column":12},"end":{"line":566,"column":38}},"307":{"start":{"line":567,"column":12},"end":{"line":567,"column":20}},"308":{"start":{"line":568,"column":12},"end":{"line":575,"column":13}},"309":{"start":{"line":569,"column":16},"end":{"line":571,"column":17}},"310":{"start":{"line":570,"column":20},"end":{"line":570,"column":65}},"311":{"start":{"line":572,"column":16},"end":{"line":574,"column":17}},"312":{"start":{"line":573,"column":20},"end":{"line":573,"column":63}},"313":{"start":{"line":576,"column":12},"end":{"line":580,"column":13}},"314":{"start":{"line":577,"column":16},"end":{"line":579,"column":55}},"315":{"start":{"line":578,"column":20},"end":{"line":578,"column":60}},"316":{"start":{"line":581,"column":12},"end":{"line":586,"column":13}},"317":{"start":{"line":582,"column":16},"end":{"line":582,"column":61}},"318":{"start":{"line":585,"column":16},"end":{"line":585,"column":38}},"319":{"start":{"line":587,"column":12},"end":{"line":592,"column":13}},"320":{"start":{"line":588,"column":16},"end":{"line":591,"column":17}},"321":{"start":{"line":589,"column":20},"end":{"line":589,"column":45}},"322":{"start":{"line":590,"column":20},"end":{"line":590,"column":65}},"323":{"start":{"line":596,"column":4},"end":{"line":628,"column":6}},"324":{"start":{"line":597,"column":8},"end":{"line":597,"column":30}},"325":{"start":{"line":598,"column":8},"end":{"line":598,"column":26}},"326":{"start":{"line":600,"column":8},"end":{"line":604,"column":9}},"327":{"start":{"line":601,"column":12},"end":{"line":601,"column":28}},"328":{"start":{"line":602,"column":12},"end":{"line":602,"column":25}},"329":{"start":{"line":603,"column":12},"end":{"line":603,"column":34}},"330":{"start":{"line":606,"column":8},"end":{"line":606,"column":53}},"331":{"start":{"line":608,"column":8},"end":{"line":624,"column":9}},"332":{"start":{"line":609,"column":12},"end":{"line":615,"column":13}},"333":{"start":{"line":610,"column":16},"end":{"line":614,"column":18}},"334":{"start":{"line":611,"column":20},"end":{"line":613,"column":39}},"335":{"start":{"line":612,"column":24},"end":{"line":612,"column":89}},"336":{"start":{"line":617,"column":12},"end":{"line":619,"column":13}},"337":{"start":{"line":618,"column":16},"end":{"line":618,"column":63}},"338":{"start":{"line":620,"column":12},"end":{"line":623,"column":15}},"339":{"start":{"line":621,"column":16},"end":{"line":621,"column":45}},"340":{"start":{"line":622,"column":16},"end":{"line":622,"column":69}},"341":{"start":{"line":627,"column":8},"end":{"line":627,"column":54}},"342":{"start":{"line":630,"column":4},"end":{"line":658,"column":6}},"343":{"start":{"line":631,"column":8},"end":{"line":631,"column":43}},"344":{"start":{"line":632,"column":8},"end":{"line":635,"column":9}},"345":{"start":{"line":633,"column":10},"end":{"line":633,"column":91}},"346":{"start":{"line":634,"column":10},"end":{"line":634,"column":31}},"347":{"start":{"line":636,"column":8},"end":{"line":638,"column":9}},"348":{"start":{"line":637,"column":12},"end":{"line":637,"column":30}},"349":{"start":{"line":639,"column":8},"end":{"line":656,"column":9}},"350":{"start":{"line":640,"column":12},"end":{"line":655,"column":14}},"351":{"start":{"line":641,"column":16},"end":{"line":654,"column":17}},"352":{"start":{"line":642,"column":20},"end":{"line":642,"column":52}},"353":{"start":{"line":645,"column":20},"end":{"line":645,"column":56}},"354":{"start":{"line":646,"column":20},"end":{"line":646,"column":47}},"355":{"start":{"line":647,"column":20},"end":{"line":652,"column":21}},"356":{"start":{"line":648,"column":24},"end":{"line":648,"column":54}},"357":{"start":{"line":651,"column":24},"end":{"line":651,"column":44}},"358":{"start":{"line":653,"column":20},"end":{"line":653,"column":60}},"359":{"start":{"line":657,"column":8},"end":{"line":657,"column":46}},"360":{"start":{"line":660,"column":4},"end":{"line":676,"column":5}},"361":{"start":{"line":661,"column":8},"end":{"line":661,"column":36}},"362":{"start":{"line":662,"column":8},"end":{"line":662,"column":52}},"363":{"start":{"line":664,"column":8},"end":{"line":675,"column":11}},"364":{"start":{"line":665,"column":12},"end":{"line":672,"column":15}},"365":{"start":{"line":666,"column":16},"end":{"line":666,"column":52}},"366":{"start":{"line":667,"column":16},"end":{"line":669,"column":17}},"367":{"start":{"line":668,"column":20},"end":{"line":668,"column":35}},"368":{"start":{"line":670,"column":16},"end":{"line":670,"column":36}},"369":{"start":{"line":671,"column":16},"end":{"line":671,"column":30}},"370":{"start":{"line":674,"column":12},"end":{"line":674,"column":35}},"371":{"start":{"line":678,"column":4},"end":{"line":680,"column":6}},"372":{"start":{"line":679,"column":8},"end":{"line":679,"column":49}},"373":{"start":{"line":682,"column":4},"end":{"line":684,"column":6}},"374":{"start":{"line":683,"column":8},"end":{"line":683,"column":56}},"375":{"start":{"line":686,"column":4},"end":{"line":702,"column":6}},"376":{"start":{"line":687,"column":8},"end":{"line":687,"column":36}},"377":{"start":{"line":688,"column":8},"end":{"line":688,"column":52}},"378":{"start":{"line":690,"column":8},"end":{"line":701,"column":11}},"379":{"start":{"line":691,"column":12},"end":{"line":698,"column":15}},"380":{"start":{"line":692,"column":16},"end":{"line":692,"column":52}},"381":{"start":{"line":693,"column":16},"end":{"line":695,"column":17}},"382":{"start":{"line":694,"column":20},"end":{"line":694,"column":35}},"383":{"start":{"line":696,"column":16},"end":{"line":696,"column":36}},"384":{"start":{"line":697,"column":16},"end":{"line":697,"column":30}},"385":{"start":{"line":700,"column":12},"end":{"line":700,"column":35}},"386":{"start":{"line":704,"column":4},"end":{"line":718,"column":6}},"387":{"start":{"line":705,"column":8},"end":{"line":716,"column":9}},"388":{"start":{"line":706,"column":12},"end":{"line":711,"column":13}},"389":{"start":{"line":707,"column":16},"end":{"line":709,"column":17}},"390":{"start":{"line":708,"column":20},"end":{"line":708,"column":56}},"391":{"start":{"line":710,"column":16},"end":{"line":710,"column":33}},"392":{"start":{"line":712,"column":12},"end":{"line":714,"column":14}},"393":{"start":{"line":713,"column":16},"end":{"line":713,"column":82}},"394":{"start":{"line":715,"column":12},"end":{"line":715,"column":22}},"395":{"start":{"line":717,"column":8},"end":{"line":717,"column":31}},"396":{"start":{"line":720,"column":4},"end":{"line":727,"column":6}},"397":{"start":{"line":721,"column":8},"end":{"line":721,"column":44}},"398":{"start":{"line":722,"column":8},"end":{"line":726,"column":10}},"399":{"start":{"line":723,"column":12},"end":{"line":725,"column":14}},"400":{"start":{"line":729,"column":4},"end":{"line":739,"column":5}},"401":{"start":{"line":730,"column":8},"end":{"line":730,"column":24}},"402":{"start":{"line":731,"column":8},"end":{"line":738,"column":11}},"403":{"start":{"line":732,"column":12},"end":{"line":735,"column":15}},"404":{"start":{"line":733,"column":16},"end":{"line":733,"column":48}},"405":{"start":{"line":734,"column":16},"end":{"line":734,"column":24}},"406":{"start":{"line":737,"column":12},"end":{"line":737,"column":34}},"407":{"start":{"line":740,"column":4},"end":{"line":740,"column":39}},"408":{"start":{"line":741,"column":4},"end":{"line":741,"column":43}},"409":{"start":{"line":743,"column":4},"end":{"line":755,"column":6}},"410":{"start":{"line":744,"column":8},"end":{"line":754,"column":9}},"411":{"start":{"line":745,"column":12},"end":{"line":750,"column":15}},"412":{"start":{"line":746,"column":16},"end":{"line":748,"column":17}},"413":{"start":{"line":747,"column":20},"end":{"line":747,"column":41}},"414":{"start":{"line":749,"column":16},"end":{"line":749,"column":55}},"415":{"start":{"line":753,"column":12},"end":{"line":753,"column":27}},"416":{"start":{"line":757,"column":4},"end":{"line":770,"column":6}},"417":{"start":{"line":758,"column":8},"end":{"line":769,"column":11}},"418":{"start":{"line":759,"column":12},"end":{"line":761,"column":13}},"419":{"start":{"line":760,"column":16},"end":{"line":760,"column":37}},"420":{"start":{"line":762,"column":12},"end":{"line":762,"column":48}},"421":{"start":{"line":763,"column":12},"end":{"line":768,"column":13}},"422":{"start":{"line":764,"column":16},"end":{"line":764,"column":57}},"423":{"start":{"line":767,"column":16},"end":{"line":767,"column":31}},"424":{"start":{"line":772,"column":4},"end":{"line":784,"column":6}},"425":{"start":{"line":773,"column":8},"end":{"line":783,"column":9}},"426":{"start":{"line":774,"column":12},"end":{"line":779,"column":15}},"427":{"start":{"line":775,"column":16},"end":{"line":777,"column":17}},"428":{"start":{"line":776,"column":20},"end":{"line":776,"column":41}},"429":{"start":{"line":778,"column":16},"end":{"line":778,"column":54}},"430":{"start":{"line":782,"column":12},"end":{"line":782,"column":27}},"431":{"start":{"line":786,"column":4},"end":{"line":799,"column":6}},"432":{"start":{"line":787,"column":8},"end":{"line":798,"column":11}},"433":{"start":{"line":788,"column":12},"end":{"line":790,"column":13}},"434":{"start":{"line":789,"column":16},"end":{"line":789,"column":37}},"435":{"start":{"line":791,"column":12},"end":{"line":791,"column":48}},"436":{"start":{"line":792,"column":12},"end":{"line":797,"column":13}},"437":{"start":{"line":793,"column":16},"end":{"line":793,"column":56}},"438":{"start":{"line":796,"column":16},"end":{"line":796,"column":31}},"439":{"start":{"line":801,"column":4},"end":{"line":914,"column":5}},"440":{"start":{"line":802,"column":8},"end":{"line":807,"column":9}},"441":{"start":{"line":803,"column":12},"end":{"line":803,"column":28}},"442":{"start":{"line":805,"column":13},"end":{"line":807,"column":9}},"443":{"start":{"line":806,"column":12},"end":{"line":806,"column":60}},"444":{"start":{"line":808,"column":8},"end":{"line":839,"column":9}},"445":{"start":{"line":809,"column":12},"end":{"line":811,"column":13}},"446":{"start":{"line":810,"column":16},"end":{"line":810,"column":68}},"447":{"start":{"line":812,"column":12},"end":{"line":812,"column":29}},"448":{"start":{"line":813,"column":12},"end":{"line":815,"column":13}},"449":{"start":{"line":814,"column":16},"end":{"line":814,"column":30}},"450":{"start":{"line":816,"column":12},"end":{"line":821,"column":13}},"451":{"start":{"line":818,"column":16},"end":{"line":820,"column":19}},"452":{"start":{"line":819,"column":19},"end":{"line":819,"column":29}},"453":{"start":{"line":822,"column":12},"end":{"line":838,"column":15}},"454":{"start":{"line":823,"column":16},"end":{"line":826,"column":18}},"455":{"start":{"line":828,"column":16},"end":{"line":832,"column":17}},"456":{"start":{"line":829,"column":18},"end":{"line":829,"column":40}},"457":{"start":{"line":831,"column":18},"end":{"line":831,"column":37}},"458":{"start":{"line":834,"column":16},"end":{"line":836,"column":17}},"459":{"start":{"line":835,"column":20},"end":{"line":835,"column":34}},"460":{"start":{"line":837,"column":16},"end":{"line":837,"column":46}},"461":{"start":{"line":841,"column":8},"end":{"line":841,"column":24}},"462":{"start":{"line":842,"column":8},"end":{"line":912,"column":10}},"463":{"start":{"line":851,"column":16},"end":{"line":851,"column":50}},"464":{"start":{"line":854,"column":16},"end":{"line":854,"column":31}},"465":{"start":{"line":855,"column":16},"end":{"line":855,"column":29}},"466":{"start":{"line":858,"column":16},"end":{"line":858,"column":49}},"467":{"start":{"line":861,"column":16},"end":{"line":876,"column":17}},"468":{"start":{"line":862,"column":20},"end":{"line":864,"column":58}},"469":{"start":{"line":866,"column":20},"end":{"line":868,"column":23}},"470":{"start":{"line":867,"column":24},"end":{"line":867,"column":41}},"471":{"start":{"line":870,"column":20},"end":{"line":872,"column":21}},"472":{"start":{"line":871,"column":24},"end":{"line":871,"column":34}},"473":{"start":{"line":873,"column":20},"end":{"line":873,"column":33}},"474":{"start":{"line":874,"column":20},"end":{"line":874,"column":45}},"475":{"start":{"line":875,"column":20},"end":{"line":875,"column":37}},"476":{"start":{"line":878,"column":16},"end":{"line":888,"column":17}},"477":{"start":{"line":879,"column":20},"end":{"line":879,"column":33}},"478":{"start":{"line":880,"column":20},"end":{"line":880,"column":41}},"479":{"start":{"line":881,"column":20},"end":{"line":883,"column":23}},"480":{"start":{"line":882,"column":24},"end":{"line":882,"column":56}},"481":{"start":{"line":884,"column":20},"end":{"line":886,"column":21}},"482":{"start":{"line":885,"column":24},"end":{"line":885,"column":34}},"483":{"start":{"line":887,"column":20},"end":{"line":887,"column":32}},"484":{"start":{"line":891,"column":16},"end":{"line":891,"column":38}},"485":{"start":{"line":894,"column":16},"end":{"line":894,"column":31}},"486":{"start":{"line":897,"column":16},"end":{"line":897,"column":54}},"487":{"start":{"line":900,"column":16},"end":{"line":900,"column":32}},"488":{"start":{"line":903,"column":16},"end":{"line":903,"column":51}},"489":{"start":{"line":903,"column":42},"end":{"line":903,"column":49}},"490":{"start":{"line":904,"column":16},"end":{"line":904,"column":33}},"491":{"start":{"line":905,"column":16},"end":{"line":905,"column":74}},"492":{"start":{"line":908,"column":16},"end":{"line":910,"column":17}},"493":{"start":{"line":909,"column":20},"end":{"line":909,"column":50}},"494":{"start":{"line":913,"column":8},"end":{"line":913,"column":17}},"495":{"start":{"line":916,"column":4},"end":{"line":922,"column":6}},"496":{"start":{"line":917,"column":8},"end":{"line":919,"column":27}},"497":{"start":{"line":918,"column":12},"end":{"line":918,"column":33}},"498":{"start":{"line":921,"column":8},"end":{"line":921,"column":17}},"499":{"start":{"line":924,"column":4},"end":{"line":986,"column":6}},"500":{"start":{"line":926,"column":8},"end":{"line":928,"column":9}},"501":{"start":{"line":927,"column":12},"end":{"line":927,"column":43}},"502":{"start":{"line":930,"column":8},"end":{"line":942,"column":9}},"503":{"start":{"line":931,"column":10},"end":{"line":932,"column":40}},"504":{"start":{"line":933,"column":10},"end":{"line":940,"column":11}},"505":{"start":{"line":934,"column":14},"end":{"line":934,"column":54}},"506":{"start":{"line":935,"column":14},"end":{"line":939,"column":15}},"507":{"start":{"line":936,"column":18},"end":{"line":936,"column":28}},"508":{"start":{"line":938,"column":18},"end":{"line":938,"column":32}},"509":{"start":{"line":941,"column":10},"end":{"line":941,"column":21}},"510":{"start":{"line":944,"column":8},"end":{"line":972,"column":9}},"511":{"start":{"line":945,"column":12},"end":{"line":947,"column":13}},"512":{"start":{"line":946,"column":16},"end":{"line":946,"column":68}},"513":{"start":{"line":948,"column":12},"end":{"line":948,"column":29}},"514":{"start":{"line":949,"column":12},"end":{"line":951,"column":13}},"515":{"start":{"line":950,"column":16},"end":{"line":950,"column":30}},"516":{"start":{"line":952,"column":12},"end":{"line":957,"column":13}},"517":{"start":{"line":954,"column":16},"end":{"line":956,"column":19}},"518":{"start":{"line":955,"column":20},"end":{"line":955,"column":30}},"519":{"start":{"line":958,"column":12},"end":{"line":971,"column":15}},"520":{"start":{"line":959,"column":16},"end":{"line":963,"column":18}},"521":{"start":{"line":965,"column":16},"end":{"line":965,"column":89}},"522":{"start":{"line":967,"column":16},"end":{"line":969,"column":17}},"523":{"start":{"line":968,"column":20},"end":{"line":968,"column":34}},"524":{"start":{"line":970,"column":16},"end":{"line":970,"column":46}},"525":{"start":{"line":975,"column":8},"end":{"line":975,"column":49}},"526":{"start":{"line":978,"column":8},"end":{"line":980,"column":10}},"527":{"start":{"line":979,"column":12},"end":{"line":979,"column":49}},"528":{"start":{"line":983,"column":8},"end":{"line":983,"column":25}},"529":{"start":{"line":985,"column":8},"end":{"line":985,"column":17}},"530":{"start":{"line":988,"column":4},"end":{"line":990,"column":6}},"531":{"start":{"line":989,"column":8},"end":{"line":989,"column":42}},"532":{"start":{"line":992,"column":4},"end":{"line":1011,"column":5}},"533":{"start":{"line":993,"column":8},"end":{"line":1010,"column":10}},"534":{"start":{"line":994,"column":12},"end":{"line":994,"column":48}},"535":{"start":{"line":995,"column":12},"end":{"line":1009,"column":17}},"536":{"start":{"line":996,"column":16},"end":{"line":996,"column":52}},"537":{"start":{"line":997,"column":16},"end":{"line":1008,"column":17}},"538":{"start":{"line":998,"column":20},"end":{"line":1007,"column":21}},"539":{"start":{"line":999,"column":24},"end":{"line":1001,"column":25}},"540":{"start":{"line":1000,"column":28},"end":{"line":1000,"column":47}},"541":{"start":{"line":1003,"column":25},"end":{"line":1007,"column":21}},"542":{"start":{"line":1004,"column":24},"end":{"line":1006,"column":27}},"543":{"start":{"line":1005,"column":28},"end":{"line":1005,"column":45}},"544":{"start":{"line":1012,"column":4},"end":{"line":1012,"column":35}},"545":{"start":{"line":1013,"column":4},"end":{"line":1013,"column":35}},"546":{"start":{"line":1018,"column":4},"end":{"line":1051,"column":6}},"547":{"start":{"line":1019,"column":8},"end":{"line":1019,"column":22}},"548":{"start":{"line":1020,"column":8},"end":{"line":1020,"column":24}},"549":{"start":{"line":1021,"column":8},"end":{"line":1023,"column":10}},"550":{"start":{"line":1022,"column":12},"end":{"line":1022,"column":21}},"551":{"start":{"line":1024,"column":8},"end":{"line":1047,"column":9}},"552":{"start":{"line":1025,"column":12},"end":{"line":1025,"column":45}},"553":{"start":{"line":1026,"column":12},"end":{"line":1026,"column":38}},"554":{"start":{"line":1027,"column":12},"end":{"line":1027,"column":47}},"555":{"start":{"line":1028,"column":12},"end":{"line":1046,"column":13}},"556":{"start":{"line":1029,"column":16},"end":{"line":1031,"column":19}},"557":{"start":{"line":1030,"column":20},"end":{"line":1030,"column":52}},"558":{"start":{"line":1033,"column":17},"end":{"line":1046,"column":13}},"559":{"start":{"line":1034,"column":16},"end":{"line":1034,"column":43}},"560":{"start":{"line":1037,"column":16},"end":{"line":1037,"column":41}},"561":{"start":{"line":1038,"column":16},"end":{"line":1045,"column":21}},"562":{"start":{"line":1039,"column":20},"end":{"line":1039,"column":54}},"563":{"start":{"line":1040,"column":20},"end":{"line":1040,"column":40}},"564":{"start":{"line":1041,"column":20},"end":{"line":1041,"column":39}},"565":{"start":{"line":1042,"column":20},"end":{"line":1044,"column":21}},"566":{"start":{"line":1043,"column":22},"end":{"line":1043,"column":50}},"567":{"start":{"line":1048,"column":8},"end":{"line":1048,"column":29}},"568":{"start":{"line":1049,"column":8},"end":{"line":1049,"column":33}},"569":{"start":{"line":1050,"column":8},"end":{"line":1050,"column":24}},"570":{"start":{"line":1053,"column":4},"end":{"line":1057,"column":6}},"571":{"start":{"line":1054,"column":6},"end":{"line":1056,"column":8}},"572":{"start":{"line":1055,"column":8},"end":{"line":1055,"column":60}},"573":{"start":{"line":1059,"column":4},"end":{"line":1065,"column":6}},"574":{"start":{"line":1060,"column":8},"end":{"line":1060,"column":25}},"575":{"start":{"line":1061,"column":8},"end":{"line":1063,"column":9}},"576":{"start":{"line":1062,"column":12},"end":{"line":1062,"column":28}},"577":{"start":{"line":1064,"column":8},"end":{"line":1064,"column":54}},"578":{"start":{"line":1067,"column":4},"end":{"line":1073,"column":6}},"579":{"start":{"line":1068,"column":8},"end":{"line":1068,"column":25}},"580":{"start":{"line":1069,"column":8},"end":{"line":1071,"column":9}},"581":{"start":{"line":1070,"column":12},"end":{"line":1070,"column":28}},"582":{"start":{"line":1072,"column":8},"end":{"line":1072,"column":60}},"583":{"start":{"line":1075,"column":4},"end":{"line":1099,"column":6}},"584":{"start":{"line":1076,"column":8},"end":{"line":1076,"column":28}},"585":{"start":{"line":1077,"column":8},"end":{"line":1098,"column":10}},"586":{"start":{"line":1078,"column":12},"end":{"line":1078,"column":28}},"587":{"start":{"line":1079,"column":12},"end":{"line":1079,"column":45}},"588":{"start":{"line":1081,"column":12},"end":{"line":1081,"column":45}},"589":{"start":{"line":1082,"column":12},"end":{"line":1086,"column":13}},"590":{"start":{"line":1083,"column":16},"end":{"line":1083,"column":27}},"591":{"start":{"line":1085,"column":16},"end":{"line":1085,"column":32}},"592":{"start":{"line":1088,"column":12},"end":{"line":1097,"column":15}},"593":{"start":{"line":1089,"column":16},"end":{"line":1093,"column":21}},"594":{"start":{"line":1090,"column":20},"end":{"line":1090,"column":43}},"595":{"start":{"line":1091,"column":20},"end":{"line":1091,"column":60}},"596":{"start":{"line":1092,"column":20},"end":{"line":1092,"column":38}},"597":{"start":{"line":1096,"column":16},"end":{"line":1096,"column":60}},"598":{"start":{"line":1101,"column":4},"end":{"line":1103,"column":6}},"599":{"start":{"line":1102,"column":6},"end":{"line":1102,"column":76}},"600":{"start":{"line":1106,"column":4},"end":{"line":1123,"column":5}},"601":{"start":{"line":1107,"column":8},"end":{"line":1115,"column":9}},"602":{"start":{"line":1108,"column":12},"end":{"line":1108,"column":28}},"603":{"start":{"line":1109,"column":12},"end":{"line":1109,"column":45}},"604":{"start":{"line":1110,"column":12},"end":{"line":1110,"column":38}},"605":{"start":{"line":1111,"column":12},"end":{"line":1114,"column":22}},"606":{"start":{"line":1112,"column":16},"end":{"line":1112,"column":50}},"607":{"start":{"line":1116,"column":8},"end":{"line":1122,"column":9}},"608":{"start":{"line":1117,"column":12},"end":{"line":1117,"column":48}},"609":{"start":{"line":1118,"column":12},"end":{"line":1118,"column":40}},"610":{"start":{"line":1121,"column":12},"end":{"line":1121,"column":22}},"611":{"start":{"line":1125,"column":4},"end":{"line":1128,"column":6}},"612":{"start":{"line":1126,"column":8},"end":{"line":1126,"column":41}},"613":{"start":{"line":1127,"column":8},"end":{"line":1127,"column":67}},"614":{"start":{"line":1129,"column":4},"end":{"line":1132,"column":6}},"615":{"start":{"line":1130,"column":8},"end":{"line":1130,"column":41}},"616":{"start":{"line":1131,"column":8},"end":{"line":1131,"column":73}},"617":{"start":{"line":1135,"column":4},"end":{"line":1145,"column":6}},"618":{"start":{"line":1136,"column":8},"end":{"line":1136,"column":47}},"619":{"start":{"line":1137,"column":8},"end":{"line":1137,"column":35}},"620":{"start":{"line":1138,"column":8},"end":{"line":1143,"column":9}},"621":{"start":{"line":1139,"column":12},"end":{"line":1141,"column":13}},"622":{"start":{"line":1140,"column":16},"end":{"line":1140,"column":33}},"623":{"start":{"line":1142,"column":12},"end":{"line":1142,"column":23}},"624":{"start":{"line":1144,"column":8},"end":{"line":1144,"column":15}},"625":{"start":{"line":1147,"column":4},"end":{"line":1165,"column":5}},"626":{"start":{"line":1148,"column":8},"end":{"line":1164,"column":10}},"627":{"start":{"line":1149,"column":12},"end":{"line":1149,"column":45}},"628":{"start":{"line":1150,"column":12},"end":{"line":1150,"column":38}},"629":{"start":{"line":1151,"column":12},"end":{"line":1160,"column":15}},"630":{"start":{"line":1152,"column":16},"end":{"line":1152,"column":42}},"631":{"start":{"line":1153,"column":16},"end":{"line":1159,"column":17}},"632":{"start":{"line":1154,"column":20},"end":{"line":1156,"column":23}},"633":{"start":{"line":1155,"column":24},"end":{"line":1155,"column":56}},"634":{"start":{"line":1158,"column":20},"end":{"line":1158,"column":52}},"635":{"start":{"line":1161,"column":12},"end":{"line":1161,"column":28}},"636":{"start":{"line":1162,"column":12},"end":{"line":1162,"column":33}},"637":{"start":{"line":1163,"column":12},"end":{"line":1163,"column":25}},"638":{"start":{"line":1167,"column":4},"end":{"line":1167,"column":36}},"639":{"start":{"line":1170,"column":4},"end":{"line":1182,"column":5}},"640":{"start":{"line":1171,"column":8},"end":{"line":1171,"column":31}},"641":{"start":{"line":1174,"column":9},"end":{"line":1182,"column":5}},"642":{"start":{"line":1175,"column":8},"end":{"line":1177,"column":11}},"643":{"start":{"line":1176,"column":12},"end":{"line":1176,"column":25}},"644":{"start":{"line":1181,"column":8},"end":{"line":1181,"column":27}}},"branchMap":{"1":{"line":16,"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":16,"column":4}},{"start":{"line":16,"column":4},"end":{"line":16,"column":4}}]},"2":{"line":16,"type":"binary-expr","locations":[{"start":{"line":16,"column":8},"end":{"line":16,"column":33}},{"start":{"line":16,"column":37},"end":{"line":16,"column":52}}]},"3":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":9},"end":{"line":19,"column":9}},{"start":{"line":19,"column":9},"end":{"line":19,"column":9}}]},"4":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":13},"end":{"line":19,"column":38}},{"start":{"line":19,"column":42},"end":{"line":19,"column":57}}]},"5":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":26,"column":4}},{"start":{"line":26,"column":4},"end":{"line":26,"column":4}}]},"6":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":12}},{"start":{"line":38,"column":12},"end":{"line":38,"column":12}}]},"7":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":12},"end":{"line":47,"column":12}},{"start":{"line":47,"column":12},"end":{"line":47,"column":12}}]},"8":{"line":57,"type":"binary-expr","locations":[{"start":{"line":57,"column":19},"end":{"line":57,"column":32}},{"start":{"line":57,"column":36},"end":{"line":59,"column":5}}]},"9":{"line":62,"type":"binary-expr","locations":[{"start":{"line":62,"column":15},"end":{"line":62,"column":28}},{"start":{"line":64,"column":12},"end":{"line":64,"column":42}},{"start":{"line":65,"column":12},"end":{"line":65,"column":27}},{"start":{"line":66,"column":12},"end":{"line":66,"column":32}}]},"10":{"line":71,"type":"cond-expr","locations":[{"start":{"line":72,"column":12},"end":{"line":72,"column":38}},{"start":{"line":73,"column":12},"end":{"line":73,"column":38}}]},"11":{"line":109,"type":"binary-expr","locations":[{"start":{"line":109,"column":16},"end":{"line":109,"column":27}},{"start":{"line":109,"column":31},"end":{"line":117,"column":5}}]},"12":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":12},"end":{"line":112,"column":12}},{"start":{"line":112,"column":12},"end":{"line":112,"column":12}}]},"13":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":8},"end":{"line":123,"column":8}},{"start":{"line":123,"column":8},"end":{"line":123,"column":8}}]},"14":{"line":127,"type":"cond-expr","locations":[{"start":{"line":127,"column":33},"end":{"line":127,"column":34}},{"start":{"line":127,"column":37},"end":{"line":127,"column":41}}]},"15":{"line":134,"type":"cond-expr","locations":[{"start":{"line":134,"column":33},"end":{"line":134,"column":40}},{"start":{"line":134,"column":43},"end":{"line":134,"column":47}}]},"16":{"line":140,"type":"binary-expr","locations":[{"start":{"line":140,"column":16},"end":{"line":140,"column":21}},{"start":{"line":140,"column":25},"end":{"line":140,"column":26}}]},"17":{"line":144,"type":"if","locations":[{"start":{"line":144,"column":8},"end":{"line":144,"column":8}},{"start":{"line":144,"column":8},"end":{"line":144,"column":8}}]},"18":{"line":146,"type":"cond-expr","locations":[{"start":{"line":146,"column":32},"end":{"line":146,"column":33}},{"start":{"line":146,"column":36},"end":{"line":146,"column":42}}]},"19":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"20":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"21":{"line":172,"type":"binary-expr","locations":[{"start":{"line":172,"column":8},"end":{"line":172,"column":38}},{"start":{"line":172,"column":42},"end":{"line":172,"column":61}}]},"22":{"line":173,"type":"if","locations":[{"start":{"line":173,"column":8},"end":{"line":173,"column":8}},{"start":{"line":173,"column":8},"end":{"line":173,"column":8}}]},"23":{"line":189,"type":"if","locations":[{"start":{"line":189,"column":8},"end":{"line":189,"column":8}},{"start":{"line":189,"column":8},"end":{"line":189,"column":8}}]},"24":{"line":218,"type":"binary-expr","locations":[{"start":{"line":218,"column":25},"end":{"line":218,"column":33}},{"start":{"line":218,"column":37},"end":{"line":218,"column":41}}]},"25":{"line":219,"type":"binary-expr","locations":[{"start":{"line":219,"column":17},"end":{"line":219,"column":23}},{"start":{"line":219,"column":27},"end":{"line":219,"column":29}}]},"26":{"line":220,"type":"binary-expr","locations":[{"start":{"line":220,"column":19},"end":{"line":220,"column":32}},{"start":{"line":220,"column":36},"end":{"line":220,"column":56}}]},"27":{"line":222,"type":"if","locations":[{"start":{"line":222,"column":8},"end":{"line":222,"column":8}},{"start":{"line":222,"column":8},"end":{"line":222,"column":8}}]},"28":{"line":229,"type":"if","locations":[{"start":{"line":229,"column":10},"end":{"line":229,"column":10}},{"start":{"line":229,"column":10},"end":{"line":229,"column":10}}]},"29":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":14},"end":{"line":234,"column":14}},{"start":{"line":234,"column":14},"end":{"line":234,"column":14}}]},"30":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":25},"end":{"line":243,"column":33}},{"start":{"line":243,"column":37},"end":{"line":243,"column":41}}]},"31":{"line":244,"type":"binary-expr","locations":[{"start":{"line":244,"column":14},"end":{"line":244,"column":17}},{"start":{"line":244,"column":21},"end":{"line":244,"column":23}}]},"32":{"line":249,"type":"if","locations":[{"start":{"line":249,"column":12},"end":{"line":249,"column":12}},{"start":{"line":249,"column":12},"end":{"line":249,"column":12}}]},"33":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":16},"end":{"line":253,"column":16}},{"start":{"line":253,"column":16},"end":{"line":253,"column":16}}]},"34":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":20},"end":{"line":257,"column":20}},{"start":{"line":257,"column":20},"end":{"line":257,"column":20}}]},"35":{"line":280,"type":"binary-expr","locations":[{"start":{"line":280,"column":29},"end":{"line":280,"column":37}},{"start":{"line":280,"column":41},"end":{"line":280,"column":45}}]},"36":{"line":281,"type":"binary-expr","locations":[{"start":{"line":281,"column":18},"end":{"line":281,"column":21}},{"start":{"line":281,"column":25},"end":{"line":281,"column":27}}]},"37":{"line":283,"type":"if","locations":[{"start":{"line":283,"column":12},"end":{"line":283,"column":12}},{"start":{"line":283,"column":12},"end":{"line":283,"column":12}}]},"38":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":16},"end":{"line":291,"column":16}},{"start":{"line":291,"column":16},"end":{"line":291,"column":16}}]},"39":{"line":291,"type":"binary-expr","locations":[{"start":{"line":291,"column":20},"end":{"line":291,"column":24}},{"start":{"line":291,"column":28},"end":{"line":291,"column":40}}]},"40":{"line":295,"type":"binary-expr","locations":[{"start":{"line":295,"column":23},"end":{"line":295,"column":38}},{"start":{"line":295,"column":42},"end":{"line":295,"column":50}}]},"41":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":20},"end":{"line":297,"column":20}},{"start":{"line":297,"column":20},"end":{"line":297,"column":20}}]},"42":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":24},"end":{"line":299,"column":24}},{"start":{"line":299,"column":24},"end":{"line":299,"column":24}}]},"43":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":24},"end":{"line":307,"column":24}},{"start":{"line":307,"column":24},"end":{"line":307,"column":24}}]},"44":{"line":338,"type":"binary-expr","locations":[{"start":{"line":338,"column":25},"end":{"line":338,"column":33}},{"start":{"line":338,"column":37},"end":{"line":338,"column":41}}]},"45":{"line":371,"type":"binary-expr","locations":[{"start":{"line":371,"column":21},"end":{"line":371,"column":24}},{"start":{"line":371,"column":28},"end":{"line":371,"column":32}}]},"46":{"line":390,"type":"if","locations":[{"start":{"line":390,"column":16},"end":{"line":390,"column":16}},{"start":{"line":390,"column":16},"end":{"line":390,"column":16}}]},"47":{"line":417,"type":"if","locations":[{"start":{"line":417,"column":16},"end":{"line":417,"column":16}},{"start":{"line":417,"column":16},"end":{"line":417,"column":16}}]},"48":{"line":436,"type":"if","locations":[{"start":{"line":436,"column":16},"end":{"line":436,"column":16}},{"start":{"line":436,"column":16},"end":{"line":436,"column":16}}]},"49":{"line":455,"type":"if","locations":[{"start":{"line":455,"column":16},"end":{"line":455,"column":16}},{"start":{"line":455,"column":16},"end":{"line":455,"column":16}}]},"50":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":16},"end":{"line":470,"column":16}},{"start":{"line":470,"column":16},"end":{"line":470,"column":16}}]},"51":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":16},"end":{"line":484,"column":16}},{"start":{"line":484,"column":16},"end":{"line":484,"column":16}}]},"52":{"line":492,"type":"if","locations":[{"start":{"line":492,"column":12},"end":{"line":492,"column":12}},{"start":{"line":492,"column":12},"end":{"line":492,"column":12}}]},"53":{"line":505,"type":"cond-expr","locations":[{"start":{"line":505,"column":27},"end":{"line":505,"column":29}},{"start":{"line":505,"column":32},"end":{"line":505,"column":45}}]},"54":{"line":505,"type":"cond-expr","locations":[{"start":{"line":505,"column":40},"end":{"line":505,"column":41}},{"start":{"line":505,"column":44},"end":{"line":505,"column":45}}]},"55":{"line":510,"type":"binary-expr","locations":[{"start":{"line":510,"column":25},"end":{"line":510,"column":33}},{"start":{"line":510,"column":37},"end":{"line":510,"column":41}}]},"56":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":8},"end":{"line":513,"column":8}},{"start":{"line":513,"column":8},"end":{"line":513,"column":8}}]},"57":{"line":525,"type":"if","locations":[{"start":{"line":525,"column":16},"end":{"line":525,"column":16}},{"start":{"line":525,"column":16},"end":{"line":525,"column":16}}]},"58":{"line":539,"type":"if","locations":[{"start":{"line":539,"column":12},"end":{"line":539,"column":12}},{"start":{"line":539,"column":12},"end":{"line":539,"column":12}}]},"59":{"line":545,"type":"cond-expr","locations":[{"start":{"line":545,"column":44},"end":{"line":545,"column":52}},{"start":{"line":545,"column":54},"end":{"line":545,"column":64}}]},"60":{"line":548,"type":"if","locations":[{"start":{"line":548,"column":16},"end":{"line":548,"column":16}},{"start":{"line":548,"column":16},"end":{"line":548,"column":16}}]},"61":{"line":551,"type":"if","locations":[{"start":{"line":551,"column":16},"end":{"line":551,"column":16}},{"start":{"line":551,"column":16},"end":{"line":551,"column":16}}]},"62":{"line":564,"type":"binary-expr","locations":[{"start":{"line":564,"column":27},"end":{"line":564,"column":67}},{"start":{"line":564,"column":71},"end":{"line":564,"column":73}}]},"63":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":16},"end":{"line":569,"column":16}},{"start":{"line":569,"column":16},"end":{"line":569,"column":16}}]},"64":{"line":572,"type":"if","locations":[{"start":{"line":572,"column":16},"end":{"line":572,"column":16}},{"start":{"line":572,"column":16},"end":{"line":572,"column":16}}]},"65":{"line":572,"type":"binary-expr","locations":[{"start":{"line":572,"column":20},"end":{"line":572,"column":33}},{"start":{"line":572,"column":37},"end":{"line":572,"column":54}}]},"66":{"line":577,"type":"binary-expr","locations":[{"start":{"line":577,"column":23},"end":{"line":579,"column":24}},{"start":{"line":579,"column":28},"end":{"line":579,"column":54}}]},"67":{"line":578,"type":"binary-expr","locations":[{"start":{"line":578,"column":28},"end":{"line":578,"column":29}},{"start":{"line":578,"column":33},"end":{"line":578,"column":58}}]},"68":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":12},"end":{"line":581,"column":12}},{"start":{"line":581,"column":12},"end":{"line":581,"column":12}}]},"69":{"line":588,"type":"if","locations":[{"start":{"line":588,"column":16},"end":{"line":588,"column":16}},{"start":{"line":588,"column":16},"end":{"line":588,"column":16}}]},"70":{"line":600,"type":"if","locations":[{"start":{"line":600,"column":8},"end":{"line":600,"column":8}},{"start":{"line":600,"column":8},"end":{"line":600,"column":8}}]},"71":{"line":606,"type":"binary-expr","locations":[{"start":{"line":606,"column":16},"end":{"line":606,"column":35}},{"start":{"line":606,"column":39},"end":{"line":606,"column":52}}]},"72":{"line":612,"type":"binary-expr","locations":[{"start":{"line":612,"column":39},"end":{"line":612,"column":43}},{"start":{"line":612,"column":47},"end":{"line":612,"column":59}}]},"73":{"line":622,"type":"binary-expr","locations":[{"start":{"line":622,"column":17},"end":{"line":622,"column":32}},{"start":{"line":622,"column":36},"end":{"line":622,"column":44}}]},"74":{"line":627,"type":"cond-expr","locations":[{"start":{"line":627,"column":26},"end":{"line":627,"column":39}},{"start":{"line":627,"column":42},"end":{"line":627,"column":53}}]},"75":{"line":631,"type":"binary-expr","locations":[{"start":{"line":631,"column":25},"end":{"line":631,"column":33}},{"start":{"line":631,"column":37},"end":{"line":631,"column":41}}]},"76":{"line":632,"type":"if","locations":[{"start":{"line":632,"column":8},"end":{"line":632,"column":8}},{"start":{"line":632,"column":8},"end":{"line":632,"column":8}}]},"77":{"line":636,"type":"if","locations":[{"start":{"line":636,"column":8},"end":{"line":636,"column":8}},{"start":{"line":636,"column":8},"end":{"line":636,"column":8}}]},"78":{"line":641,"type":"if","locations":[{"start":{"line":641,"column":16},"end":{"line":641,"column":16}},{"start":{"line":641,"column":16},"end":{"line":641,"column":16}}]},"79":{"line":647,"type":"if","locations":[{"start":{"line":647,"column":20},"end":{"line":647,"column":20}},{"start":{"line":647,"column":20},"end":{"line":647,"column":20}}]},"80":{"line":661,"type":"binary-expr","locations":[{"start":{"line":661,"column":19},"end":{"line":661,"column":27}},{"start":{"line":661,"column":31},"end":{"line":661,"column":35}}]},"81":{"line":662,"type":"cond-expr","locations":[{"start":{"line":662,"column":44},"end":{"line":662,"column":46}},{"start":{"line":662,"column":49},"end":{"line":662,"column":51}}]},"82":{"line":667,"type":"if","locations":[{"start":{"line":667,"column":16},"end":{"line":667,"column":16}},{"start":{"line":667,"column":16},"end":{"line":667,"column":16}}]},"83":{"line":687,"type":"binary-expr","locations":[{"start":{"line":687,"column":19},"end":{"line":687,"column":27}},{"start":{"line":687,"column":31},"end":{"line":687,"column":35}}]},"84":{"line":688,"type":"cond-expr","locations":[{"start":{"line":688,"column":44},"end":{"line":688,"column":46}},{"start":{"line":688,"column":49},"end":{"line":688,"column":51}}]},"85":{"line":693,"type":"if","locations":[{"start":{"line":693,"column":16},"end":{"line":693,"column":16}},{"start":{"line":693,"column":16},"end":{"line":693,"column":16}}]},"86":{"line":707,"type":"if","locations":[{"start":{"line":707,"column":16},"end":{"line":707,"column":16}},{"start":{"line":707,"column":16},"end":{"line":707,"column":16}}]},"87":{"line":713,"type":"cond-expr","locations":[{"start":{"line":713,"column":52},"end":{"line":713,"column":75}},{"start":{"line":713,"column":77},"end":{"line":713,"column":81}}]},"88":{"line":733,"type":"binary-expr","locations":[{"start":{"line":733,"column":39},"end":{"line":733,"column":40}},{"start":{"line":733,"column":44},"end":{"line":733,"column":46}}]},"89":{"line":744,"type":"if","locations":[{"start":{"line":744,"column":8},"end":{"line":744,"column":8}},{"start":{"line":744,"column":8},"end":{"line":744,"column":8}}]},"90":{"line":746,"type":"if","locations":[{"start":{"line":746,"column":16},"end":{"line":746,"column":16}},{"start":{"line":746,"column":16},"end":{"line":746,"column":16}}]},"91":{"line":759,"type":"if","locations":[{"start":{"line":759,"column":12},"end":{"line":759,"column":12}},{"start":{"line":759,"column":12},"end":{"line":759,"column":12}}]},"92":{"line":763,"type":"if","locations":[{"start":{"line":763,"column":12},"end":{"line":763,"column":12}},{"start":{"line":763,"column":12},"end":{"line":763,"column":12}}]},"93":{"line":773,"type":"if","locations":[{"start":{"line":773,"column":8},"end":{"line":773,"column":8}},{"start":{"line":773,"column":8},"end":{"line":773,"column":8}}]},"94":{"line":775,"type":"if","locations":[{"start":{"line":775,"column":16},"end":{"line":775,"column":16}},{"start":{"line":775,"column":16},"end":{"line":775,"column":16}}]},"95":{"line":788,"type":"if","locations":[{"start":{"line":788,"column":12},"end":{"line":788,"column":12}},{"start":{"line":788,"column":12},"end":{"line":788,"column":12}}]},"96":{"line":792,"type":"if","locations":[{"start":{"line":792,"column":12},"end":{"line":792,"column":12}},{"start":{"line":792,"column":12},"end":{"line":792,"column":12}}]},"97":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":8},"end":{"line":802,"column":8}},{"start":{"line":802,"column":8},"end":{"line":802,"column":8}}]},"98":{"line":805,"type":"if","locations":[{"start":{"line":805,"column":13},"end":{"line":805,"column":13}},{"start":{"line":805,"column":13},"end":{"line":805,"column":13}}]},"99":{"line":809,"type":"if","locations":[{"start":{"line":809,"column":12},"end":{"line":809,"column":12}},{"start":{"line":809,"column":12},"end":{"line":809,"column":12}}]},"100":{"line":809,"type":"binary-expr","locations":[{"start":{"line":809,"column":16},"end":{"line":809,"column":32}},{"start":{"line":809,"column":36},"end":{"line":809,"column":66}}]},"101":{"line":813,"type":"if","locations":[{"start":{"line":813,"column":12},"end":{"line":813,"column":12}},{"start":{"line":813,"column":12},"end":{"line":813,"column":12}}]},"102":{"line":816,"type":"if","locations":[{"start":{"line":816,"column":12},"end":{"line":816,"column":12}},{"start":{"line":816,"column":12},"end":{"line":816,"column":12}}]},"103":{"line":816,"type":"binary-expr","locations":[{"start":{"line":816,"column":15},"end":{"line":816,"column":32}},{"start":{"line":816,"column":36},"end":{"line":816,"column":44}}]},"104":{"line":825,"type":"binary-expr","locations":[{"start":{"line":825,"column":30},"end":{"line":825,"column":38}},{"start":{"line":825,"column":42},"end":{"line":825,"column":46}}]},"105":{"line":828,"type":"if","locations":[{"start":{"line":828,"column":16},"end":{"line":828,"column":16}},{"start":{"line":828,"column":16},"end":{"line":828,"column":16}}]},"106":{"line":834,"type":"if","locations":[{"start":{"line":834,"column":16},"end":{"line":834,"column":16}},{"start":{"line":834,"column":16},"end":{"line":834,"column":16}}]},"107":{"line":861,"type":"if","locations":[{"start":{"line":861,"column":16},"end":{"line":861,"column":16}},{"start":{"line":861,"column":16},"end":{"line":861,"column":16}}]},"108":{"line":861,"type":"binary-expr","locations":[{"start":{"line":861,"column":20},"end":{"line":861,"column":29}},{"start":{"line":861,"column":33},"end":{"line":861,"column":56}},{"start":{"line":861,"column":60},"end":{"line":861,"column":74}}]},"109":{"line":862,"type":"cond-expr","locations":[{"start":{"line":863,"column":24},"end":{"line":863,"column":50}},{"start":{"line":864,"column":24},"end":{"line":864,"column":57}}]},"110":{"line":870,"type":"if","locations":[{"start":{"line":870,"column":20},"end":{"line":870,"column":20}},{"start":{"line":870,"column":20},"end":{"line":870,"column":20}}]},"111":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":20},"end":{"line":884,"column":20}},{"start":{"line":884,"column":20},"end":{"line":884,"column":20}}]},"112":{"line":903,"type":"if","locations":[{"start":{"line":903,"column":16},"end":{"line":903,"column":16}},{"start":{"line":903,"column":16},"end":{"line":903,"column":16}}]},"113":{"line":935,"type":"if","locations":[{"start":{"line":935,"column":14},"end":{"line":935,"column":14}},{"start":{"line":935,"column":14},"end":{"line":935,"column":14}}]},"114":{"line":945,"type":"if","locations":[{"start":{"line":945,"column":12},"end":{"line":945,"column":12}},{"start":{"line":945,"column":12},"end":{"line":945,"column":12}}]},"115":{"line":945,"type":"binary-expr","locations":[{"start":{"line":945,"column":16},"end":{"line":945,"column":32}},{"start":{"line":945,"column":36},"end":{"line":945,"column":66}}]},"116":{"line":949,"type":"if","locations":[{"start":{"line":949,"column":12},"end":{"line":949,"column":12}},{"start":{"line":949,"column":12},"end":{"line":949,"column":12}}]},"117":{"line":952,"type":"if","locations":[{"start":{"line":952,"column":12},"end":{"line":952,"column":12}},{"start":{"line":952,"column":12},"end":{"line":952,"column":12}}]},"118":{"line":962,"type":"cond-expr","locations":[{"start":{"line":962,"column":63},"end":{"line":962,"column":71}},{"start":{"line":962,"column":74},"end":{"line":962,"column":78}}]},"119":{"line":967,"type":"if","locations":[{"start":{"line":967,"column":16},"end":{"line":967,"column":16}},{"start":{"line":967,"column":16},"end":{"line":967,"column":16}}]},"120":{"line":997,"type":"if","locations":[{"start":{"line":997,"column":16},"end":{"line":997,"column":16}},{"start":{"line":997,"column":16},"end":{"line":997,"column":16}}]},"121":{"line":998,"type":"if","locations":[{"start":{"line":998,"column":20},"end":{"line":998,"column":20}},{"start":{"line":998,"column":20},"end":{"line":998,"column":20}}]},"122":{"line":999,"type":"if","locations":[{"start":{"line":999,"column":24},"end":{"line":999,"column":24}},{"start":{"line":999,"column":24},"end":{"line":999,"column":24}}]},"123":{"line":1003,"type":"if","locations":[{"start":{"line":1003,"column":25},"end":{"line":1003,"column":25}},{"start":{"line":1003,"column":25},"end":{"line":1003,"column":25}}]},"124":{"line":1021,"type":"binary-expr","locations":[{"start":{"line":1021,"column":17},"end":{"line":1021,"column":23}},{"start":{"line":1021,"column":27},"end":{"line":1023,"column":9}}]},"125":{"line":1028,"type":"if","locations":[{"start":{"line":1028,"column":12},"end":{"line":1028,"column":12}},{"start":{"line":1028,"column":12},"end":{"line":1028,"column":12}}]},"126":{"line":1033,"type":"if","locations":[{"start":{"line":1033,"column":17},"end":{"line":1033,"column":17}},{"start":{"line":1033,"column":17},"end":{"line":1033,"column":17}}]},"127":{"line":1055,"type":"binary-expr","locations":[{"start":{"line":1055,"column":16},"end":{"line":1055,"column":29}},{"start":{"line":1055,"column":33},"end":{"line":1055,"column":35}}]},"128":{"line":1082,"type":"if","locations":[{"start":{"line":1082,"column":12},"end":{"line":1082,"column":12}},{"start":{"line":1082,"column":12},"end":{"line":1082,"column":12}}]},"129":{"line":1116,"type":"if","locations":[{"start":{"line":1116,"column":8},"end":{"line":1116,"column":8}},{"start":{"line":1116,"column":8},"end":{"line":1116,"column":8}}]},"130":{"line":1136,"type":"binary-expr","locations":[{"start":{"line":1136,"column":29},"end":{"line":1136,"column":37}},{"start":{"line":1136,"column":41},"end":{"line":1136,"column":45}}]},"131":{"line":1139,"type":"if","locations":[{"start":{"line":1139,"column":12},"end":{"line":1139,"column":12}},{"start":{"line":1139,"column":12},"end":{"line":1139,"column":12}}]},"132":{"line":1153,"type":"if","locations":[{"start":{"line":1153,"column":16},"end":{"line":1153,"column":16}},{"start":{"line":1153,"column":16},"end":{"line":1153,"column":16}}]},"133":{"line":1170,"type":"if","locations":[{"start":{"line":1170,"column":4},"end":{"line":1170,"column":4}},{"start":{"line":1170,"column":4},"end":{"line":1170,"column":4}}]},"134":{"line":1170,"type":"binary-expr","locations":[{"start":{"line":1170,"column":8},"end":{"line":1170,"column":37}},{"start":{"line":1170,"column":41},"end":{"line":1170,"column":55}}]},"135":{"line":1174,"type":"if","locations":[{"start":{"line":1174,"column":9},"end":{"line":1174,"column":9}},{"start":{"line":1174,"column":9},"end":{"line":1174,"column":9}}]},"136":{"line":1174,"type":"binary-expr","locations":[{"start":{"line":1174,"column":13},"end":{"line":1174,"column":42}},{"start":{"line":1174,"column":46},"end":{"line":1174,"column":56}}]}}}} \ No newline at end of file
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/package.json b/node_modules/request/node_modules/form-data/node_modules/async/package.json
deleted file mode 100644
index a522a14e1..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/package.json
+++ /dev/null
@@ -1,95 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "main": "lib/async.js",
- "author": {
- "name": "Caolan McMahon"
- },
- "version": "1.2.1",
- "keywords": [
- "async",
- "callback",
- "utility",
- "module"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/caolan/async.git"
- },
- "bugs": {
- "url": "https://github.com/caolan/async/issues"
- },
- "license": "MIT",
- "devDependencies": {
- "benchmark": "github:bestiejs/benchmark.js",
- "coveralls": "^2.11.2",
- "jshint": "~2.7.0",
- "lodash": ">=2.4.1",
- "mkdirp": "~0.5.1",
- "nodeunit": ">0.0.0",
- "nyc": "^2.1.0",
- "uglify-js": "1.2.x",
- "yargs": "~3.9.1"
- },
- "jam": {
- "main": "lib/async.js",
- "include": [
- "lib/async.js",
- "README.md",
- "LICENSE"
- ],
- "categories": [
- "Utilities"
- ]
- },
- "scripts": {
- "test": "npm run-script lint && nodeunit test/test-async.js",
- "lint": "jshint lib/*.js test/*.js perf/*.js",
- "coverage": "nyc npm test && nyc report",
- "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls"
- },
- "spm": {
- "main": "lib/async.js"
- },
- "volo": {
- "main": "lib/async.js",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ]
- },
- "gitHead": "b66e85d1cca8c8056313253f22d18f571e7001d2",
- "homepage": "https://github.com/caolan/async#readme",
- "_id": "async@1.2.1",
- "_shasum": "a4816a17cd5ff516dfa2c7698a453369b9790de0",
- "_from": "async@>=1.2.1 <2.0.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "2.0.2",
- "_npmUser": {
- "name": "aearly",
- "email": "alexander.early@gmail.com"
- },
- "maintainers": [
- {
- "name": "caolan",
- "email": "caolan.mcmahon@gmail.com"
- },
- {
- "name": "beaugunderson",
- "email": "beau@beaugunderson.com"
- },
- {
- "name": "aearly",
- "email": "alexander.early@gmail.com"
- }
- ],
- "dist": {
- "shasum": "a4816a17cd5ff516dfa2c7698a453369b9790de0",
- "tarball": "http://registry.npmjs.org/async/-/async-1.2.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz"
-}
diff --git a/node_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js b/node_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js
deleted file mode 100755
index 5b261197a..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env node
-
-// This should probably be its own module but complaints about bower/etc.
-// support keep coming up and I'd rather just enable the workflow here for now
-// and figure out where this should live later. -- @beaugunderson
-
-var fs = require('fs');
-var _ = require('lodash');
-
-var packageJson = require('../package.json');
-
-var IGNORES = ['**/.*', 'node_modules', 'bower_components', 'test', 'tests'];
-var INCLUDES = ['lib/async.js', 'README.md', 'LICENSE'];
-var REPOSITORY_NAME = 'caolan/async';
-
-packageJson.jam = {
- main: packageJson.main,
- include: INCLUDES,
- categories: ['Utilities']
-};
-
-packageJson.spm = {
- main: packageJson.main
-};
-
-packageJson.volo = {
- main: packageJson.main,
- ignore: IGNORES
-};
-
-var bowerSpecific = {
- moduleType: ['amd', 'globals', 'node'],
- ignore: IGNORES,
- authors: [packageJson.author]
-};
-
-var bowerInclude = ['name', 'description', 'version', 'main', 'keywords',
- 'license', 'homepage', 'repository', 'devDependencies'];
-
-var componentSpecific = {
- repository: REPOSITORY_NAME,
- scripts: [packageJson.main]
-};
-
-var componentInclude = ['name', 'description', 'version', 'keywords',
- 'license', 'main'];
-
-var bowerJson = _.merge({}, _.pick(packageJson, bowerInclude), bowerSpecific);
-var componentJson = _.merge({}, _.pick(packageJson, componentInclude), componentSpecific);
-
-fs.writeFileSync('./bower.json', JSON.stringify(bowerJson, null, 2));
-fs.writeFileSync('./component.json', JSON.stringify(componentJson, null, 2));
-fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2));
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/HISTORY.md b/node_modules/request/node_modules/form-data/node_modules/mime-types/HISTORY.md
deleted file mode 100644
index 54689f911..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/HISTORY.md
+++ /dev/null
@@ -1,135 +0,0 @@
-2.1.1 / 2015-06-08
-==================
-
- * perf: fix deopt during mapping
-
-2.1.0 / 2015-06-07
-==================
-
- * Fix incorrectly treating extension-less file name as extension
- - i.e. `'path/to/json'` will no longer return `application/json`
- * Fix `.charset(type)` to accept parameters
- * Fix `.charset(type)` to match case-insensitive
- * Improve generation of extension to MIME mapping
- * Refactor internals for readability and no argument reassignment
- * Prefer `application/*` MIME types from the same source
- * Prefer any type over `application/octet-stream`
- * deps: mime-db@~1.13.0
- - Add nginx as a source
- - Add new mime types
-
-2.0.14 / 2015-06-06
-===================
-
- * deps: mime-db@~1.12.0
- - Add new mime types
-
-2.0.13 / 2015-05-31
-===================
-
- * deps: mime-db@~1.11.0
- - Add new mime types
-
-2.0.12 / 2015-05-19
-===================
-
- * deps: mime-db@~1.10.0
- - Add new mime types
-
-2.0.11 / 2015-05-05
-===================
-
- * deps: mime-db@~1.9.1
- - Add new mime types
-
-2.0.10 / 2015-03-13
-===================
-
- * deps: mime-db@~1.8.0
- - Add new mime types
-
-2.0.9 / 2015-02-09
-==================
-
- * deps: mime-db@~1.7.0
- - Add new mime types
- - Community extensions ownership transferred from `node-mime`
-
-2.0.8 / 2015-01-29
-==================
-
- * deps: mime-db@~1.6.0
- - Add new mime types
-
-2.0.7 / 2014-12-30
-==================
-
- * deps: mime-db@~1.5.0
- - Add new mime types
- - Fix various invalid MIME type entries
-
-2.0.6 / 2014-12-30
-==================
-
- * deps: mime-db@~1.4.0
- - Add new mime types
- - Fix various invalid MIME type entries
- - Remove example template MIME types
-
-2.0.5 / 2014-12-29
-==================
-
- * deps: mime-db@~1.3.1
- - Fix missing extensions
-
-2.0.4 / 2014-12-10
-==================
-
- * deps: mime-db@~1.3.0
- - Add new mime types
-
-2.0.3 / 2014-11-09
-==================
-
- * deps: mime-db@~1.2.0
- - Add new mime types
-
-2.0.2 / 2014-09-28
-==================
-
- * deps: mime-db@~1.1.0
- - Add new mime types
- - Add additional compressible
- - Update charsets
-
-2.0.1 / 2014-09-07
-==================
-
- * Support Node.js 0.6
-
-2.0.0 / 2014-09-02
-==================
-
- * Use `mime-db`
- * Remove `.define()`
-
-1.0.2 / 2014-08-04
-==================
-
- * Set charset=utf-8 for `text/javascript`
-
-1.0.1 / 2014-06-24
-==================
-
- * Add `text/jsx` type
-
-1.0.0 / 2014-05-12
-==================
-
- * Return `false` for unknown types
- * Set charset=utf-8 for `application/json`
-
-0.1.0 / 2014-05-02
-==================
-
- * Initial release
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/LICENSE b/node_modules/request/node_modules/form-data/node_modules/mime-types/LICENSE
deleted file mode 100644
index 06166077b..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
-Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.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/request/node_modules/form-data/node_modules/mime-types/README.md b/node_modules/request/node_modules/form-data/node_modules/mime-types/README.md
deleted file mode 100644
index e26295d04..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/README.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# mime-types
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-The ultimate javascript content-type utility.
-
-Similar to [node-mime](https://github.com/broofa/node-mime), except:
-
-- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`,
- so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.
-- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
-- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db)
-- No `.define()` functionality
-
-Otherwise, the API is compatible.
-
-## Install
-
-```sh
-$ npm install mime-types
-```
-
-## Adding Types
-
-All mime types are based on [mime-db](https://github.com/jshttp/mime-db),
-so open a PR there if you'd like to add mime types.
-
-## API
-
-```js
-var mime = require('mime-types')
-```
-
-All functions return `false` if input is invalid or not found.
-
-### mime.lookup(path)
-
-Lookup the content-type associated with a file.
-
-```js
-mime.lookup('json') // 'application/json'
-mime.lookup('.md') // 'text/x-markdown'
-mime.lookup('file.html') // 'text/html'
-mime.lookup('folder/file.js') // 'application/javascript'
-mime.lookup('folder/.htaccess') // false
-
-mime.lookup('cats') // false
-```
-
-### mime.contentType(type)
-
-Create a full content-type header given a content-type or extension.
-
-```js
-mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
-mime.contentType('file.json') // 'application/json; charset=utf-8'
-
-// from a full path
-mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'
-```
-
-### mime.extension(type)
-
-Get the default extension for a content-type.
-
-```js
-mime.extension('application/octet-stream') // 'bin'
-```
-
-### mime.charset(type)
-
-Lookup the implied default charset of a content-type.
-
-```js
-mime.charset('text/x-markdown') // 'UTF-8'
-```
-
-### var type = mime.types[extension]
-
-A map of content-types by extension.
-
-### [extensions...] = mime.extensions[type]
-
-A map of extensions by content-type.
-
-## License
-
-[MIT](LICENSE)
-
-[npm-image]: https://img.shields.io/npm/v/mime-types.svg
-[npm-url]: https://npmjs.org/package/mime-types
-[node-version-image]: https://img.shields.io/node/v/mime-types.svg
-[node-version-url]: http://nodejs.org/download/
-[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg
-[travis-url]: https://travis-ci.org/jshttp/mime-types
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/mime-types
-[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg
-[downloads-url]: https://npmjs.org/package/mime-types
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/index.js b/node_modules/request/node_modules/form-data/node_modules/mime-types/index.js
deleted file mode 100644
index 9edf72b75..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/index.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*!
- * mime-types
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var db = require('mime-db')
-var extname = require('path').extname
-
-/**
- * Module variables.
- * @private
- */
-
-var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/
-var textTypeRegExp = /^text\//i
-
-/**
- * Module exports.
- * @public
- */
-
-exports.charset = charset
-exports.charsets = { lookup: charset }
-exports.contentType = contentType
-exports.extension = extension
-exports.extensions = Object.create(null)
-exports.lookup = lookup
-exports.types = Object.create(null)
-
-// Populate the extensions/types maps
-populateMaps(exports.extensions, exports.types)
-
-/**
- * Get the default charset for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function charset(type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = extractTypeRegExp.exec(type)
- var mime = match && db[match[1].toLowerCase()]
-
- if (mime && mime.charset) {
- return mime.charset
- }
-
- // default text/* to utf-8
- if (match && textTypeRegExp.test(match[1])) {
- return 'UTF-8'
- }
-
- return false
-}
-
-/**
- * Create a full Content-Type header given a MIME type or extension.
- *
- * @param {string} str
- * @return {boolean|string}
- */
-
-function contentType(str) {
- // TODO: should this even be in this module?
- if (!str || typeof str !== 'string') {
- return false
- }
-
- var mime = str.indexOf('/') === -1
- ? exports.lookup(str)
- : str
-
- if (!mime) {
- return false
- }
-
- // TODO: use content-type or other module
- if (mime.indexOf('charset') === -1) {
- var charset = exports.charset(mime)
- if (charset) mime += '; charset=' + charset.toLowerCase()
- }
-
- return mime
-}
-
-/**
- * Get the default extension for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function extension(type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = extractTypeRegExp.exec(type)
-
- // get extensions
- var exts = match && exports.extensions[match[1].toLowerCase()]
-
- if (!exts || !exts.length) {
- return false
- }
-
- return exts[0]
-}
-
-/**
- * Lookup the MIME type for a file path/extension.
- *
- * @param {string} path
- * @return {boolean|string}
- */
-
-function lookup(path) {
- if (!path || typeof path !== 'string') {
- return false
- }
-
- // get the extension ("ext" or ".ext" or full path)
- var extension = extname('x.' + path)
- .toLowerCase()
- .substr(1)
-
- if (!extension) {
- return false
- }
-
- return exports.types[extension] || false
-}
-
-/**
- * Populate the extensions and types maps.
- * @private
- */
-
-function populateMaps(extensions, types) {
- // source preference (least -> most)
- var preference = ['nginx', 'apache', undefined, 'iana']
-
- Object.keys(db).forEach(function forEachMimeType(type) {
- var mime = db[type]
- var exts = mime.extensions
-
- if (!exts || !exts.length) {
- return
- }
-
- // mime -> extensions
- extensions[type] = exts
-
- // extension -> mime
- for (var i = 0; i < exts.length; i++) {
- var extension = exts[i]
-
- if (types[extension]) {
- var from = preference.indexOf(db[types[extension]].source)
- var to = preference.indexOf(mime.source)
-
- if (types[extension] !== 'application/octet-stream'
- && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) {
- // skip the remapping
- return
- }
- }
-
- // set the extension -> mime
- types[extension] = type
- }
- })
-}
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/HISTORY.md
deleted file mode 100644
index 415a8cf6c..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/HISTORY.md
+++ /dev/null
@@ -1,228 +0,0 @@
-1.13.0 / 2015-06-07
-===================
-
- * Add nginx as a source
- * Add `application/x-cocoa`
- * Add `application/x-java-archive-diff`
- * Add `application/x-makeself`
- * Add `application/x-perl`
- * Add `application/x-pilot`
- * Add `application/x-redhat-package-manager`
- * Add `application/x-sea`
- * Add `audio/x-m4a`
- * Add `audio/x-realaudio`
- * Add `image/x-jng`
- * Add `text/mathml`
-
-1.12.0 / 2015-06-05
-===================
-
- * Add `application/bdoc`
- * Add `application/vnd.hyperdrive+json`
- * Add `application/x-bdoc`
- * Add extension `.rtf` to `text/rtf`
-
-1.11.0 / 2015-05-31
-===================
-
- * Add `audio/wav`
- * Add `audio/wave`
- * Add extension `.litcoffee` to `text/coffeescript`
- * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
- * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
-
-1.10.0 / 2015-05-19
-===================
-
- * Add `application/vnd.balsamiq.bmpr`
- * Add `application/vnd.microsoft.portable-executable`
- * Add `application/x-ns-proxy-autoconfig`
-
-1.9.1 / 2015-04-19
-==================
-
- * Remove `.json` extension from `application/manifest+json`
- - This is causing bugs downstream
-
-1.9.0 / 2015-04-19
-==================
-
- * Add `application/manifest+json`
- * Add `application/vnd.micro+json`
- * Add `image/vnd.zbrush.pcx`
- * Add `image/x-ms-bmp`
-
-1.8.0 / 2015-03-13
-==================
-
- * Add `application/vnd.citationstyles.style+xml`
- * Add `application/vnd.fastcopy-disk-image`
- * Add `application/vnd.gov.sk.xmldatacontainer+xml`
- * Add extension `.jsonld` to `application/ld+json`
-
-1.7.0 / 2015-02-08
-==================
-
- * Add `application/vnd.gerber`
- * Add `application/vnd.msa-disk-image`
-
-1.6.1 / 2015-02-05
-==================
-
- * Community extensions ownership transferred from `node-mime`
-
-1.6.0 / 2015-01-29
-==================
-
- * Add `application/jose`
- * Add `application/jose+json`
- * Add `application/json-seq`
- * Add `application/jwk+json`
- * Add `application/jwk-set+json`
- * Add `application/jwt`
- * Add `application/rdap+json`
- * Add `application/vnd.gov.sk.e-form+xml`
- * Add `application/vnd.ims.imsccv1p3`
-
-1.5.0 / 2014-12-30
-==================
-
- * Add `application/vnd.oracle.resource+json`
- * Fix various invalid MIME type entries
- - `application/mbox+xml`
- - `application/oscp-response`
- - `application/vwg-multiplexed`
- - `audio/g721`
-
-1.4.0 / 2014-12-21
-==================
-
- * Add `application/vnd.ims.imsccv1p2`
- * Fix various invalid MIME type entries
- - `application/vnd-acucobol`
- - `application/vnd-curl`
- - `application/vnd-dart`
- - `application/vnd-dxr`
- - `application/vnd-fdf`
- - `application/vnd-mif`
- - `application/vnd-sema`
- - `application/vnd-wap-wmlc`
- - `application/vnd.adobe.flash-movie`
- - `application/vnd.dece-zip`
- - `application/vnd.dvb_service`
- - `application/vnd.micrografx-igx`
- - `application/vnd.sealed-doc`
- - `application/vnd.sealed-eml`
- - `application/vnd.sealed-mht`
- - `application/vnd.sealed-ppt`
- - `application/vnd.sealed-tiff`
- - `application/vnd.sealed-xls`
- - `application/vnd.sealedmedia.softseal-html`
- - `application/vnd.sealedmedia.softseal-pdf`
- - `application/vnd.wap-slc`
- - `application/vnd.wap-wbxml`
- - `audio/vnd.sealedmedia.softseal-mpeg`
- - `image/vnd-djvu`
- - `image/vnd-svf`
- - `image/vnd-wap-wbmp`
- - `image/vnd.sealed-png`
- - `image/vnd.sealedmedia.softseal-gif`
- - `image/vnd.sealedmedia.softseal-jpg`
- - `model/vnd-dwf`
- - `model/vnd.parasolid.transmit-binary`
- - `model/vnd.parasolid.transmit-text`
- - `text/vnd-a`
- - `text/vnd-curl`
- - `text/vnd.wap-wml`
- * Remove example template MIME types
- - `application/example`
- - `audio/example`
- - `image/example`
- - `message/example`
- - `model/example`
- - `multipart/example`
- - `text/example`
- - `video/example`
-
-1.3.1 / 2014-12-16
-==================
-
- * Fix missing extensions
- - `application/json5`
- - `text/hjson`
-
-1.3.0 / 2014-12-07
-==================
-
- * Add `application/a2l`
- * Add `application/aml`
- * Add `application/atfx`
- * Add `application/atxml`
- * Add `application/cdfx+xml`
- * Add `application/dii`
- * Add `application/json5`
- * Add `application/lxf`
- * Add `application/mf4`
- * Add `application/vnd.apache.thrift.compact`
- * Add `application/vnd.apache.thrift.json`
- * Add `application/vnd.coffeescript`
- * Add `application/vnd.enphase.envoy`
- * Add `application/vnd.ims.imsccv1p1`
- * Add `text/csv-schema`
- * Add `text/hjson`
- * Add `text/markdown`
- * Add `text/yaml`
-
-1.2.0 / 2014-11-09
-==================
-
- * Add `application/cea`
- * Add `application/dit`
- * Add `application/vnd.gov.sk.e-form+zip`
- * Add `application/vnd.tmd.mediaflex.api+xml`
- * Type `application/epub+zip` is now IANA-registered
-
-1.1.2 / 2014-10-23
-==================
-
- * Rebuild database for `application/x-www-form-urlencoded` change
-
-1.1.1 / 2014-10-20
-==================
-
- * Mark `application/x-www-form-urlencoded` as compressible.
-
-1.1.0 / 2014-09-28
-==================
-
- * Add `application/font-woff2`
-
-1.0.3 / 2014-09-25
-==================
-
- * Fix engine requirement in package
-
-1.0.2 / 2014-09-25
-==================
-
- * Add `application/coap-group+json`
- * Add `application/dcd`
- * Add `application/vnd.apache.thrift.binary`
- * Add `image/vnd.tencent.tap`
- * Mark all JSON-derived types as compressible
- * Update `text/vtt` data
-
-1.0.1 / 2014-08-30
-==================
-
- * Fix extension ordering
-
-1.0.0 / 2014-08-30
-==================
-
- * Add `application/atf`
- * Add `application/merge-patch+json`
- * Add `multipart/x-mixed-replace`
- * Add `source: 'apache'` metadata
- * Add `source: 'iana'` metadata
- * Remove badly-assumed charset data
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/LICENSE b/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/LICENSE
deleted file mode 100644
index a7ae8ee9b..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2014 Jonathan Ong me@jongleberry.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/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/README.md b/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/README.md
deleted file mode 100644
index faf387f96..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/README.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# mime-db
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][travis-image]][travis-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-This is a database of all mime types.
-It consists of a single, public JSON file and does not include any logic,
-allowing it to remain as un-opinionated as possible with an API.
-It aggregates data from the following sources:
-
-- http://www.iana.org/assignments/media-types/media-types.xhtml
-- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
-- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types
-
-## Installation
-
-```bash
-npm install mime-db
-```
-
-### Database Download
-
-If you're crazy enough to use this in the browser, you can just grab the
-JSON file using [RawGit](https://rawgit.com/). It is recommended to replace
-`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the
-JSON format may change in the future.
-
-```
-https://cdn.rawgit.com/jshttp/mime-db/master/db.json
-```
-
-## Usage
-
-```js
-var db = require('mime-db');
-
-// grab data on .js files
-var data = db['application/javascript'];
-```
-
-## Data Structure
-
-The JSON file is a map lookup for lowercased mime types.
-Each mime type has the following properties:
-
-- `.source` - where the mime type is defined.
- If not set, it's probably a custom media type.
- - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
- - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
- - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)
-- `.extensions[]` - known extensions associated with this mime type.
-- `.compressible` - whether a file of this type is can be gzipped.
-- `.charset` - the default charset associated with this type, if any.
-
-If unknown, every property could be `undefined`.
-
-## Contributing
-
-To edit the database, only make PRs against `src/custom.json` or
-`src/custom-suffix.json`.
-
-To update the build, run `npm run update`.
-
-## Adding Custom Media Types
-
-The best way to get new media types included in this library is to register
-them with the IANA. The community registration procedure is outlined in
-[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
-registered with the IANA are automatically pulled into this library.
-
-[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg
-[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg
-[npm-url]: https://npmjs.org/package/mime-db
-[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg
-[travis-url]: https://travis-ci.org/jshttp/mime-db
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
-[node-image]: https://img.shields.io/node/v/mime-db.svg
-[node-url]: http://nodejs.org/download/
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/db.json
deleted file mode 100644
index 27cb4a1b0..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/db.json
+++ /dev/null
@@ -1,6406 +0,0 @@
-{
- "application/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "application/3gpdash-qoe-report+xml": {
- "source": "iana"
- },
- "application/3gpp-ims+xml": {
- "source": "iana"
- },
- "application/a2l": {
- "source": "iana"
- },
- "application/activemessage": {
- "source": "iana"
- },
- "application/alto-costmap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-costmapfilter+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-directory+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointcost+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointcostparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointprop+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointpropparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-error+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-networkmap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-networkmapfilter+json": {
- "source": "iana",
- "compressible": true
- },
- "application/aml": {
- "source": "iana"
- },
- "application/andrew-inset": {
- "source": "iana",
- "extensions": ["ez"]
- },
- "application/applefile": {
- "source": "iana"
- },
- "application/applixware": {
- "source": "apache",
- "extensions": ["aw"]
- },
- "application/atf": {
- "source": "iana"
- },
- "application/atfx": {
- "source": "iana"
- },
- "application/atom+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["atom"]
- },
- "application/atomcat+xml": {
- "source": "iana",
- "extensions": ["atomcat"]
- },
- "application/atomdeleted+xml": {
- "source": "iana"
- },
- "application/atomicmail": {
- "source": "iana"
- },
- "application/atomsvc+xml": {
- "source": "iana",
- "extensions": ["atomsvc"]
- },
- "application/atxml": {
- "source": "iana"
- },
- "application/auth-policy+xml": {
- "source": "iana"
- },
- "application/bacnet-xdd+zip": {
- "source": "iana"
- },
- "application/batch-smtp": {
- "source": "iana"
- },
- "application/bdoc": {
- "compressible": false,
- "extensions": ["bdoc"]
- },
- "application/beep+xml": {
- "source": "iana"
- },
- "application/calendar+json": {
- "source": "iana",
- "compressible": true
- },
- "application/calendar+xml": {
- "source": "iana"
- },
- "application/call-completion": {
- "source": "iana"
- },
- "application/cals-1840": {
- "source": "iana"
- },
- "application/cbor": {
- "source": "iana"
- },
- "application/ccmp+xml": {
- "source": "iana"
- },
- "application/ccxml+xml": {
- "source": "iana",
- "extensions": ["ccxml"]
- },
- "application/cdfx+xml": {
- "source": "iana"
- },
- "application/cdmi-capability": {
- "source": "iana",
- "extensions": ["cdmia"]
- },
- "application/cdmi-container": {
- "source": "iana",
- "extensions": ["cdmic"]
- },
- "application/cdmi-domain": {
- "source": "iana",
- "extensions": ["cdmid"]
- },
- "application/cdmi-object": {
- "source": "iana",
- "extensions": ["cdmio"]
- },
- "application/cdmi-queue": {
- "source": "iana",
- "extensions": ["cdmiq"]
- },
- "application/cea": {
- "source": "iana"
- },
- "application/cea-2018+xml": {
- "source": "iana"
- },
- "application/cellml+xml": {
- "source": "iana"
- },
- "application/cfw": {
- "source": "iana"
- },
- "application/cms": {
- "source": "iana"
- },
- "application/cnrp+xml": {
- "source": "iana"
- },
- "application/coap-group+json": {
- "source": "iana",
- "compressible": true
- },
- "application/commonground": {
- "source": "iana"
- },
- "application/conference-info+xml": {
- "source": "iana"
- },
- "application/cpl+xml": {
- "source": "iana"
- },
- "application/csrattrs": {
- "source": "iana"
- },
- "application/csta+xml": {
- "source": "iana"
- },
- "application/cstadata+xml": {
- "source": "iana"
- },
- "application/cu-seeme": {
- "source": "apache",
- "extensions": ["cu"]
- },
- "application/cybercash": {
- "source": "iana"
- },
- "application/dart": {
- "compressible": true
- },
- "application/dash+xml": {
- "source": "iana",
- "extensions": ["mdp"]
- },
- "application/dashdelta": {
- "source": "iana"
- },
- "application/davmount+xml": {
- "source": "iana",
- "extensions": ["davmount"]
- },
- "application/dca-rft": {
- "source": "iana"
- },
- "application/dcd": {
- "source": "iana"
- },
- "application/dec-dx": {
- "source": "iana"
- },
- "application/dialog-info+xml": {
- "source": "iana"
- },
- "application/dicom": {
- "source": "iana"
- },
- "application/dii": {
- "source": "iana"
- },
- "application/dit": {
- "source": "iana"
- },
- "application/dns": {
- "source": "iana"
- },
- "application/docbook+xml": {
- "source": "apache",
- "extensions": ["dbk"]
- },
- "application/dskpp+xml": {
- "source": "iana"
- },
- "application/dssc+der": {
- "source": "iana",
- "extensions": ["dssc"]
- },
- "application/dssc+xml": {
- "source": "iana",
- "extensions": ["xdssc"]
- },
- "application/dvcs": {
- "source": "iana"
- },
- "application/ecmascript": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ecma"]
- },
- "application/edi-consent": {
- "source": "iana"
- },
- "application/edi-x12": {
- "source": "iana",
- "compressible": false
- },
- "application/edifact": {
- "source": "iana",
- "compressible": false
- },
- "application/emma+xml": {
- "source": "iana",
- "extensions": ["emma"]
- },
- "application/emotionml+xml": {
- "source": "iana"
- },
- "application/encaprtp": {
- "source": "iana"
- },
- "application/epp+xml": {
- "source": "iana"
- },
- "application/epub+zip": {
- "source": "iana",
- "extensions": ["epub"]
- },
- "application/eshop": {
- "source": "iana"
- },
- "application/exi": {
- "source": "iana",
- "extensions": ["exi"]
- },
- "application/fastinfoset": {
- "source": "iana"
- },
- "application/fastsoap": {
- "source": "iana"
- },
- "application/fdt+xml": {
- "source": "iana"
- },
- "application/fits": {
- "source": "iana"
- },
- "application/font-sfnt": {
- "source": "iana"
- },
- "application/font-tdpfr": {
- "source": "iana",
- "extensions": ["pfr"]
- },
- "application/font-woff": {
- "source": "iana",
- "compressible": false,
- "extensions": ["woff"]
- },
- "application/font-woff2": {
- "compressible": false,
- "extensions": ["woff2"]
- },
- "application/framework-attributes+xml": {
- "source": "iana"
- },
- "application/gml+xml": {
- "source": "apache",
- "extensions": ["gml"]
- },
- "application/gpx+xml": {
- "source": "apache",
- "extensions": ["gpx"]
- },
- "application/gxf": {
- "source": "apache",
- "extensions": ["gxf"]
- },
- "application/gzip": {
- "source": "iana",
- "compressible": false
- },
- "application/h224": {
- "source": "iana"
- },
- "application/held+xml": {
- "source": "iana"
- },
- "application/http": {
- "source": "iana"
- },
- "application/hyperstudio": {
- "source": "iana",
- "extensions": ["stk"]
- },
- "application/ibe-key-request+xml": {
- "source": "iana"
- },
- "application/ibe-pkg-reply+xml": {
- "source": "iana"
- },
- "application/ibe-pp-data": {
- "source": "iana"
- },
- "application/iges": {
- "source": "iana"
- },
- "application/im-iscomposing+xml": {
- "source": "iana"
- },
- "application/index": {
- "source": "iana"
- },
- "application/index.cmd": {
- "source": "iana"
- },
- "application/index.obj": {
- "source": "iana"
- },
- "application/index.response": {
- "source": "iana"
- },
- "application/index.vnd": {
- "source": "iana"
- },
- "application/inkml+xml": {
- "source": "iana",
- "extensions": ["ink","inkml"]
- },
- "application/iotp": {
- "source": "iana"
- },
- "application/ipfix": {
- "source": "iana",
- "extensions": ["ipfix"]
- },
- "application/ipp": {
- "source": "iana"
- },
- "application/isup": {
- "source": "iana"
- },
- "application/its+xml": {
- "source": "iana"
- },
- "application/java-archive": {
- "source": "apache",
- "compressible": false,
- "extensions": ["jar","war","ear"]
- },
- "application/java-serialized-object": {
- "source": "apache",
- "compressible": false,
- "extensions": ["ser"]
- },
- "application/java-vm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["class"]
- },
- "application/javascript": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["js"]
- },
- "application/jose": {
- "source": "iana"
- },
- "application/jose+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jrd+json": {
- "source": "iana",
- "compressible": true
- },
- "application/json": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["json","map"]
- },
- "application/json-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/json-seq": {
- "source": "iana"
- },
- "application/json5": {
- "extensions": ["json5"]
- },
- "application/jsonml+json": {
- "source": "apache",
- "compressible": true,
- "extensions": ["jsonml"]
- },
- "application/jwk+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jwk-set+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jwt": {
- "source": "iana"
- },
- "application/kpml-request+xml": {
- "source": "iana"
- },
- "application/kpml-response+xml": {
- "source": "iana"
- },
- "application/ld+json": {
- "source": "iana",
- "compressible": true,
- "extensions": ["jsonld"]
- },
- "application/link-format": {
- "source": "iana"
- },
- "application/load-control+xml": {
- "source": "iana"
- },
- "application/lost+xml": {
- "source": "iana",
- "extensions": ["lostxml"]
- },
- "application/lostsync+xml": {
- "source": "iana"
- },
- "application/lxf": {
- "source": "iana"
- },
- "application/mac-binhex40": {
- "source": "iana",
- "extensions": ["hqx"]
- },
- "application/mac-compactpro": {
- "source": "apache",
- "extensions": ["cpt"]
- },
- "application/macwriteii": {
- "source": "iana"
- },
- "application/mads+xml": {
- "source": "iana",
- "extensions": ["mads"]
- },
- "application/manifest+json": {
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["webmanifest"]
- },
- "application/marc": {
- "source": "iana",
- "extensions": ["mrc"]
- },
- "application/marcxml+xml": {
- "source": "iana",
- "extensions": ["mrcx"]
- },
- "application/mathematica": {
- "source": "iana",
- "extensions": ["ma","nb","mb"]
- },
- "application/mathml+xml": {
- "source": "iana",
- "extensions": ["mathml"]
- },
- "application/mathml-content+xml": {
- "source": "iana"
- },
- "application/mathml-presentation+xml": {
- "source": "iana"
- },
- "application/mbms-associated-procedure-description+xml": {
- "source": "iana"
- },
- "application/mbms-deregister+xml": {
- "source": "iana"
- },
- "application/mbms-envelope+xml": {
- "source": "iana"
- },
- "application/mbms-msk+xml": {
- "source": "iana"
- },
- "application/mbms-msk-response+xml": {
- "source": "iana"
- },
- "application/mbms-protection-description+xml": {
- "source": "iana"
- },
- "application/mbms-reception-report+xml": {
- "source": "iana"
- },
- "application/mbms-register+xml": {
- "source": "iana"
- },
- "application/mbms-register-response+xml": {
- "source": "iana"
- },
- "application/mbms-schedule+xml": {
- "source": "iana"
- },
- "application/mbms-user-service-description+xml": {
- "source": "iana"
- },
- "application/mbox": {
- "source": "iana",
- "extensions": ["mbox"]
- },
- "application/media-policy-dataset+xml": {
- "source": "iana"
- },
- "application/media_control+xml": {
- "source": "iana"
- },
- "application/mediaservercontrol+xml": {
- "source": "iana",
- "extensions": ["mscml"]
- },
- "application/merge-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/metalink+xml": {
- "source": "apache",
- "extensions": ["metalink"]
- },
- "application/metalink4+xml": {
- "source": "iana",
- "extensions": ["meta4"]
- },
- "application/mets+xml": {
- "source": "iana",
- "extensions": ["mets"]
- },
- "application/mf4": {
- "source": "iana"
- },
- "application/mikey": {
- "source": "iana"
- },
- "application/mods+xml": {
- "source": "iana",
- "extensions": ["mods"]
- },
- "application/moss-keys": {
- "source": "iana"
- },
- "application/moss-signature": {
- "source": "iana"
- },
- "application/mosskey-data": {
- "source": "iana"
- },
- "application/mosskey-request": {
- "source": "iana"
- },
- "application/mp21": {
- "source": "iana",
- "extensions": ["m21","mp21"]
- },
- "application/mp4": {
- "source": "iana",
- "extensions": ["mp4s","m4p"]
- },
- "application/mpeg4-generic": {
- "source": "iana"
- },
- "application/mpeg4-iod": {
- "source": "iana"
- },
- "application/mpeg4-iod-xmt": {
- "source": "iana"
- },
- "application/mrb-consumer+xml": {
- "source": "iana"
- },
- "application/mrb-publish+xml": {
- "source": "iana"
- },
- "application/msc-ivr+xml": {
- "source": "iana"
- },
- "application/msc-mixer+xml": {
- "source": "iana"
- },
- "application/msword": {
- "source": "iana",
- "compressible": false,
- "extensions": ["doc","dot"]
- },
- "application/mxf": {
- "source": "iana",
- "extensions": ["mxf"]
- },
- "application/nasdata": {
- "source": "iana"
- },
- "application/news-checkgroups": {
- "source": "iana"
- },
- "application/news-groupinfo": {
- "source": "iana"
- },
- "application/news-transmission": {
- "source": "iana"
- },
- "application/nlsml+xml": {
- "source": "iana"
- },
- "application/nss": {
- "source": "iana"
- },
- "application/ocsp-request": {
- "source": "iana"
- },
- "application/ocsp-response": {
- "source": "iana"
- },
- "application/octet-stream": {
- "source": "iana",
- "compressible": false,
- "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]
- },
- "application/oda": {
- "source": "iana",
- "extensions": ["oda"]
- },
- "application/odx": {
- "source": "iana"
- },
- "application/oebps-package+xml": {
- "source": "iana",
- "extensions": ["opf"]
- },
- "application/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ogx"]
- },
- "application/omdoc+xml": {
- "source": "apache",
- "extensions": ["omdoc"]
- },
- "application/onenote": {
- "source": "apache",
- "extensions": ["onetoc","onetoc2","onetmp","onepkg"]
- },
- "application/oxps": {
- "source": "iana",
- "extensions": ["oxps"]
- },
- "application/p2p-overlay+xml": {
- "source": "iana"
- },
- "application/parityfec": {
- "source": "iana"
- },
- "application/patch-ops-error+xml": {
- "source": "iana",
- "extensions": ["xer"]
- },
- "application/pdf": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pdf"]
- },
- "application/pdx": {
- "source": "iana"
- },
- "application/pgp-encrypted": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pgp"]
- },
- "application/pgp-keys": {
- "source": "iana"
- },
- "application/pgp-signature": {
- "source": "iana",
- "extensions": ["asc","sig"]
- },
- "application/pics-rules": {
- "source": "apache",
- "extensions": ["prf"]
- },
- "application/pidf+xml": {
- "source": "iana"
- },
- "application/pidf-diff+xml": {
- "source": "iana"
- },
- "application/pkcs10": {
- "source": "iana",
- "extensions": ["p10"]
- },
- "application/pkcs7-mime": {
- "source": "iana",
- "extensions": ["p7m","p7c"]
- },
- "application/pkcs7-signature": {
- "source": "iana",
- "extensions": ["p7s"]
- },
- "application/pkcs8": {
- "source": "iana",
- "extensions": ["p8"]
- },
- "application/pkix-attr-cert": {
- "source": "iana",
- "extensions": ["ac"]
- },
- "application/pkix-cert": {
- "source": "iana",
- "extensions": ["cer"]
- },
- "application/pkix-crl": {
- "source": "iana",
- "extensions": ["crl"]
- },
- "application/pkix-pkipath": {
- "source": "iana",
- "extensions": ["pkipath"]
- },
- "application/pkixcmp": {
- "source": "iana",
- "extensions": ["pki"]
- },
- "application/pls+xml": {
- "source": "iana",
- "extensions": ["pls"]
- },
- "application/poc-settings+xml": {
- "source": "iana"
- },
- "application/postscript": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ai","eps","ps"]
- },
- "application/provenance+xml": {
- "source": "iana"
- },
- "application/prs.alvestrand.titrax-sheet": {
- "source": "iana"
- },
- "application/prs.cww": {
- "source": "iana",
- "extensions": ["cww"]
- },
- "application/prs.hpub+zip": {
- "source": "iana"
- },
- "application/prs.nprend": {
- "source": "iana"
- },
- "application/prs.plucker": {
- "source": "iana"
- },
- "application/prs.rdf-xml-crypt": {
- "source": "iana"
- },
- "application/prs.xsf+xml": {
- "source": "iana"
- },
- "application/pskc+xml": {
- "source": "iana",
- "extensions": ["pskcxml"]
- },
- "application/qsig": {
- "source": "iana"
- },
- "application/raptorfec": {
- "source": "iana"
- },
- "application/rdap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/rdf+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rdf"]
- },
- "application/reginfo+xml": {
- "source": "iana",
- "extensions": ["rif"]
- },
- "application/relax-ng-compact-syntax": {
- "source": "iana",
- "extensions": ["rnc"]
- },
- "application/remote-printing": {
- "source": "iana"
- },
- "application/reputon+json": {
- "source": "iana",
- "compressible": true
- },
- "application/resource-lists+xml": {
- "source": "iana",
- "extensions": ["rl"]
- },
- "application/resource-lists-diff+xml": {
- "source": "iana",
- "extensions": ["rld"]
- },
- "application/riscos": {
- "source": "iana"
- },
- "application/rlmi+xml": {
- "source": "iana"
- },
- "application/rls-services+xml": {
- "source": "iana",
- "extensions": ["rs"]
- },
- "application/rpki-ghostbusters": {
- "source": "iana",
- "extensions": ["gbr"]
- },
- "application/rpki-manifest": {
- "source": "iana",
- "extensions": ["mft"]
- },
- "application/rpki-roa": {
- "source": "iana",
- "extensions": ["roa"]
- },
- "application/rpki-updown": {
- "source": "iana"
- },
- "application/rsd+xml": {
- "source": "apache",
- "extensions": ["rsd"]
- },
- "application/rss+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["rss"]
- },
- "application/rtf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtf"]
- },
- "application/rtploopback": {
- "source": "iana"
- },
- "application/rtx": {
- "source": "iana"
- },
- "application/samlassertion+xml": {
- "source": "iana"
- },
- "application/samlmetadata+xml": {
- "source": "iana"
- },
- "application/sbml+xml": {
- "source": "iana",
- "extensions": ["sbml"]
- },
- "application/scaip+xml": {
- "source": "iana"
- },
- "application/scvp-cv-request": {
- "source": "iana",
- "extensions": ["scq"]
- },
- "application/scvp-cv-response": {
- "source": "iana",
- "extensions": ["scs"]
- },
- "application/scvp-vp-request": {
- "source": "iana",
- "extensions": ["spq"]
- },
- "application/scvp-vp-response": {
- "source": "iana",
- "extensions": ["spp"]
- },
- "application/sdp": {
- "source": "iana",
- "extensions": ["sdp"]
- },
- "application/sep+xml": {
- "source": "iana"
- },
- "application/sep-exi": {
- "source": "iana"
- },
- "application/session-info": {
- "source": "iana"
- },
- "application/set-payment": {
- "source": "iana"
- },
- "application/set-payment-initiation": {
- "source": "iana",
- "extensions": ["setpay"]
- },
- "application/set-registration": {
- "source": "iana"
- },
- "application/set-registration-initiation": {
- "source": "iana",
- "extensions": ["setreg"]
- },
- "application/sgml": {
- "source": "iana"
- },
- "application/sgml-open-catalog": {
- "source": "iana"
- },
- "application/shf+xml": {
- "source": "iana",
- "extensions": ["shf"]
- },
- "application/sieve": {
- "source": "iana"
- },
- "application/simple-filter+xml": {
- "source": "iana"
- },
- "application/simple-message-summary": {
- "source": "iana"
- },
- "application/simplesymbolcontainer": {
- "source": "iana"
- },
- "application/slate": {
- "source": "iana"
- },
- "application/smil": {
- "source": "iana"
- },
- "application/smil+xml": {
- "source": "iana",
- "extensions": ["smi","smil"]
- },
- "application/smpte336m": {
- "source": "iana"
- },
- "application/soap+fastinfoset": {
- "source": "iana"
- },
- "application/soap+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/sparql-query": {
- "source": "iana",
- "extensions": ["rq"]
- },
- "application/sparql-results+xml": {
- "source": "iana",
- "extensions": ["srx"]
- },
- "application/spirits-event+xml": {
- "source": "iana"
- },
- "application/sql": {
- "source": "iana"
- },
- "application/srgs": {
- "source": "iana",
- "extensions": ["gram"]
- },
- "application/srgs+xml": {
- "source": "iana",
- "extensions": ["grxml"]
- },
- "application/sru+xml": {
- "source": "iana",
- "extensions": ["sru"]
- },
- "application/ssdl+xml": {
- "source": "apache",
- "extensions": ["ssdl"]
- },
- "application/ssml+xml": {
- "source": "iana",
- "extensions": ["ssml"]
- },
- "application/tamp-apex-update": {
- "source": "iana"
- },
- "application/tamp-apex-update-confirm": {
- "source": "iana"
- },
- "application/tamp-community-update": {
- "source": "iana"
- },
- "application/tamp-community-update-confirm": {
- "source": "iana"
- },
- "application/tamp-error": {
- "source": "iana"
- },
- "application/tamp-sequence-adjust": {
- "source": "iana"
- },
- "application/tamp-sequence-adjust-confirm": {
- "source": "iana"
- },
- "application/tamp-status-query": {
- "source": "iana"
- },
- "application/tamp-status-response": {
- "source": "iana"
- },
- "application/tamp-update": {
- "source": "iana"
- },
- "application/tamp-update-confirm": {
- "source": "iana"
- },
- "application/tar": {
- "compressible": true
- },
- "application/tei+xml": {
- "source": "iana",
- "extensions": ["tei","teicorpus"]
- },
- "application/thraud+xml": {
- "source": "iana",
- "extensions": ["tfi"]
- },
- "application/timestamp-query": {
- "source": "iana"
- },
- "application/timestamp-reply": {
- "source": "iana"
- },
- "application/timestamped-data": {
- "source": "iana",
- "extensions": ["tsd"]
- },
- "application/ttml+xml": {
- "source": "iana"
- },
- "application/tve-trigger": {
- "source": "iana"
- },
- "application/ulpfec": {
- "source": "iana"
- },
- "application/urc-grpsheet+xml": {
- "source": "iana"
- },
- "application/urc-ressheet+xml": {
- "source": "iana"
- },
- "application/urc-targetdesc+xml": {
- "source": "iana"
- },
- "application/urc-uisocketdesc+xml": {
- "source": "iana"
- },
- "application/vcard+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vcard+xml": {
- "source": "iana"
- },
- "application/vemmi": {
- "source": "iana"
- },
- "application/vividence.scriptfile": {
- "source": "apache"
- },
- "application/vnd.3gpp.bsf+xml": {
- "source": "iana"
- },
- "application/vnd.3gpp.pic-bw-large": {
- "source": "iana",
- "extensions": ["plb"]
- },
- "application/vnd.3gpp.pic-bw-small": {
- "source": "iana",
- "extensions": ["psb"]
- },
- "application/vnd.3gpp.pic-bw-var": {
- "source": "iana",
- "extensions": ["pvb"]
- },
- "application/vnd.3gpp.sms": {
- "source": "iana"
- },
- "application/vnd.3gpp2.bcmcsinfo+xml": {
- "source": "iana"
- },
- "application/vnd.3gpp2.sms": {
- "source": "iana"
- },
- "application/vnd.3gpp2.tcap": {
- "source": "iana",
- "extensions": ["tcap"]
- },
- "application/vnd.3m.post-it-notes": {
- "source": "iana",
- "extensions": ["pwn"]
- },
- "application/vnd.accpac.simply.aso": {
- "source": "iana",
- "extensions": ["aso"]
- },
- "application/vnd.accpac.simply.imp": {
- "source": "iana",
- "extensions": ["imp"]
- },
- "application/vnd.acucobol": {
- "source": "iana",
- "extensions": ["acu"]
- },
- "application/vnd.acucorp": {
- "source": "iana",
- "extensions": ["atc","acutc"]
- },
- "application/vnd.adobe.air-application-installer-package+zip": {
- "source": "apache",
- "extensions": ["air"]
- },
- "application/vnd.adobe.flash.movie": {
- "source": "iana"
- },
- "application/vnd.adobe.formscentral.fcdt": {
- "source": "iana",
- "extensions": ["fcdt"]
- },
- "application/vnd.adobe.fxp": {
- "source": "iana",
- "extensions": ["fxp","fxpl"]
- },
- "application/vnd.adobe.partial-upload": {
- "source": "iana"
- },
- "application/vnd.adobe.xdp+xml": {
- "source": "iana",
- "extensions": ["xdp"]
- },
- "application/vnd.adobe.xfdf": {
- "source": "iana",
- "extensions": ["xfdf"]
- },
- "application/vnd.aether.imp": {
- "source": "iana"
- },
- "application/vnd.ah-barcode": {
- "source": "iana"
- },
- "application/vnd.ahead.space": {
- "source": "iana",
- "extensions": ["ahead"]
- },
- "application/vnd.airzip.filesecure.azf": {
- "source": "iana",
- "extensions": ["azf"]
- },
- "application/vnd.airzip.filesecure.azs": {
- "source": "iana",
- "extensions": ["azs"]
- },
- "application/vnd.amazon.ebook": {
- "source": "apache",
- "extensions": ["azw"]
- },
- "application/vnd.americandynamics.acc": {
- "source": "iana",
- "extensions": ["acc"]
- },
- "application/vnd.amiga.ami": {
- "source": "iana",
- "extensions": ["ami"]
- },
- "application/vnd.amundsen.maze+xml": {
- "source": "iana"
- },
- "application/vnd.android.package-archive": {
- "source": "apache",
- "compressible": false,
- "extensions": ["apk"]
- },
- "application/vnd.anser-web-certificate-issue-initiation": {
- "source": "iana",
- "extensions": ["cii"]
- },
- "application/vnd.anser-web-funds-transfer-initiation": {
- "source": "apache",
- "extensions": ["fti"]
- },
- "application/vnd.antix.game-component": {
- "source": "iana",
- "extensions": ["atx"]
- },
- "application/vnd.apache.thrift.binary": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.compact": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.json": {
- "source": "iana"
- },
- "application/vnd.api+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.apple.installer+xml": {
- "source": "iana",
- "extensions": ["mpkg"]
- },
- "application/vnd.apple.mpegurl": {
- "source": "iana",
- "extensions": ["m3u8"]
- },
- "application/vnd.arastra.swi": {
- "source": "iana"
- },
- "application/vnd.aristanetworks.swi": {
- "source": "iana",
- "extensions": ["swi"]
- },
- "application/vnd.artsquare": {
- "source": "iana"
- },
- "application/vnd.astraea-software.iota": {
- "source": "iana",
- "extensions": ["iota"]
- },
- "application/vnd.audiograph": {
- "source": "iana",
- "extensions": ["aep"]
- },
- "application/vnd.autopackage": {
- "source": "iana"
- },
- "application/vnd.avistar+xml": {
- "source": "iana"
- },
- "application/vnd.balsamiq.bmml+xml": {
- "source": "iana"
- },
- "application/vnd.balsamiq.bmpr": {
- "source": "iana"
- },
- "application/vnd.bekitzur-stech+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.blueice.multipass": {
- "source": "iana",
- "extensions": ["mpm"]
- },
- "application/vnd.bluetooth.ep.oob": {
- "source": "iana"
- },
- "application/vnd.bluetooth.le.oob": {
- "source": "iana"
- },
- "application/vnd.bmi": {
- "source": "iana",
- "extensions": ["bmi"]
- },
- "application/vnd.businessobjects": {
- "source": "iana",
- "extensions": ["rep"]
- },
- "application/vnd.cab-jscript": {
- "source": "iana"
- },
- "application/vnd.canon-cpdl": {
- "source": "iana"
- },
- "application/vnd.canon-lips": {
- "source": "iana"
- },
- "application/vnd.cendio.thinlinc.clientconf": {
- "source": "iana"
- },
- "application/vnd.century-systems.tcp_stream": {
- "source": "iana"
- },
- "application/vnd.chemdraw+xml": {
- "source": "iana",
- "extensions": ["cdxml"]
- },
- "application/vnd.chipnuts.karaoke-mmd": {
- "source": "iana",
- "extensions": ["mmd"]
- },
- "application/vnd.cinderella": {
- "source": "iana",
- "extensions": ["cdy"]
- },
- "application/vnd.cirpack.isdn-ext": {
- "source": "iana"
- },
- "application/vnd.citationstyles.style+xml": {
- "source": "iana"
- },
- "application/vnd.claymore": {
- "source": "iana",
- "extensions": ["cla"]
- },
- "application/vnd.cloanto.rp9": {
- "source": "iana",
- "extensions": ["rp9"]
- },
- "application/vnd.clonk.c4group": {
- "source": "iana",
- "extensions": ["c4g","c4d","c4f","c4p","c4u"]
- },
- "application/vnd.cluetrust.cartomobile-config": {
- "source": "iana",
- "extensions": ["c11amc"]
- },
- "application/vnd.cluetrust.cartomobile-config-pkg": {
- "source": "iana",
- "extensions": ["c11amz"]
- },
- "application/vnd.coffeescript": {
- "source": "iana"
- },
- "application/vnd.collection+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.collection.doc+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.collection.next+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.commerce-battelle": {
- "source": "iana"
- },
- "application/vnd.commonspace": {
- "source": "iana",
- "extensions": ["csp"]
- },
- "application/vnd.contact.cmsg": {
- "source": "iana",
- "extensions": ["cdbcmsg"]
- },
- "application/vnd.cosmocaller": {
- "source": "iana",
- "extensions": ["cmc"]
- },
- "application/vnd.crick.clicker": {
- "source": "iana",
- "extensions": ["clkx"]
- },
- "application/vnd.crick.clicker.keyboard": {
- "source": "iana",
- "extensions": ["clkk"]
- },
- "application/vnd.crick.clicker.palette": {
- "source": "iana",
- "extensions": ["clkp"]
- },
- "application/vnd.crick.clicker.template": {
- "source": "iana",
- "extensions": ["clkt"]
- },
- "application/vnd.crick.clicker.wordbank": {
- "source": "iana",
- "extensions": ["clkw"]
- },
- "application/vnd.criticaltools.wbs+xml": {
- "source": "iana",
- "extensions": ["wbs"]
- },
- "application/vnd.ctc-posml": {
- "source": "iana",
- "extensions": ["pml"]
- },
- "application/vnd.ctct.ws+xml": {
- "source": "iana"
- },
- "application/vnd.cups-pdf": {
- "source": "iana"
- },
- "application/vnd.cups-postscript": {
- "source": "iana"
- },
- "application/vnd.cups-ppd": {
- "source": "iana",
- "extensions": ["ppd"]
- },
- "application/vnd.cups-raster": {
- "source": "iana"
- },
- "application/vnd.cups-raw": {
- "source": "iana"
- },
- "application/vnd.curl": {
- "source": "iana"
- },
- "application/vnd.curl.car": {
- "source": "apache",
- "extensions": ["car"]
- },
- "application/vnd.curl.pcurl": {
- "source": "apache",
- "extensions": ["pcurl"]
- },
- "application/vnd.cyan.dean.root+xml": {
- "source": "iana"
- },
- "application/vnd.cybank": {
- "source": "iana"
- },
- "application/vnd.dart": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dart"]
- },
- "application/vnd.data-vision.rdz": {
- "source": "iana",
- "extensions": ["rdz"]
- },
- "application/vnd.debian.binary-package": {
- "source": "iana"
- },
- "application/vnd.dece.data": {
- "source": "iana",
- "extensions": ["uvf","uvvf","uvd","uvvd"]
- },
- "application/vnd.dece.ttml+xml": {
- "source": "iana",
- "extensions": ["uvt","uvvt"]
- },
- "application/vnd.dece.unspecified": {
- "source": "iana",
- "extensions": ["uvx","uvvx"]
- },
- "application/vnd.dece.zip": {
- "source": "iana",
- "extensions": ["uvz","uvvz"]
- },
- "application/vnd.denovo.fcselayout-link": {
- "source": "iana",
- "extensions": ["fe_launch"]
- },
- "application/vnd.desmume-movie": {
- "source": "iana"
- },
- "application/vnd.dir-bi.plate-dl-nosuffix": {
- "source": "iana"
- },
- "application/vnd.dm.delegation+xml": {
- "source": "iana"
- },
- "application/vnd.dna": {
- "source": "iana",
- "extensions": ["dna"]
- },
- "application/vnd.document+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dolby.mlp": {
- "source": "apache",
- "extensions": ["mlp"]
- },
- "application/vnd.dolby.mobile.1": {
- "source": "iana"
- },
- "application/vnd.dolby.mobile.2": {
- "source": "iana"
- },
- "application/vnd.doremir.scorecloud-binary-document": {
- "source": "iana"
- },
- "application/vnd.dpgraph": {
- "source": "iana",
- "extensions": ["dpg"]
- },
- "application/vnd.dreamfactory": {
- "source": "iana",
- "extensions": ["dfac"]
- },
- "application/vnd.ds-keypoint": {
- "source": "apache",
- "extensions": ["kpxx"]
- },
- "application/vnd.dtg.local": {
- "source": "iana"
- },
- "application/vnd.dtg.local.flash": {
- "source": "iana"
- },
- "application/vnd.dtg.local.html": {
- "source": "iana"
- },
- "application/vnd.dvb.ait": {
- "source": "iana",
- "extensions": ["ait"]
- },
- "application/vnd.dvb.dvbj": {
- "source": "iana"
- },
- "application/vnd.dvb.esgcontainer": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcdftnotifaccess": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgaccess": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgaccess2": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgpdd": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcroaming": {
- "source": "iana"
- },
- "application/vnd.dvb.iptv.alfec-base": {
- "source": "iana"
- },
- "application/vnd.dvb.iptv.alfec-enhancement": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-aggregate-root+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-container+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-generic+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-ia-msglist+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-ia-registration-request+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-ia-registration-response+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-init+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.pfr": {
- "source": "iana"
- },
- "application/vnd.dvb.service": {
- "source": "iana",
- "extensions": ["svc"]
- },
- "application/vnd.dxr": {
- "source": "iana"
- },
- "application/vnd.dynageo": {
- "source": "iana",
- "extensions": ["geo"]
- },
- "application/vnd.dzr": {
- "source": "iana"
- },
- "application/vnd.easykaraoke.cdgdownload": {
- "source": "iana"
- },
- "application/vnd.ecdis-update": {
- "source": "iana"
- },
- "application/vnd.ecowin.chart": {
- "source": "iana",
- "extensions": ["mag"]
- },
- "application/vnd.ecowin.filerequest": {
- "source": "iana"
- },
- "application/vnd.ecowin.fileupdate": {
- "source": "iana"
- },
- "application/vnd.ecowin.series": {
- "source": "iana"
- },
- "application/vnd.ecowin.seriesrequest": {
- "source": "iana"
- },
- "application/vnd.ecowin.seriesupdate": {
- "source": "iana"
- },
- "application/vnd.emclient.accessrequest+xml": {
- "source": "iana"
- },
- "application/vnd.enliven": {
- "source": "iana",
- "extensions": ["nml"]
- },
- "application/vnd.enphase.envoy": {
- "source": "iana"
- },
- "application/vnd.eprints.data+xml": {
- "source": "iana"
- },
- "application/vnd.epson.esf": {
- "source": "iana",
- "extensions": ["esf"]
- },
- "application/vnd.epson.msf": {
- "source": "iana",
- "extensions": ["msf"]
- },
- "application/vnd.epson.quickanime": {
- "source": "iana",
- "extensions": ["qam"]
- },
- "application/vnd.epson.salt": {
- "source": "iana",
- "extensions": ["slt"]
- },
- "application/vnd.epson.ssf": {
- "source": "iana",
- "extensions": ["ssf"]
- },
- "application/vnd.ericsson.quickcall": {
- "source": "iana"
- },
- "application/vnd.eszigno3+xml": {
- "source": "iana",
- "extensions": ["es3","et3"]
- },
- "application/vnd.etsi.aoc+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.asic-e+zip": {
- "source": "iana"
- },
- "application/vnd.etsi.asic-s+zip": {
- "source": "iana"
- },
- "application/vnd.etsi.cug+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvcommand+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvdiscovery+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvprofile+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsad-bc+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsad-cod+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsad-npvr+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvservice+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsync+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvueprofile+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.mcid+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.mheg5": {
- "source": "iana"
- },
- "application/vnd.etsi.overload-control-policy-dataset+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.pstn+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.sci+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.simservs+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.timestamp-token": {
- "source": "iana"
- },
- "application/vnd.etsi.tsl+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.tsl.der": {
- "source": "iana"
- },
- "application/vnd.eudora.data": {
- "source": "iana"
- },
- "application/vnd.ezpix-album": {
- "source": "iana",
- "extensions": ["ez2"]
- },
- "application/vnd.ezpix-package": {
- "source": "iana",
- "extensions": ["ez3"]
- },
- "application/vnd.f-secure.mobile": {
- "source": "iana"
- },
- "application/vnd.fastcopy-disk-image": {
- "source": "iana"
- },
- "application/vnd.fdf": {
- "source": "iana",
- "extensions": ["fdf"]
- },
- "application/vnd.fdsn.mseed": {
- "source": "iana",
- "extensions": ["mseed"]
- },
- "application/vnd.fdsn.seed": {
- "source": "iana",
- "extensions": ["seed","dataless"]
- },
- "application/vnd.ffsns": {
- "source": "iana"
- },
- "application/vnd.fints": {
- "source": "iana"
- },
- "application/vnd.flographit": {
- "source": "iana",
- "extensions": ["gph"]
- },
- "application/vnd.fluxtime.clip": {
- "source": "iana",
- "extensions": ["ftc"]
- },
- "application/vnd.font-fontforge-sfd": {
- "source": "iana"
- },
- "application/vnd.framemaker": {
- "source": "iana",
- "extensions": ["fm","frame","maker","book"]
- },
- "application/vnd.frogans.fnc": {
- "source": "iana",
- "extensions": ["fnc"]
- },
- "application/vnd.frogans.ltf": {
- "source": "iana",
- "extensions": ["ltf"]
- },
- "application/vnd.fsc.weblaunch": {
- "source": "iana",
- "extensions": ["fsc"]
- },
- "application/vnd.fujitsu.oasys": {
- "source": "iana",
- "extensions": ["oas"]
- },
- "application/vnd.fujitsu.oasys2": {
- "source": "iana",
- "extensions": ["oa2"]
- },
- "application/vnd.fujitsu.oasys3": {
- "source": "iana",
- "extensions": ["oa3"]
- },
- "application/vnd.fujitsu.oasysgp": {
- "source": "iana",
- "extensions": ["fg5"]
- },
- "application/vnd.fujitsu.oasysprs": {
- "source": "iana",
- "extensions": ["bh2"]
- },
- "application/vnd.fujixerox.art-ex": {
- "source": "iana"
- },
- "application/vnd.fujixerox.art4": {
- "source": "iana"
- },
- "application/vnd.fujixerox.ddd": {
- "source": "iana",
- "extensions": ["ddd"]
- },
- "application/vnd.fujixerox.docuworks": {
- "source": "iana",
- "extensions": ["xdw"]
- },
- "application/vnd.fujixerox.docuworks.binder": {
- "source": "iana",
- "extensions": ["xbd"]
- },
- "application/vnd.fujixerox.docuworks.container": {
- "source": "iana"
- },
- "application/vnd.fujixerox.hbpl": {
- "source": "iana"
- },
- "application/vnd.fut-misnet": {
- "source": "iana"
- },
- "application/vnd.fuzzysheet": {
- "source": "iana",
- "extensions": ["fzs"]
- },
- "application/vnd.genomatix.tuxedo": {
- "source": "iana",
- "extensions": ["txd"]
- },
- "application/vnd.geo+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.geocube+xml": {
- "source": "iana"
- },
- "application/vnd.geogebra.file": {
- "source": "iana",
- "extensions": ["ggb"]
- },
- "application/vnd.geogebra.tool": {
- "source": "iana",
- "extensions": ["ggt"]
- },
- "application/vnd.geometry-explorer": {
- "source": "iana",
- "extensions": ["gex","gre"]
- },
- "application/vnd.geonext": {
- "source": "iana",
- "extensions": ["gxt"]
- },
- "application/vnd.geoplan": {
- "source": "iana",
- "extensions": ["g2w"]
- },
- "application/vnd.geospace": {
- "source": "iana",
- "extensions": ["g3w"]
- },
- "application/vnd.gerber": {
- "source": "iana"
- },
- "application/vnd.globalplatform.card-content-mgt": {
- "source": "iana"
- },
- "application/vnd.globalplatform.card-content-mgt-response": {
- "source": "iana"
- },
- "application/vnd.gmx": {
- "source": "iana",
- "extensions": ["gmx"]
- },
- "application/vnd.google-earth.kml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["kml"]
- },
- "application/vnd.google-earth.kmz": {
- "source": "iana",
- "compressible": false,
- "extensions": ["kmz"]
- },
- "application/vnd.gov.sk.e-form+xml": {
- "source": "iana"
- },
- "application/vnd.gov.sk.e-form+zip": {
- "source": "iana"
- },
- "application/vnd.gov.sk.xmldatacontainer+xml": {
- "source": "iana"
- },
- "application/vnd.grafeq": {
- "source": "iana",
- "extensions": ["gqf","gqs"]
- },
- "application/vnd.gridmp": {
- "source": "iana"
- },
- "application/vnd.groove-account": {
- "source": "iana",
- "extensions": ["gac"]
- },
- "application/vnd.groove-help": {
- "source": "iana",
- "extensions": ["ghf"]
- },
- "application/vnd.groove-identity-message": {
- "source": "iana",
- "extensions": ["gim"]
- },
- "application/vnd.groove-injector": {
- "source": "iana",
- "extensions": ["grv"]
- },
- "application/vnd.groove-tool-message": {
- "source": "iana",
- "extensions": ["gtm"]
- },
- "application/vnd.groove-tool-template": {
- "source": "iana",
- "extensions": ["tpl"]
- },
- "application/vnd.groove-vcard": {
- "source": "iana",
- "extensions": ["vcg"]
- },
- "application/vnd.hal+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hal+xml": {
- "source": "iana",
- "extensions": ["hal"]
- },
- "application/vnd.handheld-entertainment+xml": {
- "source": "iana",
- "extensions": ["zmm"]
- },
- "application/vnd.hbci": {
- "source": "iana",
- "extensions": ["hbci"]
- },
- "application/vnd.hcl-bireports": {
- "source": "iana"
- },
- "application/vnd.heroku+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hhe.lesson-player": {
- "source": "iana",
- "extensions": ["les"]
- },
- "application/vnd.hp-hpgl": {
- "source": "iana",
- "extensions": ["hpgl"]
- },
- "application/vnd.hp-hpid": {
- "source": "iana",
- "extensions": ["hpid"]
- },
- "application/vnd.hp-hps": {
- "source": "iana",
- "extensions": ["hps"]
- },
- "application/vnd.hp-jlyt": {
- "source": "iana",
- "extensions": ["jlt"]
- },
- "application/vnd.hp-pcl": {
- "source": "iana",
- "extensions": ["pcl"]
- },
- "application/vnd.hp-pclxl": {
- "source": "iana",
- "extensions": ["pclxl"]
- },
- "application/vnd.httphone": {
- "source": "iana"
- },
- "application/vnd.hydrostatix.sof-data": {
- "source": "iana",
- "extensions": ["sfd-hdstx"]
- },
- "application/vnd.hyperdrive+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hzn-3d-crossword": {
- "source": "iana"
- },
- "application/vnd.ibm.afplinedata": {
- "source": "iana"
- },
- "application/vnd.ibm.electronic-media": {
- "source": "iana"
- },
- "application/vnd.ibm.minipay": {
- "source": "iana",
- "extensions": ["mpy"]
- },
- "application/vnd.ibm.modcap": {
- "source": "iana",
- "extensions": ["afp","listafp","list3820"]
- },
- "application/vnd.ibm.rights-management": {
- "source": "iana",
- "extensions": ["irm"]
- },
- "application/vnd.ibm.secure-container": {
- "source": "iana",
- "extensions": ["sc"]
- },
- "application/vnd.iccprofile": {
- "source": "iana",
- "extensions": ["icc","icm"]
- },
- "application/vnd.ieee.1905": {
- "source": "iana"
- },
- "application/vnd.igloader": {
- "source": "iana",
- "extensions": ["igl"]
- },
- "application/vnd.immervision-ivp": {
- "source": "iana",
- "extensions": ["ivp"]
- },
- "application/vnd.immervision-ivu": {
- "source": "iana",
- "extensions": ["ivu"]
- },
- "application/vnd.ims.imsccv1p1": {
- "source": "iana"
- },
- "application/vnd.ims.imsccv1p2": {
- "source": "iana"
- },
- "application/vnd.ims.imsccv1p3": {
- "source": "iana"
- },
- "application/vnd.ims.lis.v2.result+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolproxy+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolproxy.id+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolsettings+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolsettings.simple+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.informedcontrol.rms+xml": {
- "source": "iana"
- },
- "application/vnd.informix-visionary": {
- "source": "iana"
- },
- "application/vnd.infotech.project": {
- "source": "iana"
- },
- "application/vnd.infotech.project+xml": {
- "source": "iana"
- },
- "application/vnd.innopath.wamp.notification": {
- "source": "iana"
- },
- "application/vnd.insors.igm": {
- "source": "iana",
- "extensions": ["igm"]
- },
- "application/vnd.intercon.formnet": {
- "source": "iana",
- "extensions": ["xpw","xpx"]
- },
- "application/vnd.intergeo": {
- "source": "iana",
- "extensions": ["i2g"]
- },
- "application/vnd.intertrust.digibox": {
- "source": "iana"
- },
- "application/vnd.intertrust.nncp": {
- "source": "iana"
- },
- "application/vnd.intu.qbo": {
- "source": "iana",
- "extensions": ["qbo"]
- },
- "application/vnd.intu.qfx": {
- "source": "iana",
- "extensions": ["qfx"]
- },
- "application/vnd.iptc.g2.catalogitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.conceptitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.knowledgeitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.newsitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.newsmessage+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.packageitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.planningitem+xml": {
- "source": "iana"
- },
- "application/vnd.ipunplugged.rcprofile": {
- "source": "iana",
- "extensions": ["rcprofile"]
- },
- "application/vnd.irepository.package+xml": {
- "source": "iana",
- "extensions": ["irp"]
- },
- "application/vnd.is-xpr": {
- "source": "iana",
- "extensions": ["xpr"]
- },
- "application/vnd.isac.fcs": {
- "source": "iana",
- "extensions": ["fcs"]
- },
- "application/vnd.jam": {
- "source": "iana",
- "extensions": ["jam"]
- },
- "application/vnd.japannet-directory-service": {
- "source": "iana"
- },
- "application/vnd.japannet-jpnstore-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-payment-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-registration": {
- "source": "iana"
- },
- "application/vnd.japannet-registration-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-setstore-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-verification": {
- "source": "iana"
- },
- "application/vnd.japannet-verification-wakeup": {
- "source": "iana"
- },
- "application/vnd.jcp.javame.midlet-rms": {
- "source": "iana",
- "extensions": ["rms"]
- },
- "application/vnd.jisp": {
- "source": "iana",
- "extensions": ["jisp"]
- },
- "application/vnd.joost.joda-archive": {
- "source": "iana",
- "extensions": ["joda"]
- },
- "application/vnd.jsk.isdn-ngn": {
- "source": "iana"
- },
- "application/vnd.kahootz": {
- "source": "iana",
- "extensions": ["ktz","ktr"]
- },
- "application/vnd.kde.karbon": {
- "source": "iana",
- "extensions": ["karbon"]
- },
- "application/vnd.kde.kchart": {
- "source": "iana",
- "extensions": ["chrt"]
- },
- "application/vnd.kde.kformula": {
- "source": "iana",
- "extensions": ["kfo"]
- },
- "application/vnd.kde.kivio": {
- "source": "iana",
- "extensions": ["flw"]
- },
- "application/vnd.kde.kontour": {
- "source": "iana",
- "extensions": ["kon"]
- },
- "application/vnd.kde.kpresenter": {
- "source": "iana",
- "extensions": ["kpr","kpt"]
- },
- "application/vnd.kde.kspread": {
- "source": "iana",
- "extensions": ["ksp"]
- },
- "application/vnd.kde.kword": {
- "source": "iana",
- "extensions": ["kwd","kwt"]
- },
- "application/vnd.kenameaapp": {
- "source": "iana",
- "extensions": ["htke"]
- },
- "application/vnd.kidspiration": {
- "source": "iana",
- "extensions": ["kia"]
- },
- "application/vnd.kinar": {
- "source": "iana",
- "extensions": ["kne","knp"]
- },
- "application/vnd.koan": {
- "source": "iana",
- "extensions": ["skp","skd","skt","skm"]
- },
- "application/vnd.kodak-descriptor": {
- "source": "iana",
- "extensions": ["sse"]
- },
- "application/vnd.las.las+xml": {
- "source": "iana",
- "extensions": ["lasxml"]
- },
- "application/vnd.liberty-request+xml": {
- "source": "iana"
- },
- "application/vnd.llamagraphics.life-balance.desktop": {
- "source": "iana",
- "extensions": ["lbd"]
- },
- "application/vnd.llamagraphics.life-balance.exchange+xml": {
- "source": "iana",
- "extensions": ["lbe"]
- },
- "application/vnd.lotus-1-2-3": {
- "source": "iana",
- "extensions": ["123"]
- },
- "application/vnd.lotus-approach": {
- "source": "iana",
- "extensions": ["apr"]
- },
- "application/vnd.lotus-freelance": {
- "source": "iana",
- "extensions": ["pre"]
- },
- "application/vnd.lotus-notes": {
- "source": "iana",
- "extensions": ["nsf"]
- },
- "application/vnd.lotus-organizer": {
- "source": "iana",
- "extensions": ["org"]
- },
- "application/vnd.lotus-screencam": {
- "source": "iana",
- "extensions": ["scm"]
- },
- "application/vnd.lotus-wordpro": {
- "source": "iana",
- "extensions": ["lwp"]
- },
- "application/vnd.macports.portpkg": {
- "source": "iana",
- "extensions": ["portpkg"]
- },
- "application/vnd.marlin.drm.actiontoken+xml": {
- "source": "iana"
- },
- "application/vnd.marlin.drm.conftoken+xml": {
- "source": "iana"
- },
- "application/vnd.marlin.drm.license+xml": {
- "source": "iana"
- },
- "application/vnd.marlin.drm.mdcf": {
- "source": "iana"
- },
- "application/vnd.mason+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.maxmind.maxmind-db": {
- "source": "iana"
- },
- "application/vnd.mcd": {
- "source": "iana",
- "extensions": ["mcd"]
- },
- "application/vnd.medcalcdata": {
- "source": "iana",
- "extensions": ["mc1"]
- },
- "application/vnd.mediastation.cdkey": {
- "source": "iana",
- "extensions": ["cdkey"]
- },
- "application/vnd.meridian-slingshot": {
- "source": "iana"
- },
- "application/vnd.mfer": {
- "source": "iana",
- "extensions": ["mwf"]
- },
- "application/vnd.mfmp": {
- "source": "iana",
- "extensions": ["mfm"]
- },
- "application/vnd.micro+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.micrografx.flo": {
- "source": "iana",
- "extensions": ["flo"]
- },
- "application/vnd.micrografx.igx": {
- "source": "iana",
- "extensions": ["igx"]
- },
- "application/vnd.microsoft.portable-executable": {
- "source": "iana"
- },
- "application/vnd.miele+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.mif": {
- "source": "iana",
- "extensions": ["mif"]
- },
- "application/vnd.minisoft-hp3000-save": {
- "source": "iana"
- },
- "application/vnd.mitsubishi.misty-guard.trustweb": {
- "source": "iana"
- },
- "application/vnd.mobius.daf": {
- "source": "iana",
- "extensions": ["daf"]
- },
- "application/vnd.mobius.dis": {
- "source": "iana",
- "extensions": ["dis"]
- },
- "application/vnd.mobius.mbk": {
- "source": "iana",
- "extensions": ["mbk"]
- },
- "application/vnd.mobius.mqy": {
- "source": "iana",
- "extensions": ["mqy"]
- },
- "application/vnd.mobius.msl": {
- "source": "iana",
- "extensions": ["msl"]
- },
- "application/vnd.mobius.plc": {
- "source": "iana",
- "extensions": ["plc"]
- },
- "application/vnd.mobius.txf": {
- "source": "iana",
- "extensions": ["txf"]
- },
- "application/vnd.mophun.application": {
- "source": "iana",
- "extensions": ["mpn"]
- },
- "application/vnd.mophun.certificate": {
- "source": "iana",
- "extensions": ["mpc"]
- },
- "application/vnd.motorola.flexsuite": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.adsi": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.fis": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.gotap": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.kmr": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.ttc": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.wem": {
- "source": "iana"
- },
- "application/vnd.motorola.iprm": {
- "source": "iana"
- },
- "application/vnd.mozilla.xul+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xul"]
- },
- "application/vnd.ms-3mfdocument": {
- "source": "iana"
- },
- "application/vnd.ms-artgalry": {
- "source": "iana",
- "extensions": ["cil"]
- },
- "application/vnd.ms-asf": {
- "source": "iana"
- },
- "application/vnd.ms-cab-compressed": {
- "source": "iana",
- "extensions": ["cab"]
- },
- "application/vnd.ms-color.iccprofile": {
- "source": "apache"
- },
- "application/vnd.ms-excel": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xls","xlm","xla","xlc","xlt","xlw"]
- },
- "application/vnd.ms-excel.addin.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlam"]
- },
- "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlsb"]
- },
- "application/vnd.ms-excel.sheet.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlsm"]
- },
- "application/vnd.ms-excel.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["xltm"]
- },
- "application/vnd.ms-fontobject": {
- "source": "iana",
- "compressible": true,
- "extensions": ["eot"]
- },
- "application/vnd.ms-htmlhelp": {
- "source": "iana",
- "extensions": ["chm"]
- },
- "application/vnd.ms-ims": {
- "source": "iana",
- "extensions": ["ims"]
- },
- "application/vnd.ms-lrm": {
- "source": "iana",
- "extensions": ["lrm"]
- },
- "application/vnd.ms-office.activex+xml": {
- "source": "iana"
- },
- "application/vnd.ms-officetheme": {
- "source": "iana",
- "extensions": ["thmx"]
- },
- "application/vnd.ms-opentype": {
- "source": "apache",
- "compressible": true
- },
- "application/vnd.ms-package.obfuscated-opentype": {
- "source": "apache"
- },
- "application/vnd.ms-pki.seccat": {
- "source": "apache",
- "extensions": ["cat"]
- },
- "application/vnd.ms-pki.stl": {
- "source": "apache",
- "extensions": ["stl"]
- },
- "application/vnd.ms-playready.initiator+xml": {
- "source": "iana"
- },
- "application/vnd.ms-powerpoint": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ppt","pps","pot"]
- },
- "application/vnd.ms-powerpoint.addin.macroenabled.12": {
- "source": "iana",
- "extensions": ["ppam"]
- },
- "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
- "source": "iana",
- "extensions": ["pptm"]
- },
- "application/vnd.ms-powerpoint.slide.macroenabled.12": {
- "source": "iana",
- "extensions": ["sldm"]
- },
- "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
- "source": "iana",
- "extensions": ["ppsm"]
- },
- "application/vnd.ms-powerpoint.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["potm"]
- },
- "application/vnd.ms-printing.printticket+xml": {
- "source": "apache"
- },
- "application/vnd.ms-project": {
- "source": "iana",
- "extensions": ["mpp","mpt"]
- },
- "application/vnd.ms-tnef": {
- "source": "iana"
- },
- "application/vnd.ms-windows.printerpairing": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.lic-chlg-req": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.lic-resp": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.meter-chlg-req": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.meter-resp": {
- "source": "iana"
- },
- "application/vnd.ms-word.document.macroenabled.12": {
- "source": "iana",
- "extensions": ["docm"]
- },
- "application/vnd.ms-word.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["dotm"]
- },
- "application/vnd.ms-works": {
- "source": "iana",
- "extensions": ["wps","wks","wcm","wdb"]
- },
- "application/vnd.ms-wpl": {
- "source": "iana",
- "extensions": ["wpl"]
- },
- "application/vnd.ms-xpsdocument": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xps"]
- },
- "application/vnd.msa-disk-image": {
- "source": "iana"
- },
- "application/vnd.mseq": {
- "source": "iana",
- "extensions": ["mseq"]
- },
- "application/vnd.msign": {
- "source": "iana"
- },
- "application/vnd.multiad.creator": {
- "source": "iana"
- },
- "application/vnd.multiad.creator.cif": {
- "source": "iana"
- },
- "application/vnd.music-niff": {
- "source": "iana"
- },
- "application/vnd.musician": {
- "source": "iana",
- "extensions": ["mus"]
- },
- "application/vnd.muvee.style": {
- "source": "iana",
- "extensions": ["msty"]
- },
- "application/vnd.mynfc": {
- "source": "iana",
- "extensions": ["taglet"]
- },
- "application/vnd.ncd.control": {
- "source": "iana"
- },
- "application/vnd.ncd.reference": {
- "source": "iana"
- },
- "application/vnd.nervana": {
- "source": "iana"
- },
- "application/vnd.netfpx": {
- "source": "iana"
- },
- "application/vnd.neurolanguage.nlu": {
- "source": "iana",
- "extensions": ["nlu"]
- },
- "application/vnd.nintendo.nitro.rom": {
- "source": "iana"
- },
- "application/vnd.nintendo.snes.rom": {
- "source": "iana"
- },
- "application/vnd.nitf": {
- "source": "iana",
- "extensions": ["ntf","nitf"]
- },
- "application/vnd.noblenet-directory": {
- "source": "iana",
- "extensions": ["nnd"]
- },
- "application/vnd.noblenet-sealer": {
- "source": "iana",
- "extensions": ["nns"]
- },
- "application/vnd.noblenet-web": {
- "source": "iana",
- "extensions": ["nnw"]
- },
- "application/vnd.nokia.catalogs": {
- "source": "iana"
- },
- "application/vnd.nokia.conml+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.conml+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.iptv.config+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.isds-radio-presets": {
- "source": "iana"
- },
- "application/vnd.nokia.landmark+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.landmark+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.landmarkcollection+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.n-gage.ac+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.n-gage.data": {
- "source": "iana",
- "extensions": ["ngdat"]
- },
- "application/vnd.nokia.n-gage.symbian.install": {
- "source": "iana",
- "extensions": ["n-gage"]
- },
- "application/vnd.nokia.ncd": {
- "source": "iana"
- },
- "application/vnd.nokia.pcd+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.pcd+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.radio-preset": {
- "source": "iana",
- "extensions": ["rpst"]
- },
- "application/vnd.nokia.radio-presets": {
- "source": "iana",
- "extensions": ["rpss"]
- },
- "application/vnd.novadigm.edm": {
- "source": "iana",
- "extensions": ["edm"]
- },
- "application/vnd.novadigm.edx": {
- "source": "iana",
- "extensions": ["edx"]
- },
- "application/vnd.novadigm.ext": {
- "source": "iana",
- "extensions": ["ext"]
- },
- "application/vnd.ntt-local.content-share": {
- "source": "iana"
- },
- "application/vnd.ntt-local.file-transfer": {
- "source": "iana"
- },
- "application/vnd.ntt-local.ogw_remote-access": {
- "source": "iana"
- },
- "application/vnd.ntt-local.sip-ta_remote": {
- "source": "iana"
- },
- "application/vnd.ntt-local.sip-ta_tcp_stream": {
- "source": "iana"
- },
- "application/vnd.oasis.opendocument.chart": {
- "source": "iana",
- "extensions": ["odc"]
- },
- "application/vnd.oasis.opendocument.chart-template": {
- "source": "iana",
- "extensions": ["otc"]
- },
- "application/vnd.oasis.opendocument.database": {
- "source": "iana",
- "extensions": ["odb"]
- },
- "application/vnd.oasis.opendocument.formula": {
- "source": "iana",
- "extensions": ["odf"]
- },
- "application/vnd.oasis.opendocument.formula-template": {
- "source": "iana",
- "extensions": ["odft"]
- },
- "application/vnd.oasis.opendocument.graphics": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odg"]
- },
- "application/vnd.oasis.opendocument.graphics-template": {
- "source": "iana",
- "extensions": ["otg"]
- },
- "application/vnd.oasis.opendocument.image": {
- "source": "iana",
- "extensions": ["odi"]
- },
- "application/vnd.oasis.opendocument.image-template": {
- "source": "iana",
- "extensions": ["oti"]
- },
- "application/vnd.oasis.opendocument.presentation": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odp"]
- },
- "application/vnd.oasis.opendocument.presentation-template": {
- "source": "iana",
- "extensions": ["otp"]
- },
- "application/vnd.oasis.opendocument.spreadsheet": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ods"]
- },
- "application/vnd.oasis.opendocument.spreadsheet-template": {
- "source": "iana",
- "extensions": ["ots"]
- },
- "application/vnd.oasis.opendocument.text": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odt"]
- },
- "application/vnd.oasis.opendocument.text-master": {
- "source": "iana",
- "extensions": ["odm"]
- },
- "application/vnd.oasis.opendocument.text-template": {
- "source": "iana",
- "extensions": ["ott"]
- },
- "application/vnd.oasis.opendocument.text-web": {
- "source": "iana",
- "extensions": ["oth"]
- },
- "application/vnd.obn": {
- "source": "iana"
- },
- "application/vnd.oftn.l10n+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.contentaccessdownload+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.contentaccessstreaming+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.cspg-hexbinary": {
- "source": "iana"
- },
- "application/vnd.oipf.dae.svg+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.dae.xhtml+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.mippvcontrolmessage+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.pae.gem": {
- "source": "iana"
- },
- "application/vnd.oipf.spdiscovery+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.spdlist+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.ueprofile+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.userprofile+xml": {
- "source": "iana"
- },
- "application/vnd.olpc-sugar": {
- "source": "iana",
- "extensions": ["xo"]
- },
- "application/vnd.oma-scws-config": {
- "source": "iana"
- },
- "application/vnd.oma-scws-http-request": {
- "source": "iana"
- },
- "application/vnd.oma-scws-http-response": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.drm-trigger+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.imd+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.ltkm": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.notification+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.provisioningtrigger": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgboot": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgdd+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgdu": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.simple-symbol-container": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.smartcard-trigger+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sprov+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.stkm": {
- "source": "iana"
- },
- "application/vnd.oma.cab-address-book+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-feature-handler+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-pcc+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-subs-invite+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-user-prefs+xml": {
- "source": "iana"
- },
- "application/vnd.oma.dcd": {
- "source": "iana"
- },
- "application/vnd.oma.dcdc": {
- "source": "iana"
- },
- "application/vnd.oma.dd2+xml": {
- "source": "iana",
- "extensions": ["dd2"]
- },
- "application/vnd.oma.drm.risd+xml": {
- "source": "iana"
- },
- "application/vnd.oma.group-usage-list+xml": {
- "source": "iana"
- },
- "application/vnd.oma.pal+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.detailed-progress-report+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.final-report+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.groups+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.invocation-descriptor+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.optimized-progress-report+xml": {
- "source": "iana"
- },
- "application/vnd.oma.push": {
- "source": "iana"
- },
- "application/vnd.oma.scidm.messages+xml": {
- "source": "iana"
- },
- "application/vnd.oma.xcap-directory+xml": {
- "source": "iana"
- },
- "application/vnd.omads-email+xml": {
- "source": "iana"
- },
- "application/vnd.omads-file+xml": {
- "source": "iana"
- },
- "application/vnd.omads-folder+xml": {
- "source": "iana"
- },
- "application/vnd.omaloc-supl-init": {
- "source": "iana"
- },
- "application/vnd.openeye.oeb": {
- "source": "iana"
- },
- "application/vnd.openofficeorg.extension": {
- "source": "apache",
- "extensions": ["oxt"]
- },
- "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawing+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml-template": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pptx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slide": {
- "source": "iana",
- "extensions": ["sldx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
- "source": "iana",
- "extensions": ["ppsx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.template": {
- "source": "apache",
- "extensions": ["potx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml-template": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xlsx"]
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
- "source": "apache",
- "extensions": ["xltx"]
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.theme+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.vmldrawing": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml-template": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
- "source": "iana",
- "compressible": false,
- "extensions": ["docx"]
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
- "source": "apache",
- "extensions": ["dotx"]
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-package.core-properties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-package.relationships+xml": {
- "source": "iana"
- },
- "application/vnd.oracle.resource+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.orange.indata": {
- "source": "iana"
- },
- "application/vnd.osa.netdeploy": {
- "source": "iana"
- },
- "application/vnd.osgeo.mapguide.package": {
- "source": "iana",
- "extensions": ["mgp"]
- },
- "application/vnd.osgi.bundle": {
- "source": "iana"
- },
- "application/vnd.osgi.dp": {
- "source": "iana",
- "extensions": ["dp"]
- },
- "application/vnd.osgi.subsystem": {
- "source": "iana",
- "extensions": ["esa"]
- },
- "application/vnd.otps.ct-kip+xml": {
- "source": "iana"
- },
- "application/vnd.palm": {
- "source": "iana",
- "extensions": ["pdb","pqa","oprc"]
- },
- "application/vnd.panoply": {
- "source": "iana"
- },
- "application/vnd.paos+xml": {
- "source": "iana"
- },
- "application/vnd.paos.xml": {
- "source": "apache"
- },
- "application/vnd.pawaafile": {
- "source": "iana",
- "extensions": ["paw"]
- },
- "application/vnd.pcos": {
- "source": "iana"
- },
- "application/vnd.pg.format": {
- "source": "iana",
- "extensions": ["str"]
- },
- "application/vnd.pg.osasli": {
- "source": "iana",
- "extensions": ["ei6"]
- },
- "application/vnd.piaccess.application-licence": {
- "source": "iana"
- },
- "application/vnd.picsel": {
- "source": "iana",
- "extensions": ["efif"]
- },
- "application/vnd.pmi.widget": {
- "source": "iana",
- "extensions": ["wg"]
- },
- "application/vnd.poc.group-advertisement+xml": {
- "source": "iana"
- },
- "application/vnd.pocketlearn": {
- "source": "iana",
- "extensions": ["plf"]
- },
- "application/vnd.powerbuilder6": {
- "source": "iana",
- "extensions": ["pbd"]
- },
- "application/vnd.powerbuilder6-s": {
- "source": "iana"
- },
- "application/vnd.powerbuilder7": {
- "source": "iana"
- },
- "application/vnd.powerbuilder7-s": {
- "source": "iana"
- },
- "application/vnd.powerbuilder75": {
- "source": "iana"
- },
- "application/vnd.powerbuilder75-s": {
- "source": "iana"
- },
- "application/vnd.preminet": {
- "source": "iana"
- },
- "application/vnd.previewsystems.box": {
- "source": "iana",
- "extensions": ["box"]
- },
- "application/vnd.proteus.magazine": {
- "source": "iana",
- "extensions": ["mgz"]
- },
- "application/vnd.publishare-delta-tree": {
- "source": "iana",
- "extensions": ["qps"]
- },
- "application/vnd.pvi.ptid1": {
- "source": "iana",
- "extensions": ["ptid"]
- },
- "application/vnd.pwg-multiplexed": {
- "source": "iana"
- },
- "application/vnd.pwg-xhtml-print+xml": {
- "source": "iana"
- },
- "application/vnd.qualcomm.brew-app-res": {
- "source": "iana"
- },
- "application/vnd.quark.quarkxpress": {
- "source": "iana",
- "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"]
- },
- "application/vnd.quobject-quoxdocument": {
- "source": "iana"
- },
- "application/vnd.radisys.moml+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-conf+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-conn+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-dialog+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-stream+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-conf+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-base+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-fax-detect+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-group+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-speech+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-transform+xml": {
- "source": "iana"
- },
- "application/vnd.rainstor.data": {
- "source": "iana"
- },
- "application/vnd.rapid": {
- "source": "iana"
- },
- "application/vnd.realvnc.bed": {
- "source": "iana",
- "extensions": ["bed"]
- },
- "application/vnd.recordare.musicxml": {
- "source": "iana",
- "extensions": ["mxl"]
- },
- "application/vnd.recordare.musicxml+xml": {
- "source": "iana",
- "extensions": ["musicxml"]
- },
- "application/vnd.renlearn.rlprint": {
- "source": "iana"
- },
- "application/vnd.rig.cryptonote": {
- "source": "iana",
- "extensions": ["cryptonote"]
- },
- "application/vnd.rim.cod": {
- "source": "apache",
- "extensions": ["cod"]
- },
- "application/vnd.rn-realmedia": {
- "source": "apache",
- "extensions": ["rm"]
- },
- "application/vnd.rn-realmedia-vbr": {
- "source": "apache",
- "extensions": ["rmvb"]
- },
- "application/vnd.route66.link66+xml": {
- "source": "iana",
- "extensions": ["link66"]
- },
- "application/vnd.rs-274x": {
- "source": "iana"
- },
- "application/vnd.ruckus.download": {
- "source": "iana"
- },
- "application/vnd.s3sms": {
- "source": "iana"
- },
- "application/vnd.sailingtracker.track": {
- "source": "iana",
- "extensions": ["st"]
- },
- "application/vnd.sbm.cid": {
- "source": "iana"
- },
- "application/vnd.sbm.mid2": {
- "source": "iana"
- },
- "application/vnd.scribus": {
- "source": "iana"
- },
- "application/vnd.sealed.3df": {
- "source": "iana"
- },
- "application/vnd.sealed.csf": {
- "source": "iana"
- },
- "application/vnd.sealed.doc": {
- "source": "iana"
- },
- "application/vnd.sealed.eml": {
- "source": "iana"
- },
- "application/vnd.sealed.mht": {
- "source": "iana"
- },
- "application/vnd.sealed.net": {
- "source": "iana"
- },
- "application/vnd.sealed.ppt": {
- "source": "iana"
- },
- "application/vnd.sealed.tiff": {
- "source": "iana"
- },
- "application/vnd.sealed.xls": {
- "source": "iana"
- },
- "application/vnd.sealedmedia.softseal.html": {
- "source": "iana"
- },
- "application/vnd.sealedmedia.softseal.pdf": {
- "source": "iana"
- },
- "application/vnd.seemail": {
- "source": "iana",
- "extensions": ["see"]
- },
- "application/vnd.sema": {
- "source": "iana",
- "extensions": ["sema"]
- },
- "application/vnd.semd": {
- "source": "iana",
- "extensions": ["semd"]
- },
- "application/vnd.semf": {
- "source": "iana",
- "extensions": ["semf"]
- },
- "application/vnd.shana.informed.formdata": {
- "source": "iana",
- "extensions": ["ifm"]
- },
- "application/vnd.shana.informed.formtemplate": {
- "source": "iana",
- "extensions": ["itp"]
- },
- "application/vnd.shana.informed.interchange": {
- "source": "iana",
- "extensions": ["iif"]
- },
- "application/vnd.shana.informed.package": {
- "source": "iana",
- "extensions": ["ipk"]
- },
- "application/vnd.simtech-mindmapper": {
- "source": "iana",
- "extensions": ["twd","twds"]
- },
- "application/vnd.siren+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.smaf": {
- "source": "iana",
- "extensions": ["mmf"]
- },
- "application/vnd.smart.notebook": {
- "source": "iana"
- },
- "application/vnd.smart.teacher": {
- "source": "iana",
- "extensions": ["teacher"]
- },
- "application/vnd.software602.filler.form+xml": {
- "source": "iana"
- },
- "application/vnd.software602.filler.form-xml-zip": {
- "source": "iana"
- },
- "application/vnd.solent.sdkm+xml": {
- "source": "iana",
- "extensions": ["sdkm","sdkd"]
- },
- "application/vnd.spotfire.dxp": {
- "source": "iana",
- "extensions": ["dxp"]
- },
- "application/vnd.spotfire.sfs": {
- "source": "iana",
- "extensions": ["sfs"]
- },
- "application/vnd.sss-cod": {
- "source": "iana"
- },
- "application/vnd.sss-dtf": {
- "source": "iana"
- },
- "application/vnd.sss-ntf": {
- "source": "iana"
- },
- "application/vnd.stardivision.calc": {
- "source": "apache",
- "extensions": ["sdc"]
- },
- "application/vnd.stardivision.draw": {
- "source": "apache",
- "extensions": ["sda"]
- },
- "application/vnd.stardivision.impress": {
- "source": "apache",
- "extensions": ["sdd"]
- },
- "application/vnd.stardivision.math": {
- "source": "apache",
- "extensions": ["smf"]
- },
- "application/vnd.stardivision.writer": {
- "source": "apache",
- "extensions": ["sdw","vor"]
- },
- "application/vnd.stardivision.writer-global": {
- "source": "apache",
- "extensions": ["sgl"]
- },
- "application/vnd.stepmania.package": {
- "source": "iana",
- "extensions": ["smzip"]
- },
- "application/vnd.stepmania.stepchart": {
- "source": "iana",
- "extensions": ["sm"]
- },
- "application/vnd.street-stream": {
- "source": "iana"
- },
- "application/vnd.sun.wadl+xml": {
- "source": "iana"
- },
- "application/vnd.sun.xml.calc": {
- "source": "apache",
- "extensions": ["sxc"]
- },
- "application/vnd.sun.xml.calc.template": {
- "source": "apache",
- "extensions": ["stc"]
- },
- "application/vnd.sun.xml.draw": {
- "source": "apache",
- "extensions": ["sxd"]
- },
- "application/vnd.sun.xml.draw.template": {
- "source": "apache",
- "extensions": ["std"]
- },
- "application/vnd.sun.xml.impress": {
- "source": "apache",
- "extensions": ["sxi"]
- },
- "application/vnd.sun.xml.impress.template": {
- "source": "apache",
- "extensions": ["sti"]
- },
- "application/vnd.sun.xml.math": {
- "source": "apache",
- "extensions": ["sxm"]
- },
- "application/vnd.sun.xml.writer": {
- "source": "apache",
- "extensions": ["sxw"]
- },
- "application/vnd.sun.xml.writer.global": {
- "source": "apache",
- "extensions": ["sxg"]
- },
- "application/vnd.sun.xml.writer.template": {
- "source": "apache",
- "extensions": ["stw"]
- },
- "application/vnd.sus-calendar": {
- "source": "iana",
- "extensions": ["sus","susp"]
- },
- "application/vnd.svd": {
- "source": "iana",
- "extensions": ["svd"]
- },
- "application/vnd.swiftview-ics": {
- "source": "iana"
- },
- "application/vnd.symbian.install": {
- "source": "apache",
- "extensions": ["sis","sisx"]
- },
- "application/vnd.syncml+xml": {
- "source": "iana",
- "extensions": ["xsm"]
- },
- "application/vnd.syncml.dm+wbxml": {
- "source": "iana",
- "extensions": ["bdm"]
- },
- "application/vnd.syncml.dm+xml": {
- "source": "iana",
- "extensions": ["xdm"]
- },
- "application/vnd.syncml.dm.notification": {
- "source": "iana"
- },
- "application/vnd.syncml.dmddf+wbxml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmddf+xml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmtnds+wbxml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmtnds+xml": {
- "source": "iana"
- },
- "application/vnd.syncml.ds.notification": {
- "source": "iana"
- },
- "application/vnd.tao.intent-module-archive": {
- "source": "iana",
- "extensions": ["tao"]
- },
- "application/vnd.tcpdump.pcap": {
- "source": "iana",
- "extensions": ["pcap","cap","dmp"]
- },
- "application/vnd.tmd.mediaflex.api+xml": {
- "source": "iana"
- },
- "application/vnd.tmobile-livetv": {
- "source": "iana",
- "extensions": ["tmo"]
- },
- "application/vnd.trid.tpt": {
- "source": "iana",
- "extensions": ["tpt"]
- },
- "application/vnd.triscape.mxs": {
- "source": "iana",
- "extensions": ["mxs"]
- },
- "application/vnd.trueapp": {
- "source": "iana",
- "extensions": ["tra"]
- },
- "application/vnd.truedoc": {
- "source": "iana"
- },
- "application/vnd.ubisoft.webplayer": {
- "source": "iana"
- },
- "application/vnd.ufdl": {
- "source": "iana",
- "extensions": ["ufd","ufdl"]
- },
- "application/vnd.uiq.theme": {
- "source": "iana",
- "extensions": ["utz"]
- },
- "application/vnd.umajin": {
- "source": "iana",
- "extensions": ["umj"]
- },
- "application/vnd.unity": {
- "source": "iana",
- "extensions": ["unityweb"]
- },
- "application/vnd.uoml+xml": {
- "source": "iana",
- "extensions": ["uoml"]
- },
- "application/vnd.uplanet.alert": {
- "source": "iana"
- },
- "application/vnd.uplanet.alert-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.bearer-choice": {
- "source": "iana"
- },
- "application/vnd.uplanet.bearer-choice-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.cacheop": {
- "source": "iana"
- },
- "application/vnd.uplanet.cacheop-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.channel": {
- "source": "iana"
- },
- "application/vnd.uplanet.channel-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.list": {
- "source": "iana"
- },
- "application/vnd.uplanet.list-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.listcmd": {
- "source": "iana"
- },
- "application/vnd.uplanet.listcmd-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.signal": {
- "source": "iana"
- },
- "application/vnd.valve.source.material": {
- "source": "iana"
- },
- "application/vnd.vcx": {
- "source": "iana",
- "extensions": ["vcx"]
- },
- "application/vnd.vd-study": {
- "source": "iana"
- },
- "application/vnd.vectorworks": {
- "source": "iana"
- },
- "application/vnd.verimatrix.vcas": {
- "source": "iana"
- },
- "application/vnd.vidsoft.vidconference": {
- "source": "iana"
- },
- "application/vnd.visio": {
- "source": "iana",
- "extensions": ["vsd","vst","vss","vsw"]
- },
- "application/vnd.visionary": {
- "source": "iana",
- "extensions": ["vis"]
- },
- "application/vnd.vividence.scriptfile": {
- "source": "iana"
- },
- "application/vnd.vsf": {
- "source": "iana",
- "extensions": ["vsf"]
- },
- "application/vnd.wap.sic": {
- "source": "iana"
- },
- "application/vnd.wap.slc": {
- "source": "iana"
- },
- "application/vnd.wap.wbxml": {
- "source": "iana",
- "extensions": ["wbxml"]
- },
- "application/vnd.wap.wmlc": {
- "source": "iana",
- "extensions": ["wmlc"]
- },
- "application/vnd.wap.wmlscriptc": {
- "source": "iana",
- "extensions": ["wmlsc"]
- },
- "application/vnd.webturbo": {
- "source": "iana",
- "extensions": ["wtb"]
- },
- "application/vnd.wfa.p2p": {
- "source": "iana"
- },
- "application/vnd.wfa.wsc": {
- "source": "iana"
- },
- "application/vnd.windows.devicepairing": {
- "source": "iana"
- },
- "application/vnd.wmc": {
- "source": "iana"
- },
- "application/vnd.wmf.bootstrap": {
- "source": "iana"
- },
- "application/vnd.wolfram.mathematica": {
- "source": "iana"
- },
- "application/vnd.wolfram.mathematica.package": {
- "source": "iana"
- },
- "application/vnd.wolfram.player": {
- "source": "iana",
- "extensions": ["nbp"]
- },
- "application/vnd.wordperfect": {
- "source": "iana",
- "extensions": ["wpd"]
- },
- "application/vnd.wqd": {
- "source": "iana",
- "extensions": ["wqd"]
- },
- "application/vnd.wrq-hp3000-labelled": {
- "source": "iana"
- },
- "application/vnd.wt.stf": {
- "source": "iana",
- "extensions": ["stf"]
- },
- "application/vnd.wv.csp+wbxml": {
- "source": "iana"
- },
- "application/vnd.wv.csp+xml": {
- "source": "iana"
- },
- "application/vnd.wv.ssp+xml": {
- "source": "iana"
- },
- "application/vnd.xacml+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.xara": {
- "source": "iana",
- "extensions": ["xar"]
- },
- "application/vnd.xfdl": {
- "source": "iana",
- "extensions": ["xfdl"]
- },
- "application/vnd.xfdl.webform": {
- "source": "iana"
- },
- "application/vnd.xmi+xml": {
- "source": "iana"
- },
- "application/vnd.xmpie.cpkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.dpkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.plan": {
- "source": "iana"
- },
- "application/vnd.xmpie.ppkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.xlim": {
- "source": "iana"
- },
- "application/vnd.yamaha.hv-dic": {
- "source": "iana",
- "extensions": ["hvd"]
- },
- "application/vnd.yamaha.hv-script": {
- "source": "iana",
- "extensions": ["hvs"]
- },
- "application/vnd.yamaha.hv-voice": {
- "source": "iana",
- "extensions": ["hvp"]
- },
- "application/vnd.yamaha.openscoreformat": {
- "source": "iana",
- "extensions": ["osf"]
- },
- "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
- "source": "iana",
- "extensions": ["osfpvg"]
- },
- "application/vnd.yamaha.remote-setup": {
- "source": "iana"
- },
- "application/vnd.yamaha.smaf-audio": {
- "source": "iana",
- "extensions": ["saf"]
- },
- "application/vnd.yamaha.smaf-phrase": {
- "source": "iana",
- "extensions": ["spf"]
- },
- "application/vnd.yamaha.through-ngn": {
- "source": "iana"
- },
- "application/vnd.yamaha.tunnel-udpencap": {
- "source": "iana"
- },
- "application/vnd.yaoweme": {
- "source": "iana"
- },
- "application/vnd.yellowriver-custom-menu": {
- "source": "iana",
- "extensions": ["cmp"]
- },
- "application/vnd.zul": {
- "source": "iana",
- "extensions": ["zir","zirz"]
- },
- "application/vnd.zzazz.deck+xml": {
- "source": "iana",
- "extensions": ["zaz"]
- },
- "application/voicexml+xml": {
- "source": "iana",
- "extensions": ["vxml"]
- },
- "application/vq-rtcpxr": {
- "source": "iana"
- },
- "application/watcherinfo+xml": {
- "source": "iana"
- },
- "application/whoispp-query": {
- "source": "iana"
- },
- "application/whoispp-response": {
- "source": "iana"
- },
- "application/widget": {
- "source": "iana",
- "extensions": ["wgt"]
- },
- "application/winhlp": {
- "source": "apache",
- "extensions": ["hlp"]
- },
- "application/wita": {
- "source": "iana"
- },
- "application/wordperfect5.1": {
- "source": "iana"
- },
- "application/wsdl+xml": {
- "source": "iana",
- "extensions": ["wsdl"]
- },
- "application/wspolicy+xml": {
- "source": "iana",
- "extensions": ["wspolicy"]
- },
- "application/x-7z-compressed": {
- "source": "apache",
- "compressible": false,
- "extensions": ["7z"]
- },
- "application/x-abiword": {
- "source": "apache",
- "extensions": ["abw"]
- },
- "application/x-ace-compressed": {
- "source": "apache",
- "extensions": ["ace"]
- },
- "application/x-amf": {
- "source": "apache"
- },
- "application/x-apple-diskimage": {
- "source": "apache",
- "extensions": ["dmg"]
- },
- "application/x-authorware-bin": {
- "source": "apache",
- "extensions": ["aab","x32","u32","vox"]
- },
- "application/x-authorware-map": {
- "source": "apache",
- "extensions": ["aam"]
- },
- "application/x-authorware-seg": {
- "source": "apache",
- "extensions": ["aas"]
- },
- "application/x-bcpio": {
- "source": "apache",
- "extensions": ["bcpio"]
- },
- "application/x-bdoc": {
- "compressible": false,
- "extensions": ["bdoc"]
- },
- "application/x-bittorrent": {
- "source": "apache",
- "extensions": ["torrent"]
- },
- "application/x-blorb": {
- "source": "apache",
- "extensions": ["blb","blorb"]
- },
- "application/x-bzip": {
- "source": "apache",
- "compressible": false,
- "extensions": ["bz"]
- },
- "application/x-bzip2": {
- "source": "apache",
- "compressible": false,
- "extensions": ["bz2","boz"]
- },
- "application/x-cbr": {
- "source": "apache",
- "extensions": ["cbr","cba","cbt","cbz","cb7"]
- },
- "application/x-cdlink": {
- "source": "apache",
- "extensions": ["vcd"]
- },
- "application/x-cfs-compressed": {
- "source": "apache",
- "extensions": ["cfs"]
- },
- "application/x-chat": {
- "source": "apache",
- "extensions": ["chat"]
- },
- "application/x-chess-pgn": {
- "source": "apache",
- "extensions": ["pgn"]
- },
- "application/x-chrome-extension": {
- "extensions": ["crx"]
- },
- "application/x-cocoa": {
- "source": "nginx",
- "extensions": ["cco"]
- },
- "application/x-compress": {
- "source": "apache"
- },
- "application/x-conference": {
- "source": "apache",
- "extensions": ["nsc"]
- },
- "application/x-cpio": {
- "source": "apache",
- "extensions": ["cpio"]
- },
- "application/x-csh": {
- "source": "apache",
- "extensions": ["csh"]
- },
- "application/x-deb": {
- "compressible": false
- },
- "application/x-debian-package": {
- "source": "apache",
- "extensions": ["deb","udeb"]
- },
- "application/x-dgc-compressed": {
- "source": "apache",
- "extensions": ["dgc"]
- },
- "application/x-director": {
- "source": "apache",
- "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]
- },
- "application/x-doom": {
- "source": "apache",
- "extensions": ["wad"]
- },
- "application/x-dtbncx+xml": {
- "source": "apache",
- "extensions": ["ncx"]
- },
- "application/x-dtbook+xml": {
- "source": "apache",
- "extensions": ["dtb"]
- },
- "application/x-dtbresource+xml": {
- "source": "apache",
- "extensions": ["res"]
- },
- "application/x-dvi": {
- "source": "apache",
- "compressible": false,
- "extensions": ["dvi"]
- },
- "application/x-envoy": {
- "source": "apache",
- "extensions": ["evy"]
- },
- "application/x-eva": {
- "source": "apache",
- "extensions": ["eva"]
- },
- "application/x-font-bdf": {
- "source": "apache",
- "extensions": ["bdf"]
- },
- "application/x-font-dos": {
- "source": "apache"
- },
- "application/x-font-framemaker": {
- "source": "apache"
- },
- "application/x-font-ghostscript": {
- "source": "apache",
- "extensions": ["gsf"]
- },
- "application/x-font-libgrx": {
- "source": "apache"
- },
- "application/x-font-linux-psf": {
- "source": "apache",
- "extensions": ["psf"]
- },
- "application/x-font-otf": {
- "source": "apache",
- "compressible": true,
- "extensions": ["otf"]
- },
- "application/x-font-pcf": {
- "source": "apache",
- "extensions": ["pcf"]
- },
- "application/x-font-snf": {
- "source": "apache",
- "extensions": ["snf"]
- },
- "application/x-font-speedo": {
- "source": "apache"
- },
- "application/x-font-sunos-news": {
- "source": "apache"
- },
- "application/x-font-ttf": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ttf","ttc"]
- },
- "application/x-font-type1": {
- "source": "apache",
- "extensions": ["pfa","pfb","pfm","afm"]
- },
- "application/x-font-vfont": {
- "source": "apache"
- },
- "application/x-freearc": {
- "source": "apache",
- "extensions": ["arc"]
- },
- "application/x-futuresplash": {
- "source": "apache",
- "extensions": ["spl"]
- },
- "application/x-gca-compressed": {
- "source": "apache",
- "extensions": ["gca"]
- },
- "application/x-glulx": {
- "source": "apache",
- "extensions": ["ulx"]
- },
- "application/x-gnumeric": {
- "source": "apache",
- "extensions": ["gnumeric"]
- },
- "application/x-gramps-xml": {
- "source": "apache",
- "extensions": ["gramps"]
- },
- "application/x-gtar": {
- "source": "apache",
- "extensions": ["gtar"]
- },
- "application/x-gzip": {
- "source": "apache"
- },
- "application/x-hdf": {
- "source": "apache",
- "extensions": ["hdf"]
- },
- "application/x-install-instructions": {
- "source": "apache",
- "extensions": ["install"]
- },
- "application/x-iso9660-image": {
- "source": "apache",
- "extensions": ["iso"]
- },
- "application/x-java-archive-diff": {
- "source": "nginx",
- "extensions": ["jardiff"]
- },
- "application/x-java-jnlp-file": {
- "source": "apache",
- "compressible": false,
- "extensions": ["jnlp"]
- },
- "application/x-javascript": {
- "compressible": true
- },
- "application/x-latex": {
- "source": "apache",
- "compressible": false,
- "extensions": ["latex"]
- },
- "application/x-lua-bytecode": {
- "extensions": ["luac"]
- },
- "application/x-lzh-compressed": {
- "source": "apache",
- "extensions": ["lzh","lha"]
- },
- "application/x-makeself": {
- "source": "nginx",
- "extensions": ["run"]
- },
- "application/x-mie": {
- "source": "apache",
- "extensions": ["mie"]
- },
- "application/x-mobipocket-ebook": {
- "source": "apache",
- "extensions": ["prc","mobi"]
- },
- "application/x-mpegurl": {
- "compressible": false
- },
- "application/x-ms-application": {
- "source": "apache",
- "extensions": ["application"]
- },
- "application/x-ms-shortcut": {
- "source": "apache",
- "extensions": ["lnk"]
- },
- "application/x-ms-wmd": {
- "source": "apache",
- "extensions": ["wmd"]
- },
- "application/x-ms-wmz": {
- "source": "apache",
- "extensions": ["wmz"]
- },
- "application/x-ms-xbap": {
- "source": "apache",
- "extensions": ["xbap"]
- },
- "application/x-msaccess": {
- "source": "apache",
- "extensions": ["mdb"]
- },
- "application/x-msbinder": {
- "source": "apache",
- "extensions": ["obd"]
- },
- "application/x-mscardfile": {
- "source": "apache",
- "extensions": ["crd"]
- },
- "application/x-msclip": {
- "source": "apache",
- "extensions": ["clp"]
- },
- "application/x-msdownload": {
- "source": "apache",
- "extensions": ["exe","dll","com","bat","msi"]
- },
- "application/x-msmediaview": {
- "source": "apache",
- "extensions": ["mvb","m13","m14"]
- },
- "application/x-msmetafile": {
- "source": "apache",
- "extensions": ["wmf","wmz","emf","emz"]
- },
- "application/x-msmoney": {
- "source": "apache",
- "extensions": ["mny"]
- },
- "application/x-mspublisher": {
- "source": "apache",
- "extensions": ["pub"]
- },
- "application/x-msschedule": {
- "source": "apache",
- "extensions": ["scd"]
- },
- "application/x-msterminal": {
- "source": "apache",
- "extensions": ["trm"]
- },
- "application/x-mswrite": {
- "source": "apache",
- "extensions": ["wri"]
- },
- "application/x-netcdf": {
- "source": "apache",
- "extensions": ["nc","cdf"]
- },
- "application/x-ns-proxy-autoconfig": {
- "compressible": true,
- "extensions": ["pac"]
- },
- "application/x-nzb": {
- "source": "apache",
- "extensions": ["nzb"]
- },
- "application/x-perl": {
- "source": "nginx",
- "extensions": ["pl","pm"]
- },
- "application/x-pilot": {
- "source": "nginx",
- "extensions": ["prc","pdb"]
- },
- "application/x-pkcs12": {
- "source": "apache",
- "compressible": false,
- "extensions": ["p12","pfx"]
- },
- "application/x-pkcs7-certificates": {
- "source": "apache",
- "extensions": ["p7b","spc"]
- },
- "application/x-pkcs7-certreqresp": {
- "source": "apache",
- "extensions": ["p7r"]
- },
- "application/x-rar-compressed": {
- "source": "apache",
- "compressible": false,
- "extensions": ["rar"]
- },
- "application/x-redhat-package-manager": {
- "source": "nginx",
- "extensions": ["rpm"]
- },
- "application/x-research-info-systems": {
- "source": "apache",
- "extensions": ["ris"]
- },
- "application/x-sea": {
- "source": "nginx",
- "extensions": ["sea"]
- },
- "application/x-sh": {
- "source": "apache",
- "compressible": true,
- "extensions": ["sh"]
- },
- "application/x-shar": {
- "source": "apache",
- "extensions": ["shar"]
- },
- "application/x-shockwave-flash": {
- "source": "apache",
- "compressible": false,
- "extensions": ["swf"]
- },
- "application/x-silverlight-app": {
- "source": "apache",
- "extensions": ["xap"]
- },
- "application/x-sql": {
- "source": "apache",
- "extensions": ["sql"]
- },
- "application/x-stuffit": {
- "source": "apache",
- "compressible": false,
- "extensions": ["sit"]
- },
- "application/x-stuffitx": {
- "source": "apache",
- "extensions": ["sitx"]
- },
- "application/x-subrip": {
- "source": "apache",
- "extensions": ["srt"]
- },
- "application/x-sv4cpio": {
- "source": "apache",
- "extensions": ["sv4cpio"]
- },
- "application/x-sv4crc": {
- "source": "apache",
- "extensions": ["sv4crc"]
- },
- "application/x-t3vm-image": {
- "source": "apache",
- "extensions": ["t3"]
- },
- "application/x-tads": {
- "source": "apache",
- "extensions": ["gam"]
- },
- "application/x-tar": {
- "source": "apache",
- "compressible": true,
- "extensions": ["tar"]
- },
- "application/x-tcl": {
- "source": "apache",
- "extensions": ["tcl","tk"]
- },
- "application/x-tex": {
- "source": "apache",
- "extensions": ["tex"]
- },
- "application/x-tex-tfm": {
- "source": "apache",
- "extensions": ["tfm"]
- },
- "application/x-texinfo": {
- "source": "apache",
- "extensions": ["texinfo","texi"]
- },
- "application/x-tgif": {
- "source": "apache",
- "extensions": ["obj"]
- },
- "application/x-ustar": {
- "source": "apache",
- "extensions": ["ustar"]
- },
- "application/x-wais-source": {
- "source": "apache",
- "extensions": ["src"]
- },
- "application/x-web-app-manifest+json": {
- "compressible": true,
- "extensions": ["webapp"]
- },
- "application/x-www-form-urlencoded": {
- "source": "iana",
- "compressible": true
- },
- "application/x-x509-ca-cert": {
- "source": "apache",
- "extensions": ["der","crt","pem"]
- },
- "application/x-xfig": {
- "source": "apache",
- "extensions": ["fig"]
- },
- "application/x-xliff+xml": {
- "source": "apache",
- "extensions": ["xlf"]
- },
- "application/x-xpinstall": {
- "source": "apache",
- "compressible": false,
- "extensions": ["xpi"]
- },
- "application/x-xz": {
- "source": "apache",
- "extensions": ["xz"]
- },
- "application/x-zmachine": {
- "source": "apache",
- "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"]
- },
- "application/x400-bp": {
- "source": "iana"
- },
- "application/xacml+xml": {
- "source": "iana"
- },
- "application/xaml+xml": {
- "source": "apache",
- "extensions": ["xaml"]
- },
- "application/xcap-att+xml": {
- "source": "iana"
- },
- "application/xcap-caps+xml": {
- "source": "iana"
- },
- "application/xcap-diff+xml": {
- "source": "iana",
- "extensions": ["xdf"]
- },
- "application/xcap-el+xml": {
- "source": "iana"
- },
- "application/xcap-error+xml": {
- "source": "iana"
- },
- "application/xcap-ns+xml": {
- "source": "iana"
- },
- "application/xcon-conference-info+xml": {
- "source": "iana"
- },
- "application/xcon-conference-info-diff+xml": {
- "source": "iana"
- },
- "application/xenc+xml": {
- "source": "iana",
- "extensions": ["xenc"]
- },
- "application/xhtml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xhtml","xht"]
- },
- "application/xhtml-voice+xml": {
- "source": "apache"
- },
- "application/xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xml","xsl","xsd"]
- },
- "application/xml-dtd": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dtd"]
- },
- "application/xml-external-parsed-entity": {
- "source": "iana"
- },
- "application/xml-patch+xml": {
- "source": "iana"
- },
- "application/xmpp+xml": {
- "source": "iana"
- },
- "application/xop+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xop"]
- },
- "application/xproc+xml": {
- "source": "apache",
- "extensions": ["xpl"]
- },
- "application/xslt+xml": {
- "source": "iana",
- "extensions": ["xslt"]
- },
- "application/xspf+xml": {
- "source": "apache",
- "extensions": ["xspf"]
- },
- "application/xv+xml": {
- "source": "iana",
- "extensions": ["mxml","xhvml","xvml","xvm"]
- },
- "application/yang": {
- "source": "iana",
- "extensions": ["yang"]
- },
- "application/yin+xml": {
- "source": "iana",
- "extensions": ["yin"]
- },
- "application/zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["zip"]
- },
- "application/zlib": {
- "source": "iana"
- },
- "audio/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "audio/32kadpcm": {
- "source": "iana"
- },
- "audio/3gpp": {
- "source": "iana"
- },
- "audio/3gpp2": {
- "source": "iana"
- },
- "audio/ac3": {
- "source": "iana"
- },
- "audio/adpcm": {
- "source": "apache",
- "extensions": ["adp"]
- },
- "audio/amr": {
- "source": "iana"
- },
- "audio/amr-wb": {
- "source": "iana"
- },
- "audio/amr-wb+": {
- "source": "iana"
- },
- "audio/aptx": {
- "source": "iana"
- },
- "audio/asc": {
- "source": "iana"
- },
- "audio/atrac-advanced-lossless": {
- "source": "iana"
- },
- "audio/atrac-x": {
- "source": "iana"
- },
- "audio/atrac3": {
- "source": "iana"
- },
- "audio/basic": {
- "source": "iana",
- "compressible": false,
- "extensions": ["au","snd"]
- },
- "audio/bv16": {
- "source": "iana"
- },
- "audio/bv32": {
- "source": "iana"
- },
- "audio/clearmode": {
- "source": "iana"
- },
- "audio/cn": {
- "source": "iana"
- },
- "audio/dat12": {
- "source": "iana"
- },
- "audio/dls": {
- "source": "iana"
- },
- "audio/dsr-es201108": {
- "source": "iana"
- },
- "audio/dsr-es202050": {
- "source": "iana"
- },
- "audio/dsr-es202211": {
- "source": "iana"
- },
- "audio/dsr-es202212": {
- "source": "iana"
- },
- "audio/dv": {
- "source": "iana"
- },
- "audio/dvi4": {
- "source": "iana"
- },
- "audio/eac3": {
- "source": "iana"
- },
- "audio/encaprtp": {
- "source": "iana"
- },
- "audio/evrc": {
- "source": "iana"
- },
- "audio/evrc-qcp": {
- "source": "iana"
- },
- "audio/evrc0": {
- "source": "iana"
- },
- "audio/evrc1": {
- "source": "iana"
- },
- "audio/evrcb": {
- "source": "iana"
- },
- "audio/evrcb0": {
- "source": "iana"
- },
- "audio/evrcb1": {
- "source": "iana"
- },
- "audio/evrcnw": {
- "source": "iana"
- },
- "audio/evrcnw0": {
- "source": "iana"
- },
- "audio/evrcnw1": {
- "source": "iana"
- },
- "audio/evrcwb": {
- "source": "iana"
- },
- "audio/evrcwb0": {
- "source": "iana"
- },
- "audio/evrcwb1": {
- "source": "iana"
- },
- "audio/fwdred": {
- "source": "iana"
- },
- "audio/g719": {
- "source": "iana"
- },
- "audio/g722": {
- "source": "iana"
- },
- "audio/g7221": {
- "source": "iana"
- },
- "audio/g723": {
- "source": "iana"
- },
- "audio/g726-16": {
- "source": "iana"
- },
- "audio/g726-24": {
- "source": "iana"
- },
- "audio/g726-32": {
- "source": "iana"
- },
- "audio/g726-40": {
- "source": "iana"
- },
- "audio/g728": {
- "source": "iana"
- },
- "audio/g729": {
- "source": "iana"
- },
- "audio/g7291": {
- "source": "iana"
- },
- "audio/g729d": {
- "source": "iana"
- },
- "audio/g729e": {
- "source": "iana"
- },
- "audio/gsm": {
- "source": "iana"
- },
- "audio/gsm-efr": {
- "source": "iana"
- },
- "audio/gsm-hr-08": {
- "source": "iana"
- },
- "audio/ilbc": {
- "source": "iana"
- },
- "audio/ip-mr_v2.5": {
- "source": "iana"
- },
- "audio/isac": {
- "source": "apache"
- },
- "audio/l16": {
- "source": "iana"
- },
- "audio/l20": {
- "source": "iana"
- },
- "audio/l24": {
- "source": "iana",
- "compressible": false
- },
- "audio/l8": {
- "source": "iana"
- },
- "audio/lpc": {
- "source": "iana"
- },
- "audio/midi": {
- "source": "apache",
- "extensions": ["mid","midi","kar","rmi"]
- },
- "audio/mobile-xmf": {
- "source": "iana"
- },
- "audio/mp4": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mp4a","m4a"]
- },
- "audio/mp4a-latm": {
- "source": "iana"
- },
- "audio/mpa": {
- "source": "iana"
- },
- "audio/mpa-robust": {
- "source": "iana"
- },
- "audio/mpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"]
- },
- "audio/mpeg4-generic": {
- "source": "iana"
- },
- "audio/musepack": {
- "source": "apache"
- },
- "audio/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["oga","ogg","spx"]
- },
- "audio/opus": {
- "source": "iana"
- },
- "audio/parityfec": {
- "source": "iana"
- },
- "audio/pcma": {
- "source": "iana"
- },
- "audio/pcma-wb": {
- "source": "iana"
- },
- "audio/pcmu": {
- "source": "iana"
- },
- "audio/pcmu-wb": {
- "source": "iana"
- },
- "audio/prs.sid": {
- "source": "iana"
- },
- "audio/qcelp": {
- "source": "iana"
- },
- "audio/raptorfec": {
- "source": "iana"
- },
- "audio/red": {
- "source": "iana"
- },
- "audio/rtp-enc-aescm128": {
- "source": "iana"
- },
- "audio/rtp-midi": {
- "source": "iana"
- },
- "audio/rtploopback": {
- "source": "iana"
- },
- "audio/rtx": {
- "source": "iana"
- },
- "audio/s3m": {
- "source": "apache",
- "extensions": ["s3m"]
- },
- "audio/silk": {
- "source": "apache",
- "extensions": ["sil"]
- },
- "audio/smv": {
- "source": "iana"
- },
- "audio/smv-qcp": {
- "source": "iana"
- },
- "audio/smv0": {
- "source": "iana"
- },
- "audio/sp-midi": {
- "source": "iana"
- },
- "audio/speex": {
- "source": "iana"
- },
- "audio/t140c": {
- "source": "iana"
- },
- "audio/t38": {
- "source": "iana"
- },
- "audio/telephone-event": {
- "source": "iana"
- },
- "audio/tone": {
- "source": "iana"
- },
- "audio/uemclip": {
- "source": "iana"
- },
- "audio/ulpfec": {
- "source": "iana"
- },
- "audio/vdvi": {
- "source": "iana"
- },
- "audio/vmr-wb": {
- "source": "iana"
- },
- "audio/vnd.3gpp.iufp": {
- "source": "iana"
- },
- "audio/vnd.4sb": {
- "source": "iana"
- },
- "audio/vnd.audiokoz": {
- "source": "iana"
- },
- "audio/vnd.celp": {
- "source": "iana"
- },
- "audio/vnd.cisco.nse": {
- "source": "iana"
- },
- "audio/vnd.cmles.radio-events": {
- "source": "iana"
- },
- "audio/vnd.cns.anp1": {
- "source": "iana"
- },
- "audio/vnd.cns.inf1": {
- "source": "iana"
- },
- "audio/vnd.dece.audio": {
- "source": "iana",
- "extensions": ["uva","uvva"]
- },
- "audio/vnd.digital-winds": {
- "source": "iana",
- "extensions": ["eol"]
- },
- "audio/vnd.dlna.adts": {
- "source": "iana"
- },
- "audio/vnd.dolby.heaac.1": {
- "source": "iana"
- },
- "audio/vnd.dolby.heaac.2": {
- "source": "iana"
- },
- "audio/vnd.dolby.mlp": {
- "source": "iana"
- },
- "audio/vnd.dolby.mps": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2x": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2z": {
- "source": "iana"
- },
- "audio/vnd.dolby.pulse.1": {
- "source": "iana"
- },
- "audio/vnd.dra": {
- "source": "iana",
- "extensions": ["dra"]
- },
- "audio/vnd.dts": {
- "source": "iana",
- "extensions": ["dts"]
- },
- "audio/vnd.dts.hd": {
- "source": "iana",
- "extensions": ["dtshd"]
- },
- "audio/vnd.dvb.file": {
- "source": "iana"
- },
- "audio/vnd.everad.plj": {
- "source": "iana"
- },
- "audio/vnd.hns.audio": {
- "source": "iana"
- },
- "audio/vnd.lucent.voice": {
- "source": "iana",
- "extensions": ["lvp"]
- },
- "audio/vnd.ms-playready.media.pya": {
- "source": "iana",
- "extensions": ["pya"]
- },
- "audio/vnd.nokia.mobile-xmf": {
- "source": "iana"
- },
- "audio/vnd.nortel.vbk": {
- "source": "iana"
- },
- "audio/vnd.nuera.ecelp4800": {
- "source": "iana",
- "extensions": ["ecelp4800"]
- },
- "audio/vnd.nuera.ecelp7470": {
- "source": "iana",
- "extensions": ["ecelp7470"]
- },
- "audio/vnd.nuera.ecelp9600": {
- "source": "iana",
- "extensions": ["ecelp9600"]
- },
- "audio/vnd.octel.sbc": {
- "source": "iana"
- },
- "audio/vnd.qcelp": {
- "source": "iana"
- },
- "audio/vnd.rhetorex.32kadpcm": {
- "source": "iana"
- },
- "audio/vnd.rip": {
- "source": "iana",
- "extensions": ["rip"]
- },
- "audio/vnd.rn-realaudio": {
- "compressible": false
- },
- "audio/vnd.sealedmedia.softseal.mpeg": {
- "source": "iana"
- },
- "audio/vnd.vmx.cvsd": {
- "source": "iana"
- },
- "audio/vnd.wave": {
- "compressible": false
- },
- "audio/vorbis": {
- "source": "iana",
- "compressible": false
- },
- "audio/vorbis-config": {
- "source": "iana"
- },
- "audio/wav": {
- "compressible": false,
- "extensions": ["wav"]
- },
- "audio/wave": {
- "compressible": false,
- "extensions": ["wav"]
- },
- "audio/webm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["weba"]
- },
- "audio/x-aac": {
- "source": "apache",
- "compressible": false,
- "extensions": ["aac"]
- },
- "audio/x-aiff": {
- "source": "apache",
- "extensions": ["aif","aiff","aifc"]
- },
- "audio/x-caf": {
- "source": "apache",
- "compressible": false,
- "extensions": ["caf"]
- },
- "audio/x-flac": {
- "source": "apache",
- "extensions": ["flac"]
- },
- "audio/x-m4a": {
- "source": "nginx",
- "extensions": ["m4a"]
- },
- "audio/x-matroska": {
- "source": "apache",
- "extensions": ["mka"]
- },
- "audio/x-mpegurl": {
- "source": "apache",
- "extensions": ["m3u"]
- },
- "audio/x-ms-wax": {
- "source": "apache",
- "extensions": ["wax"]
- },
- "audio/x-ms-wma": {
- "source": "apache",
- "extensions": ["wma"]
- },
- "audio/x-pn-realaudio": {
- "source": "apache",
- "extensions": ["ram","ra"]
- },
- "audio/x-pn-realaudio-plugin": {
- "source": "apache",
- "extensions": ["rmp"]
- },
- "audio/x-realaudio": {
- "source": "nginx",
- "extensions": ["ra"]
- },
- "audio/x-tta": {
- "source": "apache"
- },
- "audio/x-wav": {
- "source": "apache",
- "extensions": ["wav"]
- },
- "audio/xm": {
- "source": "apache",
- "extensions": ["xm"]
- },
- "chemical/x-cdx": {
- "source": "apache",
- "extensions": ["cdx"]
- },
- "chemical/x-cif": {
- "source": "apache",
- "extensions": ["cif"]
- },
- "chemical/x-cmdf": {
- "source": "apache",
- "extensions": ["cmdf"]
- },
- "chemical/x-cml": {
- "source": "apache",
- "extensions": ["cml"]
- },
- "chemical/x-csml": {
- "source": "apache",
- "extensions": ["csml"]
- },
- "chemical/x-pdb": {
- "source": "apache"
- },
- "chemical/x-xyz": {
- "source": "apache",
- "extensions": ["xyz"]
- },
- "font/opentype": {
- "compressible": true,
- "extensions": ["otf"]
- },
- "image/bmp": {
- "source": "apache",
- "compressible": true,
- "extensions": ["bmp"]
- },
- "image/cgm": {
- "source": "iana",
- "extensions": ["cgm"]
- },
- "image/fits": {
- "source": "iana"
- },
- "image/g3fax": {
- "source": "iana",
- "extensions": ["g3"]
- },
- "image/gif": {
- "source": "iana",
- "compressible": false,
- "extensions": ["gif"]
- },
- "image/ief": {
- "source": "iana",
- "extensions": ["ief"]
- },
- "image/jp2": {
- "source": "iana"
- },
- "image/jpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["jpeg","jpg","jpe"]
- },
- "image/jpm": {
- "source": "iana"
- },
- "image/jpx": {
- "source": "iana"
- },
- "image/ktx": {
- "source": "iana",
- "extensions": ["ktx"]
- },
- "image/naplps": {
- "source": "iana"
- },
- "image/pjpeg": {
- "compressible": false
- },
- "image/png": {
- "source": "iana",
- "compressible": false,
- "extensions": ["png"]
- },
- "image/prs.btif": {
- "source": "iana",
- "extensions": ["btif"]
- },
- "image/prs.pti": {
- "source": "iana"
- },
- "image/pwg-raster": {
- "source": "iana"
- },
- "image/sgi": {
- "source": "apache",
- "extensions": ["sgi"]
- },
- "image/svg+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["svg","svgz"]
- },
- "image/t38": {
- "source": "iana"
- },
- "image/tiff": {
- "source": "iana",
- "compressible": false,
- "extensions": ["tiff","tif"]
- },
- "image/tiff-fx": {
- "source": "iana"
- },
- "image/vnd.adobe.photoshop": {
- "source": "iana",
- "compressible": true,
- "extensions": ["psd"]
- },
- "image/vnd.airzip.accelerator.azv": {
- "source": "iana"
- },
- "image/vnd.cns.inf2": {
- "source": "iana"
- },
- "image/vnd.dece.graphic": {
- "source": "iana",
- "extensions": ["uvi","uvvi","uvg","uvvg"]
- },
- "image/vnd.djvu": {
- "source": "iana",
- "extensions": ["djvu","djv"]
- },
- "image/vnd.dvb.subtitle": {
- "source": "iana",
- "extensions": ["sub"]
- },
- "image/vnd.dwg": {
- "source": "iana",
- "extensions": ["dwg"]
- },
- "image/vnd.dxf": {
- "source": "iana",
- "extensions": ["dxf"]
- },
- "image/vnd.fastbidsheet": {
- "source": "iana",
- "extensions": ["fbs"]
- },
- "image/vnd.fpx": {
- "source": "iana",
- "extensions": ["fpx"]
- },
- "image/vnd.fst": {
- "source": "iana",
- "extensions": ["fst"]
- },
- "image/vnd.fujixerox.edmics-mmr": {
- "source": "iana",
- "extensions": ["mmr"]
- },
- "image/vnd.fujixerox.edmics-rlc": {
- "source": "iana",
- "extensions": ["rlc"]
- },
- "image/vnd.globalgraphics.pgb": {
- "source": "iana"
- },
- "image/vnd.microsoft.icon": {
- "source": "iana"
- },
- "image/vnd.mix": {
- "source": "iana"
- },
- "image/vnd.ms-modi": {
- "source": "iana",
- "extensions": ["mdi"]
- },
- "image/vnd.ms-photo": {
- "source": "apache",
- "extensions": ["wdp"]
- },
- "image/vnd.net-fpx": {
- "source": "iana",
- "extensions": ["npx"]
- },
- "image/vnd.radiance": {
- "source": "iana"
- },
- "image/vnd.sealed.png": {
- "source": "iana"
- },
- "image/vnd.sealedmedia.softseal.gif": {
- "source": "iana"
- },
- "image/vnd.sealedmedia.softseal.jpg": {
- "source": "iana"
- },
- "image/vnd.svf": {
- "source": "iana"
- },
- "image/vnd.tencent.tap": {
- "source": "iana"
- },
- "image/vnd.valve.source.texture": {
- "source": "iana"
- },
- "image/vnd.wap.wbmp": {
- "source": "iana",
- "extensions": ["wbmp"]
- },
- "image/vnd.xiff": {
- "source": "iana",
- "extensions": ["xif"]
- },
- "image/vnd.zbrush.pcx": {
- "source": "iana"
- },
- "image/webp": {
- "source": "apache",
- "extensions": ["webp"]
- },
- "image/x-3ds": {
- "source": "apache",
- "extensions": ["3ds"]
- },
- "image/x-cmu-raster": {
- "source": "apache",
- "extensions": ["ras"]
- },
- "image/x-cmx": {
- "source": "apache",
- "extensions": ["cmx"]
- },
- "image/x-freehand": {
- "source": "apache",
- "extensions": ["fh","fhc","fh4","fh5","fh7"]
- },
- "image/x-icon": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ico"]
- },
- "image/x-jng": {
- "source": "nginx",
- "extensions": ["jng"]
- },
- "image/x-mrsid-image": {
- "source": "apache",
- "extensions": ["sid"]
- },
- "image/x-ms-bmp": {
- "source": "nginx",
- "compressible": true,
- "extensions": ["bmp"]
- },
- "image/x-pcx": {
- "source": "apache",
- "extensions": ["pcx"]
- },
- "image/x-pict": {
- "source": "apache",
- "extensions": ["pic","pct"]
- },
- "image/x-portable-anymap": {
- "source": "apache",
- "extensions": ["pnm"]
- },
- "image/x-portable-bitmap": {
- "source": "apache",
- "extensions": ["pbm"]
- },
- "image/x-portable-graymap": {
- "source": "apache",
- "extensions": ["pgm"]
- },
- "image/x-portable-pixmap": {
- "source": "apache",
- "extensions": ["ppm"]
- },
- "image/x-rgb": {
- "source": "apache",
- "extensions": ["rgb"]
- },
- "image/x-tga": {
- "source": "apache",
- "extensions": ["tga"]
- },
- "image/x-xbitmap": {
- "source": "apache",
- "extensions": ["xbm"]
- },
- "image/x-xcf": {
- "compressible": false
- },
- "image/x-xpixmap": {
- "source": "apache",
- "extensions": ["xpm"]
- },
- "image/x-xwindowdump": {
- "source": "apache",
- "extensions": ["xwd"]
- },
- "message/cpim": {
- "source": "iana"
- },
- "message/delivery-status": {
- "source": "iana"
- },
- "message/disposition-notification": {
- "source": "iana"
- },
- "message/external-body": {
- "source": "iana"
- },
- "message/feedback-report": {
- "source": "iana"
- },
- "message/global": {
- "source": "iana"
- },
- "message/global-delivery-status": {
- "source": "iana"
- },
- "message/global-disposition-notification": {
- "source": "iana"
- },
- "message/global-headers": {
- "source": "iana"
- },
- "message/http": {
- "source": "iana",
- "compressible": false
- },
- "message/imdn+xml": {
- "source": "iana",
- "compressible": true
- },
- "message/news": {
- "source": "iana"
- },
- "message/partial": {
- "source": "iana",
- "compressible": false
- },
- "message/rfc822": {
- "source": "iana",
- "compressible": true,
- "extensions": ["eml","mime"]
- },
- "message/s-http": {
- "source": "iana"
- },
- "message/sip": {
- "source": "iana"
- },
- "message/sipfrag": {
- "source": "iana"
- },
- "message/tracking-status": {
- "source": "iana"
- },
- "message/vnd.si.simp": {
- "source": "iana"
- },
- "message/vnd.wfa.wsc": {
- "source": "iana"
- },
- "model/iges": {
- "source": "iana",
- "compressible": false,
- "extensions": ["igs","iges"]
- },
- "model/mesh": {
- "source": "iana",
- "compressible": false,
- "extensions": ["msh","mesh","silo"]
- },
- "model/vnd.collada+xml": {
- "source": "iana",
- "extensions": ["dae"]
- },
- "model/vnd.dwf": {
- "source": "iana",
- "extensions": ["dwf"]
- },
- "model/vnd.flatland.3dml": {
- "source": "iana"
- },
- "model/vnd.gdl": {
- "source": "iana",
- "extensions": ["gdl"]
- },
- "model/vnd.gs-gdl": {
- "source": "apache"
- },
- "model/vnd.gs.gdl": {
- "source": "iana"
- },
- "model/vnd.gtw": {
- "source": "iana",
- "extensions": ["gtw"]
- },
- "model/vnd.moml+xml": {
- "source": "iana"
- },
- "model/vnd.mts": {
- "source": "iana",
- "extensions": ["mts"]
- },
- "model/vnd.opengex": {
- "source": "iana"
- },
- "model/vnd.parasolid.transmit.binary": {
- "source": "iana"
- },
- "model/vnd.parasolid.transmit.text": {
- "source": "iana"
- },
- "model/vnd.valve.source.compiled-map": {
- "source": "iana"
- },
- "model/vnd.vtu": {
- "source": "iana",
- "extensions": ["vtu"]
- },
- "model/vrml": {
- "source": "iana",
- "compressible": false,
- "extensions": ["wrl","vrml"]
- },
- "model/x3d+binary": {
- "source": "apache",
- "compressible": false,
- "extensions": ["x3db","x3dbz"]
- },
- "model/x3d+fastinfoset": {
- "source": "iana"
- },
- "model/x3d+vrml": {
- "source": "apache",
- "compressible": false,
- "extensions": ["x3dv","x3dvz"]
- },
- "model/x3d+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["x3d","x3dz"]
- },
- "model/x3d-vrml": {
- "source": "iana"
- },
- "multipart/alternative": {
- "source": "iana",
- "compressible": false
- },
- "multipart/appledouble": {
- "source": "iana"
- },
- "multipart/byteranges": {
- "source": "iana"
- },
- "multipart/digest": {
- "source": "iana"
- },
- "multipart/encrypted": {
- "source": "iana",
- "compressible": false
- },
- "multipart/form-data": {
- "source": "iana",
- "compressible": false
- },
- "multipart/header-set": {
- "source": "iana"
- },
- "multipart/mixed": {
- "source": "iana",
- "compressible": false
- },
- "multipart/parallel": {
- "source": "iana"
- },
- "multipart/related": {
- "source": "iana",
- "compressible": false
- },
- "multipart/report": {
- "source": "iana"
- },
- "multipart/signed": {
- "source": "iana",
- "compressible": false
- },
- "multipart/voice-message": {
- "source": "iana"
- },
- "multipart/x-mixed-replace": {
- "source": "iana"
- },
- "text/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "text/cache-manifest": {
- "source": "iana",
- "compressible": true,
- "extensions": ["appcache","manifest"]
- },
- "text/calendar": {
- "source": "iana",
- "extensions": ["ics","ifb"]
- },
- "text/calender": {
- "compressible": true
- },
- "text/cmd": {
- "compressible": true
- },
- "text/coffeescript": {
- "extensions": ["coffee","litcoffee"]
- },
- "text/css": {
- "source": "iana",
- "compressible": true,
- "extensions": ["css"]
- },
- "text/csv": {
- "source": "iana",
- "compressible": true,
- "extensions": ["csv"]
- },
- "text/csv-schema": {
- "source": "iana"
- },
- "text/directory": {
- "source": "iana"
- },
- "text/dns": {
- "source": "iana"
- },
- "text/ecmascript": {
- "source": "iana"
- },
- "text/encaprtp": {
- "source": "iana"
- },
- "text/enriched": {
- "source": "iana"
- },
- "text/fwdred": {
- "source": "iana"
- },
- "text/grammar-ref-list": {
- "source": "iana"
- },
- "text/hjson": {
- "extensions": ["hjson"]
- },
- "text/html": {
- "source": "iana",
- "compressible": true,
- "extensions": ["html","htm","shtml"]
- },
- "text/jade": {
- "extensions": ["jade"]
- },
- "text/javascript": {
- "source": "iana",
- "compressible": true
- },
- "text/jcr-cnd": {
- "source": "iana"
- },
- "text/jsx": {
- "compressible": true,
- "extensions": ["jsx"]
- },
- "text/less": {
- "extensions": ["less"]
- },
- "text/markdown": {
- "source": "iana"
- },
- "text/mathml": {
- "source": "nginx",
- "extensions": ["mml"]
- },
- "text/mizar": {
- "source": "iana"
- },
- "text/n3": {
- "source": "iana",
- "compressible": true,
- "extensions": ["n3"]
- },
- "text/parameters": {
- "source": "iana"
- },
- "text/parityfec": {
- "source": "iana"
- },
- "text/plain": {
- "source": "iana",
- "compressible": true,
- "extensions": ["txt","text","conf","def","list","log","in","ini"]
- },
- "text/provenance-notation": {
- "source": "iana"
- },
- "text/prs.fallenstein.rst": {
- "source": "iana"
- },
- "text/prs.lines.tag": {
- "source": "iana",
- "extensions": ["dsc"]
- },
- "text/raptorfec": {
- "source": "iana"
- },
- "text/red": {
- "source": "iana"
- },
- "text/rfc822-headers": {
- "source": "iana"
- },
- "text/richtext": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtx"]
- },
- "text/rtf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtf"]
- },
- "text/rtp-enc-aescm128": {
- "source": "iana"
- },
- "text/rtploopback": {
- "source": "iana"
- },
- "text/rtx": {
- "source": "iana"
- },
- "text/sgml": {
- "source": "iana",
- "extensions": ["sgml","sgm"]
- },
- "text/stylus": {
- "extensions": ["stylus","styl"]
- },
- "text/t140": {
- "source": "iana"
- },
- "text/tab-separated-values": {
- "source": "iana",
- "compressible": true,
- "extensions": ["tsv"]
- },
- "text/troff": {
- "source": "iana",
- "extensions": ["t","tr","roff","man","me","ms"]
- },
- "text/turtle": {
- "source": "iana",
- "extensions": ["ttl"]
- },
- "text/ulpfec": {
- "source": "iana"
- },
- "text/uri-list": {
- "source": "iana",
- "compressible": true,
- "extensions": ["uri","uris","urls"]
- },
- "text/vcard": {
- "source": "iana",
- "compressible": true,
- "extensions": ["vcard"]
- },
- "text/vnd.a": {
- "source": "iana"
- },
- "text/vnd.abc": {
- "source": "iana"
- },
- "text/vnd.curl": {
- "source": "iana",
- "extensions": ["curl"]
- },
- "text/vnd.curl.dcurl": {
- "source": "apache",
- "extensions": ["dcurl"]
- },
- "text/vnd.curl.mcurl": {
- "source": "apache",
- "extensions": ["mcurl"]
- },
- "text/vnd.curl.scurl": {
- "source": "apache",
- "extensions": ["scurl"]
- },
- "text/vnd.debian.copyright": {
- "source": "iana"
- },
- "text/vnd.dmclientscript": {
- "source": "iana"
- },
- "text/vnd.dvb.subtitle": {
- "source": "iana",
- "extensions": ["sub"]
- },
- "text/vnd.esmertec.theme-descriptor": {
- "source": "iana"
- },
- "text/vnd.fly": {
- "source": "iana",
- "extensions": ["fly"]
- },
- "text/vnd.fmi.flexstor": {
- "source": "iana",
- "extensions": ["flx"]
- },
- "text/vnd.graphviz": {
- "source": "iana",
- "extensions": ["gv"]
- },
- "text/vnd.in3d.3dml": {
- "source": "iana",
- "extensions": ["3dml"]
- },
- "text/vnd.in3d.spot": {
- "source": "iana",
- "extensions": ["spot"]
- },
- "text/vnd.iptc.newsml": {
- "source": "iana"
- },
- "text/vnd.iptc.nitf": {
- "source": "iana"
- },
- "text/vnd.latex-z": {
- "source": "iana"
- },
- "text/vnd.motorola.reflex": {
- "source": "iana"
- },
- "text/vnd.ms-mediapackage": {
- "source": "iana"
- },
- "text/vnd.net2phone.commcenter.command": {
- "source": "iana"
- },
- "text/vnd.radisys.msml-basic-layout": {
- "source": "iana"
- },
- "text/vnd.si.uricatalogue": {
- "source": "iana"
- },
- "text/vnd.sun.j2me.app-descriptor": {
- "source": "iana",
- "extensions": ["jad"]
- },
- "text/vnd.trolltech.linguist": {
- "source": "iana"
- },
- "text/vnd.wap.si": {
- "source": "iana"
- },
- "text/vnd.wap.sl": {
- "source": "iana"
- },
- "text/vnd.wap.wml": {
- "source": "iana",
- "extensions": ["wml"]
- },
- "text/vnd.wap.wmlscript": {
- "source": "iana",
- "extensions": ["wmls"]
- },
- "text/vtt": {
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["vtt"]
- },
- "text/x-asm": {
- "source": "apache",
- "extensions": ["s","asm"]
- },
- "text/x-c": {
- "source": "apache",
- "extensions": ["c","cc","cxx","cpp","h","hh","dic"]
- },
- "text/x-component": {
- "source": "nginx",
- "extensions": ["htc"]
- },
- "text/x-fortran": {
- "source": "apache",
- "extensions": ["f","for","f77","f90"]
- },
- "text/x-gwt-rpc": {
- "compressible": true
- },
- "text/x-handlebars-template": {
- "extensions": ["hbs"]
- },
- "text/x-java-source": {
- "source": "apache",
- "extensions": ["java"]
- },
- "text/x-jquery-tmpl": {
- "compressible": true
- },
- "text/x-lua": {
- "extensions": ["lua"]
- },
- "text/x-markdown": {
- "compressible": true,
- "extensions": ["markdown","md","mkd"]
- },
- "text/x-nfo": {
- "source": "apache",
- "extensions": ["nfo"]
- },
- "text/x-opml": {
- "source": "apache",
- "extensions": ["opml"]
- },
- "text/x-pascal": {
- "source": "apache",
- "extensions": ["p","pas"]
- },
- "text/x-sass": {
- "extensions": ["sass"]
- },
- "text/x-scss": {
- "extensions": ["scss"]
- },
- "text/x-setext": {
- "source": "apache",
- "extensions": ["etx"]
- },
- "text/x-sfv": {
- "source": "apache",
- "extensions": ["sfv"]
- },
- "text/x-uuencode": {
- "source": "apache",
- "extensions": ["uu"]
- },
- "text/x-vcalendar": {
- "source": "apache",
- "extensions": ["vcs"]
- },
- "text/x-vcard": {
- "source": "apache",
- "extensions": ["vcf"]
- },
- "text/xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xml"]
- },
- "text/xml-external-parsed-entity": {
- "source": "iana"
- },
- "text/yaml": {
- "extensions": ["yaml","yml"]
- },
- "video/1d-interleaved-parityfec": {
- "source": "apache"
- },
- "video/3gpp": {
- "source": "apache",
- "extensions": ["3gp","3gpp"]
- },
- "video/3gpp-tt": {
- "source": "apache"
- },
- "video/3gpp2": {
- "source": "apache",
- "extensions": ["3g2"]
- },
- "video/bmpeg": {
- "source": "apache"
- },
- "video/bt656": {
- "source": "apache"
- },
- "video/celb": {
- "source": "apache"
- },
- "video/dv": {
- "source": "apache"
- },
- "video/h261": {
- "source": "apache",
- "extensions": ["h261"]
- },
- "video/h263": {
- "source": "apache",
- "extensions": ["h263"]
- },
- "video/h263-1998": {
- "source": "apache"
- },
- "video/h263-2000": {
- "source": "apache"
- },
- "video/h264": {
- "source": "apache",
- "extensions": ["h264"]
- },
- "video/h264-rcdo": {
- "source": "apache"
- },
- "video/h264-svc": {
- "source": "apache"
- },
- "video/jpeg": {
- "source": "apache",
- "extensions": ["jpgv"]
- },
- "video/jpeg2000": {
- "source": "apache"
- },
- "video/jpm": {
- "source": "apache",
- "extensions": ["jpm","jpgm"]
- },
- "video/mj2": {
- "source": "apache",
- "extensions": ["mj2","mjp2"]
- },
- "video/mp1s": {
- "source": "apache"
- },
- "video/mp2p": {
- "source": "apache"
- },
- "video/mp2t": {
- "source": "apache",
- "extensions": ["ts"]
- },
- "video/mp4": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mp4","mp4v","mpg4"]
- },
- "video/mp4v-es": {
- "source": "apache"
- },
- "video/mpeg": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mpeg","mpg","mpe","m1v","m2v"]
- },
- "video/mpeg4-generic": {
- "source": "apache"
- },
- "video/mpv": {
- "source": "apache"
- },
- "video/nv": {
- "source": "apache"
- },
- "video/ogg": {
- "source": "apache",
- "compressible": false,
- "extensions": ["ogv"]
- },
- "video/parityfec": {
- "source": "apache"
- },
- "video/pointer": {
- "source": "apache"
- },
- "video/quicktime": {
- "source": "apache",
- "compressible": false,
- "extensions": ["qt","mov"]
- },
- "video/raw": {
- "source": "apache"
- },
- "video/rtp-enc-aescm128": {
- "source": "apache"
- },
- "video/rtx": {
- "source": "apache"
- },
- "video/smpte292m": {
- "source": "apache"
- },
- "video/ulpfec": {
- "source": "apache"
- },
- "video/vc1": {
- "source": "apache"
- },
- "video/vnd.cctv": {
- "source": "apache"
- },
- "video/vnd.dece.hd": {
- "source": "apache",
- "extensions": ["uvh","uvvh"]
- },
- "video/vnd.dece.mobile": {
- "source": "apache",
- "extensions": ["uvm","uvvm"]
- },
- "video/vnd.dece.mp4": {
- "source": "apache"
- },
- "video/vnd.dece.pd": {
- "source": "apache",
- "extensions": ["uvp","uvvp"]
- },
- "video/vnd.dece.sd": {
- "source": "apache",
- "extensions": ["uvs","uvvs"]
- },
- "video/vnd.dece.video": {
- "source": "apache",
- "extensions": ["uvv","uvvv"]
- },
- "video/vnd.directv.mpeg": {
- "source": "apache"
- },
- "video/vnd.directv.mpeg-tts": {
- "source": "apache"
- },
- "video/vnd.dlna.mpeg-tts": {
- "source": "apache"
- },
- "video/vnd.dvb.file": {
- "source": "apache",
- "extensions": ["dvb"]
- },
- "video/vnd.fvt": {
- "source": "apache",
- "extensions": ["fvt"]
- },
- "video/vnd.hns.video": {
- "source": "apache"
- },
- "video/vnd.iptvforum.1dparityfec-1010": {
- "source": "apache"
- },
- "video/vnd.iptvforum.1dparityfec-2005": {
- "source": "apache"
- },
- "video/vnd.iptvforum.2dparityfec-1010": {
- "source": "apache"
- },
- "video/vnd.iptvforum.2dparityfec-2005": {
- "source": "apache"
- },
- "video/vnd.iptvforum.ttsavc": {
- "source": "apache"
- },
- "video/vnd.iptvforum.ttsmpeg2": {
- "source": "apache"
- },
- "video/vnd.motorola.video": {
- "source": "apache"
- },
- "video/vnd.motorola.videop": {
- "source": "apache"
- },
- "video/vnd.mpegurl": {
- "source": "apache",
- "extensions": ["mxu","m4u"]
- },
- "video/vnd.ms-playready.media.pyv": {
- "source": "apache",
- "extensions": ["pyv"]
- },
- "video/vnd.nokia.interleaved-multimedia": {
- "source": "apache"
- },
- "video/vnd.nokia.videovoip": {
- "source": "apache"
- },
- "video/vnd.objectvideo": {
- "source": "apache"
- },
- "video/vnd.sealed.mpeg1": {
- "source": "apache"
- },
- "video/vnd.sealed.mpeg4": {
- "source": "apache"
- },
- "video/vnd.sealed.swf": {
- "source": "apache"
- },
- "video/vnd.sealedmedia.softseal.mov": {
- "source": "apache"
- },
- "video/vnd.uvvu.mp4": {
- "source": "apache",
- "extensions": ["uvu","uvvu"]
- },
- "video/vnd.vivo": {
- "source": "apache",
- "extensions": ["viv"]
- },
- "video/webm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["webm"]
- },
- "video/x-f4v": {
- "source": "apache",
- "extensions": ["f4v"]
- },
- "video/x-fli": {
- "source": "apache",
- "extensions": ["fli"]
- },
- "video/x-flv": {
- "source": "apache",
- "compressible": false,
- "extensions": ["flv"]
- },
- "video/x-m4v": {
- "source": "apache",
- "extensions": ["m4v"]
- },
- "video/x-matroska": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mkv","mk3d","mks"]
- },
- "video/x-mng": {
- "source": "apache",
- "extensions": ["mng"]
- },
- "video/x-ms-asf": {
- "source": "apache",
- "extensions": ["asf","asx"]
- },
- "video/x-ms-vob": {
- "source": "apache",
- "extensions": ["vob"]
- },
- "video/x-ms-wm": {
- "source": "apache",
- "extensions": ["wm"]
- },
- "video/x-ms-wmv": {
- "source": "apache",
- "compressible": false,
- "extensions": ["wmv"]
- },
- "video/x-ms-wmx": {
- "source": "apache",
- "extensions": ["wmx"]
- },
- "video/x-ms-wvx": {
- "source": "apache",
- "extensions": ["wvx"]
- },
- "video/x-msvideo": {
- "source": "apache",
- "extensions": ["avi"]
- },
- "video/x-sgi-movie": {
- "source": "apache",
- "extensions": ["movie"]
- },
- "video/x-smv": {
- "source": "apache",
- "extensions": ["smv"]
- },
- "x-conference/x-cooltalk": {
- "source": "apache",
- "extensions": ["ice"]
- },
- "x-shader/x-fragment": {
- "compressible": true
- },
- "x-shader/x-vertex": {
- "compressible": true
- }
-}
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/index.js b/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/index.js
deleted file mode 100644
index 551031f69..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * mime-db
- * Copyright(c) 2014 Jonathan Ong
- * MIT Licensed
- */
-
-/**
- * Module exports.
- */
-
-module.exports = require('./db.json')
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/package.json
deleted file mode 100644
index 6b320ab55..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db/package.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "name": "mime-db",
- "description": "Media Type Database",
- "version": "1.13.0",
- "contributors": [
- {
- "name": "Douglas Christopher Wilson",
- "email": "doug@somethingdoug.com"
- },
- {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- },
- {
- "name": "Robert Kieffer",
- "email": "robert@broofa.com",
- "url": "http://github.com/broofa"
- }
- ],
- "license": "MIT",
- "keywords": [
- "mime",
- "db",
- "type",
- "types",
- "database",
- "charset",
- "charsets"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jshttp/mime-db.git"
- },
- "devDependencies": {
- "bluebird": "2.9.27",
- "co": "4.5.4",
- "cogent": "1.0.1",
- "csv-parse": "0.1.2",
- "gnode": "0.1.1",
- "istanbul": "0.3.14",
- "mocha": "1.21.5",
- "raw-body": "2.1.0",
- "stream-to-array": "2"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "README.md",
- "db.json",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "build": "node scripts/build",
- "fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx",
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
- "update": "npm run fetch && npm run build"
- },
- "gitHead": "cd78635e4f8baf85d91b4edcd071f77f94a08c53",
- "bugs": {
- "url": "https://github.com/jshttp/mime-db/issues"
- },
- "homepage": "https://github.com/jshttp/mime-db",
- "_id": "mime-db@1.13.0",
- "_shasum": "fd6808168fe30835e7ea2205fc981d3b633e4e34",
- "_from": "mime-db@>=1.13.0 <1.14.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- },
- "maintainers": [
- {
- "name": "jongleberry",
- "email": "jonathanrichardong@gmail.com"
- },
- {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- }
- ],
- "dist": {
- "shasum": "fd6808168fe30835e7ea2205fc981d3b633e4e34",
- "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.13.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.13.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/form-data/node_modules/mime-types/package.json b/node_modules/request/node_modules/form-data/node_modules/mime-types/package.json
deleted file mode 100644
index 512f5da31..000000000
--- a/node_modules/request/node_modules/form-data/node_modules/mime-types/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "mime-types",
- "description": "The ultimate javascript content-type utility.",
- "version": "2.1.1",
- "contributors": [
- {
- "name": "Douglas Christopher Wilson",
- "email": "doug@somethingdoug.com"
- },
- {
- "name": "Jeremiah Senkpiel",
- "email": "fishrock123@rocketmail.com",
- "url": "https://searchbeam.jit.su"
- },
- {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- }
- ],
- "license": "MIT",
- "keywords": [
- "mime",
- "types"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jshttp/mime-types.git"
- },
- "dependencies": {
- "mime-db": "~1.13.0"
- },
- "devDependencies": {
- "istanbul": "0.3.14",
- "mocha": "~1.21.5"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "test": "mocha --reporter spec test/test.js",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js"
- },
- "gitHead": "c067c0b0d8a2e7df82c356dc295852688be1245c",
- "bugs": {
- "url": "https://github.com/jshttp/mime-types/issues"
- },
- "homepage": "https://github.com/jshttp/mime-types",
- "_id": "mime-types@2.1.1",
- "_shasum": "c7b692796d5166f4826d10b4675c8a916657d04e",
- "_from": "mime-types@>=2.1.1 <3.0.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- },
- "maintainers": [
- {
- "name": "jongleberry",
- "email": "jonathanrichardong@gmail.com"
- },
- {
- "name": "fishrock123",
- "email": "fishrock123@rocketmail.com"
- },
- {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- }
- ],
- "dist": {
- "shasum": "c7b692796d5166f4826d10b4675c8a916657d04e",
- "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/form-data/package.json b/node_modules/request/node_modules/form-data/package.json
deleted file mode 100644
index 50f6151ae..000000000
--- a/node_modules/request/node_modules/form-data/package.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "author": {
- "name": "Felix Geisendörfer",
- "email": "felix@debuggable.com",
- "url": "http://debuggable.com/"
- },
- "name": "form-data",
- "description": "A module to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.",
- "version": "1.0.0-rc1",
- "repository": {
- "type": "git",
- "url": "git://github.com/felixge/node-form-data.git"
- },
- "main": "./lib/form_data",
- "scripts": {
- "test": "node test/run.js"
- },
- "engines": {
- "node": ">= 0.10"
- },
- "dependencies": {
- "async": "^1.2.1",
- "combined-stream": "^1.0.3",
- "mime-types": "^2.1.1"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "https://raw.github.com/felixge/node-form-data/master/License"
- }
- ],
- "devDependencies": {
- "fake": "^0.2.2",
- "far": "^0.0.7",
- "formidable": "^1.0.17",
- "request": "^2.57.0"
- },
- "gitHead": "e6650a4c078fd09c130ed712848d71d8609c6518",
- "bugs": {
- "url": "https://github.com/felixge/node-form-data/issues"
- },
- "homepage": "https://github.com/felixge/node-form-data#readme",
- "_id": "form-data@1.0.0-rc1",
- "_shasum": "de5d87ff28439596f4f5500bff58d1244d54793a",
- "_from": "form-data@>=1.0.0-rc1 <1.1.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- "dist": {
- "shasum": "de5d87ff28439596f4f5500bff58d1244d54793a",
- "tarball": "http://registry.npmjs.org/form-data/-/form-data-1.0.0-rc1.tgz"
- },
- "maintainers": [
- {
- "name": "felixge",
- "email": "felix@debuggable.com"
- },
- {
- "name": "idralyuk",
- "email": "igor@buran.us"
- },
- {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "celer",
- "email": "dtyree77@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc1.tgz"
-}
diff --git a/node_modules/request/node_modules/har-validator/LICENSE b/node_modules/request/node_modules/har-validator/LICENSE
deleted file mode 100644
index d52787158..000000000
--- a/node_modules/request/node_modules/har-validator/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Ahmad Nassri (https://www.ahmadnassri.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/request/node_modules/har-validator/README.md b/node_modules/request/node_modules/har-validator/README.md
deleted file mode 100644
index 4e580ab86..000000000
--- a/node_modules/request/node_modules/har-validator/README.md
+++ /dev/null
@@ -1,362 +0,0 @@
-# HAR Validator [![version][npm-version]][npm-url] [![License][npm-license]][license-url]
-
-Extremely fast HTTP Archive ([HAR](http://www.softwareishard.com/blog/har-12-spec/)) validator using JSON Schema.
-
-[![Build Status][travis-image]][travis-url]
-[![Downloads][npm-downloads]][npm-url]
-[![Code Climate][codeclimate-quality]][codeclimate-url]
-[![Coverage Status][codeclimate-coverage]][codeclimate-url]
-[![Dependencies][david-image]][david-url]
-
-## Install
-
-```shell
-# to use in cli
-npm install --global har-validator
-
-# to use as a module
-npm install --save har-validator
-```
-
-## Usage
-
-```
-
- Usage: har-validator [options] <files ...>
-
- Options:
-
- -h, --help output usage information
- -V, --version output the version number
- -s, --schema [name] validate schema name (log, request, response, etc ...)
-
-```
-
-###### Example
-
-```shell
-har-validator har.json
-
-har-validator --schema request request.json
-```
-
-## API
-
-### Validate(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a full [HAR](http://www.softwareishard.com/blog/har-12-spec/) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var HAR = require('./har.json');
-var validate = require('har-validator');
-
-validate(HAR, function (e, valid) {
- if (e) console.log(e.errors)
-
- if (valid) console.log('horray!');
-});
-```
-
-### Validate.log(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [log](http://www.softwareishard.com/blog/har-12-spec/#log) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.log(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.cache(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [cache](http://www.softwareishard.com/blog/har-12-spec/#cache) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.cache(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.cacheEntry(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a ["beforeRequest" or "afterRequest"](http://www.softwareishard.com/blog/har-12-spec/#cache) objects
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.cacheEntry(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.content(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [content](http://www.softwareishard.com/blog/har-12-spec/#content) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.content(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.cookie(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [cookie](http://www.softwareishard.com/blog/har-12-spec/#cookies) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.cookie(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.creator(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [creator](http://www.softwareishard.com/blog/har-12-spec/#creator) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.creator(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.entry(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- an [entry](http://www.softwareishard.com/blog/har-12-spec/#entries) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.entry(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.log(data [, callback])
-
-alias of [`Validate(data [, callback])`](#validate-data-callback-)
-
-### Validate.page(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [page](http://www.softwareishard.com/blog/har-12-spec/#pages) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.page(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.pageTimings(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [pageTimings](http://www.softwareishard.com/blog/har-12-spec/#pageTimings) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.pageTimings(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.postData(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [postData](http://www.softwareishard.com/blog/har-12-spec/#postData) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.postData(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.record(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [record](http://www.softwareishard.com/blog/har-12-spec/#headers) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.record(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.request(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [request](http://www.softwareishard.com/blog/har-12-spec/#request) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.request(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.response(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [response](http://www.softwareishard.com/blog/har-12-spec/#response) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.cacheEntry(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-### Validate.timings(data [, callback])
-
-Returns `true` or `false`.
-
-- **data**: `Object` *(Required)*
- a [timings](http://www.softwareishard.com/blog/har-12-spec/#timings) object
-
-- **callback**: `Function`
- gets two arguments (err, valid)
-
-```js
-var validate = require('har-validator');
-
-validate.timings(data, function (e, valid) {
- if (e) console.log(e.errors)
-});
-```
-
-## Support
-
-Donations are welcome to help support the continuous development of this project.
-
-[![Gratipay][gratipay-image]][gratipay-url]
-[![PayPal][paypal-image]][paypal-url]
-[![Flattr][flattr-image]][flattr-url]
-[![Bitcoin][bitcoin-image]][bitcoin-url]
-
-## License
-
-[MIT](LICENSE) &copy; [Ahmad Nassri](https://www.ahmadnassri.com)
-
-[license-url]: https://github.com/ahmadnassri/har-validator/blob/master/LICENSE
-
-[travis-url]: https://travis-ci.org/ahmadnassri/har-validator
-[travis-image]: https://img.shields.io/travis/ahmadnassri/har-validator.svg?style=flat-square
-
-[npm-url]: https://www.npmjs.com/package/har-validator
-[npm-license]: https://img.shields.io/npm/l/har-validator.svg?style=flat-square
-[npm-version]: https://img.shields.io/npm/v/har-validator.svg?style=flat-square
-[npm-downloads]: https://img.shields.io/npm/dm/har-validator.svg?style=flat-square
-
-[codeclimate-url]: https://codeclimate.com/github/ahmadnassri/har-validator
-[codeclimate-quality]: https://img.shields.io/codeclimate/github/ahmadnassri/har-validator.svg?style=flat-square
-[codeclimate-coverage]: https://img.shields.io/codeclimate/coverage/github/ahmadnassri/har-validator.svg?style=flat-square
-
-[david-url]: https://david-dm.org/ahmadnassri/har-validator
-[david-image]: https://img.shields.io/david/ahmadnassri/har-validator.svg?style=flat-square
-
-[gratipay-url]: https://www.gratipay.com/ahmadnassri/
-[gratipay-image]: https://img.shields.io/gratipay/ahmadnassri.svg?style=flat-square
-
-[paypal-url]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UJ2B2BTK9VLRS&on0=project&os0=har-validator
-[paypal-image]: http://img.shields.io/badge/paypal-donate-green.svg?style=flat-square
-
-[flattr-url]: https://flattr.com/submit/auto?user_id=ahmadnassri&url=https://github.com/ahmadnassri/har-validator&title=har-validator&language=&tags=github&category=software
-[flattr-image]: http://img.shields.io/badge/flattr-donate-green.svg?style=flat-square
-
-[bitcoin-image]: http://img.shields.io/badge/bitcoin-1Nb46sZRVG3or7pNaDjthcGJpWhvoPpCxy-green.svg?style=flat-square
-[bitcoin-url]: https://www.coinbase.com/checkouts/ae383ae6bb931a2fa5ad11cec115191e?name=har-validator
diff --git a/node_modules/request/node_modules/har-validator/bin/har-validator b/node_modules/request/node_modules/har-validator/bin/har-validator
deleted file mode 100755
index ab1db256f..000000000
--- a/node_modules/request/node_modules/har-validator/bin/har-validator
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env node
-
-'use strict'
-
-var Promise = require('bluebird')
-
-var chalk = require('chalk')
-var cmd = require('commander')
-var fs = Promise.promisifyAll(require('fs'))
-var path = require('path')
-var pkg = require('../package.json')
-var validate = Promise.promisifyAll(require('..'))
-
-cmd
- .version(pkg.version)
- .usage('[options] <files ...>')
- .option('-s, --schema [name]', 'validate schema name (log, request, response, etc ...)')
- .parse(process.argv)
-
-if (!cmd.args.length) {
- cmd.help()
-}
-
-if (!cmd.schema) {
- cmd.schema = 'har'
-}
-
-cmd.args.map(function (fileName) {
- var file = chalk.yellow.italic(path.basename(fileName))
-
- fs.readFileAsync(fileName)
- .then(JSON.parse)
- .then(validate[cmd.schema + 'Async'])
- .then(function () {
- console.log('%s [%s] is valid', chalk.green('✓'), file)
- })
- .catch(SyntaxError, function (e) {
- console.error('%s [%s] failed to read JSON: %s', chalk.red('✖'), file, chalk.red(e.message))
- })
- .catch(function (e) {
- e.errors.map(function (err) {
- console.error('%s [%s] failed validation: (%s: %s) %s', chalk.red('✖'), file, chalk.cyan.italic(err.field), chalk.magenta.italic(err.value), chalk.red(err.message))
- })
- })
-})
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE b/node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE
deleted file mode 100644
index a3966cf93..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Petka Antonov
-
-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:</p>
-
-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/request/node_modules/har-validator/node_modules/bluebird/README.md b/node_modules/request/node_modules/har-validator/node_modules/bluebird/README.md
deleted file mode 100644
index dad5dcfd1..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/README.md
+++ /dev/null
@@ -1,676 +0,0 @@
-<a href="http://promisesaplus.com/">
- <img src="http://promisesaplus.com/assets/logo-small.png" alt="Promises/A+ logo"
- title="Promises/A+ 1.1 compliant" align="right" />
-</a>
-[![Build Status](https://travis-ci.org/petkaantonov/bluebird.svg?branch=master)](https://travis-ci.org/petkaantonov/bluebird)
-[![coverage-98%](http://img.shields.io/badge/coverage-98%-brightgreen.svg?style=flat)](http://petkaantonov.github.io/bluebird/coverage/debug/index.html)
-
-
-# Introduction
-
-Bluebird is a fully featured [promise](#what-are-promises-and-why-should-i-use-them) library with focus on innovative features and performance
-
-
-
-# Topics
-
-- [Features](#features)
-- [Quick start](#quick-start)
-- [API Reference and examples](API.md)
-- [Support](#support)
-- [What are promises and why should I use them?](#what-are-promises-and-why-should-i-use-them)
-- [Questions and issues](#questions-and-issues)
-- [Error handling](#error-handling)
-- [Development](#development)
- - [Testing](#testing)
- - [Benchmarking](#benchmarks)
- - [Custom builds](#custom-builds)
- - [For library authors](#for-library-authors)
-- [What is the sync build?](#what-is-the-sync-build)
-- [License](#license)
-- [Snippets for common problems](https://github.com/petkaantonov/bluebird/wiki/Snippets)
-- [Promise anti-patterns](https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns)
-- [Changelog](changelog.md)
-- [Optimization guide](#optimization-guide)
-
-# Features
-<img src="http://petkaantonov.github.io/bluebird/logo.png" alt="bluebird logo" align="right" />
-
-- [Promises A+](http://promisesaplus.com)
-- [Synchronous inspection](API.md#synchronous-inspection)
-- [Concurrency coordination](API.md#collections)
-- [Promisification on steroids](API.md#promisification)
-- [Resource management through a parallel of python `with`/C# `using`](API.md#resource-management)
-- [Cancellation and timeouts](API.md#cancellation)
-- [Parallel for C# `async` and `await`](API.md#generators)
-- Mind blowing utilities such as
- - [`.bind()`](API.md#binddynamic-thisarg---promise)
- - [`.call()`](API.md#callstring-propertyname--dynamic-arg---promise)
- - [`Promise.join()`](API.md#promisejoinpromisethenablevalue-promises-function-handler---promise)
- - [And](API.md#core) [much](API.md#timers) [more](API.md#utility)!
-- [Practical debugging solutions and sane defaults](#error-handling)
-- [Sick performance](benchmark/)
-
-<hr>
-
-# Quick start
-
-## Node.js
-
- npm install bluebird
-
-Then:
-
-```js
-var Promise = require("bluebird");
-```
-
-## Browsers
-
-There are many ways to use bluebird in browsers:
-
-- Direct downloads
- - Full build [bluebird.js](https://cdn.jsdelivr.net/bluebird/latest/bluebird.js)
- - Full build minified [bluebird.min.js](https://cdn.jsdelivr.net/bluebird/latest/bluebird.min.js)
-- You may use browserify on the main export
-- You may use the [bower](http://bower.io) package.
-
-When using script tags the global variables `Promise` and `P` (alias for `Promise`) become available.
-
-A [minimal bluebird browser build](#custom-builds) is &asymp;38.92KB minified*, 11.65KB gzipped and has no external dependencies.
-
-*Google Closure Compiler using Simple.
-
-#### Browser support
-
-Browsers that [implement ECMA-262, edition 3](http://en.wikipedia.org/wiki/Ecmascript#Implementations) and later are supported.
-
-[![Selenium Test Status](https://saucelabs.com/browser-matrix/petka_antonov.svg)](https://saucelabs.com/u/petka_antonov)
-
-**Note** that in ECMA-262, edition 3 (IE7, IE8 etc.) it is not possible to use methods that have keyword names like `.catch` and `.finally`. The [API documentation](API.md) always lists a compatible alternative name that you can use if you need to support these browsers. For example `.catch` is replaced with `.caught` and `.finally` with `.lastly`.
-
-Also, [long stack trace](API.md#promiselongstacktraces---void) support is only available in Chrome, Firefox and Internet Explorer 10+.
-
-After quick start, see [API Reference and examples](API.md)
-
-<hr>
-
-# Support
-
-- Mailing list: [bluebird-js@googlegroups.com](https://groups.google.com/forum/#!forum/bluebird-js)
-- IRC: #promises @freenode
-- StackOverflow: [bluebird tag](http://stackoverflow.com/questions/tagged/bluebird)
-- Bugs and feature requests: [github issue tracker](https://github.com/petkaantonov/bluebird/issues?state=open)
-
-<hr>
-
-# What are promises and why should I use them?
-
-You should use promises to turn this:
-
-```js
-fs.readFile("file.json", function(err, val) {
- if( err ) {
- console.error("unable to read file");
- }
- else {
- try {
- val = JSON.parse(val);
- console.log(val.success);
- }
- catch( e ) {
- console.error("invalid json in file");
- }
- }
-});
-```
-
-Into this:
-
-```js
-fs.readFileAsync("file.json").then(JSON.parse).then(function(val) {
- console.log(val.success);
-})
-.catch(SyntaxError, function(e) {
- console.error("invalid json in file");
-})
-.catch(function(e) {
- console.error("unable to read file")
-});
-```
-
-*If you are wondering "there is no `readFileAsync` method on `fs` that returns a promise", see [promisification](API.md#promisification)*
-
-Actually you might notice the latter has a lot in common with code that would do the same using synchronous I/O:
-
-```js
-try {
- var val = JSON.parse(fs.readFileSync("file.json"));
- console.log(val.success);
-}
-//Syntax actually not supported in JS but drives the point
-catch(SyntaxError e) {
- console.error("invalid json in file");
-}
-catch(Error e) {
- console.error("unable to read file")
-}
-```
-
-And that is the point - being able to have something that is a lot like `return` and `throw` in synchronous code.
-
-You can also use promises to improve code that was written with callback helpers:
-
-
-```js
-//Copyright Plato http://stackoverflow.com/a/19385911/995876
-//CC BY-SA 2.5
-mapSeries(URLs, function (URL, done) {
- var options = {};
- needle.get(URL, options, function (error, response, body) {
- if (error) {
- return done(error)
- }
- try {
- var ret = JSON.parse(body);
- return done(null, ret);
- }
- catch (e) {
- done(e);
- }
- });
-}, function (err, results) {
- if (err) {
- console.log(err)
- } else {
- console.log('All Needle requests successful');
- // results is a 1 to 1 mapping in order of URLs > needle.body
- processAndSaveAllInDB(results, function (err) {
- if (err) {
- return done(err)
- }
- console.log('All Needle requests saved');
- done(null);
- });
- }
-});
-```
-
-Is more pleasing to the eye when done with promises:
-
-```js
-Promise.promisifyAll(needle);
-var options = {};
-
-var current = Promise.resolve();
-Promise.map(URLs, function(URL) {
- current = current.then(function () {
- return needle.getAsync(URL, options);
- });
- return current;
-}).map(function(responseAndBody){
- return JSON.parse(responseAndBody[1]);
-}).then(function (results) {
- return processAndSaveAllInDB(results);
-}).then(function(){
- console.log('All Needle requests saved');
-}).catch(function (e) {
- console.log(e);
-});
-```
-
-Also promises don't just give you correspondences for synchronous features but can also be used as limited event emitters or callback aggregators.
-
-More reading:
-
- - [Promise nuggets](https://promise-nuggets.github.io/)
- - [Why I am switching to promises](http://spion.github.io/posts/why-i-am-switching-to-promises.html)
- - [What is the the point of promises](http://domenic.me/2012/10/14/youre-missing-the-point-of-promises/#toc_1)
- - [Snippets for common problems](https://github.com/petkaantonov/bluebird/wiki/Snippets)
- - [Promise anti-patterns](https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns)
-
-# Questions and issues
-
-If you find a bug in bluebird or have a feature request, file an issue in the [github issue tracker](https://github.com/petkaantonov/bluebird/issues). Anything else, such as questions for help in using the library, should be posted in [StackOverflow](http://stackoverflow.com/questions/tagged/bluebird) under tags `promise` and `bluebird`.
-
-# Error handling
-
-This is a problem every promise library needs to handle in some way. Unhandled rejections/exceptions don't really have a good agreed-on asynchronous correspondence. The problem is that it is impossible to predict the future and know if a rejected promise will eventually be handled.
-
-There are two common pragmatic attempts at solving the problem that promise libraries do.
-
-The more popular one is to have the user explicitly communicate that they are done and any unhandled rejections should be thrown, like so:
-
-```js
-download().then(...).then(...).done();
-```
-
-For handling this problem, in my opinion, this is completely unacceptable and pointless. The user must remember to explicitly call `.done` and that cannot be justified when the problem is forgetting to create an error handler in the first place.
-
-The second approach, which is what bluebird by default takes, is to call a registered handler if a rejection is unhandled by the start of a second turn. The default handler is to write the stack trace to `stderr` or `console.error` in browsers. This is close to what happens with synchronous code - your code doesn't work as expected and you open console and see a stack trace. Nice.
-
-Of course this is not perfect, if your code for some reason needs to swoop in and attach error handler to some promise after the promise has been hanging around a while then you will see annoying messages. In that case you can use the `.done()` method to signal that any hanging exceptions should be thrown.
-
-If you want to override the default handler for these possibly unhandled rejections, you can pass yours like so:
-
-```js
-Promise.onPossiblyUnhandledRejection(function(error){
- throw error;
-});
-```
-
-If you want to also enable long stack traces, call:
-
-```js
-Promise.longStackTraces();
-```
-
-right after the library is loaded.
-
-In node.js use the environment flag `BLUEBIRD_DEBUG`:
-
-```
-BLUEBIRD_DEBUG=1 node server.js
-```
-
-to enable long stack traces in all instances of bluebird.
-
-Long stack traces cannot be disabled after being enabled, and cannot be enabled after promises have already been created. Long stack traces imply a substantial performance penalty, even after using every trick to optimize them.
-
-Long stack traces are enabled by default in the debug build.
-
-#### Expected and unexpected errors
-
-A practical problem with Promises/A+ is that it models Javascript `try-catch` too closely for its own good. Therefore by default promises inherit `try-catch` warts such as the inability to specify the error types that the catch block is eligible for. It is an anti-pattern in every other language to use catch-all handlers because they swallow exceptions that you might not know about.
-
-Now, Javascript does have a perfectly fine and working way of creating error type hierarchies. It is still quite awkward to use them with the built-in `try-catch` however:
-
-```js
-try {
- //code
-}
-catch(e) {
- if( e instanceof WhatIWantError) {
- //handle
- }
- else {
- throw e;
- }
-}
-```
-
-Without such checking, unexpected errors would be silently swallowed. However, with promises, bluebird brings the future (hopefully) here now and extends the `.catch` to [accept potential error type eligibility](API.md#catchfunction-errorclass-function-handler---promise).
-
-For instance here it is expected that some evil or incompetent entity will try to crash our server from `SyntaxError` by providing syntactically invalid JSON:
-
-```js
-getJSONFromSomewhere().then(function(jsonString) {
- return JSON.parse(jsonString);
-}).then(function(object) {
- console.log("it was valid json: ", object);
-}).catch(SyntaxError, function(e){
- console.log("don't be evil");
-});
-```
-
-Here any kind of unexpected error will be automatically reported on `stderr` along with a stack trace because we only register a handler for the expected `SyntaxError`.
-
-Ok, so, that's pretty neat. But actually not many libraries define error types and it is in fact a complete ghetto out there with ad hoc strings being attached as some arbitrary property name like `.name`, `.type`, `.code`, not having any property at all or even throwing strings as errors and so on. So how can we still listen for expected errors?
-
-Bluebird defines a special error type `OperationalError` (you can get a reference from `Promise.OperationalError`). This type of error is given as rejection reason by promisified methods when
-their underlying library gives an untyped, but expected error. Primitives such as strings, and error objects that are directly created like `new Error("database didn't respond")` are considered untyped.
-
-Example of such library is the node core library `fs`. So if we promisify it, we can catch just the errors we want pretty easily and have programmer errors be redirected to unhandled rejection handler so that we notice them:
-
-```js
-//Read more about promisification in the API Reference:
-//API.md
-var fs = Promise.promisifyAll(require("fs"));
-
-fs.readFileAsync("myfile.json").then(JSON.parse).then(function (json) {
- console.log("Successful json")
-}).catch(SyntaxError, function (e) {
- console.error("file contains invalid json");
-}).catch(Promise.OperationalError, function (e) {
- console.error("unable to read file, because: ", e.message);
-});
-```
-
-The last `catch` handler is only invoked when the `fs` module explicitly used the `err` argument convention of async callbacks to inform of an expected error. The `OperationalError` instance will contain the original error in its `.cause` property but it does have a direct copy of the `.message` and `.stack` too. In this code any unexpected error - be it in our code or the `fs` module - would not be caught by these handlers and therefore not swallowed.
-
-Since a `catch` handler typed to `Promise.OperationalError` is expected to be used very often, it has a neat shorthand:
-
-```js
-.error(function (e) {
- console.error("unable to read file, because: ", e.message);
-});
-```
-
-See [API documentation for `.error()`](API.md#error-rejectedhandler----promise)
-
-Finally, Bluebird also supports predicate-based filters. If you pass a
-predicate function instead of an error type, the predicate will receive
-the error as an argument. The return result will be used to determine whether
-the error handler should be called.
-
-Predicates should allow for very fine grained control over caught errors:
-pattern matching, error typesets with set operations and many other techniques
-can be implemented on top of them.
-
-Example of using a predicate-based filter:
-
-```js
-var Promise = require("bluebird");
-var request = Promise.promisify(require("request"));
-
-function clientError(e) {
- return e.code >= 400 && e.code < 500;
-}
-
-request("http://www.google.com").then(function(contents){
- console.log(contents);
-}).catch(clientError, function(e){
- //A client error like 400 Bad Request happened
-});
-```
-
-**Danger:** The JavaScript language allows throwing primitive values like strings. Throwing primitives can lead to worse or no stack traces. Primitives [are not exceptions](http://www.devthought.com/2011/12/22/a-string-is-not-an-error/). You should consider always throwing Error objects when handling exceptions.
-
-<hr>
-
-#### How do long stack traces differ from e.g. Q?
-
-Bluebird attempts to have more elaborate traces. Consider:
-
-```js
-Error.stackTraceLimit = 25;
-Q.longStackSupport = true;
-Q().then(function outer() {
- return Q().then(function inner() {
- return Q().then(function evenMoreInner() {
- a.b.c.d();
- }).catch(function catcher(e){
- console.error(e.stack);
- });
- })
-});
-```
-
-You will see
-
- ReferenceError: a is not defined
- at evenMoreInner (<anonymous>:7:13)
- From previous event:
- at inner (<anonymous>:6:20)
-
-Compare to:
-
-```js
-Error.stackTraceLimit = 25;
-Promise.longStackTraces();
-Promise.resolve().then(function outer() {
- return Promise.resolve().then(function inner() {
- return Promise.resolve().then(function evenMoreInner() {
- a.b.c.d()
- }).catch(function catcher(e){
- console.error(e.stack);
- });
- });
-});
-```
-
- ReferenceError: a is not defined
- at evenMoreInner (<anonymous>:7:13)
- From previous event:
- at inner (<anonymous>:6:36)
- From previous event:
- at outer (<anonymous>:5:32)
- From previous event:
- at <anonymous>:4:21
- at Object.InjectedScript._evaluateOn (<anonymous>:572:39)
- at Object.InjectedScript._evaluateAndWrap (<anonymous>:531:52)
- at Object.InjectedScript.evaluate (<anonymous>:450:21)
-
-
-A better and more practical example of the differences can be seen in gorgikosev's [debuggability competition](https://github.com/spion/async-compare#debuggability).
-
-<hr>
-
-# Development
-
-For development tasks such as running benchmarks or testing, you need to clone the repository and install dev-dependencies.
-
-Install [node](http://nodejs.org/) and [npm](https://npmjs.org/)
-
- git clone git@github.com:petkaantonov/bluebird.git
- cd bluebird
- npm install
-
-## Testing
-
-To run all tests, run
-
- node tools/test
-
-If you need to run generator tests run the `tool/test.js` script with `--harmony` argument and node 0.11+:
-
- node-dev --harmony tools/test
-
-You may specify an individual test file to run with the `--run` script flag:
-
- node tools/test --run=cancel.js
-
-
-This enables output from the test and may give a better idea where the test is failing. The paramter to `--run` can be any file name located in `test/mocha` folder.
-
-#### Testing in browsers
-
-To run the test in a browser instead of node, pass the flag `--browser` to the test tool
-
- node tools/test --run=cancel.js --browser
-
-This will automatically create a server (default port 9999) and open it in your default browser once the tests have been compiled.
-
-Keep the test tab active because some tests are timing-sensitive and will fail if the browser is throttling timeouts. Chrome will do this for example when the tab is not active.
-
-#### Supported options by the test tool
-
-The value of boolean flags is determined by presence, if you want to pass false value for a boolean flag, use the `no-`-prefix e.g. `--no-browser`.
-
- - `--run=String`. Which tests to run (or compile when testing in browser). Default `"all"`. Can also be a glob string (relative to ./test/mocha folder)
- - `--cover=String`. Create code coverage using the String as istanbul reporter. Coverage is created in the ./coverage folder. No coverage is created by default, default reporter is `"html"` (use `--cover` to use default reporter).
- - `--browser` - Whether to compile tests for browsers. Default `false`.
- - `--port=Number` - Whe port where local server is hosted when testing in browser. Default `9999`
- - `--execute-browser-tests` - Whether to execute the compiled tests for browser when using `--browser`. Default `true`.
- - `--open-browser` - Whether to open the default browser when executing browser tests. Default `true`.
- - `--fake-timers` - Whether to use fake timers (`setTimeout` etc) when running tests in node. Default `true`.
- - `--js-hint` - Whether to run JSHint on source files. Default `true`.
- - `--saucelabs` Wheter to create a tunnel to sauce labs and run tests in their VMs instead of your browser when compiling tests for browser.Default `false`.
-
-## Benchmarks
-
-To run a benchmark, run the given command for a benchmark while on the project root. Requires bash (on windows the mingw32 that comes with git works fine too).
-
-Node 0.11.2+ is required to run the generator examples.
-
-### 1\. DoxBee sequential
-
-Currently the most relevant benchmark is @gorkikosev's benchmark in the article [Analysis of generators and other async patterns in node](http://spion.github.io/posts/analysis-generators-and-other-async-patterns-node.html). The benchmark emulates a situation where n amount of users are making a request in parallel to execute some mixed async/sync action. The benchmark has been modified to include a warm-up phase to minimize any JITing during timed sections.
-
-Command: `bench doxbee`
-
-### 2\. Made-up parallel
-
-This made-up scenario runs 15 shimmed queries in parallel.
-
-Command: `bench parallel`
-
-## Custom builds
-
-Custom builds for browsers are supported through a command-line utility.
-
-
-<table>
- <caption>The following features can be disabled</caption>
- <thead>
- <tr>
- <th>Feature(s)</th>
- <th>Command line identifier</th>
- </tr>
- </thead>
- <tbody>
-
- <tr><td><a href="API.md#any---promise"><code>.any</code></a> and <a href="API.md#promiseanyarraydynamicpromise-values---promise"><code>Promise.any</code></a></td><td><code>any</code></td></tr>
- <tr><td><a href="API.md#race---promise"><code>.race</code></a> and <a href="API.md#promiseracearraypromise-promises---promise"><code>Promise.race</code></a></td><td><code>race</code></td></tr>
- <tr><td><a href="API.md#callstring-propertyname--dynamic-arg---promise"><code>.call</code></a> and <a href="API.md#getstring-propertyname---promise"><code>.get</code></a></td><td><code>call_get</code></td></tr>
- <tr><td><a href="API.md#filterfunction-filterer---promise"><code>.filter</code></a> and <a href="API.md#promisefilterarraydynamicpromise-values-function-filterer---promise"><code>Promise.filter</code></a></td><td><code>filter</code></td></tr>
- <tr><td><a href="API.md#mapfunction-mapper---promise"><code>.map</code></a> and <a href="API.md#promisemaparraydynamicpromise-values-function-mapper---promise"><code>Promise.map</code></a></td><td><code>map</code></td></tr>
- <tr><td><a href="API.md#reducefunction-reducer--dynamic-initialvalue---promise"><code>.reduce</code></a> and <a href="API.md#promisereducearraydynamicpromise-values-function-reducer--dynamic-initialvalue---promise"><code>Promise.reduce</code></a></td><td><code>reduce</code></td></tr>
- <tr><td><a href="API.md#props---promise"><code>.props</code></a> and <a href="API.md#promisepropsobjectpromise-object---promise"><code>Promise.props</code></a></td><td><code>props</code></td></tr>
- <tr><td><a href="API.md#settle---promise"><code>.settle</code></a> and <a href="API.md#promisesettlearraydynamicpromise-values---promise"><code>Promise.settle</code></a></td><td><code>settle</code></td></tr>
- <tr><td><a href="API.md#someint-count---promise"><code>.some</code></a> and <a href="API.md#promisesomearraydynamicpromise-values-int-count---promise"><code>Promise.some</code></a></td><td><code>some</code></td></tr>
- <tr><td><a href="API.md#nodeifyfunction-callback---promise"><code>.nodeify</code></a></td><td><code>nodeify</code></td></tr>
- <tr><td><a href="API.md#promisecoroutinegeneratorfunction-generatorfunction---function"><code>Promise.coroutine</code></a> and <a href="API.md#promisespawngeneratorfunction-generatorfunction---promise"><code>Promise.spawn</code></a></td><td><code>generators</code></td></tr>
- <tr><td><a href="API.md#progression">Progression</a></td><td><code>progress</code></td></tr>
- <tr><td><a href="API.md#promisification">Promisification</a></td><td><code>promisify</code></td></tr>
- <tr><td><a href="API.md#cancellation">Cancellation</a></td><td><code>cancel</code></td></tr>
- <tr><td><a href="API.md#timers">Timers</a></td><td><code>timers</code></td></tr>
- <tr><td><a href="API.md#resource-management">Resource management</a></td><td><code>using</code></td></tr>
-
- </tbody>
-</table>
-
-
-Make sure you have cloned the repo somewhere and did `npm install` successfully.
-
-After that you can run:
-
- node tools/build --features="core"
-
-
-The above builds the most minimal build you can get. You can add more features separated by spaces from the above list:
-
- node tools/build --features="core filter map reduce"
-
-The custom build file will be found from `/js/browser/bluebird.js`. It will have a comment that lists the disabled and enabled features.
-
-Note that the build leaves the `/js/main` etc folders with same features so if you use the folder for node.js at the same time, don't forget to build
-a full version afterwards (after having taken a copy of the bluebird.js somewhere):
-
- node tools/build --debug --main --zalgo --browser --minify
-
-#### Supported options by the build tool
-
-The value of boolean flags is determined by presence, if you want to pass false value for a boolean flag, use the `no-`-prefix e.g. `--no-debug`.
-
- - `--main` - Whether to build the main build. The main build is placed at `js/main` directory. Default `false`.
- - `--debug` - Whether to build the debug build. The debug build is placed at `js/debug` directory. Default `false`.
- - `--zalgo` - Whether to build the zalgo build. The zalgo build is placed at `js/zalgo` directory. Default `false`.
- - `--browser` - Whether to compile the browser build. The browser build file is placed at `js/browser/bluebird.js` Default `false`.
- - `--minify` - Whether to minify the compiled browser build. The minified browser build file is placed at `js/browser/bluebird.min.js` Default `true`.
- - `--features=String` - See [custom builds](#custom-builds)
-
-<hr>
-
-## For library authors
-
-Building a library that depends on bluebird? You should know about a few features.
-
-If your library needs to do something obtrusive like adding or modifying methods on the `Promise` prototype, uses long stack traces or uses a custom unhandled rejection handler then... that's totally ok as long as you don't use `require("bluebird")`. Instead you should create a file
-that creates an isolated copy. For example, creating a file called `bluebird-extended.js` that contains:
-
-```js
- //NOTE the function call right after
-module.exports = require("bluebird/js/main/promise")();
-```
-
-Your library can then use `var Promise = require("bluebird-extended");` and do whatever it wants with it. Then if the application or other library uses their own bluebird promises they will all play well together because of Promises/A+ thenable assimilation magic.
-
-You should also know about [`.nodeify()`](API.md#nodeifyfunction-callback---promise) which makes it easy to provide a dual callback/promise API.
-
-<hr>
-
-## What is the sync build?
-
-You may now use sync build by:
-
- var Promise = require("bluebird/zalgo");
-
-The sync build is provided to see how forced asynchronity affects benchmarks. It should not be used in real code due to the implied hazards.
-
-The normal async build gives Promises/A+ guarantees about asynchronous resolution of promises. Some people think this affects performance or just plain love their code having a possibility
-of stack overflow errors and non-deterministic behavior.
-
-The sync build skips the async call trampoline completely, e.g code like:
-
- async.invoke( this.fn, this, val );
-
-Appears as this in the sync build:
-
- this.fn(val);
-
-This should pressure the CPU slightly less and thus the sync build should perform better. Indeed it does, but only marginally. The biggest performance boosts are from writing efficient Javascript, not from compromising determinism.
-
-Note that while some benchmarks are waiting for the next event tick, the CPU is actually not in use during that time. So the resulting benchmark result is not completely accurate because on node.js you only care about how much the CPU is taxed. Any time spent on CPU is time the whole process (or server) is paralyzed. And it is not graceful like it would be with threads.
-
-
-```js
-var cache = new Map(); //ES6 Map or DataStructures/Map or whatever...
-function getResult(url) {
- var resolver = Promise.pending();
- if (cache.has(url)) {
- resolver.resolve(cache.get(url));
- }
- else {
- http.get(url, function(err, content) {
- if (err) resolver.reject(err);
- else {
- cache.set(url, content);
- resolver.resolve(content);
- }
- });
- }
- return resolver.promise;
-}
-
-
-
-//The result of console.log is truly random without async guarantees
-function guessWhatItPrints( url ) {
- var i = 3;
- getResult(url).then(function(){
- i = 4;
- });
- console.log(i);
-}
-```
-
-# Optimization guide
-
-Articles about optimization will be periodically posted in [the wiki section](https://github.com/petkaantonov/bluebird/wiki), polishing edits are welcome.
-
-A single cohesive guide compiled from the articles will probably be done eventually.
-
-# License
-
-The MIT License (MIT)
-
-Copyright (c) 2014 Petka Antonov
-
-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/request/node_modules/har-validator/node_modules/bluebird/changelog.md b/node_modules/request/node_modules/har-validator/node_modules/bluebird/changelog.md
deleted file mode 100644
index 0adfb384d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/changelog.md
+++ /dev/null
@@ -1,1672 +0,0 @@
-## 2.9.30 (2015-06-14)
-
-Bugfixes:
-
- - Fix regression with `promisifyAll` not promisifying certain methods
-
-## 2.9.29 (2015-06-14)
-
-Bugfixes:
-
- - Improve `promisifyAll` detection of functions that are class constructors. Fixes mongodb 2.x promisification.
-
-## 2.9.28 (2015-06-14)
-
-Bugfixes:
-
- - Fix handled rejection being reported as unhandled in certain scenarios when using [.all](.) or [Promise.join](.) ([#645](.))
- - Fix custom scheduler not being called in Google Chrome when long stack traces are enabled ([#650](.))
-
-## 2.9.27 (2015-05-30)
-
-Bugfixes:
-
- - Fix `sinon.useFakeTimers()` breaking scheduler ([#631](.))
-
-Misc:
-
- - Add nw testing facilities (`node tools/test --nw`)
-
-## 2.9.26 (2015-05-25)
-
-Bugfixes:
-
- - Fix crash in NW [#624](.)
- - Fix [`.return()`](.) not supporting `undefined` as return value [#627](.)
-
-## 2.9.25 (2015-04-28)
-
-Bugfixes:
-
- - Fix crash in node 0.8
-
-## 2.9.24 (2015-04-02)
-
-Bugfixes:
-
- - Fix not being able to load multiple bluebird copies introduced in 2.9.22 ([#559](.), [#561](.), [#560](.)).
-
-## 2.9.23 (2015-04-02)
-
-Bugfixes:
-
- - Fix node.js domain propagation ([#521](.)).
-
-## 2.9.22 (2015-04-02)
-
- - Fix `.promisify` crashing in phantom JS ([#556](.))
-
-## 2.9.21 (2015-03-30)
-
- - Fix error object's `'stack'`' overwriting causing an error when its defined to be a setter that throws an error ([#552](.)).
-
-## 2.9.20 (2015-03-29)
-
-Bugfixes:
-
- - Fix regression where there is a long delay between calling `.cancel()` and promise actually getting cancelled in Chrome when long stack traces are enabled
-
-## 2.9.19 (2015-03-29)
-
-Bugfixes:
-
- - Fix crashing in Chrome when long stack traces are disabled
-
-## 2.9.18 (2015-03-29)
-
-Bugfixes:
-
- - Fix settlePromises using trampoline
-
-## 2.9.17 (2015-03-29)
-
-
-Bugfixes:
-
- - Fix Chrome DevTools async stack traceability ([#542](.)).
-
-## 2.9.16 (2015-03-28)
-
-Features:
-
- - Use setImmediate if available
-
-## 2.9.15 (2015-03-26)
-
-Features:
-
- - Added `.asCallback` alias for `.nodeify`.
-
-Bugfixes:
-
- - Don't always use nextTick, but try to pick up setImmediate or setTimeout in NW. Fixes [#534](.), [#525](.)
- - Make progress a core feature. Fixes [#535](.) Note that progress has been removed in 3.x - this is only a fix necessary for 2.x custom builds.
-
-## 2.9.14 (2015-03-12)
-
-Bugfixes:
-
- - Always use process.nextTick. Fixes [#525](.)
-
-## 2.9.13 (2015-02-27)
-
-Bugfixes:
-
- - Fix .each, .filter, .reduce and .map callbacks being called synchornously if the input is immediate. ([#513](.))
-
-## 2.9.12 (2015-02-19)
-
-Bugfixes:
-
- - Fix memory leak introduced in 2.9.0 ([#502](.))
-
-## 2.9.11 (2015-02-19)
-
-Bugfixes:
-
- - Fix [#503](.)
-
-## 2.9.10 (2015-02-18)
-
-Bugfixes:
-
- - Fix [#501](.)
-
-## 2.9.9 (2015-02-12)
-
-Bugfixes:
-
- - Fix `TypeError: Cannot assign to read only property 'length'` when jsdom has declared a read-only length for all objects to inherit.
-
-## 2.9.8 (2015-02-10)
-
-Bugfixes:
-
- - Fix regression introduced in 2.9.7 where promisify didn't properly dynamically look up methods on `this`
-
-## 2.9.7 (2015-02-08)
-
-Bugfixes:
-
- - Fix `promisify` not retaining custom properties of the function. This enables promisifying the `"request"` module's export function and its methods at the same time.
- - Fix `promisifyAll` methods being dependent on `this` when they are not originally dependent on `this`. This enables e.g. passing promisified `fs` functions directly as callbacks without having to bind them to `fs`.
- - Fix `process.nextTick` being used over `setImmediate` in node.
-
-## 2.9.6 (2015-02-02)
-
-Bugfixes:
-
- - Node environment detection can no longer be fooled
-
-## 2.9.5 (2015-02-02)
-
-Misc:
-
- - Warn when [`.then()`](.) is passed non-functions
-
-## 2.9.4 (2015-01-30)
-
-Bugfixes:
-
- - Fix [.timeout()](.) not calling `clearTimeout` with the proper handle in node causing the process to wait for unneeded timeout. This was a regression introduced in 2.9.1.
-
-## 2.9.3 (2015-01-27)
-
-Bugfixes:
-
- - Fix node-webkit compatibility issue ([#467](https://github.com/petkaantonov/bluebird/pull/467))
- - Fix long stack trace support in recent firefox versions
-
-## 2.9.2 (2015-01-26)
-
-Bugfixes:
-
- - Fix critical bug regarding to using promisifyAll in browser that was introduced in 2.9.0 ([#466](https://github.com/petkaantonov/bluebird/issues/466)).
-
-Misc:
-
- - Add `"browser"` entry point to package.json
-
-## 2.9.1 (2015-01-24)
-
-Features:
-
- - If a bound promise is returned by the callback to [`Promise.method`](#promisemethodfunction-fn---function) and [`Promise.try`](#promisetryfunction-fn--arraydynamicdynamic-arguments--dynamic-ctx----promise), the returned promise will be bound to the same value
-
-## 2.9.0 (2015-01-24)
-
-Features:
-
- - Add [`Promise.fromNode`](API.md#promisefromnodefunction-resolver---promise)
- - Add new paramter `value` for [`Promise.bind`](API.md#promisebinddynamic-thisarg--dynamic-value---promise)
-
-Bugfixes:
-
- - Fix several issues with [`cancellation`](API.md#cancellation) and [`.bind()`](API.md#binddynamic-thisarg---promise) interoperation when `thisArg` is a promise or thenable
- - Fix promises created in [`disposers`](API#disposerfunction-disposer---disposer) not having proper long stack trace context
- - Fix [`Promise.join`](API.md#promisejoinpromisethenablevalue-promises-function-handler---promise) sometimes passing the passed in callback function as the last argument to itself.
-
-Misc:
-
- - Reduce minified full browser build file size by not including unused code generation functionality.
- - Major internal refactoring related to testing code and source code file layout
-
-## 2.8.2 (2015-01-20)
-
-Features:
-
- - [Global rejection events](https://github.com/petkaantonov/bluebird/blob/master/API.md#global-rejection-events) are now fired both as DOM3 events and as legacy events in browsers
-
-## 2.8.1 (2015-01-20)
-
-Bugfixes:
-
- - Fix long stack trace stiching consistency when rejected from thenables
-
-## 2.8.0 (2015-01-19)
-
-Features:
-
- - Major debuggability improvements:
- - Long stack traces have been re-designed. They are now much more readable,
- succint, relevant and consistent across bluebird features.
- - Long stack traces are supported now in IE10+
-
-## 2.7.1 (2015-01-15)
-
-Bugfixes:
-
- - Fix [#447](https://github.com/petkaantonov/bluebird/issues/447)
-
-## 2.7.0 (2015-01-15)
-
-Features:
-
- - Added more context to stack traces originating from coroutines ([#421](https://github.com/petkaantonov/bluebird/issues/421))
- - Implemented [global rejection events](https://github.com/petkaantonov/bluebird/blob/master/API.md#global-rejection-events) ([#428](https://github.com/petkaantonov/bluebird/issues/428), [#357](https://github.com/petkaantonov/bluebird/issues/357))
- - [Custom promisifiers](https://github.com/petkaantonov/bluebird/blob/master/API.md#option-promisifier) are now passed the default promisifier which can be used to add enhancements on top of normal node promisification
- - [Promisification filters](https://github.com/petkaantonov/bluebird/blob/master/API.md#option-filter) are now passed `passesDefaultFilter` boolean
-
-Bugfixes:
-
- - Fix `.noConflict()` call signature ([#446]())
- - Fix `Promise.method`ified functions being called with `undefined` when they were called with no arguments
-
-## 2.6.4 (2015-01-12)
-
-Bugfixes:
-
- - `OperationalErrors` thrown by promisified functions retain custom properties, such as `.code` and `.path`.
-
-## 2.6.3 (2015-01-12)
-
-Bugfixes:
-
- - Fix [#429](https://github.com/petkaantonov/bluebird/issues/429)
- - Fix [#432](https://github.com/petkaantonov/bluebird/issues/432)
- - Fix [#433](https://github.com/petkaantonov/bluebird/issues/433)
-
-## 2.6.2 (2015-01-07)
-
-Bugfixes:
-
- - Fix [#426](https://github.com/petkaantonov/bluebird/issues/426)
-
-## 2.6.1 (2015-01-07)
-
-Bugfixes:
-
- - Fixed built browser files not being included in the git tag release for bower
-
-## 2.6.0 (2015-01-06)
-
-Features:
-
- - Significantly improve parallel promise performance and memory usage (+50% faster, -50% less memory)
-
-
-## 2.5.3 (2014-12-30)
-
-## 2.5.2 (2014-12-29)
-
-Bugfixes:
-
- - Fix bug where already resolved promise gets attached more handlers while calling its handlers resulting in some handlers not being called
- - Fix bug where then handlers are not called in the same order as they would run if Promises/A+ 2.3.2 was implemented as adoption
- - Fix bug where using `Object.create(null)` as a rejection reason would crash bluebird
-
-## 2.5.1 (2014-12-29)
-
-Bugfixes:
-
- - Fix `.finally` throwing null error when it is derived from a promise that is resolved with a promise that is resolved with a promise
-
-## 2.5.0 (2014-12-28)
-
-Features:
-
- - [`.get`](#API.md#https://github.com/petkaantonov/bluebird/blob/master/API.md#getstring-propertyname---promise) now supports negative indexing.
-
-Bugfixes:
-
- - Fix bug with `Promise.method` wrapped function returning a promise that never resolves if the function returns a promise that is resolved with another promise
- - Fix bug with `Promise.delay` never resolving if the value is a promise that is resolved with another promise
-
-## 2.4.3 (2014-12-28)
-
-Bugfixes:
-
- - Fix memory leak as described in [this Promises/A+ spec issue](https://github.com/promises-aplus/promises-spec/issues/179).
-
-## 2.4.2 (2014-12-21)
-
-Bugfixes:
-
- - Fix bug where spread rejected handler is ignored in case of rejection
- - Fix synchronous scheduler passed to `setScheduler` causing infinite loop
-
-## 2.4.1 (2014-12-20)
-
-Features:
-
- - Error messages now have links to wiki pages for additional information
- - Promises now clean up all references (to handlers, child promises etc) as soon as possible.
-
-## 2.4.0 (2014-12-18)
-
-Features:
-
- - Better filtering of bluebird internal calls in long stack traces, especially when using minified file in browsers
- - Small performance improvements for all collection methods
- - Promises now delete references to handlers attached to them as soon as possible
- - Additional stack traces are now output on stderr/`console.warn` for errors that are thrown in the process/window from rejected `.done()` promises. See [#411](https://github.com/petkaantonov/bluebird/issues/411)
-
-## 2.3.11 (2014-10-31)
-
-Bugfixes:
-
- - Fix [#371](https://github.com/petkaantonov/bluebird/issues/371), [#373](https://github.com/petkaantonov/bluebird/issues/373)
-
-
-## 2.3.10 (2014-10-28)
-
-Features:
-
- - `Promise.method` no longer wraps primitive errors
- - `Promise.try` no longer wraps primitive errors
-
-## 2.3.7 (2014-10-25)
-
-Bugfixes:
-
- - Fix [#359](https://github.com/petkaantonov/bluebird/issues/359), [#362](https://github.com/petkaantonov/bluebird/issues/362) and [#364](https://github.com/petkaantonov/bluebird/issues/364)
-
-## 2.3.6 (2014-10-15)
-
-Features:
-
- - Implement [`.reflect()`](API.md#reflect---promisepromiseinspection)
-
-## 2.3.5 (2014-10-06)
-
-Bugfixes:
-
- - Fix issue when promisifying methods whose names contain the string 'args'
-
-## 2.3.4 (2014-09-27)
-
- - `P` alias was not declared inside WebWorkers
-
-## 2.3.3 (2014-09-27)
-
-Bugfixes:
-
- - Fix [#318](https://github.com/petkaantonov/bluebird/issues/318), [#314](https://github.com/petkaantonov/bluebird/issues/#314)
-
-## 2.3.2 (2014-08-25)
-
-Bugfixes:
-
- - `P` alias for `Promise` now exists in global scope when using browser builds without a module loader, fixing an issue with firefox extensions
-
-## 2.3.1 (2014-08-23)
-
-Features:
-
- - `.using` can now be used with disposers created from different bluebird copy
-
-## 2.3.0 (2014-08-13)
-
-Features:
-
- - [`.bind()`](API.md#binddynamic-thisarg---promise) and [`Promise.bind()`](API.md#promisebinddynamic-thisarg---promise) now await for the resolution of the `thisArg` if it's a promise or a thenable
-
-Bugfixes:
-
- - Fix [#276](https://github.com/petkaantonov/bluebird/issues/276)
-
-## 2.2.2 (2014-07-14)
-
- - Fix [#259](https://github.com/petkaantonov/bluebird/issues/259)
-
-## 2.2.1 (2014-07-07)
-
- - Fix multiline error messages only showing the first line
-
-## 2.2.0 (2014-07-07)
-
-Bugfixes:
-
- - `.any` and `.some` now consistently reject with RangeError when input array contains too few promises
- - Fix iteration bug with `.reduce` when input array contains already fulfilled promises
-
-## 2.1.3 (2014-06-18)
-
-Bugfixes:
-
- - Fix [#235](https://github.com/petkaantonov/bluebird/issues/235)
-
-## 2.1.2 (2014-06-15)
-
-Bugfixes:
-
- - Fix [#232](https://github.com/petkaantonov/bluebird/issues/232)
-
-## 2.1.1 (2014-06-11)
-
-## 2.1.0 (2014-06-11)
-
-Features:
-
- - Add [`promisifier`](API.md#option-promisifier) option to `Promise.promisifyAll()`
- - Improve performance of `.props()` and collection methods when used with immediate values
-
-
-Bugfixes:
-
- - Fix a bug where .reduce calls the callback for an already visited item
- - Fix a bug where stack trace limit is calculated to be too small, which resulted in too short stack traces
-
-<sub>Add undocumented experimental `yieldHandler` option to `Promise.coroutine`</sub>
-
-## 2.0.7 (2014-06-08)
-## 2.0.6 (2014-06-07)
-## 2.0.5 (2014-06-05)
-## 2.0.4 (2014-06-05)
-## 2.0.3 (2014-06-05)
-## 2.0.2 (2014-06-04)
-## 2.0.1 (2014-06-04)
-
-## 2.0.0 (2014-06-04)
-
-#What's new in 2.0
-
-- [Resource management](API.md#resource-management) - never leak resources again
-- [Promisification](API.md#promisification) on steroids - entire modules can now be promisified with one line of code
-- [`.map()`](API.md#mapfunction-mapper--object-options---promise), [`.each()`](API.md#eachfunction-iterator---promise), [`.filter()`](API.md#filterfunction-filterer--object-options---promise), [`.reduce()`](API.md#reducefunction-reducer--dynamic-initialvalue---promise) reimagined from simple sugar to powerful concurrency coordination tools
-- [API Documentation](API.md) has been reorganized and more elaborate examples added
-- Deprecated [progression](#progression-migration) and [deferreds](#deferred-migration)
-- Improved performance and readability
-
-Features:
-
-- Added [`using()`](API.md#promiseusingpromisedisposer-promise-promisedisposer-promise--function-handler---promise) and [`disposer()`](API.md#disposerfunction-disposer---disposer)
-- [`.map()`](API.md#mapfunction-mapper--object-options---promise) now calls the handler as soon as items in the input array become fulfilled
-- Added a concurrency option to [`.map()`](API.md#mapfunction-mapper--object-options---promise)
-- [`.filter()`](API.md#filterfunction-filterer--object-options---promise) now calls the handler as soon as items in the input array become fulfilled
-- Added a concurrency option to [`.filter()`](API.md#filterfunction-filterer--object-options---promise)
-- [`.reduce()`](API.md#reducefunction-reducer--dynamic-initialvalue---promise) now calls the handler as soon as items in the input array become fulfilled, but in-order
-- Added [`.each()`](API.md#eachfunction-iterator---promise)
-- [`Promise.resolve()`](API.md#promiseresolvedynamic-value---promise) behaves like `Promise.cast`. `Promise.cast` deprecated.
-- [Synchronous inspection](API.md#synchronous-inspection): Removed `.inspect()`, added [`.value()`](API.md#value---dynamic) and [`.reason()`](API.md#reason---dynamic)
-- [`Promise.join()`](API.md#promisejoinpromisethenablevalue-promises-function-handler---promise) now takes a function as the last argument
-- Added [`Promise.setScheduler()`](API.md#promisesetschedulerfunction-scheduler---void)
-- [`.cancel()`](API.md#cancelerror-reason---promise) supports a custom cancellation reason
-- [`.timeout()`](API.md#timeoutint-ms--string-message---promise) now cancels the promise instead of rejecting it
-- [`.nodeify()`](API.md#nodeifyfunction-callback--object-options---promise) now supports passing multiple success results when mapping promises to nodebacks
-- Added `suffix` and `filter` options to [`Promise.promisifyAll()`](API.md#promisepromisifyallobject-target--object-options---object)
-
-Breaking changes:
-
-- Sparse array holes are not skipped by collection methods but treated as existing elements with `undefined` value
-- `.map()` and `.filter()` do not call the given mapper or filterer function in any specific order
-- Removed the `.inspect()` method
-- Yielding an array from a coroutine is not supported by default. You can use [`coroutine.addYieldHandler()`](API.md#promisecoroutineaddyieldhandlerfunction-handler---void) to configure the old behavior (or any behavior you want).
-- [`.any()`](API.md#any---promise) and [`.some()`](API.md#someint-count---promise) no longer use an array as the rejection reason. [`AggregateError`](API.md#aggregateerror) is used instead.
-
-
-## 1.2.4 (2014-04-27)
-
-Bugfixes:
-
- - Fix promisifyAll causing a syntax error when a method name is not a valid identifier
- - Fix syntax error when es5.js is used in strict mode
-
-## 1.2.3 (2014-04-17)
-
-Bugfixes:
-
- - Fix [#179](https://github.com/petkaantonov/bluebird/issues/179)
-
-## 1.2.2 (2014-04-09)
-
-Bugfixes:
-
- - Promisified methods from promisifyAll no longer call the original method when it is overriden
- - Nodeify doesn't pass second argument to the callback if the promise is fulfilled with `undefined`
-
-## 1.2.1 (2014-03-31)
-
-Bugfixes:
-
- - Fix [#168](https://github.com/petkaantonov/bluebird/issues/168)
-
-## 1.2.0 (2014-03-29)
-
-Features:
-
- - New method: [`.value()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#value---dynamic)
- - New method: [`.reason()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#reason---dynamic)
- - New method: [`Promise.onUnhandledRejectionHandled()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#promiseonunhandledrejectionhandledfunction-handler---undefined)
- - `Promise.map()`, `.map()`, `Promise.filter()` and `.filter()` start calling their callbacks as soon as possible while retaining a correct order. See [`8085922f`](https://github.com/petkaantonov/bluebird/commit/8085922fb95a9987fda0cf2337598ab4a98dc315).
-
-Bugfixes:
-
- - Fix [#165](https://github.com/petkaantonov/bluebird/issues/165)
- - Fix [#166](https://github.com/petkaantonov/bluebird/issues/166)
-
-## 1.1.1 (2014-03-18)
-
-Bugfixes:
-
- - [#138](https://github.com/petkaantonov/bluebird/issues/138)
- - [#144](https://github.com/petkaantonov/bluebird/issues/144)
- - [#148](https://github.com/petkaantonov/bluebird/issues/148)
- - [#151](https://github.com/petkaantonov/bluebird/issues/151)
-
-## 1.1.0 (2014-03-08)
-
-Features:
-
- - Implement [`Promise.prototype.tap()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#tapfunction-handler---promise)
- - Implement [`Promise.coroutine.addYieldHandler()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#promisecoroutineaddyieldhandlerfunction-handler---void)
- - Deprecate `Promise.prototype.spawn`
-
-Bugfixes:
-
- - Fix already rejected promises being reported as unhandled when handled through collection methods
- - Fix browserisfy crashing from checking `process.version.indexOf`
-
-## 1.0.8 (2014-03-03)
-
-Bugfixes:
-
- - Fix active domain being lost across asynchronous boundaries in Node.JS 10.xx
-
-## 1.0.7 (2014-02-25)
-
-Bugfixes:
-
- - Fix handled errors being reported
-
-## 1.0.6 (2014-02-17)
-
-Bugfixes:
-
- - Fix bug with unhandled rejections not being reported
- when using `Promise.try` or `Promise.method` without
- attaching further handlers
-
-## 1.0.5 (2014-02-15)
-
-Features:
-
- - Node.js performance: promisified functions try to check amount of passed arguments in most optimal order
- - Node.js promisified functions will have same `.length` as the original function minus one (for the callback parameter)
-
-## 1.0.4 (2014-02-09)
-
-Features:
-
- - Possibly unhandled rejection handler will always get a stack trace, even if the rejection or thrown error was not an error
- - Unhandled rejections are tracked per promise, not per error. So if you create multiple branches from a single ancestor and that ancestor gets rejected, each branch with no error handler with the end will cause a possibly unhandled rejection handler invocation
-
-Bugfixes:
-
- - Fix unhandled non-writable objects or primitives not reported by possibly unhandled rejection handler
-
-## 1.0.3 (2014-02-05)
-
-Bugfixes:
-
- - [#93](https://github.com/petkaantonov/bluebird/issues/88)
-
-## 1.0.2 (2014-02-04)
-
-Features:
-
- - Significantly improve performance of foreign bluebird thenables
-
-Bugfixes:
-
- - [#88](https://github.com/petkaantonov/bluebird/issues/88)
-
-## 1.0.1 (2014-01-28)
-
-Features:
-
- - Error objects that have property `.isAsync = true` will now be caught by `.error()`
-
-Bugfixes:
-
- - Fix TypeError and RangeError shims not working without `new` operator
-
-## 1.0.0 (2014-01-12)
-
-Features:
-
- - `.filter`, `.map`, and `.reduce` no longer skip sparse array holes. This is a backwards incompatible change.
- - Like `.map` and `.filter`, `.reduce` now allows returning promises and thenables from the iteration function.
-
-Bugfixes:
-
- - [#58](https://github.com/petkaantonov/bluebird/issues/58)
- - [#61](https://github.com/petkaantonov/bluebird/issues/61)
- - [#64](https://github.com/petkaantonov/bluebird/issues/64)
- - [#60](https://github.com/petkaantonov/bluebird/issues/60)
-
-## 0.11.6-1 (2013-12-29)
-
-## 0.11.6-0 (2013-12-29)
-
-Features:
-
- - You may now return promises and thenables from the filterer function used in `Promise.filter` and `Promise.prototype.filter`.
-
- - `.error()` now catches additional sources of rejections:
-
- - Rejections originating from `Promise.reject`
-
- - Rejections originating from thenables using
- the `reject` callback
-
- - Rejections originating from promisified callbacks
- which use the `errback` argument
-
- - Rejections originating from `new Promise` constructor
- where the `reject` callback is called explicitly
-
- - Rejections originating from `PromiseResolver` where
- `.reject()` method is called explicitly
-
-Bugfixes:
-
- - Fix `captureStackTrace` being called when it was `null`
- - Fix `Promise.map` not unwrapping thenables
-
-## 0.11.5-1 (2013-12-15)
-
-## 0.11.5-0 (2013-12-03)
-
-Features:
-
- - Improve performance of collection methods
- - Improve performance of promise chains
-
-## 0.11.4-1 (2013-12-02)
-
-## 0.11.4-0 (2013-12-02)
-
-Bugfixes:
-
- - Fix `Promise.some` behavior with arguments like negative integers, 0...
- - Fix stack traces of synchronously throwing promisified functions'
-
-## 0.11.3-0 (2013-12-02)
-
-Features:
-
- - Improve performance of generators
-
-Bugfixes:
-
- - Fix critical bug with collection methods.
-
-## 0.11.2-0 (2013-12-02)
-
-Features:
-
- - Improve performance of all collection methods
-
-## 0.11.1-0 (2013-12-02)
-
-Features:
-
-- Improve overall performance.
-- Improve performance of promisified functions.
-- Improve performance of catch filters.
-- Improve performance of .finally.
-
-Bugfixes:
-
-- Fix `.finally()` rejecting if passed non-function. It will now ignore non-functions like `.then`.
-- Fix `.finally()` not converting thenables returned from the handler to promises.
-- `.spread()` now rejects if the ultimate value given to it is not spreadable.
-
-## 0.11.0-0 (2013-12-02)
-
-Features:
-
- - Improve overall performance when not using `.bind()` or cancellation.
- - Promises are now not cancellable by default. This is backwards incompatible change - see [`.cancellable()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#cancellable---promise)
- - [`Promise.delay`](https://github.com/petkaantonov/bluebird/blob/master/API.md#promisedelaydynamic-value-int-ms---promise)
- - [`.delay()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#delayint-ms---promise)
- - [`.timeout()`](https://github.com/petkaantonov/bluebird/blob/master/API.md#timeoutint-ms--string-message---promise)
-
-## 0.10.14-0 (2013-12-01)
-
-Bugfixes:
-
- - Fix race condition when mixing 3rd party asynchrony.
-
-## 0.10.13-1 (2013-11-30)
-
-## 0.10.13-0 (2013-11-30)
-
-Bugfixes:
-
- - Fix another bug with progression.
-
-## 0.10.12-0 (2013-11-30)
-
-Bugfixes:
-
- - Fix bug with progression.
-
-## 0.10.11-4 (2013-11-29)
-
-## 0.10.11-2 (2013-11-29)
-
-Bugfixes:
-
- - Fix `.race()` not propagating bound values.
-
-## 0.10.11-1 (2013-11-29)
-
-Features:
-
- - Improve performance of `Promise.race`
-
-## 0.10.11-0 (2013-11-29)
-
-Bugfixes:
-
- - Fixed `Promise.promisifyAll` invoking property accessors. Only data properties with function values are considered.
-
-## 0.10.10-0 (2013-11-28)
-
-Features:
-
- - Disable long stack traces in browsers by default. Call `Promise.longStackTraces()` to enable them.
-
-## 0.10.9-1 (2013-11-27)
-
-Bugfixes:
-
- - Fail early when `new Promise` is constructed incorrectly
-
-## 0.10.9-0 (2013-11-27)
-
-Bugfixes:
-
- - Promise.props now takes a [thenable-for-collection](https://github.com/petkaantonov/bluebird/blob/f41edac61b7c421608ff439bb5a09b7cffeadcf9/test/mocha/props.js#L197-L217)
- - All promise collection methods now reject when a promise-or-thenable-for-collection turns out not to give a collection
-
-## 0.10.8-0 (2013-11-25)
-
-Features:
-
- - All static collection methods take thenable-for-collection
-
-## 0.10.7-0 (2013-11-25)
-
-Features:
-
- - throw TypeError when thenable resolves with itself
- - Make .race() and Promise.race() forever pending on empty collections
-
-## 0.10.6-0 (2013-11-25)
-
-Bugfixes:
-
- - Promise.resolve and PromiseResolver.resolve follow thenables too.
-
-## 0.10.5-0 (2013-11-24)
-
-Bugfixes:
-
- - Fix infinite loop when thenable resolves with itself
-
-## 0.10.4-1 (2013-11-24)
-
-Bugfixes:
-
- - Fix a file missing from build. (Critical fix)
-
-## 0.10.4-0 (2013-11-24)
-
-Features:
-
- - Remove dependency of es5-shim and es5-sham when using ES3.
-
-## 0.10.3-0 (2013-11-24)
-
-Features:
-
- - Improve performance of `Promise.method`
-
-## 0.10.2-1 (2013-11-24)
-
-Features:
-
- - Rename PromiseResolver#asCallback to PromiseResolver#callback
-
-## 0.10.2-0 (2013-11-24)
-
-Features:
-
- - Remove memoization of thenables
-
-## 0.10.1-0 (2013-11-21)
-
-Features:
-
- - Add methods `Promise.resolve()`, `Promise.reject()`, `Promise.defer()` and `.resolve()`.
-
-## 0.10.0-1 (2013-11-17)
-
-## 0.10.0-0 (2013-11-17)
-
-Features:
-
- - Implement `Promise.method()`
- - Implement `.return()`
- - Implement `.throw()`
-
-Bugfixes:
-
- - Fix promises being able to use themselves as resolution or follower value
-
-## 0.9.11-1 (2013-11-14)
-
-Features:
-
- - Implicit `Promise.all()` when yielding an array from generators
-
-## 0.9.11-0 (2013-11-13)
-
-Bugfixes:
-
- - Fix `.spread` not unwrapping thenables
-
-## 0.9.10-2 (2013-11-13)
-
-Features:
-
- - Improve performance of promisified functions on V8
-
-Bugfixes:
-
- - Report unhandled rejections even when long stack traces are disabled
- - Fix `.error()` showing up in stack traces
-
-## 0.9.10-1 (2013-11-05)
-
-Bugfixes:
-
- - Catch filter method calls showing in stack traces
-
-## 0.9.10-0 (2013-11-05)
-
-Bugfixes:
-
- - Support primitives in catch filters
-
-## 0.9.9-0 (2013-11-05)
-
-Features:
-
- - Add `Promise.race()` and `.race()`
-
-## 0.9.8-0 (2013-11-01)
-
-Bugfixes:
-
- - Fix bug with `Promise.try` not unwrapping returned promises and thenables
-
-## 0.9.7-0 (2013-10-29)
-
-Bugfixes:
-
- - Fix bug with build files containing duplicated code for promise.js
-
-## 0.9.6-0 (2013-10-28)
-
-Features:
-
- - Improve output of reporting unhandled non-errors
- - Implement RejectionError wrapping and `.error()` method
-
-## 0.9.5-0 (2013-10-27)
-
-Features:
-
- - Allow fresh copies of the library to be made
-
-## 0.9.4-1 (2013-10-27)
-
-## 0.9.4-0 (2013-10-27)
-
-Bugfixes:
-
- - Rollback non-working multiple fresh copies feature
-
-## 0.9.3-0 (2013-10-27)
-
-Features:
-
- - Allow fresh copies of the library to be made
- - Add more components to customized builds
-
-## 0.9.2-1 (2013-10-25)
-
-## 0.9.2-0 (2013-10-25)
-
-Features:
-
- - Allow custom builds
-
-## 0.9.1-1 (2013-10-22)
-
-Bugfixes:
-
- - Fix unhandled rethrown exceptions not reported
-
-## 0.9.1-0 (2013-10-22)
-
-Features:
-
- - Improve performance of `Promise.try`
- - Extend `Promise.try` to accept arguments and ctx to make it more usable in promisification of synchronous functions.
-
-## 0.9.0-0 (2013-10-18)
-
-Features:
-
- - Implement `.bind` and `Promise.bind`
-
-Bugfixes:
-
- - Fix `.some()` when argument is a pending promise that later resolves to an array
-
-## 0.8.5-1 (2013-10-17)
-
-Features:
-
- - Enable process wide long stack traces through BLUEBIRD_DEBUG environment variable
-
-## 0.8.5-0 (2013-10-16)
-
-Features:
-
- - Improve performance of all collection methods
-
-Bugfixes:
-
- - Fix .finally passing the value to handlers
- - Remove kew from benchmarks due to bugs in the library breaking the benchmark
- - Fix some bluebird library calls potentially appearing in stack traces
-
-## 0.8.4-1 (2013-10-15)
-
-Bugfixes:
-
- - Fix .pending() call showing in long stack traces
-
-## 0.8.4-0 (2013-10-15)
-
-Bugfixes:
-
- - Fix PromiseArray and its sub-classes swallowing possibly unhandled rejections
-
-## 0.8.3-3 (2013-10-14)
-
-Bugfixes:
-
- - Fix AMD-declaration using named module.
-
-## 0.8.3-2 (2013-10-14)
-
-Features:
-
- - The mortals that can handle it may now release Zalgo by `require("bluebird/zalgo");`
-
-## 0.8.3-1 (2013-10-14)
-
-Bugfixes:
-
- - Fix memory leak when using the same promise to attach handlers over and over again
-
-## 0.8.3-0 (2013-10-13)
-
-Features:
-
- - Add `Promise.props()` and `Promise.prototype.props()`. They work like `.all()` for object properties.
-
-Bugfixes:
-
- - Fix bug with .some returning garbage when sparse arrays have rejections
-
-## 0.8.2-2 (2013-10-13)
-
-Features:
-
- - Improve performance of `.reduce()` when `initialValue` can be synchronously cast to a value
-
-## 0.8.2-1 (2013-10-12)
-
-Bugfixes:
-
- - Fix .npmignore having irrelevant files
-
-## 0.8.2-0 (2013-10-12)
-
-Features:
-
- - Improve performance of `.some()`
-
-## 0.8.1-0 (2013-10-11)
-
-Bugfixes:
-
- - Remove uses of dynamic evaluation (`new Function`, `eval` etc) when strictly not necessary. Use feature detection to use static evaluation to avoid errors when dynamic evaluation is prohibited.
-
-## 0.8.0-3 (2013-10-10)
-
-Features:
-
- - Add `.asCallback` property to `PromiseResolver`s
-
-## 0.8.0-2 (2013-10-10)
-
-## 0.8.0-1 (2013-10-09)
-
-Features:
-
- - Improve overall performance. Be able to sustain infinite recursion when using promises.
-
-## 0.8.0-0 (2013-10-09)
-
-Bugfixes:
-
- - Fix stackoverflow error when function calls itself "synchronously" from a promise handler
-
-## 0.7.12-2 (2013-10-09)
-
-Bugfixes:
-
- - Fix safari 6 not using `MutationObserver` as a scheduler
- - Fix process exceptions interfering with internal queue flushing
-
-## 0.7.12-1 (2013-10-09)
-
-Bugfixes:
-
- - Don't try to detect if generators are available to allow shims to be used
-
-## 0.7.12-0 (2013-10-08)
-
-Features:
-
- - Promisification now consider all functions on the object and its prototype chain
- - Individual promisifcation uses current `this` if no explicit receiver is given
- - Give better stack traces when promisified callbacks throw or errback primitives such as strings by wrapping them in an `Error` object.
-
-Bugfixes:
-
- - Fix runtime APIs throwing synchronous errors
-
-## 0.7.11-0 (2013-10-08)
-
-Features:
-
- - Deprecate `Promise.promisify(Object target)` in favor of `Promise.promisifyAll(Object target)` to avoid confusion with function objects
- - Coroutines now throw error when a non-promise is `yielded`
-
-## 0.7.10-1 (2013-10-05)
-
-Features:
-
- - Make tests pass Internet Explorer 8
-
-## 0.7.10-0 (2013-10-05)
-
-Features:
-
- - Create browser tests
-
-## 0.7.9-1 (2013-10-03)
-
-Bugfixes:
-
- - Fix promise cast bug when thenable fulfills using itself as the fulfillment value
-
-## 0.7.9-0 (2013-10-03)
-
-Features:
-
- - More performance improvements when long stack traces are enabled
-
-## 0.7.8-1 (2013-10-02)
-
-Features:
-
- - Performance improvements when long stack traces are enabled
-
-## 0.7.8-0 (2013-10-02)
-
-Bugfixes:
-
- - Fix promisified methods not turning synchronous exceptions into rejections
-
-## 0.7.7-1 (2013-10-02)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.7-0 (2013-10-01)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.6-0 (2013-09-29)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.5-0 (2013-09-28)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.4-1 (2013-09-28)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.4-0 (2013-09-28)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.3-1 (2013-09-28)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.3-0 (2013-09-27)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.2-0 (2013-09-27)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.1-5 (2013-09-26)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.1-4 (2013-09-25)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.1-3 (2013-09-25)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.1-2 (2013-09-24)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.1-1 (2013-09-24)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.1-0 (2013-09-24)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.0-1 (2013-09-23)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.7.0-0 (2013-09-23)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.5-2 (2013-09-20)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.5-1 (2013-09-18)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.5-0 (2013-09-18)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.4-1 (2013-09-18)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.4-0 (2013-09-18)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.3-4 (2013-09-18)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.3-3 (2013-09-18)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.3-2 (2013-09-16)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.3-1 (2013-09-16)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.3-0 (2013-09-15)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.2-1 (2013-09-14)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.2-0 (2013-09-14)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.1-0 (2013-09-14)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.6.0-0 (2013-09-13)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-6 (2013-09-12)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-5 (2013-09-12)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-4 (2013-09-12)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-3 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-2 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-1 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.9-0 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.8-1 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.8-0 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.7-0 (2013-09-11)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.6-1 (2013-09-10)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.6-0 (2013-09-10)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.5-1 (2013-09-10)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.5-0 (2013-09-09)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.4-1 (2013-09-08)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.4-0 (2013-09-08)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.3-0 (2013-09-07)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.2-0 (2013-09-07)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.1-0 (2013-09-07)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.5.0-0 (2013-09-07)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.4.0-0 (2013-09-06)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.3.0-1 (2013-09-06)
-
-Features:
-
- - feature
-
-Bugfixes:
-
- - bugfix
-
-## 0.3.0 (2013-09-06)
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.js
deleted file mode 100644
index c3b7f608b..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.js
+++ /dev/null
@@ -1,5128 +0,0 @@
-/* @preserve
- * The MIT License (MIT)
- *
- * Copyright (c) 2014 Petka Antonov
- *
- * 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:</p>
- *
- * 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.
- *
- */
-/**
- * bluebird build version 2.9.30
- * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, cancel, using, filter, any, each, timers
-*/
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise) {
-var SomePromiseArray = Promise._SomePromiseArray;
-function any(promises) {
- var ret = new SomePromiseArray(promises);
- var promise = ret.promise();
- ret.setHowMany(1);
- ret.setUnwrap();
- ret.init();
- return promise;
-}
-
-Promise.any = function (promises) {
- return any(promises);
-};
-
-Promise.prototype.any = function () {
- return any(this);
-};
-
-};
-
-},{}],2:[function(_dereq_,module,exports){
-"use strict";
-var firstLineError;
-try {throw new Error(); } catch (e) {firstLineError = e;}
-var schedule = _dereq_("./schedule.js");
-var Queue = _dereq_("./queue.js");
-var util = _dereq_("./util.js");
-
-function Async() {
- this._isTickUsed = false;
- this._lateQueue = new Queue(16);
- this._normalQueue = new Queue(16);
- this._trampolineEnabled = true;
- var self = this;
- this.drainQueues = function () {
- self._drainQueues();
- };
- this._schedule =
- schedule.isStatic ? schedule(this.drainQueues) : schedule;
-}
-
-Async.prototype.disableTrampolineIfNecessary = function() {
- if (util.hasDevTools) {
- this._trampolineEnabled = false;
- }
-};
-
-Async.prototype.enableTrampoline = function() {
- if (!this._trampolineEnabled) {
- this._trampolineEnabled = true;
- this._schedule = function(fn) {
- setTimeout(fn, 0);
- };
- }
-};
-
-Async.prototype.haveItemsQueued = function () {
- return this._normalQueue.length() > 0;
-};
-
-Async.prototype.throwLater = function(fn, arg) {
- if (arguments.length === 1) {
- arg = fn;
- fn = function () { throw arg; };
- }
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- if (typeof setTimeout !== "undefined") {
- setTimeout(function() {
- fn(arg);
- }, 0);
- } else try {
- this._schedule(function() {
- fn(arg);
- });
- } catch (e) {
- throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
- }
-};
-
-Async.prototype._getDomain = function() {};
-
-if (!true) {
-if (util.isNode) {
- var EventsModule = _dereq_("events");
-
- var domainGetter = function() {
- var domain = process.domain;
- if (domain === null) return undefined;
- return domain;
- };
-
- if (EventsModule.usingDomains) {
- Async.prototype._getDomain = domainGetter;
- } else {
- var descriptor =
- Object.getOwnPropertyDescriptor(EventsModule, "usingDomains");
-
- if (descriptor) {
- if (!descriptor.configurable) {
- process.on("domainsActivated", function() {
- Async.prototype._getDomain = domainGetter;
- });
- } else {
- var usingDomains = false;
- Object.defineProperty(EventsModule, "usingDomains", {
- configurable: false,
- enumerable: true,
- get: function() {
- return usingDomains;
- },
- set: function(value) {
- if (usingDomains || !value) return;
- usingDomains = true;
- Async.prototype._getDomain = domainGetter;
- util.toFastProperties(process);
- process.emit("domainsActivated");
- }
- });
- }
- }
- }
-}
-}
-
-function AsyncInvokeLater(fn, receiver, arg) {
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- this._lateQueue.push(fn, receiver, arg);
- this._queueTick();
-}
-
-function AsyncInvoke(fn, receiver, arg) {
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- this._normalQueue.push(fn, receiver, arg);
- this._queueTick();
-}
-
-function AsyncSettlePromises(promise) {
- var domain = this._getDomain();
- if (domain !== undefined) {
- var fn = domain.bind(promise._settlePromises);
- this._normalQueue.push(fn, promise, undefined);
- } else {
- this._normalQueue._pushOne(promise);
- }
- this._queueTick();
-}
-
-if (!util.hasDevTools) {
- Async.prototype.invokeLater = AsyncInvokeLater;
- Async.prototype.invoke = AsyncInvoke;
- Async.prototype.settlePromises = AsyncSettlePromises;
-} else {
- if (schedule.isStatic) {
- schedule = function(fn) { setTimeout(fn, 0); };
- }
- Async.prototype.invokeLater = function (fn, receiver, arg) {
- if (this._trampolineEnabled) {
- AsyncInvokeLater.call(this, fn, receiver, arg);
- } else {
- this._schedule(function() {
- setTimeout(function() {
- fn.call(receiver, arg);
- }, 100);
- });
- }
- };
-
- Async.prototype.invoke = function (fn, receiver, arg) {
- if (this._trampolineEnabled) {
- AsyncInvoke.call(this, fn, receiver, arg);
- } else {
- this._schedule(function() {
- fn.call(receiver, arg);
- });
- }
- };
-
- Async.prototype.settlePromises = function(promise) {
- if (this._trampolineEnabled) {
- AsyncSettlePromises.call(this, promise);
- } else {
- this._schedule(function() {
- promise._settlePromises();
- });
- }
- };
-}
-
-Async.prototype.invokeFirst = function (fn, receiver, arg) {
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- this._normalQueue.unshift(fn, receiver, arg);
- this._queueTick();
-};
-
-Async.prototype._drainQueue = function(queue) {
- while (queue.length() > 0) {
- var fn = queue.shift();
- if (typeof fn !== "function") {
- fn._settlePromises();
- continue;
- }
- var receiver = queue.shift();
- var arg = queue.shift();
- fn.call(receiver, arg);
- }
-};
-
-Async.prototype._drainQueues = function () {
- this._drainQueue(this._normalQueue);
- this._reset();
- this._drainQueue(this._lateQueue);
-};
-
-Async.prototype._queueTick = function () {
- if (!this._isTickUsed) {
- this._isTickUsed = true;
- this._schedule(this.drainQueues);
- }
-};
-
-Async.prototype._reset = function () {
- this._isTickUsed = false;
-};
-
-module.exports = new Async();
-module.exports.firstLineError = firstLineError;
-
-},{"./queue.js":28,"./schedule.js":31,"./util.js":38,"events":39}],3:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL, tryConvertToPromise) {
-var rejectThis = function(_, e) {
- this._reject(e);
-};
-
-var targetRejected = function(e, context) {
- context.promiseRejectionQueued = true;
- context.bindingPromise._then(rejectThis, rejectThis, null, this, e);
-};
-
-var bindingResolved = function(thisArg, context) {
- this._setBoundTo(thisArg);
- if (this._isPending()) {
- this._resolveCallback(context.target);
- }
-};
-
-var bindingRejected = function(e, context) {
- if (!context.promiseRejectionQueued) this._reject(e);
-};
-
-Promise.prototype.bind = function (thisArg) {
- var maybePromise = tryConvertToPromise(thisArg);
- var ret = new Promise(INTERNAL);
- ret._propagateFrom(this, 1);
- var target = this._target();
- if (maybePromise instanceof Promise) {
- var context = {
- promiseRejectionQueued: false,
- promise: ret,
- target: target,
- bindingPromise: maybePromise
- };
- target._then(INTERNAL, targetRejected, ret._progress, ret, context);
- maybePromise._then(
- bindingResolved, bindingRejected, ret._progress, ret, context);
- } else {
- ret._setBoundTo(thisArg);
- ret._resolveCallback(target);
- }
- return ret;
-};
-
-Promise.prototype._setBoundTo = function (obj) {
- if (obj !== undefined) {
- this._bitField = this._bitField | 131072;
- this._boundTo = obj;
- } else {
- this._bitField = this._bitField & (~131072);
- }
-};
-
-Promise.prototype._isBound = function () {
- return (this._bitField & 131072) === 131072;
-};
-
-Promise.bind = function (thisArg, value) {
- var maybePromise = tryConvertToPromise(thisArg);
- var ret = new Promise(INTERNAL);
-
- if (maybePromise instanceof Promise) {
- maybePromise._then(function(thisArg) {
- ret._setBoundTo(thisArg);
- ret._resolveCallback(value);
- }, ret._reject, ret._progress, ret, null);
- } else {
- ret._setBoundTo(thisArg);
- ret._resolveCallback(value);
- }
- return ret;
-};
-};
-
-},{}],4:[function(_dereq_,module,exports){
-"use strict";
-var old;
-if (typeof Promise !== "undefined") old = Promise;
-function noConflict() {
- try { if (Promise === bluebird) Promise = old; }
- catch (e) {}
- return bluebird;
-}
-var bluebird = _dereq_("./promise.js")();
-bluebird.noConflict = noConflict;
-module.exports = bluebird;
-
-},{"./promise.js":23}],5:[function(_dereq_,module,exports){
-"use strict";
-var cr = Object.create;
-if (cr) {
- var callerCache = cr(null);
- var getterCache = cr(null);
- callerCache[" size"] = getterCache[" size"] = 0;
-}
-
-module.exports = function(Promise) {
-var util = _dereq_("./util.js");
-var canEvaluate = util.canEvaluate;
-var isIdentifier = util.isIdentifier;
-
-var getMethodCaller;
-var getGetter;
-if (!true) {
-var makeMethodCaller = function (methodName) {
- return new Function("ensureMethod", " \n\
- return function(obj) { \n\
- 'use strict' \n\
- var len = this.length; \n\
- ensureMethod(obj, 'methodName'); \n\
- switch(len) { \n\
- case 1: return obj.methodName(this[0]); \n\
- case 2: return obj.methodName(this[0], this[1]); \n\
- case 3: return obj.methodName(this[0], this[1], this[2]); \n\
- case 0: return obj.methodName(); \n\
- default: \n\
- return obj.methodName.apply(obj, this); \n\
- } \n\
- }; \n\
- ".replace(/methodName/g, methodName))(ensureMethod);
-};
-
-var makeGetter = function (propertyName) {
- return new Function("obj", " \n\
- 'use strict'; \n\
- return obj.propertyName; \n\
- ".replace("propertyName", propertyName));
-};
-
-var getCompiled = function(name, compiler, cache) {
- var ret = cache[name];
- if (typeof ret !== "function") {
- if (!isIdentifier(name)) {
- return null;
- }
- ret = compiler(name);
- cache[name] = ret;
- cache[" size"]++;
- if (cache[" size"] > 512) {
- var keys = Object.keys(cache);
- for (var i = 0; i < 256; ++i) delete cache[keys[i]];
- cache[" size"] = keys.length - 256;
- }
- }
- return ret;
-};
-
-getMethodCaller = function(name) {
- return getCompiled(name, makeMethodCaller, callerCache);
-};
-
-getGetter = function(name) {
- return getCompiled(name, makeGetter, getterCache);
-};
-}
-
-function ensureMethod(obj, methodName) {
- var fn;
- if (obj != null) fn = obj[methodName];
- if (typeof fn !== "function") {
- var message = "Object " + util.classString(obj) + " has no method '" +
- util.toString(methodName) + "'";
- throw new Promise.TypeError(message);
- }
- return fn;
-}
-
-function caller(obj) {
- var methodName = this.pop();
- var fn = ensureMethod(obj, methodName);
- return fn.apply(obj, this);
-}
-Promise.prototype.call = function (methodName) {
- var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}
- if (!true) {
- if (canEvaluate) {
- var maybeCaller = getMethodCaller(methodName);
- if (maybeCaller !== null) {
- return this._then(
- maybeCaller, undefined, undefined, args, undefined);
- }
- }
- }
- args.push(methodName);
- return this._then(caller, undefined, undefined, args, undefined);
-};
-
-function namedGetter(obj) {
- return obj[this];
-}
-function indexedGetter(obj) {
- var index = +this;
- if (index < 0) index = Math.max(0, index + obj.length);
- return obj[index];
-}
-Promise.prototype.get = function (propertyName) {
- var isIndex = (typeof propertyName === "number");
- var getter;
- if (!isIndex) {
- if (canEvaluate) {
- var maybeGetter = getGetter(propertyName);
- getter = maybeGetter !== null ? maybeGetter : namedGetter;
- } else {
- getter = namedGetter;
- }
- } else {
- getter = indexedGetter;
- }
- return this._then(getter, undefined, undefined, propertyName, undefined);
-};
-};
-
-},{"./util.js":38}],6:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise) {
-var errors = _dereq_("./errors.js");
-var async = _dereq_("./async.js");
-var CancellationError = errors.CancellationError;
-
-Promise.prototype._cancel = function (reason) {
- if (!this.isCancellable()) return this;
- var parent;
- var promiseToReject = this;
- while ((parent = promiseToReject._cancellationParent) !== undefined &&
- parent.isCancellable()) {
- promiseToReject = parent;
- }
- this._unsetCancellable();
- promiseToReject._target()._rejectCallback(reason, false, true);
-};
-
-Promise.prototype.cancel = function (reason) {
- if (!this.isCancellable()) return this;
- if (reason === undefined) reason = new CancellationError();
- async.invokeLater(this._cancel, this, reason);
- return this;
-};
-
-Promise.prototype.cancellable = function () {
- if (this._cancellable()) return this;
- async.enableTrampoline();
- this._setCancellable();
- this._cancellationParent = undefined;
- return this;
-};
-
-Promise.prototype.uncancellable = function () {
- var ret = this.then();
- ret._unsetCancellable();
- return ret;
-};
-
-Promise.prototype.fork = function (didFulfill, didReject, didProgress) {
- var ret = this._then(didFulfill, didReject, didProgress,
- undefined, undefined);
-
- ret._setCancellable();
- ret._cancellationParent = undefined;
- return ret;
-};
-};
-
-},{"./async.js":2,"./errors.js":13}],7:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function() {
-var async = _dereq_("./async.js");
-var util = _dereq_("./util.js");
-var bluebirdFramePattern =
- /[\\\/]bluebird[\\\/]js[\\\/](main|debug|zalgo|instrumented)/;
-var stackFramePattern = null;
-var formatStack = null;
-var indentStackFrames = false;
-var warn;
-
-function CapturedTrace(parent) {
- this._parent = parent;
- var length = this._length = 1 + (parent === undefined ? 0 : parent._length);
- captureStackTrace(this, CapturedTrace);
- if (length > 32) this.uncycle();
-}
-util.inherits(CapturedTrace, Error);
-
-CapturedTrace.prototype.uncycle = function() {
- var length = this._length;
- if (length < 2) return;
- var nodes = [];
- var stackToIndex = {};
-
- for (var i = 0, node = this; node !== undefined; ++i) {
- nodes.push(node);
- node = node._parent;
- }
- length = this._length = i;
- for (var i = length - 1; i >= 0; --i) {
- var stack = nodes[i].stack;
- if (stackToIndex[stack] === undefined) {
- stackToIndex[stack] = i;
- }
- }
- for (var i = 0; i < length; ++i) {
- var currentStack = nodes[i].stack;
- var index = stackToIndex[currentStack];
- if (index !== undefined && index !== i) {
- if (index > 0) {
- nodes[index - 1]._parent = undefined;
- nodes[index - 1]._length = 1;
- }
- nodes[i]._parent = undefined;
- nodes[i]._length = 1;
- var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;
-
- if (index < length - 1) {
- cycleEdgeNode._parent = nodes[index + 1];
- cycleEdgeNode._parent.uncycle();
- cycleEdgeNode._length =
- cycleEdgeNode._parent._length + 1;
- } else {
- cycleEdgeNode._parent = undefined;
- cycleEdgeNode._length = 1;
- }
- var currentChildLength = cycleEdgeNode._length + 1;
- for (var j = i - 2; j >= 0; --j) {
- nodes[j]._length = currentChildLength;
- currentChildLength++;
- }
- return;
- }
- }
-};
-
-CapturedTrace.prototype.parent = function() {
- return this._parent;
-};
-
-CapturedTrace.prototype.hasParent = function() {
- return this._parent !== undefined;
-};
-
-CapturedTrace.prototype.attachExtraTrace = function(error) {
- if (error.__stackCleaned__) return;
- this.uncycle();
- var parsed = CapturedTrace.parseStackAndMessage(error);
- var message = parsed.message;
- var stacks = [parsed.stack];
-
- var trace = this;
- while (trace !== undefined) {
- stacks.push(cleanStack(trace.stack.split("\n")));
- trace = trace._parent;
- }
- removeCommonRoots(stacks);
- removeDuplicateOrEmptyJumps(stacks);
- util.notEnumerableProp(error, "stack", reconstructStack(message, stacks));
- util.notEnumerableProp(error, "__stackCleaned__", true);
-};
-
-function reconstructStack(message, stacks) {
- for (var i = 0; i < stacks.length - 1; ++i) {
- stacks[i].push("From previous event:");
- stacks[i] = stacks[i].join("\n");
- }
- if (i < stacks.length) {
- stacks[i] = stacks[i].join("\n");
- }
- return message + "\n" + stacks.join("\n");
-}
-
-function removeDuplicateOrEmptyJumps(stacks) {
- for (var i = 0; i < stacks.length; ++i) {
- if (stacks[i].length === 0 ||
- ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {
- stacks.splice(i, 1);
- i--;
- }
- }
-}
-
-function removeCommonRoots(stacks) {
- var current = stacks[0];
- for (var i = 1; i < stacks.length; ++i) {
- var prev = stacks[i];
- var currentLastIndex = current.length - 1;
- var currentLastLine = current[currentLastIndex];
- var commonRootMeetPoint = -1;
-
- for (var j = prev.length - 1; j >= 0; --j) {
- if (prev[j] === currentLastLine) {
- commonRootMeetPoint = j;
- break;
- }
- }
-
- for (var j = commonRootMeetPoint; j >= 0; --j) {
- var line = prev[j];
- if (current[currentLastIndex] === line) {
- current.pop();
- currentLastIndex--;
- } else {
- break;
- }
- }
- current = prev;
- }
-}
-
-function cleanStack(stack) {
- var ret = [];
- for (var i = 0; i < stack.length; ++i) {
- var line = stack[i];
- var isTraceLine = stackFramePattern.test(line) ||
- " (No stack trace)" === line;
- var isInternalFrame = isTraceLine && shouldIgnore(line);
- if (isTraceLine && !isInternalFrame) {
- if (indentStackFrames && line.charAt(0) !== " ") {
- line = " " + line;
- }
- ret.push(line);
- }
- }
- return ret;
-}
-
-function stackFramesAsArray(error) {
- var stack = error.stack.replace(/\s+$/g, "").split("\n");
- for (var i = 0; i < stack.length; ++i) {
- var line = stack[i];
- if (" (No stack trace)" === line || stackFramePattern.test(line)) {
- break;
- }
- }
- if (i > 0) {
- stack = stack.slice(i);
- }
- return stack;
-}
-
-CapturedTrace.parseStackAndMessage = function(error) {
- var stack = error.stack;
- var message = error.toString();
- stack = typeof stack === "string" && stack.length > 0
- ? stackFramesAsArray(error) : [" (No stack trace)"];
- return {
- message: message,
- stack: cleanStack(stack)
- };
-};
-
-CapturedTrace.formatAndLogError = function(error, title) {
- if (typeof console !== "undefined") {
- var message;
- if (typeof error === "object" || typeof error === "function") {
- var stack = error.stack;
- message = title + formatStack(stack, error);
- } else {
- message = title + String(error);
- }
- if (typeof warn === "function") {
- warn(message);
- } else if (typeof console.log === "function" ||
- typeof console.log === "object") {
- console.log(message);
- }
- }
-};
-
-CapturedTrace.unhandledRejection = function (reason) {
- CapturedTrace.formatAndLogError(reason, "^--- With additional stack trace: ");
-};
-
-CapturedTrace.isSupported = function () {
- return typeof captureStackTrace === "function";
-};
-
-CapturedTrace.fireRejectionEvent =
-function(name, localHandler, reason, promise) {
- var localEventFired = false;
- try {
- if (typeof localHandler === "function") {
- localEventFired = true;
- if (name === "rejectionHandled") {
- localHandler(promise);
- } else {
- localHandler(reason, promise);
- }
- }
- } catch (e) {
- async.throwLater(e);
- }
-
- var globalEventFired = false;
- try {
- globalEventFired = fireGlobalEvent(name, reason, promise);
- } catch (e) {
- globalEventFired = true;
- async.throwLater(e);
- }
-
- var domEventFired = false;
- if (fireDomEvent) {
- try {
- domEventFired = fireDomEvent(name.toLowerCase(), {
- reason: reason,
- promise: promise
- });
- } catch (e) {
- domEventFired = true;
- async.throwLater(e);
- }
- }
-
- if (!globalEventFired && !localEventFired && !domEventFired &&
- name === "unhandledRejection") {
- CapturedTrace.formatAndLogError(reason, "Unhandled rejection ");
- }
-};
-
-function formatNonError(obj) {
- var str;
- if (typeof obj === "function") {
- str = "[function " +
- (obj.name || "anonymous") +
- "]";
- } else {
- str = obj.toString();
- var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/;
- if (ruselessToString.test(str)) {
- try {
- var newStr = JSON.stringify(obj);
- str = newStr;
- }
- catch(e) {
-
- }
- }
- if (str.length === 0) {
- str = "(empty array)";
- }
- }
- return ("(<" + snip(str) + ">, no stack trace)");
-}
-
-function snip(str) {
- var maxChars = 41;
- if (str.length < maxChars) {
- return str;
- }
- return str.substr(0, maxChars - 3) + "...";
-}
-
-var shouldIgnore = function() { return false; };
-var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;
-function parseLineInfo(line) {
- var matches = line.match(parseLineInfoRegex);
- if (matches) {
- return {
- fileName: matches[1],
- line: parseInt(matches[2], 10)
- };
- }
-}
-CapturedTrace.setBounds = function(firstLineError, lastLineError) {
- if (!CapturedTrace.isSupported()) return;
- var firstStackLines = firstLineError.stack.split("\n");
- var lastStackLines = lastLineError.stack.split("\n");
- var firstIndex = -1;
- var lastIndex = -1;
- var firstFileName;
- var lastFileName;
- for (var i = 0; i < firstStackLines.length; ++i) {
- var result = parseLineInfo(firstStackLines[i]);
- if (result) {
- firstFileName = result.fileName;
- firstIndex = result.line;
- break;
- }
- }
- for (var i = 0; i < lastStackLines.length; ++i) {
- var result = parseLineInfo(lastStackLines[i]);
- if (result) {
- lastFileName = result.fileName;
- lastIndex = result.line;
- break;
- }
- }
- if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||
- firstFileName !== lastFileName || firstIndex >= lastIndex) {
- return;
- }
-
- shouldIgnore = function(line) {
- if (bluebirdFramePattern.test(line)) return true;
- var info = parseLineInfo(line);
- if (info) {
- if (info.fileName === firstFileName &&
- (firstIndex <= info.line && info.line <= lastIndex)) {
- return true;
- }
- }
- return false;
- };
-};
-
-var captureStackTrace = (function stackDetection() {
- var v8stackFramePattern = /^\s*at\s*/;
- var v8stackFormatter = function(stack, error) {
- if (typeof stack === "string") return stack;
-
- if (error.name !== undefined &&
- error.message !== undefined) {
- return error.toString();
- }
- return formatNonError(error);
- };
-
- if (typeof Error.stackTraceLimit === "number" &&
- typeof Error.captureStackTrace === "function") {
- Error.stackTraceLimit = Error.stackTraceLimit + 6;
- stackFramePattern = v8stackFramePattern;
- formatStack = v8stackFormatter;
- var captureStackTrace = Error.captureStackTrace;
-
- shouldIgnore = function(line) {
- return bluebirdFramePattern.test(line);
- };
- return function(receiver, ignoreUntil) {
- Error.stackTraceLimit = Error.stackTraceLimit + 6;
- captureStackTrace(receiver, ignoreUntil);
- Error.stackTraceLimit = Error.stackTraceLimit - 6;
- };
- }
- var err = new Error();
-
- if (typeof err.stack === "string" &&
- err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) {
- stackFramePattern = /@/;
- formatStack = v8stackFormatter;
- indentStackFrames = true;
- return function captureStackTrace(o) {
- o.stack = new Error().stack;
- };
- }
-
- var hasStackAfterThrow;
- try { throw new Error(); }
- catch(e) {
- hasStackAfterThrow = ("stack" in e);
- }
- if (!("stack" in err) && hasStackAfterThrow) {
- stackFramePattern = v8stackFramePattern;
- formatStack = v8stackFormatter;
- return function captureStackTrace(o) {
- Error.stackTraceLimit = Error.stackTraceLimit + 6;
- try { throw new Error(); }
- catch(e) { o.stack = e.stack; }
- Error.stackTraceLimit = Error.stackTraceLimit - 6;
- };
- }
-
- formatStack = function(stack, error) {
- if (typeof stack === "string") return stack;
-
- if ((typeof error === "object" ||
- typeof error === "function") &&
- error.name !== undefined &&
- error.message !== undefined) {
- return error.toString();
- }
- return formatNonError(error);
- };
-
- return null;
-
-})([]);
-
-var fireDomEvent;
-var fireGlobalEvent = (function() {
- if (util.isNode) {
- return function(name, reason, promise) {
- if (name === "rejectionHandled") {
- return process.emit(name, promise);
- } else {
- return process.emit(name, reason, promise);
- }
- };
- } else {
- var customEventWorks = false;
- var anyEventWorks = true;
- try {
- var ev = new self.CustomEvent("test");
- customEventWorks = ev instanceof CustomEvent;
- } catch (e) {}
- if (!customEventWorks) {
- try {
- var event = document.createEvent("CustomEvent");
- event.initCustomEvent("testingtheevent", false, true, {});
- self.dispatchEvent(event);
- } catch (e) {
- anyEventWorks = false;
- }
- }
- if (anyEventWorks) {
- fireDomEvent = function(type, detail) {
- var event;
- if (customEventWorks) {
- event = new self.CustomEvent(type, {
- detail: detail,
- bubbles: false,
- cancelable: true
- });
- } else if (self.dispatchEvent) {
- event = document.createEvent("CustomEvent");
- event.initCustomEvent(type, false, true, detail);
- }
-
- return event ? !self.dispatchEvent(event) : false;
- };
- }
-
- var toWindowMethodNameMap = {};
- toWindowMethodNameMap["unhandledRejection"] = ("on" +
- "unhandledRejection").toLowerCase();
- toWindowMethodNameMap["rejectionHandled"] = ("on" +
- "rejectionHandled").toLowerCase();
-
- return function(name, reason, promise) {
- var methodName = toWindowMethodNameMap[name];
- var method = self[methodName];
- if (!method) return false;
- if (name === "rejectionHandled") {
- method.call(self, promise);
- } else {
- method.call(self, reason, promise);
- }
- return true;
- };
- }
-})();
-
-if (typeof console !== "undefined" && typeof console.warn !== "undefined") {
- warn = function (message) {
- console.warn(message);
- };
- if (util.isNode && process.stderr.isTTY) {
- warn = function(message) {
- process.stderr.write("\u001b[31m" + message + "\u001b[39m\n");
- };
- } else if (!util.isNode && typeof (new Error().stack) === "string") {
- warn = function(message) {
- console.warn("%c" + message, "color: red");
- };
- }
-}
-
-return CapturedTrace;
-};
-
-},{"./async.js":2,"./util.js":38}],8:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(NEXT_FILTER) {
-var util = _dereq_("./util.js");
-var errors = _dereq_("./errors.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-var keys = _dereq_("./es5.js").keys;
-var TypeError = errors.TypeError;
-
-function CatchFilter(instances, callback, promise) {
- this._instances = instances;
- this._callback = callback;
- this._promise = promise;
-}
-
-function safePredicate(predicate, e) {
- var safeObject = {};
- var retfilter = tryCatch(predicate).call(safeObject, e);
-
- if (retfilter === errorObj) return retfilter;
-
- var safeKeys = keys(safeObject);
- if (safeKeys.length) {
- errorObj.e = new TypeError("Catch filter must inherit from Error or be a simple predicate function\u000a\u000a See http://goo.gl/o84o68\u000a");
- return errorObj;
- }
- return retfilter;
-}
-
-CatchFilter.prototype.doFilter = function (e) {
- var cb = this._callback;
- var promise = this._promise;
- var boundTo = promise._boundTo;
- for (var i = 0, len = this._instances.length; i < len; ++i) {
- var item = this._instances[i];
- var itemIsErrorType = item === Error ||
- (item != null && item.prototype instanceof Error);
-
- if (itemIsErrorType && e instanceof item) {
- var ret = tryCatch(cb).call(boundTo, e);
- if (ret === errorObj) {
- NEXT_FILTER.e = ret.e;
- return NEXT_FILTER;
- }
- return ret;
- } else if (typeof item === "function" && !itemIsErrorType) {
- var shouldHandle = safePredicate(item, e);
- if (shouldHandle === errorObj) {
- e = errorObj.e;
- break;
- } else if (shouldHandle) {
- var ret = tryCatch(cb).call(boundTo, e);
- if (ret === errorObj) {
- NEXT_FILTER.e = ret.e;
- return NEXT_FILTER;
- }
- return ret;
- }
- }
- }
- NEXT_FILTER.e = e;
- return NEXT_FILTER;
-};
-
-return CatchFilter;
-};
-
-},{"./errors.js":13,"./es5.js":14,"./util.js":38}],9:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, CapturedTrace, isDebugging) {
-var contextStack = [];
-function Context() {
- this._trace = new CapturedTrace(peekContext());
-}
-Context.prototype._pushContext = function () {
- if (!isDebugging()) return;
- if (this._trace !== undefined) {
- contextStack.push(this._trace);
- }
-};
-
-Context.prototype._popContext = function () {
- if (!isDebugging()) return;
- if (this._trace !== undefined) {
- contextStack.pop();
- }
-};
-
-function createContext() {
- if (isDebugging()) return new Context();
-}
-
-function peekContext() {
- var lastIndex = contextStack.length - 1;
- if (lastIndex >= 0) {
- return contextStack[lastIndex];
- }
- return undefined;
-}
-
-Promise.prototype._peekContext = peekContext;
-Promise.prototype._pushContext = Context.prototype._pushContext;
-Promise.prototype._popContext = Context.prototype._popContext;
-
-return createContext;
-};
-
-},{}],10:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, CapturedTrace) {
-var async = _dereq_("./async.js");
-var Warning = _dereq_("./errors.js").Warning;
-var util = _dereq_("./util.js");
-var canAttachTrace = util.canAttachTrace;
-var unhandledRejectionHandled;
-var possiblyUnhandledRejection;
-var debugging = false || (util.isNode &&
- (!!process.env["BLUEBIRD_DEBUG"] ||
- process.env["NODE_ENV"] === "development"));
-
-if (debugging) {
- async.disableTrampolineIfNecessary();
-}
-
-Promise.prototype._ignoreRejections = function() {
- this._unsetRejectionIsUnhandled();
- this._bitField = this._bitField | 16777216;
-};
-
-Promise.prototype._ensurePossibleRejectionHandled = function () {
- if ((this._bitField & 16777216) !== 0) return;
- this._setRejectionIsUnhandled();
- async.invokeLater(this._notifyUnhandledRejection, this, undefined);
-};
-
-Promise.prototype._notifyUnhandledRejectionIsHandled = function () {
- CapturedTrace.fireRejectionEvent("rejectionHandled",
- unhandledRejectionHandled, undefined, this);
-};
-
-Promise.prototype._notifyUnhandledRejection = function () {
- if (this._isRejectionUnhandled()) {
- var reason = this._getCarriedStackTrace() || this._settledValue;
- this._setUnhandledRejectionIsNotified();
- CapturedTrace.fireRejectionEvent("unhandledRejection",
- possiblyUnhandledRejection, reason, this);
- }
-};
-
-Promise.prototype._setUnhandledRejectionIsNotified = function () {
- this._bitField = this._bitField | 524288;
-};
-
-Promise.prototype._unsetUnhandledRejectionIsNotified = function () {
- this._bitField = this._bitField & (~524288);
-};
-
-Promise.prototype._isUnhandledRejectionNotified = function () {
- return (this._bitField & 524288) > 0;
-};
-
-Promise.prototype._setRejectionIsUnhandled = function () {
- this._bitField = this._bitField | 2097152;
-};
-
-Promise.prototype._unsetRejectionIsUnhandled = function () {
- this._bitField = this._bitField & (~2097152);
- if (this._isUnhandledRejectionNotified()) {
- this._unsetUnhandledRejectionIsNotified();
- this._notifyUnhandledRejectionIsHandled();
- }
-};
-
-Promise.prototype._isRejectionUnhandled = function () {
- return (this._bitField & 2097152) > 0;
-};
-
-Promise.prototype._setCarriedStackTrace = function (capturedTrace) {
- this._bitField = this._bitField | 1048576;
- this._fulfillmentHandler0 = capturedTrace;
-};
-
-Promise.prototype._isCarryingStackTrace = function () {
- return (this._bitField & 1048576) > 0;
-};
-
-Promise.prototype._getCarriedStackTrace = function () {
- return this._isCarryingStackTrace()
- ? this._fulfillmentHandler0
- : undefined;
-};
-
-Promise.prototype._captureStackTrace = function () {
- if (debugging) {
- this._trace = new CapturedTrace(this._peekContext());
- }
- return this;
-};
-
-Promise.prototype._attachExtraTrace = function (error, ignoreSelf) {
- if (debugging && canAttachTrace(error)) {
- var trace = this._trace;
- if (trace !== undefined) {
- if (ignoreSelf) trace = trace._parent;
- }
- if (trace !== undefined) {
- trace.attachExtraTrace(error);
- } else if (!error.__stackCleaned__) {
- var parsed = CapturedTrace.parseStackAndMessage(error);
- util.notEnumerableProp(error, "stack",
- parsed.message + "\n" + parsed.stack.join("\n"));
- util.notEnumerableProp(error, "__stackCleaned__", true);
- }
- }
-};
-
-Promise.prototype._warn = function(message) {
- var warning = new Warning(message);
- var ctx = this._peekContext();
- if (ctx) {
- ctx.attachExtraTrace(warning);
- } else {
- var parsed = CapturedTrace.parseStackAndMessage(warning);
- warning.stack = parsed.message + "\n" + parsed.stack.join("\n");
- }
- CapturedTrace.formatAndLogError(warning, "");
-};
-
-Promise.onPossiblyUnhandledRejection = function (fn) {
- possiblyUnhandledRejection = typeof fn === "function" ? fn : undefined;
-};
-
-Promise.onUnhandledRejectionHandled = function (fn) {
- unhandledRejectionHandled = typeof fn === "function" ? fn : undefined;
-};
-
-Promise.longStackTraces = function () {
- if (async.haveItemsQueued() &&
- debugging === false
- ) {
- throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/DT1qyG\u000a");
- }
- debugging = CapturedTrace.isSupported();
- if (debugging) {
- async.disableTrampolineIfNecessary();
- }
-};
-
-Promise.hasLongStackTraces = function () {
- return debugging && CapturedTrace.isSupported();
-};
-
-if (!CapturedTrace.isSupported()) {
- Promise.longStackTraces = function(){};
- debugging = false;
-}
-
-return function() {
- return debugging;
-};
-};
-
-},{"./async.js":2,"./errors.js":13,"./util.js":38}],11:[function(_dereq_,module,exports){
-"use strict";
-var util = _dereq_("./util.js");
-var isPrimitive = util.isPrimitive;
-var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver;
-
-module.exports = function(Promise) {
-var returner = function () {
- return this;
-};
-var thrower = function () {
- throw this;
-};
-var returnUndefined = function() {};
-var throwUndefined = function() {
- throw undefined;
-};
-
-var wrapper = function (value, action) {
- if (action === 1) {
- return function () {
- throw value;
- };
- } else if (action === 2) {
- return function () {
- return value;
- };
- }
-};
-
-
-Promise.prototype["return"] =
-Promise.prototype.thenReturn = function (value) {
- if (value === undefined) return this.then(returnUndefined);
-
- if (wrapsPrimitiveReceiver && isPrimitive(value)) {
- return this._then(
- wrapper(value, 2),
- undefined,
- undefined,
- undefined,
- undefined
- );
- }
- return this._then(returner, undefined, undefined, value, undefined);
-};
-
-Promise.prototype["throw"] =
-Promise.prototype.thenThrow = function (reason) {
- if (reason === undefined) return this.then(throwUndefined);
-
- if (wrapsPrimitiveReceiver && isPrimitive(reason)) {
- return this._then(
- wrapper(reason, 1),
- undefined,
- undefined,
- undefined,
- undefined
- );
- }
- return this._then(thrower, undefined, undefined, reason, undefined);
-};
-};
-
-},{"./util.js":38}],12:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var PromiseReduce = Promise.reduce;
-
-Promise.prototype.each = function (fn) {
- return PromiseReduce(this, fn, null, INTERNAL);
-};
-
-Promise.each = function (promises, fn) {
- return PromiseReduce(promises, fn, null, INTERNAL);
-};
-};
-
-},{}],13:[function(_dereq_,module,exports){
-"use strict";
-var es5 = _dereq_("./es5.js");
-var Objectfreeze = es5.freeze;
-var util = _dereq_("./util.js");
-var inherits = util.inherits;
-var notEnumerableProp = util.notEnumerableProp;
-
-function subError(nameProperty, defaultMessage) {
- function SubError(message) {
- if (!(this instanceof SubError)) return new SubError(message);
- notEnumerableProp(this, "message",
- typeof message === "string" ? message : defaultMessage);
- notEnumerableProp(this, "name", nameProperty);
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- } else {
- Error.call(this);
- }
- }
- inherits(SubError, Error);
- return SubError;
-}
-
-var _TypeError, _RangeError;
-var Warning = subError("Warning", "warning");
-var CancellationError = subError("CancellationError", "cancellation error");
-var TimeoutError = subError("TimeoutError", "timeout error");
-var AggregateError = subError("AggregateError", "aggregate error");
-try {
- _TypeError = TypeError;
- _RangeError = RangeError;
-} catch(e) {
- _TypeError = subError("TypeError", "type error");
- _RangeError = subError("RangeError", "range error");
-}
-
-var methods = ("join pop push shift unshift slice filter forEach some " +
- "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" ");
-
-for (var i = 0; i < methods.length; ++i) {
- if (typeof Array.prototype[methods[i]] === "function") {
- AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];
- }
-}
-
-es5.defineProperty(AggregateError.prototype, "length", {
- value: 0,
- configurable: false,
- writable: true,
- enumerable: true
-});
-AggregateError.prototype["isOperational"] = true;
-var level = 0;
-AggregateError.prototype.toString = function() {
- var indent = Array(level * 4 + 1).join(" ");
- var ret = "\n" + indent + "AggregateError of:" + "\n";
- level++;
- indent = Array(level * 4 + 1).join(" ");
- for (var i = 0; i < this.length; ++i) {
- var str = this[i] === this ? "[Circular AggregateError]" : this[i] + "";
- var lines = str.split("\n");
- for (var j = 0; j < lines.length; ++j) {
- lines[j] = indent + lines[j];
- }
- str = lines.join("\n");
- ret += str + "\n";
- }
- level--;
- return ret;
-};
-
-function OperationalError(message) {
- if (!(this instanceof OperationalError))
- return new OperationalError(message);
- notEnumerableProp(this, "name", "OperationalError");
- notEnumerableProp(this, "message", message);
- this.cause = message;
- this["isOperational"] = true;
-
- if (message instanceof Error) {
- notEnumerableProp(this, "message", message.message);
- notEnumerableProp(this, "stack", message.stack);
- } else if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
-
-}
-inherits(OperationalError, Error);
-
-var errorTypes = Error["__BluebirdErrorTypes__"];
-if (!errorTypes) {
- errorTypes = Objectfreeze({
- CancellationError: CancellationError,
- TimeoutError: TimeoutError,
- OperationalError: OperationalError,
- RejectionError: OperationalError,
- AggregateError: AggregateError
- });
- notEnumerableProp(Error, "__BluebirdErrorTypes__", errorTypes);
-}
-
-module.exports = {
- Error: Error,
- TypeError: _TypeError,
- RangeError: _RangeError,
- CancellationError: errorTypes.CancellationError,
- OperationalError: errorTypes.OperationalError,
- TimeoutError: errorTypes.TimeoutError,
- AggregateError: errorTypes.AggregateError,
- Warning: Warning
-};
-
-},{"./es5.js":14,"./util.js":38}],14:[function(_dereq_,module,exports){
-var isES5 = (function(){
- "use strict";
- return this === undefined;
-})();
-
-if (isES5) {
- module.exports = {
- freeze: Object.freeze,
- defineProperty: Object.defineProperty,
- getDescriptor: Object.getOwnPropertyDescriptor,
- keys: Object.keys,
- names: Object.getOwnPropertyNames,
- getPrototypeOf: Object.getPrototypeOf,
- isArray: Array.isArray,
- isES5: isES5,
- propertyIsWritable: function(obj, prop) {
- var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
- return !!(!descriptor || descriptor.writable || descriptor.set);
- }
- };
-} else {
- var has = {}.hasOwnProperty;
- var str = {}.toString;
- var proto = {}.constructor.prototype;
-
- var ObjectKeys = function (o) {
- var ret = [];
- for (var key in o) {
- if (has.call(o, key)) {
- ret.push(key);
- }
- }
- return ret;
- };
-
- var ObjectGetDescriptor = function(o, key) {
- return {value: o[key]};
- };
-
- var ObjectDefineProperty = function (o, key, desc) {
- o[key] = desc.value;
- return o;
- };
-
- var ObjectFreeze = function (obj) {
- return obj;
- };
-
- var ObjectGetPrototypeOf = function (obj) {
- try {
- return Object(obj).constructor.prototype;
- }
- catch (e) {
- return proto;
- }
- };
-
- var ArrayIsArray = function (obj) {
- try {
- return str.call(obj) === "[object Array]";
- }
- catch(e) {
- return false;
- }
- };
-
- module.exports = {
- isArray: ArrayIsArray,
- keys: ObjectKeys,
- names: ObjectKeys,
- defineProperty: ObjectDefineProperty,
- getDescriptor: ObjectGetDescriptor,
- freeze: ObjectFreeze,
- getPrototypeOf: ObjectGetPrototypeOf,
- isES5: isES5,
- propertyIsWritable: function() {
- return true;
- }
- };
-}
-
-},{}],15:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var PromiseMap = Promise.map;
-
-Promise.prototype.filter = function (fn, options) {
- return PromiseMap(this, fn, options, INTERNAL);
-};
-
-Promise.filter = function (promises, fn, options) {
- return PromiseMap(promises, fn, options, INTERNAL);
-};
-};
-
-},{}],16:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, NEXT_FILTER, tryConvertToPromise) {
-var util = _dereq_("./util.js");
-var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver;
-var isPrimitive = util.isPrimitive;
-var thrower = util.thrower;
-
-function returnThis() {
- return this;
-}
-function throwThis() {
- throw this;
-}
-function return$(r) {
- return function() {
- return r;
- };
-}
-function throw$(r) {
- return function() {
- throw r;
- };
-}
-function promisedFinally(ret, reasonOrValue, isFulfilled) {
- var then;
- if (wrapsPrimitiveReceiver && isPrimitive(reasonOrValue)) {
- then = isFulfilled ? return$(reasonOrValue) : throw$(reasonOrValue);
- } else {
- then = isFulfilled ? returnThis : throwThis;
- }
- return ret._then(then, thrower, undefined, reasonOrValue, undefined);
-}
-
-function finallyHandler(reasonOrValue) {
- var promise = this.promise;
- var handler = this.handler;
-
- var ret = promise._isBound()
- ? handler.call(promise._boundTo)
- : handler();
-
- if (ret !== undefined) {
- var maybePromise = tryConvertToPromise(ret, promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- return promisedFinally(maybePromise, reasonOrValue,
- promise.isFulfilled());
- }
- }
-
- if (promise.isRejected()) {
- NEXT_FILTER.e = reasonOrValue;
- return NEXT_FILTER;
- } else {
- return reasonOrValue;
- }
-}
-
-function tapHandler(value) {
- var promise = this.promise;
- var handler = this.handler;
-
- var ret = promise._isBound()
- ? handler.call(promise._boundTo, value)
- : handler(value);
-
- if (ret !== undefined) {
- var maybePromise = tryConvertToPromise(ret, promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- return promisedFinally(maybePromise, value, true);
- }
- }
- return value;
-}
-
-Promise.prototype._passThroughHandler = function (handler, isFinally) {
- if (typeof handler !== "function") return this.then();
-
- var promiseAndHandler = {
- promise: this,
- handler: handler
- };
-
- return this._then(
- isFinally ? finallyHandler : tapHandler,
- isFinally ? finallyHandler : undefined, undefined,
- promiseAndHandler, undefined);
-};
-
-Promise.prototype.lastly =
-Promise.prototype["finally"] = function (handler) {
- return this._passThroughHandler(handler, true);
-};
-
-Promise.prototype.tap = function (handler) {
- return this._passThroughHandler(handler, false);
-};
-};
-
-},{"./util.js":38}],17:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise,
- apiRejection,
- INTERNAL,
- tryConvertToPromise) {
-var errors = _dereq_("./errors.js");
-var TypeError = errors.TypeError;
-var util = _dereq_("./util.js");
-var errorObj = util.errorObj;
-var tryCatch = util.tryCatch;
-var yieldHandlers = [];
-
-function promiseFromYieldHandler(value, yieldHandlers, traceParent) {
- for (var i = 0; i < yieldHandlers.length; ++i) {
- traceParent._pushContext();
- var result = tryCatch(yieldHandlers[i])(value);
- traceParent._popContext();
- if (result === errorObj) {
- traceParent._pushContext();
- var ret = Promise.reject(errorObj.e);
- traceParent._popContext();
- return ret;
- }
- var maybePromise = tryConvertToPromise(result, traceParent);
- if (maybePromise instanceof Promise) return maybePromise;
- }
- return null;
-}
-
-function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {
- var promise = this._promise = new Promise(INTERNAL);
- promise._captureStackTrace();
- this._stack = stack;
- this._generatorFunction = generatorFunction;
- this._receiver = receiver;
- this._generator = undefined;
- this._yieldHandlers = typeof yieldHandler === "function"
- ? [yieldHandler].concat(yieldHandlers)
- : yieldHandlers;
-}
-
-PromiseSpawn.prototype.promise = function () {
- return this._promise;
-};
-
-PromiseSpawn.prototype._run = function () {
- this._generator = this._generatorFunction.call(this._receiver);
- this._receiver =
- this._generatorFunction = undefined;
- this._next(undefined);
-};
-
-PromiseSpawn.prototype._continue = function (result) {
- if (result === errorObj) {
- return this._promise._rejectCallback(result.e, false, true);
- }
-
- var value = result.value;
- if (result.done === true) {
- this._promise._resolveCallback(value);
- } else {
- var maybePromise = tryConvertToPromise(value, this._promise);
- if (!(maybePromise instanceof Promise)) {
- maybePromise =
- promiseFromYieldHandler(maybePromise,
- this._yieldHandlers,
- this._promise);
- if (maybePromise === null) {
- this._throw(
- new TypeError(
- "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/4Y4pDk\u000a\u000a".replace("%s", value) +
- "From coroutine:\u000a" +
- this._stack.split("\n").slice(1, -7).join("\n")
- )
- );
- return;
- }
- }
- maybePromise._then(
- this._next,
- this._throw,
- undefined,
- this,
- null
- );
- }
-};
-
-PromiseSpawn.prototype._throw = function (reason) {
- this._promise._attachExtraTrace(reason);
- this._promise._pushContext();
- var result = tryCatch(this._generator["throw"])
- .call(this._generator, reason);
- this._promise._popContext();
- this._continue(result);
-};
-
-PromiseSpawn.prototype._next = function (value) {
- this._promise._pushContext();
- var result = tryCatch(this._generator.next).call(this._generator, value);
- this._promise._popContext();
- this._continue(result);
-};
-
-Promise.coroutine = function (generatorFunction, options) {
- if (typeof generatorFunction !== "function") {
- throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/6Vqhm0\u000a");
- }
- var yieldHandler = Object(options).yieldHandler;
- var PromiseSpawn$ = PromiseSpawn;
- var stack = new Error().stack;
- return function () {
- var generator = generatorFunction.apply(this, arguments);
- var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,
- stack);
- spawn._generator = generator;
- spawn._next(undefined);
- return spawn.promise();
- };
-};
-
-Promise.coroutine.addYieldHandler = function(fn) {
- if (typeof fn !== "function") throw new TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- yieldHandlers.push(fn);
-};
-
-Promise.spawn = function (generatorFunction) {
- if (typeof generatorFunction !== "function") {
- return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/6Vqhm0\u000a");
- }
- var spawn = new PromiseSpawn(generatorFunction, this);
- var ret = spawn.promise();
- spawn._run(Promise.spawn);
- return ret;
-};
-};
-
-},{"./errors.js":13,"./util.js":38}],18:[function(_dereq_,module,exports){
-"use strict";
-module.exports =
-function(Promise, PromiseArray, tryConvertToPromise, INTERNAL) {
-var util = _dereq_("./util.js");
-var canEvaluate = util.canEvaluate;
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-var reject;
-
-if (!true) {
-if (canEvaluate) {
- var thenCallback = function(i) {
- return new Function("value", "holder", " \n\
- 'use strict'; \n\
- holder.pIndex = value; \n\
- holder.checkFulfillment(this); \n\
- ".replace(/Index/g, i));
- };
-
- var caller = function(count) {
- var values = [];
- for (var i = 1; i <= count; ++i) values.push("holder.p" + i);
- return new Function("holder", " \n\
- 'use strict'; \n\
- var callback = holder.fn; \n\
- return callback(values); \n\
- ".replace(/values/g, values.join(", ")));
- };
- var thenCallbacks = [];
- var callers = [undefined];
- for (var i = 1; i <= 5; ++i) {
- thenCallbacks.push(thenCallback(i));
- callers.push(caller(i));
- }
-
- var Holder = function(total, fn) {
- this.p1 = this.p2 = this.p3 = this.p4 = this.p5 = null;
- this.fn = fn;
- this.total = total;
- this.now = 0;
- };
-
- Holder.prototype.callers = callers;
- Holder.prototype.checkFulfillment = function(promise) {
- var now = this.now;
- now++;
- var total = this.total;
- if (now >= total) {
- var handler = this.callers[total];
- promise._pushContext();
- var ret = tryCatch(handler)(this);
- promise._popContext();
- if (ret === errorObj) {
- promise._rejectCallback(ret.e, false, true);
- } else {
- promise._resolveCallback(ret);
- }
- } else {
- this.now = now;
- }
- };
-
- var reject = function (reason) {
- this._reject(reason);
- };
-}
-}
-
-Promise.join = function () {
- var last = arguments.length - 1;
- var fn;
- if (last > 0 && typeof arguments[last] === "function") {
- fn = arguments[last];
- if (!true) {
- if (last < 6 && canEvaluate) {
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- var holder = new Holder(last, fn);
- var callbacks = thenCallbacks;
- for (var i = 0; i < last; ++i) {
- var maybePromise = tryConvertToPromise(arguments[i], ret);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- maybePromise._then(callbacks[i], reject,
- undefined, ret, holder);
- } else if (maybePromise._isFulfilled()) {
- callbacks[i].call(ret,
- maybePromise._value(), holder);
- } else {
- ret._reject(maybePromise._reason());
- }
- } else {
- callbacks[i].call(ret, maybePromise, holder);
- }
- }
- return ret;
- }
- }
- }
- var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];}
- if (fn) args.pop();
- var ret = new PromiseArray(args).promise();
- return fn !== undefined ? ret.spread(fn) : ret;
-};
-
-};
-
-},{"./util.js":38}],19:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise,
- PromiseArray,
- apiRejection,
- tryConvertToPromise,
- INTERNAL) {
-var async = _dereq_("./async.js");
-var util = _dereq_("./util.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-var PENDING = {};
-var EMPTY_ARRAY = [];
-
-function MappingPromiseArray(promises, fn, limit, _filter) {
- this.constructor$(promises);
- this._promise._captureStackTrace();
- this._callback = fn;
- this._preservedValues = _filter === INTERNAL
- ? new Array(this.length())
- : null;
- this._limit = limit;
- this._inFlight = 0;
- this._queue = limit >= 1 ? [] : EMPTY_ARRAY;
- async.invoke(init, this, undefined);
-}
-util.inherits(MappingPromiseArray, PromiseArray);
-function init() {this._init$(undefined, -2);}
-
-MappingPromiseArray.prototype._init = function () {};
-
-MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {
- var values = this._values;
- var length = this.length();
- var preservedValues = this._preservedValues;
- var limit = this._limit;
- if (values[index] === PENDING) {
- values[index] = value;
- if (limit >= 1) {
- this._inFlight--;
- this._drainQueue();
- if (this._isResolved()) return;
- }
- } else {
- if (limit >= 1 && this._inFlight >= limit) {
- values[index] = value;
- this._queue.push(index);
- return;
- }
- if (preservedValues !== null) preservedValues[index] = value;
-
- var callback = this._callback;
- var receiver = this._promise._boundTo;
- this._promise._pushContext();
- var ret = tryCatch(callback).call(receiver, value, index, length);
- this._promise._popContext();
- if (ret === errorObj) return this._reject(ret.e);
-
- var maybePromise = tryConvertToPromise(ret, this._promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- if (limit >= 1) this._inFlight++;
- values[index] = PENDING;
- return maybePromise._proxyPromiseArray(this, index);
- } else if (maybePromise._isFulfilled()) {
- ret = maybePromise._value();
- } else {
- return this._reject(maybePromise._reason());
- }
- }
- values[index] = ret;
- }
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= length) {
- if (preservedValues !== null) {
- this._filter(values, preservedValues);
- } else {
- this._resolve(values);
- }
-
- }
-};
-
-MappingPromiseArray.prototype._drainQueue = function () {
- var queue = this._queue;
- var limit = this._limit;
- var values = this._values;
- while (queue.length > 0 && this._inFlight < limit) {
- if (this._isResolved()) return;
- var index = queue.pop();
- this._promiseFulfilled(values[index], index);
- }
-};
-
-MappingPromiseArray.prototype._filter = function (booleans, values) {
- var len = values.length;
- var ret = new Array(len);
- var j = 0;
- for (var i = 0; i < len; ++i) {
- if (booleans[i]) ret[j++] = values[i];
- }
- ret.length = j;
- this._resolve(ret);
-};
-
-MappingPromiseArray.prototype.preservedValues = function () {
- return this._preservedValues;
-};
-
-function map(promises, fn, options, _filter) {
- var limit = typeof options === "object" && options !== null
- ? options.concurrency
- : 0;
- limit = typeof limit === "number" &&
- isFinite(limit) && limit >= 1 ? limit : 0;
- return new MappingPromiseArray(promises, fn, limit, _filter);
-}
-
-Promise.prototype.map = function (fn, options) {
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
-
- return map(this, fn, options, null).promise();
-};
-
-Promise.map = function (promises, fn, options, _filter) {
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- return map(promises, fn, options, _filter).promise();
-};
-
-
-};
-
-},{"./async.js":2,"./util.js":38}],20:[function(_dereq_,module,exports){
-"use strict";
-module.exports =
-function(Promise, INTERNAL, tryConvertToPromise, apiRejection) {
-var util = _dereq_("./util.js");
-var tryCatch = util.tryCatch;
-
-Promise.method = function (fn) {
- if (typeof fn !== "function") {
- throw new Promise.TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- }
- return function () {
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- ret._pushContext();
- var value = tryCatch(fn).apply(this, arguments);
- ret._popContext();
- ret._resolveFromSyncValue(value);
- return ret;
- };
-};
-
-Promise.attempt = Promise["try"] = function (fn, args, ctx) {
- if (typeof fn !== "function") {
- return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- }
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- ret._pushContext();
- var value = util.isArray(args)
- ? tryCatch(fn).apply(ctx, args)
- : tryCatch(fn).call(ctx, args);
- ret._popContext();
- ret._resolveFromSyncValue(value);
- return ret;
-};
-
-Promise.prototype._resolveFromSyncValue = function (value) {
- if (value === util.errorObj) {
- this._rejectCallback(value.e, false, true);
- } else {
- this._resolveCallback(value, true);
- }
-};
-};
-
-},{"./util.js":38}],21:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise) {
-var util = _dereq_("./util.js");
-var async = _dereq_("./async.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-
-function spreadAdapter(val, nodeback) {
- var promise = this;
- if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);
- var ret = tryCatch(nodeback).apply(promise._boundTo, [null].concat(val));
- if (ret === errorObj) {
- async.throwLater(ret.e);
- }
-}
-
-function successAdapter(val, nodeback) {
- var promise = this;
- var receiver = promise._boundTo;
- var ret = val === undefined
- ? tryCatch(nodeback).call(receiver, null)
- : tryCatch(nodeback).call(receiver, null, val);
- if (ret === errorObj) {
- async.throwLater(ret.e);
- }
-}
-function errorAdapter(reason, nodeback) {
- var promise = this;
- if (!reason) {
- var target = promise._target();
- var newReason = target._getCarriedStackTrace();
- newReason.cause = reason;
- reason = newReason;
- }
- var ret = tryCatch(nodeback).call(promise._boundTo, reason);
- if (ret === errorObj) {
- async.throwLater(ret.e);
- }
-}
-
-Promise.prototype.asCallback =
-Promise.prototype.nodeify = function (nodeback, options) {
- if (typeof nodeback == "function") {
- var adapter = successAdapter;
- if (options !== undefined && Object(options).spread) {
- adapter = spreadAdapter;
- }
- this._then(
- adapter,
- errorAdapter,
- undefined,
- this,
- nodeback
- );
- }
- return this;
-};
-};
-
-},{"./async.js":2,"./util.js":38}],22:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, PromiseArray) {
-var util = _dereq_("./util.js");
-var async = _dereq_("./async.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-
-Promise.prototype.progressed = function (handler) {
- return this._then(undefined, undefined, handler, undefined, undefined);
-};
-
-Promise.prototype._progress = function (progressValue) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- this._target()._progressUnchecked(progressValue);
-
-};
-
-Promise.prototype._progressHandlerAt = function (index) {
- return index === 0
- ? this._progressHandler0
- : this[(index << 2) + index - 5 + 2];
-};
-
-Promise.prototype._doProgressWith = function (progression) {
- var progressValue = progression.value;
- var handler = progression.handler;
- var promise = progression.promise;
- var receiver = progression.receiver;
-
- var ret = tryCatch(handler).call(receiver, progressValue);
- if (ret === errorObj) {
- if (ret.e != null &&
- ret.e.name !== "StopProgressPropagation") {
- var trace = util.canAttachTrace(ret.e)
- ? ret.e : new Error(util.toString(ret.e));
- promise._attachExtraTrace(trace);
- promise._progress(ret.e);
- }
- } else if (ret instanceof Promise) {
- ret._then(promise._progress, null, null, promise, undefined);
- } else {
- promise._progress(ret);
- }
-};
-
-
-Promise.prototype._progressUnchecked = function (progressValue) {
- var len = this._length();
- var progress = this._progress;
- for (var i = 0; i < len; i++) {
- var handler = this._progressHandlerAt(i);
- var promise = this._promiseAt(i);
- if (!(promise instanceof Promise)) {
- var receiver = this._receiverAt(i);
- if (typeof handler === "function") {
- handler.call(receiver, progressValue, promise);
- } else if (receiver instanceof PromiseArray &&
- !receiver._isResolved()) {
- receiver._promiseProgressed(progressValue, promise);
- }
- continue;
- }
-
- if (typeof handler === "function") {
- async.invoke(this._doProgressWith, this, {
- handler: handler,
- promise: promise,
- receiver: this._receiverAt(i),
- value: progressValue
- });
- } else {
- async.invoke(progress, promise, progressValue);
- }
- }
-};
-};
-
-},{"./async.js":2,"./util.js":38}],23:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function() {
-var makeSelfResolutionError = function () {
- return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/LhFpo0\u000a");
-};
-var reflect = function() {
- return new Promise.PromiseInspection(this._target());
-};
-var apiRejection = function(msg) {
- return Promise.reject(new TypeError(msg));
-};
-var util = _dereq_("./util.js");
-var async = _dereq_("./async.js");
-var errors = _dereq_("./errors.js");
-var TypeError = Promise.TypeError = errors.TypeError;
-Promise.RangeError = errors.RangeError;
-Promise.CancellationError = errors.CancellationError;
-Promise.TimeoutError = errors.TimeoutError;
-Promise.OperationalError = errors.OperationalError;
-Promise.RejectionError = errors.OperationalError;
-Promise.AggregateError = errors.AggregateError;
-var INTERNAL = function(){};
-var APPLY = {};
-var NEXT_FILTER = {e: null};
-var tryConvertToPromise = _dereq_("./thenables.js")(Promise, INTERNAL);
-var PromiseArray =
- _dereq_("./promise_array.js")(Promise, INTERNAL,
- tryConvertToPromise, apiRejection);
-var CapturedTrace = _dereq_("./captured_trace.js")();
-var isDebugging = _dereq_("./debuggability.js")(Promise, CapturedTrace);
- /*jshint unused:false*/
-var createContext =
- _dereq_("./context.js")(Promise, CapturedTrace, isDebugging);
-var CatchFilter = _dereq_("./catch_filter.js")(NEXT_FILTER);
-var PromiseResolver = _dereq_("./promise_resolver.js");
-var nodebackForPromise = PromiseResolver._nodebackForPromise;
-var errorObj = util.errorObj;
-var tryCatch = util.tryCatch;
-function Promise(resolver) {
- if (typeof resolver !== "function") {
- throw new TypeError("the promise constructor requires a resolver function\u000a\u000a See http://goo.gl/EC22Yn\u000a");
- }
- if (this.constructor !== Promise) {
- throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/KsIlge\u000a");
- }
- this._bitField = 0;
- this._fulfillmentHandler0 = undefined;
- this._rejectionHandler0 = undefined;
- this._progressHandler0 = undefined;
- this._promise0 = undefined;
- this._receiver0 = undefined;
- this._settledValue = undefined;
- if (resolver !== INTERNAL) this._resolveFromResolver(resolver);
-}
-
-Promise.prototype.toString = function () {
- return "[object Promise]";
-};
-
-Promise.prototype.caught = Promise.prototype["catch"] = function (fn) {
- var len = arguments.length;
- if (len > 1) {
- var catchInstances = new Array(len - 1),
- j = 0, i;
- for (i = 0; i < len - 1; ++i) {
- var item = arguments[i];
- if (typeof item === "function") {
- catchInstances[j++] = item;
- } else {
- return Promise.reject(
- new TypeError("Catch filter must inherit from Error or be a simple predicate function\u000a\u000a See http://goo.gl/o84o68\u000a"));
- }
- }
- catchInstances.length = j;
- fn = arguments[i];
- var catchFilter = new CatchFilter(catchInstances, fn, this);
- return this._then(undefined, catchFilter.doFilter, undefined,
- catchFilter, undefined);
- }
- return this._then(undefined, fn, undefined, undefined, undefined);
-};
-
-Promise.prototype.reflect = function () {
- return this._then(reflect, reflect, undefined, this, undefined);
-};
-
-Promise.prototype.then = function (didFulfill, didReject, didProgress) {
- if (isDebugging() && arguments.length > 0 &&
- typeof didFulfill !== "function" &&
- typeof didReject !== "function") {
- var msg = ".then() only accepts functions but was passed: " +
- util.classString(didFulfill);
- if (arguments.length > 1) {
- msg += ", " + util.classString(didReject);
- }
- this._warn(msg);
- }
- return this._then(didFulfill, didReject, didProgress,
- undefined, undefined);
-};
-
-Promise.prototype.done = function (didFulfill, didReject, didProgress) {
- var promise = this._then(didFulfill, didReject, didProgress,
- undefined, undefined);
- promise._setIsFinal();
-};
-
-Promise.prototype.spread = function (didFulfill, didReject) {
- return this.all()._then(didFulfill, didReject, undefined, APPLY, undefined);
-};
-
-Promise.prototype.isCancellable = function () {
- return !this.isResolved() &&
- this._cancellable();
-};
-
-Promise.prototype.toJSON = function () {
- var ret = {
- isFulfilled: false,
- isRejected: false,
- fulfillmentValue: undefined,
- rejectionReason: undefined
- };
- if (this.isFulfilled()) {
- ret.fulfillmentValue = this.value();
- ret.isFulfilled = true;
- } else if (this.isRejected()) {
- ret.rejectionReason = this.reason();
- ret.isRejected = true;
- }
- return ret;
-};
-
-Promise.prototype.all = function () {
- return new PromiseArray(this).promise();
-};
-
-Promise.prototype.error = function (fn) {
- return this.caught(util.originatesFromRejection, fn);
-};
-
-Promise.is = function (val) {
- return val instanceof Promise;
-};
-
-Promise.fromNode = function(fn) {
- var ret = new Promise(INTERNAL);
- var result = tryCatch(fn)(nodebackForPromise(ret));
- if (result === errorObj) {
- ret._rejectCallback(result.e, true, true);
- }
- return ret;
-};
-
-Promise.all = function (promises) {
- return new PromiseArray(promises).promise();
-};
-
-Promise.defer = Promise.pending = function () {
- var promise = new Promise(INTERNAL);
- return new PromiseResolver(promise);
-};
-
-Promise.cast = function (obj) {
- var ret = tryConvertToPromise(obj);
- if (!(ret instanceof Promise)) {
- var val = ret;
- ret = new Promise(INTERNAL);
- ret._fulfillUnchecked(val);
- }
- return ret;
-};
-
-Promise.resolve = Promise.fulfilled = Promise.cast;
-
-Promise.reject = Promise.rejected = function (reason) {
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- ret._rejectCallback(reason, true);
- return ret;
-};
-
-Promise.setScheduler = function(fn) {
- if (typeof fn !== "function") throw new TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- var prev = async._schedule;
- async._schedule = fn;
- return prev;
-};
-
-Promise.prototype._then = function (
- didFulfill,
- didReject,
- didProgress,
- receiver,
- internalData
-) {
- var haveInternalData = internalData !== undefined;
- var ret = haveInternalData ? internalData : new Promise(INTERNAL);
-
- if (!haveInternalData) {
- ret._propagateFrom(this, 4 | 1);
- ret._captureStackTrace();
- }
-
- var target = this._target();
- if (target !== this) {
- if (receiver === undefined) receiver = this._boundTo;
- if (!haveInternalData) ret._setIsMigrated();
- }
-
- var callbackIndex =
- target._addCallbacks(didFulfill, didReject, didProgress, ret, receiver);
-
- if (target._isResolved() && !target._isSettlePromisesQueued()) {
- async.invoke(
- target._settlePromiseAtPostResolution, target, callbackIndex);
- }
-
- return ret;
-};
-
-Promise.prototype._settlePromiseAtPostResolution = function (index) {
- if (this._isRejectionUnhandled()) this._unsetRejectionIsUnhandled();
- this._settlePromiseAt(index);
-};
-
-Promise.prototype._length = function () {
- return this._bitField & 131071;
-};
-
-Promise.prototype._isFollowingOrFulfilledOrRejected = function () {
- return (this._bitField & 939524096) > 0;
-};
-
-Promise.prototype._isFollowing = function () {
- return (this._bitField & 536870912) === 536870912;
-};
-
-Promise.prototype._setLength = function (len) {
- this._bitField = (this._bitField & -131072) |
- (len & 131071);
-};
-
-Promise.prototype._setFulfilled = function () {
- this._bitField = this._bitField | 268435456;
-};
-
-Promise.prototype._setRejected = function () {
- this._bitField = this._bitField | 134217728;
-};
-
-Promise.prototype._setFollowing = function () {
- this._bitField = this._bitField | 536870912;
-};
-
-Promise.prototype._setIsFinal = function () {
- this._bitField = this._bitField | 33554432;
-};
-
-Promise.prototype._isFinal = function () {
- return (this._bitField & 33554432) > 0;
-};
-
-Promise.prototype._cancellable = function () {
- return (this._bitField & 67108864) > 0;
-};
-
-Promise.prototype._setCancellable = function () {
- this._bitField = this._bitField | 67108864;
-};
-
-Promise.prototype._unsetCancellable = function () {
- this._bitField = this._bitField & (~67108864);
-};
-
-Promise.prototype._setIsMigrated = function () {
- this._bitField = this._bitField | 4194304;
-};
-
-Promise.prototype._unsetIsMigrated = function () {
- this._bitField = this._bitField & (~4194304);
-};
-
-Promise.prototype._isMigrated = function () {
- return (this._bitField & 4194304) > 0;
-};
-
-Promise.prototype._receiverAt = function (index) {
- var ret = index === 0
- ? this._receiver0
- : this[
- index * 5 - 5 + 4];
- if (ret === undefined && this._isBound()) {
- return this._boundTo;
- }
- return ret;
-};
-
-Promise.prototype._promiseAt = function (index) {
- return index === 0
- ? this._promise0
- : this[index * 5 - 5 + 3];
-};
-
-Promise.prototype._fulfillmentHandlerAt = function (index) {
- return index === 0
- ? this._fulfillmentHandler0
- : this[index * 5 - 5 + 0];
-};
-
-Promise.prototype._rejectionHandlerAt = function (index) {
- return index === 0
- ? this._rejectionHandler0
- : this[index * 5 - 5 + 1];
-};
-
-Promise.prototype._migrateCallbacks = function (follower, index) {
- var fulfill = follower._fulfillmentHandlerAt(index);
- var reject = follower._rejectionHandlerAt(index);
- var progress = follower._progressHandlerAt(index);
- var promise = follower._promiseAt(index);
- var receiver = follower._receiverAt(index);
- if (promise instanceof Promise) promise._setIsMigrated();
- this._addCallbacks(fulfill, reject, progress, promise, receiver);
-};
-
-Promise.prototype._addCallbacks = function (
- fulfill,
- reject,
- progress,
- promise,
- receiver
-) {
- var index = this._length();
-
- if (index >= 131071 - 5) {
- index = 0;
- this._setLength(0);
- }
-
- if (index === 0) {
- this._promise0 = promise;
- if (receiver !== undefined) this._receiver0 = receiver;
- if (typeof fulfill === "function" && !this._isCarryingStackTrace())
- this._fulfillmentHandler0 = fulfill;
- if (typeof reject === "function") this._rejectionHandler0 = reject;
- if (typeof progress === "function") this._progressHandler0 = progress;
- } else {
- var base = index * 5 - 5;
- this[base + 3] = promise;
- this[base + 4] = receiver;
- if (typeof fulfill === "function")
- this[base + 0] = fulfill;
- if (typeof reject === "function")
- this[base + 1] = reject;
- if (typeof progress === "function")
- this[base + 2] = progress;
- }
- this._setLength(index + 1);
- return index;
-};
-
-Promise.prototype._setProxyHandlers = function (receiver, promiseSlotValue) {
- var index = this._length();
-
- if (index >= 131071 - 5) {
- index = 0;
- this._setLength(0);
- }
- if (index === 0) {
- this._promise0 = promiseSlotValue;
- this._receiver0 = receiver;
- } else {
- var base = index * 5 - 5;
- this[base + 3] = promiseSlotValue;
- this[base + 4] = receiver;
- }
- this._setLength(index + 1);
-};
-
-Promise.prototype._proxyPromiseArray = function (promiseArray, index) {
- this._setProxyHandlers(promiseArray, index);
-};
-
-Promise.prototype._resolveCallback = function(value, shouldBind) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- if (value === this)
- return this._rejectCallback(makeSelfResolutionError(), false, true);
- var maybePromise = tryConvertToPromise(value, this);
- if (!(maybePromise instanceof Promise)) return this._fulfill(value);
-
- var propagationFlags = 1 | (shouldBind ? 4 : 0);
- this._propagateFrom(maybePromise, propagationFlags);
- var promise = maybePromise._target();
- if (promise._isPending()) {
- var len = this._length();
- for (var i = 0; i < len; ++i) {
- promise._migrateCallbacks(this, i);
- }
- this._setFollowing();
- this._setLength(0);
- this._setFollowee(promise);
- } else if (promise._isFulfilled()) {
- this._fulfillUnchecked(promise._value());
- } else {
- this._rejectUnchecked(promise._reason(),
- promise._getCarriedStackTrace());
- }
-};
-
-Promise.prototype._rejectCallback =
-function(reason, synchronous, shouldNotMarkOriginatingFromRejection) {
- if (!shouldNotMarkOriginatingFromRejection) {
- util.markAsOriginatingFromRejection(reason);
- }
- var trace = util.ensureErrorObject(reason);
- var hasStack = trace === reason;
- this._attachExtraTrace(trace, synchronous ? hasStack : false);
- this._reject(reason, hasStack ? undefined : trace);
-};
-
-Promise.prototype._resolveFromResolver = function (resolver) {
- var promise = this;
- this._captureStackTrace();
- this._pushContext();
- var synchronous = true;
- var r = tryCatch(resolver)(function(value) {
- if (promise === null) return;
- promise._resolveCallback(value);
- promise = null;
- }, function (reason) {
- if (promise === null) return;
- promise._rejectCallback(reason, synchronous);
- promise = null;
- });
- synchronous = false;
- this._popContext();
-
- if (r !== undefined && r === errorObj && promise !== null) {
- promise._rejectCallback(r.e, true, true);
- promise = null;
- }
-};
-
-Promise.prototype._settlePromiseFromHandler = function (
- handler, receiver, value, promise
-) {
- if (promise._isRejected()) return;
- promise._pushContext();
- var x;
- if (receiver === APPLY && !this._isRejected()) {
- x = tryCatch(handler).apply(this._boundTo, value);
- } else {
- x = tryCatch(handler).call(receiver, value);
- }
- promise._popContext();
-
- if (x === errorObj || x === promise || x === NEXT_FILTER) {
- var err = x === promise ? makeSelfResolutionError() : x.e;
- promise._rejectCallback(err, false, true);
- } else {
- promise._resolveCallback(x);
- }
-};
-
-Promise.prototype._target = function() {
- var ret = this;
- while (ret._isFollowing()) ret = ret._followee();
- return ret;
-};
-
-Promise.prototype._followee = function() {
- return this._rejectionHandler0;
-};
-
-Promise.prototype._setFollowee = function(promise) {
- this._rejectionHandler0 = promise;
-};
-
-Promise.prototype._cleanValues = function () {
- if (this._cancellable()) {
- this._cancellationParent = undefined;
- }
-};
-
-Promise.prototype._propagateFrom = function (parent, flags) {
- if ((flags & 1) > 0 && parent._cancellable()) {
- this._setCancellable();
- this._cancellationParent = parent;
- }
- if ((flags & 4) > 0 && parent._isBound()) {
- this._setBoundTo(parent._boundTo);
- }
-};
-
-Promise.prototype._fulfill = function (value) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- this._fulfillUnchecked(value);
-};
-
-Promise.prototype._reject = function (reason, carriedStackTrace) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- this._rejectUnchecked(reason, carriedStackTrace);
-};
-
-Promise.prototype._settlePromiseAt = function (index) {
- var promise = this._promiseAt(index);
- var isPromise = promise instanceof Promise;
-
- if (isPromise && promise._isMigrated()) {
- promise._unsetIsMigrated();
- return async.invoke(this._settlePromiseAt, this, index);
- }
- var handler = this._isFulfilled()
- ? this._fulfillmentHandlerAt(index)
- : this._rejectionHandlerAt(index);
-
- var carriedStackTrace =
- this._isCarryingStackTrace() ? this._getCarriedStackTrace() : undefined;
- var value = this._settledValue;
- var receiver = this._receiverAt(index);
-
-
- this._clearCallbackDataAtIndex(index);
-
- if (typeof handler === "function") {
- if (!isPromise) {
- handler.call(receiver, value, promise);
- } else {
- this._settlePromiseFromHandler(handler, receiver, value, promise);
- }
- } else if (receiver instanceof PromiseArray) {
- if (!receiver._isResolved()) {
- if (this._isFulfilled()) {
- receiver._promiseFulfilled(value, promise);
- }
- else {
- receiver._promiseRejected(value, promise);
- }
- }
- } else if (isPromise) {
- if (this._isFulfilled()) {
- promise._fulfill(value);
- } else {
- promise._reject(value, carriedStackTrace);
- }
- }
-
- if (index >= 4 && (index & 31) === 4)
- async.invokeLater(this._setLength, this, 0);
-};
-
-Promise.prototype._clearCallbackDataAtIndex = function(index) {
- if (index === 0) {
- if (!this._isCarryingStackTrace()) {
- this._fulfillmentHandler0 = undefined;
- }
- this._rejectionHandler0 =
- this._progressHandler0 =
- this._receiver0 =
- this._promise0 = undefined;
- } else {
- var base = index * 5 - 5;
- this[base + 3] =
- this[base + 4] =
- this[base + 0] =
- this[base + 1] =
- this[base + 2] = undefined;
- }
-};
-
-Promise.prototype._isSettlePromisesQueued = function () {
- return (this._bitField &
- -1073741824) === -1073741824;
-};
-
-Promise.prototype._setSettlePromisesQueued = function () {
- this._bitField = this._bitField | -1073741824;
-};
-
-Promise.prototype._unsetSettlePromisesQueued = function () {
- this._bitField = this._bitField & (~-1073741824);
-};
-
-Promise.prototype._queueSettlePromises = function() {
- async.settlePromises(this);
- this._setSettlePromisesQueued();
-};
-
-Promise.prototype._fulfillUnchecked = function (value) {
- if (value === this) {
- var err = makeSelfResolutionError();
- this._attachExtraTrace(err);
- return this._rejectUnchecked(err, undefined);
- }
- this._setFulfilled();
- this._settledValue = value;
- this._cleanValues();
-
- if (this._length() > 0) {
- this._queueSettlePromises();
- }
-};
-
-Promise.prototype._rejectUncheckedCheckError = function (reason) {
- var trace = util.ensureErrorObject(reason);
- this._rejectUnchecked(reason, trace === reason ? undefined : trace);
-};
-
-Promise.prototype._rejectUnchecked = function (reason, trace) {
- if (reason === this) {
- var err = makeSelfResolutionError();
- this._attachExtraTrace(err);
- return this._rejectUnchecked(err);
- }
- this._setRejected();
- this._settledValue = reason;
- this._cleanValues();
-
- if (this._isFinal()) {
- async.throwLater(function(e) {
- if ("stack" in e) {
- async.invokeFirst(
- CapturedTrace.unhandledRejection, undefined, e);
- }
- throw e;
- }, trace === undefined ? reason : trace);
- return;
- }
-
- if (trace !== undefined && trace !== reason) {
- this._setCarriedStackTrace(trace);
- }
-
- if (this._length() > 0) {
- this._queueSettlePromises();
- } else {
- this._ensurePossibleRejectionHandled();
- }
-};
-
-Promise.prototype._settlePromises = function () {
- this._unsetSettlePromisesQueued();
- var len = this._length();
- for (var i = 0; i < len; i++) {
- this._settlePromiseAt(i);
- }
-};
-
-Promise._makeSelfResolutionError = makeSelfResolutionError;
-_dereq_("./progress.js")(Promise, PromiseArray);
-_dereq_("./method.js")(Promise, INTERNAL, tryConvertToPromise, apiRejection);
-_dereq_("./bind.js")(Promise, INTERNAL, tryConvertToPromise);
-_dereq_("./finally.js")(Promise, NEXT_FILTER, tryConvertToPromise);
-_dereq_("./direct_resolve.js")(Promise);
-_dereq_("./synchronous_inspection.js")(Promise);
-_dereq_("./join.js")(Promise, PromiseArray, tryConvertToPromise, INTERNAL);
-Promise.Promise = Promise;
-_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL);
-_dereq_('./cancel.js')(Promise);
-_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext);
-_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise);
-_dereq_('./nodeify.js')(Promise);
-_dereq_('./call_get.js')(Promise);
-_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);
-_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);
-_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL);
-_dereq_('./settle.js')(Promise, PromiseArray);
-_dereq_('./some.js')(Promise, PromiseArray, apiRejection);
-_dereq_('./promisify.js')(Promise, INTERNAL);
-_dereq_('./any.js')(Promise);
-_dereq_('./each.js')(Promise, INTERNAL);
-_dereq_('./timers.js')(Promise, INTERNAL);
-_dereq_('./filter.js')(Promise, INTERNAL);
-
- util.toFastProperties(Promise);
- util.toFastProperties(Promise.prototype);
- function fillTypes(value) {
- var p = new Promise(INTERNAL);
- p._fulfillmentHandler0 = value;
- p._rejectionHandler0 = value;
- p._progressHandler0 = value;
- p._promise0 = value;
- p._receiver0 = value;
- p._settledValue = value;
- }
- // Complete slack tracking, opt out of field-type tracking and
- // stabilize map
- fillTypes({a: 1});
- fillTypes({b: 2});
- fillTypes({c: 3});
- fillTypes(1);
- fillTypes(function(){});
- fillTypes(undefined);
- fillTypes(false);
- fillTypes(new Promise(INTERNAL));
- CapturedTrace.setBounds(async.firstLineError, util.lastLineError);
- return Promise;
-
-};
-
-},{"./any.js":1,"./async.js":2,"./bind.js":3,"./call_get.js":5,"./cancel.js":6,"./captured_trace.js":7,"./catch_filter.js":8,"./context.js":9,"./debuggability.js":10,"./direct_resolve.js":11,"./each.js":12,"./errors.js":13,"./filter.js":15,"./finally.js":16,"./generators.js":17,"./join.js":18,"./map.js":19,"./method.js":20,"./nodeify.js":21,"./progress.js":22,"./promise_array.js":24,"./promise_resolver.js":25,"./promisify.js":26,"./props.js":27,"./race.js":29,"./reduce.js":30,"./settle.js":32,"./some.js":33,"./synchronous_inspection.js":34,"./thenables.js":35,"./timers.js":36,"./using.js":37,"./util.js":38}],24:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL, tryConvertToPromise,
- apiRejection) {
-var util = _dereq_("./util.js");
-var isArray = util.isArray;
-
-function toResolutionValue(val) {
- switch(val) {
- case -2: return [];
- case -3: return {};
- }
-}
-
-function PromiseArray(values) {
- var promise = this._promise = new Promise(INTERNAL);
- var parent;
- if (values instanceof Promise) {
- parent = values;
- promise._propagateFrom(parent, 1 | 4);
- }
- this._values = values;
- this._length = 0;
- this._totalResolved = 0;
- this._init(undefined, -2);
-}
-PromiseArray.prototype.length = function () {
- return this._length;
-};
-
-PromiseArray.prototype.promise = function () {
- return this._promise;
-};
-
-PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {
- var values = tryConvertToPromise(this._values, this._promise);
- if (values instanceof Promise) {
- values = values._target();
- this._values = values;
- if (values._isFulfilled()) {
- values = values._value();
- if (!isArray(values)) {
- var err = new Promise.TypeError("expecting an array, a promise or a thenable\u000a\u000a See http://goo.gl/s8MMhc\u000a");
- this.__hardReject__(err);
- return;
- }
- } else if (values._isPending()) {
- values._then(
- init,
- this._reject,
- undefined,
- this,
- resolveValueIfEmpty
- );
- return;
- } else {
- this._reject(values._reason());
- return;
- }
- } else if (!isArray(values)) {
- this._promise._reject(apiRejection("expecting an array, a promise or a thenable\u000a\u000a See http://goo.gl/s8MMhc\u000a")._reason());
- return;
- }
-
- if (values.length === 0) {
- if (resolveValueIfEmpty === -5) {
- this._resolveEmptyArray();
- }
- else {
- this._resolve(toResolutionValue(resolveValueIfEmpty));
- }
- return;
- }
- var len = this.getActualLength(values.length);
- this._length = len;
- this._values = this.shouldCopyValues() ? new Array(len) : this._values;
- var promise = this._promise;
- for (var i = 0; i < len; ++i) {
- var isResolved = this._isResolved();
- var maybePromise = tryConvertToPromise(values[i], promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (isResolved) {
- maybePromise._ignoreRejections();
- } else if (maybePromise._isPending()) {
- maybePromise._proxyPromiseArray(this, i);
- } else if (maybePromise._isFulfilled()) {
- this._promiseFulfilled(maybePromise._value(), i);
- } else {
- this._promiseRejected(maybePromise._reason(), i);
- }
- } else if (!isResolved) {
- this._promiseFulfilled(maybePromise, i);
- }
- }
-};
-
-PromiseArray.prototype._isResolved = function () {
- return this._values === null;
-};
-
-PromiseArray.prototype._resolve = function (value) {
- this._values = null;
- this._promise._fulfill(value);
-};
-
-PromiseArray.prototype.__hardReject__ =
-PromiseArray.prototype._reject = function (reason) {
- this._values = null;
- this._promise._rejectCallback(reason, false, true);
-};
-
-PromiseArray.prototype._promiseProgressed = function (progressValue, index) {
- this._promise._progress({
- index: index,
- value: progressValue
- });
-};
-
-
-PromiseArray.prototype._promiseFulfilled = function (value, index) {
- this._values[index] = value;
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= this._length) {
- this._resolve(this._values);
- }
-};
-
-PromiseArray.prototype._promiseRejected = function (reason, index) {
- this._totalResolved++;
- this._reject(reason);
-};
-
-PromiseArray.prototype.shouldCopyValues = function () {
- return true;
-};
-
-PromiseArray.prototype.getActualLength = function (len) {
- return len;
-};
-
-return PromiseArray;
-};
-
-},{"./util.js":38}],25:[function(_dereq_,module,exports){
-"use strict";
-var util = _dereq_("./util.js");
-var maybeWrapAsError = util.maybeWrapAsError;
-var errors = _dereq_("./errors.js");
-var TimeoutError = errors.TimeoutError;
-var OperationalError = errors.OperationalError;
-var haveGetters = util.haveGetters;
-var es5 = _dereq_("./es5.js");
-
-function isUntypedError(obj) {
- return obj instanceof Error &&
- es5.getPrototypeOf(obj) === Error.prototype;
-}
-
-var rErrorKey = /^(?:name|message|stack|cause)$/;
-function wrapAsOperationalError(obj) {
- var ret;
- if (isUntypedError(obj)) {
- ret = new OperationalError(obj);
- ret.name = obj.name;
- ret.message = obj.message;
- ret.stack = obj.stack;
- var keys = es5.keys(obj);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- if (!rErrorKey.test(key)) {
- ret[key] = obj[key];
- }
- }
- return ret;
- }
- util.markAsOriginatingFromRejection(obj);
- return obj;
-}
-
-function nodebackForPromise(promise) {
- return function(err, value) {
- if (promise === null) return;
-
- if (err) {
- var wrapped = wrapAsOperationalError(maybeWrapAsError(err));
- promise._attachExtraTrace(wrapped);
- promise._reject(wrapped);
- } else if (arguments.length > 2) {
- var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}
- promise._fulfill(args);
- } else {
- promise._fulfill(value);
- }
-
- promise = null;
- };
-}
-
-
-var PromiseResolver;
-if (!haveGetters) {
- PromiseResolver = function (promise) {
- this.promise = promise;
- this.asCallback = nodebackForPromise(promise);
- this.callback = this.asCallback;
- };
-}
-else {
- PromiseResolver = function (promise) {
- this.promise = promise;
- };
-}
-if (haveGetters) {
- var prop = {
- get: function() {
- return nodebackForPromise(this.promise);
- }
- };
- es5.defineProperty(PromiseResolver.prototype, "asCallback", prop);
- es5.defineProperty(PromiseResolver.prototype, "callback", prop);
-}
-
-PromiseResolver._nodebackForPromise = nodebackForPromise;
-
-PromiseResolver.prototype.toString = function () {
- return "[object PromiseResolver]";
-};
-
-PromiseResolver.prototype.resolve =
-PromiseResolver.prototype.fulfill = function (value) {
- if (!(this instanceof PromiseResolver)) {
- throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\u000a\u000a See http://goo.gl/sdkXL9\u000a");
- }
- this.promise._resolveCallback(value);
-};
-
-PromiseResolver.prototype.reject = function (reason) {
- if (!(this instanceof PromiseResolver)) {
- throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\u000a\u000a See http://goo.gl/sdkXL9\u000a");
- }
- this.promise._rejectCallback(reason);
-};
-
-PromiseResolver.prototype.progress = function (value) {
- if (!(this instanceof PromiseResolver)) {
- throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\u000a\u000a See http://goo.gl/sdkXL9\u000a");
- }
- this.promise._progress(value);
-};
-
-PromiseResolver.prototype.cancel = function (err) {
- this.promise.cancel(err);
-};
-
-PromiseResolver.prototype.timeout = function () {
- this.reject(new TimeoutError("timeout"));
-};
-
-PromiseResolver.prototype.isResolved = function () {
- return this.promise.isResolved();
-};
-
-PromiseResolver.prototype.toJSON = function () {
- return this.promise.toJSON();
-};
-
-module.exports = PromiseResolver;
-
-},{"./errors.js":13,"./es5.js":14,"./util.js":38}],26:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var THIS = {};
-var util = _dereq_("./util.js");
-var nodebackForPromise = _dereq_("./promise_resolver.js")
- ._nodebackForPromise;
-var withAppended = util.withAppended;
-var maybeWrapAsError = util.maybeWrapAsError;
-var canEvaluate = util.canEvaluate;
-var TypeError = _dereq_("./errors").TypeError;
-var defaultSuffix = "Async";
-var defaultPromisified = {__isPromisified__: true};
-var noCopyPropsPattern =
- /^(?:length|name|arguments|caller|callee|prototype|__isPromisified__)$/;
-var defaultFilter = function(name) {
- return util.isIdentifier(name) &&
- name.charAt(0) !== "_" &&
- name !== "constructor";
-};
-
-function propsFilter(key) {
- return !noCopyPropsPattern.test(key);
-}
-
-function isPromisified(fn) {
- try {
- return fn.__isPromisified__ === true;
- }
- catch (e) {
- return false;
- }
-}
-
-function hasPromisified(obj, key, suffix) {
- var val = util.getDataPropertyOrDefault(obj, key + suffix,
- defaultPromisified);
- return val ? isPromisified(val) : false;
-}
-function checkValid(ret, suffix, suffixRegexp) {
- for (var i = 0; i < ret.length; i += 2) {
- var key = ret[i];
- if (suffixRegexp.test(key)) {
- var keyWithoutAsyncSuffix = key.replace(suffixRegexp, "");
- for (var j = 0; j < ret.length; j += 2) {
- if (ret[j] === keyWithoutAsyncSuffix) {
- throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/iWrZbw\u000a"
- .replace("%s", suffix));
- }
- }
- }
- }
-}
-
-function promisifiableMethods(obj, suffix, suffixRegexp, filter) {
- var keys = util.inheritedDataKeys(obj);
- var ret = [];
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- var value = obj[key];
- var passesDefaultFilter = filter === defaultFilter
- ? true : defaultFilter(key, value, obj);
- if (typeof value === "function" &&
- !util.isNativeFunctionMethod(value) &&
- !isPromisified(value) &&
- !hasPromisified(obj, key, suffix) &&
- filter(key, value, obj, passesDefaultFilter)) {
- ret.push(key, value);
- }
- }
- checkValid(ret, suffix, suffixRegexp);
- return ret;
-}
-
-var escapeIdentRegex = function(str) {
- return str.replace(/([$])/, "\\$");
-};
-
-var makeNodePromisifiedEval;
-if (!true) {
-var switchCaseArgumentOrder = function(likelyArgumentCount) {
- var ret = [likelyArgumentCount];
- var min = Math.max(0, likelyArgumentCount - 1 - 3);
- for(var i = likelyArgumentCount - 1; i >= min; --i) {
- ret.push(i);
- }
- for(var i = likelyArgumentCount + 1; i <= 3; ++i) {
- ret.push(i);
- }
- return ret;
-};
-
-var argumentSequence = function(argumentCount) {
- return util.filledRange(argumentCount, "_arg", "");
-};
-
-var parameterDeclaration = function(parameterCount) {
- return util.filledRange(
- Math.max(parameterCount, 3), "_arg", "");
-};
-
-var parameterCount = function(fn) {
- if (typeof fn.length === "number") {
- return Math.max(Math.min(fn.length, 1023 + 1), 0);
- }
- return 0;
-};
-
-makeNodePromisifiedEval =
-function(callback, receiver, originalName, fn) {
- var newParameterCount = Math.max(0, parameterCount(fn) - 1);
- var argumentOrder = switchCaseArgumentOrder(newParameterCount);
- var shouldProxyThis = typeof callback === "string" || receiver === THIS;
-
- function generateCallForArgumentCount(count) {
- var args = argumentSequence(count).join(", ");
- var comma = count > 0 ? ", " : "";
- var ret;
- if (shouldProxyThis) {
- ret = "ret = callback.call(this, {{args}}, nodeback); break;\n";
- } else {
- ret = receiver === undefined
- ? "ret = callback({{args}}, nodeback); break;\n"
- : "ret = callback.call(receiver, {{args}}, nodeback); break;\n";
- }
- return ret.replace("{{args}}", args).replace(", ", comma);
- }
-
- function generateArgumentSwitchCase() {
- var ret = "";
- for (var i = 0; i < argumentOrder.length; ++i) {
- ret += "case " + argumentOrder[i] +":" +
- generateCallForArgumentCount(argumentOrder[i]);
- }
-
- ret += " \n\
- default: \n\
- var args = new Array(len + 1); \n\
- var i = 0; \n\
- for (var i = 0; i < len; ++i) { \n\
- args[i] = arguments[i]; \n\
- } \n\
- args[i] = nodeback; \n\
- [CodeForCall] \n\
- break; \n\
- ".replace("[CodeForCall]", (shouldProxyThis
- ? "ret = callback.apply(this, args);\n"
- : "ret = callback.apply(receiver, args);\n"));
- return ret;
- }
-
- var getFunctionCode = typeof callback === "string"
- ? ("this != null ? this['"+callback+"'] : fn")
- : "fn";
-
- return new Function("Promise",
- "fn",
- "receiver",
- "withAppended",
- "maybeWrapAsError",
- "nodebackForPromise",
- "tryCatch",
- "errorObj",
- "notEnumerableProp",
- "INTERNAL","'use strict'; \n\
- var ret = function (Parameters) { \n\
- 'use strict'; \n\
- var len = arguments.length; \n\
- var promise = new Promise(INTERNAL); \n\
- promise._captureStackTrace(); \n\
- var nodeback = nodebackForPromise(promise); \n\
- var ret; \n\
- var callback = tryCatch([GetFunctionCode]); \n\
- switch(len) { \n\
- [CodeForSwitchCase] \n\
- } \n\
- if (ret === errorObj) { \n\
- promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\
- } \n\
- return promise; \n\
- }; \n\
- notEnumerableProp(ret, '__isPromisified__', true); \n\
- return ret; \n\
- "
- .replace("Parameters", parameterDeclaration(newParameterCount))
- .replace("[CodeForSwitchCase]", generateArgumentSwitchCase())
- .replace("[GetFunctionCode]", getFunctionCode))(
- Promise,
- fn,
- receiver,
- withAppended,
- maybeWrapAsError,
- nodebackForPromise,
- util.tryCatch,
- util.errorObj,
- util.notEnumerableProp,
- INTERNAL
- );
-};
-}
-
-function makeNodePromisifiedClosure(callback, receiver, _, fn) {
- var defaultThis = (function() {return this;})();
- var method = callback;
- if (typeof method === "string") {
- callback = fn;
- }
- function promisified() {
- var _receiver = receiver;
- if (receiver === THIS) _receiver = this;
- var promise = new Promise(INTERNAL);
- promise._captureStackTrace();
- var cb = typeof method === "string" && this !== defaultThis
- ? this[method] : callback;
- var fn = nodebackForPromise(promise);
- try {
- cb.apply(_receiver, withAppended(arguments, fn));
- } catch(e) {
- promise._rejectCallback(maybeWrapAsError(e), true, true);
- }
- return promise;
- }
- util.notEnumerableProp(promisified, "__isPromisified__", true);
- return promisified;
-}
-
-var makeNodePromisified = canEvaluate
- ? makeNodePromisifiedEval
- : makeNodePromisifiedClosure;
-
-function promisifyAll(obj, suffix, filter, promisifier) {
- var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$");
- var methods =
- promisifiableMethods(obj, suffix, suffixRegexp, filter);
-
- for (var i = 0, len = methods.length; i < len; i+= 2) {
- var key = methods[i];
- var fn = methods[i+1];
- var promisifiedKey = key + suffix;
- obj[promisifiedKey] = promisifier === makeNodePromisified
- ? makeNodePromisified(key, THIS, key, fn, suffix)
- : promisifier(fn, function() {
- return makeNodePromisified(key, THIS, key, fn, suffix);
- });
- }
- util.toFastProperties(obj);
- return obj;
-}
-
-function promisify(callback, receiver) {
- return makeNodePromisified(callback, receiver, undefined, callback);
-}
-
-Promise.promisify = function (fn, receiver) {
- if (typeof fn !== "function") {
- throw new TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- }
- if (isPromisified(fn)) {
- return fn;
- }
- var ret = promisify(fn, arguments.length < 2 ? THIS : receiver);
- util.copyDescriptors(fn, ret, propsFilter);
- return ret;
-};
-
-Promise.promisifyAll = function (target, options) {
- if (typeof target !== "function" && typeof target !== "object") {
- throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/9ITlV0\u000a");
- }
- options = Object(options);
- var suffix = options.suffix;
- if (typeof suffix !== "string") suffix = defaultSuffix;
- var filter = options.filter;
- if (typeof filter !== "function") filter = defaultFilter;
- var promisifier = options.promisifier;
- if (typeof promisifier !== "function") promisifier = makeNodePromisified;
-
- if (!util.isIdentifier(suffix)) {
- throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/8FZo5V\u000a");
- }
-
- var keys = util.inheritedDataKeys(target);
- for (var i = 0; i < keys.length; ++i) {
- var value = target[keys[i]];
- if (keys[i] !== "constructor" &&
- util.isClass(value)) {
- promisifyAll(value.prototype, suffix, filter, promisifier);
- promisifyAll(value, suffix, filter, promisifier);
- }
- }
-
- return promisifyAll(target, suffix, filter, promisifier);
-};
-};
-
-
-},{"./errors":13,"./promise_resolver.js":25,"./util.js":38}],27:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(
- Promise, PromiseArray, tryConvertToPromise, apiRejection) {
-var util = _dereq_("./util.js");
-var isObject = util.isObject;
-var es5 = _dereq_("./es5.js");
-
-function PropertiesPromiseArray(obj) {
- var keys = es5.keys(obj);
- var len = keys.length;
- var values = new Array(len * 2);
- for (var i = 0; i < len; ++i) {
- var key = keys[i];
- values[i] = obj[key];
- values[i + len] = key;
- }
- this.constructor$(values);
-}
-util.inherits(PropertiesPromiseArray, PromiseArray);
-
-PropertiesPromiseArray.prototype._init = function () {
- this._init$(undefined, -3) ;
-};
-
-PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {
- this._values[index] = value;
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= this._length) {
- var val = {};
- var keyOffset = this.length();
- for (var i = 0, len = this.length(); i < len; ++i) {
- val[this._values[i + keyOffset]] = this._values[i];
- }
- this._resolve(val);
- }
-};
-
-PropertiesPromiseArray.prototype._promiseProgressed = function (value, index) {
- this._promise._progress({
- key: this._values[index + this.length()],
- value: value
- });
-};
-
-PropertiesPromiseArray.prototype.shouldCopyValues = function () {
- return false;
-};
-
-PropertiesPromiseArray.prototype.getActualLength = function (len) {
- return len >> 1;
-};
-
-function props(promises) {
- var ret;
- var castValue = tryConvertToPromise(promises);
-
- if (!isObject(castValue)) {
- return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/OsFKC8\u000a");
- } else if (castValue instanceof Promise) {
- ret = castValue._then(
- Promise.props, undefined, undefined, undefined, undefined);
- } else {
- ret = new PropertiesPromiseArray(castValue).promise();
- }
-
- if (castValue instanceof Promise) {
- ret._propagateFrom(castValue, 4);
- }
- return ret;
-}
-
-Promise.prototype.props = function () {
- return props(this);
-};
-
-Promise.props = function (promises) {
- return props(promises);
-};
-};
-
-},{"./es5.js":14,"./util.js":38}],28:[function(_dereq_,module,exports){
-"use strict";
-function arrayMove(src, srcIndex, dst, dstIndex, len) {
- for (var j = 0; j < len; ++j) {
- dst[j + dstIndex] = src[j + srcIndex];
- src[j + srcIndex] = void 0;
- }
-}
-
-function Queue(capacity) {
- this._capacity = capacity;
- this._length = 0;
- this._front = 0;
-}
-
-Queue.prototype._willBeOverCapacity = function (size) {
- return this._capacity < size;
-};
-
-Queue.prototype._pushOne = function (arg) {
- var length = this.length();
- this._checkCapacity(length + 1);
- var i = (this._front + length) & (this._capacity - 1);
- this[i] = arg;
- this._length = length + 1;
-};
-
-Queue.prototype._unshiftOne = function(value) {
- var capacity = this._capacity;
- this._checkCapacity(this.length() + 1);
- var front = this._front;
- var i = (((( front - 1 ) &
- ( capacity - 1) ) ^ capacity ) - capacity );
- this[i] = value;
- this._front = i;
- this._length = this.length() + 1;
-};
-
-Queue.prototype.unshift = function(fn, receiver, arg) {
- this._unshiftOne(arg);
- this._unshiftOne(receiver);
- this._unshiftOne(fn);
-};
-
-Queue.prototype.push = function (fn, receiver, arg) {
- var length = this.length() + 3;
- if (this._willBeOverCapacity(length)) {
- this._pushOne(fn);
- this._pushOne(receiver);
- this._pushOne(arg);
- return;
- }
- var j = this._front + length - 3;
- this._checkCapacity(length);
- var wrapMask = this._capacity - 1;
- this[(j + 0) & wrapMask] = fn;
- this[(j + 1) & wrapMask] = receiver;
- this[(j + 2) & wrapMask] = arg;
- this._length = length;
-};
-
-Queue.prototype.shift = function () {
- var front = this._front,
- ret = this[front];
-
- this[front] = undefined;
- this._front = (front + 1) & (this._capacity - 1);
- this._length--;
- return ret;
-};
-
-Queue.prototype.length = function () {
- return this._length;
-};
-
-Queue.prototype._checkCapacity = function (size) {
- if (this._capacity < size) {
- this._resizeTo(this._capacity << 1);
- }
-};
-
-Queue.prototype._resizeTo = function (capacity) {
- var oldCapacity = this._capacity;
- this._capacity = capacity;
- var front = this._front;
- var length = this._length;
- var moveItemsCount = (front + length) & (oldCapacity - 1);
- arrayMove(this, 0, this, oldCapacity, moveItemsCount);
-};
-
-module.exports = Queue;
-
-},{}],29:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(
- Promise, INTERNAL, tryConvertToPromise, apiRejection) {
-var isArray = _dereq_("./util.js").isArray;
-
-var raceLater = function (promise) {
- return promise.then(function(array) {
- return race(array, promise);
- });
-};
-
-function race(promises, parent) {
- var maybePromise = tryConvertToPromise(promises);
-
- if (maybePromise instanceof Promise) {
- return raceLater(maybePromise);
- } else if (!isArray(promises)) {
- return apiRejection("expecting an array, a promise or a thenable\u000a\u000a See http://goo.gl/s8MMhc\u000a");
- }
-
- var ret = new Promise(INTERNAL);
- if (parent !== undefined) {
- ret._propagateFrom(parent, 4 | 1);
- }
- var fulfill = ret._fulfill;
- var reject = ret._reject;
- for (var i = 0, len = promises.length; i < len; ++i) {
- var val = promises[i];
-
- if (val === undefined && !(i in promises)) {
- continue;
- }
-
- Promise.cast(val)._then(fulfill, reject, undefined, ret, null);
- }
- return ret;
-}
-
-Promise.race = function (promises) {
- return race(promises, undefined);
-};
-
-Promise.prototype.race = function () {
- return race(this, undefined);
-};
-
-};
-
-},{"./util.js":38}],30:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise,
- PromiseArray,
- apiRejection,
- tryConvertToPromise,
- INTERNAL) {
-var async = _dereq_("./async.js");
-var util = _dereq_("./util.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-function ReductionPromiseArray(promises, fn, accum, _each) {
- this.constructor$(promises);
- this._promise._captureStackTrace();
- this._preservedValues = _each === INTERNAL ? [] : null;
- this._zerothIsAccum = (accum === undefined);
- this._gotAccum = false;
- this._reducingIndex = (this._zerothIsAccum ? 1 : 0);
- this._valuesPhase = undefined;
- var maybePromise = tryConvertToPromise(accum, this._promise);
- var rejected = false;
- var isPromise = maybePromise instanceof Promise;
- if (isPromise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- maybePromise._proxyPromiseArray(this, -1);
- } else if (maybePromise._isFulfilled()) {
- accum = maybePromise._value();
- this._gotAccum = true;
- } else {
- this._reject(maybePromise._reason());
- rejected = true;
- }
- }
- if (!(isPromise || this._zerothIsAccum)) this._gotAccum = true;
- this._callback = fn;
- this._accum = accum;
- if (!rejected) async.invoke(init, this, undefined);
-}
-function init() {
- this._init$(undefined, -5);
-}
-util.inherits(ReductionPromiseArray, PromiseArray);
-
-ReductionPromiseArray.prototype._init = function () {};
-
-ReductionPromiseArray.prototype._resolveEmptyArray = function () {
- if (this._gotAccum || this._zerothIsAccum) {
- this._resolve(this._preservedValues !== null
- ? [] : this._accum);
- }
-};
-
-ReductionPromiseArray.prototype._promiseFulfilled = function (value, index) {
- var values = this._values;
- values[index] = value;
- var length = this.length();
- var preservedValues = this._preservedValues;
- var isEach = preservedValues !== null;
- var gotAccum = this._gotAccum;
- var valuesPhase = this._valuesPhase;
- var valuesPhaseIndex;
- if (!valuesPhase) {
- valuesPhase = this._valuesPhase = new Array(length);
- for (valuesPhaseIndex=0; valuesPhaseIndex<length; ++valuesPhaseIndex) {
- valuesPhase[valuesPhaseIndex] = 0;
- }
- }
- valuesPhaseIndex = valuesPhase[index];
-
- if (index === 0 && this._zerothIsAccum) {
- this._accum = value;
- this._gotAccum = gotAccum = true;
- valuesPhase[index] = ((valuesPhaseIndex === 0)
- ? 1 : 2);
- } else if (index === -1) {
- this._accum = value;
- this._gotAccum = gotAccum = true;
- } else {
- if (valuesPhaseIndex === 0) {
- valuesPhase[index] = 1;
- } else {
- valuesPhase[index] = 2;
- this._accum = value;
- }
- }
- if (!gotAccum) return;
-
- var callback = this._callback;
- var receiver = this._promise._boundTo;
- var ret;
-
- for (var i = this._reducingIndex; i < length; ++i) {
- valuesPhaseIndex = valuesPhase[i];
- if (valuesPhaseIndex === 2) {
- this._reducingIndex = i + 1;
- continue;
- }
- if (valuesPhaseIndex !== 1) return;
- value = values[i];
- this._promise._pushContext();
- if (isEach) {
- preservedValues.push(value);
- ret = tryCatch(callback).call(receiver, value, i, length);
- }
- else {
- ret = tryCatch(callback)
- .call(receiver, this._accum, value, i, length);
- }
- this._promise._popContext();
-
- if (ret === errorObj) return this._reject(ret.e);
-
- var maybePromise = tryConvertToPromise(ret, this._promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- valuesPhase[i] = 4;
- return maybePromise._proxyPromiseArray(this, i);
- } else if (maybePromise._isFulfilled()) {
- ret = maybePromise._value();
- } else {
- return this._reject(maybePromise._reason());
- }
- }
-
- this._reducingIndex = i + 1;
- this._accum = ret;
- }
-
- this._resolve(isEach ? preservedValues : this._accum);
-};
-
-function reduce(promises, fn, initialValue, _each) {
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- var array = new ReductionPromiseArray(promises, fn, initialValue, _each);
- return array.promise();
-}
-
-Promise.prototype.reduce = function (fn, initialValue) {
- return reduce(this, fn, initialValue, null);
-};
-
-Promise.reduce = function (promises, fn, initialValue, _each) {
- return reduce(promises, fn, initialValue, _each);
-};
-};
-
-},{"./async.js":2,"./util.js":38}],31:[function(_dereq_,module,exports){
-"use strict";
-var schedule;
-var util = _dereq_("./util");
-var noAsyncScheduler = function() {
- throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
-};
-if (util.isNode && typeof MutationObserver === "undefined") {
- var GlobalSetImmediate = global.setImmediate;
- var ProcessNextTick = process.nextTick;
- schedule = util.isRecentNode
- ? function(fn) { GlobalSetImmediate.call(global, fn); }
- : function(fn) { ProcessNextTick.call(process, fn); };
-} else if (typeof MutationObserver !== "undefined") {
- schedule = function(fn) {
- var div = document.createElement("div");
- var observer = new MutationObserver(fn);
- observer.observe(div, {attributes: true});
- return function() { div.classList.toggle("foo"); };
- };
- schedule.isStatic = true;
-} else if (typeof setImmediate !== "undefined") {
- schedule = function (fn) {
- setImmediate(fn);
- };
-} else if (typeof setTimeout !== "undefined") {
- schedule = function (fn) {
- setTimeout(fn, 0);
- };
-} else {
- schedule = noAsyncScheduler;
-}
-module.exports = schedule;
-
-},{"./util":38}],32:[function(_dereq_,module,exports){
-"use strict";
-module.exports =
- function(Promise, PromiseArray) {
-var PromiseInspection = Promise.PromiseInspection;
-var util = _dereq_("./util.js");
-
-function SettledPromiseArray(values) {
- this.constructor$(values);
-}
-util.inherits(SettledPromiseArray, PromiseArray);
-
-SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {
- this._values[index] = inspection;
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= this._length) {
- this._resolve(this._values);
- }
-};
-
-SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {
- var ret = new PromiseInspection();
- ret._bitField = 268435456;
- ret._settledValue = value;
- this._promiseResolved(index, ret);
-};
-SettledPromiseArray.prototype._promiseRejected = function (reason, index) {
- var ret = new PromiseInspection();
- ret._bitField = 134217728;
- ret._settledValue = reason;
- this._promiseResolved(index, ret);
-};
-
-Promise.settle = function (promises) {
- return new SettledPromiseArray(promises).promise();
-};
-
-Promise.prototype.settle = function () {
- return new SettledPromiseArray(this).promise();
-};
-};
-
-},{"./util.js":38}],33:[function(_dereq_,module,exports){
-"use strict";
-module.exports =
-function(Promise, PromiseArray, apiRejection) {
-var util = _dereq_("./util.js");
-var RangeError = _dereq_("./errors.js").RangeError;
-var AggregateError = _dereq_("./errors.js").AggregateError;
-var isArray = util.isArray;
-
-
-function SomePromiseArray(values) {
- this.constructor$(values);
- this._howMany = 0;
- this._unwrap = false;
- this._initialized = false;
-}
-util.inherits(SomePromiseArray, PromiseArray);
-
-SomePromiseArray.prototype._init = function () {
- if (!this._initialized) {
- return;
- }
- if (this._howMany === 0) {
- this._resolve([]);
- return;
- }
- this._init$(undefined, -5);
- var isArrayResolved = isArray(this._values);
- if (!this._isResolved() &&
- isArrayResolved &&
- this._howMany > this._canPossiblyFulfill()) {
- this._reject(this._getRangeError(this.length()));
- }
-};
-
-SomePromiseArray.prototype.init = function () {
- this._initialized = true;
- this._init();
-};
-
-SomePromiseArray.prototype.setUnwrap = function () {
- this._unwrap = true;
-};
-
-SomePromiseArray.prototype.howMany = function () {
- return this._howMany;
-};
-
-SomePromiseArray.prototype.setHowMany = function (count) {
- this._howMany = count;
-};
-
-SomePromiseArray.prototype._promiseFulfilled = function (value) {
- this._addFulfilled(value);
- if (this._fulfilled() === this.howMany()) {
- this._values.length = this.howMany();
- if (this.howMany() === 1 && this._unwrap) {
- this._resolve(this._values[0]);
- } else {
- this._resolve(this._values);
- }
- }
-
-};
-SomePromiseArray.prototype._promiseRejected = function (reason) {
- this._addRejected(reason);
- if (this.howMany() > this._canPossiblyFulfill()) {
- var e = new AggregateError();
- for (var i = this.length(); i < this._values.length; ++i) {
- e.push(this._values[i]);
- }
- this._reject(e);
- }
-};
-
-SomePromiseArray.prototype._fulfilled = function () {
- return this._totalResolved;
-};
-
-SomePromiseArray.prototype._rejected = function () {
- return this._values.length - this.length();
-};
-
-SomePromiseArray.prototype._addRejected = function (reason) {
- this._values.push(reason);
-};
-
-SomePromiseArray.prototype._addFulfilled = function (value) {
- this._values[this._totalResolved++] = value;
-};
-
-SomePromiseArray.prototype._canPossiblyFulfill = function () {
- return this.length() - this._rejected();
-};
-
-SomePromiseArray.prototype._getRangeError = function (count) {
- var message = "Input array must contain at least " +
- this._howMany + " items but contains only " + count + " items";
- return new RangeError(message);
-};
-
-SomePromiseArray.prototype._resolveEmptyArray = function () {
- this._reject(this._getRangeError(0));
-};
-
-function some(promises, howMany) {
- if ((howMany | 0) !== howMany || howMany < 0) {
- return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/1wAmHx\u000a");
- }
- var ret = new SomePromiseArray(promises);
- var promise = ret.promise();
- ret.setHowMany(howMany);
- ret.init();
- return promise;
-}
-
-Promise.some = function (promises, howMany) {
- return some(promises, howMany);
-};
-
-Promise.prototype.some = function (howMany) {
- return some(this, howMany);
-};
-
-Promise._SomePromiseArray = SomePromiseArray;
-};
-
-},{"./errors.js":13,"./util.js":38}],34:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise) {
-function PromiseInspection(promise) {
- if (promise !== undefined) {
- promise = promise._target();
- this._bitField = promise._bitField;
- this._settledValue = promise._settledValue;
- }
- else {
- this._bitField = 0;
- this._settledValue = undefined;
- }
-}
-
-PromiseInspection.prototype.value = function () {
- if (!this.isFulfilled()) {
- throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/hc1DLj\u000a");
- }
- return this._settledValue;
-};
-
-PromiseInspection.prototype.error =
-PromiseInspection.prototype.reason = function () {
- if (!this.isRejected()) {
- throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/hPuiwB\u000a");
- }
- return this._settledValue;
-};
-
-PromiseInspection.prototype.isFulfilled =
-Promise.prototype._isFulfilled = function () {
- return (this._bitField & 268435456) > 0;
-};
-
-PromiseInspection.prototype.isRejected =
-Promise.prototype._isRejected = function () {
- return (this._bitField & 134217728) > 0;
-};
-
-PromiseInspection.prototype.isPending =
-Promise.prototype._isPending = function () {
- return (this._bitField & 402653184) === 0;
-};
-
-PromiseInspection.prototype.isResolved =
-Promise.prototype._isResolved = function () {
- return (this._bitField & 402653184) > 0;
-};
-
-Promise.prototype.isPending = function() {
- return this._target()._isPending();
-};
-
-Promise.prototype.isRejected = function() {
- return this._target()._isRejected();
-};
-
-Promise.prototype.isFulfilled = function() {
- return this._target()._isFulfilled();
-};
-
-Promise.prototype.isResolved = function() {
- return this._target()._isResolved();
-};
-
-Promise.prototype._value = function() {
- return this._settledValue;
-};
-
-Promise.prototype._reason = function() {
- this._unsetRejectionIsUnhandled();
- return this._settledValue;
-};
-
-Promise.prototype.value = function() {
- var target = this._target();
- if (!target.isFulfilled()) {
- throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/hc1DLj\u000a");
- }
- return target._settledValue;
-};
-
-Promise.prototype.reason = function() {
- var target = this._target();
- if (!target.isRejected()) {
- throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/hPuiwB\u000a");
- }
- target._unsetRejectionIsUnhandled();
- return target._settledValue;
-};
-
-
-Promise.PromiseInspection = PromiseInspection;
-};
-
-},{}],35:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var util = _dereq_("./util.js");
-var errorObj = util.errorObj;
-var isObject = util.isObject;
-
-function tryConvertToPromise(obj, context) {
- if (isObject(obj)) {
- if (obj instanceof Promise) {
- return obj;
- }
- else if (isAnyBluebirdPromise(obj)) {
- var ret = new Promise(INTERNAL);
- obj._then(
- ret._fulfillUnchecked,
- ret._rejectUncheckedCheckError,
- ret._progressUnchecked,
- ret,
- null
- );
- return ret;
- }
- var then = util.tryCatch(getThen)(obj);
- if (then === errorObj) {
- if (context) context._pushContext();
- var ret = Promise.reject(then.e);
- if (context) context._popContext();
- return ret;
- } else if (typeof then === "function") {
- return doThenable(obj, then, context);
- }
- }
- return obj;
-}
-
-function getThen(obj) {
- return obj.then;
-}
-
-var hasProp = {}.hasOwnProperty;
-function isAnyBluebirdPromise(obj) {
- return hasProp.call(obj, "_promise0");
-}
-
-function doThenable(x, then, context) {
- var promise = new Promise(INTERNAL);
- var ret = promise;
- if (context) context._pushContext();
- promise._captureStackTrace();
- if (context) context._popContext();
- var synchronous = true;
- var result = util.tryCatch(then).call(x,
- resolveFromThenable,
- rejectFromThenable,
- progressFromThenable);
- synchronous = false;
- if (promise && result === errorObj) {
- promise._rejectCallback(result.e, true, true);
- promise = null;
- }
-
- function resolveFromThenable(value) {
- if (!promise) return;
- if (x === value) {
- promise._rejectCallback(
- Promise._makeSelfResolutionError(), false, true);
- } else {
- promise._resolveCallback(value);
- }
- promise = null;
- }
-
- function rejectFromThenable(reason) {
- if (!promise) return;
- promise._rejectCallback(reason, synchronous, true);
- promise = null;
- }
-
- function progressFromThenable(value) {
- if (!promise) return;
- if (typeof promise._progress === "function") {
- promise._progress(value);
- }
- }
- return ret;
-}
-
-return tryConvertToPromise;
-};
-
-},{"./util.js":38}],36:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var util = _dereq_("./util.js");
-var TimeoutError = Promise.TimeoutError;
-
-var afterTimeout = function (promise, message) {
- if (!promise.isPending()) return;
- if (typeof message !== "string") {
- message = "operation timed out";
- }
- var err = new TimeoutError(message);
- util.markAsOriginatingFromRejection(err);
- promise._attachExtraTrace(err);
- promise._cancel(err);
-};
-
-var afterValue = function(value) { return delay(+this).thenReturn(value); };
-var delay = Promise.delay = function (value, ms) {
- if (ms === undefined) {
- ms = value;
- value = undefined;
- var ret = new Promise(INTERNAL);
- setTimeout(function() { ret._fulfill(); }, ms);
- return ret;
- }
- ms = +ms;
- return Promise.resolve(value)._then(afterValue, null, null, ms, undefined);
-};
-
-Promise.prototype.delay = function (ms) {
- return delay(this, ms);
-};
-
-function successClear(value) {
- var handle = this;
- if (handle instanceof Number) handle = +handle;
- clearTimeout(handle);
- return value;
-}
-
-function failureClear(reason) {
- var handle = this;
- if (handle instanceof Number) handle = +handle;
- clearTimeout(handle);
- throw reason;
-}
-
-Promise.prototype.timeout = function (ms, message) {
- ms = +ms;
- var ret = this.then().cancellable();
- ret._cancellationParent = this;
- var handle = setTimeout(function timeoutTimeout() {
- afterTimeout(ret, message);
- }, ms);
- return ret._then(successClear, failureClear, undefined, handle, undefined);
-};
-
-};
-
-},{"./util.js":38}],37:[function(_dereq_,module,exports){
-"use strict";
-module.exports = function (Promise, apiRejection, tryConvertToPromise,
- createContext) {
- var TypeError = _dereq_("./errors.js").TypeError;
- var inherits = _dereq_("./util.js").inherits;
- var PromiseInspection = Promise.PromiseInspection;
-
- function inspectionMapper(inspections) {
- var len = inspections.length;
- for (var i = 0; i < len; ++i) {
- var inspection = inspections[i];
- if (inspection.isRejected()) {
- return Promise.reject(inspection.error());
- }
- inspections[i] = inspection._settledValue;
- }
- return inspections;
- }
-
- function thrower(e) {
- setTimeout(function(){throw e;}, 0);
- }
-
- function castPreservingDisposable(thenable) {
- var maybePromise = tryConvertToPromise(thenable);
- if (maybePromise !== thenable &&
- typeof thenable._isDisposable === "function" &&
- typeof thenable._getDisposer === "function" &&
- thenable._isDisposable()) {
- maybePromise._setDisposable(thenable._getDisposer());
- }
- return maybePromise;
- }
- function dispose(resources, inspection) {
- var i = 0;
- var len = resources.length;
- var ret = Promise.defer();
- function iterator() {
- if (i >= len) return ret.resolve();
- var maybePromise = castPreservingDisposable(resources[i++]);
- if (maybePromise instanceof Promise &&
- maybePromise._isDisposable()) {
- try {
- maybePromise = tryConvertToPromise(
- maybePromise._getDisposer().tryDispose(inspection),
- resources.promise);
- } catch (e) {
- return thrower(e);
- }
- if (maybePromise instanceof Promise) {
- return maybePromise._then(iterator, thrower,
- null, null, null);
- }
- }
- iterator();
- }
- iterator();
- return ret.promise;
- }
-
- function disposerSuccess(value) {
- var inspection = new PromiseInspection();
- inspection._settledValue = value;
- inspection._bitField = 268435456;
- return dispose(this, inspection).thenReturn(value);
- }
-
- function disposerFail(reason) {
- var inspection = new PromiseInspection();
- inspection._settledValue = reason;
- inspection._bitField = 134217728;
- return dispose(this, inspection).thenThrow(reason);
- }
-
- function Disposer(data, promise, context) {
- this._data = data;
- this._promise = promise;
- this._context = context;
- }
-
- Disposer.prototype.data = function () {
- return this._data;
- };
-
- Disposer.prototype.promise = function () {
- return this._promise;
- };
-
- Disposer.prototype.resource = function () {
- if (this.promise().isFulfilled()) {
- return this.promise().value();
- }
- return null;
- };
-
- Disposer.prototype.tryDispose = function(inspection) {
- var resource = this.resource();
- var context = this._context;
- if (context !== undefined) context._pushContext();
- var ret = resource !== null
- ? this.doDispose(resource, inspection) : null;
- if (context !== undefined) context._popContext();
- this._promise._unsetDisposable();
- this._data = null;
- return ret;
- };
-
- Disposer.isDisposer = function (d) {
- return (d != null &&
- typeof d.resource === "function" &&
- typeof d.tryDispose === "function");
- };
-
- function FunctionDisposer(fn, promise, context) {
- this.constructor$(fn, promise, context);
- }
- inherits(FunctionDisposer, Disposer);
-
- FunctionDisposer.prototype.doDispose = function (resource, inspection) {
- var fn = this.data();
- return fn.call(resource, resource, inspection);
- };
-
- function maybeUnwrapDisposer(value) {
- if (Disposer.isDisposer(value)) {
- this.resources[this.index]._setDisposable(value);
- return value.promise();
- }
- return value;
- }
-
- Promise.using = function () {
- var len = arguments.length;
- if (len < 2) return apiRejection(
- "you must pass at least 2 arguments to Promise.using");
- var fn = arguments[len - 1];
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- len--;
- var resources = new Array(len);
- for (var i = 0; i < len; ++i) {
- var resource = arguments[i];
- if (Disposer.isDisposer(resource)) {
- var disposer = resource;
- resource = resource.promise();
- resource._setDisposable(disposer);
- } else {
- var maybePromise = tryConvertToPromise(resource);
- if (maybePromise instanceof Promise) {
- resource =
- maybePromise._then(maybeUnwrapDisposer, null, null, {
- resources: resources,
- index: i
- }, undefined);
- }
- }
- resources[i] = resource;
- }
-
- var promise = Promise.settle(resources)
- .then(inspectionMapper)
- .then(function(vals) {
- promise._pushContext();
- var ret;
- try {
- ret = fn.apply(undefined, vals);
- } finally {
- promise._popContext();
- }
- return ret;
- })
- ._then(
- disposerSuccess, disposerFail, undefined, resources, undefined);
- resources.promise = promise;
- return promise;
- };
-
- Promise.prototype._setDisposable = function (disposer) {
- this._bitField = this._bitField | 262144;
- this._disposer = disposer;
- };
-
- Promise.prototype._isDisposable = function () {
- return (this._bitField & 262144) > 0;
- };
-
- Promise.prototype._getDisposer = function () {
- return this._disposer;
- };
-
- Promise.prototype._unsetDisposable = function () {
- this._bitField = this._bitField & (~262144);
- this._disposer = undefined;
- };
-
- Promise.prototype.disposer = function (fn) {
- if (typeof fn === "function") {
- return new FunctionDisposer(fn, this, createContext());
- }
- throw new TypeError();
- };
-
-};
-
-},{"./errors.js":13,"./util.js":38}],38:[function(_dereq_,module,exports){
-"use strict";
-var es5 = _dereq_("./es5.js");
-var canEvaluate = typeof navigator == "undefined";
-var haveGetters = (function(){
- try {
- var o = {};
- es5.defineProperty(o, "f", {
- get: function () {
- return 3;
- }
- });
- return o.f === 3;
- }
- catch (e) {
- return false;
- }
-
-})();
-
-var errorObj = {e: {}};
-var tryCatchTarget;
-function tryCatcher() {
- try {
- return tryCatchTarget.apply(this, arguments);
- } catch (e) {
- errorObj.e = e;
- return errorObj;
- }
-}
-function tryCatch(fn) {
- tryCatchTarget = fn;
- return tryCatcher;
-}
-
-var inherits = function(Child, Parent) {
- var hasProp = {}.hasOwnProperty;
-
- function T() {
- this.constructor = Child;
- this.constructor$ = Parent;
- for (var propertyName in Parent.prototype) {
- if (hasProp.call(Parent.prototype, propertyName) &&
- propertyName.charAt(propertyName.length-1) !== "$"
- ) {
- this[propertyName + "$"] = Parent.prototype[propertyName];
- }
- }
- }
- T.prototype = Parent.prototype;
- Child.prototype = new T();
- return Child.prototype;
-};
-
-
-function isPrimitive(val) {
- return val == null || val === true || val === false ||
- typeof val === "string" || typeof val === "number";
-
-}
-
-function isObject(value) {
- return !isPrimitive(value);
-}
-
-function maybeWrapAsError(maybeError) {
- if (!isPrimitive(maybeError)) return maybeError;
-
- return new Error(safeToString(maybeError));
-}
-
-function withAppended(target, appendee) {
- var len = target.length;
- var ret = new Array(len + 1);
- var i;
- for (i = 0; i < len; ++i) {
- ret[i] = target[i];
- }
- ret[i] = appendee;
- return ret;
-}
-
-function getDataPropertyOrDefault(obj, key, defaultValue) {
- if (es5.isES5) {
- var desc = Object.getOwnPropertyDescriptor(obj, key);
- if (desc != null) {
- return desc.get == null && desc.set == null
- ? desc.value
- : defaultValue;
- }
- } else {
- return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;
- }
-}
-
-function notEnumerableProp(obj, name, value) {
- if (isPrimitive(obj)) return obj;
- var descriptor = {
- value: value,
- configurable: true,
- enumerable: false,
- writable: true
- };
- es5.defineProperty(obj, name, descriptor);
- return obj;
-}
-
-
-var wrapsPrimitiveReceiver = (function() {
- return this !== "string";
-}).call("string");
-
-function thrower(r) {
- throw r;
-}
-
-var inheritedDataKeys = (function() {
- if (es5.isES5) {
- var oProto = Object.prototype;
- var getKeys = Object.getOwnPropertyNames;
- return function(obj) {
- var ret = [];
- var visitedKeys = Object.create(null);
- while (obj != null && obj !== oProto) {
- var keys;
- try {
- keys = getKeys(obj);
- } catch (e) {
- return ret;
- }
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- if (visitedKeys[key]) continue;
- visitedKeys[key] = true;
- var desc = Object.getOwnPropertyDescriptor(obj, key);
- if (desc != null && desc.get == null && desc.set == null) {
- ret.push(key);
- }
- }
- obj = es5.getPrototypeOf(obj);
- }
- return ret;
- };
- } else {
- return function(obj) {
- var ret = [];
- /*jshint forin:false */
- for (var key in obj) {
- ret.push(key);
- }
- return ret;
- };
- }
-
-})();
-
-var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/;
-function isClass(fn) {
- try {
- if (typeof fn === "function") {
- var keys = es5.names(fn.prototype);
- if (((es5.isES5 && keys.length > 1) ||
- (keys.length > 0 &&
- !(keys.length === 1 && keys[0] === "constructor"))) ||
- thisAssignmentPattern.test(fn + "")) {
- return true;
- }
- }
- return false;
- } catch (e) {
- return false;
- }
-}
-
-function toFastProperties(obj) {
- /*jshint -W027,-W055,-W031*/
- function f() {}
- f.prototype = obj;
- var l = 8;
- while (l--) new f();
- return obj;
- eval(obj);
-}
-
-var rident = /^[a-z$_][a-z$_0-9]*$/i;
-function isIdentifier(str) {
- return rident.test(str);
-}
-
-function filledRange(count, prefix, suffix) {
- var ret = new Array(count);
- for(var i = 0; i < count; ++i) {
- ret[i] = prefix + i + suffix;
- }
- return ret;
-}
-
-function safeToString(obj) {
- try {
- return obj + "";
- } catch (e) {
- return "[no string representation]";
- }
-}
-
-function markAsOriginatingFromRejection(e) {
- try {
- notEnumerableProp(e, "isOperational", true);
- }
- catch(ignore) {}
-}
-
-function originatesFromRejection(e) {
- if (e == null) return false;
- return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) ||
- e["isOperational"] === true);
-}
-
-function canAttachTrace(obj) {
- return obj instanceof Error && es5.propertyIsWritable(obj, "stack");
-}
-
-var ensureErrorObject = (function() {
- if (!("stack" in new Error())) {
- return function(value) {
- if (canAttachTrace(value)) return value;
- try {throw new Error(safeToString(value));}
- catch(err) {return err;}
- };
- } else {
- return function(value) {
- if (canAttachTrace(value)) return value;
- return new Error(safeToString(value));
- };
- }
-})();
-
-function classString(obj) {
- return {}.toString.call(obj);
-}
-
-function copyDescriptors(from, to, filter) {
- var keys = es5.names(from);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- if (filter(key)) {
- es5.defineProperty(to, key, es5.getDescriptor(from, key));
- }
- }
-}
-
-function isNativeFunctionMethod(fn) {
- return fn === fn.call ||
- fn === fn.toString ||
- fn === fn.bind ||
- fn === fn.apply;
-}
-
-var ret = {
- isClass: isClass,
- isIdentifier: isIdentifier,
- inheritedDataKeys: inheritedDataKeys,
- getDataPropertyOrDefault: getDataPropertyOrDefault,
- thrower: thrower,
- isArray: es5.isArray,
- haveGetters: haveGetters,
- notEnumerableProp: notEnumerableProp,
- isPrimitive: isPrimitive,
- isObject: isObject,
- canEvaluate: canEvaluate,
- errorObj: errorObj,
- tryCatch: tryCatch,
- inherits: inherits,
- withAppended: withAppended,
- maybeWrapAsError: maybeWrapAsError,
- wrapsPrimitiveReceiver: wrapsPrimitiveReceiver,
- toFastProperties: toFastProperties,
- filledRange: filledRange,
- toString: safeToString,
- canAttachTrace: canAttachTrace,
- ensureErrorObject: ensureErrorObject,
- originatesFromRejection: originatesFromRejection,
- markAsOriginatingFromRejection: markAsOriginatingFromRejection,
- classString: classString,
- copyDescriptors: copyDescriptors,
- hasDevTools: typeof chrome !== "undefined" && chrome &&
- typeof chrome.loadTimes === "function",
- isNode: typeof process !== "undefined" &&
- classString(process).toLowerCase() === "[object process]",
- isNativeFunctionMethod: isNativeFunctionMethod
-};
-ret.isRecentNode = ret.isNode && (function() {
- var version = process.versions.node.split(".").map(Number);
- return (version[0] === 0 && version[1] > 10) || (version[0] > 0);
-})();
-try {throw new Error(); } catch (e) {ret.lastLineError = e;}
-module.exports = ret;
-
-},{"./es5.js":14}],39:[function(_dereq_,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-function EventEmitter() {
- this._events = this._events || {};
- this._maxListeners = this._maxListeners || undefined;
-}
-module.exports = EventEmitter;
-
-// Backwards-compat with node 0.10.x
-EventEmitter.EventEmitter = EventEmitter;
-
-EventEmitter.prototype._events = undefined;
-EventEmitter.prototype._maxListeners = undefined;
-
-// By default EventEmitters will print a warning if more than 10 listeners are
-// added to it. This is a useful default which helps finding memory leaks.
-EventEmitter.defaultMaxListeners = 10;
-
-// Obviously not all Emitters should be limited to 10. This function allows
-// that to be increased. Set to zero for unlimited.
-EventEmitter.prototype.setMaxListeners = function(n) {
- if (!isNumber(n) || n < 0 || isNaN(n))
- throw TypeError('n must be a positive number');
- this._maxListeners = n;
- return this;
-};
-
-EventEmitter.prototype.emit = function(type) {
- var er, handler, len, args, i, listeners;
-
- if (!this._events)
- this._events = {};
-
- // If there is no 'error' event listener then throw.
- if (type === 'error') {
- if (!this._events.error ||
- (isObject(this._events.error) && !this._events.error.length)) {
- er = arguments[1];
- if (er instanceof Error) {
- throw er; // Unhandled 'error' event
- }
- throw TypeError('Uncaught, unspecified "error" event.');
- }
- }
-
- handler = this._events[type];
-
- if (isUndefined(handler))
- return false;
-
- if (isFunction(handler)) {
- switch (arguments.length) {
- // fast cases
- case 1:
- handler.call(this);
- break;
- case 2:
- handler.call(this, arguments[1]);
- break;
- case 3:
- handler.call(this, arguments[1], arguments[2]);
- break;
- // slower
- default:
- len = arguments.length;
- args = new Array(len - 1);
- for (i = 1; i < len; i++)
- args[i - 1] = arguments[i];
- handler.apply(this, args);
- }
- } else if (isObject(handler)) {
- len = arguments.length;
- args = new Array(len - 1);
- for (i = 1; i < len; i++)
- args[i - 1] = arguments[i];
-
- listeners = handler.slice();
- len = listeners.length;
- for (i = 0; i < len; i++)
- listeners[i].apply(this, args);
- }
-
- return true;
-};
-
-EventEmitter.prototype.addListener = function(type, listener) {
- var m;
-
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- if (!this._events)
- this._events = {};
-
- // To avoid recursion in the case that type === "newListener"! Before
- // adding it to the listeners, first emit "newListener".
- if (this._events.newListener)
- this.emit('newListener', type,
- isFunction(listener.listener) ?
- listener.listener : listener);
-
- if (!this._events[type])
- // Optimize the case of one listener. Don't need the extra array object.
- this._events[type] = listener;
- else if (isObject(this._events[type]))
- // If we've already got an array, just append.
- this._events[type].push(listener);
- else
- // Adding the second element, need to change to array.
- this._events[type] = [this._events[type], listener];
-
- // Check for listener leak
- if (isObject(this._events[type]) && !this._events[type].warned) {
- var m;
- if (!isUndefined(this._maxListeners)) {
- m = this._maxListeners;
- } else {
- m = EventEmitter.defaultMaxListeners;
- }
-
- if (m && m > 0 && this._events[type].length > m) {
- this._events[type].warned = true;
- console.error('(node) warning: possible EventEmitter memory ' +
- 'leak detected. %d listeners added. ' +
- 'Use emitter.setMaxListeners() to increase limit.',
- this._events[type].length);
- if (typeof console.trace === 'function') {
- // not supported in IE 10
- console.trace();
- }
- }
- }
-
- return this;
-};
-
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;
-
-EventEmitter.prototype.once = function(type, listener) {
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- var fired = false;
-
- function g() {
- this.removeListener(type, g);
-
- if (!fired) {
- fired = true;
- listener.apply(this, arguments);
- }
- }
-
- g.listener = listener;
- this.on(type, g);
-
- return this;
-};
-
-// emits a 'removeListener' event iff the listener was removed
-EventEmitter.prototype.removeListener = function(type, listener) {
- var list, position, length, i;
-
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- if (!this._events || !this._events[type])
- return this;
-
- list = this._events[type];
- length = list.length;
- position = -1;
-
- if (list === listener ||
- (isFunction(list.listener) && list.listener === listener)) {
- delete this._events[type];
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
-
- } else if (isObject(list)) {
- for (i = length; i-- > 0;) {
- if (list[i] === listener ||
- (list[i].listener && list[i].listener === listener)) {
- position = i;
- break;
- }
- }
-
- if (position < 0)
- return this;
-
- if (list.length === 1) {
- list.length = 0;
- delete this._events[type];
- } else {
- list.splice(position, 1);
- }
-
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
- }
-
- return this;
-};
-
-EventEmitter.prototype.removeAllListeners = function(type) {
- var key, listeners;
-
- if (!this._events)
- return this;
-
- // not listening for removeListener, no need to emit
- if (!this._events.removeListener) {
- if (arguments.length === 0)
- this._events = {};
- else if (this._events[type])
- delete this._events[type];
- return this;
- }
-
- // emit removeListener for all listeners on all events
- if (arguments.length === 0) {
- for (key in this._events) {
- if (key === 'removeListener') continue;
- this.removeAllListeners(key);
- }
- this.removeAllListeners('removeListener');
- this._events = {};
- return this;
- }
-
- listeners = this._events[type];
-
- if (isFunction(listeners)) {
- this.removeListener(type, listeners);
- } else {
- // LIFO order
- while (listeners.length)
- this.removeListener(type, listeners[listeners.length - 1]);
- }
- delete this._events[type];
-
- return this;
-};
-
-EventEmitter.prototype.listeners = function(type) {
- var ret;
- if (!this._events || !this._events[type])
- ret = [];
- else if (isFunction(this._events[type]))
- ret = [this._events[type]];
- else
- ret = this._events[type].slice();
- return ret;
-};
-
-EventEmitter.listenerCount = function(emitter, type) {
- var ret;
- if (!emitter._events || !emitter._events[type])
- ret = 0;
- else if (isFunction(emitter._events[type]))
- ret = 1;
- else
- ret = emitter._events[type].length;
- return ret;
-};
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-
-},{}]},{},[4])(4)
-}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.min.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.min.js
deleted file mode 100644
index 9b5474bb2..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/browser/bluebird.min.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/* @preserve
- * The MIT License (MIT)
- *
- * Copyright (c) 2014 Petka Antonov
- *
- * 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:</p>
- *
- * 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.
- *
- */
-/**
- * bluebird build version 2.9.30
- * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, cancel, using, filter, any, each, timers
-*/
-!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,r;return function n(t,e,r){function i(s,a){if(!e[s]){if(!t[s]){var u="function"==typeof _dereq_&&_dereq_;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=e[s]={exports:{}};t[s][0].call(l.exports,function(e){var r=t[s][1][e];return i(r?r:e)},l,l.exports,n,t,e,r)}return e[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(t,e){"use strict";e.exports=function(t){function e(t){var e=new r(t),n=e.promise();return e.setHowMany(1),e.setUnwrap(),e.init(),n}var r=t._SomePromiseArray;t.any=function(t){return e(t)},t.prototype.any=function(){return e(this)}}},{}],2:[function(t,e){"use strict";function r(){this._isTickUsed=!1,this._lateQueue=new c(16),this._normalQueue=new c(16),this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=u.isStatic?u(this.drainQueues):u}function n(t,e,r){var n=this._getDomain();void 0!==n&&(t=n.bind(t)),this._lateQueue.push(t,e,r),this._queueTick()}function i(t,e,r){var n=this._getDomain();void 0!==n&&(t=n.bind(t)),this._normalQueue.push(t,e,r),this._queueTick()}function o(t){var e=this._getDomain();if(void 0!==e){var r=e.bind(t._settlePromises);this._normalQueue.push(r,t,void 0)}else this._normalQueue._pushOne(t);this._queueTick()}var s;try{throw new Error}catch(a){s=a}var u=t("./schedule.js"),c=t("./queue.js"),l=t("./util.js");r.prototype.disableTrampolineIfNecessary=function(){l.hasDevTools&&(this._trampolineEnabled=!1)},r.prototype.enableTrampoline=function(){this._trampolineEnabled||(this._trampolineEnabled=!0,this._schedule=function(t){setTimeout(t,0)})},r.prototype.haveItemsQueued=function(){return this._normalQueue.length()>0},r.prototype.throwLater=function(t,e){1===arguments.length&&(e=t,t=function(){throw e});var r=this._getDomain();if(void 0!==r&&(t=r.bind(t)),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(n){throw new Error("No async scheduler available\n\n See http://goo.gl/m3OTXk\n")}},r.prototype._getDomain=function(){};l.hasDevTools?(u.isStatic&&(u=function(t){setTimeout(t,0)}),r.prototype.invokeLater=function(t,e,r){this._trampolineEnabled?n.call(this,t,e,r):this._schedule(function(){setTimeout(function(){t.call(e,r)},100)})},r.prototype.invoke=function(t,e,r){this._trampolineEnabled?i.call(this,t,e,r):this._schedule(function(){t.call(e,r)})},r.prototype.settlePromises=function(t){this._trampolineEnabled?o.call(this,t):this._schedule(function(){t._settlePromises()})}):(r.prototype.invokeLater=n,r.prototype.invoke=i,r.prototype.settlePromises=o),r.prototype.invokeFirst=function(t,e,r){var n=this._getDomain();void 0!==n&&(t=n.bind(t)),this._normalQueue.unshift(t,e,r),this._queueTick()},r.prototype._drainQueue=function(t){for(;t.length()>0;){var e=t.shift();if("function"==typeof e){var r=t.shift(),n=t.shift();e.call(r,n)}else e._settlePromises()}},r.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._drainQueue(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},e.exports=new r,e.exports.firstLineError=s},{"./queue.js":28,"./schedule.js":31,"./util.js":38,events:39}],3:[function(t,e){"use strict";e.exports=function(t,e,r){var n=function(t,e){this._reject(e)},i=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(n,n,null,this,t)},o=function(t,e){this._setBoundTo(t),this._isPending()&&this._resolveCallback(e.target)},s=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(n){var a=r(n),u=new t(e);u._propagateFrom(this,1);var c=this._target();if(a instanceof t){var l={promiseRejectionQueued:!1,promise:u,target:c,bindingPromise:a};c._then(e,i,u._progress,u,l),a._then(o,s,u._progress,u,l)}else u._setBoundTo(n),u._resolveCallback(c);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=131072|this._bitField,this._boundTo=t):this._bitField=-131073&this._bitField},t.prototype._isBound=function(){return 131072===(131072&this._bitField)},t.bind=function(n,i){var o=r(n),s=new t(e);return o instanceof t?o._then(function(t){s._setBoundTo(t),s._resolveCallback(i)},s._reject,s._progress,s,null):(s._setBoundTo(n),s._resolveCallback(i)),s}}},{}],4:[function(t,e){"use strict";function r(){try{Promise===i&&(Promise=n)}catch(t){}return i}var n;"undefined"!=typeof Promise&&(n=Promise);var i=t("./promise.js")();i.noConflict=r,e.exports=i},{"./promise.js":23}],5:[function(t,e){"use strict";var r=Object.create;if(r){var n=r(null),i=r(null);n[" size"]=i[" size"]=0}e.exports=function(e){function r(t,r){var n;if(null!=t&&(n=t[r]),"function"!=typeof n){var i="Object "+a.classString(t)+" has no method '"+a.toString(r)+"'";throw new e.TypeError(i)}return n}function n(t){var e=this.pop(),n=r(t,e);return n.apply(t,this)}function i(t){return t[this]}function o(t){var e=+this;return 0>e&&(e=Math.max(0,e+t.length)),t[e]}{var s,a=t("./util.js"),u=a.canEvaluate;a.isIdentifier}e.prototype.call=function(t){for(var e=arguments.length,r=new Array(e-1),i=1;e>i;++i)r[i-1]=arguments[i];return r.push(t),this._then(n,void 0,void 0,r,void 0)},e.prototype.get=function(t){var e,r="number"==typeof t;if(r)e=o;else if(u){var n=s(t);e=null!==n?n:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util.js":38}],6:[function(t,e){"use strict";e.exports=function(e){var r=t("./errors.js"),n=t("./async.js"),i=r.CancellationError;e.prototype._cancel=function(t){if(!this.isCancellable())return this;for(var e,r=this;void 0!==(e=r._cancellationParent)&&e.isCancellable();)r=e;this._unsetCancellable(),r._target()._rejectCallback(t,!1,!0)},e.prototype.cancel=function(t){return this.isCancellable()?(void 0===t&&(t=new i),n.invokeLater(this._cancel,this,t),this):this},e.prototype.cancellable=function(){return this._cancellable()?this:(n.enableTrampoline(),this._setCancellable(),this._cancellationParent=void 0,this)},e.prototype.uncancellable=function(){var t=this.then();return t._unsetCancellable(),t},e.prototype.fork=function(t,e,r){var n=this._then(t,e,r,void 0,void 0);return n._setCancellable(),n._cancellationParent=void 0,n}}},{"./async.js":2,"./errors.js":13}],7:[function(t,e){"use strict";e.exports=function(){function e(t){this._parent=t;var r=this._length=1+(void 0===t?0:t._length);j(this,e),r>32&&this.uncycle()}function r(t,e){for(var r=0;r<e.length-1;++r)e[r].push("From previous event:"),e[r]=e[r].join("\n");return r<e.length&&(e[r]=e[r].join("\n")),t+"\n"+e.join("\n")}function n(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}function i(t){for(var e=t[0],r=1;r<t.length;++r){for(var n=t[r],i=e.length-1,o=e[i],s=-1,a=n.length-1;a>=0;--a)if(n[a]===o){s=a;break}for(var a=s;a>=0;--a){var u=n[a];if(e[i]!==u)break;e.pop(),i--}e=n}}function o(t){for(var e=[],r=0;r<t.length;++r){var n=t[r],i=_.test(n)||" (No stack trace)"===n,o=i&&y(n);i&&!o&&(v&&" "!==n.charAt(0)&&(n=" "+n),e.push(n))}return e}function s(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),r=0;r<e.length;++r){var n=e[r];if(" (No stack trace)"===n||_.test(n))break}return r>0&&(e=e.slice(r)),e}function a(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t.toString();var r=/\[object [a-zA-Z0-9$_]+\]/;if(r.test(e))try{var n=JSON.stringify(t);e=n}catch(i){}0===e.length&&(e="(empty array)")}return"(<"+u(e)+">, no stack trace)"}function u(t){var e=41;return t.length<e?t:t.substr(0,e-3)+"..."}function c(t){var e=t.match(g);return e?{fileName:e[1],line:parseInt(e[2],10)}:void 0}var l,h=t("./async.js"),p=t("./util.js"),f=/[\\\/]bluebird[\\\/]js[\\\/](main|debug|zalgo|instrumented)/,_=null,d=null,v=!1;p.inherits(e,Error),e.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],r={},n=0,i=this;void 0!==i;++n)e.push(i),i=i._parent;t=this._length=n;for(var n=t-1;n>=0;--n){var o=e[n].stack;void 0===r[o]&&(r[o]=n)}for(var n=0;t>n;++n){var s=e[n].stack,a=r[s];if(void 0!==a&&a!==n){a>0&&(e[a-1]._parent=void 0,e[a-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var u=n>0?e[n-1]:this;t-1>a?(u._parent=e[a+1],u._parent.uncycle(),u._length=u._parent._length+1):(u._parent=void 0,u._length=1);for(var c=u._length+1,l=n-2;l>=0;--l)e[l]._length=c,c++;return}}}},e.prototype.parent=function(){return this._parent},e.prototype.hasParent=function(){return void 0!==this._parent},e.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var s=e.parseStackAndMessage(t),a=s.message,u=[s.stack],c=this;void 0!==c;)u.push(o(c.stack.split("\n"))),c=c._parent;i(u),n(u),p.notEnumerableProp(t,"stack",r(a,u)),p.notEnumerableProp(t,"__stackCleaned__",!0)}},e.parseStackAndMessage=function(t){var e=t.stack,r=t.toString();return e="string"==typeof e&&e.length>0?s(t):[" (No stack trace)"],{message:r,stack:o(e)}},e.formatAndLogError=function(t,e){if("undefined"!=typeof console){var r;if("object"==typeof t||"function"==typeof t){var n=t.stack;r=e+d(n,t)}else r=e+String(t);"function"==typeof l?l(r):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}},e.unhandledRejection=function(t){e.formatAndLogError(t,"^--- With additional stack trace: ")},e.isSupported=function(){return"function"==typeof j},e.fireRejectionEvent=function(t,r,n,i){var o=!1;try{"function"==typeof r&&(o=!0,"rejectionHandled"===t?r(i):r(n,i))}catch(s){h.throwLater(s)}var a=!1;try{a=b(t,n,i)}catch(s){a=!0,h.throwLater(s)}var u=!1;if(m)try{u=m(t.toLowerCase(),{reason:n,promise:i})}catch(s){u=!0,h.throwLater(s)}a||o||u||"unhandledRejection"!==t||e.formatAndLogError(n,"Unhandled rejection ")};var y=function(){return!1},g=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;e.setBounds=function(t,r){if(e.isSupported()){for(var n,i,o=t.stack.split("\n"),s=r.stack.split("\n"),a=-1,u=-1,l=0;l<o.length;++l){var h=c(o[l]);if(h){n=h.fileName,a=h.line;break}}for(var l=0;l<s.length;++l){var h=c(s[l]);if(h){i=h.fileName,u=h.line;break}}0>a||0>u||!n||!i||n!==i||a>=u||(y=function(t){if(f.test(t))return!0;var e=c(t);return e&&e.fileName===n&&a<=e.line&&e.line<=u?!0:!1})}};var m,j=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():a(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit=Error.stackTraceLimit+6,_=t,d=e;var r=Error.captureStackTrace;return y=function(t){return f.test(t)},function(t,e){Error.stackTraceLimit=Error.stackTraceLimit+6,r(t,e),Error.stackTraceLimit=Error.stackTraceLimit-6}}var n=new Error;if("string"==typeof n.stack&&n.stack.split("\n")[0].indexOf("stackDetection@")>=0)return _=/@/,d=e,v=!0,function(t){t.stack=(new Error).stack};var i;try{throw new Error}catch(o){i="stack"in o}return"stack"in n||!i?(d=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?a(e):e.toString()},null):(_=t,d=e,function(t){Error.stackTraceLimit=Error.stackTraceLimit+6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit=Error.stackTraceLimit-6})}([]),b=function(){if(p.isNode)return function(t,e,r){return"rejectionHandled"===t?process.emit(t,r):process.emit(t,e,r)};var t=!1,e=!0;try{var r=new self.CustomEvent("test");t=r instanceof CustomEvent}catch(n){}if(!t)try{var i=document.createEvent("CustomEvent");i.initCustomEvent("testingtheevent",!1,!0,{}),self.dispatchEvent(i)}catch(n){e=!1}e&&(m=function(e,r){var n;return t?n=new self.CustomEvent(e,{detail:r,bubbles:!1,cancelable:!0}):self.dispatchEvent&&(n=document.createEvent("CustomEvent"),n.initCustomEvent(e,!1,!0,r)),n?!self.dispatchEvent(n):!1});var o={};return o.unhandledRejection="onunhandledRejection".toLowerCase(),o.rejectionHandled="onrejectionHandled".toLowerCase(),function(t,e,r){var n=o[t],i=self[n];return i?("rejectionHandled"===t?i.call(self,r):i.call(self,e,r),!0):!1}}();return"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(l=function(t){console.warn(t)},p.isNode&&process.stderr.isTTY?l=function(t){process.stderr.write(""+t+"\n")}:p.isNode||"string"!=typeof(new Error).stack||(l=function(t){console.warn("%c"+t,"color: red")})),e}},{"./async.js":2,"./util.js":38}],8:[function(t,e){"use strict";e.exports=function(e){function r(t,e,r){this._instances=t,this._callback=e,this._promise=r}function n(t,e){var r={},n=s(t).call(r,e);if(n===a)return n;var i=u(r);return i.length?(a.e=new c("Catch filter must inherit from Error or be a simple predicate function\n\n See http://goo.gl/o84o68\n"),a):n}var i=t("./util.js"),o=t("./errors.js"),s=i.tryCatch,a=i.errorObj,u=t("./es5.js").keys,c=o.TypeError;return r.prototype.doFilter=function(t){for(var r=this._callback,i=this._promise,o=i._boundTo,u=0,c=this._instances.length;c>u;++u){var l=this._instances[u],h=l===Error||null!=l&&l.prototype instanceof Error;if(h&&t instanceof l){var p=s(r).call(o,t);return p===a?(e.e=p.e,e):p}if("function"==typeof l&&!h){var f=n(l,t);if(f===a){t=a.e;break}if(f){var p=s(r).call(o,t);return p===a?(e.e=p.e,e):p}}}return e.e=t,e},r}},{"./errors.js":13,"./es5.js":14,"./util.js":38}],9:[function(t,e){"use strict";e.exports=function(t,e,r){function n(){this._trace=new e(o())}function i(){return r()?new n:void 0}function o(){var t=s.length-1;return t>=0?s[t]:void 0}var s=[];return n.prototype._pushContext=function(){r()&&void 0!==this._trace&&s.push(this._trace)},n.prototype._popContext=function(){r()&&void 0!==this._trace&&s.pop()},t.prototype._peekContext=o,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,i}},{}],10:[function(t,e){"use strict";e.exports=function(e,r){var n,i,o=t("./async.js"),s=t("./errors.js").Warning,a=t("./util.js"),u=a.canAttachTrace,c=!1||a.isNode&&(!!process.env.BLUEBIRD_DEBUG||"development"===process.env.NODE_ENV);return c&&o.disableTrampolineIfNecessary(),e.prototype._ignoreRejections=function(){this._unsetRejectionIsUnhandled(),this._bitField=16777216|this._bitField},e.prototype._ensurePossibleRejectionHandled=function(){0===(16777216&this._bitField)&&(this._setRejectionIsUnhandled(),o.invokeLater(this._notifyUnhandledRejection,this,void 0))},e.prototype._notifyUnhandledRejectionIsHandled=function(){r.fireRejectionEvent("rejectionHandled",n,void 0,this)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._getCarriedStackTrace()||this._settledValue;this._setUnhandledRejectionIsNotified(),r.fireRejectionEvent("unhandledRejection",i,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=524288|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-524289&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(524288&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=2097152|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-2097153&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(2097152&this._bitField)>0},e.prototype._setCarriedStackTrace=function(t){this._bitField=1048576|this._bitField,this._fulfillmentHandler0=t},e.prototype._isCarryingStackTrace=function(){return(1048576&this._bitField)>0},e.prototype._getCarriedStackTrace=function(){return this._isCarryingStackTrace()?this._fulfillmentHandler0:void 0},e.prototype._captureStackTrace=function(){return c&&(this._trace=new r(this._peekContext())),this},e.prototype._attachExtraTrace=function(t,e){if(c&&u(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var i=r.parseStackAndMessage(t);a.notEnumerableProp(t,"stack",i.message+"\n"+i.stack.join("\n")),a.notEnumerableProp(t,"__stackCleaned__",!0)}}},e.prototype._warn=function(t){var e=new s(t),n=this._peekContext();if(n)n.attachExtraTrace(e);else{var i=r.parseStackAndMessage(e);e.stack=i.message+"\n"+i.stack.join("\n")}r.formatAndLogError(e,"")},e.onPossiblyUnhandledRejection=function(t){i="function"==typeof t?t:void 0},e.onUnhandledRejectionHandled=function(t){n="function"==typeof t?t:void 0},e.longStackTraces=function(){if(o.haveItemsQueued()&&c===!1)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/DT1qyG\n");c=r.isSupported(),c&&o.disableTrampolineIfNecessary()},e.hasLongStackTraces=function(){return c&&r.isSupported()},r.isSupported()||(e.longStackTraces=function(){},c=!1),function(){return c}}},{"./async.js":2,"./errors.js":13,"./util.js":38}],11:[function(t,e){"use strict";var r=t("./util.js"),n=r.isPrimitive,i=r.wrapsPrimitiveReceiver;e.exports=function(t){var e=function(){return this},r=function(){throw this},o=function(){},s=function(){throw void 0},a=function(t,e){return 1===e?function(){throw t}:2===e?function(){return t}:void 0};t.prototype["return"]=t.prototype.thenReturn=function(t){return void 0===t?this.then(o):i&&n(t)?this._then(a(t,2),void 0,void 0,void 0,void 0):this._then(e,void 0,void 0,t,void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return void 0===t?this.then(s):i&&n(t)?this._then(a(t,1),void 0,void 0,void 0,void 0):this._then(r,void 0,void 0,t,void 0)}}},{"./util.js":38}],12:[function(t,e){"use strict";e.exports=function(t,e){var r=t.reduce;t.prototype.each=function(t){return r(this,t,null,e)},t.each=function(t,n){return r(t,n,null,e)}}},{}],13:[function(t,e){"use strict";function r(t,e){function r(n){return this instanceof r?(l(this,"message","string"==typeof n?n:e),l(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new r(n)}return c(r,Error),r}function n(t){return this instanceof n?(l(this,"name","OperationalError"),l(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(l(this,"message",t.message),l(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new n(t)}var i,o,s=t("./es5.js"),a=s.freeze,u=t("./util.js"),c=u.inherits,l=u.notEnumerableProp,h=r("Warning","warning"),p=r("CancellationError","cancellation error"),f=r("TimeoutError","timeout error"),_=r("AggregateError","aggregate error");try{i=TypeError,o=RangeError}catch(d){i=r("TypeError","type error"),o=r("RangeError","range error")}for(var v="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),y=0;y<v.length;++y)"function"==typeof Array.prototype[v[y]]&&(_.prototype[v[y]]=Array.prototype[v[y]]);s.defineProperty(_.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),_.prototype.isOperational=!0;var g=0;_.prototype.toString=function(){var t=Array(4*g+1).join(" "),e="\n"+t+"AggregateError of:\n";g++,t=Array(4*g+1).join(" ");for(var r=0;r<this.length;++r){for(var n=this[r]===this?"[Circular AggregateError]":this[r]+"",i=n.split("\n"),o=0;o<i.length;++o)i[o]=t+i[o];n=i.join("\n"),e+=n+"\n"}return g--,e},c(n,Error);var m=Error.__BluebirdErrorTypes__;m||(m=a({CancellationError:p,TimeoutError:f,OperationalError:n,RejectionError:n,AggregateError:_}),l(Error,"__BluebirdErrorTypes__",m)),e.exports={Error:Error,TypeError:i,RangeError:o,CancellationError:m.CancellationError,OperationalError:m.OperationalError,TimeoutError:m.TimeoutError,AggregateError:m.AggregateError,Warning:h}},{"./es5.js":14,"./util.js":38}],14:[function(t,e){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return!(r&&!r.writable&&!r.set)}};else{var n={}.hasOwnProperty,i={}.toString,o={}.constructor.prototype,s=function(t){var e=[];for(var r in t)n.call(t,r)&&e.push(r);return e},a=function(t,e){return{value:t[e]}},u=function(t,e,r){return t[e]=r.value,t},c=function(t){return t},l=function(t){try{return Object(t).constructor.prototype}catch(e){return o}},h=function(t){try{return"[object Array]"===i.call(t)}catch(e){return!1}};e.exports={isArray:h,keys:s,names:s,defineProperty:u,getDescriptor:a,freeze:c,getPrototypeOf:l,isES5:r,propertyIsWritable:function(){return!0}}}},{}],15:[function(t,e){"use strict";e.exports=function(t,e){var r=t.map;t.prototype.filter=function(t,n){return r(this,t,n,e)},t.filter=function(t,n,i){return r(t,n,i,e)}}},{}],16:[function(t,e){"use strict";e.exports=function(e,r,n){function i(){return this}function o(){throw this}function s(t){return function(){return t}}function a(t){return function(){throw t}}function u(t,e,r){var n;return n=p&&f(e)?r?s(e):a(e):r?i:o,t._then(n,_,void 0,e,void 0)}function c(t){var i=this.promise,o=this.handler,s=i._isBound()?o.call(i._boundTo):o();if(void 0!==s){var a=n(s,i);if(a instanceof e)return a=a._target(),u(a,t,i.isFulfilled())}return i.isRejected()?(r.e=t,r):t}function l(t){var r=this.promise,i=this.handler,o=r._isBound()?i.call(r._boundTo,t):i(t);if(void 0!==o){var s=n(o,r);if(s instanceof e)return s=s._target(),u(s,t,!0)}return t}var h=t("./util.js"),p=h.wrapsPrimitiveReceiver,f=h.isPrimitive,_=h.thrower;e.prototype._passThroughHandler=function(t,e){if("function"!=typeof t)return this.then();var r={promise:this,handler:t};return this._then(e?c:l,e?c:void 0,void 0,r,void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThroughHandler(t,!0)},e.prototype.tap=function(t){return this._passThroughHandler(t,!1)}}},{"./util.js":38}],17:[function(t,e){"use strict";e.exports=function(e,r,n,i){function o(t,r,n){for(var o=0;o<r.length;++o){n._pushContext();var s=h(r[o])(t);if(n._popContext(),s===l){n._pushContext();var a=e.reject(l.e);return n._popContext(),a}var u=i(s,n);if(u instanceof e)return u}return null}function s(t,r,i,o){var s=this._promise=new e(n);s._captureStackTrace(),this._stack=o,this._generatorFunction=t,this._receiver=r,this._generator=void 0,this._yieldHandlers="function"==typeof i?[i].concat(p):p}var a=t("./errors.js"),u=a.TypeError,c=t("./util.js"),l=c.errorObj,h=c.tryCatch,p=[];s.prototype.promise=function(){return this._promise},s.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._next(void 0)},s.prototype._continue=function(t){if(t===l)return this._promise._rejectCallback(t.e,!1,!0);var r=t.value;if(t.done===!0)this._promise._resolveCallback(r);else{var n=i(r,this._promise);if(!(n instanceof e)&&(n=o(n,this._yieldHandlers,this._promise),null===n))return void this._throw(new u("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/4Y4pDk\n\n".replace("%s",r)+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")));n._then(this._next,this._throw,void 0,this,null)}},s.prototype._throw=function(t){this._promise._attachExtraTrace(t),this._promise._pushContext();var e=h(this._generator["throw"]).call(this._generator,t);this._promise._popContext(),this._continue(e)},s.prototype._next=function(t){this._promise._pushContext();var e=h(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},e.coroutine=function(t,e){if("function"!=typeof t)throw new u("generatorFunction must be a function\n\n See http://goo.gl/6Vqhm0\n");var r=Object(e).yieldHandler,n=s,i=(new Error).stack;return function(){var e=t.apply(this,arguments),o=new n(void 0,void 0,r,i);return o._generator=e,o._next(void 0),o.promise()}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new u("fn must be a function\n\n See http://goo.gl/916lJJ\n");p.push(t)},e.spawn=function(t){if("function"!=typeof t)return r("generatorFunction must be a function\n\n See http://goo.gl/6Vqhm0\n");var n=new s(t,this),i=n.promise();return n._run(e.spawn),i}}},{"./errors.js":13,"./util.js":38}],18:[function(t,e){"use strict";e.exports=function(e,r,n,i){{var o=t("./util.js");o.canEvaluate,o.tryCatch,o.errorObj}e.join=function(){var t,e=arguments.length-1;if(e>0&&"function"==typeof arguments[e]){t=arguments[e];var n}for(var i=arguments.length,o=new Array(i),s=0;i>s;++s)o[s]=arguments[s];t&&o.pop();var n=new r(o).promise();return void 0!==t?n.spread(t):n}}},{"./util.js":38}],19:[function(t,e){"use strict";e.exports=function(e,r,n,i,o){function s(t,e,r,n){this.constructor$(t),this._promise._captureStackTrace(),this._callback=e,this._preservedValues=n===o?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=r>=1?[]:_,c.invoke(a,this,void 0)}function a(){this._init$(void 0,-2)}function u(t,e,r,n){var i="object"==typeof r&&null!==r?r.concurrency:0;return i="number"==typeof i&&isFinite(i)&&i>=1?i:0,new s(t,e,i,n)}var c=t("./async.js"),l=t("./util.js"),h=l.tryCatch,p=l.errorObj,f={},_=[];l.inherits(s,r),s.prototype._init=function(){},s.prototype._promiseFulfilled=function(t,r){var n=this._values,o=this.length(),s=this._preservedValues,a=this._limit;if(n[r]===f){if(n[r]=t,a>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return}else{if(a>=1&&this._inFlight>=a)return n[r]=t,void this._queue.push(r);null!==s&&(s[r]=t);var u=this._callback,c=this._promise._boundTo;this._promise._pushContext();var l=h(u).call(c,t,r,o);if(this._promise._popContext(),l===p)return this._reject(l.e);var _=i(l,this._promise);if(_ instanceof e){if(_=_._target(),_._isPending())return a>=1&&this._inFlight++,n[r]=f,_._proxyPromiseArray(this,r);if(!_._isFulfilled())return this._reject(_._reason());l=_._value()}n[r]=l}var d=++this._totalResolved;d>=o&&(null!==s?this._filter(n,s):this._resolve(n))},s.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,r=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var n=t.pop();this._promiseFulfilled(r[n],n)}},s.prototype._filter=function(t,e){for(var r=e.length,n=new Array(r),i=0,o=0;r>o;++o)t[o]&&(n[i++]=e[o]);n.length=i,this._resolve(n)},s.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return"function"!=typeof t?n("fn must be a function\n\n See http://goo.gl/916lJJ\n"):u(this,t,e,null).promise()},e.map=function(t,e,r,i){return"function"!=typeof e?n("fn must be a function\n\n See http://goo.gl/916lJJ\n"):u(t,e,r,i).promise()}}},{"./async.js":2,"./util.js":38}],20:[function(t,e){"use strict";e.exports=function(e,r,n,i){var o=t("./util.js"),s=o.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("fn must be a function\n\n See http://goo.gl/916lJJ\n");return function(){var n=new e(r);n._captureStackTrace(),n._pushContext();var i=s(t).apply(this,arguments);return n._popContext(),n._resolveFromSyncValue(i),n}},e.attempt=e["try"]=function(t,n,a){if("function"!=typeof t)return i("fn must be a function\n\n See http://goo.gl/916lJJ\n");var u=new e(r);u._captureStackTrace(),u._pushContext();var c=o.isArray(n)?s(t).apply(a,n):s(t).call(a,n);return u._popContext(),u._resolveFromSyncValue(c),u},e.prototype._resolveFromSyncValue=function(t){t===o.errorObj?this._rejectCallback(t.e,!1,!0):this._resolveCallback(t,!0)}}},{"./util.js":38}],21:[function(t,e){"use strict";e.exports=function(e){function r(t,e){var r=this;if(!o.isArray(t))return n.call(r,t,e);var i=a(e).apply(r._boundTo,[null].concat(t));i===u&&s.throwLater(i.e)}function n(t,e){var r=this,n=r._boundTo,i=void 0===t?a(e).call(n,null):a(e).call(n,null,t);i===u&&s.throwLater(i.e)}function i(t,e){var r=this;if(!t){var n=r._target(),i=n._getCarriedStackTrace();i.cause=t,t=i}var o=a(e).call(r._boundTo,t);o===u&&s.throwLater(o.e)}var o=t("./util.js"),s=t("./async.js"),a=o.tryCatch,u=o.errorObj;e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var o=n;void 0!==e&&Object(e).spread&&(o=r),this._then(o,i,void 0,this,t)}return this}}},{"./async.js":2,"./util.js":38}],22:[function(t,e){"use strict";e.exports=function(e,r){var n=t("./util.js"),i=t("./async.js"),o=n.tryCatch,s=n.errorObj;e.prototype.progressed=function(t){return this._then(void 0,void 0,t,void 0,void 0)},e.prototype._progress=function(t){this._isFollowingOrFulfilledOrRejected()||this._target()._progressUnchecked(t)},e.prototype._progressHandlerAt=function(t){return 0===t?this._progressHandler0:this[(t<<2)+t-5+2]},e.prototype._doProgressWith=function(t){var r=t.value,i=t.handler,a=t.promise,u=t.receiver,c=o(i).call(u,r);if(c===s){if(null!=c.e&&"StopProgressPropagation"!==c.e.name){var l=n.canAttachTrace(c.e)?c.e:new Error(n.toString(c.e));a._attachExtraTrace(l),a._progress(c.e)}}else c instanceof e?c._then(a._progress,null,null,a,void 0):a._progress(c)},e.prototype._progressUnchecked=function(t){for(var n=this._length(),o=this._progress,s=0;n>s;s++){var a=this._progressHandlerAt(s),u=this._promiseAt(s);if(u instanceof e)"function"==typeof a?i.invoke(this._doProgressWith,this,{handler:a,promise:u,receiver:this._receiverAt(s),value:t}):i.invoke(o,u,t);else{var c=this._receiverAt(s);"function"==typeof a?a.call(c,t,u):c instanceof r&&!c._isResolved()&&c._promiseProgressed(t,u)}}}}},{"./async.js":2,"./util.js":38}],23:[function(t,e){"use strict";e.exports=function(){function e(t){if("function"!=typeof t)throw new c("the promise constructor requires a resolver function\n\n See http://goo.gl/EC22Yn\n");if(this.constructor!==e)throw new c("the promise constructor cannot be invoked directly\n\n See http://goo.gl/KsIlge\n");this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._progressHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._settledValue=void 0,t!==l&&this._resolveFromResolver(t)}function r(t){var r=new e(l);r._fulfillmentHandler0=t,r._rejectionHandler0=t,r._progressHandler0=t,r._promise0=t,r._receiver0=t,r._settledValue=t}var n=function(){return new c("circular promise resolution chain\n\n See http://goo.gl/LhFpo0\n")},i=function(){return new e.PromiseInspection(this._target())},o=function(t){return e.reject(new c(t))},s=t("./util.js"),a=t("./async.js"),u=t("./errors.js"),c=e.TypeError=u.TypeError;e.RangeError=u.RangeError,e.CancellationError=u.CancellationError,e.TimeoutError=u.TimeoutError,e.OperationalError=u.OperationalError,e.RejectionError=u.OperationalError,e.AggregateError=u.AggregateError;var l=function(){},h={},p={e:null},f=t("./thenables.js")(e,l),_=t("./promise_array.js")(e,l,f,o),d=t("./captured_trace.js")(),v=t("./debuggability.js")(e,d),y=t("./context.js")(e,d,v),g=t("./catch_filter.js")(p),m=t("./promise_resolver.js"),j=m._nodebackForPromise,b=s.errorObj,w=s.tryCatch;return e.prototype.toString=function(){return"[object Promise]"},e.prototype.caught=e.prototype["catch"]=function(t){var r=arguments.length;if(r>1){var n,i=new Array(r-1),o=0;for(n=0;r-1>n;++n){var s=arguments[n];if("function"!=typeof s)return e.reject(new c("Catch filter must inherit from Error or be a simple predicate function\n\n See http://goo.gl/o84o68\n"));i[o++]=s}i.length=o,t=arguments[n];var a=new g(i,t,this);return this._then(void 0,a.doFilter,void 0,a,void 0)}return this._then(void 0,t,void 0,void 0,void 0)},e.prototype.reflect=function(){return this._then(i,i,void 0,this,void 0)},e.prototype.then=function(t,e,r){if(v()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+s.classString(t);arguments.length>1&&(n+=", "+s.classString(e)),this._warn(n)}return this._then(t,e,r,void 0,void 0)
-},e.prototype.done=function(t,e,r){var n=this._then(t,e,r,void 0,void 0);n._setIsFinal()},e.prototype.spread=function(t,e){return this.all()._then(t,e,void 0,h,void 0)},e.prototype.isCancellable=function(){return!this.isResolved()&&this._cancellable()},e.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},e.prototype.all=function(){return new _(this).promise()},e.prototype.error=function(t){return this.caught(s.originatesFromRejection,t)},e.is=function(t){return t instanceof e},e.fromNode=function(t){var r=new e(l),n=w(t)(j(r));return n===b&&r._rejectCallback(n.e,!0,!0),r},e.all=function(t){return new _(t).promise()},e.defer=e.pending=function(){var t=new e(l);return new m(t)},e.cast=function(t){var r=f(t);if(!(r instanceof e)){var n=r;r=new e(l),r._fulfillUnchecked(n)}return r},e.resolve=e.fulfilled=e.cast,e.reject=e.rejected=function(t){var r=new e(l);return r._captureStackTrace(),r._rejectCallback(t,!0),r},e.setScheduler=function(t){if("function"!=typeof t)throw new c("fn must be a function\n\n See http://goo.gl/916lJJ\n");var e=a._schedule;return a._schedule=t,e},e.prototype._then=function(t,r,n,i,o){var s=void 0!==o,u=s?o:new e(l);s||(u._propagateFrom(this,5),u._captureStackTrace());var c=this._target();c!==this&&(void 0===i&&(i=this._boundTo),s||u._setIsMigrated());var h=c._addCallbacks(t,r,n,u,i);return c._isResolved()&&!c._isSettlePromisesQueued()&&a.invoke(c._settlePromiseAtPostResolution,c,h),u},e.prototype._settlePromiseAtPostResolution=function(t){this._isRejectionUnhandled()&&this._unsetRejectionIsUnhandled(),this._settlePromiseAt(t)},e.prototype._length=function(){return 131071&this._bitField},e.prototype._isFollowingOrFulfilledOrRejected=function(){return(939524096&this._bitField)>0},e.prototype._isFollowing=function(){return 536870912===(536870912&this._bitField)},e.prototype._setLength=function(t){this._bitField=-131072&this._bitField|131071&t},e.prototype._setFulfilled=function(){this._bitField=268435456|this._bitField},e.prototype._setRejected=function(){this._bitField=134217728|this._bitField},e.prototype._setFollowing=function(){this._bitField=536870912|this._bitField},e.prototype._setIsFinal=function(){this._bitField=33554432|this._bitField},e.prototype._isFinal=function(){return(33554432&this._bitField)>0},e.prototype._cancellable=function(){return(67108864&this._bitField)>0},e.prototype._setCancellable=function(){this._bitField=67108864|this._bitField},e.prototype._unsetCancellable=function(){this._bitField=-67108865&this._bitField},e.prototype._setIsMigrated=function(){this._bitField=4194304|this._bitField},e.prototype._unsetIsMigrated=function(){this._bitField=-4194305&this._bitField},e.prototype._isMigrated=function(){return(4194304&this._bitField)>0},e.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[5*t-5+4];return void 0===e&&this._isBound()?this._boundTo:e},e.prototype._promiseAt=function(t){return 0===t?this._promise0:this[5*t-5+3]},e.prototype._fulfillmentHandlerAt=function(t){return 0===t?this._fulfillmentHandler0:this[5*t-5+0]},e.prototype._rejectionHandlerAt=function(t){return 0===t?this._rejectionHandler0:this[5*t-5+1]},e.prototype._migrateCallbacks=function(t,r){var n=t._fulfillmentHandlerAt(r),i=t._rejectionHandlerAt(r),o=t._progressHandlerAt(r),s=t._promiseAt(r),a=t._receiverAt(r);s instanceof e&&s._setIsMigrated(),this._addCallbacks(n,i,o,s,a)},e.prototype._addCallbacks=function(t,e,r,n,i){var o=this._length();if(o>=131066&&(o=0,this._setLength(0)),0===o)this._promise0=n,void 0!==i&&(this._receiver0=i),"function"!=typeof t||this._isCarryingStackTrace()||(this._fulfillmentHandler0=t),"function"==typeof e&&(this._rejectionHandler0=e),"function"==typeof r&&(this._progressHandler0=r);else{var s=5*o-5;this[s+3]=n,this[s+4]=i,"function"==typeof t&&(this[s+0]=t),"function"==typeof e&&(this[s+1]=e),"function"==typeof r&&(this[s+2]=r)}return this._setLength(o+1),o},e.prototype._setProxyHandlers=function(t,e){var r=this._length();if(r>=131066&&(r=0,this._setLength(0)),0===r)this._promise0=e,this._receiver0=t;else{var n=5*r-5;this[n+3]=e,this[n+4]=t}this._setLength(r+1)},e.prototype._proxyPromiseArray=function(t,e){this._setProxyHandlers(t,e)},e.prototype._resolveCallback=function(t,r){if(!this._isFollowingOrFulfilledOrRejected()){if(t===this)return this._rejectCallback(n(),!1,!0);var i=f(t,this);if(!(i instanceof e))return this._fulfill(t);var o=1|(r?4:0);this._propagateFrom(i,o);var s=i._target();if(s._isPending()){for(var a=this._length(),u=0;a>u;++u)s._migrateCallbacks(this,u);this._setFollowing(),this._setLength(0),this._setFollowee(s)}else s._isFulfilled()?this._fulfillUnchecked(s._value()):this._rejectUnchecked(s._reason(),s._getCarriedStackTrace())}},e.prototype._rejectCallback=function(t,e,r){r||s.markAsOriginatingFromRejection(t);var n=s.ensureErrorObject(t),i=n===t;this._attachExtraTrace(n,e?i:!1),this._reject(t,i?void 0:n)},e.prototype._resolveFromResolver=function(t){var e=this;this._captureStackTrace(),this._pushContext();var r=!0,n=w(t)(function(t){null!==e&&(e._resolveCallback(t),e=null)},function(t){null!==e&&(e._rejectCallback(t,r),e=null)});r=!1,this._popContext(),void 0!==n&&n===b&&null!==e&&(e._rejectCallback(n.e,!0,!0),e=null)},e.prototype._settlePromiseFromHandler=function(t,e,r,i){if(!i._isRejected()){i._pushContext();var o;if(o=e!==h||this._isRejected()?w(t).call(e,r):w(t).apply(this._boundTo,r),i._popContext(),o===b||o===i||o===p){var s=o===i?n():o.e;i._rejectCallback(s,!1,!0)}else i._resolveCallback(o)}},e.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},e.prototype._followee=function(){return this._rejectionHandler0},e.prototype._setFollowee=function(t){this._rejectionHandler0=t},e.prototype._cleanValues=function(){this._cancellable()&&(this._cancellationParent=void 0)},e.prototype._propagateFrom=function(t,e){(1&e)>0&&t._cancellable()&&(this._setCancellable(),this._cancellationParent=t),(4&e)>0&&t._isBound()&&this._setBoundTo(t._boundTo)},e.prototype._fulfill=function(t){this._isFollowingOrFulfilledOrRejected()||this._fulfillUnchecked(t)},e.prototype._reject=function(t,e){this._isFollowingOrFulfilledOrRejected()||this._rejectUnchecked(t,e)},e.prototype._settlePromiseAt=function(t){var r=this._promiseAt(t),n=r instanceof e;if(n&&r._isMigrated())return r._unsetIsMigrated(),a.invoke(this._settlePromiseAt,this,t);var i=this._isFulfilled()?this._fulfillmentHandlerAt(t):this._rejectionHandlerAt(t),o=this._isCarryingStackTrace()?this._getCarriedStackTrace():void 0,s=this._settledValue,u=this._receiverAt(t);this._clearCallbackDataAtIndex(t),"function"==typeof i?n?this._settlePromiseFromHandler(i,u,s,r):i.call(u,s,r):u instanceof _?u._isResolved()||(this._isFulfilled()?u._promiseFulfilled(s,r):u._promiseRejected(s,r)):n&&(this._isFulfilled()?r._fulfill(s):r._reject(s,o)),t>=4&&4===(31&t)&&a.invokeLater(this._setLength,this,0)},e.prototype._clearCallbackDataAtIndex=function(t){if(0===t)this._isCarryingStackTrace()||(this._fulfillmentHandler0=void 0),this._rejectionHandler0=this._progressHandler0=this._receiver0=this._promise0=void 0;else{var e=5*t-5;this[e+3]=this[e+4]=this[e+0]=this[e+1]=this[e+2]=void 0}},e.prototype._isSettlePromisesQueued=function(){return-1073741824===(-1073741824&this._bitField)},e.prototype._setSettlePromisesQueued=function(){this._bitField=-1073741824|this._bitField},e.prototype._unsetSettlePromisesQueued=function(){this._bitField=1073741823&this._bitField},e.prototype._queueSettlePromises=function(){a.settlePromises(this),this._setSettlePromisesQueued()},e.prototype._fulfillUnchecked=function(t){if(t===this){var e=n();return this._attachExtraTrace(e),this._rejectUnchecked(e,void 0)}this._setFulfilled(),this._settledValue=t,this._cleanValues(),this._length()>0&&this._queueSettlePromises()},e.prototype._rejectUncheckedCheckError=function(t){var e=s.ensureErrorObject(t);this._rejectUnchecked(t,e===t?void 0:e)},e.prototype._rejectUnchecked=function(t,e){if(t===this){var r=n();return this._attachExtraTrace(r),this._rejectUnchecked(r)}return this._setRejected(),this._settledValue=t,this._cleanValues(),this._isFinal()?void a.throwLater(function(t){throw"stack"in t&&a.invokeFirst(d.unhandledRejection,void 0,t),t},void 0===e?t:e):(void 0!==e&&e!==t&&this._setCarriedStackTrace(e),void(this._length()>0?this._queueSettlePromises():this._ensurePossibleRejectionHandled()))},e.prototype._settlePromises=function(){this._unsetSettlePromisesQueued();for(var t=this._length(),e=0;t>e;e++)this._settlePromiseAt(e)},e._makeSelfResolutionError=n,t("./progress.js")(e,_),t("./method.js")(e,l,f,o),t("./bind.js")(e,l,f),t("./finally.js")(e,p,f),t("./direct_resolve.js")(e),t("./synchronous_inspection.js")(e),t("./join.js")(e,_,f,l),e.Promise=e,t("./map.js")(e,_,o,f,l),t("./cancel.js")(e),t("./using.js")(e,o,f,y),t("./generators.js")(e,o,l,f),t("./nodeify.js")(e),t("./call_get.js")(e),t("./props.js")(e,_,f,o),t("./race.js")(e,l,f,o),t("./reduce.js")(e,_,o,f,l),t("./settle.js")(e,_),t("./some.js")(e,_,o),t("./promisify.js")(e,l),t("./any.js")(e),t("./each.js")(e,l),t("./timers.js")(e,l),t("./filter.js")(e,l),s.toFastProperties(e),s.toFastProperties(e.prototype),r({a:1}),r({b:2}),r({c:3}),r(1),r(function(){}),r(void 0),r(!1),r(new e(l)),d.setBounds(a.firstLineError,s.lastLineError),e}},{"./any.js":1,"./async.js":2,"./bind.js":3,"./call_get.js":5,"./cancel.js":6,"./captured_trace.js":7,"./catch_filter.js":8,"./context.js":9,"./debuggability.js":10,"./direct_resolve.js":11,"./each.js":12,"./errors.js":13,"./filter.js":15,"./finally.js":16,"./generators.js":17,"./join.js":18,"./map.js":19,"./method.js":20,"./nodeify.js":21,"./progress.js":22,"./promise_array.js":24,"./promise_resolver.js":25,"./promisify.js":26,"./props.js":27,"./race.js":29,"./reduce.js":30,"./settle.js":32,"./some.js":33,"./synchronous_inspection.js":34,"./thenables.js":35,"./timers.js":36,"./using.js":37,"./util.js":38}],24:[function(t,e){"use strict";e.exports=function(e,r,n,i){function o(t){switch(t){case-2:return[];case-3:return{}}}function s(t){var n,i=this._promise=new e(r);t instanceof e&&(n=t,i._propagateFrom(n,5)),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var a=t("./util.js"),u=a.isArray;return s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function c(t,r){var s=n(this._values,this._promise);if(s instanceof e){if(s=s._target(),this._values=s,!s._isFulfilled())return s._isPending()?void s._then(c,this._reject,void 0,this,r):void this._reject(s._reason());if(s=s._value(),!u(s)){var a=new e.TypeError("expecting an array, a promise or a thenable\n\n See http://goo.gl/s8MMhc\n");return void this.__hardReject__(a)}}else if(!u(s))return void this._promise._reject(i("expecting an array, a promise or a thenable\n\n See http://goo.gl/s8MMhc\n")._reason());if(0===s.length)return void(-5===r?this._resolveEmptyArray():this._resolve(o(r)));var l=this.getActualLength(s.length);this._length=l,this._values=this.shouldCopyValues()?new Array(l):this._values;for(var h=this._promise,p=0;l>p;++p){var f=this._isResolved(),_=n(s[p],h);_ instanceof e?(_=_._target(),f?_._ignoreRejections():_._isPending()?_._proxyPromiseArray(this,p):_._isFulfilled()?this._promiseFulfilled(_._value(),p):this._promiseRejected(_._reason(),p)):f||this._promiseFulfilled(_,p)}},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype.__hardReject__=s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1,!0)},s.prototype._promiseProgressed=function(t,e){this._promise._progress({index:e,value:t})},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var r=++this._totalResolved;r>=this._length&&this._resolve(this._values)},s.prototype._promiseRejected=function(t){this._totalResolved++,this._reject(t)},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util.js":38}],25:[function(t,e){"use strict";function r(t){return t instanceof Error&&p.getPrototypeOf(t)===Error.prototype}function n(t){var e;if(r(t)){e=new l(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var n=p.keys(t),i=0;i<n.length;++i){var o=n[i];f.test(o)||(e[o]=t[o])}return e}return s.markAsOriginatingFromRejection(t),t}function i(t){return function(e,r){if(null!==t){if(e){var i=n(a(e));t._attachExtraTrace(i),t._reject(i)}else if(arguments.length>2){for(var o=arguments.length,s=new Array(o-1),u=1;o>u;++u)s[u-1]=arguments[u];t._fulfill(s)}else t._fulfill(r);t=null}}}var o,s=t("./util.js"),a=s.maybeWrapAsError,u=t("./errors.js"),c=u.TimeoutError,l=u.OperationalError,h=s.haveGetters,p=t("./es5.js"),f=/^(?:name|message|stack|cause)$/;if(o=h?function(t){this.promise=t}:function(t){this.promise=t,this.asCallback=i(t),this.callback=this.asCallback},h){var _={get:function(){return i(this.promise)}};p.defineProperty(o.prototype,"asCallback",_),p.defineProperty(o.prototype,"callback",_)}o._nodebackForPromise=i,o.prototype.toString=function(){return"[object PromiseResolver]"},o.prototype.resolve=o.prototype.fulfill=function(t){if(!(this instanceof o))throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n See http://goo.gl/sdkXL9\n");this.promise._resolveCallback(t)},o.prototype.reject=function(t){if(!(this instanceof o))throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n See http://goo.gl/sdkXL9\n");this.promise._rejectCallback(t)},o.prototype.progress=function(t){if(!(this instanceof o))throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n See http://goo.gl/sdkXL9\n");this.promise._progress(t)},o.prototype.cancel=function(t){this.promise.cancel(t)},o.prototype.timeout=function(){this.reject(new c("timeout"))},o.prototype.isResolved=function(){return this.promise.isResolved()},o.prototype.toJSON=function(){return this.promise.toJSON()},e.exports=o},{"./errors.js":13,"./es5.js":14,"./util.js":38}],26:[function(t,e){"use strict";e.exports=function(e,r){function n(t){return!b.test(t)}function i(t){try{return t.__isPromisified__===!0}catch(e){return!1}}function o(t,e,r){var n=f.getDataPropertyOrDefault(t,e+r,j);return n?i(n):!1}function s(t,e,r){for(var n=0;n<t.length;n+=2){var i=t[n];if(r.test(i))for(var o=i.replace(r,""),s=0;s<t.length;s+=2)if(t[s]===o)throw new g("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/iWrZbw\n".replace("%s",e))}}function a(t,e,r,n){for(var a=f.inheritedDataKeys(t),u=[],c=0;c<a.length;++c){var l=a[c],h=t[l],p=n===w?!0:w(l,h,t);"function"!=typeof h||f.isNativeFunctionMethod(h)||i(h)||o(t,l,e)||!n(l,h,t,p)||u.push(l,h)}return s(u,e,r),u}function u(t,n,i,o){function s(){var i=n;n===p&&(i=this);var o=new e(r);o._captureStackTrace();var s="string"==typeof u&&this!==a?this[u]:t,c=_(o);try{s.apply(i,d(arguments,c))}catch(l){o._rejectCallback(v(l),!0,!0)}return o}var a=function(){return this}(),u=t;return"string"==typeof u&&(t=o),f.notEnumerableProp(s,"__isPromisified__",!0),s}function c(t,e,r,n){for(var i=new RegExp(k(e)+"$"),o=a(t,e,i,r),s=0,u=o.length;u>s;s+=2){var c=o[s],l=o[s+1],h=c+e;t[h]=n===E?E(c,p,c,l,e):n(l,function(){return E(c,p,c,l,e)})}return f.toFastProperties(t),t}function l(t,e){return E(t,e,void 0,t)}var h,p={},f=t("./util.js"),_=t("./promise_resolver.js")._nodebackForPromise,d=f.withAppended,v=f.maybeWrapAsError,y=f.canEvaluate,g=t("./errors").TypeError,m="Async",j={__isPromisified__:!0},b=/^(?:length|name|arguments|caller|callee|prototype|__isPromisified__)$/,w=function(t){return f.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t},k=function(t){return t.replace(/([$])/,"\\$")},E=y?h:u;e.promisify=function(t,e){if("function"!=typeof t)throw new g("fn must be a function\n\n See http://goo.gl/916lJJ\n");if(i(t))return t;var r=l(t,arguments.length<2?p:e);return f.copyDescriptors(t,r,n),r},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new g("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/9ITlV0\n");e=Object(e);var r=e.suffix;"string"!=typeof r&&(r=m);var n=e.filter;"function"!=typeof n&&(n=w);var i=e.promisifier;if("function"!=typeof i&&(i=E),!f.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/8FZo5V\n");for(var o=f.inheritedDataKeys(t),s=0;s<o.length;++s){var a=t[o[s]];"constructor"!==o[s]&&f.isClass(a)&&(c(a.prototype,r,n,i),c(a,r,n,i))}return c(t,r,n,i)}}},{"./errors":13,"./promise_resolver.js":25,"./util.js":38}],27:[function(t,e){"use strict";e.exports=function(e,r,n,i){function o(t){for(var e=c.keys(t),r=e.length,n=new Array(2*r),i=0;r>i;++i){var o=e[i];n[i]=t[o],n[i+r]=o}this.constructor$(n)}function s(t){var r,s=n(t);return u(s)?(r=s instanceof e?s._then(e.props,void 0,void 0,void 0,void 0):new o(s).promise(),s instanceof e&&r._propagateFrom(s,4),r):i("cannot await properties of a non-object\n\n See http://goo.gl/OsFKC8\n")}var a=t("./util.js"),u=a.isObject,c=t("./es5.js");a.inherits(o,r),o.prototype._init=function(){this._init$(void 0,-3)},o.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var r=++this._totalResolved;if(r>=this._length){for(var n={},i=this.length(),o=0,s=this.length();s>o;++o)n[this._values[o+i]]=this._values[o];this._resolve(n)}},o.prototype._promiseProgressed=function(t,e){this._promise._progress({key:this._values[e+this.length()],value:t})},o.prototype.shouldCopyValues=function(){return!1},o.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return s(this)},e.props=function(t){return s(t)}}},{"./es5.js":14,"./util.js":38}],28:[function(t,e){"use strict";function r(t,e,r,n,i){for(var o=0;i>o;++o)r[o+n]=t[o+e],t[o+e]=void 0}function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity<t},n.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var r=this._front+e&this._capacity-1;this[r]=t,this._length=e+1},n.prototype._unshiftOne=function(t){var e=this._capacity;this._checkCapacity(this.length()+1);var r=this._front,n=(r-1&e-1^e)-e;this[n]=t,this._front=n,this._length=this.length()+1},n.prototype.unshift=function(t,e,r){this._unshiftOne(r),this._unshiftOne(e),this._unshiftOne(t)},n.prototype.push=function(t,e,r){var n=this.length()+3;if(this._willBeOverCapacity(n))return this._pushOne(t),this._pushOne(e),void this._pushOne(r);var i=this._front+n-3;this._checkCapacity(n);var o=this._capacity-1;this[i+0&o]=t,this[i+1&o]=e,this[i+2&o]=r,this._length=n},n.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},n.prototype.length=function(){return this._length},n.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},n.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,i=this._length,o=n+i&e-1;r(this,0,this,e,o)},e.exports=n},{}],29:[function(t,e){"use strict";e.exports=function(e,r,n,i){function o(t,o){var u=n(t);if(u instanceof e)return a(u);if(!s(t))return i("expecting an array, a promise or a thenable\n\n See http://goo.gl/s8MMhc\n");var c=new e(r);void 0!==o&&c._propagateFrom(o,5);for(var l=c._fulfill,h=c._reject,p=0,f=t.length;f>p;++p){var _=t[p];(void 0!==_||p in t)&&e.cast(_)._then(l,h,void 0,c,null)}return c}var s=t("./util.js").isArray,a=function(t){return t.then(function(e){return o(e,t)})};e.race=function(t){return o(t,void 0)},e.prototype.race=function(){return o(this,void 0)}}},{"./util.js":38}],30:[function(t,e){"use strict";e.exports=function(e,r,n,i,o){function s(t,r,n,s){this.constructor$(t),this._promise._captureStackTrace(),this._preservedValues=s===o?[]:null,this._zerothIsAccum=void 0===n,this._gotAccum=!1,this._reducingIndex=this._zerothIsAccum?1:0,this._valuesPhase=void 0;var u=i(n,this._promise),l=!1,h=u instanceof e;h&&(u=u._target(),u._isPending()?u._proxyPromiseArray(this,-1):u._isFulfilled()?(n=u._value(),this._gotAccum=!0):(this._reject(u._reason()),l=!0)),h||this._zerothIsAccum||(this._gotAccum=!0),this._callback=r,this._accum=n,l||c.invoke(a,this,void 0)}function a(){this._init$(void 0,-5)}function u(t,e,r,i){if("function"!=typeof e)return n("fn must be a function\n\n See http://goo.gl/916lJJ\n");var o=new s(t,e,r,i);return o.promise()}var c=t("./async.js"),l=t("./util.js"),h=l.tryCatch,p=l.errorObj;l.inherits(s,r),s.prototype._init=function(){},s.prototype._resolveEmptyArray=function(){(this._gotAccum||this._zerothIsAccum)&&this._resolve(null!==this._preservedValues?[]:this._accum)},s.prototype._promiseFulfilled=function(t,r){var n=this._values;n[r]=t;var o,s=this.length(),a=this._preservedValues,u=null!==a,c=this._gotAccum,l=this._valuesPhase;if(!l)for(l=this._valuesPhase=new Array(s),o=0;s>o;++o)l[o]=0;if(o=l[r],0===r&&this._zerothIsAccum?(this._accum=t,this._gotAccum=c=!0,l[r]=0===o?1:2):-1===r?(this._accum=t,this._gotAccum=c=!0):0===o?l[r]=1:(l[r]=2,this._accum=t),c){for(var f,_=this._callback,d=this._promise._boundTo,v=this._reducingIndex;s>v;++v)if(o=l[v],2!==o){if(1!==o)return;if(t=n[v],this._promise._pushContext(),u?(a.push(t),f=h(_).call(d,t,v,s)):f=h(_).call(d,this._accum,t,v,s),this._promise._popContext(),f===p)return this._reject(f.e);var y=i(f,this._promise);if(y instanceof e){if(y=y._target(),y._isPending())return l[v]=4,y._proxyPromiseArray(this,v);if(!y._isFulfilled())return this._reject(y._reason());f=y._value()}this._reducingIndex=v+1,this._accum=f}else this._reducingIndex=v+1;this._resolve(u?a:this._accum)}},e.prototype.reduce=function(t,e){return u(this,t,e,null)},e.reduce=function(t,e,r,n){return u(t,e,r,n)}}},{"./async.js":2,"./util.js":38}],31:[function(t,e){"use strict";var r,n=t("./util"),i=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/m3OTXk\n")};if(n.isNode&&"undefined"==typeof MutationObserver){var o=global.setImmediate,s=process.nextTick;r=n.isRecentNode?function(t){o.call(global,t)}:function(t){s.call(process,t)}}else"undefined"!=typeof MutationObserver?(r=function(t){var e=document.createElement("div"),r=new MutationObserver(t);return r.observe(e,{attributes:!0}),function(){e.classList.toggle("foo")}},r.isStatic=!0):r="undefined"!=typeof setImmediate?function(t){setImmediate(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:i;e.exports=r},{"./util":38}],32:[function(t,e){"use strict";e.exports=function(e,r){function n(t){this.constructor$(t)}var i=e.PromiseInspection,o=t("./util.js");o.inherits(n,r),n.prototype._promiseResolved=function(t,e){this._values[t]=e;var r=++this._totalResolved;r>=this._length&&this._resolve(this._values)},n.prototype._promiseFulfilled=function(t,e){var r=new i;r._bitField=268435456,r._settledValue=t,this._promiseResolved(e,r)},n.prototype._promiseRejected=function(t,e){var r=new i;r._bitField=134217728,r._settledValue=t,this._promiseResolved(e,r)},e.settle=function(t){return new n(t).promise()},e.prototype.settle=function(){return new n(this).promise()}}},{"./util.js":38}],33:[function(t,e){"use strict";e.exports=function(e,r,n){function i(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function o(t,e){if((0|e)!==e||0>e)return n("expecting a positive integer\n\n See http://goo.gl/1wAmHx\n");var r=new i(t),o=r.promise();return r.setHowMany(e),r.init(),o}var s=t("./util.js"),a=t("./errors.js").RangeError,u=t("./errors.js").AggregateError,c=s.isArray;s.inherits(i,r),i.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var t=c(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},i.prototype.init=function(){this._initialized=!0,this._init()},i.prototype.setUnwrap=function(){this._unwrap=!0},i.prototype.howMany=function(){return this._howMany},i.prototype.setHowMany=function(t){this._howMany=t},i.prototype._promiseFulfilled=function(t){this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),this._resolve(1===this.howMany()&&this._unwrap?this._values[0]:this._values))},i.prototype._promiseRejected=function(t){if(this._addRejected(t),this.howMany()>this._canPossiblyFulfill()){for(var e=new u,r=this.length();r<this._values.length;++r)e.push(this._values[r]);this._reject(e)}},i.prototype._fulfilled=function(){return this._totalResolved},i.prototype._rejected=function(){return this._values.length-this.length()},i.prototype._addRejected=function(t){this._values.push(t)},i.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},i.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},i.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},i.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return o(t,e)},e.prototype.some=function(t){return o(this,t)},e._SomePromiseArray=i}},{"./errors.js":13,"./util.js":38}],34:[function(t,e){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValue=t._settledValue):(this._bitField=0,this._settledValue=void 0)}e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/hc1DLj\n");return this._settledValue},e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/hPuiwB\n");return this._settledValue},e.prototype.isFulfilled=t.prototype._isFulfilled=function(){return(268435456&this._bitField)>0},e.prototype.isRejected=t.prototype._isRejected=function(){return(134217728&this._bitField)>0},e.prototype.isPending=t.prototype._isPending=function(){return 0===(402653184&this._bitField)},e.prototype.isResolved=t.prototype._isResolved=function(){return(402653184&this._bitField)>0},t.prototype.isPending=function(){return this._target()._isPending()},t.prototype.isRejected=function(){return this._target()._isRejected()},t.prototype.isFulfilled=function(){return this._target()._isFulfilled()},t.prototype.isResolved=function(){return this._target()._isResolved()},t.prototype._value=function(){return this._settledValue},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue},t.prototype.value=function(){var t=this._target();if(!t.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/hc1DLj\n");return t._settledValue},t.prototype.reason=function(){var t=this._target();if(!t.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/hPuiwB\n");return t._unsetRejectionIsUnhandled(),t._settledValue},t.PromiseInspection=e}},{}],35:[function(t,e){"use strict";e.exports=function(e,r){function n(t,n){if(c(t)){if(t instanceof e)return t;if(o(t)){var l=new e(r);return t._then(l._fulfillUnchecked,l._rejectUncheckedCheckError,l._progressUnchecked,l,null),l}var h=a.tryCatch(i)(t);if(h===u){n&&n._pushContext();var l=e.reject(h.e);return n&&n._popContext(),l}if("function"==typeof h)return s(t,h,n)}return t}function i(t){return t.then}function o(t){return l.call(t,"_promise0")}function s(t,n,i){function o(r){l&&(t===r?l._rejectCallback(e._makeSelfResolutionError(),!1,!0):l._resolveCallback(r),l=null)}function s(t){l&&(l._rejectCallback(t,p,!0),l=null)}function c(t){l&&"function"==typeof l._progress&&l._progress(t)}var l=new e(r),h=l;i&&i._pushContext(),l._captureStackTrace(),i&&i._popContext();var p=!0,f=a.tryCatch(n).call(t,o,s,c);return p=!1,l&&f===u&&(l._rejectCallback(f.e,!0,!0),l=null),h}var a=t("./util.js"),u=a.errorObj,c=a.isObject,l={}.hasOwnProperty;return n}},{"./util.js":38}],36:[function(t,e){"use strict";e.exports=function(e,r){function n(t){var e=this;return e instanceof Number&&(e=+e),clearTimeout(e),t}function i(t){var e=this;throw e instanceof Number&&(e=+e),clearTimeout(e),t}var o=t("./util.js"),s=e.TimeoutError,a=function(t,e){if(t.isPending()){"string"!=typeof e&&(e="operation timed out");var r=new s(e);o.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._cancel(r)}},u=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,n){if(void 0===n){n=t,t=void 0;var i=new e(r);return setTimeout(function(){i._fulfill()},n),i}return n=+n,e.resolve(t)._then(u,null,null,n,void 0)};e.prototype.delay=function(t){return c(this,t)},e.prototype.timeout=function(t,e){t=+t;var r=this.then().cancellable();r._cancellationParent=this;var o=setTimeout(function(){a(r,e)},t);return r._then(n,i,void 0,o,void 0)}}},{"./util.js":38}],37:[function(t,e){"use strict";e.exports=function(e,r,n,i){function o(t){for(var r=t.length,n=0;r>n;++n){var i=t[n];if(i.isRejected())return e.reject(i.error());t[n]=i._settledValue}return t}function s(t){setTimeout(function(){throw t},0)}function a(t){var e=n(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}function u(t,r){function i(){if(o>=u)return c.resolve();var l=a(t[o++]);if(l instanceof e&&l._isDisposable()){try{l=n(l._getDisposer().tryDispose(r),t.promise)}catch(h){return s(h)}if(l instanceof e)return l._then(i,s,null,null,null)}i()}var o=0,u=t.length,c=e.defer();return i(),c.promise}function c(t){var e=new v;return e._settledValue=t,e._bitField=268435456,u(this,e).thenReturn(t)}function l(t){var e=new v;return e._settledValue=t,e._bitField=134217728,u(this,e).thenThrow(t)}function h(t,e,r){this._data=t,this._promise=e,this._context=r}function p(t,e,r){this.constructor$(t,e,r)}function f(t){return h.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}var _=t("./errors.js").TypeError,d=t("./util.js").inherits,v=e.PromiseInspection;h.prototype.data=function(){return this._data},h.prototype.promise=function(){return this._promise},h.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():null},h.prototype.tryDispose=function(t){var e=this.resource(),r=this._context;void 0!==r&&r._pushContext();var n=null!==e?this.doDispose(e,t):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,n},h.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},d(p,h),p.prototype.doDispose=function(t,e){var r=this.data();return r.call(t,t,e)},e.using=function(){var t=arguments.length;if(2>t)return r("you must pass at least 2 arguments to Promise.using");var i=arguments[t-1];if("function"!=typeof i)return r("fn must be a function\n\n See http://goo.gl/916lJJ\n");t--;for(var s=new Array(t),a=0;t>a;++a){var u=arguments[a];if(h.isDisposer(u)){var p=u;u=u.promise(),u._setDisposable(p)}else{var _=n(u);_ instanceof e&&(u=_._then(f,null,null,{resources:s,index:a},void 0))}s[a]=u}var d=e.settle(s).then(o).then(function(t){d._pushContext();var e;try{e=i.apply(void 0,t)}finally{d._popContext()}return e})._then(c,l,void 0,s,void 0);return s.promise=d,d},e.prototype._setDisposable=function(t){this._bitField=262144|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(262144&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-262145&this._bitField,this._disposer=void 0
-},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,i());throw new _}}},{"./errors.js":13,"./util.js":38}],38:[function(t,e,r){"use strict";function n(){try{return T.apply(this,arguments)}catch(t){return C.e=t,C}}function i(t){return T=t,n}function o(t){return null==t||t===!0||t===!1||"string"==typeof t||"number"==typeof t}function s(t){return!o(t)}function a(t){return o(t)?new Error(v(t)):t}function u(t,e){var r,n=t.length,i=new Array(n+1);for(r=0;n>r;++r)i[r]=t[r];return i[r]=e,i}function c(t,e,r){if(!k.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var n=Object.getOwnPropertyDescriptor(t,e);return null!=n?null==n.get&&null==n.set?n.value:r:void 0}function l(t,e,r){if(o(t))return t;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return k.defineProperty(t,e,n),t}function h(t){throw t}function p(t){try{if("function"==typeof t){var e=k.names(t.prototype);if(k.isES5&&e.length>1||e.length>0&&(1!==e.length||"constructor"!==e[0])||S.test(t+""))return!0}return!1}catch(r){return!1}}function f(t){function e(){}e.prototype=t;for(var r=8;r--;)new e;return t}function _(t){return A.test(t)}function d(t,e,r){for(var n=new Array(t),i=0;t>i;++i)n[i]=e+i+r;return n}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){try{l(t,"isOperational",!0)}catch(e){}}function g(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function m(t){return t instanceof Error&&k.propertyIsWritable(t,"stack")}function j(t){return{}.toString.call(t)}function b(t,e,r){for(var n=k.names(t),i=0;i<n.length;++i){var o=n[i];r(o)&&k.defineProperty(e,o,k.getDescriptor(t,o))}}function w(t){return t===t.call||t===t.toString||t===t.bind||t===t.apply}var k=t("./es5.js"),E="undefined"==typeof navigator,F=function(){try{var t={};return k.defineProperty(t,"f",{get:function(){return 3}}),3===t.f}catch(e){return!1}}(),C={e:{}},T,x=function(t,e){function r(){this.constructor=t,this.constructor$=e;for(var r in e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}var n={}.hasOwnProperty;return r.prototype=e.prototype,t.prototype=new r,t.prototype},P=function(){return"string"!==this}.call("string"),R=function(){if(k.isES5){var t=Object.prototype,e=Object.getOwnPropertyNames;return function(r){for(var n=[],i=Object.create(null);null!=r&&r!==t;){var o;try{o=e(r)}catch(s){return n}for(var a=0;a<o.length;++a){var u=o[a];if(!i[u]){i[u]=!0;var c=Object.getOwnPropertyDescriptor(r,u);null!=c&&null==c.get&&null==c.set&&n.push(u)}}r=k.getPrototypeOf(r)}return n}}return function(t){var e=[];for(var r in t)e.push(r);return e}}(),S=/this\s*\.\s*\S+\s*=/,A=/^[a-z$_][a-z$_0-9]*$/i,O=function(){return"stack"in new Error?function(t){return m(t)?t:new Error(v(t))}:function(t){if(m(t))return t;try{throw new Error(v(t))}catch(e){return e}}}(),L={isClass:p,isIdentifier:_,inheritedDataKeys:R,getDataPropertyOrDefault:c,thrower:h,isArray:k.isArray,haveGetters:F,notEnumerableProp:l,isPrimitive:o,isObject:s,canEvaluate:E,errorObj:C,tryCatch:i,inherits:x,withAppended:u,maybeWrapAsError:a,wrapsPrimitiveReceiver:P,toFastProperties:f,filledRange:d,toString:v,canAttachTrace:m,ensureErrorObject:O,originatesFromRejection:g,markAsOriginatingFromRejection:y,classString:j,copyDescriptors:b,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:"undefined"!=typeof process&&"[object process]"===j(process).toLowerCase(),isNativeFunctionMethod:w};L.isRecentNode=L.isNode&&function(){var t=process.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}();try{throw new Error}catch(I){L.lastLineError=I}e.exports=L},{"./es5.js":14}],39:[function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function s(t){return void 0===t}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!i(t)||0>t||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,i,a,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(e=arguments[1],e instanceof Error)throw e;throw TypeError('Uncaught, unspecified "error" event.')}if(r=this._events[t],s(r))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:for(i=arguments.length,a=new Array(i-1),u=1;i>u;u++)a[u-1]=arguments[u];r.apply(this,a)}else if(o(r)){for(i=arguments.length,a=new Array(i-1),u=1;i>u;u++)a[u-1]=arguments[u];for(c=r.slice(),i=c.length,u=0;i>u;u++)c[u].apply(this,a)}return!0},r.prototype.addListener=function(t,e){var i;if(!n(e))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,n(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned){var i;i=s(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),i||(i=!0,e.apply(this,arguments))}if(!n(e))throw TypeError("listener must be a function");var i=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,i,s,a;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],s=r.length,i=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(r)){for(a=s;a-->0;)if(r[a]===e||r[a].listener&&r[a].listener===e){i=a;break}if(0>i)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],n(r))this.removeListener(t,r);else for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.listenerCount=function(t,e){var r;return r=t._events&&t._events[e]?n(t._events[e])?1:t._events[e].length:0}},{}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/any.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/any.js
deleted file mode 100644
index 05a6228ef..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/any.js
+++ /dev/null
@@ -1,21 +0,0 @@
-"use strict";
-module.exports = function(Promise) {
-var SomePromiseArray = Promise._SomePromiseArray;
-function any(promises) {
- var ret = new SomePromiseArray(promises);
- var promise = ret.promise();
- ret.setHowMany(1);
- ret.setUnwrap();
- ret.init();
- return promise;
-}
-
-Promise.any = function (promises) {
- return any(promises);
-};
-
-Promise.prototype.any = function () {
- return any(this);
-};
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/assert.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/assert.js
deleted file mode 100644
index a98955c47..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/assert.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-module.exports = (function(){
-var AssertionError = (function() {
- function AssertionError(a) {
- this.constructor$(a);
- this.message = a;
- this.name = "AssertionError";
- }
- AssertionError.prototype = new Error();
- AssertionError.prototype.constructor = AssertionError;
- AssertionError.prototype.constructor$ = Error;
- return AssertionError;
-})();
-
-function getParams(args) {
- var params = [];
- for (var i = 0; i < args.length; ++i) params.push("arg" + i);
- return params;
-}
-
-function nativeAssert(callName, args, expect) {
- try {
- var params = getParams(args);
- var constructorArgs = params;
- constructorArgs.push("return " +
- callName + "("+ params.join(",") + ");");
- var fn = Function.apply(null, constructorArgs);
- return fn.apply(null, args);
- } catch (e) {
- if (!(e instanceof SyntaxError)) {
- throw e;
- } else {
- return expect;
- }
- }
-}
-
-return function assert(boolExpr, message) {
- if (boolExpr === true) return;
-
- if (typeof boolExpr === "string" &&
- boolExpr.charAt(0) === "%") {
- var nativeCallName = boolExpr;
- var $_len = arguments.length;var args = new Array($_len - 2); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];}
- if (nativeAssert(nativeCallName, args, message) === message) return;
- message = (nativeCallName + " !== " + message);
- }
-
- var ret = new AssertionError(message);
- if (Error.captureStackTrace) {
- Error.captureStackTrace(ret, assert);
- }
- throw ret;
-};
-})();
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/async.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/async.js
deleted file mode 100644
index 917e321ff..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/async.js
+++ /dev/null
@@ -1,209 +0,0 @@
-"use strict";
-var firstLineError;
-try {throw new Error(); } catch (e) {firstLineError = e;}
-var schedule = require("./schedule.js");
-var Queue = require("./queue.js");
-var util = require("./util.js");
-
-function Async() {
- this._isTickUsed = false;
- this._lateQueue = new Queue(16);
- this._normalQueue = new Queue(16);
- this._trampolineEnabled = true;
- var self = this;
- this.drainQueues = function () {
- self._drainQueues();
- };
- this._schedule =
- schedule.isStatic ? schedule(this.drainQueues) : schedule;
-}
-
-Async.prototype.disableTrampolineIfNecessary = function() {
- if (util.hasDevTools) {
- this._trampolineEnabled = false;
- }
-};
-
-Async.prototype.enableTrampoline = function() {
- if (!this._trampolineEnabled) {
- this._trampolineEnabled = true;
- this._schedule = function(fn) {
- setTimeout(fn, 0);
- };
- }
-};
-
-Async.prototype.haveItemsQueued = function () {
- return this._normalQueue.length() > 0;
-};
-
-Async.prototype.throwLater = function(fn, arg) {
- if (arguments.length === 1) {
- arg = fn;
- fn = function () { throw arg; };
- }
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- if (typeof setTimeout !== "undefined") {
- setTimeout(function() {
- fn(arg);
- }, 0);
- } else try {
- this._schedule(function() {
- fn(arg);
- });
- } catch (e) {
- throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
- }
-};
-
-Async.prototype._getDomain = function() {};
-
-if (!false) {
-if (util.isNode) {
- var EventsModule = require("events");
-
- var domainGetter = function() {
- var domain = process.domain;
- if (domain === null) return undefined;
- return domain;
- };
-
- if (EventsModule.usingDomains) {
- Async.prototype._getDomain = domainGetter;
- } else {
- var descriptor =
- Object.getOwnPropertyDescriptor(EventsModule, "usingDomains");
-
- if (descriptor) {
- if (!descriptor.configurable) {
- process.on("domainsActivated", function() {
- Async.prototype._getDomain = domainGetter;
- });
- } else {
- var usingDomains = false;
- Object.defineProperty(EventsModule, "usingDomains", {
- configurable: false,
- enumerable: true,
- get: function() {
- return usingDomains;
- },
- set: function(value) {
- if (usingDomains || !value) return;
- usingDomains = true;
- Async.prototype._getDomain = domainGetter;
- util.toFastProperties(process);
- process.emit("domainsActivated");
- }
- });
- }
- }
- }
-}
-}
-
-function AsyncInvokeLater(fn, receiver, arg) {
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- this._lateQueue.push(fn, receiver, arg);
- this._queueTick();
-}
-
-function AsyncInvoke(fn, receiver, arg) {
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- this._normalQueue.push(fn, receiver, arg);
- this._queueTick();
-}
-
-function AsyncSettlePromises(promise) {
- var domain = this._getDomain();
- if (domain !== undefined) {
- var fn = domain.bind(promise._settlePromises);
- this._normalQueue.push(fn, promise, undefined);
- } else {
- this._normalQueue._pushOne(promise);
- }
- this._queueTick();
-}
-
-if (!util.hasDevTools) {
- Async.prototype.invokeLater = AsyncInvokeLater;
- Async.prototype.invoke = AsyncInvoke;
- Async.prototype.settlePromises = AsyncSettlePromises;
-} else {
- if (schedule.isStatic) {
- schedule = function(fn) { setTimeout(fn, 0); };
- }
- Async.prototype.invokeLater = function (fn, receiver, arg) {
- if (this._trampolineEnabled) {
- AsyncInvokeLater.call(this, fn, receiver, arg);
- } else {
- this._schedule(function() {
- setTimeout(function() {
- fn.call(receiver, arg);
- }, 100);
- });
- }
- };
-
- Async.prototype.invoke = function (fn, receiver, arg) {
- if (this._trampolineEnabled) {
- AsyncInvoke.call(this, fn, receiver, arg);
- } else {
- this._schedule(function() {
- fn.call(receiver, arg);
- });
- }
- };
-
- Async.prototype.settlePromises = function(promise) {
- if (this._trampolineEnabled) {
- AsyncSettlePromises.call(this, promise);
- } else {
- this._schedule(function() {
- promise._settlePromises();
- });
- }
- };
-}
-
-Async.prototype.invokeFirst = function (fn, receiver, arg) {
- var domain = this._getDomain();
- if (domain !== undefined) fn = domain.bind(fn);
- this._normalQueue.unshift(fn, receiver, arg);
- this._queueTick();
-};
-
-Async.prototype._drainQueue = function(queue) {
- while (queue.length() > 0) {
- var fn = queue.shift();
- if (typeof fn !== "function") {
- fn._settlePromises();
- continue;
- }
- var receiver = queue.shift();
- var arg = queue.shift();
- fn.call(receiver, arg);
- }
-};
-
-Async.prototype._drainQueues = function () {
- this._drainQueue(this._normalQueue);
- this._reset();
- this._drainQueue(this._lateQueue);
-};
-
-Async.prototype._queueTick = function () {
- if (!this._isTickUsed) {
- this._isTickUsed = true;
- this._schedule(this.drainQueues);
- }
-};
-
-Async.prototype._reset = function () {
- this._isTickUsed = false;
-};
-
-module.exports = new Async();
-module.exports.firstLineError = firstLineError;
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bind.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bind.js
deleted file mode 100644
index d6f6da257..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bind.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL, tryConvertToPromise) {
-var rejectThis = function(_, e) {
- this._reject(e);
-};
-
-var targetRejected = function(e, context) {
- context.promiseRejectionQueued = true;
- context.bindingPromise._then(rejectThis, rejectThis, null, this, e);
-};
-
-var bindingResolved = function(thisArg, context) {
- this._setBoundTo(thisArg);
- if (this._isPending()) {
- this._resolveCallback(context.target);
- }
-};
-
-var bindingRejected = function(e, context) {
- if (!context.promiseRejectionQueued) this._reject(e);
-};
-
-Promise.prototype.bind = function (thisArg) {
- var maybePromise = tryConvertToPromise(thisArg);
- var ret = new Promise(INTERNAL);
- ret._propagateFrom(this, 1);
- var target = this._target();
- if (maybePromise instanceof Promise) {
- var context = {
- promiseRejectionQueued: false,
- promise: ret,
- target: target,
- bindingPromise: maybePromise
- };
- target._then(INTERNAL, targetRejected, ret._progress, ret, context);
- maybePromise._then(
- bindingResolved, bindingRejected, ret._progress, ret, context);
- } else {
- ret._setBoundTo(thisArg);
- ret._resolveCallback(target);
- }
- return ret;
-};
-
-Promise.prototype._setBoundTo = function (obj) {
- if (obj !== undefined) {
- this._bitField = this._bitField | 131072;
- this._boundTo = obj;
- } else {
- this._bitField = this._bitField & (~131072);
- }
-};
-
-Promise.prototype._isBound = function () {
- return (this._bitField & 131072) === 131072;
-};
-
-Promise.bind = function (thisArg, value) {
- var maybePromise = tryConvertToPromise(thisArg);
- var ret = new Promise(INTERNAL);
-
- if (maybePromise instanceof Promise) {
- maybePromise._then(function(thisArg) {
- ret._setBoundTo(thisArg);
- ret._resolveCallback(value);
- }, ret._reject, ret._progress, ret, null);
- } else {
- ret._setBoundTo(thisArg);
- ret._resolveCallback(value);
- }
- return ret;
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bluebird.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bluebird.js
deleted file mode 100644
index ed6226e7e..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/bluebird.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"use strict";
-var old;
-if (typeof Promise !== "undefined") old = Promise;
-function noConflict() {
- try { if (Promise === bluebird) Promise = old; }
- catch (e) {}
- return bluebird;
-}
-var bluebird = require("./promise.js")();
-bluebird.noConflict = noConflict;
-module.exports = bluebird;
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/call_get.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/call_get.js
deleted file mode 100644
index 62c166d5c..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/call_get.js
+++ /dev/null
@@ -1,123 +0,0 @@
-"use strict";
-var cr = Object.create;
-if (cr) {
- var callerCache = cr(null);
- var getterCache = cr(null);
- callerCache[" size"] = getterCache[" size"] = 0;
-}
-
-module.exports = function(Promise) {
-var util = require("./util.js");
-var canEvaluate = util.canEvaluate;
-var isIdentifier = util.isIdentifier;
-
-var getMethodCaller;
-var getGetter;
-if (!false) {
-var makeMethodCaller = function (methodName) {
- return new Function("ensureMethod", " \n\
- return function(obj) { \n\
- 'use strict' \n\
- var len = this.length; \n\
- ensureMethod(obj, 'methodName'); \n\
- switch(len) { \n\
- case 1: return obj.methodName(this[0]); \n\
- case 2: return obj.methodName(this[0], this[1]); \n\
- case 3: return obj.methodName(this[0], this[1], this[2]); \n\
- case 0: return obj.methodName(); \n\
- default: \n\
- return obj.methodName.apply(obj, this); \n\
- } \n\
- }; \n\
- ".replace(/methodName/g, methodName))(ensureMethod);
-};
-
-var makeGetter = function (propertyName) {
- return new Function("obj", " \n\
- 'use strict'; \n\
- return obj.propertyName; \n\
- ".replace("propertyName", propertyName));
-};
-
-var getCompiled = function(name, compiler, cache) {
- var ret = cache[name];
- if (typeof ret !== "function") {
- if (!isIdentifier(name)) {
- return null;
- }
- ret = compiler(name);
- cache[name] = ret;
- cache[" size"]++;
- if (cache[" size"] > 512) {
- var keys = Object.keys(cache);
- for (var i = 0; i < 256; ++i) delete cache[keys[i]];
- cache[" size"] = keys.length - 256;
- }
- }
- return ret;
-};
-
-getMethodCaller = function(name) {
- return getCompiled(name, makeMethodCaller, callerCache);
-};
-
-getGetter = function(name) {
- return getCompiled(name, makeGetter, getterCache);
-};
-}
-
-function ensureMethod(obj, methodName) {
- var fn;
- if (obj != null) fn = obj[methodName];
- if (typeof fn !== "function") {
- var message = "Object " + util.classString(obj) + " has no method '" +
- util.toString(methodName) + "'";
- throw new Promise.TypeError(message);
- }
- return fn;
-}
-
-function caller(obj) {
- var methodName = this.pop();
- var fn = ensureMethod(obj, methodName);
- return fn.apply(obj, this);
-}
-Promise.prototype.call = function (methodName) {
- var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}
- if (!false) {
- if (canEvaluate) {
- var maybeCaller = getMethodCaller(methodName);
- if (maybeCaller !== null) {
- return this._then(
- maybeCaller, undefined, undefined, args, undefined);
- }
- }
- }
- args.push(methodName);
- return this._then(caller, undefined, undefined, args, undefined);
-};
-
-function namedGetter(obj) {
- return obj[this];
-}
-function indexedGetter(obj) {
- var index = +this;
- if (index < 0) index = Math.max(0, index + obj.length);
- return obj[index];
-}
-Promise.prototype.get = function (propertyName) {
- var isIndex = (typeof propertyName === "number");
- var getter;
- if (!isIndex) {
- if (canEvaluate) {
- var maybeGetter = getGetter(propertyName);
- getter = maybeGetter !== null ? maybeGetter : namedGetter;
- } else {
- getter = namedGetter;
- }
- } else {
- getter = indexedGetter;
- }
- return this._then(getter, undefined, undefined, propertyName, undefined);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/cancel.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/cancel.js
deleted file mode 100644
index 9eb40b6fb..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/cancel.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-module.exports = function(Promise) {
-var errors = require("./errors.js");
-var async = require("./async.js");
-var CancellationError = errors.CancellationError;
-
-Promise.prototype._cancel = function (reason) {
- if (!this.isCancellable()) return this;
- var parent;
- var promiseToReject = this;
- while ((parent = promiseToReject._cancellationParent) !== undefined &&
- parent.isCancellable()) {
- promiseToReject = parent;
- }
- this._unsetCancellable();
- promiseToReject._target()._rejectCallback(reason, false, true);
-};
-
-Promise.prototype.cancel = function (reason) {
- if (!this.isCancellable()) return this;
- if (reason === undefined) reason = new CancellationError();
- async.invokeLater(this._cancel, this, reason);
- return this;
-};
-
-Promise.prototype.cancellable = function () {
- if (this._cancellable()) return this;
- async.enableTrampoline();
- this._setCancellable();
- this._cancellationParent = undefined;
- return this;
-};
-
-Promise.prototype.uncancellable = function () {
- var ret = this.then();
- ret._unsetCancellable();
- return ret;
-};
-
-Promise.prototype.fork = function (didFulfill, didReject, didProgress) {
- var ret = this._then(didFulfill, didReject, didProgress,
- undefined, undefined);
-
- ret._setCancellable();
- ret._cancellationParent = undefined;
- return ret;
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/captured_trace.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/captured_trace.js
deleted file mode 100644
index 6fda9e80c..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/captured_trace.js
+++ /dev/null
@@ -1,492 +0,0 @@
-"use strict";
-module.exports = function() {
-var async = require("./async.js");
-var util = require("./util.js");
-var bluebirdFramePattern =
- /[\\\/]bluebird[\\\/]js[\\\/](main|debug|zalgo|instrumented)/;
-var stackFramePattern = null;
-var formatStack = null;
-var indentStackFrames = false;
-var warn;
-
-function CapturedTrace(parent) {
- this._parent = parent;
- var length = this._length = 1 + (parent === undefined ? 0 : parent._length);
- captureStackTrace(this, CapturedTrace);
- if (length > 32) this.uncycle();
-}
-util.inherits(CapturedTrace, Error);
-
-CapturedTrace.prototype.uncycle = function() {
- var length = this._length;
- if (length < 2) return;
- var nodes = [];
- var stackToIndex = {};
-
- for (var i = 0, node = this; node !== undefined; ++i) {
- nodes.push(node);
- node = node._parent;
- }
- length = this._length = i;
- for (var i = length - 1; i >= 0; --i) {
- var stack = nodes[i].stack;
- if (stackToIndex[stack] === undefined) {
- stackToIndex[stack] = i;
- }
- }
- for (var i = 0; i < length; ++i) {
- var currentStack = nodes[i].stack;
- var index = stackToIndex[currentStack];
- if (index !== undefined && index !== i) {
- if (index > 0) {
- nodes[index - 1]._parent = undefined;
- nodes[index - 1]._length = 1;
- }
- nodes[i]._parent = undefined;
- nodes[i]._length = 1;
- var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;
-
- if (index < length - 1) {
- cycleEdgeNode._parent = nodes[index + 1];
- cycleEdgeNode._parent.uncycle();
- cycleEdgeNode._length =
- cycleEdgeNode._parent._length + 1;
- } else {
- cycleEdgeNode._parent = undefined;
- cycleEdgeNode._length = 1;
- }
- var currentChildLength = cycleEdgeNode._length + 1;
- for (var j = i - 2; j >= 0; --j) {
- nodes[j]._length = currentChildLength;
- currentChildLength++;
- }
- return;
- }
- }
-};
-
-CapturedTrace.prototype.parent = function() {
- return this._parent;
-};
-
-CapturedTrace.prototype.hasParent = function() {
- return this._parent !== undefined;
-};
-
-CapturedTrace.prototype.attachExtraTrace = function(error) {
- if (error.__stackCleaned__) return;
- this.uncycle();
- var parsed = CapturedTrace.parseStackAndMessage(error);
- var message = parsed.message;
- var stacks = [parsed.stack];
-
- var trace = this;
- while (trace !== undefined) {
- stacks.push(cleanStack(trace.stack.split("\n")));
- trace = trace._parent;
- }
- removeCommonRoots(stacks);
- removeDuplicateOrEmptyJumps(stacks);
- util.notEnumerableProp(error, "stack", reconstructStack(message, stacks));
- util.notEnumerableProp(error, "__stackCleaned__", true);
-};
-
-function reconstructStack(message, stacks) {
- for (var i = 0; i < stacks.length - 1; ++i) {
- stacks[i].push("From previous event:");
- stacks[i] = stacks[i].join("\n");
- }
- if (i < stacks.length) {
- stacks[i] = stacks[i].join("\n");
- }
- return message + "\n" + stacks.join("\n");
-}
-
-function removeDuplicateOrEmptyJumps(stacks) {
- for (var i = 0; i < stacks.length; ++i) {
- if (stacks[i].length === 0 ||
- ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {
- stacks.splice(i, 1);
- i--;
- }
- }
-}
-
-function removeCommonRoots(stacks) {
- var current = stacks[0];
- for (var i = 1; i < stacks.length; ++i) {
- var prev = stacks[i];
- var currentLastIndex = current.length - 1;
- var currentLastLine = current[currentLastIndex];
- var commonRootMeetPoint = -1;
-
- for (var j = prev.length - 1; j >= 0; --j) {
- if (prev[j] === currentLastLine) {
- commonRootMeetPoint = j;
- break;
- }
- }
-
- for (var j = commonRootMeetPoint; j >= 0; --j) {
- var line = prev[j];
- if (current[currentLastIndex] === line) {
- current.pop();
- currentLastIndex--;
- } else {
- break;
- }
- }
- current = prev;
- }
-}
-
-function cleanStack(stack) {
- var ret = [];
- for (var i = 0; i < stack.length; ++i) {
- var line = stack[i];
- var isTraceLine = stackFramePattern.test(line) ||
- " (No stack trace)" === line;
- var isInternalFrame = isTraceLine && shouldIgnore(line);
- if (isTraceLine && !isInternalFrame) {
- if (indentStackFrames && line.charAt(0) !== " ") {
- line = " " + line;
- }
- ret.push(line);
- }
- }
- return ret;
-}
-
-function stackFramesAsArray(error) {
- var stack = error.stack.replace(/\s+$/g, "").split("\n");
- for (var i = 0; i < stack.length; ++i) {
- var line = stack[i];
- if (" (No stack trace)" === line || stackFramePattern.test(line)) {
- break;
- }
- }
- if (i > 0) {
- stack = stack.slice(i);
- }
- return stack;
-}
-
-CapturedTrace.parseStackAndMessage = function(error) {
- var stack = error.stack;
- var message = error.toString();
- stack = typeof stack === "string" && stack.length > 0
- ? stackFramesAsArray(error) : [" (No stack trace)"];
- return {
- message: message,
- stack: cleanStack(stack)
- };
-};
-
-CapturedTrace.formatAndLogError = function(error, title) {
- if (typeof console !== "undefined") {
- var message;
- if (typeof error === "object" || typeof error === "function") {
- var stack = error.stack;
- message = title + formatStack(stack, error);
- } else {
- message = title + String(error);
- }
- if (typeof warn === "function") {
- warn(message);
- } else if (typeof console.log === "function" ||
- typeof console.log === "object") {
- console.log(message);
- }
- }
-};
-
-CapturedTrace.unhandledRejection = function (reason) {
- CapturedTrace.formatAndLogError(reason, "^--- With additional stack trace: ");
-};
-
-CapturedTrace.isSupported = function () {
- return typeof captureStackTrace === "function";
-};
-
-CapturedTrace.fireRejectionEvent =
-function(name, localHandler, reason, promise) {
- var localEventFired = false;
- try {
- if (typeof localHandler === "function") {
- localEventFired = true;
- if (name === "rejectionHandled") {
- localHandler(promise);
- } else {
- localHandler(reason, promise);
- }
- }
- } catch (e) {
- async.throwLater(e);
- }
-
- var globalEventFired = false;
- try {
- globalEventFired = fireGlobalEvent(name, reason, promise);
- } catch (e) {
- globalEventFired = true;
- async.throwLater(e);
- }
-
- var domEventFired = false;
- if (fireDomEvent) {
- try {
- domEventFired = fireDomEvent(name.toLowerCase(), {
- reason: reason,
- promise: promise
- });
- } catch (e) {
- domEventFired = true;
- async.throwLater(e);
- }
- }
-
- if (!globalEventFired && !localEventFired && !domEventFired &&
- name === "unhandledRejection") {
- CapturedTrace.formatAndLogError(reason, "Unhandled rejection ");
- }
-};
-
-function formatNonError(obj) {
- var str;
- if (typeof obj === "function") {
- str = "[function " +
- (obj.name || "anonymous") +
- "]";
- } else {
- str = obj.toString();
- var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/;
- if (ruselessToString.test(str)) {
- try {
- var newStr = JSON.stringify(obj);
- str = newStr;
- }
- catch(e) {
-
- }
- }
- if (str.length === 0) {
- str = "(empty array)";
- }
- }
- return ("(<" + snip(str) + ">, no stack trace)");
-}
-
-function snip(str) {
- var maxChars = 41;
- if (str.length < maxChars) {
- return str;
- }
- return str.substr(0, maxChars - 3) + "...";
-}
-
-var shouldIgnore = function() { return false; };
-var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;
-function parseLineInfo(line) {
- var matches = line.match(parseLineInfoRegex);
- if (matches) {
- return {
- fileName: matches[1],
- line: parseInt(matches[2], 10)
- };
- }
-}
-CapturedTrace.setBounds = function(firstLineError, lastLineError) {
- if (!CapturedTrace.isSupported()) return;
- var firstStackLines = firstLineError.stack.split("\n");
- var lastStackLines = lastLineError.stack.split("\n");
- var firstIndex = -1;
- var lastIndex = -1;
- var firstFileName;
- var lastFileName;
- for (var i = 0; i < firstStackLines.length; ++i) {
- var result = parseLineInfo(firstStackLines[i]);
- if (result) {
- firstFileName = result.fileName;
- firstIndex = result.line;
- break;
- }
- }
- for (var i = 0; i < lastStackLines.length; ++i) {
- var result = parseLineInfo(lastStackLines[i]);
- if (result) {
- lastFileName = result.fileName;
- lastIndex = result.line;
- break;
- }
- }
- if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||
- firstFileName !== lastFileName || firstIndex >= lastIndex) {
- return;
- }
-
- shouldIgnore = function(line) {
- if (bluebirdFramePattern.test(line)) return true;
- var info = parseLineInfo(line);
- if (info) {
- if (info.fileName === firstFileName &&
- (firstIndex <= info.line && info.line <= lastIndex)) {
- return true;
- }
- }
- return false;
- };
-};
-
-var captureStackTrace = (function stackDetection() {
- var v8stackFramePattern = /^\s*at\s*/;
- var v8stackFormatter = function(stack, error) {
- if (typeof stack === "string") return stack;
-
- if (error.name !== undefined &&
- error.message !== undefined) {
- return error.toString();
- }
- return formatNonError(error);
- };
-
- if (typeof Error.stackTraceLimit === "number" &&
- typeof Error.captureStackTrace === "function") {
- Error.stackTraceLimit = Error.stackTraceLimit + 6;
- stackFramePattern = v8stackFramePattern;
- formatStack = v8stackFormatter;
- var captureStackTrace = Error.captureStackTrace;
-
- shouldIgnore = function(line) {
- return bluebirdFramePattern.test(line);
- };
- return function(receiver, ignoreUntil) {
- Error.stackTraceLimit = Error.stackTraceLimit + 6;
- captureStackTrace(receiver, ignoreUntil);
- Error.stackTraceLimit = Error.stackTraceLimit - 6;
- };
- }
- var err = new Error();
-
- if (typeof err.stack === "string" &&
- err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) {
- stackFramePattern = /@/;
- formatStack = v8stackFormatter;
- indentStackFrames = true;
- return function captureStackTrace(o) {
- o.stack = new Error().stack;
- };
- }
-
- var hasStackAfterThrow;
- try { throw new Error(); }
- catch(e) {
- hasStackAfterThrow = ("stack" in e);
- }
- if (!("stack" in err) && hasStackAfterThrow) {
- stackFramePattern = v8stackFramePattern;
- formatStack = v8stackFormatter;
- return function captureStackTrace(o) {
- Error.stackTraceLimit = Error.stackTraceLimit + 6;
- try { throw new Error(); }
- catch(e) { o.stack = e.stack; }
- Error.stackTraceLimit = Error.stackTraceLimit - 6;
- };
- }
-
- formatStack = function(stack, error) {
- if (typeof stack === "string") return stack;
-
- if ((typeof error === "object" ||
- typeof error === "function") &&
- error.name !== undefined &&
- error.message !== undefined) {
- return error.toString();
- }
- return formatNonError(error);
- };
-
- return null;
-
-})([]);
-
-var fireDomEvent;
-var fireGlobalEvent = (function() {
- if (util.isNode) {
- return function(name, reason, promise) {
- if (name === "rejectionHandled") {
- return process.emit(name, promise);
- } else {
- return process.emit(name, reason, promise);
- }
- };
- } else {
- var customEventWorks = false;
- var anyEventWorks = true;
- try {
- var ev = new self.CustomEvent("test");
- customEventWorks = ev instanceof CustomEvent;
- } catch (e) {}
- if (!customEventWorks) {
- try {
- var event = document.createEvent("CustomEvent");
- event.initCustomEvent("testingtheevent", false, true, {});
- self.dispatchEvent(event);
- } catch (e) {
- anyEventWorks = false;
- }
- }
- if (anyEventWorks) {
- fireDomEvent = function(type, detail) {
- var event;
- if (customEventWorks) {
- event = new self.CustomEvent(type, {
- detail: detail,
- bubbles: false,
- cancelable: true
- });
- } else if (self.dispatchEvent) {
- event = document.createEvent("CustomEvent");
- event.initCustomEvent(type, false, true, detail);
- }
-
- return event ? !self.dispatchEvent(event) : false;
- };
- }
-
- var toWindowMethodNameMap = {};
- toWindowMethodNameMap["unhandledRejection"] = ("on" +
- "unhandledRejection").toLowerCase();
- toWindowMethodNameMap["rejectionHandled"] = ("on" +
- "rejectionHandled").toLowerCase();
-
- return function(name, reason, promise) {
- var methodName = toWindowMethodNameMap[name];
- var method = self[methodName];
- if (!method) return false;
- if (name === "rejectionHandled") {
- method.call(self, promise);
- } else {
- method.call(self, reason, promise);
- }
- return true;
- };
- }
-})();
-
-if (typeof console !== "undefined" && typeof console.warn !== "undefined") {
- warn = function (message) {
- console.warn(message);
- };
- if (util.isNode && process.stderr.isTTY) {
- warn = function(message) {
- process.stderr.write("\u001b[31m" + message + "\u001b[39m\n");
- };
- } else if (!util.isNode && typeof (new Error().stack) === "string") {
- warn = function(message) {
- console.warn("%c" + message, "color: red");
- };
- }
-}
-
-return CapturedTrace;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/catch_filter.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/catch_filter.js
deleted file mode 100644
index 040f05720..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/catch_filter.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-module.exports = function(NEXT_FILTER) {
-var util = require("./util.js");
-var errors = require("./errors.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-var keys = require("./es5.js").keys;
-var TypeError = errors.TypeError;
-
-function CatchFilter(instances, callback, promise) {
- this._instances = instances;
- this._callback = callback;
- this._promise = promise;
-}
-
-function safePredicate(predicate, e) {
- var safeObject = {};
- var retfilter = tryCatch(predicate).call(safeObject, e);
-
- if (retfilter === errorObj) return retfilter;
-
- var safeKeys = keys(safeObject);
- if (safeKeys.length) {
- errorObj.e = new TypeError("Catch filter must inherit from Error or be a simple predicate function\u000a\u000a See http://goo.gl/o84o68\u000a");
- return errorObj;
- }
- return retfilter;
-}
-
-CatchFilter.prototype.doFilter = function (e) {
- var cb = this._callback;
- var promise = this._promise;
- var boundTo = promise._boundTo;
- for (var i = 0, len = this._instances.length; i < len; ++i) {
- var item = this._instances[i];
- var itemIsErrorType = item === Error ||
- (item != null && item.prototype instanceof Error);
-
- if (itemIsErrorType && e instanceof item) {
- var ret = tryCatch(cb).call(boundTo, e);
- if (ret === errorObj) {
- NEXT_FILTER.e = ret.e;
- return NEXT_FILTER;
- }
- return ret;
- } else if (typeof item === "function" && !itemIsErrorType) {
- var shouldHandle = safePredicate(item, e);
- if (shouldHandle === errorObj) {
- e = errorObj.e;
- break;
- } else if (shouldHandle) {
- var ret = tryCatch(cb).call(boundTo, e);
- if (ret === errorObj) {
- NEXT_FILTER.e = ret.e;
- return NEXT_FILTER;
- }
- return ret;
- }
- }
- }
- NEXT_FILTER.e = e;
- return NEXT_FILTER;
-};
-
-return CatchFilter;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/context.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/context.js
deleted file mode 100644
index ccd7702b7..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/context.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-module.exports = function(Promise, CapturedTrace, isDebugging) {
-var contextStack = [];
-function Context() {
- this._trace = new CapturedTrace(peekContext());
-}
-Context.prototype._pushContext = function () {
- if (!isDebugging()) return;
- if (this._trace !== undefined) {
- contextStack.push(this._trace);
- }
-};
-
-Context.prototype._popContext = function () {
- if (!isDebugging()) return;
- if (this._trace !== undefined) {
- contextStack.pop();
- }
-};
-
-function createContext() {
- if (isDebugging()) return new Context();
-}
-
-function peekContext() {
- var lastIndex = contextStack.length - 1;
- if (lastIndex >= 0) {
- return contextStack[lastIndex];
- }
- return undefined;
-}
-
-Promise.prototype._peekContext = peekContext;
-Promise.prototype._pushContext = Context.prototype._pushContext;
-Promise.prototype._popContext = Context.prototype._popContext;
-
-return createContext;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/debuggability.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/debuggability.js
deleted file mode 100644
index 347476d86..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/debuggability.js
+++ /dev/null
@@ -1,153 +0,0 @@
-"use strict";
-module.exports = function(Promise, CapturedTrace) {
-var async = require("./async.js");
-var Warning = require("./errors.js").Warning;
-var util = require("./util.js");
-var canAttachTrace = util.canAttachTrace;
-var unhandledRejectionHandled;
-var possiblyUnhandledRejection;
-var debugging = false || (util.isNode &&
- (!!process.env["BLUEBIRD_DEBUG"] ||
- process.env["NODE_ENV"] === "development"));
-
-if (debugging) {
- async.disableTrampolineIfNecessary();
-}
-
-Promise.prototype._ignoreRejections = function() {
- this._unsetRejectionIsUnhandled();
- this._bitField = this._bitField | 16777216;
-};
-
-Promise.prototype._ensurePossibleRejectionHandled = function () {
- if ((this._bitField & 16777216) !== 0) return;
- this._setRejectionIsUnhandled();
- async.invokeLater(this._notifyUnhandledRejection, this, undefined);
-};
-
-Promise.prototype._notifyUnhandledRejectionIsHandled = function () {
- CapturedTrace.fireRejectionEvent("rejectionHandled",
- unhandledRejectionHandled, undefined, this);
-};
-
-Promise.prototype._notifyUnhandledRejection = function () {
- if (this._isRejectionUnhandled()) {
- var reason = this._getCarriedStackTrace() || this._settledValue;
- this._setUnhandledRejectionIsNotified();
- CapturedTrace.fireRejectionEvent("unhandledRejection",
- possiblyUnhandledRejection, reason, this);
- }
-};
-
-Promise.prototype._setUnhandledRejectionIsNotified = function () {
- this._bitField = this._bitField | 524288;
-};
-
-Promise.prototype._unsetUnhandledRejectionIsNotified = function () {
- this._bitField = this._bitField & (~524288);
-};
-
-Promise.prototype._isUnhandledRejectionNotified = function () {
- return (this._bitField & 524288) > 0;
-};
-
-Promise.prototype._setRejectionIsUnhandled = function () {
- this._bitField = this._bitField | 2097152;
-};
-
-Promise.prototype._unsetRejectionIsUnhandled = function () {
- this._bitField = this._bitField & (~2097152);
- if (this._isUnhandledRejectionNotified()) {
- this._unsetUnhandledRejectionIsNotified();
- this._notifyUnhandledRejectionIsHandled();
- }
-};
-
-Promise.prototype._isRejectionUnhandled = function () {
- return (this._bitField & 2097152) > 0;
-};
-
-Promise.prototype._setCarriedStackTrace = function (capturedTrace) {
- this._bitField = this._bitField | 1048576;
- this._fulfillmentHandler0 = capturedTrace;
-};
-
-Promise.prototype._isCarryingStackTrace = function () {
- return (this._bitField & 1048576) > 0;
-};
-
-Promise.prototype._getCarriedStackTrace = function () {
- return this._isCarryingStackTrace()
- ? this._fulfillmentHandler0
- : undefined;
-};
-
-Promise.prototype._captureStackTrace = function () {
- if (debugging) {
- this._trace = new CapturedTrace(this._peekContext());
- }
- return this;
-};
-
-Promise.prototype._attachExtraTrace = function (error, ignoreSelf) {
- if (debugging && canAttachTrace(error)) {
- var trace = this._trace;
- if (trace !== undefined) {
- if (ignoreSelf) trace = trace._parent;
- }
- if (trace !== undefined) {
- trace.attachExtraTrace(error);
- } else if (!error.__stackCleaned__) {
- var parsed = CapturedTrace.parseStackAndMessage(error);
- util.notEnumerableProp(error, "stack",
- parsed.message + "\n" + parsed.stack.join("\n"));
- util.notEnumerableProp(error, "__stackCleaned__", true);
- }
- }
-};
-
-Promise.prototype._warn = function(message) {
- var warning = new Warning(message);
- var ctx = this._peekContext();
- if (ctx) {
- ctx.attachExtraTrace(warning);
- } else {
- var parsed = CapturedTrace.parseStackAndMessage(warning);
- warning.stack = parsed.message + "\n" + parsed.stack.join("\n");
- }
- CapturedTrace.formatAndLogError(warning, "");
-};
-
-Promise.onPossiblyUnhandledRejection = function (fn) {
- possiblyUnhandledRejection = typeof fn === "function" ? fn : undefined;
-};
-
-Promise.onUnhandledRejectionHandled = function (fn) {
- unhandledRejectionHandled = typeof fn === "function" ? fn : undefined;
-};
-
-Promise.longStackTraces = function () {
- if (async.haveItemsQueued() &&
- debugging === false
- ) {
- throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/DT1qyG\u000a");
- }
- debugging = CapturedTrace.isSupported();
- if (debugging) {
- async.disableTrampolineIfNecessary();
- }
-};
-
-Promise.hasLongStackTraces = function () {
- return debugging && CapturedTrace.isSupported();
-};
-
-if (!CapturedTrace.isSupported()) {
- Promise.longStackTraces = function(){};
- debugging = false;
-}
-
-return function() {
- return debugging;
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/direct_resolve.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/direct_resolve.js
deleted file mode 100644
index 47a9ce9dc..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/direct_resolve.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-var util = require("./util.js");
-var isPrimitive = util.isPrimitive;
-var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver;
-
-module.exports = function(Promise) {
-var returner = function () {
- return this;
-};
-var thrower = function () {
- throw this;
-};
-var returnUndefined = function() {};
-var throwUndefined = function() {
- throw undefined;
-};
-
-var wrapper = function (value, action) {
- if (action === 1) {
- return function () {
- throw value;
- };
- } else if (action === 2) {
- return function () {
- return value;
- };
- }
-};
-
-
-Promise.prototype["return"] =
-Promise.prototype.thenReturn = function (value) {
- if (value === undefined) return this.then(returnUndefined);
-
- if (wrapsPrimitiveReceiver && isPrimitive(value)) {
- return this._then(
- wrapper(value, 2),
- undefined,
- undefined,
- undefined,
- undefined
- );
- }
- return this._then(returner, undefined, undefined, value, undefined);
-};
-
-Promise.prototype["throw"] =
-Promise.prototype.thenThrow = function (reason) {
- if (reason === undefined) return this.then(throwUndefined);
-
- if (wrapsPrimitiveReceiver && isPrimitive(reason)) {
- return this._then(
- wrapper(reason, 1),
- undefined,
- undefined,
- undefined,
- undefined
- );
- }
- return this._then(thrower, undefined, undefined, reason, undefined);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/each.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/each.js
deleted file mode 100644
index a37e22c05..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/each.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var PromiseReduce = Promise.reduce;
-
-Promise.prototype.each = function (fn) {
- return PromiseReduce(this, fn, null, INTERNAL);
-};
-
-Promise.each = function (promises, fn) {
- return PromiseReduce(promises, fn, null, INTERNAL);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/errors.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/errors.js
deleted file mode 100644
index c334bb1c8..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/errors.js
+++ /dev/null
@@ -1,111 +0,0 @@
-"use strict";
-var es5 = require("./es5.js");
-var Objectfreeze = es5.freeze;
-var util = require("./util.js");
-var inherits = util.inherits;
-var notEnumerableProp = util.notEnumerableProp;
-
-function subError(nameProperty, defaultMessage) {
- function SubError(message) {
- if (!(this instanceof SubError)) return new SubError(message);
- notEnumerableProp(this, "message",
- typeof message === "string" ? message : defaultMessage);
- notEnumerableProp(this, "name", nameProperty);
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- } else {
- Error.call(this);
- }
- }
- inherits(SubError, Error);
- return SubError;
-}
-
-var _TypeError, _RangeError;
-var Warning = subError("Warning", "warning");
-var CancellationError = subError("CancellationError", "cancellation error");
-var TimeoutError = subError("TimeoutError", "timeout error");
-var AggregateError = subError("AggregateError", "aggregate error");
-try {
- _TypeError = TypeError;
- _RangeError = RangeError;
-} catch(e) {
- _TypeError = subError("TypeError", "type error");
- _RangeError = subError("RangeError", "range error");
-}
-
-var methods = ("join pop push shift unshift slice filter forEach some " +
- "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" ");
-
-for (var i = 0; i < methods.length; ++i) {
- if (typeof Array.prototype[methods[i]] === "function") {
- AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];
- }
-}
-
-es5.defineProperty(AggregateError.prototype, "length", {
- value: 0,
- configurable: false,
- writable: true,
- enumerable: true
-});
-AggregateError.prototype["isOperational"] = true;
-var level = 0;
-AggregateError.prototype.toString = function() {
- var indent = Array(level * 4 + 1).join(" ");
- var ret = "\n" + indent + "AggregateError of:" + "\n";
- level++;
- indent = Array(level * 4 + 1).join(" ");
- for (var i = 0; i < this.length; ++i) {
- var str = this[i] === this ? "[Circular AggregateError]" : this[i] + "";
- var lines = str.split("\n");
- for (var j = 0; j < lines.length; ++j) {
- lines[j] = indent + lines[j];
- }
- str = lines.join("\n");
- ret += str + "\n";
- }
- level--;
- return ret;
-};
-
-function OperationalError(message) {
- if (!(this instanceof OperationalError))
- return new OperationalError(message);
- notEnumerableProp(this, "name", "OperationalError");
- notEnumerableProp(this, "message", message);
- this.cause = message;
- this["isOperational"] = true;
-
- if (message instanceof Error) {
- notEnumerableProp(this, "message", message.message);
- notEnumerableProp(this, "stack", message.stack);
- } else if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
-
-}
-inherits(OperationalError, Error);
-
-var errorTypes = Error["__BluebirdErrorTypes__"];
-if (!errorTypes) {
- errorTypes = Objectfreeze({
- CancellationError: CancellationError,
- TimeoutError: TimeoutError,
- OperationalError: OperationalError,
- RejectionError: OperationalError,
- AggregateError: AggregateError
- });
- notEnumerableProp(Error, "__BluebirdErrorTypes__", errorTypes);
-}
-
-module.exports = {
- Error: Error,
- TypeError: _TypeError,
- RangeError: _RangeError,
- CancellationError: errorTypes.CancellationError,
- OperationalError: errorTypes.OperationalError,
- TimeoutError: errorTypes.TimeoutError,
- AggregateError: errorTypes.AggregateError,
- Warning: Warning
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/es5.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/es5.js
deleted file mode 100644
index ea41d5a56..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/es5.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var isES5 = (function(){
- "use strict";
- return this === undefined;
-})();
-
-if (isES5) {
- module.exports = {
- freeze: Object.freeze,
- defineProperty: Object.defineProperty,
- getDescriptor: Object.getOwnPropertyDescriptor,
- keys: Object.keys,
- names: Object.getOwnPropertyNames,
- getPrototypeOf: Object.getPrototypeOf,
- isArray: Array.isArray,
- isES5: isES5,
- propertyIsWritable: function(obj, prop) {
- var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
- return !!(!descriptor || descriptor.writable || descriptor.set);
- }
- };
-} else {
- var has = {}.hasOwnProperty;
- var str = {}.toString;
- var proto = {}.constructor.prototype;
-
- var ObjectKeys = function (o) {
- var ret = [];
- for (var key in o) {
- if (has.call(o, key)) {
- ret.push(key);
- }
- }
- return ret;
- };
-
- var ObjectGetDescriptor = function(o, key) {
- return {value: o[key]};
- };
-
- var ObjectDefineProperty = function (o, key, desc) {
- o[key] = desc.value;
- return o;
- };
-
- var ObjectFreeze = function (obj) {
- return obj;
- };
-
- var ObjectGetPrototypeOf = function (obj) {
- try {
- return Object(obj).constructor.prototype;
- }
- catch (e) {
- return proto;
- }
- };
-
- var ArrayIsArray = function (obj) {
- try {
- return str.call(obj) === "[object Array]";
- }
- catch(e) {
- return false;
- }
- };
-
- module.exports = {
- isArray: ArrayIsArray,
- keys: ObjectKeys,
- names: ObjectKeys,
- defineProperty: ObjectDefineProperty,
- getDescriptor: ObjectGetDescriptor,
- freeze: ObjectFreeze,
- getPrototypeOf: ObjectGetPrototypeOf,
- isES5: isES5,
- propertyIsWritable: function() {
- return true;
- }
- };
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/filter.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/filter.js
deleted file mode 100644
index ed57bf015..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/filter.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var PromiseMap = Promise.map;
-
-Promise.prototype.filter = function (fn, options) {
- return PromiseMap(this, fn, options, INTERNAL);
-};
-
-Promise.filter = function (promises, fn, options) {
- return PromiseMap(promises, fn, options, INTERNAL);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/finally.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/finally.js
deleted file mode 100644
index ed84a2a1f..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/finally.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-module.exports = function(Promise, NEXT_FILTER, tryConvertToPromise) {
-var util = require("./util.js");
-var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver;
-var isPrimitive = util.isPrimitive;
-var thrower = util.thrower;
-
-function returnThis() {
- return this;
-}
-function throwThis() {
- throw this;
-}
-function return$(r) {
- return function() {
- return r;
- };
-}
-function throw$(r) {
- return function() {
- throw r;
- };
-}
-function promisedFinally(ret, reasonOrValue, isFulfilled) {
- var then;
- if (wrapsPrimitiveReceiver && isPrimitive(reasonOrValue)) {
- then = isFulfilled ? return$(reasonOrValue) : throw$(reasonOrValue);
- } else {
- then = isFulfilled ? returnThis : throwThis;
- }
- return ret._then(then, thrower, undefined, reasonOrValue, undefined);
-}
-
-function finallyHandler(reasonOrValue) {
- var promise = this.promise;
- var handler = this.handler;
-
- var ret = promise._isBound()
- ? handler.call(promise._boundTo)
- : handler();
-
- if (ret !== undefined) {
- var maybePromise = tryConvertToPromise(ret, promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- return promisedFinally(maybePromise, reasonOrValue,
- promise.isFulfilled());
- }
- }
-
- if (promise.isRejected()) {
- NEXT_FILTER.e = reasonOrValue;
- return NEXT_FILTER;
- } else {
- return reasonOrValue;
- }
-}
-
-function tapHandler(value) {
- var promise = this.promise;
- var handler = this.handler;
-
- var ret = promise._isBound()
- ? handler.call(promise._boundTo, value)
- : handler(value);
-
- if (ret !== undefined) {
- var maybePromise = tryConvertToPromise(ret, promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- return promisedFinally(maybePromise, value, true);
- }
- }
- return value;
-}
-
-Promise.prototype._passThroughHandler = function (handler, isFinally) {
- if (typeof handler !== "function") return this.then();
-
- var promiseAndHandler = {
- promise: this,
- handler: handler
- };
-
- return this._then(
- isFinally ? finallyHandler : tapHandler,
- isFinally ? finallyHandler : undefined, undefined,
- promiseAndHandler, undefined);
-};
-
-Promise.prototype.lastly =
-Promise.prototype["finally"] = function (handler) {
- return this._passThroughHandler(handler, true);
-};
-
-Promise.prototype.tap = function (handler) {
- return this._passThroughHandler(handler, false);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/generators.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/generators.js
deleted file mode 100644
index 4c0568d21..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/generators.js
+++ /dev/null
@@ -1,136 +0,0 @@
-"use strict";
-module.exports = function(Promise,
- apiRejection,
- INTERNAL,
- tryConvertToPromise) {
-var errors = require("./errors.js");
-var TypeError = errors.TypeError;
-var util = require("./util.js");
-var errorObj = util.errorObj;
-var tryCatch = util.tryCatch;
-var yieldHandlers = [];
-
-function promiseFromYieldHandler(value, yieldHandlers, traceParent) {
- for (var i = 0; i < yieldHandlers.length; ++i) {
- traceParent._pushContext();
- var result = tryCatch(yieldHandlers[i])(value);
- traceParent._popContext();
- if (result === errorObj) {
- traceParent._pushContext();
- var ret = Promise.reject(errorObj.e);
- traceParent._popContext();
- return ret;
- }
- var maybePromise = tryConvertToPromise(result, traceParent);
- if (maybePromise instanceof Promise) return maybePromise;
- }
- return null;
-}
-
-function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {
- var promise = this._promise = new Promise(INTERNAL);
- promise._captureStackTrace();
- this._stack = stack;
- this._generatorFunction = generatorFunction;
- this._receiver = receiver;
- this._generator = undefined;
- this._yieldHandlers = typeof yieldHandler === "function"
- ? [yieldHandler].concat(yieldHandlers)
- : yieldHandlers;
-}
-
-PromiseSpawn.prototype.promise = function () {
- return this._promise;
-};
-
-PromiseSpawn.prototype._run = function () {
- this._generator = this._generatorFunction.call(this._receiver);
- this._receiver =
- this._generatorFunction = undefined;
- this._next(undefined);
-};
-
-PromiseSpawn.prototype._continue = function (result) {
- if (result === errorObj) {
- return this._promise._rejectCallback(result.e, false, true);
- }
-
- var value = result.value;
- if (result.done === true) {
- this._promise._resolveCallback(value);
- } else {
- var maybePromise = tryConvertToPromise(value, this._promise);
- if (!(maybePromise instanceof Promise)) {
- maybePromise =
- promiseFromYieldHandler(maybePromise,
- this._yieldHandlers,
- this._promise);
- if (maybePromise === null) {
- this._throw(
- new TypeError(
- "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/4Y4pDk\u000a\u000a".replace("%s", value) +
- "From coroutine:\u000a" +
- this._stack.split("\n").slice(1, -7).join("\n")
- )
- );
- return;
- }
- }
- maybePromise._then(
- this._next,
- this._throw,
- undefined,
- this,
- null
- );
- }
-};
-
-PromiseSpawn.prototype._throw = function (reason) {
- this._promise._attachExtraTrace(reason);
- this._promise._pushContext();
- var result = tryCatch(this._generator["throw"])
- .call(this._generator, reason);
- this._promise._popContext();
- this._continue(result);
-};
-
-PromiseSpawn.prototype._next = function (value) {
- this._promise._pushContext();
- var result = tryCatch(this._generator.next).call(this._generator, value);
- this._promise._popContext();
- this._continue(result);
-};
-
-Promise.coroutine = function (generatorFunction, options) {
- if (typeof generatorFunction !== "function") {
- throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/6Vqhm0\u000a");
- }
- var yieldHandler = Object(options).yieldHandler;
- var PromiseSpawn$ = PromiseSpawn;
- var stack = new Error().stack;
- return function () {
- var generator = generatorFunction.apply(this, arguments);
- var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,
- stack);
- spawn._generator = generator;
- spawn._next(undefined);
- return spawn.promise();
- };
-};
-
-Promise.coroutine.addYieldHandler = function(fn) {
- if (typeof fn !== "function") throw new TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- yieldHandlers.push(fn);
-};
-
-Promise.spawn = function (generatorFunction) {
- if (typeof generatorFunction !== "function") {
- return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/6Vqhm0\u000a");
- }
- var spawn = new PromiseSpawn(generatorFunction, this);
- var ret = spawn.promise();
- spawn._run(Promise.spawn);
- return ret;
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/join.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/join.js
deleted file mode 100644
index cf33eb1d0..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/join.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict";
-module.exports =
-function(Promise, PromiseArray, tryConvertToPromise, INTERNAL) {
-var util = require("./util.js");
-var canEvaluate = util.canEvaluate;
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-var reject;
-
-if (!false) {
-if (canEvaluate) {
- var thenCallback = function(i) {
- return new Function("value", "holder", " \n\
- 'use strict'; \n\
- holder.pIndex = value; \n\
- holder.checkFulfillment(this); \n\
- ".replace(/Index/g, i));
- };
-
- var caller = function(count) {
- var values = [];
- for (var i = 1; i <= count; ++i) values.push("holder.p" + i);
- return new Function("holder", " \n\
- 'use strict'; \n\
- var callback = holder.fn; \n\
- return callback(values); \n\
- ".replace(/values/g, values.join(", ")));
- };
- var thenCallbacks = [];
- var callers = [undefined];
- for (var i = 1; i <= 5; ++i) {
- thenCallbacks.push(thenCallback(i));
- callers.push(caller(i));
- }
-
- var Holder = function(total, fn) {
- this.p1 = this.p2 = this.p3 = this.p4 = this.p5 = null;
- this.fn = fn;
- this.total = total;
- this.now = 0;
- };
-
- Holder.prototype.callers = callers;
- Holder.prototype.checkFulfillment = function(promise) {
- var now = this.now;
- now++;
- var total = this.total;
- if (now >= total) {
- var handler = this.callers[total];
- promise._pushContext();
- var ret = tryCatch(handler)(this);
- promise._popContext();
- if (ret === errorObj) {
- promise._rejectCallback(ret.e, false, true);
- } else {
- promise._resolveCallback(ret);
- }
- } else {
- this.now = now;
- }
- };
-
- var reject = function (reason) {
- this._reject(reason);
- };
-}
-}
-
-Promise.join = function () {
- var last = arguments.length - 1;
- var fn;
- if (last > 0 && typeof arguments[last] === "function") {
- fn = arguments[last];
- if (!false) {
- if (last < 6 && canEvaluate) {
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- var holder = new Holder(last, fn);
- var callbacks = thenCallbacks;
- for (var i = 0; i < last; ++i) {
- var maybePromise = tryConvertToPromise(arguments[i], ret);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- maybePromise._then(callbacks[i], reject,
- undefined, ret, holder);
- } else if (maybePromise._isFulfilled()) {
- callbacks[i].call(ret,
- maybePromise._value(), holder);
- } else {
- ret._reject(maybePromise._reason());
- }
- } else {
- callbacks[i].call(ret, maybePromise, holder);
- }
- }
- return ret;
- }
- }
- }
- var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];}
- if (fn) args.pop();
- var ret = new PromiseArray(args).promise();
- return fn !== undefined ? ret.spread(fn) : ret;
-};
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/map.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/map.js
deleted file mode 100644
index 66a5b179c..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/map.js
+++ /dev/null
@@ -1,131 +0,0 @@
-"use strict";
-module.exports = function(Promise,
- PromiseArray,
- apiRejection,
- tryConvertToPromise,
- INTERNAL) {
-var async = require("./async.js");
-var util = require("./util.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-var PENDING = {};
-var EMPTY_ARRAY = [];
-
-function MappingPromiseArray(promises, fn, limit, _filter) {
- this.constructor$(promises);
- this._promise._captureStackTrace();
- this._callback = fn;
- this._preservedValues = _filter === INTERNAL
- ? new Array(this.length())
- : null;
- this._limit = limit;
- this._inFlight = 0;
- this._queue = limit >= 1 ? [] : EMPTY_ARRAY;
- async.invoke(init, this, undefined);
-}
-util.inherits(MappingPromiseArray, PromiseArray);
-function init() {this._init$(undefined, -2);}
-
-MappingPromiseArray.prototype._init = function () {};
-
-MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {
- var values = this._values;
- var length = this.length();
- var preservedValues = this._preservedValues;
- var limit = this._limit;
- if (values[index] === PENDING) {
- values[index] = value;
- if (limit >= 1) {
- this._inFlight--;
- this._drainQueue();
- if (this._isResolved()) return;
- }
- } else {
- if (limit >= 1 && this._inFlight >= limit) {
- values[index] = value;
- this._queue.push(index);
- return;
- }
- if (preservedValues !== null) preservedValues[index] = value;
-
- var callback = this._callback;
- var receiver = this._promise._boundTo;
- this._promise._pushContext();
- var ret = tryCatch(callback).call(receiver, value, index, length);
- this._promise._popContext();
- if (ret === errorObj) return this._reject(ret.e);
-
- var maybePromise = tryConvertToPromise(ret, this._promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- if (limit >= 1) this._inFlight++;
- values[index] = PENDING;
- return maybePromise._proxyPromiseArray(this, index);
- } else if (maybePromise._isFulfilled()) {
- ret = maybePromise._value();
- } else {
- return this._reject(maybePromise._reason());
- }
- }
- values[index] = ret;
- }
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= length) {
- if (preservedValues !== null) {
- this._filter(values, preservedValues);
- } else {
- this._resolve(values);
- }
-
- }
-};
-
-MappingPromiseArray.prototype._drainQueue = function () {
- var queue = this._queue;
- var limit = this._limit;
- var values = this._values;
- while (queue.length > 0 && this._inFlight < limit) {
- if (this._isResolved()) return;
- var index = queue.pop();
- this._promiseFulfilled(values[index], index);
- }
-};
-
-MappingPromiseArray.prototype._filter = function (booleans, values) {
- var len = values.length;
- var ret = new Array(len);
- var j = 0;
- for (var i = 0; i < len; ++i) {
- if (booleans[i]) ret[j++] = values[i];
- }
- ret.length = j;
- this._resolve(ret);
-};
-
-MappingPromiseArray.prototype.preservedValues = function () {
- return this._preservedValues;
-};
-
-function map(promises, fn, options, _filter) {
- var limit = typeof options === "object" && options !== null
- ? options.concurrency
- : 0;
- limit = typeof limit === "number" &&
- isFinite(limit) && limit >= 1 ? limit : 0;
- return new MappingPromiseArray(promises, fn, limit, _filter);
-}
-
-Promise.prototype.map = function (fn, options) {
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
-
- return map(this, fn, options, null).promise();
-};
-
-Promise.map = function (promises, fn, options, _filter) {
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- return map(promises, fn, options, _filter).promise();
-};
-
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/method.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/method.js
deleted file mode 100644
index 3d3eeb17c..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/method.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-module.exports =
-function(Promise, INTERNAL, tryConvertToPromise, apiRejection) {
-var util = require("./util.js");
-var tryCatch = util.tryCatch;
-
-Promise.method = function (fn) {
- if (typeof fn !== "function") {
- throw new Promise.TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- }
- return function () {
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- ret._pushContext();
- var value = tryCatch(fn).apply(this, arguments);
- ret._popContext();
- ret._resolveFromSyncValue(value);
- return ret;
- };
-};
-
-Promise.attempt = Promise["try"] = function (fn, args, ctx) {
- if (typeof fn !== "function") {
- return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- }
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- ret._pushContext();
- var value = util.isArray(args)
- ? tryCatch(fn).apply(ctx, args)
- : tryCatch(fn).call(ctx, args);
- ret._popContext();
- ret._resolveFromSyncValue(value);
- return ret;
-};
-
-Promise.prototype._resolveFromSyncValue = function (value) {
- if (value === util.errorObj) {
- this._rejectCallback(value.e, false, true);
- } else {
- this._resolveCallback(value, true);
- }
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/nodeify.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/nodeify.js
deleted file mode 100644
index f305b936b..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/nodeify.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-module.exports = function(Promise) {
-var util = require("./util.js");
-var async = require("./async.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-
-function spreadAdapter(val, nodeback) {
- var promise = this;
- if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);
- var ret = tryCatch(nodeback).apply(promise._boundTo, [null].concat(val));
- if (ret === errorObj) {
- async.throwLater(ret.e);
- }
-}
-
-function successAdapter(val, nodeback) {
- var promise = this;
- var receiver = promise._boundTo;
- var ret = val === undefined
- ? tryCatch(nodeback).call(receiver, null)
- : tryCatch(nodeback).call(receiver, null, val);
- if (ret === errorObj) {
- async.throwLater(ret.e);
- }
-}
-function errorAdapter(reason, nodeback) {
- var promise = this;
- if (!reason) {
- var target = promise._target();
- var newReason = target._getCarriedStackTrace();
- newReason.cause = reason;
- reason = newReason;
- }
- var ret = tryCatch(nodeback).call(promise._boundTo, reason);
- if (ret === errorObj) {
- async.throwLater(ret.e);
- }
-}
-
-Promise.prototype.asCallback =
-Promise.prototype.nodeify = function (nodeback, options) {
- if (typeof nodeback == "function") {
- var adapter = successAdapter;
- if (options !== undefined && Object(options).spread) {
- adapter = spreadAdapter;
- }
- this._then(
- adapter,
- errorAdapter,
- undefined,
- this,
- nodeback
- );
- }
- return this;
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/progress.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/progress.js
deleted file mode 100644
index 2e3e95e56..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/progress.js
+++ /dev/null
@@ -1,76 +0,0 @@
-"use strict";
-module.exports = function(Promise, PromiseArray) {
-var util = require("./util.js");
-var async = require("./async.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-
-Promise.prototype.progressed = function (handler) {
- return this._then(undefined, undefined, handler, undefined, undefined);
-};
-
-Promise.prototype._progress = function (progressValue) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- this._target()._progressUnchecked(progressValue);
-
-};
-
-Promise.prototype._progressHandlerAt = function (index) {
- return index === 0
- ? this._progressHandler0
- : this[(index << 2) + index - 5 + 2];
-};
-
-Promise.prototype._doProgressWith = function (progression) {
- var progressValue = progression.value;
- var handler = progression.handler;
- var promise = progression.promise;
- var receiver = progression.receiver;
-
- var ret = tryCatch(handler).call(receiver, progressValue);
- if (ret === errorObj) {
- if (ret.e != null &&
- ret.e.name !== "StopProgressPropagation") {
- var trace = util.canAttachTrace(ret.e)
- ? ret.e : new Error(util.toString(ret.e));
- promise._attachExtraTrace(trace);
- promise._progress(ret.e);
- }
- } else if (ret instanceof Promise) {
- ret._then(promise._progress, null, null, promise, undefined);
- } else {
- promise._progress(ret);
- }
-};
-
-
-Promise.prototype._progressUnchecked = function (progressValue) {
- var len = this._length();
- var progress = this._progress;
- for (var i = 0; i < len; i++) {
- var handler = this._progressHandlerAt(i);
- var promise = this._promiseAt(i);
- if (!(promise instanceof Promise)) {
- var receiver = this._receiverAt(i);
- if (typeof handler === "function") {
- handler.call(receiver, progressValue, promise);
- } else if (receiver instanceof PromiseArray &&
- !receiver._isResolved()) {
- receiver._promiseProgressed(progressValue, promise);
- }
- continue;
- }
-
- if (typeof handler === "function") {
- async.invoke(this._doProgressWith, this, {
- handler: handler,
- promise: promise,
- receiver: this._receiverAt(i),
- value: progressValue
- });
- } else {
- async.invoke(progress, promise, progressValue);
- }
- }
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise.js
deleted file mode 100644
index f80d247b1..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise.js
+++ /dev/null
@@ -1,700 +0,0 @@
-"use strict";
-module.exports = function() {
-var makeSelfResolutionError = function () {
- return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/LhFpo0\u000a");
-};
-var reflect = function() {
- return new Promise.PromiseInspection(this._target());
-};
-var apiRejection = function(msg) {
- return Promise.reject(new TypeError(msg));
-};
-var util = require("./util.js");
-var async = require("./async.js");
-var errors = require("./errors.js");
-var TypeError = Promise.TypeError = errors.TypeError;
-Promise.RangeError = errors.RangeError;
-Promise.CancellationError = errors.CancellationError;
-Promise.TimeoutError = errors.TimeoutError;
-Promise.OperationalError = errors.OperationalError;
-Promise.RejectionError = errors.OperationalError;
-Promise.AggregateError = errors.AggregateError;
-var INTERNAL = function(){};
-var APPLY = {};
-var NEXT_FILTER = {e: null};
-var tryConvertToPromise = require("./thenables.js")(Promise, INTERNAL);
-var PromiseArray =
- require("./promise_array.js")(Promise, INTERNAL,
- tryConvertToPromise, apiRejection);
-var CapturedTrace = require("./captured_trace.js")();
-var isDebugging = require("./debuggability.js")(Promise, CapturedTrace);
- /*jshint unused:false*/
-var createContext =
- require("./context.js")(Promise, CapturedTrace, isDebugging);
-var CatchFilter = require("./catch_filter.js")(NEXT_FILTER);
-var PromiseResolver = require("./promise_resolver.js");
-var nodebackForPromise = PromiseResolver._nodebackForPromise;
-var errorObj = util.errorObj;
-var tryCatch = util.tryCatch;
-function Promise(resolver) {
- if (typeof resolver !== "function") {
- throw new TypeError("the promise constructor requires a resolver function\u000a\u000a See http://goo.gl/EC22Yn\u000a");
- }
- if (this.constructor !== Promise) {
- throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/KsIlge\u000a");
- }
- this._bitField = 0;
- this._fulfillmentHandler0 = undefined;
- this._rejectionHandler0 = undefined;
- this._progressHandler0 = undefined;
- this._promise0 = undefined;
- this._receiver0 = undefined;
- this._settledValue = undefined;
- if (resolver !== INTERNAL) this._resolveFromResolver(resolver);
-}
-
-Promise.prototype.toString = function () {
- return "[object Promise]";
-};
-
-Promise.prototype.caught = Promise.prototype["catch"] = function (fn) {
- var len = arguments.length;
- if (len > 1) {
- var catchInstances = new Array(len - 1),
- j = 0, i;
- for (i = 0; i < len - 1; ++i) {
- var item = arguments[i];
- if (typeof item === "function") {
- catchInstances[j++] = item;
- } else {
- return Promise.reject(
- new TypeError("Catch filter must inherit from Error or be a simple predicate function\u000a\u000a See http://goo.gl/o84o68\u000a"));
- }
- }
- catchInstances.length = j;
- fn = arguments[i];
- var catchFilter = new CatchFilter(catchInstances, fn, this);
- return this._then(undefined, catchFilter.doFilter, undefined,
- catchFilter, undefined);
- }
- return this._then(undefined, fn, undefined, undefined, undefined);
-};
-
-Promise.prototype.reflect = function () {
- return this._then(reflect, reflect, undefined, this, undefined);
-};
-
-Promise.prototype.then = function (didFulfill, didReject, didProgress) {
- if (isDebugging() && arguments.length > 0 &&
- typeof didFulfill !== "function" &&
- typeof didReject !== "function") {
- var msg = ".then() only accepts functions but was passed: " +
- util.classString(didFulfill);
- if (arguments.length > 1) {
- msg += ", " + util.classString(didReject);
- }
- this._warn(msg);
- }
- return this._then(didFulfill, didReject, didProgress,
- undefined, undefined);
-};
-
-Promise.prototype.done = function (didFulfill, didReject, didProgress) {
- var promise = this._then(didFulfill, didReject, didProgress,
- undefined, undefined);
- promise._setIsFinal();
-};
-
-Promise.prototype.spread = function (didFulfill, didReject) {
- return this.all()._then(didFulfill, didReject, undefined, APPLY, undefined);
-};
-
-Promise.prototype.isCancellable = function () {
- return !this.isResolved() &&
- this._cancellable();
-};
-
-Promise.prototype.toJSON = function () {
- var ret = {
- isFulfilled: false,
- isRejected: false,
- fulfillmentValue: undefined,
- rejectionReason: undefined
- };
- if (this.isFulfilled()) {
- ret.fulfillmentValue = this.value();
- ret.isFulfilled = true;
- } else if (this.isRejected()) {
- ret.rejectionReason = this.reason();
- ret.isRejected = true;
- }
- return ret;
-};
-
-Promise.prototype.all = function () {
- return new PromiseArray(this).promise();
-};
-
-Promise.prototype.error = function (fn) {
- return this.caught(util.originatesFromRejection, fn);
-};
-
-Promise.is = function (val) {
- return val instanceof Promise;
-};
-
-Promise.fromNode = function(fn) {
- var ret = new Promise(INTERNAL);
- var result = tryCatch(fn)(nodebackForPromise(ret));
- if (result === errorObj) {
- ret._rejectCallback(result.e, true, true);
- }
- return ret;
-};
-
-Promise.all = function (promises) {
- return new PromiseArray(promises).promise();
-};
-
-Promise.defer = Promise.pending = function () {
- var promise = new Promise(INTERNAL);
- return new PromiseResolver(promise);
-};
-
-Promise.cast = function (obj) {
- var ret = tryConvertToPromise(obj);
- if (!(ret instanceof Promise)) {
- var val = ret;
- ret = new Promise(INTERNAL);
- ret._fulfillUnchecked(val);
- }
- return ret;
-};
-
-Promise.resolve = Promise.fulfilled = Promise.cast;
-
-Promise.reject = Promise.rejected = function (reason) {
- var ret = new Promise(INTERNAL);
- ret._captureStackTrace();
- ret._rejectCallback(reason, true);
- return ret;
-};
-
-Promise.setScheduler = function(fn) {
- if (typeof fn !== "function") throw new TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- var prev = async._schedule;
- async._schedule = fn;
- return prev;
-};
-
-Promise.prototype._then = function (
- didFulfill,
- didReject,
- didProgress,
- receiver,
- internalData
-) {
- var haveInternalData = internalData !== undefined;
- var ret = haveInternalData ? internalData : new Promise(INTERNAL);
-
- if (!haveInternalData) {
- ret._propagateFrom(this, 4 | 1);
- ret._captureStackTrace();
- }
-
- var target = this._target();
- if (target !== this) {
- if (receiver === undefined) receiver = this._boundTo;
- if (!haveInternalData) ret._setIsMigrated();
- }
-
- var callbackIndex =
- target._addCallbacks(didFulfill, didReject, didProgress, ret, receiver);
-
- if (target._isResolved() && !target._isSettlePromisesQueued()) {
- async.invoke(
- target._settlePromiseAtPostResolution, target, callbackIndex);
- }
-
- return ret;
-};
-
-Promise.prototype._settlePromiseAtPostResolution = function (index) {
- if (this._isRejectionUnhandled()) this._unsetRejectionIsUnhandled();
- this._settlePromiseAt(index);
-};
-
-Promise.prototype._length = function () {
- return this._bitField & 131071;
-};
-
-Promise.prototype._isFollowingOrFulfilledOrRejected = function () {
- return (this._bitField & 939524096) > 0;
-};
-
-Promise.prototype._isFollowing = function () {
- return (this._bitField & 536870912) === 536870912;
-};
-
-Promise.prototype._setLength = function (len) {
- this._bitField = (this._bitField & -131072) |
- (len & 131071);
-};
-
-Promise.prototype._setFulfilled = function () {
- this._bitField = this._bitField | 268435456;
-};
-
-Promise.prototype._setRejected = function () {
- this._bitField = this._bitField | 134217728;
-};
-
-Promise.prototype._setFollowing = function () {
- this._bitField = this._bitField | 536870912;
-};
-
-Promise.prototype._setIsFinal = function () {
- this._bitField = this._bitField | 33554432;
-};
-
-Promise.prototype._isFinal = function () {
- return (this._bitField & 33554432) > 0;
-};
-
-Promise.prototype._cancellable = function () {
- return (this._bitField & 67108864) > 0;
-};
-
-Promise.prototype._setCancellable = function () {
- this._bitField = this._bitField | 67108864;
-};
-
-Promise.prototype._unsetCancellable = function () {
- this._bitField = this._bitField & (~67108864);
-};
-
-Promise.prototype._setIsMigrated = function () {
- this._bitField = this._bitField | 4194304;
-};
-
-Promise.prototype._unsetIsMigrated = function () {
- this._bitField = this._bitField & (~4194304);
-};
-
-Promise.prototype._isMigrated = function () {
- return (this._bitField & 4194304) > 0;
-};
-
-Promise.prototype._receiverAt = function (index) {
- var ret = index === 0
- ? this._receiver0
- : this[
- index * 5 - 5 + 4];
- if (ret === undefined && this._isBound()) {
- return this._boundTo;
- }
- return ret;
-};
-
-Promise.prototype._promiseAt = function (index) {
- return index === 0
- ? this._promise0
- : this[index * 5 - 5 + 3];
-};
-
-Promise.prototype._fulfillmentHandlerAt = function (index) {
- return index === 0
- ? this._fulfillmentHandler0
- : this[index * 5 - 5 + 0];
-};
-
-Promise.prototype._rejectionHandlerAt = function (index) {
- return index === 0
- ? this._rejectionHandler0
- : this[index * 5 - 5 + 1];
-};
-
-Promise.prototype._migrateCallbacks = function (follower, index) {
- var fulfill = follower._fulfillmentHandlerAt(index);
- var reject = follower._rejectionHandlerAt(index);
- var progress = follower._progressHandlerAt(index);
- var promise = follower._promiseAt(index);
- var receiver = follower._receiverAt(index);
- if (promise instanceof Promise) promise._setIsMigrated();
- this._addCallbacks(fulfill, reject, progress, promise, receiver);
-};
-
-Promise.prototype._addCallbacks = function (
- fulfill,
- reject,
- progress,
- promise,
- receiver
-) {
- var index = this._length();
-
- if (index >= 131071 - 5) {
- index = 0;
- this._setLength(0);
- }
-
- if (index === 0) {
- this._promise0 = promise;
- if (receiver !== undefined) this._receiver0 = receiver;
- if (typeof fulfill === "function" && !this._isCarryingStackTrace())
- this._fulfillmentHandler0 = fulfill;
- if (typeof reject === "function") this._rejectionHandler0 = reject;
- if (typeof progress === "function") this._progressHandler0 = progress;
- } else {
- var base = index * 5 - 5;
- this[base + 3] = promise;
- this[base + 4] = receiver;
- if (typeof fulfill === "function")
- this[base + 0] = fulfill;
- if (typeof reject === "function")
- this[base + 1] = reject;
- if (typeof progress === "function")
- this[base + 2] = progress;
- }
- this._setLength(index + 1);
- return index;
-};
-
-Promise.prototype._setProxyHandlers = function (receiver, promiseSlotValue) {
- var index = this._length();
-
- if (index >= 131071 - 5) {
- index = 0;
- this._setLength(0);
- }
- if (index === 0) {
- this._promise0 = promiseSlotValue;
- this._receiver0 = receiver;
- } else {
- var base = index * 5 - 5;
- this[base + 3] = promiseSlotValue;
- this[base + 4] = receiver;
- }
- this._setLength(index + 1);
-};
-
-Promise.prototype._proxyPromiseArray = function (promiseArray, index) {
- this._setProxyHandlers(promiseArray, index);
-};
-
-Promise.prototype._resolveCallback = function(value, shouldBind) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- if (value === this)
- return this._rejectCallback(makeSelfResolutionError(), false, true);
- var maybePromise = tryConvertToPromise(value, this);
- if (!(maybePromise instanceof Promise)) return this._fulfill(value);
-
- var propagationFlags = 1 | (shouldBind ? 4 : 0);
- this._propagateFrom(maybePromise, propagationFlags);
- var promise = maybePromise._target();
- if (promise._isPending()) {
- var len = this._length();
- for (var i = 0; i < len; ++i) {
- promise._migrateCallbacks(this, i);
- }
- this._setFollowing();
- this._setLength(0);
- this._setFollowee(promise);
- } else if (promise._isFulfilled()) {
- this._fulfillUnchecked(promise._value());
- } else {
- this._rejectUnchecked(promise._reason(),
- promise._getCarriedStackTrace());
- }
-};
-
-Promise.prototype._rejectCallback =
-function(reason, synchronous, shouldNotMarkOriginatingFromRejection) {
- if (!shouldNotMarkOriginatingFromRejection) {
- util.markAsOriginatingFromRejection(reason);
- }
- var trace = util.ensureErrorObject(reason);
- var hasStack = trace === reason;
- this._attachExtraTrace(trace, synchronous ? hasStack : false);
- this._reject(reason, hasStack ? undefined : trace);
-};
-
-Promise.prototype._resolveFromResolver = function (resolver) {
- var promise = this;
- this._captureStackTrace();
- this._pushContext();
- var synchronous = true;
- var r = tryCatch(resolver)(function(value) {
- if (promise === null) return;
- promise._resolveCallback(value);
- promise = null;
- }, function (reason) {
- if (promise === null) return;
- promise._rejectCallback(reason, synchronous);
- promise = null;
- });
- synchronous = false;
- this._popContext();
-
- if (r !== undefined && r === errorObj && promise !== null) {
- promise._rejectCallback(r.e, true, true);
- promise = null;
- }
-};
-
-Promise.prototype._settlePromiseFromHandler = function (
- handler, receiver, value, promise
-) {
- if (promise._isRejected()) return;
- promise._pushContext();
- var x;
- if (receiver === APPLY && !this._isRejected()) {
- x = tryCatch(handler).apply(this._boundTo, value);
- } else {
- x = tryCatch(handler).call(receiver, value);
- }
- promise._popContext();
-
- if (x === errorObj || x === promise || x === NEXT_FILTER) {
- var err = x === promise ? makeSelfResolutionError() : x.e;
- promise._rejectCallback(err, false, true);
- } else {
- promise._resolveCallback(x);
- }
-};
-
-Promise.prototype._target = function() {
- var ret = this;
- while (ret._isFollowing()) ret = ret._followee();
- return ret;
-};
-
-Promise.prototype._followee = function() {
- return this._rejectionHandler0;
-};
-
-Promise.prototype._setFollowee = function(promise) {
- this._rejectionHandler0 = promise;
-};
-
-Promise.prototype._cleanValues = function () {
- if (this._cancellable()) {
- this._cancellationParent = undefined;
- }
-};
-
-Promise.prototype._propagateFrom = function (parent, flags) {
- if ((flags & 1) > 0 && parent._cancellable()) {
- this._setCancellable();
- this._cancellationParent = parent;
- }
- if ((flags & 4) > 0 && parent._isBound()) {
- this._setBoundTo(parent._boundTo);
- }
-};
-
-Promise.prototype._fulfill = function (value) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- this._fulfillUnchecked(value);
-};
-
-Promise.prototype._reject = function (reason, carriedStackTrace) {
- if (this._isFollowingOrFulfilledOrRejected()) return;
- this._rejectUnchecked(reason, carriedStackTrace);
-};
-
-Promise.prototype._settlePromiseAt = function (index) {
- var promise = this._promiseAt(index);
- var isPromise = promise instanceof Promise;
-
- if (isPromise && promise._isMigrated()) {
- promise._unsetIsMigrated();
- return async.invoke(this._settlePromiseAt, this, index);
- }
- var handler = this._isFulfilled()
- ? this._fulfillmentHandlerAt(index)
- : this._rejectionHandlerAt(index);
-
- var carriedStackTrace =
- this._isCarryingStackTrace() ? this._getCarriedStackTrace() : undefined;
- var value = this._settledValue;
- var receiver = this._receiverAt(index);
-
-
- this._clearCallbackDataAtIndex(index);
-
- if (typeof handler === "function") {
- if (!isPromise) {
- handler.call(receiver, value, promise);
- } else {
- this._settlePromiseFromHandler(handler, receiver, value, promise);
- }
- } else if (receiver instanceof PromiseArray) {
- if (!receiver._isResolved()) {
- if (this._isFulfilled()) {
- receiver._promiseFulfilled(value, promise);
- }
- else {
- receiver._promiseRejected(value, promise);
- }
- }
- } else if (isPromise) {
- if (this._isFulfilled()) {
- promise._fulfill(value);
- } else {
- promise._reject(value, carriedStackTrace);
- }
- }
-
- if (index >= 4 && (index & 31) === 4)
- async.invokeLater(this._setLength, this, 0);
-};
-
-Promise.prototype._clearCallbackDataAtIndex = function(index) {
- if (index === 0) {
- if (!this._isCarryingStackTrace()) {
- this._fulfillmentHandler0 = undefined;
- }
- this._rejectionHandler0 =
- this._progressHandler0 =
- this._receiver0 =
- this._promise0 = undefined;
- } else {
- var base = index * 5 - 5;
- this[base + 3] =
- this[base + 4] =
- this[base + 0] =
- this[base + 1] =
- this[base + 2] = undefined;
- }
-};
-
-Promise.prototype._isSettlePromisesQueued = function () {
- return (this._bitField &
- -1073741824) === -1073741824;
-};
-
-Promise.prototype._setSettlePromisesQueued = function () {
- this._bitField = this._bitField | -1073741824;
-};
-
-Promise.prototype._unsetSettlePromisesQueued = function () {
- this._bitField = this._bitField & (~-1073741824);
-};
-
-Promise.prototype._queueSettlePromises = function() {
- async.settlePromises(this);
- this._setSettlePromisesQueued();
-};
-
-Promise.prototype._fulfillUnchecked = function (value) {
- if (value === this) {
- var err = makeSelfResolutionError();
- this._attachExtraTrace(err);
- return this._rejectUnchecked(err, undefined);
- }
- this._setFulfilled();
- this._settledValue = value;
- this._cleanValues();
-
- if (this._length() > 0) {
- this._queueSettlePromises();
- }
-};
-
-Promise.prototype._rejectUncheckedCheckError = function (reason) {
- var trace = util.ensureErrorObject(reason);
- this._rejectUnchecked(reason, trace === reason ? undefined : trace);
-};
-
-Promise.prototype._rejectUnchecked = function (reason, trace) {
- if (reason === this) {
- var err = makeSelfResolutionError();
- this._attachExtraTrace(err);
- return this._rejectUnchecked(err);
- }
- this._setRejected();
- this._settledValue = reason;
- this._cleanValues();
-
- if (this._isFinal()) {
- async.throwLater(function(e) {
- if ("stack" in e) {
- async.invokeFirst(
- CapturedTrace.unhandledRejection, undefined, e);
- }
- throw e;
- }, trace === undefined ? reason : trace);
- return;
- }
-
- if (trace !== undefined && trace !== reason) {
- this._setCarriedStackTrace(trace);
- }
-
- if (this._length() > 0) {
- this._queueSettlePromises();
- } else {
- this._ensurePossibleRejectionHandled();
- }
-};
-
-Promise.prototype._settlePromises = function () {
- this._unsetSettlePromisesQueued();
- var len = this._length();
- for (var i = 0; i < len; i++) {
- this._settlePromiseAt(i);
- }
-};
-
-Promise._makeSelfResolutionError = makeSelfResolutionError;
-require("./progress.js")(Promise, PromiseArray);
-require("./method.js")(Promise, INTERNAL, tryConvertToPromise, apiRejection);
-require("./bind.js")(Promise, INTERNAL, tryConvertToPromise);
-require("./finally.js")(Promise, NEXT_FILTER, tryConvertToPromise);
-require("./direct_resolve.js")(Promise);
-require("./synchronous_inspection.js")(Promise);
-require("./join.js")(Promise, PromiseArray, tryConvertToPromise, INTERNAL);
-Promise.Promise = Promise;
-require('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL);
-require('./cancel.js')(Promise);
-require('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext);
-require('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise);
-require('./nodeify.js')(Promise);
-require('./call_get.js')(Promise);
-require('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);
-require('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);
-require('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL);
-require('./settle.js')(Promise, PromiseArray);
-require('./some.js')(Promise, PromiseArray, apiRejection);
-require('./promisify.js')(Promise, INTERNAL);
-require('./any.js')(Promise);
-require('./each.js')(Promise, INTERNAL);
-require('./timers.js')(Promise, INTERNAL);
-require('./filter.js')(Promise, INTERNAL);
-
- util.toFastProperties(Promise);
- util.toFastProperties(Promise.prototype);
- function fillTypes(value) {
- var p = new Promise(INTERNAL);
- p._fulfillmentHandler0 = value;
- p._rejectionHandler0 = value;
- p._progressHandler0 = value;
- p._promise0 = value;
- p._receiver0 = value;
- p._settledValue = value;
- }
- // Complete slack tracking, opt out of field-type tracking and
- // stabilize map
- fillTypes({a: 1});
- fillTypes({b: 2});
- fillTypes({c: 3});
- fillTypes(1);
- fillTypes(function(){});
- fillTypes(undefined);
- fillTypes(false);
- fillTypes(new Promise(INTERNAL));
- CapturedTrace.setBounds(async.firstLineError, util.lastLineError);
- return Promise;
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_array.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_array.js
deleted file mode 100644
index b2e8f1cc5..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_array.js
+++ /dev/null
@@ -1,142 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL, tryConvertToPromise,
- apiRejection) {
-var util = require("./util.js");
-var isArray = util.isArray;
-
-function toResolutionValue(val) {
- switch(val) {
- case -2: return [];
- case -3: return {};
- }
-}
-
-function PromiseArray(values) {
- var promise = this._promise = new Promise(INTERNAL);
- var parent;
- if (values instanceof Promise) {
- parent = values;
- promise._propagateFrom(parent, 1 | 4);
- }
- this._values = values;
- this._length = 0;
- this._totalResolved = 0;
- this._init(undefined, -2);
-}
-PromiseArray.prototype.length = function () {
- return this._length;
-};
-
-PromiseArray.prototype.promise = function () {
- return this._promise;
-};
-
-PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {
- var values = tryConvertToPromise(this._values, this._promise);
- if (values instanceof Promise) {
- values = values._target();
- this._values = values;
- if (values._isFulfilled()) {
- values = values._value();
- if (!isArray(values)) {
- var err = new Promise.TypeError("expecting an array, a promise or a thenable\u000a\u000a See http://goo.gl/s8MMhc\u000a");
- this.__hardReject__(err);
- return;
- }
- } else if (values._isPending()) {
- values._then(
- init,
- this._reject,
- undefined,
- this,
- resolveValueIfEmpty
- );
- return;
- } else {
- this._reject(values._reason());
- return;
- }
- } else if (!isArray(values)) {
- this._promise._reject(apiRejection("expecting an array, a promise or a thenable\u000a\u000a See http://goo.gl/s8MMhc\u000a")._reason());
- return;
- }
-
- if (values.length === 0) {
- if (resolveValueIfEmpty === -5) {
- this._resolveEmptyArray();
- }
- else {
- this._resolve(toResolutionValue(resolveValueIfEmpty));
- }
- return;
- }
- var len = this.getActualLength(values.length);
- this._length = len;
- this._values = this.shouldCopyValues() ? new Array(len) : this._values;
- var promise = this._promise;
- for (var i = 0; i < len; ++i) {
- var isResolved = this._isResolved();
- var maybePromise = tryConvertToPromise(values[i], promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (isResolved) {
- maybePromise._ignoreRejections();
- } else if (maybePromise._isPending()) {
- maybePromise._proxyPromiseArray(this, i);
- } else if (maybePromise._isFulfilled()) {
- this._promiseFulfilled(maybePromise._value(), i);
- } else {
- this._promiseRejected(maybePromise._reason(), i);
- }
- } else if (!isResolved) {
- this._promiseFulfilled(maybePromise, i);
- }
- }
-};
-
-PromiseArray.prototype._isResolved = function () {
- return this._values === null;
-};
-
-PromiseArray.prototype._resolve = function (value) {
- this._values = null;
- this._promise._fulfill(value);
-};
-
-PromiseArray.prototype.__hardReject__ =
-PromiseArray.prototype._reject = function (reason) {
- this._values = null;
- this._promise._rejectCallback(reason, false, true);
-};
-
-PromiseArray.prototype._promiseProgressed = function (progressValue, index) {
- this._promise._progress({
- index: index,
- value: progressValue
- });
-};
-
-
-PromiseArray.prototype._promiseFulfilled = function (value, index) {
- this._values[index] = value;
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= this._length) {
- this._resolve(this._values);
- }
-};
-
-PromiseArray.prototype._promiseRejected = function (reason, index) {
- this._totalResolved++;
- this._reject(reason);
-};
-
-PromiseArray.prototype.shouldCopyValues = function () {
- return true;
-};
-
-PromiseArray.prototype.getActualLength = function (len) {
- return len;
-};
-
-return PromiseArray;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_resolver.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_resolver.js
deleted file mode 100644
index b180a3280..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promise_resolver.js
+++ /dev/null
@@ -1,123 +0,0 @@
-"use strict";
-var util = require("./util.js");
-var maybeWrapAsError = util.maybeWrapAsError;
-var errors = require("./errors.js");
-var TimeoutError = errors.TimeoutError;
-var OperationalError = errors.OperationalError;
-var haveGetters = util.haveGetters;
-var es5 = require("./es5.js");
-
-function isUntypedError(obj) {
- return obj instanceof Error &&
- es5.getPrototypeOf(obj) === Error.prototype;
-}
-
-var rErrorKey = /^(?:name|message|stack|cause)$/;
-function wrapAsOperationalError(obj) {
- var ret;
- if (isUntypedError(obj)) {
- ret = new OperationalError(obj);
- ret.name = obj.name;
- ret.message = obj.message;
- ret.stack = obj.stack;
- var keys = es5.keys(obj);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- if (!rErrorKey.test(key)) {
- ret[key] = obj[key];
- }
- }
- return ret;
- }
- util.markAsOriginatingFromRejection(obj);
- return obj;
-}
-
-function nodebackForPromise(promise) {
- return function(err, value) {
- if (promise === null) return;
-
- if (err) {
- var wrapped = wrapAsOperationalError(maybeWrapAsError(err));
- promise._attachExtraTrace(wrapped);
- promise._reject(wrapped);
- } else if (arguments.length > 2) {
- var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}
- promise._fulfill(args);
- } else {
- promise._fulfill(value);
- }
-
- promise = null;
- };
-}
-
-
-var PromiseResolver;
-if (!haveGetters) {
- PromiseResolver = function (promise) {
- this.promise = promise;
- this.asCallback = nodebackForPromise(promise);
- this.callback = this.asCallback;
- };
-}
-else {
- PromiseResolver = function (promise) {
- this.promise = promise;
- };
-}
-if (haveGetters) {
- var prop = {
- get: function() {
- return nodebackForPromise(this.promise);
- }
- };
- es5.defineProperty(PromiseResolver.prototype, "asCallback", prop);
- es5.defineProperty(PromiseResolver.prototype, "callback", prop);
-}
-
-PromiseResolver._nodebackForPromise = nodebackForPromise;
-
-PromiseResolver.prototype.toString = function () {
- return "[object PromiseResolver]";
-};
-
-PromiseResolver.prototype.resolve =
-PromiseResolver.prototype.fulfill = function (value) {
- if (!(this instanceof PromiseResolver)) {
- throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\u000a\u000a See http://goo.gl/sdkXL9\u000a");
- }
- this.promise._resolveCallback(value);
-};
-
-PromiseResolver.prototype.reject = function (reason) {
- if (!(this instanceof PromiseResolver)) {
- throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\u000a\u000a See http://goo.gl/sdkXL9\u000a");
- }
- this.promise._rejectCallback(reason);
-};
-
-PromiseResolver.prototype.progress = function (value) {
- if (!(this instanceof PromiseResolver)) {
- throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\u000a\u000a See http://goo.gl/sdkXL9\u000a");
- }
- this.promise._progress(value);
-};
-
-PromiseResolver.prototype.cancel = function (err) {
- this.promise.cancel(err);
-};
-
-PromiseResolver.prototype.timeout = function () {
- this.reject(new TimeoutError("timeout"));
-};
-
-PromiseResolver.prototype.isResolved = function () {
- return this.promise.isResolved();
-};
-
-PromiseResolver.prototype.toJSON = function () {
- return this.promise.toJSON();
-};
-
-module.exports = PromiseResolver;
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promisify.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promisify.js
deleted file mode 100644
index 0b3354222..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/promisify.js
+++ /dev/null
@@ -1,294 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var THIS = {};
-var util = require("./util.js");
-var nodebackForPromise = require("./promise_resolver.js")
- ._nodebackForPromise;
-var withAppended = util.withAppended;
-var maybeWrapAsError = util.maybeWrapAsError;
-var canEvaluate = util.canEvaluate;
-var TypeError = require("./errors").TypeError;
-var defaultSuffix = "Async";
-var defaultPromisified = {__isPromisified__: true};
-var noCopyPropsPattern =
- /^(?:length|name|arguments|caller|callee|prototype|__isPromisified__)$/;
-var defaultFilter = function(name) {
- return util.isIdentifier(name) &&
- name.charAt(0) !== "_" &&
- name !== "constructor";
-};
-
-function propsFilter(key) {
- return !noCopyPropsPattern.test(key);
-}
-
-function isPromisified(fn) {
- try {
- return fn.__isPromisified__ === true;
- }
- catch (e) {
- return false;
- }
-}
-
-function hasPromisified(obj, key, suffix) {
- var val = util.getDataPropertyOrDefault(obj, key + suffix,
- defaultPromisified);
- return val ? isPromisified(val) : false;
-}
-function checkValid(ret, suffix, suffixRegexp) {
- for (var i = 0; i < ret.length; i += 2) {
- var key = ret[i];
- if (suffixRegexp.test(key)) {
- var keyWithoutAsyncSuffix = key.replace(suffixRegexp, "");
- for (var j = 0; j < ret.length; j += 2) {
- if (ret[j] === keyWithoutAsyncSuffix) {
- throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/iWrZbw\u000a"
- .replace("%s", suffix));
- }
- }
- }
- }
-}
-
-function promisifiableMethods(obj, suffix, suffixRegexp, filter) {
- var keys = util.inheritedDataKeys(obj);
- var ret = [];
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- var value = obj[key];
- var passesDefaultFilter = filter === defaultFilter
- ? true : defaultFilter(key, value, obj);
- if (typeof value === "function" &&
- !util.isNativeFunctionMethod(value) &&
- !isPromisified(value) &&
- !hasPromisified(obj, key, suffix) &&
- filter(key, value, obj, passesDefaultFilter)) {
- ret.push(key, value);
- }
- }
- checkValid(ret, suffix, suffixRegexp);
- return ret;
-}
-
-var escapeIdentRegex = function(str) {
- return str.replace(/([$])/, "\\$");
-};
-
-var makeNodePromisifiedEval;
-if (!false) {
-var switchCaseArgumentOrder = function(likelyArgumentCount) {
- var ret = [likelyArgumentCount];
- var min = Math.max(0, likelyArgumentCount - 1 - 3);
- for(var i = likelyArgumentCount - 1; i >= min; --i) {
- ret.push(i);
- }
- for(var i = likelyArgumentCount + 1; i <= 3; ++i) {
- ret.push(i);
- }
- return ret;
-};
-
-var argumentSequence = function(argumentCount) {
- return util.filledRange(argumentCount, "_arg", "");
-};
-
-var parameterDeclaration = function(parameterCount) {
- return util.filledRange(
- Math.max(parameterCount, 3), "_arg", "");
-};
-
-var parameterCount = function(fn) {
- if (typeof fn.length === "number") {
- return Math.max(Math.min(fn.length, 1023 + 1), 0);
- }
- return 0;
-};
-
-makeNodePromisifiedEval =
-function(callback, receiver, originalName, fn) {
- var newParameterCount = Math.max(0, parameterCount(fn) - 1);
- var argumentOrder = switchCaseArgumentOrder(newParameterCount);
- var shouldProxyThis = typeof callback === "string" || receiver === THIS;
-
- function generateCallForArgumentCount(count) {
- var args = argumentSequence(count).join(", ");
- var comma = count > 0 ? ", " : "";
- var ret;
- if (shouldProxyThis) {
- ret = "ret = callback.call(this, {{args}}, nodeback); break;\n";
- } else {
- ret = receiver === undefined
- ? "ret = callback({{args}}, nodeback); break;\n"
- : "ret = callback.call(receiver, {{args}}, nodeback); break;\n";
- }
- return ret.replace("{{args}}", args).replace(", ", comma);
- }
-
- function generateArgumentSwitchCase() {
- var ret = "";
- for (var i = 0; i < argumentOrder.length; ++i) {
- ret += "case " + argumentOrder[i] +":" +
- generateCallForArgumentCount(argumentOrder[i]);
- }
-
- ret += " \n\
- default: \n\
- var args = new Array(len + 1); \n\
- var i = 0; \n\
- for (var i = 0; i < len; ++i) { \n\
- args[i] = arguments[i]; \n\
- } \n\
- args[i] = nodeback; \n\
- [CodeForCall] \n\
- break; \n\
- ".replace("[CodeForCall]", (shouldProxyThis
- ? "ret = callback.apply(this, args);\n"
- : "ret = callback.apply(receiver, args);\n"));
- return ret;
- }
-
- var getFunctionCode = typeof callback === "string"
- ? ("this != null ? this['"+callback+"'] : fn")
- : "fn";
-
- return new Function("Promise",
- "fn",
- "receiver",
- "withAppended",
- "maybeWrapAsError",
- "nodebackForPromise",
- "tryCatch",
- "errorObj",
- "notEnumerableProp",
- "INTERNAL","'use strict'; \n\
- var ret = function (Parameters) { \n\
- 'use strict'; \n\
- var len = arguments.length; \n\
- var promise = new Promise(INTERNAL); \n\
- promise._captureStackTrace(); \n\
- var nodeback = nodebackForPromise(promise); \n\
- var ret; \n\
- var callback = tryCatch([GetFunctionCode]); \n\
- switch(len) { \n\
- [CodeForSwitchCase] \n\
- } \n\
- if (ret === errorObj) { \n\
- promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\
- } \n\
- return promise; \n\
- }; \n\
- notEnumerableProp(ret, '__isPromisified__', true); \n\
- return ret; \n\
- "
- .replace("Parameters", parameterDeclaration(newParameterCount))
- .replace("[CodeForSwitchCase]", generateArgumentSwitchCase())
- .replace("[GetFunctionCode]", getFunctionCode))(
- Promise,
- fn,
- receiver,
- withAppended,
- maybeWrapAsError,
- nodebackForPromise,
- util.tryCatch,
- util.errorObj,
- util.notEnumerableProp,
- INTERNAL
- );
-};
-}
-
-function makeNodePromisifiedClosure(callback, receiver, _, fn) {
- var defaultThis = (function() {return this;})();
- var method = callback;
- if (typeof method === "string") {
- callback = fn;
- }
- function promisified() {
- var _receiver = receiver;
- if (receiver === THIS) _receiver = this;
- var promise = new Promise(INTERNAL);
- promise._captureStackTrace();
- var cb = typeof method === "string" && this !== defaultThis
- ? this[method] : callback;
- var fn = nodebackForPromise(promise);
- try {
- cb.apply(_receiver, withAppended(arguments, fn));
- } catch(e) {
- promise._rejectCallback(maybeWrapAsError(e), true, true);
- }
- return promise;
- }
- util.notEnumerableProp(promisified, "__isPromisified__", true);
- return promisified;
-}
-
-var makeNodePromisified = canEvaluate
- ? makeNodePromisifiedEval
- : makeNodePromisifiedClosure;
-
-function promisifyAll(obj, suffix, filter, promisifier) {
- var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$");
- var methods =
- promisifiableMethods(obj, suffix, suffixRegexp, filter);
-
- for (var i = 0, len = methods.length; i < len; i+= 2) {
- var key = methods[i];
- var fn = methods[i+1];
- var promisifiedKey = key + suffix;
- obj[promisifiedKey] = promisifier === makeNodePromisified
- ? makeNodePromisified(key, THIS, key, fn, suffix)
- : promisifier(fn, function() {
- return makeNodePromisified(key, THIS, key, fn, suffix);
- });
- }
- util.toFastProperties(obj);
- return obj;
-}
-
-function promisify(callback, receiver) {
- return makeNodePromisified(callback, receiver, undefined, callback);
-}
-
-Promise.promisify = function (fn, receiver) {
- if (typeof fn !== "function") {
- throw new TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- }
- if (isPromisified(fn)) {
- return fn;
- }
- var ret = promisify(fn, arguments.length < 2 ? THIS : receiver);
- util.copyDescriptors(fn, ret, propsFilter);
- return ret;
-};
-
-Promise.promisifyAll = function (target, options) {
- if (typeof target !== "function" && typeof target !== "object") {
- throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/9ITlV0\u000a");
- }
- options = Object(options);
- var suffix = options.suffix;
- if (typeof suffix !== "string") suffix = defaultSuffix;
- var filter = options.filter;
- if (typeof filter !== "function") filter = defaultFilter;
- var promisifier = options.promisifier;
- if (typeof promisifier !== "function") promisifier = makeNodePromisified;
-
- if (!util.isIdentifier(suffix)) {
- throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/8FZo5V\u000a");
- }
-
- var keys = util.inheritedDataKeys(target);
- for (var i = 0; i < keys.length; ++i) {
- var value = target[keys[i]];
- if (keys[i] !== "constructor" &&
- util.isClass(value)) {
- promisifyAll(value.prototype, suffix, filter, promisifier);
- promisifyAll(value, suffix, filter, promisifier);
- }
- }
-
- return promisifyAll(target, suffix, filter, promisifier);
-};
-};
-
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/props.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/props.js
deleted file mode 100644
index d6f9e64b0..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/props.js
+++ /dev/null
@@ -1,79 +0,0 @@
-"use strict";
-module.exports = function(
- Promise, PromiseArray, tryConvertToPromise, apiRejection) {
-var util = require("./util.js");
-var isObject = util.isObject;
-var es5 = require("./es5.js");
-
-function PropertiesPromiseArray(obj) {
- var keys = es5.keys(obj);
- var len = keys.length;
- var values = new Array(len * 2);
- for (var i = 0; i < len; ++i) {
- var key = keys[i];
- values[i] = obj[key];
- values[i + len] = key;
- }
- this.constructor$(values);
-}
-util.inherits(PropertiesPromiseArray, PromiseArray);
-
-PropertiesPromiseArray.prototype._init = function () {
- this._init$(undefined, -3) ;
-};
-
-PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {
- this._values[index] = value;
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= this._length) {
- var val = {};
- var keyOffset = this.length();
- for (var i = 0, len = this.length(); i < len; ++i) {
- val[this._values[i + keyOffset]] = this._values[i];
- }
- this._resolve(val);
- }
-};
-
-PropertiesPromiseArray.prototype._promiseProgressed = function (value, index) {
- this._promise._progress({
- key: this._values[index + this.length()],
- value: value
- });
-};
-
-PropertiesPromiseArray.prototype.shouldCopyValues = function () {
- return false;
-};
-
-PropertiesPromiseArray.prototype.getActualLength = function (len) {
- return len >> 1;
-};
-
-function props(promises) {
- var ret;
- var castValue = tryConvertToPromise(promises);
-
- if (!isObject(castValue)) {
- return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/OsFKC8\u000a");
- } else if (castValue instanceof Promise) {
- ret = castValue._then(
- Promise.props, undefined, undefined, undefined, undefined);
- } else {
- ret = new PropertiesPromiseArray(castValue).promise();
- }
-
- if (castValue instanceof Promise) {
- ret._propagateFrom(castValue, 4);
- }
- return ret;
-}
-
-Promise.prototype.props = function () {
- return props(this);
-};
-
-Promise.props = function (promises) {
- return props(promises);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/queue.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/queue.js
deleted file mode 100644
index 84d57d5f6..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/queue.js
+++ /dev/null
@@ -1,90 +0,0 @@
-"use strict";
-function arrayMove(src, srcIndex, dst, dstIndex, len) {
- for (var j = 0; j < len; ++j) {
- dst[j + dstIndex] = src[j + srcIndex];
- src[j + srcIndex] = void 0;
- }
-}
-
-function Queue(capacity) {
- this._capacity = capacity;
- this._length = 0;
- this._front = 0;
-}
-
-Queue.prototype._willBeOverCapacity = function (size) {
- return this._capacity < size;
-};
-
-Queue.prototype._pushOne = function (arg) {
- var length = this.length();
- this._checkCapacity(length + 1);
- var i = (this._front + length) & (this._capacity - 1);
- this[i] = arg;
- this._length = length + 1;
-};
-
-Queue.prototype._unshiftOne = function(value) {
- var capacity = this._capacity;
- this._checkCapacity(this.length() + 1);
- var front = this._front;
- var i = (((( front - 1 ) &
- ( capacity - 1) ) ^ capacity ) - capacity );
- this[i] = value;
- this._front = i;
- this._length = this.length() + 1;
-};
-
-Queue.prototype.unshift = function(fn, receiver, arg) {
- this._unshiftOne(arg);
- this._unshiftOne(receiver);
- this._unshiftOne(fn);
-};
-
-Queue.prototype.push = function (fn, receiver, arg) {
- var length = this.length() + 3;
- if (this._willBeOverCapacity(length)) {
- this._pushOne(fn);
- this._pushOne(receiver);
- this._pushOne(arg);
- return;
- }
- var j = this._front + length - 3;
- this._checkCapacity(length);
- var wrapMask = this._capacity - 1;
- this[(j + 0) & wrapMask] = fn;
- this[(j + 1) & wrapMask] = receiver;
- this[(j + 2) & wrapMask] = arg;
- this._length = length;
-};
-
-Queue.prototype.shift = function () {
- var front = this._front,
- ret = this[front];
-
- this[front] = undefined;
- this._front = (front + 1) & (this._capacity - 1);
- this._length--;
- return ret;
-};
-
-Queue.prototype.length = function () {
- return this._length;
-};
-
-Queue.prototype._checkCapacity = function (size) {
- if (this._capacity < size) {
- this._resizeTo(this._capacity << 1);
- }
-};
-
-Queue.prototype._resizeTo = function (capacity) {
- var oldCapacity = this._capacity;
- this._capacity = capacity;
- var front = this._front;
- var length = this._length;
- var moveItemsCount = (front + length) & (oldCapacity - 1);
- arrayMove(this, 0, this, oldCapacity, moveItemsCount);
-};
-
-module.exports = Queue;
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/race.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/race.js
deleted file mode 100644
index 30e7bb094..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/race.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-module.exports = function(
- Promise, INTERNAL, tryConvertToPromise, apiRejection) {
-var isArray = require("./util.js").isArray;
-
-var raceLater = function (promise) {
- return promise.then(function(array) {
- return race(array, promise);
- });
-};
-
-function race(promises, parent) {
- var maybePromise = tryConvertToPromise(promises);
-
- if (maybePromise instanceof Promise) {
- return raceLater(maybePromise);
- } else if (!isArray(promises)) {
- return apiRejection("expecting an array, a promise or a thenable\u000a\u000a See http://goo.gl/s8MMhc\u000a");
- }
-
- var ret = new Promise(INTERNAL);
- if (parent !== undefined) {
- ret._propagateFrom(parent, 4 | 1);
- }
- var fulfill = ret._fulfill;
- var reject = ret._reject;
- for (var i = 0, len = promises.length; i < len; ++i) {
- var val = promises[i];
-
- if (val === undefined && !(i in promises)) {
- continue;
- }
-
- Promise.cast(val)._then(fulfill, reject, undefined, ret, null);
- }
- return ret;
-}
-
-Promise.race = function (promises) {
- return race(promises, undefined);
-};
-
-Promise.prototype.race = function () {
- return race(this, undefined);
-};
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/reduce.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/reduce.js
deleted file mode 100644
index 319222012..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/reduce.js
+++ /dev/null
@@ -1,146 +0,0 @@
-"use strict";
-module.exports = function(Promise,
- PromiseArray,
- apiRejection,
- tryConvertToPromise,
- INTERNAL) {
-var async = require("./async.js");
-var util = require("./util.js");
-var tryCatch = util.tryCatch;
-var errorObj = util.errorObj;
-function ReductionPromiseArray(promises, fn, accum, _each) {
- this.constructor$(promises);
- this._promise._captureStackTrace();
- this._preservedValues = _each === INTERNAL ? [] : null;
- this._zerothIsAccum = (accum === undefined);
- this._gotAccum = false;
- this._reducingIndex = (this._zerothIsAccum ? 1 : 0);
- this._valuesPhase = undefined;
- var maybePromise = tryConvertToPromise(accum, this._promise);
- var rejected = false;
- var isPromise = maybePromise instanceof Promise;
- if (isPromise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- maybePromise._proxyPromiseArray(this, -1);
- } else if (maybePromise._isFulfilled()) {
- accum = maybePromise._value();
- this._gotAccum = true;
- } else {
- this._reject(maybePromise._reason());
- rejected = true;
- }
- }
- if (!(isPromise || this._zerothIsAccum)) this._gotAccum = true;
- this._callback = fn;
- this._accum = accum;
- if (!rejected) async.invoke(init, this, undefined);
-}
-function init() {
- this._init$(undefined, -5);
-}
-util.inherits(ReductionPromiseArray, PromiseArray);
-
-ReductionPromiseArray.prototype._init = function () {};
-
-ReductionPromiseArray.prototype._resolveEmptyArray = function () {
- if (this._gotAccum || this._zerothIsAccum) {
- this._resolve(this._preservedValues !== null
- ? [] : this._accum);
- }
-};
-
-ReductionPromiseArray.prototype._promiseFulfilled = function (value, index) {
- var values = this._values;
- values[index] = value;
- var length = this.length();
- var preservedValues = this._preservedValues;
- var isEach = preservedValues !== null;
- var gotAccum = this._gotAccum;
- var valuesPhase = this._valuesPhase;
- var valuesPhaseIndex;
- if (!valuesPhase) {
- valuesPhase = this._valuesPhase = new Array(length);
- for (valuesPhaseIndex=0; valuesPhaseIndex<length; ++valuesPhaseIndex) {
- valuesPhase[valuesPhaseIndex] = 0;
- }
- }
- valuesPhaseIndex = valuesPhase[index];
-
- if (index === 0 && this._zerothIsAccum) {
- this._accum = value;
- this._gotAccum = gotAccum = true;
- valuesPhase[index] = ((valuesPhaseIndex === 0)
- ? 1 : 2);
- } else if (index === -1) {
- this._accum = value;
- this._gotAccum = gotAccum = true;
- } else {
- if (valuesPhaseIndex === 0) {
- valuesPhase[index] = 1;
- } else {
- valuesPhase[index] = 2;
- this._accum = value;
- }
- }
- if (!gotAccum) return;
-
- var callback = this._callback;
- var receiver = this._promise._boundTo;
- var ret;
-
- for (var i = this._reducingIndex; i < length; ++i) {
- valuesPhaseIndex = valuesPhase[i];
- if (valuesPhaseIndex === 2) {
- this._reducingIndex = i + 1;
- continue;
- }
- if (valuesPhaseIndex !== 1) return;
- value = values[i];
- this._promise._pushContext();
- if (isEach) {
- preservedValues.push(value);
- ret = tryCatch(callback).call(receiver, value, i, length);
- }
- else {
- ret = tryCatch(callback)
- .call(receiver, this._accum, value, i, length);
- }
- this._promise._popContext();
-
- if (ret === errorObj) return this._reject(ret.e);
-
- var maybePromise = tryConvertToPromise(ret, this._promise);
- if (maybePromise instanceof Promise) {
- maybePromise = maybePromise._target();
- if (maybePromise._isPending()) {
- valuesPhase[i] = 4;
- return maybePromise._proxyPromiseArray(this, i);
- } else if (maybePromise._isFulfilled()) {
- ret = maybePromise._value();
- } else {
- return this._reject(maybePromise._reason());
- }
- }
-
- this._reducingIndex = i + 1;
- this._accum = ret;
- }
-
- this._resolve(isEach ? preservedValues : this._accum);
-};
-
-function reduce(promises, fn, initialValue, _each) {
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- var array = new ReductionPromiseArray(promises, fn, initialValue, _each);
- return array.promise();
-}
-
-Promise.prototype.reduce = function (fn, initialValue) {
- return reduce(this, fn, initialValue, null);
-};
-
-Promise.reduce = function (promises, fn, initialValue, _each) {
- return reduce(promises, fn, initialValue, _each);
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/schedule.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/schedule.js
deleted file mode 100644
index 95e2b0051..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/schedule.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-var schedule;
-var util = require("./util");
-var noAsyncScheduler = function() {
- throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
-};
-if (util.isNode && typeof MutationObserver === "undefined") {
- var GlobalSetImmediate = global.setImmediate;
- var ProcessNextTick = process.nextTick;
- schedule = util.isRecentNode
- ? function(fn) { GlobalSetImmediate.call(global, fn); }
- : function(fn) { ProcessNextTick.call(process, fn); };
-} else if (typeof MutationObserver !== "undefined") {
- schedule = function(fn) {
- var div = document.createElement("div");
- var observer = new MutationObserver(fn);
- observer.observe(div, {attributes: true});
- return function() { div.classList.toggle("foo"); };
- };
- schedule.isStatic = true;
-} else if (typeof setImmediate !== "undefined") {
- schedule = function (fn) {
- setImmediate(fn);
- };
-} else if (typeof setTimeout !== "undefined") {
- schedule = function (fn) {
- setTimeout(fn, 0);
- };
-} else {
- schedule = noAsyncScheduler;
-}
-module.exports = schedule;
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/settle.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/settle.js
deleted file mode 100644
index f9299c258..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/settle.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-module.exports =
- function(Promise, PromiseArray) {
-var PromiseInspection = Promise.PromiseInspection;
-var util = require("./util.js");
-
-function SettledPromiseArray(values) {
- this.constructor$(values);
-}
-util.inherits(SettledPromiseArray, PromiseArray);
-
-SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {
- this._values[index] = inspection;
- var totalResolved = ++this._totalResolved;
- if (totalResolved >= this._length) {
- this._resolve(this._values);
- }
-};
-
-SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {
- var ret = new PromiseInspection();
- ret._bitField = 268435456;
- ret._settledValue = value;
- this._promiseResolved(index, ret);
-};
-SettledPromiseArray.prototype._promiseRejected = function (reason, index) {
- var ret = new PromiseInspection();
- ret._bitField = 134217728;
- ret._settledValue = reason;
- this._promiseResolved(index, ret);
-};
-
-Promise.settle = function (promises) {
- return new SettledPromiseArray(promises).promise();
-};
-
-Promise.prototype.settle = function () {
- return new SettledPromiseArray(this).promise();
-};
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/some.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/some.js
deleted file mode 100644
index f3968cf1f..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/some.js
+++ /dev/null
@@ -1,125 +0,0 @@
-"use strict";
-module.exports =
-function(Promise, PromiseArray, apiRejection) {
-var util = require("./util.js");
-var RangeError = require("./errors.js").RangeError;
-var AggregateError = require("./errors.js").AggregateError;
-var isArray = util.isArray;
-
-
-function SomePromiseArray(values) {
- this.constructor$(values);
- this._howMany = 0;
- this._unwrap = false;
- this._initialized = false;
-}
-util.inherits(SomePromiseArray, PromiseArray);
-
-SomePromiseArray.prototype._init = function () {
- if (!this._initialized) {
- return;
- }
- if (this._howMany === 0) {
- this._resolve([]);
- return;
- }
- this._init$(undefined, -5);
- var isArrayResolved = isArray(this._values);
- if (!this._isResolved() &&
- isArrayResolved &&
- this._howMany > this._canPossiblyFulfill()) {
- this._reject(this._getRangeError(this.length()));
- }
-};
-
-SomePromiseArray.prototype.init = function () {
- this._initialized = true;
- this._init();
-};
-
-SomePromiseArray.prototype.setUnwrap = function () {
- this._unwrap = true;
-};
-
-SomePromiseArray.prototype.howMany = function () {
- return this._howMany;
-};
-
-SomePromiseArray.prototype.setHowMany = function (count) {
- this._howMany = count;
-};
-
-SomePromiseArray.prototype._promiseFulfilled = function (value) {
- this._addFulfilled(value);
- if (this._fulfilled() === this.howMany()) {
- this._values.length = this.howMany();
- if (this.howMany() === 1 && this._unwrap) {
- this._resolve(this._values[0]);
- } else {
- this._resolve(this._values);
- }
- }
-
-};
-SomePromiseArray.prototype._promiseRejected = function (reason) {
- this._addRejected(reason);
- if (this.howMany() > this._canPossiblyFulfill()) {
- var e = new AggregateError();
- for (var i = this.length(); i < this._values.length; ++i) {
- e.push(this._values[i]);
- }
- this._reject(e);
- }
-};
-
-SomePromiseArray.prototype._fulfilled = function () {
- return this._totalResolved;
-};
-
-SomePromiseArray.prototype._rejected = function () {
- return this._values.length - this.length();
-};
-
-SomePromiseArray.prototype._addRejected = function (reason) {
- this._values.push(reason);
-};
-
-SomePromiseArray.prototype._addFulfilled = function (value) {
- this._values[this._totalResolved++] = value;
-};
-
-SomePromiseArray.prototype._canPossiblyFulfill = function () {
- return this.length() - this._rejected();
-};
-
-SomePromiseArray.prototype._getRangeError = function (count) {
- var message = "Input array must contain at least " +
- this._howMany + " items but contains only " + count + " items";
- return new RangeError(message);
-};
-
-SomePromiseArray.prototype._resolveEmptyArray = function () {
- this._reject(this._getRangeError(0));
-};
-
-function some(promises, howMany) {
- if ((howMany | 0) !== howMany || howMany < 0) {
- return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/1wAmHx\u000a");
- }
- var ret = new SomePromiseArray(promises);
- var promise = ret.promise();
- ret.setHowMany(howMany);
- ret.init();
- return promise;
-}
-
-Promise.some = function (promises, howMany) {
- return some(promises, howMany);
-};
-
-Promise.prototype.some = function (howMany) {
- return some(this, howMany);
-};
-
-Promise._SomePromiseArray = SomePromiseArray;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/synchronous_inspection.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/synchronous_inspection.js
deleted file mode 100644
index 7aac1496d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/synchronous_inspection.js
+++ /dev/null
@@ -1,94 +0,0 @@
-"use strict";
-module.exports = function(Promise) {
-function PromiseInspection(promise) {
- if (promise !== undefined) {
- promise = promise._target();
- this._bitField = promise._bitField;
- this._settledValue = promise._settledValue;
- }
- else {
- this._bitField = 0;
- this._settledValue = undefined;
- }
-}
-
-PromiseInspection.prototype.value = function () {
- if (!this.isFulfilled()) {
- throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/hc1DLj\u000a");
- }
- return this._settledValue;
-};
-
-PromiseInspection.prototype.error =
-PromiseInspection.prototype.reason = function () {
- if (!this.isRejected()) {
- throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/hPuiwB\u000a");
- }
- return this._settledValue;
-};
-
-PromiseInspection.prototype.isFulfilled =
-Promise.prototype._isFulfilled = function () {
- return (this._bitField & 268435456) > 0;
-};
-
-PromiseInspection.prototype.isRejected =
-Promise.prototype._isRejected = function () {
- return (this._bitField & 134217728) > 0;
-};
-
-PromiseInspection.prototype.isPending =
-Promise.prototype._isPending = function () {
- return (this._bitField & 402653184) === 0;
-};
-
-PromiseInspection.prototype.isResolved =
-Promise.prototype._isResolved = function () {
- return (this._bitField & 402653184) > 0;
-};
-
-Promise.prototype.isPending = function() {
- return this._target()._isPending();
-};
-
-Promise.prototype.isRejected = function() {
- return this._target()._isRejected();
-};
-
-Promise.prototype.isFulfilled = function() {
- return this._target()._isFulfilled();
-};
-
-Promise.prototype.isResolved = function() {
- return this._target()._isResolved();
-};
-
-Promise.prototype._value = function() {
- return this._settledValue;
-};
-
-Promise.prototype._reason = function() {
- this._unsetRejectionIsUnhandled();
- return this._settledValue;
-};
-
-Promise.prototype.value = function() {
- var target = this._target();
- if (!target.isFulfilled()) {
- throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/hc1DLj\u000a");
- }
- return target._settledValue;
-};
-
-Promise.prototype.reason = function() {
- var target = this._target();
- if (!target.isRejected()) {
- throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/hPuiwB\u000a");
- }
- target._unsetRejectionIsUnhandled();
- return target._settledValue;
-};
-
-
-Promise.PromiseInspection = PromiseInspection;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/thenables.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/thenables.js
deleted file mode 100644
index c858f86ab..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/thenables.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var util = require("./util.js");
-var errorObj = util.errorObj;
-var isObject = util.isObject;
-
-function tryConvertToPromise(obj, context) {
- if (isObject(obj)) {
- if (obj instanceof Promise) {
- return obj;
- }
- else if (isAnyBluebirdPromise(obj)) {
- var ret = new Promise(INTERNAL);
- obj._then(
- ret._fulfillUnchecked,
- ret._rejectUncheckedCheckError,
- ret._progressUnchecked,
- ret,
- null
- );
- return ret;
- }
- var then = util.tryCatch(getThen)(obj);
- if (then === errorObj) {
- if (context) context._pushContext();
- var ret = Promise.reject(then.e);
- if (context) context._popContext();
- return ret;
- } else if (typeof then === "function") {
- return doThenable(obj, then, context);
- }
- }
- return obj;
-}
-
-function getThen(obj) {
- return obj.then;
-}
-
-var hasProp = {}.hasOwnProperty;
-function isAnyBluebirdPromise(obj) {
- return hasProp.call(obj, "_promise0");
-}
-
-function doThenable(x, then, context) {
- var promise = new Promise(INTERNAL);
- var ret = promise;
- if (context) context._pushContext();
- promise._captureStackTrace();
- if (context) context._popContext();
- var synchronous = true;
- var result = util.tryCatch(then).call(x,
- resolveFromThenable,
- rejectFromThenable,
- progressFromThenable);
- synchronous = false;
- if (promise && result === errorObj) {
- promise._rejectCallback(result.e, true, true);
- promise = null;
- }
-
- function resolveFromThenable(value) {
- if (!promise) return;
- if (x === value) {
- promise._rejectCallback(
- Promise._makeSelfResolutionError(), false, true);
- } else {
- promise._resolveCallback(value);
- }
- promise = null;
- }
-
- function rejectFromThenable(reason) {
- if (!promise) return;
- promise._rejectCallback(reason, synchronous, true);
- promise = null;
- }
-
- function progressFromThenable(value) {
- if (!promise) return;
- if (typeof promise._progress === "function") {
- promise._progress(value);
- }
- }
- return ret;
-}
-
-return tryConvertToPromise;
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/timers.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/timers.js
deleted file mode 100644
index ecf1b5765..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/timers.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-module.exports = function(Promise, INTERNAL) {
-var util = require("./util.js");
-var TimeoutError = Promise.TimeoutError;
-
-var afterTimeout = function (promise, message) {
- if (!promise.isPending()) return;
- if (typeof message !== "string") {
- message = "operation timed out";
- }
- var err = new TimeoutError(message);
- util.markAsOriginatingFromRejection(err);
- promise._attachExtraTrace(err);
- promise._cancel(err);
-};
-
-var afterValue = function(value) { return delay(+this).thenReturn(value); };
-var delay = Promise.delay = function (value, ms) {
- if (ms === undefined) {
- ms = value;
- value = undefined;
- var ret = new Promise(INTERNAL);
- setTimeout(function() { ret._fulfill(); }, ms);
- return ret;
- }
- ms = +ms;
- return Promise.resolve(value)._then(afterValue, null, null, ms, undefined);
-};
-
-Promise.prototype.delay = function (ms) {
- return delay(this, ms);
-};
-
-function successClear(value) {
- var handle = this;
- if (handle instanceof Number) handle = +handle;
- clearTimeout(handle);
- return value;
-}
-
-function failureClear(reason) {
- var handle = this;
- if (handle instanceof Number) handle = +handle;
- clearTimeout(handle);
- throw reason;
-}
-
-Promise.prototype.timeout = function (ms, message) {
- ms = +ms;
- var ret = this.then().cancellable();
- ret._cancellationParent = this;
- var handle = setTimeout(function timeoutTimeout() {
- afterTimeout(ret, message);
- }, ms);
- return ret._then(successClear, failureClear, undefined, handle, undefined);
-};
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/using.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/using.js
deleted file mode 100644
index 40387117b..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/using.js
+++ /dev/null
@@ -1,202 +0,0 @@
-"use strict";
-module.exports = function (Promise, apiRejection, tryConvertToPromise,
- createContext) {
- var TypeError = require("./errors.js").TypeError;
- var inherits = require("./util.js").inherits;
- var PromiseInspection = Promise.PromiseInspection;
-
- function inspectionMapper(inspections) {
- var len = inspections.length;
- for (var i = 0; i < len; ++i) {
- var inspection = inspections[i];
- if (inspection.isRejected()) {
- return Promise.reject(inspection.error());
- }
- inspections[i] = inspection._settledValue;
- }
- return inspections;
- }
-
- function thrower(e) {
- setTimeout(function(){throw e;}, 0);
- }
-
- function castPreservingDisposable(thenable) {
- var maybePromise = tryConvertToPromise(thenable);
- if (maybePromise !== thenable &&
- typeof thenable._isDisposable === "function" &&
- typeof thenable._getDisposer === "function" &&
- thenable._isDisposable()) {
- maybePromise._setDisposable(thenable._getDisposer());
- }
- return maybePromise;
- }
- function dispose(resources, inspection) {
- var i = 0;
- var len = resources.length;
- var ret = Promise.defer();
- function iterator() {
- if (i >= len) return ret.resolve();
- var maybePromise = castPreservingDisposable(resources[i++]);
- if (maybePromise instanceof Promise &&
- maybePromise._isDisposable()) {
- try {
- maybePromise = tryConvertToPromise(
- maybePromise._getDisposer().tryDispose(inspection),
- resources.promise);
- } catch (e) {
- return thrower(e);
- }
- if (maybePromise instanceof Promise) {
- return maybePromise._then(iterator, thrower,
- null, null, null);
- }
- }
- iterator();
- }
- iterator();
- return ret.promise;
- }
-
- function disposerSuccess(value) {
- var inspection = new PromiseInspection();
- inspection._settledValue = value;
- inspection._bitField = 268435456;
- return dispose(this, inspection).thenReturn(value);
- }
-
- function disposerFail(reason) {
- var inspection = new PromiseInspection();
- inspection._settledValue = reason;
- inspection._bitField = 134217728;
- return dispose(this, inspection).thenThrow(reason);
- }
-
- function Disposer(data, promise, context) {
- this._data = data;
- this._promise = promise;
- this._context = context;
- }
-
- Disposer.prototype.data = function () {
- return this._data;
- };
-
- Disposer.prototype.promise = function () {
- return this._promise;
- };
-
- Disposer.prototype.resource = function () {
- if (this.promise().isFulfilled()) {
- return this.promise().value();
- }
- return null;
- };
-
- Disposer.prototype.tryDispose = function(inspection) {
- var resource = this.resource();
- var context = this._context;
- if (context !== undefined) context._pushContext();
- var ret = resource !== null
- ? this.doDispose(resource, inspection) : null;
- if (context !== undefined) context._popContext();
- this._promise._unsetDisposable();
- this._data = null;
- return ret;
- };
-
- Disposer.isDisposer = function (d) {
- return (d != null &&
- typeof d.resource === "function" &&
- typeof d.tryDispose === "function");
- };
-
- function FunctionDisposer(fn, promise, context) {
- this.constructor$(fn, promise, context);
- }
- inherits(FunctionDisposer, Disposer);
-
- FunctionDisposer.prototype.doDispose = function (resource, inspection) {
- var fn = this.data();
- return fn.call(resource, resource, inspection);
- };
-
- function maybeUnwrapDisposer(value) {
- if (Disposer.isDisposer(value)) {
- this.resources[this.index]._setDisposable(value);
- return value.promise();
- }
- return value;
- }
-
- Promise.using = function () {
- var len = arguments.length;
- if (len < 2) return apiRejection(
- "you must pass at least 2 arguments to Promise.using");
- var fn = arguments[len - 1];
- if (typeof fn !== "function") return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
- len--;
- var resources = new Array(len);
- for (var i = 0; i < len; ++i) {
- var resource = arguments[i];
- if (Disposer.isDisposer(resource)) {
- var disposer = resource;
- resource = resource.promise();
- resource._setDisposable(disposer);
- } else {
- var maybePromise = tryConvertToPromise(resource);
- if (maybePromise instanceof Promise) {
- resource =
- maybePromise._then(maybeUnwrapDisposer, null, null, {
- resources: resources,
- index: i
- }, undefined);
- }
- }
- resources[i] = resource;
- }
-
- var promise = Promise.settle(resources)
- .then(inspectionMapper)
- .then(function(vals) {
- promise._pushContext();
- var ret;
- try {
- ret = fn.apply(undefined, vals);
- } finally {
- promise._popContext();
- }
- return ret;
- })
- ._then(
- disposerSuccess, disposerFail, undefined, resources, undefined);
- resources.promise = promise;
- return promise;
- };
-
- Promise.prototype._setDisposable = function (disposer) {
- this._bitField = this._bitField | 262144;
- this._disposer = disposer;
- };
-
- Promise.prototype._isDisposable = function () {
- return (this._bitField & 262144) > 0;
- };
-
- Promise.prototype._getDisposer = function () {
- return this._disposer;
- };
-
- Promise.prototype._unsetDisposable = function () {
- this._bitField = this._bitField & (~262144);
- this._disposer = undefined;
- };
-
- Promise.prototype.disposer = function (fn) {
- if (typeof fn === "function") {
- return new FunctionDisposer(fn, this, createContext());
- }
- throw new TypeError();
- };
-
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/util.js b/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/util.js
deleted file mode 100644
index fdb7416f9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/js/main/util.js
+++ /dev/null
@@ -1,296 +0,0 @@
-"use strict";
-var es5 = require("./es5.js");
-var canEvaluate = typeof navigator == "undefined";
-var haveGetters = (function(){
- try {
- var o = {};
- es5.defineProperty(o, "f", {
- get: function () {
- return 3;
- }
- });
- return o.f === 3;
- }
- catch (e) {
- return false;
- }
-
-})();
-
-var errorObj = {e: {}};
-var tryCatchTarget;
-function tryCatcher() {
- try {
- return tryCatchTarget.apply(this, arguments);
- } catch (e) {
- errorObj.e = e;
- return errorObj;
- }
-}
-function tryCatch(fn) {
- tryCatchTarget = fn;
- return tryCatcher;
-}
-
-var inherits = function(Child, Parent) {
- var hasProp = {}.hasOwnProperty;
-
- function T() {
- this.constructor = Child;
- this.constructor$ = Parent;
- for (var propertyName in Parent.prototype) {
- if (hasProp.call(Parent.prototype, propertyName) &&
- propertyName.charAt(propertyName.length-1) !== "$"
- ) {
- this[propertyName + "$"] = Parent.prototype[propertyName];
- }
- }
- }
- T.prototype = Parent.prototype;
- Child.prototype = new T();
- return Child.prototype;
-};
-
-
-function isPrimitive(val) {
- return val == null || val === true || val === false ||
- typeof val === "string" || typeof val === "number";
-
-}
-
-function isObject(value) {
- return !isPrimitive(value);
-}
-
-function maybeWrapAsError(maybeError) {
- if (!isPrimitive(maybeError)) return maybeError;
-
- return new Error(safeToString(maybeError));
-}
-
-function withAppended(target, appendee) {
- var len = target.length;
- var ret = new Array(len + 1);
- var i;
- for (i = 0; i < len; ++i) {
- ret[i] = target[i];
- }
- ret[i] = appendee;
- return ret;
-}
-
-function getDataPropertyOrDefault(obj, key, defaultValue) {
- if (es5.isES5) {
- var desc = Object.getOwnPropertyDescriptor(obj, key);
- if (desc != null) {
- return desc.get == null && desc.set == null
- ? desc.value
- : defaultValue;
- }
- } else {
- return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;
- }
-}
-
-function notEnumerableProp(obj, name, value) {
- if (isPrimitive(obj)) return obj;
- var descriptor = {
- value: value,
- configurable: true,
- enumerable: false,
- writable: true
- };
- es5.defineProperty(obj, name, descriptor);
- return obj;
-}
-
-
-var wrapsPrimitiveReceiver = (function() {
- return this !== "string";
-}).call("string");
-
-function thrower(r) {
- throw r;
-}
-
-var inheritedDataKeys = (function() {
- if (es5.isES5) {
- var oProto = Object.prototype;
- var getKeys = Object.getOwnPropertyNames;
- return function(obj) {
- var ret = [];
- var visitedKeys = Object.create(null);
- while (obj != null && obj !== oProto) {
- var keys;
- try {
- keys = getKeys(obj);
- } catch (e) {
- return ret;
- }
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- if (visitedKeys[key]) continue;
- visitedKeys[key] = true;
- var desc = Object.getOwnPropertyDescriptor(obj, key);
- if (desc != null && desc.get == null && desc.set == null) {
- ret.push(key);
- }
- }
- obj = es5.getPrototypeOf(obj);
- }
- return ret;
- };
- } else {
- return function(obj) {
- var ret = [];
- /*jshint forin:false */
- for (var key in obj) {
- ret.push(key);
- }
- return ret;
- };
- }
-
-})();
-
-var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/;
-function isClass(fn) {
- try {
- if (typeof fn === "function") {
- var keys = es5.names(fn.prototype);
- if (((es5.isES5 && keys.length > 1) ||
- (keys.length > 0 &&
- !(keys.length === 1 && keys[0] === "constructor"))) ||
- thisAssignmentPattern.test(fn + "")) {
- return true;
- }
- }
- return false;
- } catch (e) {
- return false;
- }
-}
-
-function toFastProperties(obj) {
- /*jshint -W027,-W055,-W031*/
- function f() {}
- f.prototype = obj;
- var l = 8;
- while (l--) new f();
- return obj;
- eval(obj);
-}
-
-var rident = /^[a-z$_][a-z$_0-9]*$/i;
-function isIdentifier(str) {
- return rident.test(str);
-}
-
-function filledRange(count, prefix, suffix) {
- var ret = new Array(count);
- for(var i = 0; i < count; ++i) {
- ret[i] = prefix + i + suffix;
- }
- return ret;
-}
-
-function safeToString(obj) {
- try {
- return obj + "";
- } catch (e) {
- return "[no string representation]";
- }
-}
-
-function markAsOriginatingFromRejection(e) {
- try {
- notEnumerableProp(e, "isOperational", true);
- }
- catch(ignore) {}
-}
-
-function originatesFromRejection(e) {
- if (e == null) return false;
- return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) ||
- e["isOperational"] === true);
-}
-
-function canAttachTrace(obj) {
- return obj instanceof Error && es5.propertyIsWritable(obj, "stack");
-}
-
-var ensureErrorObject = (function() {
- if (!("stack" in new Error())) {
- return function(value) {
- if (canAttachTrace(value)) return value;
- try {throw new Error(safeToString(value));}
- catch(err) {return err;}
- };
- } else {
- return function(value) {
- if (canAttachTrace(value)) return value;
- return new Error(safeToString(value));
- };
- }
-})();
-
-function classString(obj) {
- return {}.toString.call(obj);
-}
-
-function copyDescriptors(from, to, filter) {
- var keys = es5.names(from);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- if (filter(key)) {
- es5.defineProperty(to, key, es5.getDescriptor(from, key));
- }
- }
-}
-
-function isNativeFunctionMethod(fn) {
- return fn === fn.call ||
- fn === fn.toString ||
- fn === fn.bind ||
- fn === fn.apply;
-}
-
-var ret = {
- isClass: isClass,
- isIdentifier: isIdentifier,
- inheritedDataKeys: inheritedDataKeys,
- getDataPropertyOrDefault: getDataPropertyOrDefault,
- thrower: thrower,
- isArray: es5.isArray,
- haveGetters: haveGetters,
- notEnumerableProp: notEnumerableProp,
- isPrimitive: isPrimitive,
- isObject: isObject,
- canEvaluate: canEvaluate,
- errorObj: errorObj,
- tryCatch: tryCatch,
- inherits: inherits,
- withAppended: withAppended,
- maybeWrapAsError: maybeWrapAsError,
- wrapsPrimitiveReceiver: wrapsPrimitiveReceiver,
- toFastProperties: toFastProperties,
- filledRange: filledRange,
- toString: safeToString,
- canAttachTrace: canAttachTrace,
- ensureErrorObject: ensureErrorObject,
- originatesFromRejection: originatesFromRejection,
- markAsOriginatingFromRejection: markAsOriginatingFromRejection,
- classString: classString,
- copyDescriptors: copyDescriptors,
- hasDevTools: typeof chrome !== "undefined" && chrome &&
- typeof chrome.loadTimes === "function",
- isNode: typeof process !== "undefined" &&
- classString(process).toLowerCase() === "[object process]",
- isNativeFunctionMethod: isNativeFunctionMethod
-};
-ret.isRecentNode = ret.isNode && (function() {
- var version = process.versions.node.split(".").map(Number);
- return (version[0] === 0 && version[1] > 10) || (version[0] > 0);
-})();
-try {throw new Error(); } catch (e) {ret.lastLineError = e;}
-module.exports = ret;
diff --git a/node_modules/request/node_modules/har-validator/node_modules/bluebird/package.json b/node_modules/request/node_modules/har-validator/node_modules/bluebird/package.json
deleted file mode 100644
index 3b4c5ea88..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/bluebird/package.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "bluebird",
- "description": "Full featured Promises/A+ implementation with exceptionally good performance",
- "version": "2.9.30",
- "keywords": [
- "promise",
- "performance",
- "promises",
- "promises-a",
- "promises-aplus",
- "async",
- "await",
- "deferred",
- "deferreds",
- "future",
- "flow control",
- "dsl",
- "fluent interface"
- ],
- "scripts": {
- "lint": "node scripts/jshint.js",
- "test": "node tools/test.js",
- "istanbul": "istanbul",
- "prepublish": "node tools/build.js --no-debug --main --zalgo --browser --minify"
- },
- "homepage": "https://github.com/petkaantonov/bluebird",
- "repository": {
- "type": "git",
- "url": "git://github.com/petkaantonov/bluebird.git"
- },
- "bugs": {
- "url": "http://github.com/petkaantonov/bluebird/issues"
- },
- "license": "MIT",
- "author": {
- "name": "Petka Antonov",
- "email": "petka_antonov@hotmail.com",
- "url": "http://github.com/petkaantonov/"
- },
- "devDependencies": {
- "acorn": "~0.6.0",
- "baconjs": "^0.7.43",
- "bluebird": "^2.9.2",
- "body-parser": "^1.10.2",
- "browserify": "^8.1.1",
- "cli-table": "~0.3.1",
- "co": "^4.2.0",
- "cross-spawn": "^0.2.3",
- "glob": "^4.3.2",
- "grunt-saucelabs": "~8.4.1",
- "highland": "^2.3.0",
- "istanbul": "^0.3.5",
- "jshint": "^2.6.0",
- "jshint-stylish": "~0.2.0",
- "mkdirp": "~0.5.0",
- "mocha": "~2.1",
- "open": "~0.0.5",
- "optimist": "~0.6.1",
- "rimraf": "~2.2.6",
- "rx": "^2.3.25",
- "serve-static": "^1.7.1",
- "sinon": "~1.7.3",
- "uglify-js": "~2.4.16",
- "kefir": "^2.4.1"
- },
- "main": "./js/main/bluebird.js",
- "browser": "./js/browser/bluebird.js",
- "files": [
- "js/browser",
- "js/main",
- "js/zalgo",
- "LICENSE",
- "zalgo.js"
- ],
- "gitHead": "808ad89efab27c6eb3d63dcb4198c5732ab51c29",
- "_id": "bluebird@2.9.30",
- "_shasum": "edda875ec9aad1f29cf1f56d6e82fbab2b0df556",
- "_from": "bluebird@>=2.9.26 <3.0.0",
- "_npmVersion": "2.11.1",
- "_nodeVersion": "2.3.0",
- "_npmUser": {
- "name": "esailija",
- "email": "petka_antonov@hotmail.com"
- },
- "maintainers": [
- {
- "name": "esailija",
- "email": "petka_antonov@hotmail.com"
- }
- ],
- "dist": {
- "shasum": "edda875ec9aad1f29cf1f56d6e82fbab2b0df556",
- "tarball": "http://registry.npmjs.org/bluebird/-/bluebird-2.9.30.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.30.tgz"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js
deleted file mode 100644
index 4138a64dd..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js
+++ /dev/null
@@ -1,100 +0,0 @@
-'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;
-
-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 (process.platform === 'win32') {
- ansiStyles.blue.open = '\u001b[94m';
-}
-
-function build(_styles) {
- var builder = function builder() {
- 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.
- builder.__proto__ = proto;
- return builder;
-}
-
-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 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;
- }
-
- /*jshint validthis: true */
- var nestedStyles = this._styles;
-
- var i = nestedStyles.length;
- 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;
- }
-
- 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/request/node_modules/har-validator/node_modules/chalk/license b/node_modules/request/node_modules/har-validator/node_modules/chalk/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/has-ansi b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/has-ansi
deleted file mode 120000
index c1e7413f1..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/has-ansi
+++ /dev/null
@@ -1 +0,0 @@
-../has-ansi/cli.js \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/supports-color b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/supports-color
deleted file mode 120000
index af0f05efe..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/.bin/supports-color
+++ /dev/null
@@ -1 +0,0 @@
-../supports-color/cli.js \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js
deleted file mode 100644
index caf9e119e..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-var styles = module.exports = {
- 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
- });
-});
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json
deleted file mode 100644
index 3ae71e3ab..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "ansi-styles",
- "version": "2.0.1",
- "description": "ANSI escape codes for styling strings in the terminal",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/ansi-styles.git"
- },
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "maintainers": [
- {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- {
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "http://jbnicolai.com"
- }
- ],
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "devDependencies": {
- "mocha": "*"
- },
- "readme": "# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-styles)\n\n> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![](screenshot.png)\n\n\n## Install\n\n```sh\n$ npm install --save ansi-styles\n```\n\n\n## Usage\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green.open + 'Hello world!' + ansi.green.close);\n```\n\n\n## API\n\nEach style has an `open` and `close` property.\n\n\n## Styles\n\n### Modifiers\n\n- `reset`\n- `bold`\n- `dim`\n- `italic` *(not widely supported)*\n- `underline`\n- `inverse`\n- `hidden`\n- `strikethrough` *(not widely supported)*\n\n### Colors\n\n- `black`\n- `red`\n- `green`\n- `yellow`\n- `blue`\n- `magenta`\n- `cyan`\n- `white`\n- `gray`\n\n### Background colors\n\n- `bgBlack`\n- `bgRed`\n- `bgGreen`\n- `bgYellow`\n- `bgBlue`\n- `bgMagenta`\n- `bgCyan`\n- `bgWhite`\n\n\n## Advanced usage\n\nBy 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.\n\n- `ansi.modifiers`\n- `ansi.colors`\n- `ansi.bgColors`\n\n\n###### Example\n\n```js\nconsole.log(ansi.colors.green.open);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/sindresorhus/ansi-styles/issues"
- },
- "homepage": "https://github.com/sindresorhus/ansi-styles#readme",
- "_id": "ansi-styles@2.0.1",
- "_shasum": "b033f57f93e2d28adeb8bc11138fa13da0fd20a3",
- "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz",
- "_from": "ansi-styles@>=2.0.1 <3.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md
deleted file mode 100644
index 89ec6a7c1..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/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/sindresorhus/chalk) module for styling your strings.
-
-![](screenshot.png)
-
-
-## Install
-
-```sh
-$ 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/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js
deleted file mode 100644
index ac6572cab..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'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/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json
deleted file mode 100644
index b2bafb26a..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "name": "escape-string-regexp",
- "version": "1.0.3",
- "description": "Escape RegExp special characters",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/escape-string-regexp.git"
- },
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "maintainers": [
- {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- {
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "http://jbnicolai.com"
- }
- ],
- "engines": {
- "node": ">=0.8.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "regex",
- "regexp",
- "re",
- "regular",
- "expression",
- "escape",
- "string",
- "str",
- "special",
- "characters"
- ],
- "devDependencies": {
- "mocha": "*"
- },
- "readme": "# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)\n\n> Escape RegExp special characters\n\n\n## Install\n\n```sh\n$ npm install --save escape-string-regexp\n```\n\n\n## Usage\n\n```js\nvar escapeStringRegexp = require('escape-string-regexp');\n\nvar escapedString = escapeStringRegexp('how much $ for a unicorn?');\n//=> how much \\$ for a unicorn\\?\n\nnew RegExp(escapedString);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/sindresorhus/escape-string-regexp/issues"
- },
- "homepage": "https://github.com/sindresorhus/escape-string-regexp#readme",
- "_id": "escape-string-regexp@1.0.3",
- "_shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5",
- "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz",
- "_from": "escape-string-regexp@>=1.0.2 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md
deleted file mode 100644
index 808a963a8..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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
-
-```sh
-$ npm install --save escape-string-regexp
-```
-
-
-## Usage
-
-```js
-var escapeStringRegexp = require('escape-string-regexp');
-
-var 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/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/cli.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/cli.js
deleted file mode 100755
index 0386a8242..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/cli.js
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-var stdin = require('get-stdin');
-var pkg = require('./package.json');
-var hasAnsi = require('./');
-var argv = process.argv.slice(2);
-var input = argv[0];
-
-function help() {
- console.log([
- '',
- ' ' + pkg.description,
- '',
- ' Usage',
- ' has-ansi <string>',
- ' echo <string> | has-ansi',
- '',
- ' Exits with code 0 if input has ANSI escape codes and 1 if not'
- ].join('\n'));
-}
-
-function init(data) {
- process.exit(hasAnsi(data) ? 0 : 1);
-}
-
-if (argv.indexOf('--help') !== -1) {
- help();
- return;
-}
-
-if (argv.indexOf('--version') !== -1) {
- console.log(pkg.version);
- return;
-}
-
-if (process.stdin.isTTY) {
- if (!input) {
- help();
- return;
- }
-
- init(input);
-} else {
- stdin(init);
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js
deleted file mode 100644
index 98fae0676..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'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/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js
deleted file mode 100644
index 0f1aeb3df..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict';
-
-module.exports = function (cb) {
- var stdin = process.stdin;
- var ret = '';
-
- if (stdin.isTTY) {
- setImmediate(cb, '');
- return;
- }
-
- stdin.setEncoding('utf8');
-
- stdin.on('readable', function () {
- var chunk;
-
- while (chunk = stdin.read()) {
- ret += chunk;
- }
- });
-
- stdin.on('end', function () {
- cb(ret);
- });
-};
-
-module.exports.buffer = function (cb) {
- var stdin = process.stdin;
- var ret = [];
- var len = 0;
-
- if (stdin.isTTY) {
- setImmediate(cb, new Buffer(''));
- return;
- }
-
- stdin.on('readable', function () {
- var chunk;
-
- while (chunk = stdin.read()) {
- ret.push(chunk);
- len += chunk.length;
- }
- });
-
- stdin.on('end', function () {
- cb(Buffer.concat(ret, len));
- });
-};
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json
deleted file mode 100644
index 0075a2213..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "get-stdin",
- "version": "4.0.1",
- "description": "Easier stdin",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/get-stdin.git"
- },
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "node test.js && node test-buffer.js && echo unicorns | node test-real.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "std",
- "stdin",
- "stdio",
- "concat",
- "buffer",
- "stream",
- "process",
- "stream"
- ],
- "devDependencies": {
- "ava": "0.0.4",
- "buffer-equal": "0.0.1"
- },
- "readme": "# get-stdin [![Build Status](https://travis-ci.org/sindresorhus/get-stdin.svg?branch=master)](https://travis-ci.org/sindresorhus/get-stdin)\n\n> Easier stdin\n\n\n## Install\n\n```sh\n$ npm install --save get-stdin\n```\n\n\n## Usage\n\n```js\n// example.js\nvar stdin = require('get-stdin');\n\nstdin(function (data) {\n\tconsole.log(data);\n\t//=> unicorns\n});\n```\n\n```sh\n$ echo unicorns | node example.js\nunicorns\n```\n\n\n## API\n\n### stdin(callback)\n\nGet `stdin` as a string.\n\n### stdin.buffer(callback)\n\nGet `stdin` as a buffer.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/sindresorhus/get-stdin/issues"
- },
- "homepage": "https://github.com/sindresorhus/get-stdin#readme",
- "_id": "get-stdin@4.0.1",
- "_shasum": "b968c6b0a04384324902e8bf1a5df32579a450fe",
- "_resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "_from": "get-stdin@>=4.0.1 <5.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md
deleted file mode 100644
index bc1d32a8a..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# get-stdin [![Build Status](https://travis-ci.org/sindresorhus/get-stdin.svg?branch=master)](https://travis-ci.org/sindresorhus/get-stdin)
-
-> Easier stdin
-
-
-## Install
-
-```sh
-$ npm install --save get-stdin
-```
-
-
-## Usage
-
-```js
-// example.js
-var stdin = require('get-stdin');
-
-stdin(function (data) {
- console.log(data);
- //=> unicorns
-});
-```
-
-```sh
-$ echo unicorns | node example.js
-unicorns
-```
-
-
-## API
-
-### stdin(callback)
-
-Get `stdin` as a string.
-
-### stdin.buffer(callback)
-
-Get `stdin` as a buffer.
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json
deleted file mode 100644
index 11bcab998..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "has-ansi",
- "version": "1.0.3",
- "description": "Check if a string has ANSI escape codes",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/has-ansi.git"
- },
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "maintainers": [
- {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- {
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "http://jbnicolai.com"
- }
- ],
- "bin": {
- "has-ansi": "cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "files": [
- "index.js",
- "cli.js"
- ],
- "keywords": [
- "cli",
- "bin",
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "string",
- "tty",
- "escape",
- "shell",
- "xterm",
- "command-line",
- "text",
- "regex",
- "regexp",
- "re",
- "match",
- "test",
- "find",
- "pattern",
- "has"
- ],
- "dependencies": {
- "ansi-regex": "^1.1.0",
- "get-stdin": "^4.0.1"
- },
- "devDependencies": {
- "mocha": "*"
- },
- "readme": "# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi)\n\n> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save has-ansi\n```\n\n\n## Usage\n\n```js\nvar hasAnsi = require('has-ansi');\n\nhasAnsi('\\u001b[4mcake\\u001b[0m');\n//=> true\n\nhasAnsi('cake');\n//=> false\n```\n\n\n## CLI\n\n```sh\n$ npm install --global has-ansi\n```\n\n```\n$ has-ansi --help\n\n Usage\n has-ansi <string>\n echo <string> | has-ansi\n\n Exits with code 0 if input has ANSI escape codes and 1 if not\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/sindresorhus/has-ansi/issues"
- },
- "homepage": "https://github.com/sindresorhus/has-ansi#readme",
- "_id": "has-ansi@1.0.3",
- "_shasum": "c0b5b1615d9e382b0ff67169d967b425e48ca538",
- "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz",
- "_from": "has-ansi@>=1.0.3 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md
deleted file mode 100644
index 0fa149a82..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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
-
-```sh
-$ npm install --save has-ansi
-```
-
-
-## Usage
-
-```js
-var hasAnsi = require('has-ansi');
-
-hasAnsi('\u001b[4mcake\u001b[0m');
-//=> true
-
-hasAnsi('cake');
-//=> false
-```
-
-
-## CLI
-
-```sh
-$ npm install --global has-ansi
-```
-
-```
-$ has-ansi --help
-
- Usage
- has-ansi <string>
- echo <string> | has-ansi
-
- Exits with code 0 if input has ANSI escape codes and 1 if not
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/cli.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/cli.js
deleted file mode 100755
index e74698766..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/cli.js
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-var pkg = require('./package.json');
-var supportsColor = require('./');
-var argv = process.argv.slice(2);
-
-function help() {
- console.log([
- '',
- ' ' + pkg.description,
- '',
- ' Usage',
- ' supports-color',
- '',
- ' Exits with code 0 if color is supported and 1 if not'
- ].join('\n'));
-}
-
-if (argv.indexOf('--help') !== -1) {
- help();
- return;
-}
-
-if (argv.indexOf('--version') !== -1) {
- console.log(pkg.version);
- return;
-}
-
-process.exit(supportsColor ? 0 : 1);
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js
deleted file mode 100644
index a17196485..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-var argv = process.argv;
-
-module.exports = (function () {
- if ('FORCE_COLOR' in process.env) {
- return true;
- }
-
- if (argv.indexOf('--no-color') !== -1 ||
- argv.indexOf('--no-colors') !== -1 ||
- argv.indexOf('--color=false') !== -1) {
- return false;
- }
-
- if (argv.indexOf('--color') !== -1 ||
- argv.indexOf('--colors') !== -1 ||
- argv.indexOf('--color=true') !== -1 ||
- argv.indexOf('--color=always') !== -1) {
- 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/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json
deleted file mode 100644
index ca9b2c42e..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "supports-color",
- "version": "1.3.1",
- "description": "Detect whether a terminal supports color",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/supports-color.git"
- },
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "maintainers": [
- {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- {
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "jbnicolai.com"
- }
- ],
- "bin": {
- "supports-color": "cli.js"
- },
- "engines": {
- "node": ">=0.8.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "files": [
- "index.js",
- "cli.js"
- ],
- "keywords": [
- "cli",
- "bin",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "ansi",
- "styles",
- "tty",
- "rgb",
- "256",
- "shell",
- "xterm",
- "command-line",
- "support",
- "supports",
- "capability",
- "detect"
- ],
- "devDependencies": {
- "mocha": "*",
- "require-uncached": "^1.0.2"
- },
- "readme": "# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color)\n\n> Detect whether a terminal supports color\n\n\n## Install\n\n```\n$ npm install --save supports-color\n```\n\n\n## Usage\n\n```js\nvar supportsColor = require('supports-color');\n\nif (supportsColor) {\n\tconsole.log('Terminal supports color');\n}\n```\n\nIt obeys the `--color` and `--no-color` CLI flags.\n\nFor situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.\n\n\n## CLI\n\n```\n$ npm install --global supports-color\n```\n\n```\n$ supports-color --help\n\n Usage\n supports-color\n\n Exits with code 0 if color is supported and 1 if not\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/sindresorhus/supports-color/issues"
- },
- "homepage": "https://github.com/sindresorhus/supports-color#readme",
- "_id": "supports-color@1.3.1",
- "_shasum": "15758df09d8ff3b4acc307539fabe27095e1042d",
- "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz",
- "_from": "supports-color@>=1.3.0 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md b/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md
deleted file mode 100644
index fe6016f9d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/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`.
-
-
-## CLI
-
-```
-$ npm install --global supports-color
-```
-
-```
-$ supports-color --help
-
- Usage
- supports-color
-
- Exits with code 0 if color is supported and 1 if not
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json b/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json
deleted file mode 100644
index ce07ec6e4..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "chalk",
- "version": "1.0.0",
- "description": "Terminal string styling done right. Much color.",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/chalk.git"
- },
- "maintainers": [
- {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- {
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "http://jbnicolai.com"
- }
- ],
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha",
- "bench": "matcha benchmark.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "string",
- "ansi",
- "styles",
- "tty",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "dependencies": {
- "ansi-styles": "^2.0.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^1.0.3",
- "strip-ansi": "^2.0.1",
- "supports-color": "^1.3.0"
- },
- "devDependencies": {
- "matcha": "^0.6.0",
- "mocha": "*"
- },
- "readme": "<h1 align=\"center\">\n\t<br>\n\t<img width=\"360\" src=\"https://cdn.rawgit.com/sindresorhus/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg\" alt=\"chalk\">\n\t<br>\n\t<br>\n</h1>\n\n> Terminal string styling done right\n\n[![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) [![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg?style=flat)](https://www.youtube.com/watch?v=Sm368W0OsHo)\n\n[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.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](https://github.com/sindresorhus/ansi-styles/raw/master/screenshot.png)\n\n\n## Why\n\n- Highly performant\n- Doesn't extend `String.prototype`\n- Expressive API\n- Ability to nest styles\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n- [Used by ~3000 modules](https://www.npmjs.com/browse/depended/chalk)\n\n\n## Install\n\n```\n$ npm install --save chalk\n```\n\n\n## Usage\n\nChalk comes with an easy to use composable API where you just chain and nest the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nchalk.blue('Hello world!');\n\n// combine styled and normal strings\nchalk.blue('Hello') + 'World' + chalk.red('!');\n\n// compose multiple styles using the chainable API\nchalk.blue.bgRed.bold('Hello world!');\n\n// pass in multiple arguments\nchalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz');\n\n// nest styles\nchalk.red('Hello', chalk.underline.bgBlue('world') + '!');\n\n// nest styles of the same type even (color, underline, background)\nchalk.green(\n\t'I am a green line ' +\n\tchalk.blue.underline.bold('with a blue substring') +\n\t' that becomes green again!'\n);\n```\n\nEasily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\nTake advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data).\n\n```js\nvar name = 'Sindre';\nconsole.log(chalk.green('Hello %s'), name);\n//=> Hello Sindre\n```\n\n\n## API\n\n### chalk.`<style>[.<style>...](string, [string...])`\n\nExample: `chalk.red.bold.underline('Hello', 'world');`\n\nChain [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`.\n\nMultiple arguments will be separated by space.\n\n### chalk.enabled\n\nColor 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.\n\nIf you need to change this in a reusable module create a new instance:\n\n```js\nvar ctx = new chalk.constructor({enabled: false});\n```\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/supports-color). Used internally and handled for you, but exposed for convenience.\n\nCan 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`.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\nGenerally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with your own.\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> {open: '\\u001b[31m', close: '\\u001b[39m'}\n\nconsole.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);\n```\n\n### chalk.hasColor(string)\n\nCheck whether a string [has color](https://github.com/sindresorhus/has-ansi).\n\n### chalk.stripColor(string)\n\n[Strip color](https://github.com/sindresorhus/strip-ansi) from a string.\n\nCan be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.\n\nExample:\n\n```js\nvar chalk = require('chalk');\nvar styledString = getText();\n\nif (!chalk.supportsColor) {\n\tstyledString = chalk.stripColor(styledString);\n}\n```\n\n\n## Styles\n\n### Modifiers\n\n- `reset`\n- `bold`\n- `dim`\n- `italic` *(not widely supported)*\n- `underline`\n- `inverse`\n- `hidden`\n- `strikethrough` *(not widely supported)*\n\n### Colors\n\n- `black`\n- `red`\n- `green`\n- `yellow`\n- `blue` *(on Windows the bright version is used as normal blue is illegible)*\n- `magenta`\n- `cyan`\n- `white`\n- `gray`\n\n### Background colors\n\n- `bgBlack`\n- `bgRed`\n- `bgGreen`\n- `bgYellow`\n- `bgBlue`\n- `bgMagenta`\n- `bgCyan`\n- `bgWhite`\n\n\n## 256-colors\n\nChalk does not support 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.\n\n\n## Windows\n\nIf you're on Windows, do yourself a favor and use [`cmder`](http://bliker.github.io/cmder/) instead of `cmd.exe`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/sindresorhus/chalk/issues"
- },
- "homepage": "https://github.com/sindresorhus/chalk#readme",
- "_id": "chalk@1.0.0",
- "_shasum": "b3cf4ed0ff5397c99c75b8f679db2f52831f96dc",
- "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz",
- "_from": "chalk@>=1.0.0 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md b/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md
deleted file mode 100644
index 43c706433..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md
+++ /dev/null
@@ -1,197 +0,0 @@
-<h1 align="center">
- <br>
- <img width="360" src="https://cdn.rawgit.com/sindresorhus/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg" alt="chalk">
- <br>
- <br>
-</h1>
-
-> Terminal string styling done right
-
-[![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) [![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg?style=flat)](https://www.youtube.com/watch?v=Sm368W0OsHo)
-
-[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.**
-
-![screenshot](https://github.com/sindresorhus/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 ~3000 modules](https://www.npmjs.com/browse/depended/chalk)
-
-
-## 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/sindresorhus/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/sindresorhus/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/sindresorhus/has-ansi).
-
-### chalk.stripColor(string)
-
-[Strip color](https://github.com/sindresorhus/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 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`.
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/History.md b/node_modules/request/node_modules/har-validator/node_modules/commander/History.md
deleted file mode 100644
index 7b8b2c494..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/History.md
+++ /dev/null
@@ -1,256 +0,0 @@
-
-2.8.1 / 2015-04-22
-==================
-
- * Back out `support multiline description` Close #396 #397
-
-
-
-2.8.0 / 2015-04-07
-==================
-
- * Add `process.execArg` support, execution args like `--harmony` will be passed to sub-commands #387 @DigitalIO @zhiyelee
- * Fix bug in Git-style sub-commands #372 @zhiyelee
- * Allow commands to be hidden from help #383 @tonylukasavage
- * When git-style sub-commands are in use, yet none are called, display help #382 @claylo
- * Add ability to specify arguments syntax for top-level command #258 @rrthomas
- * Support multiline descriptions #208 @zxqfox
-
-2.7.1 / 2015-03-11
-==================
-
- * Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367.
-
-2.7.0 / 2015-03-09
-==================
-
- * Fix git-style bug when installed globally. Close #335 #349 @zhiyelee
- * Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage
- * Add support for camelCase on `opts()`. Close #353 @nkzawa
- * Add node.js 0.12 and io.js to travis.yml
- * Allow RegEx options. #337 @palanik
- * Fixes exit code when sub-command failing. Close #260 #332 @pirelenito
- * git-style `bin` files in $PATH make sense. Close #196 #327 @zhiyelee
-
-2.6.0 / 2014-12-30
-==================
-
- * added `Command#allowUnknownOption` method. Close #138 #318 @doozr @zhiyelee
- * Add application description to the help msg. Close #112 @dalssoft
-
-2.5.1 / 2014-12-15
-==================
-
- * fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee
-
-2.5.0 / 2014-10-24
-==================
-
- * add support for variadic arguments. Closes #277 @whitlockjc
-
-2.4.0 / 2014-10-17
-==================
-
- * fixed a bug on executing the coercion function of subcommands option. Closes #270
- * added `Command.prototype.name` to retrieve command name. Closes #264 #266 @tonylukasavage
- * added `Command.prototype.opts` to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage
- * fixed a bug on subcommand name. Closes #248 @jonathandelgado
- * fixed function normalize doesn’t honor option terminator. Closes #216 @abbr
-
-2.3.0 / 2014-07-16
-==================
-
- * add command alias'. Closes PR #210
- * fix: Typos. Closes #99
- * fix: Unused fs module. Closes #217
-
-2.2.0 / 2014-03-29
-==================
-
- * add passing of previous option value
- * fix: support subcommands on windows. Closes #142
- * Now the defaultValue passed as the second argument of the coercion function.
-
-2.1.0 / 2013-11-21
-==================
-
- * add: allow cflag style option params, unit test, fixes #174
-
-2.0.0 / 2013-07-18
-==================
-
- * remove input methods (.prompt, .confirm, etc)
-
-1.3.2 / 2013-07-18
-==================
-
- * add support for sub-commands to co-exist with the original command
-
-1.3.1 / 2013-07-18
-==================
-
- * add quick .runningCommand hack so you can opt-out of other logic when running a sub command
-
-1.3.0 / 2013-07-09
-==================
-
- * add EACCES error handling
- * fix sub-command --help
-
-1.2.0 / 2013-06-13
-==================
-
- * allow "-" hyphen as an option argument
- * support for RegExp coercion
-
-1.1.1 / 2012-11-20
-==================
-
- * add more sub-command padding
- * fix .usage() when args are present. Closes #106
-
-1.1.0 / 2012-11-16
-==================
-
- * add git-style executable subcommand support. Closes #94
-
-1.0.5 / 2012-10-09
-==================
-
- * fix `--name` clobbering. Closes #92
- * fix examples/help. Closes #89
-
-1.0.4 / 2012-09-03
-==================
-
- * add `outputHelp()` method.
-
-1.0.3 / 2012-08-30
-==================
-
- * remove invalid .version() defaulting
-
-1.0.2 / 2012-08-24
-==================
-
- * add `--foo=bar` support [arv]
- * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus]
-
-1.0.1 / 2012-08-03
-==================
-
- * fix issue #56
- * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode())
-
-1.0.0 / 2012-07-05
-==================
-
- * add support for optional option descriptions
- * add defaulting of `.version()` to package.json's version
-
-0.6.1 / 2012-06-01
-==================
-
- * Added: append (yes or no) on confirmation
- * Added: allow node.js v0.7.x
-
-0.6.0 / 2012-04-10
-==================
-
- * Added `.prompt(obj, callback)` support. Closes #49
- * Added default support to .choose(). Closes #41
- * Fixed the choice example
-
-0.5.1 / 2011-12-20
-==================
-
- * Fixed `password()` for recent nodes. Closes #36
-
-0.5.0 / 2011-12-04
-==================
-
- * Added sub-command option support [itay]
-
-0.4.3 / 2011-12-04
-==================
-
- * Fixed custom help ordering. Closes #32
-
-0.4.2 / 2011-11-24
-==================
-
- * Added travis support
- * Fixed: line-buffered input automatically trimmed. Closes #31
-
-0.4.1 / 2011-11-18
-==================
-
- * Removed listening for "close" on --help
-
-0.4.0 / 2011-11-15
-==================
-
- * Added support for `--`. Closes #24
-
-0.3.3 / 2011-11-14
-==================
-
- * Fixed: wait for close event when writing help info [Jerry Hamlet]
-
-0.3.2 / 2011-11-01
-==================
-
- * Fixed long flag definitions with values [felixge]
-
-0.3.1 / 2011-10-31
-==================
-
- * Changed `--version` short flag to `-V` from `-v`
- * Changed `.version()` so it's configurable [felixge]
-
-0.3.0 / 2011-10-31
-==================
-
- * Added support for long flags only. Closes #18
-
-0.2.1 / 2011-10-24
-==================
-
- * "node": ">= 0.4.x < 0.7.0". Closes #20
-
-0.2.0 / 2011-09-26
-==================
-
- * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs]
-
-0.1.0 / 2011-08-24
-==================
-
- * Added support for custom `--help` output
-
-0.0.5 / 2011-08-18
-==================
-
- * Changed: when the user enters nothing prompt for password again
- * Fixed issue with passwords beginning with numbers [NuckChorris]
-
-0.0.4 / 2011-08-15
-==================
-
- * Fixed `Commander#args`
-
-0.0.3 / 2011-08-15
-==================
-
- * Added default option value support
-
-0.0.2 / 2011-08-15
-==================
-
- * Added mask support to `Command#password(str[, mask], fn)`
- * Added `Command#password(str, fn)`
-
-0.0.1 / 2010-01-03
-==================
-
- * Initial release
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/LICENSE b/node_modules/request/node_modules/har-validator/node_modules/commander/LICENSE
deleted file mode 100644
index 10f997ab1..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>
-
-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/request/node_modules/har-validator/node_modules/commander/Readme.md b/node_modules/request/node_modules/har-validator/node_modules/commander/Readme.md
deleted file mode 100644
index af58e22c9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/Readme.md
+++ /dev/null
@@ -1,342 +0,0 @@
-# Commander.js
-
-
-[![Build Status](https://api.travis-ci.org/tj/commander.js.svg)](http://travis-ci.org/tj/commander.js)
-[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander)
-[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://www.npmjs.org/package/commander)
-[![Join the chat at https://gitter.im/tj/commander.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tj/commander.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
- The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/tj/commander).
- [API documentation](http://tj.github.com/commander.js/)
-
-
-## Installation
-
- $ npm install commander
-
-## Option parsing
-
- Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('commander');
-
-program
- .version('0.0.1')
- .option('-p, --peppers', 'Add peppers')
- .option('-P, --pineapple', 'Add pineapple')
- .option('-b, --bbq-sauce', 'Add bbq sauce')
- .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
- .parse(process.argv);
-
-console.log('you ordered a pizza with:');
-if (program.peppers) console.log(' - peppers');
-if (program.pineapple) console.log(' - pineapple');
-if (program.bbqSauce) console.log(' - bbq');
-console.log(' - %s cheese', program.cheese);
-```
-
- Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc.
-
-
-## Coercion
-
-```js
-function range(val) {
- return val.split('..').map(Number);
-}
-
-function list(val) {
- return val.split(',');
-}
-
-function collect(val, memo) {
- memo.push(val);
- return memo;
-}
-
-function increaseVerbosity(v, total) {
- return total + 1;
-}
-
-program
- .version('0.0.1')
- .usage('[options] <file ...>')
- .option('-i, --integer <n>', 'An integer argument', parseInt)
- .option('-f, --float <n>', 'A float argument', parseFloat)
- .option('-r, --range <a>..<b>', 'A range', range)
- .option('-l, --list <items>', 'A list', list)
- .option('-o, --optional [value]', 'An optional value')
- .option('-c, --collect [value]', 'A repeatable value', collect, [])
- .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0)
- .parse(process.argv);
-
-console.log(' int: %j', program.integer);
-console.log(' float: %j', program.float);
-console.log(' optional: %j', program.optional);
-program.range = program.range || [];
-console.log(' range: %j..%j', program.range[0], program.range[1]);
-console.log(' list: %j', program.list);
-console.log(' collect: %j', program.collect);
-console.log(' verbosity: %j', program.verbose);
-console.log(' args: %j', program.args);
-```
-
-## Regular Expression
-```js
-program
- .version('0.0.1')
- .option('-s --size <size>', 'Pizza size', /^(large|medium|small)$/i, 'medium')
- .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i)
- .parse(process.argv);
-
-console.log(' size: %j', program.size);
-console.log(' drink: %j', program.drink);
-```
-
-## Variadic arguments
-
- The last argument of a command can be variadic, and only the last argument. To make an argument variadic you have to
- append `...` to the argument name. Here is an example:
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('commander');
-
-program
- .version('0.0.1')
- .command('rmdir <dir> [otherDirs...]')
- .action(function (dir, otherDirs) {
- console.log('rmdir %s', dir);
- if (otherDirs) {
- otherDirs.forEach(function (oDir) {
- console.log('rmdir %s', oDir);
- });
- }
- });
-
-program.parse(process.argv);
-```
-
- An `Array` is used for the value of a variadic argument. This applies to `program.args` as well as the argument passed
- to your action as demonstrated above.
-
-## Specify the argument syntax
-
-```js
-#!/usr/bin/env node
-
-var program = require('../');
-
-program
- .version('0.0.1')
- .arguments('<cmd> [env]')
- .action(function (cmd, env) {
- cmdValue = cmd;
- envValue = env;
- });
-
-program.parse(process.argv);
-
-if (typeof cmdValue === 'undefined') {
- console.error('no command given!');
- process.exit(1);
-}
-console.log('command:', cmdValue);
-console.log('environment:', envValue || "no environment given");
-```
-
-## Git-style sub-commands
-
-```js
-// file: ./examples/pm
-var program = require('..');
-
-program
- .version('0.0.1')
- .command('install [name]', 'install one or more packages')
- .command('search [query]', 'search with optional query')
- .command('list', 'list packages installed')
- .parse(process.argv);
-```
-
-When `.command()` is invoked with a description argument, no `.action(callback)` should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like `git(1)` and other popular tools.
-The commander will try to search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-command`, like `pm-install`, `pm-search`.
-
-If the program is designed to be installed globally, make sure the executables have proper modes, like `755`.
-
-### `--harmony`
-
-You can enable `--harmony` option in two ways:
-* Use `#! /usr/bin/env node --harmony` in the sub-commands scripts. Note some os version don’t support this pattern.
-* Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning sub-command process.
-
-## Automated --help
-
- The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:
-
-```
- $ ./examples/pizza --help
-
- Usage: pizza [options]
-
- An application for pizzas ordering
-
- Options:
-
- -h, --help output usage information
- -V, --version output the version number
- -p, --peppers Add peppers
- -P, --pineapple Add pineapple
- -b, --bbq Add bbq sauce
- -c, --cheese <type> Add the specified type of cheese [marble]
- -C, --no-cheese You do not want any cheese
-
-```
-
-## Custom help
-
- You can display arbitrary `-h, --help` information
- by listening for "--help". Commander will automatically
- exit once you are done so that the remainder of your program
- does not execute causing undesired behaviours, for example
- in the following executable "stuff" will not output when
- `--help` is used.
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('commander');
-
-program
- .version('0.0.1')
- .option('-f, --foo', 'enable some foo')
- .option('-b, --bar', 'enable some bar')
- .option('-B, --baz', 'enable some baz');
-
-// must be before .parse() since
-// node's emit() is immediate
-
-program.on('--help', function(){
- console.log(' Examples:');
- console.log('');
- console.log(' $ custom-help --help');
- console.log(' $ custom-help -h');
- console.log('');
-});
-
-program.parse(process.argv);
-
-console.log('stuff');
-```
-
-Yields the following help output when `node script-name.js -h` or `node script-name.js --help` are run:
-
-```
-
-Usage: custom-help [options]
-
-Options:
-
- -h, --help output usage information
- -V, --version output the version number
- -f, --foo enable some foo
- -b, --bar enable some bar
- -B, --baz enable some baz
-
-Examples:
-
- $ custom-help --help
- $ custom-help -h
-
-```
-
-## .outputHelp()
-
-Output help information without exiting.
-
-If you want to display help by default (e.g. if no command was provided), you can use something like:
-
-```js
-var program = require('commander');
-
-program
- .version('0.0.1')
- .command('getstream [url]', 'get stream URL')
- .parse(process.argv);
-
- if (!process.argv.slice(2).length) {
- program.outputHelp();
- }
-```
-
-## .help()
-
- Output help information and exit immediately.
-
-## Examples
-
-```js
-var program = require('commander');
-
-program
- .version('0.0.1')
- .option('-C, --chdir <path>', 'change the working directory')
- .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
- .option('-T, --no-tests', 'ignore test hook')
-
-program
- .command('setup [env]')
- .description('run setup commands for all envs')
- .option("-s, --setup_mode [mode]", "Which setup mode to use")
- .action(function(env, options){
- var mode = options.setup_mode || "normal";
- env = env || 'all';
- console.log('setup for %s env(s) with %s mode', env, mode);
- });
-
-program
- .command('exec <cmd>')
- .alias('ex')
- .description('execute the given remote cmd')
- .option("-e, --exec_mode <mode>", "Which exec mode to use")
- .action(function(cmd, options){
- console.log('exec "%s" using %s mode', cmd, options.exec_mode);
- }).on('--help', function() {
- console.log(' Examples:');
- console.log();
- console.log(' $ deploy exec sequential');
- console.log(' $ deploy exec async');
- console.log();
- });
-
-program
- .command('*')
- .action(function(env){
- console.log('deploying "%s"', env);
- });
-
-program.parse(process.argv);
-```
-
-More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory.
-
-## License
-
-MIT
-
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/index.js b/node_modules/request/node_modules/har-validator/node_modules/commander/index.js
deleted file mode 100644
index 877696565..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/index.js
+++ /dev/null
@@ -1,1103 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var EventEmitter = require('events').EventEmitter;
-var spawn = require('child_process').spawn;
-var readlink = require('graceful-readlink').readlinkSync;
-var path = require('path');
-var dirname = path.dirname;
-var basename = path.basename;
-var fs = require('fs');
-
-/**
- * Expose the root command.
- */
-
-exports = module.exports = new Command();
-
-/**
- * Expose `Command`.
- */
-
-exports.Command = Command;
-
-/**
- * Expose `Option`.
- */
-
-exports.Option = Option;
-
-/**
- * Initialize a new `Option` with the given `flags` and `description`.
- *
- * @param {String} flags
- * @param {String} description
- * @api public
- */
-
-function Option(flags, description) {
- this.flags = flags;
- this.required = ~flags.indexOf('<');
- this.optional = ~flags.indexOf('[');
- this.bool = !~flags.indexOf('-no-');
- flags = flags.split(/[ ,|]+/);
- if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
- this.long = flags.shift();
- this.description = description || '';
-}
-
-/**
- * Return option name.
- *
- * @return {String}
- * @api private
- */
-
-Option.prototype.name = function() {
- return this.long
- .replace('--', '')
- .replace('no-', '');
-};
-
-/**
- * Check if `arg` matches the short or long flag.
- *
- * @param {String} arg
- * @return {Boolean}
- * @api private
- */
-
-Option.prototype.is = function(arg) {
- return arg == this.short || arg == this.long;
-};
-
-/**
- * Initialize a new `Command`.
- *
- * @param {String} name
- * @api public
- */
-
-function Command(name) {
- this.commands = [];
- this.options = [];
- this._execs = [];
- this._allowUnknownOption = false;
- this._args = [];
- this._name = name;
-}
-
-/**
- * Inherit from `EventEmitter.prototype`.
- */
-
-Command.prototype.__proto__ = EventEmitter.prototype;
-
-/**
- * Add command `name`.
- *
- * The `.action()` callback is invoked when the
- * command `name` is specified via __ARGV__,
- * and the remaining arguments are applied to the
- * function for access.
- *
- * When the `name` is "*" an un-matched command
- * will be passed as the first arg, followed by
- * the rest of __ARGV__ remaining.
- *
- * Examples:
- *
- * program
- * .version('0.0.1')
- * .option('-C, --chdir <path>', 'change the working directory')
- * .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
- * .option('-T, --no-tests', 'ignore test hook')
- *
- * program
- * .command('setup')
- * .description('run remote setup commands')
- * .action(function() {
- * console.log('setup');
- * });
- *
- * program
- * .command('exec <cmd>')
- * .description('run the given remote command')
- * .action(function(cmd) {
- * console.log('exec "%s"', cmd);
- * });
- *
- * program
- * .command('teardown <dir> [otherDirs...]')
- * .description('run teardown commands')
- * .action(function(dir, otherDirs) {
- * console.log('dir "%s"', dir);
- * if (otherDirs) {
- * otherDirs.forEach(function (oDir) {
- * console.log('dir "%s"', oDir);
- * });
- * }
- * });
- *
- * program
- * .command('*')
- * .description('deploy the given env')
- * .action(function(env) {
- * console.log('deploying "%s"', env);
- * });
- *
- * program.parse(process.argv);
- *
- * @param {String} name
- * @param {String} [desc] for git-style sub-commands
- * @return {Command} the new command
- * @api public
- */
-
-Command.prototype.command = function(name, desc, opts) {
- opts = opts || {};
- var args = name.split(/ +/);
- var cmd = new Command(args.shift());
-
- if (desc) {
- cmd.description(desc);
- this.executables = true;
- this._execs[cmd._name] = true;
- }
-
- cmd._noHelp = !!opts.noHelp;
- this.commands.push(cmd);
- cmd.parseExpectedArgs(args);
- cmd.parent = this;
-
- if (desc) return this;
- return cmd;
-};
-
-/**
- * Define argument syntax for the top-level command.
- *
- * @api public
- */
-
-Command.prototype.arguments = function (desc) {
- return this.parseExpectedArgs(desc.split(/ +/));
-}
-
-/**
- * Add an implicit `help [cmd]` subcommand
- * which invokes `--help` for the given command.
- *
- * @api private
- */
-
-Command.prototype.addImplicitHelpCommand = function() {
- this.command('help [cmd]', 'display help for [cmd]');
-};
-
-/**
- * Parse expected `args`.
- *
- * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
- *
- * @param {Array} args
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.parseExpectedArgs = function(args) {
- if (!args.length) return;
- var self = this;
- args.forEach(function(arg) {
- var argDetails = {
- required: false,
- name: '',
- variadic: false
- };
-
- switch (arg[0]) {
- case '<':
- argDetails.required = true;
- argDetails.name = arg.slice(1, -1);
- break;
- case '[':
- argDetails.name = arg.slice(1, -1);
- break;
- }
-
- if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') {
- argDetails.variadic = true;
- argDetails.name = argDetails.name.slice(0, -3);
- }
- if (argDetails.name) {
- self._args.push(argDetails);
- }
- });
- return this;
-};
-
-/**
- * Register callback `fn` for the command.
- *
- * Examples:
- *
- * program
- * .command('help')
- * .description('display verbose help')
- * .action(function() {
- * // output help here
- * });
- *
- * @param {Function} fn
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.action = function(fn) {
- var self = this;
- var listener = function(args, unknown) {
- // Parse any so-far unknown options
- args = args || [];
- unknown = unknown || [];
-
- var parsed = self.parseOptions(unknown);
-
- // Output help if necessary
- outputHelpIfNecessary(self, parsed.unknown);
-
- // If there are still any unknown options, then we simply
- // die, unless someone asked for help, in which case we give it
- // to them, and then we die.
- if (parsed.unknown.length > 0) {
- self.unknownOption(parsed.unknown[0]);
- }
-
- // Leftover arguments need to be pushed back. Fixes issue #56
- if (parsed.args.length) args = parsed.args.concat(args);
-
- self._args.forEach(function(arg, i) {
- if (arg.required && null == args[i]) {
- self.missingArgument(arg.name);
- } else if (arg.variadic) {
- if (i !== self._args.length - 1) {
- self.variadicArgNotLast(arg.name);
- }
-
- args[i] = args.splice(i);
- }
- });
-
- // Always append ourselves to the end of the arguments,
- // to make sure we match the number of arguments the user
- // expects
- if (self._args.length) {
- args[self._args.length] = self;
- } else {
- args.push(self);
- }
-
- fn.apply(self, args);
- };
- var parent = this.parent || this;
- var name = parent === this ? '*' : this._name;
- parent.on(name, listener);
- if (this._alias) parent.on(this._alias, listener);
- return this;
-};
-
-/**
- * Define option with `flags`, `description` and optional
- * coercion `fn`.
- *
- * The `flags` string should contain both the short and long flags,
- * separated by comma, a pipe or space. The following are all valid
- * all will output this way when `--help` is used.
- *
- * "-p, --pepper"
- * "-p|--pepper"
- * "-p --pepper"
- *
- * Examples:
- *
- * // simple boolean defaulting to false
- * program.option('-p, --pepper', 'add pepper');
- *
- * --pepper
- * program.pepper
- * // => Boolean
- *
- * // simple boolean defaulting to true
- * program.option('-C, --no-cheese', 'remove cheese');
- *
- * program.cheese
- * // => true
- *
- * --no-cheese
- * program.cheese
- * // => false
- *
- * // required argument
- * program.option('-C, --chdir <path>', 'change the working directory');
- *
- * --chdir /tmp
- * program.chdir
- * // => "/tmp"
- *
- * // optional argument
- * program.option('-c, --cheese [type]', 'add cheese [marble]');
- *
- * @param {String} flags
- * @param {String} description
- * @param {Function|Mixed} fn or default
- * @param {Mixed} defaultValue
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.option = function(flags, description, fn, defaultValue) {
- var self = this
- , option = new Option(flags, description)
- , oname = option.name()
- , name = camelcase(oname);
-
- // default as 3rd arg
- if (typeof fn != 'function') {
- if (fn instanceof RegExp) {
- var regex = fn;
- fn = function(val, def) {
- var m = regex.exec(val);
- return m ? m[0] : def;
- }
- }
- else {
- defaultValue = fn;
- fn = null;
- }
- }
-
- // preassign default value only for --no-*, [optional], or <required>
- if (false == option.bool || option.optional || option.required) {
- // when --no-* we make sure default is true
- if (false == option.bool) defaultValue = true;
- // preassign only if we have a default
- if (undefined !== defaultValue) self[name] = defaultValue;
- }
-
- // register the option
- this.options.push(option);
-
- // when it's passed assign the value
- // and conditionally invoke the callback
- this.on(oname, function(val) {
- // coercion
- if (null !== val && fn) val = fn(val, undefined === self[name]
- ? defaultValue
- : self[name]);
-
- // unassigned or bool
- if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) {
- // if no value, bool true, and we have a default, then use it!
- if (null == val) {
- self[name] = option.bool
- ? defaultValue || true
- : false;
- } else {
- self[name] = val;
- }
- } else if (null !== val) {
- // reassign
- self[name] = val;
- }
- });
-
- return this;
-};
-
-/**
- * Allow unknown options on the command line.
- *
- * @param {Boolean} arg if `true` or omitted, no error will be thrown
- * for unknown options.
- * @api public
- */
-Command.prototype.allowUnknownOption = function(arg) {
- this._allowUnknownOption = arguments.length === 0 || arg;
- return this;
-};
-
-/**
- * Parse `argv`, settings options and invoking commands when defined.
- *
- * @param {Array} argv
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.parse = function(argv) {
- // implicit help
- if (this.executables) this.addImplicitHelpCommand();
-
- // store raw args
- this.rawArgs = argv;
-
- // guess name
- this._name = this._name || basename(argv[1], '.js');
-
- // github-style sub-commands with no sub-command
- if (this.executables && argv.length < 3) {
- // this user needs help
- argv.push('--help');
- }
-
- // process argv
- var parsed = this.parseOptions(this.normalize(argv.slice(2)));
- var args = this.args = parsed.args;
-
- var result = this.parseArgs(this.args, parsed.unknown);
-
- // executable sub-commands
- var name = result.args[0];
- if (this._execs[name] && typeof this._execs[name] != "function") {
- return this.executeSubCommand(argv, args, parsed.unknown);
- }
-
- return result;
-};
-
-/**
- * Execute a sub-command executable.
- *
- * @param {Array} argv
- * @param {Array} args
- * @param {Array} unknown
- * @api private
- */
-
-Command.prototype.executeSubCommand = function(argv, args, unknown) {
- args = args.concat(unknown);
-
- if (!args.length) this.help();
- if ('help' == args[0] && 1 == args.length) this.help();
-
- // <cmd> --help
- if ('help' == args[0]) {
- args[0] = args[1];
- args[1] = '--help';
- }
-
- // executable
- var f = argv[1];
- // name of the subcommand, link `pm-install`
- var bin = basename(f, '.js') + '-' + args[0];
-
-
- // In case of globally installed, get the base dir where executable
- // subcommand file should be located at
- var baseDir
- , link = readlink(f);
-
- // when symbolink is relative path
- if (link !== f && link.charAt(0) !== '/') {
- link = path.join(dirname(f), link)
- }
- baseDir = dirname(link);
-
- // prefer local `./<bin>` to bin in the $PATH
- var localBin = path.join(baseDir, bin);
-
- // whether bin file is a js script with explicit `.js` extension
- var isExplicitJS = false;
- if (exists(localBin + '.js')) {
- bin = localBin + '.js';
- isExplicitJS = true;
- } else if (exists(localBin)) {
- bin = localBin;
- }
-
- args = args.slice(1);
-
- var proc;
- if (process.platform !== 'win32') {
- if (isExplicitJS) {
- args.unshift(localBin);
- // add executable arguments to spawn
- args = (process.execArgv || []).concat(args);
-
- proc = spawn('node', args, { stdio: 'inherit', customFds: [0, 1, 2] });
- } else {
- proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] });
- }
- } else {
- args.unshift(localBin);
- proc = spawn(process.execPath, args, { stdio: 'inherit'});
- }
-
- proc.on('close', process.exit.bind(process));
- proc.on('error', function(err) {
- if (err.code == "ENOENT") {
- console.error('\n %s(1) does not exist, try --help\n', bin);
- } else if (err.code == "EACCES") {
- console.error('\n %s(1) not executable. try chmod or run with root\n', bin);
- }
- process.exit(1);
- });
-
- this.runningCommand = proc;
-};
-
-/**
- * Normalize `args`, splitting joined short flags. For example
- * the arg "-abc" is equivalent to "-a -b -c".
- * This also normalizes equal sign and splits "--abc=def" into "--abc def".
- *
- * @param {Array} args
- * @return {Array}
- * @api private
- */
-
-Command.prototype.normalize = function(args) {
- var ret = []
- , arg
- , lastOpt
- , index;
-
- for (var i = 0, len = args.length; i < len; ++i) {
- arg = args[i];
- if (i > 0) {
- lastOpt = this.optionFor(args[i-1]);
- }
-
- if (arg === '--') {
- // Honor option terminator
- ret = ret.concat(args.slice(i));
- break;
- } else if (lastOpt && lastOpt.required) {
- ret.push(arg);
- } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) {
- arg.slice(1).split('').forEach(function(c) {
- ret.push('-' + c);
- });
- } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) {
- ret.push(arg.slice(0, index), arg.slice(index + 1));
- } else {
- ret.push(arg);
- }
- }
-
- return ret;
-};
-
-/**
- * Parse command `args`.
- *
- * When listener(s) are available those
- * callbacks are invoked, otherwise the "*"
- * event is emitted and those actions are invoked.
- *
- * @param {Array} args
- * @return {Command} for chaining
- * @api private
- */
-
-Command.prototype.parseArgs = function(args, unknown) {
- var name;
-
- if (args.length) {
- name = args[0];
- if (this.listeners(name).length) {
- this.emit(args.shift(), args, unknown);
- } else {
- this.emit('*', args);
- }
- } else {
- outputHelpIfNecessary(this, unknown);
-
- // If there were no args and we have unknown options,
- // then they are extraneous and we need to error.
- if (unknown.length > 0) {
- this.unknownOption(unknown[0]);
- }
- }
-
- return this;
-};
-
-/**
- * Return an option matching `arg` if any.
- *
- * @param {String} arg
- * @return {Option}
- * @api private
- */
-
-Command.prototype.optionFor = function(arg) {
- for (var i = 0, len = this.options.length; i < len; ++i) {
- if (this.options[i].is(arg)) {
- return this.options[i];
- }
- }
-};
-
-/**
- * Parse options from `argv` returning `argv`
- * void of these options.
- *
- * @param {Array} argv
- * @return {Array}
- * @api public
- */
-
-Command.prototype.parseOptions = function(argv) {
- var args = []
- , len = argv.length
- , literal
- , option
- , arg;
-
- var unknownOptions = [];
-
- // parse options
- for (var i = 0; i < len; ++i) {
- arg = argv[i];
-
- // literal args after --
- if ('--' == arg) {
- literal = true;
- continue;
- }
-
- if (literal) {
- args.push(arg);
- continue;
- }
-
- // find matching Option
- option = this.optionFor(arg);
-
- // option is defined
- if (option) {
- // requires arg
- if (option.required) {
- arg = argv[++i];
- if (null == arg) return this.optionMissingArgument(option);
- this.emit(option.name(), arg);
- // optional arg
- } else if (option.optional) {
- arg = argv[i+1];
- if (null == arg || ('-' == arg[0] && '-' != arg)) {
- arg = null;
- } else {
- ++i;
- }
- this.emit(option.name(), arg);
- // bool
- } else {
- this.emit(option.name());
- }
- continue;
- }
-
- // looks like an option
- if (arg.length > 1 && '-' == arg[0]) {
- unknownOptions.push(arg);
-
- // If the next argument looks like it might be
- // an argument for this option, we pass it on.
- // If it isn't, then it'll simply be ignored
- if (argv[i+1] && '-' != argv[i+1][0]) {
- unknownOptions.push(argv[++i]);
- }
- continue;
- }
-
- // arg
- args.push(arg);
- }
-
- return { args: args, unknown: unknownOptions };
-};
-
-/**
- * Return an object containing options as key-value pairs
- *
- * @return {Object}
- * @api public
- */
-Command.prototype.opts = function() {
- var result = {}
- , len = this.options.length;
-
- for (var i = 0 ; i < len; i++) {
- var key = camelcase(this.options[i].name());
- result[key] = key === 'version' ? this._version : this[key];
- }
- return result;
-};
-
-/**
- * Argument `name` is missing.
- *
- * @param {String} name
- * @api private
- */
-
-Command.prototype.missingArgument = function(name) {
- console.error();
- console.error(" error: missing required argument `%s'", name);
- console.error();
- process.exit(1);
-};
-
-/**
- * `Option` is missing an argument, but received `flag` or nothing.
- *
- * @param {String} option
- * @param {String} flag
- * @api private
- */
-
-Command.prototype.optionMissingArgument = function(option, flag) {
- console.error();
- if (flag) {
- console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag);
- } else {
- console.error(" error: option `%s' argument missing", option.flags);
- }
- console.error();
- process.exit(1);
-};
-
-/**
- * Unknown option `flag`.
- *
- * @param {String} flag
- * @api private
- */
-
-Command.prototype.unknownOption = function(flag) {
- if (this._allowUnknownOption) return;
- console.error();
- console.error(" error: unknown option `%s'", flag);
- console.error();
- process.exit(1);
-};
-
-/**
- * Variadic argument with `name` is not the last argument as required.
- *
- * @param {String} name
- * @api private
- */
-
-Command.prototype.variadicArgNotLast = function(name) {
- console.error();
- console.error(" error: variadic arguments must be last `%s'", name);
- console.error();
- process.exit(1);
-};
-
-/**
- * Set the program version to `str`.
- *
- * This method auto-registers the "-V, --version" flag
- * which will print the version number when passed.
- *
- * @param {String} str
- * @param {String} flags
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.version = function(str, flags) {
- if (0 == arguments.length) return this._version;
- this._version = str;
- flags = flags || '-V, --version';
- this.option(flags, 'output the version number');
- this.on('version', function() {
- process.stdout.write(str + '\n');
- process.exit(0);
- });
- return this;
-};
-
-/**
- * Set the description to `str`.
- *
- * @param {String} str
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.description = function(str) {
- if (0 == arguments.length) return this._description;
- this._description = str;
- return this;
-};
-
-/**
- * Set an alias for the command
- *
- * @param {String} alias
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.alias = function(alias) {
- if (0 == arguments.length) return this._alias;
- this._alias = alias;
- return this;
-};
-
-/**
- * Set / get the command usage `str`.
- *
- * @param {String} str
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.usage = function(str) {
- var args = this._args.map(function(arg) {
- return humanReadableArgName(arg);
- });
-
- var usage = '[options]'
- + (this.commands.length ? ' [command]' : '')
- + (this._args.length ? ' ' + args.join(' ') : '');
-
- if (0 == arguments.length) return this._usage || usage;
- this._usage = str;
-
- return this;
-};
-
-/**
- * Get the name of the command
- *
- * @param {String} name
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.name = function() {
- return this._name;
-};
-
-/**
- * Return the largest option length.
- *
- * @return {Number}
- * @api private
- */
-
-Command.prototype.largestOptionLength = function() {
- return this.options.reduce(function(max, option) {
- return Math.max(max, option.flags.length);
- }, 0);
-};
-
-/**
- * Return help for options.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.optionHelp = function() {
- var width = this.largestOptionLength();
-
- // Prepend the help information
- return [pad('-h, --help', width) + ' ' + 'output usage information']
- .concat(this.options.map(function(option) {
- return pad(option.flags, width) + ' ' + option.description;
- }))
- .join('\n');
-};
-
-/**
- * Return command help documentation.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.commandHelp = function() {
- if (!this.commands.length) return '';
-
- var commands = this.commands.filter(function(cmd) {
- return !cmd._noHelp;
- }).map(function(cmd) {
- var args = cmd._args.map(function(arg) {
- return humanReadableArgName(arg);
- }).join(' ');
-
- return [
- cmd._name
- + (cmd._alias
- ? '|' + cmd._alias
- : '')
- + (cmd.options.length
- ? ' [options]'
- : '')
- + ' ' + args
- , cmd.description()
- ];
- });
-
- var width = commands.reduce(function(max, command) {
- return Math.max(max, command[0].length);
- }, 0);
-
- return [
- ''
- , ' Commands:'
- , ''
- , commands.map(function(cmd) {
- return pad(cmd[0], width) + ' ' + cmd[1];
- }).join('\n').replace(/^/gm, ' ')
- , ''
- ].join('\n');
-};
-
-/**
- * Return program help documentation.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.helpInformation = function() {
- var desc = [];
- if (this._description) {
- desc = [
- ' ' + this._description
- , ''
- ];
- }
-
- var cmdName = this._name;
- if (this._alias) {
- cmdName = cmdName + '|' + this._alias;
- }
- var usage = [
- ''
- ,' Usage: ' + cmdName + ' ' + this.usage()
- , ''
- ];
-
- var cmds = [];
- var commandHelp = this.commandHelp();
- if (commandHelp) cmds = [commandHelp];
-
- var options = [
- ' Options:'
- , ''
- , '' + this.optionHelp().replace(/^/gm, ' ')
- , ''
- , ''
- ];
-
- return usage
- .concat(cmds)
- .concat(desc)
- .concat(options)
- .join('\n');
-};
-
-/**
- * Output help information for this command
- *
- * @api public
- */
-
-Command.prototype.outputHelp = function() {
- process.stdout.write(this.helpInformation());
- this.emit('--help');
-};
-
-/**
- * Output help information and exit.
- *
- * @api public
- */
-
-Command.prototype.help = function() {
- this.outputHelp();
- process.exit();
-};
-
-/**
- * Camel-case the given `flag`
- *
- * @param {String} flag
- * @return {String}
- * @api private
- */
-
-function camelcase(flag) {
- return flag.split('-').reduce(function(str, word) {
- return str + word[0].toUpperCase() + word.slice(1);
- });
-}
-
-/**
- * Pad `str` to `width`.
- *
- * @param {String} str
- * @param {Number} width
- * @return {String}
- * @api private
- */
-
-function pad(str, width) {
- var len = Math.max(0, width - str.length);
- return str + Array(len + 1).join(' ');
-}
-
-/**
- * Output help information if necessary
- *
- * @param {Command} command to output help for
- * @param {Array} array of options to search for -h or --help
- * @api private
- */
-
-function outputHelpIfNecessary(cmd, options) {
- options = options || [];
- for (var i = 0; i < options.length; i++) {
- if (options[i] == '--help' || options[i] == '-h') {
- cmd.outputHelp();
- process.exit(0);
- }
- }
-}
-
-/**
- * Takes an argument an returns its human readable equivalent for help usage.
- *
- * @param {Object} arg
- * @return {String}
- * @api private
- */
-
-function humanReadableArgName(arg) {
- var nameOutput = arg.name + (arg.variadic === true ? '...' : '');
-
- return arg.required
- ? '<' + nameOutput + '>'
- : '[' + nameOutput + ']'
-}
-
-// for versions before node v0.8 when there weren't `fs.existsSync`
-function exists(file) {
- try {
- if (fs.statSync(file).isFile()) {
- return true;
- }
- } catch (e) {
- return false;
- }
-}
-
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.npmignore b/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.npmignore
deleted file mode 100644
index 3ac7d16c6..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.idea/
-.DS_Store
-node_modules/
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.travis.yml b/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.travis.yml
deleted file mode 100644
index baf9be7f6..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
- - "0.12"
- - "io.js"
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/LICENSE b/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/LICENSE
deleted file mode 100644
index d1f842f0b..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Zhiye Li
-
-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/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/README.md b/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/README.md
deleted file mode 100644
index fc63b505a..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# graceful-readlink
-[![NPM Version](http://img.shields.io/npm/v/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink)
-[![NPM Downloads](https://img.shields.io/npm/dm/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink)
-
-
-## Usage
-
-```js
-var readlinkSync = require('graceful-readlink').readlinkSync;
-console.log(readlinkSync(f));
-// output
-// the file pointed to when `f` is a symbolic link
-// the `f` itself when `f` is not a symbolic link
-```
-## Licence
-
-MIT License
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/index.js b/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/index.js
deleted file mode 100644
index 7e9fc70f0..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var fs = require('fs')
- , lstat = fs.lstatSync;
-
-exports.readlinkSync = function (p) {
- if (lstat(p).isSymbolicLink()) {
- return fs.readlinkSync(p);
- } else {
- return p;
- }
-};
-
-
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json b/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json
deleted file mode 100644
index 64d7d644d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "graceful-readlink",
- "version": "1.0.1",
- "description": "graceful fs.readlink",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/zhiyelee/graceful-readlink.git"
- },
- "homepage": "https://github.com/zhiyelee/graceful-readlink",
- "bugs": {
- "url": "https://github.com/zhiyelee/graceful-readlink/issues"
- },
- "keywords": [
- "fs.readlink",
- "readlink"
- ],
- "author": {
- "name": "zhiyelee"
- },
- "license": "MIT",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "readme": "# graceful-readlink\n[![NPM Version](http://img.shields.io/npm/v/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink)\n[![NPM Downloads](https://img.shields.io/npm/dm/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink)\n\n\n## Usage\n\n```js\nvar readlinkSync = require('graceful-readlink').readlinkSync;\nconsole.log(readlinkSync(f));\n// output\n// the file pointed to when `f` is a symbolic link\n// the `f` itself when `f` is not a symbolic link\n```\n## Licence\n\nMIT License\n",
- "readmeFilename": "README.md",
- "_id": "graceful-readlink@1.0.1",
- "_shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725",
- "_resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "_from": "graceful-readlink@>=1.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/commander/package.json b/node_modules/request/node_modules/har-validator/node_modules/commander/package.json
deleted file mode 100644
index 6b4595126..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/commander/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "name": "commander",
- "version": "2.8.1",
- "description": "the complete solution for node.js command-line programs",
- "keywords": [
- "command",
- "option",
- "parser"
- ],
- "author": {
- "name": "TJ Holowaychuk",
- "email": "tj@vision-media.ca"
- },
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/tj/commander.js.git"
- },
- "devDependencies": {
- "should": ">= 0.0.1",
- "sinon": ">= 1.14.1"
- },
- "scripts": {
- "test": "make test"
- },
- "main": "index",
- "engines": {
- "node": ">= 0.6.x"
- },
- "files": [
- "index.js"
- ],
- "dependencies": {
- "graceful-readlink": ">= 1.0.0"
- },
- "gitHead": "c6c84726050b19c0373de27cd359f3baddff579f",
- "bugs": {
- "url": "https://github.com/tj/commander.js/issues"
- },
- "homepage": "https://github.com/tj/commander.js",
- "_id": "commander@2.8.1",
- "_shasum": "06be367febfda0c330aa1e2a072d3dc9762425d4",
- "_from": "commander@>=2.8.1 <3.0.0",
- "_npmVersion": "2.5.1",
- "_nodeVersion": "0.12.0",
- "_npmUser": {
- "name": "zhiyelee",
- "email": "zhiyelee@gmail.com"
- },
- "maintainers": [
- {
- "name": "tjholowaychuk",
- "email": "tj@vision-media.ca"
- },
- {
- "name": "somekittens",
- "email": "rkoutnik@gmail.com"
- },
- {
- "name": "zhiyelee",
- "email": "zhiyelee@gmail.com"
- },
- {
- "name": "thethomaseffect",
- "email": "thethomaseffect@gmail.com"
- }
- ],
- "dist": {
- "shasum": "06be367febfda0c330aa1e2a072d3dc9762425d4",
- "tarball": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.npmignore b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.npmignore
deleted file mode 100644
index dbb0721ce..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-cosmicrealms.com
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.travis.yml b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.travis.yml
deleted file mode 100644
index 6e5919de3..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE
deleted file mode 100644
index 757562ec5..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Mathias Buus
-
-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. \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md
deleted file mode 100644
index 47350d84f..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# is-my-json-valid
-
-A [JSONSchema](http://json-schema.org/) validator that uses code generation
-to be extremely fast
-
-```
-npm install is-my-json-valid
-```
-
-It passes the entire JSONSchema v4 test suite except for `remoteRefs` and `maxLength`/`minLength` when using unicode surrogate pairs.
-
-[![build status](http://img.shields.io/travis/mafintosh/is-my-json-valid.svg?style=flat)](http://travis-ci.org/mafintosh/is-my-json-valid)
-
-## Usage
-
-Simply pass a schema to compile it
-
-``` js
-var validator = require('is-my-json-valid')
-
-var validate = validator({
- required: true,
- type: 'object',
- properties: {
- hello: {
- required: true,
- type: 'string'
- }
- }
-})
-
-console.log('should be valid', validate({hello: 'world'}))
-console.log('should not be valid', validate({}))
-
-// get the last list of errors by checking validate.errors
-// the following will print [{field: 'data.hello', message: 'is required'}]
-console.log(validate.errors)
-```
-
-You can also pass the schema as a string
-
-``` js
-var validate = validate('{"type": ... }')
-```
-
-Optionally you can use the require submodule to load a schema from `__dirname`
-
-``` js
-var validator = require('is-my-json-valid/require')
-var validate = validator('my-schema.json')
-```
-
-## Custom formats
-
-is-my-json-valid supports the formats specified in JSON schema v4 (such as date-time).
-If you want to add your own custom formats pass them as the formats options to the validator
-
-``` js
-var validate = validator({
- type: 'string',
- required: true,
- format: 'only-a'
-}, {
- formats: {
- 'only-a': /^a+$/
- }
-})
-
-console.log(validate('aa')) // true
-console.log(validate('ab')) // false
-```
-
-## External schemas
-
-You can pass in external schemas that you reference using the `$ref` attribute as the `schemas` option
-
-``` js
-var ext = {
- required: true,
- type: 'string'
-}
-
-var schema = {
- $ref: '#ext' // references another schema called ext
-}
-
-// pass the external schemas as an option
-var validate = validate(schema, {schemas: {ext: ext}})
-
-validate('hello') // returns true
-validate(42) // return false
-```
-
-## Filtering away additional properties
-
-is-my-json-valid supports filtering away properties not in the schema
-
-``` js
-var filter = validator.filter({
- required: true,
- type: 'object',
- properties: {
- hello: {type: 'string', required: true}
- },
- additionalProperties: false
-})
-
-var doc = {hello: 'world', notInSchema: true}
-console.log(filter(doc)) // {hello: 'world'}
-```
-
-## Verbose mode outputs the value on errors
-
-is-my-json-valid outputs the value causing an error when verbose is set to true
-
-``` js
-var validate = validator({
- required: true,
- type: 'object',
- properties: {
- hello: {
- required: true,
- type: 'string'
- }
- }
-}, {
- verbose: true
-})
-
-validate({hello: 100});
-console.log(validate.errors) // {field: 'data.hello', message: 'is the wrong type', value: 100}
-```
-
-## Greedy mode tries to validate as much as possible
-
-By default is-my-json-valid bails on first validation error but when greedy is
-set to true it tries to validate as much as possible:
-
-``` js
-var validate = validator({
- type: 'object',
- properties: {
- x: {
- type: 'number'
- }
- },
- required: ['x', 'y']
-}, {
- greedy: true
-});
-
-validate({x: 'string'});
-console.log(validate.errors) // [{field: 'data.y', message: 'is required'},
- // {field: 'data.x', message: 'is the wrong type'}]
-```
-
-## Performance
-
-is-my-json-valid uses code generation to turn your JSON schema into basic javascript code that is easily optimizeable by v8.
-
-At the time of writing, is-my-json-valid is the __fastest validator__ when running
-
-* [json-schema-benchmark](https://github.com/Muscula/json-schema-benchmark)
-* [cosmicreals.com benchmark](http://cosmicrealms.com/blog/2014/08/29/benchmark-of-node-dot-js-json-validation-modules-part-3/)
-* [jsck benchmark](https://github.com/pandastrike/jsck/issues/72#issuecomment-70992684)
-* [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)
-* [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)
-
-If you know any other relevant benchmarks open a PR and I'll add them.
-
-## License
-
-MIT
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js
deleted file mode 100644
index f70f4dfb5..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var validator = require('./')
-
-var validate = validator({
- type: 'object',
- properties: {
- hello: {
- required: true,
- type: 'string'
- }
- }
-})
-
-console.log('should be valid', validate({hello: 'world'}))
-console.log('should not be valid', validate({}))
-
-// get the last error message by checking validate.error
-// the following will print "data.hello is required"
-console.log('the errors were:', validate.errors)
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js
deleted file mode 100644
index 3038daea9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js
+++ /dev/null
@@ -1,14 +0,0 @@
-exports['date-time'] = /^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\d{2}:\d{2}:\d{2}(\.\d+)?([zZ]|[+-]\d{2}:\d{2})$/
-exports['date'] = /^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/
-exports['time'] = /^\d{2}:\d{2}:\d{2}$/
-exports['email'] = /^\S+@\S+$/
-exports['ip-address'] = exports['ipv4'] = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
-exports['ipv6'] = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/
-exports['uri'] = /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\s]*$/
-exports['color'] = /(#?([0-9A-Fa-f]{3,6})\b)|(aqua)|(black)|(blue)|(fuchsia)|(gray)|(green)|(lime)|(maroon)|(navy)|(olive)|(orange)|(purple)|(red)|(silver)|(teal)|(white)|(yellow)|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\))/
-exports['hostname'] = /^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$/
-exports['alpha'] = /^[a-zA-Z]+$/
-exports['alphanumeric'] = /^[a-zA-Z0-9]+$/
-exports['style'] = /\s*(.+?):\s*([^;]+);?/g
-exports['phone'] = /^\+(?:[0-9] ?){6,14}[0-9]$/
-exports['utc-millisec'] = /^[0-9]+(\.?[0-9]+)?$/
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
deleted file mode 100644
index 6fef4ed6f..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
+++ /dev/null
@@ -1,569 +0,0 @@
-var genobj = require('generate-object-property')
-var genfun = require('generate-function')
-var jsonpointer = require('jsonpointer')
-var xtend = require('xtend')
-var formats = require('./formats')
-
-var get = function(obj, additionalSchemas, ptr) {
- if (/^https?:\/\//.test(ptr)) return null
-
- var visit = function(sub) {
- if (sub && sub.id === ptr) return sub
- if (typeof sub !== 'object' || !sub) return null
- return Object.keys(sub).reduce(function(res, k) {
- return res || visit(sub[k])
- }, null)
- }
-
- var res = visit(obj)
- if (res) return res
-
- ptr = ptr.replace(/^#/, '')
- ptr = ptr.replace(/\/$/, '')
-
- try {
- return jsonpointer.get(obj, decodeURI(ptr))
- } catch (err) {
- var end = ptr.indexOf('#')
- var other
- // external reference
- if (end !== 0) {
- // fragment doesn't exist.
- if (end === -1) {
- other = additionalSchemas[ptr]
- } else {
- var ext = ptr.slice(0, end)
- other = additionalSchemas[ext]
- var fragment = ptr.slice(end).replace(/^#/, '')
- try {
- return jsonpointer.get(other, fragment)
- } catch (err) {}
- }
- } else {
- other = additionalSchemas[ptr]
- }
- return other || null
- }
-}
-
-var formatName = function(field) {
- field = JSON.stringify(field)
- var pattern = /\[([^\[\]"]+)\]/
- while (pattern.test(field)) field = field.replace(pattern, '."+$1+"')
- return field
-}
-
-var types = {}
-
-types.any = function() {
- return 'true'
-}
-
-types.null = function(name) {
- return name+' === null'
-}
-
-types.boolean = function(name) {
- return 'typeof '+name+' === "boolean"'
-}
-
-types.array = function(name) {
- return 'Array.isArray('+name+')'
-}
-
-types.object = function(name) {
- return 'typeof '+name+' === "object" && '+name+' && !Array.isArray('+name+')'
-}
-
-types.number = function(name) {
- return 'typeof '+name+' === "number"'
-}
-
-types.integer = function(name) {
- return 'typeof '+name+' === "number" && (Math.floor('+name+') === '+name+' || '+name+' > 9007199254740992 || '+name+' < -9007199254740992)'
-}
-
-types.string = function(name) {
- return 'typeof '+name+' === "string"'
-}
-
-var unique = function(array) {
- var list = []
- for (var i = 0; i < array.length; i++) {
- list.push(typeof array[i] === 'object' ? JSON.stringify(array[i]) : array[i])
- }
- for (var i = 1; i < list.length; i++) {
- if (list.indexOf(list[i]) !== i) return false
- }
- return true
-}
-
-var toType = function(node) {
- return node.type
-}
-
-var compile = function(schema, cache, root, reporter, opts) {
- var fmts = opts ? xtend(formats, opts.formats) : formats
- var scope = {unique:unique, formats:fmts}
- var verbose = opts ? !!opts.verbose : false;
- var greedy = opts && opts.greedy !== undefined ?
- opts.greedy : false;
-
- var syms = {}
- var gensym = function(name) {
- return name+(syms[name] = (syms[name] || 0)+1)
- }
-
- var reversePatterns = {}
- var patterns = function(p) {
- if (reversePatterns[p]) return reversePatterns[p]
- var n = gensym('pattern')
- scope[n] = new RegExp(p)
- reversePatterns[p] = n
- return n
- }
-
- var vars = ['i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','y','z']
- var genloop = function() {
- var v = vars.shift()
- vars.push(v+v[0])
- return v
- }
-
- var visit = function(name, node, reporter, filter) {
- var properties = node.properties
- var type = node.type
- var tuple = false
-
- if (Array.isArray(node.items)) { // tuple type
- properties = {}
- node.items.forEach(function(item, i) {
- properties[i] = item
- })
- type = 'array'
- tuple = true
- }
-
- var indent = 0
- var error = function(msg, prop, value) {
- validate('errors++')
- if (reporter === true) {
- validate('if (validate.errors === null) validate.errors = []')
- if (verbose) {
- validate('validate.errors.push({field:%s,message:%s,value:%s})', formatName(prop || name), JSON.stringify(msg), value || name)
- } else {
- validate('validate.errors.push({field:%s,message:%s})', formatName(prop || name), JSON.stringify(msg))
- }
- }
- }
-
- if (node.required === true) {
- indent++
- validate('if (%s === undefined) {', name)
- error('is required')
- validate('} else {')
- } else {
- indent++
- validate('if (%s !== undefined) {', name)
- }
-
- var valid = [].concat(type)
- .map(function(t) {
- return types[t || 'any'](name)
- })
- .join(' || ') || 'true'
-
- if (valid !== 'true') {
- indent++
- validate('if (!(%s)) {', valid)
- error('is the wrong type')
- validate('} else {')
- }
-
- if (tuple) {
- if (node.additionalItems === false) {
- validate('if (%s.length > %d) {', name, node.items.length)
- error('has additional items')
- validate('}')
- } else if (node.additionalItems) {
- var i = genloop()
- validate('for (var %s = %d; %s < %s.length; %s++) {', i, node.items.length, i, name, i)
- visit(name+'['+i+']', node.additionalItems, reporter, filter)
- validate('}')
- }
- }
-
- if (node.format && fmts[node.format]) {
- if (type !== 'string' && formats[node.format]) validate('if (%s) {', types.string(name))
- var n = gensym('format')
- scope[n] = fmts[node.format]
-
- if (typeof scope[n] === 'function') validate('if (!%s(%s)) {', n, name)
- else validate('if (!%s.test(%s)) {', n, name)
- error('must be '+node.format+' format')
- validate('}')
- if (type !== 'string' && formats[node.format]) validate('}')
- }
-
- if (Array.isArray(node.required)) {
- var isUndefined = function(req) {
- return genobj(name, req) + ' === undefined'
- }
-
- var checkRequired = function (req) {
- var prop = genobj(name, req);
- validate('if (%s === undefined) {', prop)
- error('is required', prop)
- validate('missing++')
- validate('}')
- }
- validate('if ((%s)) {', type !== 'object' ? types.object(name) : 'true')
- validate('var missing = 0')
- node.required.map(checkRequired)
- validate('}');
- if (!greedy) {
- validate('if (missing === 0) {')
- indent++
- }
- }
-
- if (node.uniqueItems) {
- if (type !== 'array') validate('if (%s) {', types.array(name))
- validate('if (!(unique(%s))) {', name)
- error('must be unique')
- validate('}')
- if (type !== 'array') validate('}')
- }
-
- if (node.enum) {
- var complex = node.enum.some(function(e) {
- return typeof e === 'object'
- })
-
- var compare = complex ?
- function(e) {
- return 'JSON.stringify('+name+')'+' !== JSON.stringify('+JSON.stringify(e)+')'
- } :
- function(e) {
- return name+' !== '+JSON.stringify(e)
- }
-
- validate('if (%s) {', node.enum.map(compare).join(' && ') || 'false')
- error('must be an enum value')
- validate('}')
- }
-
- if (node.dependencies) {
- if (type !== 'object') validate('if (%s) {', types.object(name))
-
- Object.keys(node.dependencies).forEach(function(key) {
- var deps = node.dependencies[key]
- if (typeof deps === 'string') deps = [deps]
-
- var exists = function(k) {
- return genobj(name, k) + ' !== undefined'
- }
-
- if (Array.isArray(deps)) {
- validate('if (%s !== undefined && !(%s)) {', genobj(name, key), deps.map(exists).join(' && ') || 'true')
- error('dependencies not set')
- validate('}')
- }
- if (typeof deps === 'object') {
- validate('if (%s !== undefined) {', genobj(name, key))
- visit(name, deps, reporter, filter)
- validate('}')
- }
- })
-
- if (type !== 'object') validate('}')
- }
-
- if (node.additionalProperties || node.additionalProperties === false) {
- if (type !== 'object') validate('if (%s) {', types.object(name))
-
- var i = genloop()
- var keys = gensym('keys')
-
- var toCompare = function(p) {
- return keys+'['+i+'] !== '+JSON.stringify(p)
- }
-
- var toTest = function(p) {
- return '!'+patterns(p)+'.test('+keys+'['+i+'])'
- }
-
- var additionalProp = Object.keys(properties || {}).map(toCompare)
- .concat(Object.keys(node.patternProperties || {}).map(toTest))
- .join(' && ') || 'true'
-
- validate('var %s = Object.keys(%s)', keys, name)
- ('for (var %s = 0; %s < %s.length; %s++) {', i, i, keys, i)
- ('if (%s) {', additionalProp)
-
- if (node.additionalProperties === false) {
- if (filter) validate('delete %s', name+'['+keys+'['+i+']]')
- error('has additional properties', null, JSON.stringify(name+'.') + ' + ' + keys + '['+i+']')
- } else {
- visit(name+'['+keys+'['+i+']]', node.additionalProperties, reporter, filter)
- }
-
- validate
- ('}')
- ('}')
-
- if (type !== 'object') validate('}')
- }
-
- if (node.$ref) {
- var sub = get(root, opts && opts.schemas || {}, node.$ref)
- if (sub) {
- var fn = cache[node.$ref]
- if (!fn) {
- cache[node.$ref] = function proxy(data) {
- return fn(data)
- }
- fn = compile(sub, cache, root, false, opts)
- }
- var n = gensym('ref')
- scope[n] = fn
- validate('if (!(%s(%s))) {', n, name)
- error('referenced schema does not match')
- validate('}')
- }
- }
-
- if (node.not) {
- var prev = gensym('prev')
- validate('var %s = errors', prev)
- visit(name, node.not, false, filter)
- validate('if (%s === errors) {', prev)
- error('negative schema matches')
- validate('} else {')
- ('errors = %s', prev)
- ('}')
- }
-
- if (node.items && !tuple) {
- if (type !== 'array') validate('if (%s) {', types.array(name))
-
- var i = genloop()
- validate('for (var %s = 0; %s < %s.length; %s++) {', i, i, name, i)
- visit(name+'['+i+']', node.items, reporter, filter)
- validate('}')
-
- if (type !== 'array') validate('}')
- }
-
- if (node.patternProperties) {
- if (type !== 'object') validate('if (%s) {', types.object(name))
- var keys = gensym('keys')
- var i = genloop()
- validate
- ('var %s = Object.keys(%s)', keys, name)
- ('for (var %s = 0; %s < %s.length; %s++) {', i, i, keys, i)
-
- Object.keys(node.patternProperties).forEach(function(key) {
- var p = patterns(key)
- validate('if (%s.test(%s)) {', p, keys+'['+i+']')
- visit(name+'['+keys+'['+i+']]', node.patternProperties[key], reporter, filter)
- validate('}')
- })
-
- validate('}')
- if (type !== 'object') validate('}')
- }
-
- if (node.pattern) {
- var p = patterns(node.pattern)
- if (type !== 'string') validate('if (%s) {', types.string(name))
- validate('if (!(%s.test(%s))) {', p, name)
- error('pattern mismatch')
- validate('}')
- if (type !== 'string') validate('}')
- }
-
- if (node.allOf) {
- node.allOf.forEach(function(sch) {
- visit(name, sch, reporter, filter)
- })
- }
-
- if (node.anyOf && node.anyOf.length) {
- var prev = gensym('prev')
-
- node.anyOf.forEach(function(sch, i) {
- if (i === 0) {
- validate('var %s = errors', prev)
- } else {
- validate('if (errors !== %s) {', prev)
- ('errors = %s', prev)
- }
- visit(name, sch, false, false)
- })
- node.anyOf.forEach(function(sch, i) {
- if (i) validate('}')
- })
- validate('if (%s !== errors) {', prev)
- error('no schemas match')
- validate('}')
- }
-
- if (node.oneOf && node.oneOf.length) {
- var prev = gensym('prev')
- var passes = gensym('passes')
-
- validate
- ('var %s = errors', prev)
- ('var %s = 0', passes)
-
- node.oneOf.forEach(function(sch, i) {
- visit(name, sch, false, false)
- validate('if (%s === errors) {', prev)
- ('%s++', passes)
- ('} else {')
- ('errors = %s', prev)
- ('}')
- })
-
- validate('if (%s !== 1) {', passes)
- error('no (or more than one) schemas match')
- validate('}')
- }
-
- if (node.multipleOf !== undefined) {
- if (type !== 'number' && type !== 'integer') validate('if (%s) {', types.number(name))
-
- var factor = ((node.multipleOf | 0) !== node.multipleOf) ? Math.pow(10, node.multipleOf.toString().split('.').pop().length) : 1
- if (factor > 1) validate('if ((%d*%s) % %d) {', factor, name, factor*node.multipleOf)
- else validate('if (%s % %d) {', name, node.multipleOf)
-
- error('has a remainder')
- validate('}')
-
- if (type !== 'number' && type !== 'integer') validate('}')
- }
-
- if (node.maxProperties !== undefined) {
- if (type !== 'object') validate('if (%s) {', types.object(name))
-
- validate('if (Object.keys(%s).length > %d) {', name, node.maxProperties)
- error('has more properties than allowed')
- validate('}')
-
- if (type !== 'object') validate('}')
- }
-
- if (node.minProperties !== undefined) {
- if (type !== 'object') validate('if (%s) {', types.object(name))
-
- validate('if (Object.keys(%s).length < %d) {', name, node.minProperties)
- error('has less properties than allowed')
- validate('}')
-
- if (type !== 'object') validate('}')
- }
-
- if (node.maxItems !== undefined) {
- if (type !== 'array') validate('if (%s) {', types.array(name))
-
- validate('if (%s.length > %d) {', name, node.maxItems)
- error('has more items than allowed')
- validate('}')
-
- if (type !== 'array') validate('}')
- }
-
- if (node.minItems !== undefined) {
- if (type !== 'array') validate('if (%s) {', types.array(name))
-
- validate('if (%s.length < %d) {', name, node.minItems)
- error('has less items than allowed')
- validate('}')
-
- if (type !== 'array') validate('}')
- }
-
- if (node.maxLength !== undefined) {
- if (type !== 'string') validate('if (%s) {', types.string(name))
-
- validate('if (%s.length > %d) {', name, node.maxLength)
- error('has longer length than allowed')
- validate('}')
-
- if (type !== 'string') validate('}')
- }
-
- if (node.minLength !== undefined) {
- if (type !== 'string') validate('if (%s) {', types.string(name))
-
- validate('if (%s.length < %d) {', name, node.minLength)
- error('has less length than allowed')
- validate('}')
-
- if (type !== 'string') validate('}')
- }
-
- if (node.minimum !== undefined) {
- validate('if (%s %s %d) {', name, node.exclusiveMinimum ? '<=' : '<', node.minimum)
- error('is less than minimum')
- validate('}')
- }
-
- if (node.maximum !== undefined) {
- validate('if (%s %s %d) {', name, node.exclusiveMaximum ? '>=' : '>', node.maximum)
- error('is more than maximum')
- validate('}')
- }
-
- if (properties) {
- Object.keys(properties).forEach(function(p) {
- visit(genobj(name, p), properties[p], reporter, filter)
- })
- }
-
- while (indent--) validate('}')
- }
-
- var validate = genfun
- ('function validate(data) {')
- ('validate.errors = null')
- ('var errors = 0')
-
- visit('data', schema, reporter, opts && opts.filter)
-
- validate
- ('return errors === 0')
- ('}')
-
- validate = validate.toFunction(scope)
- validate.errors = null
-
- validate.__defineGetter__('error', function() {
- if (!validate.errors) return ''
- return validate.errors
- .map(function(err) {
- return err.field+' '+err.message
- })
- .join('\n')
- })
-
- validate.toJSON = function() {
- return schema
- }
-
- return validate
-}
-
-module.exports = function(schema, opts) {
- if (typeof schema === 'string') schema = JSON.parse(schema)
- return compile(schema, {}, schema, true, opts)
-}
-
-module.exports.filter = function(schema, opts) {
- var validate = module.exports(schema, xtend(opts, {filter: true}))
- return function(sch) {
- validate(sch)
- return sch
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.npmignore b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.npmignore
deleted file mode 100644
index 3c3629e64..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.travis.yml b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.travis.yml
deleted file mode 100644
index 6e5919de3..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md
deleted file mode 100644
index 693bff87c..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# generate-function
-
-Module that helps you write generated functions in Node
-
-```
-npm install generate-function
-```
-
-[![build status](http://img.shields.io/travis/mafintosh/generate-function.svg?style=flat)](http://travis-ci.org/mafintosh/generate-function)
-
-## Disclamer
-
-Writing code that generates code is hard.
-You should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc).
-
-## Usage
-
-``` js
-var genfun = require('generate-function')
-
-var addNumber = function(val) {
- var fn = genfun()
- ('function add(n) {')
- ('return n + %d', val) // supports format strings to insert values
- ('}')
-
- return fn.toFunction() // will compile the function
-}
-
-var add2 = addNumber(2)
-
-console.log('1+2=', add2(1))
-console.log(add2.toString()) // prints the generated function
-```
-
-If you need to close over variables in your generated function pass them to `toFunction(scope)`
-
-``` js
-var multiply = function(a, b) {
- return a * b
-}
-
-var addAndMultiplyNumber = function(val) {
- var fn = genfun()
- ('function(n) {')
- ('if (typeof n !== "number") {') // ending a line with { will indent the source
- ('throw new Error("argument should be a number")')
- ('}')
- ('var result = multiply(%d, n+%d)', val, val)
- ('return result')
- ('}')
-
- // use fn.toString() if you want to see the generated source
-
- return fn.toFunction({
- multiply: multiply
- })
-}
-
-var addAndMultiply2 = addAndMultiplyNumber(2)
-
-console.log('(3 + 2) * 2 =', addAndMultiply2(3))
-```
-
-## Related
-
-See [generate-object-property](https://github.com/mafintosh/generate-object-property) if you need to safely generate code that
-can be used to reference an object property
-
-## License
-
-MIT \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js
deleted file mode 100644
index 8d1fee162..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var genfun = require('./')
-
-var multiply = function(a, b) {
- return a * b
-}
-
-var addAndMultiplyNumber = function(val) {
- var fn = genfun()
- ('function(n) {')
- ('if (typeof n !== "number") {') // ending a line with { will indent the source
- ('throw new Error("argument should be a number")')
- ('}')
- ('var result = multiply(%d, n+%d)', val, val)
- ('return result')
- ('}')
-
- // use fn.toString() if you want to see the generated source
-
- return fn.toFunction({
- multiply: multiply
- })
-}
-
-var addAndMultiply2 = addAndMultiplyNumber(2)
-
-console.log(addAndMultiply2.toString())
-console.log('(3 + 2) * 2 =', addAndMultiply2(3)) \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js
deleted file mode 100644
index 37e064bb4..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-var util = require('util')
-
-var INDENT_START = /[\{\[]/
-var INDENT_END = /[\}\]]/
-
-module.exports = function() {
- var lines = []
- var indent = 0
-
- var push = function(str) {
- var spaces = ''
- while (spaces.length < indent*2) spaces += ' '
- lines.push(spaces+str)
- }
-
- var line = function(fmt) {
- if (!fmt) return line
-
- if (INDENT_END.test(fmt.trim()[0]) && INDENT_START.test(fmt[fmt.length-1])) {
- indent--
- push(util.format.apply(util, arguments))
- indent++
- return line
- }
- if (INDENT_START.test(fmt[fmt.length-1])) {
- push(util.format.apply(util, arguments))
- indent++
- return line
- }
- if (INDENT_END.test(fmt.trim()[0])) {
- indent--
- push(util.format.apply(util, arguments))
- return line
- }
-
- push(util.format.apply(util, arguments))
- return line
- }
-
- line.toString = function() {
- return lines.join('\n')
- }
-
- line.toFunction = function(scope) {
- var src = 'return ('+line.toString()+')'
-
- var keys = Object.keys(scope || {}).map(function(key) {
- return key
- })
-
- var vals = keys.map(function(key) {
- return scope[key]
- })
-
- return Function.apply(null, keys.concat(src)).apply(null, vals)
- }
-
- if (arguments.length) line.apply(null, arguments)
-
- return line
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json
deleted file mode 100644
index e2bc77284..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "generate-function",
- "version": "2.0.0",
- "description": "Module that helps you write generated functions in Node",
- "main": "index.js",
- "scripts": {
- "test": "tape test.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mafintosh/generate-function.git"
- },
- "keywords": [
- "generate",
- "code",
- "generation",
- "function",
- "performance"
- ],
- "author": {
- "name": "Mathias Buus"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/mafintosh/generate-function/issues"
- },
- "homepage": "https://github.com/mafintosh/generate-function",
- "devDependencies": {
- "tape": "^2.13.4"
- },
- "readme": "# generate-function\n\nModule that helps you write generated functions in Node\n\n```\nnpm install generate-function\n```\n\n[![build status](http://img.shields.io/travis/mafintosh/generate-function.svg?style=flat)](http://travis-ci.org/mafintosh/generate-function)\n\n## Disclamer\n\nWriting code that generates code is hard.\nYou should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc).\n\n## Usage\n\n``` js\nvar genfun = require('generate-function')\n\nvar addNumber = function(val) {\n var fn = genfun()\n ('function add(n) {')\n ('return n + %d', val) // supports format strings to insert values\n ('}')\n\n return fn.toFunction() // will compile the function\n}\n\nvar add2 = addNumber(2)\n\nconsole.log('1+2=', add2(1))\nconsole.log(add2.toString()) // prints the generated function\n```\n\nIf you need to close over variables in your generated function pass them to `toFunction(scope)`\n\n``` js\nvar multiply = function(a, b) {\n return a * b\n}\n\nvar addAndMultiplyNumber = function(val) {\n var fn = genfun()\n ('function(n) {')\n ('if (typeof n !== \"number\") {') // ending a line with { will indent the source\n ('throw new Error(\"argument should be a number\")')\n ('}')\n ('var result = multiply(%d, n+%d)', val, val)\n ('return result')\n ('}')\n\n // use fn.toString() if you want to see the generated source\n\n return fn.toFunction({\n multiply: multiply\n })\n}\n\nvar addAndMultiply2 = addAndMultiplyNumber(2)\n\nconsole.log('(3 + 2) * 2 =', addAndMultiply2(3))\n```\n\n## Related\n\nSee [generate-object-property](https://github.com/mafintosh/generate-object-property) if you need to safely generate code that\ncan be used to reference an object property\n\n## License\n\nMIT",
- "readmeFilename": "README.md",
- "_id": "generate-function@2.0.0",
- "_shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74",
- "_resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
- "_from": "generate-function@>=2.0.0 <3.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js
deleted file mode 100644
index 2768893eb..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var tape = require('tape')
-var genfun = require('./')
-
-tape('generate add function', function(t) {
- var fn = genfun()
- ('function add(n) {')
- ('return n + %d', 42)
- ('}')
-
- t.same(fn.toString(), 'function add(n) {\n return n + 42\n}', 'code is indented')
- t.same(fn.toFunction()(10), 52, 'function works')
- t.end()
-})
-
-tape('generate function + closed variables', function(t) {
- var fn = genfun()
- ('function add(n) {')
- ('return n + %d + number', 42)
- ('}')
-
- var notGood = fn.toFunction()
- var good = fn.toFunction({number:10})
-
- try {
- notGood(10)
- t.ok(false, 'function should not work')
- } catch (err) {
- t.same(err.message, 'number is not defined', 'throws reference error')
- }
-
- t.same(good(11), 63, 'function with closed var works')
- t.end()
-}) \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.npmignore b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.npmignore
deleted file mode 100644
index 3c3629e64..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.travis.yml b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.travis.yml
deleted file mode 100644
index 6e5919de3..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE
deleted file mode 100644
index 757562ec5..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Mathias Buus
-
-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. \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md
deleted file mode 100644
index 0ee04613d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# generate-object-property
-
-Generate safe JS code that can used to reference a object property
-
- npm install generate-object-property
-
-[![build status](http://img.shields.io/travis/mafintosh/generate-object-property.svg?style=flat)](http://travis-ci.org/mafintosh/generate-object-property)
-
-## Usage
-
-``` js
-var gen = require('generate-object-property');
-console.log(gen('a','b')); // prints a.b
-console.log(gen('a', 'foo-bar')); // prints a["foo-bar"]
-```
-
-## License
-
-MIT \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js
deleted file mode 100644
index 5dc9f776d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var isProperty = require('is-property')
-
-var gen = function(obj, prop) {
- return isProperty(prop) ? obj+'.'+prop : obj+'['+JSON.stringify(prop)+']'
-}
-
-gen.valid = isProperty
-gen.property = function (prop) {
- return isProperty(prop) ? prop : JSON.stringify(prop)
-}
-
-module.exports = gen
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/.npmignore b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/.npmignore
deleted file mode 100644
index 8ecfa25a8..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/.npmignore
+++ /dev/null
@@ -1,17 +0,0 @@
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-npm-debug.log
-node_modules/*
-*.DS_Store
-test/* \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE
deleted file mode 100644
index 8ce206a84..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2013 Mikola Lysenko
-
-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/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md
deleted file mode 100644
index ef1d00b62..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-is-property
-===========
-Tests if a property of a JavaScript object can be accessed using the dot (.) notation or if it must be enclosed in brackets, (ie use x[" ... "])
-
-Example
--------
-
-```javascript
-var isProperty = require("is-property")
-
-console.log(isProperty("foo")) //Prints true
-console.log(isProperty("0")) //Prints false
-```
-
-Install
--------
-
- npm install is-property
-
-### `require("is-property")(str)`
-Checks if str is a property
-
-* `str` is a string which we will test if it is a property or not
-
-**Returns** true or false depending if str is a property
-
-## Credits
-(c) 2013 Mikola Lysenko. MIT License \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js
deleted file mode 100644
index db58b47b2..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict"
-function isProperty(str) {
- return /^[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc][$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc0-9\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19d9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]*$/.test(str)
-}
-module.exports = isProperty \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json
deleted file mode 100644
index 41225e266..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "is-property",
- "version": "1.0.2",
- "description": "Tests if a JSON property can be accessed using . syntax",
- "main": "is-property.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "~1.0.4"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/mikolalysenko/is-property.git"
- },
- "keywords": [
- "is",
- "property",
- "json",
- "dot",
- "bracket",
- ".",
- "[]"
- ],
- "author": {
- "name": "Mikola Lysenko"
- },
- "license": "MIT",
- "readmeFilename": "README.md",
- "gitHead": "0a85ea5b6b1264ea1cdecc6e5cf186adbb3ffc50",
- "bugs": {
- "url": "https://github.com/mikolalysenko/is-property/issues"
- },
- "readme": "is-property\n===========\nTests if a property of a JavaScript object can be accessed using the dot (.) notation or if it must be enclosed in brackets, (ie use x[\" ... \"])\n\nExample\n-------\n\n```javascript\nvar isProperty = require(\"is-property\")\n\nconsole.log(isProperty(\"foo\")) //Prints true\nconsole.log(isProperty(\"0\")) //Prints false\n```\n\nInstall\n-------\n\n npm install is-property\n \n### `require(\"is-property\")(str)`\nChecks if str is a property\n\n* `str` is a string which we will test if it is a property or not\n\n**Returns** true or false depending if str is a property\n\n## Credits\n(c) 2013 Mikola Lysenko. MIT License",
- "homepage": "https://github.com/mikolalysenko/is-property#readme",
- "_id": "is-property@1.0.2",
- "_shasum": "57fe1c4e48474edd65b09911f26b1cd4095dda84",
- "_resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "_from": "is-property@>=1.0.0 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json
deleted file mode 100644
index 8bc73da75..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "generate-object-property",
- "version": "1.2.0",
- "description": "Generate safe JS code that can used to reference a object property",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mafintosh/generate-object-property.git"
- },
- "devDependencies": {
- "tape": "^2.13.0"
- },
- "scripts": {
- "test": "tape test.js"
- },
- "dependencies": {
- "is-property": "^1.0.0"
- },
- "bugs": {
- "url": "https://github.com/mafintosh/generate-object-property/issues"
- },
- "homepage": "https://github.com/mafintosh/generate-object-property",
- "main": "index.js",
- "author": {
- "name": "Mathias Buus",
- "url": "@mafintosh"
- },
- "license": "MIT",
- "gitHead": "0dd7d411018de54b2eae63b424c15b3e50bd678c",
- "_id": "generate-object-property@1.2.0",
- "_shasum": "9c0e1c40308ce804f4783618b937fa88f99d50d0",
- "_from": "generate-object-property@>=1.1.0 <2.0.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "mafintosh",
- "email": "mathiasbuus@gmail.com"
- },
- "maintainers": [
- {
- "name": "mafintosh",
- "email": "mathiasbuus@gmail.com"
- }
- ],
- "dist": {
- "shasum": "9c0e1c40308ce804f4783618b937fa88f99d50d0",
- "tarball": "http://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js
deleted file mode 100644
index 6c299c67f..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var tape = require('tape')
-var gen = require('./')
-
-tape('valid', function(t) {
- t.same(gen('a', 'b'), 'a.b')
- t.end()
-})
-
-tape('invalid', function(t) {
- t.same(gen('a', '-b'), 'a["-b"]')
- t.end()
-}) \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/.travis.yml b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/.travis.yml
deleted file mode 100644
index a057a7c63..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: "node_js"
-node_js:
- - 0.4
- - 0.5
- - 0.6
- - 0.8
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md
deleted file mode 100644
index bcfdb1a4e..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# JSON Pointer for nodejs
-
-This is an implementation of [JSON Pointer](http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-08).
-
-## Usage
-
- var jsonpointer = require("jsonpointer");
- var obj = { foo: 1, bar: { baz: 2}, qux: [3, 4, 5]};
- var one = jsonpointer.get(obj, "/foo");
- var two = jsonpointer.get(obj, "/bar/baz");
- var three = jsonpointer.get(obj, "/qux/0");
- var four = jsonpointer.get(obj, "/qux/1");
- var five = jsonpointer.get(obj, "/qux/2");
-
- jsonpointer.set(obj, "/foo", 6); // obj.foo = 6;
-
-## Testing
-
- $ node test.js
- All tests pass.
- $
-
-[![Build Status](https://travis-ci.org/janl/node-jsonpointer.png?branch=master)](undefined)
-
-## Author
-
-(c) 2011 Jan Lehnardt <jan@apache.org>
-
-## License
-
-MIT License. \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js
deleted file mode 100644
index 3f53026ef..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js
+++ /dev/null
@@ -1,79 +0,0 @@
-var console = require("console");
-
-var untilde = function(str) {
- return str.replace(/~./g, function(m) {
- switch (m) {
- case "~0":
- return "~";
- case "~1":
- return "/";
- }
- throw("Invalid tilde escape: " + m);
- });
-}
-
-var traverse = function(obj, pointer, value) {
- // assert(isArray(pointer))
- var part = untilde(pointer.shift());
- if(typeof obj[part] === "undefined") {
- throw("Value for pointer '" + pointer + "' not found.");
- return;
- }
- if(pointer.length !== 0) { // keep traversin!
- return traverse(obj[part], pointer, value);
- }
- // we're done
- if(typeof value === "undefined") {
- // just reading
- return obj[part];
- }
- // set new value, return old value
- var old_value = obj[part];
- if(value === null) {
- delete obj[part];
- } else {
- obj[part] = value;
- }
- return old_value;
-}
-
-var validate_input = function(obj, pointer) {
- if(typeof obj !== "object") {
- throw("Invalid input object.");
- }
-
- if(pointer === "") {
- return [];
- }
-
- if(!pointer) {
- throw("Invalid JSON pointer.");
- }
-
- pointer = pointer.split("/");
- var first = pointer.shift();
- if (first !== "") {
- throw("Invalid JSON pointer.");
- }
-
- return pointer;
-}
-
-var get = function(obj, pointer) {
- pointer = validate_input(obj, pointer);
- if (pointer.length === 0) {
- return obj;
- }
- return traverse(obj, pointer);
-}
-
-var set = function(obj, pointer, value) {
- pointer = validate_input(obj, pointer);
- if (pointer.length === 0) {
- throw("Invalid JSON pointer for set.")
- }
- return traverse(obj, pointer, value);
-}
-
-exports.get = get
-exports.set = set
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json
deleted file mode 100644
index 64e45bd03..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "jsonpointer",
- "description": "Simple JSON Addressing.",
- "tags": [
- "util",
- "simple",
- "util",
- "utility"
- ],
- "version": "1.1.0",
- "author": {
- "name": "Jan Lehnardt",
- "email": "jan@apache.org"
- },
- "contributors": [
- {
- "name": "Joe Hildebrand",
- "email": "joe-github@cursive.net"
- },
- {
- "name": "Filip Noetzel"
- }
- ],
- "repository": {
- "type": "git",
- "url": "git+ssh://git@github.com/janl/node-jsonpointer.git"
- },
- "bugs": {
- "url": "http://github.com/janl/node-jsonpointer/issues"
- },
- "engines": [
- "node >= 0.4.9"
- ],
- "main": "./jsonpointer",
- "scripts": {
- "test": "node test.js"
- },
- "readme": "# JSON Pointer for nodejs\n\nThis is an implementation of [JSON Pointer](http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-08).\n\n## Usage\n\n var jsonpointer = require(\"jsonpointer\");\n var obj = { foo: 1, bar: { baz: 2}, qux: [3, 4, 5]};\n var one = jsonpointer.get(obj, \"/foo\");\n var two = jsonpointer.get(obj, \"/bar/baz\");\n var three = jsonpointer.get(obj, \"/qux/0\");\n var four = jsonpointer.get(obj, \"/qux/1\");\n var five = jsonpointer.get(obj, \"/qux/2\");\n\n jsonpointer.set(obj, \"/foo\", 6); // obj.foo = 6;\n\n## Testing\n\n $ node test.js\n All tests pass.\n $\n\n[![Build Status](https://travis-ci.org/janl/node-jsonpointer.png?branch=master)](undefined)\n\n## Author\n\n(c) 2011 Jan Lehnardt <jan@apache.org>\n\n## License\n\nMIT License.",
- "readmeFilename": "README.md",
- "homepage": "https://github.com/janl/node-jsonpointer#readme",
- "_id": "jsonpointer@1.1.0",
- "_shasum": "c3c72efaed3b97154163dc01dd349e1cfe0f80fc",
- "_resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-1.1.0.tgz",
- "_from": "jsonpointer@>=1.1.0 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js
deleted file mode 100644
index cdb8ec506..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js
+++ /dev/null
@@ -1,100 +0,0 @@
-var assert = require("assert");
-var console = require("console");
-var jsonpointer = require("./jsonpointer");
-
-var obj = {
- a: 1,
- b: {
- c: 2
- },
- d: {
- e: [{a:3}, {b:4}, {c:5}]
- }
-};
-
-assert.equal(jsonpointer.get(obj, "/a"), 1);
-assert.equal(jsonpointer.get(obj, "/b/c"), 2);
-assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 3);
-assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 4);
-assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 5);
-
-// set returns old value
-assert.equal(jsonpointer.set(obj, "/a", 2), 1);
-assert.equal(jsonpointer.set(obj, "/b/c", 3), 2);
-assert.equal(jsonpointer.set(obj, "/d/e/0/a", 4), 3);
-assert.equal(jsonpointer.set(obj, "/d/e/1/b", 5), 4);
-assert.equal(jsonpointer.set(obj, "/d/e/2/c", 6), 5);
-
-assert.equal(jsonpointer.get(obj, "/a"), 2);
-assert.equal(jsonpointer.get(obj, "/b/c"), 3);
-assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 4);
-assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 5);
-assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 6);
-
-assert.equal(jsonpointer.get(obj, ""), obj);
-assert.throws(function() {
- assert.equal(jsonpointer.get(obj, "a"), 3);
-});
-
-var complexKeys = {
- "a/b": {
- c: 1
- },
- d: {
- "e/f": 2
- },
- "~1": 3,
- "01": 4
-}
-
-assert.equal(jsonpointer.get(complexKeys, "/a~1b/c"), 1);
-assert.equal(jsonpointer.get(complexKeys, "/d/e~1f"), 2);
-assert.equal(jsonpointer.get(complexKeys, "/~01"), 3);
-assert.equal(jsonpointer.get(complexKeys, "/01"), 4);
-assert.throws(function() {
- assert.equal(jsonpointer.get(complexKeys, "/a/b/c"), 1);
-});
-assert.throws(function() {
- assert.equal(jsonpointer.get(complexKeys, "/~1"), 3);
-});
-
-// draft-ietf-appsawg-json-pointer-08 has special array rules
-var ary = [ "zero", "one", "two" ];
-
-assert.throws(function() {
- assert.equal(jsonpointer.get(ary, "/01"), "one");
-});
-//assert.equal(jsonpointer.set(ary, "/-", "three"), null);
-//assert.equal(ary[3], "three");
-
-// Examples from the draft:
-var example = {
- "foo": ["bar", "baz"],
- "": 0,
- "a/b": 1,
- "c%d": 2,
- "e^f": 3,
- "g|h": 4,
- "i\\j": 5,
- "k\"l": 6,
- " ": 7,
- "m~n": 8
-};
-
-assert.equal(jsonpointer.get(example, ""), example);
-var ans = jsonpointer.get(example, "/foo");
-assert.equal(ans.length, 2);
-assert.equal(ans[0], "bar");
-assert.equal(ans[1], "baz");
-assert.equal(jsonpointer.get(example, "/foo/0"), "bar");
-assert.equal(jsonpointer.get(example, "/"), 0);
-assert.equal(jsonpointer.get(example, "/a~1b"), 1);
-assert.equal(jsonpointer.get(example, "/c%d"), 2);
-assert.equal(jsonpointer.get(example, "/e^f"), 3);
-assert.equal(jsonpointer.get(example, "/g|h"), 4);
-assert.equal(jsonpointer.get(example, "/i\\j"), 5);
-assert.equal(jsonpointer.get(example, "/k\"l"), 6);
-assert.equal(jsonpointer.get(example, "/ "), 7);
-assert.equal(jsonpointer.get(example, "/m~0n"), 8);
-
-console.log("All tests pass.");
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.npmignore b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.npmignore
deleted file mode 100644
index 3c3629e64..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE
deleted file mode 100644
index 1a14b437e..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012-2014 Raynos.
-
-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/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile
deleted file mode 100644
index d583fcf49..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-browser:
- node ./support/compile
-
-.PHONY: browser \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md
deleted file mode 100644
index 093cb2978..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# xtend
-
-[![browser support][3]][4]
-
-[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges)
-
-Extend like a boss
-
-xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence.
-
-## Examples
-
-```js
-var extend = require("xtend")
-
-// extend returns a new object. Does not mutate arguments
-var combination = extend({
- a: "a",
- b: 'c'
-}, {
- b: "b"
-})
-// { a: "a", b: "b" }
-```
-
-## Stability status: Locked
-
-## MIT Licenced
-
-
- [3]: http://ci.testling.com/Raynos/xtend.png
- [4]: http://ci.testling.com/Raynos/xtend
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js
deleted file mode 100644
index 5b760152b..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js
+++ /dev/null
@@ -1,17 +0,0 @@
-module.exports = extend
-
-function extend() {
- var target = {}
-
- for (var i = 0; i < arguments.length; i++) {
- var source = arguments[i]
-
- for (var key in source) {
- if (source.hasOwnProperty(key)) {
- target[key] = source[key]
- }
- }
- }
-
- return target
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js
deleted file mode 100644
index a34475ebd..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module.exports = extend
-
-function extend(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i]
-
- for (var key in source) {
- if (source.hasOwnProperty(key)) {
- target[key] = source[key]
- }
- }
- }
-
- return target
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json
deleted file mode 100644
index c087642df..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name": "xtend",
- "version": "4.0.0",
- "description": "extend like a boss",
- "keywords": [
- "extend",
- "merge",
- "options",
- "opts",
- "object",
- "array"
- ],
- "author": {
- "name": "Raynos",
- "email": "raynos2@gmail.com"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/Raynos/xtend.git"
- },
- "main": "immutable",
- "scripts": {
- "test": "node test"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "~1.1.0"
- },
- "homepage": "https://github.com/Raynos/xtend",
- "contributors": [
- {
- "name": "Jake Verbaten"
- },
- {
- "name": "Matt Esch"
- }
- ],
- "bugs": {
- "url": "https://github.com/Raynos/xtend/issues",
- "email": "raynos2@gmail.com"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "http://github.com/raynos/xtend/raw/master/LICENSE"
- }
- ],
- "testling": {
- "files": "test.js",
- "browsers": [
- "ie/7..latest",
- "firefox/16..latest",
- "firefox/nightly",
- "chrome/22..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest"
- ]
- },
- "engines": {
- "node": ">=0.4"
- },
- "readme": "# xtend\n\n[![browser support][3]][4]\n\n[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges)\n\nExtend like a boss\n\nxtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence.\n\n## Examples\n\n```js\nvar extend = require(\"xtend\")\n\n// extend returns a new object. Does not mutate arguments\nvar combination = extend({\n a: \"a\",\n b: 'c'\n}, {\n b: \"b\"\n})\n// { a: \"a\", b: \"b\" }\n```\n\n## Stability status: Locked\n\n## MIT Licenced\n\n\n [3]: http://ci.testling.com/Raynos/xtend.png\n [4]: http://ci.testling.com/Raynos/xtend\n",
- "readmeFilename": "README.md",
- "_id": "xtend@4.0.0",
- "_shasum": "8bc36ff87aedbe7ce9eaf0bca36b2354a743840f",
- "_resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz",
- "_from": "xtend@>=4.0.0 <5.0.0"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js
deleted file mode 100644
index 3369d7966..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js
+++ /dev/null
@@ -1,63 +0,0 @@
-var test = require("tape")
-var extend = require("./")
-var mutableExtend = require("./mutable")
-
-test("merge", function(assert) {
- var a = { a: "foo" }
- var b = { b: "bar" }
-
- assert.deepEqual(extend(a, b), { a: "foo", b: "bar" })
- assert.end()
-})
-
-test("replace", function(assert) {
- var a = { a: "foo" }
- var b = { a: "bar" }
-
- assert.deepEqual(extend(a, b), { a: "bar" })
- assert.end()
-})
-
-test("undefined", function(assert) {
- var a = { a: undefined }
- var b = { b: "foo" }
-
- assert.deepEqual(extend(a, b), { a: undefined, b: "foo" })
- assert.deepEqual(extend(b, a), { a: undefined, b: "foo" })
- assert.end()
-})
-
-test("handle 0", function(assert) {
- var a = { a: "default" }
- var b = { a: 0 }
-
- assert.deepEqual(extend(a, b), { a: 0 })
- assert.deepEqual(extend(b, a), { a: "default" })
- assert.end()
-})
-
-test("is immutable", function (assert) {
- var record = {}
-
- extend(record, { foo: "bar" })
- assert.equal(record.foo, undefined)
- assert.end()
-})
-
-test("null as argument", function (assert) {
- var a = { foo: "bar" }
- var b = null
- var c = void 0
-
- assert.deepEqual(extend(b, a, c), { foo: "bar" })
- assert.end()
-})
-
-test("mutable", function (assert) {
- var a = { foo: "bar" }
-
- mutableExtend(a, { bar: "baz" })
-
- assert.equal(a.bar, "baz")
- assert.end()
-})
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json
deleted file mode 100644
index 4f090f3c6..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "name": "is-my-json-valid",
- "version": "2.12.0",
- "description": "A JSONSchema validator that uses code generation to be extremely fast",
- "main": "index.js",
- "dependencies": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "jsonpointer": "^1.1.0",
- "xtend": "^4.0.0"
- },
- "devDependencies": {
- "tape": "^2.13.4"
- },
- "scripts": {
- "test": "tape test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mafintosh/is-my-json-valid.git"
- },
- "keywords": [
- "json",
- "schema",
- "orderly",
- "jsonschema"
- ],
- "author": {
- "name": "Mathias Buus"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/mafintosh/is-my-json-valid/issues"
- },
- "homepage": "https://github.com/mafintosh/is-my-json-valid",
- "gitHead": "fc2d995ecb1bdb0f367ddf114dfd069265043c6c",
- "_id": "is-my-json-valid@2.12.0",
- "_shasum": "8fa6c408b26be95b45a23e8f8c4b464a53874d2b",
- "_from": "is-my-json-valid@>=2.12.0 <3.0.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "mafintosh",
- "email": "mathiasbuus@gmail.com"
- },
- "maintainers": [
- {
- "name": "mafintosh",
- "email": "mathiasbuus@gmail.com"
- },
- {
- "name": "watson",
- "email": "w@tson.dk"
- },
- {
- "name": "freeall",
- "email": "freeall@gmail.com"
- }
- ],
- "dist": {
- "shasum": "8fa6c408b26be95b45a23e8f8c4b464a53874d2b",
- "tarball": "http://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js
deleted file mode 100644
index 0bfb8a29d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var fs = require('fs')
-var path = require('path')
-var compile = require('./')
-
-delete require.cache[require.resolve(__filename)]
-
-module.exports = function(file, opts) {
- file = path.join(path.dirname(module.parent.filename), file)
- if (!fs.existsSync(file) && fs.existsSync(file+'.schema')) file += '.schema'
- if (!fs.existsSync(file) && fs.existsSync(file+'.json')) file += '.json'
- return compile(fs.readFileSync(file, 'utf-8'), opts)
-}
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js
deleted file mode 100644
index 4e0a34b21..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js
+++ /dev/null
@@ -1,84 +0,0 @@
-exports.valid = {
- fullName : "John Doe",
- age : 47,
- state : "Massachusetts",
- city : "Boston",
- zip : 16417,
- married : false,
- dozen : 12,
- dozenOrBakersDozen : 13,
- favoriteEvenNumber : 14,
- topThreeFavoriteColors : [ "red", "blue", "green" ],
- favoriteSingleDigitWholeNumbers : [ 7 ],
- favoriteFiveLetterWord : "coder",
- emailAddresses :
- [
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@letters-in-local.org",
- "01234567890@numbers-in-local.net",
- "&'*+-./=?^_{}~@other-valid-characters-in-local.net",
- "mixed-1234-in-{+^}-local@sld.net",
- "a@single-character-in-local.org",
- "\"quoted\"@sld.com",
- "\"\\e\\s\\c\\a\\p\\e\\d\"@sld.com",
- "\"quoted-at-sign@sld.org\"@sld.com",
- "\"escaped\\\"quote\"@sld.com",
- "\"back\\slash\"@sld.com",
- "one-character-third-level@a.example.com",
- "single-character-in-sld@x.org",
- "local@dash-in-sld.com",
- "letters-in-sld@123.com",
- "one-letter-sld@x.org",
- "uncommon-tld@sld.museum",
- "uncommon-tld@sld.travel",
- "uncommon-tld@sld.mobi",
- "country-code-tld@sld.uk",
- "country-code-tld@sld.rw",
- "local@sld.newTLD",
- "the-total-length@of-an-entire-address.cannot-be-longer-than-two-hundred-and-fifty-four-characters.and-this-address-is-254-characters-exactly.so-it-should-be-valid.and-im-going-to-add-some-more-words-here.to-increase-the-lenght-blah-blah-blah-blah-bla.org",
- "the-character-limit@for-each-part.of-the-domain.is-sixty-three-characters.this-is-exactly-sixty-three-characters-so-it-is-valid-blah-blah.com",
- "local@sub.domains.com"
- ],
- ipAddresses : [ "127.0.0.1", "24.48.64.2", "192.168.1.1", "209.68.44.3", "2.2.2.2" ]
-}
-
-exports.invalid = {
- fullName : null,
- age : -1,
- state : 47,
- city : false,
- zip : [null],
- married : "yes",
- dozen : 50,
- dozenOrBakersDozen : "over 9000",
- favoriteEvenNumber : 15,
- topThreeFavoriteColors : [ "red", 5 ],
- favoriteSingleDigitWholeNumbers : [ 78, 2, 999 ],
- favoriteFiveLetterWord : "codernaut",
- emailAddresses : [],
- ipAddresses : [ "999.0.099.1", "294.48.64.2346", false, "2221409.64214128.42414.235233", "124124.12412412" ]
-}
-
-exports.schema = { // from cosmic thingy
- name : "test",
- type : "object",
- additionalProperties : false,
- required : ["fullName", "age", "zip", "married", "dozen", "dozenOrBakersDozen", "favoriteEvenNumber", "topThreeFavoriteColors", "favoriteSingleDigitWholeNumbers", "favoriteFiveLetterWord", "emailAddresses", "ipAddresses"],
- properties :
- {
- fullName : { type : "string" },
- age : { type : "integer", minimum : 0 },
- optionalItem : { type : "string" },
- state : { type : "string" },
- city : { type : "string" },
- zip : { type : "integer", minimum : 0, maximum : 99999 },
- married : { type : "boolean" },
- dozen : { type : "integer", minimum : 12, maximum : 12 },
- dozenOrBakersDozen : { type : "integer", minimum : 12, maximum : 13 },
- favoriteEvenNumber : { type : "integer", multipleOf : 2 },
- topThreeFavoriteColors : { type : "array", minItems : 3, maxItems : 3, uniqueItems : true, items : { type : "string" }},
- favoriteSingleDigitWholeNumbers : { type : "array", minItems : 1, maxItems : 10, uniqueItems : true, items : { type : "integer", minimum : 0, maximum : 9 }},
- favoriteFiveLetterWord : { type : "string", minLength : 5, maxLength : 5 },
- emailAddresses : { type : "array", minItems : 1, uniqueItems : true, items : { type : "string", format : "email" }},
- ipAddresses : { type : "array", uniqueItems : true, items : { type : "string", format : "ipv4" }},
- }
- } \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json
deleted file mode 100644
index 521745c8d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json
+++ /dev/null
@@ -1,82 +0,0 @@
-[
- {
- "description": "additionalItems as schema",
- "schema": {
- "items": [{}],
- "additionalItems": {"type": "integer"}
- },
- "tests": [
- {
- "description": "additional items match schema",
- "data": [ null, 2, 3, 4 ],
- "valid": true
- },
- {
- "description": "additional items do not match schema",
- "data": [ null, 2, 3, "foo" ],
- "valid": false
- }
- ]
- },
- {
- "description": "items is schema, no additionalItems",
- "schema": {
- "items": {},
- "additionalItems": false
- },
- "tests": [
- {
- "description": "all items match schema",
- "data": [ 1, 2, 3, 4, 5 ],
- "valid": true
- }
- ]
- },
- {
- "description": "array of items with no additionalItems",
- "schema": {
- "items": [{}, {}, {}],
- "additionalItems": false
- },
- "tests": [
- {
- "description": "no additional items present",
- "data": [ 1, 2, 3 ],
- "valid": true
- },
- {
- "description": "additional items are not permitted",
- "data": [ 1, 2, 3, 4 ],
- "valid": false
- }
- ]
- },
- {
- "description": "additionalItems as false without items",
- "schema": {"additionalItems": false},
- "tests": [
- {
- "description":
- "items defaults to empty schema so everything is valid",
- "data": [ 1, 2, 3, 4, 5 ],
- "valid": true
- },
- {
- "description": "ignores non-arrays",
- "data": {"foo" : "bar"},
- "valid": true
- }
- ]
- },
- {
- "description": "additionalItems are allowed by default",
- "schema": {"items": [{"type": "integer"}]},
- "tests": [
- {
- "description": "only the first item is validated",
- "data": [1, "foo", false],
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json
deleted file mode 100644
index 40831f9e9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json
+++ /dev/null
@@ -1,88 +0,0 @@
-[
- {
- "description":
- "additionalProperties being false does not allow other properties",
- "schema": {
- "properties": {"foo": {}, "bar": {}},
- "patternProperties": { "^v": {} },
- "additionalProperties": false
- },
- "tests": [
- {
- "description": "no additional properties is valid",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "an additional property is invalid",
- "data": {"foo" : 1, "bar" : 2, "quux" : "boom"},
- "valid": false
- },
- {
- "description": "ignores non-objects",
- "data": [1, 2, 3],
- "valid": true
- },
- {
- "description": "patternProperties are not additional properties",
- "data": {"foo":1, "vroom": 2},
- "valid": true
- }
- ]
- },
- {
- "description":
- "additionalProperties allows a schema which should validate",
- "schema": {
- "properties": {"foo": {}, "bar": {}},
- "additionalProperties": {"type": "boolean"}
- },
- "tests": [
- {
- "description": "no additional properties is valid",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "an additional valid property is valid",
- "data": {"foo" : 1, "bar" : 2, "quux" : true},
- "valid": true
- },
- {
- "description": "an additional invalid property is invalid",
- "data": {"foo" : 1, "bar" : 2, "quux" : 12},
- "valid": false
- }
- ]
- },
- {
- "description":
- "additionalProperties can exist by itself",
- "schema": {
- "additionalProperties": {"type": "boolean"}
- },
- "tests": [
- {
- "description": "an additional valid property is valid",
- "data": {"foo" : true},
- "valid": true
- },
- {
- "description": "an additional invalid property is invalid",
- "data": {"foo" : 1},
- "valid": false
- }
- ]
- },
- {
- "description": "additionalProperties are allowed by default",
- "schema": {"properties": {"foo": {}, "bar": {}}},
- "tests": [
- {
- "description": "additional properties are allowed",
- "data": {"foo": 1, "bar": 2, "quux": true},
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json
deleted file mode 100644
index bbb5f89e4..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json
+++ /dev/null
@@ -1,112 +0,0 @@
-[
- {
- "description": "allOf",
- "schema": {
- "allOf": [
- {
- "properties": {
- "bar": {"type": "integer"}
- },
- "required": ["bar"]
- },
- {
- "properties": {
- "foo": {"type": "string"}
- },
- "required": ["foo"]
- }
- ]
- },
- "tests": [
- {
- "description": "allOf",
- "data": {"foo": "baz", "bar": 2},
- "valid": true
- },
- {
- "description": "mismatch second",
- "data": {"foo": "baz"},
- "valid": false
- },
- {
- "description": "mismatch first",
- "data": {"bar": 2},
- "valid": false
- },
- {
- "description": "wrong type",
- "data": {"foo": "baz", "bar": "quux"},
- "valid": false
- }
- ]
- },
- {
- "description": "allOf with base schema",
- "schema": {
- "properties": {"bar": {"type": "integer"}},
- "required": ["bar"],
- "allOf" : [
- {
- "properties": {
- "foo": {"type": "string"}
- },
- "required": ["foo"]
- },
- {
- "properties": {
- "baz": {"type": "null"}
- },
- "required": ["baz"]
- }
- ]
- },
- "tests": [
- {
- "description": "valid",
- "data": {"foo": "quux", "bar": 2, "baz": null},
- "valid": true
- },
- {
- "description": "mismatch base schema",
- "data": {"foo": "quux", "baz": null},
- "valid": false
- },
- {
- "description": "mismatch first allOf",
- "data": {"bar": 2, "baz": null},
- "valid": false
- },
- {
- "description": "mismatch second allOf",
- "data": {"foo": "quux", "bar": 2},
- "valid": false
- },
- {
- "description": "mismatch both",
- "data": {"bar": 2},
- "valid": false
- }
- ]
- },
- {
- "description": "allOf simple types",
- "schema": {
- "allOf": [
- {"maximum": 30},
- {"minimum": 20}
- ]
- },
- "tests": [
- {
- "description": "valid",
- "data": 25,
- "valid": true
- },
- {
- "description": "mismatch one",
- "data": 35,
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json
deleted file mode 100644
index a58714afd..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json
+++ /dev/null
@@ -1,68 +0,0 @@
-[
- {
- "description": "anyOf",
- "schema": {
- "anyOf": [
- {
- "type": "integer"
- },
- {
- "minimum": 2
- }
- ]
- },
- "tests": [
- {
- "description": "first anyOf valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "second anyOf valid",
- "data": 2.5,
- "valid": true
- },
- {
- "description": "both anyOf valid",
- "data": 3,
- "valid": true
- },
- {
- "description": "neither anyOf valid",
- "data": 1.5,
- "valid": false
- }
- ]
- },
- {
- "description": "anyOf with base schema",
- "schema": {
- "type": "string",
- "anyOf" : [
- {
- "maxLength": 2
- },
- {
- "minLength": 4
- }
- ]
- },
- "tests": [
- {
- "description": "mismatch base schema",
- "data": 3,
- "valid": false
- },
- {
- "description": "one anyOf valid",
- "data": "foobar",
- "valid": true
- },
- {
- "description": "both anyOf invalid",
- "data": "foo",
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json
deleted file mode 100644
index ccc7c17fe..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json
+++ /dev/null
@@ -1,107 +0,0 @@
-[
- {
- "description": "integer",
- "schema": {"type": "integer"},
- "tests": [
- {
- "description": "a bignum is an integer",
- "data": 12345678910111213141516171819202122232425262728293031,
- "valid": true
- }
- ]
- },
- {
- "description": "number",
- "schema": {"type": "number"},
- "tests": [
- {
- "description": "a bignum is a number",
- "data": 98249283749234923498293171823948729348710298301928331,
- "valid": true
- }
- ]
- },
- {
- "description": "integer",
- "schema": {"type": "integer"},
- "tests": [
- {
- "description": "a negative bignum is an integer",
- "data": -12345678910111213141516171819202122232425262728293031,
- "valid": true
- }
- ]
- },
- {
- "description": "number",
- "schema": {"type": "number"},
- "tests": [
- {
- "description": "a negative bignum is a number",
- "data": -98249283749234923498293171823948729348710298301928331,
- "valid": true
- }
- ]
- },
- {
- "description": "string",
- "schema": {"type": "string"},
- "tests": [
- {
- "description": "a bignum is not a string",
- "data": 98249283749234923498293171823948729348710298301928331,
- "valid": false
- }
- ]
- },
- {
- "description": "integer comparison",
- "schema": {"maximum": 18446744073709551615},
- "tests": [
- {
- "description": "comparison works for high numbers",
- "data": 18446744073709551600,
- "valid": true
- }
- ]
- },
- {
- "description": "float comparison with high precision",
- "schema": {
- "maximum": 972783798187987123879878123.18878137,
- "exclusiveMaximum": true
- },
- "tests": [
- {
- "description": "comparison works for high numbers",
- "data": 972783798187987123879878123.188781371,
- "valid": false
- }
- ]
- },
- {
- "description": "integer comparison",
- "schema": {"minimum": -18446744073709551615},
- "tests": [
- {
- "description": "comparison works for very negative numbers",
- "data": -18446744073709551600,
- "valid": true
- }
- ]
- },
- {
- "description": "float comparison with high precision on negative numbers",
- "schema": {
- "minimum": -972783798187987123879878123.18878137,
- "exclusiveMinimum": true
- },
- "tests": [
- {
- "description": "comparison works for very negative numbers",
- "data": -972783798187987123879878123.188781371,
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json
deleted file mode 100644
index 17629779f..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json
+++ /dev/null
@@ -1,49 +0,0 @@
-[
- {
- "description": "invalid type for default",
- "schema": {
- "properties": {
- "foo": {
- "type": "integer",
- "default": []
- }
- }
- },
- "tests": [
- {
- "description": "valid when property is specified",
- "data": {"foo": 13},
- "valid": true
- },
- {
- "description": "still valid when the invalid default is used",
- "data": {},
- "valid": true
- }
- ]
- },
- {
- "description": "invalid string value for default",
- "schema": {
- "properties": {
- "bar": {
- "type": "string",
- "minLength": 4,
- "default": "bad"
- }
- }
- },
- "tests": [
- {
- "description": "valid when property is specified",
- "data": {"bar": "good"},
- "valid": true
- },
- {
- "description": "still valid when the invalid default is used",
- "data": {},
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json
deleted file mode 100644
index cf935a321..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json
+++ /dev/null
@@ -1,32 +0,0 @@
-[
- {
- "description": "valid definition",
- "schema": {"$ref": "http://json-schema.org/draft-04/schema#"},
- "tests": [
- {
- "description": "valid definition schema",
- "data": {
- "definitions": {
- "foo": {"type": "integer"}
- }
- },
- "valid": true
- }
- ]
- },
- {
- "description": "invalid definition",
- "schema": {"$ref": "http://json-schema.org/draft-04/schema#"},
- "tests": [
- {
- "description": "invalid definition schema",
- "data": {
- "definitions": {
- "foo": {"type": 1}
- }
- },
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json
deleted file mode 100644
index 7b9b16a7e..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json
+++ /dev/null
@@ -1,113 +0,0 @@
-[
- {
- "description": "dependencies",
- "schema": {
- "dependencies": {"bar": ["foo"]}
- },
- "tests": [
- {
- "description": "neither",
- "data": {},
- "valid": true
- },
- {
- "description": "nondependant",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "with dependency",
- "data": {"foo": 1, "bar": 2},
- "valid": true
- },
- {
- "description": "missing dependency",
- "data": {"bar": 2},
- "valid": false
- },
- {
- "description": "ignores non-objects",
- "data": "foo",
- "valid": true
- }
- ]
- },
- {
- "description": "multiple dependencies",
- "schema": {
- "dependencies": {"quux": ["foo", "bar"]}
- },
- "tests": [
- {
- "description": "neither",
- "data": {},
- "valid": true
- },
- {
- "description": "nondependants",
- "data": {"foo": 1, "bar": 2},
- "valid": true
- },
- {
- "description": "with dependencies",
- "data": {"foo": 1, "bar": 2, "quux": 3},
- "valid": true
- },
- {
- "description": "missing dependency",
- "data": {"foo": 1, "quux": 2},
- "valid": false
- },
- {
- "description": "missing other dependency",
- "data": {"bar": 1, "quux": 2},
- "valid": false
- },
- {
- "description": "missing both dependencies",
- "data": {"quux": 1},
- "valid": false
- }
- ]
- },
- {
- "description": "multiple dependencies subschema",
- "schema": {
- "dependencies": {
- "bar": {
- "properties": {
- "foo": {"type": "integer"},
- "bar": {"type": "integer"}
- }
- }
- }
- },
- "tests": [
- {
- "description": "valid",
- "data": {"foo": 1, "bar": 2},
- "valid": true
- },
- {
- "description": "no dependency",
- "data": {"foo": "quux"},
- "valid": true
- },
- {
- "description": "wrong type",
- "data": {"foo": "quux", "bar": 2},
- "valid": false
- },
- {
- "description": "wrong type other",
- "data": {"foo": 2, "bar": "quux"},
- "valid": false
- },
- {
- "description": "wrong type both",
- "data": {"foo": "quux", "bar": "quux"},
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json
deleted file mode 100644
index f124436a7..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json
+++ /dev/null
@@ -1,72 +0,0 @@
-[
- {
- "description": "simple enum validation",
- "schema": {"enum": [1, 2, 3]},
- "tests": [
- {
- "description": "one of the enum is valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "something else is invalid",
- "data": 4,
- "valid": false
- }
- ]
- },
- {
- "description": "heterogeneous enum validation",
- "schema": {"enum": [6, "foo", [], true, {"foo": 12}]},
- "tests": [
- {
- "description": "one of the enum is valid",
- "data": [],
- "valid": true
- },
- {
- "description": "something else is invalid",
- "data": null,
- "valid": false
- },
- {
- "description": "objects are deep compared",
- "data": {"foo": false},
- "valid": false
- }
- ]
- },
- {
- "description": "enums in properties",
- "schema": {
- "type":"object",
- "properties": {
- "foo": {"enum":["foo"]},
- "bar": {"enum":["bar"]}
- },
- "required": ["bar"]
- },
- "tests": [
- {
- "description": "both properties are valid",
- "data": {"foo":"foo", "bar":"bar"},
- "valid": true
- },
- {
- "description": "missing optional property is valid",
- "data": {"bar":"bar"},
- "valid": true
- },
- {
- "description": "missing required property is invalid",
- "data": {"foo":"foo"},
- "valid": false
- },
- {
- "description": "missing all properties is invalid",
- "data": {},
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json
deleted file mode 100644
index 53c5d2519..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json
+++ /dev/null
@@ -1,143 +0,0 @@
-[
- {
- "description": "validation of date-time strings",
- "schema": {"format": "date-time"},
- "tests": [
- {
- "description": "a valid date-time string",
- "data": "1963-06-19T08:30:06.283185Z",
- "valid": true
- },
- {
- "description": "an invalid date-time string",
- "data": "06/19/1963 08:30:06 PST",
- "valid": false
- },
- {
- "description": "only RFC3339 not all of ISO 8601 are valid",
- "data": "2013-350T01:01:01",
- "valid": false
- }
- ]
- },
- {
- "description": "validation of URIs",
- "schema": {"format": "uri"},
- "tests": [
- {
- "description": "a valid URI",
- "data": "http://foo.bar/?baz=qux#quux",
- "valid": true
- },
- {
- "description": "an invalid URI",
- "data": "\\\\WINDOWS\\fileshare",
- "valid": false
- },
- {
- "description": "an invalid URI though valid URI reference",
- "data": "abc",
- "valid": false
- }
- ]
- },
- {
- "description": "validation of e-mail addresses",
- "schema": {"format": "email"},
- "tests": [
- {
- "description": "a valid e-mail address",
- "data": "joe.bloggs@example.com",
- "valid": true
- },
- {
- "description": "an invalid e-mail address",
- "data": "2962",
- "valid": false
- }
- ]
- },
- {
- "description": "validation of IP addresses",
- "schema": {"format": "ipv4"},
- "tests": [
- {
- "description": "a valid IP address",
- "data": "192.168.0.1",
- "valid": true
- },
- {
- "description": "an IP address with too many components",
- "data": "127.0.0.0.1",
- "valid": false
- },
- {
- "description": "an IP address with out-of-range values",
- "data": "256.256.256.256",
- "valid": false
- },
- {
- "description": "an IP address without 4 components",
- "data": "127.0",
- "valid": false
- },
- {
- "description": "an IP address as an integer",
- "data": "0x7f000001",
- "valid": false
- }
- ]
- },
- {
- "description": "validation of IPv6 addresses",
- "schema": {"format": "ipv6"},
- "tests": [
- {
- "description": "a valid IPv6 address",
- "data": "::1",
- "valid": true
- },
- {
- "description": "an IPv6 address with out-of-range values",
- "data": "12345::",
- "valid": false
- },
- {
- "description": "an IPv6 address with too many components",
- "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1",
- "valid": false
- },
- {
- "description": "an IPv6 address containing illegal characters",
- "data": "::laptop",
- "valid": false
- }
- ]
- },
- {
- "description": "validation of host names",
- "schema": {"format": "hostname"},
- "tests": [
- {
- "description": "a valid host name",
- "data": "www.example.com",
- "valid": true
- },
- {
- "description": "a host name starting with an illegal character",
- "data": "-a-host-name-that-starts-with--",
- "valid": false
- },
- {
- "description": "a host name containing illegal characters",
- "data": "not_a_valid_host_name",
- "valid": false
- },
- {
- "description": "a host name with a component too long",
- "data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component",
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json
deleted file mode 100644
index f5e18a138..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json
+++ /dev/null
@@ -1,46 +0,0 @@
-[
- {
- "description": "a schema given for items",
- "schema": {
- "items": {"type": "integer"}
- },
- "tests": [
- {
- "description": "valid items",
- "data": [ 1, 2, 3 ],
- "valid": true
- },
- {
- "description": "wrong type of items",
- "data": [1, "x"],
- "valid": false
- },
- {
- "description": "ignores non-arrays",
- "data": {"foo" : "bar"},
- "valid": true
- }
- ]
- },
- {
- "description": "an array of schemas for items",
- "schema": {
- "items": [
- {"type": "integer"},
- {"type": "string"}
- ]
- },
- "tests": [
- {
- "description": "correct types",
- "data": [ 1, "foo" ],
- "valid": true
- },
- {
- "description": "wrong types",
- "data": [ "foo", 1 ],
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json
deleted file mode 100644
index 3b53a6b37..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "description": "maxItems validation",
- "schema": {"maxItems": 2},
- "tests": [
- {
- "description": "shorter is valid",
- "data": [1],
- "valid": true
- },
- {
- "description": "exact length is valid",
- "data": [1, 2],
- "valid": true
- },
- {
- "description": "too long is invalid",
- "data": [1, 2, 3],
- "valid": false
- },
- {
- "description": "ignores non-arrays",
- "data": "foobar",
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json
deleted file mode 100644
index 48eb1296d..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "description": "maxLength validation",
- "schema": {"maxLength": 2},
- "tests": [
- {
- "description": "shorter is valid",
- "data": "f",
- "valid": true
- },
- {
- "description": "exact length is valid",
- "data": "fo",
- "valid": true
- },
- {
- "description": "too long is invalid",
- "data": "foo",
- "valid": false
- },
- {
- "description": "ignores non-strings",
- "data": 100,
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json
deleted file mode 100644
index d282446ad..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "description": "maxProperties validation",
- "schema": {"maxProperties": 2},
- "tests": [
- {
- "description": "shorter is valid",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "exact length is valid",
- "data": {"foo": 1, "bar": 2},
- "valid": true
- },
- {
- "description": "too long is invalid",
- "data": {"foo": 1, "bar": 2, "baz": 3},
- "valid": false
- },
- {
- "description": "ignores non-objects",
- "data": "foobar",
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json
deleted file mode 100644
index 86c7b89c9..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json
+++ /dev/null
@@ -1,42 +0,0 @@
-[
- {
- "description": "maximum validation",
- "schema": {"maximum": 3.0},
- "tests": [
- {
- "description": "below the maximum is valid",
- "data": 2.6,
- "valid": true
- },
- {
- "description": "above the maximum is invalid",
- "data": 3.5,
- "valid": false
- },
- {
- "description": "ignores non-numbers",
- "data": "x",
- "valid": true
- }
- ]
- },
- {
- "description": "exclusiveMaximum validation",
- "schema": {
- "maximum": 3.0,
- "exclusiveMaximum": true
- },
- "tests": [
- {
- "description": "below the maximum is still valid",
- "data": 2.2,
- "valid": true
- },
- {
- "description": "boundary point is invalid",
- "data": 3.0,
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json
deleted file mode 100644
index ed5118815..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "description": "minItems validation",
- "schema": {"minItems": 1},
- "tests": [
- {
- "description": "longer is valid",
- "data": [1, 2],
- "valid": true
- },
- {
- "description": "exact length is valid",
- "data": [1],
- "valid": true
- },
- {
- "description": "too short is invalid",
- "data": [],
- "valid": false
- },
- {
- "description": "ignores non-arrays",
- "data": "",
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json
deleted file mode 100644
index e9c14b172..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "description": "minLength validation",
- "schema": {"minLength": 2},
- "tests": [
- {
- "description": "longer is valid",
- "data": "foo",
- "valid": true
- },
- {
- "description": "exact length is valid",
- "data": "fo",
- "valid": true
- },
- {
- "description": "too short is invalid",
- "data": "f",
- "valid": false
- },
- {
- "description": "ignores non-strings",
- "data": 1,
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json
deleted file mode 100644
index a72c7d293..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "description": "minProperties validation",
- "schema": {"minProperties": 1},
- "tests": [
- {
- "description": "longer is valid",
- "data": {"foo": 1, "bar": 2},
- "valid": true
- },
- {
- "description": "exact length is valid",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "too short is invalid",
- "data": {},
- "valid": false
- },
- {
- "description": "ignores non-objects",
- "data": "",
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json
deleted file mode 100644
index d5bf000bc..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json
+++ /dev/null
@@ -1,42 +0,0 @@
-[
- {
- "description": "minimum validation",
- "schema": {"minimum": 1.1},
- "tests": [
- {
- "description": "above the minimum is valid",
- "data": 2.6,
- "valid": true
- },
- {
- "description": "below the minimum is invalid",
- "data": 0.6,
- "valid": false
- },
- {
- "description": "ignores non-numbers",
- "data": "x",
- "valid": true
- }
- ]
- },
- {
- "description": "exclusiveMinimum validation",
- "schema": {
- "minimum": 1.1,
- "exclusiveMinimum": true
- },
- "tests": [
- {
- "description": "above the minimum is still valid",
- "data": 1.2,
- "valid": true
- },
- {
- "description": "boundary point is invalid",
- "data": 1.1,
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json
deleted file mode 100644
index ca3b76180..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json
+++ /dev/null
@@ -1,60 +0,0 @@
-[
- {
- "description": "by int",
- "schema": {"multipleOf": 2},
- "tests": [
- {
- "description": "int by int",
- "data": 10,
- "valid": true
- },
- {
- "description": "int by int fail",
- "data": 7,
- "valid": false
- },
- {
- "description": "ignores non-numbers",
- "data": "foo",
- "valid": true
- }
- ]
- },
- {
- "description": "by number",
- "schema": {"multipleOf": 1.5},
- "tests": [
- {
- "description": "zero is multiple of anything",
- "data": 0,
- "valid": true
- },
- {
- "description": "4.5 is multiple of 1.5",
- "data": 4.5,
- "valid": true
- },
- {
- "description": "35 is not multiple of 1.5",
- "data": 35,
- "valid": false
- }
- ]
- },
- {
- "description": "by small number",
- "schema": {"multipleOf": 0.0001},
- "tests": [
- {
- "description": "0.0075 is multiple of 0.0001",
- "data": 0.0075,
- "valid": true
- },
- {
- "description": "0.00751 is not multiple of 0.0001",
- "data": 0.00751,
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json
deleted file mode 100644
index cbb7f46bf..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json
+++ /dev/null
@@ -1,96 +0,0 @@
-[
- {
- "description": "not",
- "schema": {
- "not": {"type": "integer"}
- },
- "tests": [
- {
- "description": "allowed",
- "data": "foo",
- "valid": true
- },
- {
- "description": "disallowed",
- "data": 1,
- "valid": false
- }
- ]
- },
- {
- "description": "not multiple types",
- "schema": {
- "not": {"type": ["integer", "boolean"]}
- },
- "tests": [
- {
- "description": "valid",
- "data": "foo",
- "valid": true
- },
- {
- "description": "mismatch",
- "data": 1,
- "valid": false
- },
- {
- "description": "other mismatch",
- "data": true,
- "valid": false
- }
- ]
- },
- {
- "description": "not more complex schema",
- "schema": {
- "not": {
- "type": "object",
- "properties": {
- "foo": {
- "type": "string"
- }
- }
- }
- },
- "tests": [
- {
- "description": "match",
- "data": 1,
- "valid": true
- },
- {
- "description": "other match",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "mismatch",
- "data": {"foo": "bar"},
- "valid": false
- }
- ]
- },
- {
- "description": "forbidden property",
- "schema": {
- "properties": {
- "foo": {
- "not": {}
- }
- }
- },
- "tests": [
- {
- "description": "property present",
- "data": {"foo": 1, "bar": 2},
- "valid": false
- },
- {
- "description": "property absent",
- "data": {"bar": 1, "baz": 2},
- "valid": true
- }
- ]
- }
-
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json
deleted file mode 100644
index d7fce9f50..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "description": "validation of null and format",
- "schema": {"type": ["null", "string"], "format": "date-time"},
- "tests": [
- {
- "description": "a valid date-time string",
- "data": "1963-06-19T08:30:06.283185Z",
- "valid": true
- },
- {
- "description": "allow null",
- "data": null,
- "valid": true
- }
- ]
- }
-] \ No newline at end of file
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json
deleted file mode 100644
index 1eaa4e479..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json
+++ /dev/null
@@ -1,68 +0,0 @@
-[
- {
- "description": "oneOf",
- "schema": {
- "oneOf": [
- {
- "type": "integer"
- },
- {
- "minimum": 2
- }
- ]
- },
- "tests": [
- {
- "description": "first oneOf valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "second oneOf valid",
- "data": 2.5,
- "valid": true
- },
- {
- "description": "both oneOf valid",
- "data": 3,
- "valid": false
- },
- {
- "description": "neither oneOf valid",
- "data": 1.5,
- "valid": false
- }
- ]
- },
- {
- "description": "oneOf with base schema",
- "schema": {
- "type": "string",
- "oneOf" : [
- {
- "minLength": 2
- },
- {
- "maxLength": 4
- }
- ]
- },
- "tests": [
- {
- "description": "mismatch base schema",
- "data": 3,
- "valid": false
- },
- {
- "description": "one oneOf valid",
- "data": "foobar",
- "valid": true
- },
- {
- "description": "both oneOf valid",
- "data": "foo",
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json
deleted file mode 100644
index befc4b560..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json
+++ /dev/null
@@ -1,23 +0,0 @@
-[
- {
- "description": "pattern validation",
- "schema": {"pattern": "^a*$"},
- "tests": [
- {
- "description": "a matching pattern is valid",
- "data": "aaa",
- "valid": true
- },
- {
- "description": "a non-matching pattern is invalid",
- "data": "abc",
- "valid": false
- },
- {
- "description": "ignores non-strings",
- "data": true,
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json
deleted file mode 100644
index 18586e5da..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json
+++ /dev/null
@@ -1,110 +0,0 @@
-[
- {
- "description":
- "patternProperties validates properties matching a regex",
- "schema": {
- "patternProperties": {
- "f.*o": {"type": "integer"}
- }
- },
- "tests": [
- {
- "description": "a single valid match is valid",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "multiple valid matches is valid",
- "data": {"foo": 1, "foooooo" : 2},
- "valid": true
- },
- {
- "description": "a single invalid match is invalid",
- "data": {"foo": "bar", "fooooo": 2},
- "valid": false
- },
- {
- "description": "multiple invalid matches is invalid",
- "data": {"foo": "bar", "foooooo" : "baz"},
- "valid": false
- },
- {
- "description": "ignores non-objects",
- "data": 12,
- "valid": true
- }
- ]
- },
- {
- "description": "multiple simultaneous patternProperties are validated",
- "schema": {
- "patternProperties": {
- "a*": {"type": "integer"},
- "aaa*": {"maximum": 20}
- }
- },
- "tests": [
- {
- "description": "a single valid match is valid",
- "data": {"a": 21},
- "valid": true
- },
- {
- "description": "a simultaneous match is valid",
- "data": {"aaaa": 18},
- "valid": true
- },
- {
- "description": "multiple matches is valid",
- "data": {"a": 21, "aaaa": 18},
- "valid": true
- },
- {
- "description": "an invalid due to one is invalid",
- "data": {"a": "bar"},
- "valid": false
- },
- {
- "description": "an invalid due to the other is invalid",
- "data": {"aaaa": 31},
- "valid": false
- },
- {
- "description": "an invalid due to both is invalid",
- "data": {"aaa": "foo", "aaaa": 31},
- "valid": false
- }
- ]
- },
- {
- "description": "regexes are not anchored by default and are case sensitive",
- "schema": {
- "patternProperties": {
- "[0-9]{2,}": { "type": "boolean" },
- "X_": { "type": "string" }
- }
- },
- "tests": [
- {
- "description": "non recognized members are ignored",
- "data": { "answer 1": "42" },
- "valid": true
- },
- {
- "description": "recognized members are accounted for",
- "data": { "a31b": null },
- "valid": false
- },
- {
- "description": "regexes are case sensitive",
- "data": { "a_x_3": 3 },
- "valid": true
- },
- {
- "description": "regexes are case sensitive, 2",
- "data": { "a_X_3": 3 },
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json
deleted file mode 100644
index cd1644dcd..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json
+++ /dev/null
@@ -1,92 +0,0 @@
-[
- {
- "description": "object properties validation",
- "schema": {
- "properties": {
- "foo": {"type": "integer"},
- "bar": {"type": "string"}
- }
- },
- "tests": [
- {
- "description": "both properties present and valid is valid",
- "data": {"foo": 1, "bar": "baz"},
- "valid": true
- },
- {
- "description": "one property invalid is invalid",
- "data": {"foo": 1, "bar": {}},
- "valid": false
- },
- {
- "description": "both properties invalid is invalid",
- "data": {"foo": [], "bar": {}},
- "valid": false
- },
- {
- "description": "doesn't invalidate other properties",
- "data": {"quux": []},
- "valid": true
- },
- {
- "description": "ignores non-objects",
- "data": [],
- "valid": true
- }
- ]
- },
- {
- "description":
- "properties, patternProperties, additionalProperties interaction",
- "schema": {
- "properties": {
- "foo": {"type": "array", "maxItems": 3},
- "bar": {"type": "array"}
- },
- "patternProperties": {"f.o": {"minItems": 2}},
- "additionalProperties": {"type": "integer"}
- },
- "tests": [
- {
- "description": "property validates property",
- "data": {"foo": [1, 2]},
- "valid": true
- },
- {
- "description": "property invalidates property",
- "data": {"foo": [1, 2, 3, 4]},
- "valid": false
- },
- {
- "description": "patternProperty invalidates property",
- "data": {"foo": []},
- "valid": false
- },
- {
- "description": "patternProperty validates nonproperty",
- "data": {"fxo": [1, 2]},
- "valid": true
- },
- {
- "description": "patternProperty invalidates nonproperty",
- "data": {"fxo": []},
- "valid": false
- },
- {
- "description": "additionalProperty ignores property",
- "data": {"bar": []},
- "valid": true
- },
- {
- "description": "additionalProperty validates others",
- "data": {"quux": 3},
- "valid": true
- },
- {
- "description": "additionalProperty invalidates others",
- "data": {"quux": "foo"},
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json
deleted file mode 100644
index d8214bc2b..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json
+++ /dev/null
@@ -1,128 +0,0 @@
-[
- {
- "description": "root pointer ref",
- "schema": {
- "properties": {
- "foo": {"$ref": "#"}
- },
- "additionalProperties": false
- },
- "tests": [
- {
- "description": "match",
- "data": {"foo": false},
- "valid": true
- },
- {
- "description": "recursive match",
- "data": {"foo": {"foo": false}},
- "valid": true
- },
- {
- "description": "mismatch",
- "data": {"bar": false},
- "valid": false
- },
- {
- "description": "recursive mismatch",
- "data": {"foo": {"bar": false}},
- "valid": false
- }
- ]
- },
- {
- "description": "relative pointer ref to object",
- "schema": {
- "properties": {
- "foo": {"type": "integer"},
- "bar": {"$ref": "#/properties/foo"}
- }
- },
- "tests": [
- {
- "description": "match",
- "data": {"bar": 3},
- "valid": true
- },
- {
- "description": "mismatch",
- "data": {"bar": true},
- "valid": false
- }
- ]
- },
- {
- "description": "relative pointer ref to array",
- "schema": {
- "items": [
- {"type": "integer"},
- {"$ref": "#/items/0"}
- ]
- },
- "tests": [
- {
- "description": "match array",
- "data": [1, 2],
- "valid": true
- },
- {
- "description": "mismatch array",
- "data": [1, "foo"],
- "valid": false
- }
- ]
- },
- {
- "description": "escaped pointer ref",
- "schema": {
- "tilda~field": {"type": "integer"},
- "slash/field": {"type": "integer"},
- "percent%field": {"type": "integer"},
- "properties": {
- "tilda": {"$ref": "#/tilda~0field"},
- "slash": {"$ref": "#/slash~1field"},
- "percent": {"$ref": "#/percent%25field"}
- }
- },
- "tests": [
- {
- "description": "slash",
- "data": {"slash": "aoeu"},
- "valid": false
- },
- {
- "description": "tilda",
- "data": {"tilda": "aoeu"},
- "valid": false
- },
- {
- "description": "percent",
- "data": {"percent": "aoeu"},
- "valid": false
- }
- ]
- },
- {
- "description": "nested refs",
- "schema": {
- "definitions": {
- "a": {"type": "integer"},
- "b": {"$ref": "#/definitions/a"},
- "c": {"$ref": "#/definitions/b"}
- },
- "$ref": "#/definitions/c"
- },
- "tests": [
- {
- "description": "nested ref valid",
- "data": 5,
- "valid": true
- },
- {
- "description": "nested ref invalid",
- "data": "a",
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json
deleted file mode 100644
index 4ca804732..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json
+++ /dev/null
@@ -1,74 +0,0 @@
-[
- {
- "description": "remote ref",
- "schema": {"$ref": "http://localhost:1234/integer.json"},
- "tests": [
- {
- "description": "remote ref valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "remote ref invalid",
- "data": "a",
- "valid": false
- }
- ]
- },
- {
- "description": "fragment within remote ref",
- "schema": {"$ref": "http://localhost:1234/subSchemas.json#/integer"},
- "tests": [
- {
- "description": "remote fragment valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "remote fragment invalid",
- "data": "a",
- "valid": false
- }
- ]
- },
- {
- "description": "ref within remote ref",
- "schema": {
- "$ref": "http://localhost:1234/subSchemas.json#/refToInteger"
- },
- "tests": [
- {
- "description": "ref within ref valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "ref within ref invalid",
- "data": "a",
- "valid": false
- }
- ]
- },
- {
- "description": "change resolution scope",
- "schema": {
- "id": "http://localhost:1234/",
- "items": {
- "id": "folder/",
- "items": {"$ref": "folderInteger.json"}
- }
- },
- "tests": [
- {
- "description": "changed scope ref valid",
- "data": [[1]],
- "valid": true
- },
- {
- "description": "changed scope ref invalid",
- "data": [["a"]],
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json
deleted file mode 100644
index 612f73f34..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json
+++ /dev/null
@@ -1,39 +0,0 @@
-[
- {
- "description": "required validation",
- "schema": {
- "properties": {
- "foo": {},
- "bar": {}
- },
- "required": ["foo"]
- },
- "tests": [
- {
- "description": "present required property is valid",
- "data": {"foo": 1},
- "valid": true
- },
- {
- "description": "non-present required property is invalid",
- "data": {"bar": 1},
- "valid": false
- }
- ]
- },
- {
- "description": "required default validation",
- "schema": {
- "properties": {
- "foo": {}
- }
- },
- "tests": [
- {
- "description": "not required by default",
- "data": {},
- "valid": true
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json
deleted file mode 100644
index 257f05129..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json
+++ /dev/null
@@ -1,330 +0,0 @@
-[
- {
- "description": "integer type matches integers",
- "schema": {"type": "integer"},
- "tests": [
- {
- "description": "an integer is an integer",
- "data": 1,
- "valid": true
- },
- {
- "description": "a float is not an integer",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "a string is not an integer",
- "data": "foo",
- "valid": false
- },
- {
- "description": "an object is not an integer",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is not an integer",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is not an integer",
- "data": true,
- "valid": false
- },
- {
- "description": "null is not an integer",
- "data": null,
- "valid": false
- }
- ]
- },
- {
- "description": "number type matches numbers",
- "schema": {"type": "number"},
- "tests": [
- {
- "description": "an integer is a number",
- "data": 1,
- "valid": true
- },
- {
- "description": "a float is a number",
- "data": 1.1,
- "valid": true
- },
- {
- "description": "a string is not a number",
- "data": "foo",
- "valid": false
- },
- {
- "description": "an object is not a number",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is not a number",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is not a number",
- "data": true,
- "valid": false
- },
- {
- "description": "null is not a number",
- "data": null,
- "valid": false
- }
- ]
- },
- {
- "description": "string type matches strings",
- "schema": {"type": "string"},
- "tests": [
- {
- "description": "1 is not a string",
- "data": 1,
- "valid": false
- },
- {
- "description": "a float is not a string",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "a string is a string",
- "data": "foo",
- "valid": true
- },
- {
- "description": "an object is not a string",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is not a string",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is not a string",
- "data": true,
- "valid": false
- },
- {
- "description": "null is not a string",
- "data": null,
- "valid": false
- }
- ]
- },
- {
- "description": "object type matches objects",
- "schema": {"type": "object"},
- "tests": [
- {
- "description": "an integer is not an object",
- "data": 1,
- "valid": false
- },
- {
- "description": "a float is not an object",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "a string is not an object",
- "data": "foo",
- "valid": false
- },
- {
- "description": "an object is an object",
- "data": {},
- "valid": true
- },
- {
- "description": "an array is not an object",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is not an object",
- "data": true,
- "valid": false
- },
- {
- "description": "null is not an object",
- "data": null,
- "valid": false
- }
- ]
- },
- {
- "description": "array type matches arrays",
- "schema": {"type": "array"},
- "tests": [
- {
- "description": "an integer is not an array",
- "data": 1,
- "valid": false
- },
- {
- "description": "a float is not an array",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "a string is not an array",
- "data": "foo",
- "valid": false
- },
- {
- "description": "an object is not an array",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is not an array",
- "data": [],
- "valid": true
- },
- {
- "description": "a boolean is not an array",
- "data": true,
- "valid": false
- },
- {
- "description": "null is not an array",
- "data": null,
- "valid": false
- }
- ]
- },
- {
- "description": "boolean type matches booleans",
- "schema": {"type": "boolean"},
- "tests": [
- {
- "description": "an integer is not a boolean",
- "data": 1,
- "valid": false
- },
- {
- "description": "a float is not a boolean",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "a string is not a boolean",
- "data": "foo",
- "valid": false
- },
- {
- "description": "an object is not a boolean",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is not a boolean",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is not a boolean",
- "data": true,
- "valid": true
- },
- {
- "description": "null is not a boolean",
- "data": null,
- "valid": false
- }
- ]
- },
- {
- "description": "null type matches only the null object",
- "schema": {"type": "null"},
- "tests": [
- {
- "description": "an integer is not null",
- "data": 1,
- "valid": false
- },
- {
- "description": "a float is not null",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "a string is not null",
- "data": "foo",
- "valid": false
- },
- {
- "description": "an object is not null",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is not null",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is not null",
- "data": true,
- "valid": false
- },
- {
- "description": "null is null",
- "data": null,
- "valid": true
- }
- ]
- },
- {
- "description": "multiple types can be specified in an array",
- "schema": {"type": ["integer", "string"]},
- "tests": [
- {
- "description": "an integer is valid",
- "data": 1,
- "valid": true
- },
- {
- "description": "a string is valid",
- "data": "foo",
- "valid": true
- },
- {
- "description": "a float is invalid",
- "data": 1.1,
- "valid": false
- },
- {
- "description": "an object is invalid",
- "data": {},
- "valid": false
- },
- {
- "description": "an array is invalid",
- "data": [],
- "valid": false
- },
- {
- "description": "a boolean is invalid",
- "data": true,
- "valid": false
- },
- {
- "description": "null is invalid",
- "data": null,
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json
deleted file mode 100644
index c1f4ab99c..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json
+++ /dev/null
@@ -1,79 +0,0 @@
-[
- {
- "description": "uniqueItems validation",
- "schema": {"uniqueItems": true},
- "tests": [
- {
- "description": "unique array of integers is valid",
- "data": [1, 2],
- "valid": true
- },
- {
- "description": "non-unique array of integers is invalid",
- "data": [1, 1],
- "valid": false
- },
- {
- "description": "numbers are unique if mathematically unequal",
- "data": [1.0, 1.00, 1],
- "valid": false
- },
- {
- "description": "unique array of objects is valid",
- "data": [{"foo": "bar"}, {"foo": "baz"}],
- "valid": true
- },
- {
- "description": "non-unique array of objects is invalid",
- "data": [{"foo": "bar"}, {"foo": "bar"}],
- "valid": false
- },
- {
- "description": "unique array of nested objects is valid",
- "data": [
- {"foo": {"bar" : {"baz" : true}}},
- {"foo": {"bar" : {"baz" : false}}}
- ],
- "valid": true
- },
- {
- "description": "non-unique array of nested objects is invalid",
- "data": [
- {"foo": {"bar" : {"baz" : true}}},
- {"foo": {"bar" : {"baz" : true}}}
- ],
- "valid": false
- },
- {
- "description": "unique array of arrays is valid",
- "data": [["foo"], ["bar"]],
- "valid": true
- },
- {
- "description": "non-unique array of arrays is invalid",
- "data": [["foo"], ["foo"]],
- "valid": false
- },
- {
- "description": "1 and true are unique",
- "data": [1, true],
- "valid": true
- },
- {
- "description": "0 and false are unique",
- "data": [0, false],
- "valid": true
- },
- {
- "description": "unique heterogeneous types are valid",
- "data": [{}, [1], true, null, 1],
- "valid": true
- },
- {
- "description": "non-unique heterogeneous types are invalid",
- "data": [{}, [1], true, null, {}, 1],
- "valid": false
- }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js
deleted file mode 100644
index e68a263a2..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var tape = require('tape')
-var fs = require('fs')
-var validator = require('../')
-
-var files = fs.readdirSync(__dirname+'/json-schema-draft4')
- .map(function(file) {
- if (file === 'definitions.json') return null
- if (file === 'refRemote.json') return null
- return require('./json-schema-draft4/'+file)
- })
- .filter(Boolean)
-
-files.forEach(function(file) {
- file.forEach(function(f) {
- tape('json-schema-test-suite '+f.description, function(t) {
- var validate = validator(f.schema)
- f.tests.forEach(function(test) {
- t.same(validate(test.data), test.valid, test.description)
- })
- t.end()
- })
- })
-})
diff --git a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js b/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js
deleted file mode 100644
index b5109e576..000000000
--- a/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js
+++ /dev/null
@@ -1,429 +0,0 @@
-var tape = require('tape')
-var cosmic = require('./fixtures/cosmic')
-var validator = require('../')
-var validatorRequire = require('../require')
-
-tape('simple', function(t) {
- var schema = {
- required: true,
- type: 'object',
- properties: {
- hello: {type:'string', required:true}
- }
- }
-
- var validate = validator(schema)
-
- t.ok(validate({hello: 'world'}), 'should be valid')
- t.notOk(validate(), 'should be invalid')
- t.notOk(validate({}), 'should be invalid')
- t.end()
-})
-
-tape('advanced', function(t) {
- var validate = validator(cosmic.schema)
-
- t.ok(validate(cosmic.valid), 'should be valid')
- t.notOk(validate(cosmic.invalid), 'should be invalid')
- t.end()
-})
-
-tape('greedy/false', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- x: {
- type: 'number'
- }
- },
- required: ['x', 'y']
- });
- t.notOk(validate({}), 'should be invalid')
- t.strictEqual(validate.errors.length, 2);
- t.strictEqual(validate.errors[0].field, 'data.x')
- t.strictEqual(validate.errors[0].message, 'is required')
- t.strictEqual(validate.errors[1].field, 'data.y')
- t.strictEqual(validate.errors[1].message, 'is required')
- t.notOk(validate({x: 'string'}), 'should be invalid')
- t.strictEqual(validate.errors.length, 1);
- t.strictEqual(validate.errors[0].field, 'data.y')
- t.strictEqual(validate.errors[0].message, 'is required')
- t.notOk(validate({x: 'string', y: 'value'}), 'should be invalid')
- t.strictEqual(validate.errors.length, 1);
- t.strictEqual(validate.errors[0].field, 'data.x')
- t.strictEqual(validate.errors[0].message, 'is the wrong type')
- t.end();
-});
-
-tape('greedy/true', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- x: {
- type: 'number'
- }
- },
- required: ['x', 'y']
- }, {
- greedy: true
- });
- t.notOk(validate({}), 'should be invalid')
- t.strictEqual(validate.errors.length, 2);
- t.strictEqual(validate.errors[0].field, 'data.x')
- t.strictEqual(validate.errors[0].message, 'is required')
- t.strictEqual(validate.errors[1].field, 'data.y')
- t.strictEqual(validate.errors[1].message, 'is required')
- t.notOk(validate({x: 'string'}), 'should be invalid')
- t.strictEqual(validate.errors.length, 2);
- t.strictEqual(validate.errors[0].field, 'data.y')
- t.strictEqual(validate.errors[0].message, 'is required')
- t.strictEqual(validate.errors[1].field, 'data.x')
- t.strictEqual(validate.errors[1].message, 'is the wrong type')
- t.notOk(validate({x: 'string', y: 'value'}), 'should be invalid')
- t.strictEqual(validate.errors.length, 1);
- t.strictEqual(validate.errors[0].field, 'data.x')
- t.strictEqual(validate.errors[0].message, 'is the wrong type')
- t.ok(validate({x: 1, y: 'value'}), 'should be invalid')
- t.end();
-});
-
-tape('additional props', function(t) {
- var validate = validator({
- type: 'object',
- additionalProperties: false
- }, {
- verbose: true
- })
-
- t.ok(validate({}))
- t.notOk(validate({foo:'bar'}))
- t.ok(validate.errors[0].value === 'data.foo', 'should output the property not allowed in verbose mode')
- t.end()
-})
-
-tape('array', function(t) {
- var validate = validator({
- type: 'array',
- required: true,
- items: {
- type: 'string'
- }
- })
-
- t.notOk(validate({}), 'wrong type')
- t.notOk(validate(), 'is required')
- t.ok(validate(['test']))
- t.end()
-})
-
-tape('nested array', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- list: {
- type: 'array',
- required: true,
- items: {
- type: 'string'
- }
- }
- }
- })
-
- t.notOk(validate({}), 'is required')
- t.ok(validate({list:['test']}))
- t.notOk(validate({list:[1]}))
- t.end()
-})
-
-tape('enum', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- foo: {
- type: 'number',
- required: true,
- enum: [42]
- }
- }
- })
-
- t.notOk(validate({}), 'is required')
- t.ok(validate({foo:42}))
- t.notOk(validate({foo:43}))
- t.end()
-})
-
-tape('minimum/maximum', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- foo: {
- type: 'number',
- minimum: 0,
- maximum: 0
- }
- }
- })
-
- t.notOk(validate({foo:-42}))
- t.ok(validate({foo:0}))
- t.notOk(validate({foo:42}))
- t.end()
-})
-
-tape('exclusiveMinimum/exclusiveMaximum', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- foo: {
- type: 'number',
- minimum: 10,
- maximum: 20,
- exclusiveMinimum: true,
- exclusiveMaximum: true
- }
- }
- })
-
- t.notOk(validate({foo:10}))
- t.ok(validate({foo:11}))
- t.notOk(validate({foo:20}))
- t.ok(validate({foo:19}))
- t.end()
-})
-
-tape('custom format', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- foo: {
- type: 'string',
- format: 'as'
- }
- }
- }, {formats: {as:/^a+$/}})
-
- t.notOk(validate({foo:''}), 'not as')
- t.notOk(validate({foo:'b'}), 'not as')
- t.notOk(validate({foo:'aaab'}), 'not as')
- t.ok(validate({foo:'a'}), 'as')
- t.ok(validate({foo:'aaaaaa'}), 'as')
- t.end()
-})
-
-tape('custom format function', function(t) {
- var validate = validator({
- type: 'object',
- properties: {
- foo: {
- type: 'string',
- format: 'as'
- }
- }
- }, {formats: {as:function(s) { return /^a+$/.test(s) } }})
-
- t.notOk(validate({foo:''}), 'not as')
- t.notOk(validate({foo:'b'}), 'not as')
- t.notOk(validate({foo:'aaab'}), 'not as')
- t.ok(validate({foo:'a'}), 'as')
- t.ok(validate({foo:'aaaaaa'}), 'as')
- t.end()
-})
-
-tape('do not mutate schema', function(t) {
- var sch = {
- items: [
- {}
- ],
- additionalItems: {
- type: 'integer'
- }
- }
-
- var copy = JSON.parse(JSON.stringify(sch))
-
- validator(sch)
-
- t.same(sch, copy, 'did not mutate')
- t.end()
-})
-
-tape('#toJSON()', function(t) {
- var schema = {
- required: true,
- type: 'object',
- properties: {
- hello: {type:'string', required:true}
- }
- }
-
- var validate = validator(schema)
-
- t.deepEqual(validate.toJSON(), schema, 'should return original schema')
- t.end()
-})
-
-tape('external schemas', function(t) {
- var ext = {type: 'string'}
- var schema = {
- required: true,
- $ref: '#ext'
- }
-
- var validate = validator(schema, {schemas: {ext:ext}})
-
- t.ok(validate('hello string'), 'is a string')
- t.notOk(validate(42), 'not a string')
- t.end()
-})
-
-tape('top-level external schema', function(t) {
- var defs = {
- "string": {
- type: "string"
- },
- "sex": {
- type: "string",
- enum: ["male", "female", "other"]
- }
- }
- var schema = {
- type: "object",
- properties: {
- "name": { $ref: "definitions.json#/string" },
- "sex": { $ref: "definitions.json#/sex" }
- },
- required: ["name", "sex"]
- }
-
- var validate = validator(schema, {
- schemas: {
- "definitions.json": defs
- }
- })
- t.ok(validate({name:"alice", sex:"female"}), 'is an object')
- t.notOk(validate({name:"alice", sex: "bob"}), 'recognizes external schema')
- t.notOk(validate({name:2, sex: "female"}), 'recognizes external schema')
- t.end()
-})
-
-tape('nested required array decl', function(t) {
- var schema = {
- properties: {
- x: {
- type: 'object',
- properties: {
- y: {
- type: 'object',
- properties: {
- z: {
- type: 'string'
- }
- },
- required: ['z']
- }
- }
- }
- },
- required: ['x']
- }
-
- var validate = validator(schema)
-
- t.ok(validate({x: {}}), 'should be valid')
- t.notOk(validate({}), 'should not be valid')
- t.strictEqual(validate.errors[0].field, 'data.x', 'should output the missing field')
- t.end()
-})
-
-tape('verbose mode', function(t) {
- var schema = {
- required: true,
- type: 'object',
- properties: {
- hello: {
- required: true,
- type: 'string'
- }
- }
- };
-
- var validate = validator(schema, {verbose: true})
-
- t.ok(validate({hello: 'string'}), 'should be valid')
- t.notOk(validate({hello: 100}), 'should not be valid')
- t.strictEqual(validate.errors[0].value, 100, 'error object should contain the invalid value')
- t.end()
-})
-
-tape('additional props in verbose mode', function(t) {
- var schema = {
- type: 'object',
- required: true,
- additionalProperties: false,
- properties: {
- foo: {
- type: 'string'
- },
- 'hello world': {
- type: 'object',
- required: true,
- additionalProperties: false,
- properties: {
- foo: {
- type: 'string'
- }
- }
- }
- }
- };
-
- var validate = validator(schema, {verbose: true})
-
- validate({'hello world': {bar: 'string'}});
-
- t.strictEqual(validate.errors[0].value, 'data["hello world"].bar', 'should output the path to the additional prop in the error')
- t.end()
-})
-
-tape('Date.now() is an integer', function(t) {
- var schema = {type: 'integer'}
- var validate = validator(schema)
-
- t.ok(validate(Date.now()), 'is integer')
- t.end()
-})
-
-tape('field shows item index in arrays', function(t) {
- var schema = {
- type: 'array',
- items: {
- type: 'array',
- items: {
- properties: {
- foo: {
- type: 'string',
- required: true
- }
- }
- }
- }
- }
-
- var validate = validator(schema)
-
- validate([
- [
- { foo: 'test' },
- { foo: 'test' }
- ],
- [
- { foo: 'test' },
- { baz: 'test' }
- ]
- ])
-
- t.strictEqual(validate.errors[0].field, 'data.1.1.foo', 'should output the field with specific index of failing item in the error')
- t.end()
-})
diff --git a/node_modules/request/node_modules/har-validator/package.json b/node_modules/request/node_modules/har-validator/package.json
deleted file mode 100644
index 76cfafba1..000000000
--- a/node_modules/request/node_modules/har-validator/package.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "version": "1.7.1",
- "name": "har-validator",
- "description": "Extremely fast HTTP Archive (HAR) validator using JSON Schema",
- "author": {
- "name": "Ahmad Nassri",
- "email": "ahmad@ahmadnassri.com",
- "url": "https://www.ahmadnassri.com/"
- },
- "homepage": "https://github.com/ahmadnassri/har-validator",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/ahmadnassri/har-validator.git"
- },
- "license": "MIT",
- "main": "./src/index.js",
- "bin": {
- "har-validator": "./bin/har-validator"
- },
- "keywords": [
- "har",
- "http",
- "archive",
- "validate",
- "validator"
- ],
- "engines": {
- "node": ">=0.10"
- },
- "files": [
- "bin",
- "src"
- ],
- "bugs": {
- "url": "https://github.com/ahmadnassri/har-validator/issues"
- },
- "scripts": {
- "test": "standard && echint && mocha --reporter spec",
- "coverage": "istanbul cover ./node_modules/mocha/bin/_mocha",
- "codeclimate": "codeclimate < coverage/lcov.info"
- },
- "echint": {
- "ignore": [
- "coverage/**"
- ]
- },
- "devDependencies": {
- "codeclimate-test-reporter": "0.0.4",
- "echint": "^1.1.0",
- "istanbul": "^0.3.14",
- "mocha": "^2.2.5",
- "require-directory": "^2.1.0",
- "should": "^6.0.3",
- "standard": "^3.11.1"
- },
- "dependencies": {
- "bluebird": "^2.9.26",
- "chalk": "^1.0.0",
- "commander": "^2.8.1",
- "is-my-json-valid": "^2.12.0"
- },
- "gitHead": "328d7f2f37affcc4fca1db13da68f2be817ad31c",
- "_id": "har-validator@1.7.1",
- "_shasum": "8ec8952f8287d21b451ba3e36f27ed8d997d8a95",
- "_from": "har-validator@>=1.6.1 <2.0.0",
- "_npmVersion": "2.7.4",
- "_nodeVersion": "0.12.2",
- "_npmUser": {
- "name": "ahmadnassri",
- "email": "ahmad@ahmadnassri.com"
- },
- "maintainers": [
- {
- "name": "ahmadnassri",
- "email": "ahmad@ahmadnassri.com"
- }
- ],
- "dist": {
- "shasum": "8ec8952f8287d21b451ba3e36f27ed8d997d8a95",
- "tarball": "http://registry.npmjs.org/har-validator/-/har-validator-1.7.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.7.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/har-validator/src/error.js b/node_modules/request/node_modules/har-validator/src/error.js
deleted file mode 100644
index fc08a8721..000000000
--- a/node_modules/request/node_modules/har-validator/src/error.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-function ValidationError (errors) {
- this.name = 'ValidationError'
- this.errors = errors
-}
-
-ValidationError.prototype = Error.prototype
-
-module.exports = ValidationError
diff --git a/node_modules/request/node_modules/har-validator/src/index.js b/node_modules/request/node_modules/har-validator/src/index.js
deleted file mode 100644
index d0324ccd1..000000000
--- a/node_modules/request/node_modules/har-validator/src/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-var schemas = require('./schemas')
-var ValidationError = require('./error')
-var validator = require('is-my-json-valid')
-
-var runner = function (schema, data, cb) {
- var validate = validator(schema, {
- greedy: true,
- verbose: true,
- schemas: schemas
- })
-
- var valid = false
-
- if (data !== undefined) {
- // execute is-my-json-valid
- valid = validate(data)
- }
-
- // callback?
- if (!cb) {
- return !validate.errors > 0
- } else {
- return cb(validate.errors ? new ValidationError(validate.errors) : null, valid)
- }
-
- return valid
-}
-
-module.exports = function (data, cb) {
- return runner(schemas.har, data, cb)
-}
-
-Object.keys(schemas).map(function (name) {
- module.exports[name] = function (data, cb) {
- return runner(schemas[name], data, cb)
- }
-})
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/cache.json b/node_modules/request/node_modules/har-validator/src/schemas/cache.json
deleted file mode 100644
index a3ab682d5..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/cache.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "properties": {
- "beforeRequest": {
- "$ref": "#cacheEntry"
- },
- "afterRequest": {
- "$ref": "#cacheEntry"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/cacheEntry.json b/node_modules/request/node_modules/har-validator/src/schemas/cacheEntry.json
deleted file mode 100644
index a397439fd..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/cacheEntry.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "oneOf": [{
- "type": "object",
- "optional": true,
- "required": [
- "lastAccess",
- "eTag",
- "hitCount"
- ],
- "properties": {
- "expires": {
- "type": "string"
- },
- "lastAccess": {
- "type": "string"
- },
- "eTag": {
- "type": "string"
- },
- "hitCount": {
- "type": "integer"
- },
- "comment": {
- "type": "string"
- }
- }
- }, {
- "type": null,
- "additionalProperties": false
- }]
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/content.json b/node_modules/request/node_modules/har-validator/src/schemas/content.json
deleted file mode 100644
index 3710d7939..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/content.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "type": "object",
- "required": [
- "size",
- "mimeType"
- ],
- "properties": {
- "size": {
- "type": "integer"
- },
- "compression": {
- "type": "integer"
- },
- "mimeType": {
- "type": "string"
- },
- "text": {
- "type": "string"
- },
- "encoding": {
- "type": "string"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/cookie.json b/node_modules/request/node_modules/har-validator/src/schemas/cookie.json
deleted file mode 100644
index 576818183..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/cookie.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "type": "object",
- "required": [
- "name",
- "value"
- ],
- "properties": {
- "name": {
- "type": "string"
- },
- "value": {
- "type": "string"
- },
- "path": {
- "type": "string"
- },
- "domain": {
- "type": "string"
- },
- "expires": {
- "type": ["string", "null"],
- "format": "date-time"
- },
- "httpOnly": {
- "type": "boolean"
- },
- "secure": {
- "type": "boolean"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/creator.json b/node_modules/request/node_modules/har-validator/src/schemas/creator.json
deleted file mode 100644
index 505860064..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/creator.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "type": "object",
- "required": [
- "name",
- "version"
- ],
- "properties": {
- "name": {
- "type": "string"
- },
- "version": {
- "type": "string"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/entry.json b/node_modules/request/node_modules/har-validator/src/schemas/entry.json
deleted file mode 100644
index 7acdc1b82..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/entry.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "type": "object",
- "optional": true,
- "required": [
- "startedDateTime",
- "time",
- "request",
- "response",
- "cache",
- "timings"
- ],
- "properties": {
- "pageref": {
- "type": "string"
- },
- "startedDateTime": {
- "type": "string",
- "format": "date-time",
- "pattern": "^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"
- },
- "time": {
- "type": "number",
- "min": 0
- },
- "request": {
- "$ref": "#request"
- },
- "response": {
- "$ref": "#response"
- },
- "cache": {
- "$ref": "#cache"
- },
- "timings": {
- "$ref": "#timings"
- },
- "serverIPAddress": {
- "type": "string",
- "format": "ipv4"
- },
- "connection": {
- "type": "string"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/har.json b/node_modules/request/node_modules/har-validator/src/schemas/har.json
deleted file mode 100644
index b542782db..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/har.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "type": "object",
- "required": [
- "log"
- ],
- "properties": {
- "log": {
- "$ref": "#log"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/index.js b/node_modules/request/node_modules/har-validator/src/schemas/index.js
deleted file mode 100644
index 7b6db7dab..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict'
-
-var schemas = {
- cache: require('./cache.json'),
- cacheEntry: require('./cacheEntry.json'),
- content: require('./content.json'),
- cookie: require('./cookie.json'),
- creator: require('./creator.json'),
- entry: require('./entry.json'),
- har: require('./har.json'),
- log: require('./log.json'),
- page: require('./page.json'),
- pageTimings: require('./pageTimings.json'),
- postData: require('./postData.json'),
- record: require('./record.json'),
- request: require('./request.json'),
- response: require('./response.json'),
- timings: require('./timings.json')
-}
-
-// is-my-json-valid does not provide meaningful error messages for external schemas
-// this is a workaround
-schemas.cache.properties.beforeRequest = schemas.cacheEntry
-schemas.cache.properties.afterRequest = schemas.cacheEntry
-
-schemas.page.properties.pageTimings = schemas.pageTimings
-
-schemas.request.properties.cookies.items = schemas.cookie
-schemas.request.properties.headers.items = schemas.record
-schemas.request.properties.queryString.items = schemas.record
-schemas.request.properties.postData = schemas.postData
-
-schemas.response.properties.cookies.items = schemas.cookie
-schemas.response.properties.headers.items = schemas.record
-schemas.response.properties.content = schemas.content
-
-schemas.entry.properties.request = schemas.request
-schemas.entry.properties.response = schemas.response
-schemas.entry.properties.cache = schemas.cache
-schemas.entry.properties.timings = schemas.timings
-
-schemas.log.properties.creator = schemas.creator
-schemas.log.properties.browser = schemas.creator
-schemas.log.properties.pages.items = schemas.page
-schemas.log.properties.entries.items = schemas.entry
-
-schemas.har.properties.log = schemas.log
-
-module.exports = schemas
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/log.json b/node_modules/request/node_modules/har-validator/src/schemas/log.json
deleted file mode 100644
index 0c91d38bf..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/log.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "type": "object",
- "required": [
- "version",
- "creator",
- "entries"
- ],
- "properties": {
- "version": {
- "type": "string"
- },
- "creator": {
- "$ref": "#creator"
- },
- "browser": {
- "$ref": "#creator"
- },
- "pages": {
- "type": "array",
- "items": {
- "$ref": "#page"
- }
- },
- "entries": {
- "type": "array",
- "items": {
- "$ref": "#entry"
- }
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/page.json b/node_modules/request/node_modules/har-validator/src/schemas/page.json
deleted file mode 100644
index ef64abe5c..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/page.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "type": "object",
- "optional": true,
- "required": [
- "startedDateTime",
- "id",
- "title",
- "pageTimings"
- ],
- "properties": {
- "startedDateTime": {
- "type": "string",
- "format": "date-time",
- "pattern": "^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"
- },
- "id": {
- "type": "string",
- "unique": true
- },
- "title": {
- "type": "string"
- },
- "pageTimings": {
- "$ref": "#pageTimings"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/pageTimings.json b/node_modules/request/node_modules/har-validator/src/schemas/pageTimings.json
deleted file mode 100644
index adc83cccd..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/pageTimings.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "type": "object",
- "properties": {
- "onContentLoad": {
- "type": "number",
- "min": -1
- },
- "onLoad": {
- "type": "number",
- "min": -1
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/postData.json b/node_modules/request/node_modules/har-validator/src/schemas/postData.json
deleted file mode 100644
index 91958b64a..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/postData.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "type": "object",
- "optional": true,
- "required": [
- "mimeType"
- ],
- "properties": {
- "mimeType": {
- "type": "string"
- },
- "text": {
- "type": "string"
- },
- "params": {
- "type": "array",
- "required": [
- "name"
- ],
- "properties": {
- "name": {
- "type": "string"
- },
- "value": {
- "type": "string"
- },
- "fileName": {
- "type": "string"
- },
- "contentType": {
- "type": "string"
- },
- "comment": {
- "type": "string"
- }
- }
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/record.json b/node_modules/request/node_modules/har-validator/src/schemas/record.json
deleted file mode 100644
index 04acd5194..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/record.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "type": "object",
- "required": [
- "name",
- "value"
- ],
- "properties": {
- "name": {
- "type": "string"
- },
- "value": {
- "type": "string"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/request.json b/node_modules/request/node_modules/har-validator/src/schemas/request.json
deleted file mode 100644
index 639af06dc..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/request.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "type": "object",
- "required": [
- "method",
- "url",
- "httpVersion",
- "cookies",
- "headers",
- "queryString",
- "headersSize",
- "bodySize"
- ],
- "properties": {
- "method": {
- "type": "string"
- },
- "url": {
- "type": "string",
- "format": "uri"
- },
- "httpVersion": {
- "type": "string"
- },
- "cookies": {
- "type": "array",
- "items": {
- "$ref": "#cookie"
- }
- },
- "headers": {
- "type": "array",
- "items": {
- "$ref": "#record"
- }
- },
- "queryString": {
- "type": "array",
- "items": {
- "$ref": "#record"
- }
- },
- "postData": {
- "$ref": "#postData"
- },
- "headersSize": {
- "type": "integer"
- },
- "bodySize": {
- "type": "integer"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/response.json b/node_modules/request/node_modules/har-validator/src/schemas/response.json
deleted file mode 100644
index de99c55bb..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/response.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "type": "object",
- "required": [
- "status",
- "statusText",
- "httpVersion",
- "cookies",
- "headers",
- "content",
- "redirectURL",
- "headersSize",
- "bodySize"
- ],
- "properties": {
- "status": {
- "type": "integer"
- },
- "statusText": {
- "type": "string"
- },
- "httpVersion": {
- "type": "string"
- },
- "cookies": {
- "type": "array",
- "items": {
- "$ref": "#cookie"
- }
- },
- "headers": {
- "type": "array",
- "items": {
- "$ref": "#record"
- }
- },
- "content": {
- "$ref": "#content"
- },
- "redirectURL": {
- "type": "string"
- },
- "headersSize": {
- "type": "integer"
- },
- "bodySize": {
- "type": "integer"
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/har-validator/src/schemas/timings.json b/node_modules/request/node_modules/har-validator/src/schemas/timings.json
deleted file mode 100644
index 066ef71a1..000000000
--- a/node_modules/request/node_modules/har-validator/src/schemas/timings.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "required": [
- "send",
- "wait",
- "receive"
- ],
- "properties": {
- "dns": {
- "type": "number",
- "min": -1
- },
- "connect": {
- "type": "number",
- "min": -1
- },
- "blocked": {
- "type": "number",
- "min": -1
- },
- "send": {
- "type": "number",
- "min": -1
- },
- "wait": {
- "type": "number",
- "min": -1
- },
- "receive": {
- "type": "number",
- "min": -1
- },
- "ssl": {
- "type": "number",
- "min": -1
- },
- "comment": {
- "type": "string"
- }
- }
-}
diff --git a/node_modules/request/node_modules/hawk/.npmignore b/node_modules/request/node_modules/hawk/.npmignore
deleted file mode 100644
index 70febc05e..000000000
--- a/node_modules/request/node_modules/hawk/.npmignore
+++ /dev/null
@@ -1,20 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-components
-build
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-
diff --git a/node_modules/request/node_modules/hawk/.travis.yml b/node_modules/request/node_modules/hawk/.travis.yml
deleted file mode 100755
index 047f7e3d5..000000000
--- a/node_modules/request/node_modules/hawk/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
-
diff --git a/node_modules/request/node_modules/hawk/LICENSE b/node_modules/request/node_modules/hawk/LICENSE
deleted file mode 100755
index 788093684..000000000
--- a/node_modules/request/node_modules/hawk/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2012-2014, Eran Hammer and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * 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.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-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 HOLDERS AND 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 complete list of contributors can be found at: https://github.com/hueniverse/hawk/graphs/contributors
diff --git a/node_modules/request/node_modules/hawk/Makefile b/node_modules/request/node_modules/hawk/Makefile
deleted file mode 100755
index b102d5ab8..000000000
--- a/node_modules/request/node_modules/hawk/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-test:
- @node node_modules/lab/bin/lab -a code
-test-cov:
- @node node_modules/lab/bin/lab -a code -t 100
-test-cov-html:
- @node node_modules/lab/bin/lab -a code -r html -o coverage.html
-
-.PHONY: test test-cov test-cov-html
diff --git a/node_modules/request/node_modules/hawk/README.md b/node_modules/request/node_modules/hawk/README.md
deleted file mode 100755
index 0bcd28790..000000000
--- a/node_modules/request/node_modules/hawk/README.md
+++ /dev/null
@@ -1,635 +0,0 @@
-![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png)
-
-<img align="right" src="https://raw.github.com/hueniverse/hawk/master/images/logo.png" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial
-HTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz).
-
-Current version: **2.3**
-
-Note: 2.x is the same exact protocol as 1.1. The version increment reflects a change in the internal error format
-used by the module and used by the node API.
-
-[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk)
-
-# Table of Content
-
-- [**Introduction**](#introduction)
- - [Replay Protection](#replay-protection)
- - [Usage Example](#usage-example)
- - [Protocol Example](#protocol-example)
- - [Payload Validation](#payload-validation)
- - [Response Payload Validation](#response-payload-validation)
- - [Browser Support and Considerations](#browser-support-and-considerations)
-<p></p>
-- [**Single URI Authorization**](#single-uri-authorization)
- - [Usage Example](#bewit-usage-example)
-<p></p>
-- [**Security Considerations**](#security-considerations)
- - [MAC Keys Transmission](#mac-keys-transmission)
- - [Confidentiality of Requests](#confidentiality-of-requests)
- - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers)
- - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials)
- - [Entropy of Keys](#entropy-of-keys)
- - [Coverage Limitations](#coverage-limitations)
- - [Future Time Manipulation](#future-time-manipulation)
- - [Client Clock Poisoning](#client-clock-poisoning)
- - [Bewit Limitations](#bewit-limitations)
- - [Host Header Forgery](#host-header-forgery)
-<p></p>
-- [**Frequently Asked Questions**](#frequently-asked-questions)
-<p></p>
-- [**Implementations**](#implementations)
-- [**Acknowledgements**](#acknowledgements)
-
-# Introduction
-
-**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with
-partial cryptographic verification of the request and response, covering the HTTP method, request URI, host,
-and optionally the request payload.
-
-Similar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of
-client credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme,
-the key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is
-included in its place.
-
-However, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of
-replay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less
-"chattiness" (interaction with the server).
-
-Also unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because
-the client and server must both have access to the key material in the clear.
-
-The primary design goals of this scheme are to:
-* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources,
-* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where
- to send an authenticated request), and
-* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client
- failure to validate the server's identity as part of its TLS handshake.
-
-In addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using
-a query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).
-
-The **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server,
-which is beyond the scope of this module. Typically, the shared credentials are established via an initial
-TLS-protected phase or derived from some other shared confidential information available to both the client
-and the server.
-
-
-## Replay Protection
-
-Without replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more
-than once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when
-making requests. This gives the server enough information to prevent replay attacks.
-
-The nonce is generated by the client, and is a string unique across all requests with the same timestamp and
-key identifier combination.
-
-The timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards
-are rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks.
-By default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in
-practice translates to a maximum of 2 minutes as the skew can be positive or negative).
-
-Using a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client
-clock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types
-(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response
-to a bad timestamp.
-
-There is no expectation that the client will adjust its system clock to match the server (in fact, this would be a
-potential attack vector). Instead, the client only uses the server's time to calculate an offset used only
-for communications with that particular server. The protocol rewards clients with synchronized clocks by reducing
-the number of round trips required to authenticate the first request.
-
-
-## Usage Example
-
-Server code:
-
-```javascript
-var Http = require('http');
-var Hawk = require('hawk');
-
-
-// Credentials lookup function
-
-var credentialsFunc = function (id, callback) {
-
- var credentials = {
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'Steve'
- };
-
- return callback(null, credentials);
-};
-
-// Create HTTP server
-
-var handler = function (req, res) {
-
- // Authenticate incoming request
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- // Prepare response
-
- var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');
- var headers = { 'Content-Type': 'text/plain' };
-
- // Generate Server-Authorization response header
-
- var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] });
- headers['Server-Authorization'] = header;
-
- // Send the response back
-
- res.writeHead(!err ? 200 : 401, headers);
- res.end(payload);
- });
-};
-
-// Start server
-
-Http.createServer(handler).listen(8000, 'example.com');
-```
-
-Client code:
-
-```javascript
-var Request = require('request');
-var Hawk = require('hawk');
-
-
-// Client credentials
-
-var credentials = {
- id: 'dh37fgj492je',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256'
-}
-
-// Request options
-
-var requestOptions = {
- uri: 'http://example.com:8000/resource/1?b=1&a=2',
- method: 'GET',
- headers: {}
-};
-
-// Generate Authorization request header
-
-var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' });
-requestOptions.headers.Authorization = header.field;
-
-// Send authenticated request
-
-Request(requestOptions, function (error, response, body) {
-
- // Authenticate the server's response
-
- var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });
-
- // Output results
-
- console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));
-});
-```
-
-**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local
-machine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method.
-
-```javascript
-Hawk.sntp.start();
-```
-
-
-## Protocol Example
-
-The client attempts to access a protected resource without authentication, sending the following HTTP request to
-the resource server:
-
-```
-GET /resource/1?b=1&a=2 HTTP/1.1
-Host: example.com:8000
-```
-
-The resource server returns an authentication challenge.
-
-```
-HTTP/1.1 401 Unauthorized
-WWW-Authenticate: Hawk
-```
-
-The client has previously obtained a set of **Hawk** credentials for accessing resources on the "http://example.com/"
-server. The **Hawk** credentials issued to the client include the following attributes:
-
-* Key identifier: dh37fgj492je
-* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn
-* Algorithm: sha256
-
-The client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1,
-1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline
-character):
-
-```
-hawk.1.header
-1353832234
-j4h3g2
-GET
-/resource/1?b=1&a=2
-example.com
-8000
-
-some-app-ext-data
-
-```
-
-The request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string.
-The result is base64-encoded to produce the request MAC:
-
-```
-6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=
-```
-
-The client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using
-the HTTP `Authorization` request header field:
-
-```
-GET /resource/1?b=1&a=2 HTTP/1.1
-Host: example.com:8000
-Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="
-```
-
-The server validates the request by calculating the request MAC again based on the request received and verifies the validity
-and scope of the **Hawk** credentials. If valid, the server responds with the requested resource.
-
-
-### Payload Validation
-
-**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash
-using the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):
-* `hawk.1.payload`
-* the content-type in lowercase, without any parameters (e.g. `application/json`)
-* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability)
-
-For example:
-
-* Payload: `Thank you for flying Hawk`
-* Content Type: `text/plain`
-* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=`
-
-Results in the following input to the payload hash function (newline terminated values):
-
-```
-hawk.1.payload
-text/plain
-Thank you for flying Hawk
-
-```
-
-Which produces the following hash value:
-
-```
-Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=
-```
-
-The client constructs the normalized request string (newline terminated values):
-
-```
-hawk.1.header
-1353832234
-j4h3g2
-POST
-/resource/1?a=1&b=2
-example.com
-8000
-Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=
-some-app-ext-data
-
-```
-
-Then calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data,
-and request MAC, with the request using the HTTP `Authorization` request header field:
-
-```
-POST /resource/1?a=1&b=2 HTTP/1.1
-Host: example.com:8000
-Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="
-```
-
-It is up to the server if and when it validates the payload for any given request, based solely on it's security policy
-and the nature of the data included.
-
-If the payload is available at the time of authentication, the server uses the hash value provided by the client to construct
-the normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value
-with the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.
-
-However, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed
-at a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value
-provided by the client after validating the MAC.
-
-It is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value
-included in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided
-by the client, the payload may be modified by an attacker.
-
-
-## Response Payload Validation
-
-**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the
-client to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header
-as a response header using the exact same syntax as the `Authorization` request header field.
-
-The header is contructed using the same process as the client's request header. The server uses the same credentials and other
-artifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with
-new values based on the server response. The rest as identical to those used by the client.
-
-The result MAC digest is included with the optional `hash` and `ext` values:
-
-```
-Server-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"
-```
-
-
-## Browser Support and Considerations
-
-A browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js). It's also a [component](http://component.io/hueniverse/hawk).
-
-**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client.
-Therefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value
-_"WWW-Authenticate, Server-Authorization"_ on each response from your server. As explained in the
-[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers
-can safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a
-["simple response header"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the
-Hawk client from authenticating the requests.You can read more about the why and how in this
-[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server)
-
-
-# Single URI Authorization
-
-There are cases in which limited and short-term access to a protected resource is granted to a third party which does not
-have access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk**
-provides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains
-the necessary credentials to authenticate the request.
-
-Because of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests
-and for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same
-credentials as the client to maintain clear traceability as to who issued which credentials.
-
-In order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within
-the granted access timeframe.
-
-
-## Bewit Usage Example
-
-Server code:
-
-```javascript
-var Http = require('http');
-var Hawk = require('hawk');
-
-
-// Credentials lookup function
-
-var credentialsFunc = function (id, callback) {
-
- var credentials = {
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256'
- };
-
- return callback(null, credentials);
-};
-
-// Create HTTP server
-
-var handler = function (req, res) {
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' });
- res.end(!err ? 'Access granted' : 'Shoosh!');
- });
-};
-
-Http.createServer(handler).listen(8000, 'example.com');
-```
-
-Bewit code generation:
-
-```javascript
-var Request = require('request');
-var Hawk = require('hawk');
-
-
-// Client credentials
-
-var credentials = {
- id: 'dh37fgj492je',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256'
-}
-
-// Generate bewit
-
-var duration = 60 * 5; // 5 Minutes
-var bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' });
-var uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit;
-```
-
-
-# Security Considerations
-
-The greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use.
-Implementers are strongly encouraged to assess how this module addresses their security requirements. This section includes
-an incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server.
-Many of the protections provided in **Hawk** depends on whether and how they are used.
-
-### MAC Keys Transmission
-
-**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used
-to obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.
-
-### Confidentiality of Requests
-
-While **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request
-confidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should
-carefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms
-to protect sensitive resources.
-
-### Spoofing by Counterfeit Servers
-
-**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server
-may choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to
-the server to determine when such measure is included, to up to the client to enforce that policy.
-
-A hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise
-incorrect responses. Service providers should consider such attacks when developing services using this protocol, and should
-require transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.
-
-### Plaintext Storage of Credentials
-
-The **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC,
-the server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which
-store only a one-way hash of user credentials.
-
-If an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able
-to perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized
-access.
-
-### Entropy of Keys
-
-Unless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request
-MAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to
-assign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk**
-credentials are valid.
-
-For example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force
-attack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the
-longest key reasonable.
-
-It is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high
-quality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit
-patterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use
-cryptographically secure PRNGs to avoid these problems.
-
-### Coverage Limitations
-
-The request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers
-which can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence
-or value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the
-`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC.
-
-The response authentication, when performed, only covers the response payload, content-type, and the request information
-provided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or
-any other response header field (e.g. Location) which can affect the client's behaviour.
-
-### Future Time Manipulation
-
-The protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its
-current time when an invalid timestamp is received.
-
-If an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause
-the client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will
-not likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then
-be able to replay the request at the correct time without detection.
-
-The client must only use the time information provided by the server if:
-* it was delivered over a TLS connection and the server identity has been verified, or
-* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified.
-
-### Client Clock Poisoning
-
-When receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use
-the time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with
-that particular server.
-
-### Bewit Limitations
-
-Special care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot
-be revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with
-access to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET
-requests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private
-and sensitive information.
-
-### Host Header Forgery
-
-Hawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port`
-options are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and
-use that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server
-implementors must manually verify that the host header received matches their expectation (or use the options mentioned above).
-
-# Frequently Asked Questions
-
-### Where is the protocol specification?
-
-If you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source
-project instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about
-something? Open an issue!
-
-### Is it done?
-
-As of version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental
-and is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions
-and suggestions.
-
-### Where can I find **Hawk** implementations in other languages?
-
-**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, it has been ported to other languages.
-The full list is maintained [here](https://github.com/hueniverse/hawk/issues?labels=port&state=closed). Please add an issue if you are
-working on another port. A cross-platform test-suite is in the works.
-
-### Why isn't the algorithm part of the challenge or dynamically negotiated?
-
-The algorithm used is closely related to the key issued as different algorithms require different key sizes (and other
-requirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm
-together as part of the issued credentials.
-
-### Why is Host and Content-Type the only headers covered by the request MAC?
-
-It is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no
-well-established way to normalize them. Many platforms change the case of header field names and values. The only
-straight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request,
-an approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information,
-and introduces other security issues because firewalls will not be aware of these "hidden" headers. In addition, any information
-repeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.
-
-### Why not just use HTTP Digest?
-
-Digest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send
-a protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile
-where extra round-trip are costly.
-
-### Why bother with all this nonce and timestamp business?
-
-**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp
-and nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses
-it by requiring the client to sync its clock, but provides it with tools to accomplish it.
-
-In general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected
-system where the clients are implemented using best practices and are under the control of the server. Instead of dropping
-replay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers
-with the ability to decide how to enforce their security policy without impacting the client's implementation.
-
-### What are `app` and `dlg` in the authorization header and normalized mac string?
-
-The original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which
-this module is specifically designed for, and a delegated access mode which is being developed separately in
-[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`.
-This provides binding between the credentials and the application in a way that prevents an attacker from tricking an application
-to use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the
-application the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly,
-but with the additional security of delegated credentials.
-
-### What is the purpose of the static strings used in each normalized MAC input?
-
-When calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being
-used or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request,
-response, and a bewit use cases). It also protects against exploits created after a potential change in how the protocol
-creates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it
-can create an exploit opportunity for cases where the nonce is similar in format to a timestamp.
-
-### Does **Hawk** have anything to do with OAuth?
-
-Short answer: no.
-
-**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent
-incompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it
-to authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard
-at work to produce more garbage.
-
-**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case
-of delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz).
-
-# Implementations
-
-- [Logibit Hawk in F#/.Net](https://github.com/logibit/logibit.hawk/)
-- [Tent Hawk in Ruby](https://github.com/tent/hawk-ruby)
-- [Wealdtech in Java](https://github.com/wealdtech/hawk)
-- [Kumar's Mohawk in Python](https://github.com/kumar303/mohawk/)
-
-# Acknowledgements
-
-**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal
-co-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.
-
-Special thanks to Ben Laurie for his always insightful feedback and advice.
-
-The **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com).
diff --git a/node_modules/request/node_modules/hawk/bower.json b/node_modules/request/node_modules/hawk/bower.json
deleted file mode 100644
index 7d2d120e0..000000000
--- a/node_modules/request/node_modules/hawk/bower.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "hawk",
- "main": "lib/browser.js",
- "license": "./LICENSE",
- "ignore": [
- "!lib",
- "lib/*",
- "!lib/browser.js",
- "index.js"
- ],
- "keywords": [
- "http",
- "authentication",
- "scheme",
- "hawk"
- ],
- "authors": [
- "Eran Hammer <eran@hammer.io>"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/hueniverse/hawk.git"
- }
-}
diff --git a/node_modules/request/node_modules/hawk/component.json b/node_modules/request/node_modules/hawk/component.json
deleted file mode 100644
index 63e76a2e3..000000000
--- a/node_modules/request/node_modules/hawk/component.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "hawk",
- "repo": "hueniverse/hawk",
- "description": "HTTP Hawk Authentication Scheme",
- "version": "1.0.0",
- "keywords": [
- "http",
- "authentication",
- "scheme",
- "hawk"
- ],
- "dependencies": {},
- "development": {},
- "license": "BSD",
- "main": "lib/browser.js",
- "scripts": [
- "lib/browser.js"
- ]
-} \ No newline at end of file
diff --git a/node_modules/request/node_modules/hawk/example/usage.js b/node_modules/request/node_modules/hawk/example/usage.js
deleted file mode 100755
index 8c063f6cf..000000000
--- a/node_modules/request/node_modules/hawk/example/usage.js
+++ /dev/null
@@ -1,78 +0,0 @@
-// Load modules
-
-var Http = require('http');
-var Request = require('request');
-var Hawk = require('../lib');
-
-
-// Declare internals
-
-var internals = {
- credentials: {
- dh37fgj492je: {
- id: 'dh37fgj492je', // Required by Hawk.client.header
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'Steve'
- }
- }
-};
-
-
-// Credentials lookup function
-
-var credentialsFunc = function (id, callback) {
-
- return callback(null, internals.credentials[id]);
-};
-
-
-// Create HTTP server
-
-var handler = function (req, res) {
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');
- var headers = {
- 'Content-Type': 'text/plain',
- 'Server-Authorization': Hawk.server.header(credentials, artifacts, { payload: payload, contentType: 'text/plain' })
- };
-
- res.writeHead(!err ? 200 : 401, headers);
- res.end(payload);
- });
-};
-
-Http.createServer(handler).listen(8000, '127.0.0.1');
-
-
-// Send unauthenticated request
-
-Request('http://127.0.0.1:8000/resource/1?b=1&a=2', function (error, response, body) {
-
- console.log(response.statusCode + ': ' + body);
-});
-
-
-// Send authenticated request
-
-credentialsFunc('dh37fgj492je', function (err, credentials) {
-
- var header = Hawk.client.header('http://127.0.0.1:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'and welcome!' });
- var options = {
- uri: 'http://127.0.0.1:8000/resource/1?b=1&a=2',
- method: 'GET',
- headers: {
- authorization: header.field
- }
- };
-
- Request(options, function (error, response, body) {
-
- var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });
- console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));
- process.exit(0);
- });
-});
-
diff --git a/node_modules/request/node_modules/hawk/images/hawk.png b/node_modules/request/node_modules/hawk/images/hawk.png
deleted file mode 100755
index a0e15cda0..000000000
--- a/node_modules/request/node_modules/hawk/images/hawk.png
+++ /dev/null
Binary files differ
diff --git a/node_modules/request/node_modules/hawk/images/logo.png b/node_modules/request/node_modules/hawk/images/logo.png
deleted file mode 100755
index b8ff59017..000000000
--- a/node_modules/request/node_modules/hawk/images/logo.png
+++ /dev/null
Binary files differ
diff --git a/node_modules/request/node_modules/hawk/index.js b/node_modules/request/node_modules/hawk/index.js
deleted file mode 100755
index 4cc88b358..000000000
--- a/node_modules/request/node_modules/hawk/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib'); \ No newline at end of file
diff --git a/node_modules/request/node_modules/hawk/lib/browser.js b/node_modules/request/node_modules/hawk/lib/browser.js
deleted file mode 100755
index 3307fa243..000000000
--- a/node_modules/request/node_modules/hawk/lib/browser.js
+++ /dev/null
@@ -1,641 +0,0 @@
-/*
- HTTP Hawk Authentication Scheme
- Copyright (c) 2012-2014, Eran Hammer <eran@hammer.io>
- BSD Licensed
-*/
-
-
-// Declare namespace
-
-var hawk = {
- internals: {}
-};
-
-
-hawk.client = {
-
- // Generate an Authorization header for a given request
-
- /*
- uri: 'http://example.com/resource?a=b' or object generated by hawk.utils.parseUri()
- method: HTTP verb (e.g. 'GET', 'POST')
- options: {
-
- // Required
-
- credentials: {
- id: 'dh37fgj492je',
- key: 'aoijedoaijsdlaksjdl',
- algorithm: 'sha256' // 'sha1', 'sha256'
- },
-
- // Optional
-
- ext: 'application-specific', // Application specific data sent via the ext attribute
- timestamp: Date.now() / 1000, // A pre-calculated timestamp in seconds
- nonce: '2334f34f', // A pre-generated nonce
- localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided)
- payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided)
- contentType: 'application/json', // Payload content-type (ignored if hash provided)
- hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash
- app: '24s23423f34dx', // Oz application id
- dlg: '234sz34tww3sd' // Oz delegated-by application id
- }
- */
-
- header: function (uri, method, options) {
-
- var result = {
- field: '',
- artifacts: {}
- };
-
- // Validate inputs
-
- if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') ||
- !method || typeof method !== 'string' ||
- !options || typeof options !== 'object') {
-
- result.err = 'Invalid argument type';
- return result;
- }
-
- // Application time
-
- var timestamp = options.timestamp || hawk.utils.now(options.localtimeOffsetMsec);
-
- // Validate credentials
-
- var credentials = options.credentials;
- if (!credentials ||
- !credentials.id ||
- !credentials.key ||
- !credentials.algorithm) {
-
- result.err = 'Invalid credentials object';
- return result;
- }
-
- if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- result.err = 'Unknown algorithm';
- return result;
- }
-
- // Parse URI
-
- if (typeof uri === 'string') {
- uri = hawk.utils.parseUri(uri);
- }
-
- // Calculate signature
-
- var artifacts = {
- ts: timestamp,
- nonce: options.nonce || hawk.utils.randomString(6),
- method: method,
- resource: uri.relative,
- host: uri.hostname,
- port: uri.port,
- hash: options.hash,
- ext: options.ext,
- app: options.app,
- dlg: options.dlg
- };
-
- result.artifacts = artifacts;
-
- // Calculate payload hash
-
- if (!artifacts.hash &&
- (options.payload || options.payload === '')) {
-
- artifacts.hash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType);
- }
-
- var mac = hawk.crypto.calculateMac('header', credentials, artifacts);
-
- // Construct header
-
- var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed
- var header = 'Hawk id="' + credentials.id +
- '", ts="' + artifacts.ts +
- '", nonce="' + artifacts.nonce +
- (artifacts.hash ? '", hash="' + artifacts.hash : '') +
- (hasExt ? '", ext="' + hawk.utils.escapeHeaderAttribute(artifacts.ext) : '') +
- '", mac="' + mac + '"';
-
- if (artifacts.app) {
- header += ', app="' + artifacts.app +
- (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"';
- }
-
- result.field = header;
-
- return result;
- },
-
- // Generate a bewit value for a given URI
-
- /*
- uri: 'http://example.com/resource?a=b'
- options: {
-
- // Required
-
- credentials: {
- id: 'dh37fgj492je',
- key: 'aoijedoaijsdlaksjdl',
- algorithm: 'sha256' // 'sha1', 'sha256'
- },
- ttlSec: 60 * 60, // TTL in seconds
-
- // Optional
-
- ext: 'application-specific', // Application specific data sent via the ext attribute
- localtimeOffsetMsec: 400 // Time offset to sync with server time
- };
- */
-
- bewit: function (uri, options) {
-
- // Validate inputs
-
- if (!uri ||
- (typeof uri !== 'string') ||
- !options ||
- typeof options !== 'object' ||
- !options.ttlSec) {
-
- return '';
- }
-
- options.ext = (options.ext === null || options.ext === undefined ? '' : options.ext); // Zero is valid value
-
- // Application time
-
- var now = hawk.utils.now(options.localtimeOffsetMsec);
-
- // Validate credentials
-
- var credentials = options.credentials;
- if (!credentials ||
- !credentials.id ||
- !credentials.key ||
- !credentials.algorithm) {
-
- return '';
- }
-
- if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return '';
- }
-
- // Parse URI
-
- uri = hawk.utils.parseUri(uri);
-
- // Calculate signature
-
- var exp = now + options.ttlSec;
- var mac = hawk.crypto.calculateMac('bewit', credentials, {
- ts: exp,
- nonce: '',
- method: 'GET',
- resource: uri.relative, // Maintain trailing '?' and query params
- host: uri.hostname,
- port: uri.port,
- ext: options.ext
- });
-
- // Construct bewit: id\exp\mac\ext
-
- var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + options.ext;
- return hawk.utils.base64urlEncode(bewit);
- },
-
- // Validate server response
-
- /*
- request: object created via 'new XMLHttpRequest()' after response received
- artifacts: object received from header().artifacts
- options: {
- payload: optional payload received
- required: specifies if a Server-Authorization header is required. Defaults to 'false'
- }
- */
-
- authenticate: function (request, credentials, artifacts, options) {
-
- options = options || {};
-
- var getHeader = function (name) {
-
- return request.getResponseHeader ? request.getResponseHeader(name) : request.getHeader(name);
- };
-
- var wwwAuthenticate = getHeader('www-authenticate');
- if (wwwAuthenticate) {
-
- // Parse HTTP WWW-Authenticate header
-
- var attributes = hawk.utils.parseAuthorizationHeader(wwwAuthenticate, ['ts', 'tsm', 'error']);
- if (!attributes) {
- return false;
- }
-
- if (attributes.ts) {
- var tsm = hawk.crypto.calculateTsMac(attributes.ts, credentials);
- if (tsm !== attributes.tsm) {
- return false;
- }
-
- hawk.utils.setNtpOffset(attributes.ts - Math.floor((new Date()).getTime() / 1000)); // Keep offset at 1 second precision
- }
- }
-
- // Parse HTTP Server-Authorization header
-
- var serverAuthorization = getHeader('server-authorization');
- if (!serverAuthorization &&
- !options.required) {
-
- return true;
- }
-
- var attributes = hawk.utils.parseAuthorizationHeader(serverAuthorization, ['mac', 'ext', 'hash']);
- if (!attributes) {
- return false;
- }
-
- var modArtifacts = {
- ts: artifacts.ts,
- nonce: artifacts.nonce,
- method: artifacts.method,
- resource: artifacts.resource,
- host: artifacts.host,
- port: artifacts.port,
- hash: attributes.hash,
- ext: attributes.ext,
- app: artifacts.app,
- dlg: artifacts.dlg
- };
-
- var mac = hawk.crypto.calculateMac('response', credentials, modArtifacts);
- if (mac !== attributes.mac) {
- return false;
- }
-
- if (!options.payload &&
- options.payload !== '') {
-
- return true;
- }
-
- if (!attributes.hash) {
- return false;
- }
-
- var calculatedHash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, getHeader('content-type'));
- return (calculatedHash === attributes.hash);
- },
-
- message: function (host, port, message, options) {
-
- // Validate inputs
-
- if (!host || typeof host !== 'string' ||
- !port || typeof port !== 'number' ||
- message === null || message === undefined || typeof message !== 'string' ||
- !options || typeof options !== 'object') {
-
- return null;
- }
-
- // Application time
-
- var timestamp = options.timestamp || hawk.utils.now(options.localtimeOffsetMsec);
-
- // Validate credentials
-
- var credentials = options.credentials;
- if (!credentials ||
- !credentials.id ||
- !credentials.key ||
- !credentials.algorithm) {
-
- // Invalid credential object
- return null;
- }
-
- if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return null;
- }
-
- // Calculate signature
-
- var artifacts = {
- ts: timestamp,
- nonce: options.nonce || hawk.utils.randomString(6),
- host: host,
- port: port,
- hash: hawk.crypto.calculatePayloadHash(message, credentials.algorithm)
- };
-
- // Construct authorization
-
- var result = {
- id: credentials.id,
- ts: artifacts.ts,
- nonce: artifacts.nonce,
- hash: artifacts.hash,
- mac: hawk.crypto.calculateMac('message', credentials, artifacts)
- };
-
- return result;
- },
-
- authenticateTimestamp: function (message, credentials, updateClock) { // updateClock defaults to true
-
- var tsm = hawk.crypto.calculateTsMac(message.ts, credentials);
- if (tsm !== message.tsm) {
- return false;
- }
-
- if (updateClock !== false) {
- hawk.utils.setNtpOffset(message.ts - Math.floor((new Date()).getTime() / 1000)); // Keep offset at 1 second precision
- }
-
- return true;
- }
-};
-
-
-hawk.crypto = {
-
- headerVersion: '1',
-
- algorithms: ['sha1', 'sha256'],
-
- calculateMac: function (type, credentials, options) {
-
- var normalized = hawk.crypto.generateNormalizedString(type, options);
-
- var hmac = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()](normalized, credentials.key);
- return hmac.toString(CryptoJS.enc.Base64);
- },
-
- generateNormalizedString: function (type, options) {
-
- var normalized = 'hawk.' + hawk.crypto.headerVersion + '.' + type + '\n' +
- options.ts + '\n' +
- options.nonce + '\n' +
- (options.method || '').toUpperCase() + '\n' +
- (options.resource || '') + '\n' +
- options.host.toLowerCase() + '\n' +
- options.port + '\n' +
- (options.hash || '') + '\n';
-
- if (options.ext) {
- normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n');
- }
-
- normalized += '\n';
-
- if (options.app) {
- normalized += options.app + '\n' +
- (options.dlg || '') + '\n';
- }
-
- return normalized;
- },
-
- calculatePayloadHash: function (payload, algorithm, contentType) {
-
- var hash = CryptoJS.algo[algorithm.toUpperCase()].create();
- hash.update('hawk.' + hawk.crypto.headerVersion + '.payload\n');
- hash.update(hawk.utils.parseContentType(contentType) + '\n');
- hash.update(payload);
- hash.update('\n');
- return hash.finalize().toString(CryptoJS.enc.Base64);
- },
-
- calculateTsMac: function (ts, credentials) {
-
- var hash = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()]('hawk.' + hawk.crypto.headerVersion + '.ts\n' + ts + '\n', credentials.key);
- return hash.toString(CryptoJS.enc.Base64);
- }
-};
-
-
-// localStorage compatible interface
-
-hawk.internals.LocalStorage = function () {
-
- this._cache = {};
- this.length = 0;
-
- this.getItem = function (key) {
-
- return this._cache.hasOwnProperty(key) ? String(this._cache[key]) : null;
- };
-
- this.setItem = function (key, value) {
-
- this._cache[key] = String(value);
- this.length = Object.keys(this._cache).length;
- };
-
- this.removeItem = function (key) {
-
- delete this._cache[key];
- this.length = Object.keys(this._cache).length;
- };
-
- this.clear = function () {
-
- this._cache = {};
- this.length = 0;
- };
-
- this.key = function (i) {
-
- return Object.keys(this._cache)[i || 0];
- };
-};
-
-
-hawk.utils = {
-
- storage: new hawk.internals.LocalStorage(),
-
- setStorage: function (storage) {
-
- var ntpOffset = hawk.utils.storage.getItem('hawk_ntp_offset');
- hawk.utils.storage = storage;
- if (ntpOffset) {
- hawk.utils.setNtpOffset(ntpOffset);
- }
- },
-
- setNtpOffset: function (offset) {
-
- try {
- hawk.utils.storage.setItem('hawk_ntp_offset', offset);
- }
- catch (err) {
- console.error('[hawk] could not write to storage.');
- console.error(err);
- }
- },
-
- getNtpOffset: function () {
-
- var offset = hawk.utils.storage.getItem('hawk_ntp_offset');
- if (!offset) {
- return 0;
- }
-
- return parseInt(offset, 10);
- },
-
- now: function (localtimeOffsetMsec) {
-
- return Math.floor(((new Date()).getTime() + (localtimeOffsetMsec || 0)) / 1000) + hawk.utils.getNtpOffset();
- },
-
- escapeHeaderAttribute: function (attribute) {
-
- return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"');
- },
-
- parseContentType: function (header) {
-
- if (!header) {
- return '';
- }
-
- return header.split(';')[0].replace(/^\s+|\s+$/g, '').toLowerCase();
- },
-
- parseAuthorizationHeader: function (header, keys) {
-
- if (!header) {
- return null;
- }
-
- var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something]
- if (!headerParts) {
- return null;
- }
-
- var scheme = headerParts[1];
- if (scheme.toLowerCase() !== 'hawk') {
- return null;
- }
-
- var attributesString = headerParts[2];
- if (!attributesString) {
- return null;
- }
-
- var attributes = {};
- var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) {
-
- // Check valid attribute names
-
- if (keys.indexOf($1) === -1) {
- return;
- }
-
- // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9
-
- if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) {
- return;
- }
-
- // Check for duplicates
-
- if (attributes.hasOwnProperty($1)) {
- return;
- }
-
- attributes[$1] = $2;
- return '';
- });
-
- if (verify !== '') {
- return null;
- }
-
- return attributes;
- },
-
- randomString: function (size) {
-
- var randomSource = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- var len = randomSource.length;
-
- var result = [];
- for (var i = 0; i < size; ++i) {
- result[i] = randomSource[Math.floor(Math.random() * len)];
- }
-
- return result.join('');
- },
-
- parseUri: function (input) {
-
- // Based on: parseURI 1.2.2
- // http://blog.stevenlevithan.com/archives/parseuri
- // (c) Steven Levithan <stevenlevithan.com>
- // MIT License
-
- var keys = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'hostname', 'port', 'resource', 'relative', 'pathname', 'directory', 'file', 'query', 'fragment'];
-
- var uriRegex = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?(((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?)(?:#(.*))?)/;
- var uriByNumber = input.match(uriRegex);
- var uri = {};
-
- for (var i = 0, il = keys.length; i < il; ++i) {
- uri[keys[i]] = uriByNumber[i] || '';
- }
-
- if (uri.port === '') {
- uri.port = (uri.protocol.toLowerCase() === 'http' ? '80' : (uri.protocol.toLowerCase() === 'https' ? '443' : ''));
- }
-
- return uri;
- },
-
- base64urlEncode: function (value) {
-
- var wordArray = CryptoJS.enc.Utf8.parse(value);
- var encoded = CryptoJS.enc.Base64.stringify(wordArray);
- return encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, '');
- }
-};
-
-
-// $lab:coverage:off$
-
-// Based on: Crypto-JS v3.1.2
-// Copyright (c) 2009-2013, Jeff Mott. All rights reserved.
-// http://code.google.com/p/crypto-js/
-// http://code.google.com/p/crypto-js/wiki/License
-
-var CryptoJS = CryptoJS || function (h, r) { var k = {}, l = k.lib = {}, n = function () { }, f = l.Base = { extend: function (a) { n.prototype = this; var b = new n; a && b.mixIn(a); b.hasOwnProperty("init") || (b.init = function () { b.$super.init.apply(this, arguments) }); b.init.prototype = b; b.$super = this; return b }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var b in a) a.hasOwnProperty(b) && (this[b] = a[b]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } }, j = l.WordArray = f.extend({ init: function (a, b) { a = this.words = a || []; this.sigBytes = b != r ? b : 4 * a.length }, toString: function (a) { return (a || s).stringify(this) }, concat: function (a) { var b = this.words, d = a.words, c = this.sigBytes; a = a.sigBytes; this.clamp(); if (c % 4) for (var e = 0; e < a; e++) b[c + e >>> 2] |= (d[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 - 8 * ((c + e) % 4); else if (65535 < d.length) for (e = 0; e < a; e += 4) b[c + e >>> 2] = d[e >>> 2]; else b.push.apply(b, d); this.sigBytes += a; return this }, clamp: function () { var a = this.words, b = this.sigBytes; a[b >>> 2] &= 4294967295 << 32 - 8 * (b % 4); a.length = h.ceil(b / 4) }, clone: function () { var a = f.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var b = [], d = 0; d < a; d += 4) b.push(4294967296 * h.random() | 0); return new j.init(b, a) } }), m = k.enc = {}, s = m.Hex = { stringify: function (a) { var b = a.words; a = a.sigBytes; for (var d = [], c = 0; c < a; c++) { var e = b[c >>> 2] >>> 24 - 8 * (c % 4) & 255; d.push((e >>> 4).toString(16)); d.push((e & 15).toString(16)) } return d.join("") }, parse: function (a) { for (var b = a.length, d = [], c = 0; c < b; c += 2) d[c >>> 3] |= parseInt(a.substr(c, 2), 16) << 24 - 4 * (c % 8); return new j.init(d, b / 2) } }, p = m.Latin1 = { stringify: function (a) { var b = a.words; a = a.sigBytes; for (var d = [], c = 0; c < a; c++) d.push(String.fromCharCode(b[c >>> 2] >>> 24 - 8 * (c % 4) & 255)); return d.join("") }, parse: function (a) { for (var b = a.length, d = [], c = 0; c < b; c++) d[c >>> 2] |= (a.charCodeAt(c) & 255) << 24 - 8 * (c % 4); return new j.init(d, b) } }, t = m.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(p.stringify(a))) } catch (b) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return p.parse(unescape(encodeURIComponent(a))) } }, q = l.BufferedBlockAlgorithm = f.extend({ reset: function () { this._data = new j.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = t.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var b = this._data, d = b.words, c = b.sigBytes, e = this.blockSize, f = c / (4 * e), f = a ? h.ceil(f) : h.max((f | 0) - this._minBufferSize, 0); a = f * e; c = h.min(4 * a, c); if (a) { for (var g = 0; g < a; g += e) this._doProcessBlock(d, g); g = d.splice(0, a); b.sigBytes -= c } return new j.init(g, c) }, clone: function () { var a = f.clone.call(this); a._data = this._data.clone(); return a }, _minBufferSize: 0 }); l.Hasher = q.extend({ cfg: f.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { q.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (b, d) { return (new a.init(d)).finalize(b) } }, _createHmacHelper: function (a) { return function (b, d) { return (new u.HMAC.init(a, d)).finalize(b) } } }); var u = k.algo = {}; return k }(Math);
-(function () { var k = CryptoJS, b = k.lib, m = b.WordArray, l = b.Hasher, d = [], b = k.algo.SHA1 = l.extend({ _doReset: function () { this._hash = new m.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (n, p) { for (var a = this._hash.words, e = a[0], f = a[1], h = a[2], j = a[3], b = a[4], c = 0; 80 > c; c++) { if (16 > c) d[c] = n[p + c] | 0; else { var g = d[c - 3] ^ d[c - 8] ^ d[c - 14] ^ d[c - 16]; d[c] = g << 1 | g >>> 31 } g = (e << 5 | e >>> 27) + b + d[c]; g = 20 > c ? g + ((f & h | ~f & j) + 1518500249) : 40 > c ? g + ((f ^ h ^ j) + 1859775393) : 60 > c ? g + ((f & h | f & j | h & j) - 1894007588) : g + ((f ^ h ^ j) - 899497514); b = j; j = h; h = f << 30 | f >>> 2; f = e; e = g } a[0] = a[0] + e | 0; a[1] = a[1] + f | 0; a[2] = a[2] + h | 0; a[3] = a[3] + j | 0; a[4] = a[4] + b | 0 }, _doFinalize: function () { var b = this._data, d = b.words, a = 8 * this._nDataBytes, e = 8 * b.sigBytes; d[e >>> 5] |= 128 << 24 - e % 32; d[(e + 64 >>> 9 << 4) + 14] = Math.floor(a / 4294967296); d[(e + 64 >>> 9 << 4) + 15] = a; b.sigBytes = 4 * d.length; this._process(); return this._hash }, clone: function () { var b = l.clone.call(this); b._hash = this._hash.clone(); return b } }); k.SHA1 = l._createHelper(b); k.HmacSHA1 = l._createHmacHelper(b) })();
-(function (k) { for (var g = CryptoJS, h = g.lib, v = h.WordArray, j = h.Hasher, h = g.algo, s = [], t = [], u = function (q) { return 4294967296 * (q - (q | 0)) | 0 }, l = 2, b = 0; 64 > b;) { var d; a: { d = l; for (var w = k.sqrt(d), r = 2; r <= w; r++) if (!(d % r)) { d = !1; break a } d = !0 } d && (8 > b && (s[b] = u(k.pow(l, 0.5))), t[b] = u(k.pow(l, 1 / 3)), b++); l++ } var n = [], h = h.SHA256 = j.extend({ _doReset: function () { this._hash = new v.init(s.slice(0)) }, _doProcessBlock: function (q, h) { for (var a = this._hash.words, c = a[0], d = a[1], b = a[2], k = a[3], f = a[4], g = a[5], j = a[6], l = a[7], e = 0; 64 > e; e++) { if (16 > e) n[e] = q[h + e] | 0; else { var m = n[e - 15], p = n[e - 2]; n[e] = ((m << 25 | m >>> 7) ^ (m << 14 | m >>> 18) ^ m >>> 3) + n[e - 7] + ((p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10) + n[e - 16] } m = l + ((f << 26 | f >>> 6) ^ (f << 21 | f >>> 11) ^ (f << 7 | f >>> 25)) + (f & g ^ ~f & j) + t[e] + n[e]; p = ((c << 30 | c >>> 2) ^ (c << 19 | c >>> 13) ^ (c << 10 | c >>> 22)) + (c & d ^ c & b ^ d & b); l = j; j = g; g = f; f = k + m | 0; k = b; b = d; d = c; c = m + p | 0 } a[0] = a[0] + c | 0; a[1] = a[1] + d | 0; a[2] = a[2] + b | 0; a[3] = a[3] + k | 0; a[4] = a[4] + f | 0; a[5] = a[5] + g | 0; a[6] = a[6] + j | 0; a[7] = a[7] + l | 0 }, _doFinalize: function () { var d = this._data, b = d.words, a = 8 * this._nDataBytes, c = 8 * d.sigBytes; b[c >>> 5] |= 128 << 24 - c % 32; b[(c + 64 >>> 9 << 4) + 14] = k.floor(a / 4294967296); b[(c + 64 >>> 9 << 4) + 15] = a; d.sigBytes = 4 * b.length; this._process(); return this._hash }, clone: function () { var b = j.clone.call(this); b._hash = this._hash.clone(); return b } }); g.SHA256 = j._createHelper(h); g.HmacSHA256 = j._createHmacHelper(h) })(Math);
-(function () { var c = CryptoJS, k = c.enc.Utf8; c.algo.HMAC = c.lib.Base.extend({ init: function (a, b) { a = this._hasher = new a.init; "string" == typeof b && (b = k.parse(b)); var c = a.blockSize, e = 4 * c; b.sigBytes > e && (b = a.finalize(b)); b.clamp(); for (var f = this._oKey = b.clone(), g = this._iKey = b.clone(), h = f.words, j = g.words, d = 0; d < c; d++) h[d] ^= 1549556828, j[d] ^= 909522486; f.sigBytes = g.sigBytes = e; this.reset() }, reset: function () { var a = this._hasher; a.reset(); a.update(this._iKey) }, update: function (a) { this._hasher.update(a); return this }, finalize: function (a) { var b = this._hasher; a = b.finalize(a); b.reset(); return b.finalize(this._oKey.clone().concat(a)) } }) })();
-(function () { var h = CryptoJS, j = h.lib.WordArray; h.enc.Base64 = { stringify: function (b) { var e = b.words, f = b.sigBytes, c = this._map; b.clamp(); b = []; for (var a = 0; a < f; a += 3) for (var d = (e[a >>> 2] >>> 24 - 8 * (a % 4) & 255) << 16 | (e[a + 1 >>> 2] >>> 24 - 8 * ((a + 1) % 4) & 255) << 8 | e[a + 2 >>> 2] >>> 24 - 8 * ((a + 2) % 4) & 255, g = 0; 4 > g && a + 0.75 * g < f; g++) b.push(c.charAt(d >>> 6 * (3 - g) & 63)); if (e = c.charAt(64)) for (; b.length % 4;) b.push(e); return b.join("") }, parse: function (b) { var e = b.length, f = this._map, c = f.charAt(64); c && (c = b.indexOf(c), -1 != c && (e = c)); for (var c = [], a = 0, d = 0; d < e; d++) if (d % 4) { var g = f.indexOf(b.charAt(d - 1)) << 2 * (d % 4), h = f.indexOf(b.charAt(d)) >>> 6 - 2 * (d % 4); c[a >>> 2] |= (g | h) << 24 - 8 * (a % 4); a++ } return j.create(c, a) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } })();
-
-hawk.crypto.internals = CryptoJS;
-
-
-// Export if used as a module
-
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = hawk;
-}
-
-// $lab:coverage:on$
diff --git a/node_modules/request/node_modules/hawk/lib/client.js b/node_modules/request/node_modules/hawk/lib/client.js
deleted file mode 100755
index 7fdd48412..000000000
--- a/node_modules/request/node_modules/hawk/lib/client.js
+++ /dev/null
@@ -1,369 +0,0 @@
-// Load modules
-
-var Url = require('url');
-var Hoek = require('hoek');
-var Cryptiles = require('cryptiles');
-var Crypto = require('./crypto');
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Generate an Authorization header for a given request
-
-/*
- uri: 'http://example.com/resource?a=b' or object from Url.parse()
- method: HTTP verb (e.g. 'GET', 'POST')
- options: {
-
- // Required
-
- credentials: {
- id: 'dh37fgj492je',
- key: 'aoijedoaijsdlaksjdl',
- algorithm: 'sha256' // 'sha1', 'sha256'
- },
-
- // Optional
-
- ext: 'application-specific', // Application specific data sent via the ext attribute
- timestamp: Date.now(), // A pre-calculated timestamp
- nonce: '2334f34f', // A pre-generated nonce
- localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided)
- payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided)
- contentType: 'application/json', // Payload content-type (ignored if hash provided)
- hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash
- app: '24s23423f34dx', // Oz application id
- dlg: '234sz34tww3sd' // Oz delegated-by application id
- }
-*/
-
-exports.header = function (uri, method, options) {
-
- var result = {
- field: '',
- artifacts: {}
- };
-
- // Validate inputs
-
- if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') ||
- !method || typeof method !== 'string' ||
- !options || typeof options !== 'object') {
-
- result.err = 'Invalid argument type';
- return result;
- }
-
- // Application time
-
- var timestamp = options.timestamp || Utils.nowSecs(options.localtimeOffsetMsec);
-
- // Validate credentials
-
- var credentials = options.credentials;
- if (!credentials ||
- !credentials.id ||
- !credentials.key ||
- !credentials.algorithm) {
-
- result.err = 'Invalid credential object';
- return result;
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- result.err = 'Unknown algorithm';
- return result;
- }
-
- // Parse URI
-
- if (typeof uri === 'string') {
- uri = Url.parse(uri);
- }
-
- // Calculate signature
-
- var artifacts = {
- ts: timestamp,
- nonce: options.nonce || Cryptiles.randomString(6),
- method: method,
- resource: uri.pathname + (uri.search || ''), // Maintain trailing '?'
- host: uri.hostname,
- port: uri.port || (uri.protocol === 'http:' ? 80 : 443),
- hash: options.hash,
- ext: options.ext,
- app: options.app,
- dlg: options.dlg
- };
-
- result.artifacts = artifacts;
-
- // Calculate payload hash
-
- if (!artifacts.hash &&
- (options.payload || options.payload === '')) {
-
- artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType);
- }
-
- var mac = Crypto.calculateMac('header', credentials, artifacts);
-
- // Construct header
-
- var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed
- var header = 'Hawk id="' + credentials.id +
- '", ts="' + artifacts.ts +
- '", nonce="' + artifacts.nonce +
- (artifacts.hash ? '", hash="' + artifacts.hash : '') +
- (hasExt ? '", ext="' + Hoek.escapeHeaderAttribute(artifacts.ext) : '') +
- '", mac="' + mac + '"';
-
- if (artifacts.app) {
- header += ', app="' + artifacts.app +
- (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"';
- }
-
- result.field = header;
-
- return result;
-};
-
-
-// Validate server response
-
-/*
- res: node's response object
- artifacts: object received from header().artifacts
- options: {
- payload: optional payload received
- required: specifies if a Server-Authorization header is required. Defaults to 'false'
- }
-*/
-
-exports.authenticate = function (res, credentials, artifacts, options) {
-
- artifacts = Hoek.clone(artifacts);
- options = options || {};
-
- if (res.headers['www-authenticate']) {
-
- // Parse HTTP WWW-Authenticate header
-
- var attributes = Utils.parseAuthorizationHeader(res.headers['www-authenticate'], ['ts', 'tsm', 'error']);
- if (attributes instanceof Error) {
- return false;
- }
-
- // Validate server timestamp (not used to update clock since it is done via the SNPT client)
-
- if (attributes.ts) {
- var tsm = Crypto.calculateTsMac(attributes.ts, credentials);
- if (tsm !== attributes.tsm) {
- return false;
- }
- }
- }
-
- // Parse HTTP Server-Authorization header
-
- if (!res.headers['server-authorization'] &&
- !options.required) {
-
- return true;
- }
-
- var attributes = Utils.parseAuthorizationHeader(res.headers['server-authorization'], ['mac', 'ext', 'hash']);
- if (attributes instanceof Error) {
- return false;
- }
-
- artifacts.ext = attributes.ext;
- artifacts.hash = attributes.hash;
-
- var mac = Crypto.calculateMac('response', credentials, artifacts);
- if (mac !== attributes.mac) {
- return false;
- }
-
- if (!options.payload &&
- options.payload !== '') {
-
- return true;
- }
-
- if (!attributes.hash) {
- return false;
- }
-
- var calculatedHash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, res.headers['content-type']);
- return (calculatedHash === attributes.hash);
-};
-
-
-// Generate a bewit value for a given URI
-
-/*
- uri: 'http://example.com/resource?a=b' or object from Url.parse()
- options: {
-
- // Required
-
- credentials: {
- id: 'dh37fgj492je',
- key: 'aoijedoaijsdlaksjdl',
- algorithm: 'sha256' // 'sha1', 'sha256'
- },
- ttlSec: 60 * 60, // TTL in seconds
-
- // Optional
-
- ext: 'application-specific', // Application specific data sent via the ext attribute
- localtimeOffsetMsec: 400 // Time offset to sync with server time
- };
-*/
-
-exports.getBewit = function (uri, options) {
-
- // Validate inputs
-
- if (!uri ||
- (typeof uri !== 'string' && typeof uri !== 'object') ||
- !options ||
- typeof options !== 'object' ||
- !options.ttlSec) {
-
- return '';
- }
-
- options.ext = (options.ext === null || options.ext === undefined ? '' : options.ext); // Zero is valid value
-
- // Application time
-
- var now = Utils.now(options.localtimeOffsetMsec);
-
- // Validate credentials
-
- var credentials = options.credentials;
- if (!credentials ||
- !credentials.id ||
- !credentials.key ||
- !credentials.algorithm) {
-
- return '';
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return '';
- }
-
- // Parse URI
-
- if (typeof uri === 'string') {
- uri = Url.parse(uri);
- }
-
- // Calculate signature
-
- var exp = Math.floor(now / 1000) + options.ttlSec;
- var mac = Crypto.calculateMac('bewit', credentials, {
- ts: exp,
- nonce: '',
- method: 'GET',
- resource: uri.pathname + (uri.search || ''), // Maintain trailing '?'
- host: uri.hostname,
- port: uri.port || (uri.protocol === 'http:' ? 80 : 443),
- ext: options.ext
- });
-
- // Construct bewit: id\exp\mac\ext
-
- var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + options.ext;
- return Hoek.base64urlEncode(bewit);
-};
-
-
-// Generate an authorization string for a message
-
-/*
- host: 'example.com',
- port: 8000,
- message: '{"some":"payload"}', // UTF-8 encoded string for body hash generation
- options: {
-
- // Required
-
- credentials: {
- id: 'dh37fgj492je',
- key: 'aoijedoaijsdlaksjdl',
- algorithm: 'sha256' // 'sha1', 'sha256'
- },
-
- // Optional
-
- timestamp: Date.now(), // A pre-calculated timestamp
- nonce: '2334f34f', // A pre-generated nonce
- localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided)
- }
-*/
-
-exports.message = function (host, port, message, options) {
-
- // Validate inputs
-
- if (!host || typeof host !== 'string' ||
- !port || typeof port !== 'number' ||
- message === null || message === undefined || typeof message !== 'string' ||
- !options || typeof options !== 'object') {
-
- return null;
- }
-
- // Application time
-
- var timestamp = options.timestamp || Utils.nowSecs(options.localtimeOffsetMsec);
-
- // Validate credentials
-
- var credentials = options.credentials;
- if (!credentials ||
- !credentials.id ||
- !credentials.key ||
- !credentials.algorithm) {
-
- // Invalid credential object
- return null;
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return null;
- }
-
- // Calculate signature
-
- var artifacts = {
- ts: timestamp,
- nonce: options.nonce || Cryptiles.randomString(6),
- host: host,
- port: port,
- hash: Crypto.calculatePayloadHash(message, credentials.algorithm)
- };
-
- // Construct authorization
-
- var result = {
- id: credentials.id,
- ts: artifacts.ts,
- nonce: artifacts.nonce,
- hash: artifacts.hash,
- mac: Crypto.calculateMac('message', credentials, artifacts)
- };
-
- return result;
-};
-
-
-
diff --git a/node_modules/request/node_modules/hawk/lib/crypto.js b/node_modules/request/node_modules/hawk/lib/crypto.js
deleted file mode 100755
index d3c8244a9..000000000
--- a/node_modules/request/node_modules/hawk/lib/crypto.js
+++ /dev/null
@@ -1,126 +0,0 @@
-// Load modules
-
-var Crypto = require('crypto');
-var Url = require('url');
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// MAC normalization format version
-
-exports.headerVersion = '1'; // Prevent comparison of mac values generated with different normalized string formats
-
-
-// Supported HMAC algorithms
-
-exports.algorithms = ['sha1', 'sha256'];
-
-
-// Calculate the request MAC
-
-/*
- type: 'header', // 'header', 'bewit', 'response'
- credentials: {
- key: 'aoijedoaijsdlaksjdl',
- algorithm: 'sha256' // 'sha1', 'sha256'
- },
- options: {
- method: 'GET',
- resource: '/resource?a=1&b=2',
- host: 'example.com',
- port: 8080,
- ts: 1357718381034,
- nonce: 'd3d345f',
- hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=',
- ext: 'app-specific-data',
- app: 'hf48hd83qwkj', // Application id (Oz)
- dlg: 'd8djwekds9cj' // Delegated by application id (Oz), requires options.app
- }
-*/
-
-exports.calculateMac = function (type, credentials, options) {
-
- var normalized = exports.generateNormalizedString(type, options);
-
- var hmac = Crypto.createHmac(credentials.algorithm, credentials.key).update(normalized);
- var digest = hmac.digest('base64');
- return digest;
-};
-
-
-exports.generateNormalizedString = function (type, options) {
-
- var resource = options.resource || '';
- if (resource &&
- resource[0] !== '/') {
-
- var url = Url.parse(resource, false);
- resource = url.path; // Includes query
- }
-
- var normalized = 'hawk.' + exports.headerVersion + '.' + type + '\n' +
- options.ts + '\n' +
- options.nonce + '\n' +
- (options.method || '').toUpperCase() + '\n' +
- resource + '\n' +
- options.host.toLowerCase() + '\n' +
- options.port + '\n' +
- (options.hash || '') + '\n';
-
- if (options.ext) {
- normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n');
- }
-
- normalized += '\n';
-
- if (options.app) {
- normalized += options.app + '\n' +
- (options.dlg || '') + '\n';
- }
-
- return normalized;
-};
-
-
-exports.calculatePayloadHash = function (payload, algorithm, contentType) {
-
- var hash = exports.initializePayloadHash(algorithm, contentType);
- hash.update(payload || '');
- return exports.finalizePayloadHash(hash);
-};
-
-
-exports.initializePayloadHash = function (algorithm, contentType) {
-
- var hash = Crypto.createHash(algorithm);
- hash.update('hawk.' + exports.headerVersion + '.payload\n');
- hash.update(Utils.parseContentType(contentType) + '\n');
- return hash;
-};
-
-
-exports.finalizePayloadHash = function (hash) {
-
- hash.update('\n');
- return hash.digest('base64');
-};
-
-
-exports.calculateTsMac = function (ts, credentials) {
-
- var hmac = Crypto.createHmac(credentials.algorithm, credentials.key);
- hmac.update('hawk.' + exports.headerVersion + '.ts\n' + ts + '\n');
- return hmac.digest('base64');
-};
-
-
-exports.timestampMessage = function (credentials, localtimeOffsetMsec) {
-
- var now = Utils.nowSecs(localtimeOffsetMsec);
- var tsm = exports.calculateTsMac(now, credentials);
- return { ts: now, tsm: tsm };
-};
diff --git a/node_modules/request/node_modules/hawk/lib/index.js b/node_modules/request/node_modules/hawk/lib/index.js
deleted file mode 100755
index a883882c8..000000000
--- a/node_modules/request/node_modules/hawk/lib/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Export sub-modules
-
-exports.error = exports.Error = require('boom');
-exports.sntp = require('sntp');
-
-exports.server = require('./server');
-exports.client = require('./client');
-exports.crypto = require('./crypto');
-exports.utils = require('./utils');
-
-exports.uri = {
- authenticate: exports.server.authenticateBewit,
- getBewit: exports.client.getBewit
-};
-
diff --git a/node_modules/request/node_modules/hawk/lib/server.js b/node_modules/request/node_modules/hawk/lib/server.js
deleted file mode 100755
index a80393031..000000000
--- a/node_modules/request/node_modules/hawk/lib/server.js
+++ /dev/null
@@ -1,534 +0,0 @@
-// Load modules
-
-var Boom = require('boom');
-var Hoek = require('hoek');
-var Cryptiles = require('cryptiles');
-var Crypto = require('./crypto');
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Hawk authentication
-
-/*
- req: node's HTTP request object or an object as follows:
-
- var request = {
- method: 'GET',
- url: '/resource/4?a=1&b=2',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="'
- };
-
- credentialsFunc: required function to lookup the set of Hawk credentials based on the provided credentials id.
- The credentials include the MAC key, MAC algorithm, and other attributes (such as username)
- needed by the application. This function is the equivalent of verifying the username and
- password in Basic authentication.
-
- var credentialsFunc = function (id, callback) {
-
- // Lookup credentials in database
- db.lookup(id, function (err, item) {
-
- if (err || !item) {
- return callback(err);
- }
-
- var credentials = {
- // Required
- key: item.key,
- algorithm: item.algorithm,
- // Application specific
- user: item.user
- };
-
- return callback(null, credentials);
- });
- };
-
- options: {
-
- hostHeaderName: optional header field name, used to override the default 'Host' header when used
- behind a cache of a proxy. Apache2 changes the value of the 'Host' header while preserving
- the original (which is what the module must verify) in the 'x-forwarded-host' header field.
- Only used when passed a node Http.ServerRequest object.
-
- nonceFunc: optional nonce validation function. The function signature is function(nonce, ts, callback)
- where 'callback' must be called using the signature function(err).
-
- timestampSkewSec: optional number of seconds of permitted clock skew for incoming timestamps. Defaults to 60 seconds.
- Provides a +/- skew which means actual allowed window is double the number of seconds.
-
- localtimeOffsetMsec: optional local clock time offset express in a number of milliseconds (positive or negative).
- Defaults to 0.
-
- payload: optional payload for validation. The client calculates the hash value and includes it via the 'hash'
- header attribute. The server always ensures the value provided has been included in the request
- MAC. When this option is provided, it validates the hash value itself. Validation is done by calculating
- a hash value over the entire payload (assuming it has already be normalized to the same format and
- encoding used by the client to calculate the hash on request). If the payload is not available at the time
- of authentication, the authenticatePayload() method can be used by passing it the credentials and
- attributes.hash returned in the authenticate callback.
-
- host: optional host name override. Only used when passed a node request object.
- port: optional port override. Only used when passed a node request object.
- }
-
- callback: function (err, credentials, artifacts) { }
- */
-
-exports.authenticate = function (req, credentialsFunc, options, callback) {
-
- callback = Hoek.nextTick(callback);
-
- // Default options
-
- options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation
- options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds
-
- // Application time
-
- var now = Utils.now(options.localtimeOffsetMsec); // Measure now before any other processing
-
- // Convert node Http request object to a request configuration object
-
- var request = Utils.parseRequest(req, options);
- if (request instanceof Error) {
- return callback(Boom.badRequest(request.message));
- }
-
- // Parse HTTP Authorization header
-
- var attributes = Utils.parseAuthorizationHeader(request.authorization);
- if (attributes instanceof Error) {
- return callback(attributes);
- }
-
- // Construct artifacts container
-
- var artifacts = {
- method: request.method,
- host: request.host,
- port: request.port,
- resource: request.url,
- ts: attributes.ts,
- nonce: attributes.nonce,
- hash: attributes.hash,
- ext: attributes.ext,
- app: attributes.app,
- dlg: attributes.dlg,
- mac: attributes.mac,
- id: attributes.id
- };
-
- // Verify required header attributes
-
- if (!attributes.id ||
- !attributes.ts ||
- !attributes.nonce ||
- !attributes.mac) {
-
- return callback(Boom.badRequest('Missing attributes'), null, artifacts);
- }
-
- // Fetch Hawk credentials
-
- credentialsFunc(attributes.id, function (err, credentials) {
-
- if (err) {
- return callback(err, credentials || null, artifacts);
- }
-
- if (!credentials) {
- return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, artifacts);
- }
-
- if (!credentials.key ||
- !credentials.algorithm) {
-
- return callback(Boom.internal('Invalid credentials'), credentials, artifacts);
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return callback(Boom.internal('Unknown algorithm'), credentials, artifacts);
- }
-
- // Calculate MAC
-
- var mac = Crypto.calculateMac('header', credentials, artifacts);
- if (!Cryptiles.fixedTimeComparison(mac, attributes.mac)) {
- return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, artifacts);
- }
-
- // Check payload hash
-
- if (options.payload ||
- options.payload === '') {
-
- if (!attributes.hash) {
- return callback(Boom.unauthorized('Missing required payload hash', 'Hawk'), credentials, artifacts);
- }
-
- var hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.contentType);
- if (!Cryptiles.fixedTimeComparison(hash, attributes.hash)) {
- return callback(Boom.unauthorized('Bad payload hash', 'Hawk'), credentials, artifacts);
- }
- }
-
- // Check nonce
-
- options.nonceFunc(attributes.nonce, attributes.ts, function (err) {
-
- if (err) {
- return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials, artifacts);
- }
-
- // Check timestamp staleness
-
- if (Math.abs((attributes.ts * 1000) - now) > (options.timestampSkewSec * 1000)) {
- var tsm = Crypto.timestampMessage(credentials, options.localtimeOffsetMsec);
- return callback(Boom.unauthorized('Stale timestamp', 'Hawk', tsm), credentials, artifacts);
- }
-
- // Successful authentication
-
- return callback(null, credentials, artifacts);
- });
- });
-};
-
-
-// Authenticate payload hash - used when payload cannot be provided during authenticate()
-
-/*
- payload: raw request payload
- credentials: from authenticate callback
- artifacts: from authenticate callback
- contentType: req.headers['content-type']
-*/
-
-exports.authenticatePayload = function (payload, credentials, artifacts, contentType) {
-
- var calculatedHash = Crypto.calculatePayloadHash(payload, credentials.algorithm, contentType);
- return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash);
-};
-
-
-// Authenticate payload hash - used when payload cannot be provided during authenticate()
-
-/*
- calculatedHash: the payload hash calculated using Crypto.calculatePayloadHash()
- artifacts: from authenticate callback
-*/
-
-exports.authenticatePayloadHash = function (calculatedHash, artifacts) {
-
- return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash);
-};
-
-
-// Generate a Server-Authorization header for a given response
-
-/*
- credentials: {}, // Object received from authenticate()
- artifacts: {} // Object received from authenticate(); 'mac', 'hash', and 'ext' - ignored
- options: {
- ext: 'application-specific', // Application specific data sent via the ext attribute
- payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided)
- contentType: 'application/json', // Payload content-type (ignored if hash provided)
- hash: 'U4MKKSmiVxk37JCCrAVIjV=' // Pre-calculated payload hash
- }
-*/
-
-exports.header = function (credentials, artifacts, options) {
-
- // Prepare inputs
-
- options = options || {};
-
- if (!artifacts ||
- typeof artifacts !== 'object' ||
- typeof options !== 'object') {
-
- return '';
- }
-
- artifacts = Hoek.clone(artifacts);
- delete artifacts.mac;
- artifacts.hash = options.hash;
- artifacts.ext = options.ext;
-
- // Validate credentials
-
- if (!credentials ||
- !credentials.key ||
- !credentials.algorithm) {
-
- // Invalid credential object
- return '';
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return '';
- }
-
- // Calculate payload hash
-
- if (!artifacts.hash &&
- (options.payload || options.payload === '')) {
-
- artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType);
- }
-
- var mac = Crypto.calculateMac('response', credentials, artifacts);
-
- // Construct header
-
- var header = 'Hawk mac="' + mac + '"' +
- (artifacts.hash ? ', hash="' + artifacts.hash + '"' : '');
-
- if (artifacts.ext !== null &&
- artifacts.ext !== undefined &&
- artifacts.ext !== '') { // Other falsey values allowed
-
- header += ', ext="' + Hoek.escapeHeaderAttribute(artifacts.ext) + '"';
- }
-
- return header;
-};
-
-
-/*
- * Arguments and options are the same as authenticate() with the exception that the only supported options are:
- * 'hostHeaderName', 'localtimeOffsetMsec', 'host', 'port'
- */
-
-exports.authenticateBewit = function (req, credentialsFunc, options, callback) {
-
- callback = Hoek.nextTick(callback);
-
- // Application time
-
- var now = Utils.now(options.localtimeOffsetMsec);
-
- // Convert node Http request object to a request configuration object
-
- var request = Utils.parseRequest(req, options);
- if (request instanceof Error) {
- return callback(Boom.badRequest(request.message));
- }
-
- // Extract bewit
-
- // 1 2 3 4
- var resource = request.url.match(/^(\/.*)([\?&])bewit\=([^&$]*)(?:&(.+))?$/);
- if (!resource) {
- return callback(Boom.unauthorized(null, 'Hawk'));
- }
-
- // Bewit not empty
-
- if (!resource[3]) {
- return callback(Boom.unauthorized('Empty bewit', 'Hawk'));
- }
-
- // Verify method is GET
-
- if (request.method !== 'GET' &&
- request.method !== 'HEAD') {
-
- return callback(Boom.unauthorized('Invalid method', 'Hawk'));
- }
-
- // No other authentication
-
- if (request.authorization) {
- return callback(Boom.badRequest('Multiple authentications'));
- }
-
- // Parse bewit
-
- var bewitString = Hoek.base64urlDecode(resource[3]);
- if (bewitString instanceof Error) {
- return callback(Boom.badRequest('Invalid bewit encoding'));
- }
-
- // Bewit format: id\exp\mac\ext ('\' is used because it is a reserved header attribute character)
-
- var bewitParts = bewitString.split('\\');
- if (bewitParts.length !== 4) {
- return callback(Boom.badRequest('Invalid bewit structure'));
- }
-
- var bewit = {
- id: bewitParts[0],
- exp: parseInt(bewitParts[1], 10),
- mac: bewitParts[2],
- ext: bewitParts[3] || ''
- };
-
- if (!bewit.id ||
- !bewit.exp ||
- !bewit.mac) {
-
- return callback(Boom.badRequest('Missing bewit attributes'));
- }
-
- // Construct URL without bewit
-
- var url = resource[1];
- if (resource[4]) {
- url += resource[2] + resource[4];
- }
-
- // Check expiration
-
- if (bewit.exp * 1000 <= now) {
- return callback(Boom.unauthorized('Access expired', 'Hawk'), null, bewit);
- }
-
- // Fetch Hawk credentials
-
- credentialsFunc(bewit.id, function (err, credentials) {
-
- if (err) {
- return callback(err, credentials || null, bewit.ext);
- }
-
- if (!credentials) {
- return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, bewit);
- }
-
- if (!credentials.key ||
- !credentials.algorithm) {
-
- return callback(Boom.internal('Invalid credentials'), credentials, bewit);
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return callback(Boom.internal('Unknown algorithm'), credentials, bewit);
- }
-
- // Calculate MAC
-
- var mac = Crypto.calculateMac('bewit', credentials, {
- ts: bewit.exp,
- nonce: '',
- method: 'GET',
- resource: url,
- host: request.host,
- port: request.port,
- ext: bewit.ext
- });
-
- if (!Cryptiles.fixedTimeComparison(mac, bewit.mac)) {
- return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, bewit);
- }
-
- // Successful authentication
-
- return callback(null, credentials, bewit);
- });
-};
-
-
-/*
- * options are the same as authenticate() with the exception that the only supported options are:
- * 'nonceFunc', 'timestampSkewSec', 'localtimeOffsetMsec'
- */
-
-exports.authenticateMessage = function (host, port, message, authorization, credentialsFunc, options, callback) {
-
- callback = Hoek.nextTick(callback);
-
- // Default options
-
- options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation
- options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds
-
- // Application time
-
- var now = Utils.now(options.localtimeOffsetMsec); // Measure now before any other processing
-
- // Validate authorization
-
- if (!authorization.id ||
- !authorization.ts ||
- !authorization.nonce ||
- !authorization.hash ||
- !authorization.mac) {
-
- return callback(Boom.badRequest('Invalid authorization'))
- }
-
- // Fetch Hawk credentials
-
- credentialsFunc(authorization.id, function (err, credentials) {
-
- if (err) {
- return callback(err, credentials || null);
- }
-
- if (!credentials) {
- return callback(Boom.unauthorized('Unknown credentials', 'Hawk'));
- }
-
- if (!credentials.key ||
- !credentials.algorithm) {
-
- return callback(Boom.internal('Invalid credentials'), credentials);
- }
-
- if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) {
- return callback(Boom.internal('Unknown algorithm'), credentials);
- }
-
- // Construct artifacts container
-
- var artifacts = {
- ts: authorization.ts,
- nonce: authorization.nonce,
- host: host,
- port: port,
- hash: authorization.hash
- };
-
- // Calculate MAC
-
- var mac = Crypto.calculateMac('message', credentials, artifacts);
- if (!Cryptiles.fixedTimeComparison(mac, authorization.mac)) {
- return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials);
- }
-
- // Check payload hash
-
- var hash = Crypto.calculatePayloadHash(message, credentials.algorithm);
- if (!Cryptiles.fixedTimeComparison(hash, authorization.hash)) {
- return callback(Boom.unauthorized('Bad message hash', 'Hawk'), credentials);
- }
-
- // Check nonce
-
- options.nonceFunc(authorization.nonce, authorization.ts, function (err) {
-
- if (err) {
- return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials);
- }
-
- // Check timestamp staleness
-
- if (Math.abs((authorization.ts * 1000) - now) > (options.timestampSkewSec * 1000)) {
- return callback(Boom.unauthorized('Stale timestamp'), credentials);
- }
-
- // Successful authentication
-
- return callback(null, credentials);
- });
- });
-};
diff --git a/node_modules/request/node_modules/hawk/lib/utils.js b/node_modules/request/node_modules/hawk/lib/utils.js
deleted file mode 100755
index de74606f3..000000000
--- a/node_modules/request/node_modules/hawk/lib/utils.js
+++ /dev/null
@@ -1,164 +0,0 @@
-// Load modules
-
-var Sntp = require('sntp');
-var Boom = require('boom');
-
-
-// Declare internals
-
-var internals = {};
-
-
-exports.version = function () {
-
- return require('../package.json').version;
-};
-
-
-// Extract host and port from request
-
-// $1 $2
-internals.hostHeaderRegex = /^(?:(?:\r\n)?\s)*((?:[^:]+)|(?:\[[^\]]+\]))(?::(\d+))?(?:(?:\r\n)?\s)*$/; // (IPv4, hostname)|(IPv6)
-
-
-exports.parseHost = function (req, hostHeaderName) {
-
- hostHeaderName = (hostHeaderName ? hostHeaderName.toLowerCase() : 'host');
- var hostHeader = req.headers[hostHeaderName];
- if (!hostHeader) {
- return null;
- }
-
- var hostParts = hostHeader.match(internals.hostHeaderRegex);
- if (!hostParts) {
- return null;
- }
-
- return {
- name: hostParts[1],
- port: (hostParts[2] ? hostParts[2] : (req.connection && req.connection.encrypted ? 443 : 80))
- };
-};
-
-
-// Parse Content-Type header content
-
-exports.parseContentType = function (header) {
-
- if (!header) {
- return '';
- }
-
- return header.split(';')[0].trim().toLowerCase();
-};
-
-
-// Convert node's to request configuration object
-
-exports.parseRequest = function (req, options) {
-
- if (!req.headers) {
- return req;
- }
-
- // Obtain host and port information
-
- if (!options.host || !options.port) {
- var host = exports.parseHost(req, options.hostHeaderName);
- if (!host) {
- return new Error('Invalid Host header');
- }
- }
-
- var request = {
- method: req.method,
- url: req.url,
- host: options.host || host.name,
- port: options.port || host.port,
- authorization: req.headers.authorization,
- contentType: req.headers['content-type'] || ''
- };
-
- return request;
-};
-
-
-exports.now = function (localtimeOffsetMsec) {
-
- return Sntp.now() + (localtimeOffsetMsec || 0);
-};
-
-
-exports.nowSecs = function (localtimeOffsetMsec) {
-
- return Math.floor(exports.now(localtimeOffsetMsec) / 1000);
-};
-
-
-// Parse Hawk HTTP Authorization header
-
-exports.parseAuthorizationHeader = function (header, keys) {
-
- keys = keys || ['id', 'ts', 'nonce', 'hash', 'ext', 'mac', 'app', 'dlg'];
-
- if (!header) {
- return Boom.unauthorized(null, 'Hawk');
- }
-
- var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something]
- if (!headerParts) {
- return Boom.badRequest('Invalid header syntax');
- }
-
- var scheme = headerParts[1];
- if (scheme.toLowerCase() !== 'hawk') {
- return Boom.unauthorized(null, 'Hawk');
- }
-
- var attributesString = headerParts[2];
- if (!attributesString) {
- return Boom.badRequest('Invalid header syntax');
- }
-
- var attributes = {};
- var errorMessage = '';
- var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) {
-
- // Check valid attribute names
-
- if (keys.indexOf($1) === -1) {
- errorMessage = 'Unknown attribute: ' + $1;
- return;
- }
-
- // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9
-
- if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) {
- errorMessage = 'Bad attribute value: ' + $1;
- return;
- }
-
- // Check for duplicates
-
- if (attributes.hasOwnProperty($1)) {
- errorMessage = 'Duplicate attribute: ' + $1;
- return;
- }
-
- attributes[$1] = $2;
- return '';
- });
-
- if (verify !== '') {
- return Boom.badRequest(errorMessage || 'Bad header format');
- }
-
- return attributes;
-};
-
-
-exports.unauthorized = function (message) {
-
- return Boom.unauthorized(message, 'Hawk');
-};
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore b/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore
deleted file mode 100644
index 77ba16cb0..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore
+++ /dev/null
@@ -1,18 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml b/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml
deleted file mode 100755
index c84aade8c..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
- - 0.12
- - iojs
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md b/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md
deleted file mode 100644
index 892836159..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md
+++ /dev/null
@@ -1 +0,0 @@
-Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE b/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE
deleted file mode 100755
index 394688939..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2012-2014, Walmart and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * 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.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-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 HOLDERS AND 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 complete list of contributors can be found at: https://github.com/hapijs/boom/graphs/contributors \ No newline at end of file
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/README.md b/node_modules/request/node_modules/hawk/node_modules/boom/README.md
deleted file mode 100755
index cb1e9089f..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/README.md
+++ /dev/null
@@ -1,597 +0,0 @@
-![boom Logo](https://raw.github.com/hapijs/boom/master/images/boom.png)
-
-HTTP-friendly error objects
-
-[![Build Status](https://secure.travis-ci.org/hapijs/boom.png)](http://travis-ci.org/hapijs/boom)
-[![Current Version](https://img.shields.io/npm/v/boom.svg)](https://www.npmjs.com/package/boom)
-
-Lead Maintainer: [Adam Bretz](https://github.com/arb)
-
-**boom** provides a set of utilities for returning HTTP errors. Each utility returns a `Boom` error response
-object (instance of `Error`) which includes the following properties:
-- `isBoom` - if `true`, indicates this is a `Boom` object instance.
-- `isServer` - convenience bool indicating status code >= 500.
-- `message` - the error message.
-- `output` - the formatted response. Can be directly manipulated after object construction to return a custom
- error response. Allowed root keys:
- - `statusCode` - the HTTP status code (typically 4xx or 5xx).
- - `headers` - an object containing any HTTP headers where each key is a header name and value is the header content.
- - `payload` - the formatted object used as the response payload (stringified). Can be directly manipulated but any
- changes will be lost
- if `reformat()` is called. Any content allowed and by default includes the following content:
- - `statusCode` - the HTTP status code, derived from `error.output.statusCode`.
- - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived from `statusCode`.
- - `message` - the error message derived from `error.message`.
-- inherited `Error` properties.
-
-The `Boom` object also supports the following method:
-- `reformat()` - rebuilds `error.output` using the other object properties.
-
-## Helper Methods
-
-### `wrap(error, [statusCode], [message])`
-
-Decorates an error with the **boom** properties where:
-- `error` - the error object to wrap. If `error` is already a **boom** object, returns back the same object.
-- `statusCode` - optional HTTP status code. Defaults to `500`.
-- `message` - optional message string. If the error already has a message, it adds the message as a prefix.
- Defaults to no message.
-
-```js
-var error = new Error('Unexpected input');
-Boom.wrap(error, 400);
-```
-
-### `create(statusCode, [message], [data])`
-
-Generates an `Error` object with the **boom** decorations where:
-- `statusCode` - an HTTP error code number. Must be greater or equal 400.
-- `message` - optional message string.
-- `data` - additional error data set to `error.data` property.
-
-```js
-var error = Boom.create(400, 'Bad request', { timestamp: Date.now() });
-```
-
-## HTTP 4xx Errors
-
-### `Boom.badRequest([message], [data])`
-
-Returns a 400 Bad Request error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.badRequest('invalid query');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 400,
- "error": "Bad Request",
- "message": "invalid query"
-}
-```
-
-### `Boom.unauthorized([message], [scheme], [attributes])`
-
-Returns a 401 Unauthorized error where:
-- `message` - optional message.
-- `scheme` can be one of the following:
- - an authentication scheme name
- - an array of string values. These values will be separated by ', ' and set to the 'WWW-Authenticate' header.
-- `attributes` - an object of values to use while setting the 'WWW-Authenticate' header. This value is only used
- when `schema` is a string, otherwise it is ignored. Every key/value pair will be included in the
- 'WWW-Authenticate' in the format of 'key="value"' as well as in the response payload under the `attributes` key.
- `null` and `undefined` will be replaced with an empty string. If `attributes` is set, `message` will be used as
- the 'error' segment of the 'WWW-Authenticate' header. If `message` is unset, the 'error' segment of the header
- will not be present and `isMissing` will be true on the error object.
-
-If either `scheme` or `attributes` are set, the resultant `Boom` object will have the 'WWW-Authenticate' header set for the response.
-
-```js
-Boom.unauthorized('invalid password');
-```
-
-Generates the following response:
-
-```json
-"payload": {
- "statusCode": 401,
- "error": "Unauthorized",
- "message": "invalid password"
-},
-"headers" {}
-```
-
-```js
-Boom.unauthorized('invalid password', 'sample');
-```
-
-Generates the following response:
-
-```json
-"payload": {
- "statusCode": 401,
- "error": "Unauthorized",
- "message": "invalid password",
- "attributes": {
- "error": "invalid password"
- }
-},
-"headers" {
- "WWW-Authenticate": "sample error=\"invalid password\""
-}
-```
-
-```js
-Boom.unauthorized('invalid password', 'sample', { ttl: 0, cache: null, foo: 'bar' });
-```
-
-Generates the following response:
-
-```json
-"payload": {
- "statusCode": 401,
- "error": "Unauthorized",
- "message": "invalid password",
- "attributes": {
- "error": "invalid password",
- "ttl": 0,
- "cache": "",
- "foo": "bar"
- }
-},
-"headers" {
- "WWW-Authenticate": "sample ttl=\"0\", cache=\"\", foo=\"bar\", error=\"invalid password\""
-}
-```
-
-### `Boom.forbidden([message], [data])`
-
-Returns a 403 Forbidden error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.forbidden('try again some time');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 403,
- "error": "Forbidden",
- "message": "try again some time"
-}
-```
-
-### `Boom.notFound([message], [data])`
-
-Returns a 404 Not Found error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.notFound('missing');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 404,
- "error": "Not Found",
- "message": "missing"
-}
-```
-
-### `Boom.methodNotAllowed([message], [data])`
-
-Returns a 405 Method Not Allowed error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.methodNotAllowed('that method is not allowed');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 405,
- "error": "Method Not Allowed",
- "message": "that method is not allowed"
-}
-```
-
-### `Boom.notAcceptable([message], [data])`
-
-Returns a 406 Not Acceptable error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.notAcceptable('unacceptable');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 406,
- "error": "Not Acceptable",
- "message": "unacceptable"
-}
-```
-
-### `Boom.proxyAuthRequired([message], [data])`
-
-Returns a 407 Proxy Authentication Required error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.proxyAuthRequired('auth missing');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 407,
- "error": "Proxy Authentication Required",
- "message": "auth missing"
-}
-```
-
-### `Boom.clientTimeout([message], [data])`
-
-Returns a 408 Request Time-out error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.clientTimeout('timed out');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 408,
- "error": "Request Time-out",
- "message": "timed out"
-}
-```
-
-### `Boom.conflict([message], [data])`
-
-Returns a 409 Conflict error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.conflict('there was a conflict');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 409,
- "error": "Conflict",
- "message": "there was a conflict"
-}
-```
-
-### `Boom.resourceGone([message], [data])`
-
-Returns a 410 Gone error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.resourceGone('it is gone');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 410,
- "error": "Gone",
- "message": "it is gone"
-}
-```
-
-### `Boom.lengthRequired([message], [data])`
-
-Returns a 411 Length Required error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.lengthRequired('length needed');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 411,
- "error": "Length Required",
- "message": "length needed"
-}
-```
-
-### `Boom.preconditionFailed([message], [data])`
-
-Returns a 412 Precondition Failed error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.preconditionFailed();
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 412,
- "error": "Precondition Failed"
-}
-```
-
-### `Boom.entityTooLarge([message], [data])`
-
-Returns a 413 Request Entity Too Large error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.entityTooLarge('too big');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 413,
- "error": "Request Entity Too Large",
- "message": "too big"
-}
-```
-
-### `Boom.uriTooLong([message], [data])`
-
-Returns a 414 Request-URI Too Large error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.uriTooLong('uri is too long');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 414,
- "error": "Request-URI Too Large",
- "message": "uri is too long"
-}
-```
-
-### `Boom.unsupportedMediaType([message], [data])`
-
-Returns a 415 Unsupported Media Type error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.unsupportedMediaType('that media is not supported');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 415,
- "error": "Unsupported Media Type",
- "message": "that media is not supported"
-}
-```
-
-### `Boom.rangeNotSatisfiable([message], [data])`
-
-Returns a 416 Requested Range Not Satisfiable error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.rangeNotSatisfiable();
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 416,
- "error": "Requested Range Not Satisfiable"
-}
-```
-
-### `Boom.expectationFailed([message], [data])`
-
-Returns a 417 Expectation Failed error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.expectationFailed('expected this to work');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 417,
- "error": "Expectation Failed",
- "message": "expected this to work"
-}
-```
-
-### `Boom.badData([message], [data])`
-
-Returns a 422 Unprocessable Entity error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.badData('your data is bad and you should feel bad');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 422,
- "error": "Unprocessable Entity",
- "message": "your data is bad and you should feel bad"
-}
-```
-
-### `Boom.tooManyRequests([message], [data])`
-
-Returns a 429 Too Many Requests error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.tooManyRequests('you have exceeded your request limit');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 429,
- "error": "Too Many Requests",
- "message": "you have exceeded your request limit"
-}
-```
-
-## HTTP 5xx Errors
-
-All 500 errors hide your message from the end user. Your message is recorded in the server log.
-
-### `Boom.notImplemented([message], [data])`
-
-Returns a 501 Not Implemented error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.notImplemented('method not implemented');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 501,
- "error": "Not Implemented",
- "message": "method not implemented"
-}
-```
-
-### `Boom.badGateway([message], [data])`
-
-Returns a 502 Bad Gateway error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.badGateway('that is a bad gateway');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 502,
- "error": "Bad Gateway",
- "message": "that is a bad gateway"
-}
-```
-
-### `Boom.serverTimeout([message], [data])`
-
-Returns a 503 Service Unavailable error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.serverTimeout('unavailable');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 503,
- "error": "Service Unavailable",
- "message": "unavailable"
-}
-```
-
-### `Boom.gatewayTimeout([message], [data])`
-
-Returns a 504 Gateway Time-out error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.gatewayTimeout();
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 504,
- "error": "Gateway Time-out"
-}
-```
-
-### `Boom.badImplementation([message], [data])`
-
-Returns a 500 Internal Server Error error where:
-- `message` - optional message.
-- `data` - optional additional error data.
-
-```js
-Boom.badImplementation('terrible implementation');
-```
-
-Generates the following response payload:
-
-```json
-{
- "statusCode": 500,
- "error": "Internal Server Error",
- "message": "An internal server error occurred"
-}
-```
-
-## F.A.Q.
-
-###### How do I include extra information in my responses? `output.payload` is missing `data`, what gives?
-
-There is a reason the values passed back in the response payloads are pretty locked down. It's mostly for security and to not leak any important information back to the client. This means you will need to put in a little more effort to include extra information about your custom error. Check out the ["Error transformation"](https://github.com/hapijs/hapi/blob/master/API.md#error-transformation) section in the hapi documentation.
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png b/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png
deleted file mode 100755
index 373bc1345..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png
+++ /dev/null
Binary files differ
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js b/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js
deleted file mode 100755
index fb6564a4b..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js
+++ /dev/null
@@ -1,301 +0,0 @@
-// Load modules
-
-var Http = require('http');
-var Hoek = require('hoek');
-
-
-// Declare internals
-
-var internals = {};
-
-
-exports.wrap = function (error, statusCode, message) {
-
- Hoek.assert(error instanceof Error, 'Cannot wrap non-Error object');
- return (error.isBoom ? error : internals.initialize(error, statusCode || 500, message));
-};
-
-
-exports.create = function (statusCode, message, data) {
-
- var error = new Error(message ? message : undefined); // Avoids settings null message
- error.data = data || null;
- internals.initialize(error, statusCode);
- return error;
-};
-
-
-internals.initialize = function (error, statusCode, message) {
-
- var numberCode = parseInt(statusCode, 10);
- Hoek.assert(!isNaN(numberCode) && numberCode >= 400, 'First argument must be a number (400+):', statusCode);
-
- error.isBoom = true;
- error.isServer = numberCode >= 500;
-
- if (!error.hasOwnProperty('data')) {
- error.data = null;
- }
-
- error.output = {
- statusCode: numberCode,
- payload: {},
- headers: {}
- };
-
- error.reformat = internals.reformat;
- error.reformat();
-
- if (!message &&
- !error.message) {
-
- message = error.output.payload.error;
- }
-
- if (message) {
- error.message = (message + (error.message ? ': ' + error.message : ''));
- }
-
- return error;
-};
-
-
-internals.reformat = function () {
-
- this.output.payload.statusCode = this.output.statusCode;
- this.output.payload.error = Http.STATUS_CODES[this.output.statusCode] || 'Unknown';
-
- if (this.output.statusCode === 500) {
- this.output.payload.message = 'An internal server error occurred'; // Hide actual error from user
- }
- else if (this.message) {
- this.output.payload.message = this.message;
- }
-};
-
-
-// 4xx Client Errors
-
-exports.badRequest = function (message, data) {
-
- return exports.create(400, message, data);
-};
-
-
-exports.unauthorized = function (message, scheme, attributes) { // Or function (message, wwwAuthenticate[])
-
- var err = exports.create(401, message);
-
- if (!scheme) {
- return err;
- }
-
- var wwwAuthenticate = '';
- var i = 0;
- var il = 0;
-
- if (typeof scheme === 'string') {
-
- // function (message, scheme, attributes)
-
- wwwAuthenticate = scheme;
-
- if (attributes || message) {
- err.output.payload.attributes = {};
- }
-
- if (attributes) {
- var names = Object.keys(attributes);
- for (i = 0, il = names.length; i < il; ++i) {
- var name = names[i];
- if (i) {
- wwwAuthenticate += ',';
- }
-
- var value = attributes[name];
- if (value === null ||
- value === undefined) { // Value can be zero
-
- value = '';
- }
- wwwAuthenticate += ' ' + name + '="' + Hoek.escapeHeaderAttribute(value.toString()) + '"';
- err.output.payload.attributes[name] = value;
- }
- }
-
- if (message) {
- if (attributes) {
- wwwAuthenticate += ',';
- }
- wwwAuthenticate += ' error="' + Hoek.escapeHeaderAttribute(message) + '"';
- err.output.payload.attributes.error = message;
- }
- else {
- err.isMissing = true;
- }
- }
- else {
-
- // function (message, wwwAuthenticate[])
-
- var wwwArray = scheme;
- for (i = 0, il = wwwArray.length; i < il; ++i) {
- if (i) {
- wwwAuthenticate += ', ';
- }
-
- wwwAuthenticate += wwwArray[i];
- }
- }
-
- err.output.headers['WWW-Authenticate'] = wwwAuthenticate;
-
- return err;
-};
-
-
-exports.forbidden = function (message, data) {
-
- return exports.create(403, message, data);
-};
-
-
-exports.notFound = function (message, data) {
-
- return exports.create(404, message, data);
-};
-
-
-exports.methodNotAllowed = function (message, data) {
-
- return exports.create(405, message, data);
-};
-
-
-exports.notAcceptable = function (message, data) {
-
- return exports.create(406, message, data);
-};
-
-
-exports.proxyAuthRequired = function (message, data) {
-
- return exports.create(407, message, data);
-};
-
-
-exports.clientTimeout = function (message, data) {
-
- return exports.create(408, message, data);
-};
-
-
-exports.conflict = function (message, data) {
-
- return exports.create(409, message, data);
-};
-
-
-exports.resourceGone = function (message, data) {
-
- return exports.create(410, message, data);
-};
-
-
-exports.lengthRequired = function (message, data) {
-
- return exports.create(411, message, data);
-};
-
-
-exports.preconditionFailed = function (message, data) {
-
- return exports.create(412, message, data);
-};
-
-
-exports.entityTooLarge = function (message, data) {
-
- return exports.create(413, message, data);
-};
-
-
-exports.uriTooLong = function (message, data) {
-
- return exports.create(414, message, data);
-};
-
-
-exports.unsupportedMediaType = function (message, data) {
-
- return exports.create(415, message, data);
-};
-
-
-exports.rangeNotSatisfiable = function (message, data) {
-
- return exports.create(416, message, data);
-};
-
-
-exports.expectationFailed = function (message, data) {
-
- return exports.create(417, message, data);
-};
-
-exports.badData = function (message, data) {
-
- return exports.create(422, message, data);
-};
-
-
-exports.tooManyRequests = function (message, data) {
-
- return exports.create(429, message, data);
-};
-
-
-// 5xx Server Errors
-
-exports.internal = function (message, data, statusCode) {
-
- var error = (data instanceof Error ? exports.wrap(data, statusCode, message) : exports.create(statusCode || 500, message));
-
- if (data instanceof Error === false) {
- error.data = data;
- }
-
- return error;
-};
-
-
-exports.notImplemented = function (message, data) {
-
- return exports.internal(message, data, 501);
-};
-
-
-exports.badGateway = function (message, data) {
-
- return exports.internal(message, data, 502);
-};
-
-
-exports.serverTimeout = function (message, data) {
-
- return exports.internal(message, data, 503);
-};
-
-
-exports.gatewayTimeout = function (message, data) {
-
- return exports.internal(message, data, 504);
-};
-
-
-exports.badImplementation = function (message, data) {
-
- var err = exports.internal(message, data, 500);
- err.isDeveloperError = true;
- return err;
-};
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/package.json b/node_modules/request/node_modules/hawk/node_modules/boom/package.json
deleted file mode 100644
index 15dff84ae..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "boom",
- "description": "HTTP-friendly error objects",
- "version": "2.8.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/hapijs/boom.git"
- },
- "main": "lib/index.js",
- "keywords": [
- "error",
- "http"
- ],
- "engines": {
- "node": ">=0.8.0"
- },
- "dependencies": {
- "hoek": "2.x.x"
- },
- "devDependencies": {
- "code": "1.x.x",
- "lab": "5.x.x"
- },
- "scripts": {
- "test": "lab -a code -t 100",
- "test-cov-html": "lab -a code -r html -o coverage.html"
- },
- "license": "BSD-3-Clause",
- "gitHead": "43f13bf2d336b35ccbb062b32ba2a17259f6d24c",
- "bugs": {
- "url": "https://github.com/hapijs/boom/issues"
- },
- "homepage": "https://github.com/hapijs/boom#readme",
- "_id": "boom@2.8.0",
- "_shasum": "317bdfd47018fe7dd79b0e9da73efe244119fdf1",
- "_from": "boom@>=2.0.0 <3.0.0",
- "_npmVersion": "2.11.1",
- "_nodeVersion": "0.10.38",
- "_npmUser": {
- "name": "arb",
- "email": "arbretz@gmail.com"
- },
- "maintainers": [
- {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- },
- {
- "name": "wyatt",
- "email": "wpreul@gmail.com"
- },
- {
- "name": "arb",
- "email": "arbretz@gmail.com"
- }
- ],
- "dist": {
- "shasum": "317bdfd47018fe7dd79b0e9da73efe244119fdf1",
- "tarball": "http://registry.npmjs.org/boom/-/boom-2.8.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz"
-}
diff --git a/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js b/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js
deleted file mode 100755
index 489f77c61..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js
+++ /dev/null
@@ -1,616 +0,0 @@
-// Load modules
-
-var Util = require('util');
-var Code = require('code');
-var Boom = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.describe;
-var it = lab.it;
-var expect = Code.expect;
-
-
-it('returns the same object when already boom', function (done) {
-
- var error = Boom.badRequest();
- var wrapped = Boom.wrap(error);
- expect(error).to.equal(wrapped);
- done();
-});
-
-it('returns an error with info when constructed using another error', function (done) {
-
- var error = new Error('ka-boom');
- error.xyz = 123;
- var err = Boom.wrap(error);
- expect(err.xyz).to.equal(123);
- expect(err.message).to.equal('ka-boom');
- expect(err.output).to.deep.equal({
- statusCode: 500,
- payload: {
- statusCode: 500,
- error: 'Internal Server Error',
- message: 'An internal server error occurred'
- },
- headers: {}
- });
- expect(err.data).to.equal(null);
- done();
-});
-
-it('does not override data when constructed using another error', function (done) {
-
- var error = new Error('ka-boom');
- error.data = { useful: 'data' };
- var err = Boom.wrap(error);
- expect(err.data).to.equal(error.data);
- done();
-});
-
-it('sets new message when none exists', function (done) {
-
- var error = new Error();
- var wrapped = Boom.wrap(error, 400, 'something bad');
- expect(wrapped.message).to.equal('something bad');
- done();
-});
-
-it('throws when statusCode is not a number', function (done) {
-
- expect(function () {
-
- Boom.create('x');
- }).to.throw('First argument must be a number (400+): x');
- done();
-});
-
-it('will cast a number-string to an integer', function (done) {
-
- var codes = [
- { input: '404', result: 404 },
- { input: '404.1', result: 404 },
- { input: 400, result: 400 },
- { input: 400.123, result: 400 }]
- for (var i = 0, il = codes.length; i < il; ++i) {
- var code = codes[i];
- var err = Boom.create(code.input);
- expect(err.output.statusCode).to.equal(code.result);
- }
-
- done();
-});
-
-it('throws when statusCode is not finite', function (done) {
-
- expect(function () {
-
- Boom.create(1 / 0);
- }).to.throw('First argument must be a number (400+): null');
- done();
-});
-
-it('sets error code to unknown', function (done) {
-
- var err = Boom.create(999);
- expect(err.output.payload.error).to.equal('Unknown');
- done();
-});
-
-describe('create()', function () {
-
- it('does not sets null message', function (done) {
-
- var error = Boom.unauthorized(null);
- expect(error.output.payload.message).to.not.exist();
- expect(error.isServer).to.be.false();
- done();
- });
-
- it('sets message and data', function (done) {
-
- var error = Boom.badRequest('Missing data', { type: 'user' });
- expect(error.data.type).to.equal('user');
- expect(error.output.payload.message).to.equal('Missing data');
- done();
- });
-});
-
-describe('isBoom()', function () {
-
- it('returns true for Boom object', function (done) {
-
- expect(Boom.badRequest().isBoom).to.equal(true);
- done();
- });
-
- it('returns false for Error object', function (done) {
-
- expect((new Error()).isBoom).to.not.exist();
- done();
- });
-});
-
-describe('badRequest()', function () {
-
- it('returns a 400 error statusCode', function (done) {
-
- var error = Boom.badRequest();
-
- expect(error.output.statusCode).to.equal(400);
- expect(error.isServer).to.be.false();
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.badRequest('my message').message).to.equal('my message');
- done();
- });
-
- it('sets the message to HTTP status if none provided', function (done) {
-
- expect(Boom.badRequest().message).to.equal('Bad Request');
- done();
- });
-});
-
-describe('unauthorized()', function () {
-
- it('returns a 401 error statusCode', function (done) {
-
- var err = Boom.unauthorized();
- expect(err.output.statusCode).to.equal(401);
- expect(err.output.headers).to.deep.equal({});
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.unauthorized('my message').message).to.equal('my message');
- done();
- });
-
- it('returns a WWW-Authenticate header when passed a scheme', function (done) {
-
- var err = Boom.unauthorized('boom', 'Test');
- expect(err.output.statusCode).to.equal(401);
- expect(err.output.headers['WWW-Authenticate']).to.equal('Test error="boom"');
- done();
- });
-
- it('returns a WWW-Authenticate header set to the schema array value', function (done) {
-
- var err = Boom.unauthorized(null, ['Test','one','two']);
- expect(err.output.statusCode).to.equal(401);
- expect(err.output.headers['WWW-Authenticate']).to.equal('Test, one, two');
- done();
- });
-
- it('returns a WWW-Authenticate header when passed a scheme and attributes', function (done) {
-
- var err = Boom.unauthorized('boom', 'Test', { a: 1, b: 'something', c: null, d: 0 });
- expect(err.output.statusCode).to.equal(401);
- expect(err.output.headers['WWW-Authenticate']).to.equal('Test a="1", b="something", c="", d="0", error="boom"');
- expect(err.output.payload.attributes).to.deep.equal({ a: 1, b: 'something', c: '', d: 0, error: 'boom' });
- done();
- });
-
- it('returns a WWW-Authenticate header when passed attributes, missing error', function (done) {
-
- var err = Boom.unauthorized(null, 'Test', { a: 1, b: 'something', c: null, d: 0 });
- expect(err.output.statusCode).to.equal(401);
- expect(err.output.headers['WWW-Authenticate']).to.equal('Test a="1", b="something", c="", d="0"');
- expect(err.isMissing).to.equal(true);
- done();
- });
-
- it('sets the isMissing flag when error message is empty', function (done) {
-
- var err = Boom.unauthorized('', 'Basic');
- expect(err.isMissing).to.equal(true);
- done();
- });
-
- it('does not set the isMissing flag when error message is not empty', function (done) {
-
- var err = Boom.unauthorized('message', 'Basic');
- expect(err.isMissing).to.equal(undefined);
- done();
- });
-
- it('sets a WWW-Authenticate when passed as an array', function (done) {
-
- var err = Boom.unauthorized('message', ['Basic', 'Example e="1"', 'Another x="3", y="4"']);
- expect(err.output.headers['WWW-Authenticate']).to.equal('Basic, Example e="1", Another x="3", y="4"');
- done();
- });
-});
-
-
-describe('methodNotAllowed()', function () {
-
- it('returns a 405 error statusCode', function (done) {
-
- expect(Boom.methodNotAllowed().output.statusCode).to.equal(405);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.methodNotAllowed('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('notAcceptable()', function () {
-
- it('returns a 406 error statusCode', function (done) {
-
- expect(Boom.notAcceptable().output.statusCode).to.equal(406);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.notAcceptable('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('proxyAuthRequired()', function () {
-
- it('returns a 407 error statusCode', function (done) {
-
- expect(Boom.proxyAuthRequired().output.statusCode).to.equal(407);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.proxyAuthRequired('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('clientTimeout()', function () {
-
- it('returns a 408 error statusCode', function (done) {
-
- expect(Boom.clientTimeout().output.statusCode).to.equal(408);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.clientTimeout('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('conflict()', function () {
-
- it('returns a 409 error statusCode', function (done) {
-
- expect(Boom.conflict().output.statusCode).to.equal(409);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.conflict('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('resourceGone()', function () {
-
- it('returns a 410 error statusCode', function (done) {
-
- expect(Boom.resourceGone().output.statusCode).to.equal(410);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.resourceGone('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('lengthRequired()', function () {
-
- it('returns a 411 error statusCode', function (done) {
-
- expect(Boom.lengthRequired().output.statusCode).to.equal(411);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.lengthRequired('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('preconditionFailed()', function () {
-
- it('returns a 412 error statusCode', function (done) {
-
- expect(Boom.preconditionFailed().output.statusCode).to.equal(412);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.preconditionFailed('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('entityTooLarge()', function () {
-
- it('returns a 413 error statusCode', function (done) {
-
- expect(Boom.entityTooLarge().output.statusCode).to.equal(413);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.entityTooLarge('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('uriTooLong()', function () {
-
- it('returns a 414 error statusCode', function (done) {
-
- expect(Boom.uriTooLong().output.statusCode).to.equal(414);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.uriTooLong('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('unsupportedMediaType()', function () {
-
- it('returns a 415 error statusCode', function (done) {
-
- expect(Boom.unsupportedMediaType().output.statusCode).to.equal(415);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.unsupportedMediaType('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('rangeNotSatisfiable()', function () {
-
- it('returns a 416 error statusCode', function (done) {
-
- expect(Boom.rangeNotSatisfiable().output.statusCode).to.equal(416);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.rangeNotSatisfiable('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('expectationFailed()', function () {
-
- it('returns a 417 error statusCode', function (done) {
-
- expect(Boom.expectationFailed().output.statusCode).to.equal(417);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.expectationFailed('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('badData()', function () {
-
- it('returns a 422 error statusCode', function (done) {
-
- expect(Boom.badData().output.statusCode).to.equal(422);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.badData('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('tooManyRequests()', function () {
-
- it('returns a 429 error statusCode', function (done) {
-
- expect(Boom.tooManyRequests().output.statusCode).to.equal(429);
- done();
- });
-
- it('sets the message with the passed-in message', function (done) {
-
- expect(Boom.tooManyRequests('my message').message).to.equal('my message');
- done();
- });
-});
-
-describe('serverTimeout()', function () {
-
- it('returns a 503 error statusCode', function (done) {
-
- expect(Boom.serverTimeout().output.statusCode).to.equal(503);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.serverTimeout('my message').message).to.equal('my message');
- done();
- });
-});
-
-describe('forbidden()', function () {
-
- it('returns a 403 error statusCode', function (done) {
-
- expect(Boom.forbidden().output.statusCode).to.equal(403);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.forbidden('my message').message).to.equal('my message');
- done();
- });
-});
-
-describe('notFound()', function () {
-
- it('returns a 404 error statusCode', function (done) {
-
- expect(Boom.notFound().output.statusCode).to.equal(404);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.notFound('my message').message).to.equal('my message');
- done();
- });
-});
-
-describe('internal()', function () {
-
- it('returns a 500 error statusCode', function (done) {
-
- expect(Boom.internal().output.statusCode).to.equal(500);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- var err = Boom.internal('my message');
- expect(err.message).to.equal('my message');
- expect(err.isServer).to.true();
- expect(err.output.payload.message).to.equal('An internal server error occurred');
- done();
- });
-
- it('passes data on the callback if its passed in', function (done) {
-
- expect(Boom.internal('my message', { my: 'data' }).data.my).to.equal('data');
- done();
- });
-
- it('returns an error with composite message', function (done) {
-
- try {
- JSON.parse('{');
- }
- catch (err) {
- var boom = Boom.internal('Someting bad', err);
- expect(boom.message).to.equal('Someting bad: Unexpected end of input');
- expect(boom.isServer).to.be.true();
- done();
- }
- });
-});
-
-describe('notImplemented()', function () {
-
- it('returns a 501 error statusCode', function (done) {
-
- expect(Boom.notImplemented().output.statusCode).to.equal(501);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.notImplemented('my message').message).to.equal('my message');
- done();
- });
-});
-
-
-describe('badGateway()', function () {
-
- it('returns a 502 error statusCode', function (done) {
-
- expect(Boom.badGateway().output.statusCode).to.equal(502);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.badGateway('my message').message).to.equal('my message');
- done();
- });
-});
-
-describe('gatewayTimeout()', function () {
-
- it('returns a 504 error statusCode', function (done) {
-
- expect(Boom.gatewayTimeout().output.statusCode).to.equal(504);
- done();
- });
-
- it('sets the message with the passed in message', function (done) {
-
- expect(Boom.gatewayTimeout('my message').message).to.equal('my message');
- done();
- });
-});
-
-describe('badImplementation()', function () {
-
- it('returns a 500 error statusCode', function (done) {
-
- var err = Boom.badImplementation();
- expect(err.output.statusCode).to.equal(500);
- expect(err.isDeveloperError).to.equal(true);
- expect(err.isServer).to.be.true();
- done();
- });
-});
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore b/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore
deleted file mode 100644
index 77ba16cb0..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore
+++ /dev/null
@@ -1,18 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml b/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml
deleted file mode 100755
index 047f7e3d5..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE b/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE
deleted file mode 100755
index cda44736a..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2014, Eran Hammer and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * 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.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-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 HOLDERS AND 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 complete list of contributors can be found at: https://github.com/hueniverse/cryptiles/graphs/contributors
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile b/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile
deleted file mode 100755
index 3a89298fb..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-test:
- node node_modules/lab/bin/lab
-test-cov:
- node node_modules/lab/bin/lab -t 100
-test-cov-html:
- node node_modules/lab/bin/lab -r html -o coverage.html
-
-.PHONY: test test-cov test-cov-html
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md b/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md
deleted file mode 100644
index be943f8ec..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-cryptiles
-=========
-
-General purpose crypto utilities
-
-[![Build Status](https://secure.travis-ci.org/hapijs/cryptiles.png)](http://travis-ci.org/hapijs/cryptiles)
-
-## Methods
-
-### `randomString(<Number> size)`
-Returns a cryptographically strong pseudo-random data string. Takes a size argument for the length of the string.
-
-### `fixedTimeComparison(<String> a, <String> b)`
-Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match). Returns `true` if the strings match, `false` if they differ.
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js b/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js
deleted file mode 100755
index 4cc88b358..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib'); \ No newline at end of file
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js b/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
deleted file mode 100755
index f385870ee..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-// Load modules
-
-var Crypto = require('crypto');
-var Boom = require('boom');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Generate a cryptographically strong pseudo-random data
-
-exports.randomString = function (size) {
-
- var buffer = exports.randomBits((size + 1) * 6);
- if (buffer instanceof Error) {
- return buffer;
- }
-
- var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, '');
- return string.slice(0, size);
-};
-
-
-exports.randomBits = function (bits) {
-
- if (!bits ||
- bits < 0) {
-
- return Boom.internal('Invalid random bits count');
- }
-
- var bytes = Math.ceil(bits / 8);
- try {
- return Crypto.randomBytes(bytes);
- }
- catch (err) {
- return Boom.internal('Failed generating random bits: ' + err.message);
- }
-};
-
-
-// Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match)
-
-exports.fixedTimeComparison = function (a, b) {
-
- if (typeof a !== 'string' ||
- typeof b !== 'string') {
-
- return false;
- }
-
- var mismatch = (a.length === b.length ? 0 : 1);
- if (mismatch) {
- b = a;
- }
-
- for (var i = 0, il = a.length; i < il; ++i) {
- var ac = a.charCodeAt(i);
- var bc = b.charCodeAt(i);
- mismatch |= (ac ^ bc);
- }
-
- return (mismatch === 0);
-};
-
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json b/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json
deleted file mode 100644
index 3a2538621..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "cryptiles",
- "description": "General purpose crypto utilities",
- "version": "2.0.4",
- "author": {
- "name": "Eran Hammer",
- "email": "eran@hammer.io",
- "url": "http://hueniverse.com"
- },
- "contributors": [],
- "repository": {
- "type": "git",
- "url": "git://github.com/hapijs/cryptiles.git"
- },
- "main": "index",
- "keywords": [
- "cryptography",
- "security",
- "utilites"
- ],
- "engines": {
- "node": ">=0.8.0"
- },
- "dependencies": {
- "boom": "2.x.x"
- },
- "devDependencies": {
- "lab": "4.x.x"
- },
- "scripts": {
- "test": "make test-cov"
- },
- "licenses": [
- {
- "type": "BSD",
- "url": "http://github.com/hapijs/cryptiles/raw/master/LICENSE"
- }
- ],
- "readme": "cryptiles\n=========\n\nGeneral purpose crypto utilities\n\n[![Build Status](https://secure.travis-ci.org/hapijs/cryptiles.png)](http://travis-ci.org/hapijs/cryptiles)\n\n## Methods\n\n### `randomString(<Number> size)`\nReturns a cryptographically strong pseudo-random data string. Takes a size argument for the length of the string.\n\n### `fixedTimeComparison(<String> a, <String> b)`\nCompare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match). Returns `true` if the strings match, `false` if they differ.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/hapijs/cryptiles/issues"
- },
- "homepage": "https://github.com/hapijs/cryptiles#readme",
- "_id": "cryptiles@2.0.4",
- "_shasum": "09ea1775b9e1c7de7e60a99d42ab6f08ce1a1285",
- "_resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz",
- "_from": "cryptiles@>=2.0.0 <3.0.0"
-}
diff --git a/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js b/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js
deleted file mode 100755
index 3340141a2..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js
+++ /dev/null
@@ -1,108 +0,0 @@
-// Load modules
-
-var Lab = require('lab');
-var Cryptiles = require('../lib');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var before = lab.before;
-var after = lab.after;
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Lab.expect;
-
-
-describe('Cryptiles', function () {
-
- describe('#randomString', function () {
-
- it('should generate the right length string', function (done) {
-
- for (var i = 1; i <= 1000; ++i) {
- expect(Cryptiles.randomString(i).length).to.equal(i);
- }
-
- done();
- });
-
- it('returns an error on invalid bits size', function (done) {
-
- expect(Cryptiles.randomString(99999999999999999999).message).to.equal('Failed generating random bits: Argument #1 must be number > 0');
- done();
- });
- });
-
- describe('#randomBits', function () {
-
- it('returns an error on invalid input', function (done) {
-
- expect(Cryptiles.randomBits(0).message).to.equal('Invalid random bits count');
- done();
- });
- });
-
- describe('#fixedTimeComparison', function () {
-
- var a = Cryptiles.randomString(50000);
- var b = Cryptiles.randomString(150000);
-
- it('should take the same amount of time comparing different string sizes', function (done) {
-
- var now = Date.now();
- Cryptiles.fixedTimeComparison(b, a);
- var t1 = Date.now() - now;
-
- now = Date.now();
- Cryptiles.fixedTimeComparison(b, b);
- var t2 = Date.now() - now;
-
- expect(t2 - t1).to.be.within(-20, 20);
- done();
- });
-
- it('should return true for equal strings', function (done) {
-
- expect(Cryptiles.fixedTimeComparison(a, a)).to.equal(true);
- done();
- });
-
- it('should return false for different strings (size, a < b)', function (done) {
-
- expect(Cryptiles.fixedTimeComparison(a, a + 'x')).to.equal(false);
- done();
- });
-
- it('should return false for different strings (size, a > b)', function (done) {
-
- expect(Cryptiles.fixedTimeComparison(a + 'x', a)).to.equal(false);
- done();
- });
-
- it('should return false for different strings (size, a = b)', function (done) {
-
- expect(Cryptiles.fixedTimeComparison(a + 'x', a + 'y')).to.equal(false);
- done();
- });
-
- it('should return false when not a string', function (done) {
-
- expect(Cryptiles.fixedTimeComparison('x', null)).to.equal(false);
- done();
- });
-
- it('should return false when not a string (left)', function (done) {
-
- expect(Cryptiles.fixedTimeComparison(null, 'x')).to.equal(false);
- done();
- });
- });
-});
-
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore b/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore
deleted file mode 100644
index 7e1574dc5..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore
+++ /dev/null
@@ -1,18 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-complexity.md
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml b/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml
deleted file mode 100755
index c84aade8c..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
- - 0.12
- - iojs
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md b/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md
deleted file mode 100644
index 892836159..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md
+++ /dev/null
@@ -1 +0,0 @@
-Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE b/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE
deleted file mode 100755
index 553090425..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-Copyright (c) 2011-2014, Walmart and other contributors.
-Copyright (c) 2011, Yahoo Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * 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.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-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 HOLDERS AND 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 complete list of contributors can be found at: https://github.com/hapijs/hapi/graphs/contributors
-Portions of this project were initially based on the Yahoo! Inc. Postmile project,
-published at https://github.com/yahoo/postmile.
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile b/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile
deleted file mode 100755
index 83aaf0c0c..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-test:
- @node node_modules/lab/bin/lab -a code
-test-cov:
- @node node_modules/lab/bin/lab -a code -t 100 -L
-test-cov-html:
- @node node_modules/lab/bin/lab -a code -r html -o coverage.html
-
-.PHONY: test test-cov test-cov-html
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/README.md b/node_modules/request/node_modules/hawk/node_modules/hoek/README.md
deleted file mode 100755
index 19357bb51..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/README.md
+++ /dev/null
@@ -1,574 +0,0 @@
-![hoek Logo](https://raw.github.com/hapijs/hoek/master/images/hoek.png)
-
-Utility methods for the hapi ecosystem. This module is not intended to solve every problem for everyone, but rather as a central place to store hapi-specific methods. If you're looking for a general purpose utility module, check out [lodash](https://github.com/lodash/lodash) or [underscore](https://github.com/jashkenas/underscore).
-
-[![Build Status](https://secure.travis-ci.org/hapijs/hoek.png)](http://travis-ci.org/hapijs/hoek)
-
-Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf)
-
-# Table of Contents
-
-* [Introduction](#introduction "Introduction")
-* [Object](#object "Object")
- * [clone](#cloneobj "clone")
- * [cloneWithShallow](#clonewithshallowobj-keys "cloneWithShallow")
- * [merge](#mergetarget-source-isnulloverride-ismergearrays "merge")
- * [applyToDefaults](#applytodefaultsdefaults-options-isnulloverride "applyToDefaults")
- * [applyToDefaultsWithShallow](#applytodefaultswithshallowdefaults-options-keys "applyToDefaultsWithShallow")
- * [deepEqual](#deepequala-b "deepEqual")
- * [unique](#uniquearray-key "unique")
- * [mapToObject](#maptoobjectarray-key "mapToObject")
- * [intersect](#intersectarray1-array2 "intersect")
- * [contain](#containref-values-options "contain")
- * [flatten](#flattenarray-target "flatten")
- * [reach](#reachobj-chain-options "reach")
- * [reachTemplate](#reachobj-template-options "reachTemplate")
- * [transform](#transformobj-transform-options "transform")
- * [shallow](#shallowobj "shallow")
- * [stringify](#stringifyobj "stringify")
-* [Timer](#timer "Timer")
-* [Bench](#bench "Bench")
-* [Binary Encoding/Decoding](#binary-encodingdecoding "Binary Encoding/Decoding")
- * [base64urlEncode](#base64urlencodevalue "binary64urlEncode")
- * [base64urlDecode](#base64urldecodevalue "binary64urlDecode")
-* [Escaping Characters](#escaping-characters "Escaping Characters")
- * [escapeHtml](#escapehtmlstring "escapeHtml")
- * [escapeHeaderAttribute](#escapeheaderattributeattribute "escapeHeaderAttribute")
- * [escapeRegex](#escaperegexstring "escapeRegex")
-* [Errors](#errors "Errors")
- * [assert](#assertcondition-message "assert")
- * [abort](#abortmessage "abort")
- * [displayStack](#displaystackslice "displayStack")
- * [callStack](#callstackslice "callStack")
-* [Function](#function "Function")
- * [nextTick](#nexttickfn "nextTick")
- * [once](#oncefn "once")
- * [ignore](#ignore "ignore")
-* [Miscellaneous](#miscellaneous "Miscellaneous")
- * [uniqueFilename](#uniquefilename "uniqueFilename")
- * [isInteger](#isInteger "isInteger")
-
-
-
-# Introduction
-
-The *Hoek* library contains some common functions used within the hapi ecosystem. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more.
-
-For example, to use Hoek to set configuration with default options:
-```javascript
-var Hoek = require('hoek');
-
-var default = {url : "www.github.com", port : "8000", debug : true};
-
-var config = Hoek.applyToDefaults(default, {port : "3000", admin : true});
-
-// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true }
-```
-
-Under each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the `var Hoek = require('hoek');` is omitted for brevity.
-
-## Object
-
-Hoek provides several helpful methods for objects and arrays.
-
-### clone(obj)
-
-This method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects, as well as non-enumerable properties).
-
-```javascript
-
-var nestedObj = {
- w: /^something$/ig,
- x: {
- a: [1, 2, 3],
- b: 123456,
- c: new Date()
- },
- y: 'y',
- z: new Date()
- };
-
-var copy = Hoek.clone(nestedObj);
-
-copy.x.b = 100;
-
-console.log(copy.y); // results in 'y'
-console.log(nestedObj.x.b); // results in 123456
-console.log(copy.x.b); // results in 100
-```
-
-### cloneWithShallow(obj, keys)
-keys is an array of key names to shallow copy
-
-This method is also used to clone an object or array, however any keys listed in the `keys` array are shallow copied while those not listed are deep copied.
-
-```javascript
-
-var nestedObj = {
- w: /^something$/ig,
- x: {
- a: [1, 2, 3],
- b: 123456,
- c: new Date()
- },
- y: 'y',
- z: new Date()
- };
-
-var copy = Hoek.cloneWithShallow(nestedObj, ['x']);
-
-copy.x.b = 100;
-
-console.log(copy.y); // results in 'y'
-console.log(nestedObj.x.b); // results in 100
-console.log(copy.x.b); // results in 100
-```
-
-### merge(target, source, isNullOverride, isMergeArrays)
-isNullOverride, isMergeArrays default to true
-
-Merge all the properties of source into target, source wins in conflict, and by default null and undefined from source are applied.
-Merge is destructive where the target is modified. For non destructive merge, use `applyToDefaults`.
-
-
-```javascript
-
-var target = {a: 1, b : 2};
-var source = {a: 0, c: 5};
-var source2 = {a: null, c: 5};
-
-Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5}
-Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5}
-Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5}
-
-var targetArray = [1, 2, 3];
-var sourceArray = [4, 5];
-
-Hoek.merge(targetArray, sourceArray); // results in [1, 2, 3, 4, 5]
-Hoek.merge(targetArray, sourceArray, true, false); // results in [4, 5]
-```
-
-### applyToDefaults(defaults, options, isNullOverride)
-isNullOverride defaults to false
-
-Apply options to a copy of the defaults
-
-```javascript
-
-var defaults = { host: "localhost", port: 8000 };
-var options = { port: 8080 };
-
-var config = Hoek.applyToDefaults(defaults, options); // results in { host: "localhost", port: 8080 }
-```
-
-Apply options with a null value to a copy of the defaults
-
-```javascript
-
-var defaults = { host: "localhost", port: 8000 };
-var options = { host: null, port: 8080 };
-
-var config = Hoek.applyToDefaults(defaults, options, true); // results in { host: null, port: 8080 }
-```
-
-### applyToDefaultsWithShallow(defaults, options, keys)
-keys is an array of key names to shallow copy
-
-Apply options to a copy of the defaults. Keys specified in the last parameter are shallow copied from options instead of merged.
-
-```javascript
-
-var defaults = {
- server: {
- host: "localhost",
- port: 8000
- },
- name: 'example'
- };
-
-var options = { server: { port: 8080 } };
-
-var config = Hoek.applyToDefaults(defaults, options); // results in { server: { port: 8080 }, name: 'example' }
-```
-
-### deepEqual(b, a, [options])
-
-Performs a deep comparison of the two values including support for circular dependencies, prototype, and properties. To skip prototype comparisons, use `options.prototype = false`
-
-```javascript
-Hoek.deepEqual({ a: [1, 2], b: 'string', c: { d: true } }, { a: [1, 2], b: 'string', c: { d: true } }); //results in true
-Hoek.deepEqual(Object.create(null), {}, { prototype: false }); //results in true
-Hoek.deepEqual(Object.create(null), {}); //results in false
-```
-
-### unique(array, key)
-
-Remove duplicate items from Array
-
-```javascript
-
-var array = [1, 2, 2, 3, 3, 4, 5, 6];
-
-var newArray = Hoek.unique(array); // results in [1,2,3,4,5,6]
-
-array = [{id: 1}, {id: 1}, {id: 2}];
-
-newArray = Hoek.unique(array, "id"); // results in [{id: 1}, {id: 2}]
-```
-
-### mapToObject(array, key)
-
-Convert an Array into an Object
-
-```javascript
-
-var array = [1,2,3];
-var newObject = Hoek.mapToObject(array); // results in [{"1": true}, {"2": true}, {"3": true}]
-
-array = [{id: 1}, {id: 2}];
-newObject = Hoek.mapToObject(array, "id"); // results in [{"id": 1}, {"id": 2}]
-```
-
-### intersect(array1, array2)
-
-Find the common unique items in two arrays
-
-```javascript
-
-var array1 = [1, 2, 3];
-var array2 = [1, 4, 5];
-
-var newArray = Hoek.intersect(array1, array2); // results in [1]
-```
-
-### contain(ref, values, [options])
-
-Tests if the reference value contains the provided values where:
-- `ref` - the reference string, array, or object.
-- `values` - a single or array of values to find within the `ref` value. If `ref` is an object, `values` can be a key name,
- an array of key names, or an object with key-value pairs to compare.
-- `options` - an optional object with the following optional settings:
- - `deep` - if `true`, performed a deep comparison of the values.
- - `once` - if `true`, allows only one occurrence of each value.
- - `only` - if `true`, does not allow values not explicitly listed.
- - `part` - if `true`, allows partial match of the values (at least one must always match).
-
-Note: comparing a string to overlapping values will result in failed comparison (e.g. `contain('abc', ['ab', 'bc'])`).
-Also, if an object key's value does not match the provided value, `false` is returned even when `part` is specified.
-
-```javascript
-Hoek.contain('aaa', 'a', { only: true }); // true
-Hoek.contain([{ a: 1 }], [{ a: 1 }], { deep: true }); // true
-Hoek.contain([1, 2, 2], [1, 2], { once: true }); // false
-Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 4 }, { part: true }); // true
-```
-
-### flatten(array, [target])
-
-Flatten an array
-
-```javascript
-
-var array = [1, [2, 3]];
-
-var flattenedArray = Hoek.flatten(array); // results in [1, 2, 3]
-
-array = [1, [2, 3]];
-target = [4, [5]];
-
-flattenedArray = Hoek.flatten(array, target); // results in [4, [5], 1, 2, 3]
-```
-
-### reach(obj, chain, [options])
-
-Converts an object key chain string to reference
-
-- `options` - optional settings
- - `separator` - string to split chain path on, defaults to '.'
- - `default` - value to return if the path or value is not present, default is `undefined`
- - `strict` - if `true`, will throw an error on missing member, default is `false`
- - `functions` - if `true` allow traversing functions for properties. `false` will throw an error if a function is part of the chain.
-
-A chain including negative numbers will work like negative indices on an
-array.
-
-```javascript
-
-var chain = 'a.b.c';
-var obj = {a : {b : { c : 1}}};
-
-Hoek.reach(obj, chain); // returns 1
-
-var chain = 'a.b.-1';
-var obj = {a : {b : [2,3,6]}};
-
-Hoek.reach(obj, chain); // returns 6
-```
-
-### reachTemplate(obj, template, [options])
-
-Replaces string parameters (`{name}`) with their corresponding object key values by applying the
-(`reach()`)[#reachobj-chain-options] method where:
-
-- `obj` - the context object used for key lookup.
-- `template` - a string containing `{}` parameters.
-- `options` - optional (`reach()`)[#reachobj-chain-options] options.
-
-```javascript
-
-var chain = 'a.b.c';
-var obj = {a : {b : { c : 1}}};
-
-Hoek.reachTemplate(obj, '1+{a.b.c}=2'); // returns '1+1=2'
-```
-
-### transform(obj, transform, [options])
-
-Transforms an existing object into a new one based on the supplied `obj` and `transform` map. `options` are the same as the `reach` options.
-
-```javascript
-var source = {
- address: {
- one: '123 main street',
- two: 'PO Box 1234'
- },
- title: 'Warehouse',
- state: 'CA'
-};
-
-var result = Hoek.transform(source, {
- 'person.address.lineOne': 'address.one',
- 'person.address.lineTwo': 'address.two',
- 'title': 'title',
- 'person.address.region': 'state'
-});
-// Results in
-// {
-// person: {
-// address: {
-// lineOne: '123 main street',
-// lineTwo: 'PO Box 1234',
-// region: 'CA'
-// }
-// },
-// title: 'Warehouse'
-// }
-```
-
-### shallow(obj)
-
-Performs a shallow copy by copying the references of all the top level children where:
-- `obj` - the object to be copied.
-
-```javascript
-var shallow = Hoek.shallow({ a: { b: 1 } });
-```
-
-### stringify(obj)
-
-Converts an object to string using the built-in `JSON.stringify()` method with the difference that any errors are caught
-and reported back in the form of the returned string. Used as a shortcut for displaying information to the console (e.g. in
-error message) without the need to worry about invalid conversion.
-
-```javascript
-var a = {};
-a.b = a;
-Hoek.stringify(a); // Returns '[Cannot display object: Converting circular structure to JSON]'
-```
-
-# Timer
-
-A Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
-
-```javascript
-
-var timerObj = new Hoek.Timer();
-console.log("Time is now: " + timerObj.ts);
-console.log("Elapsed time from initialization: " + timerObj.elapsed() + 'milliseconds');
-```
-
-
-# Bench
-
-Same as Timer with the exception that `ts` stores the internal node clock which is not related to `Date.now()` and cannot be used to display
-human-readable timestamps. More accurate for benchmarking or internal timers.
-
-# Binary Encoding/Decoding
-
-### base64urlEncode(value)
-
-Encodes value in Base64 or URL encoding
-
-### base64urlDecode(value)
-
-Decodes data in Base64 or URL encoding.
-# Escaping Characters
-
-Hoek provides convenient methods for escaping html characters. The escaped characters are as followed:
-
-```javascript
-
-internals.htmlEscaped = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- "'": '&#x27;',
- '`': '&#x60;'
-};
-```
-
-### escapeHtml(string)
-
-```javascript
-
-var string = '<html> hey </html>';
-var escapedString = Hoek.escapeHtml(string); // returns &lt;html&gt; hey &lt;/html&gt;
-```
-
-### escapeHeaderAttribute(attribute)
-
-Escape attribute value for use in HTTP header
-
-```javascript
-
-var a = Hoek.escapeHeaderAttribute('I said "go w\\o me"'); //returns I said \"go w\\o me\"
-```
-
-
-### escapeRegex(string)
-
-Escape string for Regex construction
-
-```javascript
-
-var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); // returns 4\^f\$s\.4\*5\+\-_\?%\=#\!\:@\|~\\\/`"\(>\)\[<\]d\{\}s\,
-```
-
-# Errors
-
-### assert(condition, message)
-
-```javascript
-
-var a = 1, b = 2;
-
-Hoek.assert(a === b, 'a should equal b'); // Throws 'a should equal b'
-```
-
-Note that you may also pass an already created Error object as the second parameter, and `assert` will throw that object.
-
-```javascript
-
-var a = 1, b = 2;
-
-Hoek.assert(a === b, new Error('a should equal b')); // Throws the given error object
-```
-
-### abort(message)
-
-First checks if `process.env.NODE_ENV === 'test'`, and if so, throws error message. Otherwise,
-displays most recent stack and then exits process.
-
-
-
-### displayStack(slice)
-
-Displays the trace stack
-
-```javascript
-
-var stack = Hoek.displayStack();
-console.log(stack); // returns something like:
-
-[ 'null (/Users/user/Desktop/hoek/test.js:4:18)',
- 'Module._compile (module.js:449:26)',
- 'Module._extensions..js (module.js:467:10)',
- 'Module.load (module.js:356:32)',
- 'Module._load (module.js:312:12)',
- 'Module.runMain (module.js:492:10)',
- 'startup.processNextTick.process._tickCallback (node.js:244:9)' ]
-```
-
-### callStack(slice)
-
-Returns a trace stack array.
-
-```javascript
-
-var stack = Hoek.callStack();
-console.log(stack); // returns something like:
-
-[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ],
- [ 'module.js', 449, 26, 'Module._compile', false ],
- [ 'module.js', 467, 10, 'Module._extensions..js', false ],
- [ 'module.js', 356, 32, 'Module.load', false ],
- [ 'module.js', 312, 12, 'Module._load', false ],
- [ 'module.js', 492, 10, 'Module.runMain', false ],
- [ 'node.js',
- 244,
- 9,
- 'startup.processNextTick.process._tickCallback',
- false ] ]
-```
-
-## Function
-
-### nextTick(fn)
-
-Returns a new function that wraps `fn` in `process.nextTick`.
-
-```javascript
-
-var myFn = function () {
- console.log('Do this later');
-};
-
-var nextFn = Hoek.nextTick(myFn);
-
-nextFn();
-console.log('Do this first');
-
-// Results in:
-//
-// Do this first
-// Do this later
-```
-
-### once(fn)
-
-Returns a new function that can be run multiple times, but makes sure `fn` is only run once.
-
-```javascript
-
-var myFn = function () {
- console.log('Ran myFn');
-};
-
-var onceFn = Hoek.once(myFn);
-onceFn(); // results in "Ran myFn"
-onceFn(); // results in undefined
-```
-
-### ignore
-
-A simple no-op function. It does nothing at all.
-
-## Miscellaneous
-
-### uniqueFilename(path, extension)
-`path` to prepend with the randomly generated file name. `extension` is the optional file extension, defaults to `''`.
-
-Returns a randomly generated file name at the specified `path`. The result is a fully resolved path to a file.
-
-```javascript
-var result = Hoek.uniqueFilename('./test/modules', 'txt'); // results in "full/path/test/modules/{random}.txt"
-```
-
-### isInteger(value)
-
-Check `value` to see if it is an integer. Returns true/false.
-
-```javascript
-var result = Hoek.isInteger('23')
-```
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png b/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png
deleted file mode 100755
index 6ccfcb12b..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png
+++ /dev/null
Binary files differ
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/index.js b/node_modules/request/node_modules/hawk/node_modules/hoek/index.js
deleted file mode 100755
index bb0a047c4..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib');
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js b/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js
deleted file mode 100755
index 9ecde6666..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js
+++ /dev/null
@@ -1,132 +0,0 @@
-// Declare internals
-
-var internals = {};
-
-
-exports.escapeJavaScript = function (input) {
-
- if (!input) {
- return '';
- }
-
- var escaped = '';
-
- for (var i = 0, il = input.length; i < il; ++i) {
-
- var charCode = input.charCodeAt(i);
-
- if (internals.isSafe(charCode)) {
- escaped += input[i];
- }
- else {
- escaped += internals.escapeJavaScriptChar(charCode);
- }
- }
-
- return escaped;
-};
-
-
-exports.escapeHtml = function (input) {
-
- if (!input) {
- return '';
- }
-
- var escaped = '';
-
- for (var i = 0, il = input.length; i < il; ++i) {
-
- var charCode = input.charCodeAt(i);
-
- if (internals.isSafe(charCode)) {
- escaped += input[i];
- }
- else {
- escaped += internals.escapeHtmlChar(charCode);
- }
- }
-
- return escaped;
-};
-
-
-internals.escapeJavaScriptChar = function (charCode) {
-
- if (charCode >= 256) {
- return '\\u' + internals.padLeft('' + charCode, 4);
- }
-
- var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex');
- return '\\x' + internals.padLeft(hexValue, 2);
-};
-
-
-internals.escapeHtmlChar = function (charCode) {
-
- var namedEscape = internals.namedHtml[charCode];
- if (typeof namedEscape !== 'undefined') {
- return namedEscape;
- }
-
- if (charCode >= 256) {
- return '&#' + charCode + ';';
- }
-
- var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex');
- return '&#x' + internals.padLeft(hexValue, 2) + ';';
-};
-
-
-internals.padLeft = function (str, len) {
-
- while (str.length < len) {
- str = '0' + str;
- }
-
- return str;
-};
-
-
-internals.isSafe = function (charCode) {
-
- return (typeof internals.safeCharCodes[charCode] !== 'undefined');
-};
-
-
-internals.namedHtml = {
- '38': '&amp;',
- '60': '&lt;',
- '62': '&gt;',
- '34': '&quot;',
- '160': '&nbsp;',
- '162': '&cent;',
- '163': '&pound;',
- '164': '&curren;',
- '169': '&copy;',
- '174': '&reg;'
-};
-
-
-internals.safeCharCodes = (function () {
-
- var safe = {};
-
- for (var i = 32; i < 123; ++i) {
-
- if ((i >= 97) || // a-z
- (i >= 65 && i <= 90) || // A-Z
- (i >= 48 && i <= 57) || // 0-9
- i === 32 || // space
- i === 46 || // .
- i === 44 || // ,
- i === 45 || // -
- i === 58 || // :
- i === 95) { // _
-
- safe[i] = null;
- }
- }
-
- return safe;
-}());
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js b/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js
deleted file mode 100755
index 5f6f90c99..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js
+++ /dev/null
@@ -1,977 +0,0 @@
-// Load modules
-
-var Crypto = require('crypto');
-var Path = require('path');
-var Util = require('util');
-var Escape = require('./escape');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Clone object or array
-
-exports.clone = function (obj, seen) {
-
- if (typeof obj !== 'object' ||
- obj === null) {
-
- return obj;
- }
-
- seen = seen || { orig: [], copy: [] };
-
- var lookup = seen.orig.indexOf(obj);
- if (lookup !== -1) {
- return seen.copy[lookup];
- }
-
- var newObj;
- var cloneDeep = false;
-
- if (!Array.isArray(obj)) {
- if (Buffer.isBuffer(obj)) {
- newObj = new Buffer(obj);
- }
- else if (obj instanceof Date) {
- newObj = new Date(obj.getTime());
- }
- else if (obj instanceof RegExp) {
- newObj = new RegExp(obj);
- }
- else {
- var proto = Object.getPrototypeOf(obj);
- if (proto &&
- proto.isImmutable) {
-
- newObj = obj;
- }
- else {
- newObj = Object.create(proto);
- cloneDeep = true;
- }
- }
- }
- else {
- newObj = [];
- cloneDeep = true;
- }
-
- seen.orig.push(obj);
- seen.copy.push(newObj);
-
- if (cloneDeep) {
- var keys = Object.getOwnPropertyNames(obj);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var descriptor = Object.getOwnPropertyDescriptor(obj, key);
- if (descriptor.get ||
- descriptor.set) {
-
- Object.defineProperty(newObj, key, descriptor);
- }
- else {
- newObj[key] = exports.clone(obj[key], seen);
- }
- }
- }
-
- return newObj;
-};
-
-
-// Merge all the properties of source into target, source wins in conflict, and by default null and undefined from source are applied
-/*eslint-disable */
-exports.merge = function (target, source, isNullOverride /* = true */, isMergeArrays /* = true */) {
-/*eslint-enable */
- exports.assert(target && typeof target === 'object', 'Invalid target value: must be an object');
- exports.assert(source === null || source === undefined || typeof source === 'object', 'Invalid source value: must be null, undefined, or an object');
-
- if (!source) {
- return target;
- }
-
- if (Array.isArray(source)) {
- exports.assert(Array.isArray(target), 'Cannot merge array onto an object');
- if (isMergeArrays === false) { // isMergeArrays defaults to true
- target.length = 0; // Must not change target assignment
- }
-
- for (var i = 0, il = source.length; i < il; ++i) {
- target.push(exports.clone(source[i]));
- }
-
- return target;
- }
-
- var keys = Object.keys(source);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var value = source[key];
- if (value &&
- typeof value === 'object') {
-
- if (!target[key] ||
- typeof target[key] !== 'object' ||
- (Array.isArray(target[key]) ^ Array.isArray(value)) ||
- value instanceof Date ||
- Buffer.isBuffer(value) ||
- value instanceof RegExp) {
-
- target[key] = exports.clone(value);
- }
- else {
- exports.merge(target[key], value, isNullOverride, isMergeArrays);
- }
- }
- else {
- if (value !== null &&
- value !== undefined) { // Explicit to preserve empty strings
-
- target[key] = value;
- }
- else if (isNullOverride !== false) { // Defaults to true
- target[key] = value;
- }
- }
- }
-
- return target;
-};
-
-
-// Apply options to a copy of the defaults
-
-exports.applyToDefaults = function (defaults, options, isNullOverride) {
-
- exports.assert(defaults && typeof defaults === 'object', 'Invalid defaults value: must be an object');
- exports.assert(!options || options === true || typeof options === 'object', 'Invalid options value: must be true, falsy or an object');
-
- if (!options) { // If no options, return null
- return null;
- }
-
- var copy = exports.clone(defaults);
-
- if (options === true) { // If options is set to true, use defaults
- return copy;
- }
-
- return exports.merge(copy, options, isNullOverride === true, false);
-};
-
-
-// Clone an object except for the listed keys which are shallow copied
-
-exports.cloneWithShallow = function (source, keys) {
-
- if (!source ||
- typeof source !== 'object') {
-
- return source;
- }
-
- var storage = internals.store(source, keys); // Move shallow copy items to storage
- var copy = exports.clone(source); // Deep copy the rest
- internals.restore(copy, source, storage); // Shallow copy the stored items and restore
- return copy;
-};
-
-
-internals.store = function (source, keys) {
-
- var storage = {};
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var value = exports.reach(source, key);
- if (value !== undefined) {
- storage[key] = value;
- internals.reachSet(source, key, undefined);
- }
- }
-
- return storage;
-};
-
-
-internals.restore = function (copy, source, storage) {
-
- var keys = Object.keys(storage);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- internals.reachSet(copy, key, storage[key]);
- internals.reachSet(source, key, storage[key]);
- }
-};
-
-
-internals.reachSet = function (obj, key, value) {
-
- var path = key.split('.');
- var ref = obj;
- for (var i = 0, il = path.length; i < il; ++i) {
- var segment = path[i];
- if (i + 1 === il) {
- ref[segment] = value;
- }
-
- ref = ref[segment];
- }
-};
-
-
-// Apply options to defaults except for the listed keys which are shallow copied from option without merging
-
-exports.applyToDefaultsWithShallow = function (defaults, options, keys) {
-
- exports.assert(defaults && typeof defaults === 'object', 'Invalid defaults value: must be an object');
- exports.assert(!options || options === true || typeof options === 'object', 'Invalid options value: must be true, falsy or an object');
- exports.assert(keys && Array.isArray(keys), 'Invalid keys');
-
- if (!options) { // If no options, return null
- return null;
- }
-
- var copy = exports.cloneWithShallow(defaults, keys);
-
- if (options === true) { // If options is set to true, use defaults
- return copy;
- }
-
- var storage = internals.store(options, keys); // Move shallow copy items to storage
- exports.merge(copy, options, false, false); // Deep copy the rest
- internals.restore(copy, options, storage); // Shallow copy the stored items and restore
- return copy;
-};
-
-
-// Deep object or array comparison
-
-exports.deepEqual = function (obj, ref, options, seen) {
-
- options = options || { prototype: true };
-
- var type = typeof obj;
-
- if (type !== typeof ref) {
- return false;
- }
-
- if (type !== 'object' ||
- obj === null ||
- ref === null) {
-
- if (obj === ref) { // Copied from Deep-eql, copyright(c) 2013 Jake Luer, jake@alogicalparadox.com, MIT Licensed, https://github.com/chaijs/deep-eql
- return obj !== 0 || 1 / obj === 1 / ref; // -0 / +0
- }
-
- return obj !== obj && ref !== ref; // NaN
- }
-
- seen = seen || [];
- if (seen.indexOf(obj) !== -1) {
- return true; // If previous comparison failed, it would have stopped execution
- }
-
- seen.push(obj);
-
- if (Array.isArray(obj)) {
- if (!Array.isArray(ref)) {
- return false;
- }
-
- if (!options.part && obj.length !== ref.length) {
- return false;
- }
-
- for (var i = 0, il = obj.length; i < il; ++i) {
- if (options.part) {
- var found = false;
- for (var r = 0, rl = ref.length; r < rl; ++r) {
- if (exports.deepEqual(obj[i], ref[r], options, seen)) {
- found = true;
- break;
- }
- }
-
- return found;
- }
-
- if (!exports.deepEqual(obj[i], ref[i], options, seen)) {
- return false;
- }
- }
-
- return true;
- }
-
- if (Buffer.isBuffer(obj)) {
- if (!Buffer.isBuffer(ref)) {
- return false;
- }
-
- if (obj.length !== ref.length) {
- return false;
- }
-
- for (var j = 0, jl = obj.length; j < jl; ++j) {
- if (obj[j] !== ref[j]) {
- return false;
- }
- }
-
- return true;
- }
-
- if (obj instanceof Date) {
- return (ref instanceof Date && obj.getTime() === ref.getTime());
- }
-
- if (obj instanceof RegExp) {
- return (ref instanceof RegExp && obj.toString() === ref.toString());
- }
-
- if (options.prototype) {
- if (Object.getPrototypeOf(obj) !== Object.getPrototypeOf(ref)) {
- return false;
- }
- }
-
- var keys = Object.getOwnPropertyNames(obj);
-
- if (!options.part && keys.length !== Object.getOwnPropertyNames(ref).length) {
- return false;
- }
-
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var descriptor = Object.getOwnPropertyDescriptor(obj, key);
- if (descriptor.get) {
- if (!exports.deepEqual(descriptor, Object.getOwnPropertyDescriptor(ref, key), options, seen)) {
- return false;
- }
- }
- else if (!exports.deepEqual(obj[key], ref[key], options, seen)) {
- return false;
- }
- }
-
- return true;
-};
-
-
-// Remove duplicate items from array
-
-exports.unique = function (array, key) {
-
- var index = {};
- var result = [];
-
- for (var i = 0, il = array.length; i < il; ++i) {
- var id = (key ? array[i][key] : array[i]);
- if (index[id] !== true) {
-
- result.push(array[i]);
- index[id] = true;
- }
- }
-
- return result;
-};
-
-
-// Convert array into object
-
-exports.mapToObject = function (array, key) {
-
- if (!array) {
- return null;
- }
-
- var obj = {};
- for (var i = 0, il = array.length; i < il; ++i) {
- if (key) {
- if (array[i][key]) {
- obj[array[i][key]] = true;
- }
- }
- else {
- obj[array[i]] = true;
- }
- }
-
- return obj;
-};
-
-
-// Find the common unique items in two arrays
-
-exports.intersect = function (array1, array2, justFirst) {
-
- if (!array1 || !array2) {
- return [];
- }
-
- var common = [];
- var hash = (Array.isArray(array1) ? exports.mapToObject(array1) : array1);
- var found = {};
- for (var i = 0, il = array2.length; i < il; ++i) {
- if (hash[array2[i]] && !found[array2[i]]) {
- if (justFirst) {
- return array2[i];
- }
-
- common.push(array2[i]);
- found[array2[i]] = true;
- }
- }
-
- return (justFirst ? null : common);
-};
-
-
-// Test if the reference contains the values
-
-exports.contain = function (ref, values, options) {
-
- /*
- string -> string(s)
- array -> item(s)
- object -> key(s)
- object -> object (key:value)
- */
-
- var valuePairs = null;
- if (typeof ref === 'object' &&
- typeof values === 'object' &&
- !Array.isArray(ref) &&
- !Array.isArray(values)) {
-
- valuePairs = values;
- values = Object.keys(values);
- }
- else {
- values = [].concat(values);
- }
-
- options = options || {}; // deep, once, only, part
-
- exports.assert(arguments.length >= 2, 'Insufficient arguments');
- exports.assert(typeof ref === 'string' || typeof ref === 'object', 'Reference must be string or an object');
- exports.assert(values.length, 'Values array cannot be empty');
-
- var compare, compareFlags;
- if (options.deep) {
- compare = exports.deepEqual;
-
- var hasOnly = options.hasOwnProperty('only'), hasPart = options.hasOwnProperty('part');
-
- compareFlags = {
- prototype: hasOnly ? options.only : hasPart ? !options.part : false,
- part: hasOnly ? !options.only : hasPart ? options.part : true
- };
- }
- else {
- compare = function (a, b) {
-
- return a === b;
- };
- }
-
- var misses = false;
- var matches = new Array(values.length);
- for (var i = 0, il = matches.length; i < il; ++i) {
- matches[i] = 0;
- }
-
- if (typeof ref === 'string') {
- var pattern = '(';
- for (i = 0, il = values.length; i < il; ++i) {
- var value = values[i];
- exports.assert(typeof value === 'string', 'Cannot compare string reference to non-string value');
- pattern += (i ? '|' : '') + exports.escapeRegex(value);
- }
-
- var regex = new RegExp(pattern + ')', 'g');
- var leftovers = ref.replace(regex, function ($0, $1) {
-
- var index = values.indexOf($1);
- ++matches[index];
- return ''; // Remove from string
- });
-
- misses = !!leftovers;
- }
- else if (Array.isArray(ref)) {
- for (i = 0, il = ref.length; i < il; ++i) {
- for (var j = 0, jl = values.length, matched = false; j < jl && matched === false; ++j) {
- matched = compare(values[j], ref[i], compareFlags) && j;
- }
-
- if (matched !== false) {
- ++matches[matched];
- }
- else {
- misses = true;
- }
- }
- }
- else {
- var keys = Object.keys(ref);
- for (i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var pos = values.indexOf(key);
- if (pos !== -1) {
- if (valuePairs &&
- !compare(valuePairs[key], ref[key], compareFlags)) {
-
- return false;
- }
-
- ++matches[pos];
- }
- else {
- misses = true;
- }
- }
- }
-
- var result = false;
- for (i = 0, il = matches.length; i < il; ++i) {
- result = result || !!matches[i];
- if ((options.once && matches[i] > 1) ||
- (!options.part && !matches[i])) {
-
- return false;
- }
- }
-
- if (options.only &&
- misses) {
-
- return false;
- }
-
- return result;
-};
-
-
-// Flatten array
-
-exports.flatten = function (array, target) {
-
- var result = target || [];
-
- for (var i = 0, il = array.length; i < il; ++i) {
- if (Array.isArray(array[i])) {
- exports.flatten(array[i], result);
- }
- else {
- result.push(array[i]);
- }
- }
-
- return result;
-};
-
-
-// Convert an object key chain string ('a.b.c') to reference (object[a][b][c])
-
-exports.reach = function (obj, chain, options) {
-
- options = options || {};
- if (typeof options === 'string') {
- options = { separator: options };
- }
-
- var path = chain.split(options.separator || '.');
- var ref = obj;
- for (var i = 0, il = path.length; i < il; ++i) {
- var key = path[i];
- if (key[0] === '-' && Array.isArray(ref)) {
- key = key.slice(1, key.length);
- key = ref.length - key;
- }
-
- if (!ref ||
- !ref.hasOwnProperty(key) ||
- (typeof ref !== 'object' && options.functions === false)) { // Only object and function can have properties
-
- exports.assert(!options.strict || i + 1 === il, 'Missing segment', key, 'in reach path ', chain);
- exports.assert(typeof ref === 'object' || options.functions === true || typeof ref !== 'function', 'Invalid segment', key, 'in reach path ', chain);
- ref = options.default;
- break;
- }
-
- ref = ref[key];
- }
-
- return ref;
-};
-
-
-exports.reachTemplate = function (obj, template, options) {
-
- return template.replace(/{([^}]+)}/g, function ($0, chain) {
-
- var value = exports.reach(obj, chain, options);
- return (value === undefined || value === null ? '' : value);
- });
-};
-
-
-exports.formatStack = function (stack) {
-
- var trace = [];
- for (var i = 0, il = stack.length; i < il; ++i) {
- var item = stack[i];
- trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]);
- }
-
- return trace;
-};
-
-
-exports.formatTrace = function (trace) {
-
- var display = [];
-
- for (var i = 0, il = trace.length; i < il; ++i) {
- var row = trace[i];
- display.push((row[4] ? 'new ' : '') + row[3] + ' (' + row[0] + ':' + row[1] + ':' + row[2] + ')');
- }
-
- return display;
-};
-
-
-exports.callStack = function (slice) {
-
- // http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
-
- var v8 = Error.prepareStackTrace;
- Error.prepareStackTrace = function (err, stack) {
-
- return stack;
- };
-
- var capture = {};
- Error.captureStackTrace(capture, arguments.callee); /*eslint no-caller:0 */
- var stack = capture.stack;
-
- Error.prepareStackTrace = v8;
-
- var trace = exports.formatStack(stack);
-
- if (slice) {
- return trace.slice(slice);
- }
-
- return trace;
-};
-
-
-exports.displayStack = function (slice) {
-
- var trace = exports.callStack(slice === undefined ? 1 : slice + 1);
-
- return exports.formatTrace(trace);
-};
-
-
-exports.abortThrow = false;
-
-
-exports.abort = function (message, hideStack) {
-
- if (process.env.NODE_ENV === 'test' || exports.abortThrow === true) {
- throw new Error(message || 'Unknown error');
- }
-
- var stack = '';
- if (!hideStack) {
- stack = exports.displayStack(1).join('\n\t');
- }
- console.log('ABORT: ' + message + '\n\t' + stack);
- process.exit(1);
-};
-
-
-exports.assert = function (condition /*, msg1, msg2, msg3 */) {
-
- if (condition) {
- return;
- }
-
- if (arguments.length === 2 && arguments[1] instanceof Error) {
- throw arguments[1];
- }
-
- var msgs = [];
- for (var i = 1, il = arguments.length; i < il; ++i) {
- if (arguments[i] !== '') {
- msgs.push(arguments[i]); // Avoids Array.slice arguments leak, allowing for V8 optimizations
- }
- }
-
- msgs = msgs.map(function (msg) {
-
- return typeof msg === 'string' ? msg : msg instanceof Error ? msg.message : exports.stringify(msg);
- });
- throw new Error(msgs.join(' ') || 'Unknown error');
-};
-
-
-exports.Timer = function () {
-
- this.ts = 0;
- this.reset();
-};
-
-
-exports.Timer.prototype.reset = function () {
-
- this.ts = Date.now();
-};
-
-
-exports.Timer.prototype.elapsed = function () {
-
- return Date.now() - this.ts;
-};
-
-
-exports.Bench = function () {
-
- this.ts = 0;
- this.reset();
-};
-
-
-exports.Bench.prototype.reset = function () {
-
- this.ts = exports.Bench.now();
-};
-
-
-exports.Bench.prototype.elapsed = function () {
-
- return exports.Bench.now() - this.ts;
-};
-
-
-exports.Bench.now = function () {
-
- var ts = process.hrtime();
- return (ts[0] * 1e3) + (ts[1] / 1e6);
-};
-
-
-// Escape string for Regex construction
-
-exports.escapeRegex = function (string) {
-
- // Escape ^$.*+-?=!:|\/()[]{},
- return string.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, '\\$&');
-};
-
-
-// Base64url (RFC 4648) encode
-
-exports.base64urlEncode = function (value, encoding) {
-
- var buf = (Buffer.isBuffer(value) ? value : new Buffer(value, encoding || 'binary'));
- return buf.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, '');
-};
-
-
-// Base64url (RFC 4648) decode
-
-exports.base64urlDecode = function (value, encoding) {
-
- if (value &&
- !/^[\w\-]*$/.test(value)) {
-
- return new Error('Invalid character');
- }
-
- try {
- var buf = new Buffer(value, 'base64');
- return (encoding === 'buffer' ? buf : buf.toString(encoding || 'binary'));
- }
- catch (err) {
- return err;
- }
-};
-
-
-// Escape attribute value for use in HTTP header
-
-exports.escapeHeaderAttribute = function (attribute) {
-
- // Allowed value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \, "
-
- exports.assert(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(attribute), 'Bad attribute value (' + attribute + ')');
-
- return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); // Escape quotes and slash
-};
-
-
-exports.escapeHtml = function (string) {
-
- return Escape.escapeHtml(string);
-};
-
-
-exports.escapeJavaScript = function (string) {
-
- return Escape.escapeJavaScript(string);
-};
-
-
-exports.nextTick = function (callback) {
-
- return function () {
-
- var args = arguments;
- process.nextTick(function () {
-
- callback.apply(null, args);
- });
- };
-};
-
-
-exports.once = function (method) {
-
- if (method._hoekOnce) {
- return method;
- }
-
- var once = false;
- var wrapped = function () {
-
- if (!once) {
- once = true;
- method.apply(null, arguments);
- }
- };
-
- wrapped._hoekOnce = true;
-
- return wrapped;
-};
-
-
-exports.isAbsolutePath = function (path, platform) {
-
- if (!path) {
- return false;
- }
-
- if (Path.isAbsolute) { // node >= 0.11
- return Path.isAbsolute(path);
- }
-
- platform = platform || process.platform;
-
- // Unix
-
- if (platform !== 'win32') {
- return path[0] === '/';
- }
-
- // Windows
-
- return !!/^(?:[a-zA-Z]:[\\\/])|(?:[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/])/.test(path); // C:\ or \\something\something
-};
-
-
-exports.isInteger = function (value) {
-
- return (typeof value === 'number' &&
- parseFloat(value) === parseInt(value, 10) &&
- !isNaN(value));
-};
-
-
-exports.ignore = function () { };
-
-
-exports.inherits = Util.inherits;
-
-
-exports.format = Util.format;
-
-
-exports.transform = function (source, transform, options) {
-
- exports.assert(source === null || source === undefined || typeof source === 'object', 'Invalid source object: must be null, undefined, or an object');
-
- var result = {};
- var keys = Object.keys(transform);
-
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var path = key.split('.');
- var sourcePath = transform[key];
-
- exports.assert(typeof sourcePath === 'string', 'All mappings must be "." delineated strings');
-
- var segment;
- var res = result;
-
- while (path.length > 1) {
- segment = path.shift();
- if (!res[segment]) {
- res[segment] = {};
- }
- res = res[segment];
- }
- segment = path.shift();
- res[segment] = exports.reach(source, sourcePath, options);
- }
-
- return result;
-};
-
-
-exports.uniqueFilename = function (path, extension) {
-
- if (extension) {
- extension = extension[0] !== '.' ? '.' + extension : extension;
- }
- else {
- extension = '';
- }
-
- path = Path.resolve(path);
- var name = [Date.now(), process.pid, Crypto.randomBytes(8).toString('hex')].join('-') + extension;
- return Path.join(path, name);
-};
-
-
-exports.stringify = function () {
-
- try {
- return JSON.stringify.apply(null, arguments);
- }
- catch (err) {
- return '[Cannot display object: ' + err.message + ']';
- }
-};
-
-
-exports.shallow = function (source) {
-
- var target = {};
- var keys = Object.keys(source);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- target[key] = source[key];
- }
-
- return target;
-};
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/package.json b/node_modules/request/node_modules/hawk/node_modules/hoek/package.json
deleted file mode 100644
index 716fe27c0..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "hoek",
- "description": "General purpose node utilities",
- "version": "2.14.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/hapijs/hoek.git"
- },
- "main": "index",
- "keywords": [
- "utilities"
- ],
- "engines": {
- "node": ">=0.8.0"
- },
- "dependencies": {},
- "devDependencies": {
- "code": "1.x.x",
- "lab": "5.x.x"
- },
- "scripts": {
- "test": "make test-cov"
- },
- "license": "BSD-3-Clause",
- "gitHead": "e80875a516f4b0eaa757ac4814c4510eebdcf589",
- "bugs": {
- "url": "https://github.com/hapijs/hoek/issues"
- },
- "homepage": "https://github.com/hapijs/hoek#readme",
- "_id": "hoek@2.14.0",
- "_shasum": "81211691f52a5a835ae49edbf1e89c9003476aa4",
- "_from": "hoek@>=2.0.0 <3.0.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "0.12.2",
- "_npmUser": {
- "name": "nlf",
- "email": "quitlahok@gmail.com"
- },
- "dist": {
- "shasum": "81211691f52a5a835ae49edbf1e89c9003476aa4",
- "tarball": "http://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz"
- },
- "maintainers": [
- {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- },
- {
- "name": "wyatt",
- "email": "wpreul@gmail.com"
- },
- {
- "name": "nlf",
- "email": "quitlahok@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js b/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js
deleted file mode 100755
index a5d048f7b..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js
+++ /dev/null
@@ -1,88 +0,0 @@
-// Load modules
-
-var Code = require('code');
-var Hoek = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('escapeJavaScript()', function () {
-
- it('encodes / characters', function (done) {
-
- var encoded = Hoek.escapeJavaScript('<script>alert(1)</script>');
- expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e');
- done();
- });
-
- it('encodes \' characters', function (done) {
-
- var encoded = Hoek.escapeJavaScript('something(\'param\')');
- expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29');
- done();
- });
-
- it('encodes large unicode characters with the correct padding', function (done) {
-
- var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000));
- expect(encoded).to.equal('\\u0500\\u1000');
- done();
- });
-
- it('doesn\'t throw an exception when passed null', function (done) {
-
- var encoded = Hoek.escapeJavaScript(null);
- expect(encoded).to.equal('');
- done();
- });
-});
-
-describe('escapeHtml()', function () {
-
- it('encodes / characters', function (done) {
-
- var encoded = Hoek.escapeHtml('<script>alert(1)</script>');
- expect(encoded).to.equal('&lt;script&gt;alert&#x28;1&#x29;&lt;&#x2f;script&gt;');
- done();
- });
-
- it('encodes < and > as named characters', function (done) {
-
- var encoded = Hoek.escapeHtml('<script><>');
- expect(encoded).to.equal('&lt;script&gt;&lt;&gt;');
- done();
- });
-
- it('encodes large unicode characters', function (done) {
-
- var encoded = Hoek.escapeHtml(String.fromCharCode(500) + String.fromCharCode(1000));
- expect(encoded).to.equal('&#500;&#1000;');
- done();
- });
-
- it('doesn\'t throw an exception when passed null', function (done) {
-
- var encoded = Hoek.escapeHtml(null);
- expect(encoded).to.equal('');
- done();
- });
-
- it('encodes {} characters', function (done) {
-
- var encoded = Hoek.escapeHtml('{}');
- expect(encoded).to.equal('&#x7b;&#x7d;');
- done();
- });
-});
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js b/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js
deleted file mode 100755
index 3261ae8c6..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js
+++ /dev/null
@@ -1,2425 +0,0 @@
-// Load modules
-
-var Fs = require('fs');
-var Path = require('path');
-var Code = require('code');
-var Hoek = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-var nestedObj = {
- v: [7, 8, 9],
- w: /^something$/igm,
- x: {
- a: [1, 2, 3],
- b: 123456,
- c: new Date(),
- d: /hi/igm,
- e: /hello/
- },
- y: 'y',
- z: new Date(1378775452757)
-};
-
-var dupsArray = [nestedObj, { z: 'z' }, nestedObj];
-var reducedDupsArray = [nestedObj, { z: 'z' }];
-
-describe('clone()', function () {
-
- it('clones a nested object', function (done) {
-
- var a = nestedObj;
- var b = Hoek.clone(a);
-
- expect(a).to.deep.equal(b);
- expect(a.z.getTime()).to.equal(b.z.getTime());
- done();
- });
-
- it('clones a null object', function (done) {
-
- var b = Hoek.clone(null);
-
- expect(b).to.equal(null);
- done();
- });
-
- it('should not convert undefined properties to null', function (done) {
-
- var obj = { something: undefined };
- var b = Hoek.clone(obj);
-
- expect(typeof b.something).to.equal('undefined');
- done();
- });
-
- it('should not throw on circular reference', function (done) {
-
- var a = {};
- a.x = a;
-
- var test = function () {
-
- var b = Hoek.clone(a);
- };
-
- expect(test).to.not.throw();
- done();
- });
-
- it('clones circular reference', function (done) {
-
- var x = {
- 'z': new Date()
- };
- x.y = x;
-
- var b = Hoek.clone(x);
- expect(Object.keys(b.y)).to.deep.equal(Object.keys(x));
- expect(b.z).to.not.equal(x.z);
- expect(b.y).to.not.equal(x.y);
- expect(b.y.z).to.not.equal(x.y.z);
- expect(b.y).to.equal(b);
- expect(b.y.y.y.y).to.equal(b);
- done();
- });
-
- it('clones an object with a null prototype', function (done) {
-
- var obj = Object.create(null);
- var b = Hoek.clone(obj);
-
- expect(b).to.deep.equal(obj);
- done();
- });
-
- it('clones deeply nested object', function (done) {
-
- var a = {
- x: {
- y: {
- a: [1, 2, 3],
- b: 123456,
- c: new Date(),
- d: /hi/igm,
- e: /hello/
- }
- }
- };
-
- var b = Hoek.clone(a);
-
- expect(a).to.deep.equal(b);
- expect(a.x.y.c.getTime()).to.equal(b.x.y.c.getTime());
- done();
- });
-
- it('clones arrays', function (done) {
-
- var a = [1, 2, 3];
-
- var b = Hoek.clone(a);
-
- expect(a).to.deep.equal(b);
- done();
- });
-
- it('performs actual copy for shallow keys (no pass by reference)', function (done) {
-
- var x = Hoek.clone(nestedObj);
- var y = Hoek.clone(nestedObj);
-
- // Date
- expect(x.z).to.not.equal(nestedObj.z);
- expect(x.z).to.not.equal(y.z);
-
- // Regex
- expect(x.w).to.not.equal(nestedObj.w);
- expect(x.w).to.not.equal(y.w);
-
- // Array
- expect(x.v).to.not.equal(nestedObj.v);
- expect(x.v).to.not.equal(y.v);
-
- // Immutable(s)
- x.y = 5;
- expect(x.y).to.not.equal(nestedObj.y);
- expect(x.y).to.not.equal(y.y);
-
- done();
- });
-
- it('performs actual copy for deep keys (no pass by reference)', function (done) {
-
- var x = Hoek.clone(nestedObj);
- var y = Hoek.clone(nestedObj);
-
- expect(x.x.c).to.not.equal(nestedObj.x.c);
- expect(x.x.c).to.not.equal(y.x.c);
-
- expect(x.x.c.getTime()).to.equal(nestedObj.x.c.getTime());
- expect(x.x.c.getTime()).to.equal(y.x.c.getTime());
- done();
- });
-
- it('copies functions with properties', function (done) {
-
- var a = {
- x: function () {
-
- return 1;
- },
- y: {}
- };
- a.x.z = 'string in function';
- a.x.v = function () {
-
- return 2;
- };
- a.y.u = a.x;
-
- var b = Hoek.clone(a);
- expect(b.x()).to.equal(1);
- expect(b.x.v()).to.equal(2);
- expect(b.y.u).to.equal(b.x);
- expect(b.x.z).to.equal('string in function');
- done();
- });
-
- it('should copy a buffer', function (done) {
-
- var tls = {
- key: new Buffer([1, 2, 3, 4, 5]),
- cert: new Buffer([1, 2, 3, 4, 5, 6, 10])
- };
-
- var copiedTls = Hoek.clone(tls);
- expect(Buffer.isBuffer(copiedTls.key)).to.equal(true);
- expect(JSON.stringify(copiedTls.key)).to.equal(JSON.stringify(tls.key));
- expect(Buffer.isBuffer(copiedTls.cert)).to.equal(true);
- expect(JSON.stringify(copiedTls.cert)).to.equal(JSON.stringify(tls.cert));
- done();
- });
-
- it('clones an object with a prototype', function (done) {
-
- var Obj = function () {
-
- this.a = 5;
- };
-
- Obj.prototype.b = function () {
-
- return 'c';
- };
-
- var a = new Obj();
- var b = Hoek.clone(a);
-
- expect(b.a).to.equal(5);
- expect(b.b()).to.equal('c');
- expect(a).to.deep.equal(b);
- done();
- });
-
- it('reuses cloned Date object', function (done) {
-
- var obj = {
- a: new Date()
- };
-
- obj.b = obj.a;
-
- var copy = Hoek.clone(obj);
- expect(copy.a).to.equal(copy.b);
- done();
- });
-
- it('shallow copies an object with a prototype and isImmutable flag', function (done) {
-
- var Obj = function () {
-
- this.value = 5;
- };
-
- Obj.prototype.b = function () {
-
- return 'c';
- };
-
- Obj.prototype.isImmutable = true;
-
- var obj = {
- a: new Obj()
- };
-
- var copy = Hoek.clone(obj);
-
- expect(obj.a.value).to.equal(5);
- expect(copy.a.value).to.equal(5);
- expect(copy.a.b()).to.equal('c');
- expect(obj.a).to.equal(copy.a);
- done();
- });
-
- it('clones an object with property getter without executing it', function (done) {
-
- var obj = {};
- var value = 1;
- var execCount = 0;
-
- Object.defineProperty(obj, 'test', {
- enumerable: true,
- configurable: true,
- get: function () {
-
- ++execCount;
- return value;
- }
- });
-
- var copy = Hoek.clone(obj);
- expect(execCount).to.equal(0);
- expect(copy.test).to.equal(1);
- expect(execCount).to.equal(1);
- done();
- });
-
- it('clones an object with property getter and setter', function (done) {
-
- var obj = {
- _test: 0
- };
-
- Object.defineProperty(obj, 'test', {
- enumerable: true,
- configurable: true,
- get: function () {
-
- return this._test;
- },
- set: function (value) {
-
- this._test = value - 1;
- }
- });
-
- var copy = Hoek.clone(obj);
- expect(copy.test).to.equal(0);
- copy.test = 5;
- expect(copy.test).to.equal(4);
- done();
- });
-
- it('clones an object with only property setter', function (done) {
-
- var obj = {
- _test: 0
- };
-
- Object.defineProperty(obj, 'test', {
- enumerable: true,
- configurable: true,
- set: function (value) {
-
- this._test = value - 1;
- }
- });
-
- var copy = Hoek.clone(obj);
- expect(copy._test).to.equal(0);
- copy.test = 5;
- expect(copy._test).to.equal(4);
- done();
- });
-
- it('clones an object with non-enumerable properties', function (done) {
-
- var obj = {
- _test: 0
- };
-
- Object.defineProperty(obj, 'test', {
- enumerable: false,
- configurable: true,
- set: function (value) {
-
- this._test = value - 1;
- }
- });
-
- var copy = Hoek.clone(obj);
- expect(copy._test).to.equal(0);
- copy.test = 5;
- expect(copy._test).to.equal(4);
- done();
- });
-});
-
-describe('merge()', function () {
-
- it('deep copies source items', function (done) {
-
- var target = {
- b: 3,
- d: []
- };
-
- var source = {
- c: {
- d: 1
- },
- d: [{ e: 1 }]
- };
-
- Hoek.merge(target, source);
- expect(target.c).to.not.equal(source.c);
- expect(target.c).to.deep.equal(source.c);
- expect(target.d).to.not.equal(source.d);
- expect(target.d[0]).to.not.equal(source.d[0]);
- expect(target.d).to.deep.equal(source.d);
- done();
- });
-
- it('merges array over an object', function (done) {
-
- var a = {
- x: ['n', 'm']
- };
-
- var b = {
- x: {
- n: '1',
- m: '2'
- }
- };
-
- Hoek.merge(b, a);
- expect(a.x[0]).to.equal('n');
- expect(a.x.n).to.not.exist();
- done();
- });
-
- it('merges object over an array', function (done) {
-
- var a = {
- x: ['n', 'm']
- };
-
- var b = {
- x: {
- n: '1',
- m: '2'
- }
- };
-
- Hoek.merge(a, b);
- expect(a.x.n).to.equal('1');
- expect(a.x[0]).to.not.exist();
- done();
- });
-
- it('does not throw if source is null', function (done) {
-
- var a = {};
- var b = null;
- var c = null;
-
- expect(function () {
-
- c = Hoek.merge(a, b);
- }).to.not.throw();
-
- expect(c).to.equal(a);
- done();
- });
-
- it('does not throw if source is undefined', function (done) {
-
- var a = {};
- var b;
- var c = null;
-
- expect(function () {
-
- c = Hoek.merge(a, b);
- }).to.not.throw();
-
- expect(c).to.equal(a);
- done();
- });
-
- it('throws if source is not an object', function (done) {
-
- expect(function () {
-
- var a = {};
- var b = 0;
-
- Hoek.merge(a, b);
- }).to.throw('Invalid source value: must be null, undefined, or an object');
- done();
- });
-
- it('throws if target is not an object', function (done) {
-
- expect(function () {
-
- var a = 0;
- var b = {};
-
- Hoek.merge(a, b);
- }).to.throw('Invalid target value: must be an object');
- done();
- });
-
- it('throws if target is not an array and source is', function (done) {
-
- expect(function () {
-
- var a = {};
- var b = [1, 2];
-
- Hoek.merge(a, b);
- }).to.throw('Cannot merge array onto an object');
- done();
- });
-
- it('returns the same object when merging arrays', function (done) {
-
- var a = [];
- var b = [1, 2];
-
- expect(Hoek.merge(a, b)).to.equal(a);
- done();
- });
-
- it('combines an empty object with a non-empty object', function (done) {
-
- var a = {};
- var b = nestedObj;
-
- var c = Hoek.merge(a, b);
- expect(a).to.deep.equal(b);
- expect(c).to.deep.equal(b);
- done();
- });
-
- it('overrides values in target', function (done) {
-
- var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' };
- var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' };
-
- var c = Hoek.merge(a, b);
- expect(c.x).to.equal(null);
- expect(c.y).to.equal(2);
- expect(c.z).to.equal(4);
- expect(c.v).to.equal(0);
- expect(c.m).to.equal('123');
- expect(c.t).to.deep.equal({ u: 6 });
- done();
- });
-
- it('overrides values in target (flip)', function (done) {
-
- var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' };
- var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' };
-
- var d = Hoek.merge(b, a);
- expect(d.x).to.equal(1);
- expect(d.y).to.equal(2);
- expect(d.z).to.equal(3);
- expect(d.v).to.equal(5);
- expect(d.m).to.equal('abc');
- expect(d.t).to.deep.equal('test');
- done();
- });
-
- it('retains Date properties', function (done) {
-
- var a = { x: new Date(1378776452757) };
-
- var b = Hoek.merge({}, a);
- expect(a.x.getTime()).to.equal(b.x.getTime());
- done();
- });
-
- it('retains Date properties when merging keys', function (done) {
-
- var a = { x: new Date(1378776452757) };
-
- var b = Hoek.merge({ x: {} }, a);
- expect(a.x.getTime()).to.equal(b.x.getTime());
- done();
- });
-
- it('overrides Buffer', function (done) {
-
- var a = { x: new Buffer('abc') };
-
- var b = Hoek.merge({ x: {} }, a);
- expect(a.x.toString()).to.equal('abc');
- done();
- });
-});
-
-describe('applyToDefaults()', function () {
-
- var defaults = {
- a: 1,
- b: 2,
- c: {
- d: 3,
- e: [5, 6]
- },
- f: 6,
- g: 'test'
- };
-
- it('throws when target is null', function (done) {
-
- expect(function () {
-
- Hoek.applyToDefaults(null, {});
- }).to.throw('Invalid defaults value: must be an object');
- done();
- });
-
- it('returns null if options is false', function (done) {
-
- var result = Hoek.applyToDefaults(defaults, false);
- expect(result).to.equal(null);
- done();
- });
-
- it('returns null if options is null', function (done) {
-
- var result = Hoek.applyToDefaults(defaults, null);
- expect(result).to.equal(null);
- done();
- });
-
- it('returns null if options is undefined', function (done) {
-
- var result = Hoek.applyToDefaults(defaults, undefined);
- expect(result).to.equal(null);
- done();
- });
-
- it('returns a copy of defaults if options is true', function (done) {
-
- var result = Hoek.applyToDefaults(defaults, true);
- expect(result).to.deep.equal(defaults);
- done();
- });
-
- it('applies object to defaults', function (done) {
-
- var obj = {
- a: null,
- c: {
- e: [4]
- },
- f: 0,
- g: {
- h: 5
- }
- };
-
- var result = Hoek.applyToDefaults(defaults, obj);
- expect(result.c.e).to.deep.equal([4]);
- expect(result.a).to.equal(1);
- expect(result.b).to.equal(2);
- expect(result.f).to.equal(0);
- expect(result.g).to.deep.equal({ h: 5 });
- done();
- });
-
- it('applies object to defaults with null', function (done) {
-
- var obj = {
- a: null,
- c: {
- e: [4]
- },
- f: 0,
- g: {
- h: 5
- }
- };
-
- var result = Hoek.applyToDefaults(defaults, obj, true);
- expect(result.c.e).to.deep.equal([4]);
- expect(result.a).to.equal(null);
- expect(result.b).to.equal(2);
- expect(result.f).to.equal(0);
- expect(result.g).to.deep.equal({ h: 5 });
- done();
- });
-});
-
-describe('cloneWithShallow()', function () {
-
- it('deep clones except for listed keys', function (done) {
-
- var source = {
- a: {
- b: 5
- },
- c: {
- d: 6
- }
- };
-
- var copy = Hoek.cloneWithShallow(source, ['c']);
- expect(copy).to.deep.equal(source);
- expect(copy).to.not.equal(source);
- expect(copy.a).to.not.equal(source.a);
- expect(copy.b).to.equal(source.b);
- done();
- });
-
- it('returns immutable value', function (done) {
-
- expect(Hoek.cloneWithShallow(5)).to.equal(5);
- done();
- });
-
- it('returns null value', function (done) {
-
- expect(Hoek.cloneWithShallow(null)).to.equal(null);
- done();
- });
-
- it('returns undefined value', function (done) {
-
- expect(Hoek.cloneWithShallow(undefined)).to.equal(undefined);
- done();
- });
-
- it('deep clones except for listed keys (including missing keys)', function (done) {
-
- var source = {
- a: {
- b: 5
- },
- c: {
- d: 6
- }
- };
-
- var copy = Hoek.cloneWithShallow(source, ['c', 'v']);
- expect(copy).to.deep.equal(source);
- expect(copy).to.not.equal(source);
- expect(copy.a).to.not.equal(source.a);
- expect(copy.b).to.equal(source.b);
- done();
- });
-});
-
-describe('applyToDefaultsWithShallow()', function () {
-
- it('shallow copies the listed keys from options without merging', function (done) {
-
- var defaults = {
- a: {
- b: 5,
- e: 3
- },
- c: {
- d: 7,
- g: 1
- }
- };
-
- var options = {
- a: {
- b: 4
- },
- c: {
- d: 6,
- f: 7
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['a']);
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { d: 6, g: 1, f: 7 } });
- expect(merged.a).to.equal(options.a);
- expect(merged.a).to.not.equal(defaults.a);
- expect(merged.c).to.not.equal(options.c);
- expect(merged.c).to.not.equal(defaults.c);
- done();
- });
-
- it('shallow copies the nested keys (override)', function (done) {
-
- var defaults = {
- a: {
- b: 5
- },
- c: {
- d: 7,
- g: 1
- }
- };
-
- var options = {
- a: {
- b: 4
- },
- c: {
- d: 6,
- g: {
- h: 8
- }
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g']);
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { d: 6, g: { h: 8 } } });
- expect(merged.c.g).to.equal(options.c.g);
- done();
- });
-
- it('shallow copies the nested keys (missing)', function (done) {
-
- var defaults = {
- a: {
- b: 5
- }
- };
-
- var options = {
- a: {
- b: 4
- },
- c: {
- g: {
- h: 8
- }
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g']);
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { h: 8 } } });
- expect(merged.c.g).to.equal(options.c.g);
- done();
- });
-
- it('shallow copies the nested keys (override)', function (done) {
-
- var defaults = {
- a: {
- b: 5
- },
- c: {
- g: {
- d: 7
- }
- }
- };
-
- var options = {
- a: {
- b: 4
- },
- c: {
- g: {
- h: 8
- }
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g']);
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { h: 8 } } });
- expect(merged.c.g).to.equal(options.c.g);
- done();
- });
-
- it('shallow copies the nested keys (deeper)', function (done) {
-
- var defaults = {
- a: {
- b: 5
- }
- };
-
- var options = {
- a: {
- b: 4
- },
- c: {
- g: {
- r: {
- h: 8
- }
- }
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g.r']);
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { r: { h: 8 } } } });
- expect(merged.c.g.r).to.equal(options.c.g.r);
- done();
- });
-
- it('shallow copies the nested keys (not present)', function (done) {
-
- var defaults = {
- a: {
- b: 5
- }
- };
-
- var options = {
- a: {
- b: 4
- },
- c: {
- g: {
- r: {
- h: 8
- }
- }
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['x.y']);
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { r: { h: 8 } } } });
- done();
- });
-
- it('shallow copies the listed keys in the defaults', function (done) {
-
- var defaults = {
- a: {
- b: 1
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, {}, ['a']);
- expect(merged.a).to.equal(defaults.a);
- done();
- });
-
- it('shallow copies the listed keys in the defaults (true)', function (done) {
-
- var defaults = {
- a: {
- b: 1
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, true, ['a']);
- expect(merged.a).to.equal(defaults.a);
- done();
- });
-
- it('returns null on false', function (done) {
-
- var defaults = {
- a: {
- b: 1
- }
- };
-
- var merged = Hoek.applyToDefaultsWithShallow(defaults, false, ['a']);
- expect(merged).to.equal(null);
- done();
- });
-
- it('throws on missing defaults', function (done) {
-
- expect(function () {
-
- Hoek.applyToDefaultsWithShallow(null, {}, ['a']);
- }).to.throw('Invalid defaults value: must be an object');
- done();
- });
-
- it('throws on invalid defaults', function (done) {
-
- expect(function () {
-
- Hoek.applyToDefaultsWithShallow('abc', {}, ['a']);
- }).to.throw('Invalid defaults value: must be an object');
- done();
- });
-
- it('throws on invalid options', function (done) {
-
- expect(function () {
-
- Hoek.applyToDefaultsWithShallow({}, 'abc', ['a']);
- }).to.throw('Invalid options value: must be true, falsy or an object');
- done();
- });
-
- it('throws on missing keys', function (done) {
-
- expect(function () {
-
- Hoek.applyToDefaultsWithShallow({}, true);
- }).to.throw('Invalid keys');
- done();
- });
-
- it('throws on invalid keys', function (done) {
-
- expect(function () {
-
- Hoek.applyToDefaultsWithShallow({}, true, 'a');
- }).to.throw('Invalid keys');
- done();
- });
-});
-
-describe('deepEqual()', function () {
-
- it('compares simple values', function (done) {
-
- expect(Hoek.deepEqual('x', 'x')).to.be.true();
- expect(Hoek.deepEqual('x', 'y')).to.be.false();
- expect(Hoek.deepEqual('x1', 'x')).to.be.false();
- expect(Hoek.deepEqual(-0, +0)).to.be.false();
- expect(Hoek.deepEqual(-0, -0)).to.be.true();
- expect(Hoek.deepEqual(+0, +0)).to.be.true();
- expect(Hoek.deepEqual(+0, -0)).to.be.false();
- expect(Hoek.deepEqual(1, 1)).to.be.true();
- expect(Hoek.deepEqual(0, 0)).to.be.true();
- expect(Hoek.deepEqual(-1, 1)).to.be.false();
- expect(Hoek.deepEqual(NaN, 0)).to.be.false();
- expect(Hoek.deepEqual(NaN, NaN)).to.be.true();
- done();
- });
-
- it('compares different types', function (done) {
-
- expect(Hoek.deepEqual([], 5)).to.be.false();
- expect(Hoek.deepEqual(5, [])).to.be.false();
- expect(Hoek.deepEqual({}, null)).to.be.false();
- expect(Hoek.deepEqual(null, {})).to.be.false();
- expect(Hoek.deepEqual('abc', {})).to.be.false();
- expect(Hoek.deepEqual({}, 'abc')).to.be.false();
- done();
- });
-
- it('compares empty structures', function (done) {
-
- expect(Hoek.deepEqual([], [])).to.be.true();
- expect(Hoek.deepEqual({}, {})).to.be.true();
- expect(Hoek.deepEqual([], {})).to.be.false();
- done();
- });
-
- it('compares empty arguments object', function (done) {
-
- var compare = function () {
-
- expect(Hoek.deepEqual([], arguments)).to.be.false();
- };
-
- compare();
- done();
- });
-
- it('compares empty arguments objects', function (done) {
-
- var compare = function () {
-
- var arg1 = arguments;
-
- var inner = function () {
-
- expect(Hoek.deepEqual(arg1, arguments)).to.be.false(); // callee is not the same
- };
-
- inner();
- };
-
- compare();
- done();
- });
-
- it('compares dates', function (done) {
-
- expect(Hoek.deepEqual(new Date(2015, 1, 1), new Date(2015, 1, 1))).to.be.true();
- expect(Hoek.deepEqual(new Date(100), new Date(101))).to.be.false();
- expect(Hoek.deepEqual(new Date(), {})).to.be.false();
- done();
- });
-
- it('compares regular expressions', function (done) {
-
- expect(Hoek.deepEqual(/\s/, new RegExp('\\\s'))).to.be.true();
- expect(Hoek.deepEqual(/\s/g, /\s/g)).to.be.true();
- expect(Hoek.deepEqual(/a/, {})).to.be.false();
- expect(Hoek.deepEqual(/\s/g, /\s/i)).to.be.false();
- expect(Hoek.deepEqual(/a/g, /b/g)).to.be.false();
- done();
- });
-
- it('compares arrays', function (done) {
-
- expect(Hoek.deepEqual([[1]], [[1]])).to.be.true();
- expect(Hoek.deepEqual([1, 2, 3], [1, 2, 3])).to.be.true();
- expect(Hoek.deepEqual([1, 2, 3], [1, 3, 2])).to.be.false();
- expect(Hoek.deepEqual([1, 2, 3], [1, 2])).to.be.false();
- expect(Hoek.deepEqual([1], [1])).to.be.true();
- done();
- });
-
- it('compares buffers', function (done) {
-
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), new Buffer([1, 2, 3]))).to.be.true();
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), new Buffer([1, 3, 2]))).to.be.false();
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), new Buffer([1, 2]))).to.be.false();
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), {})).to.be.false();
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), [1, 2, 3])).to.be.false();
- done();
- });
-
- it('compares objects', function (done) {
-
- expect(Hoek.deepEqual({ a: 1, b: 2, c: 3 }, { a: 1, b: 2, c: 3 })).to.be.true();
- expect(Hoek.deepEqual({ foo: 'bar' }, { foo: 'baz' })).to.be.false();
- expect(Hoek.deepEqual({ foo: { bar: 'foo' } }, { foo: { bar: 'baz' } })).to.be.false();
- done();
- });
-
- it('handles circular dependency', function (done) {
-
- var a = {};
- a.x = a;
-
- var b = Hoek.clone(a);
- expect(Hoek.deepEqual(a, b)).to.be.true();
- done();
- });
-
- it('compares an object with property getter without executing it', function (done) {
-
- var obj = {};
- var value = 1;
- var execCount = 0;
-
- Object.defineProperty(obj, 'test', {
- enumerable: true,
- configurable: true,
- get: function () {
-
- ++execCount;
- return value;
- }
- });
-
- var copy = Hoek.clone(obj);
- expect(Hoek.deepEqual(obj, copy)).to.be.true();
- expect(execCount).to.equal(0);
- expect(copy.test).to.equal(1);
- expect(execCount).to.equal(1);
- done();
- });
-
- it('compares objects with property getters', function (done) {
-
- var obj = {};
- Object.defineProperty(obj, 'test', {
- enumerable: true,
- configurable: true,
- get: function () {
-
- return 1;
- }
- });
-
- var ref = {};
- Object.defineProperty(ref, 'test', {
- enumerable: true,
- configurable: true,
- get: function () {
-
- return 2;
- }
- });
-
- expect(Hoek.deepEqual(obj, ref)).to.be.false();
- done();
- });
-
- it('compares object prototypes', function (done) {
-
- var Obj = function () {
-
- this.a = 5;
- };
-
- Obj.prototype.b = function () {
-
- return this.a;
- };
-
- var Ref = function () {
-
- this.a = 5;
- };
-
- Ref.prototype.b = function () {
-
- return this.a;
- };
-
- expect(Hoek.deepEqual(new Obj(), new Ref())).to.be.false();
- expect(Hoek.deepEqual(new Obj(), new Obj())).to.be.true();
- expect(Hoek.deepEqual(new Ref(), new Ref())).to.be.true();
- done();
- });
-
- it('compares plain objects', function (done) {
-
- var a = Object.create(null);
- var b = Object.create(null);
-
- a.b = 'c';
- b.b = 'c';
-
- expect(Hoek.deepEqual(a, b)).to.be.true();
- expect(Hoek.deepEqual(a, { b: 'c' })).to.be.false();
- done();
- });
-
- it('compares an object with an empty object', function (done) {
-
- var a = { a: 1, b: 2 };
-
- expect(Hoek.deepEqual({}, a)).to.be.false();
- expect(Hoek.deepEqual(a, {})).to.be.false();
- done();
- });
-
- it('compares an object ignoring the prototype', function (done) {
-
- var a = Object.create(null);
- var b = {};
-
- expect(Hoek.deepEqual(a, b, { prototype: false })).to.be.true();
- done();
- });
-
- it('compares an object ignoring the prototype recursively', function (done) {
-
- var a = [Object.create(null)];
- var b = [{}];
-
- expect(Hoek.deepEqual(a, b, { prototype: false })).to.be.true();
- done();
- });
-});
-
-describe('unique()', function () {
-
- it('ensures uniqueness within array of objects based on subkey', function (done) {
-
- var a = Hoek.unique(dupsArray, 'x');
- expect(a).to.deep.equal(reducedDupsArray);
- done();
- });
-
- it('removes duplicated without key', function (done) {
-
- expect(Hoek.unique([1, 2, 3, 4, 2, 1, 5])).to.deep.equal([1, 2, 3, 4, 5]);
- done();
- });
-});
-
-describe('mapToObject()', function () {
-
- it('returns null on null array', function (done) {
-
- var a = Hoek.mapToObject(null);
- expect(a).to.equal(null);
- done();
- });
-
- it('converts basic array to existential object', function (done) {
-
- var keys = [1, 2, 3, 4];
- var a = Hoek.mapToObject(keys);
- for (var i in keys) {
- expect(a[keys[i]]).to.equal(true);
- }
- done();
- });
-
- it('converts array of objects to existential object', function (done) {
-
- var keys = [{ x: 1 }, { x: 2 }, { x: 3 }, { y: 4 }];
- var subkey = 'x';
- var a = Hoek.mapToObject(keys, subkey);
- expect(a).to.deep.equal({ 1: true, 2: true, 3: true });
- done();
- });
-});
-
-describe('intersect()', function () {
-
- it('returns the common objects of two arrays', function (done) {
-
- var array1 = [1, 2, 3, 4, 4, 5, 5];
- var array2 = [5, 4, 5, 6, 7];
- var common = Hoek.intersect(array1, array2);
- expect(common.length).to.equal(2);
- done();
- });
-
- it('returns just the first common object of two arrays', function (done) {
-
- var array1 = [1, 2, 3, 4, 4, 5, 5];
- var array2 = [5, 4, 5, 6, 7];
- var common = Hoek.intersect(array1, array2, true);
- expect(common).to.equal(5);
- done();
- });
-
- it('returns null when no common and returning just the first common object of two arrays', function (done) {
-
- var array1 = [1, 2, 3, 4, 4, 5, 5];
- var array2 = [6, 7];
- var common = Hoek.intersect(array1, array2, true);
- expect(common).to.equal(null);
- done();
- });
-
- it('returns an empty array if either input is null', function (done) {
-
- expect(Hoek.intersect([1], null).length).to.equal(0);
- expect(Hoek.intersect(null, [1]).length).to.equal(0);
- done();
- });
-
- it('returns the common objects of object and array', function (done) {
-
- var array1 = [1, 2, 3, 4, 4, 5, 5];
- var array2 = [5, 4, 5, 6, 7];
- var common = Hoek.intersect(Hoek.mapToObject(array1), array2);
- expect(common.length).to.equal(2);
- done();
- });
-});
-
-describe('contain()', function () {
-
- it('tests strings', function (done) {
-
- expect(Hoek.contain('abc', 'ab')).to.be.true();
- expect(Hoek.contain('abc', 'abc', { only: true })).to.be.true();
- expect(Hoek.contain('aaa', 'a', { only: true })).to.be.true();
- expect(Hoek.contain('abc', 'b', { once: true })).to.be.true();
- expect(Hoek.contain('abc', ['a', 'c'])).to.be.true();
- expect(Hoek.contain('abc', ['a', 'd'], { part: true })).to.be.true();
-
- expect(Hoek.contain('abc', 'ac')).to.be.false();
- expect(Hoek.contain('abcd', 'abc', { only: true })).to.be.false();
- expect(Hoek.contain('aab', 'a', { only: true })).to.be.false();
- expect(Hoek.contain('abb', 'b', { once: true })).to.be.false();
- expect(Hoek.contain('abc', ['a', 'd'])).to.be.false();
- expect(Hoek.contain('abc', ['ab', 'bc'])).to.be.false(); // Overlapping values not supported
- done();
- });
-
- it('tests arrays', function (done) {
-
- expect(Hoek.contain([1, 2, 3], 1)).to.be.true();
- expect(Hoek.contain([{ a: 1 }], { a: 1 }, { deep: true })).to.be.true();
- expect(Hoek.contain([1, 2, 3], [1, 2])).to.be.true();
- expect(Hoek.contain([{ a: 1 }], [{ a: 1 }], { deep: true })).to.be.true();
- expect(Hoek.contain([1, 1, 2], [1, 2], { only: true })).to.be.true();
- expect(Hoek.contain([1, 2], [1, 2], { once: true })).to.be.true();
- expect(Hoek.contain([1, 2, 3], [1, 4], { part: true })).to.be.true();
- expect(Hoek.contain([[1], [2]], [[1]], { deep: true })).to.be.true();
-
- expect(Hoek.contain([1, 2, 3], 4)).to.be.false();
- expect(Hoek.contain([{ a: 1 }], { a: 2 }, { deep: true })).to.be.false();
- expect(Hoek.contain([{ a: 1 }], { a: 1 })).to.be.false();
- expect(Hoek.contain([1, 2, 3], [4, 5])).to.be.false();
- expect(Hoek.contain([[3], [2]], [[1]])).to.be.false();
- expect(Hoek.contain([[1], [2]], [[1]])).to.be.false();
- expect(Hoek.contain([{ a: 1 }], [{ a: 2 }], { deep: true })).to.be.false();
- expect(Hoek.contain([1, 3, 2], [1, 2], { only: true })).to.be.false();
- expect(Hoek.contain([1, 2, 2], [1, 2], { once: true })).to.be.false();
- expect(Hoek.contain([0, 2, 3], [1, 4], { part: true })).to.be.false();
- done();
- });
-
- it('tests objects', function (done) {
-
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, 'a')).to.be.true();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, ['a', 'c'])).to.be.true();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, ['a', 'b', 'c'], { only: true })).to.be.true();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1 })).to.be.true();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, c: 3 })).to.be.true();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 4 }, { part: true })).to.be.true();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, b: 2, c: 3 }, { only: true })).to.be.true();
- expect(Hoek.contain({ a: [1], b: [2], c: [3] }, { a: [1], c: [3] }, { deep: true })).to.be.true();
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true })).to.be.true();
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, part: true })).to.be.true();
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, part: false })).to.be.false();
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, only: true })).to.be.false();
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, only: false })).to.be.true();
-
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, 'd')).to.be.false();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, ['a', 'd'])).to.be.false();
- expect(Hoek.contain({ a: 1, b: 2, c: 3, d: 4 }, ['a', 'b', 'c'], { only: true })).to.be.false();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 2 })).to.be.false();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 2, b: 2 }, { part: true })).to.be.false(); // part does not ignore bad value
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 3 })).to.be.false();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 4 })).to.be.false();
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 }, { only: true })).to.be.false();
- expect(Hoek.contain({ a: [1], b: [2], c: [3] }, { a: [1], c: [3] })).to.be.false();
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } })).to.be.false();
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true })).to.be.true();
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, only: true })).to.be.false();
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, only: false })).to.be.true();
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, part: true })).to.be.true();
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, part: false })).to.be.false();
-
- // Getter check
- var Foo = function (bar) {
-
- this.bar = bar;
- };
-
- Object.defineProperty(Foo.prototype, 'baz', {
- enumerable: true,
- get: function () {
-
- return this.bar;
- }
- });
-
- expect(Hoek.contain({ a: new Foo('b') }, { a: new Foo('b') }, { deep: true })).to.be.true();
- expect(Hoek.contain({ a: new Foo('b') }, { a: new Foo('b') }, { deep: true, part: true })).to.be.true();
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true })).to.be.true();
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true, only: true })).to.be.false();
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true, part: false })).to.be.false();
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true, part: true })).to.be.true();
-
- done();
- });
-});
-
-describe('flatten()', function () {
-
- it('returns a flat array', function (done) {
-
- var result = Hoek.flatten([1, 2, [3, 4, [5, 6], [7], 8], [9], [10, [11, 12]], 13]);
- expect(result.length).to.equal(13);
- expect(result).to.deep.equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]);
- done();
- });
-});
-
-describe('reach()', function () {
-
- var obj = {
- a: {
- b: {
- c: {
- d: 1,
- e: 2
- },
- f: 'hello'
- },
- g: {
- h: 3
- }
- },
- i: function () { },
- j: null,
- k: [4, 8, 9, 1]
- };
-
- obj.i.x = 5;
-
- it('returns first value of array', function (done) {
-
- expect(Hoek.reach(obj, 'k.0')).to.equal(4);
- done();
- });
-
- it('returns last value of array using negative index', function (done) {
-
- expect(Hoek.reach(obj, 'k.-2')).to.equal(9);
- done();
- });
-
- it('returns a valid member', function (done) {
-
- expect(Hoek.reach(obj, 'a.b.c.d')).to.equal(1);
- done();
- });
-
- it('returns a valid member with separator override', function (done) {
-
- expect(Hoek.reach(obj, 'a/b/c/d', '/')).to.equal(1);
- done();
- });
-
- it('returns undefined on null object', function (done) {
-
- expect(Hoek.reach(null, 'a.b.c.d')).to.equal(undefined);
- done();
- });
-
- it('returns undefined on missing object member', function (done) {
-
- expect(Hoek.reach(obj, 'a.b.c.d.x')).to.equal(undefined);
- done();
- });
-
- it('returns undefined on missing function member', function (done) {
-
- expect(Hoek.reach(obj, 'i.y', { functions: true })).to.equal(undefined);
- done();
- });
-
- it('throws on missing member in strict mode', function (done) {
-
- expect(function () {
-
- Hoek.reach(obj, 'a.b.c.o.x', { strict: true });
- }).to.throw('Missing segment o in reach path a.b.c.o.x');
-
- done();
- });
-
- it('returns undefined on invalid member', function (done) {
-
- expect(Hoek.reach(obj, 'a.b.c.d-.x')).to.equal(undefined);
- done();
- });
-
- it('returns function member', function (done) {
-
- expect(typeof Hoek.reach(obj, 'i')).to.equal('function');
- done();
- });
-
- it('returns function property', function (done) {
-
- expect(Hoek.reach(obj, 'i.x')).to.equal(5);
- done();
- });
-
- it('returns null', function (done) {
-
- expect(Hoek.reach(obj, 'j')).to.equal(null);
- done();
- });
-
- it('throws on function property when functions not allowed', function (done) {
-
- expect(function () {
-
- Hoek.reach(obj, 'i.x', { functions: false });
- }).to.throw('Invalid segment x in reach path i.x');
-
- done();
- });
-
- it('will return a default value if property is not found', function (done) {
-
- expect(Hoek.reach(obj, 'a.b.q', { default: 'defaultValue' })).to.equal('defaultValue');
- done();
- });
-
- it('will return a default value if path is not found', function (done) {
-
- expect(Hoek.reach(obj, 'q', { default: 'defaultValue' })).to.equal('defaultValue');
- done();
- });
-
- it('allows a falsey value to be used as the default value', function (done) {
-
- expect(Hoek.reach(obj, 'q', { default: '' })).to.equal('');
- done();
- });
-});
-
-describe('reachTemplate()', function () {
-
- it('applies object to template', function (done) {
-
- var obj = {
- a: {
- b: {
- c: {
- d: 1
- }
- }
- },
- j: null,
- k: [4, 8, 9, 1]
- };
-
- var template = '{k.0}:{k.-2}:{a.b.c.d}:{x.y}:{j}';
-
- expect(Hoek.reachTemplate(obj, template)).to.equal('4:9:1::');
- done();
- });
-
- it('applies object to template (options)', function (done) {
-
- var obj = {
- a: {
- b: {
- c: {
- d: 1
- }
- }
- },
- j: null,
- k: [4, 8, 9, 1]
- };
-
- var template = '{k/0}:{k/-2}:{a/b/c/d}:{x/y}:{j}';
-
- expect(Hoek.reachTemplate(obj, template, '/')).to.equal('4:9:1::');
- done();
- });
-});
-
-describe('callStack()', function () {
-
- it('returns the full call stack', function (done) {
-
- var stack = Hoek.callStack();
- expect(stack[0][0]).to.contain('index.js');
- expect(stack[0][2]).to.equal(26);
- done();
- });
-});
-
-describe('displayStack ()', function () {
-
- it('returns the full call stack for display', function (done) {
-
- var stack = Hoek.displayStack();
- expect(stack[0]).to.contain(Path.normalize('/test/index.js') + ':');
- done();
- });
-
- it('includes constructor functions correctly', function (done) {
-
- var Something = function (next) {
-
- next();
- };
-
- var something = new Something(function () {
-
- var stack = Hoek.displayStack();
- expect(stack[1]).to.contain('new Something');
- done();
- });
- });
-});
-
-describe('abort()', function () {
-
- it('exits process when not in test mode', function (done) {
-
- var env = process.env.NODE_ENV;
- var write = process.stdout.write;
- var exit = process.exit;
-
- process.env.NODE_ENV = 'nottatest';
- process.stdout.write = function () { };
- process.exit = function (state) {
-
- process.exit = exit;
- process.env.NODE_ENV = env;
- process.stdout.write = write;
-
- expect(state).to.equal(1);
- done();
- };
-
- Hoek.abort('Boom');
- });
-
- it('throws when not in test mode and abortThrow is true', function (done) {
-
- var env = process.env.NODE_ENV;
- process.env.NODE_ENV = 'nottatest';
- Hoek.abortThrow = true;
-
- var fn = function () {
-
- Hoek.abort('my error message');
- };
-
- expect(fn).to.throw('my error message');
- Hoek.abortThrow = false;
- process.env.NODE_ENV = env;
-
- done();
- });
-
- it('respects hideStack argument', function (done) {
-
- var env = process.env.NODE_ENV;
- var write = process.stdout.write;
- var exit = process.exit;
- var output = '';
-
- process.exit = function () { };
- process.env.NODE_ENV = '';
- process.stdout.write = function (message) {
-
- output = message;
- };
-
- Hoek.abort('my error message', true);
-
- process.env.NODE_ENV = env;
- process.stdout.write = write;
- process.exit = exit;
-
- expect(output).to.equal('ABORT: my error message\n\t\n');
-
- done();
- });
-
- it('throws in test mode', function (done) {
-
- var env = process.env.NODE_ENV;
- process.env.NODE_ENV = 'test';
-
- expect(function () {
-
- Hoek.abort('my error message', true);
- }).to.throw('my error message');
-
- process.env.NODE_ENV = env;
- done();
- });
-
- it('throws in test mode with default message', function (done) {
-
- var env = process.env.NODE_ENV;
- process.env.NODE_ENV = 'test';
-
- expect(function () {
-
- Hoek.abort('', true);
- }).to.throw('Unknown error');
-
- process.env.NODE_ENV = env;
- done();
- });
-
- it('defaults to showing stack', function (done) {
-
- var env = process.env.NODE_ENV;
- var write = process.stdout.write;
- var exit = process.exit;
- var output = '';
-
- process.exit = function () { };
- process.env.NODE_ENV = '';
- process.stdout.write = function (message) {
-
- output = message;
- };
-
- Hoek.abort('my error message');
-
- process.env.NODE_ENV = env;
- process.stdout.write = write;
- process.exit = exit;
-
- expect(output).to.contain('index.js');
-
- done();
- });
-});
-
-describe('assert()', function () {
-
- it('throws an Error when using assert in a test', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false, 'my error message');
- };
-
- expect(fn).to.throw('my error message');
- done();
- });
-
- it('throws an Error when using assert in a test with no message', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false);
- };
-
- expect(fn).to.throw('Unknown error');
- done();
- });
-
- it('throws an Error when using assert in a test with multipart message', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false, 'This', 'is', 'my message');
- };
-
- expect(fn).to.throw('This is my message');
- done();
- });
-
- it('throws an Error when using assert in a test with multipart message (empty)', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false, 'This', 'is', '', 'my message');
- };
-
- expect(fn).to.throw('This is my message');
- done();
- });
-
- it('throws an Error when using assert in a test with object message', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false, 'This', 'is', { spinal: 'tap' });
- };
-
- expect(fn).to.throw('This is {"spinal":"tap"}');
- done();
- });
-
- it('throws an Error when using assert in a test with multipart string and error messages', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false, 'This', 'is', new Error('spinal'), new Error('tap'));
- };
-
- expect(fn).to.throw('This is spinal tap');
- done();
- });
-
- it('throws an Error when using assert in a test with error object message', function (done) {
-
- var fn = function () {
-
- Hoek.assert(false, new Error('This is spinal tap'));
- };
-
- expect(fn).to.throw('This is spinal tap');
- done();
- });
-
- it('throws the same Error that is passed to it if there is only one error passed', function (done) {
-
- var error = new Error('ruh roh');
- var error2 = new Error('ruh roh');
-
- var fn = function () {
-
- Hoek.assert(false, error);
- };
-
- try {
- fn();
- } catch (err) {
- expect(error).to.equal(error); // should be the same reference
- expect(error).to.not.equal(error2); // error with the same message should not match
- }
-
- done();
- });
-});
-
-describe('Timer', function () {
-
- it('returns time elapsed', function (done) {
-
- var timer = new Hoek.Timer();
- setTimeout(function () {
-
- expect(timer.elapsed()).to.be.above(9);
- done();
- }, 12);
- });
-});
-
-describe('Bench', function () {
-
- it('returns time elapsed', function (done) {
-
- var timer = new Hoek.Bench();
- setTimeout(function () {
-
- expect(timer.elapsed()).to.be.above(9);
- done();
- }, 12);
- });
-});
-
-describe('escapeRegex()', function () {
-
- it('escapes all special regular expression characters', function (done) {
-
- var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,');
- expect(a).to.equal('4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`"\\(>\\)\\[<\\]d\\{\\}s\\,');
- done();
- });
-});
-
-describe('Base64Url', function () {
-
- var base64str = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w';
- var str = unescape('%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29*+%2C-./0123456789%3A%3B%3C%3D%3E%3F@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF');
-
- describe('base64urlEncode()', function () {
-
- it('should base64 URL-safe a string', function (done) {
-
- expect(Hoek.base64urlEncode(str)).to.equal(base64str);
- done();
- });
-
- it('encodes a buffer', function (done) {
-
- expect(Hoek.base64urlEncode(new Buffer(str, 'binary'))).to.equal(base64str);
- done();
- });
-
- it('should base64 URL-safe a hex string', function (done) {
-
- var buffer = new Buffer(str, 'binary');
- expect(Hoek.base64urlEncode(buffer.toString('hex'), 'hex')).to.equal(base64str);
- done();
- });
-
- it('works on larger input strings', function (done) {
-
- var input = Fs.readFileSync(Path.join(__dirname, 'index.js')).toString();
- var encoded = Hoek.base64urlEncode(input);
-
- expect(encoded).to.not.contain('+');
- expect(encoded).to.not.contain('/');
-
- var decoded = Hoek.base64urlDecode(encoded);
-
- expect(decoded).to.equal(input);
- done();
- });
- });
-
- describe('base64urlDecode()', function () {
-
- it('should un-base64 URL-safe a string', function (done) {
-
- expect(Hoek.base64urlDecode(base64str)).to.equal(str);
- done();
- });
-
- it('should un-base64 URL-safe a string into hex', function (done) {
-
- expect(Hoek.base64urlDecode(base64str, 'hex')).to.equal(new Buffer(str, 'binary').toString('hex'));
- done();
- });
-
- it('should un-base64 URL-safe a string and return a buffer', function (done) {
-
- var buf = Hoek.base64urlDecode(base64str, 'buffer');
- expect(buf instanceof Buffer).to.equal(true);
- expect(buf.toString('binary')).to.equal(str);
- done();
- });
-
- it('returns error on undefined input', function (done) {
-
- expect(Hoek.base64urlDecode().message).to.exist();
- done();
- });
-
- it('returns error on invalid input', function (done) {
-
- expect(Hoek.base64urlDecode('*').message).to.exist();
- done();
- });
- });
-});
-
-describe('escapeHeaderAttribute()', function () {
-
- it('should not alter ascii values', function (done) {
-
- var a = Hoek.escapeHeaderAttribute('My Value');
- expect(a).to.equal('My Value');
- done();
- });
-
- it('escapes all special HTTP header attribute characters', function (done) {
-
- var a = Hoek.escapeHeaderAttribute('I said go!!!#"' + String.fromCharCode(92));
- expect(a).to.equal('I said go!!!#\\"\\\\');
- done();
- });
-
- it('throws on large unicode characters', function (done) {
-
- var fn = function () {
-
- Hoek.escapeHeaderAttribute('this is a test' + String.fromCharCode(500) + String.fromCharCode(300));
- };
-
- expect(fn).to.throw(Error);
- done();
- });
-
- it('throws on CRLF to prevent response splitting', function (done) {
-
- var fn = function () {
-
- Hoek.escapeHeaderAttribute('this is a test\r\n');
- };
-
- expect(fn).to.throw(Error);
- done();
- });
-});
-
-describe('escapeHtml()', function () {
-
- it('escapes all special HTML characters', function (done) {
-
- var a = Hoek.escapeHtml('&<>"\'`');
- expect(a).to.equal('&amp;&lt;&gt;&quot;&#x27;&#x60;');
- done();
- });
-
- it('returns empty string on falsy input', function (done) {
-
- var a = Hoek.escapeHtml('');
- expect(a).to.equal('');
- done();
- });
-
- it('returns unchanged string on no reserved input', function (done) {
-
- var a = Hoek.escapeHtml('abc');
- expect(a).to.equal('abc');
- done();
- });
-});
-
-describe('nextTick()', function () {
-
- it('calls the provided callback on nextTick', function (done) {
-
- var a = 0;
-
- var inc = function (step, next) {
-
- a += step;
- next();
- };
-
- var ticked = Hoek.nextTick(inc);
-
- ticked(5, function () {
-
- expect(a).to.equal(6);
- done();
- });
-
- expect(a).to.equal(0);
- inc(1, function () {
-
- expect(a).to.equal(1);
- });
- });
-});
-
-describe('once()', function () {
-
- it('allows function to only execute once', function (done) {
-
- var gen = 0;
- var add = function (x) {
-
- gen += x;
- };
-
- add(5);
- expect(gen).to.equal(5);
- add = Hoek.once(add);
- add(5);
- expect(gen).to.equal(10);
- add(5);
- expect(gen).to.equal(10);
- done();
- });
-
- it('double once wraps one time', function (done) {
-
- var method = function () { };
- method = Hoek.once(method);
- method.x = 1;
- method = Hoek.once(method);
- expect(method.x).to.equal(1);
- done();
- });
-});
-
-describe('isAbsoltePath()', function () {
-
- it('identifies if path is absolute on Unix without node support', { parallel: false }, function (done) {
-
- var orig = Path.isAbsolute;
- Path.isAbsolute = undefined;
-
- expect(Hoek.isAbsolutePath('')).to.equal(false);
- expect(Hoek.isAbsolutePath('a')).to.equal(false);
- expect(Hoek.isAbsolutePath('./a')).to.equal(false);
- expect(Hoek.isAbsolutePath('/a')).to.equal(true);
- expect(Hoek.isAbsolutePath('/')).to.equal(true);
-
- Path.isAbsolute = orig;
-
- done();
- });
-
- it('identifies if path is absolute with fake node support', { parallel: false }, function (done) {
-
- var orig = Path.isAbsolute;
- Path.isAbsolute = function (path) {
-
- return path[0] === '/';
- };
-
- expect(Hoek.isAbsolutePath('', 'linux')).to.equal(false);
- expect(Hoek.isAbsolutePath('a', 'linux')).to.equal(false);
- expect(Hoek.isAbsolutePath('./a', 'linux')).to.equal(false);
- expect(Hoek.isAbsolutePath('/a', 'linux')).to.equal(true);
- expect(Hoek.isAbsolutePath('/', 'linux')).to.equal(true);
-
- Path.isAbsolute = orig;
-
- done();
- });
-
- it('identifies if path is absolute on Windows without node support', { parallel: false }, function (done) {
-
- var orig = Path.isAbsolute;
- Path.isAbsolute = undefined;
-
- expect(Hoek.isAbsolutePath('//server/file', 'win32')).to.equal(true);
- expect(Hoek.isAbsolutePath('//server/file', 'win32')).to.equal(true);
- expect(Hoek.isAbsolutePath('\\\\server\\file', 'win32')).to.equal(true);
- expect(Hoek.isAbsolutePath('C:/Users/', 'win32')).to.equal(true);
- expect(Hoek.isAbsolutePath('C:\\Users\\', 'win32')).to.equal(true);
- expect(Hoek.isAbsolutePath('C:cwd/another', 'win32')).to.equal(false);
- expect(Hoek.isAbsolutePath('C:cwd\\another', 'win32')).to.equal(false);
- expect(Hoek.isAbsolutePath('directory/directory', 'win32')).to.equal(false);
- expect(Hoek.isAbsolutePath('directory\\directory', 'win32')).to.equal(false);
-
- Path.isAbsolute = orig;
-
- done();
- });
-});
-
-describe('isInteger()', function () {
-
- it('validates integers', function (done) {
-
- expect(Hoek.isInteger(0)).to.equal(true);
- expect(Hoek.isInteger(1)).to.equal(true);
- expect(Hoek.isInteger(1394035612500)).to.equal(true);
- expect(Hoek.isInteger('0')).to.equal(false);
- expect(Hoek.isInteger(1.0)).to.equal(true);
- expect(Hoek.isInteger(1.1)).to.equal(false);
- done();
- });
-});
-
-describe('ignore()', function () {
-
- it('exists', function (done) {
-
- expect(Hoek.ignore).to.exist();
- expect(typeof Hoek.ignore).to.equal('function');
- done();
- });
-});
-
-describe('inherits()', function () {
-
- it('exists', function (done) {
-
- expect(Hoek.inherits).to.exist();
- expect(typeof Hoek.inherits).to.equal('function');
- done();
- });
-});
-
-describe('format()', function () {
-
- it('exists', function (done) {
-
- expect(Hoek.format).to.exist();
- expect(typeof Hoek.format).to.equal('function');
- done();
- });
-
- it('is a reference to Util.format', function (done) {
-
- expect(Hoek.format('hello %s', 'world')).to.equal('hello world');
- done();
- });
-});
-
-describe('transform()', function () {
-
- var source = {
- address: {
- one: '123 main street',
- two: 'PO Box 1234'
- },
- zip: {
- code: 3321232,
- province: null
- },
- title: 'Warehouse',
- state: 'CA'
- };
-
- it('transforms an object based on the input object', function (done) {
-
- var result = Hoek.transform(source, {
- 'person.address.lineOne': 'address.one',
- 'person.address.lineTwo': 'address.two',
- 'title': 'title',
- 'person.address.region': 'state',
- 'person.address.zip': 'zip.code',
- 'person.address.location': 'zip.province'
- });
-
- expect(result).to.deep.equal({
- person: {
- address: {
- lineOne: '123 main street',
- lineTwo: 'PO Box 1234',
- region: 'CA',
- zip: 3321232,
- location: null
- }
- },
- title: 'Warehouse'
- });
-
- done();
- });
-
- it('uses the reach options passed into it', function (done) {
-
- var schema = {
- 'person.address.lineOne': 'address-one',
- 'person.address.lineTwo': 'address-two',
- 'title': 'title',
- 'person.address.region': 'state',
- 'person.prefix': 'person-title',
- 'person.zip': 'zip-code'
- };
- var options = {
- separator: '-',
- default: 'unknown'
- };
- var result = Hoek.transform(source, schema, options);
-
- expect(result).to.deep.equal({
- person: {
- address: {
- lineOne: '123 main street',
- lineTwo: 'PO Box 1234',
- region: 'CA'
- },
- prefix: 'unknown',
- zip: 3321232
- },
- title: 'Warehouse'
- });
-
- done();
- });
-
- it('works to create shallow objects', function (done) {
-
- var result = Hoek.transform(source, {
- lineOne: 'address.one',
- lineTwo: 'address.two',
- title: 'title',
- region: 'state',
- province: 'zip.province'
- });
-
- expect(result).to.deep.equal({
- lineOne: '123 main street',
- lineTwo: 'PO Box 1234',
- title: 'Warehouse',
- region: 'CA',
- province: null
- });
-
- done();
- });
-
- it('only allows strings in the map', function (done) {
-
- expect(function () {
-
- var result = Hoek.transform(source, {
- lineOne: {}
- });
- }).to.throw('All mappings must be "." delineated strings');
-
- done();
- });
-
- it('throws an error on invalid arguments', function (done) {
-
- expect(function () {
-
- var result = Hoek.transform(NaN, {});
- }).to.throw('Invalid source object: must be null, undefined, or an object');
-
- done();
- });
-
- it('is safe to pass null', function (done) {
-
- var result = Hoek.transform(null, {});
- expect(result).to.deep.equal({});
-
- done();
- });
-
- it('is safe to pass undefined', function (done) {
-
- var result = Hoek.transform(undefined, {});
- expect(result).to.deep.equal({});
-
- done();
- });
-});
-
-describe('uniqueFilename()', function () {
-
- it('generates a random file path', function (done) {
-
- var result = Hoek.uniqueFilename('./test/modules');
-
- expect(result).to.exist();
- expect(result).to.be.a.string();
- expect(result).to.contain('test/modules');
- done();
- });
-
- it('is random enough to use in fast loops', function (done) {
-
- var results = [];
-
- for (var i = 0; i < 10; ++i) {
- results[i] = Hoek.uniqueFilename('./test/modules');
- }
-
- var filter = results.filter(function (item, index, array) {
-
- return array.indexOf(item) === index;
- });
-
- expect(filter.length).to.equal(10);
- expect(results.length).to.equal(10);
- done();
-
- });
-
- it('combines the random elements with a supplied character', function (done) {
-
- var result = Hoek.uniqueFilename('./test', 'txt');
-
- expect(result).to.contain('test/');
- expect(result).to.contain('.txt');
-
- done();
- });
-
- it('accepts extensions with a "." in it', function (done) {
-
- var result = Hoek.uniqueFilename('./test', '.mp3');
-
- expect(result).to.contain('test/');
- expect(result).to.contain('.mp3');
-
- done();
- });
-});
-
-describe('stringify()', function (done) {
-
- it('converts object to string', function (done) {
-
- var obj = { a: 1 };
- expect(Hoek.stringify(obj)).to.equal('{"a":1}');
- done();
- });
-
- it('returns error in result string', function (done) {
-
- var obj = { a: 1 };
- obj.b = obj;
- expect(Hoek.stringify(obj)).to.equal('[Cannot display object: Converting circular structure to JSON]');
- done();
- });
-});
-
-describe('shallow()', function (done) {
-
- it('shallow copies an object', function (done) {
-
- var obj = {
- a: 5,
- b: {
- c: 6
- }
- };
-
- var shallow = Hoek.shallow(obj);
- expect(shallow).to.not.equal(obj);
- expect(shallow).to.deep.equal(obj);
- expect(shallow.b).to.equal(obj.b);
- done();
- });
-});
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt b/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt
+++ /dev/null
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js b/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js
deleted file mode 100755
index fa4e06abe..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.x = 1;
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js b/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js
deleted file mode 100755
index 88e9166e8..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.y = 2;
diff --git a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js b/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js
deleted file mode 100755
index 670e724a6..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.z = 3;
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore b/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore
deleted file mode 100644
index 77ba16cb0..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore
+++ /dev/null
@@ -1,18 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml b/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml
deleted file mode 100755
index 047f7e3d5..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE b/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE
deleted file mode 100755
index b0d877439..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2012-2014, Eran Hammer and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * 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.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-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 HOLDERS AND 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 complete list of contributors can be found at: https://github.com/hueniverse/sntp/graphs/contributors
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile b/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile
deleted file mode 100755
index 417fd9370..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-test:
- @node node_modules/lab/bin/lab
-test-cov:
- @node node_modules/lab/bin/lab -t 100 -m 3000
-test-cov-html:
- @node node_modules/lab/bin/lab -r html -o coverage.html
-
-.PHONY: test test-cov test-cov-html
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/README.md b/node_modules/request/node_modules/hawk/node_modules/sntp/README.md
deleted file mode 100755
index 98a6e025d..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# sntp
-
-An SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time
-along with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset
-to the local time.
-
-[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp)
-
-# Usage
-
-```javascript
-var Sntp = require('sntp');
-
-// All options are optional
-
-var options = {
- host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org
- port: 123, // Defaults to 123 (NTP)
- resolveReference: true, // Default to false (not resolving)
- timeout: 1000 // Defaults to zero (no timeout)
-};
-
-// Request server time
-
-Sntp.time(options, function (err, time) {
-
- if (err) {
- console.log('Failed: ' + err.message);
- process.exit(1);
- }
-
- console.log('Local clock is off by: ' + time.t + ' milliseconds');
- process.exit(0);
-});
-```
-
-If an application needs to maintain continuous time synchronization, the module provides a stateful method for
-querying the current offset only when the last one is too old (defaults to daily).
-
-```javascript
-// Request offset once
-
-Sntp.offset(function (err, offset) {
-
- console.log(offset); // New (served fresh)
-
- // Request offset again
-
- Sntp.offset(function (err, offset) {
-
- console.log(offset); // Identical (served from cache)
- });
-});
-```
-
-To set a background offset refresh, start the interval and use the provided now() method. If for any reason the
-client fails to obtain an up-to-date offset, the current system clock is used.
-
-```javascript
-var before = Sntp.now(); // System time without offset
-
-Sntp.start(function () {
-
- var now = Sntp.now(); // With offset
- Sntp.stop();
-});
-```
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js b/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js
deleted file mode 100755
index 0303f6dcf..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Sntp = require('../lib');
-
-// Request offset once
-
-Sntp.offset(function (err, offset) {
-
- console.log(offset); // New (served fresh)
-
- // Request offset again
-
- Sntp.offset(function (err, offset) {
-
- console.log(offset); // Identical (served from cache)
- });
-});
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js b/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js
deleted file mode 100755
index bd70d0e6a..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var Sntp = require('../lib');
-
-// All options are optional
-
-var options = {
- host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org
- port: 123, // Defaults to 123 (NTP)
- resolveReference: true, // Default to false (not resolving)
- timeout: 1000 // Defaults to zero (no timeout)
-};
-
-// Request server time
-
-Sntp.time(options, function (err, time) {
-
- if (err) {
- console.log('Failed: ' + err.message);
- process.exit(1);
- }
-
- console.log(time);
- console.log('Local clock is off by: ' + time.t + ' milliseconds');
- process.exit(0);
-});
-
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/index.js b/node_modules/request/node_modules/hawk/node_modules/sntp/index.js
deleted file mode 100755
index 4cc88b358..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib'); \ No newline at end of file
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js b/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js
deleted file mode 100755
index e91718b4f..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js
+++ /dev/null
@@ -1,412 +0,0 @@
-// Load modules
-
-var Dgram = require('dgram');
-var Dns = require('dns');
-var Hoek = require('hoek');
-
-
-// Declare internals
-
-var internals = {};
-
-
-exports.time = function (options, callback) {
-
- if (arguments.length !== 2) {
- callback = arguments[0];
- options = {};
- }
-
- var settings = Hoek.clone(options);
- settings.host = settings.host || 'pool.ntp.org';
- settings.port = settings.port || 123;
- settings.resolveReference = settings.resolveReference || false;
-
- // Declare variables used by callback
-
- var timeoutId = 0;
- var sent = 0;
-
- // Ensure callback is only called once
-
- var finish = function (err, result) {
-
- if (timeoutId) {
- clearTimeout(timeoutId);
- timeoutId = 0;
- }
-
- socket.removeAllListeners();
- socket.once('error', internals.ignore);
- socket.close();
- return callback(err, result);
- };
-
- finish = Hoek.once(finish);
-
- // Create UDP socket
-
- var socket = Dgram.createSocket('udp4');
-
- socket.once('error', function (err) {
-
- return finish(err);
- });
-
- // Listen to incoming messages
-
- socket.on('message', function (buffer, rinfo) {
-
- var received = Date.now();
-
- var message = new internals.NtpMessage(buffer);
- if (!message.isValid) {
- return finish(new Error('Invalid server response'), message);
- }
-
- if (message.originateTimestamp !== sent) {
- return finish(new Error('Wrong originate timestamp'), message);
- }
-
- // Timestamp Name ID When Generated
- // ------------------------------------------------------------
- // Originate Timestamp T1 time request sent by client
- // Receive Timestamp T2 time request received by server
- // Transmit Timestamp T3 time reply sent by server
- // Destination Timestamp T4 time reply received by client
- //
- // The roundtrip delay d and system clock offset t are defined as:
- //
- // d = (T4 - T1) - (T3 - T2) t = ((T2 - T1) + (T3 - T4)) / 2
-
- var T1 = message.originateTimestamp;
- var T2 = message.receiveTimestamp;
- var T3 = message.transmitTimestamp;
- var T4 = received;
-
- message.d = (T4 - T1) - (T3 - T2);
- message.t = ((T2 - T1) + (T3 - T4)) / 2;
- message.receivedLocally = received;
-
- if (!settings.resolveReference ||
- message.stratum !== 'secondary') {
-
- return finish(null, message);
- }
-
- // Resolve reference IP address
-
- Dns.reverse(message.referenceId, function (err, domains) {
-
- if (/* $lab:coverage:off$ */ !err /* $lab:coverage:on$ */) {
- message.referenceHost = domains[0];
- }
-
- return finish(null, message);
- });
- });
-
- // Set timeout
-
- if (settings.timeout) {
- timeoutId = setTimeout(function () {
-
- timeoutId = 0;
- return finish(new Error('Timeout'));
- }, settings.timeout);
- }
-
- // Construct NTP message
-
- var message = new Buffer(48);
- for (var i = 0; i < 48; i++) { // Zero message
- message[i] = 0;
- }
-
- message[0] = (0 << 6) + (4 << 3) + (3 << 0) // Set version number to 4 and Mode to 3 (client)
- sent = Date.now();
- internals.fromMsecs(sent, message, 40); // Set transmit timestamp (returns as originate)
-
- // Send NTP request
-
- socket.send(message, 0, message.length, settings.port, settings.host, function (err, bytes) {
-
- if (err ||
- bytes !== 48) {
-
- return finish(err || new Error('Could not send entire message'));
- }
- });
-};
-
-
-internals.NtpMessage = function (buffer) {
-
- this.isValid = false;
-
- // Validate
-
- if (buffer.length !== 48) {
- return;
- }
-
- // Leap indicator
-
- var li = (buffer[0] >> 6);
- switch (li) {
- case 0: this.leapIndicator = 'no-warning'; break;
- case 1: this.leapIndicator = 'last-minute-61'; break;
- case 2: this.leapIndicator = 'last-minute-59'; break;
- case 3: this.leapIndicator = 'alarm'; break;
- }
-
- // Version
-
- var vn = ((buffer[0] & 0x38) >> 3);
- this.version = vn;
-
- // Mode
-
- var mode = (buffer[0] & 0x7);
- switch (mode) {
- case 1: this.mode = 'symmetric-active'; break;
- case 2: this.mode = 'symmetric-passive'; break;
- case 3: this.mode = 'client'; break;
- case 4: this.mode = 'server'; break;
- case 5: this.mode = 'broadcast'; break;
- case 0:
- case 6:
- case 7: this.mode = 'reserved'; break;
- }
-
- // Stratum
-
- var stratum = buffer[1];
- if (stratum === 0) {
- this.stratum = 'death';
- }
- else if (stratum === 1) {
- this.stratum = 'primary';
- }
- else if (stratum <= 15) {
- this.stratum = 'secondary';
- }
- else {
- this.stratum = 'reserved';
- }
-
- // Poll interval (msec)
-
- this.pollInterval = Math.round(Math.pow(2, buffer[2])) * 1000;
-
- // Precision (msecs)
-
- this.precision = Math.pow(2, buffer[3]) * 1000;
-
- // Root delay (msecs)
-
- var rootDelay = 256 * (256 * (256 * buffer[4] + buffer[5]) + buffer[6]) + buffer[7];
- this.rootDelay = 1000 * (rootDelay / 0x10000);
-
- // Root dispersion (msecs)
-
- this.rootDispersion = ((buffer[8] << 8) + buffer[9] + ((buffer[10] << 8) + buffer[11]) / Math.pow(2, 16)) * 1000;
-
- // Reference identifier
-
- this.referenceId = '';
- switch (this.stratum) {
- case 'death':
- case 'primary':
- this.referenceId = String.fromCharCode(buffer[12]) + String.fromCharCode(buffer[13]) + String.fromCharCode(buffer[14]) + String.fromCharCode(buffer[15]);
- break;
- case 'secondary':
- this.referenceId = '' + buffer[12] + '.' + buffer[13] + '.' + buffer[14] + '.' + buffer[15];
- break;
- }
-
- // Reference timestamp
-
- this.referenceTimestamp = internals.toMsecs(buffer, 16);
-
- // Originate timestamp
-
- this.originateTimestamp = internals.toMsecs(buffer, 24);
-
- // Receive timestamp
-
- this.receiveTimestamp = internals.toMsecs(buffer, 32);
-
- // Transmit timestamp
-
- this.transmitTimestamp = internals.toMsecs(buffer, 40);
-
- // Validate
-
- if (this.version === 4 &&
- this.stratum !== 'reserved' &&
- this.mode === 'server' &&
- this.originateTimestamp &&
- this.receiveTimestamp &&
- this.transmitTimestamp) {
-
- this.isValid = true;
- }
-
- return this;
-};
-
-
-internals.toMsecs = function (buffer, offset) {
-
- var seconds = 0;
- var fraction = 0;
-
- for (var i = 0; i < 4; ++i) {
- seconds = (seconds * 256) + buffer[offset + i];
- }
-
- for (i = 4; i < 8; ++i) {
- fraction = (fraction * 256) + buffer[offset + i];
- }
-
- return ((seconds - 2208988800 + (fraction / Math.pow(2, 32))) * 1000);
-};
-
-
-internals.fromMsecs = function (ts, buffer, offset) {
-
- var seconds = Math.floor(ts / 1000) + 2208988800;
- var fraction = Math.round((ts % 1000) / 1000 * Math.pow(2, 32));
-
- buffer[offset + 0] = (seconds & 0xFF000000) >> 24;
- buffer[offset + 1] = (seconds & 0x00FF0000) >> 16;
- buffer[offset + 2] = (seconds & 0x0000FF00) >> 8;
- buffer[offset + 3] = (seconds & 0x000000FF);
-
- buffer[offset + 4] = (fraction & 0xFF000000) >> 24;
- buffer[offset + 5] = (fraction & 0x00FF0000) >> 16;
- buffer[offset + 6] = (fraction & 0x0000FF00) >> 8;
- buffer[offset + 7] = (fraction & 0x000000FF);
-};
-
-
-// Offset singleton
-
-internals.last = {
- offset: 0,
- expires: 0,
- host: '',
- port: 0
-};
-
-
-exports.offset = function (options, callback) {
-
- if (arguments.length !== 2) {
- callback = arguments[0];
- options = {};
- }
-
- var now = Date.now();
- var clockSyncRefresh = options.clockSyncRefresh || 24 * 60 * 60 * 1000; // Daily
-
- if (internals.last.offset &&
- internals.last.host === options.host &&
- internals.last.port === options.port &&
- now < internals.last.expires) {
-
- process.nextTick(function () {
-
- callback(null, internals.last.offset);
- });
-
- return;
- }
-
- exports.time(options, function (err, time) {
-
- if (err) {
- return callback(err, 0);
- }
-
- internals.last = {
- offset: Math.round(time.t),
- expires: now + clockSyncRefresh,
- host: options.host,
- port: options.port
- };
-
- return callback(null, internals.last.offset);
- });
-};
-
-
-// Now singleton
-
-internals.now = {
- intervalId: 0
-};
-
-
-exports.start = function (options, callback) {
-
- if (arguments.length !== 2) {
- callback = arguments[0];
- options = {};
- }
-
- if (internals.now.intervalId) {
- process.nextTick(function () {
-
- callback();
- });
-
- return;
- }
-
- exports.offset(options, function (err, offset) {
-
- internals.now.intervalId = setInterval(function () {
-
- exports.offset(options, function () { });
- }, options.clockSyncRefresh || 24 * 60 * 60 * 1000); // Daily
-
- return callback();
- });
-};
-
-
-exports.stop = function () {
-
- if (!internals.now.intervalId) {
- return;
- }
-
- clearInterval(internals.now.intervalId);
- internals.now.intervalId = 0;
-};
-
-
-exports.isLive = function () {
-
- return !!internals.now.intervalId;
-};
-
-
-exports.now = function () {
-
- var now = Date.now();
- if (!exports.isLive() ||
- now >= internals.last.expires) {
-
- return now;
- }
-
- return now + internals.last.offset;
-};
-
-
-internals.ignore = function () {
-
-};
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/package.json b/node_modules/request/node_modules/hawk/node_modules/sntp/package.json
deleted file mode 100644
index 9ae1b926e..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "sntp",
- "description": "SNTP Client",
- "version": "1.0.9",
- "author": {
- "name": "Eran Hammer",
- "email": "eran@hammer.io",
- "url": "http://hueniverse.com"
- },
- "contributors": [],
- "repository": {
- "type": "git",
- "url": "git://github.com/hueniverse/sntp.git"
- },
- "main": "index",
- "keywords": [
- "sntp",
- "ntp",
- "time"
- ],
- "engines": {
- "node": ">=0.8.0"
- },
- "dependencies": {
- "hoek": "2.x.x"
- },
- "devDependencies": {
- "lab": "4.x.x"
- },
- "scripts": {
- "test": "make test-cov"
- },
- "licenses": [
- {
- "type": "BSD",
- "url": "http://github.com/hueniverse/sntp/raw/master/LICENSE"
- }
- ],
- "readme": "# sntp\n\nAn SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time\nalong with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset\nto the local time.\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp)\n\n# Usage\n\n```javascript\nvar Sntp = require('sntp');\n\n// All options are optional\n\nvar options = {\n host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org\n port: 123, // Defaults to 123 (NTP)\n resolveReference: true, // Default to false (not resolving)\n timeout: 1000 // Defaults to zero (no timeout)\n};\n\n// Request server time\n\nSntp.time(options, function (err, time) {\n\n if (err) {\n console.log('Failed: ' + err.message);\n process.exit(1);\n }\n\n console.log('Local clock is off by: ' + time.t + ' milliseconds');\n process.exit(0);\n});\n```\n\nIf an application needs to maintain continuous time synchronization, the module provides a stateful method for\nquerying the current offset only when the last one is too old (defaults to daily).\n\n```javascript\n// Request offset once\n\nSntp.offset(function (err, offset) {\n\n console.log(offset); // New (served fresh)\n\n // Request offset again\n\n Sntp.offset(function (err, offset) {\n\n console.log(offset); // Identical (served from cache)\n });\n});\n```\n\nTo set a background offset refresh, start the interval and use the provided now() method. If for any reason the\nclient fails to obtain an up-to-date offset, the current system clock is used.\n\n```javascript\nvar before = Sntp.now(); // System time without offset\n\nSntp.start(function () {\n\n var now = Sntp.now(); // With offset\n Sntp.stop();\n});\n```\n\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/hueniverse/sntp/issues"
- },
- "homepage": "https://github.com/hueniverse/sntp#readme",
- "_id": "sntp@1.0.9",
- "_shasum": "6541184cc90aeea6c6e7b35e2659082443c66198",
- "_resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "_from": "sntp@>=1.0.0 <2.0.0"
-}
diff --git a/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js b/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js
deleted file mode 100755
index f1d1cdabf..000000000
--- a/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js
+++ /dev/null
@@ -1,435 +0,0 @@
-// Load modules
-
-var Dns = require('dns');
-var Dgram = require('dgram');
-var Lab = require('lab');
-var Sntp = require('../lib');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var before = lab.before;
-var after = lab.after;
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Lab.expect;
-
-
-describe('SNTP', function () {
-
- describe('#time', function () {
-
- it('returns consistent result over multiple tries', function (done) {
-
- Sntp.time(function (err, time) {
-
- expect(err).to.not.exist;
- expect(time).to.exist;
- var t1 = time.t;
-
- Sntp.time(function (err, time) {
-
- expect(err).to.not.exist;
- expect(time).to.exist;
- var t2 = time.t;
- expect(Math.abs(t1 - t2)).is.below(200);
- done();
- });
- });
- });
-
- it('resolves reference IP', function (done) {
-
- Sntp.time({ host: 'ntp.exnet.com', resolveReference: true }, function (err, time) {
-
- expect(err).to.not.exist;
- expect(time).to.exist;
- expect(time.referenceHost).to.exist;
- done();
- });
- });
-
- it('times out on no response', function (done) {
-
- Sntp.time({ port: 124, timeout: 100 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time).to.not.exist;
- expect(err.message).to.equal('Timeout');
- done();
- });
- });
-
- it('errors on error event', { parallel: false }, function (done) {
-
- var orig = Dgram.createSocket;
- Dgram.createSocket = function (type) {
-
- Dgram.createSocket = orig;
- var socket = Dgram.createSocket(type);
- setImmediate(function () { socket.emit('error', new Error('Fake')) });
- return socket;
- };
-
- Sntp.time(function (err, time) {
-
- expect(err).to.exist;
- expect(time).to.not.exist;
- expect(err.message).to.equal('Fake');
- done();
- });
- });
-
- it('errors on incorrect sent size', { parallel: false }, function (done) {
-
- var orig = Dgram.Socket.prototype.send;
- Dgram.Socket.prototype.send = function (buf, offset, length, port, address, callback) {
-
- Dgram.Socket.prototype.send = orig;
- return callback(null, 40);
- };
-
- Sntp.time(function (err, time) {
-
- expect(err).to.exist;
- expect(time).to.not.exist;
- expect(err.message).to.equal('Could not send entire message');
- done();
- });
- });
-
- it('times out on invalid host', function (done) {
-
- Sntp.time({ host: 'error', timeout: 10000 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time).to.not.exist;
- expect(err.message).to.contain('getaddrinfo');
- done();
- });
- });
-
- it('fails on bad response buffer size', function (done) {
-
- var server = Dgram.createSocket('udp4');
- server.on('message', function (message, remote) {
- var message = new Buffer(10);
- server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) {
-
- server.close();
- });
- });
-
- server.bind(49123);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(err.message).to.equal('Invalid server response');
- done();
- });
- });
-
- var messup = function (bytes) {
-
- var server = Dgram.createSocket('udp4');
- server.on('message', function (message, remote) {
-
- var message = new Buffer([
- 0x24, 0x01, 0x00, 0xe3,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x41, 0x43, 0x54, 0x53,
- 0xd4, 0xa8, 0x2d, 0xc7,
- 0x1c, 0x5d, 0x49, 0x1b,
- 0xd4, 0xa8, 0x2d, 0xe6,
- 0x67, 0xef, 0x9d, 0xb2,
- 0xd4, 0xa8, 0x2d, 0xe6,
- 0x71, 0xed, 0xb5, 0xfb,
- 0xd4, 0xa8, 0x2d, 0xe6,
- 0x71, 0xee, 0x6c, 0xc5
- ]);
-
- for (var i = 0, il = bytes.length; i < il; ++i) {
- message[bytes[i][0]] = bytes[i][1];
- }
-
- server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) {
-
- server.close();
- });
- });
-
- server.bind(49123);
- };
-
- it('fails on bad version', function (done) {
-
- messup([[0, (0 << 6) + (3 << 3) + (4 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time.version).to.equal(3);
- expect(err.message).to.equal('Invalid server response');
- done();
- });
- });
-
- it('fails on bad originateTimestamp', function (done) {
-
- messup([[24, 0x83], [25, 0xaa], [26, 0x7e], [27, 0x80], [28, 0], [29, 0], [30, 0], [31, 0]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(err.message).to.equal('Invalid server response');
- done();
- });
- });
-
- it('fails on bad receiveTimestamp', function (done) {
-
- messup([[32, 0x83], [33, 0xaa], [34, 0x7e], [35, 0x80], [36, 0], [37, 0], [38, 0], [39, 0]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(err.message).to.equal('Invalid server response');
- done();
- });
- });
-
- it('fails on bad originate timestamp and alarm li', function (done) {
-
- messup([[0, (3 << 6) + (4 << 3) + (4 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(err.message).to.equal('Wrong originate timestamp');
- expect(time.leapIndicator).to.equal('alarm');
- done();
- });
- });
-
- it('returns time with death stratum and last61 li', function (done) {
-
- messup([[0, (1 << 6) + (4 << 3) + (4 << 0)], [1, 0]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(time.stratum).to.equal('death');
- expect(time.leapIndicator).to.equal('last-minute-61');
- done();
- });
- });
-
- it('returns time with reserved stratum and last59 li', function (done) {
-
- messup([[0, (2 << 6) + (4 << 3) + (4 << 0)], [1, 0x1f]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(time.stratum).to.equal('reserved');
- expect(time.leapIndicator).to.equal('last-minute-59');
- done();
- });
- });
-
- it('fails on bad mode (symmetric-active)', function (done) {
-
- messup([[0, (0 << 6) + (4 << 3) + (1 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time.mode).to.equal('symmetric-active');
- done();
- });
- });
-
- it('fails on bad mode (symmetric-passive)', function (done) {
-
- messup([[0, (0 << 6) + (4 << 3) + (2 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time.mode).to.equal('symmetric-passive');
- done();
- });
- });
-
- it('fails on bad mode (client)', function (done) {
-
- messup([[0, (0 << 6) + (4 << 3) + (3 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time.mode).to.equal('client');
- done();
- });
- });
-
- it('fails on bad mode (broadcast)', function (done) {
-
- messup([[0, (0 << 6) + (4 << 3) + (5 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time.mode).to.equal('broadcast');
- done();
- });
- });
-
- it('fails on bad mode (reserved)', function (done) {
-
- messup([[0, (0 << 6) + (4 << 3) + (6 << 0)]]);
-
- Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) {
-
- expect(err).to.exist;
- expect(time.mode).to.equal('reserved');
- done();
- });
- });
- });
-
- describe('#offset', function () {
-
- it('gets the current offset', function (done) {
-
- Sntp.offset(function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.not.equal(0);
- done();
- });
- });
-
- it('gets the current offset from cache', function (done) {
-
- Sntp.offset(function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.not.equal(0);
- var offset1 = offset;
- Sntp.offset({}, function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.equal(offset1);
- done();
- });
- });
- });
-
- it('gets the new offset on different server', function (done) {
-
- Sntp.offset(function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.not.equal(0);
- var offset1 = offset;
- Sntp.offset({ host: 'nist1-sj.ustiming.org' }, function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.not.equal(offset1);
- done();
- });
- });
- });
-
- it('gets the new offset on different server', function (done) {
-
- Sntp.offset(function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.not.equal(0);
- var offset1 = offset;
- Sntp.offset({ port: 123 }, function (err, offset) {
-
- expect(err).to.not.exist;
- expect(offset).to.not.equal(offset1);
- done();
- });
- });
- });
-
- it('fails getting the current offset on invalid server', function (done) {
-
- Sntp.offset({ host: 'error' }, function (err, offset) {
-
- expect(err).to.exist;
- expect(offset).to.equal(0);
- done();
- });
- });
- });
-
- describe('#now', function () {
-
- it('starts auto-sync, gets now, then stops', function (done) {
-
- Sntp.stop();
-
- var before = Sntp.now();
- expect(before).to.equal(Date.now());
-
- Sntp.start(function () {
-
- var now = Sntp.now();
- expect(now).to.not.equal(Date.now());
- Sntp.stop();
-
- done();
- });
- });
-
- it('starts twice', function (done) {
-
- Sntp.start(function () {
-
- Sntp.start(function () {
-
- var now = Sntp.now();
- expect(now).to.not.equal(Date.now());
- Sntp.stop();
-
- done();
- });
- });
- });
-
- it('starts auto-sync, gets now, waits, gets again after timeout', function (done) {
-
- Sntp.stop();
-
- var before = Sntp.now();
- expect(before).to.equal(Date.now());
-
- Sntp.start({ clockSyncRefresh: 100 }, function () {
-
- var now = Sntp.now();
- expect(now).to.not.equal(Date.now());
- expect(now).to.equal(Sntp.now());
-
- setTimeout(function () {
-
- expect(Sntp.now()).to.not.equal(now);
- Sntp.stop();
- done();
- }, 110);
- });
- });
- });
-});
-
diff --git a/node_modules/request/node_modules/hawk/package.json b/node_modules/request/node_modules/hawk/package.json
deleted file mode 100644
index b7077b398..000000000
--- a/node_modules/request/node_modules/hawk/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "hawk",
- "description": "HTTP Hawk Authentication Scheme",
- "version": "2.3.1",
- "author": {
- "name": "Eran Hammer",
- "email": "eran@hammer.io",
- "url": "http://hueniverse.com"
- },
- "contributors": [],
- "repository": {
- "type": "git",
- "url": "git://github.com/hueniverse/hawk.git"
- },
- "main": "index",
- "keywords": [
- "http",
- "authentication",
- "scheme",
- "hawk"
- ],
- "engines": {
- "node": ">=0.8.0"
- },
- "browser": "./lib/browser.js",
- "dependencies": {
- "hoek": "2.x.x",
- "boom": "2.x.x",
- "cryptiles": "2.x.x",
- "sntp": "1.x.x"
- },
- "devDependencies": {
- "code": "1.x.x",
- "lab": "5.x.x"
- },
- "scripts": {
- "test": "make test-cov"
- },
- "licenses": [
- {
- "type": "BSD",
- "url": "http://github.com/hueniverse/hawk/raw/master/LICENSE"
- }
- ],
- "readme": "![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png)\n\n<img align=\"right\" src=\"https://raw.github.com/hueniverse/hawk/master/images/logo.png\" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial\nHTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz).\n\nCurrent version: **2.3**\n\nNote: 2.x is the same exact protocol as 1.1. The version increment reflects a change in the internal error format\nused by the module and used by the node API.\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk)\n\n# Table of Content\n\n- [**Introduction**](#introduction)\n - [Replay Protection](#replay-protection)\n - [Usage Example](#usage-example)\n - [Protocol Example](#protocol-example)\n - [Payload Validation](#payload-validation)\n - [Response Payload Validation](#response-payload-validation)\n - [Browser Support and Considerations](#browser-support-and-considerations)\n<p></p>\n- [**Single URI Authorization**](#single-uri-authorization)\n - [Usage Example](#bewit-usage-example)\n<p></p>\n- [**Security Considerations**](#security-considerations)\n - [MAC Keys Transmission](#mac-keys-transmission)\n - [Confidentiality of Requests](#confidentiality-of-requests)\n - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers)\n - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials)\n - [Entropy of Keys](#entropy-of-keys)\n - [Coverage Limitations](#coverage-limitations)\n - [Future Time Manipulation](#future-time-manipulation)\n - [Client Clock Poisoning](#client-clock-poisoning)\n - [Bewit Limitations](#bewit-limitations)\n - [Host Header Forgery](#host-header-forgery)\n<p></p>\n- [**Frequently Asked Questions**](#frequently-asked-questions)\n<p></p>\n- [**Implementations**](#implementations)\n- [**Acknowledgements**](#acknowledgements)\n\n# Introduction\n\n**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with\npartial cryptographic verification of the request and response, covering the HTTP method, request URI, host,\nand optionally the request payload.\n\nSimilar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of\nclient credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme,\nthe key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is\nincluded in its place.\n\nHowever, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of\nreplay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less\n\"chattiness\" (interaction with the server).\n\nAlso unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because\nthe client and server must both have access to the key material in the clear.\n\nThe primary design goals of this scheme are to:\n* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources,\n* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where\n to send an authenticated request), and\n* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client\n failure to validate the server's identity as part of its TLS handshake.\n\nIn addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using\na query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).\n\nThe **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server,\nwhich is beyond the scope of this module. Typically, the shared credentials are established via an initial\nTLS-protected phase or derived from some other shared confidential information available to both the client\nand the server.\n\n\n## Replay Protection\n\nWithout replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more \nthan once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when \nmaking requests. This gives the server enough information to prevent replay attacks.\n\nThe nonce is generated by the client, and is a string unique across all requests with the same timestamp and\nkey identifier combination. \n\nThe timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards\nare rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks.\nBy default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in\npractice translates to a maximum of 2 minutes as the skew can be positive or negative).\n\nUsing a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client\nclock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types\n(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response\nto a bad timestamp.\n\nThere is no expectation that the client will adjust its system clock to match the server (in fact, this would be a\npotential attack vector). Instead, the client only uses the server's time to calculate an offset used only\nfor communications with that particular server. The protocol rewards clients with synchronized clocks by reducing\nthe number of round trips required to authenticate the first request.\n\n\n## Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256',\n user: 'Steve'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n // Authenticate incoming request\n\n Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {\n\n // Prepare response\n\n var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');\n var headers = { 'Content-Type': 'text/plain' };\n\n // Generate Server-Authorization response header\n\n var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] });\n headers['Server-Authorization'] = header;\n\n // Send the response back\n\n res.writeHead(!err ? 200 : 401, headers);\n res.end(payload);\n });\n};\n\n// Start server\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nClient code:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Request options\n\nvar requestOptions = {\n uri: 'http://example.com:8000/resource/1?b=1&a=2',\n method: 'GET',\n headers: {}\n};\n\n// Generate Authorization request header\n\nvar header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' });\nrequestOptions.headers.Authorization = header.field;\n\n// Send authenticated request\n\nRequest(requestOptions, function (error, response, body) {\n\n // Authenticate the server's response\n\n var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });\n\n // Output results\n\n console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));\n});\n```\n\n**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local\nmachine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method.\n\n```javascript\nHawk.sntp.start();\n```\n\n\n## Protocol Example\n\nThe client attempts to access a protected resource without authentication, sending the following HTTP request to\nthe resource server:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\n```\n\nThe resource server returns an authentication challenge.\n\n```\nHTTP/1.1 401 Unauthorized\nWWW-Authenticate: Hawk\n```\n\nThe client has previously obtained a set of **Hawk** credentials for accessing resources on the \"http://example.com/\"\nserver. The **Hawk** credentials issued to the client include the following attributes:\n\n* Key identifier: dh37fgj492je\n* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\n* Algorithm: sha256\n\nThe client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1,\n1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline\ncharacter):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nGET\n/resource/1?b=1&a=2\nexample.com\n8000\n\nsome-app-ext-data\n\n```\n\nThe request MAC is calculated using HMAC with the specified hash algorithm \"sha256\" and the key over the normalized request string.\nThe result is base64-encoded to produce the request MAC:\n\n```\n6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\n```\n\nThe client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using\nthe HTTP `Authorization` request header field:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", ext=\"some-app-ext-data\", mac=\"6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\"\n```\n\nThe server validates the request by calculating the request MAC again based on the request received and verifies the validity\nand scope of the **Hawk** credentials. If valid, the server responds with the requested resource.\n\n\n### Payload Validation\n\n**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash\nusing the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):\n* `hawk.1.payload`\n* the content-type in lowercase, without any parameters (e.g. `application/json`)\n* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability)\n\nFor example:\n\n* Payload: `Thank you for flying Hawk`\n* Content Type: `text/plain`\n* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=`\n\nResults in the following input to the payload hash function (newline terminated values):\n\n```\nhawk.1.payload\ntext/plain\nThank you for flying Hawk\n\n```\n\nWhich produces the following hash value:\n\n```\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\n```\n\nThe client constructs the normalized request string (newline terminated values):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource/1?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n\n```\n\nThen calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data,\nand request MAC, with the request using the HTTP `Authorization` request header field:\n\n```\nPOST /resource/1?a=1&b=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", hash=\"Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\", ext=\"some-app-ext-data\", mac=\"aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=\"\n```\n\nIt is up to the server if and when it validates the payload for any given request, based solely on it's security policy\nand the nature of the data included.\n\nIf the payload is available at the time of authentication, the server uses the hash value provided by the client to construct\nthe normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value\nwith the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.\n\nHowever, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed\nat a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value\nprovided by the client after validating the MAC.\n\nIt is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value\nincluded in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided\nby the client, the payload may be modified by an attacker.\n\n\n## Response Payload Validation\n\n**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the\nclient to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header\nas a response header using the exact same syntax as the `Authorization` request header field.\n\nThe header is contructed using the same process as the client's request header. The server uses the same credentials and other\nartifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with\nnew values based on the server response. The rest as identical to those used by the client.\n\nThe result MAC digest is included with the optional `hash` and `ext` values:\n\n```\nServer-Authorization: Hawk mac=\"XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\", ext=\"response-specific\"\n```\n\n\n## Browser Support and Considerations\n\nA browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js). It's also a [component](http://component.io/hueniverse/hawk).\n\n**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client.\nTherefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value\n_\"WWW-Authenticate, Server-Authorization\"_ on each response from your server. As explained in the\n[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers\ncan safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a\n[\"simple response header\"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the\nHawk client from authenticating the requests.You can read more about the why and how in this\n[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server)\n\n\n# Single URI Authorization\n\nThere are cases in which limited and short-term access to a protected resource is granted to a third party which does not\nhave access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk**\nprovides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains\nthe necessary credentials to authenticate the request.\n\nBecause of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests\nand for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same\ncredentials as the client to maintain clear traceability as to who issued which credentials.\n\nIn order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within\nthe granted access timeframe. \n\n\n## Bewit Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {\n\n res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' });\n res.end(!err ? 'Access granted' : 'Shoosh!');\n });\n};\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nBewit code generation:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Generate bewit\n\nvar duration = 60 * 5; // 5 Minutes\nvar bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' });\nvar uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit;\n```\n\n\n# Security Considerations\n\nThe greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use.\nImplementers are strongly encouraged to assess how this module addresses their security requirements. This section includes\nan incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server.\nMany of the protections provided in **Hawk** depends on whether and how they are used.\n\n### MAC Keys Transmission\n\n**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used\nto obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.\n\n### Confidentiality of Requests\n\nWhile **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request\nconfidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should\ncarefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms\nto protect sensitive resources.\n\n### Spoofing by Counterfeit Servers\n\n**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server\nmay choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to\nthe server to determine when such measure is included, to up to the client to enforce that policy.\n\nA hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise\nincorrect responses. Service providers should consider such attacks when developing services using this protocol, and should\nrequire transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.\n\n### Plaintext Storage of Credentials\n\nThe **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC,\nthe server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which\nstore only a one-way hash of user credentials.\n\nIf an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able\nto perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized\naccess.\n\n### Entropy of Keys\n\nUnless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request\nMAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to\nassign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk**\ncredentials are valid.\n\nFor example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force\nattack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the\nlongest key reasonable.\n\nIt is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high\nquality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit\npatterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use\ncryptographically secure PRNGs to avoid these problems.\n\n### Coverage Limitations\n\nThe request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers\nwhich can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence\nor value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the\n`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC.\n\nThe response authentication, when performed, only covers the response payload, content-type, and the request information \nprovided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or\nany other response header field (e.g. Location) which can affect the client's behaviour.\n\n### Future Time Manipulation\n\nThe protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its\ncurrent time when an invalid timestamp is received.\n\nIf an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause\nthe client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will\nnot likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then\nbe able to replay the request at the correct time without detection.\n\nThe client must only use the time information provided by the server if:\n* it was delivered over a TLS connection and the server identity has been verified, or\n* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified.\n\n### Client Clock Poisoning\n\nWhen receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use\nthe time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with\nthat particular server.\n\n### Bewit Limitations\n\nSpecial care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot\nbe revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with\naccess to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET\nrequests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private\nand sensitive information.\n\n### Host Header Forgery\n\nHawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port`\noptions are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and\nuse that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server\nimplementors must manually verify that the host header received matches their expectation (or use the options mentioned above).\n\n# Frequently Asked Questions\n\n### Where is the protocol specification?\n\nIf you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source\nproject instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about\nsomething? Open an issue!\n\n### Is it done?\n\nAs of version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental\nand is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions\nand suggestions.\n\n### Where can I find **Hawk** implementations in other languages?\n\n**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, it has been ported to other languages.\nThe full list is maintained [here](https://github.com/hueniverse/hawk/issues?labels=port&state=closed). Please add an issue if you are\nworking on another port. A cross-platform test-suite is in the works.\n\n### Why isn't the algorithm part of the challenge or dynamically negotiated?\n\nThe algorithm used is closely related to the key issued as different algorithms require different key sizes (and other\nrequirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm\ntogether as part of the issued credentials.\n\n### Why is Host and Content-Type the only headers covered by the request MAC?\n\nIt is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no\nwell-established way to normalize them. Many platforms change the case of header field names and values. The only\nstraight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request,\nan approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information,\nand introduces other security issues because firewalls will not be aware of these \"hidden\" headers. In addition, any information\nrepeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.\n\n### Why not just use HTTP Digest?\n\nDigest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send\na protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile\nwhere extra round-trip are costly.\n\n### Why bother with all this nonce and timestamp business?\n\n**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp\nand nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses\nit by requiring the client to sync its clock, but provides it with tools to accomplish it.\n\nIn general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected\nsystem where the clients are implemented using best practices and are under the control of the server. Instead of dropping\nreplay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers\nwith the ability to decide how to enforce their security policy without impacting the client's implementation.\n\n### What are `app` and `dlg` in the authorization header and normalized mac string?\n\nThe original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which\nthis module is specifically designed for, and a delegated access mode which is being developed separately in\n[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`.\nThis provides binding between the credentials and the application in a way that prevents an attacker from tricking an application\nto use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the\napplication the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly,\nbut with the additional security of delegated credentials.\n\n### What is the purpose of the static strings used in each normalized MAC input?\n\nWhen calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being\nused or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request,\nresponse, and a bewit use cases). It also protects against exploits created after a potential change in how the protocol\ncreates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it\ncan create an exploit opportunity for cases where the nonce is similar in format to a timestamp.\n\n### Does **Hawk** have anything to do with OAuth?\n\nShort answer: no.\n\n**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent\nincompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it\nto authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard\nat work to produce more garbage.\n\n**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case\nof delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz).\n\n# Implementations\n\n- [Logibit Hawk in F#/.Net](https://github.com/logibit/logibit.hawk/)\n- [Tent Hawk in Ruby](https://github.com/tent/hawk-ruby)\n- [Wealdtech in Java](https://github.com/wealdtech/hawk)\n- [Kumar's Mohawk in Python](https://github.com/kumar303/mohawk/)\n\n# Acknowledgements\n\n**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal\nco-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.\n\nSpecial thanks to Ben Laurie for his always insightful feedback and advice.\n\nThe **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com).\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/hueniverse/hawk/issues"
- },
- "homepage": "https://github.com/hueniverse/hawk#readme",
- "_id": "hawk@2.3.1",
- "_shasum": "1e731ce39447fa1d0f6d707f7bceebec0fd1ec1f",
- "_resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
- "_from": "hawk@>=2.3.0 <2.4.0"
-}
diff --git a/node_modules/request/node_modules/hawk/test/browser.js b/node_modules/request/node_modules/hawk/test/browser.js
deleted file mode 100755
index a45241389..000000000
--- a/node_modules/request/node_modules/hawk/test/browser.js
+++ /dev/null
@@ -1,1453 +0,0 @@
-// Load modules
-
-var Url = require('url');
-var Code = require('code');
-var Hawk = require('../lib');
-var Hoek = require('hoek');
-var Lab = require('lab');
-var Browser = require('../lib/browser');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Browser', function () {
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- id: id,
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: (id === '1' ? 'sha1' : 'sha256'),
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- it('should generate a bewit then successfully authenticate it', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?a=1&b=2',
- host: 'example.com',
- port: 80
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- var bewit = Browser.client.bewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100, ext: 'some-app-data' });
- req.url += '&bewit=' + bewit;
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(attributes.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('should generate a bewit then successfully authenticate it (no ext)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?a=1&b=2',
- host: 'example.com',
- port: 80
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- var bewit = Browser.client.bewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100 });
- req.url += '&bewit=' + bewit;
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
- });
-
- describe('#bewit', function () {
-
- it('returns a valid bewit value', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdca3NjeHdOUjJ0SnBQMVQxekRMTlBiQjVVaUtJVTl0T1NKWFRVZEc3WDloOD1ceGFuZHlhbmR6');
- done();
- });
-
- it('returns a valid bewit value (explicit HTTP port)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('http://example.com:8080/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdcaFpiSjNQMmNLRW80a3kwQzhqa1pBa1J5Q1p1ZWc0V1NOYnhWN3ZxM3hIVT1ceGFuZHlhbmR6');
- done();
- });
-
- it('returns a valid bewit value (explicit HTTPS port)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('https://example.com:8043/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdcL2t4UjhwK0xSaTdvQTRnUXc3cWlxa3BiVHRKYkR4OEtRMC9HRUwvVytTUT1ceGFuZHlhbmR6');
- done();
- });
-
- it('returns a valid bewit value (null ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: null });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdcSUdZbUxnSXFMckNlOEN4dktQczRKbFdJQStValdKSm91d2dBUmlWaENBZz1c');
- done();
- });
-
- it('errors on invalid options', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', 4);
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on missing uri', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid uri', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit(5, { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- var credentials = {
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on missing credentials', function (done) {
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', { ttlSec: 3000, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- var credentials = {
- id: '123456',
- algorithm: 'sha256'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid algorithm', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'hmac-sha-0'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on missing options', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'hmac-sha-0'
- };
-
- var bewit = Browser.client.bewit('https://example.com/somewhere/over/the/rainbow');
- expect(bewit).to.equal('');
- done();
- });
- });
-
- it('generates a header then successfully parse it (configuration)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (node request)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (browserify)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- },
- getHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (time offset)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', localtimeOffsetMsec: 100000 }).field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (no server header options)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts);
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (no server header)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header with stale ts and successfully authenticate on second call', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- Browser.utils.setNtpOffset(60 * 60 * 1000);
- var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' });
- req.authorization = header.field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Stale timestamp');
-
- var res = {
- headers: {
- 'www-authenticate': err.output.headers['WWW-Authenticate']
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000);
- expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true);
- expect(Browser.utils.getNtpOffset()).to.equal(0);
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
- });
-
- it('generates a header with stale ts and successfully authenticate on second call (manual localStorage)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- var localStorage = new Browser.internals.LocalStorage();
-
- Browser.utils.setStorage(localStorage)
-
- Browser.utils.setNtpOffset(60 * 60 * 1000);
- var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' });
- req.authorization = header.field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Stale timestamp');
-
- var res = {
- headers: {
- 'www-authenticate': err.output.headers['WWW-Authenticate']
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- expect(parseInt(localStorage.getItem('hawk_ntp_offset'))).to.equal(60 * 60 * 1000);
- expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000);
- expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true);
- expect(Browser.utils.getNtpOffset()).to.equal(0);
- expect(parseInt(localStorage.getItem('hawk_ntp_offset'))).to.equal(0);
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
- });
-
- it('generates a header then fails to parse it (missing server header hash)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts);
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (with hash)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it then validate payload', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true();
- expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false();
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (app)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(artifacts.app).to.equal('asd23ased');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (app, dlg)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(artifacts.app).to.equal('asd23ased');
- expect(artifacts.dlg).to.equal('23434szr3q4d');
- done();
- });
- });
- });
-
- it('generates a header then fail authentication due to bad hash', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad payload hash');
- done();
- });
- });
- });
-
- it('generates a header for one resource then fail to authenticate another', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field;
- req.url = '/something/else';
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(credentials).to.exist();
- done();
- });
- });
- });
-
- describe('client', function () {
-
- describe('#header', function () {
-
- it('returns a valid authorization header (sha1)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var header = Browser.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="');
- done();
- });
-
- it('returns a valid authorization header (sha256)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="');
- done();
- });
-
- it('returns a valid authorization header (empty payload)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var header = Browser.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: '' }).field;
- expect(header).to.equal('Hawk id=\"123456\", ts=\"1353809207\", nonce=\"Ygvqdz\", hash=\"404ghL7K+hfyhByKKejFBRGgTjU=\", ext=\"Bazinga!\", mac=\"Bh1sj1DOfFRWOdi3ww52nLCJdBE=\"');
- done();
- });
-
- it('returns a valid authorization header (no ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="');
- done();
- });
-
- it('returns a valid authorization header (null ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain', ext: null }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="');
- done();
- });
-
- it('returns a valid authorization header (uri object)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var uri = Browser.utils.parseUri('https://example.net/somewhere/over/the/rainbow');
- var header = Browser.client.header(uri, 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="');
- done();
- });
-
- it('errors on missing options', function (done) {
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST');
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on empty uri', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on invalid uri', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header(4, 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on missing method', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', '', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on invalid method', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 5, { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on missing credentials', function (done) {
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid credentials object');
- done();
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- var credentials = {
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid credentials object');
- done();
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- var credentials = {
- id: '123456',
- algorithm: 'sha256'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid credentials object');
- done();
- });
-
- it('errors on invalid algorithm', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'hmac-sha-0'
- };
-
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Unknown algorithm');
- done();
- });
-
- it('uses a pre-calculated payload hash', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var options = { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' };
- options.hash = Browser.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType);
- var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', options).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="');
- done();
- });
- });
-
- describe('#authenticate', function () {
-
- it('skips tsm validation when missing ts', function (done) {
-
- var res = {
- headers: {
- 'www-authenticate': 'Hawk error="Stale timestamp"'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var artifacts = {
- ts: 1402135580,
- nonce: 'iBRB6t',
- method: 'GET',
- resource: '/resource/4?filter=a',
- host: 'example.com',
- port: '8080',
- ext: 'some-app-data'
- };
-
- expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
-
- it('returns false on invalid header', function (done) {
-
- var res = {
- headers: {
- 'server-authorization': 'Hawk mac="abc", bad="xyz"'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- expect(Browser.client.authenticate(res, {})).to.equal(false);
- done();
- });
-
- it('returns false on invalid mac', function (done) {
-
- var res = {
- headers: {
- 'content-type': 'text/plain',
- 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1362336900',
- nonce: 'eb5S_L',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- app: undefined,
- dlg: undefined,
- mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=',
- id: '123456'
- };
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(false);
- done();
- });
-
- it('returns true on ignoring hash', function (done) {
-
- var res = {
- headers: {
- 'content-type': 'text/plain',
- 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1362336900',
- nonce: 'eb5S_L',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- app: undefined,
- dlg: undefined,
- mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=',
- id: '123456'
- };
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
-
- it('errors on invalid WWW-Authenticate header format', function (done) {
-
- var res = {
- headers: {
- 'www-authenticate': 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- expect(Browser.client.authenticate(res, {})).to.equal(false);
- done();
- });
-
- it('errors on invalid WWW-Authenticate header format', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var res = {
- headers: {
- 'www-authenticate': 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"'
- },
- getResponseHeader: function (header) {
-
- return res.headers[header.toLowerCase()];
- }
- };
-
- expect(Browser.client.authenticate(res, credentials)).to.equal(false);
- done();
- });
- });
-
- describe('#message', function () {
-
- it('generates an authorization then successfully parse it', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
- });
-
- it('generates an authorization using custom nonce/timestamp', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: credentials, nonce: 'abc123', timestamp: 1398536270957 });
- expect(auth).to.exist();
- expect(auth.nonce).to.equal('abc123');
- expect(auth.ts).to.equal(1398536270957);
- done();
- });
- });
-
- it('errors on missing host', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message(null, 8080, 'some message', { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on invalid host', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message(5, 8080, 'some message', { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on missing port', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 0, 'some message', { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on invalid port', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 'a', 'some message', { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on missing message', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 8080, undefined, { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on null message', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 8080, null, { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on invalid message', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Browser.client.message('example.com', 8080, 5, { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on missing credentials', function (done) {
-
- var auth = Browser.client.message('example.com', 8080, 'some message', {});
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on missing options', function (done) {
-
- var auth = Browser.client.message('example.com', 8080, 'some message');
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var creds = Hoek.clone(credentials);
- delete creds.id;
- var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: creds });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var creds = Hoek.clone(credentials);
- delete creds.key;
- var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: creds });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('errors on invalid algorithm', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var creds = Hoek.clone(credentials);
- creds.algorithm = 'blah';
- var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: creds });
- expect(auth).to.not.exist();
- done();
- });
- });
- });
-
- describe('#authenticateTimestamp', function (done) {
-
- it('validates a timestamp', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var tsm = Hawk.crypto.timestampMessage(credentials);
- expect(Browser.client.authenticateTimestamp(tsm, credentials)).to.equal(true);
- done();
- });
- });
-
- it('validates a timestamp without updating local time', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var offset = Browser.utils.getNtpOffset();
- var tsm = Hawk.crypto.timestampMessage(credentials, 10000);
- expect(Browser.client.authenticateTimestamp(tsm, credentials, false)).to.equal(true);
- expect(offset).to.equal(Browser.utils.getNtpOffset());
- done();
- });
- });
-
- it('detects a bad timestamp', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var tsm = Hawk.crypto.timestampMessage(credentials);
- tsm.ts = 4;
- expect(Browser.client.authenticateTimestamp(tsm, credentials)).to.equal(false);
- done();
- });
- });
- });
- });
-
- describe('internals', function () {
-
- describe('LocalStorage', function () {
-
- it('goes through the full lifecycle', function (done) {
-
- var storage = new Browser.internals.LocalStorage();
- expect(storage.length).to.equal(0);
- expect(storage.getItem('a')).to.equal(null);
- storage.setItem('a', 5);
- expect(storage.length).to.equal(1);
- expect(storage.key()).to.equal('a');
- expect(storage.key(0)).to.equal('a');
- expect(storage.getItem('a')).to.equal('5');
- storage.setItem('b', 'test');
- expect(storage.key()).to.equal('a');
- expect(storage.key(0)).to.equal('a');
- expect(storage.key(1)).to.equal('b');
- expect(storage.length).to.equal(2);
- expect(storage.getItem('b')).to.equal('test');
- storage.removeItem('a');
- expect(storage.length).to.equal(1);
- expect(storage.getItem('a')).to.equal(null);
- expect(storage.getItem('b')).to.equal('test');
- storage.clear();
- expect(storage.length).to.equal(0);
- expect(storage.getItem('a')).to.equal(null);
- expect(storage.getItem('b')).to.equal(null);
- done();
- });
- });
- });
-
- describe('utils', function () {
-
- describe('#setStorage', function () {
-
- it('sets storage for the first time', function (done) {
-
- Browser.utils.storage = new Browser.internals.LocalStorage(); // Reset state
-
- expect(Browser.utils.storage.getItem('hawk_ntp_offset')).to.not.exist();
- Browser.utils.storage.setItem('test', '1');
- Browser.utils.setStorage(new Browser.internals.LocalStorage());
- expect(Browser.utils.storage.getItem('test')).to.not.exist();
- Browser.utils.storage.setItem('test', '2');
- expect(Browser.utils.storage.getItem('test')).to.equal('2');
- done();
- });
- });
-
- describe('#setNtpOffset', function (done) {
-
- it('catches localStorage errors', function (done) {
-
- var orig = Browser.utils.storage.setItem;
- var error = console.error;
- var count = 0;
- console.error = function () { if (count++ === 2) { console.error = error; } };
- Browser.utils.storage.setItem = function () {
-
- Browser.utils.storage.setItem = orig;
- throw new Error()
- };
-
- expect(function () {
- Browser.utils.setNtpOffset(100);
- }).not.to.throw();
-
- done();
- });
- });
-
- describe('#parseAuthorizationHeader', function (done) {
-
- it('returns null on missing header', function (done) {
-
- expect(Browser.utils.parseAuthorizationHeader()).to.equal(null);
- done();
- });
-
- it('returns null on bad header syntax (structure)', function (done) {
-
- expect(Browser.utils.parseAuthorizationHeader('Hawk')).to.equal(null);
- done();
- });
-
- it('returns null on bad header syntax (parts)', function (done) {
-
- expect(Browser.utils.parseAuthorizationHeader(' ')).to.equal(null);
- done();
- });
-
- it('returns null on bad scheme name', function (done) {
-
- expect(Browser.utils.parseAuthorizationHeader('Basic asdasd')).to.equal(null);
- done();
- });
-
- it('returns null on bad attribute value', function (done) {
-
- expect(Browser.utils.parseAuthorizationHeader('Hawk test="\t"', ['test'])).to.equal(null);
- done();
- });
-
- it('returns null on duplicated attribute', function (done) {
-
- expect(Browser.utils.parseAuthorizationHeader('Hawk test="a", test="b"', ['test'])).to.equal(null);
- done();
- });
- });
-
- describe('#parseUri', function () {
-
- it('returns empty port when unknown scheme', function (done) {
-
- var uri = Browser.utils.parseUri('ftp://domain');
- expect(uri.port).to.equal('');
- done();
- });
-
- it('returns default port when missing', function (done) {
-
- var uri = Browser.utils.parseUri('http://');
- expect(uri.port).to.equal('80');
- done();
- });
- });
-
- var str = "https://www.google.ca/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=url";
- var base64str = "aHR0cHM6Ly93d3cuZ29vZ2xlLmNhL3dlYmhwP3NvdXJjZWlkPWNocm9tZS1pbnN0YW50Jmlvbj0xJmVzcHY9MiZpZT1VVEYtOCNxPXVybA";
-
- describe('#base64urlEncode', function () {
-
- it('should base64 URL-safe decode a string', function (done) {
-
- expect(Browser.utils.base64urlEncode(str)).to.equal(base64str);
- done();
- });
-
- });
-
- });
-});
diff --git a/node_modules/request/node_modules/hawk/test/client.js b/node_modules/request/node_modules/hawk/test/client.js
deleted file mode 100755
index 5983897b2..000000000
--- a/node_modules/request/node_modules/hawk/test/client.js
+++ /dev/null
@@ -1,443 +0,0 @@
-// Load modules
-
-var Url = require('url');
-var Code = require('code');
-var Hawk = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- describe('client', function () {
-
- describe('#header', function () {
-
- it('returns a valid authorization header (sha1)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var header = Hawk.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="');
- done();
- });
-
- it('returns a valid authorization header (sha256)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="');
- done();
- });
-
- it('returns a valid authorization header (no ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="');
- done();
- });
-
- it('returns a valid authorization header (null ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain', ext: null }).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="');
- done();
- });
-
- it('returns a valid authorization header (empty payload)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: '', contentType: 'text/plain' }).field;
- expect(header).to.equal('Hawk id=\"123456\", ts=\"1353809207\", nonce=\"Ygvqdz\", hash=\"q/t+NNAkQZNlq/aAD6PlexImwQTxwgT2MahfTa9XRLA=\", mac=\"U5k16YEzn3UnBHKeBzsDXn067Gu3R4YaY6xOt9PYRZM=\"');
- done();
- });
-
- it('returns a valid authorization header (pre hashed payload)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var options = { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' };
- options.hash = Hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType);
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', options).field;
- expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="');
- done();
- });
-
- it('errors on missing uri', function (done) {
-
- var header = Hawk.client.header('', 'POST');
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on invalid uri', function (done) {
-
- var header = Hawk.client.header(4, 'POST');
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on missing method', function (done) {
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', '');
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on invalid method', function (done) {
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 5);
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on missing options', function (done) {
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST');
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid argument type');
- done();
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- var credentials = {
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid credential object');
- done();
- });
-
- it('errors on missing credentials', function (done) {
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid credential object');
- done();
- });
-
- it('errors on invalid credentials', function (done) {
-
- var credentials = {
- id: '123456',
- algorithm: 'sha256'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Invalid credential object');
- done();
- });
-
- it('errors on invalid algorithm', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'hmac-sha-0'
- };
-
- var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 });
- expect(header.field).to.equal('');
- expect(header.err).to.equal('Unknown algorithm');
- done();
- });
- });
-
- describe('#authenticate', function () {
-
- it('returns false on invalid header', function (done) {
-
- var res = {
- headers: {
- 'server-authorization': 'Hawk mac="abc", bad="xyz"'
- }
- };
-
- expect(Hawk.client.authenticate(res, {})).to.equal(false);
- done();
- });
-
- it('returns false on invalid mac', function (done) {
-
- var res = {
- headers: {
- 'content-type': 'text/plain',
- 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"'
- }
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1362336900',
- nonce: 'eb5S_L',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- app: undefined,
- dlg: undefined,
- mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=',
- id: '123456'
- };
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(false);
- done();
- });
-
- it('returns true on ignoring hash', function (done) {
-
- var res = {
- headers: {
- 'content-type': 'text/plain',
- 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"'
- }
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1362336900',
- nonce: 'eb5S_L',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- app: undefined,
- dlg: undefined,
- mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=',
- id: '123456'
- };
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
-
- it('fails on invalid WWW-Authenticate header format', function (done) {
-
- var header = 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"';
- expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, {})).to.equal(false);
- done();
- });
-
- it('fails on invalid WWW-Authenticate header format', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var header = 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"';
- expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, credentials)).to.equal(false);
- done();
- });
-
- it('skips tsm validation when missing ts', function (done) {
-
- var header = 'Hawk error="Stale timestamp"';
- expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, {})).to.equal(true);
- done();
- });
- });
-
- describe('#message', function () {
-
- it('generates authorization', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, 'I am the boodyman', { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.exist();
- expect(auth.ts).to.equal(1353809207);
- expect(auth.nonce).to.equal('abc123');
- done();
- });
-
- it('errors on invalid host', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message(5, 80, 'I am the boodyman', { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on invalid port', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', '80', 'I am the boodyman', { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on missing host', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 0, 'I am the boodyman', { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on null message', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, null, { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on missing message', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, undefined, { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on invalid message', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, 5, { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on missing options', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, 'I am the boodyman');
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- var credentials = {
- key: '2983d45yun89q',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, 'I am the boodyman', { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- var credentials = {
- id: '123456',
- algorithm: 'sha1'
- };
-
- var auth = Hawk.client.message('example.com', 80, 'I am the boodyman', { credentials: credentials, timestamp: 1353809207, nonce: 'abc123' });
- expect(auth).to.not.exist();
- done();
- });
- });
- });
-});
diff --git a/node_modules/request/node_modules/hawk/test/crypto.js b/node_modules/request/node_modules/hawk/test/crypto.js
deleted file mode 100755
index f2d3d4580..000000000
--- a/node_modules/request/node_modules/hawk/test/crypto.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// Load modules
-
-var Code = require('code');
-var Hawk = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- describe('Crypto', function () {
-
- describe('#generateNormalizedString', function () {
-
- it('should return a valid normalized string', function (done) {
-
- expect(Hawk.crypto.generateNormalizedString('header', {
- credentials: {
- key: 'dasdfasdf',
- algorithm: 'sha256'
- },
- ts: 1357747017,
- nonce: 'k3k4j5',
- method: 'GET',
- resource: '/resource/something',
- host: 'example.com',
- port: 8080
- })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\n\n');
-
- done();
- });
-
- it('should return a valid normalized string (ext)', function (done) {
-
- expect(Hawk.crypto.generateNormalizedString('header', {
- credentials: {
- key: 'dasdfasdf',
- algorithm: 'sha256'
- },
- ts: 1357747017,
- nonce: 'k3k4j5',
- method: 'GET',
- resource: '/resource/something',
- host: 'example.com',
- port: 8080,
- ext: 'this is some app data'
- })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\nthis is some app data\n');
-
- done();
- });
-
- it('should return a valid normalized string (payload + ext)', function (done) {
-
- expect(Hawk.crypto.generateNormalizedString('header', {
- credentials: {
- key: 'dasdfasdf',
- algorithm: 'sha256'
- },
- ts: 1357747017,
- nonce: 'k3k4j5',
- method: 'GET',
- resource: '/resource/something',
- host: 'example.com',
- port: 8080,
- hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=',
- ext: 'this is some app data'
- })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\nU4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=\nthis is some app data\n');
-
- done();
- });
- });
- });
-});
-
diff --git a/node_modules/request/node_modules/hawk/test/index.js b/node_modules/request/node_modules/hawk/test/index.js
deleted file mode 100755
index 39f2c5b86..000000000
--- a/node_modules/request/node_modules/hawk/test/index.js
+++ /dev/null
@@ -1,378 +0,0 @@
-// Load modules
-
-var Url = require('url');
-var Code = require('code');
-var Hawk = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- id: id,
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: (id === '1' ? 'sha1' : 'sha256'),
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- it('generates a header then successfully parse it (configuration)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header(Url.parse('http://example.com:8080/resource/4?filter=a'), req.method, { credentials: credentials, ext: 'some-app-data' }).field;
- expect(req.authorization).to.exist();
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (node request)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (absolute request uri)', function (done) {
-
- var req = {
- method: 'POST',
- url: 'http://example.com:8080/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (no server header options)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts);
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
- });
- });
-
- it('generates a header then fails to parse it (missing server header hash)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:8080',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- var payload = 'some not so random text';
-
- credentialsFunc('123456', function (err, credentials) {
-
- var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] });
- req.headers.authorization = reqHeader.field;
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true);
-
- var res = {
- headers: {
- 'content-type': 'text/plain'
- }
- };
-
- res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts);
- expect(res.headers['server-authorization']).to.exist();
-
- expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false);
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (with hash)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it then validate payload', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true();
- expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false();
- done();
- });
- });
- });
-
- it('generates a header then successfully parses and validates payload', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, { payload: 'hola!' }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (app)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(artifacts.app).to.equal('asd23ased');
- done();
- });
- });
- });
-
- it('generates a header then successfully parse it (app, dlg)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field;
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(artifacts.ext).to.equal('some-app-data');
- expect(artifacts.app).to.equal('asd23ased');
- expect(artifacts.dlg).to.equal('23434szr3q4d');
- done();
- });
- });
- });
-
- it('generates a header then fail authentication due to bad hash', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field;
- Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad payload hash');
- done();
- });
- });
- });
-
- it('generates a header for one resource then fail to authenticate another', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field;
- req.url = '/something/else';
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(credentials).to.exist();
- done();
- });
- });
- });
-});
diff --git a/node_modules/request/node_modules/hawk/test/message.js b/node_modules/request/node_modules/hawk/test/message.js
deleted file mode 100755
index b0494cc45..000000000
--- a/node_modules/request/node_modules/hawk/test/message.js
+++ /dev/null
@@ -1,261 +0,0 @@
-// Load modules
-
-var Url = require('url');
-var Code = require('code');
-var Hawk = require('../lib');
-var Hoek = require('hoek');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- id: id,
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: (id === '1' ? 'sha1' : 'sha256'),
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- it('should generate an authorization then successfully parse it', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
- });
-
- it('should fail authorization on mismatching host', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example1.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Bad mac');
- done();
- });
- });
- });
-
- it('should fail authorization on stale timestamp', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Stale timestamp');
- done();
- });
- });
- });
-
- it('overrides timestampSkewSec', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials, localtimeOffsetMsec: 100000 });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { timestampSkewSec: 500 }, function (err, credentials) {
-
- expect(err).to.not.exist();
- done();
- });
- });
- });
-
- it('should fail authorization on invalid authorization', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
- delete auth.id;
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid authorization');
- done();
- });
- });
- });
-
- it('should fail authorization on bad hash', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message1', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Bad message hash');
- done();
- });
- });
- });
-
- it('should fail authorization on nonce error', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { nonceFunc: function (nonce, ts, callback) { callback (new Error('kaboom')); } }, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid nonce');
- done();
- });
- });
- });
-
- it('should fail authorization on credentials error', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- var errFunc = function (id, callback) {
-
- callback(new Error('kablooey'));
- };
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('kablooey');
- done();
- });
- });
- });
-
- it('should fail authorization on missing credentials', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- var errFunc = function (id, callback) {
-
- callback();
- };
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Unknown credentials');
- done();
- });
- });
- });
-
- it('should fail authorization on invalid credentials', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- var errFunc = function (id, callback) {
-
- callback(null, {});
- };
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid credentials');
- done();
- });
- });
- });
-
- it('should fail authorization on invalid credentials algorithm', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- expect(auth).to.exist();
-
- var errFunc = function (id, callback) {
-
- callback(null, { key: '123', algorithm: '456' });
- };
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Unknown algorithm');
- done();
- });
- });
- });
-
- it('should fail on missing host', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message(null, 8080, 'some message', { credentials: credentials });
- expect(auth).to.not.exist();
- done();
- });
- });
-
- it('should fail on missing credentials', function (done) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', {});
- expect(auth).to.not.exist();
- done();
- });
-
- it('should fail on invalid algorithm', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var creds = Hoek.clone(credentials);
- creds.algorithm = 'blah';
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: creds });
- expect(auth).to.not.exist();
- done();
- });
- });
-});
diff --git a/node_modules/request/node_modules/hawk/test/readme.js b/node_modules/request/node_modules/hawk/test/readme.js
deleted file mode 100755
index 60af19983..000000000
--- a/node_modules/request/node_modules/hawk/test/readme.js
+++ /dev/null
@@ -1,98 +0,0 @@
-// Load modules
-
-var Code = require('code');
-var Hawk = require('../lib');
-var Hoek = require('hoek');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- describe('README', function () {
-
- describe('core', function () {
-
- var credentials = {
- id: 'dh37fgj492je',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256'
- };
-
- var options = {
- credentials: credentials,
- timestamp: 1353832234,
- nonce: 'j4h3g2',
- ext: 'some-app-ext-data'
- };
-
- it('should generate a header protocol example', function (done) {
-
- var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', options).field;
-
- expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="');
- done();
- });
-
- it('should generate a normalized string protocol example', function (done) {
-
- var normalized = Hawk.crypto.generateNormalizedString('header', {
- credentials: credentials,
- ts: options.timestamp,
- nonce: options.nonce,
- method: 'GET',
- resource: '/resource?a=1&b=2',
- host: 'example.com',
- port: 8000,
- ext: options.ext
- });
-
- expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nGET\n/resource?a=1&b=2\nexample.com\n8000\n\nsome-app-ext-data\n');
- done();
- });
-
- var payloadOptions = Hoek.clone(options);
- payloadOptions.payload = 'Thank you for flying Hawk';
- payloadOptions.contentType = 'text/plain';
-
- it('should generate a header protocol example (with payload)', function (done) {
-
- var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'POST', payloadOptions).field;
-
- expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="');
- done();
- });
-
- it('should generate a normalized string protocol example (with payload)', function (done) {
-
- var normalized = Hawk.crypto.generateNormalizedString('header', {
- credentials: credentials,
- ts: options.timestamp,
- nonce: options.nonce,
- method: 'POST',
- resource: '/resource?a=1&b=2',
- host: 'example.com',
- port: 8000,
- hash: Hawk.crypto.calculatePayloadHash(payloadOptions.payload, credentials.algorithm, payloadOptions.contentType),
- ext: options.ext
- });
-
- expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n');
- done();
- });
- });
- });
-});
-
diff --git a/node_modules/request/node_modules/hawk/test/server.js b/node_modules/request/node_modules/hawk/test/server.js
deleted file mode 100755
index 00d7d085f..000000000
--- a/node_modules/request/node_modules/hawk/test/server.js
+++ /dev/null
@@ -1,985 +0,0 @@
-// Load modules
-
-var Url = require('url');
-var Code = require('code');
-var Hawk = require('../lib');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- describe('server', function () {
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- id: id,
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: (id === '1' ? 'sha1' : 'sha256'),
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- describe('#authenticate', function () {
-
- it('parses a valid authentication header (sha1)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
-
- it('parses a valid authentication header (sha256)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/1?b=1&a=2',
- host: 'example.com',
- port: 8000,
- authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
-
- it('parses a valid authentication header (host override)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example1.com:8080',
- authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"'
- }
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
-
- it('parses a valid authentication header (host port override)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example1.com:80',
- authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"'
- }
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', port: 8080, localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
-
- it('parses a valid authentication header (POST with payload)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123456", ts="1357926341", nonce="1AwuJD", hash="qAiXIVv+yjDATneWxZP2YCTa9aHRgQdnH9b3Wc+o3dg=", ext="some-app-data", mac="UeYcj5UoTVaAWXNvJfLVia7kU3VabxCqrccXP8sUGC4="'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1357926341000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
-
- it('errors on missing hash', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/1?b=1&a=2',
- host: 'example.com',
- port: 8000,
- authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { payload: 'body', localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing required payload hash');
- done();
- });
- });
-
- it('errors on a stale timestamp', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123456", ts="1362337299", nonce="UzmxSs", ext="some-app-data", mac="wnNUxchvvryMH2RxckTdZ/gY3ijzvccx4keVvELC61w="'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Stale timestamp');
- var header = err.output.headers['WWW-Authenticate'];
- var ts = header.match(/^Hawk ts\=\"(\d+)\"\, tsm\=\"([^\"]+)\"\, error=\"Stale timestamp\"$/);
- var now = Hawk.utils.now();
- expect(parseInt(ts[1], 10) * 1000).to.be.within(now - 1000, now + 1000);
-
- var res = {
- headers: {
- 'www-authenticate': header
- }
- };
-
- expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true);
- done();
- });
- });
-
- it('errors on a replay', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="bXx7a7p1h9QYQNZ8x7QhvDQym8ACgab4m3lVSFn4DBw=", ext="hello"'
- };
-
- var memoryCache = {};
- var options = {
- localtimeOffsetMsec: 1353788437000 - Hawk.utils.now(),
- nonceFunc: function (nonce, ts, callback) {
-
- if (memoryCache[nonce]) {
- return callback(new Error());
- }
-
- memoryCache[nonce] = true;
- return callback();
- }
- };
-
- Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
-
- Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid nonce');
- done();
- });
- });
- });
-
- it('errors on an invalid authentication header: wrong scheme', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Basic asdasdasdasd'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.not.exist();
- done();
- });
- });
-
- it('errors on an invalid authentication header: no scheme', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: '!@#'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid header syntax');
- done();
- });
- });
-
- it('errors on an missing authorization header', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.isMissing).to.equal(true);
- done();
- });
- });
-
- it('errors on an missing host header', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- headers: {
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- }
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid Host header');
- done();
- });
- });
-
- it('errors on an missing authorization attribute (id)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing attributes');
- done();
- });
- });
-
- it('errors on an missing authorization attribute (ts)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing attributes');
- done();
- });
- });
-
- it('errors on an missing authorization attribute (nonce)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing attributes');
- done();
- });
- });
-
- it('errors on an missing authorization attribute (mac)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing attributes');
- done();
- });
- });
-
- it('errors on an unknown authorization attribute', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", x="3", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Unknown attribute: x');
- done();
- });
- });
-
- it('errors on an bad authorization header format', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123\\", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad header format');
- done();
- });
- });
-
- it('errors on an bad authorization attribute value', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="\t", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad attribute value: id');
- done();
- });
- });
-
- it('errors on an empty authorization attribute value', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad attribute value: id');
- done();
- });
- });
-
- it('errors on duplicated authorization attribute key', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", id="456", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Duplicate attribute: id');
- done();
- });
- });
-
- it('errors on an invalid authorization header format', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk'
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid header syntax');
- done();
- });
- });
-
- it('errors on an bad host header (missing host)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- headers: {
- host: ':8080',
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- }
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid Host header');
- done();
- });
- });
-
- it('errors on an bad host header (pad port)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com:something',
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- }
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid Host header');
- done();
- });
- });
-
- it('errors on credentialsFunc error', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- return callback(new Error('Unknown user'));
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Unknown user');
- done();
- });
- });
-
- it('errors on credentialsFunc error (with credentials)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- return callback(new Error('Unknown user'), { some: 'value' });
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Unknown user');
- expect(credentials.some).to.equal('value');
- done();
- });
- });
-
- it('errors on missing credentials', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- return callback(null, null);
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Unknown credentials');
- done();
- });
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid credentials');
- expect(err.output.payload.message).to.equal('An internal server error occurred');
- done();
- });
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- id: '23434d3q4d5345d',
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid credentials');
- expect(err.output.payload.message).to.equal('An internal server error occurred');
- done();
- });
- });
-
- it('errors on unknown credentials algorithm', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'hmac-sha-0',
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Unknown algorithm');
- expect(err.output.payload.message).to.equal('An internal server error occurred');
- done();
- });
- });
-
- it('errors on unknown bad mac', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080,
- authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcU4jlr7T/wuKe3dKijvTvSos=", ext="hello"'
- };
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad mac');
- done();
- });
- });
- });
-
- describe('#header', function () {
-
- it('generates header', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var header = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('Hawk mac=\"n14wVJK4cOxAytPUMc5bPezQzuJGl5n7MYXhFQgEKsE=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\", ext=\"response-specific\"');
- done();
- });
-
- it('generates header (empty payload)', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var header = Hawk.server.header(credentials, artifacts, { payload: '', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('Hawk mac=\"i8/kUBDx0QF+PpCtW860kkV/fa9dbwEoe/FpGUXowf0=\", hash=\"q/t+NNAkQZNlq/aAD6PlexImwQTxwgT2MahfTa9XRLA=\", ext=\"response-specific\"');
- done();
- });
-
- it('generates header (pre calculated hash)', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var options = { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' };
- options.hash = Hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType);
- var header = Hawk.server.header(credentials, artifacts, options);
- expect(header).to.equal('Hawk mac=\"n14wVJK4cOxAytPUMc5bPezQzuJGl5n7MYXhFQgEKsE=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\", ext=\"response-specific\"');
- done();
- });
-
- it('generates header (null ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var header = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: null });
- expect(header).to.equal('Hawk mac=\"6PrybJTJs20jsgBw5eilXpcytD8kUbaIKNYXL+6g0ns=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\"');
- done();
- });
-
- it('errors on missing artifacts', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var header = Hawk.server.header(credentials, null, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('');
- done();
- });
-
- it('errors on invalid artifacts', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var header = Hawk.server.header(credentials, 5, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('');
- done();
- });
-
- it('errors on missing credentials', function (done) {
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var header = Hawk.server.header(null, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('');
- done();
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- var credentials = {
- id: '123456',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var header = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('');
- done();
- });
-
- it('errors on invalid algorithm', function (done) {
-
- var credentials = {
- id: '123456',
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'x',
- user: 'steve'
- };
-
- var artifacts = {
- method: 'POST',
- host: 'example.com',
- port: '8080',
- resource: '/resource/4?filter=a',
- ts: '1398546787',
- nonce: 'xUwusx',
- hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
- ext: 'some-app-data',
- mac: 'dvIvMThwi28J61Jc3P0ryAhuKpanU63GXdx6hkmQkJA=',
- id: '123456'
- };
-
- var header = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' });
- expect(header).to.equal('');
- done();
- });
- });
-
- describe('#authenticateMessage', function () {
-
- it('errors on invalid authorization (ts)', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- delete auth.ts;
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid authorization');
- done();
- });
- });
- });
-
- it('errors on invalid authorization (nonce)', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- delete auth.nonce;
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid authorization');
- done();
- });
- });
- });
-
- it('errors on invalid authorization (hash)', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
- delete auth.hash;
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid authorization');
- done();
- });
- });
- });
-
- it('errors with credentials', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
-
- Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, function (id, callback) { callback(new Error('something'), { some: 'value' }); }, {}, function (err, credentials) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('something');
- expect(credentials.some).to.equal('value');
- done();
- });
- });
- });
- });
-
- describe('#authenticatePayloadHash', function () {
-
- it('checks payload hash', function (done) {
-
- expect(Hawk.server.authenticatePayloadHash('abcdefg', { hash: 'abcdefg' })).to.equal(true);
- expect(Hawk.server.authenticatePayloadHash('1234567', { hash: 'abcdefg' })).to.equal(false);
- done();
- });
- });
- });
-});
diff --git a/node_modules/request/node_modules/hawk/test/uri.js b/node_modules/request/node_modules/hawk/test/uri.js
deleted file mode 100755
index e64b0095b..000000000
--- a/node_modules/request/node_modules/hawk/test/uri.js
+++ /dev/null
@@ -1,590 +0,0 @@
-// Load modules
-
-var Http = require('http');
-var Url = require('url');
-var Code = require('code');
-var Hawk = require('../lib');
-var Hoek = require('hoek');
-var Lab = require('lab');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- describe('Uri', function () {
-
- var credentialsFunc = function (id, callback) {
-
- var credentials = {
- id: id,
- key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
- algorithm: 'sha256',
- user: 'steve'
- };
-
- return callback(null, credentials);
- };
-
- it('should generate a bewit then successfully authenticate it', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?a=1&b=2',
- host: 'example.com',
- port: 80
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100, ext: 'some-app-data' });
- req.url += '&bewit=' + bewit;
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(attributes.ext).to.equal('some-app-data');
- done();
- });
- });
- });
-
- it('should generate a bewit then successfully authenticate it (no ext)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?a=1&b=2',
- host: 'example.com',
- port: 80
- };
-
- credentialsFunc('123456', function (err, credentials) {
-
- var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100 });
- req.url += '&bewit=' + bewit;
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- done();
- });
- });
- });
-
- it('should successfully authenticate a request (last param)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(attributes.ext).to.equal('some-app-data');
- done();
- });
- });
-
- it('should successfully authenticate a request (first param)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ&a=1&b=2',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(attributes.ext).to.equal('some-app-data');
- done();
- });
- });
-
- it('should successfully authenticate a request (only param)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.not.exist();
- expect(credentials.user).to.equal('steve');
- expect(attributes.ext).to.equal('some-app-data');
- done();
- });
- });
-
- it('should fail on multiple authentication', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080,
- authorization: 'Basic asdasdasdasd'
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Multiple authentications');
- done();
- });
- });
-
- it('should fail on method other than GET', function (done) {
-
- credentialsFunc('123456', function (err, credentials) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- host: 'example.com',
- port: 8080
- };
-
- var exp = Math.floor(Hawk.utils.now() / 1000) + 60;
- var ext = 'some-app-data';
- var mac = Hawk.crypto.calculateMac('bewit', credentials, {
- timestamp: exp,
- nonce: '',
- method: req.method,
- resource: req.url,
- host: req.host,
- port: req.port,
- ext: ext
- });
-
- var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + ext;
-
- req.url += '&bewit=' + Hoek.base64urlEncode(bewit);
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid method');
- done();
- });
- });
- });
-
- it('should fail on invalid host header', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- headers: {
- host: 'example.com:something'
- }
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid Host header');
- done();
- });
- });
-
- it('should fail on empty bewit', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Empty bewit');
- expect(err.isMissing).to.not.exist();
- done();
- });
- });
-
- it('should fail on invalid bewit', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=*',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid bewit encoding');
- expect(err.isMissing).to.not.exist();
- done();
- });
- });
-
- it('should fail on missing bewit', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.not.exist();
- expect(err.isMissing).to.equal(true);
- done();
- });
- });
-
- it('should fail on invalid bewit structure', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=abc',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Invalid bewit structure');
- done();
- });
- });
-
- it('should fail on empty bewit attribute', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=YVxcY1xk',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing bewit attributes');
- done();
- });
- });
-
- it('should fail on missing bewit id attribute', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=XDQ1NTIxNDc2MjJcK0JFbFhQMXhuWjcvd1Nrbm1ldGhlZm5vUTNHVjZNSlFVRHk4NWpTZVJ4VT1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Missing bewit attributes');
- done();
- });
- });
-
- it('should fail on expired access', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDEzNTY0MTg1ODNcWk1wZlMwWU5KNHV0WHpOMmRucTRydEk3NXNXTjFjeWVITTcrL0tNZFdVQT1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Access expired');
- done();
- });
- });
-
- it('should fail on credentials function error', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, function (id, callback) { callback(Hawk.error.badRequest('Boom')); }, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Boom');
- done();
- });
- });
-
- it('should fail on credentials function error with credentials', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, function (id, callback) { callback(Hawk.error.badRequest('Boom'), { some: 'value' }); }, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Boom');
- expect(credentials.some).to.equal('value');
- done();
- });
- });
-
- it('should fail on null credentials function response', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, function (id, callback) { callback(null, null); }, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Unknown credentials');
- done();
- });
- });
-
- it('should fail on invalid credentials function response', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, function (id, callback) { callback(null, {}); }, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Invalid credentials');
- done();
- });
- });
-
- it('should fail on invalid credentials function response (unknown algorithm)', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'xxx' }); }, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.message).to.equal('Unknown algorithm');
- done();
- });
- });
-
- it('should fail on expired access', function (done) {
-
- var req = {
- method: 'GET',
- url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ',
- host: 'example.com',
- port: 8080
- };
-
- Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'sha256' }); }, {}, function (err, credentials, attributes) {
-
- expect(err).to.exist();
- expect(err.output.payload.message).to.equal('Bad mac');
- done();
- });
- });
- });
-
- describe('#getBewit', function () {
-
- it('returns a valid bewit value', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdca3NjeHdOUjJ0SnBQMVQxekRMTlBiQjVVaUtJVTl0T1NKWFRVZEc3WDloOD1ceGFuZHlhbmR6');
- done();
- });
-
- it('returns a valid bewit value (explicit port)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com:8080/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdcaFpiSjNQMmNLRW80a3kwQzhqa1pBa1J5Q1p1ZWc0V1NOYnhWN3ZxM3hIVT1ceGFuZHlhbmR6');
- done();
- });
-
- it('returns a valid bewit value (null ext)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: null });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdcSUdZbUxnSXFMckNlOEN4dktQczRKbFdJQStValdKSm91d2dBUmlWaENBZz1c');
- done();
- });
-
- it('returns a valid bewit value (parsed uri)', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit(Url.parse('https://example.com/somewhere/over/the/rainbow'), { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdca3NjeHdOUjJ0SnBQMVQxekRMTlBiQjVVaUtJVTl0T1NKWFRVZEc3WDloOD1ceGFuZHlhbmR6');
- done();
- });
-
- it('errors on invalid options', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', 4);
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on missing uri', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid uri', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit(5, { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid credentials (id)', function (done) {
-
- var credentials = {
- key: '2983d45yun89q',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on missing credentials', function (done) {
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { ttlSec: 3000, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid credentials (key)', function (done) {
-
- var credentials = {
- id: '123456',
- algorithm: 'sha256'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on invalid algorithm', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'hmac-sha-0'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, ext: 'xandyandz' });
- expect(bewit).to.equal('');
- done();
- });
-
- it('errors on missing options', function (done) {
-
- var credentials = {
- id: '123456',
- key: '2983d45yun89q',
- algorithm: 'hmac-sha-0'
- };
-
- var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow');
- expect(bewit).to.equal('');
- done();
- });
- });
-});
-
diff --git a/node_modules/request/node_modules/hawk/test/utils.js b/node_modules/request/node_modules/hawk/test/utils.js
deleted file mode 100755
index 9ccda8be3..000000000
--- a/node_modules/request/node_modules/hawk/test/utils.js
+++ /dev/null
@@ -1,120 +0,0 @@
-// Load modules
-
-var Code = require('code');
-var Hawk = require('../lib');
-var Lab = require('lab');
-var Package = require('../package.json');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var describe = lab.experiment;
-var it = lab.test;
-var expect = Code.expect;
-
-
-describe('Hawk', function () {
-
- describe('Utils', function () {
-
- describe('#parseHost', function () {
-
- it('returns port 80 for non tls node request', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com',
- 'content-type': 'text/plain;x=y'
- }
- };
-
- expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(80);
- done();
- });
-
- it('returns port 443 for non tls node request', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: 'example.com',
- 'content-type': 'text/plain;x=y'
- },
- connection: {
- encrypted: true
- }
- };
-
- expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443);
- done();
- });
-
- it('returns port 443 for non tls node request (IPv6)', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: '[123:123:123]',
- 'content-type': 'text/plain;x=y'
- },
- connection: {
- encrypted: true
- }
- };
-
- expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443);
- done();
- });
-
- it('parses IPv6 headers', function (done) {
-
- var req = {
- method: 'POST',
- url: '/resource/4?filter=a',
- headers: {
- host: '[123:123:123]:8000',
- 'content-type': 'text/plain;x=y'
- },
- connection: {
- encrypted: true
- }
- };
-
- var host = Hawk.utils.parseHost(req, 'Host');
- expect(host.port).to.equal('8000');
- expect(host.name).to.equal('[123:123:123]');
- done();
- });
- });
-
- describe('#version', function () {
-
- it('returns the correct package version number', function (done) {
-
- expect(Hawk.utils.version()).to.equal(Package.version);
- done();
- });
- });
-
- describe('#unauthorized', function () {
-
- it('returns a hawk 401', function (done) {
-
- expect(Hawk.utils.unauthorized('kaboom').output.headers['WWW-Authenticate']).to.equal('Hawk error="kaboom"');
- done();
- });
- });
- });
-});
-
-
diff --git a/node_modules/request/node_modules/http-signature/.dir-locals.el b/node_modules/request/node_modules/http-signature/.dir-locals.el
deleted file mode 100644
index 3bc9235f2..000000000
--- a/node_modules/request/node_modules/http-signature/.dir-locals.el
+++ /dev/null
@@ -1,6 +0,0 @@
-((nil . ((indent-tabs-mode . nil)
- (tab-width . 8)
- (fill-column . 80)))
- (js-mode . ((js-indent-level . 2)
- (indent-tabs-mode . nil)
- ))) \ No newline at end of file
diff --git a/node_modules/request/node_modules/http-signature/.npmignore b/node_modules/request/node_modules/http-signature/.npmignore
deleted file mode 100644
index c143fb3a4..000000000
--- a/node_modules/request/node_modules/http-signature/.npmignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.gitmodules
-deps
-docs
-Makefile
-node_modules
-test
-tools \ No newline at end of file
diff --git a/node_modules/request/node_modules/http-signature/LICENSE b/node_modules/request/node_modules/http-signature/LICENSE
deleted file mode 100644
index f6d947d2f..000000000
--- a/node_modules/request/node_modules/http-signature/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright Joyent, Inc. All rights reserved.
-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/request/node_modules/http-signature/README.md b/node_modules/request/node_modules/http-signature/README.md
deleted file mode 100644
index de487d323..000000000
--- a/node_modules/request/node_modules/http-signature/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# node-http-signature
-
-node-http-signature is a node.js library that has client and server components
-for Joyent's [HTTP Signature Scheme](http_signing.md).
-
-## Usage
-
-Note the example below signs a request with the same key/cert used to start an
-HTTP server. This is almost certainly not what you actually want, but is just
-used to illustrate the API calls; you will need to provide your own key
-management in addition to this library.
-
-### Client
-
-```js
-var fs = require('fs');
-var https = require('https');
-var httpSignature = require('http-signature');
-
-var key = fs.readFileSync('./key.pem', 'ascii');
-
-var options = {
- host: 'localhost',
- port: 8443,
- path: '/',
- method: 'GET',
- headers: {}
-};
-
-// Adds a 'Date' header in, signs it, and adds the
-// 'Authorization' header in.
-var req = https.request(options, function(res) {
- console.log(res.statusCode);
-});
-
-
-httpSignature.sign(req, {
- key: key,
- keyId: './cert.pem'
-});
-
-req.end();
-```
-
-### Server
-
-```js
-var fs = require('fs');
-var https = require('https');
-var httpSignature = require('http-signature');
-
-var options = {
- key: fs.readFileSync('./key.pem'),
- cert: fs.readFileSync('./cert.pem')
-};
-
-https.createServer(options, function (req, res) {
- var rc = 200;
- var parsed = httpSignature.parseRequest(req);
- var pub = fs.readFileSync(parsed.keyId, 'ascii');
- if (!httpSignature.verifySignature(parsed, pub))
- rc = 401;
-
- res.writeHead(rc);
- res.end();
-}).listen(8443);
-```
-
-## Installation
-
- npm install http-signature
-
-## License
-
-MIT.
-
-## Bugs
-
-See <https://github.com/joyent/node-http-signature/issues>.
diff --git a/node_modules/request/node_modules/http-signature/http_signing.md b/node_modules/request/node_modules/http-signature/http_signing.md
deleted file mode 100644
index dd81ee5b5..000000000
--- a/node_modules/request/node_modules/http-signature/http_signing.md
+++ /dev/null
@@ -1,296 +0,0 @@
-# Abstract
-
-This document describes a way to add origin authentication, message integrity,
-and replay resistance to HTTP REST requests. It is intended to be used over
-the HTTPS protocol.
-
-# Copyright Notice
-
-Copyright (c) 2011 Joyent, Inc. and the persons identified as document authors.
-All rights reserved.
-
-Code Components extracted from this document must include MIT License text.
-
-# Introduction
-
-This protocol is intended to provide a standard way for clients to sign HTTP
-requests. RFC2617 (HTTP Authentication) defines Basic and Digest authentication
-mechanisms, and RFC5246 (TLS 1.2) defines client-auth, both of which are widely
-employed on the Internet today. However, it is common place that the burdens of
-PKI prevent web service operators from deploying that methodology, and so many
-fall back to Basic authentication, which has poor security characteristics.
-
-Additionally, OAuth provides a fully-specified alternative for authorization
-of web service requests, but is not (always) ideal for machine to machine
-communication, as the key acquisition steps (generally) imply a fixed
-infrastructure that may not make sense to a service provider (e.g., symmetric
-keys).
-
-Several web service providers have invented their own schemes for signing
-HTTP requests, but to date, none have been placed in the public domain as a
-standard. This document serves that purpose. There are no techniques in this
-proposal that are novel beyond previous art, however, this aims to be a simple
-mechanism for signing these requests.
-
-# Signature Authentication Scheme
-
-The "signature" authentication scheme is based on the model that the client must
-authenticate itself with a digital signature produced by either a private
-asymmetric key (e.g., RSA) or a shared symmetric key (e.g., HMAC). The scheme
-is parameterized enough such that it is not bound to any particular key type or
-signing algorithm. However, it does explicitly assume that clients can send an
-HTTP `Date` header.
-
-## Authorization Header
-
-The client is expected to send an Authorization header (as defined in RFC 2617)
-with the following parameterization:
-
- credentials := "Signature" params
- params := 1#(keyId | algorithm | [headers] | [ext] | signature)
- digitalSignature := plain-string
-
- keyId := "keyId" "=" <"> plain-string <">
- algorithm := "algorithm" "=" <"> plain-string <">
- headers := "headers" "=" <"> 1#headers-value <">
- ext := "ext" "=" <"> plain-string <">
- signature := "signature" "=" <"> plain-string <">
-
- headers-value := plain-string
- plain-string = 1*( %x20-21 / %x23-5B / %x5D-7E )
-
-### Signature Parameters
-
-#### keyId
-
-REQUIRED. The `keyId` field is an opaque string that the server can use to look
-up the component they need to validate the signature. It could be an SSH key
-fingerprint, an LDAP DN, etc. Management of keys and assignment of `keyId` is
-out of scope for this document.
-
-#### algorithm
-
-REQUIRED. The `algorithm` parameter is used if the client and server agree on a
-non-standard digital signature algorithm. The full list of supported signature
-mechanisms is listed below.
-
-#### headers
-
-OPTIONAL. The `headers` parameter is used to specify the list of HTTP headers
-used to sign the request. If specified, it should be a quoted list of HTTP
-header names, separated by a single space character. By default, only one
-HTTP header is signed, which is the `Date` header. Note that the list MUST be
-specified in the order the values are concatenated together during signing. To
-include the HTTP request line in the signature calculation, use the special
-`request-line` value. While this is overloading the definition of `headers` in
-HTTP linguism, the request-line is defined in RFC 2616, and as the outlier from
-headers in useful signature calculation, it is deemed simpler to simply use
-`request-line` than to add a separate parameter for it.
-
-#### extensions
-
-OPTIONAL. The `extensions` parameter is used to include additional information
-which is covered by the request. The content and format of the string is out of
-scope for this document, and expected to be specified by implementors.
-
-#### signature
-
-REQUIRED. The `signature` parameter is a `Base64` encoded digital signature
-generated by the client. The client uses the `algorithm` and `headers` request
-parameters to form a canonicalized `signing string`. This `signing string` is
-then signed with the key associated with `keyId` and the algorithm
-corresponding to `algorithm`. The `signature` parameter is then set to the
-`Base64` encoding of the signature.
-
-### Signing String Composition
-
-In order to generate the string that is signed with a key, the client MUST take
-the values of each HTTP header specified by `headers` in the order they appear.
-
-1. If the header name is not `request-line` then append the lowercased header
- name followed with an ASCII colon `:` and an ASCII space ` `.
-2. If the header name is `request-line` then append the HTTP request line,
- otherwise append the header value.
-3. If value is not the last value then append an ASCII newline `\n`. The string
- MUST NOT include a trailing ASCII newline.
-
-# Example Requests
-
-All requests refer to the following request (body omitted):
-
- POST /foo HTTP/1.1
- Host: example.org
- Date: Tue, 07 Jun 2011 20:51:35 GMT
- Content-Type: application/json
- Content-MD5: h0auK8hnYJKmHTLhKtMTkQ==
- Content-Length: 123
-
-The "rsa-key-1" keyId refers to a private key known to the client and a public
-key known to the server. The "hmac-key-1" keyId refers to key known to the
-client and server.
-
-## Default parameterization
-
-The authorization header and signature would be generated as:
-
- Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",signature="Base64(RSA-SHA256(signing string))"
-
-The client would compose the signing string as:
-
- date: Tue, 07 Jun 2011 20:51:35 GMT
-
-## Header List
-
-The authorization header and signature would be generated as:
-
- Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",headers="request-line date content-type content-md5",signature="Base64(RSA-SHA256(signing string))"
-
-The client would compose the signing string as (`+ "\n"` inserted for
-readability):
-
- POST /foo HTTP/1.1 + "\n"
- date: Tue, 07 Jun 2011 20:51:35 GMT + "\n"
- content-type: application/json + "\n"
- content-md5: h0auK8hnYJKmHTLhKtMTkQ==
-
-## Algorithm
-
-The authorization header and signature would be generated as:
-
- Authorization: Signature keyId="hmac-key-1",algorithm="hmac-sha1",signature="Base64(HMAC-SHA1(signing string))"
-
-The client would compose the signing string as:
-
- date: Tue, 07 Jun 2011 20:51:35 GMT
-
-# Signing Algorithms
-
-Currently supported algorithm names are:
-
-* rsa-sha1
-* rsa-sha256
-* rsa-sha512
-* dsa-sha1
-* hmac-sha1
-* hmac-sha256
-* hmac-sha512
-
-# Security Considerations
-
-## Default Parameters
-
-Note the default parameterization of the `Signature` scheme is only safe if all
-requests are carried over a secure transport (i.e., TLS). Sending the default
-scheme over a non-secure transport will leave the request vulnerable to
-spoofing, tampering, replay/repudiation, and integrity violations (if using the
-STRIDE threat-modeling methodology).
-
-## Insecure Transports
-
-If sending the request over plain HTTP, service providers SHOULD require clients
-to sign ALL HTTP headers, and the `request-line`. Additionally, service
-providers SHOULD require `Content-MD5` calculations to be performed to ensure
-against any tampering from clients.
-
-## Nonces
-
-Nonces are out of scope for this document simply because many service providers
-fail to implement them correctly, or do not adopt security specifications
-because of the infrastructure complexity. Given the `header` parameterization,
-a service provider is fully enabled to add nonce semantics into this scheme by
-using something like an `x-request-nonce` header, and ensuring it is signed
-with the `Date` header.
-
-## Clock Skew
-
-As the default scheme is to sign the `Date` header, service providers SHOULD
-protect against logged replay attacks by enforcing a clock skew. The server
-SHOULD be synchronized with NTP, and the recommendation in this specification
-is to allow 300s of clock skew (in either direction).
-
-## Required Headers to Sign
-
-It is out of scope for this document to dictate what headers a service provider
-will want to enforce, but service providers SHOULD at minimum include the
-`Date` header.
-
-# References
-
-## Normative References
-
-* [RFC2616] Hypertext Transfer Protocol -- HTTP/1.1
-* [RFC2617] HTTP Authentication: Basic and Digest Access Authentication
-* [RFC5246] The Transport Layer Security (TLS) Protocol Version 1.2
-
-## Informative References
-
- Name: Mark Cavage (editor)
- Company: Joyent, Inc.
- Email: mark.cavage@joyent.com
- URI: http://www.joyent.com
-
-# Appendix A - Test Values
-
-The following test data uses the RSA (2048b) keys, which we will refer
-to as `keyId=Test` in the following samples:
-
- -----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCFENGw33yGihy92pDjZQhl0C3
- 6rPJj+CvfSC8+q28hxA161QFNUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6
- Z4UMR7EOcpfdUE9Hf3m/hs+FUR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJw
- oYi+1hqp1fIekaxsyQIDAQAB
- -----END PUBLIC KEY-----
-
- -----BEGIN RSA PRIVATE KEY-----
- MIICXgIBAAKBgQDCFENGw33yGihy92pDjZQhl0C36rPJj+CvfSC8+q28hxA161QF
- NUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6Z4UMR7EOcpfdUE9Hf3m/hs+F
- UR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJwoYi+1hqp1fIekaxsyQIDAQAB
- AoGBAJR8ZkCUvx5kzv+utdl7T5MnordT1TvoXXJGXK7ZZ+UuvMNUCdN2QPc4sBiA
- QWvLw1cSKt5DsKZ8UETpYPy8pPYnnDEz2dDYiaew9+xEpubyeW2oH4Zx71wqBtOK
- kqwrXa/pzdpiucRRjk6vE6YY7EBBs/g7uanVpGibOVAEsqH1AkEA7DkjVH28WDUg
- f1nqvfn2Kj6CT7nIcE3jGJsZZ7zlZmBmHFDONMLUrXR/Zm3pR5m0tCmBqa5RK95u
- 412jt1dPIwJBANJT3v8pnkth48bQo/fKel6uEYyboRtA5/uHuHkZ6FQF7OUkGogc
- mSJluOdc5t6hI1VsLn0QZEjQZMEOWr+wKSMCQQCC4kXJEsHAve77oP6HtG/IiEn7
- kpyUXRNvFsDE0czpJJBvL/aRFUJxuRK91jhjC68sA7NsKMGg5OXb5I5Jj36xAkEA
- gIT7aFOYBFwGgQAQkWNKLvySgKbAZRTeLBacpHMuQdl1DfdntvAyqpAZ0lY0RKmW
- G6aFKaqQfOXKCyWoUiVknQJAXrlgySFci/2ueKlIE1QqIiLSZ8V8OlpFLRnb1pzI
- 7U1yQXnTAEFYM560yJlzUpOb1V4cScGd365tiSMvxLOvTA==
- -----END RSA PRIVATE KEY-----
-
-And all examples use this request:
-
- POST /foo?param=value&pet=dog HTTP/1.1
- Host: example.com
- Date: Thu, 05 Jan 2012 21:31:40 GMT
- Content-Type: application/json
- Content-MD5: Sd/dVLAcvNLSq16eXua5uQ==
- Content-Length: 18
-
- {"hello": "world"}
-
-### Default
-
-The string to sign would be:
-
- date: Thu, 05 Jan 2012 21:31:40 GMT
-
-The Authorization header would be:
-
- Authorization: Signature keyId="Test",algorithm="rsa-sha256",signature="ATp0r26dbMIxOopqw0OfABDT7CKMIoENumuruOtarj8n/97Q3htHFYpH8yOSQk3Z5zh8UxUym6FYTb5+A0Nz3NRsXJibnYi7brE/4tx5But9kkFGzG+xpUmimN4c3TMN7OFH//+r8hBf7BT9/GmHDUVZT2JzWGLZES2xDOUuMtA="
-
-### All Headers
-
-Parameterized to include all headers, the string to sign would be (`+ "\n"`
-inserted for readability):
-
- POST /foo?param=value&pet=dog HTTP/1.1 + "\n"
- host: example.com + "\n"
- date: Thu, 05 Jan 2012 21:31:40 GMT + "\n"
- content-type: application/json + "\n"
- content-md5: Sd/dVLAcvNLSq16eXua5uQ== + "\n"
- content-length: 18
-
-The Authorization header would be:
-
- Authorization: Signature keyId="Test",algorithm="rsa-sha256",headers="request-line host date content-type content-md5 content-length",signature="H/AaTDkJvLELy4i1RujnKlS6dm8QWiJvEpn9cKRMi49kKF+mohZ15z1r+mF+XiKS5kOOscyS83olfBtsVhYjPg2Ei3/D9D4Mvb7bFm9IaLJgYTFFuQCghrKQQFPiqJN320emjHxFowpIm1BkstnEU7lktH/XdXVBo8a6Uteiztw="
-
diff --git a/node_modules/request/node_modules/http-signature/lib/index.js b/node_modules/request/node_modules/http-signature/lib/index.js
deleted file mode 100644
index 56a9967da..000000000
--- a/node_modules/request/node_modules/http-signature/lib/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2015 Joyent, Inc.
-
-var parser = require('./parser');
-var signer = require('./signer');
-var verify = require('./verify');
-var util = require('./util');
-
-
-
-///--- API
-
-module.exports = {
-
- parse: parser.parseRequest,
- parseRequest: parser.parseRequest,
-
- sign: signer.signRequest,
- signRequest: signer.signRequest,
-
- sshKeyToPEM: util.sshKeyToPEM,
- sshKeyFingerprint: util.fingerprint,
- pemToRsaSSHKey: util.pemToRsaSSHKey,
-
- verify: verify.verifySignature,
- verifySignature: verify.verifySignature,
- verifyHMAC: verify.verifyHMAC
-};
diff --git a/node_modules/request/node_modules/http-signature/lib/parser.js b/node_modules/request/node_modules/http-signature/lib/parser.js
deleted file mode 100644
index fd9ac1022..000000000
--- a/node_modules/request/node_modules/http-signature/lib/parser.js
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright 2012 Joyent, Inc. All rights reserved.
-
-var assert = require('assert-plus');
-var util = require('util');
-
-
-
-///--- Globals
-
-var Algorithms = {
- 'rsa-sha1': true,
- 'rsa-sha256': true,
- 'rsa-sha512': true,
- 'dsa-sha1': true,
- 'hmac-sha1': true,
- 'hmac-sha256': true,
- 'hmac-sha512': true
-};
-
-var State = {
- New: 0,
- Params: 1
-};
-
-var ParamsState = {
- Name: 0,
- Quote: 1,
- Value: 2,
- Comma: 3
-};
-
-
-
-///--- Specific Errors
-
-function HttpSignatureError(message, caller) {
- if (Error.captureStackTrace)
- Error.captureStackTrace(this, caller || HttpSignatureError);
-
- this.message = message;
- this.name = caller.name;
-}
-util.inherits(HttpSignatureError, Error);
-
-function ExpiredRequestError(message) {
- HttpSignatureError.call(this, message, ExpiredRequestError);
-}
-util.inherits(ExpiredRequestError, HttpSignatureError);
-
-
-function InvalidHeaderError(message) {
- HttpSignatureError.call(this, message, InvalidHeaderError);
-}
-util.inherits(InvalidHeaderError, HttpSignatureError);
-
-
-function InvalidParamsError(message) {
- HttpSignatureError.call(this, message, InvalidParamsError);
-}
-util.inherits(InvalidParamsError, HttpSignatureError);
-
-
-function MissingHeaderError(message) {
- HttpSignatureError.call(this, message, MissingHeaderError);
-}
-util.inherits(MissingHeaderError, HttpSignatureError);
-
-
-
-///--- Exported API
-
-module.exports = {
-
- /**
- * Parses the 'Authorization' header out of an http.ServerRequest object.
- *
- * Note that this API will fully validate the Authorization header, and throw
- * on any error. It will not however check the signature, or the keyId format
- * as those are specific to your environment. You can use the options object
- * to pass in extra constraints.
- *
- * As a response object you can expect this:
- *
- * {
- * "scheme": "Signature",
- * "params": {
- * "keyId": "foo",
- * "algorithm": "rsa-sha256",
- * "headers": [
- * "date" or "x-date",
- * "content-md5"
- * ],
- * "signature": "base64"
- * },
- * "signingString": "ready to be passed to crypto.verify()"
- * }
- *
- * @param {Object} request an http.ServerRequest.
- * @param {Object} options an optional options object with:
- * - clockSkew: allowed clock skew in seconds (default 300).
- * - headers: required header names (def: date or x-date)
- * - algorithms: algorithms to support (default: all).
- * @return {Object} parsed out object (see above).
- * @throws {TypeError} on invalid input.
- * @throws {InvalidHeaderError} on an invalid Authorization header error.
- * @throws {InvalidParamsError} if the params in the scheme are invalid.
- * @throws {MissingHeaderError} if the params indicate a header not present,
- * either in the request headers from the params,
- * or not in the params from a required header
- * in options.
- * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.
- */
- parseRequest: function parseRequest(request, options) {
- assert.object(request, 'request');
- assert.object(request.headers, 'request.headers');
- if (options === undefined) {
- options = {};
- }
- if (options.headers === undefined) {
- options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];
- }
- assert.object(options, 'options');
- assert.arrayOfString(options.headers, 'options.headers');
- assert.optionalNumber(options.clockSkew, 'options.clockSkew');
-
- if (!request.headers.authorization)
- throw new MissingHeaderError('no authorization header present in ' +
- 'the request');
-
- options.clockSkew = options.clockSkew || 300;
-
-
- var i = 0;
- var state = State.New;
- var substate = ParamsState.Name;
- var tmpName = '';
- var tmpValue = '';
-
- var parsed = {
- scheme: '',
- params: {},
- signingString: '',
-
- get algorithm() {
- return this.params.algorithm.toUpperCase();
- },
-
- get keyId() {
- return this.params.keyId;
- }
-
- };
-
- var authz = request.headers.authorization;
- for (i = 0; i < authz.length; i++) {
- var c = authz.charAt(i);
-
- switch (Number(state)) {
-
- case State.New:
- if (c !== ' ') parsed.scheme += c;
- else state = State.Params;
- break;
-
- case State.Params:
- switch (Number(substate)) {
-
- case ParamsState.Name:
- var code = c.charCodeAt(0);
- // restricted name of A-Z / a-z
- if ((code >= 0x41 && code <= 0x5a) || // A-Z
- (code >= 0x61 && code <= 0x7a)) { // a-z
- tmpName += c;
- } else if (c === '=') {
- if (tmpName.length === 0)
- throw new InvalidHeaderError('bad param format');
- substate = ParamsState.Quote;
- } else {
- throw new InvalidHeaderError('bad param format');
- }
- break;
-
- case ParamsState.Quote:
- if (c === '"') {
- tmpValue = '';
- substate = ParamsState.Value;
- } else {
- throw new InvalidHeaderError('bad param format');
- }
- break;
-
- case ParamsState.Value:
- if (c === '"') {
- parsed.params[tmpName] = tmpValue;
- substate = ParamsState.Comma;
- } else {
- tmpValue += c;
- }
- break;
-
- case ParamsState.Comma:
- if (c === ',') {
- tmpName = '';
- substate = ParamsState.Name;
- } else {
- throw new InvalidHeaderError('bad param format');
- }
- break;
-
- default:
- throw new Error('Invalid substate');
- }
- break;
-
- default:
- throw new Error('Invalid substate');
- }
-
- }
-
- if (!parsed.params.headers || parsed.params.headers === '') {
- if (request.headers['x-date']) {
- parsed.params.headers = ['x-date'];
- } else {
- parsed.params.headers = ['date'];
- }
- } else {
- parsed.params.headers = parsed.params.headers.split(' ');
- }
-
- // Minimally validate the parsed object
- if (!parsed.scheme || parsed.scheme !== 'Signature')
- throw new InvalidHeaderError('scheme was not "Signature"');
-
- if (!parsed.params.keyId)
- throw new InvalidHeaderError('keyId was not specified');
-
- if (!parsed.params.algorithm)
- throw new InvalidHeaderError('algorithm was not specified');
-
- if (!parsed.params.signature)
- throw new InvalidHeaderError('signature was not specified');
-
- // Check the algorithm against the official list
- parsed.params.algorithm = parsed.params.algorithm.toLowerCase();
- if (!Algorithms[parsed.params.algorithm])
- throw new InvalidParamsError(parsed.params.algorithm +
- ' is not supported');
-
- // Build the signingString
- for (i = 0; i < parsed.params.headers.length; i++) {
- var h = parsed.params.headers[i].toLowerCase();
- parsed.params.headers[i] = h;
-
- if (h !== 'request-line') {
- var value = request.headers[h];
- if (!value)
- throw new MissingHeaderError(h + ' was not in the request');
- parsed.signingString += h + ': ' + value;
- } else {
- parsed.signingString +=
- request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;
- }
-
- if ((i + 1) < parsed.params.headers.length)
- parsed.signingString += '\n';
- }
-
- // Check against the constraints
- var date;
- if (request.headers.date || request.headers['x-date']) {
- if (request.headers['x-date']) {
- date = new Date(request.headers['x-date']);
- } else {
- date = new Date(request.headers.date);
- }
- var now = new Date();
- var skew = Math.abs(now.getTime() - date.getTime());
-
- if (skew > options.clockSkew * 1000) {
- throw new ExpiredRequestError('clock skew of ' +
- (skew / 1000) +
- 's was greater than ' +
- options.clockSkew + 's');
- }
- }
-
- options.headers.forEach(function (hdr) {
- // Remember that we already checked any headers in the params
- // were in the request, so if this passes we're good.
- if (parsed.params.headers.indexOf(hdr) < 0)
- throw new MissingHeaderError(hdr + ' was not a signed header');
- });
-
- if (options.algorithms) {
- if (options.algorithms.indexOf(parsed.params.algorithm) === -1)
- throw new InvalidParamsError(parsed.params.algorithm +
- ' is not a supported algorithm');
- }
-
- return parsed;
- }
-
-};
diff --git a/node_modules/request/node_modules/http-signature/lib/signer.js b/node_modules/request/node_modules/http-signature/lib/signer.js
deleted file mode 100644
index 3507f4dbf..000000000
--- a/node_modules/request/node_modules/http-signature/lib/signer.js
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2012 Joyent, Inc. All rights reserved.
-
-var assert = require('assert-plus');
-var crypto = require('crypto');
-var http = require('http');
-
-var sprintf = require('util').format;
-
-
-
-///--- Globals
-
-var Algorithms = {
- 'rsa-sha1': true,
- 'rsa-sha256': true,
- 'rsa-sha512': true,
- 'dsa-sha1': true,
- 'hmac-sha1': true,
- 'hmac-sha256': true,
- 'hmac-sha512': true
-};
-
-var Authorization =
- 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"';
-
-
-
-///--- Specific Errors
-
-function MissingHeaderError(message) {
- this.name = 'MissingHeaderError';
- this.message = message;
- this.stack = (new Error()).stack;
-}
-MissingHeaderError.prototype = new Error();
-
-
-function InvalidAlgorithmError(message) {
- this.name = 'InvalidAlgorithmError';
- this.message = message;
- this.stack = (new Error()).stack;
-}
-InvalidAlgorithmError.prototype = new Error();
-
-
-
-///--- Internal Functions
-
-function _pad(val) {
- if (parseInt(val, 10) < 10) {
- val = '0' + val;
- }
- return val;
-}
-
-
-function _rfc1123() {
- var date = new Date();
-
- var months = ['Jan',
- 'Feb',
- 'Mar',
- 'Apr',
- 'May',
- 'Jun',
- 'Jul',
- 'Aug',
- 'Sep',
- 'Oct',
- 'Nov',
- 'Dec'];
- var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
- return days[date.getUTCDay()] + ', ' +
- _pad(date.getUTCDate()) + ' ' +
- months[date.getUTCMonth()] + ' ' +
- date.getUTCFullYear() + ' ' +
- _pad(date.getUTCHours()) + ':' +
- _pad(date.getUTCMinutes()) + ':' +
- _pad(date.getUTCSeconds()) +
- ' GMT';
-}
-
-
-
-///--- Exported API
-
-module.exports = {
-
- /**
- * Adds an 'Authorization' header to an http.ClientRequest object.
- *
- * Note that this API will add a Date header if it's not already set. Any
- * other headers in the options.headers array MUST be present, or this
- * will throw.
- *
- * You shouldn't need to check the return type; it's just there if you want
- * to be pedantic.
- *
- * @param {Object} request an instance of http.ClientRequest.
- * @param {Object} options signing parameters object:
- * - {String} keyId required.
- * - {String} key required (either a PEM or HMAC key).
- * - {Array} headers optional; defaults to ['date'].
- * - {String} algorithm optional; defaults to 'rsa-sha256'.
- * - {String} httpVersion optional; defaults to '1.1'.
- * @return {Boolean} true if Authorization (and optionally Date) were added.
- * @throws {TypeError} on bad parameter types (input).
- * @throws {InvalidAlgorithmError} if algorithm was bad.
- * @throws {MissingHeaderError} if a header to be signed was specified but
- * was not present.
- */
- signRequest: function signRequest(request, options) {
- assert.object(request, 'request');
- assert.object(options, 'options');
- assert.optionalString(options.algorithm, 'options.algorithm');
- assert.string(options.keyId, 'options.keyId');
- assert.optionalArrayOfString(options.headers, 'options.headers');
- assert.optionalString(options.httpVersion, 'options.httpVersion');
-
- if (!request.getHeader('Date'))
- request.setHeader('Date', _rfc1123());
- if (!options.headers)
- options.headers = ['date'];
- if (!options.algorithm)
- options.algorithm = 'rsa-sha256';
- if (!options.httpVersion)
- options.httpVersion = '1.1';
-
- options.algorithm = options.algorithm.toLowerCase();
-
- if (!Algorithms[options.algorithm])
- throw new InvalidAlgorithmError(options.algorithm + ' is not supported');
-
- var i;
- var stringToSign = '';
- for (i = 0; i < options.headers.length; i++) {
- if (typeof (options.headers[i]) !== 'string')
- throw new TypeError('options.headers must be an array of Strings');
-
- var h = options.headers[i].toLowerCase();
-
- if (h !== 'request-line') {
- var value = request.getHeader(h);
- if (!value) {
- throw new MissingHeaderError(h + ' was not in the request');
- }
- stringToSign += h + ': ' + value;
- } else {
- stringToSign +=
- request.method + ' ' + request.path + ' HTTP/' + options.httpVersion;
- }
-
- if ((i + 1) < options.headers.length)
- stringToSign += '\n';
- }
-
- var alg = options.algorithm.match(/(hmac|rsa)-(\w+)/);
- var signature;
- if (alg[1] === 'hmac') {
- var hmac = crypto.createHmac(alg[2].toUpperCase(), options.key);
- hmac.update(stringToSign);
- signature = hmac.digest('base64');
- } else {
- var signer = crypto.createSign(options.algorithm.toUpperCase());
- signer.update(stringToSign);
- signature = signer.sign(options.key, 'base64');
- }
-
- request.setHeader('Authorization', sprintf(Authorization,
- options.keyId,
- options.algorithm,
- options.headers.join(' '),
- signature));
-
- return true;
- }
-
-};
diff --git a/node_modules/request/node_modules/http-signature/lib/util.js b/node_modules/request/node_modules/http-signature/lib/util.js
deleted file mode 100644
index 2e1ce4d46..000000000
--- a/node_modules/request/node_modules/http-signature/lib/util.js
+++ /dev/null
@@ -1,306 +0,0 @@
-// Copyright 2012 Joyent, Inc. All rights reserved.
-
-var assert = require('assert-plus');
-var crypto = require('crypto');
-
-var asn1 = require('asn1');
-var ctype = require('ctype');
-
-
-
-///--- Helpers
-
-function readNext(buffer, offset) {
- var len = ctype.ruint32(buffer, 'big', offset);
- offset += 4;
-
- var newOffset = offset + len;
-
- return {
- data: buffer.slice(offset, newOffset),
- offset: newOffset
- };
-}
-
-
-function writeInt(writer, buffer) {
- writer.writeByte(0x02); // ASN1.Integer
- writer.writeLength(buffer.length);
-
- for (var i = 0; i < buffer.length; i++)
- writer.writeByte(buffer[i]);
-
- return writer;
-}
-
-
-function rsaToPEM(key) {
- var buffer;
- var der;
- var exponent;
- var i;
- var modulus;
- var newKey = '';
- var offset = 0;
- var type;
- var tmp;
-
- try {
- buffer = new Buffer(key.split(' ')[1], 'base64');
-
- tmp = readNext(buffer, offset);
- type = tmp.data.toString();
- offset = tmp.offset;
-
- if (type !== 'ssh-rsa')
- throw new Error('Invalid ssh key type: ' + type);
-
- tmp = readNext(buffer, offset);
- exponent = tmp.data;
- offset = tmp.offset;
-
- tmp = readNext(buffer, offset);
- modulus = tmp.data;
- } catch (e) {
- throw new Error('Invalid ssh key: ' + key);
- }
-
- // DER is a subset of BER
- der = new asn1.BerWriter();
-
- der.startSequence();
-
- der.startSequence();
- der.writeOID('1.2.840.113549.1.1.1');
- der.writeNull();
- der.endSequence();
-
- der.startSequence(0x03); // bit string
- der.writeByte(0x00);
-
- // Actual key
- der.startSequence();
- writeInt(der, modulus);
- writeInt(der, exponent);
- der.endSequence();
-
- // bit string
- der.endSequence();
-
- der.endSequence();
-
- tmp = der.buffer.toString('base64');
- for (i = 0; i < tmp.length; i++) {
- if ((i % 64) === 0)
- newKey += '\n';
- newKey += tmp.charAt(i);
- }
-
- if (!/\\n$/.test(newKey))
- newKey += '\n';
-
- return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n';
-}
-
-
-function dsaToPEM(key) {
- var buffer;
- var offset = 0;
- var tmp;
- var der;
- var newKey = '';
-
- var type;
- var p;
- var q;
- var g;
- var y;
-
- try {
- buffer = new Buffer(key.split(' ')[1], 'base64');
-
- tmp = readNext(buffer, offset);
- type = tmp.data.toString();
- offset = tmp.offset;
-
- /* JSSTYLED */
- if (!/^ssh-ds[as].*/.test(type))
- throw new Error('Invalid ssh key type: ' + type);
-
- tmp = readNext(buffer, offset);
- p = tmp.data;
- offset = tmp.offset;
-
- tmp = readNext(buffer, offset);
- q = tmp.data;
- offset = tmp.offset;
-
- tmp = readNext(buffer, offset);
- g = tmp.data;
- offset = tmp.offset;
-
- tmp = readNext(buffer, offset);
- y = tmp.data;
- } catch (e) {
- console.log(e.stack);
- throw new Error('Invalid ssh key: ' + key);
- }
-
- // DER is a subset of BER
- der = new asn1.BerWriter();
-
- der.startSequence();
-
- der.startSequence();
- der.writeOID('1.2.840.10040.4.1');
-
- der.startSequence();
- writeInt(der, p);
- writeInt(der, q);
- writeInt(der, g);
- der.endSequence();
-
- der.endSequence();
-
- der.startSequence(0x03); // bit string
- der.writeByte(0x00);
- writeInt(der, y);
- der.endSequence();
-
- der.endSequence();
-
- tmp = der.buffer.toString('base64');
- for (var i = 0; i < tmp.length; i++) {
- if ((i % 64) === 0)
- newKey += '\n';
- newKey += tmp.charAt(i);
- }
-
- if (!/\\n$/.test(newKey))
- newKey += '\n';
-
- return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n';
-}
-
-
-///--- API
-
-module.exports = {
-
- /**
- * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.
- *
- * The intent of this module is to interoperate with OpenSSL only,
- * specifically the node crypto module's `verify` method.
- *
- * @param {String} key an OpenSSH public key.
- * @return {String} PEM encoded form of the RSA public key.
- * @throws {TypeError} on bad input.
- * @throws {Error} on invalid ssh key formatted data.
- */
- sshKeyToPEM: function sshKeyToPEM(key) {
- assert.string(key, 'ssh_key');
-
- /* JSSTYLED */
- if (/^ssh-rsa.*/.test(key))
- return rsaToPEM(key);
-
- /* JSSTYLED */
- if (/^ssh-ds[as].*/.test(key))
- return dsaToPEM(key);
-
- throw new Error('Only RSA and DSA public keys are allowed');
- },
-
-
- /**
- * Generates an OpenSSH fingerprint from an ssh public key.
- *
- * @param {String} key an OpenSSH public key.
- * @return {String} key fingerprint.
- * @throws {TypeError} on bad input.
- * @throws {Error} if what you passed doesn't look like an ssh public key.
- */
- fingerprint: function fingerprint(key) {
- assert.string(key, 'ssh_key');
-
- var pieces = key.split(' ');
- if (!pieces || !pieces.length || pieces.length < 2)
- throw new Error('invalid ssh key');
-
- var data = new Buffer(pieces[1], 'base64');
-
- var hash = crypto.createHash('md5');
- hash.update(data);
- var digest = hash.digest('hex');
-
- var fp = '';
- for (var i = 0; i < digest.length; i++) {
- if (i && i % 2 === 0)
- fp += ':';
-
- fp += digest[i];
- }
-
- return fp;
- },
-
- /**
- * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)
- *
- * The reverse of the above function.
- */
- pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {
- assert.equal('string', typeof (pem), 'typeof pem');
-
- // chop off the BEGIN PUBLIC KEY and END PUBLIC KEY portion
- var cleaned = pem.split('\n').slice(1, -2).join('');
-
- var buf = new Buffer(cleaned, 'base64');
-
- var der = new asn1.BerReader(buf);
-
- der.readSequence();
- der.readSequence();
-
- var oid = der.readOID();
- assert.equal(oid, '1.2.840.113549.1.1.1', 'pem not in RSA format');
-
- // Null -- XXX this probably isn't good practice
- der.readByte();
- der.readByte();
-
- // bit string sequence
- der.readSequence(0x03);
- der.readByte();
- der.readSequence();
-
- // modulus
- assert.equal(der.peek(), asn1.Ber.Integer, 'modulus not an integer');
- der._offset = der.readLength(der.offset + 1);
- var modulus = der._buf.slice(der.offset, der.offset + der.length);
- der._offset += der.length;
-
- // exponent
- assert.equal(der.peek(), asn1.Ber.Integer, 'exponent not an integer');
- der._offset = der.readLength(der.offset + 1);
- var exponent = der._buf.slice(der.offset, der.offset + der.length);
- der._offset += der.length;
-
- // now, make the key
- var type = new Buffer('ssh-rsa');
- var buffer = new Buffer(4 + type.length + 4 + modulus.length +
- 4 + exponent.length);
- var i = 0;
- buffer.writeUInt32BE(type.length, i); i += 4;
- type.copy(buffer, i); i += type.length;
- buffer.writeUInt32BE(exponent.length, i); i += 4;
- exponent.copy(buffer, i); i += exponent.length;
- buffer.writeUInt32BE(modulus.length, i); i += 4;
- modulus.copy(buffer, i); i += modulus.length;
-
- var s = (type.toString() + ' ' + buffer.toString('base64') + ' ' +
- (comment || ''));
- return s;
- }
-};
diff --git a/node_modules/request/node_modules/http-signature/lib/verify.js b/node_modules/request/node_modules/http-signature/lib/verify.js
deleted file mode 100644
index f6ad0c2b1..000000000
--- a/node_modules/request/node_modules/http-signature/lib/verify.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2015 Joyent, Inc.
-
-var assert = require('assert-plus');
-var crypto = require('crypto');
-
-
-
-///--- Exported API
-
-module.exports = {
- /**
- * Verify RSA/DSA signature against public key. You are expected to pass in
- * an object that was returned from `parse()`.
- *
- * @param {Object} parsedSignature the object you got from `parse`.
- * @param {String} pubkey RSA/DSA private key PEM.
- * @return {Boolean} true if valid, false otherwise.
- * @throws {TypeError} if you pass in bad arguments.
- */
- verifySignature: function verifySignature(parsedSignature, pubkey) {
- assert.object(parsedSignature, 'parsedSignature');
- assert.string(pubkey, 'pubkey');
-
- var alg = parsedSignature.algorithm.match(/^(RSA|DSA)-(\w+)/);
- if (!alg || alg.length !== 3)
- throw new TypeError('parsedSignature: unsupported algorithm ' +
- parsedSignature.algorithm);
-
- var verify = crypto.createVerify(alg[0]);
- verify.update(parsedSignature.signingString);
- return verify.verify(pubkey, parsedSignature.params.signature, 'base64');
- },
-
- /**
- * Verify HMAC against shared secret. You are expected to pass in an object
- * that was returned from `parse()`.
- *
- * @param {Object} parsedSignature the object you got from `parse`.
- * @param {String} secret HMAC shared secret.
- * @return {Boolean} true if valid, false otherwise.
- * @throws {TypeError} if you pass in bad arguments.
- */
- verifyHMAC: function verifyHMAC(parsedSignature, secret) {
- assert.object(parsedSignature, 'parsedHMAC');
- assert.string(secret, 'secret');
-
- var alg = parsedSignature.algorithm.match(/^HMAC-(\w+)/);
- if (!alg || alg.length !== 2)
- throw new TypeError('parsedSignature: unsupported algorithm ' +
- parsedSignature.algorithm);
-
- var hmac = crypto.createHmac(alg[1].toUpperCase(), secret);
- hmac.update(parsedSignature.signingString);
- return (hmac.digest('base64') === parsedSignature.params.signature);
- }
-};
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore b/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore
deleted file mode 100644
index eb03e3e1e..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-*.log
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE b/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE
deleted file mode 100644
index 9b5dcdb7f..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011 Mark Cavage, All rights reserved.
-
-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/request/node_modules/http-signature/node_modules/asn1/README.md b/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md
deleted file mode 100644
index 7cebf7a2e..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.
-Currently BER encoding is supported; at some point I'll likely have to do DER.
-
-## Usage
-
-Mostly, if you're *actually* needing to read and write ASN.1, you probably don't
-need this readme to explain what and why. If you have no idea what ASN.1 is,
-see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc
-
-The source is pretty much self-explanatory, and has read/write methods for the
-common types out there.
-
-### Decoding
-
-The following reads an ASN.1 sequence with a boolean.
-
- var Ber = require('asn1').Ber;
-
- var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));
-
- reader.readSequence();
- console.log('Sequence len: ' + reader.length);
- if (reader.peek() === Ber.Boolean)
- console.log(reader.readBoolean());
-
-### Encoding
-
-The following generates the same payload as above.
-
- var Ber = require('asn1').Ber;
-
- var writer = new Ber.Writer();
-
- writer.startSequence();
- writer.writeBoolean(true);
- writer.endSequence();
-
- console.log(writer.buffer);
-
-## Installation
-
- npm install asn1
-
-## License
-
-MIT.
-
-## Bugs
-
-See <https://github.com/mcavage/node-asn1/issues>.
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js
deleted file mode 100644
index ff21d4fab..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-
-module.exports = {
-
- newInvalidAsn1Error: function(msg) {
- var e = new Error();
- e.name = 'InvalidAsn1Error';
- e.message = msg || '';
- return e;
- }
-
-};
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js
deleted file mode 100644
index 4fb90aea9..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-var errors = require('./errors');
-var types = require('./types');
-
-var Reader = require('./reader');
-var Writer = require('./writer');
-
-
-///--- Exports
-
-module.exports = {
-
- Reader: Reader,
-
- Writer: Writer
-
-};
-
-for (var t in types) {
- if (types.hasOwnProperty(t))
- module.exports[t] = types[t];
-}
-for (var e in errors) {
- if (errors.hasOwnProperty(e))
- module.exports[e] = errors[e];
-}
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js
deleted file mode 100644
index bd3357a67..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-var assert = require('assert');
-
-var ASN1 = require('./types');
-var errors = require('./errors');
-
-
-///--- Globals
-
-var newInvalidAsn1Error = errors.newInvalidAsn1Error;
-
-
-
-///--- API
-
-function Reader(data) {
- if (!data || !Buffer.isBuffer(data))
- throw new TypeError('data must be a node Buffer');
-
- this._buf = data;
- this._size = data.length;
-
- // These hold the "current" state
- this._len = 0;
- this._offset = 0;
-
- var self = this;
- this.__defineGetter__('length', function() { return self._len; });
- this.__defineGetter__('offset', function() { return self._offset; });
- this.__defineGetter__('remain', function() {
- return self._size - self._offset;
- });
- this.__defineGetter__('buffer', function() {
- return self._buf.slice(self._offset);
- });
-}
-
-
-/**
- * Reads a single byte and advances offset; you can pass in `true` to make this
- * a "peek" operation (i.e., get the byte, but don't advance the offset).
- *
- * @param {Boolean} peek true means don't move offset.
- * @return {Number} the next byte, null if not enough data.
- */
-Reader.prototype.readByte = function(peek) {
- if (this._size - this._offset < 1)
- return null;
-
- var b = this._buf[this._offset] & 0xff;
-
- if (!peek)
- this._offset += 1;
-
- return b;
-};
-
-
-Reader.prototype.peek = function() {
- return this.readByte(true);
-};
-
-
-/**
- * Reads a (potentially) variable length off the BER buffer. This call is
- * not really meant to be called directly, as callers have to manipulate
- * the internal buffer afterwards.
- *
- * As a result of this call, you can call `Reader.length`, until the
- * next thing called that does a readLength.
- *
- * @return {Number} the amount of offset to advance the buffer.
- * @throws {InvalidAsn1Error} on bad ASN.1
- */
-Reader.prototype.readLength = function(offset) {
- if (offset === undefined)
- offset = this._offset;
-
- if (offset >= this._size)
- return null;
-
- var lenB = this._buf[offset++] & 0xff;
- if (lenB === null)
- return null;
-
- if ((lenB & 0x80) == 0x80) {
- lenB &= 0x7f;
-
- if (lenB == 0)
- throw newInvalidAsn1Error('Indefinite length not supported');
-
- if (lenB > 4)
- throw newInvalidAsn1Error('encoding too long');
-
- if (this._size - offset < lenB)
- return null;
-
- this._len = 0;
- for (var i = 0; i < lenB; i++)
- this._len = (this._len << 8) + (this._buf[offset++] & 0xff);
-
- } else {
- // Wasn't a variable length
- this._len = lenB;
- }
-
- return offset;
-};
-
-
-/**
- * Parses the next sequence in this BER buffer.
- *
- * To get the length of the sequence, call `Reader.length`.
- *
- * @return {Number} the sequence's tag.
- */
-Reader.prototype.readSequence = function(tag) {
- var seq = this.peek();
- if (seq === null)
- return null;
- if (tag !== undefined && tag !== seq)
- throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
- ': got 0x' + seq.toString(16));
-
- var o = this.readLength(this._offset + 1); // stored in `length`
- if (o === null)
- return null;
-
- this._offset = o;
- return seq;
-};
-
-
-Reader.prototype.readInt = function() {
- return this._readTag(ASN1.Integer);
-};
-
-
-Reader.prototype.readBoolean = function() {
- return (this._readTag(ASN1.Boolean) === 0 ? false : true);
-};
-
-
-Reader.prototype.readEnumeration = function() {
- return this._readTag(ASN1.Enumeration);
-};
-
-
-Reader.prototype.readString = function(tag, retbuf) {
- if (!tag)
- tag = ASN1.OctetString;
-
- var b = this.peek();
- if (b === null)
- return null;
-
- if (b !== tag)
- throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
- ': got 0x' + b.toString(16));
-
- var o = this.readLength(this._offset + 1); // stored in `length`
-
- if (o === null)
- return null;
-
- if (this.length > this._size - o)
- return null;
-
- this._offset = o;
-
- if (this.length === 0)
- return '';
-
- var str = this._buf.slice(this._offset, this._offset + this.length);
- this._offset += this.length;
-
- return retbuf ? str : str.toString('utf8');
-};
-
-Reader.prototype.readOID = function(tag) {
- if (!tag)
- tag = ASN1.OID;
-
- var b = this.peek();
- if (b === null)
- return null;
-
- if (b !== tag)
- throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
- ': got 0x' + b.toString(16));
-
- var o = this.readLength(this._offset + 1); // stored in `length`
- if (o === null)
- return null;
-
- if (this.length > this._size - o)
- return null;
-
- this._offset = o;
-
- var values = [];
- var value = 0;
-
- for (var i = 0; i < this.length; i++) {
- var byte = this._buf[this._offset++] & 0xff;
-
- value <<= 7;
- value += byte & 0x7f;
- if ((byte & 0x80) == 0) {
- values.push(value);
- value = 0;
- }
- }
-
- value = values.shift();
- values.unshift(value % 40);
- values.unshift((value / 40) >> 0);
-
- return values.join('.');
-};
-
-
-Reader.prototype._readTag = function(tag) {
- assert.ok(tag !== undefined);
-
- var b = this.peek();
-
- if (b === null)
- return null;
-
- if (b !== tag)
- throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
- ': got 0x' + b.toString(16));
-
- var o = this.readLength(this._offset + 1); // stored in `length`
- if (o === null)
- return null;
-
- if (this.length > 4)
- throw newInvalidAsn1Error('Integer too long: ' + this.length);
-
- if (this.length > this._size - o)
- return null;
- this._offset = o;
-
- var fb = this._buf[this._offset++];
- var value = 0;
-
- value = fb & 0x7F;
- for (var i = 1; i < this.length; i++) {
- value <<= 8;
- value |= (this._buf[this._offset++] & 0xff);
- }
-
- if ((fb & 0x80) == 0x80)
- value = -value;
-
- return value;
-};
-
-
-
-///--- Exported API
-
-module.exports = Reader;
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js
deleted file mode 100644
index 8aea00013..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-
-module.exports = {
- EOC: 0,
- Boolean: 1,
- Integer: 2,
- BitString: 3,
- OctetString: 4,
- Null: 5,
- OID: 6,
- ObjectDescriptor: 7,
- External: 8,
- Real: 9, // float
- Enumeration: 10,
- PDV: 11,
- Utf8String: 12,
- RelativeOID: 13,
- Sequence: 16,
- Set: 17,
- NumericString: 18,
- PrintableString: 19,
- T61String: 20,
- VideotexString: 21,
- IA5String: 22,
- UTCTime: 23,
- GeneralizedTime: 24,
- GraphicString: 25,
- VisibleString: 26,
- GeneralString: 28,
- UniversalString: 29,
- CharacterString: 30,
- BMPString: 31,
- Constructor: 32,
- Context: 128
-};
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js
deleted file mode 100644
index 7b445cc60..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js
+++ /dev/null
@@ -1,317 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-var assert = require('assert');
-var ASN1 = require('./types');
-var errors = require('./errors');
-
-
-///--- Globals
-
-var newInvalidAsn1Error = errors.newInvalidAsn1Error;
-
-var DEFAULT_OPTS = {
- size: 1024,
- growthFactor: 8
-};
-
-
-///--- Helpers
-
-function merge(from, to) {
- assert.ok(from);
- assert.equal(typeof(from), 'object');
- assert.ok(to);
- assert.equal(typeof(to), 'object');
-
- var keys = Object.getOwnPropertyNames(from);
- keys.forEach(function(key) {
- if (to[key])
- return;
-
- var value = Object.getOwnPropertyDescriptor(from, key);
- Object.defineProperty(to, key, value);
- });
-
- return to;
-}
-
-
-
-///--- API
-
-function Writer(options) {
- options = merge(DEFAULT_OPTS, options || {});
-
- this._buf = new Buffer(options.size || 1024);
- this._size = this._buf.length;
- this._offset = 0;
- this._options = options;
-
- // A list of offsets in the buffer where we need to insert
- // sequence tag/len pairs.
- this._seq = [];
-
- var self = this;
- this.__defineGetter__('buffer', function() {
- if (self._seq.length)
- throw new InvalidAsn1Error(self._seq.length + ' unended sequence(s)');
-
- return self._buf.slice(0, self._offset);
- });
-}
-
-
-Writer.prototype.writeByte = function(b) {
- if (typeof(b) !== 'number')
- throw new TypeError('argument must be a Number');
-
- this._ensure(1);
- this._buf[this._offset++] = b;
-};
-
-
-Writer.prototype.writeInt = function(i, tag) {
- if (typeof(i) !== 'number')
- throw new TypeError('argument must be a Number');
- if (typeof(tag) !== 'number')
- tag = ASN1.Integer;
-
- var sz = 4;
-
- while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000)) &&
- (sz > 1)) {
- sz--;
- i <<= 8;
- }
-
- if (sz > 4)
- throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff');
-
- this._ensure(2 + sz);
- this._buf[this._offset++] = tag;
- this._buf[this._offset++] = sz;
-
- while (sz-- > 0) {
- this._buf[this._offset++] = ((i & 0xff000000) >> 24);
- i <<= 8;
- }
-
-};
-
-
-Writer.prototype.writeNull = function() {
- this.writeByte(ASN1.Null);
- this.writeByte(0x00);
-};
-
-
-Writer.prototype.writeEnumeration = function(i, tag) {
- if (typeof(i) !== 'number')
- throw new TypeError('argument must be a Number');
- if (typeof(tag) !== 'number')
- tag = ASN1.Enumeration;
-
- return this.writeInt(i, tag);
-};
-
-
-Writer.prototype.writeBoolean = function(b, tag) {
- if (typeof(b) !== 'boolean')
- throw new TypeError('argument must be a Boolean');
- if (typeof(tag) !== 'number')
- tag = ASN1.Boolean;
-
- this._ensure(3);
- this._buf[this._offset++] = tag;
- this._buf[this._offset++] = 0x01;
- this._buf[this._offset++] = b ? 0xff : 0x00;
-};
-
-
-Writer.prototype.writeString = function(s, tag) {
- if (typeof(s) !== 'string')
- throw new TypeError('argument must be a string (was: ' + typeof(s) + ')');
- if (typeof(tag) !== 'number')
- tag = ASN1.OctetString;
-
- var len = Buffer.byteLength(s);
- this.writeByte(tag);
- this.writeLength(len);
- if (len) {
- this._ensure(len);
- this._buf.write(s, this._offset);
- this._offset += len;
- }
-};
-
-
-Writer.prototype.writeBuffer = function(buf, tag) {
- if (typeof(tag) !== 'number')
- throw new TypeError('tag must be a number');
- if (!Buffer.isBuffer(buf))
- throw new TypeError('argument must be a buffer');
-
- this.writeByte(tag);
- this.writeLength(buf.length);
- this._ensure(buf.length);
- buf.copy(this._buf, this._offset, 0, buf.length);
- this._offset += buf.length;
-};
-
-
-Writer.prototype.writeStringArray = function(strings) {
- if ((!strings instanceof Array))
- throw new TypeError('argument must be an Array[String]');
-
- var self = this;
- strings.forEach(function(s) {
- self.writeString(s);
- });
-};
-
-// This is really to solve DER cases, but whatever for now
-Writer.prototype.writeOID = function(s, tag) {
- if (typeof(s) !== 'string')
- throw new TypeError('argument must be a string');
- if (typeof(tag) !== 'number')
- tag = ASN1.OID;
-
- if (!/^([0-9]+\.){3,}[0-9]+$/.test(s))
- throw new Error('argument is not a valid OID string');
-
- function encodeOctet(bytes, octet) {
- if (octet < 128) {
- bytes.push(octet);
- } else if (octet < 16384) {
- bytes.push((octet >>> 7) | 0x80);
- bytes.push(octet & 0x7F);
- } else if (octet < 2097152) {
- bytes.push((octet >>> 14) | 0x80);
- bytes.push(((octet >>> 7) | 0x80) & 0xFF);
- bytes.push(octet & 0x7F);
- } else if (octet < 268435456) {
- bytes.push((octet >>> 21) | 0x80);
- bytes.push(((octet >>> 14) | 0x80) & 0xFF);
- bytes.push(((octet >>> 7) | 0x80) & 0xFF);
- bytes.push(octet & 0x7F);
- } else {
- bytes.push(((octet >>> 28) | 0x80) & 0xFF);
- bytes.push(((octet >>> 21) | 0x80) & 0xFF);
- bytes.push(((octet >>> 14) | 0x80) & 0xFF);
- bytes.push(((octet >>> 7) | 0x80) & 0xFF);
- bytes.push(octet & 0x7F);
- }
- }
-
- var tmp = s.split('.');
- var bytes = [];
- bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));
- tmp.slice(2).forEach(function(b) {
- encodeOctet(bytes, parseInt(b, 10));
- });
-
- var self = this;
- this._ensure(2 + bytes.length);
- this.writeByte(tag);
- this.writeLength(bytes.length);
- bytes.forEach(function(b) {
- self.writeByte(b);
- });
-};
-
-
-Writer.prototype.writeLength = function(len) {
- if (typeof(len) !== 'number')
- throw new TypeError('argument must be a Number');
-
- this._ensure(4);
-
- if (len <= 0x7f) {
- this._buf[this._offset++] = len;
- } else if (len <= 0xff) {
- this._buf[this._offset++] = 0x81;
- this._buf[this._offset++] = len;
- } else if (len <= 0xffff) {
- this._buf[this._offset++] = 0x82;
- this._buf[this._offset++] = len >> 8;
- this._buf[this._offset++] = len;
- } else if (len <= 0xffffff) {
- this._shift(start, len, 1);
- this._buf[this._offset++] = 0x83;
- this._buf[this._offset++] = len >> 16;
- this._buf[this._offset++] = len >> 8;
- this._buf[this._offset++] = len;
- } else {
- throw new InvalidAsn1ERror('Length too long (> 4 bytes)');
- }
-};
-
-Writer.prototype.startSequence = function(tag) {
- if (typeof(tag) !== 'number')
- tag = ASN1.Sequence | ASN1.Constructor;
-
- this.writeByte(tag);
- this._seq.push(this._offset);
- this._ensure(3);
- this._offset += 3;
-};
-
-
-Writer.prototype.endSequence = function() {
- var seq = this._seq.pop();
- var start = seq + 3;
- var len = this._offset - start;
-
- if (len <= 0x7f) {
- this._shift(start, len, -2);
- this._buf[seq] = len;
- } else if (len <= 0xff) {
- this._shift(start, len, -1);
- this._buf[seq] = 0x81;
- this._buf[seq + 1] = len;
- } else if (len <= 0xffff) {
- this._buf[seq] = 0x82;
- this._buf[seq + 1] = len >> 8;
- this._buf[seq + 2] = len;
- } else if (len <= 0xffffff) {
- this._shift(start, len, 1);
- this._buf[seq] = 0x83;
- this._buf[seq + 1] = len >> 16;
- this._buf[seq + 2] = len >> 8;
- this._buf[seq + 3] = len;
- } else {
- throw new InvalidAsn1Error('Sequence too long');
- }
-};
-
-
-Writer.prototype._shift = function(start, len, shift) {
- assert.ok(start !== undefined);
- assert.ok(len !== undefined);
- assert.ok(shift);
-
- this._buf.copy(this._buf, start + shift, start, start + len);
- this._offset += shift;
-};
-
-Writer.prototype._ensure = function(len) {
- assert.ok(len);
-
- if (this._size - this._offset < len) {
- var sz = this._size * this._options.growthFactor;
- if (sz - this._offset < len)
- sz += len;
-
- var buf = new Buffer(sz);
-
- this._buf.copy(buf, 0, 0, this._offset);
- this._buf = buf;
- this._size = sz;
- }
-};
-
-
-
-///--- Exported API
-
-module.exports = Writer;
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js
deleted file mode 100644
index d1766e7a6..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-// If you have no idea what ASN.1 or BER is, see this:
-// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc
-
-var Ber = require('./ber/index');
-
-
-
-///--- Exported API
-
-module.exports = {
-
- Ber: Ber,
-
- BerReader: Ber.Reader,
-
- BerWriter: Ber.Writer
-
-};
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json b/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
deleted file mode 100644
index 034c2b48f..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "author": {
- "name": "Mark Cavage",
- "email": "mcavage@gmail.com"
- },
- "contributors": [
- {
- "name": "David Gwynne",
- "email": "loki@animata.net"
- },
- {
- "name": "Yunong Xiao",
- "email": "yunong@joyent.com"
- }
- ],
- "name": "asn1",
- "description": "Contains parsers and serializers for ASN.1 (currently BER only)",
- "version": "0.1.11",
- "repository": {
- "type": "git",
- "url": "git://github.com/mcavage/node-asn1.git"
- },
- "main": "lib/index.js",
- "engines": {
- "node": ">=0.4.9"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "0.1.4"
- },
- "scripts": {
- "pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi",
- "test": "tap ./tst"
- },
- "readme": "node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.\nCurrently BER encoding is supported; at some point I'll likely have to do DER.\n\n## Usage\n\nMostly, if you're *actually* needing to read and write ASN.1, you probably don't\nneed this readme to explain what and why. If you have no idea what ASN.1 is,\nsee this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nThe source is pretty much self-explanatory, and has read/write methods for the\ncommon types out there.\n\n### Decoding\n\nThe following reads an ASN.1 sequence with a boolean.\n\n var Ber = require('asn1').Ber;\n\n var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));\n\n reader.readSequence();\n console.log('Sequence len: ' + reader.length);\n if (reader.peek() === Ber.Boolean)\n console.log(reader.readBoolean());\n\n### Encoding\n\nThe following generates the same payload as above.\n\n var Ber = require('asn1').Ber;\n\n var writer = new Ber.Writer();\n\n writer.startSequence();\n writer.writeBoolean(true);\n writer.endSequence();\n\n console.log(writer.buffer);\n\n## Installation\n\n npm install asn1\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-asn1/issues>.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/mcavage/node-asn1/issues"
- },
- "homepage": "https://github.com/mcavage/node-asn1#readme",
- "_id": "asn1@0.1.11",
- "_shasum": "559be18376d08a4ec4dbe80877d27818639b2df7",
- "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
- "_from": "asn1@0.1.11"
-}
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js
deleted file mode 100644
index 0b78b474f..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-var test = require('tap').test;
-
-
-
-///--- Globals
-
-var BerReader;
-
-
-
-///--- Tests
-
-test('load library', function(t) {
- BerReader = require('../../lib/index').BerReader;
- t.ok(BerReader);
- try {
- new BerReader();
- t.fail('Should have thrown');
- } catch (e) {
- t.ok(e instanceof TypeError, 'Should have been a type error');
- }
- t.end();
-});
-
-
-test('read byte', function(t) {
- var reader = new BerReader(new Buffer([0xde]));
- t.ok(reader);
- t.equal(reader.readByte(), 0xde, 'wrong value');
- t.end();
-});
-
-
-test('read 1 byte int', function(t) {
- var reader = new BerReader(new Buffer([0x02, 0x01, 0x03]));
- t.ok(reader);
- t.equal(reader.readInt(), 0x03, 'wrong value');
- t.equal(reader.length, 0x01, 'wrong length');
- t.end();
-});
-
-
-test('read 2 byte int', function(t) {
- var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde]));
- t.ok(reader);
- t.equal(reader.readInt(), 0x7ede, 'wrong value');
- t.equal(reader.length, 0x02, 'wrong length');
- t.end();
-});
-
-
-test('read 3 byte int', function(t) {
- var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03]));
- t.ok(reader);
- t.equal(reader.readInt(), 0x7ede03, 'wrong value');
- t.equal(reader.length, 0x03, 'wrong length');
- t.end();
-});
-
-
-test('read 4 byte int', function(t) {
- var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01]));
- t.ok(reader);
- t.equal(reader.readInt(), 0x7ede0301, 'wrong value');
- t.equal(reader.length, 0x04, 'wrong length');
- t.end();
-});
-
-
-test('read boolean true', function(t) {
- var reader = new BerReader(new Buffer([0x01, 0x01, 0xff]));
- t.ok(reader);
- t.equal(reader.readBoolean(), true, 'wrong value');
- t.equal(reader.length, 0x01, 'wrong length');
- t.end();
-});
-
-
-test('read boolean false', function(t) {
- var reader = new BerReader(new Buffer([0x01, 0x01, 0x00]));
- t.ok(reader);
- t.equal(reader.readBoolean(), false, 'wrong value');
- t.equal(reader.length, 0x01, 'wrong length');
- t.end();
-});
-
-
-test('read enumeration', function(t) {
- var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20]));
- t.ok(reader);
- t.equal(reader.readEnumeration(), 0x20, 'wrong value');
- t.equal(reader.length, 0x01, 'wrong length');
- t.end();
-});
-
-
-test('read string', function(t) {
- var dn = 'cn=foo,ou=unit,o=test';
- var buf = new Buffer(dn.length + 2);
- buf[0] = 0x04;
- buf[1] = Buffer.byteLength(dn);
- buf.write(dn, 2);
- var reader = new BerReader(buf);
- t.ok(reader);
- t.equal(reader.readString(), dn, 'wrong value');
- t.equal(reader.length, dn.length, 'wrong length');
- t.end();
-});
-
-
-test('read sequence', function(t) {
- var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));
- t.ok(reader);
- t.equal(reader.readSequence(), 0x30, 'wrong value');
- t.equal(reader.length, 0x03, 'wrong length');
- t.equal(reader.readBoolean(), true, 'wrong value');
- t.equal(reader.length, 0x01, 'wrong length');
- t.end();
-});
-
-
-test('anonymous LDAPv3 bind', function(t) {
- var BIND = new Buffer(14);
- BIND[0] = 0x30; // Sequence
- BIND[1] = 12; // len
- BIND[2] = 0x02; // ASN.1 Integer
- BIND[3] = 1; // len
- BIND[4] = 0x04; // msgid (make up 4)
- BIND[5] = 0x60; // Bind Request
- BIND[6] = 7; // len
- BIND[7] = 0x02; // ASN.1 Integer
- BIND[8] = 1; // len
- BIND[9] = 0x03; // v3
- BIND[10] = 0x04; // String (bind dn)
- BIND[11] = 0; // len
- BIND[12] = 0x80; // ContextSpecific (choice)
- BIND[13] = 0; // simple bind
-
- // Start testing ^^
- var ber = new BerReader(BIND);
- t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence');
- t.equal(ber.length, 12, 'Message length should be 12');
- t.equal(ber.readInt(), 4, 'Message id should have been 4');
- t.equal(ber.readSequence(), 96, 'Bind Request should have been 96');
- t.equal(ber.length, 7, 'Bind length should have been 7');
- t.equal(ber.readInt(), 3, 'LDAP version should have been 3');
- t.equal(ber.readString(), '', 'Bind DN should have been empty');
- t.equal(ber.length, 0, 'string length should have been 0');
- t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)');
- t.equal(ber.readByte(), 0, 'Should have been simple bind');
- t.equal(null, ber.readByte(), 'Should be out of data');
- t.end();
-});
-
-
-test('long string', function(t) {
- var buf = new Buffer(256);
- var o;
- var s =
- '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' +
- 'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' +
- 'Teena Vradmin\'s description.';
- buf[0] = 0x04;
- buf[1] = 0x81;
- buf[2] = 0x94;
- buf.write(s, 3);
- var ber = new BerReader(buf.slice(0, 3 + s.length));
- t.equal(ber.readString(), s);
- t.end();
-});
diff --git a/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js b/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js
deleted file mode 100644
index add0b9fd3..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
-
-var test = require('tap').test;
-var sys = require('sys');
-
-///--- Globals
-
-var BerWriter;
-
-var BerReader;
-
-
-///--- Tests
-
-test('load library', function(t) {
- BerWriter = require('../../lib/index').BerWriter;
- t.ok(BerWriter);
- t.ok(new BerWriter());
- t.end();
-});
-
-
-test('write byte', function(t) {
- var writer = new BerWriter();
-
- writer.writeByte(0xC2);
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 1, 'Wrong length');
- t.equal(ber[0], 0xC2, 'value wrong');
-
- t.end();
-});
-
-
-test('write 1 byte int', function(t) {
- var writer = new BerWriter();
-
- writer.writeInt(0x7f);
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length);
- t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]);
- t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]);
- t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]);
-
- t.end();
-});
-
-
-test('write 2 byte int', function(t) {
- var writer = new BerWriter();
-
- writer.writeInt(0x7ffe);
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 4, 'Wrong length for an int');
- t.equal(ber[0], 0x02, 'ASN.1 tag wrong');
- t.equal(ber[1], 0x02, 'length wrong');
- t.equal(ber[2], 0x7f, 'value wrong (byte 1)');
- t.equal(ber[3], 0xfe, 'value wrong (byte 2)');
-
- t.end();
-});
-
-
-test('write 3 byte int', function(t) {
- var writer = new BerWriter();
-
- writer.writeInt(0x7ffffe);
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 5, 'Wrong length for an int');
- t.equal(ber[0], 0x02, 'ASN.1 tag wrong');
- t.equal(ber[1], 0x03, 'length wrong');
- t.equal(ber[2], 0x7f, 'value wrong (byte 1)');
- t.equal(ber[3], 0xff, 'value wrong (byte 2)');
- t.equal(ber[4], 0xfe, 'value wrong (byte 3)');
-
- t.end();
-});
-
-
-test('write 4 byte int', function(t) {
- var writer = new BerWriter();
-
- writer.writeInt(0x7ffffffe);
- var ber = writer.buffer;
-
- t.ok(ber);
-
- t.equal(ber.length, 6, 'Wrong length for an int');
- t.equal(ber[0], 0x02, 'ASN.1 tag wrong');
- t.equal(ber[1], 0x04, 'length wrong');
- t.equal(ber[2], 0x7f, 'value wrong (byte 1)');
- t.equal(ber[3], 0xff, 'value wrong (byte 2)');
- t.equal(ber[4], 0xff, 'value wrong (byte 3)');
- t.equal(ber[5], 0xfe, 'value wrong (byte 4)');
-
- t.end();
-});
-
-
-test('write boolean', function(t) {
- var writer = new BerWriter();
-
- writer.writeBoolean(true);
- writer.writeBoolean(false);
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 6, 'Wrong length');
- t.equal(ber[0], 0x01, 'tag wrong');
- t.equal(ber[1], 0x01, 'length wrong');
- t.equal(ber[2], 0xff, 'value wrong');
- t.equal(ber[3], 0x01, 'tag wrong');
- t.equal(ber[4], 0x01, 'length wrong');
- t.equal(ber[5], 0x00, 'value wrong');
-
- t.end();
-});
-
-
-test('write string', function(t) {
- var writer = new BerWriter();
- writer.writeString('hello world');
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 13, 'wrong length');
- t.equal(ber[0], 0x04, 'wrong tag');
- t.equal(ber[1], 11, 'wrong length');
- t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value');
-
- t.end();
-});
-
-test('write buffer', function(t) {
- var writer = new BerWriter();
- // write some stuff to start with
- writer.writeString('hello world');
- var ber = writer.buffer;
- var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01,
- 0xff, 0x01, 0x01, 0xff]);
- writer.writeBuffer(buf.slice(2, buf.length), 0x04);
- ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 26, 'wrong length');
- t.equal(ber[0], 0x04, 'wrong tag');
- t.equal(ber[1], 11, 'wrong length');
- t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value');
- t.equal(ber[13], buf[0], 'wrong tag');
- t.equal(ber[14], buf[1], 'wrong length');
- for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) {
- t.equal(ber[i], buf[j], 'buffer contents not identical');
- }
- t.end();
-});
-
-test('write string array', function(t) {
- var writer = new BerWriter();
- writer.writeStringArray(['hello world', 'fubar!']);
- var ber = writer.buffer;
-
- t.ok(ber);
-
- t.equal(ber.length, 21, 'wrong length');
- t.equal(ber[0], 0x04, 'wrong tag');
- t.equal(ber[1], 11, 'wrong length');
- t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value');
-
- t.equal(ber[13], 0x04, 'wrong tag');
- t.equal(ber[14], 6, 'wrong length');
- t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value');
-
- t.end();
-});
-
-
-test('resize internal buffer', function(t) {
- var writer = new BerWriter({size: 2});
- writer.writeString('hello world');
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 13, 'wrong length');
- t.equal(ber[0], 0x04, 'wrong tag');
- t.equal(ber[1], 11, 'wrong length');
- t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value');
-
- t.end();
-});
-
-
-test('sequence', function(t) {
- var writer = new BerWriter({size: 25});
- writer.startSequence();
- writer.writeString('hello world');
- writer.endSequence();
- var ber = writer.buffer;
-
- t.ok(ber);
- console.log(ber);
- t.equal(ber.length, 15, 'wrong length');
- t.equal(ber[0], 0x30, 'wrong tag');
- t.equal(ber[1], 13, 'wrong length');
- t.equal(ber[2], 0x04, 'wrong tag');
- t.equal(ber[3], 11, 'wrong length');
- t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value');
-
- t.end();
-});
-
-
-test('nested sequence', function(t) {
- var writer = new BerWriter({size: 25});
- writer.startSequence();
- writer.writeString('hello world');
- writer.startSequence();
- writer.writeString('hello world');
- writer.endSequence();
- writer.endSequence();
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 30, 'wrong length');
- t.equal(ber[0], 0x30, 'wrong tag');
- t.equal(ber[1], 28, 'wrong length');
- t.equal(ber[2], 0x04, 'wrong tag');
- t.equal(ber[3], 11, 'wrong length');
- t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value');
- t.equal(ber[15], 0x30, 'wrong tag');
- t.equal(ber[16], 13, 'wrong length');
- t.equal(ber[17], 0x04, 'wrong tag');
- t.equal(ber[18], 11, 'wrong length');
- t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value');
-
- t.end();
-});
-
-
-test('LDAP bind message', function(t) {
- var dn = 'cn=foo,ou=unit,o=test';
- var writer = new BerWriter();
- writer.startSequence();
- writer.writeInt(3); // msgid = 3
- writer.startSequence(0x60); // ldap bind
- writer.writeInt(3); // ldap v3
- writer.writeString(dn);
- writer.writeByte(0x80);
- writer.writeByte(0x00);
- writer.endSequence();
- writer.endSequence();
- var ber = writer.buffer;
-
- t.ok(ber);
- t.equal(ber.length, 35, 'wrong length (buffer)');
- t.equal(ber[0], 0x30, 'wrong tag');
- t.equal(ber[1], 33, 'wrong length');
- t.equal(ber[2], 0x02, 'wrong tag');
- t.equal(ber[3], 1, 'wrong length');
- t.equal(ber[4], 0x03, 'wrong value');
- t.equal(ber[5], 0x60, 'wrong tag');
- t.equal(ber[6], 28, 'wrong length');
- t.equal(ber[7], 0x02, 'wrong tag');
- t.equal(ber[8], 1, 'wrong length');
- t.equal(ber[9], 0x03, 'wrong value');
- t.equal(ber[10], 0x04, 'wrong tag');
- t.equal(ber[11], dn.length, 'wrong length');
- t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value');
- t.equal(ber[33], 0x80, 'wrong tag');
- t.equal(ber[34], 0x00, 'wrong len');
-
- t.end();
-});
-
-
-test('Write OID', function(t) {
- var oid = '1.2.840.113549.1.1.1';
- var writer = new BerWriter();
- writer.writeOID(oid);
-
- var ber = writer.buffer;
- t.ok(ber);
- console.log(require('util').inspect(ber));
- console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x01])));
-
- t.end();
-});
diff --git a/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md b/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md
deleted file mode 100644
index c0c3a5308..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# node-assert-plus
-
-This library is a super small wrapper over node's assert module that has two
-things: (1) the ability to disable assertions with the environment variable
-NODE_NDEBUG, and (2) some API wrappers for argument testing. Like
-`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks
-like this:
-
- var assert = require('assert-plus');
-
- function fooAccount(options, callback) {
- assert.object(options, 'options');
- assert.number(options.id, 'options.id);
- assert.bool(options.isManager, 'options.isManager');
- assert.string(options.name, 'options.name');
- assert.arrayOfString(options.email, 'options.email');
- assert.func(callback, 'callback');
-
- // Do stuff
- callback(null, {});
- }
-
-# API
-
-All methods that *aren't* part of node's core assert API are simply assumed to
-take an argument, and then a string 'name' that's not a message; `AssertionError`
-will be thrown if the assertion fails with a message like:
-
- AssertionError: foo (string) is required
- at test (/home/mark/work/foo/foo.js:3:9)
- at Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)
- at Module._compile (module.js:446:26)
- at Object..js (module.js:464:10)
- at Module.load (module.js:353:31)
- at Function._load (module.js:311:12)
- at Array.0 (module.js:484:10)
- at EventEmitter._tickCallback (node.js:190:38)
-
-from:
-
- function test(foo) {
- assert.string(foo, 'foo');
- }
-
-There you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:
-
- function test(foo) {
- assert.arrayOfString(foo, 'foo');
- }
-
-You can assert IFF an argument is not `undefined` (i.e., an optional arg):
-
- assert.optionalString(foo, 'foo');
-
-Lastly, you can opt-out of assertion checking altogether by setting the
-environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have
-lots of assertions, and don't want to pay `typeof ()` taxes to v8 in
-production.
-
-The complete list of APIs is:
-
-* assert.bool
-* assert.buffer
-* assert.func
-* assert.number
-* assert.object
-* assert.string
-* assert.arrayOfBool
-* assert.arrayOfFunc
-* assert.arrayOfNumber
-* assert.arrayOfObject
-* assert.arrayOfString
-* assert.optionalBool
-* assert.optionalBuffer
-* assert.optionalFunc
-* assert.optionalNumber
-* assert.optionalObject
-* assert.optionalString
-* assert.optionalArrayOfBool
-* assert.optionalArrayOfFunc
-* assert.optionalArrayOfNumber
-* assert.optionalArrayOfObject
-* assert.optionalArrayOfString
-* assert.AssertionError
-* assert.fail
-* assert.ok
-* assert.equal
-* assert.notEqual
-* assert.deepEqual
-* assert.notDeepEqual
-* assert.strictEqual
-* assert.notStrictEqual
-* assert.throws
-* assert.doesNotThrow
-* assert.ifError
-
-# Installation
-
- npm install assert-plus
-
-## License
-
-The MIT License (MIT)
-Copyright (c) 2012 Mark Cavage
-
-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.
-
-## Bugs
-
-See <https://github.com/mcavage/node-assert-plus/issues>.
diff --git a/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js b/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js
deleted file mode 100644
index ff2ba02de..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright (c) 2012, Mark Cavage. All rights reserved.
-
-var assert = require('assert');
-var Stream = require('stream').Stream;
-var util = require('util');
-
-
-
-///--- Globals
-
-var NDEBUG = process.env.NODE_NDEBUG || false;
-var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
-
-
-
-///--- Messages
-
-var ARRAY_TYPE_REQUIRED = '%s ([%s]) required';
-var TYPE_REQUIRED = '%s (%s) is required';
-
-
-
-///--- Internal
-
-function capitalize(str) {
- return (str.charAt(0).toUpperCase() + str.slice(1));
-}
-
-function uncapitalize(str) {
- return (str.charAt(0).toLowerCase() + str.slice(1));
-}
-
-function _() {
- return (util.format.apply(util, arguments));
-}
-
-
-function _assert(arg, type, name, stackFunc) {
- if (!NDEBUG) {
- name = name || type;
- stackFunc = stackFunc || _assert.caller;
- var t = typeof (arg);
-
- if (t !== type) {
- throw new assert.AssertionError({
- message: _(TYPE_REQUIRED, name, type),
- actual: t,
- expected: type,
- operator: '===',
- stackStartFunction: stackFunc
- });
- }
- }
-}
-
-
-function _instanceof(arg, type, name, stackFunc) {
- if (!NDEBUG) {
- name = name || type;
- stackFunc = stackFunc || _instanceof.caller;
-
- if (!(arg instanceof type)) {
- throw new assert.AssertionError({
- message: _(TYPE_REQUIRED, name, type.name),
- actual: _getClass(arg),
- expected: type.name,
- operator: 'instanceof',
- stackStartFunction: stackFunc
- });
- }
- }
-}
-
-function _getClass(object) {
- return (Object.prototype.toString.call(object).slice(8, -1));
-};
-
-
-
-///--- API
-
-function array(arr, type, name) {
- if (!NDEBUG) {
- name = name || type;
-
- if (!Array.isArray(arr)) {
- throw new assert.AssertionError({
- message: _(ARRAY_TYPE_REQUIRED, name, type),
- actual: typeof (arr),
- expected: 'array',
- operator: 'Array.isArray',
- stackStartFunction: array.caller
- });
- }
-
- for (var i = 0; i < arr.length; i++) {
- _assert(arr[i], type, name, array);
- }
- }
-}
-
-
-function bool(arg, name) {
- _assert(arg, 'boolean', name, bool);
-}
-
-
-function buffer(arg, name) {
- if (!Buffer.isBuffer(arg)) {
- throw new assert.AssertionError({
- message: _(TYPE_REQUIRED, name || '', 'Buffer'),
- actual: typeof (arg),
- expected: 'buffer',
- operator: 'Buffer.isBuffer',
- stackStartFunction: buffer
- });
- }
-}
-
-
-function func(arg, name) {
- _assert(arg, 'function', name);
-}
-
-
-function number(arg, name) {
- _assert(arg, 'number', name);
- if (!NDEBUG && (isNaN(arg) || !isFinite(arg))) {
- throw new assert.AssertionError({
- message: _(TYPE_REQUIRED, name, 'number'),
- actual: arg,
- expected: 'number',
- operator: 'isNaN',
- stackStartFunction: number
- });
- }
-}
-
-
-function object(arg, name) {
- _assert(arg, 'object', name);
-}
-
-
-function stream(arg, name) {
- _instanceof(arg, Stream, name);
-}
-
-
-function date(arg, name) {
- _instanceof(arg, Date, name);
-}
-
-function regexp(arg, name) {
- _instanceof(arg, RegExp, name);
-}
-
-
-function string(arg, name) {
- _assert(arg, 'string', name);
-}
-
-
-function uuid(arg, name) {
- string(arg, name);
- if (!NDEBUG && !UUID_REGEXP.test(arg)) {
- throw new assert.AssertionError({
- message: _(TYPE_REQUIRED, name, 'uuid'),
- actual: 'string',
- expected: 'uuid',
- operator: 'test',
- stackStartFunction: uuid
- });
- }
-}
-
-
-///--- Exports
-
-module.exports = {
- bool: bool,
- buffer: buffer,
- date: date,
- func: func,
- number: number,
- object: object,
- regexp: regexp,
- stream: stream,
- string: string,
- uuid: uuid
-};
-
-
-Object.keys(module.exports).forEach(function (k) {
- if (k === 'buffer')
- return;
-
- var name = 'arrayOf' + capitalize(k);
-
- if (k === 'bool')
- k = 'boolean';
- if (k === 'func')
- k = 'function';
- module.exports[name] = function (arg, name) {
- array(arg, k, name);
- };
-});
-
-Object.keys(module.exports).forEach(function (k) {
- var _name = 'optional' + capitalize(k);
- var s = uncapitalize(k.replace('arrayOf', ''));
- if (s === 'bool')
- s = 'boolean';
- if (s === 'func')
- s = 'function';
-
- if (k.indexOf('arrayOf') !== -1) {
- module.exports[_name] = function (arg, name) {
- if (!NDEBUG && arg !== undefined) {
- array(arg, s, name);
- }
- };
- } else {
- module.exports[_name] = function (arg, name) {
- if (!NDEBUG && arg !== undefined) {
- _assert(arg, s, name);
- }
- };
- }
-});
-
-
-// Reexport built-in assertions
-Object.keys(assert).forEach(function (k) {
- if (k === 'AssertionError') {
- module.exports[k] = assert[k];
- return;
- }
-
- module.exports[k] = function () {
- if (!NDEBUG) {
- assert[k].apply(assert[k], arguments);
- }
- };
-});
diff --git a/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json b/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json
deleted file mode 100644
index b3317675d..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "author": {
- "name": "Mark Cavage",
- "email": "mcavage@gmail.com"
- },
- "name": "assert-plus",
- "description": "Extra assertions on top of node's assert module",
- "version": "0.1.5",
- "main": "./assert.js",
- "devDependencies": {},
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mcavage/node-assert-plus.git"
- },
- "engines": {
- "node": ">=0.8"
- },
- "readme": "# node-assert-plus\n\nThis library is a super small wrapper over node's assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks\nlike this:\n\n var assert = require('assert-plus');\n\n function fooAccount(options, callback) {\n\t assert.object(options, 'options');\n\t\tassert.number(options.id, 'options.id);\n\t\tassert.bool(options.isManager, 'options.isManager');\n\t\tassert.string(options.name, 'options.name');\n\t\tassert.arrayOfString(options.email, 'options.email');\n\t\tassert.func(callback, 'callback');\n\n // Do stuff\n\t\tcallback(null, {});\n }\n\n# API\n\nAll methods that *aren't* part of node's core assert API are simply assumed to\ntake an argument, and then a string 'name' that's not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n\tat test (/home/mark/work/foo/foo.js:3:9)\n\tat Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)\n\tat Module._compile (module.js:446:26)\n\tat Object..js (module.js:464:10)\n\tat Module.load (module.js:353:31)\n\tat Function._load (module.js:311:12)\n\tat Array.0 (module.js:484:10)\n\tat EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n function test(foo) {\n\t assert.string(foo, 'foo');\n }\n\nThere you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:\n\n function test(foo) {\n\t assert.arrayOfString(foo, 'foo');\n }\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n assert.optionalString(foo, 'foo');\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don't want to pay `typeof ()` taxes to v8 in\nproduction.\n\nThe complete list of APIs is:\n\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.object\n* assert.string\n* assert.arrayOfBool\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-assert-plus/issues>.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/mcavage/node-assert-plus/issues"
- },
- "homepage": "https://github.com/mcavage/node-assert-plus#readme",
- "dependencies": {},
- "_id": "assert-plus@0.1.5",
- "_shasum": "ee74009413002d84cec7219c6ac811812e723160",
- "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
- "_from": "assert-plus@>=0.1.5 <0.2.0"
-}
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/.npmignore b/node_modules/request/node_modules/http-signature/node_modules/ctype/.npmignore
deleted file mode 100644
index dc6d3b24d..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-tst/
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG b/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG
deleted file mode 100644
index 426da9ef0..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG
+++ /dev/null
@@ -1,78 +0,0 @@
-This contains tickets fixed in each version release in reverse chronological
-order. There is one ticket per line. Each commits message has the tickets fixed
-in it. The commit message also has the corresponding github issue. i.e. CTYPE-42
-would be issue 42. Each issue can be found at:
-https://github.com/rmustacc/node-ctype/issues/%d.
-
-v0.5.3
-CTYPE-50 Release 0.5.3
-Contributed by Nick Schonning:
-CTYPE-49 Add repository section to package.json
-Contributed by Jonathan Ong:
-CTYPE-48 Create .npmignore
-
-v0.5.2
-CTYPE-46 Release 0.5.2
-CTYPE-45 error in setEndian logic
-
-v0.5.1
-CTYPE-44 Release 0.5.1
-Contributed by Terin Stock:
-CTYPE-41 CTypeParser.writeStruct should return its offset
-Contributed by Terin Stock:
-CTYPE-42 int64_t returns wrong size
-
-v0.5.0
-CTYPE-40 Release 0.5.0
-CTYPE-39 want > 0.6 engine support
-
-v0.4.0
-CTYPE-37 Release v0.4.0
-CTYPE-6 want additional entry point for write
-CTYPE-20 Add 64-bit int support into core parser
-CTYPE-31 Fix bounds errors node/2129
-CTYPE-33 Update copyright holders
-CTYPE-34 ctf.js confuses sign bit.
-CTYPE-35 Make the README more useful for getting started
-CTYPE-36 want manual page on ctio functions
-
-v0.3.1
-CTYPE-29 Release 0.3.1
-CTYPE-28 Want v0.6 npm support
-
-v0.3.0
-CTYPE-27 Release v0.3.0
-CTYPE-26 Want alternate default char behavior
-
-v0.2.1
-CTYPE-25 Release v0.2.1
-CTYPE-24 Writing structs is busted
-
-v0.2.0:
-CTYPE-23 Release v0.2.0
-CTYPE-21 Add support for CTF JSON data
-CTYPE-22 Add Javascriptlint profile
-CTYPE-15 Pull in ctio updates from node/master
-
-v0.1.0:
-CTYPE-18 Bump version to v0.1.0
-CTYPE-17 Fix nested structures
-CTYPE-16 Remove extraneous logging
-CTYPE-14 toAbs64 and toApprox64 are not exported
-
-v0.0.3:
-CTYPE-12 Bump version to v0.0.3
-CTYPE-11 fix typo in wuint64
-CTYPE-10 Integrate jsstyle
-
-v0.0.2:
-CTYPE-8 dump npm version to v0.0.2
-CTYPE-9 want changelog
-CTYPE-7 fix typo in detypes.
-
-v0.0.1:
-CTYPE-5 Missing from NPM registry
-CTYPE-4 int16_t calls wrong read function
-CTYPE-3 API example types are missing quotes as strings
-CTYPE-2 doc missing 64-bit functions
-CTYPE-1 Need license
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE b/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE
deleted file mode 100644
index 22ced3e63..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-The following license applies to all files unless the file is specified below.
-Each file specified below has its license information embedded in it:
-
-tools/jsstyle
-
-Copyright 2011, Robert Mustacchi. All rights reserved.
-Copyright 2011, Joyent, Inc. All rights reserved.
-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/request/node_modules/http-signature/node_modules/ctype/README b/node_modules/request/node_modules/http-signature/node_modules/ctype/README
deleted file mode 100644
index 4efd7ee5c..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/README
+++ /dev/null
@@ -1,82 +0,0 @@
-Node-CType is a way to read and write binary data in structured and easy to use
-format. Its name comes from the C header file.
-
-To get started, simply clone the repository or use npm to install it. Once it is
-there, simply require it.
-
-git clone git://github.com/rmustacc/node-ctype
-npm install ctype
-var mod_ctype = require('ctype')
-
-
-There are two APIs that you can use, depending on what abstraction you'd like.
-The low level API let's you read and write individual integers and floats from
-buffers. The higher level API let's you read and write structures of these. To
-illustrate this, let's looks look at how we would read and write a binary
-encoded x,y point.
-
-In C we would define this structure as follows:
-
-typedef struct point {
- uint16_t p_x;
- uint16_t p_y;
-} point_t;
-
-To read a binary encoded point from a Buffer, we first need to create a CType
-parser (where we specify the endian and other options) and add the typedef.
-
-var parser = new mod_ctype.Parser({ endian: 'big' });
-parser.typedef('point_t', [
- { x: { type: 'uint16_t' } },
- { y: { type: 'uint16_t' } }
-]);
-
-From here, given a buffer buf and an offset into it, we can read a point.
-
-var out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0);
-console.log(out);
-{ point: { x: 23, y: 42 } }
-
-Another way to get the same information would be to use the low level methods.
-Note that these require you to manually deal with the offset. Here's how we'd
-get the same values of x and y from the buffer.
-
-var x = mod_ctype.ruint16(buf, 'big', 0);
-var y = mod_ctype.ruint16(buf, 'big', 2);
-console.log(x + ', ' + y);
-23, 42
-
-The true power of this API comes from the ability to define and nest typedefs,
-just as you would in C. By default, the following types are defined by default.
-Note that they return a Number, unless indicated otherwise.
-
- * int8_t
- * int16_t
- * int32_t
- * int64_t (returns an array where val[0] << 32 + val[1] would be the value)
- * uint8_t
- * uint16_t
- * uint32_t
- * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)
- * float
- * double
- * char (either returns a buffer with that character or a uint8_t)
- * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)
-
-
-ctf2json integration:
-
-Node-CType supports consuming the output of ctf2json. Once you read in a JSON file,
-all you have to do to add all the definitions it contains is:
-
-var data, parser;
-data = JSON.parse(parsedJSONData);
-parser = mod_ctype.parseCTF(data, { endian: 'big' });
-
-For more documentation, see the file README.old. Full documentation is in the
-process of being rewritten as a series of manual pages which will be available
-in the repository and online for viewing.
-
-To read the ctio manual page simple run, from the root of the workspace:
-
-man -Mman -s 3ctype ctio
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old b/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old
deleted file mode 100644
index 9326b725f..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old
+++ /dev/null
@@ -1,298 +0,0 @@
-This library provides a way to read and write binary data.
-
-Node CType is a way to read and write binary data in structured and easy to use
-formats. It's name comes from the header file, though it does not share as much
-with it as it perhaps should.
-
-There are two levels of the API. One is the raw API which everything is built on
-top of, while the other provides a much nicer abstraction and is built entirely
-by using the lower level API. The hope is that the low level API is both clear
-and useful. The low level API gets it's names from stdint.h (a rather
-appropriate source). The lower level API is presented at the end of this
-document.
-
-Standard CType API
-
-The CType interface is presented as a parser object that controls the
-endianness combined with a series of methods to change that value, parse and
-write out buffers, and a way to provide typedefs. Standard Types
-
-The CType parser supports the following basic types which return Numbers except
-as indicated:
-
- * int8_t
- * int16_t
- * int32_t
- * int64_t (returns an array where val[0] << 32 + val[1] would be the value)
- * uint8_t
- * uint16_t
- * uint32_t
- * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)
- * float
- * double
- * char (returns a buffer with just that single character)
- * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)
-
-Specifying Structs
-
-The CType parser also supports the notion of structs. A struct is an array of
-JSON objects that defines an order of keys which have types and values. One
-would build a struct to represent a point (x,y) as follows:
-
-[
- { x: { type: 'int16_t' }},
- { y: { type: 'int16_t' }}
-]
-
-When this is passed into the read routine, it would read the first two bytes
-(as defined by int16_t) to determine the Number to use for X, and then it would
-read the next two bytes to determine the value of Y. When read this could
-return something like:
-
-{
- x: 42,
- y: -23
-}
-
-When someone wants to write values, we use the same format as above, but with
-additional value field:
-
-[
- { x: { type: 'int16_t', value: 42 }},
- { y: { type: 'int16_t', value: -23 }}
-]
-
-Now, the structure above may be optionally annotated with offsets. This tells
-us to rather than read continuously we should read the given value at the
-specified offset. If an offset is provided, it is is effectively the equivalent
-of lseek(offset, SEEK_SET). Thus, subsequent values will be read from that
-offset and incremented by the appropriate value. As an example:
-
-[
- { x: { type: 'int16_t' }},
- { y: { type: 'int16_t', offset: 20 }},
- { z: { type: 'int16_t' }}
-]
-
-We would read x from the first starting offset given to us, for the sake of
-example, let's assume that's 0. After reading x, the next offset to read from
-would be 2; however, y specifies an offset, thus we jump directly to that
-offset and read y from byte 20. We would then read z from byte 22.
-
-The same offsets may be used when writing values.
-
-Typedef
-
-The basic set of types while covers the basics, is somewhat limiting. To make
-this richer, there is functionality to typedef something like in C. One can use
-typedef to add a new name to an existing type or to define a name to refer to a
-struct. Thus the following are all examples of a typedef:
-
-typedef('size_t', 'uint32_t');
-typedef('ssize_t', 'int32_t');
-typedef('point_t', [
- { x: { type: 'int16_t' }},
- { y: { type: 'int16_t' }}
-]);
-
-Once something has been typedef'd it can be used in any of the definitions
-previously shown.
-
-One cannot remove a typedef once created, this is analogous to C.
-
-The set of defined types can be printed with lstypes. The format of this output
-is subject to change, but likely will look something like:
-
-> lstypes();
-{
- size_t: 'uint32_t',
- ssize_t: 'int32_t',
- point_t: [
- { x: { type: 'int16_t' }},
- { y: { type: 'int16_t' }}
- ]
-}
-
-Specifying arrays
-
-Arrays can be specified by appending []s to a type. Arrays must have the size
-specified. The size must be specified and it can be done in one of two ways:
-
- * An explicit non-zero integer size
- * A name of a previously declared variable in the struct whose value is a
- number.
-
-Note, that when using the name of a variable, it should be the string name for
-the key. This is only valid inside structs and the value must be declared
-before the value with the array. The following are examples:
-
-[
- { ip_addr4: { type: 'uint8_t[4]' }},
- { len: { type: 'uint32_t' }},
- { data: { type: 'uint8_t[len]' }}
-]
-
-Arrays are permitted in typedefs; however, they must have a declared integer
-size. The following are examples of valid and invalid arrays:
-
-typedef('path', 'char[1024]'); /* Good */
-typedef('path', 'char[len]'); /* Bad! */
-
-64 bit values:
-
-Unfortunately Javascript represents values with a double, so you lose precision
-and the ability to represent Integers roughly beyond 2^53. To alleviate this, I
-propose the following for returning 64 bit integers when read:
-
-value[2]: Each entry is a 32 bit number which can be reconstructed to the
-original by the following formula:
-
-value[0] << 32 + value[1] (Note this will not work in Javascript)
-
-CTF JSON data:
-
-node-ctype can also handle JSON data that mathces the format described in the
-documentation of the tool ctf2json. Given the JSON data which specifies type
-information, it will transform that into a parser that understands all of the
-types defined inside of it. This is useful for more complicated structures that
-have a lot of typedefs.
-
-Interface overview
-
-The following is the header-file like interface to the parser object:
-
-/*
- * Create a new instance of the parser. Each parser has its own store of
- * typedefs and endianness. Conf is an object with the following values:
- *
- * endian Either 'big' or 'little' do determine the endianness we
- * want to read from or write to.
- *
- */
-function CTypeParser(conf);
-
-/*
- * Parses the CTF JSON data and creates a parser that understands all of those
- * types.
- *
- * data Parsed JSON data that maches that CTF JSON
- * specification.
- *
- * conf The configuration object to create a new CTypeParser
- * from.
- */
-CTypeParser parseCTF(data, conf);
-
-/*
- * This is what we were born to do. We read the data from a buffer and return it
- * in an object whose keys match the values from the object.
- *
- * def The array definition of the data to read in
- *
- * buffer The buffer to read data from
- *
- * offset The offset to start writing to
- *
- * Returns an object where each key corresponds to an entry in def and the value
- * is the read value.
- */
-Object CTypeParser.readData(<Type Definition>, buffer, offset);
-
-/*
- * This is the second half of what we were born to do, write out the data
- * itself.
- *
- * def The array definition of the data to write out with
- * values
- *
- * buffer The buffer to write to
- *
- * offset The offset in the buffer to write to
- */
-void CTypeParser.writeData(<Type Definition>, buffer, offset);
-
-/*
- * A user has requested to add a type, let us honor their request. Yet, if their
- * request doth spurn us, send them unto the Hells which Dante describes.
- *
- * name The string for the type definition we're adding
- *
- * value Either a string that is a type/array name or an object
- * that describes a struct.
- */
-void CTypeParser.prototype.typedef(name, value);
-
-Object CTypeParser.prototype.lstypes();
-
-/*
- * Get the endian value for the current parser
- */
-String CTypeParser.prototype.getEndian();
-
-/*
- * Sets the current endian value for the Parser. If the value is not valid,
- * throws an Error.
- *
- * endian Either 'big' or 'little' do determine the endianness we
- * want to read from or write to.
- *
- */
-void CTypeParser.protoype.setEndian(String);
-
-/*
- * Attempts to convert an array of two integers returned from rsint64 / ruint64
- * into an absolute 64 bit number. If however the value would exceed 2^52 this
- * will instead throw an error. The mantissa in a double is a 52 bit number and
- * rather than potentially give you a value that is an approximation this will
- * error. If you would rather an approximation, please see toApprox64.
- *
- * val An array of two 32-bit integers
- */
-Number function toAbs64(val)
-
-/*
- * Will return the 64 bit value as returned in an array from rsint64 / ruint64
- * to a value as close as it can. Note that Javascript stores all numbers as a
- * double and the mantissa only has 52 bits. Thus this version may approximate
- * the value.
- *
- * val An array of two 32-bit integers
- */
-Number function toApprox64(val)
-
-Low Level API
-
-The following function are provided at the low level:
-
-Read unsigned integers from a buffer:
-Number ruint8(buffer, endian, offset);
-Number ruint16(buffer, endian, offset);
-Number ruint32(buffer, endian, offset);
-Number[] ruint64(buffer, endian, offset);
-
-Read signed integers from a buffer:
-Number rsint8(buffer, endian, offset);
-Number rsint16(buffer, endian, offset);
-Number rsint32(buffer, endian, offset);
-Number[] rsint64(buffer, endian, offset);
-
-Read floating point numbers from a buffer:
-Number rfloat(buffer, endian, offset); /* IEEE-754 Single precision */
-Number rdouble(buffer, endian, offset); /* IEEE-754 Double precision */
-
-Write unsigned integers to a buffer:
-void wuint8(Number, endian, buffer, offset);
-void wuint16(Number, endian, buffer, offset);
-void wuint32(Number, endian, buffer, offset);
-void wuint64(Number[], endian, buffer, offset);
-
-Write signed integers from a buffer:
-void wsint8(Number, endian, buffer, offset);
-void wsint16(Number, endian, buffer, offset);
-void wsint32(Number, endian, buffer, offset);
-void wsint64(Number[], endian, buffer offset);
-
-Write floating point numbers from a buffer:
-void wfloat(Number, buffer, endian, offset); /* IEEE-754 Single precision */
-void wdouble(Number, buffer, endian, offset); /* IEEE-754 Double precision */
-
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js b/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js
deleted file mode 100644
index 66d5f7352..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * ctf.js
- *
- * Understand and parse all of the different JSON formats of CTF data and
- * translate that into a series of node-ctype friendly pieces. The reason for
- * the abstraction is to handle different changes in the file format.
- *
- * We have to be careful here that we don't end up using a name that is already
- * a built in type.
- */
-var mod_assert = require('assert');
-var ASSERT = mod_assert.ok;
-
-var ctf_versions = [ '1.0' ];
-var ctf_entries = [ 'integer', 'float', 'typedef', 'struct' ];
-var ctf_deftypes = [ 'int8_t', 'uint8_t', 'int16_t', 'uint16_t', 'int32_t',
- 'uint32_t', 'float', 'double' ];
-
-function ctfParseInteger(entry, ctype)
-{
- var name, sign, len, type;
-
- name = entry['name'];
- if (!('signed' in entry['integer']))
- throw (new Error('Malformed CTF JSON: integer missing ' +
- 'signed value'));
-
-
- if (!('length' in entry['integer']))
- throw (new Error('Malformed CTF JSON: integer missing ' +
- 'length value'));
-
- sign = entry['integer']['signed'];
- len = entry['integer']['length'];
- type = null;
-
- if (sign && len == 1)
- type = 'int8_t';
- else if (len == 1)
- type = 'uint8_t';
- else if (sign && len == 2)
- type = 'int16_t';
- else if (len == 2)
- type = 'uint16_t';
- else if (sign && len == 4)
- type = 'int32_t';
- else if (len == 4)
- type = 'uint32_t';
- else if (sign && len == 8)
- type = 'int64_t';
- else if (len == 8)
- type = 'uint64_t';
-
- if (type === null)
- throw (new Error('Malformed CTF JSON: integer has ' +
- 'unsupported length and sign - ' + len + '/' + sign));
-
- /*
- * This means that this is the same as one of our built in types. If
- * that's the case defining it would be an error. So instead of trying
- * to typedef it, we'll return here.
- */
- if (name == type)
- return;
-
- if (name == 'char') {
- ASSERT(type == 'int8_t');
- return;
- }
-
- ctype.typedef(name, type);
-}
-
-function ctfParseFloat(entry, ctype)
-{
- var name, len;
-
- name = entry['name'];
- if (!('length' in entry['float']))
- throw (new Error('Malformed CTF JSON: float missing ' +
- 'length value'));
-
- len = entry['float']['length'];
- if (len != 4 && len != 8)
- throw (new Error('Malformed CTF JSON: float has invalid ' +
- 'length value'));
-
- if (len == 4) {
- if (name == 'float')
- return;
- ctype.typedef(name, 'float');
- } else if (len == 8) {
- if (name == 'double')
- return;
- ctype.typedef(name, 'double');
- }
-}
-
-function ctfParseTypedef(entry, ctype)
-{
- var name, type, ii;
-
- name = entry['name'];
- if (typeof (entry['typedef']) != 'string')
- throw (new Error('Malformed CTF JSON: typedef value in not ' +
- 'a string'));
-
- type = entry['typedef'];
-
- /*
- * We need to ensure that we're not looking at type that's one of our
- * built in types. Traditionally in C a uint32_t would be a typedef to
- * some kind of integer. However, those size types are built ins.
- */
- for (ii = 0; ii < ctf_deftypes.length; ii++) {
- if (name == ctf_deftypes[ii])
- return;
- }
-
- ctype.typedef(name, type);
-}
-
-function ctfParseStruct(entry, ctype)
-{
- var name, type, ii, val, index, member, push;
-
- member = [];
- if (!Array.isArray(entry['struct']))
- throw (new Error('Malformed CTF JSON: struct value is not ' +
- 'an array'));
-
- for (ii = 0; ii < entry['struct'].length; ii++) {
- val = entry['struct'][ii];
- if (!('name' in val))
- throw (new Error('Malformed CTF JSON: struct member ' +
- 'missing name'));
-
- if (!('type' in val))
- throw (new Error('Malformed CTF JSON: struct member ' +
- 'missing type'));
-
- if (typeof (val['name']) != 'string')
- throw (new Error('Malformed CTF JSON: struct member ' +
- 'name isn\'t a string'));
-
- if (typeof (val['type']) != 'string')
- throw (new Error('Malformed CTF JSON: struct member ' +
- 'type isn\'t a string'));
-
- /*
- * CTF version 2 specifies array names as <type> [<num>] where
- * as node-ctype does this as <type>[<num>].
- */
- name = val['name'];
- type = val['type'];
- index = type.indexOf(' [');
- if (index != -1) {
- type = type.substring(0, index) +
- type.substring(index + 1, type.length);
- }
- push = {};
- push[name] = { 'type': type };
- member.push(push);
- }
-
- name = entry['name'];
- ctype.typedef(name, member);
-}
-
-function ctfParseEntry(entry, ctype)
-{
- var ii, found;
-
- if (!('name' in entry))
- throw (new Error('Malformed CTF JSON: entry missing "name" ' +
- 'section'));
-
- for (ii = 0; ii < ctf_entries.length; ii++) {
- if (ctf_entries[ii] in entry)
- found++;
- }
-
- if (found === 0)
- throw (new Error('Malformed CTF JSON: found no entries'));
-
- if (found >= 2)
- throw (new Error('Malformed CTF JSON: found more than one ' +
- 'entry'));
-
- if ('integer' in entry) {
- ctfParseInteger(entry, ctype);
- return;
- }
-
- if ('float' in entry) {
- ctfParseFloat(entry, ctype);
- return;
- }
-
- if ('typedef' in entry) {
- ctfParseTypedef(entry, ctype);
- return;
- }
-
- if ('struct' in entry) {
- ctfParseStruct(entry, ctype);
- return;
- }
-
- ASSERT(false, 'shouldn\'t reach here');
-}
-
-function ctfParseJson(json, ctype)
-{
- var version, ii;
-
- ASSERT(json);
- ASSERT(ctype);
- if (!('metadata' in json))
- throw (new Error('Invalid CTF JSON: missing metadata section'));
-
- if (!('ctf2json_version' in json['metadata']))
- throw (new Error('Invalid CTF JSON: missing ctf2json_version'));
-
- version = json['metadata']['ctf2json_version'];
- for (ii = 0; ii < ctf_versions.length; ii++) {
- if (ctf_versions[ii] == version)
- break;
- }
-
- if (ii == ctf_versions.length)
- throw (new Error('Unsuported ctf2json_version: ' + version));
-
- if (!('data' in json))
- throw (new Error('Invalid CTF JSON: missing data section'));
-
- if (!Array.isArray(json['data']))
- throw (new Error('Malformed CTF JSON: data section is not ' +
- 'an array'));
-
- for (ii = 0; ii < json['data'].length; ii++)
- ctfParseEntry(json['data'][ii], ctype);
-}
-
-exports.ctfParseJson = ctfParseJson;
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js b/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js
deleted file mode 100644
index 62c5d7b23..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js
+++ /dev/null
@@ -1,1485 +0,0 @@
-/*
- * rm - Feb 2011
- * ctio.js:
- *
- * A simple way to read and write simple ctypes. Of course, as you'll find the
- * code isn't as simple as it might appear. The following types are currently
- * supported in big and little endian formats:
- *
- * uint8_t int8_t
- * uint16_t int16_t
- * uint32_t int32_t
- * float (single precision IEEE 754)
- * double (double precision IEEE 754)
- *
- * This is designed to work in Node and v8. It may in fact work in other
- * Javascript interpreters (that'd be pretty neat), but it hasn't been tested.
- * If you find that it does in fact work, that's pretty cool. Try and pass word
- * back to the original author.
- *
- * Note to the reader: If you're tabstop isn't set to 8, parts of this may look
- * weird.
- */
-
-/*
- * Numbers in Javascript have a secret: all numbers must be represented with an
- * IEEE-754 double. The double has a mantissa with a length of 52 bits with an
- * implicit one. Thus the range of integers that can be represented is limited
- * to the size of the mantissa, this makes reading and writing 64-bit integers
- * difficult, but far from impossible.
- *
- * Another side effect of this representation is what happens when you use the
- * bitwise operators, i.e. shift left, shift right, and, or, etc. In Javascript,
- * each operand and the result is cast to a signed 32-bit number. However, in
- * the case of >>> the values are cast to an unsigned number.
- */
-
-/*
- * A reminder on endian related issues:
- *
- * Big Endian: MSB -> First byte
- * Little Endian: MSB->Last byte
- */
-var mod_assert = require('assert');
-
-/*
- * An 8 bit unsigned integer involves doing no significant work.
- */
-function ruint8(buffer, endian, offset)
-{
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- return (buffer[offset]);
-}
-
-/*
- * For 16 bit unsigned numbers we can do all the casting that we want to do.
- */
-function rgint16(buffer, endian, offset)
-{
- var val = 0;
-
- if (endian == 'big') {
- val = buffer[offset] << 8;
- val |= buffer[offset+1];
- } else {
- val = buffer[offset];
- val |= buffer[offset+1] << 8;
- }
-
- return (val);
-
-}
-
-function ruint16(buffer, endian, offset)
-{
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 1 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- return (rgint16(buffer, endian, offset));
-}
-
-/*
- * Because most bitshifting is done using signed numbers, if we would go into
- * the realm where we use that 32nd bit, we'll end up going into the negative
- * range. i.e.:
- * > 200 << 24
- * -939524096
- *
- * Not the value you'd expect. To work around this, we end up having to do some
- * abuse of the JavaScript standard. in this case, we know that a >>> shift is
- * defined to cast our value to an *unsigned* 32-bit number. Because of that, we
- * use that instead to save us some additional math, though it does feel a
- * little weird and it isn't obvious as to why you woul dwant to do this at
- * first.
- */
-function rgint32(buffer, endian, offset)
-{
- var val = 0;
-
- if (endian == 'big') {
- val = buffer[offset+1] << 16;
- val |= buffer[offset+2] << 8;
- val |= buffer[offset+3];
- val = val + (buffer[offset] << 24 >>> 0);
- } else {
- val = buffer[offset+2] << 16;
- val |= buffer[offset+1] << 8;
- val |= buffer[offset];
- val = val + (buffer[offset + 3] << 24 >>> 0);
- }
-
- return (val);
-}
-
-function ruint32(buffer, endian, offset)
-{
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- return (rgint32(buffer, endian, offset));
-}
-
-/*
- * Reads a 64-bit unsigned number. The astue observer will note that this
- * doesn't quite work. Javascript has chosen to only have numbers that can be
- * represented by a double. A double only has 52 bits of mantissa with an
- * implicit 1, thus we have up to 53 bits to represent an integer. However, 2^53
- * doesn't quite give us what we want. Isn't 53 bits enough for anyone? What
- * could you have possibly wanted to represent that was larger than that? Oh,
- * maybe a size? You mean we bypassed the 4 GB limit on file sizes, when did
- * that happen?
- *
- * To get around this egregious language issue, we're going to instead construct
- * an array of two 32 bit unsigned integers. Where arr[0] << 32 + arr[1] would
- * give the actual number. However, note that the above code probably won't
- * produce the desired results because of the way Javascript numbers are
- * doubles.
- */
-function rgint64(buffer, endian, offset)
-{
- var val = new Array(2);
-
- if (endian == 'big') {
- val[0] = ruint32(buffer, endian, offset);
- val[1] = ruint32(buffer, endian, offset+4);
- } else {
- val[0] = ruint32(buffer, endian, offset+4);
- val[1] = ruint32(buffer, endian, offset);
- }
-
- return (val);
-}
-
-function ruint64(buffer, endian, offset)
-{
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 7 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- return (rgint64(buffer, endian, offset));
-}
-
-
-/*
- * Signed integer types, yay team! A reminder on how two's complement actually
- * works. The first bit is the signed bit, i.e. tells us whether or not the
- * number should be positive or negative. If the two's complement value is
- * positive, then we're done, as it's equivalent to the unsigned representation.
- *
- * Now if the number is positive, you're pretty much done, you can just leverage
- * the unsigned translations and return those. Unfortunately, negative numbers
- * aren't quite that straightforward.
- *
- * At first glance, one might be inclined to use the traditional formula to
- * translate binary numbers between the positive and negative values in two's
- * complement. (Though it doesn't quite work for the most negative value)
- * Mainly:
- * - invert all the bits
- * - add one to the result
- *
- * Of course, this doesn't quite work in Javascript. Take for example the value
- * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of
- * course, Javascript will do the following:
- *
- * > ~0xff80
- * -65409
- *
- * Whoh there, Javascript, that's not quite right. But wait, according to
- * Javascript that's perfectly correct. When Javascript ends up seeing the
- * constant 0xff80, it has no notion that it is actually a signed number. It
- * assumes that we've input the unsigned value 0xff80. Thus, when it does the
- * binary negation, it casts it into a signed value, (positive 0xff80). Then
- * when you perform binary negation on that, it turns it into a negative number.
- *
- * Instead, we're going to have to use the following general formula, that works
- * in a rather Javascript friendly way. I'm glad we don't support this kind of
- * weird numbering scheme in the kernel.
- *
- * (BIT-MAX - (unsigned)val + 1) * -1
- *
- * The astute observer, may think that this doesn't make sense for 8-bit numbers
- * (really it isn't necessary for them). However, when you get 16-bit numbers,
- * you do. Let's go back to our prior example and see how this will look:
- *
- * (0xffff - 0xff80 + 1) * -1
- * (0x007f + 1) * -1
- * (0x0080) * -1
- *
- * Doing it this way ends up allowing us to treat it appropriately in
- * Javascript. Sigh, that's really quite ugly for what should just be a few bit
- * shifts, ~ and &.
- */
-
-/*
- * Endianness doesn't matter for 8-bit signed values. We could in fact optimize
- * this case because the more traditional methods work, but for consistency,
- * we'll keep doing this the same way.
- */
-function rsint8(buffer, endian, offset)
-{
- var neg;
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- neg = buffer[offset] & 0x80;
- if (!neg)
- return (buffer[offset]);
-
- return ((0xff - buffer[offset] + 1) * -1);
-}
-
-/*
- * The 16-bit version requires a bit more effort. In this case, we can leverage
- * our unsigned code to generate the value we want to return.
- */
-function rsint16(buffer, endian, offset)
-{
- var neg, val;
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 1 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = rgint16(buffer, endian, offset);
- neg = val & 0x8000;
- if (!neg)
- return (val);
-
- return ((0xffff - val + 1) * -1);
-}
-
-/*
- * We really shouldn't leverage our 32-bit code here and instead utilize the
- * fact that we know that since these are signed numbers, we can do all the
- * shifting and binary anding to generate the 32-bit number. But, for
- * consistency we'll do the same. If we want to do otherwise, we should instead
- * make the 32 bit unsigned code do the optimization. But as long as there
- * aren't floats secretly under the hood for that, we /should/ be okay.
- */
-function rsint32(buffer, endian, offset)
-{
- var neg, val;
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = rgint32(buffer, endian, offset);
- neg = val & 0x80000000;
- if (!neg)
- return (val);
-
- return ((0xffffffff - val + 1) * -1);
-}
-
-/*
- * The signed version of this code suffers from all of the same problems of the
- * other 64 bit version.
- */
-function rsint64(buffer, endian, offset)
-{
- var neg, val;
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = rgint64(buffer, endian, offset);
- neg = val[0] & 0x80000000;
-
- if (!neg)
- return (val);
-
- val[0] = (0xffffffff - val[0]) * -1;
- val[1] = (0xffffffff - val[1] + 1) * -1;
-
- /*
- * If we had the key 0x8000000000000000, that would leave the lower 32
- * bits as 0xffffffff, however, since we're goint to add one, that would
- * actually leave the lower 32-bits as 0x100000000, which would break
- * our ability to write back a value that we received. To work around
- * this, if we actually get that value, we're going to bump the upper
- * portion by 1 and set this to zero.
- */
- mod_assert.ok(val[1] <= 0x100000000);
- if (val[1] == -0x100000000) {
- val[1] = 0;
- val[0]--;
- }
-
- return (val);
-}
-
-/*
- * We now move onto IEEE 754: The traditional form for floating point numbers
- * and what is secretly hiding at the heart of everything in this. I really hope
- * that someone is actually using this, as otherwise, this effort is probably
- * going to be more wasted.
- *
- * One might be tempted to use parseFloat here, but that wouldn't work at all
- * for several reasons. Mostly due to the way floats actually work, and
- * parseFloat only actually works in base 10. I don't see base 10 anywhere near
- * this file.
- *
- * In this case we'll implement the single and double precision versions. The
- * quadruple precision, while probably useful, wouldn't really be accepted by
- * Javascript, so let's not even waste our time.
- *
- * So let's review how this format looks like. A single precision value is 32
- * bits and has three parts:
- * - Sign bit
- * - Exponent (Using bias notation)
- * - Mantissa
- *
- * |s|eeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmm|
- * 31| 30-23 | 22 - 0 |
- *
- * The exponent is stored in a biased input. The bias in this case 127.
- * Therefore, our exponent is equal to the 8-bit value - 127.
- *
- * By default, a number is normalized in IEEE, that means that the mantissa has
- * an implicit one that we don't see. So really the value stored is 1.m.
- * However, if the exponent is all zeros, then instead we have to shift
- * everything to the right one and there is no more implicit one.
- *
- * Special values:
- * - Positive Infinity:
- * Sign: 0
- * Exponent: All 1s
- * Mantissa: 0
- * - Negative Infinity:
- * Sign: 1
- * Exponent: All 1s
- * Mantissa: 0
- * - NaN:
- * Sign: *
- * Exponent: All 1s
- * Mantissa: non-zero
- * - Zero:
- * Sign: *
- * Exponent: All 0s
- * Mantissa: 0
- *
- * In the case of zero, the sign bit determines whether we get a positive or
- * negative zero. However, since Javascript cannot determine the difference
- * between the two: i.e. -0 == 0, we just always return 0.
- *
- */
-function rfloat(buffer, endian, offset)
-{
- var bytes = [];
- var sign, exponent, mantissa, val;
- var bias = 127;
- var maxexp = 0xff;
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- /* Normalize the bytes to be in endian order */
- if (endian == 'big') {
- bytes[0] = buffer[offset];
- bytes[1] = buffer[offset+1];
- bytes[2] = buffer[offset+2];
- bytes[3] = buffer[offset+3];
- } else {
- bytes[3] = buffer[offset];
- bytes[2] = buffer[offset+1];
- bytes[1] = buffer[offset+2];
- bytes[0] = buffer[offset+3];
- }
-
- sign = bytes[0] & 0x80;
- exponent = (bytes[0] & 0x7f) << 1;
- exponent |= (bytes[1] & 0x80) >>> 7;
- mantissa = (bytes[1] & 0x7f) << 16;
- mantissa |= bytes[2] << 8;
- mantissa |= bytes[3];
-
- /* Check for special cases before we do general parsing */
- if (!sign && exponent == maxexp && mantissa === 0)
- return (Number.POSITIVE_INFINITY);
-
- if (sign && exponent == maxexp && mantissa === 0)
- return (Number.NEGATIVE_INFINITY);
-
- if (exponent == maxexp && mantissa !== 0)
- return (Number.NaN);
-
- /*
- * Javascript really doesn't have support for positive or negative zero.
- * So we're not going to try and give it to you. That would be just
- * plain weird. Besides -0 == 0.
- */
- if (exponent === 0 && mantissa === 0)
- return (0);
-
- /*
- * Now we can deal with the bias and the determine whether the mantissa
- * has the implicit one or not.
- */
- exponent -= bias;
- if (exponent == -bias) {
- exponent++;
- val = 0;
- } else {
- val = 1;
- }
-
- val = (val + mantissa * Math.pow(2, -23)) * Math.pow(2, exponent);
-
- if (sign)
- val *= -1;
-
- return (val);
-}
-
-/*
- * Doubles in IEEE 754 are like their brothers except for a few changes and
- * increases in size:
- * - The exponent is now 11 bits
- * - The mantissa is now 52 bits
- * - The bias is now 1023
- *
- * |s|eeeeeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm|
- * 63| 62 - 52 | 51 - 0 |
- * 63| 62 - 52 | 51 - 0 |
- *
- * While the size has increased a fair amount, we're going to end up keeping the
- * same general formula for calculating the final value. As a reminder, this
- * formula is:
- *
- * (-1)^s * (n + m) * 2^(e-b)
- *
- * Where:
- * s is the sign bit
- * n is (exponent > 0) ? 1 : 0 -- Determines whether we're normalized
- * or not
- * m is the mantissa
- * e is the exponent specified
- * b is the bias for the exponent
- *
- */
-function rdouble(buffer, endian, offset)
-{
- var bytes = [];
- var sign, exponent, mantissa, val, lowmant;
- var bias = 1023;
- var maxexp = 0x7ff;
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 7 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- /* Normalize the bytes to be in endian order */
- if (endian == 'big') {
- bytes[0] = buffer[offset];
- bytes[1] = buffer[offset+1];
- bytes[2] = buffer[offset+2];
- bytes[3] = buffer[offset+3];
- bytes[4] = buffer[offset+4];
- bytes[5] = buffer[offset+5];
- bytes[6] = buffer[offset+6];
- bytes[7] = buffer[offset+7];
- } else {
- bytes[7] = buffer[offset];
- bytes[6] = buffer[offset+1];
- bytes[5] = buffer[offset+2];
- bytes[4] = buffer[offset+3];
- bytes[3] = buffer[offset+4];
- bytes[2] = buffer[offset+5];
- bytes[1] = buffer[offset+6];
- bytes[0] = buffer[offset+7];
- }
-
- /*
- * We can construct the exponent and mantissa the same way as we did in
- * the case of a float, just increase the range of the exponent.
- */
- sign = bytes[0] & 0x80;
- exponent = (bytes[0] & 0x7f) << 4;
- exponent |= (bytes[1] & 0xf0) >>> 4;
-
- /*
- * This is going to be ugly but then again, we're dealing with IEEE 754.
- * This could probably be done as a node add on in a few lines of C++,
- * but oh we'll, we've made it this far so let's be native the rest of
- * the way...
- *
- * What we're going to do is break the mantissa into two parts, the
- * lower 24 bits and the upper 28 bits. We'll multiply the upper 28 bits
- * by the appropriate power and then add in the lower 24-bits. Not
- * really that great. It's pretty much a giant kludge to deal with
- * Javascript eccentricities around numbers.
- */
- lowmant = bytes[7];
- lowmant |= bytes[6] << 8;
- lowmant |= bytes[5] << 16;
- mantissa = bytes[4];
- mantissa |= bytes[3] << 8;
- mantissa |= bytes[2] << 16;
- mantissa |= (bytes[1] & 0x0f) << 24;
- mantissa *= Math.pow(2, 24); /* Equivalent to << 24, but JS compat */
- mantissa += lowmant;
-
- /* Check for special cases before we do general parsing */
- if (!sign && exponent == maxexp && mantissa === 0)
- return (Number.POSITIVE_INFINITY);
-
- if (sign && exponent == maxexp && mantissa === 0)
- return (Number.NEGATIVE_INFINITY);
-
- if (exponent == maxexp && mantissa !== 0)
- return (Number.NaN);
-
- /*
- * Javascript really doesn't have support for positive or negative zero.
- * So we're not going to try and give it to you. That would be just
- * plain weird. Besides -0 == 0.
- */
- if (exponent === 0 && mantissa === 0)
- return (0);
-
- /*
- * Now we can deal with the bias and the determine whether the mantissa
- * has the implicit one or not.
- */
- exponent -= bias;
- if (exponent == -bias) {
- exponent++;
- val = 0;
- } else {
- val = 1;
- }
-
- val = (val + mantissa * Math.pow(2, -52)) * Math.pow(2, exponent);
-
- if (sign)
- val *= -1;
-
- return (val);
-}
-
-/*
- * Now that we have gone through the pain of reading the individual types, we're
- * probably going to want some way to write these back. None of this is going to
- * be good. But since we have Javascript numbers this should certainly be more
- * interesting. Though we can constrain this end a little bit more in what is
- * valid. For now, let's go back to our friends the unsigned value.
- */
-
-/*
- * Unsigned numbers seem deceptively easy. Here are the general steps and rules
- * that we are going to take:
- * - If the number is negative, throw an Error
- * - Truncate any floating point portion
- * - Take the modulus of the number in our base
- * - Write it out to the buffer in the endian format requested at the offset
- */
-
-/*
- * We have to make sure that the value is a valid integer. This means that it is
- * non-negative. It has no fractional component and that it does not exceed the
- * maximum allowed value.
- *
- * value The number to check for validity
- *
- * max The maximum value
- */
-function prepuint(value, max)
-{
- if (typeof (value) != 'number')
- throw (new (Error('cannot write a non-number as a number')));
-
- if (value < 0)
- throw (new Error('specified a negative value for writing an ' +
- 'unsigned value'));
-
- if (value > max)
- throw (new Error('value is larger than maximum value for ' +
- 'type'));
-
- if (Math.floor(value) !== value)
- throw (new Error('value has a fractional component'));
-
- return (value);
-}
-
-/*
- * 8-bit version, classy. We can ignore endianness which is good.
- */
-function wuint8(value, endian, buffer, offset)
-{
- var val;
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = prepuint(value, 0xff);
- buffer[offset] = val;
-}
-
-/*
- * Pretty much the same as the 8-bit version, just this time we need to worry
- * about endian related issues.
- */
-function wgint16(val, endian, buffer, offset)
-{
- if (endian == 'big') {
- buffer[offset] = (val & 0xff00) >>> 8;
- buffer[offset+1] = val & 0x00ff;
- } else {
- buffer[offset+1] = (val & 0xff00) >>> 8;
- buffer[offset] = val & 0x00ff;
- }
-}
-
-function wuint16(value, endian, buffer, offset)
-{
- var val;
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 1 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = prepuint(value, 0xffff);
- wgint16(val, endian, buffer, offset);
-}
-
-/*
- * The 32-bit version is going to have to be a little different unfortunately.
- * We can't quite bitshift to get the largest byte, because that would end up
- * getting us caught by the signed values.
- *
- * And yes, we do want to subtract out the lower part by default. This means
- * that when we do the division, it will be treated as a bit shift and we won't
- * end up generating a floating point value. If we did generate a floating point
- * value we'd have to truncate it intelligently, this saves us that problem and
- * may even be somewhat faster under the hood.
- */
-function wgint32(val, endian, buffer, offset)
-{
- if (endian == 'big') {
- buffer[offset] = (val - (val & 0x00ffffff)) / Math.pow(2, 24);
- buffer[offset+1] = (val >>> 16) & 0xff;
- buffer[offset+2] = (val >>> 8) & 0xff;
- buffer[offset+3] = val & 0xff;
- } else {
- buffer[offset+3] = (val - (val & 0x00ffffff)) /
- Math.pow(2, 24);
- buffer[offset+2] = (val >>> 16) & 0xff;
- buffer[offset+1] = (val >>> 8) & 0xff;
- buffer[offset] = val & 0xff;
- }
-}
-
-function wuint32(value, endian, buffer, offset)
-{
- var val;
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = prepuint(value, 0xffffffff);
- wgint32(val, endian, buffer, offset);
-}
-
-/*
- * Unlike the other versions, we expect the value to be in the form of two
- * arrays where value[0] << 32 + value[1] would result in the value that we
- * want.
- */
-function wgint64(value, endian, buffer, offset)
-{
- if (endian == 'big') {
- wgint32(value[0], endian, buffer, offset);
- wgint32(value[1], endian, buffer, offset+4);
- } else {
- wgint32(value[0], endian, buffer, offset+4);
- wgint32(value[1], endian, buffer, offset);
- }
-}
-
-function wuint64(value, endian, buffer, offset)
-{
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (!(value instanceof Array))
- throw (new Error('value must be an array'));
-
- if (value.length != 2)
- throw (new Error('value must be an array of length 2'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 7 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- prepuint(value[0], 0xffffffff);
- prepuint(value[1], 0xffffffff);
- wgint64(value, endian, buffer, offset);
-}
-
-/*
- * We now move onto our friends in the signed number category. Unlike unsigned
- * numbers, we're going to have to worry a bit more about how we put values into
- * arrays. Since we are only worrying about signed 32-bit values, we're in
- * slightly better shape. Unfortunately, we really can't do our favorite binary
- * & in this system. It really seems to do the wrong thing. For example:
- *
- * > -32 & 0xff
- * 224
- *
- * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of
- * this aren't treated as a signed number. Ultimately a bad thing.
- *
- * What we're going to want to do is basically create the unsigned equivalent of
- * our representation and pass that off to the wuint* functions. To do that
- * we're going to do the following:
- *
- * - if the value is positive
- * we can pass it directly off to the equivalent wuint
- * - if the value is negative
- * we do the following computation:
- * mb + val + 1, where
- * mb is the maximum unsigned value in that byte size
- * val is the Javascript negative integer
- *
- *
- * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If
- * you do out the computations:
- *
- * 0xffff - 128 + 1
- * 0xffff - 127
- * 0xff80
- *
- * You can then encode this value as the signed version. This is really rather
- * hacky, but it should work and get the job done which is our goal here.
- *
- * Thus the overall flow is:
- * - Truncate the floating point part of the number
- * - We don't have to take the modulus, because the unsigned versions will
- * take care of that for us. And we don't have to worry about that
- * potentially causing bad things to happen because of sign extension
- * - Pass it off to the appropriate unsigned version, potentially modifying
- * the negative portions as necessary.
- */
-
-/*
- * A series of checks to make sure we actually have a signed 32-bit number
- */
-function prepsint(value, max, min)
-{
- if (typeof (value) != 'number')
- throw (new (Error('cannot write a non-number as a number')));
-
- if (value > max)
- throw (new Error('value larger than maximum allowed value'));
-
- if (value < min)
- throw (new Error('value smaller than minimum allowed value'));
-
- if (Math.floor(value) !== value)
- throw (new Error('value has a fractional component'));
-
- return (value);
-}
-
-/*
- * The 8-bit version of the signed value. Overall, fairly straightforward.
- */
-function wsint8(value, endian, buffer, offset)
-{
- var val;
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = prepsint(value, 0x7f, -0x80);
- if (val >= 0)
- wuint8(val, endian, buffer, offset);
- else
- wuint8(0xff + val + 1, endian, buffer, offset);
-}
-
-/*
- * The 16-bit version of the signed value. Also, fairly straightforward.
- */
-function wsint16(value, endian, buffer, offset)
-{
- var val;
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 1 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = prepsint(value, 0x7fff, -0x8000);
- if (val >= 0)
- wgint16(val, endian, buffer, offset);
- else
- wgint16(0xffff + val + 1, endian, buffer, offset);
-
-}
-
-/*
- * We can do this relatively easily by leveraging the code used for 32-bit
- * unsigned code.
- */
-function wsint32(value, endian, buffer, offset)
-{
- var val;
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- val = prepsint(value, 0x7fffffff, -0x80000000);
- if (val >= 0)
- wgint32(val, endian, buffer, offset);
- else
- wgint32(0xffffffff + val + 1, endian, buffer, offset);
-}
-
-/*
- * The signed 64 bit integer should by in the same format as when received.
- * Mainly it should ensure that the value is an array of two integers where
- * value[0] << 32 + value[1] is the desired number. Furthermore, the two values
- * need to be equal.
- */
-function wsint64(value, endian, buffer, offset)
-{
- var vzpos, vopos;
- var vals = new Array(2);
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (!(value instanceof Array))
- throw (new Error('value must be an array'));
-
- if (value.length != 2)
- throw (new Error('value must be an array of length 2'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
- if (offset + 7 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- /*
- * We need to make sure that we have the same sign on both values. The
- * hokiest way to to do this is to multiply the number by +inf. If we do
- * this, we'll get either +/-inf depending on the sign of the value.
- * Once we have this, we can compare it to +inf to see if the number is
- * positive or not.
- */
- vzpos = (value[0] * Number.POSITIVE_INFINITY) ==
- Number.POSITIVE_INFINITY;
- vopos = (value[1] * Number.POSITIVE_INFINITY) ==
- Number.POSITIVE_INFINITY;
-
- /*
- * If either of these is zero, then we don't actually need this check.
- */
- if (value[0] != 0 && value[1] != 0 && vzpos != vopos)
- throw (new Error('Both entries in the array must have ' +
- 'the same sign'));
-
- /*
- * Doing verification for a signed 64-bit integer is actually a big
- * trickier than it appears. We can't quite use our standard techniques
- * because we need to compare both sets of values. The first value is
- * pretty straightforward. If the first value is beond the extremes than
- * we error out. However, the valid range of the second value varies
- * based on the first one. If the first value is negative, and *not* the
- * largest negative value, than it can be any integer within the range [
- * 0, 0xffffffff ]. If it is the largest negative number, it must be
- * zero.
- *
- * If the first number is positive, than it doesn't matter what the
- * value is. We just simply have to make sure we have a valid positive
- * integer.
- */
- if (vzpos) {
- prepuint(value[0], 0x7fffffff);
- prepuint(value[1], 0xffffffff);
- } else {
- prepsint(value[0], 0, -0x80000000);
- prepsint(value[1], 0, -0xffffffff);
- if (value[0] == -0x80000000 && value[1] != 0)
- throw (new Error('value smaller than minimum ' +
- 'allowed value'));
- }
-
- /* Fix negative numbers */
- if (value[0] < 0 || value[1] < 0) {
- vals[0] = 0xffffffff - Math.abs(value[0]);
- vals[1] = 0x100000000 - Math.abs(value[1]);
- if (vals[1] == 0x100000000) {
- vals[1] = 0;
- vals[0]++;
- }
- } else {
- vals[0] = value[0];
- vals[1] = value[1];
- }
- wgint64(vals, endian, buffer, offset);
-}
-
-/*
- * Now we are moving onto the weirder of these, the float and double. For this
- * we're going to just have to do something that's pretty weird. First off, we
- * have no way to get at the underlying float representation, at least not
- * easily. But that doesn't mean we can't figure it out, we just have to use our
- * heads.
- *
- * One might propose to use Number.toString(2). Of course, this is not really
- * that good, because the ECMAScript 262 v3 Standard says the following Section
- * 15.7.4.2-Number.prototype.toString (radix):
- *
- * If radix is an integer from 2 to 36, but not 10, the result is a string, the
- * choice of which is implementation-dependent.
- *
- * Well that doesn't really help us one bit now does it? We could use the
- * standard base 10 version of the string, but that's just going to create more
- * errors as we end up trying to convert it back to a binary value. So, really
- * this just means we have to be non-lazy and parse the structure intelligently.
- *
- * First off, we can do the basic checks: NaN, positive and negative infinity.
- *
- * Now that those are done we can work backwards to generate the mantissa and
- * exponent.
- *
- * The first thing we need to do is determine the sign bit, easy to do, check
- * whether the value is less than 0. And convert the number to its absolute
- * value representation. Next, we need to determine if the value is less than
- * one or greater than or equal to one and from there determine what power was
- * used to get there. What follows is now specific to floats, though the general
- * ideas behind this will hold for doubles as well, but the exact numbers
- * involved will change.
- *
- * Once we have that power we can determine the exponent and the mantissa. Call
- * the value that has the number of bits to reach the power ebits. In the
- * general case they have the following values:
- *
- * exponent 127 + ebits
- * mantissa value * 2^(23 - ebits) & 0x7fffff
- *
- * In the case where the value of ebits is <= -127 we are now in the case where
- * we no longer have normalized numbers. In this case the values take on the
- * following values:
- *
- * exponent 0
- * mantissa value * 2^149 & 0x7fffff
- *
- * Once we have the values for the sign, mantissa, and exponent. We reconstruct
- * the four bytes as follows:
- *
- * byte0 sign bit and seven most significant bits from the exp
- * sign << 7 | (exponent & 0xfe) >>> 1
- *
- * byte1 lsb from the exponent and 7 top bits from the mantissa
- * (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16
- *
- * byte2 bits 8-15 (zero indexing) from mantissa
- * mantissa & 0xff00 >> 8
- *
- * byte3 bits 0-7 from mantissa
- * mantissa & 0xff
- *
- * Once we have this we have to assign them into the buffer in proper endian
- * order.
- */
-
-/*
- * Compute the log base 2 of the value. Now, someone who remembers basic
- * properties of logarithms will point out that we could use the change of base
- * formula for logs, and in fact that would be astute, because that's what we'll
- * do for now. It feels cleaner, albeit it may be less efficient than just
- * iterating and dividing by 2. We may want to come back and revisit that some
- * day.
- */
-function log2(value)
-{
- return (Math.log(value) / Math.log(2));
-}
-
-/*
- * Helper to determine the exponent of the number we're looking at.
- */
-function intexp(value)
-{
- return (Math.floor(log2(value)));
-}
-
-/*
- * Helper to determine the exponent of the fractional part of the value.
- */
-function fracexp(value)
-{
- return (Math.floor(log2(value)));
-}
-
-function wfloat(value, endian, buffer, offset)
-{
- var sign, exponent, mantissa, ebits;
- var bytes = [];
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
-
- if (offset + 3 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- if (isNaN(value)) {
- sign = 0;
- exponent = 0xff;
- mantissa = 23;
- } else if (value == Number.POSITIVE_INFINITY) {
- sign = 0;
- exponent = 0xff;
- mantissa = 0;
- } else if (value == Number.NEGATIVE_INFINITY) {
- sign = 1;
- exponent = 0xff;
- mantissa = 0;
- } else {
- /* Well we have some work to do */
-
- /* Thankfully the sign bit is trivial */
- if (value < 0) {
- sign = 1;
- value = Math.abs(value);
- } else {
- sign = 0;
- }
-
- /* Use the correct function to determine number of bits */
- if (value < 1)
- ebits = fracexp(value);
- else
- ebits = intexp(value);
-
- /* Time to deal with the issues surrounding normalization */
- if (ebits <= -127) {
- exponent = 0;
- mantissa = (value * Math.pow(2, 149)) & 0x7fffff;
- } else {
- exponent = 127 + ebits;
- mantissa = value * Math.pow(2, 23 - ebits);
- mantissa &= 0x7fffff;
- }
- }
-
- bytes[0] = sign << 7 | (exponent & 0xfe) >>> 1;
- bytes[1] = (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16;
- bytes[2] = (mantissa & 0x00ff00) >>> 8;
- bytes[3] = mantissa & 0x0000ff;
-
- if (endian == 'big') {
- buffer[offset] = bytes[0];
- buffer[offset+1] = bytes[1];
- buffer[offset+2] = bytes[2];
- buffer[offset+3] = bytes[3];
- } else {
- buffer[offset] = bytes[3];
- buffer[offset+1] = bytes[2];
- buffer[offset+2] = bytes[1];
- buffer[offset+3] = bytes[0];
- }
-}
-
-/*
- * Now we move onto doubles. Doubles are similar to floats in pretty much all
- * ways except that the processing isn't quite as straightforward because we
- * can't always use shifting, i.e. we have > 32 bit values.
- *
- * We're going to proceed in an identical fashion to floats and utilize the same
- * helper functions. All that really is changing are the specific values that we
- * use to do the calculations. Thus, to review we have to do the following.
- *
- * First get the sign bit and convert the value to its absolute value
- * representation. Next, we determine the number of bits that we used to get to
- * the value, branching whether the value is greater than or less than 1. Once
- * we have that value which we will again call ebits, we have to do the
- * following in the general case:
- *
- * exponent 1023 + ebits
- * mantissa [value * 2^(52 - ebits)] % 2^52
- *
- * In the case where the value of ebits <= -1023 we no longer use normalized
- * numbers, thus like with floats we have to do slightly different processing:
- *
- * exponent 0
- * mantissa [value * 2^1074] % 2^52
- *
- * Once we have determined the sign, exponent and mantissa we can construct the
- * bytes as follows:
- *
- * byte0 sign bit and seven most significant bits form the exp
- * sign << 7 | (exponent & 0x7f0) >>> 4
- *
- * byte1 Remaining 4 bits from the exponent and the four most
- * significant bits from the mantissa 48-51
- * (exponent & 0x00f) << 4 | mantissa >>> 48
- *
- * byte2 Bits 40-47 from the mantissa
- * (mantissa >>> 40) & 0xff
- *
- * byte3 Bits 32-39 from the mantissa
- * (mantissa >>> 32) & 0xff
- *
- * byte4 Bits 24-31 from the mantissa
- * (mantissa >>> 24) & 0xff
- *
- * byte5 Bits 16-23 from the Mantissa
- * (mantissa >>> 16) & 0xff
- *
- * byte6 Bits 8-15 from the mantissa
- * (mantissa >>> 8) & 0xff
- *
- * byte7 Bits 0-7 from the mantissa
- * mantissa & 0xff
- *
- * Now we can't quite do the right shifting that we want in bytes 1 - 3, because
- * we'll have extended too far and we'll lose those values when we try and do
- * the shift. Instead we have to use an alternate approach. To try and stay out
- * of floating point, what we'll do is say that mantissa -= bytes[4-7] and then
- * divide by 2^32. Once we've done that we can use binary arithmetic. Oof,
- * that's ugly, but it seems to avoid using floating point (just based on how v8
- * seems to be optimizing for base 2 arithmetic).
- */
-function wdouble(value, endian, buffer, offset)
-{
- var sign, exponent, mantissa, ebits;
- var bytes = [];
-
- if (value === undefined)
- throw (new Error('missing value'));
-
- if (endian === undefined)
- throw (new Error('missing endian'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer'));
-
- if (offset === undefined)
- throw (new Error('missing offset'));
-
-
- if (offset + 7 >= buffer.length)
- throw (new Error('Trying to read beyond buffer length'));
-
- if (isNaN(value)) {
- sign = 0;
- exponent = 0x7ff;
- mantissa = 23;
- } else if (value == Number.POSITIVE_INFINITY) {
- sign = 0;
- exponent = 0x7ff;
- mantissa = 0;
- } else if (value == Number.NEGATIVE_INFINITY) {
- sign = 1;
- exponent = 0x7ff;
- mantissa = 0;
- } else {
- /* Well we have some work to do */
-
- /* Thankfully the sign bit is trivial */
- if (value < 0) {
- sign = 1;
- value = Math.abs(value);
- } else {
- sign = 0;
- }
-
- /* Use the correct function to determine number of bits */
- if (value < 1)
- ebits = fracexp(value);
- else
- ebits = intexp(value);
-
- /*
- * This is a total hack to determine a denormalized value.
- * Unfortunately, we sometimes do not get a proper value for
- * ebits, i.e. we lose the values that would get rounded off.
- *
- *
- * The astute observer may wonder why we would be
- * multiplying by two Math.pows rather than just summing
- * them. Well, that's to get around a small bug in the
- * way v8 seems to implement the function. On occasion
- * doing:
- *
- * foo * Math.pow(2, 1023 + 51)
- *
- * Causes us to overflow to infinity, where as doing:
- *
- * foo * Math.pow(2, 1023) * Math.pow(2, 51)
- *
- * Does not cause us to overflow. Go figure.
- *
- */
- if (value <= 2.225073858507201e-308 || ebits <= -1023) {
- exponent = 0;
- mantissa = value * Math.pow(2, 1023) * Math.pow(2, 51);
- mantissa %= Math.pow(2, 52);
- } else {
- /*
- * We might have gotten fucked by our floating point
- * logarithm magic. This is rather crappy, but that's
- * our luck. If we just had a log base 2 or access to
- * the stupid underlying representation this would have
- * been much easier and we wouldn't have such stupid
- * kludges or hacks.
- */
- if (ebits > 1023)
- ebits = 1023;
- exponent = 1023 + ebits;
- mantissa = value * Math.pow(2, -ebits);
- mantissa *= Math.pow(2, 52);
- mantissa %= Math.pow(2, 52);
- }
- }
-
- /* Fill the bytes in backwards to deal with the size issues */
- bytes[7] = mantissa & 0xff;
- bytes[6] = (mantissa >>> 8) & 0xff;
- bytes[5] = (mantissa >>> 16) & 0xff;
- mantissa = (mantissa - (mantissa & 0xffffff)) / Math.pow(2, 24);
- bytes[4] = mantissa & 0xff;
- bytes[3] = (mantissa >>> 8) & 0xff;
- bytes[2] = (mantissa >>> 16) & 0xff;
- bytes[1] = (exponent & 0x00f) << 4 | mantissa >>> 24;
- bytes[0] = (sign << 7) | (exponent & 0x7f0) >>> 4;
-
- if (endian == 'big') {
- buffer[offset] = bytes[0];
- buffer[offset+1] = bytes[1];
- buffer[offset+2] = bytes[2];
- buffer[offset+3] = bytes[3];
- buffer[offset+4] = bytes[4];
- buffer[offset+5] = bytes[5];
- buffer[offset+6] = bytes[6];
- buffer[offset+7] = bytes[7];
- } else {
- buffer[offset+7] = bytes[0];
- buffer[offset+6] = bytes[1];
- buffer[offset+5] = bytes[2];
- buffer[offset+4] = bytes[3];
- buffer[offset+3] = bytes[4];
- buffer[offset+2] = bytes[5];
- buffer[offset+1] = bytes[6];
- buffer[offset] = bytes[7];
- }
-}
-
-/*
- * Actually export our work above. One might argue that we shouldn't expose
- * these interfaces and just force people to use the higher level abstractions
- * around this work. However, unlike say other libraries we've come across, this
- * interface has several properties: it makes sense, it's simple, and it's
- * useful.
- */
-exports.ruint8 = ruint8;
-exports.ruint16 = ruint16;
-exports.ruint32 = ruint32;
-exports.ruint64 = ruint64;
-exports.wuint8 = wuint8;
-exports.wuint16 = wuint16;
-exports.wuint32 = wuint32;
-exports.wuint64 = wuint64;
-
-exports.rsint8 = rsint8;
-exports.rsint16 = rsint16;
-exports.rsint32 = rsint32;
-exports.rsint64 = rsint64;
-exports.wsint8 = wsint8;
-exports.wsint16 = wsint16;
-exports.wsint32 = wsint32;
-exports.wsint64 = wsint64;
-
-exports.rfloat = rfloat;
-exports.rdouble = rdouble;
-exports.wfloat = wfloat;
-exports.wdouble = wdouble;
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js b/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js
deleted file mode 100644
index 7d2f4a5a6..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js
+++ /dev/null
@@ -1,944 +0,0 @@
-/*
- * rm - Feb 2011
- * ctype.js
- *
- * This module provides a simple abstraction towards reading and writing
- * different types of binary data. It is designed to use ctio.js and provide a
- * richer and more expressive API on top of it.
- *
- * By default we support the following as built in basic types:
- * int8_t
- * int16_t
- * int32_t
- * uint8_t
- * uint16_t
- * uint32_t
- * uint64_t
- * float
- * double
- * char
- * char[]
- *
- * Each type is returned as a Number, with the exception of char and char[]
- * which are returned as Node Buffers. A char is considered a uint8_t.
- *
- * Requests to read and write data are specified as an array of JSON objects.
- * This is also the same way that one declares structs. Even if just a single
- * value is requested, it must be done as a struct. The array order determines
- * the order that we try and read values. Each entry has the following format
- * with values marked with a * being optional.
- *
- * { key: { type: /type/, value*: /value/, offset*: /offset/ }
- *
- * If offset is defined, we lseek(offset, SEEK_SET) before reading the next
- * value. Value is defined when we're writing out data, otherwise it's ignored.
- *
- */
-
-var mod_ctf = require('./ctf.js');
-var mod_ctio = require('./ctio.js');
-var mod_assert = require('assert');
-
-/*
- * This is the set of basic types that we support.
- *
- * read The function to call to read in a value from a buffer
- *
- * write The function to call to write a value to a buffer
- *
- */
-var deftypes = {
- 'uint8_t': { read: ctReadUint8, write: ctWriteUint8 },
- 'uint16_t': { read: ctReadUint16, write: ctWriteUint16 },
- 'uint32_t': { read: ctReadUint32, write: ctWriteUint32 },
- 'uint64_t': { read: ctReadUint64, write: ctWriteUint64 },
- 'int8_t': { read: ctReadSint8, write: ctWriteSint8 },
- 'int16_t': { read: ctReadSint16, write: ctWriteSint16 },
- 'int32_t': { read: ctReadSint32, write: ctWriteSint32 },
- 'int64_t': { read: ctReadSint64, write: ctWriteSint64 },
- 'float': { read: ctReadFloat, write: ctWriteFloat },
- 'double': { read: ctReadDouble, write: ctWriteDouble },
- 'char': { read: ctReadChar, write: ctWriteChar },
- 'char[]': { read: ctReadCharArray, write: ctWriteCharArray }
-};
-
-/*
- * The following are wrappers around the CType IO low level API. They encode
- * knowledge about the size and return something in the expected format.
- */
-function ctReadUint8(endian, buffer, offset)
-{
- var val = mod_ctio.ruint8(buffer, endian, offset);
- return ({ value: val, size: 1 });
-}
-
-function ctReadUint16(endian, buffer, offset)
-{
- var val = mod_ctio.ruint16(buffer, endian, offset);
- return ({ value: val, size: 2 });
-}
-
-function ctReadUint32(endian, buffer, offset)
-{
- var val = mod_ctio.ruint32(buffer, endian, offset);
- return ({ value: val, size: 4 });
-}
-
-function ctReadUint64(endian, buffer, offset)
-{
- var val = mod_ctio.ruint64(buffer, endian, offset);
- return ({ value: val, size: 8 });
-}
-
-function ctReadSint8(endian, buffer, offset)
-{
- var val = mod_ctio.rsint8(buffer, endian, offset);
- return ({ value: val, size: 1 });
-}
-
-function ctReadSint16(endian, buffer, offset)
-{
- var val = mod_ctio.rsint16(buffer, endian, offset);
- return ({ value: val, size: 2 });
-}
-
-function ctReadSint32(endian, buffer, offset)
-{
- var val = mod_ctio.rsint32(buffer, endian, offset);
- return ({ value: val, size: 4 });
-}
-
-function ctReadSint64(endian, buffer, offset)
-{
- var val = mod_ctio.rsint64(buffer, endian, offset);
- return ({ value: val, size: 8 });
-}
-
-function ctReadFloat(endian, buffer, offset)
-{
- var val = mod_ctio.rfloat(buffer, endian, offset);
- return ({ value: val, size: 4 });
-}
-
-function ctReadDouble(endian, buffer, offset)
-{
- var val = mod_ctio.rdouble(buffer, endian, offset);
- return ({ value: val, size: 8 });
-}
-
-/*
- * Reads a single character into a node buffer
- */
-function ctReadChar(endian, buffer, offset)
-{
- var res = new Buffer(1);
- res[0] = mod_ctio.ruint8(buffer, endian, offset);
- return ({ value: res, size: 1 });
-}
-
-function ctReadCharArray(length, endian, buffer, offset)
-{
- var ii;
- var res = new Buffer(length);
-
- for (ii = 0; ii < length; ii++)
- res[ii] = mod_ctio.ruint8(buffer, endian, offset + ii);
-
- return ({ value: res, size: length });
-}
-
-function ctWriteUint8(value, endian, buffer, offset)
-{
- mod_ctio.wuint8(value, endian, buffer, offset);
- return (1);
-}
-
-function ctWriteUint16(value, endian, buffer, offset)
-{
- mod_ctio.wuint16(value, endian, buffer, offset);
- return (2);
-}
-
-function ctWriteUint32(value, endian, buffer, offset)
-{
- mod_ctio.wuint32(value, endian, buffer, offset);
- return (4);
-}
-
-function ctWriteUint64(value, endian, buffer, offset)
-{
- mod_ctio.wuint64(value, endian, buffer, offset);
- return (8);
-}
-
-function ctWriteSint8(value, endian, buffer, offset)
-{
- mod_ctio.wsint8(value, endian, buffer, offset);
- return (1);
-}
-
-function ctWriteSint16(value, endian, buffer, offset)
-{
- mod_ctio.wsint16(value, endian, buffer, offset);
- return (2);
-}
-
-function ctWriteSint32(value, endian, buffer, offset)
-{
- mod_ctio.wsint32(value, endian, buffer, offset);
- return (4);
-}
-
-function ctWriteSint64(value, endian, buffer, offset)
-{
- mod_ctio.wsint64(value, endian, buffer, offset);
- return (8);
-}
-
-function ctWriteFloat(value, endian, buffer, offset)
-{
- mod_ctio.wfloat(value, endian, buffer, offset);
- return (4);
-}
-
-function ctWriteDouble(value, endian, buffer, offset)
-{
- mod_ctio.wdouble(value, endian, buffer, offset);
- return (8);
-}
-
-/*
- * Writes a single character into a node buffer
- */
-function ctWriteChar(value, endian, buffer, offset)
-{
- if (!(value instanceof Buffer))
- throw (new Error('Input must be a buffer'));
-
- mod_ctio.ruint8(value[0], endian, buffer, offset);
- return (1);
-}
-
-/*
- * We're going to write 0s into the buffer if the string is shorter than the
- * length of the array.
- */
-function ctWriteCharArray(value, length, endian, buffer, offset)
-{
- var ii;
-
- if (!(value instanceof Buffer))
- throw (new Error('Input must be a buffer'));
-
- if (value.length > length)
- throw (new Error('value length greater than array length'));
-
- for (ii = 0; ii < value.length && ii < length; ii++)
- mod_ctio.wuint8(value[ii], endian, buffer, offset + ii);
-
- for (; ii < length; ii++)
- mod_ctio.wuint8(0, endian, offset + ii);
-
-
- return (length);
-}
-
-/*
- * Each parser has their own set of types. We want to make sure that they each
- * get their own copy as they may need to modify it.
- */
-function ctGetBasicTypes()
-{
- var ret = {};
- var key;
- for (key in deftypes)
- ret[key] = deftypes[key];
-
- return (ret);
-}
-
-/*
- * Given a string in the form of type[length] we want to split this into an
- * object that extracts that information. We want to note that we could possibly
- * have nested arrays so this should only check the furthest one. It may also be
- * the case that we have no [] pieces, in which case we just return the current
- * type.
- */
-function ctParseType(str)
-{
- var begInd, endInd;
- var type, len;
- if (typeof (str) != 'string')
- throw (new Error('type must be a Javascript string'));
-
- endInd = str.lastIndexOf(']');
- if (endInd == -1) {
- if (str.lastIndexOf('[') != -1)
- throw (new Error('found invalid type with \'[\' but ' +
- 'no corresponding \']\''));
-
- return ({ type: str });
- }
-
- begInd = str.lastIndexOf('[');
- if (begInd == -1)
- throw (new Error('found invalid type with \']\' but ' +
- 'no corresponding \'[\''));
-
- if (begInd >= endInd)
- throw (new Error('malformed type, \']\' appears before \'[\''));
-
- type = str.substring(0, begInd);
- len = str.substring(begInd + 1, endInd);
-
- return ({ type: type, len: len });
-}
-
-/*
- * Given a request validate that all of the fields for it are valid and make
- * sense. This includes verifying the following notions:
- * - Each type requested is present in types
- * - Only allow a name for a field to be specified once
- * - If an array is specified, validate that the requested field exists and
- * comes before it.
- * - If fields is defined, check that each entry has the occurrence of field
- */
-function ctCheckReq(def, types, fields)
-{
- var ii, jj;
- var req, keys, key;
- var found = {};
-
- if (!(def instanceof Array))
- throw (new Error('definition is not an array'));
-
- if (def.length === 0)
- throw (new Error('definition must have at least one element'));
-
- for (ii = 0; ii < def.length; ii++) {
- req = def[ii];
- if (!(req instanceof Object))
- throw (new Error('definition must be an array of' +
- 'objects'));
-
- keys = Object.keys(req);
- if (keys.length != 1)
- throw (new Error('definition entry must only have ' +
- 'one key'));
-
- if (keys[0] in found)
- throw (new Error('Specified name already ' +
- 'specified: ' + keys[0]));
-
- if (!('type' in req[keys[0]]))
- throw (new Error('missing required type definition'));
-
- key = ctParseType(req[keys[0]]['type']);
-
- /*
- * We may have nested arrays, we need to check the validity of
- * the types until the len field is undefined in key. However,
- * each time len is defined we need to verify it is either an
- * integer or corresponds to an already seen key.
- */
- while (key['len'] !== undefined) {
- if (isNaN(parseInt(key['len'], 10))) {
- if (!(key['len'] in found))
- throw (new Error('Given an array ' +
- 'length without a matching type'));
-
- }
-
- key = ctParseType(key['type']);
- }
-
- /* Now we can validate if the type is valid */
- if (!(key['type'] in types))
- throw (new Error('type not found or typdefed: ' +
- key['type']));
-
- /* Check for any required fields */
- if (fields !== undefined) {
- for (jj = 0; jj < fields.length; jj++) {
- if (!(fields[jj] in req[keys[0]]))
- throw (new Error('Missing required ' +
- 'field: ' + fields[jj]));
- }
- }
-
- found[keys[0]] = true;
- }
-}
-
-
-/*
- * Create a new instance of the parser. Each parser has its own store of
- * typedefs and endianness. Conf is an object with the following required
- * values:
- *
- * endian Either 'big' or 'little' do determine the endianness we
- * want to read from or write to.
- *
- * And the following optional values:
- *
- * char-type Valid options here are uint8 and int8. If uint8 is
- * specified this changes the default behavior of a single
- * char from being a buffer of a single character to being
- * a uint8_t. If int8, it becomes an int8_t instead.
- */
-function CTypeParser(conf)
-{
- if (!conf) throw (new Error('missing required argument'));
-
- if (!('endian' in conf))
- throw (new Error('missing required endian value'));
-
- if (conf['endian'] != 'big' && conf['endian'] != 'little')
- throw (new Error('Invalid endian type'));
-
- if ('char-type' in conf && (conf['char-type'] != 'uint8' &&
- conf['char-type'] != 'int8'))
- throw (new Error('invalid option for char-type: ' +
- conf['char-type']));
-
- this.endian = conf['endian'];
- this.types = ctGetBasicTypes();
-
- /*
- * There may be a more graceful way to do this, but this will have to
- * serve.
- */
- if ('char-type' in conf && conf['char-type'] == 'uint8')
- this.types['char'] = this.types['uint8_t'];
-
- if ('char-type' in conf && conf['char-type'] == 'int8')
- this.types['char'] = this.types['int8_t'];
-}
-
-/*
- * Sets the current endian value for the Parser. If the value is not valid,
- * throws an Error.
- *
- * endian Either 'big' or 'little' do determine the endianness we
- * want to read from or write to.
- *
- */
-CTypeParser.prototype.setEndian = function (endian)
-{
- if (endian != 'big' && endian != 'little')
- throw (new Error('invalid endian type, must be big or ' +
- 'little'));
-
- this.endian = endian;
-};
-
-/*
- * Returns the current value of the endian value for the parser.
- */
-CTypeParser.prototype.getEndian = function ()
-{
- return (this.endian);
-};
-
-/*
- * A user has requested to add a type, let us honor their request. Yet, if their
- * request doth spurn us, send them unto the Hells which Dante describes.
- *
- * name The string for the type definition we're adding
- *
- * value Either a string that is a type/array name or an object
- * that describes a struct.
- */
-CTypeParser.prototype.typedef = function (name, value)
-{
- var type;
-
- if (name === undefined)
- throw (new (Error('missing required typedef argument: name')));
-
- if (value === undefined)
- throw (new (Error('missing required typedef argument: value')));
-
- if (typeof (name) != 'string')
- throw (new (Error('the name of a type must be a string')));
-
- type = ctParseType(name);
-
- if (type['len'] !== undefined)
- throw (new Error('Cannot have an array in the typedef name'));
-
- if (name in this.types)
- throw (new Error('typedef name already present: ' + name));
-
- if (typeof (value) != 'string' && !(value instanceof Array))
- throw (new Error('typedef value must either be a string or ' +
- 'struct'));
-
- if (typeof (value) == 'string') {
- type = ctParseType(value);
- if (type['len'] !== undefined) {
- if (isNaN(parseInt(type['len'], 10)))
- throw (new (Error('typedef value must use ' +
- 'fixed size array when outside of a ' +
- 'struct')));
- }
-
- this.types[name] = value;
- } else {
- /* We have a struct, validate it */
- ctCheckReq(value, this.types);
- this.types[name] = value;
- }
-};
-
-/*
- * Include all of the typedefs, but none of the built in types. This should be
- * treated as read-only.
- */
-CTypeParser.prototype.lstypes = function ()
-{
- var key;
- var ret = {};
-
- for (key in this.types) {
- if (key in deftypes)
- continue;
- ret[key] = this.types[key];
- }
-
- return (ret);
-};
-
-/*
- * Given a type string that may have array types that aren't numbers, try and
- * fill them in from the values object. The object should be of the format where
- * indexing into it should return a number for that type.
- *
- * str The type string
- *
- * values An object that can be used to fulfill type information
- */
-function ctResolveArray(str, values)
-{
- var ret = '';
- var type = ctParseType(str);
-
- while (type['len'] !== undefined) {
- if (isNaN(parseInt(type['len'], 10))) {
- if (typeof (values[type['len']]) != 'number')
- throw (new Error('cannot sawp in non-number ' +
- 'for array value'));
- ret = '[' + values[type['len']] + ']' + ret;
- } else {
- ret = '[' + type['len'] + ']' + ret;
- }
- type = ctParseType(type['type']);
- }
-
- ret = type['type'] + ret;
-
- return (ret);
-}
-
-/*
- * [private] Either the typedef resolves to another type string or to a struct.
- * If it resolves to a struct, we just pass it off to read struct. If not, we
- * can just pass it off to read entry.
- */
-CTypeParser.prototype.resolveTypedef = function (type, dispatch, buffer,
- offset, value)
-{
- var pt;
-
- mod_assert.ok(type in this.types);
- if (typeof (this.types[type]) == 'string') {
- pt = ctParseType(this.types[type]);
- if (dispatch == 'read')
- return (this.readEntry(pt, buffer, offset));
- else if (dispatch == 'write')
- return (this.writeEntry(value, pt, buffer, offset));
- else
- throw (new Error('invalid dispatch type to ' +
- 'resolveTypedef'));
- } else {
- if (dispatch == 'read')
- return (this.readStruct(this.types[type], buffer,
- offset));
- else if (dispatch == 'write')
- return (this.writeStruct(value, this.types[type],
- buffer, offset));
- else
- throw (new Error('invalid dispatch type to ' +
- 'resolveTypedef'));
- }
-
-};
-
-/*
- * [private] Try and read in the specific entry.
- */
-CTypeParser.prototype.readEntry = function (type, buffer, offset)
-{
- var parse, len;
-
- /*
- * Because we want to special case char[]s this is unfortunately
- * a bit uglier than it really should be. We want to special
- * case char[]s so that we return a node buffer, thus they are a
- * first class type where as all other arrays just call into a
- * generic array routine which calls their data-specific routine
- * the specified number of times.
- *
- * The valid dispatch options we have are:
- * - Array and char => char[] handler
- * - Generic array handler
- * - Generic typedef handler
- * - Basic type handler
- */
- if (type['len'] !== undefined) {
- len = parseInt(type['len'], 10);
- if (isNaN(len))
- throw (new Error('somehow got a non-numeric length'));
-
- if (type['type'] == 'char')
- parse = this.types['char[]']['read'](len,
- this.endian, buffer, offset);
- else
- parse = this.readArray(type['type'],
- len, buffer, offset);
- } else {
- if (type['type'] in deftypes)
- parse = this.types[type['type']]['read'](this.endian,
- buffer, offset);
- else
- parse = this.resolveTypedef(type['type'], 'read',
- buffer, offset);
- }
-
- return (parse);
-};
-
-/*
- * [private] Read an array of data
- */
-CTypeParser.prototype.readArray = function (type, length, buffer, offset)
-{
- var ii, ent, pt;
- var baseOffset = offset;
- var ret = new Array(length);
- pt = ctParseType(type);
-
- for (ii = 0; ii < length; ii++) {
- ent = this.readEntry(pt, buffer, offset);
- offset += ent['size'];
- ret[ii] = ent['value'];
- }
-
- return ({ value: ret, size: offset - baseOffset });
-};
-
-/*
- * [private] Read a single struct in.
- */
-CTypeParser.prototype.readStruct = function (def, buffer, offset)
-{
- var parse, ii, type, entry, key;
- var baseOffset = offset;
- var ret = {};
-
- /* Walk it and handle doing what's necessary */
- for (ii = 0; ii < def.length; ii++) {
- key = Object.keys(def[ii])[0];
- entry = def[ii][key];
-
- /* Resolve all array values */
- type = ctParseType(ctResolveArray(entry['type'], ret));
-
- if ('offset' in entry)
- offset = baseOffset + entry['offset'];
-
- parse = this.readEntry(type, buffer, offset);
-
- offset += parse['size'];
- ret[key] = parse['value'];
- }
-
- return ({ value: ret, size: (offset-baseOffset)});
-};
-
-/*
- * This is what we were born to do. We read the data from a buffer and return it
- * in an object whose keys match the values from the object.
- *
- * def The array definition of the data to read in
- *
- * buffer The buffer to read data from
- *
- * offset The offset to start writing to
- *
- * Returns an object where each key corresponds to an entry in def and the value
- * is the read value.
- */
-CTypeParser.prototype.readData = function (def, buffer, offset)
-{
- /* Sanity check for arguments */
- if (def === undefined)
- throw (new Error('missing definition for what we should be' +
- 'parsing'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer for what we should be ' +
- 'parsing'));
-
- if (offset === undefined)
- throw (new Error('missing offset for what we should be ' +
- 'parsing'));
-
- /* Sanity check the object definition */
- ctCheckReq(def, this.types);
-
- return (this.readStruct(def, buffer, offset)['value']);
-};
-
-/*
- * [private] Write out an array of data
- */
-CTypeParser.prototype.writeArray = function (value, type, length, buffer,
- offset)
-{
- var ii, pt;
- var baseOffset = offset;
- if (!(value instanceof Array))
- throw (new Error('asked to write an array, but value is not ' +
- 'an array'));
-
- if (value.length != length)
- throw (new Error('asked to write array of length ' + length +
- ' but that does not match value length: ' + value.length));
-
- pt = ctParseType(type);
- for (ii = 0; ii < length; ii++)
- offset += this.writeEntry(value[ii], pt, buffer, offset);
-
- return (offset - baseOffset);
-};
-
-/*
- * [private] Write the specific entry
- */
-CTypeParser.prototype.writeEntry = function (value, type, buffer, offset)
-{
- var len, ret;
-
- if (type['len'] !== undefined) {
- len = parseInt(type['len'], 10);
- if (isNaN(len))
- throw (new Error('somehow got a non-numeric length'));
-
- if (type['type'] == 'char')
- ret = this.types['char[]']['write'](value, len,
- this.endian, buffer, offset);
- else
- ret = this.writeArray(value, type['type'],
- len, buffer, offset);
- } else {
- if (type['type'] in deftypes)
- ret = this.types[type['type']]['write'](value,
- this.endian, buffer, offset);
- else
- ret = this.resolveTypedef(type['type'], 'write',
- buffer, offset, value);
- }
-
- return (ret);
-};
-
-/*
- * [private] Write a single struct out.
- */
-CTypeParser.prototype.writeStruct = function (value, def, buffer, offset)
-{
- var ii, entry, type, key;
- var baseOffset = offset;
- var vals = {};
-
- for (ii = 0; ii < def.length; ii++) {
- key = Object.keys(def[ii])[0];
- entry = def[ii][key];
-
- type = ctParseType(ctResolveArray(entry['type'], vals));
-
- if ('offset' in entry)
- offset = baseOffset + entry['offset'];
-
- offset += this.writeEntry(value[ii], type, buffer, offset);
- /* Now that we've written it out, we can use it for arrays */
- vals[key] = value[ii];
- }
-
- return (offset);
-};
-
-/*
- * Unfortunately, we're stuck with the sins of an initial poor design. Because
- * of that, we are going to have to support the old way of writing data via
- * writeData. There we insert the values that you want to write into the
- * definition. A little baroque. Internally, we use the new model. So we need to
- * just get those values out of there. But to maintain the principle of least
- * surprise, we're not going to modify the input data.
- */
-function getValues(def)
-{
- var ii, out, key;
- out = [];
- for (ii = 0; ii < def.length; ii++) {
- key = Object.keys(def[ii])[0];
- mod_assert.ok('value' in def[ii][key]);
- out.push(def[ii][key]['value']);
- }
-
- return (out);
-}
-
-/*
- * This is the second half of what we were born to do, write out the data
- * itself. Historically this function required you to put your values in the
- * definition section. This was not the smartest thing to do and a bit of an
- * oversight to be honest. As such, this function now takes a values argument.
- * If values is non-null and non-undefined, it will be used to determine the
- * values. This means that the old method is still supported, but is no longer
- * acceptable.
- *
- * def The array definition of the data to write out with
- * values
- *
- * buffer The buffer to write to
- *
- * offset The offset in the buffer to write to
- *
- * values An array of values to write.
- */
-CTypeParser.prototype.writeData = function (def, buffer, offset, values)
-{
- var hv;
-
- if (def === undefined)
- throw (new Error('missing definition for what we should be' +
- 'parsing'));
-
- if (buffer === undefined)
- throw (new Error('missing buffer for what we should be ' +
- 'parsing'));
-
- if (offset === undefined)
- throw (new Error('missing offset for what we should be ' +
- 'parsing'));
-
- hv = (values != null && values != undefined);
- if (hv) {
- if (!Array.isArray(values))
- throw (new Error('missing values for writing'));
- ctCheckReq(def, this.types);
- } else {
- ctCheckReq(def, this.types, [ 'value' ]);
- }
-
- this.writeStruct(hv ? values : getValues(def), def, buffer, offset);
-};
-
-/*
- * Functions to go to and from 64 bit numbers in a way that is compatible with
- * Javascript limitations. There are two sets. One where the user is okay with
- * an approximation and one where they are definitely not okay with an
- * approximation.
- */
-
-/*
- * Attempts to convert an array of two integers returned from rsint64 / ruint64
- * into an absolute 64 bit number. If however the value would exceed 2^52 this
- * will instead throw an error. The mantissa in a double is a 52 bit number and
- * rather than potentially give you a value that is an approximation this will
- * error. If you would rather an approximation, please see toApprox64.
- *
- * val An array of two 32-bit integers
- */
-function toAbs64(val)
-{
- if (val === undefined)
- throw (new Error('missing required arg: value'));
-
- if (!Array.isArray(val))
- throw (new Error('value must be an array'));
-
- if (val.length != 2)
- throw (new Error('value must be an array of length 2'));
-
- /* We have 20 bits worth of precision in this range */
- if (val[0] >= 0x100000)
- throw (new Error('value would become approximated'));
-
- return (val[0] * Math.pow(2, 32) + val[1]);
-}
-
-/*
- * Will return the 64 bit value as returned in an array from rsint64 / ruint64
- * to a value as close as it can. Note that Javascript stores all numbers as a
- * double and the mantissa only has 52 bits. Thus this version may approximate
- * the value.
- *
- * val An array of two 32-bit integers
- */
-function toApprox64(val)
-{
- if (val === undefined)
- throw (new Error('missing required arg: value'));
-
- if (!Array.isArray(val))
- throw (new Error('value must be an array'));
-
- if (val.length != 2)
- throw (new Error('value must be an array of length 2'));
-
- return (Math.pow(2, 32) * val[0] + val[1]);
-}
-
-function parseCTF(json, conf)
-{
- var ctype = new CTypeParser(conf);
- mod_ctf.ctfParseJson(json, ctype);
-
- return (ctype);
-}
-
-/*
- * Export the few things we actually want to. Currently this is just the CType
- * Parser and ctio.
- */
-exports.Parser = CTypeParser;
-exports.toAbs64 = toAbs64;
-exports.toApprox64 = toApprox64;
-
-exports.parseCTF = parseCTF;
-
-exports.ruint8 = mod_ctio.ruint8;
-exports.ruint16 = mod_ctio.ruint16;
-exports.ruint32 = mod_ctio.ruint32;
-exports.ruint64 = mod_ctio.ruint64;
-exports.wuint8 = mod_ctio.wuint8;
-exports.wuint16 = mod_ctio.wuint16;
-exports.wuint32 = mod_ctio.wuint32;
-exports.wuint64 = mod_ctio.wuint64;
-
-exports.rsint8 = mod_ctio.rsint8;
-exports.rsint16 = mod_ctio.rsint16;
-exports.rsint32 = mod_ctio.rsint32;
-exports.rsint64 = mod_ctio.rsint64;
-exports.wsint8 = mod_ctio.wsint8;
-exports.wsint16 = mod_ctio.wsint16;
-exports.wsint32 = mod_ctio.wsint32;
-exports.wsint64 = mod_ctio.wsint64;
-
-exports.rfloat = mod_ctio.rfloat;
-exports.rdouble = mod_ctio.rdouble;
-exports.wfloat = mod_ctio.wfloat;
-exports.wdouble = mod_ctio.wdouble;
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype b/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype
deleted file mode 100644
index 3f94986a1..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype
+++ /dev/null
@@ -1,241 +0,0 @@
-'\" te
-.\" Copyright (c) 2011, Robert Mustacchi. All Rights Reserved.
-.\" Copyright (c) 2011, Joyent, Inc. All Rights Reserved.
-.\"
-.\" 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.
-.TH CTIO 3CTYPE "December 12, 2011"
-.SH NAME
-ctio, ruint8, ruint16, ruint32, ruint64, wuint8, wuint16, wuint32, wuint64,
-rsint8, rsint16, rsint32, rsint64, wsint8, wsint16, wsint32, wsint64, rfloat,
-rdouble, wfloat, wdouble \- integer and float operations
-.SH SYNOPSIS
-.LP
-.nf
-var mod_ctype = require('ctype');
-
-\fBNumber\fR \fBmod_ctype.ruint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.ruint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.ruint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber[2]\fR \fBmod_ctype.ruint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.rsint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.rsint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.rsint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber[2]\fR \fBmod_ctype.rsint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.rfloat\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBNumber\fR \fBmod_ctype.rdouble\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wuint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wuint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wuint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wuint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wsint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wsint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wsint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wsint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wfloat\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.LP
-.nf
-\fBvoid\fR \fBmod_ctype.wdouble\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-The argument \fIbuf\fR refers to a valid buffer (from calling new Buffer()). The
-argument \fIendian\fR is either the string 'big' or 'little' and controls
-whether the data in the buffer is interpreted as big or little endian. The argument
-\fIoffset\fR indicates the starting index into the buffer to read or write. All
-functions ensure that starting at \fIoffset\fR does not overflow the end of the
-buffer. The argument \fIvalue\fR is a Number that is the valid type for the
-specific function. All functions that take \fIvalue\fR as an argument, verify
-that the passed value is valid.
-
-.SS "\fBruint8()\fR, \fBruint16()\fR, \fBruint32()\fR"
-.sp
-.LP
-The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions read an 8,
-16, and 32-bit unsigned value from \fIbuf\fR and return it. The value read is
-influenced by the values of \fIoffset\fR and \fRendian\fI.
-
-
-.SS "\fBrsint8()\fR, \fBrsint16()\fR, \fBrsint32()\fR"
-.sp
-.LP
-The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions work just as
-\fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR, except they return signed
-integers.
-
-.SS "\fBruint64()\fR, \fBrsint64()\fR"
-.sp
-.LP
-The \fBruint64()\fR and \fBrsint64()\fR functions read unsigned and signed 64
-bit integers respectively from \fBbuf\fR. Due to the limitations of ECMAScript's
-\fBNumber\fR type, they cannot be stored as one value without a loss of
-precision. Instead of returning the values as a single \fBNumber\fR, the
-functions return an array of two numbers. The first entry always contains the
-upper 32-bits and the second value contains the lower 32-bits. The lossy
-transformation into a number would be \fIres[0]*Math.pow(2,32)+res[1]\fR.
-Note that, unless an entry is zero, both array entries are guaranteed to have
-the same sign.
-
-.SS "\fBwuint8()\fR, \fBwuint16()\fR, \fBwuint32()\fR"
-.sp
-.LP
-The functions \fBwuint8()\fR, \fBwuint16()\fR, and \fBwuint32()\fR modify the
-contents of \fBbuf\fR by writing an 8, 16, and 32-bit unsigned integer
-respectively to \fBbuf\fR. It is illegal to pass a number that is not an integer
-within the domain of the integer size, for example, for \fBwuint8()\fR the valid
-range is \fB[0, 255]\fR. The value will be written in either big or little
-endian format based upon the value of \fBendian\fR.
-
-
-.SS "\fBwsint8()\fR, \fBwsint16()\fR, \fBwsint32()\fR"
-.sp
-.LP
-The functions \fBwsint8()\fR, \fBwsint16()\fR, and \fBwsint32()\fR function
-identically to the functions \fBwuint8()\fR, \fBwuint16()\fR, and
-\fBwuint32()\fR except that they the valid domain for \fBvalue\fR is that of a
-signed number instead of an unsigned number. For example the \fBwsint8()\fR has
-a domain of \fB[-128, 127]\fR.
-
-.SS "\fBwuint64()\fR, \fBwsint64()\fR"
-.sp
-.LP
-The functions \fBwuint64()\fR and \fBswint64()\fR write out 64-bit unsigned and
-signed integers to \fBbuf\fR. The \fBvalue\fR argument must be in the same
-format as described in \fBruint64()\fR and \fBrsint64()\fR.
-
-.SS "\fBrfloat()\fR, \fBrdouble()\fR"
-.sp
-.LP
-The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other read
-functions, except that they read a single precision and double precision
-IEEE-754 floating point value instead.
-
-.SS "\fBwfloat()\fR, \fBwdouble()\fR"
-.sp
-.LP
-The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other write
-functions, except that the domain for a float is that of a single precision 4
-byte value. The domain for a double is any \fBNumber\fR in ECMAScript, which is
-defined to be represented by a double.
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE ATTRIBUTE VALUE
-_
-Interface Stability Committed
-_
-MT-Level See below.
-_
-Standard Not standardized.
-.TE
-
-.sp
-.LP
-
-All functions are MT-safe in so far as there aren't shared memory MT concerns in
-most node programs. If one where to concoct such an environment, these functions
-wouldn't be MT-safe.
-
-.SH SEE ALSO
-.sp
-.LP
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json b/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
deleted file mode 100644
index 2090a5ea3..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "ctype",
- "version": "0.5.3",
- "description": "read and write binary structures and data types",
- "homepage": "https://github.com/rmustacc/node-ctype",
- "author": {
- "name": "Robert Mustacchi",
- "email": "rm@fingolfin.org"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "main": "ctype.js",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/rmustacc/node-ctype.git"
- },
- "readme": "Node-CType is a way to read and write binary data in structured and easy to use\nformat. Its name comes from the C header file.\n\nTo get started, simply clone the repository or use npm to install it. Once it is\nthere, simply require it.\n\ngit clone git://github.com/rmustacc/node-ctype\nnpm install ctype\nvar mod_ctype = require('ctype')\n\n\nThere are two APIs that you can use, depending on what abstraction you'd like.\nThe low level API let's you read and write individual integers and floats from\nbuffers. The higher level API let's you read and write structures of these. To\nillustrate this, let's looks look at how we would read and write a binary\nencoded x,y point.\n\nIn C we would define this structure as follows:\n\ntypedef struct point {\n\tuint16_t\tp_x;\n\tuint16_t\tp_y;\n} point_t;\n\nTo read a binary encoded point from a Buffer, we first need to create a CType\nparser (where we specify the endian and other options) and add the typedef.\n\nvar parser = new mod_ctype.Parser({ endian: 'big' });\nparser.typedef('point_t', [\n\t{ x: { type: 'uint16_t' } },\n\t{ y: { type: 'uint16_t' } }\n]);\n\nFrom here, given a buffer buf and an offset into it, we can read a point.\n\nvar out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0);\nconsole.log(out);\n{ point: { x: 23, y: 42 } }\n\nAnother way to get the same information would be to use the low level methods.\nNote that these require you to manually deal with the offset. Here's how we'd\nget the same values of x and y from the buffer.\n\nvar x = mod_ctype.ruint16(buf, 'big', 0);\nvar y = mod_ctype.ruint16(buf, 'big', 2);\nconsole.log(x + ', ' + y);\n23, 42\n\nThe true power of this API comes from the ability to define and nest typedefs,\njust as you would in C. By default, the following types are defined by default.\nNote that they return a Number, unless indicated otherwise.\n\n * int8_t\n * int16_t\n * int32_t\n * int64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * uint8_t\n * uint16_t\n * uint32_t\n * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * float\n * double\n * char (either returns a buffer with that character or a uint8_t)\n * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)\n\n\nctf2json integration:\n\nNode-CType supports consuming the output of ctf2json. Once you read in a JSON file,\nall you have to do to add all the definitions it contains is:\n\nvar data, parser;\ndata = JSON.parse(parsedJSONData);\nparser = mod_ctype.parseCTF(data, { endian: 'big' });\n\nFor more documentation, see the file README.old. Full documentation is in the\nprocess of being rewritten as a series of manual pages which will be available\nin the repository and online for viewing.\n\nTo read the ctio manual page simple run, from the root of the workspace:\n\nman -Mman -s 3ctype ctio\n",
- "readmeFilename": "README",
- "bugs": {
- "url": "https://github.com/rmustacc/node-ctype/issues"
- },
- "_id": "ctype@0.5.3",
- "_shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f",
- "_resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
- "_from": "ctype@0.5.3"
-}
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf b/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf
deleted file mode 100755
index 845f367a2..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# Configuration File for JavaScript Lint 0.3.0
-# Developed by Matthias Miller (http://www.JavaScriptLint.com)
-#
-# This configuration file can be used to lint a collection of scripts, or to enable
-# or disable warnings for scripts that are linted via the command line.
-#
-
-### Warnings
-# Enable or disable warnings based on requirements.
-# Use "+WarningName" to display or "-WarningName" to suppress.
-#
-+no_return_value # function {0} does not always return a value
-+duplicate_formal # duplicate formal argument {0}
-+equal_as_assign # test for equality (==) mistyped as assignment (=)?{0}
-+var_hides_arg # variable {0} hides argument
-+redeclared_var # redeclaration of {0} {1}
-+anon_no_return_value # anonymous function does not always return a value
-+missing_semicolon # missing semicolon
-+meaningless_block # meaningless block; curly braces have no impact
-+comma_separated_stmts # multiple statements separated by commas (use semicolons?)
-+unreachable_code # unreachable code
-+missing_break # missing break statement
-+missing_break_for_last_case # missing break statement for last case in switch
-+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==)
--inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement
-+useless_void # use of the void type may be unnecessary (void is always undefined)
--useless_quotes # quotation marks are unnecessary
-+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
-+use_of_label # use of label
--block_without_braces # block statement without curly braces
-+leading_decimal_point # leading decimal point may indicate a number or an object member
-+trailing_decimal_point # trailing decimal point may indicate a number or an object member
--octal_number # leading zeros make an octal number
-+nested_comment # nested comment
-+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
-+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement
-+empty_statement # empty statement or extra semicolon
--missing_option_explicit # the "option explicit" control comment is missing
-+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag
-+dup_option_explicit # duplicate "option explicit" control comment
-+useless_assign # useless assignment
-+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity
-+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
-+missing_default_case # missing default case in switch statement
-+duplicate_case_in_switch # duplicate case in switch statements
-+default_not_at_end # the default case is not at the end of the switch statement
-+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax
-+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax
-+useless_comparison # useless comparison; comparing identical expressions
-+with_statement # with statement hides undeclared variables; use temporary variable instead
-+trailing_comma_in_array # extra comma is not recommended in array initializers
-+assign_to_function_call # assignment to a function call
-+parseint_missing_radix # parseInt missing radix parameter
--unreferenced_argument # argument declared but never referenced: {name}
-
-### Output format
-# Customize the format of the error message.
-# __FILE__ indicates current file path
-# __FILENAME__ indicates current file name
-# __LINE__ indicates current line
-# __ERROR__ indicates error message
-#
-# Visual Studio syntax (default):
-+output-format __FILE__(__LINE__): __ERROR__
-# Alternative syntax:
-#+output-format __FILE__:__LINE__: __ERROR__
-
-
-### Context
-# Show the in-line position of the error.
-# Use "+context" to display or "-context" to suppress.
-#
-+context
-
-
-### Semicolons
-# By default, assignments of an anonymous function to a variable or
-# property (such as a function prototype) must be followed by a semicolon.
-#
-#+lambda_assign_requires_semicolon # deprecated setting
-
-
-### Control Comments
-# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for
-# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is
-# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason,
-# although legacy control comments are enabled by default for backward compatibility.
-#
-+legacy_control_comments
-
-
-### JScript Function Extensions
-# JScript allows member functions to be defined like this:
-# function MyObj() { /*constructor*/ }
-# function MyObj.prototype.go() { /*member function*/ }
-#
-# It also allows events to be attached like this:
-# function window::onload() { /*init page*/ }
-#
-# This is a Microsoft-only JavaScript extension. Enable this setting to allow them.
-#
-#-jscript_function_extensions # deprecated setting
-
-
-### Defining identifiers
-# By default, "option explicit" is enabled on a per-file basis.
-# To enable this for all files, use "+always_use_option_explicit"
--always_use_option_explicit
-
-# Define certain identifiers of which the lint is not aware.
-# (Use this in conjunction with the "undeclared identifier" warning.)
-#
-# Common uses for webpages might be:
-#+define window
-#+define document
-+define require
-+define exports
-+define console
-+define Buffer
-+define JSON
-
-### Files
-# Specify which files to lint
-# Use "+recurse" to enable recursion (disabled by default).
-# To add a set of files, use "+process FileName", "+process Folder\Path\*.js",
-# or "+process Folder\Path\*.htm".
-#
-#+process jsl-test.js
diff --git a/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle b/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle
deleted file mode 100755
index 96c72b6d7..000000000
--- a/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle
+++ /dev/null
@@ -1,839 +0,0 @@
-#!/usr/bin/env perl
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# Copyright 2011 Joyent, Inc. All rights reserved.
-#
-# jsstyle - check for some common stylistic errors.
-#
-# jsstyle is a sort of "lint" for Javascript coding style. This tool is
-# derived from the cstyle tool, used to check for the style used in the
-# Solaris kernel, sometimes known as "Bill Joy Normal Form".
-#
-# There's a lot this can't check for, like proper indentation of code
-# blocks. There's also a lot more this could check for.
-#
-# A note to the non perl literate:
-#
-# perl regular expressions are pretty much like egrep
-# regular expressions, with the following special symbols
-#
-# \s any space character
-# \S any non-space character
-# \w any "word" character [a-zA-Z0-9_]
-# \W any non-word character
-# \d a digit [0-9]
-# \D a non-digit
-# \b word boundary (between \w and \W)
-# \B non-word boundary
-#
-
-require 5.0;
-use IO::File;
-use Getopt::Std;
-use strict;
-
-my $usage =
-"usage: jsstyle [-chvC] [-o constructs] file ...
- -c check continuation indentation inside functions
- -h perform heuristic checks that are sometimes wrong
- -v verbose
- -C don't check anything in header block comments
- -o constructs
- allow a comma-seperated list of optional constructs:
- doxygen allow doxygen-style block comments (/** /*!)
- splint allow splint-style lint comments (/*@ ... @*/)
-";
-
-my %opts;
-
-if (!getopts("cho:vC", \%opts)) {
- print $usage;
- exit 2;
-}
-
-my $check_continuation = $opts{'c'};
-my $heuristic = $opts{'h'};
-my $verbose = $opts{'v'};
-my $ignore_hdr_comment = $opts{'C'};
-
-my $doxygen_comments = 0;
-my $splint_comments = 0;
-
-if (defined($opts{'o'})) {
- for my $x (split /,/, $opts{'o'}) {
- if ($x eq "doxygen") {
- $doxygen_comments = 1;
- } elsif ($x eq "splint") {
- $splint_comments = 1;
- } else {
- print "jsstyle: unrecognized construct \"$x\"\n";
- print $usage;
- exit 2;
- }
- }
-}
-
-my ($filename, $line, $prev); # shared globals
-
-my $fmt;
-my $hdr_comment_start;
-
-if ($verbose) {
- $fmt = "%s: %d: %s\n%s\n";
-} else {
- $fmt = "%s: %d: %s\n";
-}
-
-if ($doxygen_comments) {
- # doxygen comments look like "/*!" or "/**"; allow them.
- $hdr_comment_start = qr/^\s*\/\*[\!\*]?$/;
-} else {
- $hdr_comment_start = qr/^\s*\/\*$/;
-}
-
-# Note, following must be in single quotes so that \s and \w work right.
-my $lint_re = qr/\/\*(?:
- jsl:\w+?|ARGSUSED[0-9]*|NOTREACHED|LINTLIBRARY|VARARGS[0-9]*|
- CONSTCOND|CONSTANTCOND|CONSTANTCONDITION|EMPTY|
- FALLTHRU|FALLTHROUGH|LINTED.*?|PRINTFLIKE[0-9]*|
- PROTOLIB[0-9]*|SCANFLIKE[0-9]*|JSSTYLED.*?
- )\*\//x;
-
-my $splint_re = qr/\/\*@.*?@\*\//x;
-
-my $err_stat = 0; # exit status
-
-if ($#ARGV >= 0) {
- foreach my $arg (@ARGV) {
- my $fh = new IO::File $arg, "r";
- if (!defined($fh)) {
- printf "%s: cannot open\n", $arg;
- } else {
- &jsstyle($arg, $fh);
- close $fh;
- }
- }
-} else {
- &jsstyle("<stdin>", *STDIN);
-}
-exit $err_stat;
-
-my $no_errs = 0; # set for JSSTYLED-protected lines
-
-sub err($) {
- my ($error) = @_;
- unless ($no_errs) {
- printf $fmt, $filename, $., $error, $line;
- $err_stat = 1;
- }
-}
-
-sub err_prefix($$) {
- my ($prevline, $error) = @_;
- my $out = $prevline."\n".$line;
- unless ($no_errs) {
- printf $fmt, $filename, $., $error, $out;
- $err_stat = 1;
- }
-}
-
-sub err_prev($) {
- my ($error) = @_;
- unless ($no_errs) {
- printf $fmt, $filename, $. - 1, $error, $prev;
- $err_stat = 1;
- }
-}
-
-sub jsstyle($$) {
-
-my ($fn, $filehandle) = @_;
-$filename = $fn; # share it globally
-
-my $in_cpp = 0;
-my $next_in_cpp = 0;
-
-my $in_comment = 0;
-my $in_header_comment = 0;
-my $comment_done = 0;
-my $in_function = 0;
-my $in_function_header = 0;
-my $in_declaration = 0;
-my $note_level = 0;
-my $nextok = 0;
-my $nocheck = 0;
-
-my $in_string = 0;
-
-my ($okmsg, $comment_prefix);
-
-$line = '';
-$prev = '';
-reset_indent();
-
-line: while (<$filehandle>) {
- s/\r?\n$//; # strip return and newline
-
- # save the original line, then remove all text from within
- # double or single quotes, we do not want to check such text.
-
- $line = $_;
-
- #
- # C allows strings to be continued with a backslash at the end of
- # the line. We translate that into a quoted string on the previous
- # line followed by an initial quote on the next line.
- #
- # (we assume that no-one will use backslash-continuation with character
- # constants)
- #
- $_ = '"' . $_ if ($in_string && !$nocheck && !$in_comment);
-
- #
- # normal strings and characters
- #
- s/'([^\\']|\\.)*'/\'\'/g;
- s/"([^\\"]|\\.)*"/\"\"/g;
-
- #
- # detect string continuation
- #
- if ($nocheck || $in_comment) {
- $in_string = 0;
- } else {
- #
- # Now that all full strings are replaced with "", we check
- # for unfinished strings continuing onto the next line.
- #
- $in_string =
- (s/([^"](?:"")*)"([^\\"]|\\.)*\\$/$1""/ ||
- s/^("")*"([^\\"]|\\.)*\\$/""/);
- }
-
- #
- # figure out if we are in a cpp directive
- #
- $in_cpp = $next_in_cpp || /^\s*#/; # continued or started
- $next_in_cpp = $in_cpp && /\\$/; # only if continued
-
- # strip off trailing backslashes, which appear in long macros
- s/\s*\\$//;
-
- # an /* END JSSTYLED */ comment ends a no-check block.
- if ($nocheck) {
- if (/\/\* *END *JSSTYLED *\*\//) {
- $nocheck = 0;
- } else {
- reset_indent();
- next line;
- }
- }
-
- # a /*JSSTYLED*/ comment indicates that the next line is ok.
- if ($nextok) {
- if ($okmsg) {
- err($okmsg);
- }
- $nextok = 0;
- $okmsg = 0;
- if (/\/\* *JSSTYLED.*\*\//) {
- /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/;
- $okmsg = $1;
- $nextok = 1;
- }
- $no_errs = 1;
- } elsif ($no_errs) {
- $no_errs = 0;
- }
-
- # check length of line.
- # first, a quick check to see if there is any chance of being too long.
- if (($line =~ tr/\t/\t/) * 7 + length($line) > 80) {
- # yes, there is a chance.
- # replace tabs with spaces and check again.
- my $eline = $line;
- 1 while $eline =~
- s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
- if (length($eline) > 80) {
- err("line > 80 characters");
- }
- }
-
- # ignore NOTE(...) annotations (assumes NOTE is on lines by itself).
- if ($note_level || /\b_?NOTE\s*\(/) { # if in NOTE or this is NOTE
- s/[^()]//g; # eliminate all non-parens
- $note_level += s/\(//g - length; # update paren nest level
- next;
- }
-
- # a /* BEGIN JSSTYLED */ comment starts a no-check block.
- if (/\/\* *BEGIN *JSSTYLED *\*\//) {
- $nocheck = 1;
- }
-
- # a /*JSSTYLED*/ comment indicates that the next line is ok.
- if (/\/\* *JSSTYLED.*\*\//) {
- /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/;
- $okmsg = $1;
- $nextok = 1;
- }
- if (/\/\/ *JSSTYLED/) {
- /^.*\/\/ *JSSTYLED *(.*)$/;
- $okmsg = $1;
- $nextok = 1;
- }
-
- # universal checks; apply to everything
- if (/\t +\t/) {
- err("spaces between tabs");
- }
- if (/ \t+ /) {
- err("tabs between spaces");
- }
- if (/\s$/) {
- err("space or tab at end of line");
- }
- if (/[^ \t(]\/\*/ && !/\w\(\/\*.*\*\/\);/) {
- err("comment preceded by non-blank");
- }
-
- # is this the beginning or ending of a function?
- # (not if "struct foo\n{\n")
- if (/^{$/ && $prev =~ /\)\s*(const\s*)?(\/\*.*\*\/\s*)?\\?$/) {
- $in_function = 1;
- $in_declaration = 1;
- $in_function_header = 0;
- $prev = $line;
- next line;
- }
- if (/^}\s*(\/\*.*\*\/\s*)*$/) {
- if ($prev =~ /^\s*return\s*;/) {
- err_prev("unneeded return at end of function");
- }
- $in_function = 0;
- reset_indent(); # we don't check between functions
- $prev = $line;
- next line;
- }
- if (/^\w*\($/) {
- $in_function_header = 1;
- }
-
- # a blank line terminates the declarations within a function.
- # XXX - but still a problem in sub-blocks.
- if ($in_declaration && /^$/) {
- $in_declaration = 0;
- }
-
- if ($comment_done) {
- $in_comment = 0;
- $in_header_comment = 0;
- $comment_done = 0;
- }
- # does this looks like the start of a block comment?
- if (/$hdr_comment_start/) {
- if (!/^\t*\/\*/) {
- err("block comment not indented by tabs");
- }
- $in_comment = 1;
- /^(\s*)\//;
- $comment_prefix = $1;
- if ($comment_prefix eq "") {
- $in_header_comment = 1;
- }
- $prev = $line;
- next line;
- }
- # are we still in the block comment?
- if ($in_comment) {
- if (/^$comment_prefix \*\/$/) {
- $comment_done = 1;
- } elsif (/\*\//) {
- $comment_done = 1;
- err("improper block comment close")
- unless ($ignore_hdr_comment && $in_header_comment);
- } elsif (!/^$comment_prefix \*[ \t]/ &&
- !/^$comment_prefix \*$/) {
- err("improper block comment")
- unless ($ignore_hdr_comment && $in_header_comment);
- }
- }
-
- if ($in_header_comment && $ignore_hdr_comment) {
- $prev = $line;
- next line;
- }
-
- # check for errors that might occur in comments and in code.
-
- # allow spaces to be used to draw pictures in header comments.
- #if (/[^ ] / && !/".* .*"/ && !$in_header_comment) {
- # err("spaces instead of tabs");
- #}
- #if (/^ / && !/^ \*[ \t\/]/ && !/^ \*$/ &&
- # (!/^ \w/ || $in_function != 0)) {
- # err("indent by spaces instead of tabs");
- #}
- if (/^ {2,}/ && !/^ [^ ]/) {
- err("indent by spaces instead of tabs");
- }
- if (/^\t+ [^ \t\*]/ || /^\t+ \S/ || /^\t+ \S/) {
- err("continuation line not indented by 4 spaces");
- }
-
- if (/^\s*\/\*./ && !/^\s*\/\*.*\*\// && !/$hdr_comment_start/) {
- err("improper first line of block comment");
- }
-
- if ($in_comment) { # still in comment, don't do further checks
- $prev = $line;
- next line;
- }
-
- if ((/[^(]\/\*\S/ || /^\/\*\S/) &&
- !(/$lint_re/ || ($splint_comments && /$splint_re/))) {
- err("missing blank after open comment");
- }
- if (/\S\*\/[^)]|\S\*\/$/ &&
- !(/$lint_re/ || ($splint_comments && /$splint_re/))) {
- err("missing blank before close comment");
- }
- if (/\/\/\S/) { # C++ comments
- err("missing blank after start comment");
- }
- # check for unterminated single line comments, but allow them when
- # they are used to comment out the argument list of a function
- # declaration.
- if (/\S.*\/\*/ && !/\S.*\/\*.*\*\// && !/\(\/\*/) {
- err("unterminated single line comment");
- }
-
- if (/^(#else|#endif|#include)(.*)$/) {
- $prev = $line;
- next line;
- }
-
- #
- # delete any comments and check everything else. Note that
- # ".*?" is a non-greedy match, so that we don't get confused by
- # multiple comments on the same line.
- #
- s/\/\*.*?\*\///g;
- s/\/\/.*$//; # C++ comments
-
- # delete any trailing whitespace; we have already checked for that.
- s/\s*$//;
-
- # following checks do not apply to text in comments.
- if (/"/) {
- err("literal string using double-quote instead of single");
- }
-
- if (/[^=!<>\s][!<>=]=/ || /[^<>!=][!<>=]==?[^\s,=]/ ||
- (/[^->]>[^,=>\s]/ && !/[^->]>$/) ||
- (/[^<]<[^,=<\s]/ && !/[^<]<$/) ||
- /[^<\s]<[^<]/ || /[^->\s]>[^>]/) {
- err("missing space around relational operator");
- }
- if (/\S>>=/ || /\S<<=/ || />>=\S/ || /<<=\S/ || /\S[-+*\/&|^%]=/ ||
- (/[^-+*\/&|^%!<>=\s]=[^=]/ && !/[^-+*\/&|^%!<>=\s]=$/) ||
- (/[^!<>=]=[^=\s]/ && !/[^!<>=]=$/)) {
- # XXX - should only check this for C++ code
- # XXX - there are probably other forms that should be allowed
- if (!/\soperator=/) {
- err("missing space around assignment operator");
- }
- }
- if (/[,;]\S/ && !/\bfor \(;;\)/) {
- err("comma or semicolon followed by non-blank");
- }
- # allow "for" statements to have empty "while" clauses
- if (/\s[,;]/ && !/^[\t]+;$/ && !/^\s*for \([^;]*; ;[^;]*\)/) {
- err("comma or semicolon preceded by blank");
- }
- if (/^\s*(&&|\|\|)/) {
- err("improper boolean continuation");
- }
- if (/\S *(&&|\|\|)/ || /(&&|\|\|) *\S/) {
- err("more than one space around boolean operator");
- }
- if (/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\(/) {
- err("missing space between keyword and paren");
- }
- if (/(\b(catch|for|if|with|while|switch|return)\b.*){2,}/) {
- # multiple "case" and "sizeof" allowed
- err("more than one keyword on line");
- }
- if (/\b(delete|typeof|instanceOf|with|throw|catch|new|function|in|for|if|while|switch|return|case)\s\s+\(/ &&
- !/^#if\s+\(/) {
- err("extra space between keyword and paren");
- }
- # try to detect "func (x)" but not "if (x)" or
- # "#define foo (x)" or "int (*func)();"
- if (/\w\s\(/) {
- my $s = $_;
- # strip off all keywords on the line
- s/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\s\(/XXX(/g;
- s/#elif\s\(/XXX(/g;
- s/^#define\s+\w+\s+\(/XXX(/;
- # do not match things like "void (*f)();"
- # or "typedef void (func_t)();"
- s/\w\s\(+\*/XXX(*/g;
- s/\b(void)\s+\(+/XXX(/og;
- if (/\w\s\(/) {
- err("extra space between function name and left paren");
- }
- $_ = $s;
- }
-
- if (/^\s*return\W[^;]*;/ && !/^\s*return\s*\(.*\);/) {
- err("unparenthesized return expression");
- }
- if (/\btypeof\b/ && !/\btypeof\s*\(.*\)/) {
- err("unparenthesized typeof expression");
- }
- if (/\(\s/) {
- err("whitespace after left paren");
- }
- # allow "for" statements to have empty "continue" clauses
- if (/\s\)/ && !/^\s*for \([^;]*;[^;]*; \)/) {
- err("whitespace before right paren");
- }
- if (/^\s*\(void\)[^ ]/) {
- err("missing space after (void) cast");
- }
- if (/\S{/ && !/({|\(){/) {
- err("missing space before left brace");
- }
- if ($in_function && /^\s+{/ &&
- ($prev =~ /\)\s*$/ || $prev =~ /\bstruct\s+\w+$/)) {
- err("left brace starting a line");
- }
- if (/}(else|while)/) {
- err("missing space after right brace");
- }
- if (/}\s\s+(else|while)/) {
- err("extra space after right brace");
- }
- if (/^\s+#/) {
- err("preprocessor statement not in column 1");
- }
- if (/^#\s/) {
- err("blank after preprocessor #");
- }
-
- #
- # We completely ignore, for purposes of indentation:
- # * lines outside of functions
- # * preprocessor lines
- #
- if ($check_continuation && $in_function && !$in_cpp) {
- process_indent($_);
- }
-
- if ($heuristic) {
- # cannot check this everywhere due to "struct {\n...\n} foo;"
- if ($in_function && !$in_declaration &&
- /}./ && !/}\s+=/ && !/{.*}[;,]$/ && !/}(\s|)*$/ &&
- !/} (else|while)/ && !/}}/) {
- err("possible bad text following right brace");
- }
- # cannot check this because sub-blocks in
- # the middle of code are ok
- if ($in_function && /^\s+{/) {
- err("possible left brace starting a line");
- }
- }
- if (/^\s*else\W/) {
- if ($prev =~ /^\s*}$/) {
- err_prefix($prev,
- "else and right brace should be on same line");
- }
- }
- $prev = $line;
-}
-
-if ($prev eq "") {
- err("last line in file is blank");
-}
-
-}
-
-#
-# Continuation-line checking
-#
-# The rest of this file contains the code for the continuation checking
-# engine. It's a pretty simple state machine which tracks the expression
-# depth (unmatched '('s and '['s).
-#
-# Keep in mind that the argument to process_indent() has already been heavily
-# processed; all comments have been replaced by control-A, and the contents of
-# strings and character constants have been elided.
-#
-
-my $cont_in; # currently inside of a continuation
-my $cont_off; # skipping an initializer or definition
-my $cont_noerr; # suppress cascading errors
-my $cont_start; # the line being continued
-my $cont_base; # the base indentation
-my $cont_first; # this is the first line of a statement
-my $cont_multiseg; # this continuation has multiple segments
-
-my $cont_special; # this is a C statement (if, for, etc.)
-my $cont_macro; # this is a macro
-my $cont_case; # this is a multi-line case
-
-my @cont_paren; # the stack of unmatched ( and [s we've seen
-
-sub
-reset_indent()
-{
- $cont_in = 0;
- $cont_off = 0;
-}
-
-sub
-delabel($)
-{
- #
- # replace labels with tabs. Note that there may be multiple
- # labels on a line.
- #
- local $_ = $_[0];
-
- while (/^(\t*)( *(?:(?:\w+\s*)|(?:case\b[^:]*)): *)(.*)$/) {
- my ($pre_tabs, $label, $rest) = ($1, $2, $3);
- $_ = $pre_tabs;
- while ($label =~ s/^([^\t]*)(\t+)//) {
- $_ .= "\t" x (length($2) + length($1) / 8);
- }
- $_ .= ("\t" x (length($label) / 8)).$rest;
- }
-
- return ($_);
-}
-
-sub
-process_indent($)
-{
- require strict;
- local $_ = $_[0]; # preserve the global $_
-
- s///g; # No comments
- s/\s+$//; # Strip trailing whitespace
-
- return if (/^$/); # skip empty lines
-
- # regexps used below; keywords taking (), macros, and continued cases
- my $special = '(?:(?:\}\s*)?else\s+)?(?:if|for|while|switch)\b';
- my $macro = '[A-Z_][A-Z_0-9]*\(';
- my $case = 'case\b[^:]*$';
-
- # skip over enumerations, array definitions, initializers, etc.
- if ($cont_off <= 0 && !/^\s*$special/ &&
- (/(?:(?:\b(?:enum|struct|union)\s*[^\{]*)|(?:\s+=\s*)){/ ||
- (/^\s*{/ && $prev =~ /=\s*(?:\/\*.*\*\/\s*)*$/))) {
- $cont_in = 0;
- $cont_off = tr/{/{/ - tr/}/}/;
- return;
- }
- if ($cont_off) {
- $cont_off += tr/{/{/ - tr/}/}/;
- return;
- }
-
- if (!$cont_in) {
- $cont_start = $line;
-
- if (/^\t* /) {
- err("non-continuation indented 4 spaces");
- $cont_noerr = 1; # stop reporting
- }
- $_ = delabel($_); # replace labels with tabs
-
- # check if the statement is complete
- return if (/^\s*\}?$/);
- return if (/^\s*\}?\s*else\s*\{?$/);
- return if (/^\s*do\s*\{?$/);
- return if (/{$/);
- return if (/}[,;]?$/);
-
- # Allow macros on their own lines
- return if (/^\s*[A-Z_][A-Z_0-9]*$/);
-
- # cases we don't deal with, generally non-kosher
- if (/{/) {
- err("stuff after {");
- return;
- }
-
- # Get the base line, and set up the state machine
- /^(\t*)/;
- $cont_base = $1;
- $cont_in = 1;
- @cont_paren = ();
- $cont_first = 1;
- $cont_multiseg = 0;
-
- # certain things need special processing
- $cont_special = /^\s*$special/? 1 : 0;
- $cont_macro = /^\s*$macro/? 1 : 0;
- $cont_case = /^\s*$case/? 1 : 0;
- } else {
- $cont_first = 0;
-
- # Strings may be pulled back to an earlier (half-)tabstop
- unless ($cont_noerr || /^$cont_base / ||
- (/^\t*(?: )?(?:gettext\()?\"/ && !/^$cont_base\t/)) {
- err_prefix($cont_start,
- "continuation should be indented 4 spaces");
- }
- }
-
- my $rest = $_; # keeps the remainder of the line
-
- #
- # The split matches 0 characters, so that each 'special' character
- # is processed separately. Parens and brackets are pushed and
- # popped off the @cont_paren stack. For normal processing, we wait
- # until a ; or { terminates the statement. "special" processing
- # (if/for/while/switch) is allowed to stop when the stack empties,
- # as is macro processing. Case statements are terminated with a :
- # and an empty paren stack.
- #
- foreach $_ (split /[^\(\)\[\]\{\}\;\:]*/) {
- next if (length($_) == 0);
-
- # rest contains the remainder of the line
- my $rxp = "[^\Q$_\E]*\Q$_\E";
- $rest =~ s/^$rxp//;
-
- if (/\(/ || /\[/) {
- push @cont_paren, $_;
- } elsif (/\)/ || /\]/) {
- my $cur = $_;
- tr/\)\]/\(\[/;
-
- my $old = (pop @cont_paren);
- if (!defined($old)) {
- err("unexpected '$cur'");
- $cont_in = 0;
- last;
- } elsif ($old ne $_) {
- err("'$cur' mismatched with '$old'");
- $cont_in = 0;
- last;
- }
-
- #
- # If the stack is now empty, do special processing
- # for if/for/while/switch and macro statements.
- #
- next if (@cont_paren != 0);
- if ($cont_special) {
- if ($rest =~ /^\s*{?$/) {
- $cont_in = 0;
- last;
- }
- if ($rest =~ /^\s*;$/) {
- err("empty if/for/while body ".
- "not on its own line");
- $cont_in = 0;
- last;
- }
- if (!$cont_first && $cont_multiseg == 1) {
- err_prefix($cont_start,
- "multiple statements continued ".
- "over multiple lines");
- $cont_multiseg = 2;
- } elsif ($cont_multiseg == 0) {
- $cont_multiseg = 1;
- }
- # We've finished this section, start
- # processing the next.
- goto section_ended;
- }
- if ($cont_macro) {
- if ($rest =~ /^$/) {
- $cont_in = 0;
- last;
- }
- }
- } elsif (/\;/) {
- if ($cont_case) {
- err("unexpected ;");
- } elsif (!$cont_special) {
- err("unexpected ;") if (@cont_paren != 0);
- if (!$cont_first && $cont_multiseg == 1) {
- err_prefix($cont_start,
- "multiple statements continued ".
- "over multiple lines");
- $cont_multiseg = 2;
- } elsif ($cont_multiseg == 0) {
- $cont_multiseg = 1;
- }
- if ($rest =~ /^$/) {
- $cont_in = 0;
- last;
- }
- if ($rest =~ /^\s*special/) {
- err("if/for/while/switch not started ".
- "on its own line");
- }
- goto section_ended;
- }
- } elsif (/\{/) {
- err("{ while in parens/brackets") if (@cont_paren != 0);
- err("stuff after {") if ($rest =~ /[^\s}]/);
- $cont_in = 0;
- last;
- } elsif (/\}/) {
- err("} while in parens/brackets") if (@cont_paren != 0);
- if (!$cont_special && $rest !~ /^\s*(while|else)\b/) {
- if ($rest =~ /^$/) {
- err("unexpected }");
- } else {
- err("stuff after }");
- }
- $cont_in = 0;
- last;
- }
- } elsif (/\:/ && $cont_case && @cont_paren == 0) {
- err("stuff after multi-line case") if ($rest !~ /$^/);
- $cont_in = 0;
- last;
- }
- next;
-section_ended:
- # End of a statement or if/while/for loop. Reset
- # cont_special and cont_macro based on the rest of the
- # line.
- $cont_special = ($rest =~ /^\s*$special/)? 1 : 0;
- $cont_macro = ($rest =~ /^\s*$macro/)? 1 : 0;
- $cont_case = 0;
- next;
- }
- $cont_noerr = 0 if (!$cont_in);
-}
diff --git a/node_modules/request/node_modules/http-signature/package.json b/node_modules/request/node_modules/http-signature/package.json
deleted file mode 100644
index 47d76cffc..000000000
--- a/node_modules/request/node_modules/http-signature/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "http-signature",
- "description": "Reference implementation of Joyent's HTTP Signature scheme.",
- "version": "0.11.0",
- "license": "MIT",
- "author": {
- "name": "Joyent, Inc"
- },
- "contributors": [
- {
- "name": "Mark Cavage",
- "email": "mcavage@gmail.com"
- },
- {
- "name": "David I. Lehn",
- "email": "dil@lehn.org"
- },
- {
- "name": "Patrick Mooney",
- "email": "patrick.f.mooney@gmail.com"
- }
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/joyent/node-http-signature.git"
- },
- "homepage": "https://github.com/joyent/node-http-signature/",
- "bugs": {
- "url": "https://github.com/joyent/node-http-signature/issues"
- },
- "keywords": [
- "https",
- "request"
- ],
- "engines": {
- "node": ">=0.8"
- },
- "main": "lib/index.js",
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {
- "assert-plus": "^0.1.5",
- "asn1": "0.1.11",
- "ctype": "0.5.3"
- },
- "devDependencies": {
- "node-uuid": "^1.4.1",
- "tap": "0.4.2"
- },
- "_id": "http-signature@0.11.0",
- "_shasum": "1796cf67a001ad5cd6849dca0991485f09089fe6",
- "_resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz",
- "_from": "http-signature@>=0.11.0 <0.12.0",
- "_npmVersion": "2.5.1",
- "_nodeVersion": "0.10.36",
- "_npmUser": {
- "name": "pfmooney",
- "email": "patrick.f.mooney@gmail.com"
- },
- "maintainers": [
- {
- "name": "mcavage",
- "email": "mcavage@gmail.com"
- },
- {
- "name": "pfmooney",
- "email": "patrick.f.mooney@gmail.com"
- }
- ],
- "dist": {
- "shasum": "1796cf67a001ad5cd6849dca0991485f09089fe6",
- "tarball": "http://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz"
- },
- "directories": {},
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/isstream/.npmignore b/node_modules/request/node_modules/isstream/.npmignore
deleted file mode 100644
index aa1ec1ea0..000000000
--- a/node_modules/request/node_modules/isstream/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-*.tgz
diff --git a/node_modules/request/node_modules/isstream/.travis.yml b/node_modules/request/node_modules/isstream/.travis.yml
deleted file mode 100644
index 1fec2ab9a..000000000
--- a/node_modules/request/node_modules/isstream/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.11"
-branches:
- only:
- - master
-notifications:
- email:
- - rod@vagg.org
-script: npm test
diff --git a/node_modules/request/node_modules/isstream/LICENSE.md b/node_modules/request/node_modules/isstream/LICENSE.md
deleted file mode 100644
index 43f7153f9..000000000
--- a/node_modules/request/node_modules/isstream/LICENSE.md
+++ /dev/null
@@ -1,11 +0,0 @@
-The MIT License (MIT)
-=====================
-
-Copyright (c) 2015 Rod Vagg
----------------------------
-
-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/request/node_modules/isstream/README.md b/node_modules/request/node_modules/isstream/README.md
deleted file mode 100644
index 06770e82f..000000000
--- a/node_modules/request/node_modules/isstream/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# isStream
-
-[![Build Status](https://secure.travis-ci.org/rvagg/isstream.png)](http://travis-ci.org/rvagg/isstream)
-
-**Test if an object is a `Stream`**
-
-[![NPM](https://nodei.co/npm/isstream.svg)](https://nodei.co/npm/isstream/)
-
-The missing `Stream.isStream(obj)`: determine if an object is standard Node.js `Stream`. Works for Node-core `Stream` objects (for 0.8, 0.10, 0.11, and in theory, older and newer versions) and all versions of **[readable-stream](https://github.com/isaacs/readable-stream)**.
-
-## Usage:
-
-```js
-var isStream = require('isstream')
-var Stream = require('stream')
-
-isStream(new Stream()) // true
-
-isStream({}) // false
-
-isStream(new Stream.Readable()) // true
-isStream(new Stream.Writable()) // true
-isStream(new Stream.Duplex()) // true
-isStream(new Stream.Transform()) // true
-isStream(new Stream.PassThrough()) // true
-```
-
-## But wait! There's more!
-
-You can also test for `isReadable(obj)`, `isWritable(obj)` and `isDuplex(obj)` to test for implementations of Streams2 (and Streams3) base classes.
-
-```js
-var isReadable = require('isstream').isReadable
-var isWritable = require('isstream').isWritable
-var isDuplex = require('isstream').isDuplex
-var Stream = require('stream')
-
-isReadable(new Stream()) // false
-isWritable(new Stream()) // false
-isDuplex(new Stream()) // false
-
-isReadable(new Stream.Readable()) // true
-isReadable(new Stream.Writable()) // false
-isReadable(new Stream.Duplex()) // true
-isReadable(new Stream.Transform()) // true
-isReadable(new Stream.PassThrough()) // true
-
-isWritable(new Stream.Readable()) // false
-isWritable(new Stream.Writable()) // true
-isWritable(new Stream.Duplex()) // true
-isWritable(new Stream.Transform()) // true
-isWritable(new Stream.PassThrough()) // true
-
-isDuplex(new Stream.Readable()) // false
-isDuplex(new Stream.Writable()) // false
-isDuplex(new Stream.Duplex()) // true
-isDuplex(new Stream.Transform()) // true
-isDuplex(new Stream.PassThrough()) // true
-```
-
-*Reminder: when implementing your own streams, please [use **readable-stream** rather than core streams](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).*
-
-
-## License
-
-**isStream** is Copyright (c) 2015 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.
diff --git a/node_modules/request/node_modules/isstream/isstream.js b/node_modules/request/node_modules/isstream/isstream.js
deleted file mode 100644
index a1d104a7a..000000000
--- a/node_modules/request/node_modules/isstream/isstream.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var stream = require('stream')
-
-
-function isStream (obj) {
- return obj instanceof stream.Stream
-}
-
-
-function isReadable (obj) {
- return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'
-}
-
-
-function isWritable (obj) {
- return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'
-}
-
-
-function isDuplex (obj) {
- return isReadable(obj) && isWritable(obj)
-}
-
-
-module.exports = isStream
-module.exports.isReadable = isReadable
-module.exports.isWritable = isWritable
-module.exports.isDuplex = isDuplex
diff --git a/node_modules/request/node_modules/isstream/package.json b/node_modules/request/node_modules/isstream/package.json
deleted file mode 100644
index d0338b882..000000000
--- a/node_modules/request/node_modules/isstream/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "isstream",
- "version": "0.1.2",
- "description": "Determine if an object is a Stream",
- "main": "isstream.js",
- "scripts": {
- "test": "tar --xform 's/^package/readable-stream-1.0/' -zxf readable-stream-1.0.*.tgz && tar --xform 's/^package/readable-stream-1.1/' -zxf readable-stream-1.1.*.tgz && node test.js; rm -rf readable-stream-1.?/"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/rvagg/isstream.git"
- },
- "keywords": [
- "stream",
- "type",
- "streams",
- "readable-stream",
- "hippo"
- ],
- "devDependencies": {
- "tape": "~2.12.3",
- "core-util-is": "~1.0.0",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x",
- "inherits": "~2.0.1"
- },
- "author": {
- "name": "Rod Vagg",
- "email": "rod@vagg.org"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/rvagg/isstream/issues"
- },
- "homepage": "https://github.com/rvagg/isstream",
- "readme": "# isStream\n\n[![Build Status](https://secure.travis-ci.org/rvagg/isstream.png)](http://travis-ci.org/rvagg/isstream)\n\n**Test if an object is a `Stream`**\n\n[![NPM](https://nodei.co/npm/isstream.svg)](https://nodei.co/npm/isstream/)\n\nThe missing `Stream.isStream(obj)`: determine if an object is standard Node.js `Stream`. Works for Node-core `Stream` objects (for 0.8, 0.10, 0.11, and in theory, older and newer versions) and all versions of **[readable-stream](https://github.com/isaacs/readable-stream)**.\n\n## Usage:\n\n```js\nvar isStream = require('isstream')\nvar Stream = require('stream')\n\nisStream(new Stream()) // true\n\nisStream({}) // false\n\nisStream(new Stream.Readable()) // true\nisStream(new Stream.Writable()) // true\nisStream(new Stream.Duplex()) // true\nisStream(new Stream.Transform()) // true\nisStream(new Stream.PassThrough()) // true\n```\n\n## But wait! There's more!\n\nYou can also test for `isReadable(obj)`, `isWritable(obj)` and `isDuplex(obj)` to test for implementations of Streams2 (and Streams3) base classes.\n\n```js\nvar isReadable = require('isstream').isReadable\nvar isWritable = require('isstream').isWritable\nvar isDuplex = require('isstream').isDuplex\nvar Stream = require('stream')\n\nisReadable(new Stream()) // false\nisWritable(new Stream()) // false\nisDuplex(new Stream()) // false\n\nisReadable(new Stream.Readable()) // true\nisReadable(new Stream.Writable()) // false\nisReadable(new Stream.Duplex()) // true\nisReadable(new Stream.Transform()) // true\nisReadable(new Stream.PassThrough()) // true\n\nisWritable(new Stream.Readable()) // false\nisWritable(new Stream.Writable()) // true\nisWritable(new Stream.Duplex()) // true\nisWritable(new Stream.Transform()) // true\nisWritable(new Stream.PassThrough()) // true\n\nisDuplex(new Stream.Readable()) // false\nisDuplex(new Stream.Writable()) // false\nisDuplex(new Stream.Duplex()) // true\nisDuplex(new Stream.Transform()) // true\nisDuplex(new Stream.PassThrough()) // true\n```\n\n*Reminder: when implementing your own streams, please [use **readable-stream** rather than core streams](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).*\n\n\n## License\n\n**isStream** is Copyright (c) 2015 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.\n",
- "readmeFilename": "README.md",
- "_id": "isstream@0.1.2",
- "_shasum": "47e63f7af55afa6f92e1500e690eb8b8529c099a",
- "_resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "_from": "isstream@>=0.1.1 <0.2.0"
-}
diff --git a/node_modules/request/node_modules/isstream/test.js b/node_modules/request/node_modules/isstream/test.js
deleted file mode 100644
index 8c950c55e..000000000
--- a/node_modules/request/node_modules/isstream/test.js
+++ /dev/null
@@ -1,168 +0,0 @@
-var tape = require('tape')
- , EE = require('events').EventEmitter
- , util = require('util')
-
-
- , isStream = require('./')
- , isReadable = require('./').isReadable
- , isWritable = require('./').isWritable
- , isDuplex = require('./').isDuplex
-
- , CoreStreams = require('stream')
- , ReadableStream10 = require('./readable-stream-1.0/')
- , ReadableStream11 = require('./readable-stream-1.1/')
-
-
-function test (pass, type, stream) {
- tape('isStream(' + type + ')', function (t) {
- t.plan(1)
- t.ok(pass === isStream(stream), type)
- })
-}
-
-
-function testReadable (pass, type, stream) {
- tape('isReadable(' + type + ')', function (t) {
- t.plan(1)
- t.ok(pass === isReadable(stream), type)
- })
-}
-
-
-function testWritable (pass, type, stream) {
- tape('isWritable(' + type + ')', function (t) {
- t.plan(1)
- t.ok(pass === isWritable(stream), type)
- })
-}
-
-
-function testDuplex (pass, type, stream) {
- tape('isDuplex(' + type + ')', function (t) {
- t.plan(1)
- t.ok(pass === isDuplex(stream), type)
- })
-}
-
-
-[ undefined, null, '', true, false, 0, 1, 1.0, 'string', {}, function foo () {} ].forEach(function (o) {
- test(false, 'non-stream / primitive: ' + (JSON.stringify(o) || (o && o.toString()) || o), o)
-})
-
-
-test(false, 'fake stream obj', { pipe: function () {} })
-
-
-;(function () {
-
- // looks like a stream!
-
- function Stream () {
- EE.call(this)
- }
- util.inherits(Stream, EE)
- Stream.prototype.pipe = function () {}
- Stream.Stream = Stream
-
- test(false, 'fake stream "new Stream()"', new Stream())
-
-}())
-
-
-test(true, 'CoreStreams.Stream', new (CoreStreams.Stream)())
-test(true, 'CoreStreams.Readable', new (CoreStreams.Readable)())
-test(true, 'CoreStreams.Writable', new (CoreStreams.Writable)())
-test(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
-test(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
-test(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
-
-test(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
-test(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
-test(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
-test(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
-test(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
-
-test(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
-test(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
-test(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
-test(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
-test(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
-
-
-testReadable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
-testReadable(true, 'CoreStreams.Readable', new (CoreStreams.Readable)())
-testReadable(false, 'CoreStreams.Writable', new (CoreStreams.Writable)())
-testReadable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
-testReadable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
-testReadable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
-
-testReadable(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
-testReadable(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
-testReadable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
-testReadable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
-testReadable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
-
-testReadable(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
-testReadable(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
-testReadable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
-testReadable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
-testReadable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
-
-
-testWritable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
-testWritable(false, 'CoreStreams.Readable', new (CoreStreams.Readable)())
-testWritable(true, 'CoreStreams.Writable', new (CoreStreams.Writable)())
-testWritable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
-testWritable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
-testWritable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
-
-testWritable(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
-testWritable(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
-testWritable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
-testWritable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
-testWritable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
-
-testWritable(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
-testWritable(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
-testWritable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
-testWritable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
-testWritable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
-
-
-testDuplex(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
-testDuplex(false, 'CoreStreams.Readable', new (CoreStreams.Readable)())
-testDuplex(false, 'CoreStreams.Writable', new (CoreStreams.Writable)())
-testDuplex(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
-testDuplex(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
-testDuplex(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
-
-testDuplex(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
-testDuplex(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
-testDuplex(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
-testDuplex(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
-testDuplex(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
-
-testDuplex(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
-testDuplex(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
-testDuplex(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
-testDuplex(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
-testDuplex(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
-
-
-;[ CoreStreams, ReadableStream10, ReadableStream11 ].forEach(function (p) {
- [ 'Stream', 'Readable', 'Writable', 'Duplex', 'Transform', 'PassThrough' ].forEach(function (k) {
- if (!p[k])
- return
-
- function SubStream () {
- p[k].call(this)
- }
- util.inherits(SubStream, p[k])
-
- test(true, 'Stream subclass: ' + p.name + '.' + k, new SubStream())
-
- })
-})
-
-
-
diff --git a/node_modules/request/node_modules/json-stringify-safe/.npmignore b/node_modules/request/node_modules/json-stringify-safe/.npmignore
deleted file mode 100644
index 17d6b3677..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-/*.tgz
diff --git a/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md b/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md
deleted file mode 100644
index 42bcb60af..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## Unreleased
-- Fixes stringify to only take ancestors into account when checking
- circularity.
- It previously assumed every visited object was circular which led to [false
- positives][issue9].
- Uses the tiny serializer I wrote for [Must.js][must] a year and a half ago.
-- Fixes calling the `replacer` function in the proper context (`thisArg`).
-- Fixes calling the `cycleReplacer` function in the proper context (`thisArg`).
-- Speeds serializing by a factor of
- Big-O(h-my-god-it-linearly-searched-every-object) it had ever seen. Searching
- only the ancestors for a circular references speeds up things considerably.
-
-[must]: https://github.com/moll/js-must
-[issue9]: https://github.com/isaacs/json-stringify-safe/issues/9
diff --git a/node_modules/request/node_modules/json-stringify-safe/LICENSE b/node_modules/request/node_modules/json-stringify-safe/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/request/node_modules/json-stringify-safe/Makefile b/node_modules/request/node_modules/json-stringify-safe/Makefile
deleted file mode 100644
index 36088c723..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-NODE_OPTS =
-TEST_OPTS =
-
-love:
- @echo "Feel like makin' love."
-
-test:
- @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot $(TEST_OPTS)
-
-spec:
- @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec $(TEST_OPTS)
-
-autotest:
- @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot --watch $(TEST_OPTS)
-
-autospec:
- @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec --watch $(TEST_OPTS)
-
-pack:
- @file=$$(npm pack); echo "$$file"; tar tf "$$file"
-
-publish:
- npm publish
-
-tag:
- git tag "v$$(node -e 'console.log(require("./package").version)')"
-
-clean:
- rm -f *.tgz
- npm prune --production
-
-.PHONY: love
-.PHONY: test spec autotest autospec
-.PHONY: pack publish tag
-.PHONY: clean
diff --git a/node_modules/request/node_modules/json-stringify-safe/README.md b/node_modules/request/node_modules/json-stringify-safe/README.md
deleted file mode 100644
index a11f302a3..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# json-stringify-safe
-
-Like JSON.stringify, but doesn't throw on circular references.
-
-## Usage
-
-Takes the same arguments as `JSON.stringify`.
-
-```javascript
-var stringify = require('json-stringify-safe');
-var circularObj = {};
-circularObj.circularRef = circularObj;
-circularObj.list = [ circularObj, circularObj ];
-console.log(stringify(circularObj, null, 2));
-```
-
-Output:
-
-```json
-{
- "circularRef": "[Circular]",
- "list": [
- "[Circular]",
- "[Circular]"
- ]
-}
-```
-
-## Details
-
-```
-stringify(obj, serializer, indent, decycler)
-```
-
-The first three arguments are the same as to JSON.stringify. The last
-is an argument that's only used when the object has been seen already.
-
-The default `decycler` function returns the string `'[Circular]'`.
-If, for example, you pass in `function(k,v){}` (return nothing) then it
-will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`,
-then cyclical objects will always be represented as `{"foo":"bar"}` in
-the result.
-
-```
-stringify.getSerialize(serializer, decycler)
-```
-
-Returns a serializer that can be used elsewhere. This is the actual
-function that's passed to JSON.stringify.
-
-**Note** that the function returned from `getSerialize` is stateful for now, so
-do **not** use it more than once.
diff --git a/node_modules/request/node_modules/json-stringify-safe/package.json b/node_modules/request/node_modules/json-stringify-safe/package.json
deleted file mode 100644
index e3cbf9a74..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/package.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "name": "json-stringify-safe",
- "version": "5.0.1",
- "description": "Like JSON.stringify, but doesn't blow up on circular refs.",
- "keywords": [
- "json",
- "stringify",
- "circular",
- "safe"
- ],
- "homepage": "https://github.com/isaacs/json-stringify-safe",
- "bugs": {
- "url": "https://github.com/isaacs/json-stringify-safe/issues"
- },
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
- "contributors": [
- {
- "name": "Andri Möll",
- "email": "andri@dot.ee",
- "url": "http://themoll.com"
- }
- ],
- "license": "ISC",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/json-stringify-safe.git"
- },
- "main": "stringify.js",
- "scripts": {
- "test": "node test.js"
- },
- "devDependencies": {
- "mocha": ">= 2.1.0 < 3",
- "must": ">= 0.12 < 0.13",
- "sinon": ">= 1.12.2 < 2"
- },
- "gitHead": "3890dceab3ad14f8701e38ca74f38276abc76de5",
- "_id": "json-stringify-safe@5.0.1",
- "_shasum": "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb",
- "_from": "json-stringify-safe@>=5.0.0 <5.1.0",
- "_npmVersion": "2.10.0",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb",
- "tarball": "http://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "moll",
- "email": "andri@dot.ee"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/json-stringify-safe/stringify.js b/node_modules/request/node_modules/json-stringify-safe/stringify.js
deleted file mode 100644
index 124a45218..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/stringify.js
+++ /dev/null
@@ -1,27 +0,0 @@
-exports = module.exports = stringify
-exports.getSerialize = serializer
-
-function stringify(obj, replacer, spaces, cycleReplacer) {
- return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
-}
-
-function serializer(replacer, cycleReplacer) {
- var stack = [], keys = []
-
- if (cycleReplacer == null) cycleReplacer = function(key, value) {
- if (stack[0] === value) return "[Circular ~]"
- return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
- }
-
- return function(key, value) {
- if (stack.length > 0) {
- var thisPos = stack.indexOf(this)
- ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
- ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
- if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
- }
- else stack.push(value)
-
- return replacer == null ? value : replacer.call(this, key, value)
- }
-}
diff --git a/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts b/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts
deleted file mode 100644
index 2544e5861..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---recursive
---require must
diff --git a/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js b/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js
deleted file mode 100644
index 5b3258317..000000000
--- a/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js
+++ /dev/null
@@ -1,246 +0,0 @@
-var Sinon = require("sinon")
-var stringify = require("..")
-function jsonify(obj) { return JSON.stringify(obj, null, 2) }
-
-describe("Stringify", function() {
- it("must stringify circular objects", function() {
- var obj = {name: "Alice"}
- obj.self = obj
- var json = stringify(obj, null, 2)
- json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"}))
- })
-
- it("must stringify circular objects with intermediaries", function() {
- var obj = {name: "Alice"}
- obj.identity = {self: obj}
- var json = stringify(obj, null, 2)
- json.must.eql(jsonify({name: "Alice", identity: {self: "[Circular ~]"}}))
- })
-
- it("must stringify circular objects deeper", function() {
- var obj = {name: "Alice", child: {name: "Bob"}}
- obj.child.self = obj.child
-
- stringify(obj, null, 2).must.eql(jsonify({
- name: "Alice",
- child: {name: "Bob", self: "[Circular ~.child]"}
- }))
- })
-
- it("must stringify circular objects deeper with intermediaries", function() {
- var obj = {name: "Alice", child: {name: "Bob"}}
- obj.child.identity = {self: obj.child}
-
- stringify(obj, null, 2).must.eql(jsonify({
- name: "Alice",
- child: {name: "Bob", identity: {self: "[Circular ~.child]"}}
- }))
- })
-
- it("must stringify circular objects in an array", function() {
- var obj = {name: "Alice"}
- obj.self = [obj, obj]
-
- stringify(obj, null, 2).must.eql(jsonify({
- name: "Alice", self: ["[Circular ~]", "[Circular ~]"]
- }))
- })
-
- it("must stringify circular objects deeper in an array", function() {
- var obj = {name: "Alice", children: [{name: "Bob"}, {name: "Eve"}]}
- obj.children[0].self = obj.children[0]
- obj.children[1].self = obj.children[1]
-
- stringify(obj, null, 2).must.eql(jsonify({
- name: "Alice",
- children: [
- {name: "Bob", self: "[Circular ~.children.0]"},
- {name: "Eve", self: "[Circular ~.children.1]"}
- ]
- }))
- })
-
- it("must stringify circular arrays", function() {
- var obj = []
- obj.push(obj)
- obj.push(obj)
- var json = stringify(obj, null, 2)
- json.must.eql(jsonify(["[Circular ~]", "[Circular ~]"]))
- })
-
- it("must stringify circular arrays with intermediaries", function() {
- var obj = []
- obj.push({name: "Alice", self: obj})
- obj.push({name: "Bob", self: obj})
-
- stringify(obj, null, 2).must.eql(jsonify([
- {name: "Alice", self: "[Circular ~]"},
- {name: "Bob", self: "[Circular ~]"}
- ]))
- })
-
- it("must stringify repeated objects in objects", function() {
- var obj = {}
- var alice = {name: "Alice"}
- obj.alice1 = alice
- obj.alice2 = alice
-
- stringify(obj, null, 2).must.eql(jsonify({
- alice1: {name: "Alice"},
- alice2: {name: "Alice"}
- }))
- })
-
- it("must stringify repeated objects in arrays", function() {
- var alice = {name: "Alice"}
- var obj = [alice, alice]
- var json = stringify(obj, null, 2)
- json.must.eql(jsonify([{name: "Alice"}, {name: "Alice"}]))
- })
-
- it("must call given decycler and use its output", function() {
- var obj = {}
- obj.a = obj
- obj.b = obj
-
- var decycle = Sinon.spy(function() { return decycle.callCount })
- var json = stringify(obj, null, 2, decycle)
- json.must.eql(jsonify({a: 1, b: 2}, null, 2))
-
- decycle.callCount.must.equal(2)
- decycle.thisValues[0].must.equal(obj)
- decycle.args[0][0].must.equal("a")
- decycle.args[0][1].must.equal(obj)
- decycle.thisValues[1].must.equal(obj)
- decycle.args[1][0].must.equal("b")
- decycle.args[1][1].must.equal(obj)
- })
-
- it("must call replacer and use its output", function() {
- var obj = {name: "Alice", child: {name: "Bob"}}
-
- var replacer = Sinon.spy(bangString)
- var json = stringify(obj, replacer, 2)
- json.must.eql(jsonify({name: "Alice!", child: {name: "Bob!"}}))
-
- replacer.callCount.must.equal(4)
- replacer.args[0][0].must.equal("")
- replacer.args[0][1].must.equal(obj)
- replacer.thisValues[1].must.equal(obj)
- replacer.args[1][0].must.equal("name")
- replacer.args[1][1].must.equal("Alice")
- replacer.thisValues[2].must.equal(obj)
- replacer.args[2][0].must.equal("child")
- replacer.args[2][1].must.equal(obj.child)
- replacer.thisValues[3].must.equal(obj.child)
- replacer.args[3][0].must.equal("name")
- replacer.args[3][1].must.equal("Bob")
- })
-
- it("must call replacer after describing circular references", function() {
- var obj = {name: "Alice"}
- obj.self = obj
-
- var replacer = Sinon.spy(bangString)
- var json = stringify(obj, replacer, 2)
- json.must.eql(jsonify({name: "Alice!", self: "[Circular ~]!"}))
-
- replacer.callCount.must.equal(3)
- replacer.args[0][0].must.equal("")
- replacer.args[0][1].must.equal(obj)
- replacer.thisValues[1].must.equal(obj)
- replacer.args[1][0].must.equal("name")
- replacer.args[1][1].must.equal("Alice")
- replacer.thisValues[2].must.equal(obj)
- replacer.args[2][0].must.equal("self")
- replacer.args[2][1].must.equal("[Circular ~]")
- })
-
- it("must call given decycler and use its output for nested objects",
- function() {
- var obj = {}
- obj.a = obj
- obj.b = {self: obj}
-
- var decycle = Sinon.spy(function() { return decycle.callCount })
- var json = stringify(obj, null, 2, decycle)
- json.must.eql(jsonify({a: 1, b: {self: 2}}))
-
- decycle.callCount.must.equal(2)
- decycle.args[0][0].must.equal("a")
- decycle.args[0][1].must.equal(obj)
- decycle.args[1][0].must.equal("self")
- decycle.args[1][1].must.equal(obj)
- })
-
- it("must use decycler's output when it returned null", function() {
- var obj = {a: "b"}
- obj.self = obj
- obj.selves = [obj, obj]
-
- function decycle() { return null }
- stringify(obj, null, 2, decycle).must.eql(jsonify({
- a: "b",
- self: null,
- selves: [null, null]
- }))
- })
-
- it("must use decycler's output when it returned undefined", function() {
- var obj = {a: "b"}
- obj.self = obj
- obj.selves = [obj, obj]
-
- function decycle() {}
- stringify(obj, null, 2, decycle).must.eql(jsonify({
- a: "b",
- selves: [null, null]
- }))
- })
-
- it("must throw given a decycler that returns a cycle", function() {
- var obj = {}
- obj.self = obj
- var err
- function identity(key, value) { return value }
- try { stringify(obj, null, 2, identity) } catch (ex) { err = ex }
- err.must.be.an.instanceof(TypeError)
- })
-
- describe(".getSerialize", function() {
- it("must stringify circular objects", function() {
- var obj = {a: "b"}
- obj.circularRef = obj
- obj.list = [obj, obj]
-
- var json = JSON.stringify(obj, stringify.getSerialize(), 2)
- json.must.eql(jsonify({
- "a": "b",
- "circularRef": "[Circular ~]",
- "list": ["[Circular ~]", "[Circular ~]"]
- }))
- })
-
- // This is the behavior as of Mar 3, 2015.
- // The serializer function keeps state inside the returned function and
- // so far I'm not sure how to not do that. JSON.stringify's replacer is not
- // called _after_ serialization.
- xit("must return a function that could be called twice", function() {
- var obj = {name: "Alice"}
- obj.self = obj
-
- var json
- var serializer = stringify.getSerialize()
-
- json = JSON.stringify(obj, serializer, 2)
- json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"}))
-
- json = JSON.stringify(obj, serializer, 2)
- json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"}))
- })
- })
-})
-
-function bangString(key, value) {
- return typeof value == "string" ? value + "!" : value
-}
diff --git a/node_modules/request/node_modules/mime-types/HISTORY.md b/node_modules/request/node_modules/mime-types/HISTORY.md
deleted file mode 100644
index fb90c271c..000000000
--- a/node_modules/request/node_modules/mime-types/HISTORY.md
+++ /dev/null
@@ -1,115 +0,0 @@
-2.0.14 / 2015-06-06
-===================
-
- * deps: mime-db@~1.12.0
- - Add new mime types
-
-2.0.13 / 2015-05-31
-===================
-
- * deps: mime-db@~1.11.0
- - Add new mime types
-
-2.0.12 / 2015-05-19
-===================
-
- * deps: mime-db@~1.10.0
- - Add new mime types
-
-2.0.11 / 2015-05-05
-===================
-
- * deps: mime-db@~1.9.1
- - Add new mime types
-
-2.0.10 / 2015-03-13
-===================
-
- * deps: mime-db@~1.8.0
- - Add new mime types
-
-2.0.9 / 2015-02-09
-==================
-
- * deps: mime-db@~1.7.0
- - Add new mime types
- - Community extensions ownership transferred from `node-mime`
-
-2.0.8 / 2015-01-29
-==================
-
- * deps: mime-db@~1.6.0
- - Add new mime types
-
-2.0.7 / 2014-12-30
-==================
-
- * deps: mime-db@~1.5.0
- - Add new mime types
- - Fix various invalid MIME type entries
-
-2.0.6 / 2014-12-30
-==================
-
- * deps: mime-db@~1.4.0
- - Add new mime types
- - Fix various invalid MIME type entries
- - Remove example template MIME types
-
-2.0.5 / 2014-12-29
-==================
-
- * deps: mime-db@~1.3.1
- - Fix missing extensions
-
-2.0.4 / 2014-12-10
-==================
-
- * deps: mime-db@~1.3.0
- - Add new mime types
-
-2.0.3 / 2014-11-09
-==================
-
- * deps: mime-db@~1.2.0
- - Add new mime types
-
-2.0.2 / 2014-09-28
-==================
-
- * deps: mime-db@~1.1.0
- - Add new mime types
- - Add additional compressible
- - Update charsets
-
-2.0.1 / 2014-09-07
-==================
-
- * Support Node.js 0.6
-
-2.0.0 / 2014-09-02
-==================
-
- * Use `mime-db`
- * Remove `.define()`
-
-1.0.2 / 2014-08-04
-==================
-
- * Set charset=utf-8 for `text/javascript`
-
-1.0.1 / 2014-06-24
-==================
-
- * Add `text/jsx` type
-
-1.0.0 / 2014-05-12
-==================
-
- * Return `false` for unknown types
- * Set charset=utf-8 for `application/json`
-
-0.1.0 / 2014-05-02
-==================
-
- * Initial release
diff --git a/node_modules/request/node_modules/mime-types/LICENSE b/node_modules/request/node_modules/mime-types/LICENSE
deleted file mode 100644
index a7ae8ee9b..000000000
--- a/node_modules/request/node_modules/mime-types/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2014 Jonathan Ong me@jongleberry.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/request/node_modules/mime-types/README.md b/node_modules/request/node_modules/mime-types/README.md
deleted file mode 100644
index 372749336..000000000
--- a/node_modules/request/node_modules/mime-types/README.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# mime-types
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-The ultimate javascript content-type utility.
-
-Similar to [node-mime](https://github.com/broofa/node-mime), except:
-
-- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`,
- so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.
-- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
-- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db)
-- No `.define()` functionality
-
-Otherwise, the API is compatible.
-
-## Install
-
-```sh
-$ npm install mime-types
-```
-
-## Adding Types
-
-All mime types are based on [mime-db](https://github.com/jshttp/mime-db),
-so open a PR there if you'd like to add mime types.
-
-## API
-
-```js
-var mime = require('mime-types')
-```
-
-All functions return `false` if input is invalid or not found.
-
-### mime.lookup(path)
-
-Lookup the content-type associated with a file.
-
-```js
-mime.lookup('json') // 'application/json'
-mime.lookup('.md') // 'text/x-markdown'
-mime.lookup('file.html') // 'text/html'
-mime.lookup('folder/file.js') // 'application/javascript'
-
-mime.lookup('cats') // false
-```
-
-### mime.contentType(type)
-
-Create a full content-type header given a content-type or extension.
-
-```js
-mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
-mime.contentType('file.json') // 'application/json; charset=utf-8'
-
-// from a full path
-mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'
-```
-
-### mime.extension(type)
-
-Get the default extension for a content-type.
-
-```js
-mime.extension('application/octet-stream') // 'bin'
-```
-
-### mime.charset(type)
-
-Lookup the implied default charset of a content-type.
-
-```js
-mime.charset('text/x-markdown') // 'UTF-8'
-```
-
-### var type = mime.types[extension]
-
-A map of content-types by extension.
-
-### [extensions...] = mime.extensions[type]
-
-A map of extensions by content-type.
-
-## License
-
-[MIT](LICENSE)
-
-[npm-image]: https://img.shields.io/npm/v/mime-types.svg
-[npm-url]: https://npmjs.org/package/mime-types
-[node-version-image]: https://img.shields.io/node/v/mime-types.svg
-[node-version-url]: http://nodejs.org/download/
-[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg
-[travis-url]: https://travis-ci.org/jshttp/mime-types
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/mime-types
-[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg
-[downloads-url]: https://npmjs.org/package/mime-types
diff --git a/node_modules/request/node_modules/mime-types/index.js b/node_modules/request/node_modules/mime-types/index.js
deleted file mode 100644
index b46a202f5..000000000
--- a/node_modules/request/node_modules/mime-types/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-
-var db = require('mime-db')
-
-// types[extension] = type
-exports.types = Object.create(null)
-// extensions[type] = [extensions]
-exports.extensions = Object.create(null)
-
-Object.keys(db).forEach(function (name) {
- var mime = db[name]
- var exts = mime.extensions
- if (!exts || !exts.length) return
- exports.extensions[name] = exts
- exts.forEach(function (ext) {
- exports.types[ext] = name
- })
-})
-
-exports.lookup = function (string) {
- if (!string || typeof string !== "string") return false
- // remove any leading paths, though we should just use path.basename
- string = string.replace(/.*[\.\/\\]/, '').toLowerCase()
- if (!string) return false
- return exports.types[string] || false
-}
-
-exports.extension = function (type) {
- if (!type || typeof type !== "string") return false
- // to do: use media-typer
- type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/)
- if (!type) return false
- var exts = exports.extensions[type[1].toLowerCase()]
- if (!exts || !exts.length) return false
- return exts[0]
-}
-
-// type has to be an exact mime type
-exports.charset = function (type) {
- var mime = db[type]
- if (mime && mime.charset) return mime.charset
-
- // default text/* to utf-8
- if (/^text\//.test(type)) return 'UTF-8'
-
- return false
-}
-
-// backwards compatibility
-exports.charsets = {
- lookup: exports.charset
-}
-
-// to do: maybe use set-type module or something
-exports.contentType = function (type) {
- if (!type || typeof type !== "string") return false
- if (!~type.indexOf('/')) type = exports.lookup(type)
- if (!type) return false
- if (!~type.indexOf('charset')) {
- var charset = exports.charset(type)
- if (charset) type += '; charset=' + charset.toLowerCase()
- }
- return type
-}
diff --git a/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md
deleted file mode 100644
index d559c260d..000000000
--- a/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md
+++ /dev/null
@@ -1,212 +0,0 @@
-1.12.0 / 2015-06-05
-===================
-
- * Add `application/bdoc`
- * Add `application/vnd.hyperdrive+json`
- * Add `application/x-bdoc`
- * Add extension `.rtf` to `text/rtf`
-
-1.11.0 / 2015-05-31
-===================
-
- * Add `audio/wav`
- * Add `audio/wave`
- * Add extension `.litcoffee` to `text/coffeescript`
- * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
- * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
-
-1.10.0 / 2015-05-19
-===================
-
- * Add `application/vnd.balsamiq.bmpr`
- * Add `application/vnd.microsoft.portable-executable`
- * Add `application/x-ns-proxy-autoconfig`
-
-1.9.1 / 2015-04-19
-==================
-
- * Remove `.json` extension from `application/manifest+json`
- - This is causing bugs downstream
-
-1.9.0 / 2015-04-19
-==================
-
- * Add `application/manifest+json`
- * Add `application/vnd.micro+json`
- * Add `image/vnd.zbrush.pcx`
- * Add `image/x-ms-bmp`
-
-1.8.0 / 2015-03-13
-==================
-
- * Add `application/vnd.citationstyles.style+xml`
- * Add `application/vnd.fastcopy-disk-image`
- * Add `application/vnd.gov.sk.xmldatacontainer+xml`
- * Add extension `.jsonld` to `application/ld+json`
-
-1.7.0 / 2015-02-08
-==================
-
- * Add `application/vnd.gerber`
- * Add `application/vnd.msa-disk-image`
-
-1.6.1 / 2015-02-05
-==================
-
- * Community extensions ownership transferred from `node-mime`
-
-1.6.0 / 2015-01-29
-==================
-
- * Add `application/jose`
- * Add `application/jose+json`
- * Add `application/json-seq`
- * Add `application/jwk+json`
- * Add `application/jwk-set+json`
- * Add `application/jwt`
- * Add `application/rdap+json`
- * Add `application/vnd.gov.sk.e-form+xml`
- * Add `application/vnd.ims.imsccv1p3`
-
-1.5.0 / 2014-12-30
-==================
-
- * Add `application/vnd.oracle.resource+json`
- * Fix various invalid MIME type entries
- - `application/mbox+xml`
- - `application/oscp-response`
- - `application/vwg-multiplexed`
- - `audio/g721`
-
-1.4.0 / 2014-12-21
-==================
-
- * Add `application/vnd.ims.imsccv1p2`
- * Fix various invalid MIME type entries
- - `application/vnd-acucobol`
- - `application/vnd-curl`
- - `application/vnd-dart`
- - `application/vnd-dxr`
- - `application/vnd-fdf`
- - `application/vnd-mif`
- - `application/vnd-sema`
- - `application/vnd-wap-wmlc`
- - `application/vnd.adobe.flash-movie`
- - `application/vnd.dece-zip`
- - `application/vnd.dvb_service`
- - `application/vnd.micrografx-igx`
- - `application/vnd.sealed-doc`
- - `application/vnd.sealed-eml`
- - `application/vnd.sealed-mht`
- - `application/vnd.sealed-ppt`
- - `application/vnd.sealed-tiff`
- - `application/vnd.sealed-xls`
- - `application/vnd.sealedmedia.softseal-html`
- - `application/vnd.sealedmedia.softseal-pdf`
- - `application/vnd.wap-slc`
- - `application/vnd.wap-wbxml`
- - `audio/vnd.sealedmedia.softseal-mpeg`
- - `image/vnd-djvu`
- - `image/vnd-svf`
- - `image/vnd-wap-wbmp`
- - `image/vnd.sealed-png`
- - `image/vnd.sealedmedia.softseal-gif`
- - `image/vnd.sealedmedia.softseal-jpg`
- - `model/vnd-dwf`
- - `model/vnd.parasolid.transmit-binary`
- - `model/vnd.parasolid.transmit-text`
- - `text/vnd-a`
- - `text/vnd-curl`
- - `text/vnd.wap-wml`
- * Remove example template MIME types
- - `application/example`
- - `audio/example`
- - `image/example`
- - `message/example`
- - `model/example`
- - `multipart/example`
- - `text/example`
- - `video/example`
-
-1.3.1 / 2014-12-16
-==================
-
- * Fix missing extensions
- - `application/json5`
- - `text/hjson`
-
-1.3.0 / 2014-12-07
-==================
-
- * Add `application/a2l`
- * Add `application/aml`
- * Add `application/atfx`
- * Add `application/atxml`
- * Add `application/cdfx+xml`
- * Add `application/dii`
- * Add `application/json5`
- * Add `application/lxf`
- * Add `application/mf4`
- * Add `application/vnd.apache.thrift.compact`
- * Add `application/vnd.apache.thrift.json`
- * Add `application/vnd.coffeescript`
- * Add `application/vnd.enphase.envoy`
- * Add `application/vnd.ims.imsccv1p1`
- * Add `text/csv-schema`
- * Add `text/hjson`
- * Add `text/markdown`
- * Add `text/yaml`
-
-1.2.0 / 2014-11-09
-==================
-
- * Add `application/cea`
- * Add `application/dit`
- * Add `application/vnd.gov.sk.e-form+zip`
- * Add `application/vnd.tmd.mediaflex.api+xml`
- * Type `application/epub+zip` is now IANA-registered
-
-1.1.2 / 2014-10-23
-==================
-
- * Rebuild database for `application/x-www-form-urlencoded` change
-
-1.1.1 / 2014-10-20
-==================
-
- * Mark `application/x-www-form-urlencoded` as compressible.
-
-1.1.0 / 2014-09-28
-==================
-
- * Add `application/font-woff2`
-
-1.0.3 / 2014-09-25
-==================
-
- * Fix engine requirement in package
-
-1.0.2 / 2014-09-25
-==================
-
- * Add `application/coap-group+json`
- * Add `application/dcd`
- * Add `application/vnd.apache.thrift.binary`
- * Add `image/vnd.tencent.tap`
- * Mark all JSON-derived types as compressible
- * Update `text/vtt` data
-
-1.0.1 / 2014-08-30
-==================
-
- * Fix extension ordering
-
-1.0.0 / 2014-08-30
-==================
-
- * Add `application/atf`
- * Add `application/merge-patch+json`
- * Add `multipart/x-mixed-replace`
- * Add `source: 'apache'` metadata
- * Add `source: 'iana'` metadata
- * Remove badly-assumed charset data
diff --git a/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE b/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE
deleted file mode 100644
index a7ae8ee9b..000000000
--- a/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2014 Jonathan Ong me@jongleberry.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/request/node_modules/mime-types/node_modules/mime-db/README.md b/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md
deleted file mode 100644
index 2c54bb40c..000000000
--- a/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# mime-db
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][travis-image]][travis-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-This is a database of all mime types.
-It consists of a single, public JSON file and does not include any logic,
-allowing it to remain as un-opinionated as possible with an API.
-It aggregates data from the following sources:
-
-- http://www.iana.org/assignments/media-types/media-types.xhtml
-- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
-
-## Installation
-
-```bash
-npm install mime-db
-```
-
-If you're crazy enough to use this in the browser,
-you can just grab the JSON file:
-
-```
-https://cdn.rawgit.com/jshttp/mime-db/master/db.json
-```
-
-## Usage
-
-```js
-var db = require('mime-db');
-
-// grab data on .js files
-var data = db['application/javascript'];
-```
-
-## Data Structure
-
-The JSON file is a map lookup for lowercased mime types.
-Each mime type has the following properties:
-
-- `.source` - where the mime type is defined.
- If not set, it's probably a custom media type.
- - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
- - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
-- `.extensions[]` - known extensions associated with this mime type.
-- `.compressible` - whether a file of this type is can be gzipped.
-- `.charset` - the default charset associated with this type, if any.
-
-If unknown, every property could be `undefined`.
-
-## Contributing
-
-To edit the database, only make PRs against `src/custom.json` or
-`src/custom-suffix.json`.
-
-To update the build, run `npm run update`.
-
-## Adding Custom Media Types
-
-The best way to get new media types included in this library is to register
-them with the IANA. The community registration procedure is outlined in
-[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
-registered with the IANA are automatically pulled into this library.
-
-[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg
-[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg
-[npm-url]: https://npmjs.org/package/mime-db
-[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg
-[travis-url]: https://travis-ci.org/jshttp/mime-db
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
-[node-image]: https://img.shields.io/node/v/mime-db.svg
-[node-url]: http://nodejs.org/download/
diff --git a/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json
deleted file mode 100644
index 5f111bea4..000000000
--- a/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json
+++ /dev/null
@@ -1,6359 +0,0 @@
-{
- "application/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "application/3gpdash-qoe-report+xml": {
- "source": "iana"
- },
- "application/3gpp-ims+xml": {
- "source": "iana"
- },
- "application/a2l": {
- "source": "iana"
- },
- "application/activemessage": {
- "source": "iana"
- },
- "application/alto-costmap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-costmapfilter+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-directory+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointcost+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointcostparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointprop+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointpropparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-error+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-networkmap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-networkmapfilter+json": {
- "source": "iana",
- "compressible": true
- },
- "application/aml": {
- "source": "iana"
- },
- "application/andrew-inset": {
- "source": "iana",
- "extensions": ["ez"]
- },
- "application/applefile": {
- "source": "iana"
- },
- "application/applixware": {
- "source": "apache",
- "extensions": ["aw"]
- },
- "application/atf": {
- "source": "iana"
- },
- "application/atfx": {
- "source": "iana"
- },
- "application/atom+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["atom"]
- },
- "application/atomcat+xml": {
- "source": "iana",
- "extensions": ["atomcat"]
- },
- "application/atomdeleted+xml": {
- "source": "iana"
- },
- "application/atomicmail": {
- "source": "iana"
- },
- "application/atomsvc+xml": {
- "source": "iana",
- "extensions": ["atomsvc"]
- },
- "application/atxml": {
- "source": "iana"
- },
- "application/auth-policy+xml": {
- "source": "iana"
- },
- "application/bacnet-xdd+zip": {
- "source": "iana"
- },
- "application/batch-smtp": {
- "source": "iana"
- },
- "application/bdoc": {
- "compressible": false,
- "extensions": ["bdoc"]
- },
- "application/beep+xml": {
- "source": "iana"
- },
- "application/calendar+json": {
- "source": "iana",
- "compressible": true
- },
- "application/calendar+xml": {
- "source": "iana"
- },
- "application/call-completion": {
- "source": "iana"
- },
- "application/cals-1840": {
- "source": "iana"
- },
- "application/cbor": {
- "source": "iana"
- },
- "application/ccmp+xml": {
- "source": "iana"
- },
- "application/ccxml+xml": {
- "source": "iana",
- "extensions": ["ccxml"]
- },
- "application/cdfx+xml": {
- "source": "iana"
- },
- "application/cdmi-capability": {
- "source": "iana",
- "extensions": ["cdmia"]
- },
- "application/cdmi-container": {
- "source": "iana",
- "extensions": ["cdmic"]
- },
- "application/cdmi-domain": {
- "source": "iana",
- "extensions": ["cdmid"]
- },
- "application/cdmi-object": {
- "source": "iana",
- "extensions": ["cdmio"]
- },
- "application/cdmi-queue": {
- "source": "iana",
- "extensions": ["cdmiq"]
- },
- "application/cea": {
- "source": "iana"
- },
- "application/cea-2018+xml": {
- "source": "iana"
- },
- "application/cellml+xml": {
- "source": "iana"
- },
- "application/cfw": {
- "source": "iana"
- },
- "application/cms": {
- "source": "iana"
- },
- "application/cnrp+xml": {
- "source": "iana"
- },
- "application/coap-group+json": {
- "source": "iana",
- "compressible": true
- },
- "application/commonground": {
- "source": "iana"
- },
- "application/conference-info+xml": {
- "source": "iana"
- },
- "application/cpl+xml": {
- "source": "iana"
- },
- "application/csrattrs": {
- "source": "iana"
- },
- "application/csta+xml": {
- "source": "iana"
- },
- "application/cstadata+xml": {
- "source": "iana"
- },
- "application/cu-seeme": {
- "source": "apache",
- "extensions": ["cu"]
- },
- "application/cybercash": {
- "source": "iana"
- },
- "application/dart": {
- "compressible": true
- },
- "application/dash+xml": {
- "source": "iana",
- "extensions": ["mdp"]
- },
- "application/dashdelta": {
- "source": "iana"
- },
- "application/davmount+xml": {
- "source": "iana",
- "extensions": ["davmount"]
- },
- "application/dca-rft": {
- "source": "iana"
- },
- "application/dcd": {
- "source": "iana"
- },
- "application/dec-dx": {
- "source": "iana"
- },
- "application/dialog-info+xml": {
- "source": "iana"
- },
- "application/dicom": {
- "source": "iana"
- },
- "application/dii": {
- "source": "iana"
- },
- "application/dit": {
- "source": "iana"
- },
- "application/dns": {
- "source": "iana"
- },
- "application/docbook+xml": {
- "source": "apache",
- "extensions": ["dbk"]
- },
- "application/dskpp+xml": {
- "source": "iana"
- },
- "application/dssc+der": {
- "source": "iana",
- "extensions": ["dssc"]
- },
- "application/dssc+xml": {
- "source": "iana",
- "extensions": ["xdssc"]
- },
- "application/dvcs": {
- "source": "iana"
- },
- "application/ecmascript": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ecma"]
- },
- "application/edi-consent": {
- "source": "iana"
- },
- "application/edi-x12": {
- "source": "iana",
- "compressible": false
- },
- "application/edifact": {
- "source": "iana",
- "compressible": false
- },
- "application/emma+xml": {
- "source": "iana",
- "extensions": ["emma"]
- },
- "application/emotionml+xml": {
- "source": "iana"
- },
- "application/encaprtp": {
- "source": "iana"
- },
- "application/epp+xml": {
- "source": "iana"
- },
- "application/epub+zip": {
- "source": "iana",
- "extensions": ["epub"]
- },
- "application/eshop": {
- "source": "iana"
- },
- "application/exi": {
- "source": "iana",
- "extensions": ["exi"]
- },
- "application/fastinfoset": {
- "source": "iana"
- },
- "application/fastsoap": {
- "source": "iana"
- },
- "application/fdt+xml": {
- "source": "iana"
- },
- "application/fits": {
- "source": "iana"
- },
- "application/font-sfnt": {
- "source": "iana"
- },
- "application/font-tdpfr": {
- "source": "iana",
- "extensions": ["pfr"]
- },
- "application/font-woff": {
- "source": "iana",
- "compressible": false,
- "extensions": ["woff"]
- },
- "application/font-woff2": {
- "compressible": false,
- "extensions": ["woff2"]
- },
- "application/framework-attributes+xml": {
- "source": "iana"
- },
- "application/gml+xml": {
- "source": "apache",
- "extensions": ["gml"]
- },
- "application/gpx+xml": {
- "source": "apache",
- "extensions": ["gpx"]
- },
- "application/gxf": {
- "source": "apache",
- "extensions": ["gxf"]
- },
- "application/gzip": {
- "source": "iana",
- "compressible": false
- },
- "application/h224": {
- "source": "iana"
- },
- "application/held+xml": {
- "source": "iana"
- },
- "application/http": {
- "source": "iana"
- },
- "application/hyperstudio": {
- "source": "iana",
- "extensions": ["stk"]
- },
- "application/ibe-key-request+xml": {
- "source": "iana"
- },
- "application/ibe-pkg-reply+xml": {
- "source": "iana"
- },
- "application/ibe-pp-data": {
- "source": "iana"
- },
- "application/iges": {
- "source": "iana"
- },
- "application/im-iscomposing+xml": {
- "source": "iana"
- },
- "application/index": {
- "source": "iana"
- },
- "application/index.cmd": {
- "source": "iana"
- },
- "application/index.obj": {
- "source": "iana"
- },
- "application/index.response": {
- "source": "iana"
- },
- "application/index.vnd": {
- "source": "iana"
- },
- "application/inkml+xml": {
- "source": "iana",
- "extensions": ["ink","inkml"]
- },
- "application/iotp": {
- "source": "iana"
- },
- "application/ipfix": {
- "source": "iana",
- "extensions": ["ipfix"]
- },
- "application/ipp": {
- "source": "iana"
- },
- "application/isup": {
- "source": "iana"
- },
- "application/its+xml": {
- "source": "iana"
- },
- "application/java-archive": {
- "source": "apache",
- "compressible": false,
- "extensions": ["jar"]
- },
- "application/java-serialized-object": {
- "source": "apache",
- "compressible": false,
- "extensions": ["ser"]
- },
- "application/java-vm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["class"]
- },
- "application/javascript": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["js"]
- },
- "application/jose": {
- "source": "iana"
- },
- "application/jose+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jrd+json": {
- "source": "iana",
- "compressible": true
- },
- "application/json": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["json","map"]
- },
- "application/json-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/json-seq": {
- "source": "iana"
- },
- "application/json5": {
- "extensions": ["json5"]
- },
- "application/jsonml+json": {
- "source": "apache",
- "compressible": true,
- "extensions": ["jsonml"]
- },
- "application/jwk+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jwk-set+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jwt": {
- "source": "iana"
- },
- "application/kpml-request+xml": {
- "source": "iana"
- },
- "application/kpml-response+xml": {
- "source": "iana"
- },
- "application/ld+json": {
- "source": "iana",
- "compressible": true,
- "extensions": ["jsonld"]
- },
- "application/link-format": {
- "source": "iana"
- },
- "application/load-control+xml": {
- "source": "iana"
- },
- "application/lost+xml": {
- "source": "iana",
- "extensions": ["lostxml"]
- },
- "application/lostsync+xml": {
- "source": "iana"
- },
- "application/lxf": {
- "source": "iana"
- },
- "application/mac-binhex40": {
- "source": "iana",
- "extensions": ["hqx"]
- },
- "application/mac-compactpro": {
- "source": "apache",
- "extensions": ["cpt"]
- },
- "application/macwriteii": {
- "source": "iana"
- },
- "application/mads+xml": {
- "source": "iana",
- "extensions": ["mads"]
- },
- "application/manifest+json": {
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["webmanifest"]
- },
- "application/marc": {
- "source": "iana",
- "extensions": ["mrc"]
- },
- "application/marcxml+xml": {
- "source": "iana",
- "extensions": ["mrcx"]
- },
- "application/mathematica": {
- "source": "iana",
- "extensions": ["ma","nb","mb"]
- },
- "application/mathml+xml": {
- "source": "iana",
- "extensions": ["mathml"]
- },
- "application/mathml-content+xml": {
- "source": "iana"
- },
- "application/mathml-presentation+xml": {
- "source": "iana"
- },
- "application/mbms-associated-procedure-description+xml": {
- "source": "iana"
- },
- "application/mbms-deregister+xml": {
- "source": "iana"
- },
- "application/mbms-envelope+xml": {
- "source": "iana"
- },
- "application/mbms-msk+xml": {
- "source": "iana"
- },
- "application/mbms-msk-response+xml": {
- "source": "iana"
- },
- "application/mbms-protection-description+xml": {
- "source": "iana"
- },
- "application/mbms-reception-report+xml": {
- "source": "iana"
- },
- "application/mbms-register+xml": {
- "source": "iana"
- },
- "application/mbms-register-response+xml": {
- "source": "iana"
- },
- "application/mbms-schedule+xml": {
- "source": "iana"
- },
- "application/mbms-user-service-description+xml": {
- "source": "iana"
- },
- "application/mbox": {
- "source": "iana",
- "extensions": ["mbox"]
- },
- "application/media-policy-dataset+xml": {
- "source": "iana"
- },
- "application/media_control+xml": {
- "source": "iana"
- },
- "application/mediaservercontrol+xml": {
- "source": "iana",
- "extensions": ["mscml"]
- },
- "application/merge-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/metalink+xml": {
- "source": "apache",
- "extensions": ["metalink"]
- },
- "application/metalink4+xml": {
- "source": "iana",
- "extensions": ["meta4"]
- },
- "application/mets+xml": {
- "source": "iana",
- "extensions": ["mets"]
- },
- "application/mf4": {
- "source": "iana"
- },
- "application/mikey": {
- "source": "iana"
- },
- "application/mods+xml": {
- "source": "iana",
- "extensions": ["mods"]
- },
- "application/moss-keys": {
- "source": "iana"
- },
- "application/moss-signature": {
- "source": "iana"
- },
- "application/mosskey-data": {
- "source": "iana"
- },
- "application/mosskey-request": {
- "source": "iana"
- },
- "application/mp21": {
- "source": "iana",
- "extensions": ["m21","mp21"]
- },
- "application/mp4": {
- "source": "iana",
- "extensions": ["mp4s","m4p"]
- },
- "application/mpeg4-generic": {
- "source": "iana"
- },
- "application/mpeg4-iod": {
- "source": "iana"
- },
- "application/mpeg4-iod-xmt": {
- "source": "iana"
- },
- "application/mrb-consumer+xml": {
- "source": "iana"
- },
- "application/mrb-publish+xml": {
- "source": "iana"
- },
- "application/msc-ivr+xml": {
- "source": "iana"
- },
- "application/msc-mixer+xml": {
- "source": "iana"
- },
- "application/msword": {
- "source": "iana",
- "compressible": false,
- "extensions": ["doc","dot"]
- },
- "application/mxf": {
- "source": "iana",
- "extensions": ["mxf"]
- },
- "application/nasdata": {
- "source": "iana"
- },
- "application/news-checkgroups": {
- "source": "iana"
- },
- "application/news-groupinfo": {
- "source": "iana"
- },
- "application/news-transmission": {
- "source": "iana"
- },
- "application/nlsml+xml": {
- "source": "iana"
- },
- "application/nss": {
- "source": "iana"
- },
- "application/ocsp-request": {
- "source": "iana"
- },
- "application/ocsp-response": {
- "source": "iana"
- },
- "application/octet-stream": {
- "source": "iana",
- "compressible": false,
- "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","buffer"]
- },
- "application/oda": {
- "source": "iana",
- "extensions": ["oda"]
- },
- "application/odx": {
- "source": "iana"
- },
- "application/oebps-package+xml": {
- "source": "iana",
- "extensions": ["opf"]
- },
- "application/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ogx"]
- },
- "application/omdoc+xml": {
- "source": "apache",
- "extensions": ["omdoc"]
- },
- "application/onenote": {
- "source": "apache",
- "extensions": ["onetoc","onetoc2","onetmp","onepkg"]
- },
- "application/oxps": {
- "source": "iana",
- "extensions": ["oxps"]
- },
- "application/p2p-overlay+xml": {
- "source": "iana"
- },
- "application/parityfec": {
- "source": "iana"
- },
- "application/patch-ops-error+xml": {
- "source": "iana",
- "extensions": ["xer"]
- },
- "application/pdf": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pdf"]
- },
- "application/pdx": {
- "source": "iana"
- },
- "application/pgp-encrypted": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pgp"]
- },
- "application/pgp-keys": {
- "source": "iana"
- },
- "application/pgp-signature": {
- "source": "iana",
- "extensions": ["asc","sig"]
- },
- "application/pics-rules": {
- "source": "apache",
- "extensions": ["prf"]
- },
- "application/pidf+xml": {
- "source": "iana"
- },
- "application/pidf-diff+xml": {
- "source": "iana"
- },
- "application/pkcs10": {
- "source": "iana",
- "extensions": ["p10"]
- },
- "application/pkcs7-mime": {
- "source": "iana",
- "extensions": ["p7m","p7c"]
- },
- "application/pkcs7-signature": {
- "source": "iana",
- "extensions": ["p7s"]
- },
- "application/pkcs8": {
- "source": "iana",
- "extensions": ["p8"]
- },
- "application/pkix-attr-cert": {
- "source": "iana",
- "extensions": ["ac"]
- },
- "application/pkix-cert": {
- "source": "iana",
- "extensions": ["cer"]
- },
- "application/pkix-crl": {
- "source": "iana",
- "extensions": ["crl"]
- },
- "application/pkix-pkipath": {
- "source": "iana",
- "extensions": ["pkipath"]
- },
- "application/pkixcmp": {
- "source": "iana",
- "extensions": ["pki"]
- },
- "application/pls+xml": {
- "source": "iana",
- "extensions": ["pls"]
- },
- "application/poc-settings+xml": {
- "source": "iana"
- },
- "application/postscript": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ai","eps","ps"]
- },
- "application/provenance+xml": {
- "source": "iana"
- },
- "application/prs.alvestrand.titrax-sheet": {
- "source": "iana"
- },
- "application/prs.cww": {
- "source": "iana",
- "extensions": ["cww"]
- },
- "application/prs.hpub+zip": {
- "source": "iana"
- },
- "application/prs.nprend": {
- "source": "iana"
- },
- "application/prs.plucker": {
- "source": "iana"
- },
- "application/prs.rdf-xml-crypt": {
- "source": "iana"
- },
- "application/prs.xsf+xml": {
- "source": "iana"
- },
- "application/pskc+xml": {
- "source": "iana",
- "extensions": ["pskcxml"]
- },
- "application/qsig": {
- "source": "iana"
- },
- "application/raptorfec": {
- "source": "iana"
- },
- "application/rdap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/rdf+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rdf"]
- },
- "application/reginfo+xml": {
- "source": "iana",
- "extensions": ["rif"]
- },
- "application/relax-ng-compact-syntax": {
- "source": "iana",
- "extensions": ["rnc"]
- },
- "application/remote-printing": {
- "source": "iana"
- },
- "application/reputon+json": {
- "source": "iana",
- "compressible": true
- },
- "application/resource-lists+xml": {
- "source": "iana",
- "extensions": ["rl"]
- },
- "application/resource-lists-diff+xml": {
- "source": "iana",
- "extensions": ["rld"]
- },
- "application/riscos": {
- "source": "iana"
- },
- "application/rlmi+xml": {
- "source": "iana"
- },
- "application/rls-services+xml": {
- "source": "iana",
- "extensions": ["rs"]
- },
- "application/rpki-ghostbusters": {
- "source": "iana",
- "extensions": ["gbr"]
- },
- "application/rpki-manifest": {
- "source": "iana",
- "extensions": ["mft"]
- },
- "application/rpki-roa": {
- "source": "iana",
- "extensions": ["roa"]
- },
- "application/rpki-updown": {
- "source": "iana"
- },
- "application/rsd+xml": {
- "source": "apache",
- "extensions": ["rsd"]
- },
- "application/rss+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["rss"]
- },
- "application/rtf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtf"]
- },
- "application/rtploopback": {
- "source": "iana"
- },
- "application/rtx": {
- "source": "iana"
- },
- "application/samlassertion+xml": {
- "source": "iana"
- },
- "application/samlmetadata+xml": {
- "source": "iana"
- },
- "application/sbml+xml": {
- "source": "iana",
- "extensions": ["sbml"]
- },
- "application/scaip+xml": {
- "source": "iana"
- },
- "application/scvp-cv-request": {
- "source": "iana",
- "extensions": ["scq"]
- },
- "application/scvp-cv-response": {
- "source": "iana",
- "extensions": ["scs"]
- },
- "application/scvp-vp-request": {
- "source": "iana",
- "extensions": ["spq"]
- },
- "application/scvp-vp-response": {
- "source": "iana",
- "extensions": ["spp"]
- },
- "application/sdp": {
- "source": "iana",
- "extensions": ["sdp"]
- },
- "application/sep+xml": {
- "source": "iana"
- },
- "application/sep-exi": {
- "source": "iana"
- },
- "application/session-info": {
- "source": "iana"
- },
- "application/set-payment": {
- "source": "iana"
- },
- "application/set-payment-initiation": {
- "source": "iana",
- "extensions": ["setpay"]
- },
- "application/set-registration": {
- "source": "iana"
- },
- "application/set-registration-initiation": {
- "source": "iana",
- "extensions": ["setreg"]
- },
- "application/sgml": {
- "source": "iana"
- },
- "application/sgml-open-catalog": {
- "source": "iana"
- },
- "application/shf+xml": {
- "source": "iana",
- "extensions": ["shf"]
- },
- "application/sieve": {
- "source": "iana"
- },
- "application/simple-filter+xml": {
- "source": "iana"
- },
- "application/simple-message-summary": {
- "source": "iana"
- },
- "application/simplesymbolcontainer": {
- "source": "iana"
- },
- "application/slate": {
- "source": "iana"
- },
- "application/smil": {
- "source": "iana"
- },
- "application/smil+xml": {
- "source": "iana",
- "extensions": ["smi","smil"]
- },
- "application/smpte336m": {
- "source": "iana"
- },
- "application/soap+fastinfoset": {
- "source": "iana"
- },
- "application/soap+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/sparql-query": {
- "source": "iana",
- "extensions": ["rq"]
- },
- "application/sparql-results+xml": {
- "source": "iana",
- "extensions": ["srx"]
- },
- "application/spirits-event+xml": {
- "source": "iana"
- },
- "application/sql": {
- "source": "iana"
- },
- "application/srgs": {
- "source": "iana",
- "extensions": ["gram"]
- },
- "application/srgs+xml": {
- "source": "iana",
- "extensions": ["grxml"]
- },
- "application/sru+xml": {
- "source": "iana",
- "extensions": ["sru"]
- },
- "application/ssdl+xml": {
- "source": "apache",
- "extensions": ["ssdl"]
- },
- "application/ssml+xml": {
- "source": "iana",
- "extensions": ["ssml"]
- },
- "application/tamp-apex-update": {
- "source": "iana"
- },
- "application/tamp-apex-update-confirm": {
- "source": "iana"
- },
- "application/tamp-community-update": {
- "source": "iana"
- },
- "application/tamp-community-update-confirm": {
- "source": "iana"
- },
- "application/tamp-error": {
- "source": "iana"
- },
- "application/tamp-sequence-adjust": {
- "source": "iana"
- },
- "application/tamp-sequence-adjust-confirm": {
- "source": "iana"
- },
- "application/tamp-status-query": {
- "source": "iana"
- },
- "application/tamp-status-response": {
- "source": "iana"
- },
- "application/tamp-update": {
- "source": "iana"
- },
- "application/tamp-update-confirm": {
- "source": "iana"
- },
- "application/tar": {
- "compressible": true
- },
- "application/tei+xml": {
- "source": "iana",
- "extensions": ["tei","teicorpus"]
- },
- "application/thraud+xml": {
- "source": "iana",
- "extensions": ["tfi"]
- },
- "application/timestamp-query": {
- "source": "iana"
- },
- "application/timestamp-reply": {
- "source": "iana"
- },
- "application/timestamped-data": {
- "source": "iana",
- "extensions": ["tsd"]
- },
- "application/ttml+xml": {
- "source": "iana"
- },
- "application/tve-trigger": {
- "source": "iana"
- },
- "application/ulpfec": {
- "source": "iana"
- },
- "application/urc-grpsheet+xml": {
- "source": "iana"
- },
- "application/urc-ressheet+xml": {
- "source": "iana"
- },
- "application/urc-targetdesc+xml": {
- "source": "iana"
- },
- "application/urc-uisocketdesc+xml": {
- "source": "iana"
- },
- "application/vcard+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vcard+xml": {
- "source": "iana"
- },
- "application/vemmi": {
- "source": "iana"
- },
- "application/vividence.scriptfile": {
- "source": "apache"
- },
- "application/vnd.3gpp.bsf+xml": {
- "source": "iana"
- },
- "application/vnd.3gpp.pic-bw-large": {
- "source": "iana",
- "extensions": ["plb"]
- },
- "application/vnd.3gpp.pic-bw-small": {
- "source": "iana",
- "extensions": ["psb"]
- },
- "application/vnd.3gpp.pic-bw-var": {
- "source": "iana",
- "extensions": ["pvb"]
- },
- "application/vnd.3gpp.sms": {
- "source": "iana"
- },
- "application/vnd.3gpp2.bcmcsinfo+xml": {
- "source": "iana"
- },
- "application/vnd.3gpp2.sms": {
- "source": "iana"
- },
- "application/vnd.3gpp2.tcap": {
- "source": "iana",
- "extensions": ["tcap"]
- },
- "application/vnd.3m.post-it-notes": {
- "source": "iana",
- "extensions": ["pwn"]
- },
- "application/vnd.accpac.simply.aso": {
- "source": "iana",
- "extensions": ["aso"]
- },
- "application/vnd.accpac.simply.imp": {
- "source": "iana",
- "extensions": ["imp"]
- },
- "application/vnd.acucobol": {
- "source": "iana",
- "extensions": ["acu"]
- },
- "application/vnd.acucorp": {
- "source": "iana",
- "extensions": ["atc","acutc"]
- },
- "application/vnd.adobe.air-application-installer-package+zip": {
- "source": "apache",
- "extensions": ["air"]
- },
- "application/vnd.adobe.flash.movie": {
- "source": "iana"
- },
- "application/vnd.adobe.formscentral.fcdt": {
- "source": "iana",
- "extensions": ["fcdt"]
- },
- "application/vnd.adobe.fxp": {
- "source": "iana",
- "extensions": ["fxp","fxpl"]
- },
- "application/vnd.adobe.partial-upload": {
- "source": "iana"
- },
- "application/vnd.adobe.xdp+xml": {
- "source": "iana",
- "extensions": ["xdp"]
- },
- "application/vnd.adobe.xfdf": {
- "source": "iana",
- "extensions": ["xfdf"]
- },
- "application/vnd.aether.imp": {
- "source": "iana"
- },
- "application/vnd.ah-barcode": {
- "source": "iana"
- },
- "application/vnd.ahead.space": {
- "source": "iana",
- "extensions": ["ahead"]
- },
- "application/vnd.airzip.filesecure.azf": {
- "source": "iana",
- "extensions": ["azf"]
- },
- "application/vnd.airzip.filesecure.azs": {
- "source": "iana",
- "extensions": ["azs"]
- },
- "application/vnd.amazon.ebook": {
- "source": "apache",
- "extensions": ["azw"]
- },
- "application/vnd.americandynamics.acc": {
- "source": "iana",
- "extensions": ["acc"]
- },
- "application/vnd.amiga.ami": {
- "source": "iana",
- "extensions": ["ami"]
- },
- "application/vnd.amundsen.maze+xml": {
- "source": "iana"
- },
- "application/vnd.android.package-archive": {
- "source": "apache",
- "compressible": false,
- "extensions": ["apk"]
- },
- "application/vnd.anser-web-certificate-issue-initiation": {
- "source": "iana",
- "extensions": ["cii"]
- },
- "application/vnd.anser-web-funds-transfer-initiation": {
- "source": "apache",
- "extensions": ["fti"]
- },
- "application/vnd.antix.game-component": {
- "source": "iana",
- "extensions": ["atx"]
- },
- "application/vnd.apache.thrift.binary": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.compact": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.json": {
- "source": "iana"
- },
- "application/vnd.api+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.apple.installer+xml": {
- "source": "iana",
- "extensions": ["mpkg"]
- },
- "application/vnd.apple.mpegurl": {
- "source": "iana",
- "extensions": ["m3u8"]
- },
- "application/vnd.arastra.swi": {
- "source": "iana"
- },
- "application/vnd.aristanetworks.swi": {
- "source": "iana",
- "extensions": ["swi"]
- },
- "application/vnd.artsquare": {
- "source": "iana"
- },
- "application/vnd.astraea-software.iota": {
- "source": "iana",
- "extensions": ["iota"]
- },
- "application/vnd.audiograph": {
- "source": "iana",
- "extensions": ["aep"]
- },
- "application/vnd.autopackage": {
- "source": "iana"
- },
- "application/vnd.avistar+xml": {
- "source": "iana"
- },
- "application/vnd.balsamiq.bmml+xml": {
- "source": "iana"
- },
- "application/vnd.balsamiq.bmpr": {
- "source": "iana"
- },
- "application/vnd.bekitzur-stech+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.blueice.multipass": {
- "source": "iana",
- "extensions": ["mpm"]
- },
- "application/vnd.bluetooth.ep.oob": {
- "source": "iana"
- },
- "application/vnd.bluetooth.le.oob": {
- "source": "iana"
- },
- "application/vnd.bmi": {
- "source": "iana",
- "extensions": ["bmi"]
- },
- "application/vnd.businessobjects": {
- "source": "iana",
- "extensions": ["rep"]
- },
- "application/vnd.cab-jscript": {
- "source": "iana"
- },
- "application/vnd.canon-cpdl": {
- "source": "iana"
- },
- "application/vnd.canon-lips": {
- "source": "iana"
- },
- "application/vnd.cendio.thinlinc.clientconf": {
- "source": "iana"
- },
- "application/vnd.century-systems.tcp_stream": {
- "source": "iana"
- },
- "application/vnd.chemdraw+xml": {
- "source": "iana",
- "extensions": ["cdxml"]
- },
- "application/vnd.chipnuts.karaoke-mmd": {
- "source": "iana",
- "extensions": ["mmd"]
- },
- "application/vnd.cinderella": {
- "source": "iana",
- "extensions": ["cdy"]
- },
- "application/vnd.cirpack.isdn-ext": {
- "source": "iana"
- },
- "application/vnd.citationstyles.style+xml": {
- "source": "iana"
- },
- "application/vnd.claymore": {
- "source": "iana",
- "extensions": ["cla"]
- },
- "application/vnd.cloanto.rp9": {
- "source": "iana",
- "extensions": ["rp9"]
- },
- "application/vnd.clonk.c4group": {
- "source": "iana",
- "extensions": ["c4g","c4d","c4f","c4p","c4u"]
- },
- "application/vnd.cluetrust.cartomobile-config": {
- "source": "iana",
- "extensions": ["c11amc"]
- },
- "application/vnd.cluetrust.cartomobile-config-pkg": {
- "source": "iana",
- "extensions": ["c11amz"]
- },
- "application/vnd.coffeescript": {
- "source": "iana"
- },
- "application/vnd.collection+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.collection.doc+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.collection.next+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.commerce-battelle": {
- "source": "iana"
- },
- "application/vnd.commonspace": {
- "source": "iana",
- "extensions": ["csp"]
- },
- "application/vnd.contact.cmsg": {
- "source": "iana",
- "extensions": ["cdbcmsg"]
- },
- "application/vnd.cosmocaller": {
- "source": "iana",
- "extensions": ["cmc"]
- },
- "application/vnd.crick.clicker": {
- "source": "iana",
- "extensions": ["clkx"]
- },
- "application/vnd.crick.clicker.keyboard": {
- "source": "iana",
- "extensions": ["clkk"]
- },
- "application/vnd.crick.clicker.palette": {
- "source": "iana",
- "extensions": ["clkp"]
- },
- "application/vnd.crick.clicker.template": {
- "source": "iana",
- "extensions": ["clkt"]
- },
- "application/vnd.crick.clicker.wordbank": {
- "source": "iana",
- "extensions": ["clkw"]
- },
- "application/vnd.criticaltools.wbs+xml": {
- "source": "iana",
- "extensions": ["wbs"]
- },
- "application/vnd.ctc-posml": {
- "source": "iana",
- "extensions": ["pml"]
- },
- "application/vnd.ctct.ws+xml": {
- "source": "iana"
- },
- "application/vnd.cups-pdf": {
- "source": "iana"
- },
- "application/vnd.cups-postscript": {
- "source": "iana"
- },
- "application/vnd.cups-ppd": {
- "source": "iana",
- "extensions": ["ppd"]
- },
- "application/vnd.cups-raster": {
- "source": "iana"
- },
- "application/vnd.cups-raw": {
- "source": "iana"
- },
- "application/vnd.curl": {
- "source": "iana"
- },
- "application/vnd.curl.car": {
- "source": "apache",
- "extensions": ["car"]
- },
- "application/vnd.curl.pcurl": {
- "source": "apache",
- "extensions": ["pcurl"]
- },
- "application/vnd.cyan.dean.root+xml": {
- "source": "iana"
- },
- "application/vnd.cybank": {
- "source": "iana"
- },
- "application/vnd.dart": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dart"]
- },
- "application/vnd.data-vision.rdz": {
- "source": "iana",
- "extensions": ["rdz"]
- },
- "application/vnd.debian.binary-package": {
- "source": "iana"
- },
- "application/vnd.dece.data": {
- "source": "iana",
- "extensions": ["uvf","uvvf","uvd","uvvd"]
- },
- "application/vnd.dece.ttml+xml": {
- "source": "iana",
- "extensions": ["uvt","uvvt"]
- },
- "application/vnd.dece.unspecified": {
- "source": "iana",
- "extensions": ["uvx","uvvx"]
- },
- "application/vnd.dece.zip": {
- "source": "iana",
- "extensions": ["uvz","uvvz"]
- },
- "application/vnd.denovo.fcselayout-link": {
- "source": "iana",
- "extensions": ["fe_launch"]
- },
- "application/vnd.desmume-movie": {
- "source": "iana"
- },
- "application/vnd.dir-bi.plate-dl-nosuffix": {
- "source": "iana"
- },
- "application/vnd.dm.delegation+xml": {
- "source": "iana"
- },
- "application/vnd.dna": {
- "source": "iana",
- "extensions": ["dna"]
- },
- "application/vnd.document+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dolby.mlp": {
- "source": "apache",
- "extensions": ["mlp"]
- },
- "application/vnd.dolby.mobile.1": {
- "source": "iana"
- },
- "application/vnd.dolby.mobile.2": {
- "source": "iana"
- },
- "application/vnd.doremir.scorecloud-binary-document": {
- "source": "iana"
- },
- "application/vnd.dpgraph": {
- "source": "iana",
- "extensions": ["dpg"]
- },
- "application/vnd.dreamfactory": {
- "source": "iana",
- "extensions": ["dfac"]
- },
- "application/vnd.ds-keypoint": {
- "source": "apache",
- "extensions": ["kpxx"]
- },
- "application/vnd.dtg.local": {
- "source": "iana"
- },
- "application/vnd.dtg.local.flash": {
- "source": "iana"
- },
- "application/vnd.dtg.local.html": {
- "source": "iana"
- },
- "application/vnd.dvb.ait": {
- "source": "iana",
- "extensions": ["ait"]
- },
- "application/vnd.dvb.dvbj": {
- "source": "iana"
- },
- "application/vnd.dvb.esgcontainer": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcdftnotifaccess": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgaccess": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgaccess2": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgpdd": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcroaming": {
- "source": "iana"
- },
- "application/vnd.dvb.iptv.alfec-base": {
- "source": "iana"
- },
- "application/vnd.dvb.iptv.alfec-enhancement": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-aggregate-root+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-container+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-generic+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-ia-msglist+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-ia-registration-request+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-ia-registration-response+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-init+xml": {
- "source": "iana"
- },
- "application/vnd.dvb.pfr": {
- "source": "iana"
- },
- "application/vnd.dvb.service": {
- "source": "iana",
- "extensions": ["svc"]
- },
- "application/vnd.dxr": {
- "source": "iana"
- },
- "application/vnd.dynageo": {
- "source": "iana",
- "extensions": ["geo"]
- },
- "application/vnd.dzr": {
- "source": "iana"
- },
- "application/vnd.easykaraoke.cdgdownload": {
- "source": "iana"
- },
- "application/vnd.ecdis-update": {
- "source": "iana"
- },
- "application/vnd.ecowin.chart": {
- "source": "iana",
- "extensions": ["mag"]
- },
- "application/vnd.ecowin.filerequest": {
- "source": "iana"
- },
- "application/vnd.ecowin.fileupdate": {
- "source": "iana"
- },
- "application/vnd.ecowin.series": {
- "source": "iana"
- },
- "application/vnd.ecowin.seriesrequest": {
- "source": "iana"
- },
- "application/vnd.ecowin.seriesupdate": {
- "source": "iana"
- },
- "application/vnd.emclient.accessrequest+xml": {
- "source": "iana"
- },
- "application/vnd.enliven": {
- "source": "iana",
- "extensions": ["nml"]
- },
- "application/vnd.enphase.envoy": {
- "source": "iana"
- },
- "application/vnd.eprints.data+xml": {
- "source": "iana"
- },
- "application/vnd.epson.esf": {
- "source": "iana",
- "extensions": ["esf"]
- },
- "application/vnd.epson.msf": {
- "source": "iana",
- "extensions": ["msf"]
- },
- "application/vnd.epson.quickanime": {
- "source": "iana",
- "extensions": ["qam"]
- },
- "application/vnd.epson.salt": {
- "source": "iana",
- "extensions": ["slt"]
- },
- "application/vnd.epson.ssf": {
- "source": "iana",
- "extensions": ["ssf"]
- },
- "application/vnd.ericsson.quickcall": {
- "source": "iana"
- },
- "application/vnd.eszigno3+xml": {
- "source": "iana",
- "extensions": ["es3","et3"]
- },
- "application/vnd.etsi.aoc+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.asic-e+zip": {
- "source": "iana"
- },
- "application/vnd.etsi.asic-s+zip": {
- "source": "iana"
- },
- "application/vnd.etsi.cug+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvcommand+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvdiscovery+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvprofile+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsad-bc+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsad-cod+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsad-npvr+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvservice+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvsync+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.iptvueprofile+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.mcid+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.mheg5": {
- "source": "iana"
- },
- "application/vnd.etsi.overload-control-policy-dataset+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.pstn+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.sci+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.simservs+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.timestamp-token": {
- "source": "iana"
- },
- "application/vnd.etsi.tsl+xml": {
- "source": "iana"
- },
- "application/vnd.etsi.tsl.der": {
- "source": "iana"
- },
- "application/vnd.eudora.data": {
- "source": "iana"
- },
- "application/vnd.ezpix-album": {
- "source": "iana",
- "extensions": ["ez2"]
- },
- "application/vnd.ezpix-package": {
- "source": "iana",
- "extensions": ["ez3"]
- },
- "application/vnd.f-secure.mobile": {
- "source": "iana"
- },
- "application/vnd.fastcopy-disk-image": {
- "source": "iana"
- },
- "application/vnd.fdf": {
- "source": "iana",
- "extensions": ["fdf"]
- },
- "application/vnd.fdsn.mseed": {
- "source": "iana",
- "extensions": ["mseed"]
- },
- "application/vnd.fdsn.seed": {
- "source": "iana",
- "extensions": ["seed","dataless"]
- },
- "application/vnd.ffsns": {
- "source": "iana"
- },
- "application/vnd.fints": {
- "source": "iana"
- },
- "application/vnd.flographit": {
- "source": "iana",
- "extensions": ["gph"]
- },
- "application/vnd.fluxtime.clip": {
- "source": "iana",
- "extensions": ["ftc"]
- },
- "application/vnd.font-fontforge-sfd": {
- "source": "iana"
- },
- "application/vnd.framemaker": {
- "source": "iana",
- "extensions": ["fm","frame","maker","book"]
- },
- "application/vnd.frogans.fnc": {
- "source": "iana",
- "extensions": ["fnc"]
- },
- "application/vnd.frogans.ltf": {
- "source": "iana",
- "extensions": ["ltf"]
- },
- "application/vnd.fsc.weblaunch": {
- "source": "iana",
- "extensions": ["fsc"]
- },
- "application/vnd.fujitsu.oasys": {
- "source": "iana",
- "extensions": ["oas"]
- },
- "application/vnd.fujitsu.oasys2": {
- "source": "iana",
- "extensions": ["oa2"]
- },
- "application/vnd.fujitsu.oasys3": {
- "source": "iana",
- "extensions": ["oa3"]
- },
- "application/vnd.fujitsu.oasysgp": {
- "source": "iana",
- "extensions": ["fg5"]
- },
- "application/vnd.fujitsu.oasysprs": {
- "source": "iana",
- "extensions": ["bh2"]
- },
- "application/vnd.fujixerox.art-ex": {
- "source": "iana"
- },
- "application/vnd.fujixerox.art4": {
- "source": "iana"
- },
- "application/vnd.fujixerox.ddd": {
- "source": "iana",
- "extensions": ["ddd"]
- },
- "application/vnd.fujixerox.docuworks": {
- "source": "iana",
- "extensions": ["xdw"]
- },
- "application/vnd.fujixerox.docuworks.binder": {
- "source": "iana",
- "extensions": ["xbd"]
- },
- "application/vnd.fujixerox.docuworks.container": {
- "source": "iana"
- },
- "application/vnd.fujixerox.hbpl": {
- "source": "iana"
- },
- "application/vnd.fut-misnet": {
- "source": "iana"
- },
- "application/vnd.fuzzysheet": {
- "source": "iana",
- "extensions": ["fzs"]
- },
- "application/vnd.genomatix.tuxedo": {
- "source": "iana",
- "extensions": ["txd"]
- },
- "application/vnd.geo+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.geocube+xml": {
- "source": "iana"
- },
- "application/vnd.geogebra.file": {
- "source": "iana",
- "extensions": ["ggb"]
- },
- "application/vnd.geogebra.tool": {
- "source": "iana",
- "extensions": ["ggt"]
- },
- "application/vnd.geometry-explorer": {
- "source": "iana",
- "extensions": ["gex","gre"]
- },
- "application/vnd.geonext": {
- "source": "iana",
- "extensions": ["gxt"]
- },
- "application/vnd.geoplan": {
- "source": "iana",
- "extensions": ["g2w"]
- },
- "application/vnd.geospace": {
- "source": "iana",
- "extensions": ["g3w"]
- },
- "application/vnd.gerber": {
- "source": "iana"
- },
- "application/vnd.globalplatform.card-content-mgt": {
- "source": "iana"
- },
- "application/vnd.globalplatform.card-content-mgt-response": {
- "source": "iana"
- },
- "application/vnd.gmx": {
- "source": "iana",
- "extensions": ["gmx"]
- },
- "application/vnd.google-earth.kml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["kml"]
- },
- "application/vnd.google-earth.kmz": {
- "source": "iana",
- "compressible": false,
- "extensions": ["kmz"]
- },
- "application/vnd.gov.sk.e-form+xml": {
- "source": "iana"
- },
- "application/vnd.gov.sk.e-form+zip": {
- "source": "iana"
- },
- "application/vnd.gov.sk.xmldatacontainer+xml": {
- "source": "iana"
- },
- "application/vnd.grafeq": {
- "source": "iana",
- "extensions": ["gqf","gqs"]
- },
- "application/vnd.gridmp": {
- "source": "iana"
- },
- "application/vnd.groove-account": {
- "source": "iana",
- "extensions": ["gac"]
- },
- "application/vnd.groove-help": {
- "source": "iana",
- "extensions": ["ghf"]
- },
- "application/vnd.groove-identity-message": {
- "source": "iana",
- "extensions": ["gim"]
- },
- "application/vnd.groove-injector": {
- "source": "iana",
- "extensions": ["grv"]
- },
- "application/vnd.groove-tool-message": {
- "source": "iana",
- "extensions": ["gtm"]
- },
- "application/vnd.groove-tool-template": {
- "source": "iana",
- "extensions": ["tpl"]
- },
- "application/vnd.groove-vcard": {
- "source": "iana",
- "extensions": ["vcg"]
- },
- "application/vnd.hal+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hal+xml": {
- "source": "iana",
- "extensions": ["hal"]
- },
- "application/vnd.handheld-entertainment+xml": {
- "source": "iana",
- "extensions": ["zmm"]
- },
- "application/vnd.hbci": {
- "source": "iana",
- "extensions": ["hbci"]
- },
- "application/vnd.hcl-bireports": {
- "source": "iana"
- },
- "application/vnd.heroku+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hhe.lesson-player": {
- "source": "iana",
- "extensions": ["les"]
- },
- "application/vnd.hp-hpgl": {
- "source": "iana",
- "extensions": ["hpgl"]
- },
- "application/vnd.hp-hpid": {
- "source": "iana",
- "extensions": ["hpid"]
- },
- "application/vnd.hp-hps": {
- "source": "iana",
- "extensions": ["hps"]
- },
- "application/vnd.hp-jlyt": {
- "source": "iana",
- "extensions": ["jlt"]
- },
- "application/vnd.hp-pcl": {
- "source": "iana",
- "extensions": ["pcl"]
- },
- "application/vnd.hp-pclxl": {
- "source": "iana",
- "extensions": ["pclxl"]
- },
- "application/vnd.httphone": {
- "source": "iana"
- },
- "application/vnd.hydrostatix.sof-data": {
- "source": "iana",
- "extensions": ["sfd-hdstx"]
- },
- "application/vnd.hyperdrive+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hzn-3d-crossword": {
- "source": "iana"
- },
- "application/vnd.ibm.afplinedata": {
- "source": "iana"
- },
- "application/vnd.ibm.electronic-media": {
- "source": "iana"
- },
- "application/vnd.ibm.minipay": {
- "source": "iana",
- "extensions": ["mpy"]
- },
- "application/vnd.ibm.modcap": {
- "source": "iana",
- "extensions": ["afp","listafp","list3820"]
- },
- "application/vnd.ibm.rights-management": {
- "source": "iana",
- "extensions": ["irm"]
- },
- "application/vnd.ibm.secure-container": {
- "source": "iana",
- "extensions": ["sc"]
- },
- "application/vnd.iccprofile": {
- "source": "iana",
- "extensions": ["icc","icm"]
- },
- "application/vnd.ieee.1905": {
- "source": "iana"
- },
- "application/vnd.igloader": {
- "source": "iana",
- "extensions": ["igl"]
- },
- "application/vnd.immervision-ivp": {
- "source": "iana",
- "extensions": ["ivp"]
- },
- "application/vnd.immervision-ivu": {
- "source": "iana",
- "extensions": ["ivu"]
- },
- "application/vnd.ims.imsccv1p1": {
- "source": "iana"
- },
- "application/vnd.ims.imsccv1p2": {
- "source": "iana"
- },
- "application/vnd.ims.imsccv1p3": {
- "source": "iana"
- },
- "application/vnd.ims.lis.v2.result+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolproxy+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolproxy.id+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolsettings+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolsettings.simple+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.informedcontrol.rms+xml": {
- "source": "iana"
- },
- "application/vnd.informix-visionary": {
- "source": "iana"
- },
- "application/vnd.infotech.project": {
- "source": "iana"
- },
- "application/vnd.infotech.project+xml": {
- "source": "iana"
- },
- "application/vnd.innopath.wamp.notification": {
- "source": "iana"
- },
- "application/vnd.insors.igm": {
- "source": "iana",
- "extensions": ["igm"]
- },
- "application/vnd.intercon.formnet": {
- "source": "iana",
- "extensions": ["xpw","xpx"]
- },
- "application/vnd.intergeo": {
- "source": "iana",
- "extensions": ["i2g"]
- },
- "application/vnd.intertrust.digibox": {
- "source": "iana"
- },
- "application/vnd.intertrust.nncp": {
- "source": "iana"
- },
- "application/vnd.intu.qbo": {
- "source": "iana",
- "extensions": ["qbo"]
- },
- "application/vnd.intu.qfx": {
- "source": "iana",
- "extensions": ["qfx"]
- },
- "application/vnd.iptc.g2.catalogitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.conceptitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.knowledgeitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.newsitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.newsmessage+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.packageitem+xml": {
- "source": "iana"
- },
- "application/vnd.iptc.g2.planningitem+xml": {
- "source": "iana"
- },
- "application/vnd.ipunplugged.rcprofile": {
- "source": "iana",
- "extensions": ["rcprofile"]
- },
- "application/vnd.irepository.package+xml": {
- "source": "iana",
- "extensions": ["irp"]
- },
- "application/vnd.is-xpr": {
- "source": "iana",
- "extensions": ["xpr"]
- },
- "application/vnd.isac.fcs": {
- "source": "iana",
- "extensions": ["fcs"]
- },
- "application/vnd.jam": {
- "source": "iana",
- "extensions": ["jam"]
- },
- "application/vnd.japannet-directory-service": {
- "source": "iana"
- },
- "application/vnd.japannet-jpnstore-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-payment-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-registration": {
- "source": "iana"
- },
- "application/vnd.japannet-registration-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-setstore-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-verification": {
- "source": "iana"
- },
- "application/vnd.japannet-verification-wakeup": {
- "source": "iana"
- },
- "application/vnd.jcp.javame.midlet-rms": {
- "source": "iana",
- "extensions": ["rms"]
- },
- "application/vnd.jisp": {
- "source": "iana",
- "extensions": ["jisp"]
- },
- "application/vnd.joost.joda-archive": {
- "source": "iana",
- "extensions": ["joda"]
- },
- "application/vnd.jsk.isdn-ngn": {
- "source": "iana"
- },
- "application/vnd.kahootz": {
- "source": "iana",
- "extensions": ["ktz","ktr"]
- },
- "application/vnd.kde.karbon": {
- "source": "iana",
- "extensions": ["karbon"]
- },
- "application/vnd.kde.kchart": {
- "source": "iana",
- "extensions": ["chrt"]
- },
- "application/vnd.kde.kformula": {
- "source": "iana",
- "extensions": ["kfo"]
- },
- "application/vnd.kde.kivio": {
- "source": "iana",
- "extensions": ["flw"]
- },
- "application/vnd.kde.kontour": {
- "source": "iana",
- "extensions": ["kon"]
- },
- "application/vnd.kde.kpresenter": {
- "source": "iana",
- "extensions": ["kpr","kpt"]
- },
- "application/vnd.kde.kspread": {
- "source": "iana",
- "extensions": ["ksp"]
- },
- "application/vnd.kde.kword": {
- "source": "iana",
- "extensions": ["kwd","kwt"]
- },
- "application/vnd.kenameaapp": {
- "source": "iana",
- "extensions": ["htke"]
- },
- "application/vnd.kidspiration": {
- "source": "iana",
- "extensions": ["kia"]
- },
- "application/vnd.kinar": {
- "source": "iana",
- "extensions": ["kne","knp"]
- },
- "application/vnd.koan": {
- "source": "iana",
- "extensions": ["skp","skd","skt","skm"]
- },
- "application/vnd.kodak-descriptor": {
- "source": "iana",
- "extensions": ["sse"]
- },
- "application/vnd.las.las+xml": {
- "source": "iana",
- "extensions": ["lasxml"]
- },
- "application/vnd.liberty-request+xml": {
- "source": "iana"
- },
- "application/vnd.llamagraphics.life-balance.desktop": {
- "source": "iana",
- "extensions": ["lbd"]
- },
- "application/vnd.llamagraphics.life-balance.exchange+xml": {
- "source": "iana",
- "extensions": ["lbe"]
- },
- "application/vnd.lotus-1-2-3": {
- "source": "iana",
- "extensions": ["123"]
- },
- "application/vnd.lotus-approach": {
- "source": "iana",
- "extensions": ["apr"]
- },
- "application/vnd.lotus-freelance": {
- "source": "iana",
- "extensions": ["pre"]
- },
- "application/vnd.lotus-notes": {
- "source": "iana",
- "extensions": ["nsf"]
- },
- "application/vnd.lotus-organizer": {
- "source": "iana",
- "extensions": ["org"]
- },
- "application/vnd.lotus-screencam": {
- "source": "iana",
- "extensions": ["scm"]
- },
- "application/vnd.lotus-wordpro": {
- "source": "iana",
- "extensions": ["lwp"]
- },
- "application/vnd.macports.portpkg": {
- "source": "iana",
- "extensions": ["portpkg"]
- },
- "application/vnd.marlin.drm.actiontoken+xml": {
- "source": "iana"
- },
- "application/vnd.marlin.drm.conftoken+xml": {
- "source": "iana"
- },
- "application/vnd.marlin.drm.license+xml": {
- "source": "iana"
- },
- "application/vnd.marlin.drm.mdcf": {
- "source": "iana"
- },
- "application/vnd.mason+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.maxmind.maxmind-db": {
- "source": "iana"
- },
- "application/vnd.mcd": {
- "source": "iana",
- "extensions": ["mcd"]
- },
- "application/vnd.medcalcdata": {
- "source": "iana",
- "extensions": ["mc1"]
- },
- "application/vnd.mediastation.cdkey": {
- "source": "iana",
- "extensions": ["cdkey"]
- },
- "application/vnd.meridian-slingshot": {
- "source": "iana"
- },
- "application/vnd.mfer": {
- "source": "iana",
- "extensions": ["mwf"]
- },
- "application/vnd.mfmp": {
- "source": "iana",
- "extensions": ["mfm"]
- },
- "application/vnd.micro+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.micrografx.flo": {
- "source": "iana",
- "extensions": ["flo"]
- },
- "application/vnd.micrografx.igx": {
- "source": "iana",
- "extensions": ["igx"]
- },
- "application/vnd.microsoft.portable-executable": {
- "source": "iana"
- },
- "application/vnd.miele+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.mif": {
- "source": "iana",
- "extensions": ["mif"]
- },
- "application/vnd.minisoft-hp3000-save": {
- "source": "iana"
- },
- "application/vnd.mitsubishi.misty-guard.trustweb": {
- "source": "iana"
- },
- "application/vnd.mobius.daf": {
- "source": "iana",
- "extensions": ["daf"]
- },
- "application/vnd.mobius.dis": {
- "source": "iana",
- "extensions": ["dis"]
- },
- "application/vnd.mobius.mbk": {
- "source": "iana",
- "extensions": ["mbk"]
- },
- "application/vnd.mobius.mqy": {
- "source": "iana",
- "extensions": ["mqy"]
- },
- "application/vnd.mobius.msl": {
- "source": "iana",
- "extensions": ["msl"]
- },
- "application/vnd.mobius.plc": {
- "source": "iana",
- "extensions": ["plc"]
- },
- "application/vnd.mobius.txf": {
- "source": "iana",
- "extensions": ["txf"]
- },
- "application/vnd.mophun.application": {
- "source": "iana",
- "extensions": ["mpn"]
- },
- "application/vnd.mophun.certificate": {
- "source": "iana",
- "extensions": ["mpc"]
- },
- "application/vnd.motorola.flexsuite": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.adsi": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.fis": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.gotap": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.kmr": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.ttc": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.wem": {
- "source": "iana"
- },
- "application/vnd.motorola.iprm": {
- "source": "iana"
- },
- "application/vnd.mozilla.xul+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xul"]
- },
- "application/vnd.ms-3mfdocument": {
- "source": "iana"
- },
- "application/vnd.ms-artgalry": {
- "source": "iana",
- "extensions": ["cil"]
- },
- "application/vnd.ms-asf": {
- "source": "iana"
- },
- "application/vnd.ms-cab-compressed": {
- "source": "iana",
- "extensions": ["cab"]
- },
- "application/vnd.ms-color.iccprofile": {
- "source": "apache"
- },
- "application/vnd.ms-excel": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xls","xlm","xla","xlc","xlt","xlw"]
- },
- "application/vnd.ms-excel.addin.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlam"]
- },
- "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlsb"]
- },
- "application/vnd.ms-excel.sheet.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlsm"]
- },
- "application/vnd.ms-excel.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["xltm"]
- },
- "application/vnd.ms-fontobject": {
- "source": "iana",
- "compressible": true,
- "extensions": ["eot"]
- },
- "application/vnd.ms-htmlhelp": {
- "source": "iana",
- "extensions": ["chm"]
- },
- "application/vnd.ms-ims": {
- "source": "iana",
- "extensions": ["ims"]
- },
- "application/vnd.ms-lrm": {
- "source": "iana",
- "extensions": ["lrm"]
- },
- "application/vnd.ms-office.activex+xml": {
- "source": "iana"
- },
- "application/vnd.ms-officetheme": {
- "source": "iana",
- "extensions": ["thmx"]
- },
- "application/vnd.ms-opentype": {
- "source": "apache",
- "compressible": true
- },
- "application/vnd.ms-package.obfuscated-opentype": {
- "source": "apache"
- },
- "application/vnd.ms-pki.seccat": {
- "source": "apache",
- "extensions": ["cat"]
- },
- "application/vnd.ms-pki.stl": {
- "source": "apache",
- "extensions": ["stl"]
- },
- "application/vnd.ms-playready.initiator+xml": {
- "source": "iana"
- },
- "application/vnd.ms-powerpoint": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ppt","pps","pot"]
- },
- "application/vnd.ms-powerpoint.addin.macroenabled.12": {
- "source": "iana",
- "extensions": ["ppam"]
- },
- "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
- "source": "iana",
- "extensions": ["pptm"]
- },
- "application/vnd.ms-powerpoint.slide.macroenabled.12": {
- "source": "iana",
- "extensions": ["sldm"]
- },
- "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
- "source": "iana",
- "extensions": ["ppsm"]
- },
- "application/vnd.ms-powerpoint.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["potm"]
- },
- "application/vnd.ms-printing.printticket+xml": {
- "source": "apache"
- },
- "application/vnd.ms-project": {
- "source": "iana",
- "extensions": ["mpp","mpt"]
- },
- "application/vnd.ms-tnef": {
- "source": "iana"
- },
- "application/vnd.ms-windows.printerpairing": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.lic-chlg-req": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.lic-resp": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.meter-chlg-req": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.meter-resp": {
- "source": "iana"
- },
- "application/vnd.ms-word.document.macroenabled.12": {
- "source": "iana",
- "extensions": ["docm"]
- },
- "application/vnd.ms-word.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["dotm"]
- },
- "application/vnd.ms-works": {
- "source": "iana",
- "extensions": ["wps","wks","wcm","wdb"]
- },
- "application/vnd.ms-wpl": {
- "source": "iana",
- "extensions": ["wpl"]
- },
- "application/vnd.ms-xpsdocument": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xps"]
- },
- "application/vnd.msa-disk-image": {
- "source": "iana"
- },
- "application/vnd.mseq": {
- "source": "iana",
- "extensions": ["mseq"]
- },
- "application/vnd.msign": {
- "source": "iana"
- },
- "application/vnd.multiad.creator": {
- "source": "iana"
- },
- "application/vnd.multiad.creator.cif": {
- "source": "iana"
- },
- "application/vnd.music-niff": {
- "source": "iana"
- },
- "application/vnd.musician": {
- "source": "iana",
- "extensions": ["mus"]
- },
- "application/vnd.muvee.style": {
- "source": "iana",
- "extensions": ["msty"]
- },
- "application/vnd.mynfc": {
- "source": "iana",
- "extensions": ["taglet"]
- },
- "application/vnd.ncd.control": {
- "source": "iana"
- },
- "application/vnd.ncd.reference": {
- "source": "iana"
- },
- "application/vnd.nervana": {
- "source": "iana"
- },
- "application/vnd.netfpx": {
- "source": "iana"
- },
- "application/vnd.neurolanguage.nlu": {
- "source": "iana",
- "extensions": ["nlu"]
- },
- "application/vnd.nintendo.nitro.rom": {
- "source": "iana"
- },
- "application/vnd.nintendo.snes.rom": {
- "source": "iana"
- },
- "application/vnd.nitf": {
- "source": "iana",
- "extensions": ["ntf","nitf"]
- },
- "application/vnd.noblenet-directory": {
- "source": "iana",
- "extensions": ["nnd"]
- },
- "application/vnd.noblenet-sealer": {
- "source": "iana",
- "extensions": ["nns"]
- },
- "application/vnd.noblenet-web": {
- "source": "iana",
- "extensions": ["nnw"]
- },
- "application/vnd.nokia.catalogs": {
- "source": "iana"
- },
- "application/vnd.nokia.conml+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.conml+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.iptv.config+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.isds-radio-presets": {
- "source": "iana"
- },
- "application/vnd.nokia.landmark+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.landmark+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.landmarkcollection+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.n-gage.ac+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.n-gage.data": {
- "source": "iana",
- "extensions": ["ngdat"]
- },
- "application/vnd.nokia.n-gage.symbian.install": {
- "source": "iana",
- "extensions": ["n-gage"]
- },
- "application/vnd.nokia.ncd": {
- "source": "iana"
- },
- "application/vnd.nokia.pcd+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.pcd+xml": {
- "source": "iana"
- },
- "application/vnd.nokia.radio-preset": {
- "source": "iana",
- "extensions": ["rpst"]
- },
- "application/vnd.nokia.radio-presets": {
- "source": "iana",
- "extensions": ["rpss"]
- },
- "application/vnd.novadigm.edm": {
- "source": "iana",
- "extensions": ["edm"]
- },
- "application/vnd.novadigm.edx": {
- "source": "iana",
- "extensions": ["edx"]
- },
- "application/vnd.novadigm.ext": {
- "source": "iana",
- "extensions": ["ext"]
- },
- "application/vnd.ntt-local.content-share": {
- "source": "iana"
- },
- "application/vnd.ntt-local.file-transfer": {
- "source": "iana"
- },
- "application/vnd.ntt-local.ogw_remote-access": {
- "source": "iana"
- },
- "application/vnd.ntt-local.sip-ta_remote": {
- "source": "iana"
- },
- "application/vnd.ntt-local.sip-ta_tcp_stream": {
- "source": "iana"
- },
- "application/vnd.oasis.opendocument.chart": {
- "source": "iana",
- "extensions": ["odc"]
- },
- "application/vnd.oasis.opendocument.chart-template": {
- "source": "iana",
- "extensions": ["otc"]
- },
- "application/vnd.oasis.opendocument.database": {
- "source": "iana",
- "extensions": ["odb"]
- },
- "application/vnd.oasis.opendocument.formula": {
- "source": "iana",
- "extensions": ["odf"]
- },
- "application/vnd.oasis.opendocument.formula-template": {
- "source": "iana",
- "extensions": ["odft"]
- },
- "application/vnd.oasis.opendocument.graphics": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odg"]
- },
- "application/vnd.oasis.opendocument.graphics-template": {
- "source": "iana",
- "extensions": ["otg"]
- },
- "application/vnd.oasis.opendocument.image": {
- "source": "iana",
- "extensions": ["odi"]
- },
- "application/vnd.oasis.opendocument.image-template": {
- "source": "iana",
- "extensions": ["oti"]
- },
- "application/vnd.oasis.opendocument.presentation": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odp"]
- },
- "application/vnd.oasis.opendocument.presentation-template": {
- "source": "iana",
- "extensions": ["otp"]
- },
- "application/vnd.oasis.opendocument.spreadsheet": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ods"]
- },
- "application/vnd.oasis.opendocument.spreadsheet-template": {
- "source": "iana",
- "extensions": ["ots"]
- },
- "application/vnd.oasis.opendocument.text": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odt"]
- },
- "application/vnd.oasis.opendocument.text-master": {
- "source": "iana",
- "extensions": ["odm"]
- },
- "application/vnd.oasis.opendocument.text-template": {
- "source": "iana",
- "extensions": ["ott"]
- },
- "application/vnd.oasis.opendocument.text-web": {
- "source": "iana",
- "extensions": ["oth"]
- },
- "application/vnd.obn": {
- "source": "iana"
- },
- "application/vnd.oftn.l10n+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.contentaccessdownload+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.contentaccessstreaming+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.cspg-hexbinary": {
- "source": "iana"
- },
- "application/vnd.oipf.dae.svg+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.dae.xhtml+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.mippvcontrolmessage+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.pae.gem": {
- "source": "iana"
- },
- "application/vnd.oipf.spdiscovery+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.spdlist+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.ueprofile+xml": {
- "source": "iana"
- },
- "application/vnd.oipf.userprofile+xml": {
- "source": "iana"
- },
- "application/vnd.olpc-sugar": {
- "source": "iana",
- "extensions": ["xo"]
- },
- "application/vnd.oma-scws-config": {
- "source": "iana"
- },
- "application/vnd.oma-scws-http-request": {
- "source": "iana"
- },
- "application/vnd.oma-scws-http-response": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.drm-trigger+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.imd+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.ltkm": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.notification+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.provisioningtrigger": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgboot": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgdd+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgdu": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.simple-symbol-container": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.smartcard-trigger+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sprov+xml": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.stkm": {
- "source": "iana"
- },
- "application/vnd.oma.cab-address-book+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-feature-handler+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-pcc+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-subs-invite+xml": {
- "source": "iana"
- },
- "application/vnd.oma.cab-user-prefs+xml": {
- "source": "iana"
- },
- "application/vnd.oma.dcd": {
- "source": "iana"
- },
- "application/vnd.oma.dcdc": {
- "source": "iana"
- },
- "application/vnd.oma.dd2+xml": {
- "source": "iana",
- "extensions": ["dd2"]
- },
- "application/vnd.oma.drm.risd+xml": {
- "source": "iana"
- },
- "application/vnd.oma.group-usage-list+xml": {
- "source": "iana"
- },
- "application/vnd.oma.pal+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.detailed-progress-report+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.final-report+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.groups+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.invocation-descriptor+xml": {
- "source": "iana"
- },
- "application/vnd.oma.poc.optimized-progress-report+xml": {
- "source": "iana"
- },
- "application/vnd.oma.push": {
- "source": "iana"
- },
- "application/vnd.oma.scidm.messages+xml": {
- "source": "iana"
- },
- "application/vnd.oma.xcap-directory+xml": {
- "source": "iana"
- },
- "application/vnd.omads-email+xml": {
- "source": "iana"
- },
- "application/vnd.omads-file+xml": {
- "source": "iana"
- },
- "application/vnd.omads-folder+xml": {
- "source": "iana"
- },
- "application/vnd.omaloc-supl-init": {
- "source": "iana"
- },
- "application/vnd.openeye.oeb": {
- "source": "iana"
- },
- "application/vnd.openofficeorg.extension": {
- "source": "apache",
- "extensions": ["oxt"]
- },
- "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawing+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml-template": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pptx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slide": {
- "source": "iana",
- "extensions": ["sldx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
- "source": "iana",
- "extensions": ["ppsx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.template": {
- "source": "apache",
- "extensions": ["potx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml-template": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xlsx"]
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
- "source": "apache",
- "extensions": ["xltx"]
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.theme+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.vmldrawing": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml-template": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
- "source": "iana",
- "compressible": false,
- "extensions": ["docx"]
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
- "source": "apache",
- "extensions": ["dotx"]
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-package.core-properties+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-package.relationships+xml": {
- "source": "iana"
- },
- "application/vnd.oracle.resource+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.orange.indata": {
- "source": "iana"
- },
- "application/vnd.osa.netdeploy": {
- "source": "iana"
- },
- "application/vnd.osgeo.mapguide.package": {
- "source": "iana",
- "extensions": ["mgp"]
- },
- "application/vnd.osgi.bundle": {
- "source": "iana"
- },
- "application/vnd.osgi.dp": {
- "source": "iana",
- "extensions": ["dp"]
- },
- "application/vnd.osgi.subsystem": {
- "source": "iana",
- "extensions": ["esa"]
- },
- "application/vnd.otps.ct-kip+xml": {
- "source": "iana"
- },
- "application/vnd.palm": {
- "source": "iana",
- "extensions": ["pdb","pqa","oprc"]
- },
- "application/vnd.panoply": {
- "source": "iana"
- },
- "application/vnd.paos+xml": {
- "source": "iana"
- },
- "application/vnd.paos.xml": {
- "source": "apache"
- },
- "application/vnd.pawaafile": {
- "source": "iana",
- "extensions": ["paw"]
- },
- "application/vnd.pcos": {
- "source": "iana"
- },
- "application/vnd.pg.format": {
- "source": "iana",
- "extensions": ["str"]
- },
- "application/vnd.pg.osasli": {
- "source": "iana",
- "extensions": ["ei6"]
- },
- "application/vnd.piaccess.application-licence": {
- "source": "iana"
- },
- "application/vnd.picsel": {
- "source": "iana",
- "extensions": ["efif"]
- },
- "application/vnd.pmi.widget": {
- "source": "iana",
- "extensions": ["wg"]
- },
- "application/vnd.poc.group-advertisement+xml": {
- "source": "iana"
- },
- "application/vnd.pocketlearn": {
- "source": "iana",
- "extensions": ["plf"]
- },
- "application/vnd.powerbuilder6": {
- "source": "iana",
- "extensions": ["pbd"]
- },
- "application/vnd.powerbuilder6-s": {
- "source": "iana"
- },
- "application/vnd.powerbuilder7": {
- "source": "iana"
- },
- "application/vnd.powerbuilder7-s": {
- "source": "iana"
- },
- "application/vnd.powerbuilder75": {
- "source": "iana"
- },
- "application/vnd.powerbuilder75-s": {
- "source": "iana"
- },
- "application/vnd.preminet": {
- "source": "iana"
- },
- "application/vnd.previewsystems.box": {
- "source": "iana",
- "extensions": ["box"]
- },
- "application/vnd.proteus.magazine": {
- "source": "iana",
- "extensions": ["mgz"]
- },
- "application/vnd.publishare-delta-tree": {
- "source": "iana",
- "extensions": ["qps"]
- },
- "application/vnd.pvi.ptid1": {
- "source": "iana",
- "extensions": ["ptid"]
- },
- "application/vnd.pwg-multiplexed": {
- "source": "iana"
- },
- "application/vnd.pwg-xhtml-print+xml": {
- "source": "iana"
- },
- "application/vnd.qualcomm.brew-app-res": {
- "source": "iana"
- },
- "application/vnd.quark.quarkxpress": {
- "source": "iana",
- "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"]
- },
- "application/vnd.quobject-quoxdocument": {
- "source": "iana"
- },
- "application/vnd.radisys.moml+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-conf+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-conn+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-dialog+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-audit-stream+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-conf+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-base+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-fax-detect+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-group+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-speech+xml": {
- "source": "iana"
- },
- "application/vnd.radisys.msml-dialog-transform+xml": {
- "source": "iana"
- },
- "application/vnd.rainstor.data": {
- "source": "iana"
- },
- "application/vnd.rapid": {
- "source": "iana"
- },
- "application/vnd.realvnc.bed": {
- "source": "iana",
- "extensions": ["bed"]
- },
- "application/vnd.recordare.musicxml": {
- "source": "iana",
- "extensions": ["mxl"]
- },
- "application/vnd.recordare.musicxml+xml": {
- "source": "iana",
- "extensions": ["musicxml"]
- },
- "application/vnd.renlearn.rlprint": {
- "source": "iana"
- },
- "application/vnd.rig.cryptonote": {
- "source": "iana",
- "extensions": ["cryptonote"]
- },
- "application/vnd.rim.cod": {
- "source": "apache",
- "extensions": ["cod"]
- },
- "application/vnd.rn-realmedia": {
- "source": "apache",
- "extensions": ["rm"]
- },
- "application/vnd.rn-realmedia-vbr": {
- "source": "apache",
- "extensions": ["rmvb"]
- },
- "application/vnd.route66.link66+xml": {
- "source": "iana",
- "extensions": ["link66"]
- },
- "application/vnd.rs-274x": {
- "source": "iana"
- },
- "application/vnd.ruckus.download": {
- "source": "iana"
- },
- "application/vnd.s3sms": {
- "source": "iana"
- },
- "application/vnd.sailingtracker.track": {
- "source": "iana",
- "extensions": ["st"]
- },
- "application/vnd.sbm.cid": {
- "source": "iana"
- },
- "application/vnd.sbm.mid2": {
- "source": "iana"
- },
- "application/vnd.scribus": {
- "source": "iana"
- },
- "application/vnd.sealed.3df": {
- "source": "iana"
- },
- "application/vnd.sealed.csf": {
- "source": "iana"
- },
- "application/vnd.sealed.doc": {
- "source": "iana"
- },
- "application/vnd.sealed.eml": {
- "source": "iana"
- },
- "application/vnd.sealed.mht": {
- "source": "iana"
- },
- "application/vnd.sealed.net": {
- "source": "iana"
- },
- "application/vnd.sealed.ppt": {
- "source": "iana"
- },
- "application/vnd.sealed.tiff": {
- "source": "iana"
- },
- "application/vnd.sealed.xls": {
- "source": "iana"
- },
- "application/vnd.sealedmedia.softseal.html": {
- "source": "iana"
- },
- "application/vnd.sealedmedia.softseal.pdf": {
- "source": "iana"
- },
- "application/vnd.seemail": {
- "source": "iana",
- "extensions": ["see"]
- },
- "application/vnd.sema": {
- "source": "iana",
- "extensions": ["sema"]
- },
- "application/vnd.semd": {
- "source": "iana",
- "extensions": ["semd"]
- },
- "application/vnd.semf": {
- "source": "iana",
- "extensions": ["semf"]
- },
- "application/vnd.shana.informed.formdata": {
- "source": "iana",
- "extensions": ["ifm"]
- },
- "application/vnd.shana.informed.formtemplate": {
- "source": "iana",
- "extensions": ["itp"]
- },
- "application/vnd.shana.informed.interchange": {
- "source": "iana",
- "extensions": ["iif"]
- },
- "application/vnd.shana.informed.package": {
- "source": "iana",
- "extensions": ["ipk"]
- },
- "application/vnd.simtech-mindmapper": {
- "source": "iana",
- "extensions": ["twd","twds"]
- },
- "application/vnd.siren+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.smaf": {
- "source": "iana",
- "extensions": ["mmf"]
- },
- "application/vnd.smart.notebook": {
- "source": "iana"
- },
- "application/vnd.smart.teacher": {
- "source": "iana",
- "extensions": ["teacher"]
- },
- "application/vnd.software602.filler.form+xml": {
- "source": "iana"
- },
- "application/vnd.software602.filler.form-xml-zip": {
- "source": "iana"
- },
- "application/vnd.solent.sdkm+xml": {
- "source": "iana",
- "extensions": ["sdkm","sdkd"]
- },
- "application/vnd.spotfire.dxp": {
- "source": "iana",
- "extensions": ["dxp"]
- },
- "application/vnd.spotfire.sfs": {
- "source": "iana",
- "extensions": ["sfs"]
- },
- "application/vnd.sss-cod": {
- "source": "iana"
- },
- "application/vnd.sss-dtf": {
- "source": "iana"
- },
- "application/vnd.sss-ntf": {
- "source": "iana"
- },
- "application/vnd.stardivision.calc": {
- "source": "apache",
- "extensions": ["sdc"]
- },
- "application/vnd.stardivision.draw": {
- "source": "apache",
- "extensions": ["sda"]
- },
- "application/vnd.stardivision.impress": {
- "source": "apache",
- "extensions": ["sdd"]
- },
- "application/vnd.stardivision.math": {
- "source": "apache",
- "extensions": ["smf"]
- },
- "application/vnd.stardivision.writer": {
- "source": "apache",
- "extensions": ["sdw","vor"]
- },
- "application/vnd.stardivision.writer-global": {
- "source": "apache",
- "extensions": ["sgl"]
- },
- "application/vnd.stepmania.package": {
- "source": "iana",
- "extensions": ["smzip"]
- },
- "application/vnd.stepmania.stepchart": {
- "source": "iana",
- "extensions": ["sm"]
- },
- "application/vnd.street-stream": {
- "source": "iana"
- },
- "application/vnd.sun.wadl+xml": {
- "source": "iana"
- },
- "application/vnd.sun.xml.calc": {
- "source": "apache",
- "extensions": ["sxc"]
- },
- "application/vnd.sun.xml.calc.template": {
- "source": "apache",
- "extensions": ["stc"]
- },
- "application/vnd.sun.xml.draw": {
- "source": "apache",
- "extensions": ["sxd"]
- },
- "application/vnd.sun.xml.draw.template": {
- "source": "apache",
- "extensions": ["std"]
- },
- "application/vnd.sun.xml.impress": {
- "source": "apache",
- "extensions": ["sxi"]
- },
- "application/vnd.sun.xml.impress.template": {
- "source": "apache",
- "extensions": ["sti"]
- },
- "application/vnd.sun.xml.math": {
- "source": "apache",
- "extensions": ["sxm"]
- },
- "application/vnd.sun.xml.writer": {
- "source": "apache",
- "extensions": ["sxw"]
- },
- "application/vnd.sun.xml.writer.global": {
- "source": "apache",
- "extensions": ["sxg"]
- },
- "application/vnd.sun.xml.writer.template": {
- "source": "apache",
- "extensions": ["stw"]
- },
- "application/vnd.sus-calendar": {
- "source": "iana",
- "extensions": ["sus","susp"]
- },
- "application/vnd.svd": {
- "source": "iana",
- "extensions": ["svd"]
- },
- "application/vnd.swiftview-ics": {
- "source": "iana"
- },
- "application/vnd.symbian.install": {
- "source": "apache",
- "extensions": ["sis","sisx"]
- },
- "application/vnd.syncml+xml": {
- "source": "iana",
- "extensions": ["xsm"]
- },
- "application/vnd.syncml.dm+wbxml": {
- "source": "iana",
- "extensions": ["bdm"]
- },
- "application/vnd.syncml.dm+xml": {
- "source": "iana",
- "extensions": ["xdm"]
- },
- "application/vnd.syncml.dm.notification": {
- "source": "iana"
- },
- "application/vnd.syncml.dmddf+wbxml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmddf+xml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmtnds+wbxml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmtnds+xml": {
- "source": "iana"
- },
- "application/vnd.syncml.ds.notification": {
- "source": "iana"
- },
- "application/vnd.tao.intent-module-archive": {
- "source": "iana",
- "extensions": ["tao"]
- },
- "application/vnd.tcpdump.pcap": {
- "source": "iana",
- "extensions": ["pcap","cap","dmp"]
- },
- "application/vnd.tmd.mediaflex.api+xml": {
- "source": "iana"
- },
- "application/vnd.tmobile-livetv": {
- "source": "iana",
- "extensions": ["tmo"]
- },
- "application/vnd.trid.tpt": {
- "source": "iana",
- "extensions": ["tpt"]
- },
- "application/vnd.triscape.mxs": {
- "source": "iana",
- "extensions": ["mxs"]
- },
- "application/vnd.trueapp": {
- "source": "iana",
- "extensions": ["tra"]
- },
- "application/vnd.truedoc": {
- "source": "iana"
- },
- "application/vnd.ubisoft.webplayer": {
- "source": "iana"
- },
- "application/vnd.ufdl": {
- "source": "iana",
- "extensions": ["ufd","ufdl"]
- },
- "application/vnd.uiq.theme": {
- "source": "iana",
- "extensions": ["utz"]
- },
- "application/vnd.umajin": {
- "source": "iana",
- "extensions": ["umj"]
- },
- "application/vnd.unity": {
- "source": "iana",
- "extensions": ["unityweb"]
- },
- "application/vnd.uoml+xml": {
- "source": "iana",
- "extensions": ["uoml"]
- },
- "application/vnd.uplanet.alert": {
- "source": "iana"
- },
- "application/vnd.uplanet.alert-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.bearer-choice": {
- "source": "iana"
- },
- "application/vnd.uplanet.bearer-choice-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.cacheop": {
- "source": "iana"
- },
- "application/vnd.uplanet.cacheop-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.channel": {
- "source": "iana"
- },
- "application/vnd.uplanet.channel-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.list": {
- "source": "iana"
- },
- "application/vnd.uplanet.list-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.listcmd": {
- "source": "iana"
- },
- "application/vnd.uplanet.listcmd-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.signal": {
- "source": "iana"
- },
- "application/vnd.valve.source.material": {
- "source": "iana"
- },
- "application/vnd.vcx": {
- "source": "iana",
- "extensions": ["vcx"]
- },
- "application/vnd.vd-study": {
- "source": "iana"
- },
- "application/vnd.vectorworks": {
- "source": "iana"
- },
- "application/vnd.verimatrix.vcas": {
- "source": "iana"
- },
- "application/vnd.vidsoft.vidconference": {
- "source": "iana"
- },
- "application/vnd.visio": {
- "source": "iana",
- "extensions": ["vsd","vst","vss","vsw"]
- },
- "application/vnd.visionary": {
- "source": "iana",
- "extensions": ["vis"]
- },
- "application/vnd.vividence.scriptfile": {
- "source": "iana"
- },
- "application/vnd.vsf": {
- "source": "iana",
- "extensions": ["vsf"]
- },
- "application/vnd.wap.sic": {
- "source": "iana"
- },
- "application/vnd.wap.slc": {
- "source": "iana"
- },
- "application/vnd.wap.wbxml": {
- "source": "iana",
- "extensions": ["wbxml"]
- },
- "application/vnd.wap.wmlc": {
- "source": "iana",
- "extensions": ["wmlc"]
- },
- "application/vnd.wap.wmlscriptc": {
- "source": "iana",
- "extensions": ["wmlsc"]
- },
- "application/vnd.webturbo": {
- "source": "iana",
- "extensions": ["wtb"]
- },
- "application/vnd.wfa.p2p": {
- "source": "iana"
- },
- "application/vnd.wfa.wsc": {
- "source": "iana"
- },
- "application/vnd.windows.devicepairing": {
- "source": "iana"
- },
- "application/vnd.wmc": {
- "source": "iana"
- },
- "application/vnd.wmf.bootstrap": {
- "source": "iana"
- },
- "application/vnd.wolfram.mathematica": {
- "source": "iana"
- },
- "application/vnd.wolfram.mathematica.package": {
- "source": "iana"
- },
- "application/vnd.wolfram.player": {
- "source": "iana",
- "extensions": ["nbp"]
- },
- "application/vnd.wordperfect": {
- "source": "iana",
- "extensions": ["wpd"]
- },
- "application/vnd.wqd": {
- "source": "iana",
- "extensions": ["wqd"]
- },
- "application/vnd.wrq-hp3000-labelled": {
- "source": "iana"
- },
- "application/vnd.wt.stf": {
- "source": "iana",
- "extensions": ["stf"]
- },
- "application/vnd.wv.csp+wbxml": {
- "source": "iana"
- },
- "application/vnd.wv.csp+xml": {
- "source": "iana"
- },
- "application/vnd.wv.ssp+xml": {
- "source": "iana"
- },
- "application/vnd.xacml+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.xara": {
- "source": "iana",
- "extensions": ["xar"]
- },
- "application/vnd.xfdl": {
- "source": "iana",
- "extensions": ["xfdl"]
- },
- "application/vnd.xfdl.webform": {
- "source": "iana"
- },
- "application/vnd.xmi+xml": {
- "source": "iana"
- },
- "application/vnd.xmpie.cpkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.dpkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.plan": {
- "source": "iana"
- },
- "application/vnd.xmpie.ppkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.xlim": {
- "source": "iana"
- },
- "application/vnd.yamaha.hv-dic": {
- "source": "iana",
- "extensions": ["hvd"]
- },
- "application/vnd.yamaha.hv-script": {
- "source": "iana",
- "extensions": ["hvs"]
- },
- "application/vnd.yamaha.hv-voice": {
- "source": "iana",
- "extensions": ["hvp"]
- },
- "application/vnd.yamaha.openscoreformat": {
- "source": "iana",
- "extensions": ["osf"]
- },
- "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
- "source": "iana",
- "extensions": ["osfpvg"]
- },
- "application/vnd.yamaha.remote-setup": {
- "source": "iana"
- },
- "application/vnd.yamaha.smaf-audio": {
- "source": "iana",
- "extensions": ["saf"]
- },
- "application/vnd.yamaha.smaf-phrase": {
- "source": "iana",
- "extensions": ["spf"]
- },
- "application/vnd.yamaha.through-ngn": {
- "source": "iana"
- },
- "application/vnd.yamaha.tunnel-udpencap": {
- "source": "iana"
- },
- "application/vnd.yaoweme": {
- "source": "iana"
- },
- "application/vnd.yellowriver-custom-menu": {
- "source": "iana",
- "extensions": ["cmp"]
- },
- "application/vnd.zul": {
- "source": "iana",
- "extensions": ["zir","zirz"]
- },
- "application/vnd.zzazz.deck+xml": {
- "source": "iana",
- "extensions": ["zaz"]
- },
- "application/voicexml+xml": {
- "source": "iana",
- "extensions": ["vxml"]
- },
- "application/vq-rtcpxr": {
- "source": "iana"
- },
- "application/watcherinfo+xml": {
- "source": "iana"
- },
- "application/whoispp-query": {
- "source": "iana"
- },
- "application/whoispp-response": {
- "source": "iana"
- },
- "application/widget": {
- "source": "iana",
- "extensions": ["wgt"]
- },
- "application/winhlp": {
- "source": "apache",
- "extensions": ["hlp"]
- },
- "application/wita": {
- "source": "iana"
- },
- "application/wordperfect5.1": {
- "source": "iana"
- },
- "application/wsdl+xml": {
- "source": "iana",
- "extensions": ["wsdl"]
- },
- "application/wspolicy+xml": {
- "source": "iana",
- "extensions": ["wspolicy"]
- },
- "application/x-7z-compressed": {
- "source": "apache",
- "compressible": false,
- "extensions": ["7z"]
- },
- "application/x-abiword": {
- "source": "apache",
- "extensions": ["abw"]
- },
- "application/x-ace-compressed": {
- "source": "apache",
- "extensions": ["ace"]
- },
- "application/x-amf": {
- "source": "apache"
- },
- "application/x-apple-diskimage": {
- "source": "apache",
- "extensions": ["dmg"]
- },
- "application/x-authorware-bin": {
- "source": "apache",
- "extensions": ["aab","x32","u32","vox"]
- },
- "application/x-authorware-map": {
- "source": "apache",
- "extensions": ["aam"]
- },
- "application/x-authorware-seg": {
- "source": "apache",
- "extensions": ["aas"]
- },
- "application/x-bcpio": {
- "source": "apache",
- "extensions": ["bcpio"]
- },
- "application/x-bdoc": {
- "compressible": false,
- "extensions": ["bdoc"]
- },
- "application/x-bittorrent": {
- "source": "apache",
- "extensions": ["torrent"]
- },
- "application/x-blorb": {
- "source": "apache",
- "extensions": ["blb","blorb"]
- },
- "application/x-bzip": {
- "source": "apache",
- "compressible": false,
- "extensions": ["bz"]
- },
- "application/x-bzip2": {
- "source": "apache",
- "compressible": false,
- "extensions": ["bz2","boz"]
- },
- "application/x-cbr": {
- "source": "apache",
- "extensions": ["cbr","cba","cbt","cbz","cb7"]
- },
- "application/x-cdlink": {
- "source": "apache",
- "extensions": ["vcd"]
- },
- "application/x-cfs-compressed": {
- "source": "apache",
- "extensions": ["cfs"]
- },
- "application/x-chat": {
- "source": "apache",
- "extensions": ["chat"]
- },
- "application/x-chess-pgn": {
- "source": "apache",
- "extensions": ["pgn"]
- },
- "application/x-chrome-extension": {
- "extensions": ["crx"]
- },
- "application/x-compress": {
- "source": "apache"
- },
- "application/x-conference": {
- "source": "apache",
- "extensions": ["nsc"]
- },
- "application/x-cpio": {
- "source": "apache",
- "extensions": ["cpio"]
- },
- "application/x-csh": {
- "source": "apache",
- "extensions": ["csh"]
- },
- "application/x-deb": {
- "compressible": false
- },
- "application/x-debian-package": {
- "source": "apache",
- "extensions": ["deb","udeb"]
- },
- "application/x-dgc-compressed": {
- "source": "apache",
- "extensions": ["dgc"]
- },
- "application/x-director": {
- "source": "apache",
- "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]
- },
- "application/x-doom": {
- "source": "apache",
- "extensions": ["wad"]
- },
- "application/x-dtbncx+xml": {
- "source": "apache",
- "extensions": ["ncx"]
- },
- "application/x-dtbook+xml": {
- "source": "apache",
- "extensions": ["dtb"]
- },
- "application/x-dtbresource+xml": {
- "source": "apache",
- "extensions": ["res"]
- },
- "application/x-dvi": {
- "source": "apache",
- "compressible": false,
- "extensions": ["dvi"]
- },
- "application/x-envoy": {
- "source": "apache",
- "extensions": ["evy"]
- },
- "application/x-eva": {
- "source": "apache",
- "extensions": ["eva"]
- },
- "application/x-font-bdf": {
- "source": "apache",
- "extensions": ["bdf"]
- },
- "application/x-font-dos": {
- "source": "apache"
- },
- "application/x-font-framemaker": {
- "source": "apache"
- },
- "application/x-font-ghostscript": {
- "source": "apache",
- "extensions": ["gsf"]
- },
- "application/x-font-libgrx": {
- "source": "apache"
- },
- "application/x-font-linux-psf": {
- "source": "apache",
- "extensions": ["psf"]
- },
- "application/x-font-otf": {
- "source": "apache",
- "compressible": true,
- "extensions": ["otf"]
- },
- "application/x-font-pcf": {
- "source": "apache",
- "extensions": ["pcf"]
- },
- "application/x-font-snf": {
- "source": "apache",
- "extensions": ["snf"]
- },
- "application/x-font-speedo": {
- "source": "apache"
- },
- "application/x-font-sunos-news": {
- "source": "apache"
- },
- "application/x-font-ttf": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ttf","ttc"]
- },
- "application/x-font-type1": {
- "source": "apache",
- "extensions": ["pfa","pfb","pfm","afm"]
- },
- "application/x-font-vfont": {
- "source": "apache"
- },
- "application/x-freearc": {
- "source": "apache",
- "extensions": ["arc"]
- },
- "application/x-futuresplash": {
- "source": "apache",
- "extensions": ["spl"]
- },
- "application/x-gca-compressed": {
- "source": "apache",
- "extensions": ["gca"]
- },
- "application/x-glulx": {
- "source": "apache",
- "extensions": ["ulx"]
- },
- "application/x-gnumeric": {
- "source": "apache",
- "extensions": ["gnumeric"]
- },
- "application/x-gramps-xml": {
- "source": "apache",
- "extensions": ["gramps"]
- },
- "application/x-gtar": {
- "source": "apache",
- "extensions": ["gtar"]
- },
- "application/x-gzip": {
- "source": "apache"
- },
- "application/x-hdf": {
- "source": "apache",
- "extensions": ["hdf"]
- },
- "application/x-install-instructions": {
- "source": "apache",
- "extensions": ["install"]
- },
- "application/x-iso9660-image": {
- "source": "apache",
- "extensions": ["iso"]
- },
- "application/x-java-jnlp-file": {
- "source": "apache",
- "compressible": false,
- "extensions": ["jnlp"]
- },
- "application/x-javascript": {
- "compressible": true
- },
- "application/x-latex": {
- "source": "apache",
- "compressible": false,
- "extensions": ["latex"]
- },
- "application/x-lua-bytecode": {
- "extensions": ["luac"]
- },
- "application/x-lzh-compressed": {
- "source": "apache",
- "extensions": ["lzh","lha"]
- },
- "application/x-mie": {
- "source": "apache",
- "extensions": ["mie"]
- },
- "application/x-mobipocket-ebook": {
- "source": "apache",
- "extensions": ["prc","mobi"]
- },
- "application/x-mpegurl": {
- "compressible": false
- },
- "application/x-ms-application": {
- "source": "apache",
- "extensions": ["application"]
- },
- "application/x-ms-shortcut": {
- "source": "apache",
- "extensions": ["lnk"]
- },
- "application/x-ms-wmd": {
- "source": "apache",
- "extensions": ["wmd"]
- },
- "application/x-ms-wmz": {
- "source": "apache",
- "extensions": ["wmz"]
- },
- "application/x-ms-xbap": {
- "source": "apache",
- "extensions": ["xbap"]
- },
- "application/x-msaccess": {
- "source": "apache",
- "extensions": ["mdb"]
- },
- "application/x-msbinder": {
- "source": "apache",
- "extensions": ["obd"]
- },
- "application/x-mscardfile": {
- "source": "apache",
- "extensions": ["crd"]
- },
- "application/x-msclip": {
- "source": "apache",
- "extensions": ["clp"]
- },
- "application/x-msdownload": {
- "source": "apache",
- "extensions": ["exe","dll","com","bat","msi"]
- },
- "application/x-msmediaview": {
- "source": "apache",
- "extensions": ["mvb","m13","m14"]
- },
- "application/x-msmetafile": {
- "source": "apache",
- "extensions": ["wmf","wmz","emf","emz"]
- },
- "application/x-msmoney": {
- "source": "apache",
- "extensions": ["mny"]
- },
- "application/x-mspublisher": {
- "source": "apache",
- "extensions": ["pub"]
- },
- "application/x-msschedule": {
- "source": "apache",
- "extensions": ["scd"]
- },
- "application/x-msterminal": {
- "source": "apache",
- "extensions": ["trm"]
- },
- "application/x-mswrite": {
- "source": "apache",
- "extensions": ["wri"]
- },
- "application/x-netcdf": {
- "source": "apache",
- "extensions": ["nc","cdf"]
- },
- "application/x-ns-proxy-autoconfig": {
- "compressible": true,
- "extensions": ["pac"]
- },
- "application/x-nzb": {
- "source": "apache",
- "extensions": ["nzb"]
- },
- "application/x-pkcs12": {
- "source": "apache",
- "compressible": false,
- "extensions": ["p12","pfx"]
- },
- "application/x-pkcs7-certificates": {
- "source": "apache",
- "extensions": ["p7b","spc"]
- },
- "application/x-pkcs7-certreqresp": {
- "source": "apache",
- "extensions": ["p7r"]
- },
- "application/x-rar-compressed": {
- "source": "apache",
- "compressible": false,
- "extensions": ["rar"]
- },
- "application/x-research-info-systems": {
- "source": "apache",
- "extensions": ["ris"]
- },
- "application/x-sh": {
- "source": "apache",
- "compressible": true,
- "extensions": ["sh"]
- },
- "application/x-shar": {
- "source": "apache",
- "extensions": ["shar"]
- },
- "application/x-shockwave-flash": {
- "source": "apache",
- "compressible": false,
- "extensions": ["swf"]
- },
- "application/x-silverlight-app": {
- "source": "apache",
- "extensions": ["xap"]
- },
- "application/x-sql": {
- "source": "apache",
- "extensions": ["sql"]
- },
- "application/x-stuffit": {
- "source": "apache",
- "compressible": false,
- "extensions": ["sit"]
- },
- "application/x-stuffitx": {
- "source": "apache",
- "extensions": ["sitx"]
- },
- "application/x-subrip": {
- "source": "apache",
- "extensions": ["srt"]
- },
- "application/x-sv4cpio": {
- "source": "apache",
- "extensions": ["sv4cpio"]
- },
- "application/x-sv4crc": {
- "source": "apache",
- "extensions": ["sv4crc"]
- },
- "application/x-t3vm-image": {
- "source": "apache",
- "extensions": ["t3"]
- },
- "application/x-tads": {
- "source": "apache",
- "extensions": ["gam"]
- },
- "application/x-tar": {
- "source": "apache",
- "compressible": true,
- "extensions": ["tar"]
- },
- "application/x-tcl": {
- "source": "apache",
- "extensions": ["tcl"]
- },
- "application/x-tex": {
- "source": "apache",
- "extensions": ["tex"]
- },
- "application/x-tex-tfm": {
- "source": "apache",
- "extensions": ["tfm"]
- },
- "application/x-texinfo": {
- "source": "apache",
- "extensions": ["texinfo","texi"]
- },
- "application/x-tgif": {
- "source": "apache",
- "extensions": ["obj"]
- },
- "application/x-ustar": {
- "source": "apache",
- "extensions": ["ustar"]
- },
- "application/x-wais-source": {
- "source": "apache",
- "extensions": ["src"]
- },
- "application/x-web-app-manifest+json": {
- "compressible": true,
- "extensions": ["webapp"]
- },
- "application/x-www-form-urlencoded": {
- "source": "iana",
- "compressible": true
- },
- "application/x-x509-ca-cert": {
- "source": "apache",
- "extensions": ["der","crt"]
- },
- "application/x-xfig": {
- "source": "apache",
- "extensions": ["fig"]
- },
- "application/x-xliff+xml": {
- "source": "apache",
- "extensions": ["xlf"]
- },
- "application/x-xpinstall": {
- "source": "apache",
- "compressible": false,
- "extensions": ["xpi"]
- },
- "application/x-xz": {
- "source": "apache",
- "extensions": ["xz"]
- },
- "application/x-zmachine": {
- "source": "apache",
- "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"]
- },
- "application/x400-bp": {
- "source": "iana"
- },
- "application/xacml+xml": {
- "source": "iana"
- },
- "application/xaml+xml": {
- "source": "apache",
- "extensions": ["xaml"]
- },
- "application/xcap-att+xml": {
- "source": "iana"
- },
- "application/xcap-caps+xml": {
- "source": "iana"
- },
- "application/xcap-diff+xml": {
- "source": "iana",
- "extensions": ["xdf"]
- },
- "application/xcap-el+xml": {
- "source": "iana"
- },
- "application/xcap-error+xml": {
- "source": "iana"
- },
- "application/xcap-ns+xml": {
- "source": "iana"
- },
- "application/xcon-conference-info+xml": {
- "source": "iana"
- },
- "application/xcon-conference-info-diff+xml": {
- "source": "iana"
- },
- "application/xenc+xml": {
- "source": "iana",
- "extensions": ["xenc"]
- },
- "application/xhtml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xhtml","xht"]
- },
- "application/xhtml-voice+xml": {
- "source": "apache"
- },
- "application/xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xml","xsl","xsd"]
- },
- "application/xml-dtd": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dtd"]
- },
- "application/xml-external-parsed-entity": {
- "source": "iana"
- },
- "application/xml-patch+xml": {
- "source": "iana"
- },
- "application/xmpp+xml": {
- "source": "iana"
- },
- "application/xop+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xop"]
- },
- "application/xproc+xml": {
- "source": "apache",
- "extensions": ["xpl"]
- },
- "application/xslt+xml": {
- "source": "iana",
- "extensions": ["xslt"]
- },
- "application/xspf+xml": {
- "source": "apache",
- "extensions": ["xspf"]
- },
- "application/xv+xml": {
- "source": "iana",
- "extensions": ["mxml","xhvml","xvml","xvm"]
- },
- "application/yang": {
- "source": "iana",
- "extensions": ["yang"]
- },
- "application/yin+xml": {
- "source": "iana",
- "extensions": ["yin"]
- },
- "application/zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["zip"]
- },
- "application/zlib": {
- "source": "iana"
- },
- "audio/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "audio/32kadpcm": {
- "source": "iana"
- },
- "audio/3gpp": {
- "source": "iana"
- },
- "audio/3gpp2": {
- "source": "iana"
- },
- "audio/ac3": {
- "source": "iana"
- },
- "audio/adpcm": {
- "source": "apache",
- "extensions": ["adp"]
- },
- "audio/amr": {
- "source": "iana"
- },
- "audio/amr-wb": {
- "source": "iana"
- },
- "audio/amr-wb+": {
- "source": "iana"
- },
- "audio/aptx": {
- "source": "iana"
- },
- "audio/asc": {
- "source": "iana"
- },
- "audio/atrac-advanced-lossless": {
- "source": "iana"
- },
- "audio/atrac-x": {
- "source": "iana"
- },
- "audio/atrac3": {
- "source": "iana"
- },
- "audio/basic": {
- "source": "iana",
- "compressible": false,
- "extensions": ["au","snd"]
- },
- "audio/bv16": {
- "source": "iana"
- },
- "audio/bv32": {
- "source": "iana"
- },
- "audio/clearmode": {
- "source": "iana"
- },
- "audio/cn": {
- "source": "iana"
- },
- "audio/dat12": {
- "source": "iana"
- },
- "audio/dls": {
- "source": "iana"
- },
- "audio/dsr-es201108": {
- "source": "iana"
- },
- "audio/dsr-es202050": {
- "source": "iana"
- },
- "audio/dsr-es202211": {
- "source": "iana"
- },
- "audio/dsr-es202212": {
- "source": "iana"
- },
- "audio/dv": {
- "source": "iana"
- },
- "audio/dvi4": {
- "source": "iana"
- },
- "audio/eac3": {
- "source": "iana"
- },
- "audio/encaprtp": {
- "source": "iana"
- },
- "audio/evrc": {
- "source": "iana"
- },
- "audio/evrc-qcp": {
- "source": "iana"
- },
- "audio/evrc0": {
- "source": "iana"
- },
- "audio/evrc1": {
- "source": "iana"
- },
- "audio/evrcb": {
- "source": "iana"
- },
- "audio/evrcb0": {
- "source": "iana"
- },
- "audio/evrcb1": {
- "source": "iana"
- },
- "audio/evrcnw": {
- "source": "iana"
- },
- "audio/evrcnw0": {
- "source": "iana"
- },
- "audio/evrcnw1": {
- "source": "iana"
- },
- "audio/evrcwb": {
- "source": "iana"
- },
- "audio/evrcwb0": {
- "source": "iana"
- },
- "audio/evrcwb1": {
- "source": "iana"
- },
- "audio/fwdred": {
- "source": "iana"
- },
- "audio/g719": {
- "source": "iana"
- },
- "audio/g722": {
- "source": "iana"
- },
- "audio/g7221": {
- "source": "iana"
- },
- "audio/g723": {
- "source": "iana"
- },
- "audio/g726-16": {
- "source": "iana"
- },
- "audio/g726-24": {
- "source": "iana"
- },
- "audio/g726-32": {
- "source": "iana"
- },
- "audio/g726-40": {
- "source": "iana"
- },
- "audio/g728": {
- "source": "iana"
- },
- "audio/g729": {
- "source": "iana"
- },
- "audio/g7291": {
- "source": "iana"
- },
- "audio/g729d": {
- "source": "iana"
- },
- "audio/g729e": {
- "source": "iana"
- },
- "audio/gsm": {
- "source": "iana"
- },
- "audio/gsm-efr": {
- "source": "iana"
- },
- "audio/gsm-hr-08": {
- "source": "iana"
- },
- "audio/ilbc": {
- "source": "iana"
- },
- "audio/ip-mr_v2.5": {
- "source": "iana"
- },
- "audio/isac": {
- "source": "apache"
- },
- "audio/l16": {
- "source": "iana"
- },
- "audio/l20": {
- "source": "iana"
- },
- "audio/l24": {
- "source": "iana",
- "compressible": false
- },
- "audio/l8": {
- "source": "iana"
- },
- "audio/lpc": {
- "source": "iana"
- },
- "audio/midi": {
- "source": "apache",
- "extensions": ["mid","midi","kar","rmi"]
- },
- "audio/mobile-xmf": {
- "source": "iana"
- },
- "audio/mp4": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mp4a","m4a"]
- },
- "audio/mp4a-latm": {
- "source": "iana"
- },
- "audio/mpa": {
- "source": "iana"
- },
- "audio/mpa-robust": {
- "source": "iana"
- },
- "audio/mpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"]
- },
- "audio/mpeg4-generic": {
- "source": "iana"
- },
- "audio/musepack": {
- "source": "apache"
- },
- "audio/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["oga","ogg","spx"]
- },
- "audio/opus": {
- "source": "iana"
- },
- "audio/parityfec": {
- "source": "iana"
- },
- "audio/pcma": {
- "source": "iana"
- },
- "audio/pcma-wb": {
- "source": "iana"
- },
- "audio/pcmu": {
- "source": "iana"
- },
- "audio/pcmu-wb": {
- "source": "iana"
- },
- "audio/prs.sid": {
- "source": "iana"
- },
- "audio/qcelp": {
- "source": "iana"
- },
- "audio/raptorfec": {
- "source": "iana"
- },
- "audio/red": {
- "source": "iana"
- },
- "audio/rtp-enc-aescm128": {
- "source": "iana"
- },
- "audio/rtp-midi": {
- "source": "iana"
- },
- "audio/rtploopback": {
- "source": "iana"
- },
- "audio/rtx": {
- "source": "iana"
- },
- "audio/s3m": {
- "source": "apache",
- "extensions": ["s3m"]
- },
- "audio/silk": {
- "source": "apache",
- "extensions": ["sil"]
- },
- "audio/smv": {
- "source": "iana"
- },
- "audio/smv-qcp": {
- "source": "iana"
- },
- "audio/smv0": {
- "source": "iana"
- },
- "audio/sp-midi": {
- "source": "iana"
- },
- "audio/speex": {
- "source": "iana"
- },
- "audio/t140c": {
- "source": "iana"
- },
- "audio/t38": {
- "source": "iana"
- },
- "audio/telephone-event": {
- "source": "iana"
- },
- "audio/tone": {
- "source": "iana"
- },
- "audio/uemclip": {
- "source": "iana"
- },
- "audio/ulpfec": {
- "source": "iana"
- },
- "audio/vdvi": {
- "source": "iana"
- },
- "audio/vmr-wb": {
- "source": "iana"
- },
- "audio/vnd.3gpp.iufp": {
- "source": "iana"
- },
- "audio/vnd.4sb": {
- "source": "iana"
- },
- "audio/vnd.audiokoz": {
- "source": "iana"
- },
- "audio/vnd.celp": {
- "source": "iana"
- },
- "audio/vnd.cisco.nse": {
- "source": "iana"
- },
- "audio/vnd.cmles.radio-events": {
- "source": "iana"
- },
- "audio/vnd.cns.anp1": {
- "source": "iana"
- },
- "audio/vnd.cns.inf1": {
- "source": "iana"
- },
- "audio/vnd.dece.audio": {
- "source": "iana",
- "extensions": ["uva","uvva"]
- },
- "audio/vnd.digital-winds": {
- "source": "iana",
- "extensions": ["eol"]
- },
- "audio/vnd.dlna.adts": {
- "source": "iana"
- },
- "audio/vnd.dolby.heaac.1": {
- "source": "iana"
- },
- "audio/vnd.dolby.heaac.2": {
- "source": "iana"
- },
- "audio/vnd.dolby.mlp": {
- "source": "iana"
- },
- "audio/vnd.dolby.mps": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2x": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2z": {
- "source": "iana"
- },
- "audio/vnd.dolby.pulse.1": {
- "source": "iana"
- },
- "audio/vnd.dra": {
- "source": "iana",
- "extensions": ["dra"]
- },
- "audio/vnd.dts": {
- "source": "iana",
- "extensions": ["dts"]
- },
- "audio/vnd.dts.hd": {
- "source": "iana",
- "extensions": ["dtshd"]
- },
- "audio/vnd.dvb.file": {
- "source": "iana"
- },
- "audio/vnd.everad.plj": {
- "source": "iana"
- },
- "audio/vnd.hns.audio": {
- "source": "iana"
- },
- "audio/vnd.lucent.voice": {
- "source": "iana",
- "extensions": ["lvp"]
- },
- "audio/vnd.ms-playready.media.pya": {
- "source": "iana",
- "extensions": ["pya"]
- },
- "audio/vnd.nokia.mobile-xmf": {
- "source": "iana"
- },
- "audio/vnd.nortel.vbk": {
- "source": "iana"
- },
- "audio/vnd.nuera.ecelp4800": {
- "source": "iana",
- "extensions": ["ecelp4800"]
- },
- "audio/vnd.nuera.ecelp7470": {
- "source": "iana",
- "extensions": ["ecelp7470"]
- },
- "audio/vnd.nuera.ecelp9600": {
- "source": "iana",
- "extensions": ["ecelp9600"]
- },
- "audio/vnd.octel.sbc": {
- "source": "iana"
- },
- "audio/vnd.qcelp": {
- "source": "iana"
- },
- "audio/vnd.rhetorex.32kadpcm": {
- "source": "iana"
- },
- "audio/vnd.rip": {
- "source": "iana",
- "extensions": ["rip"]
- },
- "audio/vnd.rn-realaudio": {
- "compressible": false
- },
- "audio/vnd.sealedmedia.softseal.mpeg": {
- "source": "iana"
- },
- "audio/vnd.vmx.cvsd": {
- "source": "iana"
- },
- "audio/vnd.wave": {
- "compressible": false
- },
- "audio/vorbis": {
- "source": "iana",
- "compressible": false
- },
- "audio/vorbis-config": {
- "source": "iana"
- },
- "audio/wav": {
- "compressible": false,
- "extensions": ["wav"]
- },
- "audio/wave": {
- "compressible": false,
- "extensions": ["wav"]
- },
- "audio/webm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["weba"]
- },
- "audio/x-aac": {
- "source": "apache",
- "compressible": false,
- "extensions": ["aac"]
- },
- "audio/x-aiff": {
- "source": "apache",
- "extensions": ["aif","aiff","aifc"]
- },
- "audio/x-caf": {
- "source": "apache",
- "compressible": false,
- "extensions": ["caf"]
- },
- "audio/x-flac": {
- "source": "apache",
- "extensions": ["flac"]
- },
- "audio/x-matroska": {
- "source": "apache",
- "extensions": ["mka"]
- },
- "audio/x-mpegurl": {
- "source": "apache",
- "extensions": ["m3u"]
- },
- "audio/x-ms-wax": {
- "source": "apache",
- "extensions": ["wax"]
- },
- "audio/x-ms-wma": {
- "source": "apache",
- "extensions": ["wma"]
- },
- "audio/x-pn-realaudio": {
- "source": "apache",
- "extensions": ["ram","ra"]
- },
- "audio/x-pn-realaudio-plugin": {
- "source": "apache",
- "extensions": ["rmp"]
- },
- "audio/x-tta": {
- "source": "apache"
- },
- "audio/x-wav": {
- "source": "apache",
- "extensions": ["wav"]
- },
- "audio/xm": {
- "source": "apache",
- "extensions": ["xm"]
- },
- "chemical/x-cdx": {
- "source": "apache",
- "extensions": ["cdx"]
- },
- "chemical/x-cif": {
- "source": "apache",
- "extensions": ["cif"]
- },
- "chemical/x-cmdf": {
- "source": "apache",
- "extensions": ["cmdf"]
- },
- "chemical/x-cml": {
- "source": "apache",
- "extensions": ["cml"]
- },
- "chemical/x-csml": {
- "source": "apache",
- "extensions": ["csml"]
- },
- "chemical/x-pdb": {
- "source": "apache"
- },
- "chemical/x-xyz": {
- "source": "apache",
- "extensions": ["xyz"]
- },
- "font/opentype": {
- "compressible": true,
- "extensions": ["otf"]
- },
- "image/bmp": {
- "source": "apache",
- "compressible": true,
- "extensions": ["bmp"]
- },
- "image/cgm": {
- "source": "iana",
- "extensions": ["cgm"]
- },
- "image/fits": {
- "source": "iana"
- },
- "image/g3fax": {
- "source": "iana",
- "extensions": ["g3"]
- },
- "image/gif": {
- "source": "iana",
- "compressible": false,
- "extensions": ["gif"]
- },
- "image/ief": {
- "source": "iana",
- "extensions": ["ief"]
- },
- "image/jp2": {
- "source": "iana"
- },
- "image/jpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["jpeg","jpg","jpe"]
- },
- "image/jpm": {
- "source": "iana"
- },
- "image/jpx": {
- "source": "iana"
- },
- "image/ktx": {
- "source": "iana",
- "extensions": ["ktx"]
- },
- "image/naplps": {
- "source": "iana"
- },
- "image/pjpeg": {
- "compressible": false
- },
- "image/png": {
- "source": "iana",
- "compressible": false,
- "extensions": ["png"]
- },
- "image/prs.btif": {
- "source": "iana",
- "extensions": ["btif"]
- },
- "image/prs.pti": {
- "source": "iana"
- },
- "image/pwg-raster": {
- "source": "iana"
- },
- "image/sgi": {
- "source": "apache",
- "extensions": ["sgi"]
- },
- "image/svg+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["svg","svgz"]
- },
- "image/t38": {
- "source": "iana"
- },
- "image/tiff": {
- "source": "iana",
- "compressible": false,
- "extensions": ["tiff","tif"]
- },
- "image/tiff-fx": {
- "source": "iana"
- },
- "image/vnd.adobe.photoshop": {
- "source": "iana",
- "compressible": true,
- "extensions": ["psd"]
- },
- "image/vnd.airzip.accelerator.azv": {
- "source": "iana"
- },
- "image/vnd.cns.inf2": {
- "source": "iana"
- },
- "image/vnd.dece.graphic": {
- "source": "iana",
- "extensions": ["uvi","uvvi","uvg","uvvg"]
- },
- "image/vnd.djvu": {
- "source": "iana",
- "extensions": ["djvu","djv"]
- },
- "image/vnd.dvb.subtitle": {
- "source": "iana",
- "extensions": ["sub"]
- },
- "image/vnd.dwg": {
- "source": "iana",
- "extensions": ["dwg"]
- },
- "image/vnd.dxf": {
- "source": "iana",
- "extensions": ["dxf"]
- },
- "image/vnd.fastbidsheet": {
- "source": "iana",
- "extensions": ["fbs"]
- },
- "image/vnd.fpx": {
- "source": "iana",
- "extensions": ["fpx"]
- },
- "image/vnd.fst": {
- "source": "iana",
- "extensions": ["fst"]
- },
- "image/vnd.fujixerox.edmics-mmr": {
- "source": "iana",
- "extensions": ["mmr"]
- },
- "image/vnd.fujixerox.edmics-rlc": {
- "source": "iana",
- "extensions": ["rlc"]
- },
- "image/vnd.globalgraphics.pgb": {
- "source": "iana"
- },
- "image/vnd.microsoft.icon": {
- "source": "iana"
- },
- "image/vnd.mix": {
- "source": "iana"
- },
- "image/vnd.ms-modi": {
- "source": "iana",
- "extensions": ["mdi"]
- },
- "image/vnd.ms-photo": {
- "source": "apache",
- "extensions": ["wdp"]
- },
- "image/vnd.net-fpx": {
- "source": "iana",
- "extensions": ["npx"]
- },
- "image/vnd.radiance": {
- "source": "iana"
- },
- "image/vnd.sealed.png": {
- "source": "iana"
- },
- "image/vnd.sealedmedia.softseal.gif": {
- "source": "iana"
- },
- "image/vnd.sealedmedia.softseal.jpg": {
- "source": "iana"
- },
- "image/vnd.svf": {
- "source": "iana"
- },
- "image/vnd.tencent.tap": {
- "source": "iana"
- },
- "image/vnd.valve.source.texture": {
- "source": "iana"
- },
- "image/vnd.wap.wbmp": {
- "source": "iana",
- "extensions": ["wbmp"]
- },
- "image/vnd.xiff": {
- "source": "iana",
- "extensions": ["xif"]
- },
- "image/vnd.zbrush.pcx": {
- "source": "iana"
- },
- "image/webp": {
- "source": "apache",
- "extensions": ["webp"]
- },
- "image/x-3ds": {
- "source": "apache",
- "extensions": ["3ds"]
- },
- "image/x-cmu-raster": {
- "source": "apache",
- "extensions": ["ras"]
- },
- "image/x-cmx": {
- "source": "apache",
- "extensions": ["cmx"]
- },
- "image/x-freehand": {
- "source": "apache",
- "extensions": ["fh","fhc","fh4","fh5","fh7"]
- },
- "image/x-icon": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ico"]
- },
- "image/x-mrsid-image": {
- "source": "apache",
- "extensions": ["sid"]
- },
- "image/x-ms-bmp": {
- "compressible": true,
- "extensions": ["bmp"]
- },
- "image/x-pcx": {
- "source": "apache",
- "extensions": ["pcx"]
- },
- "image/x-pict": {
- "source": "apache",
- "extensions": ["pic","pct"]
- },
- "image/x-portable-anymap": {
- "source": "apache",
- "extensions": ["pnm"]
- },
- "image/x-portable-bitmap": {
- "source": "apache",
- "extensions": ["pbm"]
- },
- "image/x-portable-graymap": {
- "source": "apache",
- "extensions": ["pgm"]
- },
- "image/x-portable-pixmap": {
- "source": "apache",
- "extensions": ["ppm"]
- },
- "image/x-rgb": {
- "source": "apache",
- "extensions": ["rgb"]
- },
- "image/x-tga": {
- "source": "apache",
- "extensions": ["tga"]
- },
- "image/x-xbitmap": {
- "source": "apache",
- "extensions": ["xbm"]
- },
- "image/x-xcf": {
- "compressible": false
- },
- "image/x-xpixmap": {
- "source": "apache",
- "extensions": ["xpm"]
- },
- "image/x-xwindowdump": {
- "source": "apache",
- "extensions": ["xwd"]
- },
- "message/cpim": {
- "source": "iana"
- },
- "message/delivery-status": {
- "source": "iana"
- },
- "message/disposition-notification": {
- "source": "iana"
- },
- "message/external-body": {
- "source": "iana"
- },
- "message/feedback-report": {
- "source": "iana"
- },
- "message/global": {
- "source": "iana"
- },
- "message/global-delivery-status": {
- "source": "iana"
- },
- "message/global-disposition-notification": {
- "source": "iana"
- },
- "message/global-headers": {
- "source": "iana"
- },
- "message/http": {
- "source": "iana",
- "compressible": false
- },
- "message/imdn+xml": {
- "source": "iana",
- "compressible": true
- },
- "message/news": {
- "source": "iana"
- },
- "message/partial": {
- "source": "iana",
- "compressible": false
- },
- "message/rfc822": {
- "source": "iana",
- "compressible": true,
- "extensions": ["eml","mime"]
- },
- "message/s-http": {
- "source": "iana"
- },
- "message/sip": {
- "source": "iana"
- },
- "message/sipfrag": {
- "source": "iana"
- },
- "message/tracking-status": {
- "source": "iana"
- },
- "message/vnd.si.simp": {
- "source": "iana"
- },
- "message/vnd.wfa.wsc": {
- "source": "iana"
- },
- "model/iges": {
- "source": "iana",
- "compressible": false,
- "extensions": ["igs","iges"]
- },
- "model/mesh": {
- "source": "iana",
- "compressible": false,
- "extensions": ["msh","mesh","silo"]
- },
- "model/vnd.collada+xml": {
- "source": "iana",
- "extensions": ["dae"]
- },
- "model/vnd.dwf": {
- "source": "iana",
- "extensions": ["dwf"]
- },
- "model/vnd.flatland.3dml": {
- "source": "iana"
- },
- "model/vnd.gdl": {
- "source": "iana",
- "extensions": ["gdl"]
- },
- "model/vnd.gs-gdl": {
- "source": "apache"
- },
- "model/vnd.gs.gdl": {
- "source": "iana"
- },
- "model/vnd.gtw": {
- "source": "iana",
- "extensions": ["gtw"]
- },
- "model/vnd.moml+xml": {
- "source": "iana"
- },
- "model/vnd.mts": {
- "source": "iana",
- "extensions": ["mts"]
- },
- "model/vnd.opengex": {
- "source": "iana"
- },
- "model/vnd.parasolid.transmit.binary": {
- "source": "iana"
- },
- "model/vnd.parasolid.transmit.text": {
- "source": "iana"
- },
- "model/vnd.valve.source.compiled-map": {
- "source": "iana"
- },
- "model/vnd.vtu": {
- "source": "iana",
- "extensions": ["vtu"]
- },
- "model/vrml": {
- "source": "iana",
- "compressible": false,
- "extensions": ["wrl","vrml"]
- },
- "model/x3d+binary": {
- "source": "apache",
- "compressible": false,
- "extensions": ["x3db","x3dbz"]
- },
- "model/x3d+fastinfoset": {
- "source": "iana"
- },
- "model/x3d+vrml": {
- "source": "apache",
- "compressible": false,
- "extensions": ["x3dv","x3dvz"]
- },
- "model/x3d+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["x3d","x3dz"]
- },
- "model/x3d-vrml": {
- "source": "iana"
- },
- "multipart/alternative": {
- "source": "iana",
- "compressible": false
- },
- "multipart/appledouble": {
- "source": "iana"
- },
- "multipart/byteranges": {
- "source": "iana"
- },
- "multipart/digest": {
- "source": "iana"
- },
- "multipart/encrypted": {
- "source": "iana",
- "compressible": false
- },
- "multipart/form-data": {
- "source": "iana",
- "compressible": false
- },
- "multipart/header-set": {
- "source": "iana"
- },
- "multipart/mixed": {
- "source": "iana",
- "compressible": false
- },
- "multipart/parallel": {
- "source": "iana"
- },
- "multipart/related": {
- "source": "iana",
- "compressible": false
- },
- "multipart/report": {
- "source": "iana"
- },
- "multipart/signed": {
- "source": "iana",
- "compressible": false
- },
- "multipart/voice-message": {
- "source": "iana"
- },
- "multipart/x-mixed-replace": {
- "source": "iana"
- },
- "text/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "text/cache-manifest": {
- "source": "iana",
- "compressible": true,
- "extensions": ["appcache","manifest"]
- },
- "text/calendar": {
- "source": "iana",
- "extensions": ["ics","ifb"]
- },
- "text/calender": {
- "compressible": true
- },
- "text/cmd": {
- "compressible": true
- },
- "text/coffeescript": {
- "extensions": ["coffee","litcoffee"]
- },
- "text/css": {
- "source": "iana",
- "compressible": true,
- "extensions": ["css"]
- },
- "text/csv": {
- "source": "iana",
- "compressible": true,
- "extensions": ["csv"]
- },
- "text/csv-schema": {
- "source": "iana"
- },
- "text/directory": {
- "source": "iana"
- },
- "text/dns": {
- "source": "iana"
- },
- "text/ecmascript": {
- "source": "iana"
- },
- "text/encaprtp": {
- "source": "iana"
- },
- "text/enriched": {
- "source": "iana"
- },
- "text/fwdred": {
- "source": "iana"
- },
- "text/grammar-ref-list": {
- "source": "iana"
- },
- "text/hjson": {
- "extensions": ["hjson"]
- },
- "text/html": {
- "source": "iana",
- "compressible": true,
- "extensions": ["html","htm"]
- },
- "text/jade": {
- "extensions": ["jade"]
- },
- "text/javascript": {
- "source": "iana",
- "compressible": true
- },
- "text/jcr-cnd": {
- "source": "iana"
- },
- "text/jsx": {
- "compressible": true,
- "extensions": ["jsx"]
- },
- "text/less": {
- "extensions": ["less"]
- },
- "text/markdown": {
- "source": "iana"
- },
- "text/mizar": {
- "source": "iana"
- },
- "text/n3": {
- "source": "iana",
- "compressible": true,
- "extensions": ["n3"]
- },
- "text/parameters": {
- "source": "iana"
- },
- "text/parityfec": {
- "source": "iana"
- },
- "text/plain": {
- "source": "iana",
- "compressible": true,
- "extensions": ["txt","text","conf","def","list","log","in","ini"]
- },
- "text/provenance-notation": {
- "source": "iana"
- },
- "text/prs.fallenstein.rst": {
- "source": "iana"
- },
- "text/prs.lines.tag": {
- "source": "iana",
- "extensions": ["dsc"]
- },
- "text/raptorfec": {
- "source": "iana"
- },
- "text/red": {
- "source": "iana"
- },
- "text/rfc822-headers": {
- "source": "iana"
- },
- "text/richtext": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtx"]
- },
- "text/rtf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtf"]
- },
- "text/rtp-enc-aescm128": {
- "source": "iana"
- },
- "text/rtploopback": {
- "source": "iana"
- },
- "text/rtx": {
- "source": "iana"
- },
- "text/sgml": {
- "source": "iana",
- "extensions": ["sgml","sgm"]
- },
- "text/stylus": {
- "extensions": ["stylus","styl"]
- },
- "text/t140": {
- "source": "iana"
- },
- "text/tab-separated-values": {
- "source": "iana",
- "compressible": true,
- "extensions": ["tsv"]
- },
- "text/troff": {
- "source": "iana",
- "extensions": ["t","tr","roff","man","me","ms"]
- },
- "text/turtle": {
- "source": "iana",
- "extensions": ["ttl"]
- },
- "text/ulpfec": {
- "source": "iana"
- },
- "text/uri-list": {
- "source": "iana",
- "compressible": true,
- "extensions": ["uri","uris","urls"]
- },
- "text/vcard": {
- "source": "iana",
- "compressible": true,
- "extensions": ["vcard"]
- },
- "text/vnd.a": {
- "source": "iana"
- },
- "text/vnd.abc": {
- "source": "iana"
- },
- "text/vnd.curl": {
- "source": "iana",
- "extensions": ["curl"]
- },
- "text/vnd.curl.dcurl": {
- "source": "apache",
- "extensions": ["dcurl"]
- },
- "text/vnd.curl.mcurl": {
- "source": "apache",
- "extensions": ["mcurl"]
- },
- "text/vnd.curl.scurl": {
- "source": "apache",
- "extensions": ["scurl"]
- },
- "text/vnd.debian.copyright": {
- "source": "iana"
- },
- "text/vnd.dmclientscript": {
- "source": "iana"
- },
- "text/vnd.dvb.subtitle": {
- "source": "iana",
- "extensions": ["sub"]
- },
- "text/vnd.esmertec.theme-descriptor": {
- "source": "iana"
- },
- "text/vnd.fly": {
- "source": "iana",
- "extensions": ["fly"]
- },
- "text/vnd.fmi.flexstor": {
- "source": "iana",
- "extensions": ["flx"]
- },
- "text/vnd.graphviz": {
- "source": "iana",
- "extensions": ["gv"]
- },
- "text/vnd.in3d.3dml": {
- "source": "iana",
- "extensions": ["3dml"]
- },
- "text/vnd.in3d.spot": {
- "source": "iana",
- "extensions": ["spot"]
- },
- "text/vnd.iptc.newsml": {
- "source": "iana"
- },
- "text/vnd.iptc.nitf": {
- "source": "iana"
- },
- "text/vnd.latex-z": {
- "source": "iana"
- },
- "text/vnd.motorola.reflex": {
- "source": "iana"
- },
- "text/vnd.ms-mediapackage": {
- "source": "iana"
- },
- "text/vnd.net2phone.commcenter.command": {
- "source": "iana"
- },
- "text/vnd.radisys.msml-basic-layout": {
- "source": "iana"
- },
- "text/vnd.si.uricatalogue": {
- "source": "iana"
- },
- "text/vnd.sun.j2me.app-descriptor": {
- "source": "iana",
- "extensions": ["jad"]
- },
- "text/vnd.trolltech.linguist": {
- "source": "iana"
- },
- "text/vnd.wap.si": {
- "source": "iana"
- },
- "text/vnd.wap.sl": {
- "source": "iana"
- },
- "text/vnd.wap.wml": {
- "source": "iana",
- "extensions": ["wml"]
- },
- "text/vnd.wap.wmlscript": {
- "source": "iana",
- "extensions": ["wmls"]
- },
- "text/vtt": {
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["vtt"]
- },
- "text/x-asm": {
- "source": "apache",
- "extensions": ["s","asm"]
- },
- "text/x-c": {
- "source": "apache",
- "extensions": ["c","cc","cxx","cpp","h","hh","dic"]
- },
- "text/x-component": {
- "extensions": ["htc"]
- },
- "text/x-fortran": {
- "source": "apache",
- "extensions": ["f","for","f77","f90"]
- },
- "text/x-gwt-rpc": {
- "compressible": true
- },
- "text/x-handlebars-template": {
- "extensions": ["hbs"]
- },
- "text/x-java-source": {
- "source": "apache",
- "extensions": ["java"]
- },
- "text/x-jquery-tmpl": {
- "compressible": true
- },
- "text/x-lua": {
- "extensions": ["lua"]
- },
- "text/x-markdown": {
- "compressible": true,
- "extensions": ["markdown","md","mkd"]
- },
- "text/x-nfo": {
- "source": "apache",
- "extensions": ["nfo"]
- },
- "text/x-opml": {
- "source": "apache",
- "extensions": ["opml"]
- },
- "text/x-pascal": {
- "source": "apache",
- "extensions": ["p","pas"]
- },
- "text/x-sass": {
- "extensions": ["sass"]
- },
- "text/x-scss": {
- "extensions": ["scss"]
- },
- "text/x-setext": {
- "source": "apache",
- "extensions": ["etx"]
- },
- "text/x-sfv": {
- "source": "apache",
- "extensions": ["sfv"]
- },
- "text/x-uuencode": {
- "source": "apache",
- "extensions": ["uu"]
- },
- "text/x-vcalendar": {
- "source": "apache",
- "extensions": ["vcs"]
- },
- "text/x-vcard": {
- "source": "apache",
- "extensions": ["vcf"]
- },
- "text/xml": {
- "source": "iana",
- "compressible": true
- },
- "text/xml-external-parsed-entity": {
- "source": "iana"
- },
- "text/yaml": {
- "extensions": ["yaml","yml"]
- },
- "video/1d-interleaved-parityfec": {
- "source": "apache"
- },
- "video/3gpp": {
- "source": "apache",
- "extensions": ["3gp"]
- },
- "video/3gpp-tt": {
- "source": "apache"
- },
- "video/3gpp2": {
- "source": "apache",
- "extensions": ["3g2"]
- },
- "video/bmpeg": {
- "source": "apache"
- },
- "video/bt656": {
- "source": "apache"
- },
- "video/celb": {
- "source": "apache"
- },
- "video/dv": {
- "source": "apache"
- },
- "video/h261": {
- "source": "apache",
- "extensions": ["h261"]
- },
- "video/h263": {
- "source": "apache",
- "extensions": ["h263"]
- },
- "video/h263-1998": {
- "source": "apache"
- },
- "video/h263-2000": {
- "source": "apache"
- },
- "video/h264": {
- "source": "apache",
- "extensions": ["h264"]
- },
- "video/h264-rcdo": {
- "source": "apache"
- },
- "video/h264-svc": {
- "source": "apache"
- },
- "video/jpeg": {
- "source": "apache",
- "extensions": ["jpgv"]
- },
- "video/jpeg2000": {
- "source": "apache"
- },
- "video/jpm": {
- "source": "apache",
- "extensions": ["jpm","jpgm"]
- },
- "video/mj2": {
- "source": "apache",
- "extensions": ["mj2","mjp2"]
- },
- "video/mp1s": {
- "source": "apache"
- },
- "video/mp2p": {
- "source": "apache"
- },
- "video/mp2t": {
- "source": "apache",
- "extensions": ["ts"]
- },
- "video/mp4": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mp4","mp4v","mpg4"]
- },
- "video/mp4v-es": {
- "source": "apache"
- },
- "video/mpeg": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mpeg","mpg","mpe","m1v","m2v"]
- },
- "video/mpeg4-generic": {
- "source": "apache"
- },
- "video/mpv": {
- "source": "apache"
- },
- "video/nv": {
- "source": "apache"
- },
- "video/ogg": {
- "source": "apache",
- "compressible": false,
- "extensions": ["ogv"]
- },
- "video/parityfec": {
- "source": "apache"
- },
- "video/pointer": {
- "source": "apache"
- },
- "video/quicktime": {
- "source": "apache",
- "compressible": false,
- "extensions": ["qt","mov"]
- },
- "video/raw": {
- "source": "apache"
- },
- "video/rtp-enc-aescm128": {
- "source": "apache"
- },
- "video/rtx": {
- "source": "apache"
- },
- "video/smpte292m": {
- "source": "apache"
- },
- "video/ulpfec": {
- "source": "apache"
- },
- "video/vc1": {
- "source": "apache"
- },
- "video/vnd.cctv": {
- "source": "apache"
- },
- "video/vnd.dece.hd": {
- "source": "apache",
- "extensions": ["uvh","uvvh"]
- },
- "video/vnd.dece.mobile": {
- "source": "apache",
- "extensions": ["uvm","uvvm"]
- },
- "video/vnd.dece.mp4": {
- "source": "apache"
- },
- "video/vnd.dece.pd": {
- "source": "apache",
- "extensions": ["uvp","uvvp"]
- },
- "video/vnd.dece.sd": {
- "source": "apache",
- "extensions": ["uvs","uvvs"]
- },
- "video/vnd.dece.video": {
- "source": "apache",
- "extensions": ["uvv","uvvv"]
- },
- "video/vnd.directv.mpeg": {
- "source": "apache"
- },
- "video/vnd.directv.mpeg-tts": {
- "source": "apache"
- },
- "video/vnd.dlna.mpeg-tts": {
- "source": "apache"
- },
- "video/vnd.dvb.file": {
- "source": "apache",
- "extensions": ["dvb"]
- },
- "video/vnd.fvt": {
- "source": "apache",
- "extensions": ["fvt"]
- },
- "video/vnd.hns.video": {
- "source": "apache"
- },
- "video/vnd.iptvforum.1dparityfec-1010": {
- "source": "apache"
- },
- "video/vnd.iptvforum.1dparityfec-2005": {
- "source": "apache"
- },
- "video/vnd.iptvforum.2dparityfec-1010": {
- "source": "apache"
- },
- "video/vnd.iptvforum.2dparityfec-2005": {
- "source": "apache"
- },
- "video/vnd.iptvforum.ttsavc": {
- "source": "apache"
- },
- "video/vnd.iptvforum.ttsmpeg2": {
- "source": "apache"
- },
- "video/vnd.motorola.video": {
- "source": "apache"
- },
- "video/vnd.motorola.videop": {
- "source": "apache"
- },
- "video/vnd.mpegurl": {
- "source": "apache",
- "extensions": ["mxu","m4u"]
- },
- "video/vnd.ms-playready.media.pyv": {
- "source": "apache",
- "extensions": ["pyv"]
- },
- "video/vnd.nokia.interleaved-multimedia": {
- "source": "apache"
- },
- "video/vnd.nokia.videovoip": {
- "source": "apache"
- },
- "video/vnd.objectvideo": {
- "source": "apache"
- },
- "video/vnd.sealed.mpeg1": {
- "source": "apache"
- },
- "video/vnd.sealed.mpeg4": {
- "source": "apache"
- },
- "video/vnd.sealed.swf": {
- "source": "apache"
- },
- "video/vnd.sealedmedia.softseal.mov": {
- "source": "apache"
- },
- "video/vnd.uvvu.mp4": {
- "source": "apache",
- "extensions": ["uvu","uvvu"]
- },
- "video/vnd.vivo": {
- "source": "apache",
- "extensions": ["viv"]
- },
- "video/webm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["webm"]
- },
- "video/x-f4v": {
- "source": "apache",
- "extensions": ["f4v"]
- },
- "video/x-fli": {
- "source": "apache",
- "extensions": ["fli"]
- },
- "video/x-flv": {
- "source": "apache",
- "compressible": false,
- "extensions": ["flv"]
- },
- "video/x-m4v": {
- "source": "apache",
- "extensions": ["m4v"]
- },
- "video/x-matroska": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mkv","mk3d","mks"]
- },
- "video/x-mng": {
- "source": "apache",
- "extensions": ["mng"]
- },
- "video/x-ms-asf": {
- "source": "apache",
- "extensions": ["asf","asx"]
- },
- "video/x-ms-vob": {
- "source": "apache",
- "extensions": ["vob"]
- },
- "video/x-ms-wm": {
- "source": "apache",
- "extensions": ["wm"]
- },
- "video/x-ms-wmv": {
- "source": "apache",
- "compressible": false,
- "extensions": ["wmv"]
- },
- "video/x-ms-wmx": {
- "source": "apache",
- "extensions": ["wmx"]
- },
- "video/x-ms-wvx": {
- "source": "apache",
- "extensions": ["wvx"]
- },
- "video/x-msvideo": {
- "source": "apache",
- "extensions": ["avi"]
- },
- "video/x-sgi-movie": {
- "source": "apache",
- "extensions": ["movie"]
- },
- "video/x-smv": {
- "source": "apache",
- "extensions": ["smv"]
- },
- "x-conference/x-cooltalk": {
- "source": "apache",
- "extensions": ["ice"]
- },
- "x-shader/x-fragment": {
- "compressible": true
- },
- "x-shader/x-vertex": {
- "compressible": true
- }
-}
diff --git a/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js b/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js
deleted file mode 100644
index 551031f69..000000000
--- a/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * mime-db
- * Copyright(c) 2014 Jonathan Ong
- * MIT Licensed
- */
-
-/**
- * Module exports.
- */
-
-module.exports = require('./db.json')
diff --git a/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json
deleted file mode 100644
index 616172299..000000000
--- a/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "name": "mime-db",
- "description": "Media Type Database",
- "version": "1.12.0",
- "contributors": [
- {
- "name": "Douglas Christopher Wilson",
- "email": "doug@somethingdoug.com"
- },
- {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- },
- {
- "name": "Robert Kieffer",
- "email": "robert@broofa.com",
- "url": "http://github.com/broofa"
- }
- ],
- "license": "MIT",
- "keywords": [
- "mime",
- "db",
- "type",
- "types",
- "database",
- "charset",
- "charsets"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jshttp/mime-db.git"
- },
- "devDependencies": {
- "bluebird": "2.9.27",
- "co": "4.5.4",
- "cogent": "1.0.1",
- "csv-parse": "0.1.2",
- "gnode": "0.1.1",
- "istanbul": "0.3.9",
- "mocha": "1.21.5",
- "raw-body": "2.1.0",
- "stream-to-array": "2"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "README.md",
- "db.json",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "build": "node scripts/build",
- "fetch": "gnode scripts/extensions && gnode scripts/types",
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
- "update": "npm run fetch && npm run build"
- },
- "gitHead": "cf35cbba6b22f4a3b3eef9a32129ea5b7f0f91ee",
- "bugs": {
- "url": "https://github.com/jshttp/mime-db/issues"
- },
- "homepage": "https://github.com/jshttp/mime-db",
- "_id": "mime-db@1.12.0",
- "_shasum": "3d0c63180f458eb10d325aaa37d7c58ae312e9d7",
- "_from": "mime-db@>=1.12.0 <1.13.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- },
- "maintainers": [
- {
- "name": "jongleberry",
- "email": "jonathanrichardong@gmail.com"
- },
- {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- }
- ],
- "dist": {
- "shasum": "3d0c63180f458eb10d325aaa37d7c58ae312e9d7",
- "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/mime-types/package.json b/node_modules/request/node_modules/mime-types/package.json
deleted file mode 100644
index 23060b775..000000000
--- a/node_modules/request/node_modules/mime-types/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "mime-types",
- "description": "The ultimate javascript content-type utility.",
- "version": "2.0.14",
- "contributors": [
- {
- "name": "Douglas Christopher Wilson",
- "email": "doug@somethingdoug.com"
- },
- {
- "name": "Jeremiah Senkpiel",
- "email": "fishrock123@rocketmail.com",
- "url": "https://searchbeam.jit.su"
- },
- {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- }
- ],
- "license": "MIT",
- "keywords": [
- "mime",
- "types"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jshttp/mime-types.git"
- },
- "dependencies": {
- "mime-db": "~1.12.0"
- },
- "devDependencies": {
- "istanbul": "0.3.9",
- "mocha": "~1.21.5"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "test": "mocha --reporter spec test/test.js",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js"
- },
- "gitHead": "7d53a3351581eb3d7ae1e846ea860037bce6fe3f",
- "bugs": {
- "url": "https://github.com/jshttp/mime-types/issues"
- },
- "homepage": "https://github.com/jshttp/mime-types",
- "_id": "mime-types@2.0.14",
- "_shasum": "310e159db23e077f8bb22b748dabfa4957140aa6",
- "_from": "mime-types@>=2.0.1 <2.1.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- },
- "maintainers": [
- {
- "name": "jongleberry",
- "email": "jonathanrichardong@gmail.com"
- },
- {
- "name": "fishrock123",
- "email": "fishrock123@rocketmail.com"
- },
- {
- "name": "dougwilson",
- "email": "doug@somethingdoug.com"
- }
- ],
- "dist": {
- "shasum": "310e159db23e077f8bb22b748dabfa4957140aa6",
- "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/node-uuid/.npmignore b/node_modules/request/node_modules/node-uuid/.npmignore
deleted file mode 100644
index fd4f2b066..000000000
--- a/node_modules/request/node_modules/node-uuid/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-.DS_Store
diff --git a/node_modules/request/node_modules/node-uuid/LICENSE.md b/node_modules/request/node_modules/node-uuid/LICENSE.md
deleted file mode 100644
index 652609b37..000000000
--- a/node_modules/request/node_modules/node-uuid/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2010-2012 Robert Kieffer
-
-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/request/node_modules/node-uuid/README.md b/node_modules/request/node_modules/node-uuid/README.md
deleted file mode 100644
index b7d04c940..000000000
--- a/node_modules/request/node_modules/node-uuid/README.md
+++ /dev/null
@@ -1,243 +0,0 @@
-# node-uuid
-
-Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.
-
-Features:
-
-* Generate RFC4122 version 1 or version 4 UUIDs
-* Runs in node.js and all browsers.
-* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').
-* Cryptographically strong random # generation on supporting platforms
-* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )
-* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)
-* Comes with a Command Line Interface for generating uuids on the command line
-
-## Getting Started
-
-Install it in your browser:
-
-```html
-<script src="uuid.js"></script>
-```
-
-Or in node.js:
-
-```
-npm install node-uuid
-```
-
-```javascript
-var uuid = require('node-uuid');
-```
-
-Then create some ids ...
-
-```javascript
-// Generate a v1 (time-based) id
-uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
-
-// Generate a v4 (random) id
-uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'
-```
-
-## API
-
-### uuid.v1([`options` [, `buffer` [, `offset`]]])
-
-Generate and return a RFC4122 v1 (timestamp-based) UUID.
-
-* `options` - (Object) Optional uuid state to apply. Properties may include:
-
- * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.
- * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.
- * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.
- * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.
-
-* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
-* `offset` - (Number) Starting index in `buffer` at which to begin writing.
-
-Returns `buffer`, if specified, otherwise the string form of the UUID
-
-Notes:
-
-1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)
-
-Example: Generate string UUID with fully-specified options
-
-```javascript
-uuid.v1({
- node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
- clockseq: 0x1234,
- msecs: new Date('2011-11-01').getTime(),
- nsecs: 5678
-}); // -> "710b962e-041c-11e1-9234-0123456789ab"
-```
-
-Example: In-place generation of two binary IDs
-
-```javascript
-// Generate two ids in an array
-var arr = new Array(32); // -> []
-uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]
-uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]
-
-// Optionally use uuid.unparse() to get stringify the ids
-uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'
-uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'
-```
-
-### uuid.v4([`options` [, `buffer` [, `offset`]]])
-
-Generate and return a RFC4122 v4 UUID.
-
-* `options` - (Object) Optional uuid state to apply. Properties may include:
-
- * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values
- * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.
-
-* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
-* `offset` - (Number) Starting index in `buffer` at which to begin writing.
-
-Returns `buffer`, if specified, otherwise the string form of the UUID
-
-Example: Generate string UUID with fully-specified options
-
-```javascript
-uuid.v4({
- random: [
- 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,
- 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36
- ]
-});
-// -> "109156be-c4fb-41ea-b1b4-efe1671c5836"
-```
-
-Example: Generate two IDs in a single buffer
-
-```javascript
-var buffer = new Array(32); // (or 'new Buffer' in node.js)
-uuid.v4(null, buffer, 0);
-uuid.v4(null, buffer, 16);
-```
-
-### uuid.parse(id[, buffer[, offset]])
-### uuid.unparse(buffer[, offset])
-
-Parse and unparse UUIDs
-
- * `id` - (String) UUID(-like) string
- * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used
- * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0
-
-Example parsing and unparsing a UUID string
-
-```javascript
-var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>
-var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'
-```
-
-### uuid.noConflict()
-
-(Browsers only) Set `uuid` property back to it's previous value.
-
-Returns the node-uuid object.
-
-Example:
-
-```javascript
-var myUuid = uuid.noConflict();
-myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
-```
-
-## Deprecated APIs
-
-Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.
-
-### uuid([format [, buffer [, offset]]])
-
-uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).
-
-### uuid.BufferClass
-
-The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.
-
-## Command Line Interface
-
-To use the executable, it's probably best to install this library globally.
-
-`npm install -g node-uuid`
-
-Usage:
-
-```
-USAGE: uuid [version] [options]
-
-
-options:
-
---help Display this message and exit
-```
-
-`version` must be an RFC4122 version that is supported by this library, which is currently version 1 and version 4 (denoted by "v1" and "v4", respectively). `version` defaults to version 4 when not supplied.
-
-### Examples
-
-```
-> uuid
-3a91f950-dec8-4688-ba14-5b7bbfc7a563
-```
-
-```
-> uuid v1
-9d0b43e0-7696-11e3-964b-250efa37a98e
-```
-
-```
-> uuid v4
-6790ac7c-24ac-4f98-8464-42f6d98a53ae
-```
-
-## Testing
-
-In node.js
-
-```
-npm test
-```
-
-In Browser
-
-```
-open test/test.html
-```
-
-### Benchmarking
-
-Requires node.js
-
-```
-npm install uuid uuid-js
-node benchmark/benchmark.js
-```
-
-For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)
-
-For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).
-
-## Release notes
-
-### 1.4.0
-
-* Improved module context detection
-* Removed public RNG functions
-
-### 1.3.2
-
-* Improve tests and handling of v1() options (Issue #24)
-* Expose RNG option to allow for perf testing with different generators
-
-### 1.3.0
-
-* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
-* Support for node.js crypto API
-* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code
diff --git a/node_modules/request/node_modules/node-uuid/benchmark/README.md b/node_modules/request/node_modules/node-uuid/benchmark/README.md
deleted file mode 100644
index aaeb2ea01..000000000
--- a/node_modules/request/node_modules/node-uuid/benchmark/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# node-uuid Benchmarks
-
-### Results
-
-To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark
-
-### Run them yourself
-
-node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`.
-
-To prepare and run the benchmark issue;
-
-```
-npm install uuid uuid-js
-node benchmark/benchmark.js
-```
-
-You'll see an output like this one:
-
-```
-# v4
-nodeuuid.v4(): 854700 uuids/second
-nodeuuid.v4('binary'): 788643 uuids/second
-nodeuuid.v4('binary', buffer): 1336898 uuids/second
-uuid(): 479386 uuids/second
-uuid('binary'): 582072 uuids/second
-uuidjs.create(4): 312304 uuids/second
-
-# v1
-nodeuuid.v1(): 938086 uuids/second
-nodeuuid.v1('binary'): 683060 uuids/second
-nodeuuid.v1('binary', buffer): 1644736 uuids/second
-uuidjs.create(1): 190621 uuids/second
-```
-
-* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library.
-* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK.
-
-If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file:
-
-```
-for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done;
-```
-
-If you're interested in how performance varies between different node versions, you can issue the above command multiple times.
-
-You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot:
-
-```
-(cd benchmark/ && ./bench.sh)
-```
-
-This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then.
diff --git a/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu b/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu
deleted file mode 100644
index a342fbbe0..000000000
--- a/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/opt/local/bin/gnuplot -persist
-#
-#
-# G N U P L O T
-# Version 4.4 patchlevel 3
-# last modified March 2011
-# System: Darwin 10.8.0
-#
-# Copyright (C) 1986-1993, 1998, 2004, 2007-2010
-# Thomas Williams, Colin Kelley and many others
-#
-# gnuplot home: http://www.gnuplot.info
-# faq, bugs, etc: type "help seeking-assistance"
-# immediate help: type "help"
-# plot window: hit 'h'
-set terminal postscript eps noenhanced defaultplex \
- leveldefault color colortext \
- solid linewidth 1.2 butt noclip \
- palfuncparam 2000,0.003 \
- "Helvetica" 14
-set output 'bench.eps'
-unset clip points
-set clip one
-unset clip two
-set bar 1.000000 front
-set border 31 front linetype -1 linewidth 1.000
-set xdata
-set ydata
-set zdata
-set x2data
-set y2data
-set timefmt x "%d/%m/%y,%H:%M"
-set timefmt y "%d/%m/%y,%H:%M"
-set timefmt z "%d/%m/%y,%H:%M"
-set timefmt x2 "%d/%m/%y,%H:%M"
-set timefmt y2 "%d/%m/%y,%H:%M"
-set timefmt cb "%d/%m/%y,%H:%M"
-set boxwidth
-set style fill empty border
-set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1
-set style circle radius graph 0.02, first 0, 0
-set dummy x,y
-set format x "% g"
-set format y "% g"
-set format x2 "% g"
-set format y2 "% g"
-set format z "% g"
-set format cb "% g"
-set angles radians
-unset grid
-set key title ""
-set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox
-set key noinvert samplen 4 spacing 1 width 0 height 0
-set key maxcolumns 2 maxrows 0
-unset label
-unset arrow
-set style increment default
-unset style line
-set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0
-unset style arrow
-set style histogram clustered gap 2 title offset character 0, 0, 0
-unset logscale
-set offsets graph 0.05, 0.15, 0, 0
-set pointsize 1.5
-set pointintervalbox 1
-set encoding default
-unset polar
-unset parametric
-unset decimalsign
-set view 60, 30, 1, 1
-set samples 100, 100
-set isosamples 10, 10
-set surface
-unset contour
-set clabel '%8.3g'
-set mapping cartesian
-set datafile separator whitespace
-unset hidden3d
-set cntrparam order 4
-set cntrparam linear
-set cntrparam levels auto 5
-set cntrparam points 5
-set size ratio 0 1,1
-set origin 0,0
-set style data points
-set style function lines
-set xzeroaxis linetype -2 linewidth 1.000
-set yzeroaxis linetype -2 linewidth 1.000
-set zzeroaxis linetype -2 linewidth 1.000
-set x2zeroaxis linetype -2 linewidth 1.000
-set y2zeroaxis linetype -2 linewidth 1.000
-set ticslevel 0.5
-set mxtics default
-set mytics default
-set mztics default
-set mx2tics default
-set my2tics default
-set mcbtics default
-set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0
-set xtics norangelimit
-set xtics ()
-set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0
-set ytics autofreq norangelimit
-set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0
-set ztics autofreq norangelimit
-set nox2tics
-set noy2tics
-set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0
-set cbtics autofreq norangelimit
-set title ""
-set title offset character 0, 0, 0 font "" norotate
-set timestamp bottom
-set timestamp ""
-set timestamp offset character 0, 0, 0 font "" norotate
-set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] )
-set autoscale rfixmin
-set autoscale rfixmax
-set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] )
-set autoscale tfixmin
-set autoscale tfixmax
-set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
-set autoscale ufixmin
-set autoscale ufixmax
-set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
-set autoscale vfixmin
-set autoscale vfixmax
-set xlabel ""
-set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate
-set x2label ""
-set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate
-set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] )
-set autoscale xfixmin
-set autoscale xfixmax
-set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] )
-set autoscale x2fixmin
-set autoscale x2fixmax
-set ylabel ""
-set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
-set y2label ""
-set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
-set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] )
-set autoscale yfixmin
-set autoscale yfixmax
-set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] )
-set autoscale y2fixmin
-set autoscale y2fixmax
-set zlabel ""
-set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate
-set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
-set autoscale zfixmin
-set autoscale zfixmax
-set cblabel ""
-set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
-set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] )
-set autoscale cbfixmin
-set autoscale cbfixmax
-set zero 1e-08
-set lmargin -1
-set bmargin -1
-set rmargin -1
-set tmargin -1
-set pm3d explicit at s
-set pm3d scansautomatic
-set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean
-set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB
-set palette rgbformulae 7, 5, 15
-set colorbox default
-set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault
-set loadpath
-set fontpath
-set fit noerrorvariables
-GNUTERM = "aqua"
-plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2
-# EOF
diff --git a/node_modules/request/node_modules/node-uuid/benchmark/bench.sh b/node_modules/request/node_modules/node-uuid/benchmark/bench.sh
deleted file mode 100755
index d870a0cb0..000000000
--- a/node_modules/request/node_modules/node-uuid/benchmark/bench.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-
-# for a given node version run:
-# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done;
-
-PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte')
-FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es)
-INDICES=(2 3 2 3 2 2 2 2 2)
-VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " )
-TMPJOIN="tmp_join"
-OUTPUT="bench_results.txt"
-
-for I in ${!FILES[*]}; do
- F=${FILES[$I]}
- P=${PATTERNS[$I]}
- INDEX=${INDICES[$I]}
- echo "version $F" > $F
- for V in $VERSIONS; do
- (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F
- done
- if [ $I == 0 ]; then
- cat $F > $TMPJOIN
- else
- join $TMPJOIN $F > $OUTPUT
- cp $OUTPUT $TMPJOIN
- fi
- rm $F
-done
-
-rm $TMPJOIN
-
-gnuplot bench.gnu
-convert -density 200 -resize 800x560 -flatten bench.eps bench.png
-rm bench.eps
diff --git a/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c b/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c
deleted file mode 100644
index dbfc75f6d..000000000
--- a/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Test performance of native C UUID generation
-
-To Compile: cc -luuid benchmark-native.c -o benchmark-native
-*/
-
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <uuid/uuid.h>
-
-int main() {
- uuid_t myid;
- char buf[36+1];
- int i;
- struct timeval t;
- double start, finish;
-
- gettimeofday(&t, NULL);
- start = t.tv_sec + t.tv_usec/1e6;
-
- int n = 2e5;
- for (i = 0; i < n; i++) {
- uuid_generate(myid);
- uuid_unparse(myid, buf);
- }
-
- gettimeofday(&t, NULL);
- finish = t.tv_sec + t.tv_usec/1e6;
- double dur = finish - start;
-
- printf("%d uuids/sec", (int)(n/dur));
- return 0;
-}
diff --git a/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js b/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js
deleted file mode 100644
index 40e6efbe7..000000000
--- a/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js
+++ /dev/null
@@ -1,84 +0,0 @@
-try {
- var nodeuuid = require('../uuid');
-} catch (e) {
- console.error('node-uuid require failed - skipping tests');
-}
-
-try {
- var uuid = require('uuid');
-} catch (e) {
- console.error('uuid require failed - skipping tests');
-}
-
-try {
- var uuidjs = require('uuid-js');
-} catch (e) {
- console.error('uuid-js require failed - skipping tests');
-}
-
-var N = 5e5;
-
-function rate(msg, t) {
- console.log(msg + ': ' +
- (N / (Date.now() - t) * 1e3 | 0) +
- ' uuids/second');
-}
-
-console.log('# v4');
-
-// node-uuid - string form
-if (nodeuuid) {
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4();
- rate('nodeuuid.v4() - using node.js crypto RNG', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG});
- rate('nodeuuid.v4() - using Math.random() RNG', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary');
- rate('nodeuuid.v4(\'binary\')', t);
-
- var buffer = new nodeuuid.BufferClass(16);
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer);
- rate('nodeuuid.v4(\'binary\', buffer)', t);
-}
-
-// libuuid - string form
-if (uuid) {
- for (var i = 0, t = Date.now(); i < N; i++) uuid();
- rate('uuid()', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) uuid('binary');
- rate('uuid(\'binary\')', t);
-}
-
-// uuid-js - string form
-if (uuidjs) {
- for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4);
- rate('uuidjs.create(4)', t);
-}
-
-// 140byte.es
-for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)});
-rate('140byte.es_v4', t);
-
-console.log('');
-console.log('# v1');
-
-// node-uuid - v1 string form
-if (nodeuuid) {
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1();
- rate('nodeuuid.v1()', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary');
- rate('nodeuuid.v1(\'binary\')', t);
-
- var buffer = new nodeuuid.BufferClass(16);
- for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer);
- rate('nodeuuid.v1(\'binary\', buffer)', t);
-}
-
-// uuid-js - v1 string form
-if (uuidjs) {
- for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1);
- rate('uuidjs.create(1)', t);
-}
diff --git a/node_modules/request/node_modules/node-uuid/bin/uuid b/node_modules/request/node_modules/node-uuid/bin/uuid
deleted file mode 100755
index f732e9918..000000000
--- a/node_modules/request/node_modules/node-uuid/bin/uuid
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env node
-
-var path = require('path');
-var uuid = require(path.join(__dirname, '..'));
-
-var arg = process.argv[2];
-
-if ('--help' === arg) {
- console.log('\n USAGE: uuid [version] [options]\n\n');
- console.log(' options:\n');
- console.log(' --help Display this message and exit\n');
- process.exit(0);
-}
-
-if (null == arg) {
- console.log(uuid());
- process.exit(0);
-}
-
-if ('v1' !== arg && 'v4' !== arg) {
- console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"');
- process.exit(1);
-}
-
-console.log(uuid[arg]());
-process.exit(0);
diff --git a/node_modules/request/node_modules/node-uuid/bower.json b/node_modules/request/node_modules/node-uuid/bower.json
deleted file mode 100644
index 1656dc819..000000000
--- a/node_modules/request/node_modules/node-uuid/bower.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "node-uuid",
- "version": "1.4.3",
- "homepage": "https://github.com/broofa/node-uuid",
- "authors": [
- "Robert Kieffer <robert@broofa.com>"
- ],
- "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
- "main": "uuid.js",
- "keywords": [
- "uuid",
- "gid",
- "rfc4122"
- ],
- "license": "MIT",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ]
-}
diff --git a/node_modules/request/node_modules/node-uuid/component.json b/node_modules/request/node_modules/node-uuid/component.json
deleted file mode 100644
index 149f84b22..000000000
--- a/node_modules/request/node_modules/node-uuid/component.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "node-uuid",
- "repo": "broofa/node-uuid",
- "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
- "version": "1.4.3",
- "author": "Robert Kieffer <robert@broofa.com>",
- "contributors": [
- {"name": "Christoph Tavan <dev@tavan.de>", "github": "https://github.com/ctavan"}
- ],
- "keywords": ["uuid", "guid", "rfc4122"],
- "dependencies": {},
- "development": {},
- "main": "uuid.js",
- "scripts": [
- "uuid.js"
- ],
- "license": "MIT"
-}
diff --git a/node_modules/request/node_modules/node-uuid/package.json b/node_modules/request/node_modules/node-uuid/package.json
deleted file mode 100644
index 4aa75044a..000000000
--- a/node_modules/request/node_modules/node-uuid/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "node-uuid",
- "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
- "url": "http://github.com/broofa/node-uuid",
- "keywords": [
- "uuid",
- "guid",
- "rfc4122"
- ],
- "author": {
- "name": "Robert Kieffer",
- "email": "robert@broofa.com"
- },
- "contributors": [
- {
- "name": "Christoph Tavan",
- "email": "dev@tavan.de"
- }
- ],
- "bin": {
- "uuid": "./bin/uuid"
- },
- "scripts": {
- "test": "node test/test.js"
- },
- "lib": ".",
- "main": "./uuid.js",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/broofa/node-uuid.git"
- },
- "version": "1.4.3",
- "licenses": [
- {
- "type": "MIT",
- "url": "https://raw.github.com/broofa/node-uuid/master/LICENSE.md"
- }
- ],
- "gitHead": "886463c660a095dfebfa69603921a8d156fdb12c",
- "bugs": {
- "url": "https://github.com/broofa/node-uuid/issues"
- },
- "homepage": "https://github.com/broofa/node-uuid",
- "_id": "node-uuid@1.4.3",
- "_shasum": "319bb7a56e7cb63f00b5c0cd7851cd4b4ddf1df9",
- "_from": "node-uuid@>=1.4.0 <1.5.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "broofa",
- "email": "robert@broofa.com"
- },
- "maintainers": [
- {
- "name": "broofa",
- "email": "robert@broofa.com"
- }
- ],
- "dist": {
- "shasum": "319bb7a56e7cb63f00b5c0cd7851cd4b4ddf1df9",
- "tarball": "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/node_modules/request/node_modules/node-uuid/test/compare_v1.js
deleted file mode 100644
index 05af82215..000000000
--- a/node_modules/request/node_modules/node-uuid/test/compare_v1.js
+++ /dev/null
@@ -1,63 +0,0 @@
-var assert = require('assert'),
- nodeuuid = require('../uuid'),
- uuidjs = require('uuid-js'),
- libuuid = require('uuid').generate,
- util = require('util'),
- exec = require('child_process').exec,
- os = require('os');
-
-// On Mac Os X / macports there's only the ossp-uuid package that provides uuid
-// On Linux there's uuid-runtime which provides uuidgen
-var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t';
-
-function compare(ids) {
- console.log(ids);
- for (var i = 0; i < ids.length; i++) {
- var id = ids[i].split('-');
- id = [id[2], id[1], id[0]].join('');
- ids[i] = id;
- }
- var sorted = ([].concat(ids)).sort();
-
- if (sorted.toString() !== ids.toString()) {
- console.log('Warning: sorted !== ids');
- } else {
- console.log('everything in order!');
- }
-}
-
-// Test time order of v1 uuids
-var ids = [];
-while (ids.length < 10e3) ids.push(nodeuuid.v1());
-
-var max = 10;
-console.log('node-uuid:');
-ids = [];
-for (var i = 0; i < max; i++) ids.push(nodeuuid.v1());
-compare(ids);
-
-console.log('');
-console.log('uuidjs:');
-ids = [];
-for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString());
-compare(ids);
-
-console.log('');
-console.log('libuuid:');
-ids = [];
-var count = 0;
-var last = function() {
- compare(ids);
-}
-var cb = function(err, stdout, stderr) {
- ids.push(stdout.substring(0, stdout.length-1));
- count++;
- if (count < max) {
- return next();
- }
- last();
-};
-var next = function() {
- exec(uuidCmd, cb);
-};
-next();
diff --git a/node_modules/request/node_modules/node-uuid/test/test.html b/node_modules/request/node_modules/node-uuid/test/test.html
deleted file mode 100644
index d80326ec5..000000000
--- a/node_modules/request/node_modules/node-uuid/test/test.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
- <head>
- <style>
- div {
- font-family: monospace;
- font-size: 8pt;
- }
- div.log {color: #444;}
- div.warn {color: #550;}
- div.error {color: #800; font-weight: bold;}
- </style>
- <script src="../uuid.js"></script>
- </head>
- <body>
- <script src="./test.js"></script>
- </body>
-</html>
diff --git a/node_modules/request/node_modules/node-uuid/test/test.js b/node_modules/request/node_modules/node-uuid/test/test.js
deleted file mode 100644
index 246922561..000000000
--- a/node_modules/request/node_modules/node-uuid/test/test.js
+++ /dev/null
@@ -1,228 +0,0 @@
-if (!this.uuid) {
- // node.js
- uuid = require('../uuid');
-}
-
-//
-// x-platform log/assert shims
-//
-
-function _log(msg, type) {
- type = type || 'log';
-
- if (typeof(document) != 'undefined') {
- document.write('<div class="' + type + '">' + msg.replace(/\n/g, '<br />') + '</div>');
- }
- if (typeof(console) != 'undefined') {
- var color = {
- log: '\033[39m',
- warn: '\033[33m',
- error: '\033[31m'
- };
- console[type](color[type] + msg + color.log);
- }
-}
-
-function log(msg) {_log(msg, 'log');}
-function warn(msg) {_log(msg, 'warn');}
-function error(msg) {_log(msg, 'error');}
-
-function assert(res, msg) {
- if (!res) {
- error('FAIL: ' + msg);
- } else {
- log('Pass: ' + msg);
- }
-}
-
-//
-// Unit tests
-//
-
-// Verify ordering of v1 ids created with explicit times
-var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00
-
-function compare(name, ids) {
- ids = ids.map(function(id) {
- return id.split('-').reverse().join('-');
- }).sort();
- var sorted = ([].concat(ids)).sort();
-
- assert(sorted.toString() == ids.toString(), name + ' have expected order');
-}
-
-// Verify ordering of v1 ids created using default behavior
-compare('uuids with current time', [
- uuid.v1(),
- uuid.v1(),
- uuid.v1(),
- uuid.v1(),
- uuid.v1()
-]);
-
-// Verify ordering of v1 ids created with explicit times
-compare('uuids with time option', [
- uuid.v1({msecs: TIME - 10*3600*1000}),
- uuid.v1({msecs: TIME - 1}),
- uuid.v1({msecs: TIME}),
- uuid.v1({msecs: TIME + 1}),
- uuid.v1({msecs: TIME + 28*24*3600*1000})
-]);
-
-assert(
- uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}),
- 'IDs created at same msec are different'
-);
-
-// Verify throw if too many ids created
-var thrown = false;
-try {
- uuid.v1({msecs: TIME, nsecs: 10000});
-} catch (e) {
- thrown = true;
-}
-assert(thrown, 'Exception thrown when > 10K ids created in 1 ms');
-
-// Verify clock regression bumps clockseq
-var uidt = uuid.v1({msecs: TIME});
-var uidtb = uuid.v1({msecs: TIME - 1});
-assert(
- parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1,
- 'Clock regression by msec increments the clockseq'
-);
-
-// Verify clock regression bumps clockseq
-var uidtn = uuid.v1({msecs: TIME, nsecs: 10});
-var uidtnb = uuid.v1({msecs: TIME, nsecs: 9});
-assert(
- parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1,
- 'Clock regression by nsec increments the clockseq'
-);
-
-// Verify explicit options produce expected id
-var id = uuid.v1({
- msecs: 1321651533573,
- nsecs: 5432,
- clockseq: 0x385c,
- node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ]
-});
-assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id');
-
-// Verify adjacent ids across a msec boundary are 1 time unit apart
-var u0 = uuid.v1({msecs: TIME, nsecs: 9999});
-var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0});
-
-var before = u0.split('-')[0], after = u1.split('-')[0];
-var dt = parseInt(after, 16) - parseInt(before, 16);
-assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart');
-
-//
-// Test parse/unparse
-//
-
-id = '00112233445566778899aabbccddeeff';
-assert(uuid.unparse(uuid.parse(id.substr(0,10))) ==
- '00112233-4400-0000-0000-000000000000', 'Short parse');
-assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) ==
- '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse');
-
-//
-// Perf tests
-//
-
-var generators = {
- v1: uuid.v1,
- v4: uuid.v4
-};
-
-var UUID_FORMAT = {
- v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i,
- v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i
-};
-
-var N = 1e4;
-
-// Get %'age an actual value differs from the ideal value
-function divergence(actual, ideal) {
- return Math.round(100*100*(actual - ideal)/ideal)/100;
-}
-
-function rate(msg, t) {
- log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second');
-}
-
-for (var version in generators) {
- var counts = {}, max = 0;
- var generator = generators[version];
- var format = UUID_FORMAT[version];
-
- log('\nSanity check ' + N + ' ' + version + ' uuids');
- for (var i = 0, ok = 0; i < N; i++) {
- id = generator();
- if (!format.test(id)) {
- throw Error(id + ' is not a valid UUID string');
- }
-
- if (id != uuid.unparse(uuid.parse(id))) {
- assert(fail, id + ' is not a valid id');
- }
-
- // Count digits for our randomness check
- if (version == 'v4') {
- var digits = id.replace(/-/g, '').split('');
- for (var j = digits.length-1; j >= 0; j--) {
- var c = digits[j];
- max = Math.max(max, counts[c] = (counts[c] || 0) + 1);
- }
- }
- }
-
- // Check randomness for v4 UUIDs
- if (version == 'v4') {
- // Limit that we get worried about randomness. (Purely empirical choice, this!)
- var limit = 2*100*Math.sqrt(1/N);
-
- log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)');
-
- for (var i = 0; i < 16; i++) {
- var c = i.toString(16);
- var bar = '', n = counts[c], p = Math.round(n/max*100|0);
-
- // 1-3,5-8, and D-F: 1:16 odds over 30 digits
- var ideal = N*30/16;
- if (i == 4) {
- // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits
- ideal = N*(1 + 30/16);
- } else if (i >= 8 && i <= 11) {
- // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits
- ideal = N*(1/4 + 30/16);
- } else {
- // Otherwise: 1:16 odds on 30 digits
- ideal = N*30/16;
- }
- var d = divergence(n, ideal);
-
- // Draw bar using UTF squares (just for grins)
- var s = n/max*50 | 0;
- while (s--) bar += '=';
-
- assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)');
- }
- }
-}
-
-// Perf tests
-for (var version in generators) {
- log('\nPerformance testing ' + version + ' UUIDs');
- var generator = generators[version];
- var buf = new uuid.BufferClass(16);
-
- for (var i = 0, t = Date.now(); i < N; i++) generator();
- rate('uuid.' + version + '()', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) generator('binary');
- rate('uuid.' + version + '(\'binary\')', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf);
- rate('uuid.' + version + '(\'binary\', buffer)', t);
-}
diff --git a/node_modules/request/node_modules/node-uuid/uuid.js b/node_modules/request/node_modules/node-uuid/uuid.js
deleted file mode 100644
index 0a6176979..000000000
--- a/node_modules/request/node_modules/node-uuid/uuid.js
+++ /dev/null
@@ -1,247 +0,0 @@
-// uuid.js
-//
-// Copyright (c) 2010-2012 Robert Kieffer
-// MIT License - http://opensource.org/licenses/mit-license.php
-
-(function() {
- var _global = this;
-
- // Unique ID creation requires a high quality random # generator. We feature
- // detect to determine the best RNG source, normalizing to a function that
- // returns 128-bits of randomness, since that's what's usually required
- var _rng;
-
- // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html
- //
- // Moderately fast, high quality
- if (typeof(_global.require) == 'function') {
- try {
- var _rb = _global.require('crypto').randomBytes;
- _rng = _rb && function() {return _rb(16);};
- } catch(e) {}
- }
-
- if (!_rng && _global.crypto && crypto.getRandomValues) {
- // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
- //
- // Moderately fast, high quality
- var _rnds8 = new Uint8Array(16);
- _rng = function whatwgRNG() {
- crypto.getRandomValues(_rnds8);
- return _rnds8;
- };
- }
-
- if (!_rng) {
- // Math.random()-based (RNG)
- //
- // If all else fails, use Math.random(). It's fast, but is of unspecified
- // quality.
- var _rnds = new Array(16);
- _rng = function() {
- for (var i = 0, r; i < 16; i++) {
- if ((i & 0x03) === 0) r = Math.random() * 0x100000000;
- _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
- }
-
- return _rnds;
- };
- }
-
- // Buffer class to use
- var BufferClass = typeof(_global.Buffer) == 'function' ? _global.Buffer : Array;
-
- // Maps for number <-> hex string conversion
- var _byteToHex = [];
- var _hexToByte = {};
- for (var i = 0; i < 256; i++) {
- _byteToHex[i] = (i + 0x100).toString(16).substr(1);
- _hexToByte[_byteToHex[i]] = i;
- }
-
- // **`parse()` - Parse a UUID into it's component bytes**
- function parse(s, buf, offset) {
- var i = (buf && offset) || 0, ii = 0;
-
- buf = buf || [];
- s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {
- if (ii < 16) { // Don't overflow!
- buf[i + ii++] = _hexToByte[oct];
- }
- });
-
- // Zero out remaining bytes if string was short
- while (ii < 16) {
- buf[i + ii++] = 0;
- }
-
- return buf;
- }
-
- // **`unparse()` - Convert UUID byte array (ala parse()) into a string**
- function unparse(buf, offset) {
- var i = offset || 0, bth = _byteToHex;
- return bth[buf[i++]] + bth[buf[i++]] +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] +
- bth[buf[i++]] + bth[buf[i++]] +
- bth[buf[i++]] + bth[buf[i++]];
- }
-
- // **`v1()` - Generate time-based UUID**
- //
- // Inspired by https://github.com/LiosK/UUID.js
- // and http://docs.python.org/library/uuid.html
-
- // random #'s we need to init node and clockseq
- var _seedBytes = _rng();
-
- // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
- var _nodeId = [
- _seedBytes[0] | 0x01,
- _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]
- ];
-
- // Per 4.2.2, randomize (14 bit) clockseq
- var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;
-
- // Previous uuid creation time
- var _lastMSecs = 0, _lastNSecs = 0;
-
- // See https://github.com/broofa/node-uuid for API details
- function v1(options, buf, offset) {
- var i = buf && offset || 0;
- var b = buf || [];
-
- options = options || {};
-
- var clockseq = options.clockseq != null ? options.clockseq : _clockseq;
-
- // UUID timestamps are 100 nano-second units since the Gregorian epoch,
- // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
- // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
- // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
- var msecs = options.msecs != null ? options.msecs : new Date().getTime();
-
- // Per 4.2.1.2, use count of uuid's generated during the current clock
- // cycle to simulate higher resolution clock
- var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1;
-
- // Time since last uuid creation (in msecs)
- var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
-
- // Per 4.2.1.2, Bump clockseq on clock regression
- if (dt < 0 && options.clockseq == null) {
- clockseq = clockseq + 1 & 0x3fff;
- }
-
- // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
- // time interval
- if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) {
- nsecs = 0;
- }
-
- // Per 4.2.1.2 Throw error if too many uuids are requested
- if (nsecs >= 10000) {
- throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
- }
-
- _lastMSecs = msecs;
- _lastNSecs = nsecs;
- _clockseq = clockseq;
-
- // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
- msecs += 12219292800000;
-
- // `time_low`
- var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
- b[i++] = tl >>> 24 & 0xff;
- b[i++] = tl >>> 16 & 0xff;
- b[i++] = tl >>> 8 & 0xff;
- b[i++] = tl & 0xff;
-
- // `time_mid`
- var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
- b[i++] = tmh >>> 8 & 0xff;
- b[i++] = tmh & 0xff;
-
- // `time_high_and_version`
- b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
- b[i++] = tmh >>> 16 & 0xff;
-
- // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
- b[i++] = clockseq >>> 8 | 0x80;
-
- // `clock_seq_low`
- b[i++] = clockseq & 0xff;
-
- // `node`
- var node = options.node || _nodeId;
- for (var n = 0; n < 6; n++) {
- b[i + n] = node[n];
- }
-
- return buf ? buf : unparse(b);
- }
-
- // **`v4()` - Generate random UUID**
-
- // See https://github.com/broofa/node-uuid for API details
- function v4(options, buf, offset) {
- // Deprecated - 'format' argument, as supported in v1.2
- var i = buf && offset || 0;
-
- if (typeof(options) == 'string') {
- buf = options == 'binary' ? new BufferClass(16) : null;
- options = null;
- }
- options = options || {};
-
- var rnds = options.random || (options.rng || _rng)();
-
- // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
-
- // Copy bytes to buffer, if provided
- if (buf) {
- for (var ii = 0; ii < 16; ii++) {
- buf[i + ii] = rnds[ii];
- }
- }
-
- return buf || unparse(rnds);
- }
-
- // Export public API
- var uuid = v4;
- uuid.v1 = v1;
- uuid.v4 = v4;
- uuid.parse = parse;
- uuid.unparse = unparse;
- uuid.BufferClass = BufferClass;
-
- if (typeof(module) != 'undefined' && module.exports) {
- // Publish as node.js module
- module.exports = uuid;
- } else if (typeof define === 'function' && define.amd) {
- // Publish as AMD module
- define(function() {return uuid;});
-
-
- } else {
- // Publish as global (in browsers)
- var _previousRoot = _global.uuid;
-
- // **`noConflict()` - (browser only) to reset global 'uuid' var**
- uuid.noConflict = function() {
- _global.uuid = _previousRoot;
- return uuid;
- };
-
- _global.uuid = uuid;
- }
-}).call(this);
diff --git a/node_modules/request/node_modules/oauth-sign/LICENSE b/node_modules/request/node_modules/oauth-sign/LICENSE
deleted file mode 100644
index a4a9aee0c..000000000
--- a/node_modules/request/node_modules/oauth-sign/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS \ No newline at end of file
diff --git a/node_modules/request/node_modules/oauth-sign/README.md b/node_modules/request/node_modules/oauth-sign/README.md
deleted file mode 100644
index 34c4a85d2..000000000
--- a/node_modules/request/node_modules/oauth-sign/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-oauth-sign
-==========
-
-OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.
diff --git a/node_modules/request/node_modules/oauth-sign/index.js b/node_modules/request/node_modules/oauth-sign/index.js
deleted file mode 100644
index a587541dc..000000000
--- a/node_modules/request/node_modules/oauth-sign/index.js
+++ /dev/null
@@ -1,134 +0,0 @@
-var crypto = require('crypto')
- , qs = require('querystring')
- ;
-
-function sha1 (key, body) {
- return crypto.createHmac('sha1', key).update(body).digest('base64')
-}
-
-function rsa (key, body) {
- return crypto.createSign("RSA-SHA1").update(body).sign(key, 'base64');
-}
-
-function rfc3986 (str) {
- return encodeURIComponent(str)
- .replace(/!/g,'%21')
- .replace(/\*/g,'%2A')
- .replace(/\(/g,'%28')
- .replace(/\)/g,'%29')
- .replace(/'/g,'%27')
- ;
-}
-
-// Maps object to bi-dimensional array
-// Converts { foo: 'A', bar: [ 'b', 'B' ]} to
-// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]
-function map (obj) {
- var key, val, arr = []
- for (key in obj) {
- val = obj[key]
- if (Array.isArray(val))
- for (var i = 0; i < val.length; i++)
- arr.push([key, val[i]])
- else if (typeof val === "object")
- for (var prop in val)
- arr.push([key + '[' + prop + ']', val[prop]]);
- else
- arr.push([key, val])
- }
- return arr
-}
-
-// Compare function for sort
-function compare (a, b) {
- return a > b ? 1 : a < b ? -1 : 0
-}
-
-function generateBase (httpMethod, base_uri, params) {
- // adapted from https://dev.twitter.com/docs/auth/oauth and
- // https://dev.twitter.com/docs/auth/creating-signature
-
- // Parameter normalization
- // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2
- var normalized = map(params)
- // 1. First, the name and value of each parameter are encoded
- .map(function (p) {
- return [ rfc3986(p[0]), rfc3986(p[1] || '') ]
- })
- // 2. The parameters are sorted by name, using ascending byte value
- // ordering. If two or more parameters share the same name, they
- // are sorted by their value.
- .sort(function (a, b) {
- return compare(a[0], b[0]) || compare(a[1], b[1])
- })
- // 3. The name of each parameter is concatenated to its corresponding
- // value using an "=" character (ASCII code 61) as a separator, even
- // if the value is empty.
- .map(function (p) { return p.join('=') })
- // 4. The sorted name/value pairs are concatenated together into a
- // single string by using an "&" character (ASCII code 38) as
- // separator.
- .join('&')
-
- var base = [
- rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),
- rfc3986(base_uri),
- rfc3986(normalized)
- ].join('&')
-
- return base
-}
-
-function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {
- var base = generateBase(httpMethod, base_uri, params)
- var key = [
- consumer_secret || '',
- token_secret || ''
- ].map(rfc3986).join('&')
-
- return sha1(key, base)
-}
-
-function rsasign (httpMethod, base_uri, params, private_key, token_secret) {
- var base = generateBase(httpMethod, base_uri, params)
- var key = private_key || ''
-
- return rsa(key, base)
-}
-
-function plaintext (consumer_secret, token_secret) {
- var key = [
- consumer_secret || '',
- token_secret || ''
- ].map(rfc3986).join('&')
-
- return key
-}
-
-function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {
- var method
- var skipArgs = 1
-
- switch (signMethod) {
- case 'RSA-SHA1':
- method = rsasign
- break
- case 'HMAC-SHA1':
- method = hmacsign
- break
- case 'PLAINTEXT':
- method = plaintext
- skipArgs = 4
- break
- default:
- throw new Error("Signature method not supported: " + signMethod)
- }
-
- return method.apply(null, [].slice.call(arguments, skipArgs))
-}
-
-exports.hmacsign = hmacsign
-exports.rsasign = rsasign
-exports.plaintext = plaintext
-exports.sign = sign
-exports.rfc3986 = rfc3986
diff --git a/node_modules/request/node_modules/oauth-sign/package.json b/node_modules/request/node_modules/oauth-sign/package.json
deleted file mode 100644
index eeaaa68d3..000000000
--- a/node_modules/request/node_modules/oauth-sign/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "oauth-sign",
- "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.",
- "version": "0.8.0",
- "license": "Apache-2.0",
- "repository": {
- "url": "git+https://github.com/mikeal/oauth-sign.git"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "scripts": {
- "test": "node test.js"
- },
- "gitHead": "e1f2b42ff039901ce977f8e81918767d97d496b5",
- "bugs": {
- "url": "https://github.com/mikeal/oauth-sign/issues"
- },
- "homepage": "https://github.com/mikeal/oauth-sign#readme",
- "_id": "oauth-sign@0.8.0",
- "_shasum": "938fdc875765ba527137d8aec9d178e24debc553",
- "_from": "oauth-sign@>=0.8.0 <0.9.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- }
- ],
- "dist": {
- "shasum": "938fdc875765ba527137d8aec9d178e24debc553",
- "tarball": "http://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/oauth-sign/test.js b/node_modules/request/node_modules/oauth-sign/test.js
deleted file mode 100644
index a8847270d..000000000
--- a/node_modules/request/node_modules/oauth-sign/test.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var oauth = require('./index')
- , hmacsign = oauth.hmacsign
- , assert = require('assert')
- , qs = require('querystring')
- ;
-
-// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth
-
-var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token',
- { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11'
- , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
- , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk'
- , oauth_signature_method: 'HMAC-SHA1'
- , oauth_timestamp: '1272323042'
- , oauth_version: '1.0'
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98")
-
-console.log(reqsign)
-console.log('8wUi7m5HFQy76nowoCThusfgB+Q=')
-assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=')
-
-var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token',
- { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
- , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8'
- , oauth_signature_method: 'HMAC-SHA1'
- , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc'
- , oauth_timestamp: '1272323047'
- , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY'
- , oauth_version: '1.0'
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA")
-
-console.log(accsign)
-console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
-assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
-
-var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json',
- { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
- , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
- , oauth_signature_method: "HMAC-SHA1"
- , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
- , oauth_timestamp: "1272325550"
- , oauth_version: "1.0"
- , status: 'setting up my twitter 私のさえずりを設定する'
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
-
-console.log(upsign)
-console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=')
-assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=')
-
-// handle objects in params (useful for Wordpress REST API)
-var upsign = hmacsign('POST', 'http://wordpress.com/wp-json',
- { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
- , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
- , oauth_signature_method: "HMAC-SHA1"
- , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
- , oauth_timestamp: "1272325550"
- , oauth_version: "1.0"
- , filter: { number: "-1" }
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
-
-console.log(upsign)
-console.log('YrJFBdwnjuIitGpKrxLUplcuuUQ=')
-assert.equal(upsign, 'YrJFBdwnjuIitGpKrxLUplcuuUQ=')
-
-// example in rfc5849
-var params = qs.parse('b5=%3D%253D&a3=a&c%40=&a2=r%20b' + '&' + 'c2&a3=2+q')
-params.oauth_consumer_key = '9djdj82h48djs9d2'
-params.oauth_token = 'kkk9d7dh3k39sjv7'
-params.oauth_nonce = '7d8f3e4a'
-params.oauth_signature_method = 'HMAC-SHA1'
-params.oauth_timestamp = '137131201'
-
-var rfc5849sign = hmacsign('POST', 'http://example.com/request',
- params, "j49sk3j29djd", "dh893hdasih9")
-
-console.log(rfc5849sign)
-console.log('r6/TJjbCOr97/+UU0NsvSne7s5g=')
-assert.equal(rfc5849sign, 'r6/TJjbCOr97/+UU0NsvSne7s5g=')
-
-
-// PLAINTEXT
-
-var plainSign = oauth.sign('PLAINTEXT', 'GET', 'http://dummy.com', {}, 'consumer_secret', 'token_secret')
-console.log(plainSign)
-assert.equal(plainSign, 'consumer_secret&token_secret')
-
-plainSign = oauth.plaintext('consumer_secret', 'token_secret')
-console.log(plainSign)
-assert.equal(plainSign, 'consumer_secret&token_secret')
diff --git a/node_modules/request/node_modules/qs/.eslintignore b/node_modules/request/node_modules/qs/.eslintignore
deleted file mode 100644
index 1521c8b76..000000000
--- a/node_modules/request/node_modules/qs/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-dist
diff --git a/node_modules/request/node_modules/qs/.jshintignore b/node_modules/request/node_modules/qs/.jshintignore
deleted file mode 100644
index 3c3629e64..000000000
--- a/node_modules/request/node_modules/qs/.jshintignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/node_modules/request/node_modules/qs/.npmignore b/node_modules/request/node_modules/qs/.npmignore
deleted file mode 100644
index 2abba8d25..000000000
--- a/node_modules/request/node_modules/qs/.npmignore
+++ /dev/null
@@ -1,19 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-complexity.md
-dist
diff --git a/node_modules/request/node_modules/qs/.travis.yml b/node_modules/request/node_modules/qs/.travis.yml
deleted file mode 100644
index f50217888..000000000
--- a/node_modules/request/node_modules/qs/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
- - 0.12
- - iojs
diff --git a/node_modules/request/node_modules/qs/CHANGELOG.md b/node_modules/request/node_modules/qs/CHANGELOG.md
deleted file mode 100644
index 1fadc78ee..000000000
--- a/node_modules/request/node_modules/qs/CHANGELOG.md
+++ /dev/null
@@ -1,88 +0,0 @@
-
-## [**3.1.0**](https://github.com/hapijs/qs/issues?milestone=24&state=open)
-- [**#89**](https://github.com/hapijs/qs/issues/89) Add option to disable "Transform dot notation to bracket notation"
-
-## [**3.0.0**](https://github.com/hapijs/qs/issues?milestone=23&state=closed)
-- [**#77**](https://github.com/hapijs/qs/issues/77) Perf boost
-- [**#60**](https://github.com/hapijs/qs/issues/60) Add explicit option to disable array parsing
-- [**#80**](https://github.com/hapijs/qs/issues/80) qs.parse silently drops properties
-- [**#74**](https://github.com/hapijs/qs/issues/74) Bad parse when turning array into object
-- [**#81**](https://github.com/hapijs/qs/issues/81) Add a `filter` option
-- [**#68**](https://github.com/hapijs/qs/issues/68) Fixed issue with recursion and passing strings into objects.
-- [**#66**](https://github.com/hapijs/qs/issues/66) Add mixed array and object dot notation support Closes: #47
-- [**#76**](https://github.com/hapijs/qs/issues/76) RFC 3986
-- [**#85**](https://github.com/hapijs/qs/issues/85) No equal sign
-- [**#84**](https://github.com/hapijs/qs/issues/84) update license attribute
-
-## [**2.4.1**](https://github.com/hapijs/qs/issues?milestone=20&state=closed)
-- [**#73**](https://github.com/hapijs/qs/issues/73) Property 'hasOwnProperty' of object #<Object> is not a function
-
-## [**2.4.0**](https://github.com/hapijs/qs/issues?milestone=19&state=closed)
-- [**#70**](https://github.com/hapijs/qs/issues/70) Add arrayFormat option
-
-## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=closed)
-- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57
-- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader
-
-## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed)
-- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object
-
-## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed)
-- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError".
-
-## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed)
-- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46
-
-## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed)
-- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer?
-- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45
-- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39
-
-## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed)
-- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number
-
-## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed)
-- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array
-- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x
-
-## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed)
-- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value
-- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty
-- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver?
-
-## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed)
-- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31
-- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects
-
-## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed)
-- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present
-- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays
-- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge
-- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters?
-
-## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed)
-- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter
-
-## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed)
-- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit?
-- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit
-- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20
-
-## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed)
-- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values
-
-## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed)
-- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters
-- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block
-
-## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed)
-- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument
-- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed
-
-## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed)
-- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted
-- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null
-- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README
-
-## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed)
-- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index
diff --git a/node_modules/request/node_modules/qs/CONTRIBUTING.md b/node_modules/request/node_modules/qs/CONTRIBUTING.md
deleted file mode 100644
index 892836159..000000000
--- a/node_modules/request/node_modules/qs/CONTRIBUTING.md
+++ /dev/null
@@ -1 +0,0 @@
-Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/node_modules/request/node_modules/qs/LICENSE b/node_modules/request/node_modules/qs/LICENSE
deleted file mode 100644
index d4569487a..000000000
--- a/node_modules/request/node_modules/qs/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2014 Nathan LaFreniere and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * 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.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-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 HOLDERS AND 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 complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors
diff --git a/node_modules/request/node_modules/qs/Makefile b/node_modules/request/node_modules/qs/Makefile
deleted file mode 100644
index 31cc899d4..000000000
--- a/node_modules/request/node_modules/qs/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-test:
- @node node_modules/lab/bin/lab -a code -L
-test-cov:
- @node node_modules/lab/bin/lab -a code -t 100 -L
-test-cov-html:
- @node node_modules/lab/bin/lab -a code -L -r html -o coverage.html
-
-.PHONY: test test-cov test-cov-html
diff --git a/node_modules/request/node_modules/qs/Readme.md b/node_modules/request/node_modules/qs/Readme.md
deleted file mode 100644
index 0c72aba5d..000000000
--- a/node_modules/request/node_modules/qs/Readme.md
+++ /dev/null
@@ -1,303 +0,0 @@
-# qs
-
-A querystring parsing and stringifying library with some added security.
-
-[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs)
-
-Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf)
-
-The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring).
-
-## Usage
-
-```javascript
-var Qs = require('qs');
-
-var obj = Qs.parse('a=c'); // { a: 'c' }
-var str = Qs.stringify(obj); // 'a=c'
-```
-
-### Parsing Objects
-
-```javascript
-Qs.parse(string, [options]);
-```
-
-**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`, or prefixing the sub-key with a dot `.`.
-For example, the string `'foo[bar]=baz'` converts to:
-
-```javascript
-{
- foo: {
- bar: 'baz'
- }
-}
-```
-
-The parsed value is returned as a plain object, created via `Object.create(null)` and as such you should be aware that prototype methods do not exist on it and a user may set those names to whatever value they like:
-
-```javascript
-Qs.parse('a.hasOwnProperty=b');
-// { a: { hasOwnProperty: 'b' } }
-```
-
-URI encoded strings work too:
-
-```javascript
-Qs.parse('a%5Bb%5D=c');
-// { a: { b: 'c' } }
-```
-
-You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`:
-
-```javascript
-{
- foo: {
- bar: {
- baz: 'foobarbaz'
- }
- }
-}
-```
-
-By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like
-`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be:
-
-```javascript
-{
- a: {
- b: {
- c: {
- d: {
- e: {
- f: {
- '[g][h][i]': 'j'
- }
- }
- }
- }
- }
- }
-}
-```
-
-This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`:
-
-```javascript
-Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
-// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }
-```
-
-The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number.
-
-For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option:
-
-```javascript
-Qs.parse('a=b&c=d', { parameterLimit: 1 });
-// { a: 'b' }
-```
-
-An optional delimiter can also be passed:
-
-```javascript
-Qs.parse('a=b;c=d', { delimiter: ';' });
-// { a: 'b', c: 'd' }
-```
-
-Delimiters can be a regular expression too:
-
-```javascript
-Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ });
-// { a: 'b', c: 'd', e: 'f' }
-```
-
-### Parsing Arrays
-
-**qs** can also parse arrays using a similar `[]` notation:
-
-```javascript
-Qs.parse('a[]=b&a[]=c');
-// { a: ['b', 'c'] }
-```
-
-You may specify an index as well:
-
-```javascript
-Qs.parse('a[1]=c&a[0]=b');
-// { a: ['b', 'c'] }
-```
-
-Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number
-to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving
-their order:
-
-```javascript
-Qs.parse('a[1]=b&a[15]=c');
-// { a: ['b', 'c'] }
-```
-
-Note that an empty string is also a value, and will be preserved:
-
-```javascript
-Qs.parse('a[]=&a[]=b');
-// { a: ['', 'b'] }
-Qs.parse('a[0]=b&a[1]=&a[2]=c');
-// { a: ['b', '', 'c'] }
-```
-
-**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will
-instead be converted to an object with the index as the key:
-
-```javascript
-Qs.parse('a[100]=b');
-// { a: { '100': 'b' } }
-```
-
-This limit can be overridden by passing an `arrayLimit` option:
-
-```javascript
-Qs.parse('a[1]=b', { arrayLimit: 0 });
-// { a: { '1': 'b' } }
-```
-
-To disable array parsing entirely, set `parseArrays` to `false`.
-
-```javascript
-Qs.parse('a[]=b', { parseArrays: false });
-// { a: { '0': 'b' } }
-```
-
-If you mix notations, **qs** will merge the two items into an object:
-
-```javascript
-Qs.parse('a[0]=b&a[b]=c');
-// { a: { '0': 'b', b: 'c' } }
-```
-
-You can also create arrays of objects:
-
-```javascript
-Qs.parse('a[][b]=c');
-// { a: [{ b: 'c' }] }
-```
-
-### Stringifying
-
-```javascript
-Qs.stringify(object, [options]);
-```
-
-When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect:
-
-```javascript
-Qs.stringify({ a: 'b' });
-// 'a=b'
-Qs.stringify({ a: { b: 'c' } });
-// 'a%5Bb%5D=c'
-```
-
-Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage.
-
-When arrays are stringified, by default they are given explicit indices:
-
-```javascript
-Qs.stringify({ a: ['b', 'c', 'd'] });
-// 'a[0]=b&a[1]=c&a[2]=d'
-```
-
-You may override this by setting the `indices` option to `false`:
-
-```javascript
-Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
-// 'a=b&a=c&a=d'
-```
-
-You may use the `arrayFormat` option to specify the format of the output array
-
-```javascript
-Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
-// 'a[0]=b&a[1]=c'
-Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
-// 'a[]=b&a[]=c'
-Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
-// 'a=b&a=c'
-```
-
-Empty strings and null values will omit the value, but the equals sign (=) remains in place:
-
-```javascript
-Qs.stringify({ a: '' });
-// 'a='
-```
-
-Properties that are set to `undefined` will be omitted entirely:
-
-```javascript
-Qs.stringify({ a: null, b: undefined });
-// 'a='
-```
-
-The delimiter may be overridden with stringify as well:
-
-```javascript
-Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' });
-// 'a=b;c=d'
-```
-
-Finally, you can use the `filter` option to restrict which keys will be included in the stringified output.
-If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you
-pass an array, it will be used to select properties and array indices for stringification:
-
-```javascript
-function filterFunc(prefix, value) {
- if (prefix == 'b') {
- // Return an `undefined` value to omit a property.
- return;
- }
- if (prefix == 'e[f]') {
- return value.getTime();
- }
- if (prefix == 'e[g][0]') {
- return value * 2;
- }
- return value;
-}
-Qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc })
-// 'a=b&c=d&e[f]=123&e[g][0]=4'
-Qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] })
-// 'a=b&e=f'
-Qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] })
-// 'a[0]=b&a[2]=d'
-```
-
-### Handling of `null` values
-
-By default, `null` values are treated like empty strings:
-
-```javascript
-Qs.stringify({ a: null, b: '' });
-// 'a=&b='
-```
-
-Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings.
-
-```javascript
-Qs.parse('a&b=')
-// { a: '', b: '' }
-```
-
-To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null`
-values have no `=` sign:
-
-```javascript
-Qs.stringify({ a: null, b: '' }, { strictNullHandling: true });
-// 'a&b='
-```
-
-To parse values without `=` back to `null` use the `strictNullHandling` flag:
-
-```javascript
-Qs.parse('a&b=', { strictNullHandling: true });
-// { a: null, b: '' }
-
-```
diff --git a/node_modules/request/node_modules/qs/bower.json b/node_modules/request/node_modules/qs/bower.json
deleted file mode 100644
index ffd0641d8..000000000
--- a/node_modules/request/node_modules/qs/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "qs",
- "main": "dist/qs.js",
- "version": "3.0.0",
- "homepage": "https://github.com/hapijs/qs",
- "authors": [
- "Nathan LaFreniere <quitlahok@gmail.com>"
- ],
- "description": "A querystring parser that supports nesting and arrays, with a depth limit",
- "keywords": [
- "querystring",
- "qs"
- ],
- "license": "BSD-3-Clause",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ]
-}
diff --git a/node_modules/request/node_modules/qs/index.js b/node_modules/request/node_modules/qs/index.js
deleted file mode 100644
index 2291cd858..000000000
--- a/node_modules/request/node_modules/qs/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/');
diff --git a/node_modules/request/node_modules/qs/lib/index.js b/node_modules/request/node_modules/qs/lib/index.js
deleted file mode 100644
index 0e094933d..000000000
--- a/node_modules/request/node_modules/qs/lib/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Load modules
-
-var Stringify = require('./stringify');
-var Parse = require('./parse');
-
-
-// Declare internals
-
-var internals = {};
-
-
-module.exports = {
- stringify: Stringify,
- parse: Parse
-};
diff --git a/node_modules/request/node_modules/qs/lib/parse.js b/node_modules/request/node_modules/qs/lib/parse.js
deleted file mode 100644
index 1a1e205e3..000000000
--- a/node_modules/request/node_modules/qs/lib/parse.js
+++ /dev/null
@@ -1,166 +0,0 @@
-// Load modules
-
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {
- delimiter: '&',
- depth: 5,
- arrayLimit: 20,
- parameterLimit: 1000,
- strictNullHandling: false
-};
-
-
-internals.parseValues = function (str, options) {
-
- var obj = {};
- var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
-
- for (var i = 0, il = parts.length; i < il; ++i) {
- var part = parts[i];
- var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
-
- if (pos === -1) {
- obj[Utils.decode(part)] = '';
-
- if (options.strictNullHandling) {
- obj[Utils.decode(part)] = null;
- }
- }
- else {
- var key = Utils.decode(part.slice(0, pos));
- var val = Utils.decode(part.slice(pos + 1));
-
- if (!Object.prototype.hasOwnProperty.call(obj, key)) {
- obj[key] = val;
- }
- else {
- obj[key] = [].concat(obj[key]).concat(val);
- }
- }
- }
-
- return obj;
-};
-
-
-internals.parseObject = function (chain, val, options) {
-
- if (!chain.length) {
- return val;
- }
-
- var root = chain.shift();
-
- var obj;
- if (root === '[]') {
- obj = [];
- obj = obj.concat(internals.parseObject(chain, val, options));
- }
- else {
- obj = Object.create(null);
- var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;
- var index = parseInt(cleanRoot, 10);
- var indexString = '' + index;
- if (!isNaN(index) &&
- root !== cleanRoot &&
- indexString === cleanRoot &&
- index >= 0 &&
- (options.parseArrays &&
- index <= options.arrayLimit)) {
-
- obj = [];
- obj[index] = internals.parseObject(chain, val, options);
- }
- else {
- obj[cleanRoot] = internals.parseObject(chain, val, options);
- }
- }
-
- return obj;
-};
-
-
-internals.parseKeys = function (key, val, options) {
-
- if (!key) {
- return;
- }
-
- // Transform dot notation to bracket notation
-
- if (options.allowDots) {
- key = key.replace(/\.([^\.\[]+)/g, '[$1]');
- }
-
- // The regex chunks
-
- var parent = /^([^\[\]]*)/;
- var child = /(\[[^\[\]]*\])/g;
-
- // Get the parent
-
- var segment = parent.exec(key);
-
- // Stash the parent if it exists
-
- var keys = [];
- if (segment[1]) {
- keys.push(segment[1]);
- }
-
- // Loop through children appending to the array until we hit depth
-
- var i = 0;
- while ((segment = child.exec(key)) !== null && i < options.depth) {
-
- ++i;
- keys.push(segment[1]);
- }
-
- // If there's a remainder, just add whatever is left
-
- if (segment) {
- keys.push('[' + key.slice(segment.index) + ']');
- }
-
- return internals.parseObject(keys, val, options);
-};
-
-
-module.exports = function (str, options) {
-
- if (str === '' ||
- str === null ||
- typeof str === 'undefined') {
-
- return Object.create(null);
- }
-
- options = options || {};
- options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter;
- options.depth = typeof options.depth === 'number' ? options.depth : internals.depth;
- options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit;
- options.parseArrays = options.parseArrays !== false;
- options.allowDots = options.allowDots !== false;
- options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit;
- options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
-
-
- var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str;
- var obj = Object.create(null);
-
- // Iterate over the keys and setup the new object
-
- var keys = Object.keys(tempObj);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var newObj = internals.parseKeys(key, tempObj[key], options);
- obj = Utils.merge(obj, newObj);
- }
-
- return Utils.compact(obj);
-};
diff --git a/node_modules/request/node_modules/qs/lib/stringify.js b/node_modules/request/node_modules/qs/lib/stringify.js
deleted file mode 100644
index 7414284c5..000000000
--- a/node_modules/request/node_modules/qs/lib/stringify.js
+++ /dev/null
@@ -1,121 +0,0 @@
-// Load modules
-
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {
- delimiter: '&',
- arrayPrefixGenerators: {
- brackets: function (prefix, key) {
-
- return prefix + '[]';
- },
- indices: function (prefix, key) {
-
- return prefix + '[' + key + ']';
- },
- repeat: function (prefix, key) {
-
- return prefix;
- }
- },
- strictNullHandling: false
-};
-
-
-internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) {
-
- if (typeof filter === 'function') {
- obj = filter(prefix, obj);
- }
- else if (Utils.isBuffer(obj)) {
- obj = obj.toString();
- }
- else if (obj instanceof Date) {
- obj = obj.toISOString();
- }
- else if (obj === null) {
- if (strictNullHandling) {
- return Utils.encode(prefix);
- }
-
- obj = '';
- }
-
- if (typeof obj === 'string' ||
- typeof obj === 'number' ||
- typeof obj === 'boolean') {
-
- return [Utils.encode(prefix) + '=' + Utils.encode(obj)];
- }
-
- var values = [];
-
- if (typeof obj === 'undefined') {
- return values;
- }
-
- var objKeys = Array.isArray(filter) ? filter : Object.keys(obj);
- for (var i = 0, il = objKeys.length; i < il; ++i) {
- var key = objKeys[i];
-
- if (Array.isArray(obj)) {
- values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter));
- }
- else {
- values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter));
- }
- }
-
- return values;
-};
-
-
-module.exports = function (obj, options) {
-
- options = options || {};
- var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;
- var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
- var objKeys;
- var filter;
- if (typeof options.filter === 'function') {
- filter = options.filter;
- obj = filter('', obj);
- }
- else if (Array.isArray(options.filter)) {
- objKeys = filter = options.filter;
- }
-
- var keys = [];
-
- if (typeof obj !== 'object' ||
- obj === null) {
-
- return '';
- }
-
- var arrayFormat;
- if (options.arrayFormat in internals.arrayPrefixGenerators) {
- arrayFormat = options.arrayFormat;
- }
- else if ('indices' in options) {
- arrayFormat = options.indices ? 'indices' : 'repeat';
- }
- else {
- arrayFormat = 'indices';
- }
-
- var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat];
-
- if (!objKeys) {
- objKeys = Object.keys(obj);
- }
- for (var i = 0, il = objKeys.length; i < il; ++i) {
- var key = objKeys[i];
- keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter));
- }
-
- return keys.join(delimiter);
-};
diff --git a/node_modules/request/node_modules/qs/lib/utils.js b/node_modules/request/node_modules/qs/lib/utils.js
deleted file mode 100644
index ec93afcd2..000000000
--- a/node_modules/request/node_modules/qs/lib/utils.js
+++ /dev/null
@@ -1,190 +0,0 @@
-// Load modules
-
-
-// Declare internals
-
-var internals = {};
-internals.hexTable = new Array(256);
-for (var i = 0; i < 256; ++i) {
- internals.hexTable[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();
-}
-
-
-exports.arrayToObject = function (source) {
-
- var obj = Object.create(null);
- for (var i = 0, il = source.length; i < il; ++i) {
- if (typeof source[i] !== 'undefined') {
-
- obj[i] = source[i];
- }
- }
-
- return obj;
-};
-
-
-exports.merge = function (target, source) {
-
- if (!source) {
- return target;
- }
-
- if (typeof source !== 'object') {
- if (Array.isArray(target)) {
- target.push(source);
- }
- else if (typeof target === 'object') {
- target[source] = true;
- }
- else {
- target = [target, source];
- }
-
- return target;
- }
-
- if (typeof target !== 'object') {
- target = [target].concat(source);
- return target;
- }
-
- if (Array.isArray(target) &&
- !Array.isArray(source)) {
-
- target = exports.arrayToObject(target);
- }
-
- var keys = Object.keys(source);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var value = source[key];
-
- if (!target[key]) {
- target[key] = value;
- }
- else {
- target[key] = exports.merge(target[key], value);
- }
- }
-
- return target;
-};
-
-
-exports.decode = function (str) {
-
- try {
- return decodeURIComponent(str.replace(/\+/g, ' '));
- } catch (e) {
- return str;
- }
-};
-
-exports.encode = function (str) {
-
- // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
- // It has been adapted here for stricter adherence to RFC 3986
- if (str.length === 0) {
- return str;
- }
-
- if (typeof str !== 'string') {
- str = '' + str;
- }
-
- var out = '';
- for (var i = 0, il = str.length; i < il; ++i) {
- var c = str.charCodeAt(i);
-
- if (c === 0x2D || // -
- c === 0x2E || // .
- c === 0x5F || // _
- c === 0x7E || // ~
- (c >= 0x30 && c <= 0x39) || // 0-9
- (c >= 0x41 && c <= 0x5A) || // a-z
- (c >= 0x61 && c <= 0x7A)) { // A-Z
-
- out += str[i];
- continue;
- }
-
- if (c < 0x80) {
- out += internals.hexTable[c];
- continue;
- }
-
- if (c < 0x800) {
- out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)];
- continue;
- }
-
- if (c < 0xD800 || c >= 0xE000) {
- out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)];
- continue;
- }
-
- ++i;
- c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF));
- out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)];
- }
-
- return out;
-};
-
-exports.compact = function (obj, refs) {
-
- if (typeof obj !== 'object' ||
- obj === null) {
-
- return obj;
- }
-
- refs = refs || [];
- var lookup = refs.indexOf(obj);
- if (lookup !== -1) {
- return refs[lookup];
- }
-
- refs.push(obj);
-
- if (Array.isArray(obj)) {
- var compacted = [];
-
- for (var i = 0, il = obj.length; i < il; ++i) {
- if (typeof obj[i] !== 'undefined') {
- compacted.push(obj[i]);
- }
- }
-
- return compacted;
- }
-
- var keys = Object.keys(obj);
- for (i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- obj[key] = exports.compact(obj[key], refs);
- }
-
- return obj;
-};
-
-
-exports.isRegExp = function (obj) {
-
- return Object.prototype.toString.call(obj) === '[object RegExp]';
-};
-
-
-exports.isBuffer = function (obj) {
-
- if (obj === null ||
- typeof obj === 'undefined') {
-
- return false;
- }
-
- return !!(obj.constructor &&
- obj.constructor.isBuffer &&
- obj.constructor.isBuffer(obj));
-};
diff --git a/node_modules/request/node_modules/qs/package.json b/node_modules/request/node_modules/qs/package.json
deleted file mode 100644
index bd7c53cea..000000000
--- a/node_modules/request/node_modules/qs/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "qs",
- "version": "3.1.0",
- "description": "A querystring parser that supports nesting and arrays, with a depth limit",
- "homepage": "https://github.com/hapijs/qs",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "browserify": "^10.2.1",
- "code": "1.x.x",
- "lab": "5.x.x"
- },
- "scripts": {
- "test": "make test-cov",
- "dist": "browserify --standalone Qs index.js > dist/qs.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/hapijs/qs.git"
- },
- "keywords": [
- "querystring",
- "qs"
- ],
- "license": "BSD-3-Clause",
- "gitHead": "e53b1b242a55f886531954ebdd78b3b20efadaf0",
- "bugs": {
- "url": "https://github.com/hapijs/qs/issues"
- },
- "_id": "qs@3.1.0",
- "_shasum": "d0e9ae745233a12dc43fb4f3055bba446261153c",
- "_from": "qs@>=3.1.0 <3.2.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "0.12.2",
- "_npmUser": {
- "name": "nlf",
- "email": "quitlahok@gmail.com"
- },
- "dist": {
- "shasum": "d0e9ae745233a12dc43fb4f3055bba446261153c",
- "tarball": "http://registry.npmjs.org/qs/-/qs-3.1.0.tgz"
- },
- "maintainers": [
- {
- "name": "nlf",
- "email": "quitlahok@gmail.com"
- },
- {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/qs/-/qs-3.1.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/qs/test/parse.js b/node_modules/request/node_modules/qs/test/parse.js
deleted file mode 100644
index 9afbf35f0..000000000
--- a/node_modules/request/node_modules/qs/test/parse.js
+++ /dev/null
@@ -1,455 +0,0 @@
-/* eslint no-extend-native:0 */
-// Load modules
-
-var Code = require('code');
-var Lab = require('lab');
-var Qs = require('../');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var expect = Code.expect;
-var describe = lab.experiment;
-var it = lab.test;
-
-
-describe('parse()', function () {
-
- it('parses a simple string', function (done) {
-
- expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' }, { prototype: false });
- expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' }, { prototype: false });
- expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } }, { prototype: false });
- expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } }, { prototype: false });
- expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } }, { prototype: false });
- expect(Qs.parse('foo', {strictNullHandling: true})).to.deep.equal({ foo: null }, { prototype: false });
- expect(Qs.parse('foo' )).to.deep.equal({ foo: '' }, { prototype: false });
- expect(Qs.parse('foo=')).to.deep.equal({ foo: '' }, { prototype: false });
- expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' }, { prototype: false });
- expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' }, { prototype: false });
- expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' }, { prototype: false });
- expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' }, { prototype: false });
- expect(Qs.parse('foo2=bar2&baz2=')).to.deep.equal({ foo2: 'bar2', baz2: '' }, { prototype: false });
- expect(Qs.parse('foo=bar&baz', {strictNullHandling: true})).to.deep.equal({ foo: 'bar', baz: null }, { prototype: false });
- expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' }, { prototype: false });
- expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({
- cht: 'p3',
- chd: 't:60,40',
- chs: '250x100',
- chl: 'Hello|World'
- }, { prototype: false });
- done();
- });
-
- it('allows disabling dot notation', function (done) {
-
- expect(Qs.parse('a.b=c')).to.deep.equal({ a: { b: 'c' } }, { prototype: false });
- expect(Qs.parse('a.b=c', { allowDots: false })).to.deep.equal({ 'a.b': 'c' }, { prototype: false });
- done();
- });
-
- it('parses a single nested string', function (done) {
-
- expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } }, { prototype: false });
- done();
- });
-
- it('parses a double nested string', function (done) {
-
- expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } }, { prototype: false });
- done();
- });
-
- it('defaults to a depth of 5', function (done) {
-
- expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, { prototype: false });
- done();
- });
-
- it('only parses one level when depth = 1', function (done) {
-
- expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } }, { prototype: false });
- expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } }, { prototype: false });
- done();
- });
-
- it('parses a simple array', function (done) {
-
- expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- done();
- });
-
- it('parses an explicit array', function (done) {
-
- expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] }, { prototype: false });
- expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }, { prototype: false });
- done();
- });
-
- it('parses a mix of simple and explicit arrays', function (done) {
-
- expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- done();
- });
-
- it('parses a nested array', function (done) {
-
- expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } }, { prototype: false });
- expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } }, { prototype: false });
- done();
- });
-
- it('allows to specify array indices', function (done) {
-
- expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }, { prototype: false });
- expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false });
- expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] }, { prototype: false });
- done();
- });
-
- it('limits specific array indices to 20', function (done) {
-
- expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] }, { prototype: false });
- expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } }, { prototype: false });
- done();
- });
-
- it('supports keys that begin with a number', function (done) {
-
- expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } }, { prototype: false });
- done();
- });
-
- it('supports encoded = signs', function (done) {
-
- expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' }, { prototype: false });
- done();
- });
-
- it('is ok with url encoded strings', function (done) {
-
- expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } }, { prototype: false });
- expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } }, { prototype: false });
- done();
- });
-
- it('allows brackets in the value', function (done) {
-
- expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' }, { prototype: false });
- expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' }, { prototype: false });
- done();
- });
-
- it('allows empty values', function (done) {
-
- expect(Qs.parse('')).to.deep.equal({}, { prototype: false });
- expect(Qs.parse(null)).to.deep.equal({}, { prototype: false });
- expect(Qs.parse(undefined)).to.deep.equal({}, { prototype: false });
- done();
- });
-
- it('transforms arrays to objects', function (done) {
-
- expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }, { prototype: false });
- expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false });
- expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false });
- expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }, { prototype: false });
- expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }, { prototype: false });
- expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]}, { prototype: false });
- expect(Qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c')).to.deep.equal({ a: { '0': 'b', t: 'u', hasOwnProperty: 'c' } }, { prototype: false });
- expect(Qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y')).to.deep.equal({ a: { '0': 'b', hasOwnProperty: 'c', x: 'y' } }, { prototype: false });
- done();
- });
-
- it('transforms arrays to objects (dot notation)', function (done) {
-
- expect(Qs.parse('foo[0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [ { baz: 'bar'} ], fool: { bad: 'baz' } }, { prototype: false });
- expect(Qs.parse('foo[0].baz=bar&fool.bad.boo=baz')).to.deep.equal({ foo: [ { baz: 'bar'} ], fool: { bad: { boo: 'baz' } } }, { prototype: false });
- expect(Qs.parse('foo[0][0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [[ { baz: 'bar'} ]], fool: { bad: 'baz' } }, { prototype: false });
- expect(Qs.parse('foo[0].baz[0]=15&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15'], bar: '2' }] }, { prototype: false });
- expect(Qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15', '16'], bar: '2' }] }, { prototype: false });
- expect(Qs.parse('foo.bad=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false });
- expect(Qs.parse('foo.bad=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false });
- expect(Qs.parse('foo[]=bar&foo.bad=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }, { prototype: false });
- expect(Qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }, { prototype: false });
- expect(Qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]}, { prototype: false });
- done();
- });
-
- it('can add keys to objects', function (done) {
-
- expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } }, { prototype: false });
- done();
- });
-
- it('correctly prunes undefined values when converting an array to an object', function (done) {
-
- expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } }, { prototype: false });
- done();
- });
-
- it('supports malformed uri characters', function (done) {
-
- expect(Qs.parse('{%:%}', {strictNullHandling: true})).to.deep.equal({ '{%:%}': null }, { prototype: false });
- expect(Qs.parse('{%:%}=')).to.deep.equal({ '{%:%}': '' }, { prototype: false });
- expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' }, { prototype: false });
- done();
- });
-
- it('doesn\'t produce empty keys', function (done) {
-
- expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' }, { prototype: false });
- done();
- });
-
- it('cannot access Object prototype', function (done) {
-
- Qs.parse('constructor[prototype][bad]=bad');
- Qs.parse('bad[constructor][prototype][bad]=bad');
- expect(typeof Object.prototype.bad).to.equal('undefined');
- done();
- });
-
- it('parses arrays of objects', function (done) {
-
- expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }, { prototype: false });
- expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }, { prototype: false });
- done();
- });
-
- it('allows for empty strings in arrays', function (done) {
-
- expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] }, { prototype: false });
- expect(Qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', {strictNullHandling: true})).to.deep.equal({ a: ['b', null, 'c', ''] }, { prototype: false });
- expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', {strictNullHandling: true})).to.deep.equal({ a: ['b', '', 'c', null] }, { prototype: false });
- expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] }, { prototype: false });
- done();
- });
-
- it('compacts sparse arrays', function (done) {
-
- expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] }, { prototype: false });
- done();
- });
-
- it('parses semi-parsed strings', function (done) {
-
- expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } }, { prototype: false });
- expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } }, { prototype: false });
- done();
- });
-
- it('parses buffers correctly', function (done) {
-
- var b = new Buffer('test');
- expect(Qs.parse({ a: b })).to.deep.equal({ a: b }, { prototype: false });
- done();
- });
-
- it('continues parsing when no parent is found', function (done) {
-
- expect(Qs.parse('[]=&a=b')).to.deep.equal({ '0': '', a: 'b' }, { prototype: false });
- expect(Qs.parse('[]&a=b', {strictNullHandling: true})).to.deep.equal({ '0': null, a: 'b' }, { prototype: false });
- expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' }, { prototype: false });
- done();
- });
-
- it('does not error when parsing a very long array', function (done) {
-
- var str = 'a[]=a';
- while (Buffer.byteLength(str) < 128 * 1024) {
- str += '&' + str;
- }
-
- expect(function () {
-
- Qs.parse(str);
- }).to.not.throw();
-
- done();
- });
-
- it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) {
-
- Object.prototype.crash = '';
- Array.prototype.crash = '';
- expect(Qs.parse.bind(null, 'a=b')).to.not.throw();
- expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' }, { prototype: false });
- expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw();
- expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }, { prototype: false });
- delete Object.prototype.crash;
- delete Array.prototype.crash;
- done();
- });
-
- it('parses a string with an alternative string delimiter', function (done) {
-
- expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false });
- done();
- });
-
- it('parses a string with an alternative RegExp delimiter', function (done) {
-
- expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false });
- done();
- });
-
- it('does not use non-splittable objects as delimiters', function (done) {
-
- expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false });
- done();
- });
-
- it('allows overriding parameter limit', function (done) {
-
- expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' }, { prototype: false });
- done();
- });
-
- it('allows setting the parameter limit to Infinity', function (done) {
-
- expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false });
- done();
- });
-
- it('allows overriding array limit', function (done) {
-
- expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } }, { prototype: false });
- expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } }, { prototype: false });
- expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }, { prototype: false });
- done();
- });
-
- it('allows disabling array parsing', function (done) {
-
- expect(Qs.parse('a[0]=b&a[1]=c', { parseArrays: false })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }, { prototype: false });
- done();
- });
-
- it('parses an object', function (done) {
-
- var input = {
- 'user[name]': {'pop[bob]': 3},
- 'user[email]': null
- };
-
- var expected = {
- 'user': {
- 'name': {'pop[bob]': 3},
- 'email': null
- }
- };
-
- var result = Qs.parse(input);
-
- expect(result).to.deep.equal(expected, { prototype: false });
- done();
- });
-
- it('parses an object in dot notation', function (done) {
-
- var input = {
- 'user.name': {'pop[bob]': 3},
- 'user.email.': null
- };
-
- var expected = {
- 'user': {
- 'name': {'pop[bob]': 3},
- 'email': null
- }
- };
-
- var result = Qs.parse(input);
-
- expect(result).to.deep.equal(expected, { prototype: false });
- done();
- });
-
- it('parses an object and not child values', function (done) {
-
- var input = {
- 'user[name]': {'pop[bob]': { 'test': 3 }},
- 'user[email]': null
- };
-
- var expected = {
- 'user': {
- 'name': {'pop[bob]': { 'test': 3 }},
- 'email': null
- }
- };
-
- var result = Qs.parse(input);
-
- expect(result).to.deep.equal(expected, { prototype: false });
- done();
- });
-
- it('does not blow up when Buffer global is missing', function (done) {
-
- var tempBuffer = global.Buffer;
- delete global.Buffer;
- var result = Qs.parse('a=b&c=d');
- global.Buffer = tempBuffer;
- expect(result).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false });
- done();
- });
-
- it('does not crash when parsing circular references', function (done) {
-
- var a = {};
- a.b = a;
-
- var parsed;
-
- expect(function () {
-
- parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
- }).to.not.throw();
-
- expect(parsed).to.contain('foo');
- expect(parsed.foo).to.contain('bar', 'baz');
- expect(parsed.foo.bar).to.equal('baz');
- expect(parsed.foo.baz).to.deep.equal(a, { prototype: false });
- done();
- });
-
- it('parses plain objects correctly', function (done) {
-
- var a = Object.create(null);
- a.b = 'c';
-
- expect(Qs.parse(a)).to.deep.equal({ b: 'c' }, { prototype: false });
- var result = Qs.parse({ a: a });
- expect(result).to.contain('a');
- expect(result.a).to.deep.equal(a, { prototype: false });
- done();
- });
-
- it('parses dates correctly', function (done) {
-
- var now = new Date();
- expect(Qs.parse({ a: now })).to.deep.equal({ a: now }, { prototype: false });
- done();
- });
-
- it('parses regular expressions correctly', function (done) {
-
- var re = /^test$/;
- expect(Qs.parse({ a: re })).to.deep.equal({ a: re }, { prototype: false });
- done();
- });
-});
diff --git a/node_modules/request/node_modules/qs/test/stringify.js b/node_modules/request/node_modules/qs/test/stringify.js
deleted file mode 100644
index 7a80c6c35..000000000
--- a/node_modules/request/node_modules/qs/test/stringify.js
+++ /dev/null
@@ -1,259 +0,0 @@
-/* eslint no-extend-native:0 */
-// Load modules
-
-var Code = require('code');
-var Lab = require('lab');
-var Qs = require('../');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var expect = Code.expect;
-var describe = lab.experiment;
-var it = lab.test;
-
-
-describe('stringify()', function () {
-
- it('stringifies a querystring object', function (done) {
-
- expect(Qs.stringify({ a: 'b' })).to.equal('a=b');
- expect(Qs.stringify({ a: 1 })).to.equal('a=1');
- expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2');
- expect(Qs.stringify({ a: 'A_Z' })).to.equal('a=A_Z');
- expect(Qs.stringify({ a: '€' })).to.equal('a=%E2%82%AC');
- expect(Qs.stringify({ a: '' })).to.equal('a=%EE%80%80');
- expect(Qs.stringify({ a: 'א' })).to.equal('a=%D7%90');
- expect(Qs.stringify({ a: '𐐷' })).to.equal('a=%F0%90%90%B7');
- done();
- });
-
- it('stringifies a nested object', function (done) {
-
- expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
- expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e');
- done();
- });
-
- it('stringifies an array value', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d');
- done();
- });
-
- it('omits array indices when asked', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d');
- done();
- });
-
- it('stringifies a nested array value', function (done) {
-
- expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
- done();
- });
-
- it('stringifies an object inside an array', function (done) {
-
- expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c');
- expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1');
- done();
- });
-
- it('does not omit object keys when indices = false', function (done) {
-
- expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c');
- done();
- });
-
- it('uses indices notation for arrays when indices=true', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { indices: true })).to.equal('a%5B0%5D=b&a%5B1%5D=c');
- done();
- });
-
- it('uses indices notation for arrays when no arrayFormat is specified', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c');
- done();
- });
-
- it('uses indices notation for arrays when no arrayFormat=indices', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })).to.equal('a%5B0%5D=b&a%5B1%5D=c');
- done();
- });
-
- it('uses repeat notation for arrays when no arrayFormat=repeat', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })).to.equal('a=b&a=c');
- done();
- });
-
- it('uses brackets notation for arrays when no arrayFormat=brackets', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })).to.equal('a%5B%5D=b&a%5B%5D=c');
- done();
- });
-
- it('stringifies a complicated object', function (done) {
-
- expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e');
- done();
- });
-
- it('stringifies an empty value', function (done) {
-
- expect(Qs.stringify({ a: '' })).to.equal('a=');
- expect(Qs.stringify({ a: null }, {strictNullHandling: true})).to.equal('a');
-
- expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b=');
- expect(Qs.stringify({ a: null, b: '' }, {strictNullHandling: true})).to.equal('a&b=');
-
- expect(Qs.stringify({ a: { b: '' } })).to.equal('a%5Bb%5D=');
- expect(Qs.stringify({ a: { b: null } }, {strictNullHandling: true})).to.equal('a%5Bb%5D');
- expect(Qs.stringify({ a: { b: null } }, {strictNullHandling: false})).to.equal('a%5Bb%5D=');
-
- done();
- });
-
- it('stringifies an empty object', function (done) {
-
- var obj = Object.create(null);
- obj.a = 'b';
- expect(Qs.stringify(obj)).to.equal('a=b');
- done();
- });
-
- it('returns an empty string for invalid input', function (done) {
-
- expect(Qs.stringify(undefined)).to.equal('');
- expect(Qs.stringify(false)).to.equal('');
- expect(Qs.stringify(null)).to.equal('');
- expect(Qs.stringify('')).to.equal('');
- done();
- });
-
- it('stringifies an object with an empty object as a child', function (done) {
-
- var obj = {
- a: Object.create(null)
- };
-
- obj.a.b = 'c';
- expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c');
- done();
- });
-
- it('drops keys with a value of undefined', function (done) {
-
- expect(Qs.stringify({ a: undefined })).to.equal('');
-
- expect(Qs.stringify({ a: { b: undefined, c: null } }, {strictNullHandling: true})).to.equal('a%5Bc%5D');
- expect(Qs.stringify({ a: { b: undefined, c: null } }, {strictNullHandling: false})).to.equal('a%5Bc%5D=');
- expect(Qs.stringify({ a: { b: undefined, c: '' } })).to.equal('a%5Bc%5D=');
- done();
- });
-
- it('url encodes values', function (done) {
-
- expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c');
- done();
- });
-
- it('stringifies a date', function (done) {
-
- var now = new Date();
- var str = 'a=' + encodeURIComponent(now.toISOString());
- expect(Qs.stringify({ a: now })).to.equal(str);
- done();
- });
-
- it('stringifies the weird object from qs', function (done) {
-
- expect(Qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F');
- done();
- });
-
- it('skips properties that are part of the object prototype', function (done) {
-
- Object.prototype.crash = 'test';
- expect(Qs.stringify({ a: 'b'})).to.equal('a=b');
- expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
- delete Object.prototype.crash;
- done();
- });
-
- it('stringifies boolean values', function (done) {
-
- expect(Qs.stringify({ a: true })).to.equal('a=true');
- expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true');
- expect(Qs.stringify({ b: false })).to.equal('b=false');
- expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false');
- done();
- });
-
- it('stringifies buffer values', function (done) {
-
- expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test');
- expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test');
- done();
- });
-
- it('stringifies an object using an alternative delimiter', function (done) {
-
- expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d');
- done();
- });
-
- it('doesn\'t blow up when Buffer global is missing', function (done) {
-
- var tempBuffer = global.Buffer;
- delete global.Buffer;
- expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d');
- global.Buffer = tempBuffer;
- done();
- });
-
- it('selects properties when filter=array', function (done) {
-
- expect(Qs.stringify({ a: 'b' }, { filter: ['a'] })).to.equal('a=b');
- expect(Qs.stringify({ a: 1}, { filter: [] })).to.equal('');
- expect(Qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2]})).to.equal('a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3');
- done();
-
- });
-
- it('supports custom representations when filter=function', function (done) {
-
- var calls = 0;
- var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } };
- var filterFunc = function (prefix, value) {
-
- calls++;
- if (calls === 1) {
- expect(prefix).to.be.empty();
- expect(value).to.equal(obj);
- }
- else if (prefix === 'c') {
- return;
- }
- else if (value instanceof Date) {
- expect(prefix).to.equal('e[f]');
- return value.getTime();
- }
- return value;
- };
-
- expect(Qs.stringify(obj, { filter: filterFunc })).to.equal('a=b&e%5Bf%5D=1257894000000');
- expect(calls).to.equal(5);
- done();
-
- });
-});
diff --git a/node_modules/request/node_modules/qs/test/utils.js b/node_modules/request/node_modules/qs/test/utils.js
deleted file mode 100644
index a9a6b520d..000000000
--- a/node_modules/request/node_modules/qs/test/utils.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Load modules
-
-var Code = require('code');
-var Lab = require('lab');
-var Utils = require('../lib/utils');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var expect = Code.expect;
-var describe = lab.experiment;
-var it = lab.test;
-
-
-describe('merge()', function () {
-
- it('can merge two objects with the same key', function (done) {
-
- expect(Utils.merge({ a: 'b' }, { a: 'c' })).to.deep.equal({ a: ['b', 'c'] });
- done();
- });
-});
diff --git a/node_modules/request/node_modules/stringstream/.npmignore b/node_modules/request/node_modules/stringstream/.npmignore
deleted file mode 100644
index 7dccd9707..000000000
--- a/node_modules/request/node_modules/stringstream/.npmignore
+++ /dev/null
@@ -1,15 +0,0 @@
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-node_modules
-npm-debug.log \ No newline at end of file
diff --git a/node_modules/request/node_modules/stringstream/.travis.yml b/node_modules/request/node_modules/stringstream/.travis.yml
deleted file mode 100644
index f1d0f13c8..000000000
--- a/node_modules/request/node_modules/stringstream/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.4
- - 0.6
diff --git a/node_modules/request/node_modules/stringstream/LICENSE.txt b/node_modules/request/node_modules/stringstream/LICENSE.txt
deleted file mode 100644
index eac188156..000000000
--- a/node_modules/request/node_modules/stringstream/LICENSE.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Copyright 2012 Michael Hart (michael.hart.au@gmail.com)
-
-This project is free software released under the MIT license:
-http://www.opensource.org/licenses/mit-license.php
diff --git a/node_modules/request/node_modules/stringstream/README.md b/node_modules/request/node_modules/stringstream/README.md
deleted file mode 100644
index 32fc98255..000000000
--- a/node_modules/request/node_modules/stringstream/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Decode streams into strings The Right Way(tm)
-
-```javascript
-var fs = require('fs')
-var zlib = require('zlib')
-var strs = require('stringstream')
-
-var utf8Stream = fs.createReadStream('massiveLogFile.gz')
- .pipe(zlib.createGunzip())
- .pipe(strs('utf8'))
-```
-
-No need to deal with `setEncoding()` weirdness, just compose streams
-like they were supposed to be!
-
-Handles input and output encoding:
-
-```javascript
-// Stream from utf8 to hex to base64... Why not, ay.
-var hex64Stream = fs.createReadStream('myFile')
- .pipe(strs('utf8', 'hex'))
- .pipe(strs('hex', 'base64'))
-```
-
-Also deals with `base64` output correctly by aligning each emitted data
-chunk so that there are no dangling `=` characters:
-
-```javascript
-var stream = fs.createReadStream('myFile').pipe(strs('base64'))
-
-var base64Str = ''
-
-stream.on('data', function(data) { base64Str += data })
-stream.on('end', function() {
- console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()
- console.log('Original file is: ' + new Buffer(base64Str, 'base64'))
-})
-```
diff --git a/node_modules/request/node_modules/stringstream/example.js b/node_modules/request/node_modules/stringstream/example.js
deleted file mode 100644
index f82b85edc..000000000
--- a/node_modules/request/node_modules/stringstream/example.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var fs = require('fs')
-var zlib = require('zlib')
-var strs = require('stringstream')
-
-var utf8Stream = fs.createReadStream('massiveLogFile.gz')
- .pipe(zlib.createGunzip())
- .pipe(strs('utf8'))
-
-utf8Stream.pipe(process.stdout)
-
-// Stream from utf8 to hex to base64... Why not, ay.
-var hex64Stream = fs.createReadStream('myFile')
- .pipe(strs('utf8', 'hex'))
- .pipe(strs('hex', 'base64'))
-
-hex64Stream.pipe(process.stdout)
-
-// Deals with base64 correctly by aligning chunks
-var stream = fs.createReadStream('myFile').pipe(strs('base64'))
-
-var base64Str = ''
-
-stream.on('data', function(data) { base64Str += data })
-stream.on('end', function() {
- console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()
- console.log('Original file is: ' + new Buffer(base64Str, 'base64'))
-})
diff --git a/node_modules/request/node_modules/stringstream/package.json b/node_modules/request/node_modules/stringstream/package.json
deleted file mode 100644
index 37b7bec83..000000000
--- a/node_modules/request/node_modules/stringstream/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "stringstream",
- "version": "0.0.4",
- "description": "Encode and decode streams into string streams",
- "author": {
- "name": "Michael Hart",
- "email": "michael.hart.au@gmail.com",
- "url": "http://github.com/mhart"
- },
- "main": "stringstream.js",
- "keywords": [
- "string",
- "stream",
- "base64",
- "gzip"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mhart/StringStream.git"
- },
- "license": "MIT",
- "readme": "# Decode streams into strings The Right Way(tm)\n\n```javascript\nvar fs = require('fs')\nvar zlib = require('zlib')\nvar strs = require('stringstream')\n\nvar utf8Stream = fs.createReadStream('massiveLogFile.gz')\n .pipe(zlib.createGunzip())\n .pipe(strs('utf8'))\n```\n\nNo need to deal with `setEncoding()` weirdness, just compose streams\nlike they were supposed to be!\n\nHandles input and output encoding:\n\n```javascript\n// Stream from utf8 to hex to base64... Why not, ay.\nvar hex64Stream = fs.createReadStream('myFile')\n .pipe(strs('utf8', 'hex'))\n .pipe(strs('hex', 'base64'))\n```\n\nAlso deals with `base64` output correctly by aligning each emitted data\nchunk so that there are no dangling `=` characters:\n\n```javascript\nvar stream = fs.createReadStream('myFile').pipe(strs('base64'))\n\nvar base64Str = ''\n\nstream.on('data', function(data) { base64Str += data })\nstream.on('end', function() {\n console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()\n console.log('Original file is: ' + new Buffer(base64Str, 'base64'))\n})\n```\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/mhart/StringStream/issues"
- },
- "homepage": "https://github.com/mhart/StringStream#readme",
- "_id": "stringstream@0.0.4",
- "_shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92",
- "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz",
- "_from": "stringstream@>=0.0.4 <0.1.0"
-}
diff --git a/node_modules/request/node_modules/stringstream/stringstream.js b/node_modules/request/node_modules/stringstream/stringstream.js
deleted file mode 100644
index 4ece1275f..000000000
--- a/node_modules/request/node_modules/stringstream/stringstream.js
+++ /dev/null
@@ -1,102 +0,0 @@
-var util = require('util')
-var Stream = require('stream')
-var StringDecoder = require('string_decoder').StringDecoder
-
-module.exports = StringStream
-module.exports.AlignedStringDecoder = AlignedStringDecoder
-
-function StringStream(from, to) {
- if (!(this instanceof StringStream)) return new StringStream(from, to)
-
- Stream.call(this)
-
- if (from == null) from = 'utf8'
-
- this.readable = this.writable = true
- this.paused = false
- this.toEncoding = (to == null ? from : to)
- this.fromEncoding = (to == null ? '' : from)
- this.decoder = new AlignedStringDecoder(this.toEncoding)
-}
-util.inherits(StringStream, Stream)
-
-StringStream.prototype.write = function(data) {
- if (!this.writable) {
- var err = new Error('stream not writable')
- err.code = 'EPIPE'
- this.emit('error', err)
- return false
- }
- if (this.fromEncoding) {
- if (Buffer.isBuffer(data)) data = data.toString()
- data = new Buffer(data, this.fromEncoding)
- }
- var string = this.decoder.write(data)
- if (string.length) this.emit('data', string)
- return !this.paused
-}
-
-StringStream.prototype.flush = function() {
- if (this.decoder.flush) {
- var string = this.decoder.flush()
- if (string.length) this.emit('data', string)
- }
-}
-
-StringStream.prototype.end = function() {
- if (!this.writable && !this.readable) return
- this.flush()
- this.emit('end')
- this.writable = this.readable = false
- this.destroy()
-}
-
-StringStream.prototype.destroy = function() {
- this.decoder = null
- this.writable = this.readable = false
- this.emit('close')
-}
-
-StringStream.prototype.pause = function() {
- this.paused = true
-}
-
-StringStream.prototype.resume = function () {
- if (this.paused) this.emit('drain')
- this.paused = false
-}
-
-function AlignedStringDecoder(encoding) {
- StringDecoder.call(this, encoding)
-
- switch (this.encoding) {
- case 'base64':
- this.write = alignedWrite
- this.alignedBuffer = new Buffer(3)
- this.alignedBytes = 0
- break
- }
-}
-util.inherits(AlignedStringDecoder, StringDecoder)
-
-AlignedStringDecoder.prototype.flush = function() {
- if (!this.alignedBuffer || !this.alignedBytes) return ''
- var leftover = this.alignedBuffer.toString(this.encoding, 0, this.alignedBytes)
- this.alignedBytes = 0
- return leftover
-}
-
-function alignedWrite(buffer) {
- var rem = (this.alignedBytes + buffer.length) % this.alignedBuffer.length
- if (!rem && !this.alignedBytes) return buffer.toString(this.encoding)
-
- var returnBuffer = new Buffer(this.alignedBytes + buffer.length - rem)
-
- this.alignedBuffer.copy(returnBuffer, 0, 0, this.alignedBytes)
- buffer.copy(returnBuffer, this.alignedBytes, 0, buffer.length - rem)
-
- buffer.copy(this.alignedBuffer, 0, buffer.length - rem, buffer.length)
- this.alignedBytes = rem
-
- return returnBuffer.toString(this.encoding)
-}
diff --git a/node_modules/request/node_modules/tough-cookie/.editorconfig b/node_modules/request/node_modules/tough-cookie/.editorconfig
deleted file mode 100644
index e09b844f7..000000000
--- a/node_modules/request/node_modules/tough-cookie/.editorconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is for unifying the coding style for different editors and IDEs
-# editorconfig.org
-
-root = true
-
-[*]
-end_of_line = lf
-charset = utf-8
-insert_final_newline = true
-trim_trailing_whitespace = true
-indent_style = space
-indent_size = 2
diff --git a/node_modules/request/node_modules/tough-cookie/.jshintrc b/node_modules/request/node_modules/tough-cookie/.jshintrc
deleted file mode 100644
index fb11913a4..000000000
--- a/node_modules/request/node_modules/tough-cookie/.jshintrc
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "passfail" : false,
- "maxerr" : 100,
-
- "browser" : false,
- "node" : true,
- "rhino" : false,
- "couch" : false,
- "wsh" : false,
-
- "jquery" : false,
- "prototypejs" : false,
- "mootools" : false,
- "dojo" : false,
-
- "debug" : false,
- "devel" : false,
-
- "esnext" : true,
- "strict" : true,
- "globalstrict" : true,
-
- "asi" : false,
- "laxbreak" : false,
- "bitwise" : true,
- "boss" : false,
- "curly" : true,
- "eqeqeq" : false,
- "eqnull" : true,
- "evil" : false,
- "expr" : false,
- "forin" : false,
- "immed" : true,
- "lastsemic" : true,
- "latedef" : false,
- "loopfunc" : false,
- "noarg" : true,
- "regexp" : false,
- "regexdash" : false,
- "scripturl" : false,
- "shadow" : false,
- "supernew" : false,
- "undef" : true,
- "unused" : true,
-
- "newcap" : true,
- "noempty" : true,
- "nonew" : true,
- "nomen" : false,
- "onevar" : false,
- "onecase" : true,
- "plusplus" : false,
- "proto" : false,
- "sub" : true,
- "trailing" : true,
- "white" : false,
-
- "predef": [
- "describe",
- "it",
- "before",
- "beforeEach",
- "after",
- "afterEach",
- "expect",
- "setTimeout",
- "clearTimeout"
- ],
- "maxlen": 0
-}
diff --git a/node_modules/request/node_modules/tough-cookie/.npmignore b/node_modules/request/node_modules/tough-cookie/.npmignore
deleted file mode 100644
index 5a8d2d853..000000000
--- a/node_modules/request/node_modules/tough-cookie/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.idea
-node_modules/
-.*.sw[nmop]
-npm-debug.log
diff --git a/node_modules/request/node_modules/tough-cookie/.travis.yml b/node_modules/request/node_modules/tough-cookie/.travis.yml
deleted file mode 100644
index 02059d0d5..000000000
--- a/node_modules/request/node_modules/tough-cookie/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
-- "0.10"
-- "0.12"
-- iojs
-matrix:
- fast_finish: true
- allow_failures:
- - node_js: 0.11
diff --git a/node_modules/request/node_modules/tough-cookie/LICENSE b/node_modules/request/node_modules/tough-cookie/LICENSE
deleted file mode 100644
index 84e0cad17..000000000
--- a/node_modules/request/node_modules/tough-cookie/LICENSE
+++ /dev/null
@@ -1,74 +0,0 @@
-Copyright (c) 2015, Salesforce.com, Inc.
-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 Salesforce.com 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 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 HOLDER 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 following exceptions apply:
-
-===
-
-`pubSufTest()` of generate-pubsuffix.js is in the public domain.
-
- // Any copyright is dedicated to the Public Domain.
- // http://creativecommons.org/publicdomain/zero/1.0/
-
-===
-
-`public-suffix.txt` was obtained from
-<https://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1>
-via <http://publicsuffix.org>.
-
-That file contains the usual Mozilla triple-license, for which this project uses it
-under the terms of the MPL 1.1:
-
- // ***** BEGIN LICENSE BLOCK *****
- // Version: MPL 1.1/GPL 2.0/LGPL 2.1
- //
- // The contents of this file are subject to the Mozilla Public License Version
- // 1.1 (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.mozilla.org/MPL/
- //
- // Software distributed under the License is distributed on an "AS IS" basis,
- // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- // for the specific language governing rights and limitations under the
- // License.
- //
- // The Original Code is the Public Suffix List.
- //
- // The Initial Developer of the Original Code is
- // Jo Hermans <jo.hermans@gmail.com>.
- // Portions created by the Initial Developer are Copyright (C) 2007
- // the Initial Developer. All Rights Reserved.
- //
- // Contributor(s):
- // Ruben Arakelyan <ruben@rubenarakelyan.com>
- // Gervase Markham <gerv@gerv.net>
- // Pamela Greene <pamg.bugs@gmail.com>
- // David Triendl <david@triendl.name>
- // Jothan Frakes <jothan@gmail.com>
- // The kind representatives of many TLD registries
- //
- // Alternatively, the contents of this file may be used under the terms of
- // either the GNU General Public License Version 2 or later (the "GPL"), or
- // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- // in which case the provisions of the GPL or the LGPL are applicable instead
- // of those above. If you wish to allow use of your version of this file only
- // under the terms of either the GPL or the LGPL, and not to allow others to
- // use your version of this file under the terms of the MPL, indicate your
- // decision by deleting the provisions above and replace them with the notice
- // and other provisions required by the GPL or the LGPL. If you do not delete
- // the provisions above, a recipient may use your version of this file under
- // the terms of any one of the MPL, the GPL or the LGPL.
- //
- // ***** END LICENSE BLOCK *****
diff --git a/node_modules/request/node_modules/tough-cookie/README.md b/node_modules/request/node_modules/tough-cookie/README.md
deleted file mode 100644
index 419dd48d5..000000000
--- a/node_modules/request/node_modules/tough-cookie/README.md
+++ /dev/null
@@ -1,486 +0,0 @@
-[RFC6265](https://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js
-
-[![Build Status](https://travis-ci.org/SalesforceEng/tough-cookie.png?branch=master)](https://travis-ci.org/SalesforceEng/tough-cookie)
-
-[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie)
-![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9)
-
-# Synopsis
-
-``` javascript
-var tough = require('tough-cookie');
-var Cookie = tough.Cookie;
-var cookie = Cookie.parse(header);
-cookie.value = 'somethingdifferent';
-header = cookie.toString();
-
-var cookiejar = new tough.CookieJar();
-cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb);
-// ...
-cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) {
- res.headers['cookie'] = cookies.join('; ');
-});
-```
-
-# Installation
-
-It's _so_ easy!
-
-`npm install tough-cookie`
-
-Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.
-
-# API
-
-## tough
-
-Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound".
-
-**Note**: prior to 1.0.x, several of these functions took a `strict` parameter. This has since been removed from the API as it was no longer necessary.
-
-### `parseDate(string)`
-
-Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`.
-
-### `formatDate(date)`
-
-Format a Date into a RFC1123 string (the RFC6265-recommended format).
-
-### `canonicalDomain(str)`
-
-Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).
-
-### `domainMatch(str,domStr[,canonicalize=true])`
-
-Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match".
-
-The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.
-
-### `defaultPath(path)`
-
-Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC.
-
-The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output.
-
-### `pathMatch(reqPath,cookiePath)`
-
-Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean.
-
-This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.
-
-### `parse(header)`
-
-alias for `Cookie.parse(header)`
-
-### `fromJSON(string)`
-
-alias for `Cookie.fromJSON(string)`
-
-### `getPublicSuffix(hostname)`
-
-Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.
-
-For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.
-
-For further information, see http://publicsuffix.org/. This module derives its list from that site.
-
-### `cookieCompare(a,b)`
-
-For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). The sort algorithm is, in order of precedence:
-
-* Longest `.path`
-* oldest `.creation` (which has a 1ms precision, same as `Date`)
-* lowest `.creationIndex` (to get beyond the 1ms precision)
-
-``` javascript
-var cookies = [ /* unsorted array of Cookie objects */ ];
-cookies = cookies.sort(cookieCompare);
-```
-
-**Note**: Since JavaScript's `Date` is limited to a 1ms precision, cookies within the same milisecond are entirely possible. This is especially true when using the `now` option to `.setCookie()`. The `.creationIndex` property is a per-process global counter, assigned during construction with `new Cookie()`. This preserves the spirit of the RFC sorting: older cookies go first. This works great for `MemoryCookieStore`, since `Set-Cookie` headers are parsed in order, but may not be so great for distributed systems. Sophisticated `Store`s may wish to set this to some other _logical clock_ such that if cookies A and B are created in the same millisecond, but cookie A is created before cookie B, then `A.creationIndex < B.creationIndex`. If you want to alter the global counter, which you probably _shouldn't_ do, it's stored in `Cookie.cookiesCreated`.
-
-### `permuteDomain(domain)`
-
-Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.
-
-### `permutePath(path)`
-
-Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.
-
-
-## Cookie
-
-Exported via `tough.Cookie`.
-
-### `Cookie.parse(header)`
-
-Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed.
-
-Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:
-
-``` javascript
-if (res.headers['set-cookie'] instanceof Array)
- cookies = res.headers['set-cookie'].map(function (c) { return (Cookie.parse(c)); });
-else
- cookies = [Cookie.parse(res.headers['set-cookie'])];
-```
-
-### Properties
-
-Cookie object properties:
-
- * _key_ - string - the name or key of the cookie (default "")
- * _value_ - string - the value of the cookie (default "")
- * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()`
- * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`
- * _domain_ - string - the `Domain=` attribute of the cookie
- * _path_ - string - the `Path=` of the cookie
- * _secure_ - boolean - the `Secure` cookie flag
- * _httpOnly_ - boolean - the `HttpOnly` cookie flag
- * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)
- * _creation_ - `Date` - when this cookie was constructed
- * _creationIndex_ - number - set at construction, used to provide greater sort precision (please see `cookieCompare(a,b)` for a full explanation)
-
-After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:
-
- * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)
- * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.
- * _creation_ - `Date` - **modified** from construction to when the cookie was added to the jar
- * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.
-
-### `Cookie([{properties}])`
-
-Receives an options object that can contain any of the above Cookie properties, uses the default for unspecified properties.
-
-### `.toString()`
-
-encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.
-
-### `.cookieString()`
-
-encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '=').
-
-### `.setExpires(String)`
-
-sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set.
-
-### `.setMaxAge(number)`
-
-sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly.
-
-### `.expiryTime([now=Date.now()])`
-
-### `.expiryDate([now=Date.now()])`
-
-expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.
-
-Max-Age takes precedence over Expires (as per the RFC). The `.creation` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.
-
-If Expires (`.expires`) is set, that's returned.
-
-Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).
-
-### `.TTL([now=Date.now()])`
-
-compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.
-
-The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.
-
-### `.canonicalizedDoman()`
-
-### `.cdomain()`
-
-return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.
-
-### `.toJSON()`
-
-For convenience in using `JSON.serialize(cookie)`. Returns a plain-old `Object` that can be JSON-serialized.
-
-Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are exported in ISO format (`.toISOString()`).
-
-**NOTE**: Custom `Cookie` properties will be discarded. In tough-cookie 1.x, since there was no `.toJSON` method explicitly defined, all enumerable properties were captured. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array.
-
-### `Cookie.fromJSON(strOrObj)`
-
-Does the reverse of `cookie.toJSON()`. If passed a string, will `JSON.parse()` that first.
-
-Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are parsed via `Date.parse()`, not the tough-cookie `parseDate`, since it's JavaScript/JSON-y timestamps being handled at this layer.
-
-Returns `null` upon JSON parsing error.
-
-### `.clone()`
-
-Does a deep clone of this cookie, exactly implemented as `Cookie.fromJSON(cookie.toJSON())`.
-
-### `.validate()`
-
-Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.
-
-validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:
-
-``` javascript
-if (cookie.validate() === true) {
- // it's tasty
-} else {
- // yuck!
-}
-```
-
-
-## CookieJar
-
-Exported via `tough.CookieJar`.
-
-### `CookieJar([store],[rejectPublicSuffixes])`
-
-Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.
-
-### Properties
-
-CookieJar object properties:
-
- * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`)
-
-Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.
-
-### `.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))`
-
-Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.creation`, `.lastAccessed` and `.hostOnly` properties.
-
-The `options` object can be omitted and can have the following properties:
-
- * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.
- * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.
- * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies
- * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. `Store` errors aren't ignored by this option.
-
-As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).
-
-### `.setCookieSync(cookieOrString, currentUrl, [{options}])`
-
-Synchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.getCookies(currentUrl, [{options},] cb(err,cookies))`
-
-Retrieve the list of cookies that can be sent in a Cookie header for the current url.
-
-If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.
-
-The `options` object can be omitted and can have the following properties:
-
- * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.
- * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.
- * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies
- * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).
- * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the underlying store (the default `MemoryCookieStore` supports it).
-
-The `.lastAccessed` property of the returned cookies will have been updated.
-
-### `.getCookiesSync(currentUrl, [{options}])`
-
-Synchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.getCookieString(...)`
-
-Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.
-
-### `.getCookieStringSync(...)`
-
-Synchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.getSetCookieStrings(...)`
-
-Returns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`.
-
-### `.getSetCookieStringsSync(...)`
-
-Synchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.serialize(cb(err,serializedObject))`
-
-Serialize the Jar if the underlying store supports `.getAllCookies`.
-
-**NOTE**: Custom `Cookie` properties will be discarded. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array.
-
-See [Serialization Format].
-
-### `.serializeSync()`
-
-Sync version of .serialize
-
-### `.toJSON()`
-
-Alias of .serializeSync() for the convenience of `JSON.stringify(cookiejar)`.
-
-### `CookieJar.deserialize(serialized, [store], cb(err,object))`
-
-A new Jar is created and the serialized Cookies are added to the underlying store. Each `Cookie` is added via `store.putCookie` in the order in which they appear in the serialization.
-
-The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created.
-
-As a convenience, if `serialized` is a string, it is passed through `JSON.parse` first. If that throws an error, this is passed to the callback.
-
-### `CookieJar.deserializeSync(serialized, [store])`
-
-Sync version of `.deserialize`. _Note_ that the `store` must be synchronous for this to work.
-
-### `CookieJar.fromJSON(string)`
-
-Alias of `.deserializeSync` to provide consistency with `Cookie.fromJSON()`.
-
-### `.clone([store,]cb(err,newJar))`
-
-Produces a deep clone of this jar. Modifications to the original won't affect the clone, and vice versa.
-
-The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. Transferring between store types is supported so long as the source implements `.getAllCookies()` and the destination implements `.putCookie()`.
-
-### `.cloneSync([store])`
-
-Synchronous version of `.clone`, returning a new `CookieJar` instance.
-
-The `store` argument is optional, but must be a _synchronous_ `Store` instance if specified. If not passed, a new instance of `MemoryCookieStore` is used.
-
-The _source_ and _destination_ must both be synchronous `Store`s. If one or both stores are asynchronous, use `.clone` instead. Recall that `MemoryCookieStore` supports both synchronous and asynchronous API calls.
-
-## Store
-
-Base class for CookieJar stores. Available as `tough.Store`.
-
-## Store API
-
-The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.
-
-Stores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`.
-
-Stores are asynchronous by default, but if `store.synchronous` is set to `true`, then the `*Sync` methods on the of the containing `CookieJar` can be used (however, the continuation-passing style
-
-All `domain` parameters will have been normalized before calling.
-
-The Cookie store must have all of the following methods.
-
-### `store.findCookie(domain, path, key, cb(err,cookie))`
-
-Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.
-
-Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).
-
-### `store.findCookies(domain, path, cb(err,cookies))`
-
-Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.
-
-If no cookies are found, the callback MUST be passed an empty array.
-
-The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.
-
-As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).
-
-### `store.putCookie(cookie, cb(err))`
-
-Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.
-
-The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.
-
-Pass an error if the cookie cannot be stored.
-
-### `store.updateCookie(oldCookie, newCookie, cb(err))`
-
-Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.
-
-The `.lastAccessed` property will always be different between the two objects (to the precision possible via JavaScript's clock). Both `.creation` and `.creationIndex` are guaranteed to be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are selected for automatic deletion (e.g., least-recently-used, which is up to the store to implement).
-
-Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.
-
-The `newCookie` and `oldCookie` objects MUST NOT be modified.
-
-Pass an error if the newCookie cannot be stored.
-
-### `store.removeCookie(domain, path, key, cb(err))`
-
-Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).
-
-The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie.
-
-### `store.removeCookies(domain, path, cb(err))`
-
-Removes matching cookies from the store. The `path` parameter is optional, and if missing means all paths in a domain should be removed.
-
-Pass an error ONLY if removing any existing cookies failed.
-
-### `store.getAllCookies(cb(err, cookies))`
-
-Produces an `Array` of all cookies during `jar.serialize()`. The items in the array can be true `Cookie` objects or generic `Object`s with the [Serialization Format] data structure.
-
-Cookies SHOULD be returned in creation order to preserve sorting via `compareCookies()`. For reference, `MemoryCookieStore` will sort by `.creationIndex` since it uses true `Cookie` objects internally. If you don't return the cookies in creation order, they'll still be sorted by creation time, but this only has a precision of 1ms. See `compareCookies` for more detail.
-
-Pass an error if retrieval fails.
-
-## MemoryCookieStore
-
-Inherits from `Store`.
-
-A just-in-memory CookieJar synchronous store implementation, used by default. Despite being a synchronous implementation, it's usable with both the synchronous and asynchronous forms of the `CookieJar` API.
-
-# Serialization Format
-
-**NOTE**: if you want to have custom `Cookie` properties serialized, add the property name to `Cookie.serializableProperties`.
-
-```js
- {
- // The version of tough-cookie that serialized this jar.
- version: 'tough-cookie@1.x.y',
-
- // add the store type, to make humans happy:
- storeType: 'MemoryCookieStore',
-
- // CookieJar configuration:
- rejectPublicSuffixes: true,
- // ... future items go here
-
- // Gets filled from jar.store.getAllCookies():
- cookies: [
- {
- key: 'string',
- value: 'string',
- // ...
- /* other Cookie.serializableProperties go here */
- }
- ]
- }
-```
-
-# Copyright and License
-
-(tl;dr: BSD-3-Clause with some MPL/1.1)
-
-```text
- Copyright (c) 2015, Salesforce.com, Inc.
- 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 Salesforce.com 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 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 HOLDER 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.
-```
-
-Portions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.
diff --git a/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js b/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js
deleted file mode 100644
index ba054f4cb..000000000
--- a/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js
+++ /dev/null
@@ -1,293 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-var fs = require('fs');
-var assert = require('assert');
-var punycode = require('punycode');
-
-fs.readFile('./public-suffix.txt', 'utf8', function(err,string) {
- if (err) {
- throw err;
- }
- var lines = string.split("\n");
- process.nextTick(function() {
- processList(lines);
- });
-});
-
-var index = {};
-
-var COMMENT = new RegExp('//.+');
-function processList(lines) {
- while (lines.length) {
- var line = lines.shift();
- line = line.replace(COMMENT,'').trim();
- if (!line) {
- continue;
- }
- addToIndex(index,line);
- }
-
- pubSufTest();
-
- var w = fs.createWriteStream('./lib/pubsuffix.js',{
- flags: 'w',
- encoding: 'utf8',
- mode: parseInt('644',8)
- });
- w.on('end', process.exit);
- w.write("/****************************************************\n");
- w.write(" * AUTOMATICALLY GENERATED by generate-pubsuffix.js *\n");
- w.write(" * DO NOT EDIT! *\n");
- w.write(" ****************************************************/\n\n");
-
- w.write('"use strict";\n\n');
- w.write("var punycode = require('punycode');\n\n");
-
- w.write("module.exports.getPublicSuffix = ");
- w.write(getPublicSuffix.toString());
- w.write(";\n\n");
-
- w.write("// The following generated structure is used under the MPL version 1.1\n");
- w.write("// See public-suffix.txt for more information\n\n");
- w.write("var index = module.exports.index = Object.freeze(\n");
- w.write(JSON.stringify(index));
- w.write(");\n\n");
- w.write("// END of automatically generated file\n");
-
- w.end();
-}
-
-function addToIndex(index,line) {
- var prefix = '';
- if (line.replace(/^(!|\*\.)/)) {
- prefix = RegExp.$1;
- line = line.slice(prefix.length);
- }
- line = prefix + punycode.toASCII(line);
-
- if (line.substr(0,1) == '!') {
- index[line.substr(1)] = false;
- } else {
- index[line] = true;
- }
-}
-
-// include the licence in the function since it gets written to pubsuffix.js
-function getPublicSuffix(domain) {
- /*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
- if (!domain) {
- return null;
- }
- if (domain.match(/^\./)) {
- return null;
- }
- var asciiDomain = punycode.toASCII(domain);
- var converted = false;
- if (asciiDomain !== domain) {
- domain = asciiDomain;
- converted = true;
- }
- if (index[domain]) {
- return null;
- }
-
- domain = domain.toLowerCase();
- var parts = domain.split('.').reverse();
-
- var suffix = '';
- var suffixLen = 0;
- for (var i=0; i<parts.length; i++) {
- var part = parts[i];
- var starstr = '*'+suffix;
- var partstr = part+suffix;
-
- if (index[starstr]) { // star rule matches
- suffixLen = i+1;
- if (index[partstr] === false) { // exception rule matches (NB: false, not undefined)
- suffixLen--;
- }
- } else if (index[partstr]) { // exact match, not exception
- suffixLen = i+1;
- }
-
- suffix = '.'+partstr;
- }
-
- if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp');
- return null;
- }
-
- suffixLen = suffixLen || 1;
- if (parts.length > suffixLen) {
- var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.');
- return converted ? punycode.toUnicode(publicSuffix) : publicSuffix;
- }
-
- return null;
-}
-
-function checkPublicSuffix(give,get) {
- var got = getPublicSuffix(give);
- assert.equal(got, get, give+' should be '+(get==null?'NULL':get)+' but got '+got);
-}
-
-// pubSufTest() was converted to JavaScript from http://mxr.mozilla.org/mozilla-central/source/netwerk/test/unit/data/test_psl.txt?raw=1
-function pubSufTest() {
- // For this function-scope and this function-scope ONLY:
- // Any copyright is dedicated to the Public Domain.
- // http://creativecommons.org/publicdomain/zero/1.0/
-
- // NULL input.
- checkPublicSuffix(null, null);
- // Mixed case.
- checkPublicSuffix('COM', null);
- checkPublicSuffix('example.COM', 'example.com');
- checkPublicSuffix('WwW.example.COM', 'example.com');
- // Leading dot.
- checkPublicSuffix('.com', null);
- checkPublicSuffix('.example', null);
- checkPublicSuffix('.example.com', null);
- checkPublicSuffix('.example.example', null);
- // Unlisted TLD.
- checkPublicSuffix('example', null);
- checkPublicSuffix('example.example', 'example.example');
- checkPublicSuffix('b.example.example', 'example.example');
- checkPublicSuffix('a.b.example.example', 'example.example');
- // Listed, but non-Internet, TLD.
- //checkPublicSuffix('local', null);
- //checkPublicSuffix('example.local', null);
- //checkPublicSuffix('b.example.local', null);
- //checkPublicSuffix('a.b.example.local', null);
- // TLD with only 1 rule.
- checkPublicSuffix('biz', null);
- checkPublicSuffix('domain.biz', 'domain.biz');
- checkPublicSuffix('b.domain.biz', 'domain.biz');
- checkPublicSuffix('a.b.domain.biz', 'domain.biz');
- // TLD with some 2-level rules.
- checkPublicSuffix('com', null);
- checkPublicSuffix('example.com', 'example.com');
- checkPublicSuffix('b.example.com', 'example.com');
- checkPublicSuffix('a.b.example.com', 'example.com');
- checkPublicSuffix('uk.com', null);
- checkPublicSuffix('example.uk.com', 'example.uk.com');
- checkPublicSuffix('b.example.uk.com', 'example.uk.com');
- checkPublicSuffix('a.b.example.uk.com', 'example.uk.com');
- checkPublicSuffix('test.ac', 'test.ac');
- // TLD with only 1 (wildcard) rule.
- checkPublicSuffix('cy', null);
- checkPublicSuffix('c.cy', null);
- checkPublicSuffix('b.c.cy', 'b.c.cy');
- checkPublicSuffix('a.b.c.cy', 'b.c.cy');
- // More complex TLD.
- checkPublicSuffix('jp', null);
- checkPublicSuffix('test.jp', 'test.jp');
- checkPublicSuffix('www.test.jp', 'test.jp');
- checkPublicSuffix('ac.jp', null);
- checkPublicSuffix('test.ac.jp', 'test.ac.jp');
- checkPublicSuffix('www.test.ac.jp', 'test.ac.jp');
- checkPublicSuffix('kyoto.jp', null);
- checkPublicSuffix('test.kyoto.jp', 'test.kyoto.jp');
- checkPublicSuffix('ide.kyoto.jp', null);
- checkPublicSuffix('b.ide.kyoto.jp', 'b.ide.kyoto.jp');
- checkPublicSuffix('a.b.ide.kyoto.jp', 'b.ide.kyoto.jp');
- checkPublicSuffix('c.kobe.jp', null);
- checkPublicSuffix('b.c.kobe.jp', 'b.c.kobe.jp');
- checkPublicSuffix('a.b.c.kobe.jp', 'b.c.kobe.jp');
- checkPublicSuffix('city.kobe.jp', 'city.kobe.jp');
- checkPublicSuffix('www.city.kobe.jp', 'city.kobe.jp');
- // TLD with a wildcard rule and exceptions.
- checkPublicSuffix('ck', null);
- checkPublicSuffix('test.ck', null);
- checkPublicSuffix('b.test.ck', 'b.test.ck');
- checkPublicSuffix('a.b.test.ck', 'b.test.ck');
- checkPublicSuffix('www.ck', 'www.ck');
- checkPublicSuffix('www.www.ck', 'www.ck');
- // US K12.
- checkPublicSuffix('us', null);
- checkPublicSuffix('test.us', 'test.us');
- checkPublicSuffix('www.test.us', 'test.us');
- checkPublicSuffix('ak.us', null);
- checkPublicSuffix('test.ak.us', 'test.ak.us');
- checkPublicSuffix('www.test.ak.us', 'test.ak.us');
- checkPublicSuffix('k12.ak.us', null);
- checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us');
- checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us');
- // IDN labels.
- checkPublicSuffix('食狮.com.cn', '食狮.com.cn');
- checkPublicSuffix('食狮.公司.cn', '食狮.公司.cn');
- checkPublicSuffix('www.食狮.公司.cn', '食狮.公司.cn');
- checkPublicSuffix('shishi.公司.cn', 'shishi.公司.cn');
- checkPublicSuffix('公司.cn', null);
- checkPublicSuffix('食狮.中国', '食狮.中国');
- checkPublicSuffix('www.食狮.中国', '食狮.中国');
- checkPublicSuffix('shishi.中国', 'shishi.中国');
- checkPublicSuffix('中国', null);
- // Same as above, but punycoded.
- checkPublicSuffix('xn--85x722f.com.cn', 'xn--85x722f.com.cn');
- checkPublicSuffix('xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
- checkPublicSuffix('www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
- checkPublicSuffix('shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn');
- checkPublicSuffix('xn--55qx5d.cn', null);
- checkPublicSuffix('xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
- checkPublicSuffix('www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
- checkPublicSuffix('shishi.xn--fiqs8s', 'shishi.xn--fiqs8s');
- checkPublicSuffix('xn--fiqs8s', null);
-}
diff --git a/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/node_modules/request/node_modules/tough-cookie/lib/cookie.js
deleted file mode 100644
index 4f677c387..000000000
--- a/node_modules/request/node_modules/tough-cookie/lib/cookie.js
+++ /dev/null
@@ -1,1309 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-var net = require('net');
-var urlParse = require('url').parse;
-var pubsuffix = require('./pubsuffix');
-var Store = require('./store').Store;
-var MemoryCookieStore = require('./memstore').MemoryCookieStore;
-var pathMatch = require('./pathMatch').pathMatch;
-var VERSION = require('../package.json').version;
-
-var punycode;
-try {
- punycode = require('punycode');
-} catch(e) {
- console.warn("cookie: can't load punycode; won't use punycode for domain normalization");
-}
-
-var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
-
-// From RFC6265 S4.1.1
-// note that it excludes \x3B ";"
-var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/;
-var COOKIE_OCTETS = new RegExp('^'+COOKIE_OCTET.source+'$');
-
-// Double quotes are part of the value (see: S4.1.1).
-// '\r', '\n' and '\0' should be treated as a terminator in the "relaxed" mode
-// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60)
-// '=' and ';' are attribute/values separators
-// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L64)
-var COOKIE_PAIR = /^([^=;]+)\s*=\s*(("?)[^\n\r\0]*\3)/;
-
-// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"'
-// Note ';' is \x3B
-var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/;
-
-// Used for checking whether or not there is a trailing semi-colon
-var TRAILING_SEMICOLON = /;+$/;
-
-var DAY_OF_MONTH = /^(\d{1,2})[^\d]*$/;
-var TIME = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/;
-var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i;
-
-var MONTH_TO_NUM = {
- jan:0, feb:1, mar:2, apr:3, may:4, jun:5,
- jul:6, aug:7, sep:8, oct:9, nov:10, dec:11
-};
-var NUM_TO_MONTH = [
- 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'
-];
-var NUM_TO_DAY = [
- 'Sun','Mon','Tue','Wed','Thu','Fri','Sat'
-];
-
-var YEAR = /^(\d{2}|\d{4})$/; // 2 to 4 digits
-
-var MAX_TIME = 2147483647000; // 31-bit max
-var MIN_TIME = 0; // 31-bit min
-
-
-// RFC6265 S5.1.1 date parser:
-function parseDate(str) {
- if (!str) {
- return;
- }
-
- /* RFC6265 S5.1.1:
- * 2. Process each date-token sequentially in the order the date-tokens
- * appear in the cookie-date
- */
- var tokens = str.split(DATE_DELIM);
- if (!tokens) {
- return;
- }
-
- var hour = null;
- var minutes = null;
- var seconds = null;
- var day = null;
- var month = null;
- var year = null;
-
- for (var i=0; i<tokens.length; i++) {
- var token = tokens[i].trim();
- if (!token.length) {
- continue;
- }
-
- var result;
-
- /* 2.1. If the found-time flag is not set and the token matches the time
- * production, set the found-time flag and set the hour- value,
- * minute-value, and second-value to the numbers denoted by the digits in
- * the date-token, respectively. Skip the remaining sub-steps and continue
- * to the next date-token.
- */
- if (seconds === null) {
- result = TIME.exec(token);
- if (result) {
- hour = parseInt(result[1], 10);
- minutes = parseInt(result[2], 10);
- seconds = parseInt(result[3], 10);
- /* RFC6265 S5.1.1.5:
- * [fail if]
- * * the hour-value is greater than 23,
- * * the minute-value is greater than 59, or
- * * the second-value is greater than 59.
- */
- if(hour > 23 || minutes > 59 || seconds > 59) {
- return;
- }
-
- continue;
- }
- }
-
- /* 2.2. If the found-day-of-month flag is not set and the date-token matches
- * the day-of-month production, set the found-day-of- month flag and set
- * the day-of-month-value to the number denoted by the date-token. Skip
- * the remaining sub-steps and continue to the next date-token.
- */
- if (day === null) {
- result = DAY_OF_MONTH.exec(token);
- if (result) {
- day = parseInt(result, 10);
- /* RFC6265 S5.1.1.5:
- * [fail if] the day-of-month-value is less than 1 or greater than 31
- */
- if(day < 1 || day > 31) {
- return;
- }
- continue;
- }
- }
-
- /* 2.3. If the found-month flag is not set and the date-token matches the
- * month production, set the found-month flag and set the month-value to
- * the month denoted by the date-token. Skip the remaining sub-steps and
- * continue to the next date-token.
- */
- if (month === null) {
- result = MONTH.exec(token);
- if (result) {
- month = MONTH_TO_NUM[result[1].toLowerCase()];
- continue;
- }
- }
-
- /* 2.4. If the found-year flag is not set and the date-token matches the year
- * production, set the found-year flag and set the year-value to the number
- * denoted by the date-token. Skip the remaining sub-steps and continue to
- * the next date-token.
- */
- if (year === null) {
- result = YEAR.exec(token);
- if (result) {
- year = parseInt(result[0], 10);
- /* From S5.1.1:
- * 3. If the year-value is greater than or equal to 70 and less
- * than or equal to 99, increment the year-value by 1900.
- * 4. If the year-value is greater than or equal to 0 and less
- * than or equal to 69, increment the year-value by 2000.
- */
- if (70 <= year && year <= 99) {
- year += 1900;
- } else if (0 <= year && year <= 69) {
- year += 2000;
- }
-
- if (year < 1601) {
- return; // 5. ... the year-value is less than 1601
- }
- }
- }
- }
-
- if (seconds === null || day === null || month === null || year === null) {
- return; // 5. ... at least one of the found-day-of-month, found-month, found-
- // year, or found-time flags is not set,
- }
-
- return new Date(Date.UTC(year, month, day, hour, minutes, seconds));
-}
-
-function formatDate(date) {
- var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;
- var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;
- var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;
- var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;
- return NUM_TO_DAY[date.getUTCDay()] + ', ' +
- d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+
- h+':'+m+':'+s+' GMT';
-}
-
-// S5.1.2 Canonicalized Host Names
-function canonicalDomain(str) {
- if (str == null) {
- return null;
- }
- str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading .
-
- // convert to IDN if any non-ASCII characters
- if (punycode && /[^\u0001-\u007f]/.test(str)) {
- str = punycode.toASCII(str);
- }
-
- return str.toLowerCase();
-}
-
-// S5.1.3 Domain Matching
-function domainMatch(str, domStr, canonicalize) {
- if (str == null || domStr == null) {
- return null;
- }
- if (canonicalize !== false) {
- str = canonicalDomain(str);
- domStr = canonicalDomain(domStr);
- }
-
- /*
- * "The domain string and the string are identical. (Note that both the
- * domain string and the string will have been canonicalized to lower case at
- * this point)"
- */
- if (str == domStr) {
- return true;
- }
-
- /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */
-
- /* "* The string is a host name (i.e., not an IP address)." */
- if (net.isIP(str)) {
- return false;
- }
-
- /* "* The domain string is a suffix of the string" */
- var idx = str.indexOf(domStr);
- if (idx <= 0) {
- return false; // it's a non-match (-1) or prefix (0)
- }
-
- // e.g "a.b.c".indexOf("b.c") === 2
- // 5 === 3+2
- if (str.length !== domStr.length + idx) { // it's not a suffix
- return false;
- }
-
- /* "* The last character of the string that is not included in the domain
- * string is a %x2E (".") character." */
- if (str.substr(idx-1,1) !== '.') {
- return false;
- }
-
- return true;
-}
-
-
-// RFC6265 S5.1.4 Paths and Path-Match
-
-/*
- * "The user agent MUST use an algorithm equivalent to the following algorithm
- * to compute the default-path of a cookie:"
- *
- * Assumption: the path (and not query part or absolute uri) is passed in.
- */
-function defaultPath(path) {
- // "2. If the uri-path is empty or if the first character of the uri-path is not
- // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps.
- if (!path || path.substr(0,1) !== "/") {
- return "/";
- }
-
- // "3. If the uri-path contains no more than one %x2F ("/") character, output
- // %x2F ("/") and skip the remaining step."
- if (path === "/") {
- return path;
- }
-
- var rightSlash = path.lastIndexOf("/");
- if (rightSlash === 0) {
- return "/";
- }
-
- // "4. Output the characters of the uri-path from the first character up to,
- // but not including, the right-most %x2F ("/")."
- return path.slice(0, rightSlash);
-}
-
-
-function parse(str) {
- str = str.trim();
-
- // S4.1.1 Trailing semi-colons are not part of the specification.
- var semiColonCheck = TRAILING_SEMICOLON.exec(str);
- if (semiColonCheck) {
- str = str.slice(0, semiColonCheck.index);
- }
-
- // We use a regex to parse the "name-value-pair" part of S5.2
- var firstSemi = str.indexOf(';'); // S5.2 step 1
- var result = COOKIE_PAIR.exec(firstSemi === -1 ? str : str.substr(0,firstSemi));
-
- // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")"
- // constraints as well as trimming any whitespace.
- if (!result) {
- return;
- }
-
- var c = new Cookie();
- c.key = result[1].trim();
- c.value = result[2].trim();
-
- if (firstSemi === -1) {
- return c;
- }
-
- // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string
- // (including the %x3B (";") in question)." plus later on in the same section
- // "discard the first ";" and trim".
- var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim();
-
- // "If the unparsed-attributes string is empty, skip the rest of these
- // steps."
- if (unparsed.length === 0) {
- return c;
- }
-
- /*
- * S5.2 says that when looping over the items "[p]rocess the attribute-name
- * and attribute-value according to the requirements in the following
- * subsections" for every item. Plus, for many of the individual attributes
- * in S5.3 it says to use the "attribute-value of the last attribute in the
- * cookie-attribute-list". Therefore, in this implementation, we overwrite
- * the previous value.
- */
- var cookie_avs = unparsed.split(/\s*;\s*/);
- while (cookie_avs.length) {
- var av = cookie_avs.shift();
- var av_sep = av.indexOf('=');
- var av_key, av_value;
-
- if (av_sep === -1) {
- av_key = av;
- av_value = null;
- } else {
- av_key = av.substr(0,av_sep);
- av_value = av.substr(av_sep+1);
- }
-
- av_key = av_key.trim().toLowerCase();
-
- if (av_value) {
- av_value = av_value.trim();
- }
-
- switch(av_key) {
- case 'expires': // S5.2.1
- if (av_value) {
- var exp = parseDate(av_value);
- // "If the attribute-value failed to parse as a cookie date, ignore the
- // cookie-av."
- if (exp) {
- // over and underflow not realistically a concern: V8's getTime() seems to
- // store something larger than a 32-bit time_t (even with 32-bit node)
- c.expires = exp;
- }
- }
- break;
-
- case 'max-age': // S5.2.2
- if (av_value) {
- // "If the first character of the attribute-value is not a DIGIT or a "-"
- // character ...[or]... If the remainder of attribute-value contains a
- // non-DIGIT character, ignore the cookie-av."
- if (/^-?[0-9]+$/.test(av_value)) {
- var delta = parseInt(av_value, 10);
- // "If delta-seconds is less than or equal to zero (0), let expiry-time
- // be the earliest representable date and time."
- c.setMaxAge(delta);
- }
- }
- break;
-
- case 'domain': // S5.2.3
- // "If the attribute-value is empty, the behavior is undefined. However,
- // the user agent SHOULD ignore the cookie-av entirely."
- if (av_value) {
- // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E
- // (".") character."
- var domain = av_value.trim().replace(/^\./, '');
- if (domain) {
- // "Convert the cookie-domain to lower case."
- c.domain = domain.toLowerCase();
- }
- }
- break;
-
- case 'path': // S5.2.4
- /*
- * "If the attribute-value is empty or if the first character of the
- * attribute-value is not %x2F ("/"):
- * Let cookie-path be the default-path.
- * Otherwise:
- * Let cookie-path be the attribute-value."
- *
- * We'll represent the default-path as null since it depends on the
- * context of the parsing.
- */
- c.path = av_value && av_value[0] === "/" ? av_value : null;
- break;
-
- case 'secure': // S5.2.5
- /*
- * "If the attribute-name case-insensitively matches the string "Secure",
- * the user agent MUST append an attribute to the cookie-attribute-list
- * with an attribute-name of Secure and an empty attribute-value."
- */
- c.secure = true;
- break;
-
- case 'httponly': // S5.2.6 -- effectively the same as 'secure'
- c.httpOnly = true;
- break;
-
- default:
- c.extensions = c.extensions || [];
- c.extensions.push(av);
- break;
- }
- }
-
- return c;
-}
-
-// avoid the V8 deoptimization monster!
-function jsonParse(str) {
- var obj;
- try {
- obj = JSON.parse(str);
- } catch (e) {
- return e;
- }
- return obj;
-}
-
-function fromJSON(str) {
- if (!str) {
- return null;
- }
-
- var obj;
- if (typeof str === 'string') {
- obj = jsonParse(str);
- if (obj instanceof Error) {
- return null;
- }
- } else {
- // assume it's an Object
- obj = str;
- }
-
- var c = new Cookie();
- for (var i=0; i<Cookie.serializableProperties.length; i++) {
- var prop = Cookie.serializableProperties[i];
- if (obj[prop] === undefined ||
- obj[prop] === Cookie.prototype[prop])
- {
- continue; // leave as prototype default
- }
-
- if (prop === 'expires' ||
- prop === 'creation' ||
- prop === 'lastAccessed')
- {
- if (obj[prop] === null) {
- c[prop] = null;
- } else {
- c[prop] = obj[prop] == "Infinity" ?
- "Infinity" : new Date(obj[prop]);
- }
- } else {
- c[prop] = obj[prop];
- }
- }
-
- return c;
-}
-
-/* Section 5.4 part 2:
- * "* Cookies with longer paths are listed before cookies with
- * shorter paths.
- *
- * * Among cookies that have equal-length path fields, cookies with
- * earlier creation-times are listed before cookies with later
- * creation-times."
- */
-
-function cookieCompare(a,b) {
- var cmp = 0;
-
- // descending for length: b CMP a
- var aPathLen = a.path ? a.path.length : 0;
- var bPathLen = b.path ? b.path.length : 0;
- cmp = bPathLen - aPathLen;
- if (cmp !== 0) {
- return cmp;
- }
-
- // ascending for time: a CMP b
- var aTime = a.creation ? a.creation.getTime() : MAX_TIME;
- var bTime = b.creation ? b.creation.getTime() : MAX_TIME;
- cmp = aTime - bTime;
- if (cmp !== 0) {
- return cmp;
- }
-
- // break ties for the same millisecond (precision of JavaScript's clock)
- cmp = a.creationIndex - b.creationIndex;
-
- return cmp;
-}
-
-// Gives the permutation of all possible pathMatch()es of a given path. The
-// array is in longest-to-shortest order. Handy for indexing.
-function permutePath(path) {
- if (path === '/') {
- return ['/'];
- }
- if (path.lastIndexOf('/') === path.length-1) {
- path = path.substr(0,path.length-1);
- }
- var permutations = [path];
- while (path.length > 1) {
- var lindex = path.lastIndexOf('/');
- if (lindex === 0) {
- break;
- }
- path = path.substr(0,lindex);
- permutations.push(path);
- }
- permutations.push('/');
- return permutations;
-}
-
-function getCookieContext(url) {
- if (url instanceof Object) {
- return url;
- }
- // NOTE: decodeURI will throw on malformed URIs (see GH-32).
- // Therefore, we will just skip decoding for such URIs.
- try {
- url = decodeURI(url);
- }
- catch(err) {
- // Silently swallow error
- }
-
- return urlParse(url);
-}
-
-function Cookie(opts) {
- opts = opts || {};
-
- Object.keys(opts).forEach(function(prop) {
- if (Cookie.prototype.hasOwnProperty(prop) &&
- Cookie.prototype[prop] !== opts[prop] &&
- prop.substr(0,1) !== '_')
- {
- this[prop] = opts[prop];
- }
- }, this);
-
- this.creation = this.creation || new Date();
-
- // used to break creation ties in cookieCompare():
- Object.defineProperty(this, 'creationIndex', {
- configurable: false,
- enumerable: false, // important for assert.deepEqual checks
- writable: true,
- value: ++Cookie.cookiesCreated
- });
-}
-
-Cookie.cookiesCreated = 0; // incremented each time a cookie is created
-
-Cookie.parse = parse;
-Cookie.fromJSON = fromJSON;
-
-Cookie.prototype.key = "";
-Cookie.prototype.value = "";
-
-// the order in which the RFC has them:
-Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity
-Cookie.prototype.maxAge = null; // takes precedence over expires for TTL
-Cookie.prototype.domain = null;
-Cookie.prototype.path = null;
-Cookie.prototype.secure = false;
-Cookie.prototype.httpOnly = false;
-Cookie.prototype.extensions = null;
-
-// set by the CookieJar:
-Cookie.prototype.hostOnly = null; // boolean when set
-Cookie.prototype.pathIsDefault = null; // boolean when set
-Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse
-Cookie.prototype.lastAccessed = null; // Date when set
-Object.defineProperty(Cookie.prototype, 'creationIndex', {
- configurable: true,
- enumerable: false,
- writable: true,
- value: 0
-});
-
-Cookie.serializableProperties = Object.keys(Cookie.prototype)
- .filter(function(prop) {
- return !(
- Cookie.prototype[prop] instanceof Function ||
- prop === 'creationIndex' ||
- prop.substr(0,1) === '_'
- );
- });
-
-Cookie.prototype.inspect = function inspect() {
- var now = Date.now();
- return 'Cookie="'+this.toString() +
- '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +
- '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +
- '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +
- '"';
-};
-
-Cookie.prototype.toJSON = function() {
- var obj = {};
-
- var props = Cookie.serializableProperties;
- for (var i=0; i<props.length; i++) {
- var prop = props[i];
- if (this[prop] === Cookie.prototype[prop]) {
- continue; // leave as prototype default
- }
-
- if (prop === 'expires' ||
- prop === 'creation' ||
- prop === 'lastAccessed')
- {
- if (this[prop] === null) {
- obj[prop] = null;
- } else {
- obj[prop] = this[prop] == "Infinity" ? // intentionally not ===
- "Infinity" : this[prop].toISOString();
- }
- } else if (prop === 'maxAge') {
- if (this[prop] !== null) {
- // again, intentionally not ===
- obj[prop] = (this[prop] == Infinity || this[prop] == -Infinity) ?
- this[prop].toString() : this[prop];
- }
- } else {
- if (this[prop] !== Cookie.prototype[prop]) {
- obj[prop] = this[prop];
- }
- }
- }
-
- return obj;
-};
-
-Cookie.prototype.clone = function() {
- return fromJSON(this.toJSON());
-};
-
-Cookie.prototype.validate = function validate() {
- if (!COOKIE_OCTETS.test(this.value)) {
- return false;
- }
- if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires)) {
- return false;
- }
- if (this.maxAge != null && this.maxAge <= 0) {
- return false; // "Max-Age=" non-zero-digit *DIGIT
- }
- if (this.path != null && !PATH_VALUE.test(this.path)) {
- return false;
- }
-
- var cdomain = this.cdomain();
- if (cdomain) {
- if (cdomain.match(/\.$/)) {
- return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this
- }
- var suffix = pubsuffix.getPublicSuffix(cdomain);
- if (suffix == null) { // it's a public suffix
- return false;
- }
- }
- return true;
-};
-
-Cookie.prototype.setExpires = function setExpires(exp) {
- if (exp instanceof Date) {
- this.expires = exp;
- } else {
- this.expires = parseDate(exp) || "Infinity";
- }
-};
-
-Cookie.prototype.setMaxAge = function setMaxAge(age) {
- if (age === Infinity || age === -Infinity) {
- this.maxAge = age.toString(); // so JSON.stringify() works
- } else {
- this.maxAge = age;
- }
-};
-
-// gives Cookie header format
-Cookie.prototype.cookieString = function cookieString() {
- var val = this.value;
- if (val == null) {
- val = '';
- }
- return this.key+'='+val;
-};
-
-// gives Set-Cookie header format
-Cookie.prototype.toString = function toString() {
- var str = this.cookieString();
-
- if (this.expires != Infinity) {
- if (this.expires instanceof Date) {
- str += '; Expires='+formatDate(this.expires);
- } else {
- str += '; Expires='+this.expires;
- }
- }
-
- if (this.maxAge != null && this.maxAge != Infinity) {
- str += '; Max-Age='+this.maxAge;
- }
-
- if (this.domain && !this.hostOnly) {
- str += '; Domain='+this.domain;
- }
- if (this.path) {
- str += '; Path='+this.path;
- }
-
- if (this.secure) {
- str += '; Secure';
- }
- if (this.httpOnly) {
- str += '; HttpOnly';
- }
- if (this.extensions) {
- this.extensions.forEach(function(ext) {
- str += '; '+ext;
- });
- }
-
- return str;
-};
-
-// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
-// elsewhere)
-// S5.3 says to give the "latest representable date" for which we use Infinity
-// For "expired" we use 0
-Cookie.prototype.TTL = function TTL(now) {
- /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires
- * attribute, the Max-Age attribute has precedence and controls the
- * expiration date of the cookie.
- * (Concurs with S5.3 step 3)
- */
- if (this.maxAge != null) {
- return this.maxAge<=0 ? 0 : this.maxAge*1000;
- }
-
- var expires = this.expires;
- if (expires != Infinity) {
- if (!(expires instanceof Date)) {
- expires = parseDate(expires) || Infinity;
- }
-
- if (expires == Infinity) {
- return Infinity;
- }
-
- return expires.getTime() - (now || Date.now());
- }
-
- return Infinity;
-};
-
-// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
-// elsewhere)
-Cookie.prototype.expiryTime = function expiryTime(now) {
- if (this.maxAge != null) {
- var relativeTo = now || this.creation || new Date();
- var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000;
- return relativeTo.getTime() + age;
- }
-
- if (this.expires == Infinity) {
- return Infinity;
- }
- return this.expires.getTime();
-};
-
-// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
-// elsewhere), except it returns a Date
-Cookie.prototype.expiryDate = function expiryDate(now) {
- var millisec = this.expiryTime(now);
- if (millisec == Infinity) {
- return new Date(MAX_TIME);
- } else if (millisec == -Infinity) {
- return new Date(MIN_TIME);
- } else {
- return new Date(millisec);
- }
-};
-
-// This replaces the "persistent-flag" parts of S5.3 step 3
-Cookie.prototype.isPersistent = function isPersistent() {
- return (this.maxAge != null || this.expires != Infinity);
-};
-
-// Mostly S5.1.2 and S5.2.3:
-Cookie.prototype.cdomain =
-Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() {
- if (this.domain == null) {
- return null;
- }
- return canonicalDomain(this.domain);
-};
-
-function CookieJar(store, rejectPublicSuffixes) {
- if (rejectPublicSuffixes != null) {
- this.rejectPublicSuffixes = rejectPublicSuffixes;
- }
-
- if (!store) {
- store = new MemoryCookieStore();
- }
- this.store = store;
-}
-CookieJar.prototype.store = null;
-CookieJar.prototype.rejectPublicSuffixes = true;
-var CAN_BE_SYNC = [];
-
-CAN_BE_SYNC.push('setCookie');
-CookieJar.prototype.setCookie = function(cookie, url, options, cb) {
- var err;
- var context = getCookieContext(url);
- if (options instanceof Function) {
- cb = options;
- options = {};
- }
-
- var host = canonicalDomain(context.hostname);
-
- // S5.3 step 1
- if (!(cookie instanceof Cookie)) {
- cookie = Cookie.parse(cookie);
- }
- if (!cookie) {
- err = new Error("Cookie failed to parse");
- return cb(options.ignoreError ? null : err);
- }
-
- // S5.3 step 2
- var now = options.now || new Date(); // will assign later to save effort in the face of errors
-
- // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie()
-
- // S5.3 step 4: NOOP; domain is null by default
-
- // S5.3 step 5: public suffixes
- if (this.rejectPublicSuffixes && cookie.domain) {
- var suffix = pubsuffix.getPublicSuffix(cookie.cdomain());
- if (suffix == null) { // e.g. "com"
- err = new Error("Cookie has domain set to a public suffix");
- return cb(options.ignoreError ? null : err);
- }
- }
-
- // S5.3 step 6:
- if (cookie.domain) {
- if (!domainMatch(host, cookie.cdomain(), false)) {
- err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host);
- return cb(options.ignoreError ? null : err);
- }
-
- if (cookie.hostOnly == null) { // don't reset if already set
- cookie.hostOnly = false;
- }
-
- } else {
- cookie.hostOnly = true;
- cookie.domain = host;
- }
-
- //S5.2.4 If the attribute-value is empty or if the first character of the
- //attribute-value is not %x2F ("/"):
- //Let cookie-path be the default-path.
- if (!cookie.path || cookie.path[0] !== '/') {
- cookie.path = defaultPath(context.pathname);
- cookie.pathIsDefault = true;
- }
-
- // S5.3 step 8: NOOP; secure attribute
- // S5.3 step 9: NOOP; httpOnly attribute
-
- // S5.3 step 10
- if (options.http === false && cookie.httpOnly) {
- err = new Error("Cookie is HttpOnly and this isn't an HTTP API");
- return cb(options.ignoreError ? null : err);
- }
-
- var store = this.store;
-
- if (!store.updateCookie) {
- store.updateCookie = function(oldCookie, newCookie, cb) {
- this.putCookie(newCookie, cb);
- };
- }
-
- function withCookie(err, oldCookie) {
- if (err) {
- return cb(err);
- }
-
- var next = function(err) {
- if (err) {
- return cb(err);
- } else {
- cb(null, cookie);
- }
- };
-
- if (oldCookie) {
- // S5.3 step 11 - "If the cookie store contains a cookie with the same name,
- // domain, and path as the newly created cookie:"
- if (options.http === false && oldCookie.httpOnly) { // step 11.2
- err = new Error("old Cookie is HttpOnly and this isn't an HTTP API");
- return cb(options.ignoreError ? null : err);
- }
- cookie.creation = oldCookie.creation; // step 11.3
- cookie.creationIndex = oldCookie.creationIndex; // preserve tie-breaker
- cookie.lastAccessed = now;
- // Step 11.4 (delete cookie) is implied by just setting the new one:
- store.updateCookie(oldCookie, cookie, next); // step 12
-
- } else {
- cookie.creation = cookie.lastAccessed = now;
- store.putCookie(cookie, next); // step 12
- }
- }
-
- store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);
-};
-
-// RFC6365 S5.4
-CAN_BE_SYNC.push('getCookies');
-CookieJar.prototype.getCookies = function(url, options, cb) {
- var context = getCookieContext(url);
- if (options instanceof Function) {
- cb = options;
- options = {};
- }
-
- var host = canonicalDomain(context.hostname);
- var path = context.pathname || '/';
-
- var secure = options.secure;
- if (secure == null && context.protocol &&
- (context.protocol == 'https:' || context.protocol == 'wss:'))
- {
- secure = true;
- }
-
- var http = options.http;
- if (http == null) {
- http = true;
- }
-
- var now = options.now || Date.now();
- var expireCheck = options.expire !== false;
- var allPaths = !!options.allPaths;
- var store = this.store;
-
- function matchingCookie(c) {
- // "Either:
- // The cookie's host-only-flag is true and the canonicalized
- // request-host is identical to the cookie's domain.
- // Or:
- // The cookie's host-only-flag is false and the canonicalized
- // request-host domain-matches the cookie's domain."
- if (c.hostOnly) {
- if (c.domain != host) {
- return false;
- }
- } else {
- if (!domainMatch(host, c.domain, false)) {
- return false;
- }
- }
-
- // "The request-uri's path path-matches the cookie's path."
- if (!allPaths && !pathMatch(path, c.path)) {
- return false;
- }
-
- // "If the cookie's secure-only-flag is true, then the request-uri's
- // scheme must denote a "secure" protocol"
- if (c.secure && !secure) {
- return false;
- }
-
- // "If the cookie's http-only-flag is true, then exclude the cookie if the
- // cookie-string is being generated for a "non-HTTP" API"
- if (c.httpOnly && !http) {
- return false;
- }
-
- // deferred from S5.3
- // non-RFC: allow retention of expired cookies by choice
- if (expireCheck && c.expiryTime() <= now) {
- store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored
- return false;
- }
-
- return true;
- }
-
- store.findCookies(host, allPaths ? null : path, function(err,cookies) {
- if (err) {
- return cb(err);
- }
-
- cookies = cookies.filter(matchingCookie);
-
- // sorting of S5.4 part 2
- if (options.sort !== false) {
- cookies = cookies.sort(cookieCompare);
- }
-
- // S5.4 part 3
- var now = new Date();
- cookies.forEach(function(c) {
- c.lastAccessed = now;
- });
- // TODO persist lastAccessed
-
- cb(null,cookies);
- });
-};
-
-CAN_BE_SYNC.push('getCookieString');
-CookieJar.prototype.getCookieString = function(/*..., cb*/) {
- var args = Array.prototype.slice.call(arguments,0);
- var cb = args.pop();
- var next = function(err,cookies) {
- if (err) {
- cb(err);
- } else {
- cb(null, cookies
- .sort(cookieCompare)
- .map(function(c){
- return c.cookieString();
- })
- .join('; '));
- }
- };
- args.push(next);
- this.getCookies.apply(this,args);
-};
-
-CAN_BE_SYNC.push('getSetCookieStrings');
-CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) {
- var args = Array.prototype.slice.call(arguments,0);
- var cb = args.pop();
- var next = function(err,cookies) {
- if (err) {
- cb(err);
- } else {
- cb(null, cookies.map(function(c){
- return c.toString();
- }));
- }
- };
- args.push(next);
- this.getCookies.apply(this,args);
-};
-
-CAN_BE_SYNC.push('serialize');
-CookieJar.prototype.serialize = function(cb) {
- var type = this.store.constructor.name;
- if (type === 'Object') {
- type = null;
- }
-
- // update README.md "Serialization Format" if you change this, please!
- var serialized = {
- // The version of tough-cookie that serialized this jar. Generally a good
- // practice since future versions can make data import decisions based on
- // known past behavior. When/if this matters, use `semver`.
- version: 'tough-cookie@'+VERSION,
-
- // add the store type, to make humans happy:
- storeType: type,
-
- // CookieJar configuration:
- rejectPublicSuffixes: !!this.rejectPublicSuffixes,
-
- // this gets filled from getAllCookies:
- cookies: []
- };
-
- if (!(this.store.getAllCookies &&
- typeof this.store.getAllCookies === 'function'))
- {
- return cb(new Error('store does not support getAllCookies and cannot be serialized'));
- }
-
- this.store.getAllCookies(function(err,cookies) {
- if (err) {
- return cb(err);
- }
-
- serialized.cookies = cookies.map(function(cookie) {
- // convert to serialized 'raw' cookies
- cookie = (cookie instanceof Cookie) ? cookie.toJSON() : cookie;
-
- // Remove the index so new ones get assigned during deserialization
- delete cookie.creationIndex;
-
- return cookie;
- });
-
- return cb(null, serialized);
- });
-};
-
-// well-known name that JSON.stringify calls
-CookieJar.prototype.toJSON = function() {
- return this.serializeSync();
-};
-
-// use the class method CookieJar.deserialize instead of calling this directly
-CAN_BE_SYNC.push('_importCookies');
-CookieJar.prototype._importCookies = function(serialized, cb) {
- var jar = this;
- var cookies = serialized.cookies;
- if (!cookies || !Array.isArray(cookies)) {
- return cb(new Error('serialized jar has no cookies array'));
- }
-
- function putNext(err) {
- if (err) {
- return cb(err);
- }
-
- if (!cookies.length) {
- return cb(err, jar);
- }
-
- var cookie;
- try {
- cookie = fromJSON(cookies.shift());
- } catch (e) {
- return cb(e);
- }
-
- if (cookie === null) {
- return putNext(null); // skip this cookie
- }
-
- jar.store.putCookie(cookie, putNext);
- }
-
- putNext();
-};
-
-CookieJar.deserialize = function(strOrObj, store, cb) {
- if (arguments.length !== 3) {
- // store is optional
- cb = store;
- store = null;
- }
-
- var serialized;
- if (typeof strOrObj === 'string') {
- serialized = jsonParse(strOrObj);
- if (serialized instanceof Error) {
- return cb(serialized);
- }
- } else {
- serialized = strOrObj;
- }
-
- var jar = new CookieJar(store, serialized.rejectPublicSuffixes);
- jar._importCookies(serialized, function(err) {
- if (err) {
- return cb(err);
- }
- cb(null, jar);
- });
-};
-
-CookieJar.fromJSON = CookieJar.deserializeSync;
-CookieJar.deserializeSync = function(strOrObj, store) {
- var serialized = typeof strOrObj === 'string' ?
- JSON.parse(strOrObj) : strOrObj;
- var jar = new CookieJar(store, serialized.rejectPublicSuffixes);
-
- // catch this mistake early:
- if (!jar.store.synchronous) {
- throw new Error('CookieJar store is not synchronous; use async API instead.');
- }
-
- jar._importCookiesSync(serialized);
- return jar;
-};
-
-CAN_BE_SYNC.push('clone');
-CookieJar.prototype.clone = function(newStore, cb) {
- if (arguments.length === 1) {
- cb = newStore;
- newStore = null;
- }
-
- this.serialize(function(err,serialized) {
- if (err) {
- return cb(err);
- }
- CookieJar.deserialize(newStore, serialized, cb);
- });
-};
-
-// Use a closure to provide a true imperative API for synchronous stores.
-function syncWrap(method) {
- return function() {
- if (!this.store.synchronous) {
- throw new Error('CookieJar store is not synchronous; use async API instead.');
- }
-
- var args = Array.prototype.slice.call(arguments);
- var syncErr, syncResult;
- args.push(function syncCb(err, result) {
- syncErr = err;
- syncResult = result;
- });
- this[method].apply(this, args);
-
- if (syncErr) {
- throw syncErr;
- }
- return syncResult;
- };
-}
-
-// wrap all declared CAN_BE_SYNC methods in the sync wrapper
-CAN_BE_SYNC.forEach(function(method) {
- CookieJar.prototype[method+'Sync'] = syncWrap(method);
-});
-
-module.exports = {
- CookieJar: CookieJar,
- Cookie: Cookie,
- Store: Store,
- MemoryCookieStore: MemoryCookieStore,
- parseDate: parseDate,
- formatDate: formatDate,
- parse: parse,
- fromJSON: fromJSON,
- domainMatch: domainMatch,
- defaultPath: defaultPath,
- pathMatch: pathMatch,
- getPublicSuffix: pubsuffix.getPublicSuffix,
- cookieCompare: cookieCompare,
- permuteDomain: require('./permuteDomain').permuteDomain,
- permutePath: permutePath,
- canonicalDomain: canonicalDomain
-};
diff --git a/node_modules/request/node_modules/tough-cookie/lib/memstore.js b/node_modules/request/node_modules/tough-cookie/lib/memstore.js
deleted file mode 100644
index 89ceb6900..000000000
--- a/node_modules/request/node_modules/tough-cookie/lib/memstore.js
+++ /dev/null
@@ -1,170 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-var Store = require('./store').Store;
-var permuteDomain = require('./permuteDomain').permuteDomain;
-var pathMatch = require('./pathMatch').pathMatch;
-var util = require('util');
-
-function MemoryCookieStore() {
- Store.call(this);
- this.idx = {};
-}
-util.inherits(MemoryCookieStore, Store);
-exports.MemoryCookieStore = MemoryCookieStore;
-MemoryCookieStore.prototype.idx = null;
-
-// Since it's just a struct in RAM, this Store is synchronous
-MemoryCookieStore.prototype.synchronous = true;
-
-// force a default depth:
-MemoryCookieStore.prototype.inspect = function() {
- return "{ idx: "+util.inspect(this.idx, false, 2)+' }';
-};
-
-MemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) {
- if (!this.idx[domain]) {
- return cb(null,undefined);
- }
- if (!this.idx[domain][path]) {
- return cb(null,undefined);
- }
- return cb(null,this.idx[domain][path][key]||null);
-};
-
-MemoryCookieStore.prototype.findCookies = function(domain, path, cb) {
- var results = [];
- if (!domain) {
- return cb(null,[]);
- }
-
- var pathMatcher;
- if (!path) {
- // null means "all paths"
- pathMatcher = function matchAll(domainIndex) {
- for (var curPath in domainIndex) {
- var pathIndex = domainIndex[curPath];
- for (var key in pathIndex) {
- results.push(pathIndex[key]);
- }
- }
- };
-
- } else {
- pathMatcher = function matchRFC(domainIndex) {
- //NOTE: we should use path-match algorithm from S5.1.4 here
- //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299)
- Object.keys(domainIndex).forEach(function (cookiePath) {
- if (pathMatch(path, cookiePath)) {
- var pathIndex = domainIndex[cookiePath];
-
- for (var key in pathIndex) {
- results.push(pathIndex[key]);
- }
- }
- });
- };
- }
-
- var domains = permuteDomain(domain) || [domain];
- var idx = this.idx;
- domains.forEach(function(curDomain) {
- var domainIndex = idx[curDomain];
- if (!domainIndex) {
- return;
- }
- pathMatcher(domainIndex);
- });
-
- cb(null,results);
-};
-
-MemoryCookieStore.prototype.putCookie = function(cookie, cb) {
- if (!this.idx[cookie.domain]) {
- this.idx[cookie.domain] = {};
- }
- if (!this.idx[cookie.domain][cookie.path]) {
- this.idx[cookie.domain][cookie.path] = {};
- }
- this.idx[cookie.domain][cookie.path][cookie.key] = cookie;
- cb(null);
-};
-
-MemoryCookieStore.prototype.updateCookie = function(oldCookie, newCookie, cb) {
- // updateCookie() may avoid updating cookies that are identical. For example,
- // lastAccessed may not be important to some stores and an equality
- // comparison could exclude that field.
- this.putCookie(newCookie,cb);
-};
-
-MemoryCookieStore.prototype.removeCookie = function(domain, path, key, cb) {
- if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) {
- delete this.idx[domain][path][key];
- }
- cb(null);
-};
-
-MemoryCookieStore.prototype.removeCookies = function(domain, path, cb) {
- if (this.idx[domain]) {
- if (path) {
- delete this.idx[domain][path];
- } else {
- delete this.idx[domain];
- }
- }
- return cb(null);
-};
-
-MemoryCookieStore.prototype.getAllCookies = function(cb) {
- var cookies = [];
- var idx = this.idx;
-
- var domains = Object.keys(idx);
- domains.forEach(function(domain) {
- var paths = Object.keys(idx[domain]);
- paths.forEach(function(path) {
- var keys = Object.keys(idx[domain][path]);
- keys.forEach(function(key) {
- if (key !== null) {
- cookies.push(idx[domain][path][key]);
- }
- });
- });
- });
-
- // Sort by creationIndex so deserializing retains the creation order.
- // When implementing your own store, this SHOULD retain the order too
- cookies.sort(function(a,b) {
- return (a.creationIndex||0) - (b.creationIndex||0);
- });
-
- cb(null, cookies);
-};
diff --git a/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js b/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js
deleted file mode 100644
index 7c7a79f1f..000000000
--- a/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-"use strict";
-/*
- * "A request-path path-matches a given cookie-path if at least one of the
- * following conditions holds:"
- */
-function pathMatch (reqPath, cookiePath) {
- // "o The cookie-path and the request-path are identical."
- if (cookiePath === reqPath) {
- return true;
- }
-
- var idx = reqPath.indexOf(cookiePath);
- if (idx === 0) {
- // "o The cookie-path is a prefix of the request-path, and the last
- // character of the cookie-path is %x2F ("/")."
- if (cookiePath.substr(-1) === "/") {
- return true;
- }
-
- // " o The cookie-path is a prefix of the request-path, and the first
- // character of the request-path that is not included in the cookie- path
- // is a %x2F ("/") character."
- if (reqPath.substr(cookiePath.length, 1) === "/") {
- return true;
- }
- }
-
- return false;
-}
-
-exports.pathMatch = pathMatch;
diff --git a/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js b/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js
deleted file mode 100644
index 8af841b65..000000000
--- a/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-"use strict";
-var pubsuffix = require('./pubsuffix');
-
-// Gives the permutation of all possible domainMatch()es of a given domain. The
-// array is in shortest-to-longest order. Handy for indexing.
-function permuteDomain (domain) {
- var pubSuf = pubsuffix.getPublicSuffix(domain);
- if (!pubSuf) {
- return null;
- }
- if (pubSuf == domain) {
- return [domain];
- }
-
- var prefix = domain.slice(0, -(pubSuf.length + 1)); // ".example.com"
- var parts = prefix.split('.').reverse();
- var cur = pubSuf;
- var permutations = [cur];
- while (parts.length) {
- cur = parts.shift() + '.' + cur;
- permutations.push(cur);
- }
- return permutations;
-}
-
-exports.permuteDomain = permuteDomain;
diff --git a/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js b/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js
deleted file mode 100644
index f07aa2bf8..000000000
--- a/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************
- * AUTOMATICALLY GENERATED by generate-pubsuffix.js *
- * DO NOT EDIT! *
- ****************************************************/
-
-"use strict";
-
-var punycode = require('punycode');
-
-module.exports.getPublicSuffix = function getPublicSuffix(domain) {
- /*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
- if (!domain) {
- return null;
- }
- if (domain.match(/^\./)) {
- return null;
- }
- var asciiDomain = punycode.toASCII(domain);
- var converted = false;
- if (asciiDomain !== domain) {
- domain = asciiDomain;
- converted = true;
- }
- if (index[domain]) {
- return null;
- }
-
- domain = domain.toLowerCase();
- var parts = domain.split('.').reverse();
-
- var suffix = '';
- var suffixLen = 0;
- for (var i=0; i<parts.length; i++) {
- var part = parts[i];
- var starstr = '*'+suffix;
- var partstr = part+suffix;
-
- if (index[starstr]) { // star rule matches
- suffixLen = i+1;
- if (index[partstr] === false) { // exception rule matches (NB: false, not undefined)
- suffixLen--;
- }
- } else if (index[partstr]) { // exact match, not exception
- suffixLen = i+1;
- }
-
- suffix = '.'+partstr;
- }
-
- if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp');
- return null;
- }
-
- suffixLen = suffixLen || 1;
- if (parts.length > suffixLen) {
- var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.');
- return converted ? punycode.toUnicode(publicSuffix) : publicSuffix;
- }
-
- return null;
-};
-
-// The following generated structure is used under the MPL version 1.1
-// See public-suffix.txt for more information
-
-var index = module.exports.index = Object.freeze(
-{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mp.br":true,"mus.br":true,"net.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"*.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"*.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"hitoyoshi.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kashima.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kosa.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"kesennuma.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"teledata.mz":false,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"gov.ng":true,"mil.ng":true,"mobi.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"info.pl":true,"waw.pl":true,"gov.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"uw.gov.pl":true,"um.gov.pl":true,"ug.gov.pl":true,"upow.gov.pl":true,"starostwo.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"po.gov.pl":true,"pa.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"adygeya.su":true,"arkhangelsk.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"dagestan.su":true,"grozny.su":true,"ivanovo.su":true,"kalmykia.su":true,"kaluga.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"lenug.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"togliatti.su":true,"troitsk.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tp":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"co.ua":true,"pp.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--54b7fta0cc":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--l1acc":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"*.za":true,"*.zm":true,"*.zw":true,"aaa":true,"abb":true,"abbott":true,"abogado":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"ads":true,"adult":true,"aeg":true,"afl":true,"africa":true,"africamagic":true,"agency":true,"aig":true,"airforce":true,"airtel":true,"alibaba":true,"alipay":true,"allfinanz":true,"alsace":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"apartments":true,"aquarelle":true,"aramco":true,"archi":true,"army":true,"arte":true,"associates":true,"attorney":true,"auction":true,"audio":true,"author":true,"auto":true,"autos":true,"avianca":true,"axa":true,"azure":true,"baidu":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"bargains":true,"bauhaus":true,"bayern":true,"bbc":true,"bbva":true,"bcg":true,"bcn":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"bom":true,"bond":true,"boo":true,"boots":true,"bot":true,"boutique":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"cash":true,"casino":true,"catering":true,"cba":true,"cbn":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"channel":true,"chat":true,"cheap":true,"chloe":true,"christmas":true,"chrome":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clothing":true,"club":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"commbank":true,"community":true,"company":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"dnp":true,"docs":true,"dog":true,"doha":true,"domains":true,"doosan":true,"download":true,"drive":true,"dstv":true,"dubai":true,"durban":true,"dvag":true,"earth":true,"eat":true,"edeka":true,"education":true,"email":true,"emerck":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epson":true,"equipment":true,"erni":true,"esq":true,"estate":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"fashion":true,"fast":true,"feedback":true,"ferrero":true,"film":true,"final":true,"finance":true,"financial":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"florist":true,"flowers":true,"flsmidth":true,"fly":true,"foo":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"frl":true,"frogans":true,"frontier":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallup":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmo":true,"gmx":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goog":true,"google":true,"gop":true,"got":true,"gotv":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"group":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hamburg":true,"hangout":true,"haus":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hiphop":true,"hitachi":true,"hiv":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homes":true,"honda":true,"horse":true,"host":true,"hosting":true,"hoteles":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"htc":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ifm":true,"iinet":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"international":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ist":true,"istanbul":true,"itau":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"joburg":true,"jot":true,"joy":true,"jprs":true,"juegos":true,"kaufen":true,"kddi":true,"kfh":true,"kim":true,"kinder":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kpn":true,"krd":true,"kred":true,"kyknet":true,"kyoto":true,"lacaixa":true,"lancaster":true,"land":true,"landrover":true,"lasalle":true,"lat":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"legal":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"live":true,"lixil":true,"loan":true,"loans":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"ltd":true,"ltda":true,"lupin":true,"luxe":true,"luxury":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"market":true,"marketing":true,"markets":true,"marriott":true,"mba":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"miami":true,"microsoft":true,"mini":true,"mma":true,"mnet":true,"mobily":true,"moda":true,"moe":true,"moi":true,"monash":true,"money":true,"montblanc":true,"mormon":true,"mortgage":true,"moscow":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"mtn":true,"mtpc":true,"mtr":true,"multichoice":true,"mutual":true,"mzansimagic":true,"nadex":true,"nagoya":true,"naspers":true,"natura":true,"navy":true,"nec":true,"netbank":true,"network":true,"neustar":true,"new":true,"news":true,"nexus":true,"ngo":true,"nhk":true,"nico":true,"ninja":true,"nissan":true,"nokia":true,"norton":true,"nowruz":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"office":true,"okinawa":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"ooo":true,"oracle":true,"orange":true,"organic":true,"orientexpress":true,"osaka":true,"otsuka":true,"ovh":true,"page":true,"pamperedchef":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"payu":true,"pharmacy":true,"philips":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"pink":true,"pizza":true,"place":true,"play":true,"plumbing":true,"plus":true,"pohl":true,"poker":true,"porn":true,"praxi":true,"press":true,"prod":true,"productions":true,"prof":true,"promo":true,"properties":true,"property":true,"pub":true,"qpon":true,"quebec":true,"quest":true,"racing":true,"read":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rich":true,"ricoh":true,"ril":true,"rio":true,"rip":true,"rocher":true,"rocks":true,"rodeo":true,"room":true,"rsvp":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scor":true,"scot":true,"seat":true,"seek":true,"sener":true,"services":true,"sew":true,"sex":true,"sexy":true,"sharp":true,"shia":true,"shiksha":true,"shoes":true,"shouji":true,"show":true,"shriram":true,"sina":true,"singles":true,"site":true,"skin":true,"sky":true,"skype":true,"smile":true,"sncf":true,"soccer":true,"social":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"stada":true,"star":true,"starhub":true,"statebank":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"studio":true,"study":true,"style":true,"sucks":true,"supersport":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"taobao":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"thd":true,"theater":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"tours":true,"town":true,"toys":true,"trade":true,"trading":true,"training":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubs":true,"university":true,"uno":true,"uol":true,"vacations":true,"vana":true,"vegas":true,"ventures":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"viking":true,"villas":true,"vip":true,"virgin":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vlaanderen":true,"vodka":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walter":true,"wang":true,"wanggou":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wme":true,"work":true,"works":true,"world":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--xhq521b":true,"xn--zfr164b":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"youtube":true,"yun":true,"zara":true,"zero":true,"zip":true,"zone":true,"zuerich":true,"cloudfront.net":true,"ap-northeast-1.compute.amazonaws.com":true,"ap-southeast-1.compute.amazonaws.com":true,"ap-southeast-2.compute.amazonaws.com":true,"cn-north-1.compute.amazonaws.cn":true,"compute.amazonaws.cn":true,"compute.amazonaws.com":true,"compute-1.amazonaws.com":true,"eu-west-1.compute.amazonaws.com":true,"eu-central-1.compute.amazonaws.com":true,"sa-east-1.compute.amazonaws.com":true,"us-east-1.amazonaws.com":true,"us-gov-west-1.compute.amazonaws.com":true,"us-west-1.compute.amazonaws.com":true,"us-west-2.compute.amazonaws.com":true,"z-1.compute-1.amazonaws.com":true,"z-2.compute-1.amazonaws.com":true,"elasticbeanstalk.com":true,"elb.amazonaws.com":true,"s3.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-website-us-east-1.amazonaws.com":true,"s3-website-us-west-2.amazonaws.com":true,"s3-website-us-west-1.amazonaws.com":true,"s3-website-eu-west-1.amazonaws.com":true,"s3-website-ap-southeast-1.amazonaws.com":true,"s3-website-ap-southeast-2.amazonaws.com":true,"s3-website-ap-northeast-1.amazonaws.com":true,"s3-website-sa-east-1.amazonaws.com":true,"s3-website-us-gov-west-1.amazonaws.com":true,"betainabox.com":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"co.nl":true,"co.no":true,"*.platform.sh":true,"cupcake.is":true,"dreamhosters.com":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"firebaseapp.com":true,"flynnhub.com":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"ro.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.be":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.co.at":true,"blogspot.co.il":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.es":true,"blogspot.com.tr":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pt":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.sk":true,"blogspot.td":true,"blogspot.tw":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"withgoogle.com":true,"herokuapp.com":true,"herokussl.com":true,"iki.fi":true,"biz.at":true,"info.at":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"nfshost.com":true,"nyc.mn":true,"nid.io":true,"operaunite.com":true,"outsystemscloud.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"priv.at":true,"rhcloud.com":true,"sinaapp.com":true,"vipsinaapp.com":true,"1kapp.com":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"yolasite.com":true,"za.net":true,"za.org":true});
-
-// END of automatically generated file
diff --git a/node_modules/request/node_modules/tough-cookie/lib/store.js b/node_modules/request/node_modules/tough-cookie/lib/store.js
deleted file mode 100644
index bce52925d..000000000
--- a/node_modules/request/node_modules/tough-cookie/lib/store.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-/*jshint unused:false */
-
-function Store() {
-}
-exports.Store = Store;
-
-// Stores may be synchronous, but are still required to use a
-// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync"
-// API that converts from synchronous-callbacks to imperative style.
-Store.prototype.synchronous = false;
-
-Store.prototype.findCookie = function(domain, path, key, cb) {
- throw new Error('findCookie is not implemented');
-};
-
-Store.prototype.findCookies = function(domain, path, cb) {
- throw new Error('findCookies is not implemented');
-};
-
-Store.prototype.putCookie = function(cookie, cb) {
- throw new Error('putCookie is not implemented');
-};
-
-Store.prototype.updateCookie = function(oldCookie, newCookie, cb) {
- // recommended default implementation:
- // return this.putCookie(newCookie, cb);
- throw new Error('updateCookie is not implemented');
-};
-
-Store.prototype.removeCookie = function(domain, path, key, cb) {
- throw new Error('removeCookie is not implemented');
-};
-
-Store.prototype.removeCookies = function(domain, path, cb) {
- throw new Error('removeCookies is not implemented');
-};
-
-Store.prototype.getAllCookies = function(cb) {
- throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)');
-};
diff --git a/node_modules/request/node_modules/tough-cookie/package.json b/node_modules/request/node_modules/tough-cookie/package.json
deleted file mode 100644
index 55605b3ee..000000000
--- a/node_modules/request/node_modules/tough-cookie/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "author": {
- "name": "Jeremy Stashewsky",
- "email": "jstashewsky@salesforce.com"
- },
- "license": "BSD-3-Clause",
- "name": "tough-cookie",
- "description": "RFC6265 Cookies and Cookie Jar for node.js",
- "keywords": [
- "HTTP",
- "cookie",
- "cookies",
- "set-cookie",
- "cookiejar",
- "jar",
- "RFC6265",
- "RFC2965"
- ],
- "version": "2.0.0",
- "homepage": "https://github.com/SalesforceEng/tough-cookie",
- "repository": {
- "type": "git",
- "url": "git://github.com/SalesforceEng/tough-cookie.git"
- },
- "bugs": {
- "url": "https://github.com/SalesforceEng/tough-cookie/issues"
- },
- "main": "./lib/cookie",
- "scripts": {
- "test": "vows test/*_test.js"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "devDependencies": {
- "vows": "0.7.0",
- "async": ">=0.1.12"
- },
- "gitHead": "a3af6104da7787c23bb98910109b0e0e8a10153c",
- "_id": "tough-cookie@2.0.0",
- "_shasum": "41ce08720b35cf90beb044dd2609fb19e928718f",
- "_from": "tough-cookie@>=0.12.0",
- "_npmVersion": "2.7.4",
- "_nodeVersion": "0.12.2",
- "_npmUser": {
- "name": "jstash",
- "email": "jstash@gmail.com"
- },
- "dist": {
- "shasum": "41ce08720b35cf90beb044dd2609fb19e928718f",
- "tarball": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "jstash",
- "email": "jeremy@goinstant.com"
- },
- {
- "name": "goinstant",
- "email": "services@goinstant.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/request/node_modules/tough-cookie/public-suffix.txt b/node_modules/request/node_modules/tough-cookie/public-suffix.txt
deleted file mode 100644
index d5c9924ed..000000000
--- a/node_modules/request/node_modules/tough-cookie/public-suffix.txt
+++ /dev/null
@@ -1,10309 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-// ===BEGIN ICANN DOMAINS===
-
-// ac : http://en.wikipedia.org/wiki/.ac
-ac
-com.ac
-edu.ac
-gov.ac
-net.ac
-mil.ac
-org.ac
-
-// ad : http://en.wikipedia.org/wiki/.ad
-ad
-nom.ad
-
-// ae : http://en.wikipedia.org/wiki/.ae
-// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php
-ae
-co.ae
-net.ae
-org.ae
-sch.ae
-ac.ae
-gov.ae
-mil.ae
-
-// aero : see http://www.information.aero/index.php?id=66
-aero
-accident-investigation.aero
-accident-prevention.aero
-aerobatic.aero
-aeroclub.aero
-aerodrome.aero
-agents.aero
-aircraft.aero
-airline.aero
-airport.aero
-air-surveillance.aero
-airtraffic.aero
-air-traffic-control.aero
-ambulance.aero
-amusement.aero
-association.aero
-author.aero
-ballooning.aero
-broker.aero
-caa.aero
-cargo.aero
-catering.aero
-certification.aero
-championship.aero
-charter.aero
-civilaviation.aero
-club.aero
-conference.aero
-consultant.aero
-consulting.aero
-control.aero
-council.aero
-crew.aero
-design.aero
-dgca.aero
-educator.aero
-emergency.aero
-engine.aero
-engineer.aero
-entertainment.aero
-equipment.aero
-exchange.aero
-express.aero
-federation.aero
-flight.aero
-freight.aero
-fuel.aero
-gliding.aero
-government.aero
-groundhandling.aero
-group.aero
-hanggliding.aero
-homebuilt.aero
-insurance.aero
-journal.aero
-journalist.aero
-leasing.aero
-logistics.aero
-magazine.aero
-maintenance.aero
-marketplace.aero
-media.aero
-microlight.aero
-modelling.aero
-navigation.aero
-parachuting.aero
-paragliding.aero
-passenger-association.aero
-pilot.aero
-press.aero
-production.aero
-recreation.aero
-repbody.aero
-res.aero
-research.aero
-rotorcraft.aero
-safety.aero
-scientist.aero
-services.aero
-show.aero
-skydiving.aero
-software.aero
-student.aero
-taxi.aero
-trader.aero
-trading.aero
-trainer.aero
-union.aero
-workinggroup.aero
-works.aero
-
-// af : http://www.nic.af/help.jsp
-af
-gov.af
-com.af
-org.af
-net.af
-edu.af
-
-// ag : http://www.nic.ag/prices.htm
-ag
-com.ag
-org.ag
-net.ag
-co.ag
-nom.ag
-
-// ai : http://nic.com.ai/
-ai
-off.ai
-com.ai
-net.ai
-org.ai
-
-// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31
-al
-com.al
-edu.al
-gov.al
-mil.al
-net.al
-org.al
-
-// am : http://en.wikipedia.org/wiki/.am
-am
-
-// an : http://www.una.an/an_domreg/default.asp
-an
-com.an
-net.an
-org.an
-edu.an
-
-// ao : http://en.wikipedia.org/wiki/.ao
-// http://www.dns.ao/REGISTR.DOC
-ao
-ed.ao
-gv.ao
-og.ao
-co.ao
-pb.ao
-it.ao
-
-// aq : http://en.wikipedia.org/wiki/.aq
-aq
-
-// ar : https://nic.ar/normativa-vigente.xhtml
-ar
-com.ar
-edu.ar
-gob.ar
-gov.ar
-int.ar
-mil.ar
-net.ar
-org.ar
-tur.ar
-
-// arpa : http://en.wikipedia.org/wiki/.arpa
-// Confirmed by registry <iana-questions@icann.org> 2008-06-18
-arpa
-e164.arpa
-in-addr.arpa
-ip6.arpa
-iris.arpa
-uri.arpa
-urn.arpa
-
-// as : http://en.wikipedia.org/wiki/.as
-as
-gov.as
-
-// asia : http://en.wikipedia.org/wiki/.asia
-asia
-
-// at : http://en.wikipedia.org/wiki/.at
-// Confirmed by registry <it@nic.at> 2008-06-17
-at
-ac.at
-co.at
-gv.at
-or.at
-
-// au : http://en.wikipedia.org/wiki/.au
-// http://www.auda.org.au/
-au
-// 2LDs
-com.au
-net.au
-org.au
-edu.au
-gov.au
-asn.au
-id.au
-// Historic 2LDs (closed to new registration, but sites still exist)
-info.au
-conf.au
-oz.au
-// CGDNs - http://www.cgdn.org.au/
-act.au
-nsw.au
-nt.au
-qld.au
-sa.au
-tas.au
-vic.au
-wa.au
-// 3LDs
-act.edu.au
-nsw.edu.au
-nt.edu.au
-qld.edu.au
-sa.edu.au
-tas.edu.au
-vic.edu.au
-wa.edu.au
-// act.gov.au Bug 984824 - Removed at request of Greg Tankard
-// nsw.gov.au Bug 547985 - Removed at request of <Shae.Donelan@services.nsw.gov.au>
-// nt.gov.au Bug 940478 - Removed at request of Greg Connors <Greg.Connors@nt.gov.au>
-qld.gov.au
-sa.gov.au
-tas.gov.au
-vic.gov.au
-wa.gov.au
-
-// aw : http://en.wikipedia.org/wiki/.aw
-aw
-com.aw
-
-// ax : http://en.wikipedia.org/wiki/.ax
-ax
-
-// az : http://en.wikipedia.org/wiki/.az
-az
-com.az
-net.az
-int.az
-gov.az
-org.az
-edu.az
-info.az
-pp.az
-mil.az
-name.az
-pro.az
-biz.az
-
-// ba : http://en.wikipedia.org/wiki/.ba
-ba
-org.ba
-net.ba
-edu.ba
-gov.ba
-mil.ba
-unsa.ba
-unbi.ba
-co.ba
-com.ba
-rs.ba
-
-// bb : http://en.wikipedia.org/wiki/.bb
-bb
-biz.bb
-co.bb
-com.bb
-edu.bb
-gov.bb
-info.bb
-net.bb
-org.bb
-store.bb
-tv.bb
-
-// bd : http://en.wikipedia.org/wiki/.bd
-*.bd
-
-// be : http://en.wikipedia.org/wiki/.be
-// Confirmed by registry <tech@dns.be> 2008-06-08
-be
-ac.be
-
-// bf : http://en.wikipedia.org/wiki/.bf
-bf
-gov.bf
-
-// bg : http://en.wikipedia.org/wiki/.bg
-// https://www.register.bg/user/static/rules/en/index.html
-bg
-a.bg
-b.bg
-c.bg
-d.bg
-e.bg
-f.bg
-g.bg
-h.bg
-i.bg
-j.bg
-k.bg
-l.bg
-m.bg
-n.bg
-o.bg
-p.bg
-q.bg
-r.bg
-s.bg
-t.bg
-u.bg
-v.bg
-w.bg
-x.bg
-y.bg
-z.bg
-0.bg
-1.bg
-2.bg
-3.bg
-4.bg
-5.bg
-6.bg
-7.bg
-8.bg
-9.bg
-
-// bh : http://en.wikipedia.org/wiki/.bh
-bh
-com.bh
-edu.bh
-net.bh
-org.bh
-gov.bh
-
-// bi : http://en.wikipedia.org/wiki/.bi
-// http://whois.nic.bi/
-bi
-co.bi
-com.bi
-edu.bi
-or.bi
-org.bi
-
-// biz : http://en.wikipedia.org/wiki/.biz
-biz
-
-// bj : http://en.wikipedia.org/wiki/.bj
-bj
-asso.bj
-barreau.bj
-gouv.bj
-
-// bm : http://www.bermudanic.bm/dnr-text.txt
-bm
-com.bm
-edu.bm
-gov.bm
-net.bm
-org.bm
-
-// bn : http://en.wikipedia.org/wiki/.bn
-*.bn
-
-// bo : http://www.nic.bo/
-bo
-com.bo
-edu.bo
-gov.bo
-gob.bo
-int.bo
-org.bo
-net.bo
-mil.bo
-tv.bo
-
-// br : http://registro.br/dominio/categoria.html
-// Submitted by registry <fneves@registro.br> 2014-08-11
-br
-adm.br
-adv.br
-agr.br
-am.br
-arq.br
-art.br
-ato.br
-b.br
-bio.br
-blog.br
-bmd.br
-cim.br
-cng.br
-cnt.br
-com.br
-coop.br
-ecn.br
-eco.br
-edu.br
-emp.br
-eng.br
-esp.br
-etc.br
-eti.br
-far.br
-flog.br
-fm.br
-fnd.br
-fot.br
-fst.br
-g12.br
-ggf.br
-gov.br
-imb.br
-ind.br
-inf.br
-jor.br
-jus.br
-leg.br
-lel.br
-mat.br
-med.br
-mil.br
-mp.br
-mus.br
-net.br
-*.nom.br
-not.br
-ntr.br
-odo.br
-org.br
-ppg.br
-pro.br
-psc.br
-psi.br
-qsl.br
-radio.br
-rec.br
-slg.br
-srv.br
-taxi.br
-teo.br
-tmp.br
-trd.br
-tur.br
-tv.br
-vet.br
-vlog.br
-wiki.br
-zlg.br
-
-// bs : http://www.nic.bs/rules.html
-bs
-com.bs
-net.bs
-org.bs
-edu.bs
-gov.bs
-
-// bt : http://en.wikipedia.org/wiki/.bt
-bt
-com.bt
-edu.bt
-gov.bt
-net.bt
-org.bt
-
-// bv : No registrations at this time.
-// Submitted by registry <jarle@uninett.no> 2006-06-16
-bv
-
-// bw : http://en.wikipedia.org/wiki/.bw
-// http://www.gobin.info/domainname/bw.doc
-// list of other 2nd level tlds ?
-bw
-co.bw
-org.bw
-
-// by : http://en.wikipedia.org/wiki/.by
-// http://tld.by/rules_2006_en.html
-// list of other 2nd level tlds ?
-by
-gov.by
-mil.by
-// Official information does not indicate that com.by is a reserved
-// second-level domain, but it's being used as one (see www.google.com.by and
-// www.yahoo.com.by, for example), so we list it here for safety's sake.
-com.by
-
-// http://hoster.by/
-of.by
-
-// bz : http://en.wikipedia.org/wiki/.bz
-// http://www.belizenic.bz/
-bz
-com.bz
-net.bz
-org.bz
-edu.bz
-gov.bz
-
-// ca : http://en.wikipedia.org/wiki/.ca
-ca
-// ca geographical names
-ab.ca
-bc.ca
-mb.ca
-nb.ca
-nf.ca
-nl.ca
-ns.ca
-nt.ca
-nu.ca
-on.ca
-pe.ca
-qc.ca
-sk.ca
-yk.ca
-// gc.ca: http://en.wikipedia.org/wiki/.gc.ca
-// see also: http://registry.gc.ca/en/SubdomainFAQ
-gc.ca
-
-// cat : http://en.wikipedia.org/wiki/.cat
-cat
-
-// cc : http://en.wikipedia.org/wiki/.cc
-cc
-
-// cd : http://en.wikipedia.org/wiki/.cd
-// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1
-cd
-gov.cd
-
-// cf : http://en.wikipedia.org/wiki/.cf
-cf
-
-// cg : http://en.wikipedia.org/wiki/.cg
-cg
-
-// ch : http://en.wikipedia.org/wiki/.ch
-ch
-
-// ci : http://en.wikipedia.org/wiki/.ci
-// http://www.nic.ci/index.php?page=charte
-ci
-org.ci
-or.ci
-com.ci
-co.ci
-edu.ci
-ed.ci
-ac.ci
-net.ci
-go.ci
-asso.ci
-aéroport.ci
-int.ci
-presse.ci
-md.ci
-gouv.ci
-
-// ck : http://en.wikipedia.org/wiki/.ck
-*.ck
-!www.ck
-
-// cl : http://en.wikipedia.org/wiki/.cl
-cl
-gov.cl
-gob.cl
-co.cl
-mil.cl
-
-// cm : http://en.wikipedia.org/wiki/.cm plus bug 981927
-cm
-co.cm
-com.cm
-gov.cm
-net.cm
-
-// cn : http://en.wikipedia.org/wiki/.cn
-// Submitted by registry <tanyaling@cnnic.cn> 2008-06-11
-cn
-ac.cn
-com.cn
-edu.cn
-gov.cn
-net.cn
-org.cn
-mil.cn
-公司.cn
-网络.cn
-網絡.cn
-// cn geographic names
-ah.cn
-bj.cn
-cq.cn
-fj.cn
-gd.cn
-gs.cn
-gz.cn
-gx.cn
-ha.cn
-hb.cn
-he.cn
-hi.cn
-hl.cn
-hn.cn
-jl.cn
-js.cn
-jx.cn
-ln.cn
-nm.cn
-nx.cn
-qh.cn
-sc.cn
-sd.cn
-sh.cn
-sn.cn
-sx.cn
-tj.cn
-xj.cn
-xz.cn
-yn.cn
-zj.cn
-hk.cn
-mo.cn
-tw.cn
-
-// co : http://en.wikipedia.org/wiki/.co
-// Submitted by registry <tecnico@uniandes.edu.co> 2008-06-11
-co
-arts.co
-com.co
-edu.co
-firm.co
-gov.co
-info.co
-int.co
-mil.co
-net.co
-nom.co
-org.co
-rec.co
-web.co
-
-// com : http://en.wikipedia.org/wiki/.com
-com
-
-// coop : http://en.wikipedia.org/wiki/.coop
-coop
-
-// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do
-cr
-ac.cr
-co.cr
-ed.cr
-fi.cr
-go.cr
-or.cr
-sa.cr
-
-// cu : http://en.wikipedia.org/wiki/.cu
-cu
-com.cu
-edu.cu
-org.cu
-net.cu
-gov.cu
-inf.cu
-
-// cv : http://en.wikipedia.org/wiki/.cv
-cv
-
-// cw : http://www.una.cw/cw_registry/
-// Confirmed by registry <registry@una.net> 2013-03-26
-cw
-com.cw
-edu.cw
-net.cw
-org.cw
-
-// cx : http://en.wikipedia.org/wiki/.cx
-// list of other 2nd level tlds ?
-cx
-gov.cx
-
-// cy : http://en.wikipedia.org/wiki/.cy
-*.cy
-
-// cz : http://en.wikipedia.org/wiki/.cz
-cz
-
-// de : http://en.wikipedia.org/wiki/.de
-// Confirmed by registry <ops@denic.de> (with technical
-// reservations) 2008-07-01
-de
-
-// dj : http://en.wikipedia.org/wiki/.dj
-dj
-
-// dk : http://en.wikipedia.org/wiki/.dk
-// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17
-dk
-
-// dm : http://en.wikipedia.org/wiki/.dm
-dm
-com.dm
-net.dm
-org.dm
-edu.dm
-gov.dm
-
-// do : http://en.wikipedia.org/wiki/.do
-do
-art.do
-com.do
-edu.do
-gob.do
-gov.do
-mil.do
-net.do
-org.do
-sld.do
-web.do
-
-// dz : http://en.wikipedia.org/wiki/.dz
-dz
-com.dz
-org.dz
-net.dz
-gov.dz
-edu.dz
-asso.dz
-pol.dz
-art.dz
-
-// ec : http://www.nic.ec/reg/paso1.asp
-// Submitted by registry <vabboud@nic.ec> 2008-07-04
-ec
-com.ec
-info.ec
-net.ec
-fin.ec
-k12.ec
-med.ec
-pro.ec
-org.ec
-edu.ec
-gov.ec
-gob.ec
-mil.ec
-
-// edu : http://en.wikipedia.org/wiki/.edu
-edu
-
-// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B
-ee
-edu.ee
-gov.ee
-riik.ee
-lib.ee
-med.ee
-com.ee
-pri.ee
-aip.ee
-org.ee
-fie.ee
-
-// eg : http://en.wikipedia.org/wiki/.eg
-eg
-com.eg
-edu.eg
-eun.eg
-gov.eg
-mil.eg
-name.eg
-net.eg
-org.eg
-sci.eg
-
-// er : http://en.wikipedia.org/wiki/.er
-*.er
-
-// es : https://www.nic.es/site_ingles/ingles/dominios/index.html
-es
-com.es
-nom.es
-org.es
-gob.es
-edu.es
-
-// et : http://en.wikipedia.org/wiki/.et
-et
-com.et
-gov.et
-org.et
-edu.et
-biz.et
-name.et
-info.et
-net.et
-
-// eu : http://en.wikipedia.org/wiki/.eu
-eu
-
-// fi : http://en.wikipedia.org/wiki/.fi
-fi
-// aland.fi : http://en.wikipedia.org/wiki/.ax
-// This domain is being phased out in favor of .ax. As there are still many
-// domains under aland.fi, we still keep it on the list until aland.fi is
-// completely removed.
-// TODO: Check for updates (expected to be phased out around Q1/2009)
-aland.fi
-
-// fj : http://en.wikipedia.org/wiki/.fj
-*.fj
-
-// fk : http://en.wikipedia.org/wiki/.fk
-*.fk
-
-// fm : http://en.wikipedia.org/wiki/.fm
-fm
-
-// fo : http://en.wikipedia.org/wiki/.fo
-fo
-
-// fr : http://www.afnic.fr/
-// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs
-fr
-com.fr
-asso.fr
-nom.fr
-prd.fr
-presse.fr
-tm.fr
-// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels
-aeroport.fr
-assedic.fr
-avocat.fr
-avoues.fr
-cci.fr
-chambagri.fr
-chirurgiens-dentistes.fr
-experts-comptables.fr
-geometre-expert.fr
-gouv.fr
-greta.fr
-huissier-justice.fr
-medecin.fr
-notaires.fr
-pharmacien.fr
-port.fr
-veterinaire.fr
-
-// ga : http://en.wikipedia.org/wiki/.ga
-ga
-
-// gb : This registry is effectively dormant
-// Submitted by registry <Damien.Shaw@ja.net> 2008-06-12
-gb
-
-// gd : http://en.wikipedia.org/wiki/.gd
-gd
-
-// ge : http://www.nic.net.ge/policy_en.pdf
-ge
-com.ge
-edu.ge
-gov.ge
-org.ge
-mil.ge
-net.ge
-pvt.ge
-
-// gf : http://en.wikipedia.org/wiki/.gf
-gf
-
-// gg : http://www.channelisles.net/register-domains/
-// Confirmed by registry <nigel@channelisles.net> 2013-11-28
-gg
-co.gg
-net.gg
-org.gg
-
-// gh : http://en.wikipedia.org/wiki/.gh
-// see also: http://www.nic.gh/reg_now.php
-// Although domains directly at second level are not possible at the moment,
-// they have been possible for some time and may come back.
-gh
-com.gh
-edu.gh
-gov.gh
-org.gh
-mil.gh
-
-// gi : http://www.nic.gi/rules.html
-gi
-com.gi
-ltd.gi
-gov.gi
-mod.gi
-edu.gi
-org.gi
-
-// gl : http://en.wikipedia.org/wiki/.gl
-// http://nic.gl
-gl
-co.gl
-com.gl
-edu.gl
-net.gl
-org.gl
-
-// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm
-gm
-
-// gn : http://psg.com/dns/gn/gn.txt
-// Submitted by registry <randy@psg.com> 2008-06-17
-gn
-ac.gn
-com.gn
-edu.gn
-gov.gn
-org.gn
-net.gn
-
-// gov : http://en.wikipedia.org/wiki/.gov
-gov
-
-// gp : http://www.nic.gp/index.php?lang=en
-gp
-com.gp
-net.gp
-mobi.gp
-edu.gp
-org.gp
-asso.gp
-
-// gq : http://en.wikipedia.org/wiki/.gq
-gq
-
-// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html
-// Submitted by registry <segred@ics.forth.gr> 2008-06-09
-gr
-com.gr
-edu.gr
-net.gr
-org.gr
-gov.gr
-
-// gs : http://en.wikipedia.org/wiki/.gs
-gs
-
-// gt : http://www.gt/politicas_de_registro.html
-gt
-com.gt
-edu.gt
-gob.gt
-ind.gt
-mil.gt
-net.gt
-org.gt
-
-// gu : http://gadao.gov.gu/registration.txt
-*.gu
-
-// gw : http://en.wikipedia.org/wiki/.gw
-gw
-
-// gy : http://en.wikipedia.org/wiki/.gy
-// http://registry.gy/
-gy
-co.gy
-com.gy
-net.gy
-
-// hk : https://www.hkdnr.hk
-// Submitted by registry <hk.tech@hkirc.hk> 2008-06-11
-hk
-com.hk
-edu.hk
-gov.hk
-idv.hk
-net.hk
-org.hk
-公司.hk
-教育.hk
-敎育.hk
-政府.hk
-個人.hk
-个人.hk
-箇人.hk
-網络.hk
-网络.hk
-组織.hk
-網絡.hk
-网絡.hk
-组织.hk
-組織.hk
-組织.hk
-
-// hm : http://en.wikipedia.org/wiki/.hm
-hm
-
-// hn : http://www.nic.hn/politicas/ps02,,05.html
-hn
-com.hn
-edu.hn
-org.hn
-net.hn
-mil.hn
-gob.hn
-
-// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf
-hr
-iz.hr
-from.hr
-name.hr
-com.hr
-
-// ht : http://www.nic.ht/info/charte.cfm
-ht
-com.ht
-shop.ht
-firm.ht
-info.ht
-adult.ht
-net.ht
-pro.ht
-org.ht
-med.ht
-art.ht
-coop.ht
-pol.ht
-asso.ht
-edu.ht
-rel.ht
-gouv.ht
-perso.ht
-
-// hu : http://www.domain.hu/domain/English/sld.html
-// Confirmed by registry <pasztor@iszt.hu> 2008-06-12
-hu
-co.hu
-info.hu
-org.hu
-priv.hu
-sport.hu
-tm.hu
-2000.hu
-agrar.hu
-bolt.hu
-casino.hu
-city.hu
-erotica.hu
-erotika.hu
-film.hu
-forum.hu
-games.hu
-hotel.hu
-ingatlan.hu
-jogasz.hu
-konyvelo.hu
-lakas.hu
-media.hu
-news.hu
-reklam.hu
-sex.hu
-shop.hu
-suli.hu
-szex.hu
-tozsde.hu
-utazas.hu
-video.hu
-
-// id : https://register.pandi.or.id/
-id
-ac.id
-biz.id
-co.id
-desa.id
-go.id
-mil.id
-my.id
-net.id
-or.id
-sch.id
-web.id
-
-// ie : http://en.wikipedia.org/wiki/.ie
-ie
-gov.ie
-
-// il : http://en.wikipedia.org/wiki/.il
-*.il
-
-// im : https://www.nic.im/
-// Submitted by registry <info@nic.im> 2013-11-15
-im
-ac.im
-co.im
-com.im
-ltd.co.im
-net.im
-org.im
-plc.co.im
-tt.im
-tv.im
-
-// in : http://en.wikipedia.org/wiki/.in
-// see also: https://registry.in/Policies
-// Please note, that nic.in is not an offical eTLD, but used by most
-// government institutions.
-in
-co.in
-firm.in
-net.in
-org.in
-gen.in
-ind.in
-nic.in
-ac.in
-edu.in
-res.in
-gov.in
-mil.in
-
-// info : http://en.wikipedia.org/wiki/.info
-info
-
-// int : http://en.wikipedia.org/wiki/.int
-// Confirmed by registry <iana-questions@icann.org> 2008-06-18
-int
-eu.int
-
-// io : http://www.nic.io/rules.html
-// list of other 2nd level tlds ?
-io
-com.io
-
-// iq : http://www.cmc.iq/english/iq/iqregister1.htm
-iq
-gov.iq
-edu.iq
-mil.iq
-com.iq
-org.iq
-net.iq
-
-// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules
-// Also see http://www.nic.ir/Internationalized_Domain_Names
-// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16
-ir
-ac.ir
-co.ir
-gov.ir
-id.ir
-net.ir
-org.ir
-sch.ir
-// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH)
-ایران.ir
-// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH)
-ايران.ir
-
-// is : http://www.isnic.is/domain/rules.php
-// Confirmed by registry <marius@isgate.is> 2008-12-06
-is
-net.is
-com.is
-edu.is
-gov.is
-org.is
-int.is
-
-// it : http://en.wikipedia.org/wiki/.it
-it
-gov.it
-edu.it
-// Reserved geo-names:
-// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf
-// There is also a list of reserved geo-names corresponding to Italian municipalities
-// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here.
-// Regions
-abr.it
-abruzzo.it
-aosta-valley.it
-aostavalley.it
-bas.it
-basilicata.it
-cal.it
-calabria.it
-cam.it
-campania.it
-emilia-romagna.it
-emiliaromagna.it
-emr.it
-friuli-v-giulia.it
-friuli-ve-giulia.it
-friuli-vegiulia.it
-friuli-venezia-giulia.it
-friuli-veneziagiulia.it
-friuli-vgiulia.it
-friuliv-giulia.it
-friulive-giulia.it
-friulivegiulia.it
-friulivenezia-giulia.it
-friuliveneziagiulia.it
-friulivgiulia.it
-fvg.it
-laz.it
-lazio.it
-lig.it
-liguria.it
-lom.it
-lombardia.it
-lombardy.it
-lucania.it
-mar.it
-marche.it
-mol.it
-molise.it
-piedmont.it
-piemonte.it
-pmn.it
-pug.it
-puglia.it
-sar.it
-sardegna.it
-sardinia.it
-sic.it
-sicilia.it
-sicily.it
-taa.it
-tos.it
-toscana.it
-trentino-a-adige.it
-trentino-aadige.it
-trentino-alto-adige.it
-trentino-altoadige.it
-trentino-s-tirol.it
-trentino-stirol.it
-trentino-sud-tirol.it
-trentino-sudtirol.it
-trentino-sued-tirol.it
-trentino-suedtirol.it
-trentinoa-adige.it
-trentinoaadige.it
-trentinoalto-adige.it
-trentinoaltoadige.it
-trentinos-tirol.it
-trentinostirol.it
-trentinosud-tirol.it
-trentinosudtirol.it
-trentinosued-tirol.it
-trentinosuedtirol.it
-tuscany.it
-umb.it
-umbria.it
-val-d-aosta.it
-val-daosta.it
-vald-aosta.it
-valdaosta.it
-valle-aosta.it
-valle-d-aosta.it
-valle-daosta.it
-valleaosta.it
-valled-aosta.it
-valledaosta.it
-vallee-aoste.it
-valleeaoste.it
-vao.it
-vda.it
-ven.it
-veneto.it
-// Provinces
-ag.it
-agrigento.it
-al.it
-alessandria.it
-alto-adige.it
-altoadige.it
-an.it
-ancona.it
-andria-barletta-trani.it
-andria-trani-barletta.it
-andriabarlettatrani.it
-andriatranibarletta.it
-ao.it
-aosta.it
-aoste.it
-ap.it
-aq.it
-aquila.it
-ar.it
-arezzo.it
-ascoli-piceno.it
-ascolipiceno.it
-asti.it
-at.it
-av.it
-avellino.it
-ba.it
-balsan.it
-bari.it
-barletta-trani-andria.it
-barlettatraniandria.it
-belluno.it
-benevento.it
-bergamo.it
-bg.it
-bi.it
-biella.it
-bl.it
-bn.it
-bo.it
-bologna.it
-bolzano.it
-bozen.it
-br.it
-brescia.it
-brindisi.it
-bs.it
-bt.it
-bz.it
-ca.it
-cagliari.it
-caltanissetta.it
-campidano-medio.it
-campidanomedio.it
-campobasso.it
-carbonia-iglesias.it
-carboniaiglesias.it
-carrara-massa.it
-carraramassa.it
-caserta.it
-catania.it
-catanzaro.it
-cb.it
-ce.it
-cesena-forli.it
-cesenaforli.it
-ch.it
-chieti.it
-ci.it
-cl.it
-cn.it
-co.it
-como.it
-cosenza.it
-cr.it
-cremona.it
-crotone.it
-cs.it
-ct.it
-cuneo.it
-cz.it
-dell-ogliastra.it
-dellogliastra.it
-en.it
-enna.it
-fc.it
-fe.it
-fermo.it
-ferrara.it
-fg.it
-fi.it
-firenze.it
-florence.it
-fm.it
-foggia.it
-forli-cesena.it
-forlicesena.it
-fr.it
-frosinone.it
-ge.it
-genoa.it
-genova.it
-go.it
-gorizia.it
-gr.it
-grosseto.it
-iglesias-carbonia.it
-iglesiascarbonia.it
-im.it
-imperia.it
-is.it
-isernia.it
-kr.it
-la-spezia.it
-laquila.it
-laspezia.it
-latina.it
-lc.it
-le.it
-lecce.it
-lecco.it
-li.it
-livorno.it
-lo.it
-lodi.it
-lt.it
-lu.it
-lucca.it
-macerata.it
-mantova.it
-massa-carrara.it
-massacarrara.it
-matera.it
-mb.it
-mc.it
-me.it
-medio-campidano.it
-mediocampidano.it
-messina.it
-mi.it
-milan.it
-milano.it
-mn.it
-mo.it
-modena.it
-monza-brianza.it
-monza-e-della-brianza.it
-monza.it
-monzabrianza.it
-monzaebrianza.it
-monzaedellabrianza.it
-ms.it
-mt.it
-na.it
-naples.it
-napoli.it
-no.it
-novara.it
-nu.it
-nuoro.it
-og.it
-ogliastra.it
-olbia-tempio.it
-olbiatempio.it
-or.it
-oristano.it
-ot.it
-pa.it
-padova.it
-padua.it
-palermo.it
-parma.it
-pavia.it
-pc.it
-pd.it
-pe.it
-perugia.it
-pesaro-urbino.it
-pesarourbino.it
-pescara.it
-pg.it
-pi.it
-piacenza.it
-pisa.it
-pistoia.it
-pn.it
-po.it
-pordenone.it
-potenza.it
-pr.it
-prato.it
-pt.it
-pu.it
-pv.it
-pz.it
-ra.it
-ragusa.it
-ravenna.it
-rc.it
-re.it
-reggio-calabria.it
-reggio-emilia.it
-reggiocalabria.it
-reggioemilia.it
-rg.it
-ri.it
-rieti.it
-rimini.it
-rm.it
-rn.it
-ro.it
-roma.it
-rome.it
-rovigo.it
-sa.it
-salerno.it
-sassari.it
-savona.it
-si.it
-siena.it
-siracusa.it
-so.it
-sondrio.it
-sp.it
-sr.it
-ss.it
-suedtirol.it
-sv.it
-ta.it
-taranto.it
-te.it
-tempio-olbia.it
-tempioolbia.it
-teramo.it
-terni.it
-tn.it
-to.it
-torino.it
-tp.it
-tr.it
-trani-andria-barletta.it
-trani-barletta-andria.it
-traniandriabarletta.it
-tranibarlettaandria.it
-trapani.it
-trentino.it
-trento.it
-treviso.it
-trieste.it
-ts.it
-turin.it
-tv.it
-ud.it
-udine.it
-urbino-pesaro.it
-urbinopesaro.it
-va.it
-varese.it
-vb.it
-vc.it
-ve.it
-venezia.it
-venice.it
-verbania.it
-vercelli.it
-verona.it
-vi.it
-vibo-valentia.it
-vibovalentia.it
-vicenza.it
-viterbo.it
-vr.it
-vs.it
-vt.it
-vv.it
-
-// je : http://www.channelisles.net/register-domains/
-// Confirmed by registry <nigel@channelisles.net> 2013-11-28
-je
-co.je
-net.je
-org.je
-
-// jm : http://www.com.jm/register.html
-*.jm
-
-// jo : http://www.dns.jo/Registration_policy.aspx
-jo
-com.jo
-org.jo
-net.jo
-edu.jo
-sch.jo
-gov.jo
-mil.jo
-name.jo
-
-// jobs : http://en.wikipedia.org/wiki/.jobs
-jobs
-
-// jp : http://en.wikipedia.org/wiki/.jp
-// http://jprs.co.jp/en/jpdomain.html
-// Submitted by registry <info@jprs.jp> 2014-10-30
-jp
-// jp organizational type names
-ac.jp
-ad.jp
-co.jp
-ed.jp
-go.jp
-gr.jp
-lg.jp
-ne.jp
-or.jp
-// jp prefecture type names
-aichi.jp
-akita.jp
-aomori.jp
-chiba.jp
-ehime.jp
-fukui.jp
-fukuoka.jp
-fukushima.jp
-gifu.jp
-gunma.jp
-hiroshima.jp
-hokkaido.jp
-hyogo.jp
-ibaraki.jp
-ishikawa.jp
-iwate.jp
-kagawa.jp
-kagoshima.jp
-kanagawa.jp
-kochi.jp
-kumamoto.jp
-kyoto.jp
-mie.jp
-miyagi.jp
-miyazaki.jp
-nagano.jp
-nagasaki.jp
-nara.jp
-niigata.jp
-oita.jp
-okayama.jp
-okinawa.jp
-osaka.jp
-saga.jp
-saitama.jp
-shiga.jp
-shimane.jp
-shizuoka.jp
-tochigi.jp
-tokushima.jp
-tokyo.jp
-tottori.jp
-toyama.jp
-wakayama.jp
-yamagata.jp
-yamaguchi.jp
-yamanashi.jp
-栃木.jp
-愛知.jp
-愛媛.jp
-兵庫.jp
-熊本.jp
-茨城.jp
-北海道.jp
-千葉.jp
-和歌山.jp
-長崎.jp
-長野.jp
-新潟.jp
-青森.jp
-静岡.jp
-東京.jp
-石川.jp
-埼玉.jp
-三重.jp
-京都.jp
-佐賀.jp
-大分.jp
-大阪.jp
-奈良.jp
-宮城.jp
-宮崎.jp
-富山.jp
-山口.jp
-山形.jp
-山梨.jp
-岩手.jp
-岐阜.jp
-岡山.jp
-島根.jp
-広島.jp
-徳島.jp
-沖縄.jp
-滋賀.jp
-神奈川.jp
-福井.jp
-福岡.jp
-福島.jp
-秋田.jp
-群馬.jp
-香川.jp
-高知.jp
-鳥取.jp
-鹿児島.jp
-// jp geographic type names
-// http://jprs.jp/doc/rule/saisoku-1.html
-*.kawasaki.jp
-*.kitakyushu.jp
-*.kobe.jp
-*.nagoya.jp
-*.sapporo.jp
-*.sendai.jp
-*.yokohama.jp
-!city.kawasaki.jp
-!city.kitakyushu.jp
-!city.kobe.jp
-!city.nagoya.jp
-!city.sapporo.jp
-!city.sendai.jp
-!city.yokohama.jp
-// 4th level registration
-aisai.aichi.jp
-ama.aichi.jp
-anjo.aichi.jp
-asuke.aichi.jp
-chiryu.aichi.jp
-chita.aichi.jp
-fuso.aichi.jp
-gamagori.aichi.jp
-handa.aichi.jp
-hazu.aichi.jp
-hekinan.aichi.jp
-higashiura.aichi.jp
-ichinomiya.aichi.jp
-inazawa.aichi.jp
-inuyama.aichi.jp
-isshiki.aichi.jp
-iwakura.aichi.jp
-kanie.aichi.jp
-kariya.aichi.jp
-kasugai.aichi.jp
-kira.aichi.jp
-kiyosu.aichi.jp
-komaki.aichi.jp
-konan.aichi.jp
-kota.aichi.jp
-mihama.aichi.jp
-miyoshi.aichi.jp
-nishio.aichi.jp
-nisshin.aichi.jp
-obu.aichi.jp
-oguchi.aichi.jp
-oharu.aichi.jp
-okazaki.aichi.jp
-owariasahi.aichi.jp
-seto.aichi.jp
-shikatsu.aichi.jp
-shinshiro.aichi.jp
-shitara.aichi.jp
-tahara.aichi.jp
-takahama.aichi.jp
-tobishima.aichi.jp
-toei.aichi.jp
-togo.aichi.jp
-tokai.aichi.jp
-tokoname.aichi.jp
-toyoake.aichi.jp
-toyohashi.aichi.jp
-toyokawa.aichi.jp
-toyone.aichi.jp
-toyota.aichi.jp
-tsushima.aichi.jp
-yatomi.aichi.jp
-akita.akita.jp
-daisen.akita.jp
-fujisato.akita.jp
-gojome.akita.jp
-hachirogata.akita.jp
-happou.akita.jp
-higashinaruse.akita.jp
-honjo.akita.jp
-honjyo.akita.jp
-ikawa.akita.jp
-kamikoani.akita.jp
-kamioka.akita.jp
-katagami.akita.jp
-kazuno.akita.jp
-kitaakita.akita.jp
-kosaka.akita.jp
-kyowa.akita.jp
-misato.akita.jp
-mitane.akita.jp
-moriyoshi.akita.jp
-nikaho.akita.jp
-noshiro.akita.jp
-odate.akita.jp
-oga.akita.jp
-ogata.akita.jp
-semboku.akita.jp
-yokote.akita.jp
-yurihonjo.akita.jp
-aomori.aomori.jp
-gonohe.aomori.jp
-hachinohe.aomori.jp
-hashikami.aomori.jp
-hiranai.aomori.jp
-hirosaki.aomori.jp
-itayanagi.aomori.jp
-kuroishi.aomori.jp
-misawa.aomori.jp
-mutsu.aomori.jp
-nakadomari.aomori.jp
-noheji.aomori.jp
-oirase.aomori.jp
-owani.aomori.jp
-rokunohe.aomori.jp
-sannohe.aomori.jp
-shichinohe.aomori.jp
-shingo.aomori.jp
-takko.aomori.jp
-towada.aomori.jp
-tsugaru.aomori.jp
-tsuruta.aomori.jp
-abiko.chiba.jp
-asahi.chiba.jp
-chonan.chiba.jp
-chosei.chiba.jp
-choshi.chiba.jp
-chuo.chiba.jp
-funabashi.chiba.jp
-futtsu.chiba.jp
-hanamigawa.chiba.jp
-ichihara.chiba.jp
-ichikawa.chiba.jp
-ichinomiya.chiba.jp
-inzai.chiba.jp
-isumi.chiba.jp
-kamagaya.chiba.jp
-kamogawa.chiba.jp
-kashiwa.chiba.jp
-katori.chiba.jp
-katsuura.chiba.jp
-kimitsu.chiba.jp
-kisarazu.chiba.jp
-kozaki.chiba.jp
-kujukuri.chiba.jp
-kyonan.chiba.jp
-matsudo.chiba.jp
-midori.chiba.jp
-mihama.chiba.jp
-minamiboso.chiba.jp
-mobara.chiba.jp
-mutsuzawa.chiba.jp
-nagara.chiba.jp
-nagareyama.chiba.jp
-narashino.chiba.jp
-narita.chiba.jp
-noda.chiba.jp
-oamishirasato.chiba.jp
-omigawa.chiba.jp
-onjuku.chiba.jp
-otaki.chiba.jp
-sakae.chiba.jp
-sakura.chiba.jp
-shimofusa.chiba.jp
-shirako.chiba.jp
-shiroi.chiba.jp
-shisui.chiba.jp
-sodegaura.chiba.jp
-sosa.chiba.jp
-tako.chiba.jp
-tateyama.chiba.jp
-togane.chiba.jp
-tohnosho.chiba.jp
-tomisato.chiba.jp
-urayasu.chiba.jp
-yachimata.chiba.jp
-yachiyo.chiba.jp
-yokaichiba.chiba.jp
-yokoshibahikari.chiba.jp
-yotsukaido.chiba.jp
-ainan.ehime.jp
-honai.ehime.jp
-ikata.ehime.jp
-imabari.ehime.jp
-iyo.ehime.jp
-kamijima.ehime.jp
-kihoku.ehime.jp
-kumakogen.ehime.jp
-masaki.ehime.jp
-matsuno.ehime.jp
-matsuyama.ehime.jp
-namikata.ehime.jp
-niihama.ehime.jp
-ozu.ehime.jp
-saijo.ehime.jp
-seiyo.ehime.jp
-shikokuchuo.ehime.jp
-tobe.ehime.jp
-toon.ehime.jp
-uchiko.ehime.jp
-uwajima.ehime.jp
-yawatahama.ehime.jp
-echizen.fukui.jp
-eiheiji.fukui.jp
-fukui.fukui.jp
-ikeda.fukui.jp
-katsuyama.fukui.jp
-mihama.fukui.jp
-minamiechizen.fukui.jp
-obama.fukui.jp
-ohi.fukui.jp
-ono.fukui.jp
-sabae.fukui.jp
-sakai.fukui.jp
-takahama.fukui.jp
-tsuruga.fukui.jp
-wakasa.fukui.jp
-ashiya.fukuoka.jp
-buzen.fukuoka.jp
-chikugo.fukuoka.jp
-chikuho.fukuoka.jp
-chikujo.fukuoka.jp
-chikushino.fukuoka.jp
-chikuzen.fukuoka.jp
-chuo.fukuoka.jp
-dazaifu.fukuoka.jp
-fukuchi.fukuoka.jp
-hakata.fukuoka.jp
-higashi.fukuoka.jp
-hirokawa.fukuoka.jp
-hisayama.fukuoka.jp
-iizuka.fukuoka.jp
-inatsuki.fukuoka.jp
-kaho.fukuoka.jp
-kasuga.fukuoka.jp
-kasuya.fukuoka.jp
-kawara.fukuoka.jp
-keisen.fukuoka.jp
-koga.fukuoka.jp
-kurate.fukuoka.jp
-kurogi.fukuoka.jp
-kurume.fukuoka.jp
-minami.fukuoka.jp
-miyako.fukuoka.jp
-miyama.fukuoka.jp
-miyawaka.fukuoka.jp
-mizumaki.fukuoka.jp
-munakata.fukuoka.jp
-nakagawa.fukuoka.jp
-nakama.fukuoka.jp
-nishi.fukuoka.jp
-nogata.fukuoka.jp
-ogori.fukuoka.jp
-okagaki.fukuoka.jp
-okawa.fukuoka.jp
-oki.fukuoka.jp
-omuta.fukuoka.jp
-onga.fukuoka.jp
-onojo.fukuoka.jp
-oto.fukuoka.jp
-saigawa.fukuoka.jp
-sasaguri.fukuoka.jp
-shingu.fukuoka.jp
-shinyoshitomi.fukuoka.jp
-shonai.fukuoka.jp
-soeda.fukuoka.jp
-sue.fukuoka.jp
-tachiarai.fukuoka.jp
-tagawa.fukuoka.jp
-takata.fukuoka.jp
-toho.fukuoka.jp
-toyotsu.fukuoka.jp
-tsuiki.fukuoka.jp
-ukiha.fukuoka.jp
-umi.fukuoka.jp
-usui.fukuoka.jp
-yamada.fukuoka.jp
-yame.fukuoka.jp
-yanagawa.fukuoka.jp
-yukuhashi.fukuoka.jp
-aizubange.fukushima.jp
-aizumisato.fukushima.jp
-aizuwakamatsu.fukushima.jp
-asakawa.fukushima.jp
-bandai.fukushima.jp
-date.fukushima.jp
-fukushima.fukushima.jp
-furudono.fukushima.jp
-futaba.fukushima.jp
-hanawa.fukushima.jp
-higashi.fukushima.jp
-hirata.fukushima.jp
-hirono.fukushima.jp
-iitate.fukushima.jp
-inawashiro.fukushima.jp
-ishikawa.fukushima.jp
-iwaki.fukushima.jp
-izumizaki.fukushima.jp
-kagamiishi.fukushima.jp
-kaneyama.fukushima.jp
-kawamata.fukushima.jp
-kitakata.fukushima.jp
-kitashiobara.fukushima.jp
-koori.fukushima.jp
-koriyama.fukushima.jp
-kunimi.fukushima.jp
-miharu.fukushima.jp
-mishima.fukushima.jp
-namie.fukushima.jp
-nango.fukushima.jp
-nishiaizu.fukushima.jp
-nishigo.fukushima.jp
-okuma.fukushima.jp
-omotego.fukushima.jp
-ono.fukushima.jp
-otama.fukushima.jp
-samegawa.fukushima.jp
-shimogo.fukushima.jp
-shirakawa.fukushima.jp
-showa.fukushima.jp
-soma.fukushima.jp
-sukagawa.fukushima.jp
-taishin.fukushima.jp
-tamakawa.fukushima.jp
-tanagura.fukushima.jp
-tenei.fukushima.jp
-yabuki.fukushima.jp
-yamato.fukushima.jp
-yamatsuri.fukushima.jp
-yanaizu.fukushima.jp
-yugawa.fukushima.jp
-anpachi.gifu.jp
-ena.gifu.jp
-gifu.gifu.jp
-ginan.gifu.jp
-godo.gifu.jp
-gujo.gifu.jp
-hashima.gifu.jp
-hichiso.gifu.jp
-hida.gifu.jp
-higashishirakawa.gifu.jp
-ibigawa.gifu.jp
-ikeda.gifu.jp
-kakamigahara.gifu.jp
-kani.gifu.jp
-kasahara.gifu.jp
-kasamatsu.gifu.jp
-kawaue.gifu.jp
-kitagata.gifu.jp
-mino.gifu.jp
-minokamo.gifu.jp
-mitake.gifu.jp
-mizunami.gifu.jp
-motosu.gifu.jp
-nakatsugawa.gifu.jp
-ogaki.gifu.jp
-sakahogi.gifu.jp
-seki.gifu.jp
-sekigahara.gifu.jp
-shirakawa.gifu.jp
-tajimi.gifu.jp
-takayama.gifu.jp
-tarui.gifu.jp
-toki.gifu.jp
-tomika.gifu.jp
-wanouchi.gifu.jp
-yamagata.gifu.jp
-yaotsu.gifu.jp
-yoro.gifu.jp
-annaka.gunma.jp
-chiyoda.gunma.jp
-fujioka.gunma.jp
-higashiagatsuma.gunma.jp
-isesaki.gunma.jp
-itakura.gunma.jp
-kanna.gunma.jp
-kanra.gunma.jp
-katashina.gunma.jp
-kawaba.gunma.jp
-kiryu.gunma.jp
-kusatsu.gunma.jp
-maebashi.gunma.jp
-meiwa.gunma.jp
-midori.gunma.jp
-minakami.gunma.jp
-naganohara.gunma.jp
-nakanojo.gunma.jp
-nanmoku.gunma.jp
-numata.gunma.jp
-oizumi.gunma.jp
-ora.gunma.jp
-ota.gunma.jp
-shibukawa.gunma.jp
-shimonita.gunma.jp
-shinto.gunma.jp
-showa.gunma.jp
-takasaki.gunma.jp
-takayama.gunma.jp
-tamamura.gunma.jp
-tatebayashi.gunma.jp
-tomioka.gunma.jp
-tsukiyono.gunma.jp
-tsumagoi.gunma.jp
-ueno.gunma.jp
-yoshioka.gunma.jp
-asaminami.hiroshima.jp
-daiwa.hiroshima.jp
-etajima.hiroshima.jp
-fuchu.hiroshima.jp
-fukuyama.hiroshima.jp
-hatsukaichi.hiroshima.jp
-higashihiroshima.hiroshima.jp
-hongo.hiroshima.jp
-jinsekikogen.hiroshima.jp
-kaita.hiroshima.jp
-kui.hiroshima.jp
-kumano.hiroshima.jp
-kure.hiroshima.jp
-mihara.hiroshima.jp
-miyoshi.hiroshima.jp
-naka.hiroshima.jp
-onomichi.hiroshima.jp
-osakikamijima.hiroshima.jp
-otake.hiroshima.jp
-saka.hiroshima.jp
-sera.hiroshima.jp
-seranishi.hiroshima.jp
-shinichi.hiroshima.jp
-shobara.hiroshima.jp
-takehara.hiroshima.jp
-abashiri.hokkaido.jp
-abira.hokkaido.jp
-aibetsu.hokkaido.jp
-akabira.hokkaido.jp
-akkeshi.hokkaido.jp
-asahikawa.hokkaido.jp
-ashibetsu.hokkaido.jp
-ashoro.hokkaido.jp
-assabu.hokkaido.jp
-atsuma.hokkaido.jp
-bibai.hokkaido.jp
-biei.hokkaido.jp
-bifuka.hokkaido.jp
-bihoro.hokkaido.jp
-biratori.hokkaido.jp
-chippubetsu.hokkaido.jp
-chitose.hokkaido.jp
-date.hokkaido.jp
-ebetsu.hokkaido.jp
-embetsu.hokkaido.jp
-eniwa.hokkaido.jp
-erimo.hokkaido.jp
-esan.hokkaido.jp
-esashi.hokkaido.jp
-fukagawa.hokkaido.jp
-fukushima.hokkaido.jp
-furano.hokkaido.jp
-furubira.hokkaido.jp
-haboro.hokkaido.jp
-hakodate.hokkaido.jp
-hamatonbetsu.hokkaido.jp
-hidaka.hokkaido.jp
-higashikagura.hokkaido.jp
-higashikawa.hokkaido.jp
-hiroo.hokkaido.jp
-hokuryu.hokkaido.jp
-hokuto.hokkaido.jp
-honbetsu.hokkaido.jp
-horokanai.hokkaido.jp
-horonobe.hokkaido.jp
-ikeda.hokkaido.jp
-imakane.hokkaido.jp
-ishikari.hokkaido.jp
-iwamizawa.hokkaido.jp
-iwanai.hokkaido.jp
-kamifurano.hokkaido.jp
-kamikawa.hokkaido.jp
-kamishihoro.hokkaido.jp
-kamisunagawa.hokkaido.jp
-kamoenai.hokkaido.jp
-kayabe.hokkaido.jp
-kembuchi.hokkaido.jp
-kikonai.hokkaido.jp
-kimobetsu.hokkaido.jp
-kitahiroshima.hokkaido.jp
-kitami.hokkaido.jp
-kiyosato.hokkaido.jp
-koshimizu.hokkaido.jp
-kunneppu.hokkaido.jp
-kuriyama.hokkaido.jp
-kuromatsunai.hokkaido.jp
-kushiro.hokkaido.jp
-kutchan.hokkaido.jp
-kyowa.hokkaido.jp
-mashike.hokkaido.jp
-matsumae.hokkaido.jp
-mikasa.hokkaido.jp
-minamifurano.hokkaido.jp
-mombetsu.hokkaido.jp
-moseushi.hokkaido.jp
-mukawa.hokkaido.jp
-muroran.hokkaido.jp
-naie.hokkaido.jp
-nakagawa.hokkaido.jp
-nakasatsunai.hokkaido.jp
-nakatombetsu.hokkaido.jp
-nanae.hokkaido.jp
-nanporo.hokkaido.jp
-nayoro.hokkaido.jp
-nemuro.hokkaido.jp
-niikappu.hokkaido.jp
-niki.hokkaido.jp
-nishiokoppe.hokkaido.jp
-noboribetsu.hokkaido.jp
-numata.hokkaido.jp
-obihiro.hokkaido.jp
-obira.hokkaido.jp
-oketo.hokkaido.jp
-okoppe.hokkaido.jp
-otaru.hokkaido.jp
-otobe.hokkaido.jp
-otofuke.hokkaido.jp
-otoineppu.hokkaido.jp
-oumu.hokkaido.jp
-ozora.hokkaido.jp
-pippu.hokkaido.jp
-rankoshi.hokkaido.jp
-rebun.hokkaido.jp
-rikubetsu.hokkaido.jp
-rishiri.hokkaido.jp
-rishirifuji.hokkaido.jp
-saroma.hokkaido.jp
-sarufutsu.hokkaido.jp
-shakotan.hokkaido.jp
-shari.hokkaido.jp
-shibecha.hokkaido.jp
-shibetsu.hokkaido.jp
-shikabe.hokkaido.jp
-shikaoi.hokkaido.jp
-shimamaki.hokkaido.jp
-shimizu.hokkaido.jp
-shimokawa.hokkaido.jp
-shinshinotsu.hokkaido.jp
-shintoku.hokkaido.jp
-shiranuka.hokkaido.jp
-shiraoi.hokkaido.jp
-shiriuchi.hokkaido.jp
-sobetsu.hokkaido.jp
-sunagawa.hokkaido.jp
-taiki.hokkaido.jp
-takasu.hokkaido.jp
-takikawa.hokkaido.jp
-takinoue.hokkaido.jp
-teshikaga.hokkaido.jp
-tobetsu.hokkaido.jp
-tohma.hokkaido.jp
-tomakomai.hokkaido.jp
-tomari.hokkaido.jp
-toya.hokkaido.jp
-toyako.hokkaido.jp
-toyotomi.hokkaido.jp
-toyoura.hokkaido.jp
-tsubetsu.hokkaido.jp
-tsukigata.hokkaido.jp
-urakawa.hokkaido.jp
-urausu.hokkaido.jp
-uryu.hokkaido.jp
-utashinai.hokkaido.jp
-wakkanai.hokkaido.jp
-wassamu.hokkaido.jp
-yakumo.hokkaido.jp
-yoichi.hokkaido.jp
-aioi.hyogo.jp
-akashi.hyogo.jp
-ako.hyogo.jp
-amagasaki.hyogo.jp
-aogaki.hyogo.jp
-asago.hyogo.jp
-ashiya.hyogo.jp
-awaji.hyogo.jp
-fukusaki.hyogo.jp
-goshiki.hyogo.jp
-harima.hyogo.jp
-himeji.hyogo.jp
-ichikawa.hyogo.jp
-inagawa.hyogo.jp
-itami.hyogo.jp
-kakogawa.hyogo.jp
-kamigori.hyogo.jp
-kamikawa.hyogo.jp
-kasai.hyogo.jp
-kasuga.hyogo.jp
-kawanishi.hyogo.jp
-miki.hyogo.jp
-minamiawaji.hyogo.jp
-nishinomiya.hyogo.jp
-nishiwaki.hyogo.jp
-ono.hyogo.jp
-sanda.hyogo.jp
-sannan.hyogo.jp
-sasayama.hyogo.jp
-sayo.hyogo.jp
-shingu.hyogo.jp
-shinonsen.hyogo.jp
-shiso.hyogo.jp
-sumoto.hyogo.jp
-taishi.hyogo.jp
-taka.hyogo.jp
-takarazuka.hyogo.jp
-takasago.hyogo.jp
-takino.hyogo.jp
-tamba.hyogo.jp
-tatsuno.hyogo.jp
-toyooka.hyogo.jp
-yabu.hyogo.jp
-yashiro.hyogo.jp
-yoka.hyogo.jp
-yokawa.hyogo.jp
-ami.ibaraki.jp
-asahi.ibaraki.jp
-bando.ibaraki.jp
-chikusei.ibaraki.jp
-daigo.ibaraki.jp
-fujishiro.ibaraki.jp
-hitachi.ibaraki.jp
-hitachinaka.ibaraki.jp
-hitachiomiya.ibaraki.jp
-hitachiota.ibaraki.jp
-ibaraki.ibaraki.jp
-ina.ibaraki.jp
-inashiki.ibaraki.jp
-itako.ibaraki.jp
-iwama.ibaraki.jp
-joso.ibaraki.jp
-kamisu.ibaraki.jp
-kasama.ibaraki.jp
-kashima.ibaraki.jp
-kasumigaura.ibaraki.jp
-koga.ibaraki.jp
-miho.ibaraki.jp
-mito.ibaraki.jp
-moriya.ibaraki.jp
-naka.ibaraki.jp
-namegata.ibaraki.jp
-oarai.ibaraki.jp
-ogawa.ibaraki.jp
-omitama.ibaraki.jp
-ryugasaki.ibaraki.jp
-sakai.ibaraki.jp
-sakuragawa.ibaraki.jp
-shimodate.ibaraki.jp
-shimotsuma.ibaraki.jp
-shirosato.ibaraki.jp
-sowa.ibaraki.jp
-suifu.ibaraki.jp
-takahagi.ibaraki.jp
-tamatsukuri.ibaraki.jp
-tokai.ibaraki.jp
-tomobe.ibaraki.jp
-tone.ibaraki.jp
-toride.ibaraki.jp
-tsuchiura.ibaraki.jp
-tsukuba.ibaraki.jp
-uchihara.ibaraki.jp
-ushiku.ibaraki.jp
-yachiyo.ibaraki.jp
-yamagata.ibaraki.jp
-yawara.ibaraki.jp
-yuki.ibaraki.jp
-anamizu.ishikawa.jp
-hakui.ishikawa.jp
-hakusan.ishikawa.jp
-kaga.ishikawa.jp
-kahoku.ishikawa.jp
-kanazawa.ishikawa.jp
-kawakita.ishikawa.jp
-komatsu.ishikawa.jp
-nakanoto.ishikawa.jp
-nanao.ishikawa.jp
-nomi.ishikawa.jp
-nonoichi.ishikawa.jp
-noto.ishikawa.jp
-shika.ishikawa.jp
-suzu.ishikawa.jp
-tsubata.ishikawa.jp
-tsurugi.ishikawa.jp
-uchinada.ishikawa.jp
-wajima.ishikawa.jp
-fudai.iwate.jp
-fujisawa.iwate.jp
-hanamaki.iwate.jp
-hiraizumi.iwate.jp
-hirono.iwate.jp
-ichinohe.iwate.jp
-ichinoseki.iwate.jp
-iwaizumi.iwate.jp
-iwate.iwate.jp
-joboji.iwate.jp
-kamaishi.iwate.jp
-kanegasaki.iwate.jp
-karumai.iwate.jp
-kawai.iwate.jp
-kitakami.iwate.jp
-kuji.iwate.jp
-kunohe.iwate.jp
-kuzumaki.iwate.jp
-miyako.iwate.jp
-mizusawa.iwate.jp
-morioka.iwate.jp
-ninohe.iwate.jp
-noda.iwate.jp
-ofunato.iwate.jp
-oshu.iwate.jp
-otsuchi.iwate.jp
-rikuzentakata.iwate.jp
-shiwa.iwate.jp
-shizukuishi.iwate.jp
-sumita.iwate.jp
-tanohata.iwate.jp
-tono.iwate.jp
-yahaba.iwate.jp
-yamada.iwate.jp
-ayagawa.kagawa.jp
-higashikagawa.kagawa.jp
-kanonji.kagawa.jp
-kotohira.kagawa.jp
-manno.kagawa.jp
-marugame.kagawa.jp
-mitoyo.kagawa.jp
-naoshima.kagawa.jp
-sanuki.kagawa.jp
-tadotsu.kagawa.jp
-takamatsu.kagawa.jp
-tonosho.kagawa.jp
-uchinomi.kagawa.jp
-utazu.kagawa.jp
-zentsuji.kagawa.jp
-akune.kagoshima.jp
-amami.kagoshima.jp
-hioki.kagoshima.jp
-isa.kagoshima.jp
-isen.kagoshima.jp
-izumi.kagoshima.jp
-kagoshima.kagoshima.jp
-kanoya.kagoshima.jp
-kawanabe.kagoshima.jp
-kinko.kagoshima.jp
-kouyama.kagoshima.jp
-makurazaki.kagoshima.jp
-matsumoto.kagoshima.jp
-minamitane.kagoshima.jp
-nakatane.kagoshima.jp
-nishinoomote.kagoshima.jp
-satsumasendai.kagoshima.jp
-soo.kagoshima.jp
-tarumizu.kagoshima.jp
-yusui.kagoshima.jp
-aikawa.kanagawa.jp
-atsugi.kanagawa.jp
-ayase.kanagawa.jp
-chigasaki.kanagawa.jp
-ebina.kanagawa.jp
-fujisawa.kanagawa.jp
-hadano.kanagawa.jp
-hakone.kanagawa.jp
-hiratsuka.kanagawa.jp
-isehara.kanagawa.jp
-kaisei.kanagawa.jp
-kamakura.kanagawa.jp
-kiyokawa.kanagawa.jp
-matsuda.kanagawa.jp
-minamiashigara.kanagawa.jp
-miura.kanagawa.jp
-nakai.kanagawa.jp
-ninomiya.kanagawa.jp
-odawara.kanagawa.jp
-oi.kanagawa.jp
-oiso.kanagawa.jp
-sagamihara.kanagawa.jp
-samukawa.kanagawa.jp
-tsukui.kanagawa.jp
-yamakita.kanagawa.jp
-yamato.kanagawa.jp
-yokosuka.kanagawa.jp
-yugawara.kanagawa.jp
-zama.kanagawa.jp
-zushi.kanagawa.jp
-aki.kochi.jp
-geisei.kochi.jp
-hidaka.kochi.jp
-higashitsuno.kochi.jp
-ino.kochi.jp
-kagami.kochi.jp
-kami.kochi.jp
-kitagawa.kochi.jp
-kochi.kochi.jp
-mihara.kochi.jp
-motoyama.kochi.jp
-muroto.kochi.jp
-nahari.kochi.jp
-nakamura.kochi.jp
-nankoku.kochi.jp
-nishitosa.kochi.jp
-niyodogawa.kochi.jp
-ochi.kochi.jp
-okawa.kochi.jp
-otoyo.kochi.jp
-otsuki.kochi.jp
-sakawa.kochi.jp
-sukumo.kochi.jp
-susaki.kochi.jp
-tosa.kochi.jp
-tosashimizu.kochi.jp
-toyo.kochi.jp
-tsuno.kochi.jp
-umaji.kochi.jp
-yasuda.kochi.jp
-yusuhara.kochi.jp
-amakusa.kumamoto.jp
-arao.kumamoto.jp
-aso.kumamoto.jp
-choyo.kumamoto.jp
-gyokuto.kumamoto.jp
-hitoyoshi.kumamoto.jp
-kamiamakusa.kumamoto.jp
-kashima.kumamoto.jp
-kikuchi.kumamoto.jp
-kosa.kumamoto.jp
-kumamoto.kumamoto.jp
-mashiki.kumamoto.jp
-mifune.kumamoto.jp
-minamata.kumamoto.jp
-minamioguni.kumamoto.jp
-nagasu.kumamoto.jp
-nishihara.kumamoto.jp
-oguni.kumamoto.jp
-ozu.kumamoto.jp
-sumoto.kumamoto.jp
-takamori.kumamoto.jp
-uki.kumamoto.jp
-uto.kumamoto.jp
-yamaga.kumamoto.jp
-yamato.kumamoto.jp
-yatsushiro.kumamoto.jp
-ayabe.kyoto.jp
-fukuchiyama.kyoto.jp
-higashiyama.kyoto.jp
-ide.kyoto.jp
-ine.kyoto.jp
-joyo.kyoto.jp
-kameoka.kyoto.jp
-kamo.kyoto.jp
-kita.kyoto.jp
-kizu.kyoto.jp
-kumiyama.kyoto.jp
-kyotamba.kyoto.jp
-kyotanabe.kyoto.jp
-kyotango.kyoto.jp
-maizuru.kyoto.jp
-minami.kyoto.jp
-minamiyamashiro.kyoto.jp
-miyazu.kyoto.jp
-muko.kyoto.jp
-nagaokakyo.kyoto.jp
-nakagyo.kyoto.jp
-nantan.kyoto.jp
-oyamazaki.kyoto.jp
-sakyo.kyoto.jp
-seika.kyoto.jp
-tanabe.kyoto.jp
-uji.kyoto.jp
-ujitawara.kyoto.jp
-wazuka.kyoto.jp
-yamashina.kyoto.jp
-yawata.kyoto.jp
-asahi.mie.jp
-inabe.mie.jp
-ise.mie.jp
-kameyama.mie.jp
-kawagoe.mie.jp
-kiho.mie.jp
-kisosaki.mie.jp
-kiwa.mie.jp
-komono.mie.jp
-kumano.mie.jp
-kuwana.mie.jp
-matsusaka.mie.jp
-meiwa.mie.jp
-mihama.mie.jp
-minamiise.mie.jp
-misugi.mie.jp
-miyama.mie.jp
-nabari.mie.jp
-shima.mie.jp
-suzuka.mie.jp
-tado.mie.jp
-taiki.mie.jp
-taki.mie.jp
-tamaki.mie.jp
-toba.mie.jp
-tsu.mie.jp
-udono.mie.jp
-ureshino.mie.jp
-watarai.mie.jp
-yokkaichi.mie.jp
-furukawa.miyagi.jp
-higashimatsushima.miyagi.jp
-ishinomaki.miyagi.jp
-iwanuma.miyagi.jp
-kakuda.miyagi.jp
-kami.miyagi.jp
-kawasaki.miyagi.jp
-kesennuma.miyagi.jp
-marumori.miyagi.jp
-matsushima.miyagi.jp
-minamisanriku.miyagi.jp
-misato.miyagi.jp
-murata.miyagi.jp
-natori.miyagi.jp
-ogawara.miyagi.jp
-ohira.miyagi.jp
-onagawa.miyagi.jp
-osaki.miyagi.jp
-rifu.miyagi.jp
-semine.miyagi.jp
-shibata.miyagi.jp
-shichikashuku.miyagi.jp
-shikama.miyagi.jp
-shiogama.miyagi.jp
-shiroishi.miyagi.jp
-tagajo.miyagi.jp
-taiwa.miyagi.jp
-tome.miyagi.jp
-tomiya.miyagi.jp
-wakuya.miyagi.jp
-watari.miyagi.jp
-yamamoto.miyagi.jp
-zao.miyagi.jp
-aya.miyazaki.jp
-ebino.miyazaki.jp
-gokase.miyazaki.jp
-hyuga.miyazaki.jp
-kadogawa.miyazaki.jp
-kawaminami.miyazaki.jp
-kijo.miyazaki.jp
-kitagawa.miyazaki.jp
-kitakata.miyazaki.jp
-kitaura.miyazaki.jp
-kobayashi.miyazaki.jp
-kunitomi.miyazaki.jp
-kushima.miyazaki.jp
-mimata.miyazaki.jp
-miyakonojo.miyazaki.jp
-miyazaki.miyazaki.jp
-morotsuka.miyazaki.jp
-nichinan.miyazaki.jp
-nishimera.miyazaki.jp
-nobeoka.miyazaki.jp
-saito.miyazaki.jp
-shiiba.miyazaki.jp
-shintomi.miyazaki.jp
-takaharu.miyazaki.jp
-takanabe.miyazaki.jp
-takazaki.miyazaki.jp
-tsuno.miyazaki.jp
-achi.nagano.jp
-agematsu.nagano.jp
-anan.nagano.jp
-aoki.nagano.jp
-asahi.nagano.jp
-azumino.nagano.jp
-chikuhoku.nagano.jp
-chikuma.nagano.jp
-chino.nagano.jp
-fujimi.nagano.jp
-hakuba.nagano.jp
-hara.nagano.jp
-hiraya.nagano.jp
-iida.nagano.jp
-iijima.nagano.jp
-iiyama.nagano.jp
-iizuna.nagano.jp
-ikeda.nagano.jp
-ikusaka.nagano.jp
-ina.nagano.jp
-karuizawa.nagano.jp
-kawakami.nagano.jp
-kiso.nagano.jp
-kisofukushima.nagano.jp
-kitaaiki.nagano.jp
-komagane.nagano.jp
-komoro.nagano.jp
-matsukawa.nagano.jp
-matsumoto.nagano.jp
-miasa.nagano.jp
-minamiaiki.nagano.jp
-minamimaki.nagano.jp
-minamiminowa.nagano.jp
-minowa.nagano.jp
-miyada.nagano.jp
-miyota.nagano.jp
-mochizuki.nagano.jp
-nagano.nagano.jp
-nagawa.nagano.jp
-nagiso.nagano.jp
-nakagawa.nagano.jp
-nakano.nagano.jp
-nozawaonsen.nagano.jp
-obuse.nagano.jp
-ogawa.nagano.jp
-okaya.nagano.jp
-omachi.nagano.jp
-omi.nagano.jp
-ookuwa.nagano.jp
-ooshika.nagano.jp
-otaki.nagano.jp
-otari.nagano.jp
-sakae.nagano.jp
-sakaki.nagano.jp
-saku.nagano.jp
-sakuho.nagano.jp
-shimosuwa.nagano.jp
-shinanomachi.nagano.jp
-shiojiri.nagano.jp
-suwa.nagano.jp
-suzaka.nagano.jp
-takagi.nagano.jp
-takamori.nagano.jp
-takayama.nagano.jp
-tateshina.nagano.jp
-tatsuno.nagano.jp
-togakushi.nagano.jp
-togura.nagano.jp
-tomi.nagano.jp
-ueda.nagano.jp
-wada.nagano.jp
-yamagata.nagano.jp
-yamanouchi.nagano.jp
-yasaka.nagano.jp
-yasuoka.nagano.jp
-chijiwa.nagasaki.jp
-futsu.nagasaki.jp
-goto.nagasaki.jp
-hasami.nagasaki.jp
-hirado.nagasaki.jp
-iki.nagasaki.jp
-isahaya.nagasaki.jp
-kawatana.nagasaki.jp
-kuchinotsu.nagasaki.jp
-matsuura.nagasaki.jp
-nagasaki.nagasaki.jp
-obama.nagasaki.jp
-omura.nagasaki.jp
-oseto.nagasaki.jp
-saikai.nagasaki.jp
-sasebo.nagasaki.jp
-seihi.nagasaki.jp
-shimabara.nagasaki.jp
-shinkamigoto.nagasaki.jp
-togitsu.nagasaki.jp
-tsushima.nagasaki.jp
-unzen.nagasaki.jp
-ando.nara.jp
-gose.nara.jp
-heguri.nara.jp
-higashiyoshino.nara.jp
-ikaruga.nara.jp
-ikoma.nara.jp
-kamikitayama.nara.jp
-kanmaki.nara.jp
-kashiba.nara.jp
-kashihara.nara.jp
-katsuragi.nara.jp
-kawai.nara.jp
-kawakami.nara.jp
-kawanishi.nara.jp
-koryo.nara.jp
-kurotaki.nara.jp
-mitsue.nara.jp
-miyake.nara.jp
-nara.nara.jp
-nosegawa.nara.jp
-oji.nara.jp
-ouda.nara.jp
-oyodo.nara.jp
-sakurai.nara.jp
-sango.nara.jp
-shimoichi.nara.jp
-shimokitayama.nara.jp
-shinjo.nara.jp
-soni.nara.jp
-takatori.nara.jp
-tawaramoto.nara.jp
-tenkawa.nara.jp
-tenri.nara.jp
-uda.nara.jp
-yamatokoriyama.nara.jp
-yamatotakada.nara.jp
-yamazoe.nara.jp
-yoshino.nara.jp
-aga.niigata.jp
-agano.niigata.jp
-gosen.niigata.jp
-itoigawa.niigata.jp
-izumozaki.niigata.jp
-joetsu.niigata.jp
-kamo.niigata.jp
-kariwa.niigata.jp
-kashiwazaki.niigata.jp
-minamiuonuma.niigata.jp
-mitsuke.niigata.jp
-muika.niigata.jp
-murakami.niigata.jp
-myoko.niigata.jp
-nagaoka.niigata.jp
-niigata.niigata.jp
-ojiya.niigata.jp
-omi.niigata.jp
-sado.niigata.jp
-sanjo.niigata.jp
-seiro.niigata.jp
-seirou.niigata.jp
-sekikawa.niigata.jp
-shibata.niigata.jp
-tagami.niigata.jp
-tainai.niigata.jp
-tochio.niigata.jp
-tokamachi.niigata.jp
-tsubame.niigata.jp
-tsunan.niigata.jp
-uonuma.niigata.jp
-yahiko.niigata.jp
-yoita.niigata.jp
-yuzawa.niigata.jp
-beppu.oita.jp
-bungoono.oita.jp
-bungotakada.oita.jp
-hasama.oita.jp
-hiji.oita.jp
-himeshima.oita.jp
-hita.oita.jp
-kamitsue.oita.jp
-kokonoe.oita.jp
-kuju.oita.jp
-kunisaki.oita.jp
-kusu.oita.jp
-oita.oita.jp
-saiki.oita.jp
-taketa.oita.jp
-tsukumi.oita.jp
-usa.oita.jp
-usuki.oita.jp
-yufu.oita.jp
-akaiwa.okayama.jp
-asakuchi.okayama.jp
-bizen.okayama.jp
-hayashima.okayama.jp
-ibara.okayama.jp
-kagamino.okayama.jp
-kasaoka.okayama.jp
-kibichuo.okayama.jp
-kumenan.okayama.jp
-kurashiki.okayama.jp
-maniwa.okayama.jp
-misaki.okayama.jp
-nagi.okayama.jp
-niimi.okayama.jp
-nishiawakura.okayama.jp
-okayama.okayama.jp
-satosho.okayama.jp
-setouchi.okayama.jp
-shinjo.okayama.jp
-shoo.okayama.jp
-soja.okayama.jp
-takahashi.okayama.jp
-tamano.okayama.jp
-tsuyama.okayama.jp
-wake.okayama.jp
-yakage.okayama.jp
-aguni.okinawa.jp
-ginowan.okinawa.jp
-ginoza.okinawa.jp
-gushikami.okinawa.jp
-haebaru.okinawa.jp
-higashi.okinawa.jp
-hirara.okinawa.jp
-iheya.okinawa.jp
-ishigaki.okinawa.jp
-ishikawa.okinawa.jp
-itoman.okinawa.jp
-izena.okinawa.jp
-kadena.okinawa.jp
-kin.okinawa.jp
-kitadaito.okinawa.jp
-kitanakagusuku.okinawa.jp
-kumejima.okinawa.jp
-kunigami.okinawa.jp
-minamidaito.okinawa.jp
-motobu.okinawa.jp
-nago.okinawa.jp
-naha.okinawa.jp
-nakagusuku.okinawa.jp
-nakijin.okinawa.jp
-nanjo.okinawa.jp
-nishihara.okinawa.jp
-ogimi.okinawa.jp
-okinawa.okinawa.jp
-onna.okinawa.jp
-shimoji.okinawa.jp
-taketomi.okinawa.jp
-tarama.okinawa.jp
-tokashiki.okinawa.jp
-tomigusuku.okinawa.jp
-tonaki.okinawa.jp
-urasoe.okinawa.jp
-uruma.okinawa.jp
-yaese.okinawa.jp
-yomitan.okinawa.jp
-yonabaru.okinawa.jp
-yonaguni.okinawa.jp
-zamami.okinawa.jp
-abeno.osaka.jp
-chihayaakasaka.osaka.jp
-chuo.osaka.jp
-daito.osaka.jp
-fujiidera.osaka.jp
-habikino.osaka.jp
-hannan.osaka.jp
-higashiosaka.osaka.jp
-higashisumiyoshi.osaka.jp
-higashiyodogawa.osaka.jp
-hirakata.osaka.jp
-ibaraki.osaka.jp
-ikeda.osaka.jp
-izumi.osaka.jp
-izumiotsu.osaka.jp
-izumisano.osaka.jp
-kadoma.osaka.jp
-kaizuka.osaka.jp
-kanan.osaka.jp
-kashiwara.osaka.jp
-katano.osaka.jp
-kawachinagano.osaka.jp
-kishiwada.osaka.jp
-kita.osaka.jp
-kumatori.osaka.jp
-matsubara.osaka.jp
-minato.osaka.jp
-minoh.osaka.jp
-misaki.osaka.jp
-moriguchi.osaka.jp
-neyagawa.osaka.jp
-nishi.osaka.jp
-nose.osaka.jp
-osakasayama.osaka.jp
-sakai.osaka.jp
-sayama.osaka.jp
-sennan.osaka.jp
-settsu.osaka.jp
-shijonawate.osaka.jp
-shimamoto.osaka.jp
-suita.osaka.jp
-tadaoka.osaka.jp
-taishi.osaka.jp
-tajiri.osaka.jp
-takaishi.osaka.jp
-takatsuki.osaka.jp
-tondabayashi.osaka.jp
-toyonaka.osaka.jp
-toyono.osaka.jp
-yao.osaka.jp
-ariake.saga.jp
-arita.saga.jp
-fukudomi.saga.jp
-genkai.saga.jp
-hamatama.saga.jp
-hizen.saga.jp
-imari.saga.jp
-kamimine.saga.jp
-kanzaki.saga.jp
-karatsu.saga.jp
-kashima.saga.jp
-kitagata.saga.jp
-kitahata.saga.jp
-kiyama.saga.jp
-kouhoku.saga.jp
-kyuragi.saga.jp
-nishiarita.saga.jp
-ogi.saga.jp
-omachi.saga.jp
-ouchi.saga.jp
-saga.saga.jp
-shiroishi.saga.jp
-taku.saga.jp
-tara.saga.jp
-tosu.saga.jp
-yoshinogari.saga.jp
-arakawa.saitama.jp
-asaka.saitama.jp
-chichibu.saitama.jp
-fujimi.saitama.jp
-fujimino.saitama.jp
-fukaya.saitama.jp
-hanno.saitama.jp
-hanyu.saitama.jp
-hasuda.saitama.jp
-hatogaya.saitama.jp
-hatoyama.saitama.jp
-hidaka.saitama.jp
-higashichichibu.saitama.jp
-higashimatsuyama.saitama.jp
-honjo.saitama.jp
-ina.saitama.jp
-iruma.saitama.jp
-iwatsuki.saitama.jp
-kamiizumi.saitama.jp
-kamikawa.saitama.jp
-kamisato.saitama.jp
-kasukabe.saitama.jp
-kawagoe.saitama.jp
-kawaguchi.saitama.jp
-kawajima.saitama.jp
-kazo.saitama.jp
-kitamoto.saitama.jp
-koshigaya.saitama.jp
-kounosu.saitama.jp
-kuki.saitama.jp
-kumagaya.saitama.jp
-matsubushi.saitama.jp
-minano.saitama.jp
-misato.saitama.jp
-miyashiro.saitama.jp
-miyoshi.saitama.jp
-moroyama.saitama.jp
-nagatoro.saitama.jp
-namegawa.saitama.jp
-niiza.saitama.jp
-ogano.saitama.jp
-ogawa.saitama.jp
-ogose.saitama.jp
-okegawa.saitama.jp
-omiya.saitama.jp
-otaki.saitama.jp
-ranzan.saitama.jp
-ryokami.saitama.jp
-saitama.saitama.jp
-sakado.saitama.jp
-satte.saitama.jp
-sayama.saitama.jp
-shiki.saitama.jp
-shiraoka.saitama.jp
-soka.saitama.jp
-sugito.saitama.jp
-toda.saitama.jp
-tokigawa.saitama.jp
-tokorozawa.saitama.jp
-tsurugashima.saitama.jp
-urawa.saitama.jp
-warabi.saitama.jp
-yashio.saitama.jp
-yokoze.saitama.jp
-yono.saitama.jp
-yorii.saitama.jp
-yoshida.saitama.jp
-yoshikawa.saitama.jp
-yoshimi.saitama.jp
-aisho.shiga.jp
-gamo.shiga.jp
-higashiomi.shiga.jp
-hikone.shiga.jp
-koka.shiga.jp
-konan.shiga.jp
-kosei.shiga.jp
-koto.shiga.jp
-kusatsu.shiga.jp
-maibara.shiga.jp
-moriyama.shiga.jp
-nagahama.shiga.jp
-nishiazai.shiga.jp
-notogawa.shiga.jp
-omihachiman.shiga.jp
-otsu.shiga.jp
-ritto.shiga.jp
-ryuoh.shiga.jp
-takashima.shiga.jp
-takatsuki.shiga.jp
-torahime.shiga.jp
-toyosato.shiga.jp
-yasu.shiga.jp
-akagi.shimane.jp
-ama.shimane.jp
-gotsu.shimane.jp
-hamada.shimane.jp
-higashiizumo.shimane.jp
-hikawa.shimane.jp
-hikimi.shimane.jp
-izumo.shimane.jp
-kakinoki.shimane.jp
-masuda.shimane.jp
-matsue.shimane.jp
-misato.shimane.jp
-nishinoshima.shimane.jp
-ohda.shimane.jp
-okinoshima.shimane.jp
-okuizumo.shimane.jp
-shimane.shimane.jp
-tamayu.shimane.jp
-tsuwano.shimane.jp
-unnan.shimane.jp
-yakumo.shimane.jp
-yasugi.shimane.jp
-yatsuka.shimane.jp
-arai.shizuoka.jp
-atami.shizuoka.jp
-fuji.shizuoka.jp
-fujieda.shizuoka.jp
-fujikawa.shizuoka.jp
-fujinomiya.shizuoka.jp
-fukuroi.shizuoka.jp
-gotemba.shizuoka.jp
-haibara.shizuoka.jp
-hamamatsu.shizuoka.jp
-higashiizu.shizuoka.jp
-ito.shizuoka.jp
-iwata.shizuoka.jp
-izu.shizuoka.jp
-izunokuni.shizuoka.jp
-kakegawa.shizuoka.jp
-kannami.shizuoka.jp
-kawanehon.shizuoka.jp
-kawazu.shizuoka.jp
-kikugawa.shizuoka.jp
-kosai.shizuoka.jp
-makinohara.shizuoka.jp
-matsuzaki.shizuoka.jp
-minamiizu.shizuoka.jp
-mishima.shizuoka.jp
-morimachi.shizuoka.jp
-nishiizu.shizuoka.jp
-numazu.shizuoka.jp
-omaezaki.shizuoka.jp
-shimada.shizuoka.jp
-shimizu.shizuoka.jp
-shimoda.shizuoka.jp
-shizuoka.shizuoka.jp
-susono.shizuoka.jp
-yaizu.shizuoka.jp
-yoshida.shizuoka.jp
-ashikaga.tochigi.jp
-bato.tochigi.jp
-haga.tochigi.jp
-ichikai.tochigi.jp
-iwafune.tochigi.jp
-kaminokawa.tochigi.jp
-kanuma.tochigi.jp
-karasuyama.tochigi.jp
-kuroiso.tochigi.jp
-mashiko.tochigi.jp
-mibu.tochigi.jp
-moka.tochigi.jp
-motegi.tochigi.jp
-nasu.tochigi.jp
-nasushiobara.tochigi.jp
-nikko.tochigi.jp
-nishikata.tochigi.jp
-nogi.tochigi.jp
-ohira.tochigi.jp
-ohtawara.tochigi.jp
-oyama.tochigi.jp
-sakura.tochigi.jp
-sano.tochigi.jp
-shimotsuke.tochigi.jp
-shioya.tochigi.jp
-takanezawa.tochigi.jp
-tochigi.tochigi.jp
-tsuga.tochigi.jp
-ujiie.tochigi.jp
-utsunomiya.tochigi.jp
-yaita.tochigi.jp
-aizumi.tokushima.jp
-anan.tokushima.jp
-ichiba.tokushima.jp
-itano.tokushima.jp
-kainan.tokushima.jp
-komatsushima.tokushima.jp
-matsushige.tokushima.jp
-mima.tokushima.jp
-minami.tokushima.jp
-miyoshi.tokushima.jp
-mugi.tokushima.jp
-nakagawa.tokushima.jp
-naruto.tokushima.jp
-sanagochi.tokushima.jp
-shishikui.tokushima.jp
-tokushima.tokushima.jp
-wajiki.tokushima.jp
-adachi.tokyo.jp
-akiruno.tokyo.jp
-akishima.tokyo.jp
-aogashima.tokyo.jp
-arakawa.tokyo.jp
-bunkyo.tokyo.jp
-chiyoda.tokyo.jp
-chofu.tokyo.jp
-chuo.tokyo.jp
-edogawa.tokyo.jp
-fuchu.tokyo.jp
-fussa.tokyo.jp
-hachijo.tokyo.jp
-hachioji.tokyo.jp
-hamura.tokyo.jp
-higashikurume.tokyo.jp
-higashimurayama.tokyo.jp
-higashiyamato.tokyo.jp
-hino.tokyo.jp
-hinode.tokyo.jp
-hinohara.tokyo.jp
-inagi.tokyo.jp
-itabashi.tokyo.jp
-katsushika.tokyo.jp
-kita.tokyo.jp
-kiyose.tokyo.jp
-kodaira.tokyo.jp
-koganei.tokyo.jp
-kokubunji.tokyo.jp
-komae.tokyo.jp
-koto.tokyo.jp
-kouzushima.tokyo.jp
-kunitachi.tokyo.jp
-machida.tokyo.jp
-meguro.tokyo.jp
-minato.tokyo.jp
-mitaka.tokyo.jp
-mizuho.tokyo.jp
-musashimurayama.tokyo.jp
-musashino.tokyo.jp
-nakano.tokyo.jp
-nerima.tokyo.jp
-ogasawara.tokyo.jp
-okutama.tokyo.jp
-ome.tokyo.jp
-oshima.tokyo.jp
-ota.tokyo.jp
-setagaya.tokyo.jp
-shibuya.tokyo.jp
-shinagawa.tokyo.jp
-shinjuku.tokyo.jp
-suginami.tokyo.jp
-sumida.tokyo.jp
-tachikawa.tokyo.jp
-taito.tokyo.jp
-tama.tokyo.jp
-toshima.tokyo.jp
-chizu.tottori.jp
-hino.tottori.jp
-kawahara.tottori.jp
-koge.tottori.jp
-kotoura.tottori.jp
-misasa.tottori.jp
-nanbu.tottori.jp
-nichinan.tottori.jp
-sakaiminato.tottori.jp
-tottori.tottori.jp
-wakasa.tottori.jp
-yazu.tottori.jp
-yonago.tottori.jp
-asahi.toyama.jp
-fuchu.toyama.jp
-fukumitsu.toyama.jp
-funahashi.toyama.jp
-himi.toyama.jp
-imizu.toyama.jp
-inami.toyama.jp
-johana.toyama.jp
-kamiichi.toyama.jp
-kurobe.toyama.jp
-nakaniikawa.toyama.jp
-namerikawa.toyama.jp
-nanto.toyama.jp
-nyuzen.toyama.jp
-oyabe.toyama.jp
-taira.toyama.jp
-takaoka.toyama.jp
-tateyama.toyama.jp
-toga.toyama.jp
-tonami.toyama.jp
-toyama.toyama.jp
-unazuki.toyama.jp
-uozu.toyama.jp
-yamada.toyama.jp
-arida.wakayama.jp
-aridagawa.wakayama.jp
-gobo.wakayama.jp
-hashimoto.wakayama.jp
-hidaka.wakayama.jp
-hirogawa.wakayama.jp
-inami.wakayama.jp
-iwade.wakayama.jp
-kainan.wakayama.jp
-kamitonda.wakayama.jp
-katsuragi.wakayama.jp
-kimino.wakayama.jp
-kinokawa.wakayama.jp
-kitayama.wakayama.jp
-koya.wakayama.jp
-koza.wakayama.jp
-kozagawa.wakayama.jp
-kudoyama.wakayama.jp
-kushimoto.wakayama.jp
-mihama.wakayama.jp
-misato.wakayama.jp
-nachikatsuura.wakayama.jp
-shingu.wakayama.jp
-shirahama.wakayama.jp
-taiji.wakayama.jp
-tanabe.wakayama.jp
-wakayama.wakayama.jp
-yuasa.wakayama.jp
-yura.wakayama.jp
-asahi.yamagata.jp
-funagata.yamagata.jp
-higashine.yamagata.jp
-iide.yamagata.jp
-kahoku.yamagata.jp
-kaminoyama.yamagata.jp
-kaneyama.yamagata.jp
-kawanishi.yamagata.jp
-mamurogawa.yamagata.jp
-mikawa.yamagata.jp
-murayama.yamagata.jp
-nagai.yamagata.jp
-nakayama.yamagata.jp
-nanyo.yamagata.jp
-nishikawa.yamagata.jp
-obanazawa.yamagata.jp
-oe.yamagata.jp
-oguni.yamagata.jp
-ohkura.yamagata.jp
-oishida.yamagata.jp
-sagae.yamagata.jp
-sakata.yamagata.jp
-sakegawa.yamagata.jp
-shinjo.yamagata.jp
-shirataka.yamagata.jp
-shonai.yamagata.jp
-takahata.yamagata.jp
-tendo.yamagata.jp
-tozawa.yamagata.jp
-tsuruoka.yamagata.jp
-yamagata.yamagata.jp
-yamanobe.yamagata.jp
-yonezawa.yamagata.jp
-yuza.yamagata.jp
-abu.yamaguchi.jp
-hagi.yamaguchi.jp
-hikari.yamaguchi.jp
-hofu.yamaguchi.jp
-iwakuni.yamaguchi.jp
-kudamatsu.yamaguchi.jp
-mitou.yamaguchi.jp
-nagato.yamaguchi.jp
-oshima.yamaguchi.jp
-shimonoseki.yamaguchi.jp
-shunan.yamaguchi.jp
-tabuse.yamaguchi.jp
-tokuyama.yamaguchi.jp
-toyota.yamaguchi.jp
-ube.yamaguchi.jp
-yuu.yamaguchi.jp
-chuo.yamanashi.jp
-doshi.yamanashi.jp
-fuefuki.yamanashi.jp
-fujikawa.yamanashi.jp
-fujikawaguchiko.yamanashi.jp
-fujiyoshida.yamanashi.jp
-hayakawa.yamanashi.jp
-hokuto.yamanashi.jp
-ichikawamisato.yamanashi.jp
-kai.yamanashi.jp
-kofu.yamanashi.jp
-koshu.yamanashi.jp
-kosuge.yamanashi.jp
-minami-alps.yamanashi.jp
-minobu.yamanashi.jp
-nakamichi.yamanashi.jp
-nanbu.yamanashi.jp
-narusawa.yamanashi.jp
-nirasaki.yamanashi.jp
-nishikatsura.yamanashi.jp
-oshino.yamanashi.jp
-otsuki.yamanashi.jp
-showa.yamanashi.jp
-tabayama.yamanashi.jp
-tsuru.yamanashi.jp
-uenohara.yamanashi.jp
-yamanakako.yamanashi.jp
-yamanashi.yamanashi.jp
-
-// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145
-*.ke
-
-// kg : http://www.domain.kg/dmn_n.html
-kg
-org.kg
-net.kg
-com.kg
-edu.kg
-gov.kg
-mil.kg
-
-// kh : http://www.mptc.gov.kh/dns_registration.htm
-*.kh
-
-// ki : http://www.ki/dns/index.html
-ki
-edu.ki
-biz.ki
-net.ki
-org.ki
-gov.ki
-info.ki
-com.ki
-
-// km : http://en.wikipedia.org/wiki/.km
-// http://www.domaine.km/documents/charte.doc
-km
-org.km
-nom.km
-gov.km
-prd.km
-tm.km
-edu.km
-mil.km
-ass.km
-com.km
-// These are only mentioned as proposed suggestions at domaine.km, but
-// http://en.wikipedia.org/wiki/.km says they're available for registration:
-coop.km
-asso.km
-presse.km
-medecin.km
-notaires.km
-pharmaciens.km
-veterinaire.km
-gouv.km
-
-// kn : http://en.wikipedia.org/wiki/.kn
-// http://www.dot.kn/domainRules.html
-kn
-net.kn
-org.kn
-edu.kn
-gov.kn
-
-// kp : http://www.kcce.kp/en_index.php
-kp
-com.kp
-edu.kp
-gov.kp
-org.kp
-rep.kp
-tra.kp
-
-// kr : http://en.wikipedia.org/wiki/.kr
-// see also: http://domain.nida.or.kr/eng/registration.jsp
-kr
-ac.kr
-co.kr
-es.kr
-go.kr
-hs.kr
-kg.kr
-mil.kr
-ms.kr
-ne.kr
-or.kr
-pe.kr
-re.kr
-sc.kr
-// kr geographical names
-busan.kr
-chungbuk.kr
-chungnam.kr
-daegu.kr
-daejeon.kr
-gangwon.kr
-gwangju.kr
-gyeongbuk.kr
-gyeonggi.kr
-gyeongnam.kr
-incheon.kr
-jeju.kr
-jeonbuk.kr
-jeonnam.kr
-seoul.kr
-ulsan.kr
-
-// kw : http://en.wikipedia.org/wiki/.kw
-*.kw
-
-// ky : http://www.icta.ky/da_ky_reg_dom.php
-// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17
-ky
-edu.ky
-gov.ky
-com.ky
-org.ky
-net.ky
-
-// kz : http://en.wikipedia.org/wiki/.kz
-// see also: http://www.nic.kz/rules/index.jsp
-kz
-org.kz
-edu.kz
-net.kz
-gov.kz
-mil.kz
-com.kz
-
-// la : http://en.wikipedia.org/wiki/.la
-// Submitted by registry <gavin.brown@nic.la> 2008-06-10
-la
-int.la
-net.la
-info.la
-edu.la
-gov.la
-per.la
-com.la
-org.la
-
-// lb : http://en.wikipedia.org/wiki/.lb
-// Submitted by registry <randy@psg.com> 2008-06-17
-lb
-com.lb
-edu.lb
-gov.lb
-net.lb
-org.lb
-
-// lc : http://en.wikipedia.org/wiki/.lc
-// see also: http://www.nic.lc/rules.htm
-lc
-com.lc
-net.lc
-co.lc
-org.lc
-edu.lc
-gov.lc
-
-// li : http://en.wikipedia.org/wiki/.li
-li
-
-// lk : http://www.nic.lk/seclevpr.html
-lk
-gov.lk
-sch.lk
-net.lk
-int.lk
-com.lk
-org.lk
-edu.lk
-ngo.lk
-soc.lk
-web.lk
-ltd.lk
-assn.lk
-grp.lk
-hotel.lk
-ac.lk
-
-// lr : http://psg.com/dns/lr/lr.txt
-// Submitted by registry <randy@psg.com> 2008-06-17
-lr
-com.lr
-edu.lr
-gov.lr
-org.lr
-net.lr
-
-// ls : http://en.wikipedia.org/wiki/.ls
-ls
-co.ls
-org.ls
-
-// lt : http://en.wikipedia.org/wiki/.lt
-lt
-// gov.lt : http://www.gov.lt/index_en.php
-gov.lt
-
-// lu : http://www.dns.lu/en/
-lu
-
-// lv : http://www.nic.lv/DNS/En/generic.php
-lv
-com.lv
-edu.lv
-gov.lv
-org.lv
-mil.lv
-id.lv
-net.lv
-asn.lv
-conf.lv
-
-// ly : http://www.nic.ly/regulations.php
-ly
-com.ly
-net.ly
-gov.ly
-plc.ly
-edu.ly
-sch.ly
-med.ly
-org.ly
-id.ly
-
-// ma : http://en.wikipedia.org/wiki/.ma
-// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf
-ma
-co.ma
-net.ma
-gov.ma
-org.ma
-ac.ma
-press.ma
-
-// mc : http://www.nic.mc/
-mc
-tm.mc
-asso.mc
-
-// md : http://en.wikipedia.org/wiki/.md
-md
-
-// me : http://en.wikipedia.org/wiki/.me
-me
-co.me
-net.me
-org.me
-edu.me
-ac.me
-gov.me
-its.me
-priv.me
-
-// mg : http://www.nic.mg/tarif.htm
-mg
-org.mg
-nom.mg
-gov.mg
-prd.mg
-tm.mg
-edu.mg
-mil.mg
-com.mg
-
-// mh : http://en.wikipedia.org/wiki/.mh
-mh
-
-// mil : http://en.wikipedia.org/wiki/.mil
-mil
-
-// mk : http://en.wikipedia.org/wiki/.mk
-// see also: http://dns.marnet.net.mk/postapka.php
-mk
-com.mk
-org.mk
-net.mk
-edu.mk
-gov.mk
-inf.mk
-name.mk
-
-// ml : http://www.gobin.info/domainname/ml-template.doc
-// see also: http://en.wikipedia.org/wiki/.ml
-ml
-com.ml
-edu.ml
-gouv.ml
-gov.ml
-net.ml
-org.ml
-presse.ml
-
-// mm : http://en.wikipedia.org/wiki/.mm
-*.mm
-
-// mn : http://en.wikipedia.org/wiki/.mn
-mn
-gov.mn
-edu.mn
-org.mn
-
-// mo : http://www.monic.net.mo/
-mo
-com.mo
-net.mo
-org.mo
-edu.mo
-gov.mo
-
-// mobi : http://en.wikipedia.org/wiki/.mobi
-mobi
-
-// mp : http://www.dot.mp/
-// Confirmed by registry <dcamacho@saipan.com> 2008-06-17
-mp
-
-// mq : http://en.wikipedia.org/wiki/.mq
-mq
-
-// mr : http://en.wikipedia.org/wiki/.mr
-mr
-gov.mr
-
-// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf
-ms
-com.ms
-edu.ms
-gov.ms
-net.ms
-org.ms
-
-// mt : https://www.nic.org.mt/go/policy
-// Submitted by registry <help@nic.org.mt> 2013-11-19
-mt
-com.mt
-edu.mt
-net.mt
-org.mt
-
-// mu : http://en.wikipedia.org/wiki/.mu
-mu
-com.mu
-net.mu
-org.mu
-gov.mu
-ac.mu
-co.mu
-or.mu
-
-// museum : http://about.museum/naming/
-// http://index.museum/
-museum
-academy.museum
-agriculture.museum
-air.museum
-airguard.museum
-alabama.museum
-alaska.museum
-amber.museum
-ambulance.museum
-american.museum
-americana.museum
-americanantiques.museum
-americanart.museum
-amsterdam.museum
-and.museum
-annefrank.museum
-anthro.museum
-anthropology.museum
-antiques.museum
-aquarium.museum
-arboretum.museum
-archaeological.museum
-archaeology.museum
-architecture.museum
-art.museum
-artanddesign.museum
-artcenter.museum
-artdeco.museum
-arteducation.museum
-artgallery.museum
-arts.museum
-artsandcrafts.museum
-asmatart.museum
-assassination.museum
-assisi.museum
-association.museum
-astronomy.museum
-atlanta.museum
-austin.museum
-australia.museum
-automotive.museum
-aviation.museum
-axis.museum
-badajoz.museum
-baghdad.museum
-bahn.museum
-bale.museum
-baltimore.museum
-barcelona.museum
-baseball.museum
-basel.museum
-baths.museum
-bauern.museum
-beauxarts.museum
-beeldengeluid.museum
-bellevue.museum
-bergbau.museum
-berkeley.museum
-berlin.museum
-bern.museum
-bible.museum
-bilbao.museum
-bill.museum
-birdart.museum
-birthplace.museum
-bonn.museum
-boston.museum
-botanical.museum
-botanicalgarden.museum
-botanicgarden.museum
-botany.museum
-brandywinevalley.museum
-brasil.museum
-bristol.museum
-british.museum
-britishcolumbia.museum
-broadcast.museum
-brunel.museum
-brussel.museum
-brussels.museum
-bruxelles.museum
-building.museum
-burghof.museum
-bus.museum
-bushey.museum
-cadaques.museum
-california.museum
-cambridge.museum
-can.museum
-canada.museum
-capebreton.museum
-carrier.museum
-cartoonart.museum
-casadelamoneda.museum
-castle.museum
-castres.museum
-celtic.museum
-center.museum
-chattanooga.museum
-cheltenham.museum
-chesapeakebay.museum
-chicago.museum
-children.museum
-childrens.museum
-childrensgarden.museum
-chiropractic.museum
-chocolate.museum
-christiansburg.museum
-cincinnati.museum
-cinema.museum
-circus.museum
-civilisation.museum
-civilization.museum
-civilwar.museum
-clinton.museum
-clock.museum
-coal.museum
-coastaldefence.museum
-cody.museum
-coldwar.museum
-collection.museum
-colonialwilliamsburg.museum
-coloradoplateau.museum
-columbia.museum
-columbus.museum
-communication.museum
-communications.museum
-community.museum
-computer.museum
-computerhistory.museum
-comunicações.museum
-contemporary.museum
-contemporaryart.museum
-convent.museum
-copenhagen.museum
-corporation.museum
-correios-e-telecomunicações.museum
-corvette.museum
-costume.museum
-countryestate.museum
-county.museum
-crafts.museum
-cranbrook.museum
-creation.museum
-cultural.museum
-culturalcenter.museum
-culture.museum
-cyber.museum
-cymru.museum
-dali.museum
-dallas.museum
-database.museum
-ddr.museum
-decorativearts.museum
-delaware.museum
-delmenhorst.museum
-denmark.museum
-depot.museum
-design.museum
-detroit.museum
-dinosaur.museum
-discovery.museum
-dolls.museum
-donostia.museum
-durham.museum
-eastafrica.museum
-eastcoast.museum
-education.museum
-educational.museum
-egyptian.museum
-eisenbahn.museum
-elburg.museum
-elvendrell.museum
-embroidery.museum
-encyclopedic.museum
-england.museum
-entomology.museum
-environment.museum
-environmentalconservation.museum
-epilepsy.museum
-essex.museum
-estate.museum
-ethnology.museum
-exeter.museum
-exhibition.museum
-family.museum
-farm.museum
-farmequipment.museum
-farmers.museum
-farmstead.museum
-field.museum
-figueres.museum
-filatelia.museum
-film.museum
-fineart.museum
-finearts.museum
-finland.museum
-flanders.museum
-florida.museum
-force.museum
-fortmissoula.museum
-fortworth.museum
-foundation.museum
-francaise.museum
-frankfurt.museum
-franziskaner.museum
-freemasonry.museum
-freiburg.museum
-fribourg.museum
-frog.museum
-fundacio.museum
-furniture.museum
-gallery.museum
-garden.museum
-gateway.museum
-geelvinck.museum
-gemological.museum
-geology.museum
-georgia.museum
-giessen.museum
-glas.museum
-glass.museum
-gorge.museum
-grandrapids.museum
-graz.museum
-guernsey.museum
-halloffame.museum
-hamburg.museum
-handson.museum
-harvestcelebration.museum
-hawaii.museum
-health.museum
-heimatunduhren.museum
-hellas.museum
-helsinki.museum
-hembygdsforbund.museum
-heritage.museum
-histoire.museum
-historical.museum
-historicalsociety.museum
-historichouses.museum
-historisch.museum
-historisches.museum
-history.museum
-historyofscience.museum
-horology.museum
-house.museum
-humanities.museum
-illustration.museum
-imageandsound.museum
-indian.museum
-indiana.museum
-indianapolis.museum
-indianmarket.museum
-intelligence.museum
-interactive.museum
-iraq.museum
-iron.museum
-isleofman.museum
-jamison.museum
-jefferson.museum
-jerusalem.museum
-jewelry.museum
-jewish.museum
-jewishart.museum
-jfk.museum
-journalism.museum
-judaica.museum
-judygarland.museum
-juedisches.museum
-juif.museum
-karate.museum
-karikatur.museum
-kids.museum
-koebenhavn.museum
-koeln.museum
-kunst.museum
-kunstsammlung.museum
-kunstunddesign.museum
-labor.museum
-labour.museum
-lajolla.museum
-lancashire.museum
-landes.museum
-lans.museum
-läns.museum
-larsson.museum
-lewismiller.museum
-lincoln.museum
-linz.museum
-living.museum
-livinghistory.museum
-localhistory.museum
-london.museum
-losangeles.museum
-louvre.museum
-loyalist.museum
-lucerne.museum
-luxembourg.museum
-luzern.museum
-mad.museum
-madrid.museum
-mallorca.museum
-manchester.museum
-mansion.museum
-mansions.museum
-manx.museum
-marburg.museum
-maritime.museum
-maritimo.museum
-maryland.museum
-marylhurst.museum
-media.museum
-medical.museum
-medizinhistorisches.museum
-meeres.museum
-memorial.museum
-mesaverde.museum
-michigan.museum
-midatlantic.museum
-military.museum
-mill.museum
-miners.museum
-mining.museum
-minnesota.museum
-missile.museum
-missoula.museum
-modern.museum
-moma.museum
-money.museum
-monmouth.museum
-monticello.museum
-montreal.museum
-moscow.museum
-motorcycle.museum
-muenchen.museum
-muenster.museum
-mulhouse.museum
-muncie.museum
-museet.museum
-museumcenter.museum
-museumvereniging.museum
-music.museum
-national.museum
-nationalfirearms.museum
-nationalheritage.museum
-nativeamerican.museum
-naturalhistory.museum
-naturalhistorymuseum.museum
-naturalsciences.museum
-nature.museum
-naturhistorisches.museum
-natuurwetenschappen.museum
-naumburg.museum
-naval.museum
-nebraska.museum
-neues.museum
-newhampshire.museum
-newjersey.museum
-newmexico.museum
-newport.museum
-newspaper.museum
-newyork.museum
-niepce.museum
-norfolk.museum
-north.museum
-nrw.museum
-nuernberg.museum
-nuremberg.museum
-nyc.museum
-nyny.museum
-oceanographic.museum
-oceanographique.museum
-omaha.museum
-online.museum
-ontario.museum
-openair.museum
-oregon.museum
-oregontrail.museum
-otago.museum
-oxford.museum
-pacific.museum
-paderborn.museum
-palace.museum
-paleo.museum
-palmsprings.museum
-panama.museum
-paris.museum
-pasadena.museum
-pharmacy.museum
-philadelphia.museum
-philadelphiaarea.museum
-philately.museum
-phoenix.museum
-photography.museum
-pilots.museum
-pittsburgh.museum
-planetarium.museum
-plantation.museum
-plants.museum
-plaza.museum
-portal.museum
-portland.museum
-portlligat.museum
-posts-and-telecommunications.museum
-preservation.museum
-presidio.museum
-press.museum
-project.museum
-public.museum
-pubol.museum
-quebec.museum
-railroad.museum
-railway.museum
-research.museum
-resistance.museum
-riodejaneiro.museum
-rochester.museum
-rockart.museum
-roma.museum
-russia.museum
-saintlouis.museum
-salem.museum
-salvadordali.museum
-salzburg.museum
-sandiego.museum
-sanfrancisco.museum
-santabarbara.museum
-santacruz.museum
-santafe.museum
-saskatchewan.museum
-satx.museum
-savannahga.museum
-schlesisches.museum
-schoenbrunn.museum
-schokoladen.museum
-school.museum
-schweiz.museum
-science.museum
-scienceandhistory.museum
-scienceandindustry.museum
-sciencecenter.museum
-sciencecenters.museum
-science-fiction.museum
-sciencehistory.museum
-sciences.museum
-sciencesnaturelles.museum
-scotland.museum
-seaport.museum
-settlement.museum
-settlers.museum
-shell.museum
-sherbrooke.museum
-sibenik.museum
-silk.museum
-ski.museum
-skole.museum
-society.museum
-sologne.museum
-soundandvision.museum
-southcarolina.museum
-southwest.museum
-space.museum
-spy.museum
-square.museum
-stadt.museum
-stalbans.museum
-starnberg.museum
-state.museum
-stateofdelaware.museum
-station.museum
-steam.museum
-steiermark.museum
-stjohn.museum
-stockholm.museum
-stpetersburg.museum
-stuttgart.museum
-suisse.museum
-surgeonshall.museum
-surrey.museum
-svizzera.museum
-sweden.museum
-sydney.museum
-tank.museum
-tcm.museum
-technology.museum
-telekommunikation.museum
-television.museum
-texas.museum
-textile.museum
-theater.museum
-time.museum
-timekeeping.museum
-topology.museum
-torino.museum
-touch.museum
-town.museum
-transport.museum
-tree.museum
-trolley.museum
-trust.museum
-trustee.museum
-uhren.museum
-ulm.museum
-undersea.museum
-university.museum
-usa.museum
-usantiques.museum
-usarts.museum
-uscountryestate.museum
-usculture.museum
-usdecorativearts.museum
-usgarden.museum
-ushistory.museum
-ushuaia.museum
-uslivinghistory.museum
-utah.museum
-uvic.museum
-valley.museum
-vantaa.museum
-versailles.museum
-viking.museum
-village.museum
-virginia.museum
-virtual.museum
-virtuel.museum
-vlaanderen.museum
-volkenkunde.museum
-wales.museum
-wallonie.museum
-war.museum
-washingtondc.museum
-watchandclock.museum
-watch-and-clock.museum
-western.museum
-westfalen.museum
-whaling.museum
-wildlife.museum
-williamsburg.museum
-windmill.museum
-workshop.museum
-york.museum
-yorkshire.museum
-yosemite.museum
-youth.museum
-zoological.museum
-zoology.museum
-ירושלים.museum
-иком.museum
-
-// mv : http://en.wikipedia.org/wiki/.mv
-// "mv" included because, contra Wikipedia, google.mv exists.
-mv
-aero.mv
-biz.mv
-com.mv
-coop.mv
-edu.mv
-gov.mv
-info.mv
-int.mv
-mil.mv
-museum.mv
-name.mv
-net.mv
-org.mv
-pro.mv
-
-// mw : http://www.registrar.mw/
-mw
-ac.mw
-biz.mw
-co.mw
-com.mw
-coop.mw
-edu.mw
-gov.mw
-int.mw
-museum.mw
-net.mw
-org.mw
-
-// mx : http://www.nic.mx/
-// Submitted by registry <farias@nic.mx> 2008-06-19
-mx
-com.mx
-org.mx
-gob.mx
-edu.mx
-net.mx
-
-// my : http://www.mynic.net.my/
-my
-com.my
-net.my
-org.my
-gov.my
-edu.my
-mil.my
-name.my
-
-// mz : http://www.gobin.info/domainname/mz-template.doc
-*.mz
-!teledata.mz
-
-// na : http://www.na-nic.com.na/
-// http://www.info.na/domain/
-na
-info.na
-pro.na
-name.na
-school.na
-or.na
-dr.na
-us.na
-mx.na
-ca.na
-in.na
-cc.na
-tv.na
-ws.na
-mobi.na
-co.na
-com.na
-org.na
-
-// name : has 2nd-level tlds, but there's no list of them
-name
-
-// nc : http://www.cctld.nc/
-nc
-asso.nc
-
-// ne : http://en.wikipedia.org/wiki/.ne
-ne
-
-// net : http://en.wikipedia.org/wiki/.net
-net
-
-// nf : http://en.wikipedia.org/wiki/.nf
-nf
-com.nf
-net.nf
-per.nf
-rec.nf
-web.nf
-arts.nf
-firm.nf
-info.nf
-other.nf
-store.nf
-
-// ng : http://psg.com/dns/ng/
-ng
-com.ng
-edu.ng
-name.ng
-net.ng
-org.ng
-sch.ng
-gov.ng
-mil.ng
-mobi.ng
-
-// ni : http://www.nic.ni/dominios.htm
-*.ni
-
-// nl : http://en.wikipedia.org/wiki/.nl
-// https://www.sidn.nl/
-// ccTLD for the Netherlands
-nl
-
-// BV.nl will be a registry for dutch BV's (besloten vennootschap)
-bv.nl
-
-// no : http://www.norid.no/regelverk/index.en.html
-// The Norwegian registry has declined to notify us of updates. The web pages
-// referenced below are the official source of the data. There is also an
-// announce mailing list:
-// https://postlister.uninett.no/sympa/info/norid-diskusjon
-no
-// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html
-fhs.no
-vgs.no
-fylkesbibl.no
-folkebibl.no
-museum.no
-idrett.no
-priv.no
-// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html
-mil.no
-stat.no
-dep.no
-kommune.no
-herad.no
-// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html
-// counties
-aa.no
-ah.no
-bu.no
-fm.no
-hl.no
-hm.no
-jan-mayen.no
-mr.no
-nl.no
-nt.no
-of.no
-ol.no
-oslo.no
-rl.no
-sf.no
-st.no
-svalbard.no
-tm.no
-tr.no
-va.no
-vf.no
-// primary and lower secondary schools per county
-gs.aa.no
-gs.ah.no
-gs.bu.no
-gs.fm.no
-gs.hl.no
-gs.hm.no
-gs.jan-mayen.no
-gs.mr.no
-gs.nl.no
-gs.nt.no
-gs.of.no
-gs.ol.no
-gs.oslo.no
-gs.rl.no
-gs.sf.no
-gs.st.no
-gs.svalbard.no
-gs.tm.no
-gs.tr.no
-gs.va.no
-gs.vf.no
-// cities
-akrehamn.no
-åkrehamn.no
-algard.no
-ålgård.no
-arna.no
-brumunddal.no
-bryne.no
-bronnoysund.no
-brønnøysund.no
-drobak.no
-drøbak.no
-egersund.no
-fetsund.no
-floro.no
-florø.no
-fredrikstad.no
-hokksund.no
-honefoss.no
-hønefoss.no
-jessheim.no
-jorpeland.no
-jørpeland.no
-kirkenes.no
-kopervik.no
-krokstadelva.no
-langevag.no
-langevåg.no
-leirvik.no
-mjondalen.no
-mjøndalen.no
-mo-i-rana.no
-mosjoen.no
-mosjøen.no
-nesoddtangen.no
-orkanger.no
-osoyro.no
-osøyro.no
-raholt.no
-råholt.no
-sandnessjoen.no
-sandnessjøen.no
-skedsmokorset.no
-slattum.no
-spjelkavik.no
-stathelle.no
-stavern.no
-stjordalshalsen.no
-stjørdalshalsen.no
-tananger.no
-tranby.no
-vossevangen.no
-// communities
-afjord.no
-åfjord.no
-agdenes.no
-al.no
-ål.no
-alesund.no
-ålesund.no
-alstahaug.no
-alta.no
-áltá.no
-alaheadju.no
-álaheadju.no
-alvdal.no
-amli.no
-åmli.no
-amot.no
-åmot.no
-andebu.no
-andoy.no
-andøy.no
-andasuolo.no
-ardal.no
-årdal.no
-aremark.no
-arendal.no
-ås.no
-aseral.no
-åseral.no
-asker.no
-askim.no
-askvoll.no
-askoy.no
-askøy.no
-asnes.no
-åsnes.no
-audnedaln.no
-aukra.no
-aure.no
-aurland.no
-aurskog-holand.no
-aurskog-høland.no
-austevoll.no
-austrheim.no
-averoy.no
-averøy.no
-balestrand.no
-ballangen.no
-balat.no
-bálát.no
-balsfjord.no
-bahccavuotna.no
-báhccavuotna.no
-bamble.no
-bardu.no
-beardu.no
-beiarn.no
-bajddar.no
-bájddar.no
-baidar.no
-báidár.no
-berg.no
-bergen.no
-berlevag.no
-berlevåg.no
-bearalvahki.no
-bearalváhki.no
-bindal.no
-birkenes.no
-bjarkoy.no
-bjarkøy.no
-bjerkreim.no
-bjugn.no
-bodo.no
-bodø.no
-badaddja.no
-bådåddjå.no
-budejju.no
-bokn.no
-bremanger.no
-bronnoy.no
-brønnøy.no
-bygland.no
-bykle.no
-barum.no
-bærum.no
-bo.telemark.no
-bø.telemark.no
-bo.nordland.no
-bø.nordland.no
-bievat.no
-bievát.no
-bomlo.no
-bømlo.no
-batsfjord.no
-båtsfjord.no
-bahcavuotna.no
-báhcavuotna.no
-dovre.no
-drammen.no
-drangedal.no
-dyroy.no
-dyrøy.no
-donna.no
-dønna.no
-eid.no
-eidfjord.no
-eidsberg.no
-eidskog.no
-eidsvoll.no
-eigersund.no
-elverum.no
-enebakk.no
-engerdal.no
-etne.no
-etnedal.no
-evenes.no
-evenassi.no
-evenášši.no
-evje-og-hornnes.no
-farsund.no
-fauske.no
-fuossko.no
-fuoisku.no
-fedje.no
-fet.no
-finnoy.no
-finnøy.no
-fitjar.no
-fjaler.no
-fjell.no
-flakstad.no
-flatanger.no
-flekkefjord.no
-flesberg.no
-flora.no
-fla.no
-flå.no
-folldal.no
-forsand.no
-fosnes.no
-frei.no
-frogn.no
-froland.no
-frosta.no
-frana.no
-fræna.no
-froya.no
-frøya.no
-fusa.no
-fyresdal.no
-forde.no
-førde.no
-gamvik.no
-gangaviika.no
-gáŋgaviika.no
-gaular.no
-gausdal.no
-gildeskal.no
-gildeskål.no
-giske.no
-gjemnes.no
-gjerdrum.no
-gjerstad.no
-gjesdal.no
-gjovik.no
-gjøvik.no
-gloppen.no
-gol.no
-gran.no
-grane.no
-granvin.no
-gratangen.no
-grimstad.no
-grong.no
-kraanghke.no
-kråanghke.no
-grue.no
-gulen.no
-hadsel.no
-halden.no
-halsa.no
-hamar.no
-hamaroy.no
-habmer.no
-hábmer.no
-hapmir.no
-hápmir.no
-hammerfest.no
-hammarfeasta.no
-hámmárfeasta.no
-haram.no
-hareid.no
-harstad.no
-hasvik.no
-aknoluokta.no
-ákŋoluokta.no
-hattfjelldal.no
-aarborte.no
-haugesund.no
-hemne.no
-hemnes.no
-hemsedal.no
-heroy.more-og-romsdal.no
-herøy.møre-og-romsdal.no
-heroy.nordland.no
-herøy.nordland.no
-hitra.no
-hjartdal.no
-hjelmeland.no
-hobol.no
-hobøl.no
-hof.no
-hol.no
-hole.no
-holmestrand.no
-holtalen.no
-holtålen.no
-hornindal.no
-horten.no
-hurdal.no
-hurum.no
-hvaler.no
-hyllestad.no
-hagebostad.no
-hægebostad.no
-hoyanger.no
-høyanger.no
-hoylandet.no
-høylandet.no
-ha.no
-hå.no
-ibestad.no
-inderoy.no
-inderøy.no
-iveland.no
-jevnaker.no
-jondal.no
-jolster.no
-jølster.no
-karasjok.no
-karasjohka.no
-kárášjohka.no
-karlsoy.no
-galsa.no
-gálsá.no
-karmoy.no
-karmøy.no
-kautokeino.no
-guovdageaidnu.no
-klepp.no
-klabu.no
-klæbu.no
-kongsberg.no
-kongsvinger.no
-kragero.no
-kragerø.no
-kristiansand.no
-kristiansund.no
-krodsherad.no
-krødsherad.no
-kvalsund.no
-rahkkeravju.no
-ráhkkerávju.no
-kvam.no
-kvinesdal.no
-kvinnherad.no
-kviteseid.no
-kvitsoy.no
-kvitsøy.no
-kvafjord.no
-kvæfjord.no
-giehtavuoatna.no
-kvanangen.no
-kvænangen.no
-navuotna.no
-návuotna.no
-kafjord.no
-kåfjord.no
-gaivuotna.no
-gáivuotna.no
-larvik.no
-lavangen.no
-lavagis.no
-loabat.no
-loabát.no
-lebesby.no
-davvesiida.no
-leikanger.no
-leirfjord.no
-leka.no
-leksvik.no
-lenvik.no
-leangaviika.no
-leaŋgaviika.no
-lesja.no
-levanger.no
-lier.no
-lierne.no
-lillehammer.no
-lillesand.no
-lindesnes.no
-lindas.no
-lindås.no
-lom.no
-loppa.no
-lahppi.no
-láhppi.no
-lund.no
-lunner.no
-luroy.no
-lurøy.no
-luster.no
-lyngdal.no
-lyngen.no
-ivgu.no
-lardal.no
-lerdal.no
-lærdal.no
-lodingen.no
-lødingen.no
-lorenskog.no
-lørenskog.no
-loten.no
-løten.no
-malvik.no
-masoy.no
-måsøy.no
-muosat.no
-muosát.no
-mandal.no
-marker.no
-marnardal.no
-masfjorden.no
-meland.no
-meldal.no
-melhus.no
-meloy.no
-meløy.no
-meraker.no
-meråker.no
-moareke.no
-moåreke.no
-midsund.no
-midtre-gauldal.no
-modalen.no
-modum.no
-molde.no
-moskenes.no
-moss.no
-mosvik.no
-malselv.no
-målselv.no
-malatvuopmi.no
-málatvuopmi.no
-namdalseid.no
-aejrie.no
-namsos.no
-namsskogan.no
-naamesjevuemie.no
-nååmesjevuemie.no
-laakesvuemie.no
-nannestad.no
-narvik.no
-narviika.no
-naustdal.no
-nedre-eiker.no
-nes.akershus.no
-nes.buskerud.no
-nesna.no
-nesodden.no
-nesseby.no
-unjarga.no
-unjárga.no
-nesset.no
-nissedal.no
-nittedal.no
-nord-aurdal.no
-nord-fron.no
-nord-odal.no
-norddal.no
-nordkapp.no
-davvenjarga.no
-davvenjárga.no
-nordre-land.no
-nordreisa.no
-raisa.no
-ráisa.no
-nore-og-uvdal.no
-notodden.no
-naroy.no
-nærøy.no
-notteroy.no
-nøtterøy.no
-odda.no
-oksnes.no
-øksnes.no
-oppdal.no
-oppegard.no
-oppegård.no
-orkdal.no
-orland.no
-ørland.no
-orskog.no
-ørskog.no
-orsta.no
-ørsta.no
-os.hedmark.no
-os.hordaland.no
-osen.no
-osteroy.no
-osterøy.no
-ostre-toten.no
-østre-toten.no
-overhalla.no
-ovre-eiker.no
-øvre-eiker.no
-oyer.no
-øyer.no
-oygarden.no
-øygarden.no
-oystre-slidre.no
-øystre-slidre.no
-porsanger.no
-porsangu.no
-porsáŋgu.no
-porsgrunn.no
-radoy.no
-radøy.no
-rakkestad.no
-rana.no
-ruovat.no
-randaberg.no
-rauma.no
-rendalen.no
-rennebu.no
-rennesoy.no
-rennesøy.no
-rindal.no
-ringebu.no
-ringerike.no
-ringsaker.no
-rissa.no
-risor.no
-risør.no
-roan.no
-rollag.no
-rygge.no
-ralingen.no
-rælingen.no
-rodoy.no
-rødøy.no
-romskog.no
-rømskog.no
-roros.no
-røros.no
-rost.no
-røst.no
-royken.no
-røyken.no
-royrvik.no
-røyrvik.no
-rade.no
-råde.no
-salangen.no
-siellak.no
-saltdal.no
-salat.no
-sálát.no
-sálat.no
-samnanger.no
-sande.more-og-romsdal.no
-sande.møre-og-romsdal.no
-sande.vestfold.no
-sandefjord.no
-sandnes.no
-sandoy.no
-sandøy.no
-sarpsborg.no
-sauda.no
-sauherad.no
-sel.no
-selbu.no
-selje.no
-seljord.no
-sigdal.no
-siljan.no
-sirdal.no
-skaun.no
-skedsmo.no
-ski.no
-skien.no
-skiptvet.no
-skjervoy.no
-skjervøy.no
-skierva.no
-skiervá.no
-skjak.no
-skjåk.no
-skodje.no
-skanland.no
-skånland.no
-skanit.no
-skánit.no
-smola.no
-smøla.no
-snillfjord.no
-snasa.no
-snåsa.no
-snoasa.no
-snaase.no
-snåase.no
-sogndal.no
-sokndal.no
-sola.no
-solund.no
-songdalen.no
-sortland.no
-spydeberg.no
-stange.no
-stavanger.no
-steigen.no
-steinkjer.no
-stjordal.no
-stjørdal.no
-stokke.no
-stor-elvdal.no
-stord.no
-stordal.no
-storfjord.no
-omasvuotna.no
-strand.no
-stranda.no
-stryn.no
-sula.no
-suldal.no
-sund.no
-sunndal.no
-surnadal.no
-sveio.no
-svelvik.no
-sykkylven.no
-sogne.no
-søgne.no
-somna.no
-sømna.no
-sondre-land.no
-søndre-land.no
-sor-aurdal.no
-sør-aurdal.no
-sor-fron.no
-sør-fron.no
-sor-odal.no
-sør-odal.no
-sor-varanger.no
-sør-varanger.no
-matta-varjjat.no
-mátta-várjjat.no
-sorfold.no
-sørfold.no
-sorreisa.no
-sørreisa.no
-sorum.no
-sørum.no
-tana.no
-deatnu.no
-time.no
-tingvoll.no
-tinn.no
-tjeldsund.no
-dielddanuorri.no
-tjome.no
-tjøme.no
-tokke.no
-tolga.no
-torsken.no
-tranoy.no
-tranøy.no
-tromso.no
-tromsø.no
-tromsa.no
-romsa.no
-trondheim.no
-troandin.no
-trysil.no
-trana.no
-træna.no
-trogstad.no
-trøgstad.no
-tvedestrand.no
-tydal.no
-tynset.no
-tysfjord.no
-divtasvuodna.no
-divttasvuotna.no
-tysnes.no
-tysvar.no
-tysvær.no
-tonsberg.no
-tønsberg.no
-ullensaker.no
-ullensvang.no
-ulvik.no
-utsira.no
-vadso.no
-vadsø.no
-cahcesuolo.no
-čáhcesuolo.no
-vaksdal.no
-valle.no
-vang.no
-vanylven.no
-vardo.no
-vardø.no
-varggat.no
-várggát.no
-vefsn.no
-vaapste.no
-vega.no
-vegarshei.no
-vegårshei.no
-vennesla.no
-verdal.no
-verran.no
-vestby.no
-vestnes.no
-vestre-slidre.no
-vestre-toten.no
-vestvagoy.no
-vestvågøy.no
-vevelstad.no
-vik.no
-vikna.no
-vindafjord.no
-volda.no
-voss.no
-varoy.no
-værøy.no
-vagan.no
-vågan.no
-voagat.no
-vagsoy.no
-vågsøy.no
-vaga.no
-vågå.no
-valer.ostfold.no
-våler.østfold.no
-valer.hedmark.no
-våler.hedmark.no
-
-// np : http://www.mos.com.np/register.html
-*.np
-
-// nr : http://cenpac.net.nr/dns/index.html
-// Confirmed by registry <technician@cenpac.net.nr> 2008-06-17
-nr
-biz.nr
-info.nr
-gov.nr
-edu.nr
-org.nr
-net.nr
-com.nr
-
-// nu : http://en.wikipedia.org/wiki/.nu
-nu
-
-// nz : http://en.wikipedia.org/wiki/.nz
-// Confirmed by registry <jay@nzrs.net.nz> 2014-05-19
-nz
-ac.nz
-co.nz
-cri.nz
-geek.nz
-gen.nz
-govt.nz
-health.nz
-iwi.nz
-kiwi.nz
-maori.nz
-mil.nz
-māori.nz
-net.nz
-org.nz
-parliament.nz
-school.nz
-
-// om : http://en.wikipedia.org/wiki/.om
-om
-co.om
-com.om
-edu.om
-gov.om
-med.om
-museum.om
-net.om
-org.om
-pro.om
-
-// org : http://en.wikipedia.org/wiki/.org
-org
-
-// pa : http://www.nic.pa/
-// Some additional second level "domains" resolve directly as hostnames, such as
-// pannet.pa, so we add a rule for "pa".
-pa
-ac.pa
-gob.pa
-com.pa
-org.pa
-sld.pa
-edu.pa
-net.pa
-ing.pa
-abo.pa
-med.pa
-nom.pa
-
-// pe : https://www.nic.pe/InformeFinalComision.pdf
-pe
-edu.pe
-gob.pe
-nom.pe
-mil.pe
-org.pe
-com.pe
-net.pe
-
-// pf : http://www.gobin.info/domainname/formulaire-pf.pdf
-pf
-com.pf
-org.pf
-edu.pf
-
-// pg : http://en.wikipedia.org/wiki/.pg
-*.pg
-
-// ph : http://www.domains.ph/FAQ2.asp
-// Submitted by registry <jed@email.com.ph> 2008-06-13
-ph
-com.ph
-net.ph
-org.ph
-gov.ph
-edu.ph
-ngo.ph
-mil.ph
-i.ph
-
-// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK
-pk
-com.pk
-net.pk
-edu.pk
-org.pk
-fam.pk
-biz.pk
-web.pk
-gov.pk
-gob.pk
-gok.pk
-gon.pk
-gop.pk
-gos.pk
-info.pk
-
-// pl http://www.dns.pl/english/index.html
-// updated by .PL registry on 2015-04-28
-pl
-com.pl
-net.pl
-org.pl
-// pl functional domains (http://www.dns.pl/english/index.html)
-aid.pl
-agro.pl
-atm.pl
-auto.pl
-biz.pl
-edu.pl
-gmina.pl
-gsm.pl
-info.pl
-mail.pl
-miasta.pl
-media.pl
-mil.pl
-nieruchomosci.pl
-nom.pl
-pc.pl
-powiat.pl
-priv.pl
-realestate.pl
-rel.pl
-sex.pl
-shop.pl
-sklep.pl
-sos.pl
-szkola.pl
-targi.pl
-tm.pl
-tourism.pl
-travel.pl
-turystyka.pl
-// Government domains
-gov.pl
-ap.gov.pl
-ic.gov.pl
-is.gov.pl
-us.gov.pl
-kmpsp.gov.pl
-kppsp.gov.pl
-kwpsp.gov.pl
-psp.gov.pl
-wskr.gov.pl
-kwp.gov.pl
-mw.gov.pl
-ug.gov.pl
-um.gov.pl
-umig.gov.pl
-ugim.gov.pl
-upow.gov.pl
-uw.gov.pl
-starostwo.gov.pl
-pa.gov.pl
-po.gov.pl
-psse.gov.pl
-pup.gov.pl
-rzgw.gov.pl
-sa.gov.pl
-so.gov.pl
-sr.gov.pl
-wsa.gov.pl
-sko.gov.pl
-uzs.gov.pl
-wiih.gov.pl
-winb.gov.pl
-pinb.gov.pl
-wios.gov.pl
-witd.gov.pl
-wzmiuw.gov.pl
-piw.gov.pl
-wiw.gov.pl
-griw.gov.pl
-wif.gov.pl
-oum.gov.pl
-sdn.gov.pl
-zp.gov.pl
-uppo.gov.pl
-mup.gov.pl
-wuoz.gov.pl
-konsulat.gov.pl
-oirm.gov.pl
-// pl regional domains (http://www.dns.pl/english/index.html)
-augustow.pl
-babia-gora.pl
-bedzin.pl
-beskidy.pl
-bialowieza.pl
-bialystok.pl
-bielawa.pl
-bieszczady.pl
-boleslawiec.pl
-bydgoszcz.pl
-bytom.pl
-cieszyn.pl
-czeladz.pl
-czest.pl
-dlugoleka.pl
-elblag.pl
-elk.pl
-glogow.pl
-gniezno.pl
-gorlice.pl
-grajewo.pl
-ilawa.pl
-jaworzno.pl
-jelenia-gora.pl
-jgora.pl
-kalisz.pl
-kazimierz-dolny.pl
-karpacz.pl
-kartuzy.pl
-kaszuby.pl
-katowice.pl
-kepno.pl
-ketrzyn.pl
-klodzko.pl
-kobierzyce.pl
-kolobrzeg.pl
-konin.pl
-konskowola.pl
-kutno.pl
-lapy.pl
-lebork.pl
-legnica.pl
-lezajsk.pl
-limanowa.pl
-lomza.pl
-lowicz.pl
-lubin.pl
-lukow.pl
-malbork.pl
-malopolska.pl
-mazowsze.pl
-mazury.pl
-mielec.pl
-mielno.pl
-mragowo.pl
-naklo.pl
-nowaruda.pl
-nysa.pl
-olawa.pl
-olecko.pl
-olkusz.pl
-olsztyn.pl
-opoczno.pl
-opole.pl
-ostroda.pl
-ostroleka.pl
-ostrowiec.pl
-ostrowwlkp.pl
-pila.pl
-pisz.pl
-podhale.pl
-podlasie.pl
-polkowice.pl
-pomorze.pl
-pomorskie.pl
-prochowice.pl
-pruszkow.pl
-przeworsk.pl
-pulawy.pl
-radom.pl
-rawa-maz.pl
-rybnik.pl
-rzeszow.pl
-sanok.pl
-sejny.pl
-slask.pl
-slupsk.pl
-sosnowiec.pl
-stalowa-wola.pl
-skoczow.pl
-starachowice.pl
-stargard.pl
-suwalki.pl
-swidnica.pl
-swiebodzin.pl
-swinoujscie.pl
-szczecin.pl
-szczytno.pl
-tarnobrzeg.pl
-tgory.pl
-turek.pl
-tychy.pl
-ustka.pl
-walbrzych.pl
-warmia.pl
-warszawa.pl
-waw.pl
-wegrow.pl
-wielun.pl
-wlocl.pl
-wloclawek.pl
-wodzislaw.pl
-wolomin.pl
-wroclaw.pl
-zachpomor.pl
-zagan.pl
-zarow.pl
-zgora.pl
-zgorzelec.pl
-
-// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-pm
-
-// pn : http://www.government.pn/PnRegistry/policies.htm
-pn
-gov.pn
-co.pn
-org.pn
-edu.pn
-net.pn
-
-// post : http://en.wikipedia.org/wiki/.post
-post
-
-// pr : http://www.nic.pr/index.asp?f=1
-pr
-com.pr
-net.pr
-org.pr
-gov.pr
-edu.pr
-isla.pr
-pro.pr
-biz.pr
-info.pr
-name.pr
-// these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr
-est.pr
-prof.pr
-ac.pr
-
-// pro : http://www.nic.pro/support_faq.htm
-pro
-aca.pro
-bar.pro
-cpa.pro
-jur.pro
-law.pro
-med.pro
-eng.pro
-
-// ps : http://en.wikipedia.org/wiki/.ps
-// http://www.nic.ps/registration/policy.html#reg
-ps
-edu.ps
-gov.ps
-sec.ps
-plo.ps
-com.ps
-org.ps
-net.ps
-
-// pt : http://online.dns.pt/dns/start_dns
-pt
-net.pt
-gov.pt
-org.pt
-edu.pt
-int.pt
-publ.pt
-com.pt
-nome.pt
-
-// pw : http://en.wikipedia.org/wiki/.pw
-pw
-co.pw
-ne.pw
-or.pw
-ed.pw
-go.pw
-belau.pw
-
-// py : http://www.nic.py/pautas.html#seccion_9
-// Confirmed by registry 2012-10-03
-py
-com.py
-coop.py
-edu.py
-gov.py
-mil.py
-net.py
-org.py
-
-// qa : http://domains.qa/en/
-qa
-com.qa
-edu.qa
-gov.qa
-mil.qa
-name.qa
-net.qa
-org.qa
-sch.qa
-
-// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs
-re
-com.re
-asso.re
-nom.re
-
-// ro : http://www.rotld.ro/
-ro
-com.ro
-org.ro
-tm.ro
-nt.ro
-nom.ro
-info.ro
-rec.ro
-arts.ro
-firm.ro
-store.ro
-www.ro
-
-// rs : http://en.wikipedia.org/wiki/.rs
-rs
-co.rs
-org.rs
-edu.rs
-ac.rs
-gov.rs
-in.rs
-
-// ru : http://www.cctld.ru/ru/docs/aktiv_8.php
-// Industry domains
-ru
-ac.ru
-com.ru
-edu.ru
-int.ru
-net.ru
-org.ru
-pp.ru
-// Geographical domains
-adygeya.ru
-altai.ru
-amur.ru
-arkhangelsk.ru
-astrakhan.ru
-bashkiria.ru
-belgorod.ru
-bir.ru
-bryansk.ru
-buryatia.ru
-cbg.ru
-chel.ru
-chelyabinsk.ru
-chita.ru
-chukotka.ru
-chuvashia.ru
-dagestan.ru
-dudinka.ru
-e-burg.ru
-grozny.ru
-irkutsk.ru
-ivanovo.ru
-izhevsk.ru
-jar.ru
-joshkar-ola.ru
-kalmykia.ru
-kaluga.ru
-kamchatka.ru
-karelia.ru
-kazan.ru
-kchr.ru
-kemerovo.ru
-khabarovsk.ru
-khakassia.ru
-khv.ru
-kirov.ru
-koenig.ru
-komi.ru
-kostroma.ru
-krasnoyarsk.ru
-kuban.ru
-kurgan.ru
-kursk.ru
-lipetsk.ru
-magadan.ru
-mari.ru
-mari-el.ru
-marine.ru
-mordovia.ru
-// mosreg.ru Bug 1090800 - removed at request of Aleksey Konstantinov <konstantinovav@mosreg.ru>
-msk.ru
-murmansk.ru
-nalchik.ru
-nnov.ru
-nov.ru
-novosibirsk.ru
-nsk.ru
-omsk.ru
-orenburg.ru
-oryol.ru
-palana.ru
-penza.ru
-perm.ru
-ptz.ru
-rnd.ru
-ryazan.ru
-sakhalin.ru
-samara.ru
-saratov.ru
-simbirsk.ru
-smolensk.ru
-spb.ru
-stavropol.ru
-stv.ru
-surgut.ru
-tambov.ru
-tatarstan.ru
-tom.ru
-tomsk.ru
-tsaritsyn.ru
-tsk.ru
-tula.ru
-tuva.ru
-tver.ru
-tyumen.ru
-udm.ru
-udmurtia.ru
-ulan-ude.ru
-vladikavkaz.ru
-vladimir.ru
-vladivostok.ru
-volgograd.ru
-vologda.ru
-voronezh.ru
-vrn.ru
-vyatka.ru
-yakutia.ru
-yamal.ru
-yaroslavl.ru
-yekaterinburg.ru
-yuzhno-sakhalinsk.ru
-// More geographical domains
-amursk.ru
-baikal.ru
-cmw.ru
-fareast.ru
-jamal.ru
-kms.ru
-k-uralsk.ru
-kustanai.ru
-kuzbass.ru
-magnitka.ru
-mytis.ru
-nakhodka.ru
-nkz.ru
-norilsk.ru
-oskol.ru
-pyatigorsk.ru
-rubtsovsk.ru
-snz.ru
-syzran.ru
-vdonsk.ru
-zgrad.ru
-// State domains
-gov.ru
-mil.ru
-// Technical domains
-test.ru
-
-// rw : http://www.nic.rw/cgi-bin/policy.pl
-rw
-gov.rw
-net.rw
-edu.rw
-ac.rw
-com.rw
-co.rw
-int.rw
-mil.rw
-gouv.rw
-
-// sa : http://www.nic.net.sa/
-sa
-com.sa
-net.sa
-org.sa
-gov.sa
-med.sa
-pub.sa
-edu.sa
-sch.sa
-
-// sb : http://www.sbnic.net.sb/
-// Submitted by registry <lee.humphries@telekom.com.sb> 2008-06-08
-sb
-com.sb
-edu.sb
-gov.sb
-net.sb
-org.sb
-
-// sc : http://www.nic.sc/
-sc
-com.sc
-gov.sc
-net.sc
-org.sc
-edu.sc
-
-// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm
-// Submitted by registry <admin@isoc.sd> 2008-06-17
-sd
-com.sd
-net.sd
-org.sd
-edu.sd
-med.sd
-tv.sd
-gov.sd
-info.sd
-
-// se : http://en.wikipedia.org/wiki/.se
-// Submitted by registry <patrik.wallstrom@iis.se> 2014-03-18
-se
-a.se
-ac.se
-b.se
-bd.se
-brand.se
-c.se
-d.se
-e.se
-f.se
-fh.se
-fhsk.se
-fhv.se
-g.se
-h.se
-i.se
-k.se
-komforb.se
-kommunalforbund.se
-komvux.se
-l.se
-lanbib.se
-m.se
-n.se
-naturbruksgymn.se
-o.se
-org.se
-p.se
-parti.se
-pp.se
-press.se
-r.se
-s.se
-t.se
-tm.se
-u.se
-w.se
-x.se
-y.se
-z.se
-
-// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines
-sg
-com.sg
-net.sg
-org.sg
-gov.sg
-edu.sg
-per.sg
-
-// sh : http://www.nic.sh/registrar.html
-sh
-com.sh
-net.sh
-gov.sh
-org.sh
-mil.sh
-
-// si : http://en.wikipedia.org/wiki/.si
-si
-
-// sj : No registrations at this time.
-// Submitted by registry <jarle@uninett.no> 2008-06-16
-sj
-
-// sk : http://en.wikipedia.org/wiki/.sk
-// list of 2nd level domains ?
-sk
-
-// sl : http://www.nic.sl
-// Submitted by registry <adam@neoip.com> 2008-06-12
-sl
-com.sl
-net.sl
-edu.sl
-gov.sl
-org.sl
-
-// sm : http://en.wikipedia.org/wiki/.sm
-sm
-
-// sn : http://en.wikipedia.org/wiki/.sn
-sn
-art.sn
-com.sn
-edu.sn
-gouv.sn
-org.sn
-perso.sn
-univ.sn
-
-// so : http://www.soregistry.com/
-so
-com.so
-net.so
-org.so
-
-// sr : http://en.wikipedia.org/wiki/.sr
-sr
-
-// st : http://www.nic.st/html/policyrules/
-st
-co.st
-com.st
-consulado.st
-edu.st
-embaixada.st
-gov.st
-mil.st
-net.st
-org.st
-principe.st
-saotome.st
-store.st
-
-// su : http://en.wikipedia.org/wiki/.su
-su
-adygeya.su
-arkhangelsk.su
-balashov.su
-bashkiria.su
-bryansk.su
-dagestan.su
-grozny.su
-ivanovo.su
-kalmykia.su
-kaluga.su
-karelia.su
-khakassia.su
-krasnodar.su
-kurgan.su
-lenug.su
-mordovia.su
-msk.su
-murmansk.su
-nalchik.su
-nov.su
-obninsk.su
-penza.su
-pokrovsk.su
-sochi.su
-spb.su
-togliatti.su
-troitsk.su
-tula.su
-tuva.su
-vladikavkaz.su
-vladimir.su
-vologda.su
-
-// sv : http://www.svnet.org.sv/niveldos.pdf
-sv
-com.sv
-edu.sv
-gob.sv
-org.sv
-red.sv
-
-// sx : http://en.wikipedia.org/wiki/.sx
-// Confirmed by registry <jcvignes@openregistry.com> 2012-05-31
-sx
-gov.sx
-
-// sy : http://en.wikipedia.org/wiki/.sy
-// see also: http://www.gobin.info/domainname/sy.doc
-sy
-edu.sy
-gov.sy
-net.sy
-mil.sy
-com.sy
-org.sy
-
-// sz : http://en.wikipedia.org/wiki/.sz
-// http://www.sispa.org.sz/
-sz
-co.sz
-ac.sz
-org.sz
-
-// tc : http://en.wikipedia.org/wiki/.tc
-tc
-
-// td : http://en.wikipedia.org/wiki/.td
-td
-
-// tel: http://en.wikipedia.org/wiki/.tel
-// http://www.telnic.org/
-tel
-
-// tf : http://en.wikipedia.org/wiki/.tf
-tf
-
-// tg : http://en.wikipedia.org/wiki/.tg
-// http://www.nic.tg/
-tg
-
-// th : http://en.wikipedia.org/wiki/.th
-// Submitted by registry <krit@thains.co.th> 2008-06-17
-th
-ac.th
-co.th
-go.th
-in.th
-mi.th
-net.th
-or.th
-
-// tj : http://www.nic.tj/policy.html
-tj
-ac.tj
-biz.tj
-co.tj
-com.tj
-edu.tj
-go.tj
-gov.tj
-int.tj
-mil.tj
-name.tj
-net.tj
-nic.tj
-org.tj
-test.tj
-web.tj
-
-// tk : http://en.wikipedia.org/wiki/.tk
-tk
-
-// tl : http://en.wikipedia.org/wiki/.tl
-tl
-gov.tl
-
-// tm : http://www.nic.tm/local.html
-tm
-com.tm
-co.tm
-org.tm
-net.tm
-nom.tm
-gov.tm
-mil.tm
-edu.tm
-
-// tn : http://en.wikipedia.org/wiki/.tn
-// http://whois.ati.tn/
-tn
-com.tn
-ens.tn
-fin.tn
-gov.tn
-ind.tn
-intl.tn
-nat.tn
-net.tn
-org.tn
-info.tn
-perso.tn
-tourism.tn
-edunet.tn
-rnrt.tn
-rns.tn
-rnu.tn
-mincom.tn
-agrinet.tn
-defense.tn
-turen.tn
-
-// to : http://en.wikipedia.org/wiki/.to
-// Submitted by registry <egullich@colo.to> 2008-06-17
-to
-com.to
-gov.to
-net.to
-org.to
-edu.to
-mil.to
-
-// tp : No registrations at this time.
-// Submitted by Ryan Sleevi <ryan.sleevi@gmail.com> 2014-01-03
-tp
-
-// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
-// and: https://www.nic.tr/forms/politikalar.pdf
-// Submitted by <mehmetgurevin@gmail.com> 2014-07-19
-tr
-com.tr
-info.tr
-biz.tr
-net.tr
-org.tr
-web.tr
-gen.tr
-tv.tr
-av.tr
-dr.tr
-bbs.tr
-name.tr
-tel.tr
-gov.tr
-bel.tr
-pol.tr
-mil.tr
-k12.tr
-edu.tr
-kep.tr
-
-// Used by Northern Cyprus
-nc.tr
-
-// Used by government agencies of Northern Cyprus
-gov.nc.tr
-
-// travel : http://en.wikipedia.org/wiki/.travel
-travel
-
-// tt : http://www.nic.tt/
-tt
-co.tt
-com.tt
-org.tt
-net.tt
-biz.tt
-info.tt
-pro.tt
-int.tt
-coop.tt
-jobs.tt
-mobi.tt
-travel.tt
-museum.tt
-aero.tt
-name.tt
-gov.tt
-edu.tt
-
-// tv : http://en.wikipedia.org/wiki/.tv
-// Not listing any 2LDs as reserved since none seem to exist in practice,
-// Wikipedia notwithstanding.
-tv
-
-// tw : http://en.wikipedia.org/wiki/.tw
-tw
-edu.tw
-gov.tw
-mil.tw
-com.tw
-net.tw
-org.tw
-idv.tw
-game.tw
-ebiz.tw
-club.tw
-網路.tw
-組織.tw
-商業.tw
-
-// tz : http://www.tznic.or.tz/index.php/domains
-// Confirmed by registry <manager@tznic.or.tz> 2013-01-22
-tz
-ac.tz
-co.tz
-go.tz
-hotel.tz
-info.tz
-me.tz
-mil.tz
-mobi.tz
-ne.tz
-or.tz
-sc.tz
-tv.tz
-
-// ua : https://hostmaster.ua/policy/?ua
-// Submitted by registry <dk@cctld.ua> 2012-04-27
-ua
-// ua 2LD
-com.ua
-edu.ua
-gov.ua
-in.ua
-net.ua
-org.ua
-// ua geographic names
-// https://hostmaster.ua/2ld/
-cherkassy.ua
-cherkasy.ua
-chernigov.ua
-chernihiv.ua
-chernivtsi.ua
-chernovtsy.ua
-ck.ua
-cn.ua
-cr.ua
-crimea.ua
-cv.ua
-dn.ua
-dnepropetrovsk.ua
-dnipropetrovsk.ua
-dominic.ua
-donetsk.ua
-dp.ua
-if.ua
-ivano-frankivsk.ua
-kh.ua
-kharkiv.ua
-kharkov.ua
-kherson.ua
-khmelnitskiy.ua
-khmelnytskyi.ua
-kiev.ua
-kirovograd.ua
-km.ua
-kr.ua
-krym.ua
-ks.ua
-kv.ua
-kyiv.ua
-lg.ua
-lt.ua
-lugansk.ua
-lutsk.ua
-lv.ua
-lviv.ua
-mk.ua
-mykolaiv.ua
-nikolaev.ua
-od.ua
-odesa.ua
-odessa.ua
-pl.ua
-poltava.ua
-rivne.ua
-rovno.ua
-rv.ua
-sb.ua
-sebastopol.ua
-sevastopol.ua
-sm.ua
-sumy.ua
-te.ua
-ternopil.ua
-uz.ua
-uzhgorod.ua
-vinnica.ua
-vinnytsia.ua
-vn.ua
-volyn.ua
-yalta.ua
-zaporizhzhe.ua
-zaporizhzhia.ua
-zhitomir.ua
-zhytomyr.ua
-zp.ua
-zt.ua
-
-// Private registries in .ua
-co.ua
-pp.ua
-
-// ug : https://www.registry.co.ug/
-ug
-co.ug
-or.ug
-ac.ug
-sc.ug
-go.ug
-ne.ug
-com.ug
-org.ug
-
-// uk : http://en.wikipedia.org/wiki/.uk
-// Submitted by registry <Michael.Daly@nominet.org.uk>
-uk
-ac.uk
-co.uk
-gov.uk
-ltd.uk
-me.uk
-net.uk
-nhs.uk
-org.uk
-plc.uk
-police.uk
-*.sch.uk
-
-// us : http://en.wikipedia.org/wiki/.us
-us
-dni.us
-fed.us
-isa.us
-kids.us
-nsn.us
-// us geographic names
-ak.us
-al.us
-ar.us
-as.us
-az.us
-ca.us
-co.us
-ct.us
-dc.us
-de.us
-fl.us
-ga.us
-gu.us
-hi.us
-ia.us
-id.us
-il.us
-in.us
-ks.us
-ky.us
-la.us
-ma.us
-md.us
-me.us
-mi.us
-mn.us
-mo.us
-ms.us
-mt.us
-nc.us
-nd.us
-ne.us
-nh.us
-nj.us
-nm.us
-nv.us
-ny.us
-oh.us
-ok.us
-or.us
-pa.us
-pr.us
-ri.us
-sc.us
-sd.us
-tn.us
-tx.us
-ut.us
-vi.us
-vt.us
-va.us
-wa.us
-wi.us
-wv.us
-wy.us
-// The registrar notes several more specific domains available in each state,
-// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat
-// haphazard; in some states these domains resolve as addresses, while in others
-// only subdomains are available, or even nothing at all. We include the
-// most common ones where it's clear that different sites are different
-// entities.
-k12.ak.us
-k12.al.us
-k12.ar.us
-k12.as.us
-k12.az.us
-k12.ca.us
-k12.co.us
-k12.ct.us
-k12.dc.us
-k12.de.us
-k12.fl.us
-k12.ga.us
-k12.gu.us
-// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login
-k12.ia.us
-k12.id.us
-k12.il.us
-k12.in.us
-k12.ks.us
-k12.ky.us
-k12.la.us
-k12.ma.us
-k12.md.us
-k12.me.us
-k12.mi.us
-k12.mn.us
-k12.mo.us
-k12.ms.us
-k12.mt.us
-k12.nc.us
-// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso <trossow@nd.gov>
-k12.ne.us
-k12.nh.us
-k12.nj.us
-k12.nm.us
-k12.nv.us
-k12.ny.us
-k12.oh.us
-k12.ok.us
-k12.or.us
-k12.pa.us
-k12.pr.us
-k12.ri.us
-k12.sc.us
-// k12.sd.us Bug 934131 - Removed at request of James Booze <James.Booze@k12.sd.us>
-k12.tn.us
-k12.tx.us
-k12.ut.us
-k12.vi.us
-k12.vt.us
-k12.va.us
-k12.wa.us
-k12.wi.us
-// k12.wv.us Bug 947705 - Removed at request of Verne Britton <verne@wvnet.edu>
-k12.wy.us
-cc.ak.us
-cc.al.us
-cc.ar.us
-cc.as.us
-cc.az.us
-cc.ca.us
-cc.co.us
-cc.ct.us
-cc.dc.us
-cc.de.us
-cc.fl.us
-cc.ga.us
-cc.gu.us
-cc.hi.us
-cc.ia.us
-cc.id.us
-cc.il.us
-cc.in.us
-cc.ks.us
-cc.ky.us
-cc.la.us
-cc.ma.us
-cc.md.us
-cc.me.us
-cc.mi.us
-cc.mn.us
-cc.mo.us
-cc.ms.us
-cc.mt.us
-cc.nc.us
-cc.nd.us
-cc.ne.us
-cc.nh.us
-cc.nj.us
-cc.nm.us
-cc.nv.us
-cc.ny.us
-cc.oh.us
-cc.ok.us
-cc.or.us
-cc.pa.us
-cc.pr.us
-cc.ri.us
-cc.sc.us
-cc.sd.us
-cc.tn.us
-cc.tx.us
-cc.ut.us
-cc.vi.us
-cc.vt.us
-cc.va.us
-cc.wa.us
-cc.wi.us
-cc.wv.us
-cc.wy.us
-lib.ak.us
-lib.al.us
-lib.ar.us
-lib.as.us
-lib.az.us
-lib.ca.us
-lib.co.us
-lib.ct.us
-lib.dc.us
-lib.de.us
-lib.fl.us
-lib.ga.us
-lib.gu.us
-lib.hi.us
-lib.ia.us
-lib.id.us
-lib.il.us
-lib.in.us
-lib.ks.us
-lib.ky.us
-lib.la.us
-lib.ma.us
-lib.md.us
-lib.me.us
-lib.mi.us
-lib.mn.us
-lib.mo.us
-lib.ms.us
-lib.mt.us
-lib.nc.us
-lib.nd.us
-lib.ne.us
-lib.nh.us
-lib.nj.us
-lib.nm.us
-lib.nv.us
-lib.ny.us
-lib.oh.us
-lib.ok.us
-lib.or.us
-lib.pa.us
-lib.pr.us
-lib.ri.us
-lib.sc.us
-lib.sd.us
-lib.tn.us
-lib.tx.us
-lib.ut.us
-lib.vi.us
-lib.vt.us
-lib.va.us
-lib.wa.us
-lib.wi.us
-// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold <arnold@wvlc.lib.wv.us>
-lib.wy.us
-// k12.ma.us contains school districts in Massachusetts. The 4LDs are
-// managed indepedently except for private (PVT), charter (CHTR) and
-// parochial (PAROCH) schools. Those are delegated dorectly to the
-// 5LD operators. <k12-ma-hostmaster _ at _ rsuc.gweep.net>
-pvt.k12.ma.us
-chtr.k12.ma.us
-paroch.k12.ma.us
-
-// uy : http://www.nic.org.uy/
-uy
-com.uy
-edu.uy
-gub.uy
-mil.uy
-net.uy
-org.uy
-
-// uz : http://www.reg.uz/
-uz
-co.uz
-com.uz
-net.uz
-org.uz
-
-// va : http://en.wikipedia.org/wiki/.va
-va
-
-// vc : http://en.wikipedia.org/wiki/.vc
-// Submitted by registry <kshah@ca.afilias.info> 2008-06-13
-vc
-com.vc
-net.vc
-org.vc
-gov.vc
-mil.vc
-edu.vc
-
-// ve : https://registro.nic.ve/
-// Confirmed by registry 2012-10-04
-// Updated 2014-05-20 - Bug 940478
-ve
-arts.ve
-co.ve
-com.ve
-e12.ve
-edu.ve
-firm.ve
-gob.ve
-gov.ve
-info.ve
-int.ve
-mil.ve
-net.ve
-org.ve
-rec.ve
-store.ve
-tec.ve
-web.ve
-
-// vg : http://en.wikipedia.org/wiki/.vg
-vg
-
-// vi : http://www.nic.vi/newdomainform.htm
-// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other
-// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they
-// are available for registration (which they do not seem to be).
-vi
-co.vi
-com.vi
-k12.vi
-net.vi
-org.vi
-
-// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp
-vn
-com.vn
-net.vn
-org.vn
-edu.vn
-gov.vn
-int.vn
-ac.vn
-biz.vn
-info.vn
-name.vn
-pro.vn
-health.vn
-
-// vu : http://en.wikipedia.org/wiki/.vu
-// http://www.vunic.vu/
-vu
-com.vu
-edu.vu
-net.vu
-org.vu
-
-// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-wf
-
-// ws : http://en.wikipedia.org/wiki/.ws
-// http://samoanic.ws/index.dhtml
-ws
-com.ws
-net.ws
-org.ws
-gov.ws
-edu.ws
-
-// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-yt
-
-// IDN ccTLDs
-// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then
-// U-label, and follow this format:
-// // A-Label ("<Latin renderings>", <language name>[, variant info]) : <ISO 3166 ccTLD>
-// // [sponsoring org]
-// U-Label
-
-// xn--mgbaam7a8h ("Emerat", Arabic) : AE
-// http://nic.ae/english/arabicdomain/rules.jsp
-امارات
-
-// xn--y9a3aq ("hye", Armenian) : AM
-// ISOC AM (operated by .am Registry)
-հայ
-
-// xn--54b7fta0cc ("Bangla", Bangla) : BD
-বাংলা
-
-// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
-// Operated by .by registry
-бел
-
-// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-中国
-
-// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-中國
-
-// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ
-الجزائر
-
-// xn--wgbh1c ("Egypt/Masr", Arabic) : EG
-// http://www.dotmasr.eg/
-مصر
-
-// xn--node ("ge", Georgian Mkhedruli) : GE
-გე
-
-// xn--qxam ("el", Greek) : GR
-// Hellenic Ministry of Infrastructure, Transport, and Networks
-ελ
-
-// xn--j6w193g ("Hong Kong", Chinese) : HK
-// https://www2.hkirc.hk/register/rules.jsp
-香港
-
-// xn--h2brj9c ("Bharat", Devanagari) : IN
-// India
-भारत
-
-// xn--mgbbh1a71e ("Bharat", Arabic) : IN
-// India
-بھارت
-
-// xn--fpcrj9c3d ("Bharat", Telugu) : IN
-// India
-భారత్
-
-// xn--gecrj9c ("Bharat", Gujarati) : IN
-// India
-ભારત
-
-// xn--s9brj9c ("Bharat", Gurmukhi) : IN
-// India
-ਭਾਰਤ
-
-// xn--45brj9c ("Bharat", Bengali) : IN
-// India
-ভারত
-
-// xn--xkc2dl3a5ee0h ("India", Tamil) : IN
-// India
-இந்தியா
-
-// xn--mgba3a4f16a ("Iran", Persian) : IR
-ایران
-
-// xn--mgba3a4fra ("Iran", Arabic) : IR
-ايران
-
-// xn--mgbtx2b ("Iraq", Arabic) : IQ
-// Communications and Media Commission
-عراق
-
-// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO
-// National Information Technology Center (NITC)
-// Royal Scientific Society, Al-Jubeiha
-الاردن
-
-// xn--3e0b707e ("Republic of Korea", Hangul) : KR
-한국
-
-// xn--80ao21a ("Kaz", Kazakh) : KZ
-қаз
-
-// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
-// http://nic.lk
-ලංකා
-
-// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK
-// http://nic.lk
-இலங்கை
-
-// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA
-المغرب
-
-// xn--d1alf ("mkd", Macedonian) : MK
-// MARnet
-мкд
-
-// xn--l1acc ("mon", Mongolian) : MN
-мон
-
-// xn--mix891f ("Macao", Chinese, Traditional) : MO
-// MONIC / HNET Asia (Registry Operator for .mo)
-澳門
-
-// xn--mix082f ("Macao", Chinese, Simplified) : MO
-澳门
-
-// xn--mgbx4cd0ab ("Malaysia", Malay) : MY
-مليسيا
-
-// xn--mgb9awbf ("Oman", Arabic) : OM
-عمان
-
-// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK
-پاکستان
-
-// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK
-پاكستان
-
-// xn--ygbi2ammx ("Falasteen", Arabic) : PS
-// The Palestinian National Internet Naming Authority (PNINA)
-// http://www.pnina.ps
-فلسطين
-
-// xn--90a3ac ("srb", Cyrillic) : RS
-// http://www.rnids.rs/en/the-.срб-domain
-срб
-пр.срб
-орг.срб
-обр.срб
-од.срб
-упр.срб
-ак.срб
-
-// xn--p1ai ("rf", Russian-Cyrillic) : RU
-// http://www.cctld.ru/en/docs/rulesrf.php
-рф
-
-// xn--wgbl6a ("Qatar", Arabic) : QA
-// http://www.ict.gov.qa/
-قطر
-
-// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA
-// http://www.nic.net.sa/
-السعودية
-
-// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA
-السعودیة
-
-// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA
-السعودیۃ
-
-// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA
-السعوديه
-
-// xn--mgbpl2fh ("sudan", Arabic) : SD
-// Operated by .sd registry
-سودان
-
-// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG
-新加坡
-
-// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG
-சிங்கப்பூர்
-
-// xn--ogbpf8fl ("Syria", Arabic) : SY
-سورية
-
-// xn--mgbtf8fl ("Syria", Arabic, variant) : SY
-سوريا
-
-// xn--o3cw4h ("Thai", Thai) : TH
-// http://www.thnic.co.th
-ไทย
-
-// xn--pgbs0dh ("Tunisia", Arabic) : TN
-// http://nic.tn
-تونس
-
-// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-台灣
-
-// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-台湾
-
-// xn--nnx388a ("Taiwan", Chinese, variant) : TW
-臺灣
-
-// xn--j1amh ("ukr", Cyrillic) : UA
-укр
-
-// xn--mgb2ddes ("AlYemen", Arabic) : YE
-اليمن
-
-// xxx : http://icmregistry.com
-xxx
-
-// ye : http://www.y.net.ye/services/domain_name.htm
-*.ye
-
-// za : http://www.zadna.org.za/slds.html
-*.za
-
-// zm : http://en.wikipedia.org/wiki/.zm
-*.zm
-
-// zw : http://en.wikipedia.org/wiki/.zw
-*.zw
-
-
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2015-05-06T09:31:08Z
-
-// aaa : 2015-02-26 American Automobile Association, Inc.
-aaa
-
-// abb : 2014-10-24 ABB Ltd
-abb
-
-// abbott : 2014-07-24 Abbott Laboratories, Inc.
-abbott
-
-// abogado : 2014-04-24 Top Level Domain Holdings Limited
-abogado
-
-// academy : 2013-11-07 Half Oaks, LLC
-academy
-
-// accenture : 2014-08-15 Accenture plc
-accenture
-
-// accountant : 2014-11-20 dot Accountant Limited
-accountant
-
-// accountants : 2014-03-20 Knob Town, LLC
-accountants
-
-// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
-aco
-
-// active : 2014-05-01 The Active Network, Inc
-active
-
-// actor : 2013-12-12 United TLD Holdco Ltd.
-actor
-
-// ads : 2014-12-04 Charleston Road Registry Inc.
-ads
-
-// adult : 2014-10-16 ICM Registry AD LLC
-adult
-
-// aeg : 2015-03-19 Aktiebolaget Electrolux
-aeg
-
-// afl : 2014-10-02 Australian Football League
-afl
-
-// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa
-africa
-
-// africamagic : 2015-03-05 Electronic Media Network (Pty) Ltd
-africamagic
-
-// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-agakhan
-
-// agency : 2013-11-14 Steel Falls, LLC
-agency
-
-// aig : 2014-12-18 American International Group, Inc.
-aig
-
-// airforce : 2014-03-06 United TLD Holdco Ltd.
-airforce
-
-// airtel : 2014-10-24 Bharti Airtel Limited
-airtel
-
-// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-akdn
-
-// alibaba : 2015-01-15 Alibaba Group Holding Limited
-alibaba
-
-// alipay : 2015-01-15 Alibaba Group Holding Limited
-alipay
-
-// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
-allfinanz
-
-// alsace : 2014-07-02 REGION D ALSACE
-alsace
-
-// amsterdam : 2014-07-24 Gemeente Amsterdam
-amsterdam
-
-// analytics : 2014-12-18 Campus IP LLC
-analytics
-
-// android : 2014-08-07 Charleston Road Registry Inc.
-android
-
-// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-anquan
-
-// apartments : 2014-12-11 June Maple, LLC
-apartments
-
-// aquarelle : 2014-07-24 Aquarelle.com
-aquarelle
-
-// aramco : 2014-11-20 Aramco Services Company
-aramco
-
-// archi : 2014-02-06 STARTING DOT LIMITED
-archi
-
-// army : 2014-03-06 United TLD Holdco Ltd.
-army
-
-// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
-arte
-
-// associates : 2014-03-06 Baxter Hill, LLC
-associates
-
-// attorney : 2014-03-20
-attorney
-
-// auction : 2014-03-20
-auction
-
-// audio : 2014-03-20 Uniregistry, Corp.
-audio
-
-// author : 2014-12-18 Amazon EU S.à r.l.
-author
-
-// auto : 2014-11-13 Uniregistry, Corp.
-auto
-
-// autos : 2014-01-09 DERAutos, LLC
-autos
-
-// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
-avianca
-
-// axa : 2013-12-19 AXA SA
-axa
-
-// azure : 2014-12-18 Microsoft Corporation
-azure
-
-// baby : 2015-04-09 Johnson & Johnson Services, Inc.
-baby
-
-// baidu : 2015-01-08 Baidu, Inc.
-baidu
-
-// band : 2014-06-12
-band
-
-// bank : 2014-09-25 fTLD Registry Services LLC
-bank
-
-// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-bar
-
-// barcelona : 2014-07-24 Municipi de Barcelona
-barcelona
-
-// barclaycard : 2014-11-20 Barclays Bank PLC
-barclaycard
-
-// barclays : 2014-11-20 Barclays Bank PLC
-barclays
-
-// bargains : 2013-11-14 Half Hallow, LLC
-bargains
-
-// bauhaus : 2014-04-17 Werkhaus GmbH
-bauhaus
-
-// bayern : 2014-01-23 Bayern Connect GmbH
-bayern
-
-// bbc : 2014-12-18 British Broadcasting Corporation
-bbc
-
-// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
-bbva
-
-// bcg : 2015-04-02 The Boston Consulting Group, Inc.
-bcg
-
-// bcn : 2014-07-24 Municipi de Barcelona
-bcn
-
-// beer : 2014-01-09 Top Level Domain Holdings Limited
-beer
-
-// bentley : 2014-12-18 Bentley Motors Limited
-bentley
-
-// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG
-berlin
-
-// best : 2013-12-19 BestTLD Pty Ltd
-best
-
-// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
-bharti
-
-// bible : 2014-06-19 American Bible Society
-bible
-
-// bid : 2013-12-19 dot Bid Limited
-bid
-
-// bike : 2013-08-27 Grand Hollow, LLC
-bike
-
-// bing : 2014-12-18 Microsoft Corporation
-bing
-
-// bingo : 2014-12-04 Sand Cedar, LLC
-bingo
-
-// bio : 2014-03-06 STARTING DOT LIMITED
-bio
-
-// black : 2014-01-16 Afilias Limited
-black
-
-// blackfriday : 2014-01-16 Uniregistry, Corp.
-blackfriday
-
-// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
-bloomberg
-
-// blue : 2013-11-07 Afilias Limited
-blue
-
-// bms : 2014-10-30 Bristol-Myers Squibb Company
-bms
-
-// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-bmw
-
-// bnl : 2014-07-24 Banca Nazionale del Lavoro
-bnl
-
-// bnpparibas : 2014-05-29 BNP Paribas
-bnpparibas
-
-// boats : 2014-12-04 DERBoats, LLC
-boats
-
-// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-bom
-
-// bond : 2014-06-05 Bond University Limited
-bond
-
-// boo : 2014-01-30 Charleston Road Registry Inc.
-boo
-
-// boots : 2015-01-08 THE BOOTS COMPANY PLC
-boots
-
-// bot : 2014-12-18 Amazon EU S.à r.l.
-bot
-
-// boutique : 2013-11-14 Over Galley, LLC
-boutique
-
-// bradesco : 2014-12-18 Banco Bradesco S.A.
-bradesco
-
-// bridgestone : 2014-12-18 Bridgestone Corporation
-bridgestone
-
-// broadway : 2014-12-22 Celebrate Broadway, Inc.
-broadway
-
-// broker : 2014-12-11 IG Group Holdings PLC
-broker
-
-// brother : 2015-01-29 Brother Industries, Ltd.
-brother
-
-// brussels : 2014-02-06 DNS.be vzw
-brussels
-
-// budapest : 2013-11-21 Top Level Domain Holdings Limited
-budapest
-
-// build : 2013-11-07 Plan Bee LLC
-build
-
-// builders : 2013-11-07 Atomic Madison, LLC
-builders
-
-// business : 2013-11-07 Spring Cross, LLC
-business
-
-// buy : 2014-12-18 Amazon EU S.à r.l.
-buy
-
-// buzz : 2013-10-02 DOTSTRATEGY CO.
-buzz
-
-// bzh : 2014-02-27 Association www.bzh
-bzh
-
-// cab : 2013-10-24 Half Sunset, LLC
-cab
-
-// cafe : 2015-02-11 Pioneer Canyon, LLC
-cafe
-
-// cal : 2014-07-24 Charleston Road Registry Inc.
-cal
-
-// call : 2014-12-18 Amazon EU S.à r.l.
-call
-
-// camera : 2013-08-27 Atomic Maple, LLC
-camera
-
-// camp : 2013-11-07 Delta Dynamite, LLC
-camp
-
-// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
-cancerresearch
-
-// canon : 2014-09-12 Canon Inc.
-canon
-
-// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-capetown
-
-// capital : 2014-03-06 Delta Mill, LLC
-capital
-
-// car : 2015-01-22 Charleston Road Registry Inc.
-car
-
-// caravan : 2013-12-12 Caravan International, Inc.
-caravan
-
-// cards : 2013-12-05 Foggy Hollow, LLC
-cards
-
-// care : 2014-03-06 Goose Cross
-care
-
-// career : 2013-10-09 dotCareer LLC
-career
-
-// careers : 2013-10-02 Wild Corner, LLC
-careers
-
-// cars : 2014-11-13 Uniregistry, Corp.
-cars
-
-// cartier : 2014-06-23 Richemont DNS Inc.
-cartier
-
-// casa : 2013-11-21 Top Level Domain Holdings Limited
-casa
-
-// cash : 2014-03-06 Delta Lake, LLC
-cash
-
-// casino : 2014-12-18 Binky Sky, LLC
-casino
-
-// catering : 2013-12-05 New Falls. LLC
-catering
-
-// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-cba
-
-// cbn : 2014-08-22 The Christian Broadcasting Network, Inc.
-cbn
-
-// ceb : 2015-04-09 The Corporate Executive Board Company
-ceb
-
-// center : 2013-11-07 Tin Mill, LLC
-center
-
-// ceo : 2013-11-07 CEOTLD Pty Ltd
-ceo
-
-// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
-cern
-
-// cfa : 2014-08-28 CFA Institute
-cfa
-
-// cfd : 2014-12-11 IG Group Holdings PLC
-cfd
-
-// chanel : 2015-04-09 Chanel International B.V.
-chanel
-
-// channel : 2014-05-08 Charleston Road Registry Inc.
-channel
-
-// chase : 2015-04-30 JPMorgan Chase & Co.
-chase
-
-// chat : 2014-12-04 Sand Fields, LLC
-chat
-
-// cheap : 2013-11-14 Sand Cover, LLC
-cheap
-
-// chloe : 2014-10-16 Richemont DNS Inc.
-chloe
-
-// christmas : 2013-11-21 Uniregistry, Corp.
-christmas
-
-// chrome : 2014-07-24 Charleston Road Registry Inc.
-chrome
-
-// church : 2014-02-06 Holly Fields, LLC
-church
-
-// cipriani : 2015-02-19 Hotel Cipriani Srl
-cipriani
-
-// circle : 2014-12-18 Amazon EU S.à r.l.
-circle
-
-// cisco : 2014-12-22 Cisco Technology, Inc.
-cisco
-
-// citic : 2014-01-09 CITIC Group Corporation
-citic
-
-// city : 2014-05-29 Snow Sky, LLC
-city
-
-// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc.
-cityeats
-
-// claims : 2014-03-20 Black Corner, LLC
-claims
-
-// cleaning : 2013-12-05 Fox Shadow, LLC
-cleaning
-
-// click : 2014-06-05 Uniregistry, Corp.
-click
-
-// clinic : 2014-03-20 Goose Park, LLC
-clinic
-
-// clothing : 2013-08-27 Steel Lake, LLC
-clothing
-
-// cloud : 2015-04-16 ARUBA S.p.A.
-cloud
-
-// club : 2013-11-08 .CLUB DOMAINS, LLC
-club
-
-// coach : 2014-10-09 Koko Island, LLC
-coach
-
-// codes : 2013-10-31 Puff Willow, LLC
-codes
-
-// coffee : 2013-10-17 Trixy Cover, LLC
-coffee
-
-// college : 2014-01-16 XYZ.COM LLC
-college
-
-// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH
-cologne
-
-// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-commbank
-
-// community : 2013-12-05 Fox Orchard, LLC
-community
-
-// company : 2013-11-07 Silver Avenue, LLC
-company
-
-// computer : 2013-10-24 Pine Mill, LLC
-computer
-
-// comsec : 2015-01-08 VeriSign, Inc.
-comsec
-
-// condos : 2013-12-05 Pine House, LLC
-condos
-
-// construction : 2013-09-16 Fox Dynamite, LLC
-construction
-
-// consulting : 2013-12-05
-consulting
-
-// contact : 2015-01-08 Top Level Spectrum, Inc.
-contact
-
-// contractors : 2013-09-10 Magic Woods, LLC
-contractors
-
-// cooking : 2013-11-21 Top Level Domain Holdings Limited
-cooking
-
-// cool : 2013-11-14 Koko Lake, LLC
-cool
-
-// corsica : 2014-09-25 Collectivité Territoriale de Corse
-corsica
-
-// country : 2013-12-19 Top Level Domain Holdings Limited
-country
-
-// coupon : 2015-02-26 Amazon EU S.à r.l.
-coupon
-
-// coupons : 2015-03-26 Black Island, LLC
-coupons
-
-// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-courses
-
-// credit : 2014-03-20 Snow Shadow, LLC
-credit
-
-// creditcard : 2014-03-20 Binky Frostbite, LLC
-creditcard
-
-// creditunion : 2015-01-22 CUNA Performance Resources, LLC
-creditunion
-
-// cricket : 2014-10-09 dot Cricket Limited
-cricket
-
-// crown : 2014-10-24 Crown Equipment Corporation
-crown
-
-// crs : 2014-04-03 Federated Co-operatives Limited
-crs
-
-// cruises : 2013-12-05 Spring Way, LLC
-cruises
-
-// csc : 2014-09-25 Alliance-One Services, Inc.
-csc
-
-// cuisinella : 2014-04-03 SALM S.A.S.
-cuisinella
-
-// cymru : 2014-05-08 Nominet UK
-cymru
-
-// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
-cyou
-
-// dabur : 2014-02-06 Dabur India Limited
-dabur
-
-// dad : 2014-01-23 Charleston Road Registry Inc.
-dad
-
-// dance : 2013-10-24 United TLD Holdco Ltd.
-dance
-
-// date : 2014-11-20 dot Date Limited
-date
-
-// dating : 2013-12-05 Pine Fest, LLC
-dating
-
-// datsun : 2014-03-27 NISSAN MOTOR CO., LTD.
-datsun
-
-// day : 2014-01-30 Charleston Road Registry Inc.
-day
-
-// dclk : 2014-11-20 Charleston Road Registry Inc.
-dclk
-
-// dealer : 2014-12-22 Dealer Dot Com, Inc.
-dealer
-
-// deals : 2014-05-22 Sand Sunset, LLC
-deals
-
-// degree : 2014-03-06
-degree
-
-// delivery : 2014-09-11 Steel Station, LLC
-delivery
-
-// dell : 2014-10-24 Dell Inc.
-dell
-
-// delta : 2015-02-19 Delta Air Lines, Inc.
-delta
-
-// democrat : 2013-10-24 United TLD Holdco Ltd.
-democrat
-
-// dental : 2014-03-20 Tin Birch, LLC
-dental
-
-// dentist : 2014-03-20
-dentist
-
-// desi : 2013-11-14 Desi Networks LLC
-desi
-
-// design : 2014-11-07 Top Level Design, LLC
-design
-
-// dev : 2014-10-16 Charleston Road Registry Inc.
-dev
-
-// diamonds : 2013-09-22 John Edge, LLC
-diamonds
-
-// diet : 2014-06-26 Uniregistry, Corp.
-diet
-
-// digital : 2014-03-06 Dash Park, LLC
-digital
-
-// direct : 2014-04-10 Half Trail, LLC
-direct
-
-// directory : 2013-09-20 Extra Madison, LLC
-directory
-
-// discount : 2014-03-06 Holly Hill, LLC
-discount
-
-// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
-dnp
-
-// docs : 2014-10-16 Charleston Road Registry Inc.
-docs
-
-// dog : 2014-12-04 Koko Mill, LLC
-dog
-
-// doha : 2014-09-18 Communications Regulatory Authority (CRA)
-doha
-
-// domains : 2013-10-17 Sugar Cross, LLC
-domains
-
-// doosan : 2014-04-03 Doosan Corporation
-doosan
-
-// download : 2014-11-20 dot Support Limited
-download
-
-// drive : 2015-03-05 Charleston Road Registry Inc.
-drive
-
-// dstv : 2015-03-12 MultiChoice (Proprietary) Limited
-dstv
-
-// dubai : 2015-01-01 Dubai Smart Government Department
-dubai
-
-// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-durban
-
-// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-dvag
-
-// earth : 2014-12-04 Interlink Co., Ltd.
-earth
-
-// eat : 2014-01-23 Charleston Road Registry Inc.
-eat
-
-// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V.
-edeka
-
-// education : 2013-11-07 Brice Way, LLC
-education
-
-// email : 2013-10-31 Spring Madison, LLC
-email
-
-// emerck : 2014-04-03 Merck KGaA
-emerck
-
-// energy : 2014-09-11 Binky Birch, LLC
-energy
-
-// engineer : 2014-03-06 United TLD Holdco Ltd.
-engineer
-
-// engineering : 2014-03-06 Romeo Canyon
-engineering
-
-// enterprises : 2013-09-20 Snow Oaks, LLC
-enterprises
-
-// epson : 2014-12-04 Seiko Epson Corporation
-epson
-
-// equipment : 2013-08-27 Corn Station, LLC
-equipment
-
-// erni : 2014-04-03 ERNI Group Holding AG
-erni
-
-// esq : 2014-05-08 Charleston Road Registry Inc.
-esq
-
-// estate : 2013-08-27 Trixy Park, LLC
-estate
-
-// eurovision : 2014-04-24 European Broadcasting Union (EBU)
-eurovision
-
-// eus : 2013-12-12 Puntueus Fundazioa
-eus
-
-// events : 2013-12-05 Pioneer Maple, LLC
-events
-
-// everbank : 2014-05-15 EverBank
-everbank
-
-// exchange : 2014-03-06 Spring Falls, LLC
-exchange
-
-// expert : 2013-11-21 Magic Pass, LLC
-expert
-
-// exposed : 2013-12-05 Victor Beach, LLC
-exposed
-
-// express : 2015-02-11 Sea Sunset, LLC
-express
-
-// fage : 2014-12-18 Fage International S.A.
-fage
-
-// fail : 2014-03-06 Atomic Pipe, LLC
-fail
-
-// fairwinds : 2014-11-13 FairWinds Partners, LLC
-fairwinds
-
-// faith : 2014-11-20 dot Faith Limited
-faith
-
-// family : 2015-04-02 Bitter Galley, LLC
-family
-
-// fan : 2014-03-06
-fan
-
-// fans : 2014-11-07 Asiamix Digital Limited
-fans
-
-// farm : 2013-11-07 Just Maple, LLC
-farm
-
-// fashion : 2014-07-03 Top Level Domain Holdings Limited
-fashion
-
-// fast : 2014-12-18 Amazon EU S.à r.l.
-fast
-
-// feedback : 2013-12-19 Top Level Spectrum, Inc.
-feedback
-
-// ferrero : 2014-12-18 Ferrero Trading Lux S.A.
-ferrero
-
-// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd
-film
-
-// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-final
-
-// finance : 2014-03-20 Cotton Cypress, LLC
-finance
-
-// financial : 2014-03-06 Just Cover, LLC
-financial
-
-// firestone : 2014-12-18 Bridgestone Corporation
-firestone
-
-// firmdale : 2014-03-27 Firmdale Holdings Limited
-firmdale
-
-// fish : 2013-12-12 Fox Woods, LLC
-fish
-
-// fishing : 2013-11-21 Top Level Domain Holdings Limited
-fishing
-
-// fit : 2014-11-07 Top Level Domain Holdings Limited
-fit
-
-// fitness : 2014-03-06 Brice Orchard, LLC
-fitness
-
-// flickr : 2015-04-02 Yahoo! Domain Services Inc.
-flickr
-
-// flights : 2013-12-05 Fox Station, LLC
-flights
-
-// florist : 2013-11-07 Half Cypress, LLC
-florist
-
-// flowers : 2014-10-09 Uniregistry, Corp.
-flowers
-
-// flsmidth : 2014-07-24 FLSmidth A/S
-flsmidth
-
-// fly : 2014-05-08 Charleston Road Registry Inc.
-fly
-
-// foo : 2014-01-23 Charleston Road Registry Inc.
-foo
-
-// football : 2014-12-18 Foggy Farms, LLC
-football
-
-// ford : 2014-11-13 Ford Motor Company
-ford
-
-// forex : 2014-12-11 IG Group Holdings PLC
-forex
-
-// forsale : 2014-05-22
-forsale
-
-// forum : 2015-04-02 Fegistry, LLC
-forum
-
-// foundation : 2013-12-05 John Dale, LLC
-foundation
-
-// frl : 2014-05-15 FRLregistry B.V.
-frl
-
-// frogans : 2013-12-19 OP3FT
-frogans
-
-// frontier : 2015-02-05 Frontier Communications Corporation
-frontier
-
-// fund : 2014-03-20 John Castle, LLC
-fund
-
-// furniture : 2014-03-20 Lone Fields, LLC
-furniture
-
-// futbol : 2013-09-20
-futbol
-
-// fyi : 2015-04-02 Silver Tigers, LLC
-fyi
-
-// gal : 2013-11-07 Asociación puntoGAL
-gal
-
-// gallery : 2013-09-13 Sugar House, LLC
-gallery
-
-// gallup : 2015-02-19 Gallup, Inc.
-gallup
-
-// garden : 2014-06-26 Top Level Domain Holdings Limited
-garden
-
-// gbiz : 2014-07-17 Charleston Road Registry Inc.
-gbiz
-
-// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems"
-gdn
-
-// gea : 2014-12-04 GEA Group Aktiengesellschaft
-gea
-
-// gent : 2014-01-23 COMBELL GROUP NV/SA
-gent
-
-// genting : 2015-03-12 Resorts World Inc Pte. Ltd.
-genting
-
-// ggee : 2014-01-09 GMO Internet, Inc.
-ggee
-
-// gift : 2013-10-17 Uniregistry, Corp.
-gift
-
-// gifts : 2014-07-03 Goose Sky, LLC
-gifts
-
-// gives : 2014-03-06 United TLD Holdco Ltd.
-gives
-
-// giving : 2014-11-13 Giving Limited
-giving
-
-// glass : 2013-11-07 Black Cover, LLC
-glass
-
-// gle : 2014-07-24 Charleston Road Registry Inc.
-gle
-
-// global : 2014-04-17 Dot GLOBAL AS
-global
-
-// globo : 2013-12-19 Globo Comunicação e Participações S.A
-globo
-
-// gmail : 2014-05-01 Charleston Road Registry Inc.
-gmail
-
-// gmo : 2014-01-09 GMO Internet, Inc.
-gmo
-
-// gmx : 2014-04-24 1&1 Mail & Media GmbH
-gmx
-
-// gold : 2015-01-22 June Edge, LLC
-gold
-
-// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-goldpoint
-
-// golf : 2014-12-18 Lone falls, LLC
-golf
-
-// goo : 2014-12-18 NTT Resonant Inc.
-goo
-
-// goog : 2014-11-20 Charleston Road Registry Inc.
-goog
-
-// google : 2014-07-24 Charleston Road Registry Inc.
-google
-
-// gop : 2014-01-16 Republican State Leadership Committee, Inc.
-gop
-
-// got : 2014-12-18 Amazon EU S.à r.l.
-got
-
-// gotv : 2015-03-12 MultiChoice (Proprietary) Limited
-gotv
-
-// graphics : 2013-09-13 Over Madison, LLC
-graphics
-
-// gratis : 2014-03-20 Pioneer Tigers, LLC
-gratis
-
-// green : 2014-05-08 Afilias Limited
-green
-
-// gripe : 2014-03-06 Corn Sunset, LLC
-gripe
-
-// group : 2014-08-15 Romeo Town, LLC
-group
-
-// gucci : 2014-11-13 Guccio Gucci S.p.a.
-gucci
-
-// guge : 2014-08-28 Charleston Road Registry Inc.
-guge
-
-// guide : 2013-09-13 Snow Moon, LLC
-guide
-
-// guitars : 2013-11-14 Uniregistry, Corp.
-guitars
-
-// guru : 2013-08-27 Pioneer Cypress, LLC
-guru
-
-// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
-hamburg
-
-// hangout : 2014-11-13 Charleston Road Registry Inc.
-hangout
-
-// haus : 2013-12-05
-haus
-
-// hdfcbank : 2015-02-12 HDFC Bank Limited
-hdfcbank
-
-// health : 2015-02-11 DotHealth, LLC
-health
-
-// healthcare : 2014-06-12 Silver Glen, LLC
-healthcare
-
-// help : 2014-06-26 Uniregistry, Corp.
-help
-
-// helsinki : 2015-02-05 City of Helsinki
-helsinki
-
-// here : 2014-02-06 Charleston Road Registry Inc.
-here
-
-// hermes : 2014-07-10 HERMES INTERNATIONAL
-hermes
-
-// hiphop : 2014-03-06 Uniregistry, Corp.
-hiphop
-
-// hitachi : 2014-10-31 Hitachi, Ltd.
-hitachi
-
-// hiv : 2014-03-13 dotHIV gemeinnuetziger e.V.
-hiv
-
-// hockey : 2015-03-19 Half Willow, LLC
-hockey
-
-// holdings : 2013-08-27 John Madison, LLC
-holdings
-
-// holiday : 2013-11-07 Goose Woods, LLC
-holiday
-
-// homedepot : 2015-04-02 Homer TLC, Inc.
-homedepot
-
-// homes : 2014-01-09 DERHomes, LLC
-homes
-
-// honda : 2014-12-18 Honda Motor Co., Ltd.
-honda
-
-// horse : 2013-11-21 Top Level Domain Holdings Limited
-horse
-
-// host : 2014-04-17 DotHost Inc.
-host
-
-// hosting : 2014-05-29 Uniregistry, Corp.
-hosting
-
-// hoteles : 2015-03-05 Travel Reservations SRL
-hoteles
-
-// hotmail : 2014-12-18 Microsoft Corporation
-hotmail
-
-// house : 2013-11-07 Sugar Park, LLC
-house
-
-// how : 2014-01-23 Charleston Road Registry Inc.
-how
-
-// hsbc : 2014-10-24 HSBC Holdings PLC
-hsbc
-
-// htc : 2015-04-02 HTC corporation
-htc
-
-// ibm : 2014-07-31 International Business Machines Corporation
-ibm
-
-// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited
-icbc
-
-// ice : 2014-10-30 IntercontinentalExchange, Inc.
-ice
-
-// icu : 2015-01-08 One.com A/S
-icu
-
-// ifm : 2014-01-30 ifm electronic gmbh
-ifm
-
-// iinet : 2014-07-03 Connect West Pty. Ltd.
-iinet
-
-// immo : 2014-07-10 Auburn Bloom, LLC
-immo
-
-// immobilien : 2013-11-07 United TLD Holdco Ltd.
-immobilien
-
-// industries : 2013-12-05 Outer House, LLC
-industries
-
-// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD.
-infiniti
-
-// ing : 2014-01-23 Charleston Road Registry Inc.
-ing
-
-// ink : 2013-12-05 Top Level Design, LLC
-ink
-
-// institute : 2013-11-07 Outer Maple, LLC
-institute
-
-// insurance : 2015-02-19 fTLD Registry Services LLC
-insurance
-
-// insure : 2014-03-20 Pioneer Willow, LLC
-insure
-
-// international : 2013-11-07 Wild Way, LLC
-international
-
-// investments : 2014-03-20 Holly Glen, LLC
-investments
-
-// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A.
-ipiranga
-
-// irish : 2014-08-07 Dot-Irish LLC
-irish
-
-// iselect : 2015-02-11 iSelect Ltd
-iselect
-
-// ist : 2014-08-28 Istanbul Metropolitan Municipality
-ist
-
-// istanbul : 2014-08-28 Istanbul Metropolitan Municipality
-istanbul
-
-// itau : 2014-10-02 Itau Unibanco Holding S.A.
-itau
-
-// iwc : 2014-06-23 Richemont DNS Inc.
-iwc
-
-// jaguar : 2014-11-13 Jaguar Land Rover Ltd
-jaguar
-
-// java : 2014-06-19 Oracle Corporation
-java
-
-// jcb : 2014-11-20 JCB Co., Ltd.
-jcb
-
-// jcp : 2015-04-23 JCP Media, Inc.
-jcp
-
-// jetzt : 2014-01-09 New TLD Company AB
-jetzt
-
-// jewelry : 2015-03-05 Wild Bloom, LLC
-jewelry
-
-// jio : 2015-04-02 Affinity Names, Inc.
-jio
-
-// jlc : 2014-12-04 Richemont DNS Inc.
-jlc
-
-// jll : 2015-04-02 Jones Lang LaSalle Incorporated
-jll
-
-// jmp : 2015-03-26 Matrix IP LLC
-jmp
-
-// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-joburg
-
-// jot : 2014-12-18 Amazon EU S.à r.l.
-jot
-
-// joy : 2014-12-18 Amazon EU S.à r.l.
-joy
-
-// jpmorgan : 2015-04-30 JPMorgan Chase & Co.
-jpmorgan
-
-// jprs : 2014-09-18 Japan Registry Services Co., Ltd.
-jprs
-
-// juegos : 2014-03-20 Uniregistry, Corp.
-juegos
-
-// kaufen : 2013-11-07 United TLD Holdco Ltd.
-kaufen
-
-// kddi : 2014-09-12 KDDI CORPORATION
-kddi
-
-// kerryhotels : 2015-04-30 Kerry Trading Co. Limited
-kerryhotels
-
-// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited
-kerrylogistics
-
-// kerryproperties : 2015-04-09 Kerry Trading Co. Limited
-kerryproperties
-
-// kfh : 2014-12-04 Kuwait Finance House
-kfh
-
-// kim : 2013-09-23 Afilias Limited
-kim
-
-// kinder : 2014-11-07 Ferrero Trading Lux S.A.
-kinder
-
-// kitchen : 2013-09-20 Just Goodbye, LLC
-kitchen
-
-// kiwi : 2013-09-20 DOT KIWI LIMITED
-kiwi
-
-// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH
-koeln
-
-// komatsu : 2015-01-08 Komatsu Ltd.
-komatsu
-
-// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft)
-kpmg
-
-// kpn : 2015-01-08 Koninklijke KPN N.V.
-kpn
-
-// krd : 2013-12-05 KRG Department of Information Technology
-krd
-
-// kred : 2013-12-19 KredTLD Pty Ltd
-kred
-
-// kuokgroup : 2015-04-09 Kerry Trading Co. Limited
-kuokgroup
-
-// kyknet : 2015-03-05 Electronic Media Network (Pty) Ltd
-kyknet
-
-// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
-kyoto
-
-// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
-lacaixa
-
-// lancaster : 2015-02-12 LANCASTER
-lancaster
-
-// land : 2013-09-10 Pine Moon, LLC
-land
-
-// landrover : 2014-11-13 Jaguar Land Rover Ltd
-landrover
-
-// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated
-lasalle
-
-// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico
-lat
-
-// latrobe : 2014-06-16 La Trobe University
-latrobe
-
-// law : 2015-01-22 Minds + Machines Group Limited
-law
-
-// lawyer : 2014-03-20
-lawyer
-
-// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant")
-lds
-
-// lease : 2014-03-06 Victor Trail, LLC
-lease
-
-// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
-leclerc
-
-// legal : 2014-10-16 Blue Falls, LLC
-legal
-
-// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
-lexus
-
-// lgbt : 2014-05-08 Afilias Limited
-lgbt
-
-// liaison : 2014-10-02 Liaison Technologies, Incorporated
-liaison
-
-// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-lidl
-
-// life : 2014-02-06 Trixy Oaks, LLC
-life
-
-// lifeinsurance : 2015-01-15 American Council of Life Insurers
-lifeinsurance
-
-// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc.
-lifestyle
-
-// lighting : 2013-08-27 John McCook, LLC
-lighting
-
-// like : 2014-12-18 Amazon EU S.à r.l.
-like
-
-// limited : 2014-03-06 Big Fest, LLC
-limited
-
-// limo : 2013-10-17 Hidden Frostbite, LLC
-limo
-
-// lincoln : 2014-11-13 Ford Motor Company
-lincoln
-
-// linde : 2014-12-04 Linde Aktiengesellschaft
-linde
-
-// link : 2013-11-14 Uniregistry, Corp.
-link
-
-// live : 2014-12-04 Half Woods, LLC
-live
-
-// lixil : 2015-03-19 LIXIL Group Corporation
-lixil
-
-// loan : 2014-11-20 dot Loan Limited
-loan
-
-// loans : 2014-03-20 June Woods, LLC
-loans
-
-// lol : 2015-01-30 Uniregistry, Corp.
-lol
-
-// london : 2013-11-14 Dot London Domains Limited
-london
-
-// lotte : 2014-11-07 Lotte Holdings Co., Ltd.
-lotte
-
-// lotto : 2014-04-10 Afilias Limited
-lotto
-
-// love : 2014-12-22 Merchant Law Group LLP
-love
-
-// ltd : 2014-09-25 Over Corner, LLC
-ltd
-
-// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA
-ltda
-
-// lupin : 2014-11-07 LUPIN LIMITED
-lupin
-
-// luxe : 2014-01-09 Top Level Domain Holdings Limited
-luxe
-
-// luxury : 2013-10-17 Luxury Partners, LLC
-luxury
-
-// madrid : 2014-05-01 Comunidad de Madrid
-madrid
-
-// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF)
-maif
-
-// maison : 2013-12-05 Victor Frostbite, LLC
-maison
-
-// makeup : 2015-01-15 L'Oréal
-makeup
-
-// man : 2014-12-04 MAN SE
-man
-
-// management : 2013-11-07 John Goodbye, LLC
-management
-
-// mango : 2013-10-24 PUNTO FA S.L.
-mango
-
-// market : 2014-03-06
-market
-
-// marketing : 2013-11-07 Fern Pass, LLC
-marketing
-
-// markets : 2014-12-11 IG Group Holdings PLC
-markets
-
-// marriott : 2014-10-09 Marriott Worldwide Corporation
-marriott
-
-// mba : 2015-04-02 Lone Hollow, LLC
-mba
-
-// media : 2014-03-06 Grand Glen, LLC
-media
-
-// meet : 2014-01-16
-meet
-
-// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation
-melbourne
-
-// meme : 2014-01-30 Charleston Road Registry Inc.
-meme
-
-// memorial : 2014-10-16 Dog Beach, LLC
-memorial
-
-// men : 2015-02-26 Exclusive Registry Limited
-men
-
-// menu : 2013-09-11 Wedding TLD2, LLC
-menu
-
-// meo : 2014-11-07 PT Comunicacoes S.A.
-meo
-
-// miami : 2013-12-19 Top Level Domain Holdings Limited
-miami
-
-// microsoft : 2014-12-18 Microsoft Corporation
-microsoft
-
-// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-mini
-
-// mls : 2015-04-23 The Canadian Real Estate Association
-mls
-
-// mma : 2014-11-07 MMA IARD
-mma
-
-// mnet : 2015-03-05 Electronic Media Network (Pty) Ltd
-mnet
-
-// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L.
-mobily
-
-// moda : 2013-11-07 United TLD Holdco Ltd.
-moda
-
-// moe : 2013-11-13 Interlink Co., Ltd.
-moe
-
-// moi : 2014-12-18 Amazon EU S.à r.l.
-moi
-
-// mom : 2015-04-16 Uniregistry, Corp.
-mom
-
-// monash : 2013-09-30 Monash University
-monash
-
-// money : 2014-10-16 Outer McCook, LLC
-money
-
-// montblanc : 2014-06-23 Richemont DNS Inc.
-montblanc
-
-// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
-mormon
-
-// mortgage : 2014-03-20
-mortgage
-
-// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-moscow
-
-// motorcycles : 2014-01-09 DERMotorcycles, LLC
-motorcycles
-
-// mov : 2014-01-30 Charleston Road Registry Inc.
-mov
-
-// movie : 2015-02-05 New Frostbite, LLC
-movie
-
-// movistar : 2014-10-16 Telefónica S.A.
-movistar
-
-// mtn : 2014-12-04 MTN Dubai Limited
-mtn
-
-// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation
-mtpc
-
-// mtr : 2015-03-12 MTR Corporation Limited
-mtr
-
-// multichoice : 2015-03-12 MultiChoice (Proprietary) Limited
-multichoice
-
-// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC
-mutual
-
-// mzansimagic : 2015-03-05 Electronic Media Network (Pty) Ltd
-mzansimagic
-
-// nadex : 2014-12-11 IG Group Holdings PLC
-nadex
-
-// nagoya : 2013-10-24 GMO Registry, Inc.
-nagoya
-
-// naspers : 2015-02-12 Intelprop (Proprietary) Limited
-naspers
-
-// natura : 2015-03-12 NATURA COSMÉTICOS S.A.
-natura
-
-// navy : 2014-03-06 United TLD Holdco Ltd.
-navy
-
-// nec : 2015-01-08 NEC Corporation
-nec
-
-// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-netbank
-
-// network : 2013-11-14 Trixy Manor, LLC
-network
-
-// neustar : 2013-12-05 NeuStar, Inc.
-neustar
-
-// new : 2014-01-30 Charleston Road Registry Inc.
-new
-
-// news : 2014-12-18
-news
-
-// nexus : 2014-07-24 Charleston Road Registry Inc.
-nexus
-
-// ngo : 2014-03-06 Public Interest Registry
-ngo
-
-// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK)
-nhk
-
-// nico : 2014-12-04 DWANGO Co., Ltd.
-nico
-
-// ninja : 2013-11-07 United TLD Holdco Ltd.
-ninja
-
-// nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
-nissan
-
-// nokia : 2015-01-08 Nokia Corporation
-nokia
-
-// norton : 2014-12-04 Symantec Corporation
-norton
-
-// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-nowruz
-
-// nra : 2014-05-22 NRA Holdings Company, INC.
-nra
-
-// nrw : 2013-11-21 Minds + Machines GmbH
-nrw
-
-// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION
-ntt
-
-// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications
-nyc
-
-// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA
-obi
-
-// observer : 2015-04-30 Guardian News and Media Limited
-observer
-
-// office : 2015-03-12 Microsoft Corporation
-office
-
-// okinawa : 2013-12-05 BusinessRalliart Inc.
-okinawa
-
-// omega : 2015-01-08 The Swatch Group Ltd
-omega
-
-// one : 2014-11-07 One.com A/S
-one
-
-// ong : 2014-03-06 Public Interest Registry
-ong
-
-// onl : 2013-09-16 I-Registry Ltd.
-onl
-
-// online : 2015-01-15 DotOnline Inc.
-online
-
-// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED
-ooo
-
-// oracle : 2014-06-19 Oracle Corporation
-oracle
-
-// orange : 2015-03-12 Orange Brand Services Limited
-orange
-
-// organic : 2014-03-27 Afilias Limited
-organic
-
-// orientexpress : 2015-02-05 Belmond Ltd.
-orientexpress
-
-// osaka : 2014-09-04 Interlink Co., Ltd.
-osaka
-
-// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd.
-otsuka
-
-// ovh : 2014-01-16 OVH SAS
-ovh
-
-// page : 2014-12-04 Charleston Road Registry Inc.
-page
-
-// pamperedchef : 2015-02-05 The Pampered Chef, Ltd.
-pamperedchef
-
-// panerai : 2014-11-07 Richemont DNS Inc.
-panerai
-
-// paris : 2014-01-30 City of Paris
-paris
-
-// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-pars
-
-// partners : 2013-12-05 Magic Glen, LLC
-partners
-
-// parts : 2013-12-05 Sea Goodbye, LLC
-parts
-
-// party : 2014-09-11 Blue Sky Registry Limited
-party
-
-// passagens : 2015-03-05 Travel Reservations SRL
-passagens
-
-// payu : 2015-02-12 MIH PayU B.V.
-payu
-
-// pharmacy : 2014-06-19 National Association of Boards of Pharmacy
-pharmacy
-
-// philips : 2014-11-07 Koninklijke Philips N.V.
-philips
-
-// photo : 2013-11-14 Uniregistry, Corp.
-photo
-
-// photography : 2013-09-20 Sugar Glen, LLC
-photography
-
-// photos : 2013-10-17 Sea Corner, LLC
-photos
-
-// physio : 2014-05-01 PhysBiz Pty Ltd
-physio
-
-// piaget : 2014-10-16 Richemont DNS Inc.
-piaget
-
-// pics : 2013-11-14 Uniregistry, Corp.
-pics
-
-// pictet : 2014-06-26 Pictet Europe S.A.
-pictet
-
-// pictures : 2014-03-06 Foggy Sky, LLC
-pictures
-
-// pid : 2015-01-08 Top Level Spectrum, Inc.
-pid
-
-// pin : 2014-12-18 Amazon EU S.à r.l.
-pin
-
-// pink : 2013-10-01 Afilias Limited
-pink
-
-// pizza : 2014-06-26 Foggy Moon, LLC
-pizza
-
-// place : 2014-04-24 Snow Galley, LLC
-place
-
-// play : 2015-03-05 Charleston Road Registry Inc.
-play
-
-// plumbing : 2013-09-10 Spring Tigers, LLC
-plumbing
-
-// plus : 2015-02-05 Sugar Mill, LLC
-plus
-
-// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-pohl
-
-// poker : 2014-07-03 Afilias Domains No. 5 Limited
-poker
-
-// porn : 2014-10-16 ICM Registry PN LLC
-porn
-
-// praxi : 2013-12-05 Praxi S.p.A.
-praxi
-
-// press : 2014-04-03 DotPress Inc.
-press
-
-// prod : 2014-01-23 Charleston Road Registry Inc.
-prod
-
-// productions : 2013-12-05 Magic Birch, LLC
-productions
-
-// prof : 2014-07-24 Charleston Road Registry Inc.
-prof
-
-// promo : 2014-12-18 Play.PROMO Oy
-promo
-
-// properties : 2013-12-05 Big Pass, LLC
-properties
-
-// property : 2014-05-22 Uniregistry, Corp.
-property
-
-// protection : 2015-04-23 Symantec Corporation
-protection
-
-// pub : 2013-12-12 United TLD Holdco Ltd.
-pub
-
-// qpon : 2013-11-14 dotCOOL, Inc.
-qpon
-
-// quebec : 2013-12-19 PointQuébec Inc
-quebec
-
-// quest : 2015-03-26 Quest ION Limited
-quest
-
-// racing : 2014-12-04 Premier Registry Limited
-racing
-
-// read : 2014-12-18 Amazon EU S.à r.l.
-read
-
-// realtor : 2014-05-29 Real Estate Domains LLC
-realtor
-
-// realty : 2015-03-19 Fegistry, LLC
-realty
-
-// recipes : 2013-10-17 Grand Island, LLC
-recipes
-
-// red : 2013-11-07 Afilias Limited
-red
-
-// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
-redstone
-
-// redumbrella : 2015-03-26 Travelers TLD, LLC
-redumbrella
-
-// rehab : 2014-03-06 United TLD Holdco Ltd.
-rehab
-
-// reise : 2014-03-13 dotreise GmbH
-reise
-
-// reisen : 2014-03-06 New Cypress, LLC
-reisen
-
-// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc.
-reit
-
-// reliance : 2015-04-02 Reliance Industries Limited
-reliance
-
-// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd.
-ren
-
-// rent : 2014-12-04 DERRent, LLC
-rent
-
-// rentals : 2013-12-05 Big Hollow,LLC
-rentals
-
-// repair : 2013-11-07 Lone Sunset, LLC
-repair
-
-// report : 2013-12-05 Binky Glen, LLC
-report
-
-// republican : 2014-03-20 United TLD Holdco Ltd.
-republican
-
-// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-rest
-
-// restaurant : 2014-07-03 Snow Avenue, LLC
-restaurant
-
-// review : 2014-11-20 dot Review Limited
-review
-
-// reviews : 2013-09-13
-reviews
-
-// rich : 2013-11-21 I-Registry Ltd.
-rich
-
-// ricoh : 2014-11-20 Ricoh Company, Ltd.
-ricoh
-
-// ril : 2015-04-02 Reliance Industries Limited
-ril
-
-// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO
-rio
-
-// rip : 2014-07-10 United TLD Holdco Ltd.
-rip
-
-// rocher : 2014-12-18 Ferrero Trading Lux S.A.
-rocher
-
-// rocks : 2013-11-14
-rocks
-
-// rodeo : 2013-12-19 Top Level Domain Holdings Limited
-rodeo
-
-// room : 2014-12-18 Amazon EU S.à r.l.
-room
-
-// rsvp : 2014-05-08 Charleston Road Registry Inc.
-rsvp
-
-// ruhr : 2013-10-02 regiodot GmbH & Co. KG
-ruhr
-
-// run : 2015-03-19 Snow Park, LLC
-run
-
-// rwe : 2015-04-02 RWE AG
-rwe
-
-// ryukyu : 2014-01-09 BusinessRalliart Inc.
-ryukyu
-
-// saarland : 2013-12-12 dotSaarland GmbH
-saarland
-
-// safe : 2014-12-18 Amazon EU S.à r.l.
-safe
-
-// safety : 2015-01-08 Safety Registry Services, LLC.
-safety
-
-// sakura : 2014-12-18 SAKURA Internet Inc.
-sakura
-
-// sale : 2014-10-16
-sale
-
-// salon : 2014-12-11 Outer Orchard, LLC
-salon
-
-// samsung : 2014-04-03 SAMSUNG SDS CO., LTD
-samsung
-
-// sandvik : 2014-11-13 Sandvik AB
-sandvik
-
-// sandvikcoromant : 2014-11-07 Sandvik AB
-sandvikcoromant
-
-// sanofi : 2014-10-09 Sanofi
-sanofi
-
-// sap : 2014-03-27 SAP AG
-sap
-
-// sapo : 2014-11-07 PT Comunicacoes S.A.
-sapo
-
-// sarl : 2014-07-03 Delta Orchard, LLC
-sarl
-
-// sas : 2015-04-02 Research IP LLC
-sas
-
-// saxo : 2014-10-31 Saxo Bank A/S
-saxo
-
-// sbi : 2015-03-12 STATE BANK OF INDIA
-sbi
-
-// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION
-sbs
-
-// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)
-sca
-
-// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB")
-scb
-
-// schmidt : 2014-04-03 SALM S.A.S.
-schmidt
-
-// scholarships : 2014-04-24 Scholarships.com, LLC
-scholarships
-
-// school : 2014-12-18 Little Galley, LLC
-school
-
-// schule : 2014-03-06 Outer Moon, LLC
-schule
-
-// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-schwarz
-
-// science : 2014-09-11 dot Science Limited
-science
-
-// scor : 2014-10-31 SCOR SE
-scor
-
-// scot : 2014-01-23 Dot Scot Registry Limited
-scot
-
-// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal)
-seat
-
-// seek : 2014-12-04 Seek Limited
-seek
-
-// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A.
-sener
-
-// services : 2014-02-27 Fox Castle, LLC
-services
-
-// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
-sew
-
-// sex : 2014-11-13 ICM Registry SX LLC
-sex
-
-// sexy : 2013-09-11 Uniregistry, Corp.
-sexy
-
-// sharp : 2014-05-01 Sharp Corporation
-sharp
-
-// shaw : 2015-04-23 Shaw Cablesystems G.P.
-shaw
-
-// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-shia
-
-// shiksha : 2013-11-14 Afilias Limited
-shiksha
-
-// shoes : 2013-10-02 Binky Galley, LLC
-shoes
-
-// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-shouji
-
-// show : 2015-03-05 Snow Beach, LLC
-show
-
-// shriram : 2014-01-23 Shriram Capital Ltd.
-shriram
-
-// sina : 2015-03-12 Sina Corporation
-sina
-
-// singles : 2013-08-27 Fern Madison, LLC
-singles
-
-// site : 2015-01-15 DotSite Inc.
-site
-
-// ski : 2015-04-09 STARTING DOT LIMITED
-ski
-
-// skin : 2015-01-15 L'Oréal
-skin
-
-// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
-sky
-
-// skype : 2014-12-18 Microsoft Corporation
-skype
-
-// smile : 2014-12-18 Amazon EU S.à r.l.
-smile
-
-// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
-sncf
-
-// soccer : 2015-03-26 Foggy Shadow, LLC
-soccer
-
-// social : 2013-11-07 United TLD Holdco Ltd.
-social
-
-// software : 2014-03-20
-software
-
-// sohu : 2013-12-19 Sohu.com Limited
-sohu
-
-// solar : 2013-11-07 Ruby Town, LLC
-solar
-
-// solutions : 2013-11-07 Silver Cover, LLC
-solutions
-
-// song : 2015-02-26 Amazon EU S.à r.l.
-song
-
-// sony : 2015-01-08 Sony Corporation
-sony
-
-// soy : 2014-01-23 Charleston Road Registry Inc.
-soy
-
-// space : 2014-04-03 DotSpace Inc.
-space
-
-// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
-spiegel
-
-// spot : 2015-02-26 Amazon EU S.à r.l.
-spot
-
-// spreadbetting : 2014-12-11 IG Group Holdings PLC
-spreadbetting
-
-// stada : 2014-11-13 STADA Arzneimittel AG
-stada
-
-// star : 2015-01-08 Star India Private Limited
-star
-
-// starhub : 2015-02-05 StarHub Limited
-starhub
-
-// statebank : 2015-03-12 STATE BANK OF INDIA
-statebank
-
-// statoil : 2014-12-04 Statoil ASA
-statoil
-
-// stc : 2014-10-09 Saudi Telecom Company
-stc
-
-// stcgroup : 2014-10-09 Saudi Telecom Company
-stcgroup
-
-// stockholm : 2014-12-18 Stockholms kommun
-stockholm
-
-// storage : 2014-12-22 Self Storage Company LLC
-storage
-
-// store : 2015-04-09 DotStore Inc.
-store
-
-// studio : 2015-02-11 Spring Goodbye, LLC
-studio
-
-// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-study
-
-// style : 2014-12-04 Binky Moon, LLC
-style
-
-// sucks : 2014-12-22 Vox Populi Registry Inc.
-sucks
-
-// supersport : 2015-03-05 SuperSport International Holdings Proprietary Limited
-supersport
-
-// supplies : 2013-12-19 Atomic Fields, LLC
-supplies
-
-// supply : 2013-12-19 Half Falls, LLC
-supply
-
-// support : 2013-10-24 Grand Orchard, LLC
-support
-
-// surf : 2014-01-09 Top Level Domain Holdings Limited
-surf
-
-// surgery : 2014-03-20 Tin Avenue, LLC
-surgery
-
-// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION
-suzuki
-
-// swatch : 2015-01-08 The Swatch Group Ltd
-swatch
-
-// swiss : 2014-10-16 Swiss Confederation
-swiss
-
-// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet
-sydney
-
-// symantec : 2014-12-04 Symantec Corporation
-symantec
-
-// systems : 2013-11-07 Dash Cypress, LLC
-systems
-
-// tab : 2014-12-04 Tabcorp Holdings Limited
-tab
-
-// taipei : 2014-07-10 Taipei City Government
-taipei
-
-// talk : 2015-04-09 Amazon EU S.à r.l.
-talk
-
-// taobao : 2015-01-15 Alibaba Group Holding Limited
-taobao
-
-// tatamotors : 2015-03-12 Tata Motors Ltd
-tatamotors
-
-// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
-tatar
-
-// tattoo : 2013-08-30 Uniregistry, Corp.
-tattoo
-
-// tax : 2014-03-20 Storm Orchard, LLC
-tax
-
-// taxi : 2015-03-19 Pine Falls, LLC
-taxi
-
-// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-tci
-
-// team : 2015-03-05 Atomic Lake, LLC
-team
-
-// tech : 2015-01-30 Dot Tech LLC
-tech
-
-// technology : 2013-09-13 Auburn Falls
-technology
-
-// telecity : 2015-02-19 TelecityGroup International Limited
-telecity
-
-// telefonica : 2014-10-16 Telefónica S.A.
-telefonica
-
-// temasek : 2014-08-07 Temasek Holdings (Private) Limited
-temasek
-
-// tennis : 2014-12-04 Cotton Bloom, LLC
-tennis
-
-// thd : 2015-04-02 Homer TLC, Inc.
-thd
-
-// theater : 2015-03-19 Blue Tigers, LLC
-theater
-
-// theguardian : 2015-04-30 Guardian News and Media Limited
-theguardian
-
-// tickets : 2015-02-05 Accent Media Limited
-tickets
-
-// tienda : 2013-11-14 Victor Manor, LLC
-tienda
-
-// tiffany : 2015-01-30 Tiffany and Company
-tiffany
-
-// tips : 2013-09-20 Corn Willow, LLC
-tips
-
-// tires : 2014-11-07 Dog Edge, LLC
-tires
-
-// tirol : 2014-04-24 punkt Tirol GmbH
-tirol
-
-// tmall : 2015-01-15 Alibaba Group Holding Limited
-tmall
-
-// today : 2013-09-20 Pearl Woods, LLC
-today
-
-// tokyo : 2013-11-13 GMO Registry, Inc.
-tokyo
-
-// tools : 2013-11-21 Pioneer North, LLC
-tools
-
-// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd.
-top
-
-// toray : 2014-12-18 Toray Industries, Inc.
-toray
-
-// toshiba : 2014-04-10 TOSHIBA Corporation
-toshiba
-
-// tours : 2015-01-22 Sugar Station, LLC
-tours
-
-// town : 2014-03-06 Koko Moon, LLC
-town
-
-// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION
-toyota
-
-// toys : 2014-03-06 Pioneer Orchard, LLC
-toys
-
-// trade : 2014-01-23 Elite Registry Limited
-trade
-
-// trading : 2014-12-11 IG Group Holdings PLC
-trading
-
-// training : 2013-11-07 Wild Willow, LLC
-training
-
-// travelers : 2015-03-26 Travelers TLD, LLC
-travelers
-
-// travelersinsurance : 2015-03-26 Travelers TLD, LLC
-travelersinsurance
-
-// trust : 2014-10-16
-trust
-
-// trv : 2015-03-26 Travelers TLD, LLC
-trv
-
-// tui : 2014-07-03 TUI AG
-tui
-
-// tunes : 2015-02-26 Amazon EU S.à r.l.
-tunes
-
-// tushu : 2014-12-18 Amazon EU S.à r.l.
-tushu
-
-// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED
-tvs
-
-// ubs : 2014-12-11 UBS AG
-ubs
-
-// university : 2014-03-06 Little Station, LLC
-university
-
-// uno : 2013-09-11 Dot Latin LLC
-uno
-
-// uol : 2014-05-01 UBN INTERNET LTDA.
-uol
-
-// vacations : 2013-12-05 Atomic Tigers, LLC
-vacations
-
-// vana : 2014-12-11 Lifestyle Domain Holdings, Inc.
-vana
-
-// vegas : 2014-01-16 Dot Vegas, Inc.
-vegas
-
-// ventures : 2013-08-27 Binky Lake, LLC
-ventures
-
-// versicherung : 2014-03-20 dotversicherung-registry GmbH
-versicherung
-
-// vet : 2014-03-06
-vet
-
-// viajes : 2013-10-17 Black Madison, LLC
-viajes
-
-// video : 2014-10-16
-video
-
-// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd.
-viking
-
-// villas : 2013-12-05 New Sky, LLC
-villas
-
-// vip : 2015-01-22 Minds + Machines Group Limited
-vip
-
-// virgin : 2014-09-25 Virgin Enterprises Limited
-virgin
-
-// vision : 2013-12-05 Koko Station, LLC
-vision
-
-// vista : 2014-09-18 Vistaprint Limited
-vista
-
-// vistaprint : 2014-09-18 Vistaprint Limited
-vistaprint
-
-// viva : 2014-11-07 Saudi Telecom Company
-viva
-
-// vlaanderen : 2014-02-06 DNS.be vzw
-vlaanderen
-
-// vodka : 2013-12-19 Top Level Domain Holdings Limited
-vodka
-
-// vote : 2013-11-21 Monolith Registry LLC
-vote
-
-// voting : 2013-11-13 Valuetainment Corp.
-voting
-
-// voto : 2013-11-21 Monolith Registry LLC
-voto
-
-// voyage : 2013-08-27 Ruby House, LLC
-voyage
-
-// vuelos : 2015-03-05 Travel Reservations SRL
-vuelos
-
-// wales : 2014-05-08 Nominet UK
-wales
-
-// walter : 2014-11-13 Sandvik AB
-walter
-
-// wang : 2013-10-24 Zodiac Leo Limited
-wang
-
-// wanggou : 2014-12-18 Amazon EU S.à r.l.
-wanggou
-
-// watch : 2013-11-14 Sand Shadow, LLC
-watch
-
-// watches : 2014-12-22 Richemont DNS Inc.
-watches
-
-// weather : 2015-01-08 The Weather Channel, LLC
-weather
-
-// weatherchannel : 2015-03-12 The Weather Channel, LLC
-weatherchannel
-
-// webcam : 2014-01-23 dot Webcam Limited
-webcam
-
-// website : 2014-04-03 DotWebsite Inc.
-website
-
-// wed : 2013-10-01 Atgron, Inc.
-wed
-
-// wedding : 2014-04-24 Top Level Domain Holdings Limited
-wedding
-
-// weibo : 2015-03-05 Sina Corporation
-weibo
-
-// weir : 2015-01-29 Weir Group IP Limited
-weir
-
-// whoswho : 2014-02-20 Who's Who Registry
-whoswho
-
-// wien : 2013-10-28 punkt.wien GmbH
-wien
-
-// wiki : 2013-11-07 Top Level Design, LLC
-wiki
-
-// williamhill : 2014-03-13 William Hill Organization Limited
-williamhill
-
-// win : 2014-11-20 First Registry Limited
-win
-
-// windows : 2014-12-18 Microsoft Corporation
-windows
-
-// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC
-wme
-
-// work : 2013-12-19 Top Level Domain Holdings Limited
-work
-
-// works : 2013-11-14 Little Dynamite, LLC
-works
-
-// world : 2014-06-12 Bitter Fields, LLC
-world
-
-// wtc : 2013-12-19 World Trade Centers Association, Inc.
-wtc
-
-// wtf : 2014-03-06 Hidden Way, LLC
-wtf
-
-// xbox : 2014-12-18 Microsoft Corporation
-xbox
-
-// xerox : 2014-10-24 Xerox DNHC LLC
-xerox
-
-// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-xihuan
-
-// xin : 2014-12-11 Elegant Leader Limited
-xin
-
-// xn--11b4c3d : 2015-01-15 VeriSign Sarl
-कॉम
-
-// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l.
-セール
-
-// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd.
-佛山
-
-// xn--30rr7y : 2014-06-12 Excellent First Limited
-慈善
-
-// xn--3bst00m : 2013-09-13 Eagle Horizon Limited
-集团
-
-// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
-在线
-
-// xn--3pxu8k : 2015-01-15 VeriSign Sarl
-点看
-
-// xn--42c2d9a : 2015-01-15 VeriSign Sarl
-คอม
-
-// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited
-八卦
-
-// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
-موقع
-
-// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
-公益
-
-// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-公司
-
-// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
-网站
-
-// xn--6frz82g : 2013-09-23 Afilias Limited
-移动
-
-// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited
-我爱你
-
-// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-москва
-
-// xn--80asehdb : 2013-07-14 CORE Association
-онлайн
-
-// xn--80aswg : 2013-07-14 CORE Association
-сайт
-
-// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited
-联通
-
-// xn--9dbq2a : 2015-01-15 VeriSign Sarl
-קום
-
-// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED
-时尚
-
-// xn--9krt00a : 2015-03-12 Sina Corporation
-微博
-
-// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited
-淡马锡
-
-// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l.
-ファッション
-
-// xn--c1avg : 2013-11-14 Public Interest Registry
-орг
-
-// xn--c2br7g : 2015-01-15 VeriSign Sarl
-नेट
-
-// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l.
-ストア
-
-// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
-삼성
-
-// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY.HONGKONG LIMITED
-商标
-
-// xn--czrs0t : 2013-12-19 Wild Island, LLC
-商店
-
-// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited
-商城
-
-// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet”
-дети
-
-// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l.
-ポイント
-
-// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社
-新闻
-
-// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
-工行
-
-// xn--fct429k : 2015-04-09 Amazon EU S.à r.l.
-家電
-
-// xn--fhbei : 2015-01-15 VeriSign Sarl
-كوم
-
-// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
-中文网
-
-// xn--fiq64b : 2013-10-14 CITIC Group Corporation
-中信
-
-// xn--fjq720a : 2014-05-22 Will Bloom, LLC
-娱乐
-
-// xn--flw351e : 2014-07-31 Charleston Road Registry Inc.
-谷歌
-
-// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited
-购物
-
-// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l.
-クラウド
-
-// xn--hxt814e : 2014-05-15 Zodiac Libra Limited
-网店
-
-// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry
-संगठन
-
-// xn--imr513n : 2014-12-11 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
-餐厅
-
-// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-网络
-
-// xn--j1aef : 2015-01-15 VeriSign Sarl
-ком
-
-// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
-诺基亚
-
-// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l.
-食品
-
-// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V.
-飞利浦
-
-// xn--kpu716f : 2014-12-22 Richemont DNS Inc.
-手表
-
-// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd
-手机
-
-// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company
-ارامكو
-
-// xn--mgbab2bd : 2013-10-31 CORE Association
-بازار
-
-// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L.
-موبايلي
-
-// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-همراه
-
-// xn--mk1bu44c : 2015-01-15 VeriSign Sarl
-닷컴
-
-// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd.
-政府
-
-// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd.
-شبكة
-
-// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House
-بيتك
-
-// xn--nqv7f : 2013-11-14 Public Interest Registry
-机构
-
-// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry
-组织机构
-
-// xn--nyqy26a : 2014-11-07 Stable Tone Limited
-健康
-
-// xn--p1acf : 2013-12-12 Rusnames Limited
-рус
-
-// xn--pbt977c : 2014-12-22 Richemont DNS Inc.
-珠宝
-
-// xn--pssy2u : 2015-01-15 VeriSign Sarl
-大拿
-
-// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc.
-みんな
-
-// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc.
-グーグル
-
-// xn--rhqv96g : 2013-09-11 Stable Tone Limited
-世界
-
-// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l.
-書籍
-
-// xn--ses554g : 2014-01-16
-网址
-
-// xn--t60b56a : 2015-01-15 VeriSign Sarl
-닷넷
-
-// xn--tckwe : 2015-01-15 VeriSign Sarl
-コム
-
-// xn--unup4y : 2013-07-14 Spring Fields, LLC
-游戏
-
-// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-vermögensberater
-
-// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-vermögensberatung
-
-// xn--vhquv : 2013-08-27 Dash McCook, LLC
-企业
-
-// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd.
-信息
-
-// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited
-嘉里大酒店
-
-// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd.
-广东
-
-// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
-政务
-
-// xyz : 2013-12-05 XYZ.COM LLC
-xyz
-
-// yachts : 2014-01-09 DERYachts, LLC
-yachts
-
-// yahoo : 2015-04-02 Yahoo! Domain Services Inc.
-yahoo
-
-// yamaxun : 2014-12-18 Amazon EU S.à r.l.
-yamaxun
-
-// yandex : 2014-04-10 YANDEX, LLC
-yandex
-
-// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-yodobashi
-
-// yoga : 2014-05-29 Top Level Domain Holdings Limited
-yoga
-
-// yokohama : 2013-12-12 GMO Registry, Inc.
-yokohama
-
-// you : 2015-04-09 Amazon EU S.à r.l.
-you
-
-// youtube : 2014-05-01 Charleston Road Registry Inc.
-youtube
-
-// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-yun
-
-// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.)
-zara
-
-// zero : 2014-12-18 Amazon EU S.à r.l.
-zero
-
-// zip : 2014-05-08 Charleston Road Registry Inc.
-zip
-
-// zone : 2013-11-14 Outer Falls, LLC
-zone
-
-// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich)
-zuerich
-
-
-// ===END ICANN DOMAINS===
-// ===BEGIN PRIVATE DOMAINS===
-// (Note: these are in alphabetical order by company name)
-
-// Amazon CloudFront : https://aws.amazon.com/cloudfront/
-// Submitted by Donavan Miller <donavanm@amazon.com> 2013-03-22
-cloudfront.net
-
-// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
-// Submitted by Osman Surkatty <osmans@amazon.com> 2014-12-16
-ap-northeast-1.compute.amazonaws.com
-ap-southeast-1.compute.amazonaws.com
-ap-southeast-2.compute.amazonaws.com
-cn-north-1.compute.amazonaws.cn
-compute.amazonaws.cn
-compute.amazonaws.com
-compute-1.amazonaws.com
-eu-west-1.compute.amazonaws.com
-eu-central-1.compute.amazonaws.com
-sa-east-1.compute.amazonaws.com
-us-east-1.amazonaws.com
-us-gov-west-1.compute.amazonaws.com
-us-west-1.compute.amazonaws.com
-us-west-2.compute.amazonaws.com
-z-1.compute-1.amazonaws.com
-z-2.compute-1.amazonaws.com
-
-// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
-// Submitted by Adam Stein <astein@amazon.com> 2013-04-02
-elasticbeanstalk.com
-
-// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
-// Submitted by Scott Vidmar <svidmar@amazon.com> 2013-03-27
-elb.amazonaws.com
-
-// Amazon S3 : https://aws.amazon.com/s3/
-// Submitted by Courtney Eckhardt <coec@amazon.com> 2013-03-22
-s3.amazonaws.com
-s3-us-west-2.amazonaws.com
-s3-us-west-1.amazonaws.com
-s3-eu-west-1.amazonaws.com
-s3-ap-southeast-1.amazonaws.com
-s3-ap-southeast-2.amazonaws.com
-s3-ap-northeast-1.amazonaws.com
-s3-sa-east-1.amazonaws.com
-s3-us-gov-west-1.amazonaws.com
-s3-fips-us-gov-west-1.amazonaws.com
-s3-website-us-east-1.amazonaws.com
-s3-website-us-west-2.amazonaws.com
-s3-website-us-west-1.amazonaws.com
-s3-website-eu-west-1.amazonaws.com
-s3-website-ap-southeast-1.amazonaws.com
-s3-website-ap-southeast-2.amazonaws.com
-s3-website-ap-northeast-1.amazonaws.com
-s3-website-sa-east-1.amazonaws.com
-s3-website-us-gov-west-1.amazonaws.com
-
-// BetaInABox
-// Submitted by adrian@betainabox.com 2012-09-13
-betainabox.com
-
-// CentralNic : http://www.centralnic.com/names/domains
-// Submitted by registry <gavin.brown@centralnic.com> 2012-09-27
-ae.org
-ar.com
-br.com
-cn.com
-com.de
-com.se
-de.com
-eu.com
-gb.com
-gb.net
-hu.com
-hu.net
-jp.net
-jpn.com
-kr.com
-mex.com
-no.com
-qc.com
-ru.com
-sa.com
-se.com
-se.net
-uk.com
-uk.net
-us.com
-uy.com
-za.bz
-za.com
-
-// Africa.com Web Solutions Ltd : https://registry.africa.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
-africa.com
-
-// iDOT Services Limited : http://www.domain.gr.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
-gr.com
-
-// Radix FZC : http://domains.in.net
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
-in.net
-
-// US REGISTRY LLC : http://us.org
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
-us.org
-
-// co.com Registry, LLC : https://registry.co.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
-co.com
-
-// c.la : http://www.c.la/
-c.la
-
-// cloudControl : https://www.cloudcontrol.com/
-// Submitted by Tobias Wilken <tw@cloudcontrol.com> 2013-07-23
-cloudcontrolled.com
-cloudcontrolapp.com
-
-// co.ca : http://registry.co.ca/
-co.ca
-
-// CoDNS B.V.
-co.nl
-co.no
-
-// Commerce Guys, SAS
-// Submitted by Damien Tournoud <damien@commerceguys.com> 2015-01-22
-*.platform.sh
-
-// Cupcake : https://cupcake.io/
-// Submitted by Jonathan Rudenberg <jonathan@cupcake.io> 2013-10-08
-cupcake.is
-
-// DreamHost : http://www.dreamhost.com/
-// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com> 2012-10-02
-dreamhosters.com
-
-// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
-dyndns-at-home.com
-dyndns-at-work.com
-dyndns-blog.com
-dyndns-free.com
-dyndns-home.com
-dyndns-ip.com
-dyndns-mail.com
-dyndns-office.com
-dyndns-pics.com
-dyndns-remote.com
-dyndns-server.com
-dyndns-web.com
-dyndns-wiki.com
-dyndns-work.com
-dyndns.biz
-dyndns.info
-dyndns.org
-dyndns.tv
-at-band-camp.net
-ath.cx
-barrel-of-knowledge.info
-barrell-of-knowledge.info
-better-than.tv
-blogdns.com
-blogdns.net
-blogdns.org
-blogsite.org
-boldlygoingnowhere.org
-broke-it.net
-buyshouses.net
-cechire.com
-dnsalias.com
-dnsalias.net
-dnsalias.org
-dnsdojo.com
-dnsdojo.net
-dnsdojo.org
-does-it.net
-doesntexist.com
-doesntexist.org
-dontexist.com
-dontexist.net
-dontexist.org
-doomdns.com
-doomdns.org
-dvrdns.org
-dyn-o-saur.com
-dynalias.com
-dynalias.net
-dynalias.org
-dynathome.net
-dyndns.ws
-endofinternet.net
-endofinternet.org
-endoftheinternet.org
-est-a-la-maison.com
-est-a-la-masion.com
-est-le-patron.com
-est-mon-blogueur.com
-for-better.biz
-for-more.biz
-for-our.info
-for-some.biz
-for-the.biz
-forgot.her.name
-forgot.his.name
-from-ak.com
-from-al.com
-from-ar.com
-from-az.net
-from-ca.com
-from-co.net
-from-ct.com
-from-dc.com
-from-de.com
-from-fl.com
-from-ga.com
-from-hi.com
-from-ia.com
-from-id.com
-from-il.com
-from-in.com
-from-ks.com
-from-ky.com
-from-la.net
-from-ma.com
-from-md.com
-from-me.org
-from-mi.com
-from-mn.com
-from-mo.com
-from-ms.com
-from-mt.com
-from-nc.com
-from-nd.com
-from-ne.com
-from-nh.com
-from-nj.com
-from-nm.com
-from-nv.com
-from-ny.net
-from-oh.com
-from-ok.com
-from-or.com
-from-pa.com
-from-pr.com
-from-ri.com
-from-sc.com
-from-sd.com
-from-tn.com
-from-tx.com
-from-ut.com
-from-va.com
-from-vt.com
-from-wa.com
-from-wi.com
-from-wv.com
-from-wy.com
-ftpaccess.cc
-fuettertdasnetz.de
-game-host.org
-game-server.cc
-getmyip.com
-gets-it.net
-go.dyndns.org
-gotdns.com
-gotdns.org
-groks-the.info
-groks-this.info
-ham-radio-op.net
-here-for-more.info
-hobby-site.com
-hobby-site.org
-home.dyndns.org
-homedns.org
-homeftp.net
-homeftp.org
-homeip.net
-homelinux.com
-homelinux.net
-homelinux.org
-homeunix.com
-homeunix.net
-homeunix.org
-iamallama.com
-in-the-band.net
-is-a-anarchist.com
-is-a-blogger.com
-is-a-bookkeeper.com
-is-a-bruinsfan.org
-is-a-bulls-fan.com
-is-a-candidate.org
-is-a-caterer.com
-is-a-celticsfan.org
-is-a-chef.com
-is-a-chef.net
-is-a-chef.org
-is-a-conservative.com
-is-a-cpa.com
-is-a-cubicle-slave.com
-is-a-democrat.com
-is-a-designer.com
-is-a-doctor.com
-is-a-financialadvisor.com
-is-a-geek.com
-is-a-geek.net
-is-a-geek.org
-is-a-green.com
-is-a-guru.com
-is-a-hard-worker.com
-is-a-hunter.com
-is-a-knight.org
-is-a-landscaper.com
-is-a-lawyer.com
-is-a-liberal.com
-is-a-libertarian.com
-is-a-linux-user.org
-is-a-llama.com
-is-a-musician.com
-is-a-nascarfan.com
-is-a-nurse.com
-is-a-painter.com
-is-a-patsfan.org
-is-a-personaltrainer.com
-is-a-photographer.com
-is-a-player.com
-is-a-republican.com
-is-a-rockstar.com
-is-a-socialist.com
-is-a-soxfan.org
-is-a-student.com
-is-a-teacher.com
-is-a-techie.com
-is-a-therapist.com
-is-an-accountant.com
-is-an-actor.com
-is-an-actress.com
-is-an-anarchist.com
-is-an-artist.com
-is-an-engineer.com
-is-an-entertainer.com
-is-by.us
-is-certified.com
-is-found.org
-is-gone.com
-is-into-anime.com
-is-into-cars.com
-is-into-cartoons.com
-is-into-games.com
-is-leet.com
-is-lost.org
-is-not-certified.com
-is-saved.org
-is-slick.com
-is-uberleet.com
-is-very-bad.org
-is-very-evil.org
-is-very-good.org
-is-very-nice.org
-is-very-sweet.org
-is-with-theband.com
-isa-geek.com
-isa-geek.net
-isa-geek.org
-isa-hockeynut.com
-issmarterthanyou.com
-isteingeek.de
-istmein.de
-kicks-ass.net
-kicks-ass.org
-knowsitall.info
-land-4-sale.us
-lebtimnetz.de
-leitungsen.de
-likes-pie.com
-likescandy.com
-merseine.nu
-mine.nu
-misconfused.org
-mypets.ws
-myphotos.cc
-neat-url.com
-office-on-the.net
-on-the-web.tv
-podzone.net
-podzone.org
-readmyblog.org
-saves-the-whales.com
-scrapper-site.net
-scrapping.cc
-selfip.biz
-selfip.com
-selfip.info
-selfip.net
-selfip.org
-sells-for-less.com
-sells-for-u.com
-sells-it.net
-sellsyourhome.org
-servebbs.com
-servebbs.net
-servebbs.org
-serveftp.net
-serveftp.org
-servegame.org
-shacknet.nu
-simple-url.com
-space-to-rent.com
-stuff-4-sale.org
-stuff-4-sale.us
-teaches-yoga.com
-thruhere.net
-traeumtgerade.de
-webhop.biz
-webhop.info
-webhop.net
-webhop.org
-worse-than.tv
-writesthisblog.com
-
-// EU.org https://eu.org/
-// Submitted by Pierre Beyssac <hostmaster@eu.org> 2015-04-17
-
-eu.org
-al.eu.org
-asso.eu.org
-at.eu.org
-au.eu.org
-be.eu.org
-bg.eu.org
-ca.eu.org
-cd.eu.org
-ch.eu.org
-cn.eu.org
-cy.eu.org
-cz.eu.org
-de.eu.org
-dk.eu.org
-edu.eu.org
-ee.eu.org
-es.eu.org
-fi.eu.org
-fr.eu.org
-gr.eu.org
-hr.eu.org
-hu.eu.org
-ie.eu.org
-il.eu.org
-in.eu.org
-int.eu.org
-is.eu.org
-it.eu.org
-jp.eu.org
-kr.eu.org
-lt.eu.org
-lu.eu.org
-lv.eu.org
-mc.eu.org
-me.eu.org
-mk.eu.org
-mt.eu.org
-my.eu.org
-net.eu.org
-ng.eu.org
-nl.eu.org
-no.eu.org
-nz.eu.org
-paris.eu.org
-pl.eu.org
-pt.eu.org
-q-a.eu.org
-ro.eu.org
-ru.eu.org
-se.eu.org
-si.eu.org
-sk.eu.org
-tr.eu.org
-uk.eu.org
-us.eu.org
-
-// Fastly Inc. http://www.fastly.com/
-// Submitted by Vladimir Vuksan <vladimir@fastly.com> 2013-05-31
-a.ssl.fastly.net
-b.ssl.fastly.net
-global.ssl.fastly.net
-a.prod.fastly.net
-global.prod.fastly.net
-
-// Firebase, Inc.
-// Submitted by Chris Raynor <chris@firebase.com> 2014-01-21
-firebaseapp.com
-
-// Flynn : https://flynn.io
-// Submitted by Jonathan Rudenberg <jonathan@flynn.io> 2014-07-12
-flynnhub.com
-
-// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
-// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk> 2014-08-28
-service.gov.uk
-
-// GitHub, Inc.
-// Submitted by Ben Toews <btoews@github.com> 2014-02-06
-github.io
-githubusercontent.com
-
-// GlobeHosting, Inc.
-// Submitted by Zoltan Egresi <egresi@globehosting.com> 2013-07-12
-ro.com
-
-// Google, Inc.
-// Submitted by Eduardo Vela <evn@google.com> 2014-12-19
-appspot.com
-blogspot.ae
-blogspot.be
-blogspot.bj
-blogspot.ca
-blogspot.cf
-blogspot.ch
-blogspot.co.at
-blogspot.co.il
-blogspot.co.nz
-blogspot.co.uk
-blogspot.com
-blogspot.com.ar
-blogspot.com.au
-blogspot.com.br
-blogspot.com.es
-blogspot.com.tr
-blogspot.cv
-blogspot.cz
-blogspot.de
-blogspot.dk
-blogspot.fi
-blogspot.fr
-blogspot.gr
-blogspot.hk
-blogspot.hu
-blogspot.ie
-blogspot.in
-blogspot.it
-blogspot.jp
-blogspot.kr
-blogspot.mr
-blogspot.mx
-blogspot.nl
-blogspot.no
-blogspot.pt
-blogspot.re
-blogspot.ro
-blogspot.ru
-blogspot.se
-blogspot.sg
-blogspot.sk
-blogspot.td
-blogspot.tw
-codespot.com
-googleapis.com
-googlecode.com
-pagespeedmobilizer.com
-withgoogle.com
-
-// Heroku : https://www.heroku.com/
-// Submitted by Tom Maher <tmaher@heroku.com> 2013-05-02
-herokuapp.com
-herokussl.com
-
-// iki.fi
-// Submitted by Hannu Aronsson <haa@iki.fi> 2009-11-05
-iki.fi
-
-// info.at : http://www.info.at/
-biz.at
-info.at
-
-// Michau Enterprises Limited : http://www.co.pl/
-co.pl
-
-// Microsoft : http://microsoft.com
-// Submitted by Barry Dorrans <bdorrans@microsoft.com> 2014-01-24
-azurewebsites.net
-azure-mobile.net
-cloudapp.net
-
-// Neustar Inc.
-// Submitted by Trung Tran <Trung.Tran@neustar.biz> 2015-04-23
-4u.com
-
-// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
-// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net> 2014-02-02
-nfshost.com
-
-// NYC.mn : http://www.information.nyc.mn
-// Submitted by Matthew Brown <mattbrown@nyc.mn> 2013-03-11
-nyc.mn
-
-// One Fold Media : http://www.onefoldmedia.com/
-// Submitted by Eddie Jones <eddie@onefoldmedia.com> 2014-06-10
-nid.io
-
-// Opera Software, A.S.A.
-// Submitted by Yngve Pettersen <yngve@opera.com> 2009-11-26
-operaunite.com
-
-// OutSystems
-// Submitted by Duarte Santos <domain-admin@outsystemscloud.com> 2014-03-11
-outsystemscloud.com
-
-// .pl domains (grandfathered)
-art.pl
-gliwice.pl
-krakow.pl
-poznan.pl
-wroc.pl
-zakopane.pl
-
-// priv.at : http://www.nic.priv.at/
-// Submitted by registry <lendl@nic.at> 2008-06-09
-priv.at
-
-// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
-// Submitted by Tim Kramer <tkramer@rhcloud.com> 2012-10-24
-rhcloud.com
-
-// SinaAppEngine : http://sae.sina.com.cn/
-// Submitted by SinaAppEngine <saesupport@sinacloud.com> 2015-02-02
-sinaapp.com
-vipsinaapp.com
-1kapp.com
-
-// TASK geographical domains (www.task.gda.pl/uslugi/dns)
-gda.pl
-gdansk.pl
-gdynia.pl
-med.pl
-sopot.pl
-
-// UDR Limited : http://www.udr.hk.com
-// Submitted by registry <hostmaster@udr.hk.com> 2014-11-07
-hk.com
-hk.org
-ltd.hk
-inc.hk
-
-// Yola : https://www.yola.com/
-// Submitted by Stefano Rivera <stefano@yola.com> 2014-07-09
-yolasite.com
-
-// ZaNiC : http://www.za.net/
-// Submitted by registry <hostmaster@nic.za.net> 2009-10-03
-za.net
-za.org
-
-// ===END PRIVATE DOMAINS===
diff --git a/node_modules/request/node_modules/tough-cookie/test/api_test.js b/node_modules/request/node_modules/tough-cookie/test/api_test.js
deleted file mode 100644
index b21326cdf..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/api_test.js
+++ /dev/null
@@ -1,372 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var async = require('async');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-
-var atNow = Date.now();
-
-function at(offset) {
- return {now: new Date(atNow + offset)};
-}
-
-vows
- .describe('API')
- .addBatch({
- "All defined": function () {
- assert.ok(Cookie);
- assert.ok(CookieJar);
- }
- })
- .addBatch({
- "Constructor": {
- topic: function () {
- return new Cookie({
- key: 'test',
- value: 'b',
- maxAge: 60
- });
- },
- 'check for key property': function (c) {
- assert.ok(c);
- assert.equal(c.key, 'test');
- },
- 'check for value property': function (c) {
- assert.equal(c.value, 'b');
- },
- 'check for maxAge': function (c) {
- assert.equal(c.maxAge, 60);
- },
- 'check for default values for unspecified properties': function (c) {
- assert.equal(c.expires, "Infinity");
- assert.equal(c.secure, false);
- assert.equal(c.httpOnly, false);
- }
- }
- })
- .addBatch({
- "expiry option": {
- topic: function () {
- var cb = this.callback;
- var cj = new CookieJar();
- cj.setCookie('near=expiry; Domain=example.com; Path=/; Max-Age=1', 'http://www.example.com', at(-1), function (err, cookie) {
-
- cb(err, {cj: cj, cookie: cookie});
- });
- },
- "set the cookie": function (t) {
- assert.ok(t.cookie, "didn't set?!");
- assert.equal(t.cookie.key, 'near');
- },
- "then, retrieving": {
- topic: function (t) {
- var cb = this.callback;
- setTimeout(function () {
- t.cj.getCookies('http://www.example.com', {http: true, expire: false}, function (err, cookies) {
- t.cookies = cookies;
- cb(err, t);
- });
- }, 2000);
- },
- "got the cookie": function (t) {
- assert.lengthOf(t.cookies, 1);
- assert.equal(t.cookies[0].key, 'near');
- }
- }
- }
- })
- .addBatch({
- "allPaths option": {
- topic: function () {
- var cj = new CookieJar();
- var tasks = [];
- tasks.push(cj.setCookie.bind(cj, 'nopath_dom=qq; Path=/; Domain=example.com', 'http://example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'path_dom=qq; Path=/foo; Domain=example.com', 'http://example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'nopath_host=qq; Path=/', 'http://www.example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'path_host=qq; Path=/foo', 'http://www.example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'other=qq; Path=/', 'http://other.example.com/', {}));
- tasks.push(cj.setCookie.bind(cj, 'other2=qq; Path=/foo', 'http://other.example.com/foo', {}));
- var cb = this.callback;
- async.parallel(tasks, function (err, results) {
- cb(err, {cj: cj, cookies: results});
- });
- },
- "all set": function (t) {
- assert.equal(t.cookies.length, 6);
- assert.ok(t.cookies.every(function (c) {
- return !!c
- }));
- },
- "getting without allPaths": {
- topic: function (t) {
- var cb = this.callback;
- var cj = t.cj;
- cj.getCookies('http://www.example.com/', {}, function (err, cookies) {
- cb(err, {cj: cj, cookies: cookies});
- });
- },
- "found just two cookies": function (t) {
- assert.equal(t.cookies.length, 2);
- },
- "all are path=/": function (t) {
- assert.ok(t.cookies.every(function (c) {
- return c.path === '/'
- }));
- },
- "no 'other' cookies": function (t) {
- assert.ok(!t.cookies.some(function (c) {
- return (/^other/).test(c.name)
- }));
- }
- },
- "getting without allPaths for /foo": {
- topic: function (t) {
- var cb = this.callback;
- var cj = t.cj;
- cj.getCookies('http://www.example.com/foo', {}, function (err, cookies) {
- cb(err, {cj: cj, cookies: cookies});
- });
- },
- "found four cookies": function (t) {
- assert.equal(t.cookies.length, 4);
- },
- "no 'other' cookies": function (t) {
- assert.ok(!t.cookies.some(function (c) {
- return (/^other/).test(c.name)
- }));
- }
- },
- "getting with allPaths:true": {
- topic: function (t) {
- var cb = this.callback;
- var cj = t.cj;
- cj.getCookies('http://www.example.com/', {allPaths: true}, function (err, cookies) {
- cb(err, {cj: cj, cookies: cookies});
- });
- },
- "found four cookies": function (t) {
- assert.equal(t.cookies.length, 4);
- },
- "no 'other' cookies": function (t) {
- assert.ok(!t.cookies.some(function (c) {
- return (/^other/).test(c.name)
- }));
- }
- }
- }
- })
- .addBatch({
- "Remove cookies": {
- topic: function () {
- var jar = new CookieJar();
- var cookie = Cookie.parse("a=b; Domain=example.com; Path=/");
- var cookie2 = Cookie.parse("a=b; Domain=foo.com; Path=/");
- var cookie3 = Cookie.parse("foo=bar; Domain=foo.com; Path=/");
- jar.setCookie(cookie, 'http://example.com/index.html', function () {
- });
- jar.setCookie(cookie2, 'http://foo.com/index.html', function () {
- });
- jar.setCookie(cookie3, 'http://foo.com/index.html', function () {
- });
- return jar;
- },
- "all from matching domain": function (jar) {
- jar.store.removeCookies('example.com', null, function (err) {
- assert(err == null);
-
- jar.store.findCookies('example.com', null, function (err, cookies) {
- assert(err == null);
- assert(cookies != null);
- assert(cookies.length === 0, 'cookie was not removed');
- });
-
- jar.store.findCookies('foo.com', null, function (err, cookies) {
- assert(err == null);
- assert(cookies != null);
- assert(cookies.length === 2, 'cookies should not have been removed');
- });
- });
- },
- "from cookie store matching domain and key": function (jar) {
- jar.store.removeCookie('foo.com', '/', 'foo', function (err) {
- assert(err == null);
-
- jar.store.findCookies('foo.com', null, function (err, cookies) {
- assert(err == null);
- assert(cookies != null);
- assert(cookies.length === 1, 'cookie was not removed correctly');
- assert(cookies[0].key === 'a', 'wrong cookie was removed');
- });
- });
- }
- }
- })
- .addBatch({
- "Synchronous CookieJar": {
- "setCookieSync": {
- topic: function () {
- var jar = new CookieJar();
- var cookie = Cookie.parse("a=b; Domain=example.com; Path=/");
- cookie = jar.setCookieSync(cookie, 'http://example.com/index.html');
- return cookie;
- },
- "returns a copy of the cookie": function (cookie) {
- assert.instanceOf(cookie, Cookie);
- }
- },
- "getCookiesSync": {
- topic: function () {
- var jar = new CookieJar();
- var url = 'http://example.com/index.html';
- jar.setCookieSync("a=b; Domain=example.com; Path=/", url);
- jar.setCookieSync("c=d; Domain=example.com; Path=/", url);
- return jar.getCookiesSync(url);
- },
- "returns the cookie array": function (err, cookies) {
- assert.ok(!err);
- assert.ok(Array.isArray(cookies));
- assert.lengthOf(cookies, 2);
- cookies.forEach(function (cookie) {
- assert.instanceOf(cookie, Cookie);
- });
- }
- },
-
- "getCookieStringSync": {
- topic: function () {
- var jar = new CookieJar();
- var url = 'http://example.com/index.html';
- jar.setCookieSync("a=b; Domain=example.com; Path=/", url);
- jar.setCookieSync("c=d; Domain=example.com; Path=/", url);
- return jar.getCookieStringSync(url);
- },
- "returns the cookie header string": function (err, str) {
- assert.ok(!err);
- assert.typeOf(str, 'string');
- }
- },
-
- "getSetCookieStringsSync": {
- topic: function () {
- var jar = new CookieJar();
- var url = 'http://example.com/index.html';
- jar.setCookieSync("a=b; Domain=example.com; Path=/", url);
- jar.setCookieSync("c=d; Domain=example.com; Path=/", url);
- return jar.getSetCookieStringsSync(url);
- },
- "returns the cookie header string": function (err, headers) {
- assert.ok(!err);
- assert.ok(Array.isArray(headers));
- assert.lengthOf(headers, 2);
- headers.forEach(function (header) {
- assert.typeOf(header, 'string');
- });
- }
- }
- }
- })
- .addBatch({
- "Synchronous API on async CookieJar": {
- topic: function () {
- return new tough.Store();
- },
- "setCookieSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.setCookieSync("a=b", 'http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- },
- "getCookiesSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.getCookiesSync('http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- },
- "getCookieStringSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.getCookieStringSync('http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- },
- "getSetCookieStringsSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.getSetCookieStringsSync('http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js b/node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js
deleted file mode 100644
index 689407b0b..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js
+++ /dev/null
@@ -1,468 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var async = require('async');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-var atNow = Date.now();
-
-function at(offset) {
- return {now: new Date(atNow + offset)};
-}
-
-vows
- .describe('CookieJar')
- .addBatch({
- "Setting a basic cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "works": function (c) {
- assert.instanceOf(c, Cookie)
- }, // C is for Cookie, good enough for me
- "gets timestamped": function (c) {
- assert.ok(c.creation);
- assert.ok(Date.now() - c.creation.getTime() < 5000); // recently stamped
- assert.ok(c.lastAccessed);
- assert.equal(c.creation, c.lastAccessed);
- assert.equal(c.TTL(), Infinity);
- assert.ok(!c.isPersistent());
- }
- },
- "Setting a no-path cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "domain": function (c) {
- assert.equal(c.domain, 'example.com')
- },
- "path is /": function (c) {
- assert.equal(c.path, '/')
- },
- "path was derived": function (c) {
- assert.strictEqual(c.pathIsDefault, true)
- }
- },
- "Setting a cookie already marked as host-only": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- c.hostOnly = true;
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "domain": function (c) {
- assert.equal(c.domain, 'example.com')
- },
- "still hostOnly": function (c) {
- assert.strictEqual(c.hostOnly, true)
- }
- },
- "Setting a session cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b");
- assert.strictEqual(c.path, null);
- cj.setCookie(c, 'http://www.example.com/dir/index.html', this.callback);
- },
- "works": function (c) {
- assert.instanceOf(c, Cookie)
- },
- "gets the domain": function (c) {
- assert.equal(c.domain, 'www.example.com')
- },
- "gets the default path": function (c) {
- assert.equal(c.path, '/dir')
- },
- "is 'hostOnly'": function (c) {
- assert.ok(c.hostOnly)
- }
- },
- "Setting wrong domain cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=fooxample.com; Path=/");
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "fails": function (err, c) {
- assert.ok(err.message.match(/domain/i));
- assert.ok(!c);
- }
- },
- "Setting sub-domain cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=www.example.com; Path=/");
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "fails": function (err, c) {
- assert.ok(err.message.match(/domain/i));
- assert.ok(!c);
- }
- },
- "Setting super-domain cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/");
- cj.setCookie(c, 'http://www.app.example.com/index.html', this.callback);
- },
- "success": function (err, c) {
- assert.ok(!err);
- assert.equal(c.domain, 'example.com');
- }
- },
- "Setting a sub-path cookie on a super-domain": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/subpath");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- cj.setCookie(c, 'http://www.example.com/index.html', this.callback);
- },
- "domain is super-domain": function (c) {
- assert.equal(c.domain, 'example.com')
- },
- "path is /subpath": function (c) {
- assert.equal(c.path, '/subpath')
- },
- "path was NOT derived": function (c) {
- assert.strictEqual(c.pathIsDefault, null)
- }
- },
- "Setting HttpOnly cookie over non-HTTP API": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/; HttpOnly");
- cj.setCookie(c, 'http://example.com/index.html', {http: false}, this.callback);
- },
- "fails": function (err, c) {
- assert.match(err.message, /HttpOnly/i);
- assert.ok(!c);
- }
- }
- })
- .addBatch({
- "Store eight cookies": {
- topic: function () {
- var cj = new CookieJar();
- var ex = 'http://example.com/index.html';
- var tasks = [];
- tasks.push(function (next) {
- cj.setCookie('a=1; Domain=example.com; Path=/', ex, at(0), next);
- });
- tasks.push(function (next) {
- cj.setCookie('b=2; Domain=example.com; Path=/; HttpOnly', ex, at(1000), next);
- });
- tasks.push(function (next) {
- cj.setCookie('c=3; Domain=example.com; Path=/; Secure', ex, at(2000), next);
- });
- tasks.push(function (next) { // path
- cj.setCookie('d=4; Domain=example.com; Path=/foo', ex, at(3000), next);
- });
- tasks.push(function (next) { // host only
- cj.setCookie('e=5', ex, at(4000), next);
- });
- tasks.push(function (next) { // other domain
- cj.setCookie('f=6; Domain=nodejs.org; Path=/', 'http://nodejs.org', at(5000), next);
- });
- tasks.push(function (next) { // expired
- cj.setCookie('g=7; Domain=example.com; Path=/; Expires=Tue, 18 Oct 2011 00:00:00 GMT', ex, at(6000), next);
- });
- tasks.push(function (next) { // expired via Max-Age
- cj.setCookie('h=8; Domain=example.com; Path=/; Max-Age=1', ex, next);
- });
- var cb = this.callback;
- async.parallel(tasks, function (err, results) {
- setTimeout(function () {
- cb(err, cj, results);
- }, 2000); // so that 'h=8' expires
- });
- },
- "setup ok": function (err, cj, results) {
- assert.ok(!err);
- assert.ok(cj);
- assert.ok(results);
- },
- "then retrieving for http://nodejs.org": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://nodejs.org', this.callback);
- },
- "get a nodejs cookie": function (cookies) {
- assert.lengthOf(cookies, 1);
- var cookie = cookies[0];
- assert.equal(cookie.domain, 'nodejs.org');
- }
- },
- "then retrieving for https://example.com": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('https://example.com', {secure: true}, this.callback);
- },
- "get a secure example cookie with others": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'c', 'e']);
- }
- },
- "then retrieving for https://example.com (missing options)": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('https://example.com', this.callback);
- },
- "get a secure example cookie with others": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'c', 'e']);
- }
- },
- "then retrieving for http://example.com": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://example.com', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'e']);
- }
- },
- "then retrieving for http://EXAMPlE.com": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://EXAMPlE.com', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'e']);
- }
- },
- "then retrieving for http://example.com, non-HTTP": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://example.com', {http: false}, this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'e']);
- }
- },
- "then retrieving for http://example.com/foo/bar": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://example.com/foo/bar', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['d', 'a', 'b', 'e']);
- }
- },
- "then retrieving for http://example.com as a string": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookieString('http://example.com', this.callback);
- },
- "get a single string": function (cookieHeader) {
- assert.equal(cookieHeader, "a=1; b=2; e=5");
- }
- },
- "then retrieving for http://example.com as a set-cookie header": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getSetCookieStrings('http://example.com', this.callback);
- },
- "get a single string": function (cookieHeaders) {
- assert.lengthOf(cookieHeaders, 3);
- assert.equal(cookieHeaders[0], "a=1; Domain=example.com; Path=/");
- assert.equal(cookieHeaders[1], "b=2; Domain=example.com; Path=/; HttpOnly");
- assert.equal(cookieHeaders[2], "e=5; Path=/");
- }
- },
- "then retrieving for http://www.example.com/": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://www.example.com/foo/bar', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['d', 'a', 'b']); // note lack of 'e'
- }
- }
- }
- })
- .addBatch({
- "Repeated names": {
- topic: function () {
- var cb = this.callback;
- var cj = new CookieJar();
- var ex = 'http://www.example.com/';
- var sc = cj.setCookie;
- var tasks = [];
- var now = Date.now();
- tasks.push(sc.bind(cj, 'aaaa=xxxx', ex, at(0)));
- tasks.push(sc.bind(cj, 'aaaa=1111; Domain=www.example.com', ex, at(1000)));
- tasks.push(sc.bind(cj, 'aaaa=2222; Domain=example.com', ex, at(2000)));
- tasks.push(sc.bind(cj, 'aaaa=3333; Domain=www.example.com; Path=/pathA', ex, at(3000)));
- async.series(tasks, function (err, results) {
- results = results.filter(function (e) {
- return e !== undefined
- });
- cb(err, {cj: cj, cookies: results, now: now});
- });
- },
- "all got set": function (err, t) {
- assert.lengthOf(t.cookies, 4);
- },
- "then getting 'em back": {
- topic: function (t) {
- var cj = t.cj;
- cj.getCookies('http://www.example.com/pathA', this.callback);
- },
- "there's just three": function (err, cookies) {
- var vals = cookies.map(function (c) {
- return c.value
- });
- // may break with sorting; sorting should put 3333 first due to longest path:
- assert.deepEqual(vals, ['3333', '1111', '2222']);
- }
- }
- }
- })
- .addBatch({
- "CookieJar setCookie errors": {
- "public-suffix domain": {
- topic: function () {
- var cj = new CookieJar();
- cj.setCookie('i=9; Domain=kyoto.jp; Path=/', 'kyoto.jp', this.callback);
- },
- "errors": function (err, cookie) {
- assert.ok(err);
- assert.ok(!cookie);
- assert.match(err.message, /public suffix/i);
- }
- },
- "wrong domain": {
- topic: function () {
- var cj = new CookieJar();
- cj.setCookie('j=10; Domain=google.com; Path=/', 'http://google.ca', this.callback);
- },
- "errors": function (err, cookie) {
- assert.ok(err);
- assert.ok(!cookie);
- assert.match(err.message, /not in this host's domain/i);
- }
- },
- "old cookie is HttpOnly": {
- topic: function () {
- var cb = this.callback;
- var next = function (err, c) {
- c = null;
- return cb(err, cj);
- };
- var cj = new CookieJar();
- cj.setCookie('k=11; Domain=example.ca; Path=/; HttpOnly', 'http://example.ca', {http: true}, next);
- },
- "initial cookie is set": function (err, cj) {
- assert.ok(!err);
- assert.ok(cj);
- },
- "but when trying to overwrite": {
- topic: function (cj) {
- var cb = this.callback;
- var next = function (err, c) {
- c = null;
- cb(null, err);
- };
- cj.setCookie('k=12; Domain=example.ca; Path=/', 'http://example.ca', {http: false}, next);
- },
- "it's an error": function (err) {
- assert.ok(err);
- },
- "then, checking the original": {
- topic: function (ignored, cj) {
- assert.ok(cj instanceof CookieJar);
- cj.getCookies('http://example.ca', {http: true}, this.callback);
- },
- "cookie has original value": function (err, cookies) {
- assert.equal(err, null);
- assert.lengthOf(cookies, 1);
- assert.equal(cookies[0].value, 11);
- }
- }
- }
- },
- "similar to public suffix": {
- topic: function () {
- var cj = new CookieJar();
- var url = 'http://www.foonet.net';
- assert.isTrue(cj.rejectPublicSuffixes);
- cj.setCookie('l=13; Domain=foonet.net; Path=/', url, this.callback);
- },
- "doesn't error": function (err, cookie) {
- assert.ok(!err);
- assert.ok(cookie);
- }
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js b/node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js
deleted file mode 100644
index 826562a2b..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-function toKeyArray(cookies) {
- return cookies.map(function (c) {
- return c.key
- });
-}
-
-vows
- .describe('Cookie sorting')
- .addBatch({
- "Assumptions:": {
- ".creationIndex is set during construction": function() {
- var now = new Date();
- var c1 = new Cookie();
- var c2 = new Cookie();
- assert.isNumber(c1.creationIndex);
- assert.isNumber(c2.creationIndex);
- assert(c1.creationIndex < c2.creationIndex,
- 'creationIndex should increase with each construction');
- },
-
- ".creationIndex is set during construction (forced ctime)": function() {
- var now = new Date();
- var c1 = new Cookie({creation: now});
- var c2 = new Cookie({creation: now});
- assert.strictEqual(c1.creation, c2.creation);
- assert.isNumber(c1.creationIndex);
- assert.isNumber(c2.creationIndex);
- assert(c1.creationIndex < c2.creationIndex,
- 'creationIndex should increase with each construction');
- },
-
- ".creationIndex is left alone during new setCookie": function() {
- var jar = new CookieJar();
- var c = new Cookie({key:'k', value:'v', domain:'example.com'});
- var now = new Date();
- var beforeDate = c.creation;
- assert.instanceOf(beforeDate, Date);
- assert.notStrictEqual(now, beforeDate);
- var beforeIndex = c.creationIndex;
- assert.isNumber(c.creationIndex);
-
- jar.setCookieSync(c, 'http://example.com/', {now: now});
-
- assert.strictEqual(c.creation, now);
- assert.strictEqual(c.creationIndex, beforeIndex);
- },
-
- ".creationIndex is preserved during update setCookie": function() {
- var jar = new CookieJar();
-
- var thisMs = Date.now();
- var t1 = new Date(thisMs);
- var t2 = new Date(thisMs);
- assert.notStrictEqual(t1, t2); // Date objects are distinct
-
- var c = new Cookie({key:'k', value:'v1', domain:'example.com'});
- jar.setCookieSync(c, 'http://example.com/', {now: t1});
- var originalIndex = c.creationIndex;
-
- assert.strictEqual(c.creation, t1);
- assert.strictEqual(c.lastAccessed, t1);
-
- c = new Cookie({key:'k', value:'v2', domain:'example.com'});
- assert.notStrictEqual(c.creation, t1); // new timestamp assigned
-
- jar.setCookieSync(c, 'http://example.com/', {now: t2});
-
- assert.strictEqual(c.creation, t1); // retained
- assert.strictEqual(c.lastAccessed, t2); // updated
- assert.strictEqual(c.creationIndex, originalIndex); // retained
- },
- }
- })
- .addBatch({
- "Cookie Sorting": {
- topic: function () {
- var cookies = [];
- cookies.push(Cookie.parse("a=0; Domain=example.com"));
- cookies.push(Cookie.parse("b=1; Domain=www.example.com"));
- cookies.push(Cookie.parse("c=2; Domain=example.com; Path=/pathA"));
- cookies.push(Cookie.parse("d=3; Domain=www.example.com; Path=/pathA"));
- cookies.push(Cookie.parse("e=4; Domain=example.com; Path=/pathA/pathB"));
- cookies.push(Cookie.parse("f=5; Domain=www.example.com; Path=/pathA/pathB"));
-
- // weak shuffle:
- cookies = cookies.sort(function () {
- return Math.random() - 0.5
- });
-
- cookies = cookies.sort(tough.cookieCompare);
- return cookies;
- },
- "got": function (cookies) {
- assert.lengthOf(cookies, 6);
- assert.deepEqual(toKeyArray(cookies), ['e', 'f', 'c', 'd', 'a', 'b']);
- }
- }
- })
- .addBatch({
- "Changing creation date affects sorting": {
- topic: function () {
- var cookies = [];
- var now = Date.now();
- cookies.push(Cookie.parse("a=0;"));
- cookies.push(Cookie.parse("b=1;"));
- cookies.push(Cookie.parse("c=2;"));
-
- cookies.forEach(function (cookie, idx) {
- cookie.creation = new Date(now - 100 * idx);
- });
-
- return cookies.sort(tough.cookieCompare);
- },
- "got": function (cookies) {
- assert.deepEqual(toKeyArray(cookies), ['c', 'b', 'a']);
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js b/node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js
deleted file mode 100644
index 94a23d46e..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-vows
- .describe('Cookie.toJSON()')
- .addBatch({
- "JSON": {
- "serialization": {
- topic: function() {
- var c = Cookie.parse('alpha=beta; Domain=example.com; Path=/foo; Expires=Tue, 19 Jan 2038 03:14:07 GMT; HttpOnly');
- return JSON.stringify(c);
- },
- "gives a string": function(str) {
- assert.equal(typeof str, "string");
- },
- "date is in ISO format": function(str) {
- assert.match(str, /"expires":"2038-01-19T03:14:07\.000Z"/, 'expires is in ISO format');
- }
- },
- "deserialization": {
- topic: function() {
- var json = '{"key":"alpha","value":"beta","domain":"example.com","path":"/foo","expires":"2038-01-19T03:14:07.000Z","httpOnly":true,"lastAccessed":2000000000123}';
- return Cookie.fromJSON(json);
- },
- "works": function(c) {
- assert.ok(c);
- },
- "key": function(c) { assert.equal(c.key, "alpha") },
- "value": function(c) { assert.equal(c.value, "beta") },
- "domain": function(c) { assert.equal(c.domain, "example.com") },
- "path": function(c) { assert.equal(c.path, "/foo") },
- "httpOnly": function(c) { assert.strictEqual(c.httpOnly, true) },
- "secure": function(c) { assert.strictEqual(c.secure, false) },
- "hostOnly": function(c) { assert.strictEqual(c.hostOnly, null) },
- "expires is a date object": function(c) {
- assert.equal(c.expires.getTime(), 2147483647000);
- },
- "lastAccessed is a date object": function(c) {
- assert.equal(c.lastAccessed.getTime(), 2000000000123);
- },
- "creation defaulted": function(c) {
- assert.ok(c.creation.getTime());
- }
- },
- "null deserialization": {
- topic: function() {
- return Cookie.fromJSON(null);
- },
- "is null": function(cookie) {
- assert.equal(cookie,null);
- }
- }
- },
- "expiry deserialization": {
- "Infinity": {
- topic: Cookie.fromJSON.bind(null, '{"expires":"Infinity"}'),
- "is infinite": function(c) {
- assert.strictEqual(c.expires, "Infinity");
- assert.equal(c.expires, Infinity);
- }
- }
- },
- "maxAge serialization": {
- topic: function() {
- return function(toSet) {
- var c = new Cookie();
- c.key = 'foo'; c.value = 'bar';
- c.setMaxAge(toSet);
- return JSON.stringify(c);
- };
- },
- "zero": {
- topic: function(f) { return f(0) },
- "looks good": function(str) {
- assert.match(str, /"maxAge":0/);
- }
- },
- "Infinity": {
- topic: function(f) { return f(Infinity) },
- "looks good": function(str) {
- assert.match(str, /"maxAge":"Infinity"/);
- }
- },
- "-Infinity": {
- topic: function(f) { return f(-Infinity) },
- "looks good": function(str) {
- assert.match(str, /"maxAge":"-Infinity"/);
- }
- },
- "null": {
- topic: function(f) { return f(null) },
- "absent": function(str) {
- assert.match(str, /(?!"maxAge":null)/); // NB: negative RegExp
- }
- }
- },
- "maxAge deserialization": {
- "number": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":123}'),
- "is the number": function(c) {
- assert.strictEqual(c.maxAge, 123);
- }
- },
- "null": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":null}'),
- "is null": function(c) {
- assert.strictEqual(c.maxAge, null);
- }
- },
- "less than zero": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":-123}'),
- "is -123": function(c) {
- assert.strictEqual(c.maxAge, -123);
- }
- },
- "Infinity": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"Infinity"}'),
- "is inf-as-string": function(c) {
- assert.strictEqual(c.maxAge, "Infinity");
- }
- },
- "-Infinity": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"-Infinity"}'),
- "is inf-as-string": function(c) {
- assert.strictEqual(c.maxAge, "-Infinity");
- }
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js b/node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js
deleted file mode 100644
index b7ad10da1..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-vows
- .describe('Cookie.toString()')
- .addBatch({
- "a simple cookie": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b');
- }
- },
- "a cookie with spaces in the value": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'beta gamma';
- return c;
- },
- "doesn't validate": function (c) {
- assert.ok(!c.validate());
- },
- "'garbage in, garbage out'": function (c) {
- assert.equal(c.toString(), 'a=beta gamma');
- }
- },
- "with an empty value and HttpOnly": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.httpOnly = true;
- return c;
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=; HttpOnly');
- }
- },
- "with an expiry": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.setExpires("Oct 18 2011 07:05:03 GMT");
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT');
- },
- "to short string": function (c) {
- assert.equal(c.cookieString(), 'a=b');
- }
- },
- "with a max-age": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.setExpires("Oct 18 2011 07:05:03 GMT");
- c.maxAge = 12345;
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate()); // mabe this one *shouldn't*?
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345');
- }
- },
- "with a bunch of things": function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.setExpires("Oct 18 2011 07:05:03 GMT");
- c.maxAge = 12345;
- c.domain = 'example.com';
- c.path = '/foo';
- c.secure = true;
- c.httpOnly = true;
- c.extensions = ['MyExtension'];
- assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345; Domain=example.com; Path=/foo; Secure; HttpOnly; MyExtension');
- },
- "a host-only cookie": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.hostOnly = true;
- c.domain = 'shouldnt-stringify.example.com';
- c.path = '/should-stringify';
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b; Path=/should-stringify');
- }
- },
- "minutes are '10'": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.expires = new Date(1284113410000);
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- var str = c.toString();
- assert.notEqual(str, 'a=b; Expires=Fri, 010 Sep 2010 010:010:010 GMT');
- assert.equal(str, 'a=b; Expires=Fri, 10 Sep 2010 10:10:10 GMT');
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/date_test.js b/node_modules/request/node_modules/tough-cookie/test/date_test.js
deleted file mode 100644
index afd989c54..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/date_test.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-
-function dateVows(table) {
- var theVows = {};
- Object.keys(table).forEach(function (date) {
- var expect = table[date];
- theVows[date] = function () {
- var got = tough.parseDate(date) ? 'valid' : 'invalid';
- assert.equal(got, expect ? 'valid' : 'invalid');
- };
- });
- return {"date parsing": theVows};
-}
-
-vows
- .describe('Date')
- .addBatch(dateVows({
- "Wed, 09 Jun 2021 10:18:14 GMT": true,
- "Wed, 09 Jun 2021 22:18:14 GMT": true,
- "Tue, 18 Oct 2011 07:42:42.123 GMT": true,
- "18 Oct 2011 07:42:42 GMT": true,
- "8 Oct 2011 7:42:42 GMT": true,
- "8 Oct 2011 7:2:42 GMT": true,
- "Oct 18 2011 07:42:42 GMT": true,
- "Tue Oct 18 2011 07:05:03 GMT+0000 (GMT)": true,
- "09 Jun 2021 10:18:14 GMT": true,
- "99 Jix 3038 48:86:72 ZMT": false,
- '01 Jan 1970 00:00:00 GMT': true,
- '01 Jan 1600 00:00:00 GMT': false, // before 1601
- '01 Jan 1601 00:00:00 GMT': true,
- '10 Feb 81 13:00:00 GMT': true, // implicit year
- 'Thu, 17-Apr-2014 02:12:29 GMT': true, // dashes
- 'Thu, 17-Apr-2014 02:12:29 UTC': true // dashes and UTC
- }))
- .addBatch({
- "strict date parse of Thu, 01 Jan 1970 00:00:010 GMT": {
- topic: function () {
- return tough.parseDate('Thu, 01 Jan 1970 00:00:010 GMT', true) ? true : false;
- },
- "invalid": function (date) {
- assert.equal(date, false);
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js b/node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js
deleted file mode 100644
index 36b85b9b3..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js
+++ /dev/null
@@ -1,201 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-function matchVows(func, table) {
- var theVows = {};
- table.forEach(function (item) {
- var str = item[0];
- var dom = item[1];
- var expect = item[2];
- var label = str + (expect ? " matches " : " doesn't match ") + dom;
- theVows[label] = function () {
- assert.equal(func(str, dom), expect);
- };
- });
- return theVows;
-}
-
-function defaultPathVows(table) {
- var theVows = {};
- table.forEach(function (item) {
- var str = item[0];
- var expect = item[1];
- var label = str + " gives " + expect;
- theVows[label] = function () {
- assert.equal(tough.defaultPath(str), expect);
- };
- });
- return theVows;
-}
-
-vows
- .describe('Domain and Path')
- .addBatch({
- "domain normalization": {
- "simple": function () {
- var c = new Cookie();
- c.domain = "EXAMPLE.com";
- assert.equal(c.canonicalizedDomain(), "example.com");
- },
- "extra dots": function () {
- var c = new Cookie();
- c.domain = ".EXAMPLE.com";
- assert.equal(c.cdomain(), "example.com");
- },
- "weird trailing dot": function () {
- var c = new Cookie();
- c.domain = "EXAMPLE.ca.";
- assert.equal(c.canonicalizedDomain(), "example.ca.");
- },
- "weird internal dots": function () {
- var c = new Cookie();
- c.domain = "EXAMPLE...ca.";
- assert.equal(c.canonicalizedDomain(), "example...ca.");
- },
- "IDN": function () {
- var c = new Cookie();
- c.domain = "δοκιμή.δοκιμή"; // "test.test" in greek
- assert.equal(c.canonicalizedDomain(), "xn--jxalpdlp.xn--jxalpdlp");
- }
- }
- })
- .addBatch({
- "Domain Match": matchVows(tough.domainMatch, [
- // str, dom, expect
- ["example.com", "example.com", true],
- ["eXaMpLe.cOm", "ExAmPlE.CoM", true],
- ["no.ca", "yes.ca", false],
- ["wwwexample.com", "example.com", false],
- ["www.example.com", "example.com", true],
- ["example.com", "www.example.com", false],
- ["www.subdom.example.com", "example.com", true],
- ["www.subdom.example.com", "subdom.example.com", true],
- ["example.com", "example.com.", false], // RFC6265 S4.1.2.3
- ["192.168.0.1", "168.0.1", false], // S5.1.3 "The string is a host name"
- [null, "example.com", null],
- ["example.com", null, null],
- [null, null, null],
- [undefined, undefined, null],
- ])
- })
-
- .addBatch({
- "default-path": defaultPathVows([
- [null, "/"],
- ["/", "/"],
- ["/file", "/"],
- ["/dir/file", "/dir"],
- ["noslash", "/"],
- ])
- })
- .addBatch({
- "Path-Match": matchVows(tough.pathMatch, [
- // request, cookie, match
- ["/", "/", true],
- ["/dir", "/", true],
- ["/", "/dir", false],
- ["/dir/", "/dir/", true],
- ["/dir/file", "/dir/", true],
- ["/dir/file", "/dir", true],
- ["/directory", "/dir", false],
- ])
- })
- .addBatch({
- "permuteDomain": {
- "base case": {
- topic: tough.permuteDomain.bind(null, 'example.com'),
- "got the domain": function (list) {
- assert.deepEqual(list, ['example.com']);
- }
- },
- "two levels": {
- topic: tough.permuteDomain.bind(null, 'foo.bar.example.com'),
- "got three things": function (list) {
- assert.deepEqual(list, ['example.com', 'bar.example.com', 'foo.bar.example.com']);
- }
- },
- "local domain": {
- topic: tough.permuteDomain.bind(null, 'foo.bar.example.localduhmain'),
- "got three things": function (list) {
- assert.deepEqual(list, ['example.localduhmain', 'bar.example.localduhmain', 'foo.bar.example.localduhmain']);
- }
- }
- },
- "permutePath": {
- "base case": {
- topic: tough.permutePath.bind(null, '/'),
- "just slash": function (list) {
- assert.deepEqual(list, ['/']);
- }
- },
- "single case": {
- topic: tough.permutePath.bind(null, '/foo'),
- "two things": function (list) {
- assert.deepEqual(list, ['/foo', '/']);
- },
- "path matching": function (list) {
- list.forEach(function (e) {
- assert.ok(tough.pathMatch('/foo', e));
- });
- }
- },
- "double case": {
- topic: tough.permutePath.bind(null, '/foo/bar'),
- "four things": function (list) {
- assert.deepEqual(list, ['/foo/bar', '/foo', '/']);
- },
- "path matching": function (list) {
- list.forEach(function (e) {
- assert.ok(tough.pathMatch('/foo/bar', e));
- });
- }
- },
- "trailing slash": {
- topic: tough.permutePath.bind(null, '/foo/bar/'),
- "three things": function (list) {
- assert.deepEqual(list, ['/foo/bar', '/foo', '/']);
- },
- "path matching": function (list) {
- list.forEach(function (e) {
- assert.ok(tough.pathMatch('/foo/bar/', e));
- });
- }
- }
- }
- })
- .export(module);
-
diff --git a/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json b/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json
deleted file mode 100644
index bc43160da..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json
+++ /dev/null
@@ -1,168 +0,0 @@
-[
- {
- "test": "Sat, 15-Apr-17 21:01:22 GMT",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Thu, 19-Apr-2007 16:00:00 GMT",
- "expected": "Thu, 19 Apr 2007 16:00:00 GMT"
- }, {
- "test": "Wed, 25 Apr 2007 21:02:13 GMT",
- "expected": "Wed, 25 Apr 2007 21:02:13 GMT"
- }, {
- "test": "Thu, 19/Apr\\2007 16:00:00 GMT",
- "expected": "Thu, 19 Apr 2007 16:00:00 GMT"
- }, {
- "test": "Fri, 1 Jan 2010 01:01:50 GMT",
- "expected": "Fri, 01 Jan 2010 01:01:50 GMT"
- }, {
- "test": "Wednesday, 1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": ", 1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": " 1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": "1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": "Wed,18-Apr-07 22:50:12 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "WillyWonka , 18-Apr-07 22:50:12 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "WillyWonka , 18-Apr-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "WillyWonka , 18-apr-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Mon, 18-Apr-1977 22:50:13 GMT",
- "expected": "Mon, 18 Apr 1977 22:50:13 GMT"
- }, {
- "test": "Mon, 18-Apr-77 22:50:13 GMT",
- "expected": "Mon, 18 Apr 1977 22:50:13 GMT"
- }, {
- "test": "\"Sat, 15-Apr-17\\\"21:01:22\\\"GMT\"",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Partyday, 18- April-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Partyday, 18 - Apri-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Wednes, 1-Januar-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT-2",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT BLAH",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT-0400",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT-0400 (EDT)",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 DST",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 -0400",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 (hello there)",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 11:22:33",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 ::00 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 boink:z 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 91:22:33 21:01:22",
- "expected": null
- }, {
- "test": "Thu Apr 18 22:50:12 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "22:50:12 Thu Apr 18 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu 22:50:12 Apr 18 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 22:50:12 18 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 18 22:50:12 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 18 2007 22:50:12 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 18 2007 GMT 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15-Sat, Apr-17 21:01:22 GMT",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15-Sat, Apr 21:01:22 GMT 17",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15-Sat, Apr 21:01:22 GMT 2017",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15 Apr 21:01:22 2017",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15 17 Apr 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Apr 15 17 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Apr 15 21:01:22 17",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "2017 April 15 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15 April 2017 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "98 April 17 21:01:22",
- "expected": null
- }, {
- "test": "Thu, 012-Aug-2008 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 12-Aug-31841 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 12-Aug-9999999999 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 999999999999-Aug-2007 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 12-Aug-2007 20:61:99999999999 GMT",
- "expected": null
- }, {
- "test": "IAintNoDateFool",
- "expected": null
- }
-]
diff --git a/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json b/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json
deleted file mode 100644
index 61e674d44..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json
+++ /dev/null
@@ -1,48 +0,0 @@
-[
- {
- "test": "Mon, 10-Dec-2007 17:02:24 GMT",
- "expected": "Mon, 10 Dec 2007 17:02:24 GMT"
- }, {
- "test": "Wed, 09 Dec 2009 16:27:23 GMT",
- "expected": "Wed, 09 Dec 2009 16:27:23 GMT"
- }, {
- "test": "Thursday, 01-Jan-1970 00:00:00 GMT",
- "expected": "Thu, 01 Jan 1970 00:00:00 GMT"
- }, {
- "test": "Mon Dec 10 16:32:30 2007 GMT",
- "expected": "Mon, 10 Dec 2007 16:32:30 GMT"
- }, {
- "test": "Wednesday, 01-Jan-10 00:00:00 GMT",
- "expected": "Fri, 01 Jan 2010 00:00:00 GMT"
- }, {
- "test": "Mon, 10-Dec-07 20:35:03 GMT",
- "expected": "Mon, 10 Dec 2007 20:35:03 GMT"
- }, {
- "test": "Wed, 1 Jan 2020 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2020 00:00:00 GMT"
- }, {
- "test": "Saturday, 8-Dec-2012 21:24:09 GMT",
- "expected": "Sat, 08 Dec 2012 21:24:09 GMT"
- }, {
- "test": "Thu, 31 Dec 23:55:55 2037 GMT",
- "expected": "Thu, 31 Dec 2037 23:55:55 GMT"
- }, {
- "test": "Sun, 9 Dec 2012 13:42:05 GMT",
- "expected": "Sun, 09 Dec 2012 13:42:05 GMT"
- }, {
- "test": "Wed Dec 12 2007 08:44:07 GMT-0500 (EST)",
- "expected": "Wed, 12 Dec 2007 08:44:07 GMT"
- }, {
- "test": "Mon, 01-Jan-2011 00: 00:00 GMT",
- "expected": null
- }, {
- "test": "Sun, 1-Jan-1995 00:00:00 GMT",
- "expected": "Sun, 01 Jan 1995 00:00:00 GMT"
- }, {
- "test": "Wednesday, 01-Jan-10 0:0:00 GMT",
- "expected": "Fri, 01 Jan 2010 00:00:00 GMT"
- }, {
- "test": "Thu, 10 Dec 2009 13:57:2 GMT",
- "expected": "Thu, 10 Dec 2009 13:57:02 GMT"
- }
-]
diff --git a/node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json b/node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json
deleted file mode 100644
index 783f660bf..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json
+++ /dev/null
@@ -1,1959 +0,0 @@
-[
- {
- "test": "0001",
- "received": [
- "foo=bar"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0002",
- "received": [
- "foo=bar; Expires=Fri, 07 Aug 2019 08:04:19 GMT"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0003",
- "received": [
- "foo=bar; Expires=Fri, 07 Aug 2007 08:04:19 GMT",
- "foo2=bar2; Expires=Fri, 07 Aug 2017 08:04:19 GMT"
- ],
- "sent": [
- { "name": "foo2", "value": "bar2" }
- ]
- },
- {
- "test": "0004",
- "received": [
- "foo"
- ],
- "sent": []
- },
- {
- "test": "0005",
- "received": [
- "foo=bar; max-age=10000;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0006",
- "received": [
- "foo=bar; max-age=0;"
- ],
- "sent": []
- },
- {
- "test": "0007",
- "received": [
- "foo=bar; version=1;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0008",
- "received": [
- "foo=bar; version=1000;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0009",
- "received": [
- "foo=bar; customvalue=1000;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0010",
- "received": [
- "foo=bar; secure;"
- ],
- "sent": []
- },
- {
- "test": "0011",
- "received": [
- "foo=bar; customvalue=\"1000 or more\";"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0012",
- "received": [
- "foo=bar; customvalue=\"no trailing semicolon\""
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0013",
- "received": [
- "foo=bar",
- "foo=qux"
- ],
- "sent": [
- { "name": "foo", "value": "qux" }
- ]
- },
- {
- "test": "0014",
- "received": [
- "foo1=bar",
- "foo2=qux"
- ],
- "sent": [
- { "name": "foo1", "value": "bar" },
- { "name": "foo2", "value": "qux" }
- ]
- },
- {
- "test": "0015",
- "received": [
- "a=b",
- "z=y"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "z", "value": "y" }
- ]
- },
- {
- "test": "0016",
- "received": [
- "z=y",
- "a=b"
- ],
- "sent": [
- { "name": "z", "value": "y" },
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "0017",
- "received": [
- "z=y, a=b"
- ],
- "sent": [
- { "name": "z", "value": "y, a=b" }
- ]
- },
- {
- "test": "0018",
- "received": [
- "z=y; foo=bar, a=b"
- ],
- "sent": [
- { "name": "z", "value": "y" }
- ]
- },
- {
- "test": "0019",
- "received": [
- "foo=b;max-age=3600, c=d;path=/"
- ],
- "sent": [
- { "name": "foo", "value": "b" }
- ]
- },
- {
- "test": "0020",
- "received": [
- "a=b",
- "=",
- "c=d"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "c", "value": "d" }
- ]
- },
- {
- "test": "0021",
- "received": [
- "a=b",
- "=x",
- "c=d"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "c", "value": "d" }
- ]
- },
- {
- "test": "0022",
- "received": [
- "a=b",
- "x=",
- "c=d"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "x", "value": "" },
- { "name": "c", "value": "d" }
- ]
- },
- {
- "test": "0023",
- "received": [
- "foo",
- ""
- ],
- "sent": []
- },
- {
- "test": "0024",
- "received": [
- "foo",
- "="
- ],
- "sent": []
- },
- {
- "test": "0025",
- "received": [
- "foo",
- "; bar"
- ],
- "sent": []
- },
- {
- "test": "0026",
- "received": [
- "foo",
- " "
- ],
- "sent": []
- },
- {
- "test": "0027",
- "received": [
- "foo",
- "bar"
- ],
- "sent": []
- },
- {
- "test": "0028",
- "received": [
- "foo",
- "\t"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0001",
- "received": [
- "foo=bar; Secure"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0002",
- "received": [
- "foo=bar; seCURe"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0003",
- "received": [
- "foo=bar; \"Secure\""
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0004",
- "received": [
- "foo=bar; Secure="
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0005",
- "received": [
- "foo=bar; Secure=aaaa"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0006",
- "received": [
- "foo=bar; Secure qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0007",
- "received": [
- "foo=bar; Secure =aaaaa"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0008",
- "received": [
- "foo=bar; Secure= aaaaa"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0009",
- "received": [
- "foo=bar; Secure; qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0010",
- "received": [
- "foo=bar; Secure;qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0011",
- "received": [
- "foo=bar; Secure ; qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0012",
- "received": [
- "foo=bar; Secure"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0013",
- "received": [
- "foo=bar; Secure ;"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0014",
- "received": [
- "foo=bar; Path"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0015",
- "received": [
- "foo=bar; Path="
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0016",
- "received": [
- "foo=bar; Path=/"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0017",
- "received": [
- "foo=bar; Path=/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0018",
- "received": [
- "foo=bar; Path =/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0019",
- "received": [
- "foo=bar; Path= /qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0020",
- "received": [
- "foo=bar; Path=/qux ; taz"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0021",
- "received": [
- "foo=bar; Path=/qux; Path=/"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0022",
- "received": [
- "foo=bar; Path=/; Path=/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0023",
- "received": [
- "foo=bar; Path=/qux; Path=/cookie-parser-result"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0024",
- "received": [
- "foo=bar; Path=/cookie-parser-result; Path=/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0025",
- "received": [
- "foo=bar; qux; Secure"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0026",
- "received": [
- "foo=bar; qux=\"aaa;bbb\"; Secure"
- ],
- "sent": []
- },
- {
- "test": "CHARSET0001",
- "received": [
- "foo=\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c"
- ],
- "sent": [
- { "name": "foo", "value": "\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c" }
- ]
- },
- {
- "test": "CHARSET0002",
- "received": [
- "\u6625\u8282\u56de=\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c"
- ],
- "sent": [
- { "name": "\u6625\u8282\u56de", "value": "\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c" }
- ]
- },
- {
- "test": "CHARSET0003",
- "received": [
- "\u6625\u8282\u56de=\u5bb6\u8def\u00b7\u6625\u8fd0; \u5b8c\u5168\u624b\u518c"
- ],
- "sent": [
- { "name": "\u6625\u8282\u56de", "value": "\u5bb6\u8def\u00b7\u6625\u8fd0" }
- ]
- },
- {
- "test": "CHARSET0004",
- "received": [
- "foo=\"\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c\""
- ],
- "sent": [
- { "name": "foo", "value": "\"\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c\"" }
- ]
- },
- {
- "test": "CHROMIUM0001",
- "received": [
- "a=b"
- ],
- "sent": [
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "CHROMIUM0002",
- "received": [
- "aBc=\"zzz \" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \"" }
- ]
- },
- {
- "test": "CHROMIUM0003",
- "received": [
- "aBc=\"zzz \" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \"" }
- ]
- },
- {
- "test": "CHROMIUM0004",
- "received": [
- "aBc=\"zz;pp\" ; ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zz" }
- ]
- },
- {
- "test": "CHROMIUM0005",
- "received": [
- "aBc=\"zz ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zz" }
- ]
- },
- {
- "test": "CHROMIUM0006",
- "received": [
- "aBc=\"zzz \" \"ppp\" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \" \"ppp\"" }
- ]
- },
- {
- "test": "CHROMIUM0007",
- "received": [
- "aBc=\"zzz \" \"ppp\" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \" \"ppp\"" }
- ]
- },
- {
- "test": "CHROMIUM0008",
- "received": [
- "aBc=A\"B ;"
- ],
- "sent": [
- { "name": "aBc", "value": "A\"B" }
- ]
- },
- {
- "test": "CHROMIUM0009",
- "received": [
- "BLAHHH; path=/;"
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0010",
- "received": [
- "\"BLA\\\"HHH\"; path=/;"
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0011",
- "received": [
- "a=\"B"
- ],
- "sent": [
- { "name": "a", "value": "\"B" }
- ]
- },
- {
- "test": "CHROMIUM0012",
- "received": [
- "=ABC"
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0013",
- "received": [
- "ABC=; path = /"
- ],
- "sent": [
- { "name": "ABC", "value": "" }
- ]
- },
- {
- "test": "CHROMIUM0014",
- "received": [
- " A = BC ;foo;;; bar"
- ],
- "sent": [
- { "name": "A", "value": "BC" }
- ]
- },
- {
- "test": "CHROMIUM0015",
- "received": [
- " A=== BC ;foo;;; bar"
- ],
- "sent": [
- { "name": "A", "value": "== BC" }
- ]
- },
- {
- "test": "CHROMIUM0016",
- "received": [
- "foo=\"zohNumRKgI0oxyhSsV3Z7D\" ; expires=Sun, 18-Apr-2027 21:06:29 GMT ; path=/ ; "
- ],
- "sent": [
- { "name": "foo", "value": "\"zohNumRKgI0oxyhSsV3Z7D\"" }
- ]
- },
- {
- "test": "CHROMIUM0017",
- "received": [
- "foo=zohNumRKgI0oxyhSsV3Z7D ; expires=Sun, 18-Apr-2027 21:06:29 GMT ; path=/ ; "
- ],
- "sent": [
- { "name": "foo", "value": "zohNumRKgI0oxyhSsV3Z7D" }
- ]
- },
- {
- "test": "CHROMIUM0018",
- "received": [
- " "
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0019",
- "received": [
- "a=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- ],
- "sent": [
- { "name": "a", "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
- ]
- },
- {
- "test": "CHROMIUM0021",
- "received": [
- ""
- ],
- "sent": []
- },
- {
- "test": "COMMA0001",
- "received": [
- "foo=bar, baz=qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar, baz=qux" }
- ]
- },
- {
- "test": "COMMA0002",
- "received": [
- "foo=\"bar, baz=qux\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar, baz=qux\"" }
- ]
- },
- {
- "test": "COMMA0003",
- "received": [
- "foo=bar; b,az=qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0004",
- "received": [
- "foo=bar; baz=q,ux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0005",
- "received": [
- "foo=bar; Max-Age=50,399"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0006",
- "received": [
- "foo=bar; Expires=Fri, 07 Aug 2019 08:04:19 GMT"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0007",
- "received": [
- "foo=bar; Expires=Fri 07 Aug 2019 08:04:19 GMT, baz=qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DISABLED_CHROMIUM0020",
- "received": [
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- ],
- "sent": []
- },
- {
- "test": "DISABLED_CHROMIUM0022",
- "received": [
- "AAA=BB\u0000ZYX"
- ],
- "sent": [
- { "name": "AAA", "value": "BB" }
- ]
- },
- {
- "test": "DISABLED_CHROMIUM0023",
- "received": [
- "AAA=BB\rZYX"
- ],
- "sent": [
- { "name": "AAA", "value": "BB" }
- ]
- },
- {
- "test": "DISABLED_PATH0029",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/bar"
- ],
- "sent-to": "/cookie-parser-result/f%6Fo/bar?disabled-path0029",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0001",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0001",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0002",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0002",
- "sent": []
- },
- {
- "test": "DOMAIN0003",
- "received": [
- "foo=bar; domain=.home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0003",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0004",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0004",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0005",
- "received": [
- "foo=bar; domain=.home.example.org"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0005",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0006",
- "received": [
- "foo=bar; domain=.home.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0006",
- "sent": []
- },
- {
- "test": "DOMAIN0007",
- "received": [
- "foo=bar; domain=sibling.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0007",
- "sent": []
- },
- {
- "test": "DOMAIN0008",
- "received": [
- "foo=bar; domain=.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0008",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0009",
- "received": [
- "foo=bar; domain=example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0009",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0010",
- "received": [
- "foo=bar; domain=..home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0010",
- "sent": []
- },
- {
- "test": "DOMAIN0011",
- "received": [
- "foo=bar; domain=home..example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0011",
- "sent": []
- },
- {
- "test": "DOMAIN0012",
- "received": [
- "foo=bar; domain= .home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0012",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0013",
- "received": [
- "foo=bar; domain= . home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0013",
- "sent": []
- },
- {
- "test": "DOMAIN0014",
- "received": [
- "foo=bar; domain=home.example.org."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0014",
- "sent": []
- },
- {
- "test": "DOMAIN0015",
- "received": [
- "foo=bar; domain=home.example.org.."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0015",
- "sent": []
- },
- {
- "test": "DOMAIN0016",
- "received": [
- "foo=bar; domain=home.example.org ."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0016",
- "sent": []
- },
- {
- "test": "DOMAIN0017",
- "received": [
- "foo=bar; domain=.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0017",
- "sent": []
- },
- {
- "test": "DOMAIN0018",
- "received": [
- "foo=bar; domain=.org."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0018",
- "sent": []
- },
- {
- "test": "DOMAIN0019",
- "received": [
- "foo=bar; domain=home.example.org",
- "foo2=bar2; domain=.home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0019",
- "sent": [
- { "name": "foo", "value": "bar" },
- { "name": "foo2", "value": "bar2" }
- ]
- },
- {
- "test": "DOMAIN0020",
- "received": [
- "foo2=bar2; domain=.home.example.org",
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0020",
- "sent": [
- { "name": "foo2", "value": "bar2" },
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0021",
- "received": [
- "foo=bar; domain=\"home.example.org\""
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0021",
- "sent": []
- },
- {
- "test": "DOMAIN0022",
- "received": [
- "foo=bar; domain=home.example.org",
- "foo2=bar2; domain=.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0022",
- "sent": [
- { "name": "foo", "value": "bar" },
- { "name": "foo2", "value": "bar2" }
- ]
- },
- {
- "test": "DOMAIN0023",
- "received": [
- "foo2=bar2; domain=.example.org",
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0023",
- "sent": [
- { "name": "foo2", "value": "bar2" },
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0024",
- "received": [
- "foo=bar; domain=.example.org; domain=home.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0024",
- "sent": []
- },
- {
- "test": "DOMAIN0025",
- "received": [
- "foo=bar; domain=home.example.org; domain=.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0025",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0026",
- "received": [
- "foo=bar; domain=home.eXaMpLe.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0026",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0027",
- "received": [
- "foo=bar; domain=home.example.org:8888"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0027",
- "sent": []
- },
- {
- "test": "DOMAIN0028",
- "received": [
- "foo=bar; domain=subdomain.home.example.org"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0028",
- "sent": []
- },
- {
- "test": "DOMAIN0029",
- "received": [
- "foo=bar"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0029",
- "sent": []
- },
- {
- "test": "DOMAIN0031",
- "received": [
- "foo=bar; domain=home.example.org; domain=.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0031",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0033",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://hoMe.eXaMplE.org:8888/cookie-parser-result?domain0033",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0034",
- "received": [
- "foo=bar; domain=home.example.org; domain=home.example.com"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0034",
- "sent": []
- },
- {
- "test": "DOMAIN0035",
- "received": [
- "foo=bar; domain=home.example.com; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0035",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0036",
- "received": [
- "foo=bar; domain=home.example.org; domain=home.example.com; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0036",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0037",
- "received": [
- "foo=bar; domain=home.example.com; domain=home.example.org; domain=home.example.com"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0037",
- "sent": []
- },
- {
- "test": "DOMAIN0038",
- "received": [
- "foo=bar; domain=home.example.org; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0038",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0039",
- "received": [
- "foo=bar; domain=home.example.org; domain=example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0039",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0040",
- "received": [
- "foo=bar; domain=example.org; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0040",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0041",
- "received": [
- "foo=bar; domain=.sibling.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0041",
- "sent": []
- },
- {
- "test": "DOMAIN0042",
- "received": [
- "foo=bar; domain=.sibling.home.example.org"
- ],
- "sent-to": "http://sibling.home.example.org:8888/cookie-parser-result?domain0042",
- "sent": []
- },
- {
- "test": "MOZILLA0001",
- "received": [
- "foo=bar; max-age=-1"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0002",
- "received": [
- "foo=bar; max-age=0"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0003",
- "received": [
- "foo=bar; expires=Thu, 10 Apr 1980 16:33:12 GMT"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0004",
- "received": [
- "foo=bar; max-age=60"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0005",
- "received": [
- "foo=bar; max-age=-20"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0006",
- "received": [
- "foo=bar; max-age=60"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0007",
- "received": [
- "foo=bar; expires=Thu, 10 Apr 1980 16:33:12 GMT"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0008",
- "received": [
- "foo=bar; max-age=60",
- "foo1=bar; max-age=60"
- ],
- "sent": [
- { "name": "foo", "value": "bar" },
- { "name": "foo1", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0009",
- "received": [
- "foo=bar; max-age=60",
- "foo1=bar; max-age=60",
- "foo=differentvalue; max-age=0"
- ],
- "sent": [
- { "name": "foo1", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0010",
- "received": [
- "foo=bar; max-age=60",
- "foo1=bar; max-age=60",
- "foo=differentvalue; max-age=0",
- "foo2=evendifferentvalue; max-age=0"
- ],
- "sent": [
- { "name": "foo1", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0011",
- "received": [
- "test=parser; domain=.parser.test; ;; ;=; ,,, ===,abc,=; abracadabra! max-age=20;=;;"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0012",
- "received": [
- "test=\"fubar! = foo;bar\\\";\" parser; max-age=6",
- "five; max-age=2.63,"
- ],
- "sent": [
- { "name": "test", "value": "\"fubar! = foo" }
- ]
- },
- {
- "test": "MOZILLA0013",
- "received": [
- "test=kill; max-age=0",
- "five; max-age=0"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0014",
- "received": [
- "six"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0015",
- "received": [
- "six",
- "seven"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0016",
- "received": [
- "six",
- "seven",
- " =eight"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0017",
- "received": [
- "six",
- "seven",
- " =eight",
- "test=six"
- ],
- "sent": [
- { "name": "test", "value": "six" }
- ]
- },
- {
- "test": "NAME0001",
- "received": [
- "a=bar"
- ],
- "sent": [
- { "name": "a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0002",
- "received": [
- "1=bar"
- ],
- "sent": [
- { "name": "1", "value": "bar" }
- ]
- },
- {
- "test": "NAME0003",
- "received": [
- "$=bar"
- ],
- "sent": [
- { "name": "$", "value": "bar" }
- ]
- },
- {
- "test": "NAME0004",
- "received": [
- "!a=bar"
- ],
- "sent": [
- { "name": "!a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0005",
- "received": [
- "@a=bar"
- ],
- "sent": [
- { "name": "@a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0006",
- "received": [
- "#a=bar"
- ],
- "sent": [
- { "name": "#a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0007",
- "received": [
- "$a=bar"
- ],
- "sent": [
- { "name": "$a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0008",
- "received": [
- "%a=bar"
- ],
- "sent": [
- { "name": "%a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0009",
- "received": [
- "^a=bar"
- ],
- "sent": [
- { "name": "^a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0010",
- "received": [
- "&a=bar"
- ],
- "sent": [
- { "name": "&a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0011",
- "received": [
- "*a=bar"
- ],
- "sent": [
- { "name": "*a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0012",
- "received": [
- "(a=bar"
- ],
- "sent": [
- { "name": "(a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0013",
- "received": [
- ")a=bar"
- ],
- "sent": [
- { "name": ")a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0014",
- "received": [
- "-a=bar"
- ],
- "sent": [
- { "name": "-a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0015",
- "received": [
- "_a=bar"
- ],
- "sent": [
- { "name": "_a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0016",
- "received": [
- "+=bar"
- ],
- "sent": [
- { "name": "+", "value": "bar" }
- ]
- },
- {
- "test": "NAME0017",
- "received": [
- "=a=bar"
- ],
- "sent": []
- },
- {
- "test": "NAME0018",
- "received": [
- "a =bar"
- ],
- "sent": [
- { "name": "a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0019",
- "received": [
- "\"a=bar"
- ],
- "sent": [
- { "name": "\"a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0020",
- "received": [
- "\"a=b\"=bar"
- ],
- "sent": [
- { "name": "\"a", "value": "b\"=bar" }
- ]
- },
- {
- "test": "NAME0021",
- "received": [
- "\"a=b\"=bar",
- "\"a=qux"
- ],
- "sent": [
- { "name": "\"a", "value": "qux" }
- ]
- },
- {
- "test": "NAME0022",
- "received": [
- " foo=bar"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "NAME0023",
- "received": [
- "foo;bar=baz"
- ],
- "sent": []
- },
- {
- "test": "NAME0024",
- "received": [
- "$Version=1; foo=bar"
- ],
- "sent": [
- { "name": "$Version", "value": "1" }
- ]
- },
- {
- "test": "NAME0025",
- "received": [
- "===a=bar"
- ],
- "sent": []
- },
- {
- "test": "NAME0026",
- "received": [
- "foo=bar "
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "NAME0027",
- "received": [
- "foo=bar ;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "NAME0028",
- "received": [
- "=a"
- ],
- "sent": []
- },
- {
- "test": "NAME0029",
- "received": [
- "="
- ],
- "sent": []
- },
- {
- "test": "NAME0030",
- "received": [
- "foo bar=baz"
- ],
- "sent": [
- { "name": "foo bar", "value": "baz" }
- ]
- },
- {
- "test": "NAME0031",
- "received": [
- "\"foo;bar\"=baz"
- ],
- "sent": []
- },
- {
- "test": "NAME0032",
- "received": [
- "\"foo\\\"bar;baz\"=qux"
- ],
- "sent": []
- },
- {
- "test": "NAME0033",
- "received": [
- "=foo=bar",
- "aaa"
- ],
- "sent": []
- },
- {
- "test": "OPTIONAL_DOMAIN0030",
- "received": [
- "foo=bar; domain="
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?optional-domain0030",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "OPTIONAL_DOMAIN0041",
- "received": [
- "foo=bar; domain=example.org; domain="
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?optional-domain0041",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "OPTIONAL_DOMAIN0042",
- "received": [
- "foo=bar; domain=foo.example.org; domain="
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?optional-domain0042",
- "sent": []
- },
- {
- "test": "OPTIONAL_DOMAIN0043",
- "received": [
- "foo=bar; domain=foo.example.org; domain="
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?optional-domain0043",
- "sent": []
- },
- {
- "test": "ORDERING0001",
- "received": [
- "key=val0;",
- "key=val1; path=/cookie-parser-result",
- "key=val2; path=/",
- "key=val3; path=/bar",
- "key=val4; domain=.example.org",
- "key=val5; domain=.example.org; path=/cookie-parser-result/foo"
- ],
- "sent-to": "/cookie-parser-result/foo/baz?ordering0001",
- "sent": [
- { "name": "key", "value": "val5" },
- { "name": "key", "value": "val1" },
- { "name": "key", "value": "val2" },
- { "name": "key", "value": "val4" }
- ]
- },
- {
- "test": "PATH0001",
- "received": [
- "a=b; path=/",
- "x=y; path=/cookie-parser-result"
- ],
- "sent": [
- { "name": "x", "value": "y" },
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "PATH0002",
- "received": [
- "a=b; path=/cookie-parser-result",
- "x=y; path=/"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "x", "value": "y" }
- ]
- },
- {
- "test": "PATH0003",
- "received": [
- "x=y; path=/",
- "a=b; path=/cookie-parser-result"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "x", "value": "y" }
- ]
- },
- {
- "test": "PATH0004",
- "received": [
- "x=y; path=/cookie-parser-result",
- "a=b; path=/"
- ],
- "sent": [
- { "name": "x", "value": "y" },
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "PATH0005",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo"
- ],
- "sent": []
- },
- {
- "test": "PATH0006",
- "received": [
- "foo=bar",
- "foo=qux; path=/cookie-parser-result/foo"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0007",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo"
- ],
- "sent-to": "/cookie-parser-result/foo?path0007",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0008",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo"
- ],
- "sent-to": "/cookie-parser-result/bar?path0008",
- "sent": []
- },
- {
- "test": "PATH0009",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/foo?path0009",
- "sent": []
- },
- {
- "test": "PATH0010",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0010",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0011",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/bar/qux?path0011",
- "sent": []
- },
- {
- "test": "PATH0012",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/foo/baz?path0012",
- "sent": []
- },
- {
- "test": "PATH0013",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux/"
- ],
- "sent-to": "/cookie-parser-result/foo/baz?path0013",
- "sent": []
- },
- {
- "test": "PATH0014",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux/"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0014",
- "sent": []
- },
- {
- "test": "PATH0015",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux/"
- ],
- "sent-to": "/cookie-parser-result/foo/qux/?path0015",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0016",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0016",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0017",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/"
- ],
- "sent-to": "/cookie-parser-result/foo//qux?path0017",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0018",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/"
- ],
- "sent-to": "/cookie-parser-result/fooqux?path0018",
- "sent": []
- },
- {
- "test": "PATH0019",
- "received": [
- "foo=bar; path"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0020",
- "received": [
- "foo=bar; path="
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0021",
- "received": [
- "foo=bar; path=/"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0022",
- "received": [
- "foo=bar; path= /"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0023",
- "received": [
- "foo=bar; Path=/cookie-PARSER-result"
- ],
- "sent": []
- },
- {
- "test": "PATH0024",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux?"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0024",
- "sent": []
- },
- {
- "test": "PATH0025",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux#"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0025",
- "sent": []
- },
- {
- "test": "PATH0026",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux;"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0026",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0027",
- "received": [
- "foo=bar; path=\"/cookie-parser-result/foo/qux;\""
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0027",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0028",
- "received": [
- "foo=bar; path=/cookie-parser-result/f%6Fo/bar"
- ],
- "sent-to": "/cookie-parser-result/foo/bar?path0028",
- "sent": []
- },
- {
- "test": "PATH0029",
- "received": [
- "a=b; \tpath\t=\t/cookie-parser-result\t",
- "x=y; \tpath\t=\t/book\t"
- ],
- "sent": [
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "PATH0030",
- "received": [
- "foo=bar; path=/dog; path="
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0031",
- "received": [
- "foo=bar; path=; path=/dog"
- ],
- "sent": []
- },
- {
- "test": "PATH0032",
- "received": [
- "foo=bar; path=/cookie-parser-result",
- "foo=qux; path=/cookie-parser-result/"
- ],
- "sent-to": "/cookie-parser-result/dog?path0032",
- "sent": [
- { "name": "foo", "value": "qux" },
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "VALUE0001",
- "received": [
- "foo= bar"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "VALUE0002",
- "received": [
- "foo=\"bar\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar\"" }
- ]
- },
- {
- "test": "VALUE0003",
- "received": [
- "foo=\" bar \""
- ],
- "sent": [
- { "name": "foo", "value": "\" bar \"" }
- ]
- },
- {
- "test": "VALUE0004",
- "received": [
- "foo=\"bar;baz\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar" }
- ]
- },
- {
- "test": "VALUE0005",
- "received": [
- "foo=\"bar=baz\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar=baz\"" }
- ]
- },
- {
- "test": "VALUE0006",
- "received": [
- "\tfoo\t=\tbar\t \t;\tttt"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- }
-]
diff --git a/node_modules/request/node_modules/tough-cookie/test/ietf_test.js b/node_modules/request/node_modules/tough-cookie/test/ietf_test.js
deleted file mode 100644
index 8bd41dd65..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/ietf_test.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var fs = require('fs');
-var path = require('path');
-var url = require('url');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-function readJson(filePath) {
- filePath = path.join(__dirname, filePath);
- return JSON.parse(fs.readFileSync(filePath).toString());
-}
-
-function setGetCookieVows() {
- var theVows = {};
- var data = readJson('./ietf_data/parser.json');
-
- data.forEach(function (testCase) {
- theVows[testCase.test] = function () {
- var jar = new CookieJar();
- var expected = testCase['sent']
- var sentFrom = 'http://home.example.org/cookie-parser?' + testCase.test;
- var sentTo = testCase['sent-to'] ?
- url.resolve('http://home.example.org', testCase['sent-to']) :
- 'http://home.example.org/cookie-parser-result?' + testCase.test;
-
- testCase['received'].forEach(function (cookieStr) {
- jar.setCookieSync(cookieStr, sentFrom, {ignoreError: true});
- });
-
- var actual = jar.getCookiesSync(sentTo,{sort:true});
-
- assert.strictEqual(actual.length, expected.length);
-
- actual.forEach(function (actualCookie, idx) {
- var expectedCookie = expected[idx];
- assert.strictEqual(actualCookie.key, expectedCookie.name);
- assert.strictEqual(actualCookie.value, expectedCookie.value);
- });
- };
- });
-
- return {'Set/get cookie tests': theVows};
-}
-
-function dateVows() {
- var theVows = {};
-
- [
- './ietf_data/dates/bsd-examples.json',
- './ietf_data/dates/examples.json'
- ].forEach(function (filePath) {
- var data = readJson(filePath);
- var fileName = path.basename(filePath);
-
- data.forEach(function (testCase) {
- theVows[fileName + ' : ' + testCase.test] = function () {
- var actual = tough.parseDate(testCase.test);
- actual = actual ? actual.toUTCString() : null;
- assert.strictEqual(actual, testCase.expected);
- };
- });
- });
-
- return {'Date': theVows};
-}
-
-vows
- .describe('IETF http state tests')
- .addBatch(setGetCookieVows())
- .addBatch(dateVows())
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js b/node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js
deleted file mode 100644
index 277c90c8f..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js
+++ /dev/null
@@ -1,348 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-var Store = tough.Store;
-var MemoryCookieStore = tough.MemoryCookieStore;
-var VERSION = require('../package.json').version;
-
-var domains = ['example.com','www.example.com','example.net'];
-var paths = ['/','/foo','/foo/bar'];
-
-var isInteger = Number.isInteger || function(value) {
- // Node 0.10 (still supported) doesn't have Number.isInteger
- // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
- return typeof value === "number" &&
- isFinite(value) &&
- Math.floor(value) === value;
-};
-
-function setUp(context) {
- context.now = new Date();
- context.nowISO = context.now.toISOString();
- context.expires = new Date(context.now.getTime() + 86400000);
-
- var c, domain;
- context.jar = new CookieJar();
-
- context.totalCookies = 0;
-
- // Do paths first since the MemoryCookieStore index is domain at the top
- // level. This should cause the preservation of creation order in
- // getAllCookies to be exercised.
- for (var i = 0; i<paths.length; i++) {
- var path = paths[i];
- for (var j = 0; j<domains.length; j++) {
- domain = domains[j];
- c = new Cookie({
- expires: context.expires,
- domain: domain,
- path: path,
- key: 'key',
- value: 'value'+j+i
- });
- context.jar.setCookieSync(c, 'http://'+domain+'/', {now: context.now});
- context.totalCookies++;
- }
- }
-
- // corner cases
- domain = 'example.com';
- var cornerCases = [
- { expires: 'Infinity', key: 'infExp', value: 'infExp' },
- { maxAge: 3600, key: 'max', value: 'max' },
- { expires: context.expires, key: 'flags', value: 'flags',
- secure: true, httpOnly: true },
- { expires: context.expires, key: 'honly', value: 'honly',
- hostOnly: true, domain: 'www.example.org' },
- ];
-
- for (var i = 0; i<cornerCases.length; i++) {
- cornerCases[i].domain = cornerCases[i].domain || 'example.org';
- cornerCases[i].path = '/';
- c = new Cookie(cornerCases[i]);
- context.jar.setCookieSync(c, 'https://www.example.org/', {now: context.now});
- context.totalCookies++;
- }
-}
-
-function checkMetadata(serialized) {
- assert.notEqual(serialized, null);
- assert.isObject(serialized);
- assert.equal(serialized.version, 'tough-cookie@'+VERSION);
- assert.equal(serialized.storeType, 'MemoryCookieStore');
- assert.typeOf(serialized.rejectPublicSuffixes, 'boolean');
- assert.isArray(serialized.cookies);
-}
-
-var serializedCookiePropTypes = {
- 'key': 'string',
- 'value': 'string',
- 'expires': 'isoDate', // if "Infinity" it's supposed to be missing
- 'maxAge': 'intOrInf',
- 'domain': 'string',
- 'path': 'string',
- 'secure': 'boolean',
- 'httpOnly': 'boolean',
- 'extensions': 'array', // of strings, technically
- 'hostOnly': 'boolean',
- 'pathIsDefault': 'boolean',
- 'creation': 'isoDate',
- 'lastAccessed': 'isoDate'
-};
-
-function validateSerializedCookie(cookie) {
- assert.isObject(cookie);
- assert.isFalse(cookie instanceof Cookie);
-
- Object.keys(cookie).forEach(function(prop) {
- var type = serializedCookiePropTypes[prop];
- switch(type) {
- case 'string':
- case 'boolean':
- case 'array':
- case 'number':
- assert.typeOf(cookie[prop], type);
- break;
-
- case 'intOrInf':
- if (cookie[prop] === 'Infinity' || cookie[prop] === '-Infinity') {
- assert(true);
- } else {
- assert(isInteger(cookie[prop]),
- "serialized property isn't integer: "+prop);
- }
- break;
-
- case 'isoDate':
- // rather than a regexp, assert it's parsable and equal
- var parsed = Date.parse(cookie[prop]);
- assert(parsed, 'could not parse serialized date property');
- // assert.equals(cookie[prop], parsed.toISOString());
- break;
-
- default:
- assert.fail("unexpected serialized property: "+prop);
- }
- });
-
-}
-
-vows
- .describe('CookieJar serialization')
- .addBatch({
- "Assumptions:": {
- "serializableProperties all accounted for": function() {
- var actualKeys = Cookie.serializableProperties.concat([]); // copy
- actualKeys.sort();
- var expectedKeys = Object.keys(serializedCookiePropTypes);
- expectedKeys.sort();
- assert.deepEqual(actualKeys, expectedKeys);
- }
- }
- })
- .addBatch({
- "For Stores without getAllCookies": {
- topic: function() {
- var store = new Store();
- store.synchronous = true;
- var jar = new CookieJar(store);
- return jar;
- },
- "Cannot call toJSON": function(jar) {
- assert.throws(function() {
- jar.toJSON();
- }, 'getAllCookies is not implemented (therefore jar cannot be serialized)');
- }
- }
- })
- .addBatch({
- "For async stores": {
- topic: function() {
- var store = new MemoryCookieStore();
- store.synchronous = false; // pretend it's async
- var jar = new CookieJar(store);
- return jar;
- },
- "Cannot call toJSON": function(jar) {
- assert.throws(function() {
- jar.toJSON();
- }, 'CookieJar store is not synchronous; use async API instead.');
- }
- }
- })
- .addBatch({
- "With a small store": {
- topic: function() {
- var now = this.now = new Date();
- this.jar = new CookieJar();
- // domain cookie with custom extension
- var cookie = Cookie.parse('sid=one; domain=example.com; path=/; fubar');
- this.jar.setCookieSync(cookie, 'http://example.com/', {now: this.now});
-
- cookie = Cookie.parse('sid=two; domain=example.net; path=/; fubar');
- this.jar.setCookieSync(cookie, 'http://example.net/', {now: this.now});
-
- return this.jar;
- },
-
- "serialize synchronously": {
- topic: function(jar) {
- return jar.serializeSync();
- },
- "it gives a serialization with the two cookies": function(data) {
- checkMetadata(data);
- assert.equal(data.cookies.length, 2);
- data.cookies.forEach(function(cookie) {
- validateSerializedCookie(cookie);
- });
- },
- "then deserialize": {
- topic: function(data) {
- return CookieJar.deserializeSync(data);
- },
- "memstores are identical": function(newJar) {
- assert.deepEqual(this.jar.store, newJar.store);
- }
- }
- },
-
- "serialize asynchronously": {
- topic: function(jar) {
- jar.serialize(this.callback);
- },
- "it gives a serialization with the two cookies": function(data) {
- checkMetadata(data);
- assert.equal(data.cookies.length, 2);
- data.cookies.forEach(function(cookie) {
- validateSerializedCookie(cookie);
- });
- },
- "then deserialize": {
- topic: function(data) {
- CookieJar.deserialize(data, this.callback);
- },
- "memstores are identical": function(newJar) {
- assert.deepEqual(this.jar.store, newJar.store);
- }
- }
- }
- }
- })
- .addBatch({
- "With a moderately-sized store": {
- topic: function() {
- setUp(this);
- this.jar.serialize(this.callback);
- },
- "has expected metadata": function(err,jsonObj) {
- assert.isNull(err);
- assert.equal(jsonObj.version, 'tough-cookie@'+VERSION);
- assert.isTrue(jsonObj.rejectPublicSuffixes);
- assert.equal(jsonObj.storeType, 'MemoryCookieStore');
- },
- "has a bunch of objects as 'raw' cookies": function(jsonObj) {
- assert.isArray(jsonObj.cookies);
- assert.equal(jsonObj.cookies.length, this.totalCookies);
-
- jsonObj.cookies.forEach(function(cookie) {
- validateSerializedCookie(cookie);
-
- if (cookie.key === 'key') {
- assert.match(cookie.value, /^value\d\d/);
- }
-
- if (cookie.key === 'infExp' || cookie.key === 'max') {
- assert.isUndefined(cookie.expires);
- } else {
- assert.strictEqual(cookie.expires, this.expires.toISOString())
- }
-
- if (cookie.key === 'max') {
- assert.strictEqual(cookie.maxAge, 3600);
- } else {
- assert.isUndefined(cookie.maxAge);
- }
-
- assert.equal(cookie.hostOnly, cookie.key === 'honly');
-
- if (cookie.key === 'flags') {
- assert.isTrue(cookie.secure);
- assert.isTrue(cookie.httpOnly);
- } else {
- assert.isUndefined(cookie.secure);
- assert.isUndefined(cookie.httpOnly);
- }
-
- assert.strictEqual(cookie.creation, this.nowISO);
- assert.strictEqual(cookie.lastAccessed, this.nowISO);
-
- }, this);
- },
-
- "then taking it for a round-trip": {
- topic: function(jsonObj) {
- CookieJar.deserialize(jsonObj, this.callback);
- },
- "memstore index is identical": function(err,newJar) {
- assert.deepEqual(newJar.store.idx, this.jar.store.idx);
- },
- "then spot-check retrieval": {
- topic: function(newJar) {
- newJar.getCookies('http://example.org/', this.callback);
- },
- "gets expected cookies": function(results) {
- assert.isArray(results);
- assert.equal(results.length, 2);
-
- results.forEach(function(cookie) {
- assert.instanceOf(cookie, Cookie);
-
- if (cookie.key === 'infExp') {
- assert.strictEqual(cookie.expires, "Infinity");
- assert.strictEqual(cookie.TTL(this.now), Infinity);
- } else if (cookie.key === 'max') {
- assert.strictEqual(cookie.TTL(this.now), 3600*1000);
- } else {
- assert.fail('Unexpected cookie key: '+cookie.key);
- }
- }.bind(this));
- }
- }
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/lifetime_test.js b/node_modules/request/node_modules/tough-cookie/test/lifetime_test.js
deleted file mode 100644
index e66a22b26..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/lifetime_test.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-vows
- .describe('Lifetime')
- .addBatch({
- "TTL with max-age": function () {
- var c = new Cookie();
- c.maxAge = 123;
- assert.equal(c.TTL(), 123000);
- assert.equal(c.expiryTime(new Date(9000000)), 9123000);
- },
- "TTL with zero max-age": function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.maxAge = 0; // should be treated as "earliest representable"
- assert.equal(c.TTL(), 0);
- assert.equal(c.expiryTime(new Date(9000000)), -Infinity);
- assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT
- },
- "TTL with negative max-age": function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.maxAge = -1; // should be treated as "earliest representable"
- assert.equal(c.TTL(), 0);
- assert.equal(c.expiryTime(new Date(9000000)), -Infinity);
- assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT
- },
- "TTL with max-age and expires": function () {
- var c = new Cookie();
- c.maxAge = 123;
- c.expires = new Date(Date.now() + 9000);
- assert.equal(c.TTL(), 123000);
- assert.ok(c.isPersistent());
- },
- "TTL with expires": function () {
- var c = new Cookie();
- var now = Date.now();
- c.expires = new Date(now + 9000);
- assert.equal(c.TTL(now), 9000);
- assert.equal(c.expiryTime(), c.expires.getTime());
- },
- "TTL with old expires": function () {
- var c = new Cookie();
- c.setExpires('17 Oct 2010 00:00:00 GMT');
- assert.ok(c.TTL() < 0);
- assert.ok(c.isPersistent());
- },
- "default TTL": {
- topic: function () {
- return new Cookie();
- },
- "is Infinite-future": function (c) {
- assert.equal(c.TTL(), Infinity)
- },
- "is a 'session' cookie": function (c) {
- assert.ok(!c.isPersistent())
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/parsing_test.js b/node_modules/request/node_modules/tough-cookie/test/parsing_test.js
deleted file mode 100644
index cb37c6367..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/parsing_test.js
+++ /dev/null
@@ -1,294 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-vows
- .describe('Parsing')
- .addBatch({
- "simple": {
- topic: function() {
- return Cookie.parse('a=bcd') || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'a') },
- "value": function(c) { assert.equal(c.value, 'bcd') },
- "no path": function(c) { assert.equal(c.path, null) },
- "no domain": function(c) { assert.equal(c.domain, null) },
- "no extensions": function(c) { assert.ok(!c.extensions) }
- },
- "with expiry": {
- topic: function() {
- return Cookie.parse('a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT') || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'a') },
- "value": function(c) { assert.equal(c.value, 'bcd') },
- "has expires": function(c) {
- assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be');
- assert.equal(c.expires.getTime(), 1318921503000);
- }
- },
- "with expiry and path": {
- topic: function() {
- return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc') || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'abc') },
- "value": function(c) { assert.equal(c.value, '"xyzzy!"') },
- "has expires": function(c) {
- assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be');
- assert.equal(c.expires.getTime(), 1318921503000);
- },
- "has path": function(c) { assert.equal(c.path, '/aBc'); },
- "no httponly or secure": function(c) {
- assert.ok(!c.httpOnly);
- assert.ok(!c.secure);
- }
- },
- "with everything": {
- topic: function() {
- return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc; Domain=example.com; Secure; HTTPOnly; Max-Age=1234; Foo=Bar; Baz') || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'abc') },
- "value": function(c) { assert.equal(c.value, '"xyzzy!"') },
- "has expires": function(c) {
- assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be');
- assert.equal(c.expires.getTime(), 1318921503000);
- },
- "has path": function(c) { assert.equal(c.path, '/aBc'); },
- "has domain": function(c) { assert.equal(c.domain, 'example.com'); },
- "has httponly": function(c) { assert.equal(c.httpOnly, true); },
- "has secure": function(c) { assert.equal(c.secure, true); },
- "has max-age": function(c) { assert.equal(c.maxAge, 1234); },
- "has extensions": function(c) {
- assert.ok(c.extensions);
- assert.equal(c.extensions[0], 'Foo=Bar');
- assert.equal(c.extensions[1], 'Baz');
- }
- },
- "invalid expires": function() {
- var c = Cookie.parse("a=b; Expires=xyzzy");
- assert.ok(c);
- assert.equal(c.expires, Infinity);
- },
- "zero max-age": function() {
- var c = Cookie.parse("a=b; Max-Age=0");
- assert.ok(c);
- assert.equal(c.maxAge, 0);
- },
- "negative max-age": function() {
- var c = Cookie.parse("a=b; Max-Age=-1");
- assert.ok(c);
- assert.equal(c.maxAge, -1);
- },
- "empty domain": function() {
- var c = Cookie.parse("a=b; domain=");
- assert.ok(c);
- assert.equal(c.domain, null);
- },
- "dot domain": function() {
- var c = Cookie.parse("a=b; domain=.");
- assert.ok(c);
- assert.equal(c.domain, null);
- },
- "uppercase domain": function() {
- var c = Cookie.parse("a=b; domain=EXAMPLE.COM");
- assert.ok(c);
- assert.equal(c.domain, 'example.com');
- },
- "trailing dot in domain": {
- topic: function() {
- return Cookie.parse("a=b; Domain=example.com.", true) || null;
- },
- "has the domain": function(c) { assert.equal(c.domain,"example.com.") },
- "but doesn't validate": function(c) { assert.equal(c.validate(),false) }
- },
- "empty path": function() {
- var c = Cookie.parse("a=b; path=");
- assert.ok(c);
- assert.equal(c.path, null);
- },
- "no-slash path": function() {
- var c = Cookie.parse("a=b; path=xyzzy");
- assert.ok(c);
- assert.equal(c.path, null);
- },
- "trailing semi-colons after path": {
- topic: function () {
- return [
- "a=b; path=/;",
- "c=d;;;;"
- ];
- },
- "strips semi-colons": function (t) {
- var c1 = Cookie.parse(t[0]);
- var c2 = Cookie.parse(t[1]);
- assert.ok(c1);
- assert.ok(c2);
- assert.equal(c1.path, '/');
- }
- },
- "secure-with-value": function() {
- var c = Cookie.parse("a=b; Secure=xyzzy");
- assert.ok(c);
- assert.equal(c.secure, true);
- },
- "httponly-with-value": function() {
- var c = Cookie.parse("a=b; HttpOnly=xyzzy");
- assert.ok(c);
- assert.equal(c.httpOnly, true);
- },
- "garbage": {
- topic: function() {
- return Cookie.parse("\x08", true) || null;
- },
- "doesn't parse": function(c) { assert.equal(c,null) }
- },
- "public suffix domain": {
- topic: function() {
- return Cookie.parse("a=b; domain=kyoto.jp", true) || null;
- },
- "parses fine": function(c) {
- assert.ok(c);
- assert.equal(c.domain, 'kyoto.jp');
- },
- "but fails validation": function(c) {
- assert.ok(c);
- assert.ok(!c.validate());
- }
- },
- "public suffix foonet.net": {
- "top level": {
- topic: function() {
- return Cookie.parse("a=b; domain=foonet.net") || null;
- },
- "parses and is valid": function(c) {
- assert.ok(c);
- assert.equal(c.domain, 'foonet.net');
- assert.ok(c.validate());
- }
- },
- "www": {
- topic: function() {
- return Cookie.parse("a=b; domain=www.foonet.net") || null;
- },
- "parses and is valid": function(c) {
- assert.ok(c);
- assert.equal(c.domain, 'www.foonet.net');
- assert.ok(c.validate());
- }
- },
- "with a dot": {
- topic: function() {
- return Cookie.parse("a=b; domain=.foonet.net") || null;
- },
- "parses and is valid": function(c) {
- assert.ok(c);
- assert.equal(c.domain, 'foonet.net');
- assert.ok(c.validate());
- }
- }
- },
- "Ironically, Google 'GAPS' cookie has very little whitespace": {
- topic: function() {
- return Cookie.parse("GAPS=1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-;Path=/;Expires=Thu, 17-Apr-2014 02:12:29 GMT;Secure;HttpOnly");
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'GAPS') },
- "value": function(c) { assert.equal(c.value, '1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-') },
- "path": function(c) {
- assert.notEqual(c.path, '/;Expires'); // BUG
- assert.equal(c.path, '/');
- },
- "expires": function(c) {
- assert.notEqual(c.expires, Infinity);
- assert.equal(c.expires.getTime(), 1397700749000);
- },
- "secure": function(c) { assert.ok(c.secure) },
- "httponly": function(c) { assert.ok(c.httpOnly) }
- },
- "lots of equal signs": {
- topic: function() {
- return Cookie.parse("queryPref=b=c&d=e; Path=/f=g; Expires=Thu, 17 Apr 2014 02:12:29 GMT; HttpOnly");
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'queryPref') },
- "value": function(c) { assert.equal(c.value, 'b=c&d=e') },
- "path": function(c) {
- assert.equal(c.path, '/f=g');
- },
- "expires": function(c) {
- assert.notEqual(c.expires, Infinity);
- assert.equal(c.expires.getTime(), 1397700749000);
- },
- "httponly": function(c) { assert.ok(c.httpOnly) }
- },
- "spaces in value": {
- topic: function() {
- return Cookie.parse('a=one two three',false) || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'a') },
- "value": function(c) { assert.equal(c.value, 'one two three') },
- "no path": function(c) { assert.equal(c.path, null) },
- "no domain": function(c) { assert.equal(c.domain, null) },
- "no extensions": function(c) { assert.ok(!c.extensions) }
- },
- "quoted spaces in value": {
- topic: function() {
- return Cookie.parse('a="one two three"',false) || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'a') },
- "value": function(c) { assert.equal(c.value, '"one two three"') },
- "no path": function(c) { assert.equal(c.path, null) },
- "no domain": function(c) { assert.equal(c.domain, null) },
- "no extensions": function(c) { assert.ok(!c.extensions) }
- },
- "non-ASCII in value": {
- topic: function() {
- return Cookie.parse('farbe=weiß',false) || null;
- },
- "parsed": function(c) { assert.ok(c) },
- "key": function(c) { assert.equal(c.key, 'farbe') },
- "value": function(c) { assert.equal(c.value, 'weiß') },
- "no path": function(c) { assert.equal(c.path, null) },
- "no domain": function(c) { assert.equal(c.domain, null) },
- "no extensions": function(c) { assert.ok(!c.extensions) }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tough-cookie/test/regression_test.js b/node_modules/request/node_modules/tough-cookie/test/regression_test.js
deleted file mode 100644
index 4edb60972..000000000
--- a/node_modules/request/node_modules/tough-cookie/test/regression_test.js
+++ /dev/null
@@ -1,143 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * 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 Salesforce.com 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 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 HOLDER 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.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var async = require('async');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-var atNow = Date.now();
-
-function at(offset) {
- return {now: new Date(atNow + offset)};
-}
-
-vows
- .describe('Regression tests')
- .addBatch({
- "Issue 1": {
- topic: function () {
- var cj = new CookieJar();
- cj.setCookie('hello=world; path=/some/path/', 'http://domain/some/path/file', function (err, cookie) {
- this.callback(err, {cj: cj, cookie: cookie});
- }.bind(this));
- },
- "stored a cookie": function (t) {
- assert.ok(t.cookie);
- },
- "getting it back": {
- topic: function (t) {
- t.cj.getCookies('http://domain/some/path/file', function (err, cookies) {
- this.callback(err, {cj: t.cj, cookies: cookies || []});
- }.bind(this));
- },
- "got one cookie": function (t) {
- assert.lengthOf(t.cookies, 1);
- },
- "it's the right one": function (t) {
- var c = t.cookies[0];
- assert.equal(c.key, 'hello');
- assert.equal(c.value, 'world');
- }
- }
- }
- })
- .addBatch({
- "trailing semi-colon set into cj": {
- topic: function () {
- var cb = this.callback;
- var cj = new CookieJar();
- var ex = 'http://www.example.com';
- var tasks = [];
- tasks.push(function (next) {
- cj.setCookie('broken_path=testme; path=/;', ex, at(-1), next);
- });
- tasks.push(function (next) {
- cj.setCookie('b=2; Path=/;;;;', ex, at(-1), next);
- });
- async.parallel(tasks, function (err, cookies) {
- cb(null, {
- cj: cj,
- cookies: cookies
- });
- });
- },
- "check number of cookies": function (t) {
- assert.lengthOf(t.cookies, 2, "didn't set");
- },
- "check *broken_path* was set properly": function (t) {
- assert.equal(t.cookies[0].key, "broken_path");
- assert.equal(t.cookies[0].value, "testme");
- assert.equal(t.cookies[0].path, "/");
- },
- "check *b* was set properly": function (t) {
- assert.equal(t.cookies[1].key, "b");
- assert.equal(t.cookies[1].value, "2");
- assert.equal(t.cookies[1].path, "/");
- },
- "retrieve the cookie": {
- topic: function (t) {
- var cb = this.callback;
- t.cj.getCookies('http://www.example.com', {}, function (err, cookies) {
- t.cookies = cookies;
- cb(err, t);
- });
- },
- "get the cookie": function (t) {
- assert.lengthOf(t.cookies, 2);
- assert.equal(t.cookies[0].key, 'broken_path');
- assert.equal(t.cookies[0].value, 'testme');
- assert.equal(t.cookies[1].key, "b");
- assert.equal(t.cookies[1].value, "2");
- assert.equal(t.cookies[1].path, "/");
- }
- }
- }
- })
- .addBatch({
- "tough-cookie throws exception on malformed URI (GH-32)": {
- topic: function () {
- var url = "http://www.example.com/?test=100%";
- var cj = new CookieJar();
-
- cj.setCookieSync("Test=Test", url);
-
- return cj.getCookieStringSync(url);
- },
- "cookies are set": function (cookieStr) {
- assert.strictEqual(cookieStr, "Test=Test");
- }
- }
- })
- .export(module);
diff --git a/node_modules/request/node_modules/tunnel-agent/LICENSE b/node_modules/request/node_modules/tunnel-agent/LICENSE
deleted file mode 100644
index a4a9aee0c..000000000
--- a/node_modules/request/node_modules/tunnel-agent/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS \ No newline at end of file
diff --git a/node_modules/request/node_modules/tunnel-agent/README.md b/node_modules/request/node_modules/tunnel-agent/README.md
deleted file mode 100644
index bb533d56b..000000000
--- a/node_modules/request/node_modules/tunnel-agent/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-tunnel-agent
-============
-
-HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.
diff --git a/node_modules/request/node_modules/tunnel-agent/index.js b/node_modules/request/node_modules/tunnel-agent/index.js
deleted file mode 100644
index 13c04272d..000000000
--- a/node_modules/request/node_modules/tunnel-agent/index.js
+++ /dev/null
@@ -1,236 +0,0 @@
-'use strict'
-
-var net = require('net')
- , tls = require('tls')
- , http = require('http')
- , https = require('https')
- , events = require('events')
- , assert = require('assert')
- , util = require('util')
- ;
-
-exports.httpOverHttp = httpOverHttp
-exports.httpsOverHttp = httpsOverHttp
-exports.httpOverHttps = httpOverHttps
-exports.httpsOverHttps = httpsOverHttps
-
-
-function httpOverHttp(options) {
- var agent = new TunnelingAgent(options)
- agent.request = http.request
- return agent
-}
-
-function httpsOverHttp(options) {
- var agent = new TunnelingAgent(options)
- agent.request = http.request
- agent.createSocket = createSecureSocket
- return agent
-}
-
-function httpOverHttps(options) {
- var agent = new TunnelingAgent(options)
- agent.request = https.request
- return agent
-}
-
-function httpsOverHttps(options) {
- var agent = new TunnelingAgent(options)
- agent.request = https.request
- agent.createSocket = createSecureSocket
- return agent
-}
-
-
-function TunnelingAgent(options) {
- var self = this
- self.options = options || {}
- self.proxyOptions = self.options.proxy || {}
- self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets
- self.requests = []
- self.sockets = []
-
- self.on('free', function onFree(socket, host, port) {
- for (var i = 0, len = self.requests.length; i < len; ++i) {
- var pending = self.requests[i]
- if (pending.host === host && pending.port === port) {
- // Detect the request to connect same origin server,
- // reuse the connection.
- self.requests.splice(i, 1)
- pending.request.onSocket(socket)
- return
- }
- }
- socket.destroy()
- self.removeSocket(socket)
- })
-}
-util.inherits(TunnelingAgent, events.EventEmitter)
-
-TunnelingAgent.prototype.addRequest = function addRequest(req, options) {
- var self = this
-
- // Legacy API: addRequest(req, host, port, path)
- if (typeof options === 'string') {
- options = {
- host: options,
- port: arguments[2],
- path: arguments[3]
- };
- }
-
- if (self.sockets.length >= this.maxSockets) {
- // We are over limit so we'll add it to the queue.
- self.requests.push({host: host, port: port, request: req})
- return
- }
-
- // If we are under maxSockets create a new one.
- self.createSocket({host: options.host, port: options.port, request: req}, function(socket) {
- socket.on('free', onFree)
- socket.on('close', onCloseOrRemove)
- socket.on('agentRemove', onCloseOrRemove)
- req.onSocket(socket)
-
- function onFree() {
- self.emit('free', socket, options.host, options.port)
- }
-
- function onCloseOrRemove(err) {
- self.removeSocket()
- socket.removeListener('free', onFree)
- socket.removeListener('close', onCloseOrRemove)
- socket.removeListener('agentRemove', onCloseOrRemove)
- }
- })
-}
-
-TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
- var self = this
- var placeholder = {}
- self.sockets.push(placeholder)
-
- var connectOptions = mergeOptions({}, self.proxyOptions,
- { method: 'CONNECT'
- , path: options.host + ':' + options.port
- , agent: false
- }
- )
- if (connectOptions.proxyAuth) {
- connectOptions.headers = connectOptions.headers || {}
- connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
- new Buffer(connectOptions.proxyAuth).toString('base64')
- }
-
- debug('making CONNECT request')
- var connectReq = self.request(connectOptions)
- connectReq.useChunkedEncodingByDefault = false // for v0.6
- connectReq.once('response', onResponse) // for v0.6
- connectReq.once('upgrade', onUpgrade) // for v0.6
- connectReq.once('connect', onConnect) // for v0.7 or later
- connectReq.once('error', onError)
- connectReq.end()
-
- function onResponse(res) {
- // Very hacky. This is necessary to avoid http-parser leaks.
- res.upgrade = true
- }
-
- function onUpgrade(res, socket, head) {
- // Hacky.
- process.nextTick(function() {
- onConnect(res, socket, head)
- })
- }
-
- function onConnect(res, socket, head) {
- connectReq.removeAllListeners()
- socket.removeAllListeners()
-
- if (res.statusCode === 200) {
- assert.equal(head.length, 0)
- debug('tunneling connection has established')
- self.sockets[self.sockets.indexOf(placeholder)] = socket
- cb(socket)
- } else {
- debug('tunneling socket could not be established, statusCode=%d', res.statusCode)
- var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)
- error.code = 'ECONNRESET'
- options.request.emit('error', error)
- self.removeSocket(placeholder)
- }
- }
-
- function onError(cause) {
- connectReq.removeAllListeners()
-
- debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack)
- var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)
- error.code = 'ECONNRESET'
- options.request.emit('error', error)
- self.removeSocket(placeholder)
- }
-}
-
-TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
- var pos = this.sockets.indexOf(socket)
- if (pos === -1) return
-
- this.sockets.splice(pos, 1)
-
- var pending = this.requests.shift()
- if (pending) {
- // If we have pending requests and a socket gets closed a new one
- // needs to be created to take over in the pool for the one that closed.
- this.createSocket(pending, function(socket) {
- pending.request.onSocket(socket)
- })
- }
-}
-
-function createSecureSocket(options, cb) {
- var self = this
- TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
- // 0 is dummy port for v0.6
- var secureSocket = tls.connect(0, mergeOptions({}, self.options,
- { servername: options.host
- , socket: socket
- }
- ))
- cb(secureSocket)
- })
-}
-
-
-function mergeOptions(target) {
- for (var i = 1, len = arguments.length; i < len; ++i) {
- var overrides = arguments[i]
- if (typeof overrides === 'object') {
- var keys = Object.keys(overrides)
- for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
- var k = keys[j]
- if (overrides[k] !== undefined) {
- target[k] = overrides[k]
- }
- }
- }
- }
- return target
-}
-
-
-var debug
-if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
- debug = function() {
- var args = Array.prototype.slice.call(arguments)
- if (typeof args[0] === 'string') {
- args[0] = 'TUNNEL: ' + args[0]
- } else {
- args.unshift('TUNNEL:')
- }
- console.error.apply(console, args)
- }
-} else {
- debug = function() {}
-}
-exports.debug = debug // for test
diff --git a/node_modules/request/node_modules/tunnel-agent/package.json b/node_modules/request/node_modules/tunnel-agent/package.json
deleted file mode 100644
index e2bc2f012..000000000
--- a/node_modules/request/node_modules/tunnel-agent/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "tunnel-agent",
- "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.",
- "version": "0.4.0",
- "repository": {
- "url": "git+https://github.com/mikeal/tunnel-agent.git"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "readme": "tunnel-agent\n============\n\nHTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/mikeal/tunnel-agent/issues"
- },
- "homepage": "https://github.com/mikeal/tunnel-agent#readme",
- "_id": "tunnel-agent@0.4.0",
- "_shasum": "b1184e312ffbcf70b3b4c78e8c219de7ebb1c550",
- "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz",
- "_from": "tunnel-agent@>=0.4.0 <0.5.0"
-}
diff --git a/node_modules/request/package.json b/node_modules/request/package.json
index b934c5e8c..61a35d2a2 100644
--- a/node_modules/request/package.json
+++ b/node_modules/request/package.json
@@ -1,58 +1,69 @@
{
- "name": "request",
- "description": "Simplified HTTP request client.",
- "tags": [
- "http",
- "simple",
- "util",
- "utility"
+ "_args": [
+ [
+ "request@2",
+ "/Users/rebecca/code/npm/node_modules/node-gyp"
+ ]
],
- "version": "2.58.0",
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com"
+ "_from": "request@>=2.0.0 <3.0.0",
+ "_id": "request@2.58.0",
+ "_inCache": true,
+ "_location": "/request",
+ "_nodeVersion": "0.12.4",
+ "_npmUser": {
+ "email": "simeonvelichkov@gmail.com",
+ "name": "simov"
},
- "repository": {
- "type": "git",
- "url": "git+https://github.com/request/request.git"
+ "_npmVersion": "2.10.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "request",
+ "raw": "request@2",
+ "rawSpec": "2",
+ "scope": null,
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/node-gyp",
+ "/npm-registry-client"
+ ],
+ "_resolved": "https://registry.npmjs.org/request/-/request-2.58.0.tgz",
+ "_shasum": "b5f49c0b94aab7fad388612a1fb6ad03b6cc1580",
+ "_shrinkwrap": null,
+ "_spec": "request@2",
+ "_where": "/Users/rebecca/code/npm/node_modules/node-gyp",
+ "author": {
+ "email": "mikeal.rogers@gmail.com",
+ "name": "Mikeal Rogers"
},
"bugs": {
"url": "http://github.com/request/request/issues"
},
- "license": "Apache-2.0",
- "engines": {
- "node": ">=0.8.0"
- },
- "main": "index.js",
"dependencies": {
+ "aws-sign2": "~0.5.0",
"bl": "~0.9.0",
"caseless": "~0.10.0",
+ "combined-stream": "~1.0.1",
"extend": "~2.0.1",
"forever-agent": "~0.6.0",
"form-data": "~1.0.0-rc1",
+ "har-validator": "^1.6.1",
+ "hawk": "~2.3.0",
+ "http-signature": "~0.11.0",
+ "isstream": "~0.1.1",
"json-stringify-safe": "~5.0.0",
"mime-types": "~2.0.1",
"node-uuid": "~1.4.0",
- "qs": "~3.1.0",
- "tunnel-agent": "~0.4.0",
- "tough-cookie": ">=0.12.0",
- "http-signature": "~0.11.0",
"oauth-sign": "~0.8.0",
- "hawk": "~2.3.0",
- "aws-sign2": "~0.5.0",
+ "qs": "~3.1.0",
"stringstream": "~0.0.4",
- "combined-stream": "~1.0.1",
- "isstream": "~0.1.1",
- "har-validator": "^1.6.1"
- },
- "scripts": {
- "test": "npm run lint && npm run test-ci && npm run test-browser",
- "test-ci": "taper tests/test-*.js",
- "test-cov": "istanbul cover tape tests/test-*.js",
- "test-browser": "node tests/browser/start.js",
- "lint": "eslint lib/ *.js tests/ && echo Lint passed."
+ "tough-cookie": ">=0.12.0",
+ "tunnel-agent": "~0.4.0"
},
+ "description": "Simplified HTTP request client.",
"devDependencies": {
+ "bluebird": "~2.9.21",
"browserify": "~5.9.1",
"browserify-istanbul": "~0.1.3",
"buffer-equal": "0.0.1",
@@ -70,20 +81,20 @@
"rimraf": "~2.2.8",
"server-destroy": "~1.0.0",
"tape": "~3.0.0",
- "taper": "~0.4.0",
- "bluebird": "~2.9.21"
+ "taper": "~0.4.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "b5f49c0b94aab7fad388612a1fb6ad03b6cc1580",
+ "tarball": "http://registry.npmjs.org/request/-/request-2.58.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.8.0"
},
"gitHead": "ab40f9e61f813f9cc68257c17621b7879561486c",
"homepage": "https://github.com/request/request#readme",
- "_id": "request@2.58.0",
- "_shasum": "b5f49c0b94aab7fad388612a1fb6ad03b6cc1580",
- "_from": "request@2.58.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
+ "license": "Apache-2.0",
+ "main": "index.js",
"maintainers": [
{
"name": "mikeal",
@@ -102,10 +113,24 @@
"email": "simeonvelichkov@gmail.com"
}
],
- "dist": {
- "shasum": "b5f49c0b94aab7fad388612a1fb6ad03b6cc1580",
- "tarball": "http://registry.npmjs.org/request/-/request-2.58.0.tgz"
+ "name": "request",
+ "optionalDependencies": {},
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/request/request.git"
},
- "directories": {},
- "_resolved": "https://registry.npmjs.org/request/-/request-2.58.0.tgz"
+ "scripts": {
+ "lint": "eslint lib/ *.js tests/ && echo Lint passed.",
+ "test": "npm run lint && npm run test-ci && npm run test-browser",
+ "test-browser": "node tests/browser/start.js",
+ "test-ci": "taper tests/test-*.js",
+ "test-cov": "istanbul cover tape tests/test-*.js"
+ },
+ "tags": [
+ "http",
+ "simple",
+ "util",
+ "utility"
+ ],
+ "version": "2.58.0"
}