bundle.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. 'use strict';
  2. var require = function (file, cwd) {
  3. var resolved = require.resolve(file, cwd || '/');
  4. var mod = require.modules[resolved];
  5. if (!mod) {
  6. throw new Error('Failed to resolve module ' + file + ', tried ' + resolved);
  7. }
  8. var res = mod._cached ? mod._cached : mod();
  9. return res;
  10. };
  11. require.paths = [];
  12. require.modules = {};
  13. require.extensions = ['.js', '.coffee'];
  14. require._core = {
  15. assert: true,
  16. events: true,
  17. fs: true,
  18. path: true,
  19. vm: true
  20. };
  21. require.resolve = (function () {
  22. return function (x, cwd) {
  23. if (!cwd) { cwd = '/'; }
  24. if (require._core[x]) { return x; }
  25. var path = require.modules.path();
  26. cwd = path.resolve('/', cwd);
  27. var y = cwd || '/';
  28. if (x.match(/^(?:\.\.?\/|\/)/)) {
  29. var m = loadAsFileSync(path.resolve(y, x))
  30. || loadAsDirectorySync(path.resolve(y, x));
  31. if (m) { return m; }
  32. }
  33. var n = loadNodeModulesSync(x, y);
  34. if (n) { return n; }
  35. throw new Error("Cannot find module '" + x + "'");
  36. function loadAsFileSync(x) {
  37. if (require.modules[x]) {
  38. return x;
  39. }
  40. for (var i = 0; i < require.extensions.length; i++) {
  41. var ext = require.extensions[i];
  42. if (require.modules[x + ext]) { return x + ext; }
  43. }
  44. }
  45. function loadAsDirectorySync(x) {
  46. x = x.replace(/\/+$/, '');
  47. var pkgfile = x + '/package.json';
  48. if (require.modules[pkgfile]) {
  49. var pkg = require.modules[pkgfile]();
  50. var b = pkg.browserify;
  51. if (typeof b === 'object' && b.main) {
  52. var m = loadAsFileSync(path.resolve(x, b.main));
  53. if (m) { return m; }
  54. } else if (typeof b === 'string') {
  55. var m = loadAsFileSync(path.resolve(x, b));
  56. if (m) { return m; }
  57. } else if (pkg.main) {
  58. var m = loadAsFileSync(path.resolve(x, pkg.main));
  59. if (m) { return m; }
  60. }
  61. }
  62. return loadAsFileSync(x + '/index');
  63. }
  64. function loadNodeModulesSync(x, start) {
  65. var dirs = nodeModulesPathsSync(start);
  66. for (var i = 0; i < dirs.length; i++) {
  67. var dir = dirs[i];
  68. var m = loadAsFileSync(dir + '/' + x);
  69. if (m) { return m; }
  70. var n = loadAsDirectorySync(dir + '/' + x);
  71. if (n) { return n; }
  72. }
  73. var m = loadAsFileSync(x);
  74. if (m) { return m; }
  75. }
  76. function nodeModulesPathsSync(start) {
  77. var parts;
  78. if (start === '/') { parts = ['']; } else { parts = path.normalize(start).split('/'); }
  79. var dirs = [];
  80. for (var i = parts.length - 1; i >= 0; i--) {
  81. if (parts[i] === 'node_modules') { continue; }
  82. var dir = parts.slice(0, i + 1).join('/') + '/node_modules';
  83. dirs.push(dir);
  84. }
  85. return dirs;
  86. }
  87. };
  88. }());
  89. require.alias = function (from, to) {
  90. var path = require.modules.path();
  91. var res = null;
  92. try {
  93. res = require.resolve(from + '/package.json', '/');
  94. } catch (err) {
  95. res = require.resolve(from, '/');
  96. }
  97. var basedir = path.dirname(res);
  98. var keys = (Object.keys || function (obj) {
  99. var res = [];
  100. for (var key in obj) { res.push(key); }
  101. return res;
  102. })(require.modules);
  103. for (var i = 0; i < keys.length; i++) {
  104. var key = keys[i];
  105. if (key.slice(0, basedir.length + 1) === basedir + '/') {
  106. var f = key.slice(basedir.length);
  107. require.modules[to + f] = require.modules[basedir + f];
  108. } else if (key === basedir) {
  109. require.modules[to] = require.modules[basedir];
  110. }
  111. }
  112. };
  113. require.define = function (filename, fn) {
  114. var dirname = require._core[filename]
  115. ? ''
  116. : require.modules.path().dirname(filename);
  117. var require_ = function (file) {
  118. return require(file, dirname);
  119. };
  120. require_.resolve = function (name) {
  121. return require.resolve(name, dirname);
  122. };
  123. require_.modules = require.modules;
  124. require_.define = require.define;
  125. var module_ = { exports: {} };
  126. require.modules[filename] = function () {
  127. require.modules[filename]._cached = module_.exports;
  128. fn.call(
  129. module_.exports,
  130. require_,
  131. module_,
  132. module_.exports,
  133. dirname,
  134. filename
  135. );
  136. require.modules[filename]._cached = module_.exports;
  137. return module_.exports;
  138. };
  139. };
  140. if (typeof process === 'undefined') { process = {}; }
  141. if (!process.nextTick) {
  142. process.nextTick = (function () {
  143. var queue = [];
  144. var canPost = typeof window !== 'undefined'
  145. && window.postMessage && window.addEventListener;
  146. if (canPost) {
  147. window.addEventListener('message', function (ev) {
  148. if (ev.source === window && ev.data === 'browserify-tick') {
  149. ev.stopPropagation();
  150. if (queue.length > 0) {
  151. var fn = queue.shift();
  152. fn();
  153. }
  154. }
  155. }, true);
  156. }
  157. return function (fn) {
  158. if (canPost) {
  159. queue.push(fn);
  160. window.postMessage('browserify-tick', '*');
  161. } else { setTimeout(fn, 0); }
  162. };
  163. }());
  164. }
  165. if (!process.title) { process.title = 'browser'; }
  166. if (!process.binding) {
  167. process.binding = function (name) {
  168. if (name === 'evals') { return require('vm'); }
  169. throw new Error('No such module');
  170. };
  171. }
  172. if (!process.cwd) { process.cwd = function () { return '.'; }; }
  173. if (!process.env) { process.env = {}; }
  174. if (!process.argv) { process.argv = []; }
  175. require.define('path', function (require, module, exports, __dirname, __filename) {
  176. function filter(xs, fn) {
  177. var res = [];
  178. for (var i = 0; i < xs.length; i++) {
  179. if (fn(xs[i], i, xs)) { res.push(xs[i]); }
  180. }
  181. return res;
  182. }
  183. // resolves . and .. elements in a path array with directory names there
  184. // must be no slashes, empty elements, or device names (c:\) in the array
  185. // (so also no leading and trailing slashes - it does not distinguish
  186. // relative and absolute paths)
  187. function normalizeArray(parts, allowAboveRoot) {
  188. // if the path tries to go above the root, `up` ends up > 0
  189. var up = 0;
  190. for (var i = parts.length; i >= 0; i--) {
  191. var last = parts[i];
  192. if (last == '.') {
  193. parts.splice(i, 1);
  194. } else if (last === '..') {
  195. parts.splice(i, 1);
  196. up++;
  197. } else if (up) {
  198. parts.splice(i, 1);
  199. up--;
  200. }
  201. }
  202. // if the path is allowed to go above the root, restore leading ..s
  203. if (allowAboveRoot) {
  204. for (; up--; up) {
  205. parts.unshift('..');
  206. }
  207. }
  208. return parts;
  209. }
  210. // Regex to split a filename into [*, dir, basename, ext]
  211. // posix version
  212. var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;
  213. // path.resolve([from ...], to)
  214. // posix version
  215. exports.resolve = function () {
  216. var resolvedPath = '',
  217. resolvedAbsolute = false;
  218. for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) {
  219. var path = i >= 0
  220. ? arguments[i]
  221. : process.cwd();
  222. // Skip empty and invalid entries
  223. if (typeof path !== 'string' || !path) {
  224. continue;
  225. }
  226. resolvedPath = path + '/' + resolvedPath;
  227. resolvedAbsolute = path.charAt(0) === '/';
  228. }
  229. // At this point the path should be resolved to a full absolute path, but
  230. // handle relative paths to be safe (might happen when process.cwd() fails)
  231. // Normalize the path
  232. resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {
  233. return !!p;
  234. }), !resolvedAbsolute).join('/');
  235. return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
  236. };
  237. // path.normalize(path)
  238. // posix version
  239. exports.normalize = function (path) {
  240. var isAbsolute = path.charAt(0) === '/',
  241. trailingSlash = path.slice(-1) === '/';
  242. // Normalize the path
  243. path = normalizeArray(filter(path.split('/'), function (p) {
  244. return !!p;
  245. }), !isAbsolute).join('/');
  246. if (!path && !isAbsolute) {
  247. path = '.';
  248. }
  249. if (path && trailingSlash) {
  250. path += '/';
  251. }
  252. return (isAbsolute ? '/' : '') + path;
  253. };
  254. // posix version
  255. exports.join = function () {
  256. var paths = Array.prototype.slice.call(arguments, 0);
  257. return exports.normalize(filter(paths, function (p, index) {
  258. return p && typeof p === 'string';
  259. }).join('/'));
  260. };
  261. exports.dirname = function (path) {
  262. var dir = splitPathRe.exec(path)[1] || '';
  263. var isWindows = false;
  264. if (!dir) {
  265. // No dirname
  266. return '.';
  267. } else if (
  268. dir.length === 1
  269. || (isWindows && dir.length <= 3 && dir.charAt(1) === ':')
  270. ) {
  271. // It is just a slash or a drive letter with a slash
  272. return dir;
  273. }
  274. // It is a full dirname, strip trailing slash
  275. return dir.substring(0, dir.length - 1);
  276. };
  277. exports.basename = function (path, ext) {
  278. var f = splitPathRe.exec(path)[2] || '';
  279. // TODO: make this comparison case-insensitive on windows?
  280. if (ext && f.substr(-1 * ext.length) === ext) {
  281. f = f.substr(0, f.length - ext.length);
  282. }
  283. return f;
  284. };
  285. exports.extname = function (path) {
  286. return splitPathRe.exec(path)[3] || '';
  287. };
  288. });
  289. require.define('crypto', function (require, module, exports, __dirname, __filename) {
  290. module.exports = require('crypto-browserify');
  291. });
  292. require.define('/node_modules/crypto-browserify/package.json', function (require, module, exports, __dirname, __filename) {
  293. module.exports = {};
  294. });
  295. require.define('/node_modules/crypto-browserify/index.js', function (require, module, exports, __dirname, __filename) {
  296. var sha = require('./sha');
  297. var algorithms = {
  298. sha1: {
  299. hex: sha.hex_sha1,
  300. binary: sha.b64_sha1,
  301. ascii: sha.str_sha1
  302. }
  303. };
  304. function error() {
  305. var m = Array.prototype.slice.call(arguments).join(' ');
  306. throw new Error(m+'\nwe accept pull requests\nhttp://github.com/browserify/crypto-browserify'.join('\n'));
  307. }
  308. exports.createHash = function (alg) {
  309. alg = alg || 'sha1';
  310. if (!algorithms[alg]) { error('algorithm:', alg, 'is not yet supported'); }
  311. var s = '';
  312. _alg = algorithms[alg];
  313. return {
  314. update: function (data) {
  315. s += data;
  316. return this;
  317. },
  318. digest: function (enc) {
  319. enc = enc || 'binary';
  320. var fn;
  321. if (!(fn = _alg[enc])) { error('encoding:', enc, 'is not yet supported for algorithm', alg); }
  322. var r = fn(s);
  323. s = null; // not meant to use the hash after you've called digest.
  324. return r;
  325. }
  326. };
  327. }
  328. // the least I can do is make error messages for the rest of the node.js/crypto api.
  329. ;[
  330. 'createCredentials',
  331. 'createHmac',
  332. 'createCypher',
  333. 'createCypheriv',
  334. 'createDecipher',
  335. 'createDecipheriv',
  336. 'createSign',
  337. 'createVerify',
  338. 'createDeffieHellman',,
  339. 'pbkdf2',,
  340. 'randomBytes'
  341. ].forEach(function (name) {
  342. exports[name] = function () {
  343. error('sorry,', name, 'is not implemented yet');
  344. };
  345. });
  346. });
  347. require.define('/node_modules/crypto-browserify/sha.js', function (require, module, exports, __dirname, __filename) {
  348. /*
  349. * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
  350. * in FIPS PUB 180-1
  351. * Version 2.1a Copyright Paul Johnston 2000 - 2002.
  352. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  353. * Distributed under the BSD License
  354. * See http://pajhome.org.uk/crypt/md5 for details.
  355. */
  356. exports.hex_sha1 = hex_sha1;
  357. exports.b64_sha1 = b64_sha1;
  358. exports.str_sha1 = str_sha1;
  359. exports.hex_hmac_sha1 = hex_hmac_sha1;
  360. exports.b64_hmac_sha1 = b64_hmac_sha1;
  361. exports.str_hmac_sha1 = str_hmac_sha1;
  362. /*
  363. * Configurable variables. You may need to tweak these to be compatible with
  364. * the server-side, but the defaults work in most cases.
  365. */
  366. var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
  367. var b64pad = ''; /* base-64 pad character. "=" for strict RFC compliance */
  368. var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
  369. /*
  370. * These are the functions you'll usually want to call
  371. * They take string arguments and return either hex or base-64 encoded strings
  372. */
  373. function hex_sha1(s) { return binb2hex(core_sha1(str2binb(s), s.length * chrsz)); }
  374. function b64_sha1(s) { return binb2b64(core_sha1(str2binb(s), s.length * chrsz)); }
  375. function str_sha1(s) { return binb2str(core_sha1(str2binb(s), s.length * chrsz)); }
  376. function hex_hmac_sha1(key, data) { return binb2hex(core_hmac_sha1(key, data)); }
  377. function b64_hmac_sha1(key, data) { return binb2b64(core_hmac_sha1(key, data)); }
  378. function str_hmac_sha1(key, data) { return binb2str(core_hmac_sha1(key, data)); }
  379. /*
  380. * Perform a simple self-test to see if the VM is working
  381. */
  382. function sha1_vm_test() {
  383. return hex_sha1('abc') == 'a9993e364706816aba3e25717850c26c9cd0d89d';
  384. }
  385. /*
  386. * Calculate the SHA-1 of an array of big-endian words, and a bit length
  387. */
  388. function core_sha1(x, len) {
  389. /* append padding */
  390. x[len >> 5] |= 0x80 << (24 - len % 32);
  391. x[((len + 64 >> 9) << 4) + 15] = len;
  392. var w = Array(80);
  393. var a = 1732584193;
  394. var b = -271733879;
  395. var c = -1732584194;
  396. var d = 271733878;
  397. var e = -1009589776;
  398. for (var i = 0; i < x.length; i += 16) {
  399. var olda = a;
  400. var oldb = b;
  401. var oldc = c;
  402. var oldd = d;
  403. var olde = e;
  404. for (var j = 0; j < 80; j++) {
  405. if (j < 16) { w[j] = x[i + j]; } else { w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); }
  406. var t = safe_add(
  407. safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
  408. safe_add(safe_add(e, w[j]), sha1_kt(j))
  409. );
  410. e = d;
  411. d = c;
  412. c = rol(b, 30);
  413. b = a;
  414. a = t;
  415. }
  416. a = safe_add(a, olda);
  417. b = safe_add(b, oldb);
  418. c = safe_add(c, oldc);
  419. d = safe_add(d, oldd);
  420. e = safe_add(e, olde);
  421. }
  422. return Array(a, b, c, d, e);
  423. }
  424. /*
  425. * Perform the appropriate triplet combination function for the current
  426. * iteration
  427. */
  428. function sha1_ft(t, b, c, d) {
  429. if (t < 20) { return (b & c) | (~b & d); }
  430. if (t < 40) { return b ^ c ^ d; }
  431. if (t < 60) { return (b & c) | (b & d) | (c & d); }
  432. return b ^ c ^ d;
  433. }
  434. /*
  435. * Determine the appropriate additive constant for the current iteration
  436. */
  437. function sha1_kt(t) {
  438. return t < 20 ? 1518500249 : t < 40 ? 1859775393
  439. : t < 60 ? -1894007588 : -899497514;
  440. }
  441. /*
  442. * Calculate the HMAC-SHA1 of a key and some data
  443. */
  444. function core_hmac_sha1(key, data) {
  445. var bkey = str2binb(key);
  446. if (bkey.length > 16) { bkey = core_sha1(bkey, key.length * chrsz); }
  447. var ipad = Array(16),
  448. opad = Array(16);
  449. for (var i = 0; i < 16; i++) {
  450. ipad[i] = bkey[i] ^ 0x36363636;
  451. opad[i] = bkey[i] ^ 0x5C5C5C5C;
  452. }
  453. var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
  454. return core_sha1(opad.concat(hash), 512 + 160);
  455. }
  456. /*
  457. * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  458. * to work around bugs in some JS interpreters.
  459. */
  460. function safe_add(x, y) {
  461. var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  462. var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  463. return (msw << 16) | (lsw & 0xFFFF);
  464. }
  465. /*
  466. * Bitwise rotate a 32-bit number to the left.
  467. */
  468. function rol(num, cnt) {
  469. return (num << cnt) | (num >>> (32 - cnt));
  470. }
  471. /*
  472. * Convert an 8-bit or 16-bit string to an array of big-endian words
  473. * In 8-bit function, characters >255 have their hi-byte silently ignored.
  474. */
  475. function str2binb(str) {
  476. var bin = Array();
  477. var mask = (1 << chrsz) - 1;
  478. for (var i = 0; i < str.length * chrsz; i += chrsz) { bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i % 32); }
  479. return bin;
  480. }
  481. /*
  482. * Convert an array of big-endian words to a string
  483. */
  484. function binb2str(bin) {
  485. var str = '';
  486. var mask = (1 << chrsz) - 1;
  487. for (var i = 0; i < bin.length * 32; i += chrsz) { str += String.fromCharCode((bin[i >> 5] >>> (32 - chrsz - i % 32)) & mask); }
  488. return str;
  489. }
  490. /*
  491. * Convert an array of big-endian words to a hex string.
  492. */
  493. function binb2hex(binarray) {
  494. var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef';
  495. var str = '';
  496. for (var i = 0; i < binarray.length * 4; i++) {
  497. str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
  498. }
  499. return str;
  500. }
  501. /*
  502. * Convert an array of big-endian words to a base-64 string
  503. */
  504. function binb2b64(binarray) {
  505. var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  506. var str = '';
  507. for (var i = 0; i < binarray.length * 4; i += 3) {
  508. var triplet = (((binarray[i >> 2] >> 8 * (3 - i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xFF);
  509. for (var j = 0; j < 4; j++) {
  510. if (i * 8 + j * 6 > binarray.length * 32) { str += b64pad; } else { str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F); }
  511. }
  512. }
  513. return str;
  514. }
  515. });
  516. require.define('/test.js', function (require, module, exports, __dirname, __filename) {
  517. var crypto = require('crypto');
  518. var abc = crypto.createHash('sha1').update('abc').digest('hex');
  519. console.log(abc);
  520. // require('hello').inlineCall().call2()
  521. });
  522. require('/test.js');