├── .gitignore
├── .npmignore
├── .travis.yml
├── LICENSE
├── datum
├── bd-09.js
├── gcj-02.js
└── index.js
├── examples
├── .eslintrc
├── transforms.html
└── transforms.js
├── index.js
├── package-lock.json
├── package.json
├── projection
├── baidu-mercator.js
├── index.js
└── spherical-mercator.js
├── readme.md
├── test
├── datum
│ └── bd-09.test.js
├── index.test.js
└── projection
│ ├── baidu-mercator.test.js
│ └── spherical-mercator.test.js
└── util.js
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | /index.min.js
3 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | /test/
2 | /examples/
3 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - '10'
4 | cache:
5 | directories:
6 | - node_modules
7 | branches:
8 | only:
9 | - master
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) <2019> Tim Schaub
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/datum/bd-09.js:
--------------------------------------------------------------------------------
1 | var forEachPoint = require('../util').forEachPoint;
2 | var gcj02 = require('./gcj-02');
3 |
4 | var PI = Math.PI;
5 | var X_PI = PI * 3000 / 180;
6 |
7 | var toGCJ02 = exports.toGCJ02 = forEachPoint(function(input, output, offset) {
8 | var x = input[offset] - 0.0065;
9 | var y = input[offset + 1] - 0.006;
10 | var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
11 | var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
12 | output[offset] = z * Math.cos(theta);
13 | output[offset + 1] = z * Math.sin(theta);
14 | return output;
15 | });
16 |
17 | var fromGCJ02 = exports.fromGCJ02 = forEachPoint(function(input, output, offset) {
18 | var x = input[offset];
19 | var y = input[offset + 1];
20 | var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
21 | var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);
22 | output[offset] = z * Math.cos(theta) + 0.0065;
23 | output[offset + 1] = z * Math.sin(theta) + 0.006;
24 | return output;
25 | });
26 |
27 | exports.toWGS84 = function(input, opt_output, opt_dimension) {
28 | var output = toGCJ02(input, opt_output, opt_dimension);
29 | return gcj02.toWGS84(output, output, opt_dimension);
30 | };
31 |
32 | exports.fromWGS84 = function(input, opt_output, opt_dimension) {
33 | var output = gcj02.fromWGS84(input, opt_output, opt_dimension);
34 | return fromGCJ02(output, output, opt_dimension);
35 | };
36 |
--------------------------------------------------------------------------------
/datum/gcj-02.js:
--------------------------------------------------------------------------------
1 | var forEachPoint = require('../util').forEachPoint;
2 |
3 | var PI = Math.PI;
4 | var AXIS = 6378245.0;
5 | var OFFSET = 0.00669342162296594323; // (a^2 - b^2) / a^2
6 |
7 | function delta(wgLon, wgLat) {
8 | var dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
9 | var dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
10 | var radLat = wgLat / 180.0 * PI;
11 | var magic = Math.sin(radLat);
12 | magic = 1 - OFFSET * magic * magic;
13 | var sqrtMagic = Math.sqrt(magic);
14 | dLat = (dLat * 180.0) / ((AXIS * (1 - OFFSET)) / (magic * sqrtMagic) * PI);
15 | dLon = (dLon * 180.0) / (AXIS / sqrtMagic * Math.cos(radLat) * PI);
16 | return [dLon, dLat];
17 | }
18 |
19 | function outOfChina(lon, lat) {
20 | if (lon < 72.004 || lon > 137.8347) {
21 | return true;
22 | }
23 | if (lat < 0.8293 || lat > 55.8271) {
24 | return true;
25 | }
26 | return false;
27 | }
28 |
29 | function transformLat(x, y) {
30 | var ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
31 | ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
32 | ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0;
33 | ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0;
34 | return ret;
35 | }
36 |
37 | function transformLon(x, y) {
38 | var ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
39 | ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
40 | ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0;
41 | ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0 * PI)) * 2.0 / 3.0;
42 | return ret;
43 | }
44 |
45 | exports.toWGS84 = forEachPoint(function(input, output, offset) {
46 | var lng = input[offset];
47 | var lat = input[offset + 1];
48 | if (!outOfChina(lng, lat)) {
49 | var deltaD = delta(lng, lat);
50 | lng = lng - deltaD[0];
51 | lat = lat - deltaD[1];
52 | }
53 | output[offset] = lng;
54 | output[offset + 1] = lat;
55 | });
56 |
57 | exports.fromWGS84 = forEachPoint(function(input, output, offset) {
58 | var lng = input[offset];
59 | var lat = input[offset + 1];
60 | if (!outOfChina(lng, lat)) {
61 | var deltaD = delta(lng, lat);
62 | lng = lng + deltaD[0];
63 | lat = lat + deltaD[1];
64 | }
65 | output[offset] = lng;
66 | output[offset + 1] = lat;
67 | });
68 |
--------------------------------------------------------------------------------
/datum/index.js:
--------------------------------------------------------------------------------
1 | exports.bd09 = require('./bd-09');
2 | exports.gcj02 = require('./gcj-02');
3 |
--------------------------------------------------------------------------------
/examples/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "globals": {
3 | "projzh": false
4 | },
5 | "rules": {
6 | "no-console": 0
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/examples/transforms.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | projzh transforms
5 |
6 |
7 | Check the console for output.
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/examples/transforms.js:
--------------------------------------------------------------------------------
1 | // according to https://www.google.com/search?q=beijing+latitude+longitude
2 |
3 | var ll = [116.3833, 39.9167];
4 | console.log('Geographic / WGS-84 [longitude, latitude] of Beijing', ll);
5 |
6 | var gcj02 = projzh.datum.gcj02.fromWGS84(ll);
7 | console.log('Geographic / GCJ-02 [longitude, latitude] of Beijing', gcj02);
8 |
9 | var bmerc = projzh.ll2bmerc(ll);
10 | console.log('Baidu Mercator / BD-09 [east, north] representation of the same', bmerc);
11 |
12 | var smerc = projzh.ll2smerc(ll);
13 | console.log('Spherical Mercator / WGS-84 [east, north] representation of the same', smerc);
14 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | var projection = require('./projection/index');
2 | var datum = require('./datum/index');
3 |
4 | exports.smerc2bmerc = function(input, opt_output, opt_dimension) {
5 | var output = projection.sphericalMercator.inverse(input, opt_output, opt_dimension);
6 | output = datum.bd09.fromWGS84(output, output, opt_dimension);
7 | return projection.baiduMercator.forward(output, output, opt_dimension);
8 | };
9 |
10 | exports.bmerc2smerc = function(input, opt_output, opt_dimension) {
11 | var output = projection.baiduMercator.inverse(input, opt_output, opt_dimension);
12 | output = datum.bd09.toWGS84(output, output, opt_dimension);
13 | return projection.sphericalMercator.forward(output, output, opt_dimension);
14 | };
15 |
16 | exports.bmerc2ll = function(input, opt_output, opt_dimension) {
17 | var output = projection.baiduMercator.inverse(input, opt_output, opt_dimension);
18 | return datum.bd09.toWGS84(output, output, opt_dimension);
19 | };
20 |
21 | exports.ll2bmerc = function(input, opt_output, opt_dimension) {
22 | var output = datum.bd09.fromWGS84(input, opt_output, opt_dimension);
23 | return projection.baiduMercator.forward(output, output, opt_dimension);
24 | };
25 |
26 | exports.ll2smerc = projection.sphericalMercator.forward;
27 | exports.smerc2ll = projection.sphericalMercator.inverse;
28 | exports.datum = datum;
29 | exports.projection = projection;
30 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "projzh",
3 | "version": "0.5.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "JSONStream": {
8 | "version": "1.3.5",
9 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
10 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
11 | "dev": true,
12 | "requires": {
13 | "jsonparse": "^1.2.0",
14 | "through": ">=2.2.7 <3"
15 | }
16 | },
17 | "acorn": {
18 | "version": "6.0.5",
19 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz",
20 | "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==",
21 | "dev": true
22 | },
23 | "acorn-dynamic-import": {
24 | "version": "4.0.0",
25 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
26 | "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
27 | "dev": true
28 | },
29 | "acorn-jsx": {
30 | "version": "3.0.1",
31 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
32 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
33 | "dev": true,
34 | "requires": {
35 | "acorn": "^3.0.4"
36 | },
37 | "dependencies": {
38 | "acorn": {
39 | "version": "3.3.0",
40 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
41 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
42 | "dev": true
43 | }
44 | }
45 | },
46 | "acorn-node": {
47 | "version": "1.6.2",
48 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz",
49 | "integrity": "sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg==",
50 | "dev": true,
51 | "requires": {
52 | "acorn": "^6.0.2",
53 | "acorn-dynamic-import": "^4.0.0",
54 | "acorn-walk": "^6.1.0",
55 | "xtend": "^4.0.1"
56 | }
57 | },
58 | "acorn-walk": {
59 | "version": "6.1.1",
60 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
61 | "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==",
62 | "dev": true
63 | },
64 | "ajv": {
65 | "version": "4.11.8",
66 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
67 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
68 | "dev": true,
69 | "requires": {
70 | "co": "^4.6.0",
71 | "json-stable-stringify": "^1.0.1"
72 | },
73 | "dependencies": {
74 | "json-stable-stringify": {
75 | "version": "1.0.1",
76 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
77 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
78 | "dev": true,
79 | "requires": {
80 | "jsonify": "~0.0.0"
81 | }
82 | }
83 | }
84 | },
85 | "ajv-keywords": {
86 | "version": "1.5.1",
87 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
88 | "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
89 | "dev": true
90 | },
91 | "align-text": {
92 | "version": "0.1.4",
93 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
94 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
95 | "dev": true,
96 | "requires": {
97 | "kind-of": "^3.0.2",
98 | "longest": "^1.0.1",
99 | "repeat-string": "^1.5.2"
100 | }
101 | },
102 | "ansi-escapes": {
103 | "version": "1.4.0",
104 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
105 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
106 | "dev": true
107 | },
108 | "ansi-regex": {
109 | "version": "2.1.1",
110 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
111 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
112 | "dev": true
113 | },
114 | "ansi-styles": {
115 | "version": "2.2.1",
116 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
117 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
118 | "dev": true
119 | },
120 | "argparse": {
121 | "version": "1.0.10",
122 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
123 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
124 | "dev": true,
125 | "requires": {
126 | "sprintf-js": "~1.0.2"
127 | }
128 | },
129 | "array-filter": {
130 | "version": "0.0.1",
131 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
132 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
133 | "dev": true
134 | },
135 | "array-map": {
136 | "version": "0.0.0",
137 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
138 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
139 | "dev": true
140 | },
141 | "array-reduce": {
142 | "version": "0.0.0",
143 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
144 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
145 | "dev": true
146 | },
147 | "asn1.js": {
148 | "version": "4.10.1",
149 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
150 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
151 | "dev": true,
152 | "requires": {
153 | "bn.js": "^4.0.0",
154 | "inherits": "^2.0.1",
155 | "minimalistic-assert": "^1.0.0"
156 | }
157 | },
158 | "assert": {
159 | "version": "1.4.1",
160 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
161 | "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
162 | "dev": true,
163 | "requires": {
164 | "util": "0.10.3"
165 | },
166 | "dependencies": {
167 | "inherits": {
168 | "version": "2.0.1",
169 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
170 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
171 | "dev": true
172 | },
173 | "util": {
174 | "version": "0.10.3",
175 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
176 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
177 | "dev": true,
178 | "requires": {
179 | "inherits": "2.0.1"
180 | }
181 | }
182 | }
183 | },
184 | "async": {
185 | "version": "2.6.1",
186 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
187 | "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
188 | "dev": true,
189 | "requires": {
190 | "lodash": "^4.17.10"
191 | }
192 | },
193 | "babel-code-frame": {
194 | "version": "6.26.0",
195 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
196 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
197 | "dev": true,
198 | "requires": {
199 | "chalk": "^1.1.3",
200 | "esutils": "^2.0.2",
201 | "js-tokens": "^3.0.2"
202 | }
203 | },
204 | "balanced-match": {
205 | "version": "1.0.0",
206 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
207 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
208 | "dev": true
209 | },
210 | "base64-js": {
211 | "version": "1.3.0",
212 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
213 | "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
214 | "dev": true
215 | },
216 | "bn.js": {
217 | "version": "4.11.8",
218 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
219 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
220 | "dev": true
221 | },
222 | "bossy": {
223 | "version": "3.0.4",
224 | "resolved": "https://registry.npmjs.org/bossy/-/bossy-3.0.4.tgz",
225 | "integrity": "sha1-+a6fJugbQaMY9O4Ng2huSlwlB7k=",
226 | "dev": true,
227 | "requires": {
228 | "hoek": "4.x.x",
229 | "joi": "10.x.x"
230 | }
231 | },
232 | "brace-expansion": {
233 | "version": "1.1.11",
234 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
235 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
236 | "dev": true,
237 | "requires": {
238 | "balanced-match": "^1.0.0",
239 | "concat-map": "0.0.1"
240 | }
241 | },
242 | "brorand": {
243 | "version": "1.1.0",
244 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
245 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
246 | "dev": true
247 | },
248 | "browser-pack": {
249 | "version": "6.1.0",
250 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
251 | "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
252 | "dev": true,
253 | "requires": {
254 | "JSONStream": "^1.0.3",
255 | "combine-source-map": "~0.8.0",
256 | "defined": "^1.0.0",
257 | "safe-buffer": "^5.1.1",
258 | "through2": "^2.0.0",
259 | "umd": "^3.0.0"
260 | }
261 | },
262 | "browser-resolve": {
263 | "version": "1.11.3",
264 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
265 | "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
266 | "dev": true,
267 | "requires": {
268 | "resolve": "1.1.7"
269 | },
270 | "dependencies": {
271 | "resolve": {
272 | "version": "1.1.7",
273 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
274 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
275 | "dev": true
276 | }
277 | }
278 | },
279 | "browserify": {
280 | "version": "13.3.0",
281 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz",
282 | "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=",
283 | "dev": true,
284 | "requires": {
285 | "JSONStream": "^1.0.3",
286 | "assert": "^1.4.0",
287 | "browser-pack": "^6.0.1",
288 | "browser-resolve": "^1.11.0",
289 | "browserify-zlib": "~0.1.2",
290 | "buffer": "^4.1.0",
291 | "cached-path-relative": "^1.0.0",
292 | "concat-stream": "~1.5.1",
293 | "console-browserify": "^1.1.0",
294 | "constants-browserify": "~1.0.0",
295 | "crypto-browserify": "^3.0.0",
296 | "defined": "^1.0.0",
297 | "deps-sort": "^2.0.0",
298 | "domain-browser": "~1.1.0",
299 | "duplexer2": "~0.1.2",
300 | "events": "~1.1.0",
301 | "glob": "^7.1.0",
302 | "has": "^1.0.0",
303 | "htmlescape": "^1.1.0",
304 | "https-browserify": "~0.0.0",
305 | "inherits": "~2.0.1",
306 | "insert-module-globals": "^7.0.0",
307 | "labeled-stream-splicer": "^2.0.0",
308 | "module-deps": "^4.0.8",
309 | "os-browserify": "~0.1.1",
310 | "parents": "^1.0.1",
311 | "path-browserify": "~0.0.0",
312 | "process": "~0.11.0",
313 | "punycode": "^1.3.2",
314 | "querystring-es3": "~0.2.0",
315 | "read-only-stream": "^2.0.0",
316 | "readable-stream": "^2.0.2",
317 | "resolve": "^1.1.4",
318 | "shasum": "^1.0.0",
319 | "shell-quote": "^1.6.1",
320 | "stream-browserify": "^2.0.0",
321 | "stream-http": "^2.0.0",
322 | "string_decoder": "~0.10.0",
323 | "subarg": "^1.0.0",
324 | "syntax-error": "^1.1.1",
325 | "through2": "^2.0.0",
326 | "timers-browserify": "^1.0.1",
327 | "tty-browserify": "~0.0.0",
328 | "url": "~0.11.0",
329 | "util": "~0.10.1",
330 | "vm-browserify": "~0.0.1",
331 | "xtend": "^4.0.0"
332 | }
333 | },
334 | "browserify-aes": {
335 | "version": "1.2.0",
336 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
337 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
338 | "dev": true,
339 | "requires": {
340 | "buffer-xor": "^1.0.3",
341 | "cipher-base": "^1.0.0",
342 | "create-hash": "^1.1.0",
343 | "evp_bytestokey": "^1.0.3",
344 | "inherits": "^2.0.1",
345 | "safe-buffer": "^5.0.1"
346 | }
347 | },
348 | "browserify-cipher": {
349 | "version": "1.0.1",
350 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
351 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
352 | "dev": true,
353 | "requires": {
354 | "browserify-aes": "^1.0.4",
355 | "browserify-des": "^1.0.0",
356 | "evp_bytestokey": "^1.0.0"
357 | }
358 | },
359 | "browserify-des": {
360 | "version": "1.0.2",
361 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
362 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
363 | "dev": true,
364 | "requires": {
365 | "cipher-base": "^1.0.1",
366 | "des.js": "^1.0.0",
367 | "inherits": "^2.0.1",
368 | "safe-buffer": "^5.1.2"
369 | }
370 | },
371 | "browserify-rsa": {
372 | "version": "4.0.1",
373 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
374 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
375 | "dev": true,
376 | "requires": {
377 | "bn.js": "^4.1.0",
378 | "randombytes": "^2.0.1"
379 | }
380 | },
381 | "browserify-sign": {
382 | "version": "4.0.4",
383 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
384 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
385 | "dev": true,
386 | "requires": {
387 | "bn.js": "^4.1.1",
388 | "browserify-rsa": "^4.0.0",
389 | "create-hash": "^1.1.0",
390 | "create-hmac": "^1.1.2",
391 | "elliptic": "^6.0.0",
392 | "inherits": "^2.0.1",
393 | "parse-asn1": "^5.0.0"
394 | }
395 | },
396 | "browserify-zlib": {
397 | "version": "0.1.4",
398 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
399 | "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
400 | "dev": true,
401 | "requires": {
402 | "pako": "~0.2.0"
403 | }
404 | },
405 | "buffer": {
406 | "version": "4.9.1",
407 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
408 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
409 | "dev": true,
410 | "requires": {
411 | "base64-js": "^1.0.2",
412 | "ieee754": "^1.1.4",
413 | "isarray": "^1.0.0"
414 | }
415 | },
416 | "buffer-from": {
417 | "version": "1.1.1",
418 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
419 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
420 | "dev": true
421 | },
422 | "buffer-xor": {
423 | "version": "1.0.3",
424 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
425 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
426 | "dev": true
427 | },
428 | "builtin-status-codes": {
429 | "version": "3.0.0",
430 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
431 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
432 | "dev": true
433 | },
434 | "cached-path-relative": {
435 | "version": "1.0.2",
436 | "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz",
437 | "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
438 | "dev": true
439 | },
440 | "caller-path": {
441 | "version": "0.1.0",
442 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
443 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
444 | "dev": true,
445 | "requires": {
446 | "callsites": "^0.2.0"
447 | }
448 | },
449 | "callsites": {
450 | "version": "0.2.0",
451 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
452 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
453 | "dev": true
454 | },
455 | "camelcase": {
456 | "version": "1.2.1",
457 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
458 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
459 | "dev": true
460 | },
461 | "center-align": {
462 | "version": "0.1.3",
463 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
464 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
465 | "dev": true,
466 | "requires": {
467 | "align-text": "^0.1.3",
468 | "lazy-cache": "^1.0.3"
469 | }
470 | },
471 | "chalk": {
472 | "version": "1.1.3",
473 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
474 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
475 | "dev": true,
476 | "requires": {
477 | "ansi-styles": "^2.2.1",
478 | "escape-string-regexp": "^1.0.2",
479 | "has-ansi": "^2.0.0",
480 | "strip-ansi": "^3.0.0",
481 | "supports-color": "^2.0.0"
482 | }
483 | },
484 | "cipher-base": {
485 | "version": "1.0.4",
486 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
487 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
488 | "dev": true,
489 | "requires": {
490 | "inherits": "^2.0.1",
491 | "safe-buffer": "^5.0.1"
492 | }
493 | },
494 | "circular-json": {
495 | "version": "0.3.3",
496 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
497 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
498 | "dev": true
499 | },
500 | "cli-cursor": {
501 | "version": "1.0.2",
502 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
503 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
504 | "dev": true,
505 | "requires": {
506 | "restore-cursor": "^1.0.1"
507 | }
508 | },
509 | "cli-width": {
510 | "version": "2.2.0",
511 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
512 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
513 | "dev": true
514 | },
515 | "cliui": {
516 | "version": "2.1.0",
517 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
518 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
519 | "dev": true,
520 | "requires": {
521 | "center-align": "^0.1.1",
522 | "right-align": "^0.1.1",
523 | "wordwrap": "0.0.2"
524 | },
525 | "dependencies": {
526 | "wordwrap": {
527 | "version": "0.0.2",
528 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
529 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
530 | "dev": true
531 | }
532 | }
533 | },
534 | "co": {
535 | "version": "4.6.0",
536 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
537 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
538 | "dev": true
539 | },
540 | "code": {
541 | "version": "3.0.2",
542 | "resolved": "https://registry.npmjs.org/code/-/code-3.0.2.tgz",
543 | "integrity": "sha1-cyZccBWdvOKwI8j7aGPnt2cEpPw=",
544 | "dev": true,
545 | "requires": {
546 | "hoek": "4.x.x"
547 | }
548 | },
549 | "code-point-at": {
550 | "version": "1.1.0",
551 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
552 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
553 | "dev": true
554 | },
555 | "combine-source-map": {
556 | "version": "0.8.0",
557 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
558 | "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
559 | "dev": true,
560 | "requires": {
561 | "convert-source-map": "~1.1.0",
562 | "inline-source-map": "~0.6.0",
563 | "lodash.memoize": "~3.0.3",
564 | "source-map": "~0.5.3"
565 | }
566 | },
567 | "commander": {
568 | "version": "2.17.1",
569 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
570 | "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
571 | "dev": true,
572 | "optional": true
573 | },
574 | "concat-map": {
575 | "version": "0.0.1",
576 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
577 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
578 | "dev": true
579 | },
580 | "concat-stream": {
581 | "version": "1.5.2",
582 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
583 | "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
584 | "dev": true,
585 | "requires": {
586 | "inherits": "~2.0.1",
587 | "readable-stream": "~2.0.0",
588 | "typedarray": "~0.0.5"
589 | },
590 | "dependencies": {
591 | "process-nextick-args": {
592 | "version": "1.0.7",
593 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
594 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
595 | "dev": true
596 | },
597 | "readable-stream": {
598 | "version": "2.0.6",
599 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
600 | "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
601 | "dev": true,
602 | "requires": {
603 | "core-util-is": "~1.0.0",
604 | "inherits": "~2.0.1",
605 | "isarray": "~1.0.0",
606 | "process-nextick-args": "~1.0.6",
607 | "string_decoder": "~0.10.x",
608 | "util-deprecate": "~1.0.1"
609 | }
610 | }
611 | }
612 | },
613 | "console-browserify": {
614 | "version": "1.1.0",
615 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
616 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
617 | "dev": true,
618 | "requires": {
619 | "date-now": "^0.1.4"
620 | }
621 | },
622 | "constants-browserify": {
623 | "version": "1.0.0",
624 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
625 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
626 | "dev": true
627 | },
628 | "convert-source-map": {
629 | "version": "1.1.3",
630 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
631 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
632 | "dev": true
633 | },
634 | "core-util-is": {
635 | "version": "1.0.2",
636 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
637 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
638 | "dev": true
639 | },
640 | "create-ecdh": {
641 | "version": "4.0.3",
642 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
643 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
644 | "dev": true,
645 | "requires": {
646 | "bn.js": "^4.1.0",
647 | "elliptic": "^6.0.0"
648 | }
649 | },
650 | "create-hash": {
651 | "version": "1.2.0",
652 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
653 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
654 | "dev": true,
655 | "requires": {
656 | "cipher-base": "^1.0.1",
657 | "inherits": "^2.0.1",
658 | "md5.js": "^1.3.4",
659 | "ripemd160": "^2.0.1",
660 | "sha.js": "^2.4.0"
661 | }
662 | },
663 | "create-hmac": {
664 | "version": "1.1.7",
665 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
666 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
667 | "dev": true,
668 | "requires": {
669 | "cipher-base": "^1.0.3",
670 | "create-hash": "^1.1.0",
671 | "inherits": "^2.0.1",
672 | "ripemd160": "^2.0.0",
673 | "safe-buffer": "^5.0.1",
674 | "sha.js": "^2.4.8"
675 | }
676 | },
677 | "crypto-browserify": {
678 | "version": "3.12.0",
679 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
680 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
681 | "dev": true,
682 | "requires": {
683 | "browserify-cipher": "^1.0.0",
684 | "browserify-sign": "^4.0.0",
685 | "create-ecdh": "^4.0.0",
686 | "create-hash": "^1.1.0",
687 | "create-hmac": "^1.1.0",
688 | "diffie-hellman": "^5.0.0",
689 | "inherits": "^2.0.1",
690 | "pbkdf2": "^3.0.3",
691 | "public-encrypt": "^4.0.0",
692 | "randombytes": "^2.0.0",
693 | "randomfill": "^1.0.3"
694 | }
695 | },
696 | "d": {
697 | "version": "1.0.0",
698 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
699 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
700 | "dev": true,
701 | "requires": {
702 | "es5-ext": "^0.10.9"
703 | }
704 | },
705 | "date-now": {
706 | "version": "0.1.4",
707 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
708 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
709 | "dev": true
710 | },
711 | "debug": {
712 | "version": "2.6.9",
713 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
714 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
715 | "dev": true,
716 | "requires": {
717 | "ms": "2.0.0"
718 | }
719 | },
720 | "decamelize": {
721 | "version": "1.2.0",
722 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
723 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
724 | "dev": true
725 | },
726 | "deep-is": {
727 | "version": "0.1.3",
728 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
729 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
730 | "dev": true
731 | },
732 | "defined": {
733 | "version": "1.0.0",
734 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
735 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
736 | "dev": true
737 | },
738 | "deps-sort": {
739 | "version": "2.0.0",
740 | "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
741 | "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
742 | "dev": true,
743 | "requires": {
744 | "JSONStream": "^1.0.3",
745 | "shasum": "^1.0.0",
746 | "subarg": "^1.0.0",
747 | "through2": "^2.0.0"
748 | }
749 | },
750 | "des.js": {
751 | "version": "1.0.0",
752 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
753 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
754 | "dev": true,
755 | "requires": {
756 | "inherits": "^2.0.1",
757 | "minimalistic-assert": "^1.0.0"
758 | }
759 | },
760 | "detective": {
761 | "version": "4.7.1",
762 | "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
763 | "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
764 | "dev": true,
765 | "requires": {
766 | "acorn": "^5.2.1",
767 | "defined": "^1.0.0"
768 | },
769 | "dependencies": {
770 | "acorn": {
771 | "version": "5.7.3",
772 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
773 | "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
774 | "dev": true
775 | }
776 | }
777 | },
778 | "diff": {
779 | "version": "3.5.0",
780 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
781 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
782 | "dev": true
783 | },
784 | "diffie-hellman": {
785 | "version": "5.0.3",
786 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
787 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
788 | "dev": true,
789 | "requires": {
790 | "bn.js": "^4.1.0",
791 | "miller-rabin": "^4.0.0",
792 | "randombytes": "^2.0.0"
793 | }
794 | },
795 | "doctrine": {
796 | "version": "2.1.0",
797 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
798 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
799 | "dev": true,
800 | "requires": {
801 | "esutils": "^2.0.2"
802 | }
803 | },
804 | "domain-browser": {
805 | "version": "1.1.7",
806 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
807 | "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
808 | "dev": true
809 | },
810 | "duplexer2": {
811 | "version": "0.1.4",
812 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
813 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
814 | "dev": true,
815 | "requires": {
816 | "readable-stream": "^2.0.2"
817 | }
818 | },
819 | "elliptic": {
820 | "version": "6.4.1",
821 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
822 | "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
823 | "dev": true,
824 | "requires": {
825 | "bn.js": "^4.4.0",
826 | "brorand": "^1.0.1",
827 | "hash.js": "^1.0.0",
828 | "hmac-drbg": "^1.0.0",
829 | "inherits": "^2.0.1",
830 | "minimalistic-assert": "^1.0.0",
831 | "minimalistic-crypto-utils": "^1.0.0"
832 | }
833 | },
834 | "es5-ext": {
835 | "version": "0.10.47",
836 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz",
837 | "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==",
838 | "dev": true,
839 | "requires": {
840 | "es6-iterator": "~2.0.3",
841 | "es6-symbol": "~3.1.1",
842 | "next-tick": "1"
843 | }
844 | },
845 | "es6-iterator": {
846 | "version": "2.0.3",
847 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
848 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
849 | "dev": true,
850 | "requires": {
851 | "d": "1",
852 | "es5-ext": "^0.10.35",
853 | "es6-symbol": "^3.1.1"
854 | }
855 | },
856 | "es6-map": {
857 | "version": "0.1.5",
858 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
859 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
860 | "dev": true,
861 | "requires": {
862 | "d": "1",
863 | "es5-ext": "~0.10.14",
864 | "es6-iterator": "~2.0.1",
865 | "es6-set": "~0.1.5",
866 | "es6-symbol": "~3.1.1",
867 | "event-emitter": "~0.3.5"
868 | }
869 | },
870 | "es6-set": {
871 | "version": "0.1.5",
872 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
873 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
874 | "dev": true,
875 | "requires": {
876 | "d": "1",
877 | "es5-ext": "~0.10.14",
878 | "es6-iterator": "~2.0.1",
879 | "es6-symbol": "3.1.1",
880 | "event-emitter": "~0.3.5"
881 | }
882 | },
883 | "es6-symbol": {
884 | "version": "3.1.1",
885 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
886 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
887 | "dev": true,
888 | "requires": {
889 | "d": "1",
890 | "es5-ext": "~0.10.14"
891 | }
892 | },
893 | "es6-weak-map": {
894 | "version": "2.0.2",
895 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
896 | "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
897 | "dev": true,
898 | "requires": {
899 | "d": "1",
900 | "es5-ext": "^0.10.14",
901 | "es6-iterator": "^2.0.1",
902 | "es6-symbol": "^3.1.1"
903 | }
904 | },
905 | "escape-string-regexp": {
906 | "version": "1.0.5",
907 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
908 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
909 | "dev": true
910 | },
911 | "escope": {
912 | "version": "3.6.0",
913 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
914 | "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
915 | "dev": true,
916 | "requires": {
917 | "es6-map": "^0.1.3",
918 | "es6-weak-map": "^2.0.1",
919 | "esrecurse": "^4.1.0",
920 | "estraverse": "^4.1.1"
921 | }
922 | },
923 | "eslint": {
924 | "version": "3.19.0",
925 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
926 | "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
927 | "dev": true,
928 | "requires": {
929 | "babel-code-frame": "^6.16.0",
930 | "chalk": "^1.1.3",
931 | "concat-stream": "^1.5.2",
932 | "debug": "^2.1.1",
933 | "doctrine": "^2.0.0",
934 | "escope": "^3.6.0",
935 | "espree": "^3.4.0",
936 | "esquery": "^1.0.0",
937 | "estraverse": "^4.2.0",
938 | "esutils": "^2.0.2",
939 | "file-entry-cache": "^2.0.0",
940 | "glob": "^7.0.3",
941 | "globals": "^9.14.0",
942 | "ignore": "^3.2.0",
943 | "imurmurhash": "^0.1.4",
944 | "inquirer": "^0.12.0",
945 | "is-my-json-valid": "^2.10.0",
946 | "is-resolvable": "^1.0.0",
947 | "js-yaml": "^3.5.1",
948 | "json-stable-stringify": "^1.0.0",
949 | "levn": "^0.3.0",
950 | "lodash": "^4.0.0",
951 | "mkdirp": "^0.5.0",
952 | "natural-compare": "^1.4.0",
953 | "optionator": "^0.8.2",
954 | "path-is-inside": "^1.0.1",
955 | "pluralize": "^1.2.1",
956 | "progress": "^1.1.8",
957 | "require-uncached": "^1.0.2",
958 | "shelljs": "^0.7.5",
959 | "strip-bom": "^3.0.0",
960 | "strip-json-comments": "~2.0.1",
961 | "table": "^3.7.8",
962 | "text-table": "~0.2.0",
963 | "user-home": "^2.0.0"
964 | },
965 | "dependencies": {
966 | "json-stable-stringify": {
967 | "version": "1.0.1",
968 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
969 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
970 | "dev": true,
971 | "requires": {
972 | "jsonify": "~0.0.0"
973 | }
974 | }
975 | }
976 | },
977 | "eslint-config-hapi": {
978 | "version": "10.1.0",
979 | "resolved": "https://registry.npmjs.org/eslint-config-hapi/-/eslint-config-hapi-10.1.0.tgz",
980 | "integrity": "sha512-tAUedyvZla1qKt6jhOx7mj5tYDVCwdSyImpEK7wk/A/atKUjg18aHUK6Q6qWWM6rq21I1F/A8JAhIpkk0SvFMQ==",
981 | "dev": true
982 | },
983 | "eslint-config-tschaub": {
984 | "version": "5.0.0",
985 | "resolved": "https://registry.npmjs.org/eslint-config-tschaub/-/eslint-config-tschaub-5.0.0.tgz",
986 | "integrity": "sha1-N5HdWCSGCGit4mf4oVUtgnxDXr4=",
987 | "dev": true
988 | },
989 | "eslint-plugin-hapi": {
990 | "version": "4.1.0",
991 | "resolved": "https://registry.npmjs.org/eslint-plugin-hapi/-/eslint-plugin-hapi-4.1.0.tgz",
992 | "integrity": "sha512-z1yUoSWArx6pXaC0FoWRFpqjbHn8QWonJiTVhJmiC14jOAT7FZKdKWCkhM4jQrgrkEK9YEv3p2HuzSf5dtWmuQ==",
993 | "dev": true,
994 | "requires": {
995 | "hapi-capitalize-modules": "1.x.x",
996 | "hapi-for-you": "1.x.x",
997 | "hapi-no-var": "1.x.x",
998 | "hapi-scope-start": "2.x.x",
999 | "no-arrowception": "1.x.x"
1000 | }
1001 | },
1002 | "espree": {
1003 | "version": "3.5.4",
1004 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
1005 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
1006 | "dev": true,
1007 | "requires": {
1008 | "acorn": "^5.5.0",
1009 | "acorn-jsx": "^3.0.0"
1010 | },
1011 | "dependencies": {
1012 | "acorn": {
1013 | "version": "5.7.3",
1014 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
1015 | "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
1016 | "dev": true
1017 | }
1018 | }
1019 | },
1020 | "esprima": {
1021 | "version": "4.0.1",
1022 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1023 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1024 | "dev": true
1025 | },
1026 | "esquery": {
1027 | "version": "1.0.1",
1028 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
1029 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
1030 | "dev": true,
1031 | "requires": {
1032 | "estraverse": "^4.0.0"
1033 | }
1034 | },
1035 | "esrecurse": {
1036 | "version": "4.2.1",
1037 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1038 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1039 | "dev": true,
1040 | "requires": {
1041 | "estraverse": "^4.1.0"
1042 | }
1043 | },
1044 | "estraverse": {
1045 | "version": "4.2.0",
1046 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
1047 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
1048 | "dev": true
1049 | },
1050 | "esutils": {
1051 | "version": "2.0.2",
1052 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
1053 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
1054 | "dev": true
1055 | },
1056 | "event-emitter": {
1057 | "version": "0.3.5",
1058 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
1059 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
1060 | "dev": true,
1061 | "requires": {
1062 | "d": "1",
1063 | "es5-ext": "~0.10.14"
1064 | }
1065 | },
1066 | "events": {
1067 | "version": "1.1.1",
1068 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
1069 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
1070 | "dev": true
1071 | },
1072 | "evp_bytestokey": {
1073 | "version": "1.0.3",
1074 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
1075 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
1076 | "dev": true,
1077 | "requires": {
1078 | "md5.js": "^1.3.4",
1079 | "safe-buffer": "^5.1.1"
1080 | }
1081 | },
1082 | "exit-hook": {
1083 | "version": "1.1.1",
1084 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
1085 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
1086 | "dev": true
1087 | },
1088 | "fast-levenshtein": {
1089 | "version": "2.0.6",
1090 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1091 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1092 | "dev": true
1093 | },
1094 | "figures": {
1095 | "version": "1.7.0",
1096 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
1097 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
1098 | "dev": true,
1099 | "requires": {
1100 | "escape-string-regexp": "^1.0.5",
1101 | "object-assign": "^4.1.0"
1102 | }
1103 | },
1104 | "file-entry-cache": {
1105 | "version": "2.0.0",
1106 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
1107 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
1108 | "dev": true,
1109 | "requires": {
1110 | "flat-cache": "^1.2.1",
1111 | "object-assign": "^4.0.1"
1112 | }
1113 | },
1114 | "find-rc": {
1115 | "version": "3.0.1",
1116 | "resolved": "https://registry.npmjs.org/find-rc/-/find-rc-3.0.1.tgz",
1117 | "integrity": "sha1-VKQXg3DxC8k3H6jRssKAmir6DM4=",
1118 | "dev": true
1119 | },
1120 | "flat-cache": {
1121 | "version": "1.3.4",
1122 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
1123 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
1124 | "dev": true,
1125 | "requires": {
1126 | "circular-json": "^0.3.1",
1127 | "graceful-fs": "^4.1.2",
1128 | "rimraf": "~2.6.2",
1129 | "write": "^0.2.1"
1130 | }
1131 | },
1132 | "fs.realpath": {
1133 | "version": "1.0.0",
1134 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1135 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1136 | "dev": true
1137 | },
1138 | "function-bind": {
1139 | "version": "1.1.1",
1140 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1141 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1142 | "dev": true
1143 | },
1144 | "generate-function": {
1145 | "version": "2.3.1",
1146 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
1147 | "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
1148 | "dev": true,
1149 | "requires": {
1150 | "is-property": "^1.0.2"
1151 | }
1152 | },
1153 | "generate-object-property": {
1154 | "version": "1.2.0",
1155 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
1156 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
1157 | "dev": true,
1158 | "requires": {
1159 | "is-property": "^1.0.0"
1160 | }
1161 | },
1162 | "get-assigned-identifiers": {
1163 | "version": "1.2.0",
1164 | "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
1165 | "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==",
1166 | "dev": true
1167 | },
1168 | "glob": {
1169 | "version": "7.1.3",
1170 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
1171 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
1172 | "dev": true,
1173 | "requires": {
1174 | "fs.realpath": "^1.0.0",
1175 | "inflight": "^1.0.4",
1176 | "inherits": "2",
1177 | "minimatch": "^3.0.4",
1178 | "once": "^1.3.0",
1179 | "path-is-absolute": "^1.0.0"
1180 | }
1181 | },
1182 | "globals": {
1183 | "version": "9.18.0",
1184 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
1185 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
1186 | "dev": true
1187 | },
1188 | "graceful-fs": {
1189 | "version": "4.1.15",
1190 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
1191 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
1192 | "dev": true
1193 | },
1194 | "handlebars": {
1195 | "version": "4.0.12",
1196 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
1197 | "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
1198 | "dev": true,
1199 | "requires": {
1200 | "async": "^2.5.0",
1201 | "optimist": "^0.6.1",
1202 | "source-map": "^0.6.1",
1203 | "uglify-js": "^3.1.4"
1204 | },
1205 | "dependencies": {
1206 | "source-map": {
1207 | "version": "0.6.1",
1208 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1209 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1210 | "dev": true
1211 | },
1212 | "uglify-js": {
1213 | "version": "3.4.9",
1214 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
1215 | "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
1216 | "dev": true,
1217 | "optional": true,
1218 | "requires": {
1219 | "commander": "~2.17.1",
1220 | "source-map": "~0.6.1"
1221 | }
1222 | }
1223 | }
1224 | },
1225 | "hapi-capitalize-modules": {
1226 | "version": "1.1.6",
1227 | "resolved": "https://registry.npmjs.org/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz",
1228 | "integrity": "sha1-eZEXFBXhXmqjIx5k3ac8gUZmUxg=",
1229 | "dev": true
1230 | },
1231 | "hapi-for-you": {
1232 | "version": "1.0.0",
1233 | "resolved": "https://registry.npmjs.org/hapi-for-you/-/hapi-for-you-1.0.0.tgz",
1234 | "integrity": "sha1-02L77o172pwseAHiB+WlzRoLans=",
1235 | "dev": true
1236 | },
1237 | "hapi-no-var": {
1238 | "version": "1.0.1",
1239 | "resolved": "https://registry.npmjs.org/hapi-no-var/-/hapi-no-var-1.0.1.tgz",
1240 | "integrity": "sha512-kk2xyyTzI+eQ/oA1rO4eVdCpYsrPHVERHa6+mTHD08XXFLaAkkaEs6reMg1VyqGh2o5xPt//DO4EhCacLx/cRA==",
1241 | "dev": true
1242 | },
1243 | "hapi-scope-start": {
1244 | "version": "2.1.1",
1245 | "resolved": "https://registry.npmjs.org/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz",
1246 | "integrity": "sha1-dJWnJv5yt7yo3izcwdh82M5qtPI=",
1247 | "dev": true
1248 | },
1249 | "has": {
1250 | "version": "1.0.3",
1251 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1252 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1253 | "dev": true,
1254 | "requires": {
1255 | "function-bind": "^1.1.1"
1256 | }
1257 | },
1258 | "has-ansi": {
1259 | "version": "2.0.0",
1260 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1261 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1262 | "dev": true,
1263 | "requires": {
1264 | "ansi-regex": "^2.0.0"
1265 | }
1266 | },
1267 | "hash-base": {
1268 | "version": "3.0.4",
1269 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
1270 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
1271 | "dev": true,
1272 | "requires": {
1273 | "inherits": "^2.0.1",
1274 | "safe-buffer": "^5.0.1"
1275 | }
1276 | },
1277 | "hash.js": {
1278 | "version": "1.1.7",
1279 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
1280 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
1281 | "dev": true,
1282 | "requires": {
1283 | "inherits": "^2.0.3",
1284 | "minimalistic-assert": "^1.0.1"
1285 | }
1286 | },
1287 | "hmac-drbg": {
1288 | "version": "1.0.1",
1289 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
1290 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
1291 | "dev": true,
1292 | "requires": {
1293 | "hash.js": "^1.0.3",
1294 | "minimalistic-assert": "^1.0.0",
1295 | "minimalistic-crypto-utils": "^1.0.1"
1296 | }
1297 | },
1298 | "hoek": {
1299 | "version": "4.2.1",
1300 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
1301 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
1302 | "dev": true
1303 | },
1304 | "htmlescape": {
1305 | "version": "1.1.1",
1306 | "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
1307 | "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
1308 | "dev": true
1309 | },
1310 | "https-browserify": {
1311 | "version": "0.0.1",
1312 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
1313 | "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
1314 | "dev": true
1315 | },
1316 | "ieee754": {
1317 | "version": "1.1.12",
1318 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
1319 | "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
1320 | "dev": true
1321 | },
1322 | "ignore": {
1323 | "version": "3.3.10",
1324 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
1325 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
1326 | "dev": true
1327 | },
1328 | "imurmurhash": {
1329 | "version": "0.1.4",
1330 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1331 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1332 | "dev": true
1333 | },
1334 | "indexof": {
1335 | "version": "0.0.1",
1336 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
1337 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
1338 | "dev": true
1339 | },
1340 | "inflight": {
1341 | "version": "1.0.6",
1342 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1343 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1344 | "dev": true,
1345 | "requires": {
1346 | "once": "^1.3.0",
1347 | "wrappy": "1"
1348 | }
1349 | },
1350 | "inherits": {
1351 | "version": "2.0.3",
1352 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1353 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1354 | "dev": true
1355 | },
1356 | "inline-source-map": {
1357 | "version": "0.6.2",
1358 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
1359 | "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
1360 | "dev": true,
1361 | "requires": {
1362 | "source-map": "~0.5.3"
1363 | }
1364 | },
1365 | "inquirer": {
1366 | "version": "0.12.0",
1367 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
1368 | "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
1369 | "dev": true,
1370 | "requires": {
1371 | "ansi-escapes": "^1.1.0",
1372 | "ansi-regex": "^2.0.0",
1373 | "chalk": "^1.0.0",
1374 | "cli-cursor": "^1.0.1",
1375 | "cli-width": "^2.0.0",
1376 | "figures": "^1.3.5",
1377 | "lodash": "^4.3.0",
1378 | "readline2": "^1.0.1",
1379 | "run-async": "^0.1.0",
1380 | "rx-lite": "^3.1.2",
1381 | "string-width": "^1.0.1",
1382 | "strip-ansi": "^3.0.0",
1383 | "through": "^2.3.6"
1384 | }
1385 | },
1386 | "insert-module-globals": {
1387 | "version": "7.2.0",
1388 | "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz",
1389 | "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==",
1390 | "dev": true,
1391 | "requires": {
1392 | "JSONStream": "^1.0.3",
1393 | "acorn-node": "^1.5.2",
1394 | "combine-source-map": "^0.8.0",
1395 | "concat-stream": "^1.6.1",
1396 | "is-buffer": "^1.1.0",
1397 | "path-is-absolute": "^1.0.1",
1398 | "process": "~0.11.0",
1399 | "through2": "^2.0.0",
1400 | "undeclared-identifiers": "^1.1.2",
1401 | "xtend": "^4.0.0"
1402 | },
1403 | "dependencies": {
1404 | "concat-stream": {
1405 | "version": "1.6.2",
1406 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
1407 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
1408 | "dev": true,
1409 | "requires": {
1410 | "buffer-from": "^1.0.0",
1411 | "inherits": "^2.0.3",
1412 | "readable-stream": "^2.2.2",
1413 | "typedarray": "^0.0.6"
1414 | }
1415 | }
1416 | }
1417 | },
1418 | "interpret": {
1419 | "version": "1.2.0",
1420 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
1421 | "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
1422 | "dev": true
1423 | },
1424 | "is-buffer": {
1425 | "version": "1.1.6",
1426 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1427 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1428 | "dev": true
1429 | },
1430 | "is-fullwidth-code-point": {
1431 | "version": "1.0.0",
1432 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
1433 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
1434 | "dev": true,
1435 | "requires": {
1436 | "number-is-nan": "^1.0.0"
1437 | }
1438 | },
1439 | "is-my-ip-valid": {
1440 | "version": "1.0.0",
1441 | "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
1442 | "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
1443 | "dev": true
1444 | },
1445 | "is-my-json-valid": {
1446 | "version": "2.19.0",
1447 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz",
1448 | "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==",
1449 | "dev": true,
1450 | "requires": {
1451 | "generate-function": "^2.0.0",
1452 | "generate-object-property": "^1.1.0",
1453 | "is-my-ip-valid": "^1.0.0",
1454 | "jsonpointer": "^4.0.0",
1455 | "xtend": "^4.0.0"
1456 | }
1457 | },
1458 | "is-property": {
1459 | "version": "1.0.2",
1460 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
1461 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
1462 | "dev": true
1463 | },
1464 | "is-resolvable": {
1465 | "version": "1.1.0",
1466 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
1467 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
1468 | "dev": true
1469 | },
1470 | "isarray": {
1471 | "version": "1.0.0",
1472 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1473 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1474 | "dev": true
1475 | },
1476 | "isemail": {
1477 | "version": "2.2.1",
1478 | "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz",
1479 | "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=",
1480 | "dev": true
1481 | },
1482 | "items": {
1483 | "version": "2.1.2",
1484 | "resolved": "https://registry.npmjs.org/items/-/items-2.1.2.tgz",
1485 | "integrity": "sha512-kezcEqgB97BGeZZYtX/MA8AG410ptURstvnz5RAgyFZ8wQFPMxHY8GpTq+/ZHKT3frSlIthUq7EvLt9xn3TvXg==",
1486 | "dev": true
1487 | },
1488 | "joi": {
1489 | "version": "10.6.0",
1490 | "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz",
1491 | "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==",
1492 | "dev": true,
1493 | "requires": {
1494 | "hoek": "4.x.x",
1495 | "isemail": "2.x.x",
1496 | "items": "2.x.x",
1497 | "topo": "2.x.x"
1498 | }
1499 | },
1500 | "js-tokens": {
1501 | "version": "3.0.2",
1502 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
1503 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
1504 | "dev": true
1505 | },
1506 | "js-yaml": {
1507 | "version": "3.12.1",
1508 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
1509 | "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
1510 | "dev": true,
1511 | "requires": {
1512 | "argparse": "^1.0.7",
1513 | "esprima": "^4.0.0"
1514 | }
1515 | },
1516 | "json-stable-stringify": {
1517 | "version": "0.0.1",
1518 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
1519 | "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
1520 | "dev": true,
1521 | "requires": {
1522 | "jsonify": "~0.0.0"
1523 | }
1524 | },
1525 | "json-stringify-safe": {
1526 | "version": "5.0.1",
1527 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1528 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1529 | "dev": true
1530 | },
1531 | "jsonify": {
1532 | "version": "0.0.0",
1533 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
1534 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
1535 | "dev": true
1536 | },
1537 | "jsonparse": {
1538 | "version": "1.3.1",
1539 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
1540 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
1541 | "dev": true
1542 | },
1543 | "jsonpointer": {
1544 | "version": "4.0.1",
1545 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
1546 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
1547 | "dev": true
1548 | },
1549 | "kind-of": {
1550 | "version": "3.2.2",
1551 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1552 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1553 | "dev": true,
1554 | "requires": {
1555 | "is-buffer": "^1.1.5"
1556 | }
1557 | },
1558 | "lab": {
1559 | "version": "11.2.2",
1560 | "resolved": "https://registry.npmjs.org/lab/-/lab-11.2.2.tgz",
1561 | "integrity": "sha1-ASzTGDxcC28cDwIxoOVUNM55OIc=",
1562 | "dev": true,
1563 | "requires": {
1564 | "bossy": "3.x.x",
1565 | "diff": "3.x.x",
1566 | "eslint": "3.13.x",
1567 | "eslint-config-hapi": "10.x.x",
1568 | "eslint-plugin-hapi": "4.x.x",
1569 | "espree": "3.x.x",
1570 | "find-rc": "3.0.x",
1571 | "handlebars": "4.x.x",
1572 | "hoek": "4.x.x",
1573 | "items": "2.x.x",
1574 | "json-stable-stringify": "1.x.x",
1575 | "json-stringify-safe": "5.x.x",
1576 | "mkdirp": "0.5.x",
1577 | "seedrandom": "2.4.x",
1578 | "source-map-support": "0.4.x"
1579 | },
1580 | "dependencies": {
1581 | "doctrine": {
1582 | "version": "1.5.0",
1583 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
1584 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
1585 | "dev": true,
1586 | "requires": {
1587 | "esutils": "^2.0.2",
1588 | "isarray": "^1.0.0"
1589 | }
1590 | },
1591 | "eslint": {
1592 | "version": "3.13.1",
1593 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.13.1.tgz",
1594 | "integrity": "sha1-Vk0mRrXv3thd+WmFMy7dkaI7/yU=",
1595 | "dev": true,
1596 | "requires": {
1597 | "babel-code-frame": "^6.16.0",
1598 | "chalk": "^1.1.3",
1599 | "concat-stream": "^1.4.6",
1600 | "debug": "^2.1.1",
1601 | "doctrine": "^1.2.2",
1602 | "escope": "^3.6.0",
1603 | "espree": "^3.3.1",
1604 | "estraverse": "^4.2.0",
1605 | "esutils": "^2.0.2",
1606 | "file-entry-cache": "^2.0.0",
1607 | "glob": "^7.0.3",
1608 | "globals": "^9.14.0",
1609 | "ignore": "^3.2.0",
1610 | "imurmurhash": "^0.1.4",
1611 | "inquirer": "^0.12.0",
1612 | "is-my-json-valid": "^2.10.0",
1613 | "is-resolvable": "^1.0.0",
1614 | "js-yaml": "^3.5.1",
1615 | "json-stable-stringify": "^1.0.0",
1616 | "levn": "^0.3.0",
1617 | "lodash": "^4.0.0",
1618 | "mkdirp": "^0.5.0",
1619 | "natural-compare": "^1.4.0",
1620 | "optionator": "^0.8.2",
1621 | "path-is-inside": "^1.0.1",
1622 | "pluralize": "^1.2.1",
1623 | "progress": "^1.1.8",
1624 | "require-uncached": "^1.0.2",
1625 | "shelljs": "^0.7.5",
1626 | "strip-bom": "^3.0.0",
1627 | "strip-json-comments": "~2.0.1",
1628 | "table": "^3.7.8",
1629 | "text-table": "~0.2.0",
1630 | "user-home": "^2.0.0"
1631 | }
1632 | },
1633 | "json-stable-stringify": {
1634 | "version": "1.0.1",
1635 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
1636 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
1637 | "dev": true,
1638 | "requires": {
1639 | "jsonify": "~0.0.0"
1640 | }
1641 | }
1642 | }
1643 | },
1644 | "labeled-stream-splicer": {
1645 | "version": "2.0.1",
1646 | "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz",
1647 | "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==",
1648 | "dev": true,
1649 | "requires": {
1650 | "inherits": "^2.0.1",
1651 | "isarray": "^2.0.4",
1652 | "stream-splicer": "^2.0.0"
1653 | },
1654 | "dependencies": {
1655 | "isarray": {
1656 | "version": "2.0.4",
1657 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz",
1658 | "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==",
1659 | "dev": true
1660 | }
1661 | }
1662 | },
1663 | "lazy-cache": {
1664 | "version": "1.0.4",
1665 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
1666 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
1667 | "dev": true
1668 | },
1669 | "levn": {
1670 | "version": "0.3.0",
1671 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1672 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1673 | "dev": true,
1674 | "requires": {
1675 | "prelude-ls": "~1.1.2",
1676 | "type-check": "~0.3.2"
1677 | }
1678 | },
1679 | "lodash": {
1680 | "version": "4.17.11",
1681 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
1682 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
1683 | "dev": true
1684 | },
1685 | "lodash.memoize": {
1686 | "version": "3.0.4",
1687 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
1688 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
1689 | "dev": true
1690 | },
1691 | "longest": {
1692 | "version": "1.0.1",
1693 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
1694 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
1695 | "dev": true
1696 | },
1697 | "md5.js": {
1698 | "version": "1.3.5",
1699 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
1700 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
1701 | "dev": true,
1702 | "requires": {
1703 | "hash-base": "^3.0.0",
1704 | "inherits": "^2.0.1",
1705 | "safe-buffer": "^5.1.2"
1706 | }
1707 | },
1708 | "miller-rabin": {
1709 | "version": "4.0.1",
1710 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
1711 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
1712 | "dev": true,
1713 | "requires": {
1714 | "bn.js": "^4.0.0",
1715 | "brorand": "^1.0.1"
1716 | }
1717 | },
1718 | "minimalistic-assert": {
1719 | "version": "1.0.1",
1720 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
1721 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
1722 | "dev": true
1723 | },
1724 | "minimalistic-crypto-utils": {
1725 | "version": "1.0.1",
1726 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
1727 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
1728 | "dev": true
1729 | },
1730 | "minimatch": {
1731 | "version": "3.0.4",
1732 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1733 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1734 | "dev": true,
1735 | "requires": {
1736 | "brace-expansion": "^1.1.7"
1737 | }
1738 | },
1739 | "minimist": {
1740 | "version": "1.2.0",
1741 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1742 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1743 | "dev": true
1744 | },
1745 | "mkdirp": {
1746 | "version": "0.5.1",
1747 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1748 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1749 | "dev": true,
1750 | "requires": {
1751 | "minimist": "0.0.8"
1752 | },
1753 | "dependencies": {
1754 | "minimist": {
1755 | "version": "0.0.8",
1756 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1757 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1758 | "dev": true
1759 | }
1760 | }
1761 | },
1762 | "module-deps": {
1763 | "version": "4.1.1",
1764 | "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
1765 | "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
1766 | "dev": true,
1767 | "requires": {
1768 | "JSONStream": "^1.0.3",
1769 | "browser-resolve": "^1.7.0",
1770 | "cached-path-relative": "^1.0.0",
1771 | "concat-stream": "~1.5.0",
1772 | "defined": "^1.0.0",
1773 | "detective": "^4.0.0",
1774 | "duplexer2": "^0.1.2",
1775 | "inherits": "^2.0.1",
1776 | "parents": "^1.0.0",
1777 | "readable-stream": "^2.0.2",
1778 | "resolve": "^1.1.3",
1779 | "stream-combiner2": "^1.1.1",
1780 | "subarg": "^1.0.0",
1781 | "through2": "^2.0.0",
1782 | "xtend": "^4.0.0"
1783 | }
1784 | },
1785 | "ms": {
1786 | "version": "2.0.0",
1787 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1788 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1789 | "dev": true
1790 | },
1791 | "mute-stream": {
1792 | "version": "0.0.5",
1793 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
1794 | "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
1795 | "dev": true
1796 | },
1797 | "natural-compare": {
1798 | "version": "1.4.0",
1799 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1800 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1801 | "dev": true
1802 | },
1803 | "next-tick": {
1804 | "version": "1.0.0",
1805 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
1806 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
1807 | "dev": true
1808 | },
1809 | "no-arrowception": {
1810 | "version": "1.0.0",
1811 | "resolved": "https://registry.npmjs.org/no-arrowception/-/no-arrowception-1.0.0.tgz",
1812 | "integrity": "sha1-W/PpXrnEG1c4SoBTM9qjtzTuMno=",
1813 | "dev": true
1814 | },
1815 | "number-is-nan": {
1816 | "version": "1.0.1",
1817 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
1818 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
1819 | "dev": true
1820 | },
1821 | "object-assign": {
1822 | "version": "4.1.1",
1823 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1824 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1825 | "dev": true
1826 | },
1827 | "once": {
1828 | "version": "1.4.0",
1829 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1830 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1831 | "dev": true,
1832 | "requires": {
1833 | "wrappy": "1"
1834 | }
1835 | },
1836 | "onetime": {
1837 | "version": "1.1.0",
1838 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
1839 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
1840 | "dev": true
1841 | },
1842 | "optimist": {
1843 | "version": "0.6.1",
1844 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
1845 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
1846 | "dev": true,
1847 | "requires": {
1848 | "minimist": "~0.0.1",
1849 | "wordwrap": "~0.0.2"
1850 | },
1851 | "dependencies": {
1852 | "minimist": {
1853 | "version": "0.0.10",
1854 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
1855 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
1856 | "dev": true
1857 | },
1858 | "wordwrap": {
1859 | "version": "0.0.3",
1860 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
1861 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
1862 | "dev": true
1863 | }
1864 | }
1865 | },
1866 | "optionator": {
1867 | "version": "0.8.2",
1868 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
1869 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
1870 | "dev": true,
1871 | "requires": {
1872 | "deep-is": "~0.1.3",
1873 | "fast-levenshtein": "~2.0.4",
1874 | "levn": "~0.3.0",
1875 | "prelude-ls": "~1.1.2",
1876 | "type-check": "~0.3.2",
1877 | "wordwrap": "~1.0.0"
1878 | }
1879 | },
1880 | "os-browserify": {
1881 | "version": "0.1.2",
1882 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz",
1883 | "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=",
1884 | "dev": true
1885 | },
1886 | "os-homedir": {
1887 | "version": "1.0.2",
1888 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1889 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
1890 | "dev": true
1891 | },
1892 | "pako": {
1893 | "version": "0.2.9",
1894 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
1895 | "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
1896 | "dev": true
1897 | },
1898 | "parents": {
1899 | "version": "1.0.1",
1900 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
1901 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
1902 | "dev": true,
1903 | "requires": {
1904 | "path-platform": "~0.11.15"
1905 | }
1906 | },
1907 | "parse-asn1": {
1908 | "version": "5.1.3",
1909 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz",
1910 | "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==",
1911 | "dev": true,
1912 | "requires": {
1913 | "asn1.js": "^4.0.0",
1914 | "browserify-aes": "^1.0.0",
1915 | "create-hash": "^1.1.0",
1916 | "evp_bytestokey": "^1.0.0",
1917 | "pbkdf2": "^3.0.3",
1918 | "safe-buffer": "^5.1.1"
1919 | }
1920 | },
1921 | "path-browserify": {
1922 | "version": "0.0.1",
1923 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
1924 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
1925 | "dev": true
1926 | },
1927 | "path-is-absolute": {
1928 | "version": "1.0.1",
1929 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1930 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1931 | "dev": true
1932 | },
1933 | "path-is-inside": {
1934 | "version": "1.0.2",
1935 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1936 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
1937 | "dev": true
1938 | },
1939 | "path-parse": {
1940 | "version": "1.0.6",
1941 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1942 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1943 | "dev": true
1944 | },
1945 | "path-platform": {
1946 | "version": "0.11.15",
1947 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
1948 | "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
1949 | "dev": true
1950 | },
1951 | "pbkdf2": {
1952 | "version": "3.0.17",
1953 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
1954 | "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
1955 | "dev": true,
1956 | "requires": {
1957 | "create-hash": "^1.1.2",
1958 | "create-hmac": "^1.1.4",
1959 | "ripemd160": "^2.0.1",
1960 | "safe-buffer": "^5.0.1",
1961 | "sha.js": "^2.4.8"
1962 | }
1963 | },
1964 | "pluralize": {
1965 | "version": "1.2.1",
1966 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
1967 | "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
1968 | "dev": true
1969 | },
1970 | "prelude-ls": {
1971 | "version": "1.1.2",
1972 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1973 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1974 | "dev": true
1975 | },
1976 | "process": {
1977 | "version": "0.11.10",
1978 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1979 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
1980 | "dev": true
1981 | },
1982 | "process-nextick-args": {
1983 | "version": "2.0.0",
1984 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1985 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
1986 | "dev": true
1987 | },
1988 | "progress": {
1989 | "version": "1.1.8",
1990 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
1991 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
1992 | "dev": true
1993 | },
1994 | "public-encrypt": {
1995 | "version": "4.0.3",
1996 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
1997 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
1998 | "dev": true,
1999 | "requires": {
2000 | "bn.js": "^4.1.0",
2001 | "browserify-rsa": "^4.0.0",
2002 | "create-hash": "^1.1.0",
2003 | "parse-asn1": "^5.0.0",
2004 | "randombytes": "^2.0.1",
2005 | "safe-buffer": "^5.1.2"
2006 | }
2007 | },
2008 | "punycode": {
2009 | "version": "1.4.1",
2010 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2011 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2012 | "dev": true
2013 | },
2014 | "querystring": {
2015 | "version": "0.2.0",
2016 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
2017 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
2018 | "dev": true
2019 | },
2020 | "querystring-es3": {
2021 | "version": "0.2.1",
2022 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
2023 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
2024 | "dev": true
2025 | },
2026 | "randombytes": {
2027 | "version": "2.0.6",
2028 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
2029 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
2030 | "dev": true,
2031 | "requires": {
2032 | "safe-buffer": "^5.1.0"
2033 | }
2034 | },
2035 | "randomfill": {
2036 | "version": "1.0.4",
2037 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
2038 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
2039 | "dev": true,
2040 | "requires": {
2041 | "randombytes": "^2.0.5",
2042 | "safe-buffer": "^5.1.0"
2043 | }
2044 | },
2045 | "read-only-stream": {
2046 | "version": "2.0.0",
2047 | "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
2048 | "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
2049 | "dev": true,
2050 | "requires": {
2051 | "readable-stream": "^2.0.2"
2052 | }
2053 | },
2054 | "readable-stream": {
2055 | "version": "2.3.6",
2056 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
2057 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2058 | "dev": true,
2059 | "requires": {
2060 | "core-util-is": "~1.0.0",
2061 | "inherits": "~2.0.3",
2062 | "isarray": "~1.0.0",
2063 | "process-nextick-args": "~2.0.0",
2064 | "safe-buffer": "~5.1.1",
2065 | "string_decoder": "~1.1.1",
2066 | "util-deprecate": "~1.0.1"
2067 | },
2068 | "dependencies": {
2069 | "string_decoder": {
2070 | "version": "1.1.1",
2071 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2072 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2073 | "dev": true,
2074 | "requires": {
2075 | "safe-buffer": "~5.1.0"
2076 | }
2077 | }
2078 | }
2079 | },
2080 | "readline2": {
2081 | "version": "1.0.1",
2082 | "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
2083 | "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
2084 | "dev": true,
2085 | "requires": {
2086 | "code-point-at": "^1.0.0",
2087 | "is-fullwidth-code-point": "^1.0.0",
2088 | "mute-stream": "0.0.5"
2089 | }
2090 | },
2091 | "rechoir": {
2092 | "version": "0.6.2",
2093 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
2094 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
2095 | "dev": true,
2096 | "requires": {
2097 | "resolve": "^1.1.6"
2098 | }
2099 | },
2100 | "repeat-string": {
2101 | "version": "1.6.1",
2102 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
2103 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
2104 | "dev": true
2105 | },
2106 | "require-uncached": {
2107 | "version": "1.0.3",
2108 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
2109 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
2110 | "dev": true,
2111 | "requires": {
2112 | "caller-path": "^0.1.0",
2113 | "resolve-from": "^1.0.0"
2114 | }
2115 | },
2116 | "resolve": {
2117 | "version": "1.10.0",
2118 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
2119 | "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
2120 | "dev": true,
2121 | "requires": {
2122 | "path-parse": "^1.0.6"
2123 | }
2124 | },
2125 | "resolve-from": {
2126 | "version": "1.0.1",
2127 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
2128 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
2129 | "dev": true
2130 | },
2131 | "restore-cursor": {
2132 | "version": "1.0.1",
2133 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
2134 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
2135 | "dev": true,
2136 | "requires": {
2137 | "exit-hook": "^1.0.0",
2138 | "onetime": "^1.0.0"
2139 | }
2140 | },
2141 | "right-align": {
2142 | "version": "0.1.3",
2143 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
2144 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
2145 | "dev": true,
2146 | "requires": {
2147 | "align-text": "^0.1.1"
2148 | }
2149 | },
2150 | "rimraf": {
2151 | "version": "2.6.3",
2152 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
2153 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
2154 | "dev": true,
2155 | "requires": {
2156 | "glob": "^7.1.3"
2157 | }
2158 | },
2159 | "ripemd160": {
2160 | "version": "2.0.2",
2161 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
2162 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
2163 | "dev": true,
2164 | "requires": {
2165 | "hash-base": "^3.0.0",
2166 | "inherits": "^2.0.1"
2167 | }
2168 | },
2169 | "run-async": {
2170 | "version": "0.1.0",
2171 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
2172 | "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
2173 | "dev": true,
2174 | "requires": {
2175 | "once": "^1.3.0"
2176 | }
2177 | },
2178 | "rx-lite": {
2179 | "version": "3.1.2",
2180 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
2181 | "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
2182 | "dev": true
2183 | },
2184 | "safe-buffer": {
2185 | "version": "5.1.2",
2186 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2187 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2188 | "dev": true
2189 | },
2190 | "seedrandom": {
2191 | "version": "2.4.4",
2192 | "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.4.tgz",
2193 | "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==",
2194 | "dev": true
2195 | },
2196 | "sha.js": {
2197 | "version": "2.4.11",
2198 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
2199 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
2200 | "dev": true,
2201 | "requires": {
2202 | "inherits": "^2.0.1",
2203 | "safe-buffer": "^5.0.1"
2204 | }
2205 | },
2206 | "shasum": {
2207 | "version": "1.0.2",
2208 | "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
2209 | "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
2210 | "dev": true,
2211 | "requires": {
2212 | "json-stable-stringify": "~0.0.0",
2213 | "sha.js": "~2.4.4"
2214 | }
2215 | },
2216 | "shell-quote": {
2217 | "version": "1.6.1",
2218 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
2219 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
2220 | "dev": true,
2221 | "requires": {
2222 | "array-filter": "~0.0.0",
2223 | "array-map": "~0.0.0",
2224 | "array-reduce": "~0.0.0",
2225 | "jsonify": "~0.0.0"
2226 | }
2227 | },
2228 | "shelljs": {
2229 | "version": "0.7.8",
2230 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
2231 | "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
2232 | "dev": true,
2233 | "requires": {
2234 | "glob": "^7.0.0",
2235 | "interpret": "^1.0.0",
2236 | "rechoir": "^0.6.2"
2237 | }
2238 | },
2239 | "simple-concat": {
2240 | "version": "1.0.0",
2241 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
2242 | "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
2243 | "dev": true
2244 | },
2245 | "slice-ansi": {
2246 | "version": "0.0.4",
2247 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
2248 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
2249 | "dev": true
2250 | },
2251 | "source-map": {
2252 | "version": "0.5.7",
2253 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2254 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2255 | "dev": true
2256 | },
2257 | "source-map-support": {
2258 | "version": "0.4.18",
2259 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
2260 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
2261 | "dev": true,
2262 | "requires": {
2263 | "source-map": "^0.5.6"
2264 | }
2265 | },
2266 | "sprintf-js": {
2267 | "version": "1.0.3",
2268 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2269 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
2270 | "dev": true
2271 | },
2272 | "stream-browserify": {
2273 | "version": "2.0.2",
2274 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
2275 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
2276 | "dev": true,
2277 | "requires": {
2278 | "inherits": "~2.0.1",
2279 | "readable-stream": "^2.0.2"
2280 | }
2281 | },
2282 | "stream-combiner2": {
2283 | "version": "1.1.1",
2284 | "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
2285 | "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
2286 | "dev": true,
2287 | "requires": {
2288 | "duplexer2": "~0.1.0",
2289 | "readable-stream": "^2.0.2"
2290 | }
2291 | },
2292 | "stream-http": {
2293 | "version": "2.8.3",
2294 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
2295 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
2296 | "dev": true,
2297 | "requires": {
2298 | "builtin-status-codes": "^3.0.0",
2299 | "inherits": "^2.0.1",
2300 | "readable-stream": "^2.3.6",
2301 | "to-arraybuffer": "^1.0.0",
2302 | "xtend": "^4.0.0"
2303 | }
2304 | },
2305 | "stream-splicer": {
2306 | "version": "2.0.0",
2307 | "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
2308 | "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
2309 | "dev": true,
2310 | "requires": {
2311 | "inherits": "^2.0.1",
2312 | "readable-stream": "^2.0.2"
2313 | }
2314 | },
2315 | "string-width": {
2316 | "version": "1.0.2",
2317 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
2318 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
2319 | "dev": true,
2320 | "requires": {
2321 | "code-point-at": "^1.0.0",
2322 | "is-fullwidth-code-point": "^1.0.0",
2323 | "strip-ansi": "^3.0.0"
2324 | }
2325 | },
2326 | "string_decoder": {
2327 | "version": "0.10.31",
2328 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2329 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
2330 | "dev": true
2331 | },
2332 | "strip-ansi": {
2333 | "version": "3.0.1",
2334 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2335 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2336 | "dev": true,
2337 | "requires": {
2338 | "ansi-regex": "^2.0.0"
2339 | }
2340 | },
2341 | "strip-bom": {
2342 | "version": "3.0.0",
2343 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
2344 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
2345 | "dev": true
2346 | },
2347 | "strip-json-comments": {
2348 | "version": "2.0.1",
2349 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
2350 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
2351 | "dev": true
2352 | },
2353 | "subarg": {
2354 | "version": "1.0.0",
2355 | "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
2356 | "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
2357 | "dev": true,
2358 | "requires": {
2359 | "minimist": "^1.1.0"
2360 | }
2361 | },
2362 | "supports-color": {
2363 | "version": "2.0.0",
2364 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2365 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
2366 | "dev": true
2367 | },
2368 | "syntax-error": {
2369 | "version": "1.4.0",
2370 | "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
2371 | "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
2372 | "dev": true,
2373 | "requires": {
2374 | "acorn-node": "^1.2.0"
2375 | }
2376 | },
2377 | "table": {
2378 | "version": "3.8.3",
2379 | "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
2380 | "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
2381 | "dev": true,
2382 | "requires": {
2383 | "ajv": "^4.7.0",
2384 | "ajv-keywords": "^1.0.0",
2385 | "chalk": "^1.1.1",
2386 | "lodash": "^4.0.0",
2387 | "slice-ansi": "0.0.4",
2388 | "string-width": "^2.0.0"
2389 | },
2390 | "dependencies": {
2391 | "ansi-regex": {
2392 | "version": "3.0.0",
2393 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
2394 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
2395 | "dev": true
2396 | },
2397 | "is-fullwidth-code-point": {
2398 | "version": "2.0.0",
2399 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2400 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2401 | "dev": true
2402 | },
2403 | "string-width": {
2404 | "version": "2.1.1",
2405 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
2406 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
2407 | "dev": true,
2408 | "requires": {
2409 | "is-fullwidth-code-point": "^2.0.0",
2410 | "strip-ansi": "^4.0.0"
2411 | }
2412 | },
2413 | "strip-ansi": {
2414 | "version": "4.0.0",
2415 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
2416 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
2417 | "dev": true,
2418 | "requires": {
2419 | "ansi-regex": "^3.0.0"
2420 | }
2421 | }
2422 | }
2423 | },
2424 | "text-table": {
2425 | "version": "0.2.0",
2426 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2427 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2428 | "dev": true
2429 | },
2430 | "through": {
2431 | "version": "2.3.8",
2432 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2433 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2434 | "dev": true
2435 | },
2436 | "through2": {
2437 | "version": "2.0.5",
2438 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
2439 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
2440 | "dev": true,
2441 | "requires": {
2442 | "readable-stream": "~2.3.6",
2443 | "xtend": "~4.0.1"
2444 | }
2445 | },
2446 | "timers-browserify": {
2447 | "version": "1.4.2",
2448 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
2449 | "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
2450 | "dev": true,
2451 | "requires": {
2452 | "process": "~0.11.0"
2453 | }
2454 | },
2455 | "to-arraybuffer": {
2456 | "version": "1.0.1",
2457 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
2458 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
2459 | "dev": true
2460 | },
2461 | "topo": {
2462 | "version": "2.0.2",
2463 | "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
2464 | "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
2465 | "dev": true,
2466 | "requires": {
2467 | "hoek": "4.x.x"
2468 | }
2469 | },
2470 | "tty-browserify": {
2471 | "version": "0.0.1",
2472 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
2473 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
2474 | "dev": true
2475 | },
2476 | "type-check": {
2477 | "version": "0.3.2",
2478 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2479 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2480 | "dev": true,
2481 | "requires": {
2482 | "prelude-ls": "~1.1.2"
2483 | }
2484 | },
2485 | "typedarray": {
2486 | "version": "0.0.6",
2487 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
2488 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
2489 | "dev": true
2490 | },
2491 | "uglify-js": {
2492 | "version": "2.8.29",
2493 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
2494 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
2495 | "dev": true,
2496 | "requires": {
2497 | "source-map": "~0.5.1",
2498 | "uglify-to-browserify": "~1.0.0",
2499 | "yargs": "~3.10.0"
2500 | }
2501 | },
2502 | "uglify-to-browserify": {
2503 | "version": "1.0.2",
2504 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
2505 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
2506 | "dev": true,
2507 | "optional": true
2508 | },
2509 | "umd": {
2510 | "version": "3.0.3",
2511 | "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
2512 | "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
2513 | "dev": true
2514 | },
2515 | "undeclared-identifiers": {
2516 | "version": "1.1.2",
2517 | "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.2.tgz",
2518 | "integrity": "sha512-13EaeocO4edF/3JKime9rD7oB6QI8llAGhgn5fKOPyfkJbRb6NFv9pYV6dFEmpa4uRjKeBqLZP8GpuzqHlKDMQ==",
2519 | "dev": true,
2520 | "requires": {
2521 | "acorn-node": "^1.3.0",
2522 | "get-assigned-identifiers": "^1.2.0",
2523 | "simple-concat": "^1.0.0",
2524 | "xtend": "^4.0.1"
2525 | }
2526 | },
2527 | "url": {
2528 | "version": "0.11.0",
2529 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
2530 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
2531 | "dev": true,
2532 | "requires": {
2533 | "punycode": "1.3.2",
2534 | "querystring": "0.2.0"
2535 | },
2536 | "dependencies": {
2537 | "punycode": {
2538 | "version": "1.3.2",
2539 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
2540 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
2541 | "dev": true
2542 | }
2543 | }
2544 | },
2545 | "user-home": {
2546 | "version": "2.0.0",
2547 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
2548 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
2549 | "dev": true,
2550 | "requires": {
2551 | "os-homedir": "^1.0.0"
2552 | }
2553 | },
2554 | "util": {
2555 | "version": "0.10.4",
2556 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
2557 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
2558 | "dev": true,
2559 | "requires": {
2560 | "inherits": "2.0.3"
2561 | }
2562 | },
2563 | "util-deprecate": {
2564 | "version": "1.0.2",
2565 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2566 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2567 | "dev": true
2568 | },
2569 | "vm-browserify": {
2570 | "version": "0.0.4",
2571 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
2572 | "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
2573 | "dev": true,
2574 | "requires": {
2575 | "indexof": "0.0.1"
2576 | }
2577 | },
2578 | "window-size": {
2579 | "version": "0.1.0",
2580 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
2581 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
2582 | "dev": true
2583 | },
2584 | "wordwrap": {
2585 | "version": "1.0.0",
2586 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
2587 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
2588 | "dev": true
2589 | },
2590 | "wrappy": {
2591 | "version": "1.0.2",
2592 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2593 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2594 | "dev": true
2595 | },
2596 | "write": {
2597 | "version": "0.2.1",
2598 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
2599 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
2600 | "dev": true,
2601 | "requires": {
2602 | "mkdirp": "^0.5.1"
2603 | }
2604 | },
2605 | "xtend": {
2606 | "version": "4.0.1",
2607 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
2608 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
2609 | "dev": true
2610 | },
2611 | "yargs": {
2612 | "version": "3.10.0",
2613 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
2614 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
2615 | "dev": true,
2616 | "requires": {
2617 | "camelcase": "^1.0.2",
2618 | "cliui": "^2.1.0",
2619 | "decamelize": "^1.0.0",
2620 | "window-size": "0.1.0"
2621 | }
2622 | }
2623 | }
2624 | }
2625 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "projzh",
3 | "version": "0.5.0",
4 | "description": "Utilities for working with Chinese coordinate reference systems",
5 | "keywords": [
6 | "baidu",
7 | "mercator",
8 | "bd-09",
9 | "gcj-02",
10 | "projection",
11 | "datum",
12 | "transform",
13 | "china"
14 | ],
15 | "repository": {
16 | "type": "git",
17 | "url": "git://github.com/tschaub/projzh.git"
18 | },
19 | "bugs": {
20 | "url": "https://github.com/tschaub/projzh/issues"
21 | },
22 | "license": "MIT",
23 | "main": "index.js",
24 | "devDependencies": {
25 | "browserify": "^13.0.0",
26 | "code": "^3.0.0",
27 | "eslint": "^3.3.0",
28 | "eslint-config-tschaub": "^5.0.0",
29 | "lab": "^11.1.0",
30 | "uglify-js": "^2.6.2"
31 | },
32 | "scripts": {
33 | "pretest": "eslint . --ignore-pattern *.min.js",
34 | "test": "lab --leaks test",
35 | "prepublish": "npm run bundle",
36 | "bundle": "browserify --standalone projzh index.js | uglifyjs --output index.min.js"
37 | },
38 | "eslintConfig": {
39 | "extends": "tschaub"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/projection/baidu-mercator.js:
--------------------------------------------------------------------------------
1 | var forEachPoint = require('../util').forEachPoint;
2 |
3 | var MCBAND = [12890594.86, 8362377.87,
4 | 5591021, 3481989.83, 1678043.12, 0];
5 |
6 | var LLBAND = [75, 60, 45, 30, 15, 0];
7 |
8 | var MC2LL = [
9 | [1.410526172116255e-8, 0.00000898305509648872, -1.9939833816331,
10 | 200.9824383106796, -187.2403703815547, 91.6087516669843,
11 | -23.38765649603339, 2.57121317296198, -0.03801003308653,
12 | 17337981.2],
13 | [-7.435856389565537e-9, 0.000008983055097726239,
14 | -0.78625201886289, 96.32687599759846, -1.85204757529826,
15 | -59.36935905485877, 47.40033549296737, -16.50741931063887,
16 | 2.28786674699375, 10260144.86],
17 | [-3.030883460898826e-8, 0.00000898305509983578, 0.30071316287616,
18 | 59.74293618442277, 7.357984074871, -25.38371002664745,
19 | 13.45380521110908, -3.29883767235584, 0.32710905363475,
20 | 6856817.37],
21 | [-1.981981304930552e-8, 0.000008983055099779535, 0.03278182852591,
22 | 40.31678527705744, 0.65659298677277, -4.44255534477492,
23 | 0.85341911805263, 0.12923347998204, -0.04625736007561,
24 | 4482777.06],
25 | [3.09191371068437e-9, 0.000008983055096812155, 0.00006995724062,
26 | 23.10934304144901, -0.00023663490511, -0.6321817810242,
27 | -0.00663494467273, 0.03430082397953, -0.00466043876332,
28 | 2555164.4],
29 | [2.890871144776878e-9, 0.000008983055095805407, -3.068298e-8,
30 | 7.47137025468032, -0.00000353937994, -0.02145144861037,
31 | -0.00001234426596, 0.00010322952773, -0.00000323890364,
32 | 826088.5]];
33 |
34 | var LL2MC = [
35 | [-0.0015702102444, 111320.7020616939, 1704480524535203,
36 | -10338987376042340, 26112667856603880,
37 | -35149669176653700, 26595700718403920,
38 | -10725012454188240, 1800819912950474, 82.5],
39 | [0.0008277824516172526, 111320.7020463578, 647795574.6671607,
40 | -4082003173.641316, 10774905663.51142, -15171875531.51559,
41 | 12053065338.62167, -5124939663.577472, 913311935.9512032,
42 | 67.5],
43 | [0.00337398766765, 111320.7020202162, 4481351.045890365,
44 | -23393751.19931662, 79682215.47186455, -115964993.2797253,
45 | 97236711.15602145, -43661946.33752821, 8477230.501135234,
46 | 52.5],
47 | [0.00220636496208, 111320.7020209128, 51751.86112841131,
48 | 3796837.749470245, 992013.7397791013, -1221952.21711287,
49 | 1340652.697009075, -620943.6990984312, 144416.9293806241,
50 | 37.5],
51 | [-0.0003441963504368392, 111320.7020576856, 278.2353980772752,
52 | 2485758.690035394, 6070.750963243378, 54821.18345352118,
53 | 9540.606633304236, -2710.55326746645, 1405.483844121726,
54 | 22.5],
55 | [-0.0003218135878613132, 111320.7020701615, 0.00369383431289,
56 | 823725.6402795718, 0.46104986909093, 2351.343141331292,
57 | 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45]];
58 |
59 |
60 | function getRange(v, min, max) {
61 | v = Math.max(v, min);
62 | v = Math.min(v, max);
63 |
64 | return v;
65 | }
66 |
67 | function getLoop(v, min, max) {
68 | var d = max - min;
69 | while (v > max) {
70 | v -= d;
71 | }
72 | while (v < min) {
73 | v += d;
74 | }
75 |
76 | return v;
77 | }
78 |
79 | function convertor(input, output, offset, table) {
80 | var px = input[offset];
81 | var py = input[offset + 1];
82 | var x = table[0] + table[1] * Math.abs(px);
83 | var d = Math.abs(py) / table[9];
84 | var y = table[2]
85 | + table[3]
86 | * d
87 | + table[4]
88 | * d
89 | * d
90 | + table[5]
91 | * d
92 | * d
93 | * d
94 | + table[6]
95 | * d
96 | * d
97 | * d
98 | * d
99 | + table[7]
100 | * d
101 | * d
102 | * d
103 | * d
104 | * d
105 | + table[8]
106 | * d
107 | * d
108 | * d
109 | * d
110 | * d
111 | * d;
112 |
113 | output[offset] = x * (px < 0 ? -1 : 1);
114 | output[offset + 1] = y * (py < 0 ? -1 : 1);
115 | }
116 |
117 | exports.forward = forEachPoint(function(input, output, offset) {
118 | var lng = getLoop(input[offset], -180, 180);
119 | var lat = getRange(input[offset + 1], -74, 74);
120 |
121 | var table = null;
122 | var j;
123 | for (j = 0; j < LLBAND.length; ++j) {
124 | if (lat >= LLBAND[j]) {
125 | table = LL2MC[j];
126 | break;
127 | }
128 | }
129 | if (table === null) {
130 | for (j = LLBAND.length - 1; j >= 0; --j) {
131 | if (lat <= -LLBAND[j]) {
132 | table = LL2MC[j];
133 | break;
134 | }
135 | }
136 | }
137 | output[offset] = lng;
138 | output[offset + 1] = lat;
139 | convertor(output, output, offset, table);
140 | });
141 |
142 | exports.inverse = forEachPoint(function(input, output, offset) {
143 | var y_abs = Math.abs(input[offset + 1]);
144 |
145 | var table = null;
146 | for (var j = 0; j < MCBAND.length; j++) {
147 | if (y_abs >= MCBAND[j]) {
148 | table = MC2LL[j];
149 | break;
150 | }
151 | }
152 |
153 | convertor(input, output, offset, table);
154 | });
155 |
--------------------------------------------------------------------------------
/projection/index.js:
--------------------------------------------------------------------------------
1 | exports.baiduMercator = require('./baidu-mercator');
2 | exports.sphericalMercator = require('./spherical-mercator');
3 |
--------------------------------------------------------------------------------
/projection/spherical-mercator.js:
--------------------------------------------------------------------------------
1 | var forEachPoint = require('../util').forEachPoint;
2 |
3 | var RADIUS = 6378137;
4 | var MAX_LATITUDE = 85.0511287798;
5 | var RAD_PER_DEG = Math.PI / 180;
6 |
7 | exports.forward = forEachPoint(function(input, output, offset) {
8 | var lat = Math.max(Math.min(MAX_LATITUDE, input[offset + 1]), -MAX_LATITUDE);
9 | var sin = Math.sin(lat * RAD_PER_DEG);
10 |
11 | output[offset] = RADIUS * input[offset] * RAD_PER_DEG;
12 | output[offset + 1] = RADIUS * Math.log((1 + sin) / (1 - sin)) / 2;
13 | });
14 |
15 | exports.inverse = forEachPoint(function(input, output, offset) {
16 | output[offset] = input[offset] / RADIUS / RAD_PER_DEG;
17 | output[offset + 1] = (2 * Math.atan(Math.exp(input[offset + 1] / RADIUS)) - (Math.PI / 2)) / RAD_PER_DEG;
18 | });
19 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # projzh
2 |
3 | This package provides utilities for working with coordinate reference systems used by Baidu maps. The algorithms are ported from the [`proj4m` project](https://github.com/MapTalks/proj4m) which is licensed under the GPL v3.
4 |
5 | # Rough details
6 |
7 | As far as I understand, the coordinate reference system for Baidu Maps uses a custom Mercator projection and the BD-09 datum. The BD-09 datum applies additional transforms on top of the GCJ-02 datum.
8 |
9 | So, to transform a point in geographic coordinates and the WGS-84 datum to the CRS used by Baidu, first transform from WGS-84 to BD-09 (which itself uses the GCJ-09 transform), and then do the forward transform to Baidu Mercator.
10 |
11 | ```js
12 | baiduMercator.forward(bd09.fromWGS84(point))
13 | ```
14 |
15 | To transform a point in the CRS used by Baidu to geographic/WGS-84, first do the inverse transform from Baidu Mercator, then do the transform from BD-09 to WGS-84 (which itself uses the GCJ-09 transform).
16 |
17 | ```js
18 | bd09.toWGS84(baiduMercator.inverse(point))
19 | ```
20 |
21 | This package exports the functions above in the `datum/bd-09` and `projection/baidu-mercator` modules. Additional functions for transforms to/from Spherical Mercator are available in the `index` module.
22 |
23 | # Installation
24 |
25 | npm install projzh
26 |
27 | The utility functions can be used in Node or in browsers with a module bundler.
28 |
29 | # License
30 |
31 | This package is derived from the [`proj4m` project](https://github.com/MapTalks/proj4m) and is distributed under the [MIT license](https://tldrlegal.com/license/mit-license).
32 |
--------------------------------------------------------------------------------
/test/datum/bd-09.test.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const bd09 = require('../../datum/bd-09');
4 | const expect = require('code').expect;
5 | const lab = exports.lab = require('lab').script();
6 |
7 | const bd09Points = [
8 | 114.69490414027017, 33.639096507711685,
9 | 114.69488614273101, 33.63804850387785,
10 | 114.69500713986416, 33.63794251496537,
11 | 114.69578412001135, 33.63793958798685,
12 | 114.6959281162725, 33.637965601694006,
13 | 114.69751307493384, 33.63795775348674
14 | ];
15 |
16 | const gcj02Points = [
17 | 114.68837663801743, 33.63312016454496,
18 | 114.68835840204522, 33.632072446353945,
19 | 114.68848002806972, 33.63196427051657,
20 | 114.68926112541861, 33.63194729708501,
21 | 114.68940588838505, 33.6319707051534,
22 | 114.69099925796665, 33.6319341604661
23 | ];
24 |
25 | lab.experiment('GCJ-02 to BD-09', _ => {
26 |
27 | lab.test('expected transforms', done => {
28 | const actual = bd09.fromGCJ02(gcj02Points);
29 | actual.forEach((value, index) => {
30 | expect(actual[index]).to.be.about(bd09Points[index], 1e-12);
31 | });
32 | done();
33 | });
34 |
35 | });
36 |
37 | lab.experiment('BD-09 to GCJ-02', _ => {
38 |
39 | lab.test('expected transforms', done => {
40 | const actual = bd09.toGCJ02(bd09Points);
41 | actual.forEach((value, index) => {
42 | expect(actual[index]).to.be.about(gcj02Points[index], 1e-6);
43 | });
44 | done();
45 | });
46 |
47 | });
48 |
--------------------------------------------------------------------------------
/test/index.test.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const expect = require('code').expect;
4 | const lab = exports.lab = require('lab').script();
5 | const projzh = require('../index');
6 |
7 | const deltaDegree = 1e-4;
8 | const deltaMeter = 1e-2;
9 |
10 | const data = {
11 | ll: [73, 1, 137, 55],
12 | bmerc: [8127480.603199672, 111352.77538914987, 15252717.919720594, 7328184.397722913],
13 | smerc: [8126322.82790897, 111325.14286638466, 15250770.23867848, 7361866.113051189]
14 | };
15 |
16 | lab.experiment('ll2bmerc()', _ => {
17 | lab.test('transforms Geographic/WGS84 to Baidu Mercator', done => {
18 | const output = projzh.ll2bmerc(data.ll);
19 | expect(output).to.have.length(data.bmerc.length);
20 | output.forEach((value, i) => {
21 | expect(value).to.be.about(data.bmerc[i], deltaMeter);
22 | });
23 | done();
24 | });
25 | });
26 |
27 | lab.experiment('bmerc2ll()', _ => {
28 | lab.test('transforms Baidu Mercator to Geographic/WGS84', done => {
29 | const output = projzh.bmerc2ll(data.bmerc);
30 | expect(output).to.have.length(data.ll.length);
31 | output.forEach((value, i) => {
32 | expect(value).to.be.about(data.ll[i], deltaDegree);
33 | });
34 | done();
35 | });
36 | });
37 |
38 | lab.experiment('ll2smerc()', _ => {
39 | lab.test('transforms Geographic/WGS84 to Spherical Mercator', done => {
40 | const output = projzh.ll2smerc(data.ll);
41 | expect(output).to.have.length(data.smerc.length);
42 | output.forEach((value, i) => {
43 | expect(value).to.be.about(data.smerc[i], deltaMeter);
44 | });
45 | done();
46 | });
47 | });
48 |
49 | lab.experiment('smerc2ll()', _ => {
50 | lab.test('transforms Spherical Mercator to Geographic/WGS84', done => {
51 | const output = projzh.smerc2ll(data.smerc);
52 | expect(output).to.have.length(data.ll.length);
53 | output.forEach((value, i) => {
54 | expect(value).to.be.about(data.ll[i], deltaDegree);
55 | });
56 | done();
57 | });
58 | });
59 |
60 | lab.experiment('bmerc2smerc()', _ => {
61 | lab.test('transforms Baidu Mercator to Spherical Mercator', done => {
62 | const output = projzh.bmerc2smerc(data.bmerc);
63 | expect(output).to.have.length(data.smerc.length);
64 | output.forEach((value, i) => {
65 | // This ±6m delta is suspicious.
66 | // TODO: confirm with bmap.js implementation
67 | expect(value).to.be.about(data.smerc[i], 6);
68 | });
69 | done();
70 | });
71 | });
72 |
73 | lab.experiment('smerc2bmerc()', _ => {
74 | lab.test('transforms Spherical Mercator to Baidu Mercator', done => {
75 | const output = projzh.smerc2bmerc(data.smerc);
76 | expect(output).to.have.length(data.bmerc.length);
77 | output.forEach((value, i) => {
78 | expect(value).to.be.about(data.bmerc[i], deltaMeter);
79 | });
80 | done();
81 | });
82 | });
83 |
--------------------------------------------------------------------------------
/test/projection/baidu-mercator.test.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const baiduMercator = require('../../projection/baidu-mercator');
4 | const expect = require('code').expect;
5 | const lab = exports.lab = require('lab').script();
6 |
7 | const inverseDelta = 1e-4;
8 | const forwardDelta = 1e-2;
9 |
10 | const cases = [{
11 | ll: [
12 | 72.01421676128244,
13 | 0.8367788448845025
14 | ],
15 | bm: [
16 | 8016673.168576939,
17 | 92523.63565165037
18 | ]
19 | }, {
20 | ll: [
21 | 72.01577158351537,
22 | 55.83353212549679
23 | ],
24 | bm: [
25 | 8016846.25,
26 | 7489653.42
27 | ]
28 | }, {
29 | ll: [
30 | 137.8436809381955,
31 | 0.8359606206992264
32 | ],
33 | bm: [
34 | 15344855.34,
35 | 92433.16
36 | ]
37 | }, {
38 | ll: [
39 | 137.8500713872502,
40 | 55.83597897112281
41 | ],
42 | bm: [
43 | 15345566.72,
44 | 7490137.41
45 | ]
46 | }, {
47 | ll: [
48 | 73.13470409826147,
49 | 5.6212751357384985
50 | ],
51 | bm: [
52 | 8141406.61,
53 | 622541.72
54 | ]
55 | }];
56 |
57 | lab.experiment('baiduMercator', _ => {
58 |
59 | lab.experiment('forward()', _ => {
60 | cases.forEach((c, i) => {
61 | lab.test(`case ${i}`, done => {
62 | const bm = baiduMercator.forward(c.ll.slice());
63 | expect(bm[0]).to.be.about(c.bm[0], forwardDelta);
64 | expect(bm[1]).to.be.about(c.bm[1], forwardDelta);
65 | done();
66 | });
67 | });
68 | });
69 |
70 | lab.experiment('inverse()', _ => {
71 | cases.forEach((c, i) => {
72 | lab.test(`case ${i}`, done => {
73 | const ll = baiduMercator.inverse(c.bm.slice());
74 | expect(ll[0]).to.be.about(c.ll[0], inverseDelta);
75 | expect(ll[1]).to.be.about(c.ll[1], inverseDelta);
76 | done();
77 | });
78 | });
79 | });
80 |
81 | });
82 |
--------------------------------------------------------------------------------
/test/projection/spherical-mercator.test.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const sphericalMercator = require('../../projection/spherical-mercator');
4 | const expect = require('code').expect;
5 | const lab = exports.lab = require('lab').script();
6 |
7 | const inverseDelta = 1e-12;
8 | const forwardDelta = 1e-7;
9 |
10 | const cases = [{
11 | ll: [120, 30],
12 | sm: [13358338.895192828, 3503549.843504376]
13 | }, {
14 | ll: [-180, -85],
15 | sm: [-20037508.342789244, -19971868.880408563]
16 | }, {
17 | ll: [180, -85],
18 | sm: [20037508.342789244, -19971868.880408574]
19 | }, {
20 | ll: [180, 85],
21 | sm: [20037508.342789244, 19971868.880408574]
22 | }, {
23 | ll: [-180, 85],
24 | sm: [-20037508.342789244, 19971868.880408563]
25 | }];
26 |
27 | lab.experiment('sphericalMercator', _ => {
28 |
29 | lab.experiment('forward()', _ => {
30 | cases.forEach((c, i) => {
31 | lab.test(`case ${i}`, done => {
32 | const sm = sphericalMercator.forward(c.ll.slice());
33 | expect(sm[0]).to.be.about(c.sm[0], forwardDelta);
34 | expect(sm[1]).to.be.about(c.sm[1], forwardDelta);
35 | done();
36 | });
37 | });
38 | });
39 |
40 | lab.experiment('inverse()', _ => {
41 | cases.forEach((c, i) => {
42 | lab.test(`case ${i}`, done => {
43 | const ll = sphericalMercator.inverse(c.sm.slice());
44 | expect(ll[0]).to.be.about(c.ll[0], inverseDelta);
45 | expect(ll[1]).to.be.about(c.ll[1], inverseDelta);
46 | done();
47 | });
48 | });
49 | });
50 |
51 | });
52 |
--------------------------------------------------------------------------------
/util.js:
--------------------------------------------------------------------------------
1 |
2 | exports.forEachPoint = function(func) {
3 | return function(input, opt_output, opt_dimension) {
4 | var len = input.length;
5 | var dimension = opt_dimension ? opt_dimension : 2;
6 | var output;
7 | if (opt_output) {
8 | output = opt_output;
9 | } else {
10 | if (dimension !== 2) {
11 | output = input.slice();
12 | } else {
13 | output = new Array(len);
14 | }
15 | }
16 | for (var offset = 0; offset < len; offset += dimension) {
17 | func(input, output, offset);
18 | }
19 | return output;
20 | };
21 | };
22 |
--------------------------------------------------------------------------------