Bug 1384943 - import bundles from devtools-source-map 0.10.0; r?bgrins draft
authorTom Tromey <tom@tromey.com>
Fri, 28 Jul 2017 10:55:43 -0600
changeset 619751 575b97604258213812675e2a93ced49e33e8c7b2
parent 618965 d6e8c5e46a872611ddbe8703980212d5daf2984f
child 619752 71ca33d886b795a494ae3095af0237a6b5194ed0
child 620535 16864557ef4734aa47205fd9a3b454e230d4d60a
push id71795
push userbmo:ttromey@mozilla.com
push dateWed, 02 Aug 2017 14:13:50 +0000
reviewersbgrins
bugs1384943
milestone56.0a1
Bug 1384943 - import bundles from devtools-source-map 0.10.0; r?bgrins MozReview-Commit-ID: HfnDfd15IPB
devtools/client/shared/source-map/index.js
devtools/client/shared/source-map/worker.js
--- a/devtools/client/shared/source-map/index.js
+++ b/devtools/client/shared/source-map/index.js
@@ -49,16 +49,20 @@ return /******/ (function(modules) { // 
 /******/ 	// Load entry module and return exports
 /******/ 	return __webpack_require__(0);
 /******/ })
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	const {
 	  originalToGeneratedId,
 	  generatedToOriginalId,
 	  isGeneratedId,
 	  isOriginalId
 	} = __webpack_require__(1);
 
 	const { workerUtils: { WorkerDispatcher } } = __webpack_require__(6);
@@ -88,16 +92,20 @@ return /******/ (function(modules) { // 
 	  startSourceMapWorker: dispatcher.start.bind(dispatcher),
 	  stopSourceMapWorker: dispatcher.stop.bind(dispatcher)
 	};
 
 /***/ },
 /* 1 */
 /***/ function(module, exports, __webpack_require__) {
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	const md5 = __webpack_require__(2);
 
 	function originalToGeneratedId(originalId) {
 	  const match = originalId.match(/(.*)\/originalSource/);
 	  return match ? match[1] : "";
 	}
 
 	function generatedToOriginalId(generatedId, url) {
@@ -164,346 +172,316 @@ return /******/ (function(modules) { // 
 	  getContentType,
 	  contentMapForTesting: contentMap
 	};
 
 /***/ },
 /* 2 */
 /***/ function(module, exports, __webpack_require__) {
 
-	(function(){
-	  var crypt = __webpack_require__(3),
-	      utf8 = __webpack_require__(4).utf8,
-	      isBuffer = __webpack_require__(5),
-	      bin = __webpack_require__(4).bin,
-
-	  // The core
-	  md5 = function (message, options) {
-	    // Convert to byte array
-	    if (message.constructor == String)
-	      if (options && options.encoding === 'binary')
-	        message = bin.stringToBytes(message);
-	      else
-	        message = utf8.stringToBytes(message);
-	    else if (isBuffer(message))
-	      message = Array.prototype.slice.call(message, 0);
-	    else if (!Array.isArray(message))
-	      message = message.toString();
-	    // else, assume byte array already
-
-	    var m = crypt.bytesToWords(message),
-	        l = message.length * 8,
-	        a =  1732584193,
-	        b = -271733879,
-	        c = -1732584194,
-	        d =  271733878;
-
-	    // Swap endian
-	    for (var i = 0; i < m.length; i++) {
-	      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |
-	             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;
-	    }
-
-	    // Padding
-	    m[l >>> 5] |= 0x80 << (l % 32);
-	    m[(((l + 64) >>> 9) << 4) + 14] = l;
-
-	    // Method shortcuts
-	    var FF = md5._ff,
-	        GG = md5._gg,
-	        HH = md5._hh,
-	        II = md5._ii;
-
-	    for (var i = 0; i < m.length; i += 16) {
-
-	      var aa = a,
-	          bb = b,
-	          cc = c,
-	          dd = d;
-
-	      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);
-	      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);
-	      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);
-	      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);
-	      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);
-	      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);
-	      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);
-	      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);
-	      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);
-	      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);
-	      c = FF(c, d, a, b, m[i+10], 17, -42063);
-	      b = FF(b, c, d, a, m[i+11], 22, -1990404162);
-	      a = FF(a, b, c, d, m[i+12],  7,  1804603682);
-	      d = FF(d, a, b, c, m[i+13], 12, -40341101);
-	      c = FF(c, d, a, b, m[i+14], 17, -1502002290);
-	      b = FF(b, c, d, a, m[i+15], 22,  1236535329);
-
-	      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);
-	      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);
-	      c = GG(c, d, a, b, m[i+11], 14,  643717713);
-	      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);
-	      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);
-	      d = GG(d, a, b, c, m[i+10],  9,  38016083);
-	      c = GG(c, d, a, b, m[i+15], 14, -660478335);
-	      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);
-	      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);
-	      d = GG(d, a, b, c, m[i+14],  9, -1019803690);
-	      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);
-	      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);
-	      a = GG(a, b, c, d, m[i+13],  5, -1444681467);
-	      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);
-	      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);
-	      b = GG(b, c, d, a, m[i+12], 20, -1926607734);
-
-	      a = HH(a, b, c, d, m[i+ 5],  4, -378558);
-	      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);
-	      c = HH(c, d, a, b, m[i+11], 16,  1839030562);
-	      b = HH(b, c, d, a, m[i+14], 23, -35309556);
-	      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);
-	      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);
-	      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);
-	      b = HH(b, c, d, a, m[i+10], 23, -1094730640);
-	      a = HH(a, b, c, d, m[i+13],  4,  681279174);
-	      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);
-	      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);
-	      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);
-	      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);
-	      d = HH(d, a, b, c, m[i+12], 11, -421815835);
-	      c = HH(c, d, a, b, m[i+15], 16,  530742520);
-	      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);
-
-	      a = II(a, b, c, d, m[i+ 0],  6, -198630844);
-	      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);
-	      c = II(c, d, a, b, m[i+14], 15, -1416354905);
-	      b = II(b, c, d, a, m[i+ 5], 21, -57434055);
-	      a = II(a, b, c, d, m[i+12],  6,  1700485571);
-	      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);
-	      c = II(c, d, a, b, m[i+10], 15, -1051523);
-	      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);
-	      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);
-	      d = II(d, a, b, c, m[i+15], 10, -30611744);
-	      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);
-	      b = II(b, c, d, a, m[i+13], 21,  1309151649);
-	      a = II(a, b, c, d, m[i+ 4],  6, -145523070);
-	      d = II(d, a, b, c, m[i+11], 10, -1120210379);
-	      c = II(c, d, a, b, m[i+ 2], 15,  718787259);
-	      b = II(b, c, d, a, m[i+ 9], 21, -343485551);
-
-	      a = (a + aa) >>> 0;
-	      b = (b + bb) >>> 0;
-	      c = (c + cc) >>> 0;
-	      d = (d + dd) >>> 0;
-	    }
-
-	    return crypt.endian([a, b, c, d]);
-	  };
-
-	  // Auxiliary functions
-	  md5._ff  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b & c | ~b & d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._gg  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b & d | c & ~d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._hh  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b ^ c ^ d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._ii  = function (a, b, c, d, x, s, t) {
-	    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-
-	  // Package private blocksize
-	  md5._blocksize = 16;
-	  md5._digestsize = 16;
-
-	  module.exports = function (message, options) {
-	    if (message === undefined || message === null)
-	      throw new Error('Illegal argument ' + message);
-
-	    var digestbytes = crypt.wordsToBytes(md5(message, options));
-	    return options && options.asBytes ? digestbytes :
-	        options && options.asString ? bin.bytesToString(digestbytes) :
-	        crypt.bytesToHex(digestbytes);
-	  };
-
-	})();
+	(function () {
+	  var crypt = __webpack_require__(3),
+	      utf8 = __webpack_require__(4).utf8,
+	      isBuffer = __webpack_require__(5),
+	      bin = __webpack_require__(4).bin,
+
+
+	  // The core
+	  md5 = function (message, options) {
+	    // Convert to byte array
+	    if (message.constructor == String) {
+	      if (options && options.encoding === 'binary') message = bin.stringToBytes(message);else message = utf8.stringToBytes(message);
+	    } else if (isBuffer(message)) message = Array.prototype.slice.call(message, 0);else if (!Array.isArray(message)) message = message.toString();
+	    // else, assume byte array already
+
+	    var m = crypt.bytesToWords(message),
+	        l = message.length * 8,
+	        a = 1732584193,
+	        b = -271733879,
+	        c = -1732584194,
+	        d = 271733878;
+
+	    // Swap endian
+	    for (var i = 0; i < m.length; i++) {
+	      m[i] = (m[i] << 8 | m[i] >>> 24) & 0x00FF00FF | (m[i] << 24 | m[i] >>> 8) & 0xFF00FF00;
+	    }
+
+	    // Padding
+	    m[l >>> 5] |= 0x80 << l % 32;
+	    m[(l + 64 >>> 9 << 4) + 14] = l;
+
+	    // Method shortcuts
+	    var FF = md5._ff,
+	        GG = md5._gg,
+	        HH = md5._hh,
+	        II = md5._ii;
+
+	    for (var i = 0; i < m.length; i += 16) {
+
+	      var aa = a,
+	          bb = b,
+	          cc = c,
+	          dd = d;
+
+	      a = FF(a, b, c, d, m[i + 0], 7, -680876936);
+	      d = FF(d, a, b, c, m[i + 1], 12, -389564586);
+	      c = FF(c, d, a, b, m[i + 2], 17, 606105819);
+	      b = FF(b, c, d, a, m[i + 3], 22, -1044525330);
+	      a = FF(a, b, c, d, m[i + 4], 7, -176418897);
+	      d = FF(d, a, b, c, m[i + 5], 12, 1200080426);
+	      c = FF(c, d, a, b, m[i + 6], 17, -1473231341);
+	      b = FF(b, c, d, a, m[i + 7], 22, -45705983);
+	      a = FF(a, b, c, d, m[i + 8], 7, 1770035416);
+	      d = FF(d, a, b, c, m[i + 9], 12, -1958414417);
+	      c = FF(c, d, a, b, m[i + 10], 17, -42063);
+	      b = FF(b, c, d, a, m[i + 11], 22, -1990404162);
+	      a = FF(a, b, c, d, m[i + 12], 7, 1804603682);
+	      d = FF(d, a, b, c, m[i + 13], 12, -40341101);
+	      c = FF(c, d, a, b, m[i + 14], 17, -1502002290);
+	      b = FF(b, c, d, a, m[i + 15], 22, 1236535329);
 
+	      a = GG(a, b, c, d, m[i + 1], 5, -165796510);
+	      d = GG(d, a, b, c, m[i + 6], 9, -1069501632);
+	      c = GG(c, d, a, b, m[i + 11], 14, 643717713);
+	      b = GG(b, c, d, a, m[i + 0], 20, -373897302);
+	      a = GG(a, b, c, d, m[i + 5], 5, -701558691);
+	      d = GG(d, a, b, c, m[i + 10], 9, 38016083);
+	      c = GG(c, d, a, b, m[i + 15], 14, -660478335);
+	      b = GG(b, c, d, a, m[i + 4], 20, -405537848);
+	      a = GG(a, b, c, d, m[i + 9], 5, 568446438);
+	      d = GG(d, a, b, c, m[i + 14], 9, -1019803690);
+	      c = GG(c, d, a, b, m[i + 3], 14, -187363961);
+	      b = GG(b, c, d, a, m[i + 8], 20, 1163531501);
+	      a = GG(a, b, c, d, m[i + 13], 5, -1444681467);
+	      d = GG(d, a, b, c, m[i + 2], 9, -51403784);
+	      c = GG(c, d, a, b, m[i + 7], 14, 1735328473);
+	      b = GG(b, c, d, a, m[i + 12], 20, -1926607734);
+
+	      a = HH(a, b, c, d, m[i + 5], 4, -378558);
+	      d = HH(d, a, b, c, m[i + 8], 11, -2022574463);
+	      c = HH(c, d, a, b, m[i + 11], 16, 1839030562);
+	      b = HH(b, c, d, a, m[i + 14], 23, -35309556);
+	      a = HH(a, b, c, d, m[i + 1], 4, -1530992060);
+	      d = HH(d, a, b, c, m[i + 4], 11, 1272893353);
+	      c = HH(c, d, a, b, m[i + 7], 16, -155497632);
+	      b = HH(b, c, d, a, m[i + 10], 23, -1094730640);
+	      a = HH(a, b, c, d, m[i + 13], 4, 681279174);
+	      d = HH(d, a, b, c, m[i + 0], 11, -358537222);
+	      c = HH(c, d, a, b, m[i + 3], 16, -722521979);
+	      b = HH(b, c, d, a, m[i + 6], 23, 76029189);
+	      a = HH(a, b, c, d, m[i + 9], 4, -640364487);
+	      d = HH(d, a, b, c, m[i + 12], 11, -421815835);
+	      c = HH(c, d, a, b, m[i + 15], 16, 530742520);
+	      b = HH(b, c, d, a, m[i + 2], 23, -995338651);
+
+	      a = II(a, b, c, d, m[i + 0], 6, -198630844);
+	      d = II(d, a, b, c, m[i + 7], 10, 1126891415);
+	      c = II(c, d, a, b, m[i + 14], 15, -1416354905);
+	      b = II(b, c, d, a, m[i + 5], 21, -57434055);
+	      a = II(a, b, c, d, m[i + 12], 6, 1700485571);
+	      d = II(d, a, b, c, m[i + 3], 10, -1894986606);
+	      c = II(c, d, a, b, m[i + 10], 15, -1051523);
+	      b = II(b, c, d, a, m[i + 1], 21, -2054922799);
+	      a = II(a, b, c, d, m[i + 8], 6, 1873313359);
+	      d = II(d, a, b, c, m[i + 15], 10, -30611744);
+	      c = II(c, d, a, b, m[i + 6], 15, -1560198380);
+	      b = II(b, c, d, a, m[i + 13], 21, 1309151649);
+	      a = II(a, b, c, d, m[i + 4], 6, -145523070);
+	      d = II(d, a, b, c, m[i + 11], 10, -1120210379);
+	      c = II(c, d, a, b, m[i + 2], 15, 718787259);
+	      b = II(b, c, d, a, m[i + 9], 21, -343485551);
+
+	      a = a + aa >>> 0;
+	      b = b + bb >>> 0;
+	      c = c + cc >>> 0;
+	      d = d + dd >>> 0;
+	    }
+
+	    return crypt.endian([a, b, c, d]);
+	  };
+
+	  // Auxiliary functions
+	  md5._ff = function (a, b, c, d, x, s, t) {
+	    var n = a + (b & c | ~b & d) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+	  md5._gg = function (a, b, c, d, x, s, t) {
+	    var n = a + (b & d | c & ~d) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+	  md5._hh = function (a, b, c, d, x, s, t) {
+	    var n = a + (b ^ c ^ d) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+	  md5._ii = function (a, b, c, d, x, s, t) {
+	    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+
+	  // Package private blocksize
+	  md5._blocksize = 16;
+	  md5._digestsize = 16;
+
+	  module.exports = function (message, options) {
+	    if (message === undefined || message === null) throw new Error('Illegal argument ' + message);
+
+	    var digestbytes = crypt.wordsToBytes(md5(message, options));
+	    return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
+	  };
+	})();
 
 /***/ },
 /* 3 */
 /***/ function(module, exports) {
 
-	(function() {
-	  var base64map
-	      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
-
-	  crypt = {
+	(function () {
+	  var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+	      crypt = {
 	    // Bit-wise rotation left
-	    rotl: function(n, b) {
-	      return (n << b) | (n >>> (32 - b));
+	    rotl: function (n, b) {
+	      return n << b | n >>> 32 - b;
 	    },
 
 	    // Bit-wise rotation right
-	    rotr: function(n, b) {
-	      return (n << (32 - b)) | (n >>> b);
+	    rotr: function (n, b) {
+	      return n << 32 - b | n >>> b;
 	    },
 
 	    // Swap big-endian to little-endian and vice versa
-	    endian: function(n) {
+	    endian: function (n) {
 	      // If number given, swap endian
 	      if (n.constructor == Number) {
 	        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;
 	      }
 
 	      // Else, assume array and swap all items
-	      for (var i = 0; i < n.length; i++)
-	        n[i] = crypt.endian(n[i]);
+	      for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]);
 	      return n;
 	    },
 
 	    // Generate an array of any length of random bytes
-	    randomBytes: function(n) {
-	      for (var bytes = []; n > 0; n--)
-	        bytes.push(Math.floor(Math.random() * 256));
+	    randomBytes: function (n) {
+	      for (var bytes = []; n > 0; n--) bytes.push(Math.floor(Math.random() * 256));
 	      return bytes;
 	    },
 
 	    // Convert a byte array to big-endian 32-bit words
-	    bytesToWords: function(bytes) {
-	      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)
-	        words[b >>> 5] |= bytes[i] << (24 - b % 32);
+	    bytesToWords: function (bytes) {
+	      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) words[b >>> 5] |= bytes[i] << 24 - b % 32;
 	      return words;
 	    },
 
 	    // Convert big-endian 32-bit words to a byte array
-	    wordsToBytes: function(words) {
-	      for (var bytes = [], b = 0; b < words.length * 32; b += 8)
-	        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
+	    wordsToBytes: function (words) {
+	      for (var bytes = [], b = 0; b < words.length * 32; b += 8) bytes.push(words[b >>> 5] >>> 24 - b % 32 & 0xFF);
 	      return bytes;
 	    },
 
 	    // Convert a byte array to a hex string
-	    bytesToHex: function(bytes) {
+	    bytesToHex: function (bytes) {
 	      for (var hex = [], i = 0; i < bytes.length; i++) {
 	        hex.push((bytes[i] >>> 4).toString(16));
 	        hex.push((bytes[i] & 0xF).toString(16));
 	      }
 	      return hex.join('');
 	    },
 
 	    // Convert a hex string to a byte array
-	    hexToBytes: function(hex) {
-	      for (var bytes = [], c = 0; c < hex.length; c += 2)
-	        bytes.push(parseInt(hex.substr(c, 2), 16));
+	    hexToBytes: function (hex) {
+	      for (var bytes = [], c = 0; c < hex.length; c += 2) bytes.push(parseInt(hex.substr(c, 2), 16));
 	      return bytes;
 	    },
 
 	    // Convert a byte array to a base-64 string
-	    bytesToBase64: function(bytes) {
+	    bytesToBase64: function (bytes) {
 	      for (var base64 = [], i = 0; i < bytes.length; i += 3) {
-	        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
-	        for (var j = 0; j < 4; j++)
-	          if (i * 8 + j * 6 <= bytes.length * 8)
-	            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));
-	          else
-	            base64.push('=');
+	        var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];
+	        for (var j = 0; j < 4; j++) if (i * 8 + j * 6 <= bytes.length * 8) base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 0x3F));else base64.push('=');
 	      }
 	      return base64.join('');
 	    },
 
 	    // Convert a base-64 string to a byte array
-	    base64ToBytes: function(base64) {
+	    base64ToBytes: function (base64) {
 	      // Remove non-base-64 characters
 	      base64 = base64.replace(/[^A-Z0-9+\/]/ig, '');
 
-	      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;
-	          imod4 = ++i % 4) {
+	      for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {
 	        if (imod4 == 0) continue;
-	        bytes.push(((base64map.indexOf(base64.charAt(i - 1))
-	            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))
-	            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));
+	        bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);
 	      }
 	      return bytes;
 	    }
 	  };
 
 	  module.exports = crypt;
 	})();
 
-
 /***/ },
 /* 4 */
 /***/ function(module, exports) {
 
 	var charenc = {
 	  // UTF-8 encoding
 	  utf8: {
 	    // Convert a string to a byte array
-	    stringToBytes: function(str) {
+	    stringToBytes: function (str) {
 	      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
 	    },
 
 	    // Convert a byte array to a string
-	    bytesToString: function(bytes) {
+	    bytesToString: function (bytes) {
 	      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
 	    }
 	  },
 
 	  // Binary encoding
 	  bin: {
 	    // Convert a string to a byte array
-	    stringToBytes: function(str) {
-	      for (var bytes = [], i = 0; i < str.length; i++)
-	        bytes.push(str.charCodeAt(i) & 0xFF);
+	    stringToBytes: function (str) {
+	      for (var bytes = [], i = 0; i < str.length; i++) bytes.push(str.charCodeAt(i) & 0xFF);
 	      return bytes;
 	    },
 
 	    // Convert a byte array to a string
-	    bytesToString: function(bytes) {
-	      for (var str = [], i = 0; i < bytes.length; i++)
-	        str.push(String.fromCharCode(bytes[i]));
+	    bytesToString: function (bytes) {
+	      for (var str = [], i = 0; i < bytes.length; i++) str.push(String.fromCharCode(bytes[i]));
 	      return str.join('');
 	    }
 	  }
 	};
 
 	module.exports = charenc;
 
-
 /***/ },
 /* 5 */
 /***/ function(module, exports) {
 
 	/*!
 	 * Determine if an object is a Buffer
 	 *
 	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
 	 * @license  MIT
 	 */
 
 	// The _isBuffer check is for Safari 5-7 support, because it's missing
 	// Object.prototype.constructor. Remove this eventually
 	module.exports = function (obj) {
-	  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
-	}
+	  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
+	};
 
-	function isBuffer (obj) {
-	  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
+	function isBuffer(obj) {
+	  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
 	}
 
 	// For Node v0.10 support. Remove this eventually.
-	function isSlowBuffer (obj) {
-	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
+	function isSlowBuffer(obj) {
+	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));
 	}
 
-
 /***/ },
 /* 6 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* This Source Code Form is subject to the terms of the Mozilla Public
 	 * License, v. 2.0. If a copy of the MPL was not distributed with this
 	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
@@ -520,39 +498,44 @@ return /******/ (function(modules) { // 
 /***/ function(module, exports) {
 
 	/* This Source Code Form is subject to the terms of the Mozilla Public
 	 * License, v. 2.0. If a copy of the MPL was not distributed with this
 	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 	function networkRequest(url, opts) {
 	  return new Promise((resolve, reject) => {
-	    const req = new XMLHttpRequest();
+	    try {
+	      const req = new XMLHttpRequest();
 
-	    req.addEventListener("readystatechange", () => {
-	      if (req.readyState === XMLHttpRequest.DONE) {
-	        if (req.status === 200) {
-	          resolve({ content: req.responseText });
-	        } else {
-	          resolve(req.statusText);
+	      req.addEventListener("readystatechange", () => {
+	        if (req.readyState === XMLHttpRequest.DONE) {
+	          if (req.status === 200) {
+	            resolve({ content: req.responseText });
+	          } else {
+	            let text = req.statusText || "invalid URL";
+	            reject(text);
+	          }
 	        }
-	      }
-	    });
+	      });
 
-	    // Not working yet.
-	    // if (!opts.loadFromCache) {
-	    //   req.channel.loadFlags = (
-	    //     Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE |
-	    //       Components.interfaces.nsIRequest.INHIBIT_CACHING |
-	    //       Components.interfaces.nsIRequest.LOAD_ANONYMOUS
-	    //   );
-	    // }
+	      // Not working yet.
+	      // if (!opts.loadFromCache) {
+	      //   req.channel.loadFlags = (
+	      //     Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE |
+	      //       Components.interfaces.nsIRequest.INHIBIT_CACHING |
+	      //       Components.interfaces.nsIRequest.LOAD_ANONYMOUS
+	      //   );
+	      // }
 
-	    req.open("GET", url);
-	    req.send();
+	      req.open("GET", url);
+	      req.send();
+	    } catch (e) {
+	      reject(e.toString());
+	    }
 	  });
 	}
 
 	module.exports = networkRequest;
 
 /***/ },
 /* 8 */
 /***/ function(module, exports) {
@@ -604,23 +587,27 @@ return /******/ (function(modules) { // 
 
 	        this.worker.addEventListener("message", listener);
 	      });
 	    };
 	  }
 	};
 
 	function workerHandler(publicInterface) {
-	  return function workerHandler(msg) {
+	  return function (msg) {
 	    const { id, method, args } = msg.data;
-	    const response = publicInterface[method].apply(undefined, args);
-	    if (response instanceof Promise) {
-	      response.then(val => self.postMessage({ id, response: val }), err => self.postMessage({ id, error: err }));
-	    } else {
-	      self.postMessage({ id, response });
+	    try {
+	      const response = publicInterface[method].apply(undefined, args);
+	      if (response instanceof Promise) {
+	        response.then(val => self.postMessage({ id, response: val }), err => self.postMessage({ id, error: err }));
+	      } else {
+	        self.postMessage({ id, response });
+	      }
+	    } catch (error) {
+	      self.postMessage({ id, error });
 	    }
 	  };
 	}
 
 	module.exports = {
 	  WorkerDispatcher,
 	  workerHandler
 	};
--- a/devtools/client/shared/source-map/worker.js
+++ b/devtools/client/shared/source-map/worker.js
@@ -49,16 +49,20 @@ return /******/ (function(modules) { // 
 /******/ 	// Load entry module and return exports
 /******/ 	return __webpack_require__(0);
 /******/ })
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	const {
 	  getOriginalURLs,
 	  getGeneratedLocation,
 	  getOriginalLocation,
 	  getOriginalSourceText,
 	  hasMappedSource,
 	  applySourceMap,
 	  clearSourceMaps
@@ -77,16 +81,20 @@ return /******/ (function(modules) { // 
 	  applySourceMap,
 	  clearSourceMaps
 	});
 
 /***/ },
 /* 1 */
 /***/ function(module, exports, __webpack_require__) {
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	const md5 = __webpack_require__(2);
 
 	function originalToGeneratedId(originalId) {
 	  const match = originalId.match(/(.*)\/originalSource/);
 	  return match ? match[1] : "";
 	}
 
 	function generatedToOriginalId(generatedId, url) {
@@ -153,346 +161,316 @@ return /******/ (function(modules) { // 
 	  getContentType,
 	  contentMapForTesting: contentMap
 	};
 
 /***/ },
 /* 2 */
 /***/ function(module, exports, __webpack_require__) {
 
-	(function(){
-	  var crypt = __webpack_require__(3),
-	      utf8 = __webpack_require__(4).utf8,
-	      isBuffer = __webpack_require__(5),
-	      bin = __webpack_require__(4).bin,
-
-	  // The core
-	  md5 = function (message, options) {
-	    // Convert to byte array
-	    if (message.constructor == String)
-	      if (options && options.encoding === 'binary')
-	        message = bin.stringToBytes(message);
-	      else
-	        message = utf8.stringToBytes(message);
-	    else if (isBuffer(message))
-	      message = Array.prototype.slice.call(message, 0);
-	    else if (!Array.isArray(message))
-	      message = message.toString();
-	    // else, assume byte array already
-
-	    var m = crypt.bytesToWords(message),
-	        l = message.length * 8,
-	        a =  1732584193,
-	        b = -271733879,
-	        c = -1732584194,
-	        d =  271733878;
-
-	    // Swap endian
-	    for (var i = 0; i < m.length; i++) {
-	      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |
-	             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;
-	    }
-
-	    // Padding
-	    m[l >>> 5] |= 0x80 << (l % 32);
-	    m[(((l + 64) >>> 9) << 4) + 14] = l;
-
-	    // Method shortcuts
-	    var FF = md5._ff,
-	        GG = md5._gg,
-	        HH = md5._hh,
-	        II = md5._ii;
-
-	    for (var i = 0; i < m.length; i += 16) {
-
-	      var aa = a,
-	          bb = b,
-	          cc = c,
-	          dd = d;
-
-	      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);
-	      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);
-	      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);
-	      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);
-	      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);
-	      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);
-	      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);
-	      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);
-	      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);
-	      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);
-	      c = FF(c, d, a, b, m[i+10], 17, -42063);
-	      b = FF(b, c, d, a, m[i+11], 22, -1990404162);
-	      a = FF(a, b, c, d, m[i+12],  7,  1804603682);
-	      d = FF(d, a, b, c, m[i+13], 12, -40341101);
-	      c = FF(c, d, a, b, m[i+14], 17, -1502002290);
-	      b = FF(b, c, d, a, m[i+15], 22,  1236535329);
-
-	      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);
-	      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);
-	      c = GG(c, d, a, b, m[i+11], 14,  643717713);
-	      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);
-	      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);
-	      d = GG(d, a, b, c, m[i+10],  9,  38016083);
-	      c = GG(c, d, a, b, m[i+15], 14, -660478335);
-	      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);
-	      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);
-	      d = GG(d, a, b, c, m[i+14],  9, -1019803690);
-	      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);
-	      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);
-	      a = GG(a, b, c, d, m[i+13],  5, -1444681467);
-	      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);
-	      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);
-	      b = GG(b, c, d, a, m[i+12], 20, -1926607734);
-
-	      a = HH(a, b, c, d, m[i+ 5],  4, -378558);
-	      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);
-	      c = HH(c, d, a, b, m[i+11], 16,  1839030562);
-	      b = HH(b, c, d, a, m[i+14], 23, -35309556);
-	      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);
-	      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);
-	      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);
-	      b = HH(b, c, d, a, m[i+10], 23, -1094730640);
-	      a = HH(a, b, c, d, m[i+13],  4,  681279174);
-	      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);
-	      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);
-	      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);
-	      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);
-	      d = HH(d, a, b, c, m[i+12], 11, -421815835);
-	      c = HH(c, d, a, b, m[i+15], 16,  530742520);
-	      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);
-
-	      a = II(a, b, c, d, m[i+ 0],  6, -198630844);
-	      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);
-	      c = II(c, d, a, b, m[i+14], 15, -1416354905);
-	      b = II(b, c, d, a, m[i+ 5], 21, -57434055);
-	      a = II(a, b, c, d, m[i+12],  6,  1700485571);
-	      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);
-	      c = II(c, d, a, b, m[i+10], 15, -1051523);
-	      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);
-	      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);
-	      d = II(d, a, b, c, m[i+15], 10, -30611744);
-	      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);
-	      b = II(b, c, d, a, m[i+13], 21,  1309151649);
-	      a = II(a, b, c, d, m[i+ 4],  6, -145523070);
-	      d = II(d, a, b, c, m[i+11], 10, -1120210379);
-	      c = II(c, d, a, b, m[i+ 2], 15,  718787259);
-	      b = II(b, c, d, a, m[i+ 9], 21, -343485551);
-
-	      a = (a + aa) >>> 0;
-	      b = (b + bb) >>> 0;
-	      c = (c + cc) >>> 0;
-	      d = (d + dd) >>> 0;
-	    }
-
-	    return crypt.endian([a, b, c, d]);
-	  };
-
-	  // Auxiliary functions
-	  md5._ff  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b & c | ~b & d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._gg  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b & d | c & ~d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._hh  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b ^ c ^ d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._ii  = function (a, b, c, d, x, s, t) {
-	    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-
-	  // Package private blocksize
-	  md5._blocksize = 16;
-	  md5._digestsize = 16;
-
-	  module.exports = function (message, options) {
-	    if (message === undefined || message === null)
-	      throw new Error('Illegal argument ' + message);
-
-	    var digestbytes = crypt.wordsToBytes(md5(message, options));
-	    return options && options.asBytes ? digestbytes :
-	        options && options.asString ? bin.bytesToString(digestbytes) :
-	        crypt.bytesToHex(digestbytes);
-	  };
-
-	})();
-
+	(function () {
+	  var crypt = __webpack_require__(3),
+	      utf8 = __webpack_require__(4).utf8,
+	      isBuffer = __webpack_require__(5),
+	      bin = __webpack_require__(4).bin,
+
+
+	  // The core
+	  md5 = function (message, options) {
+	    // Convert to byte array
+	    if (message.constructor == String) {
+	      if (options && options.encoding === 'binary') message = bin.stringToBytes(message);else message = utf8.stringToBytes(message);
+	    } else if (isBuffer(message)) message = Array.prototype.slice.call(message, 0);else if (!Array.isArray(message)) message = message.toString();
+	    // else, assume byte array already
+
+	    var m = crypt.bytesToWords(message),
+	        l = message.length * 8,
+	        a = 1732584193,
+	        b = -271733879,
+	        c = -1732584194,
+	        d = 271733878;
+
+	    // Swap endian
+	    for (var i = 0; i < m.length; i++) {
+	      m[i] = (m[i] << 8 | m[i] >>> 24) & 0x00FF00FF | (m[i] << 24 | m[i] >>> 8) & 0xFF00FF00;
+	    }
+
+	    // Padding
+	    m[l >>> 5] |= 0x80 << l % 32;
+	    m[(l + 64 >>> 9 << 4) + 14] = l;
+
+	    // Method shortcuts
+	    var FF = md5._ff,
+	        GG = md5._gg,
+	        HH = md5._hh,
+	        II = md5._ii;
+
+	    for (var i = 0; i < m.length; i += 16) {
+
+	      var aa = a,
+	          bb = b,
+	          cc = c,
+	          dd = d;
+
+	      a = FF(a, b, c, d, m[i + 0], 7, -680876936);
+	      d = FF(d, a, b, c, m[i + 1], 12, -389564586);
+	      c = FF(c, d, a, b, m[i + 2], 17, 606105819);
+	      b = FF(b, c, d, a, m[i + 3], 22, -1044525330);
+	      a = FF(a, b, c, d, m[i + 4], 7, -176418897);
+	      d = FF(d, a, b, c, m[i + 5], 12, 1200080426);
+	      c = FF(c, d, a, b, m[i + 6], 17, -1473231341);
+	      b = FF(b, c, d, a, m[i + 7], 22, -45705983);
+	      a = FF(a, b, c, d, m[i + 8], 7, 1770035416);
+	      d = FF(d, a, b, c, m[i + 9], 12, -1958414417);
+	      c = FF(c, d, a, b, m[i + 10], 17, -42063);
+	      b = FF(b, c, d, a, m[i + 11], 22, -1990404162);
+	      a = FF(a, b, c, d, m[i + 12], 7, 1804603682);
+	      d = FF(d, a, b, c, m[i + 13], 12, -40341101);
+	      c = FF(c, d, a, b, m[i + 14], 17, -1502002290);
+	      b = FF(b, c, d, a, m[i + 15], 22, 1236535329);
+
+	      a = GG(a, b, c, d, m[i + 1], 5, -165796510);
+	      d = GG(d, a, b, c, m[i + 6], 9, -1069501632);
+	      c = GG(c, d, a, b, m[i + 11], 14, 643717713);
+	      b = GG(b, c, d, a, m[i + 0], 20, -373897302);
+	      a = GG(a, b, c, d, m[i + 5], 5, -701558691);
+	      d = GG(d, a, b, c, m[i + 10], 9, 38016083);
+	      c = GG(c, d, a, b, m[i + 15], 14, -660478335);
+	      b = GG(b, c, d, a, m[i + 4], 20, -405537848);
+	      a = GG(a, b, c, d, m[i + 9], 5, 568446438);
+	      d = GG(d, a, b, c, m[i + 14], 9, -1019803690);
+	      c = GG(c, d, a, b, m[i + 3], 14, -187363961);
+	      b = GG(b, c, d, a, m[i + 8], 20, 1163531501);
+	      a = GG(a, b, c, d, m[i + 13], 5, -1444681467);
+	      d = GG(d, a, b, c, m[i + 2], 9, -51403784);
+	      c = GG(c, d, a, b, m[i + 7], 14, 1735328473);
+	      b = GG(b, c, d, a, m[i + 12], 20, -1926607734);
+
+	      a = HH(a, b, c, d, m[i + 5], 4, -378558);
+	      d = HH(d, a, b, c, m[i + 8], 11, -2022574463);
+	      c = HH(c, d, a, b, m[i + 11], 16, 1839030562);
+	      b = HH(b, c, d, a, m[i + 14], 23, -35309556);
+	      a = HH(a, b, c, d, m[i + 1], 4, -1530992060);
+	      d = HH(d, a, b, c, m[i + 4], 11, 1272893353);
+	      c = HH(c, d, a, b, m[i + 7], 16, -155497632);
+	      b = HH(b, c, d, a, m[i + 10], 23, -1094730640);
+	      a = HH(a, b, c, d, m[i + 13], 4, 681279174);
+	      d = HH(d, a, b, c, m[i + 0], 11, -358537222);
+	      c = HH(c, d, a, b, m[i + 3], 16, -722521979);
+	      b = HH(b, c, d, a, m[i + 6], 23, 76029189);
+	      a = HH(a, b, c, d, m[i + 9], 4, -640364487);
+	      d = HH(d, a, b, c, m[i + 12], 11, -421815835);
+	      c = HH(c, d, a, b, m[i + 15], 16, 530742520);
+	      b = HH(b, c, d, a, m[i + 2], 23, -995338651);
+
+	      a = II(a, b, c, d, m[i + 0], 6, -198630844);
+	      d = II(d, a, b, c, m[i + 7], 10, 1126891415);
+	      c = II(c, d, a, b, m[i + 14], 15, -1416354905);
+	      b = II(b, c, d, a, m[i + 5], 21, -57434055);
+	      a = II(a, b, c, d, m[i + 12], 6, 1700485571);
+	      d = II(d, a, b, c, m[i + 3], 10, -1894986606);
+	      c = II(c, d, a, b, m[i + 10], 15, -1051523);
+	      b = II(b, c, d, a, m[i + 1], 21, -2054922799);
+	      a = II(a, b, c, d, m[i + 8], 6, 1873313359);
+	      d = II(d, a, b, c, m[i + 15], 10, -30611744);
+	      c = II(c, d, a, b, m[i + 6], 15, -1560198380);
+	      b = II(b, c, d, a, m[i + 13], 21, 1309151649);
+	      a = II(a, b, c, d, m[i + 4], 6, -145523070);
+	      d = II(d, a, b, c, m[i + 11], 10, -1120210379);
+	      c = II(c, d, a, b, m[i + 2], 15, 718787259);
+	      b = II(b, c, d, a, m[i + 9], 21, -343485551);
+
+	      a = a + aa >>> 0;
+	      b = b + bb >>> 0;
+	      c = c + cc >>> 0;
+	      d = d + dd >>> 0;
+	    }
+
+	    return crypt.endian([a, b, c, d]);
+	  };
+
+	  // Auxiliary functions
+	  md5._ff = function (a, b, c, d, x, s, t) {
+	    var n = a + (b & c | ~b & d) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+	  md5._gg = function (a, b, c, d, x, s, t) {
+	    var n = a + (b & d | c & ~d) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+	  md5._hh = function (a, b, c, d, x, s, t) {
+	    var n = a + (b ^ c ^ d) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+	  md5._ii = function (a, b, c, d, x, s, t) {
+	    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
+	    return (n << s | n >>> 32 - s) + b;
+	  };
+
+	  // Package private blocksize
+	  md5._blocksize = 16;
+	  md5._digestsize = 16;
+
+	  module.exports = function (message, options) {
+	    if (message === undefined || message === null) throw new Error('Illegal argument ' + message);
+
+	    var digestbytes = crypt.wordsToBytes(md5(message, options));
+	    return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
+	  };
+	})();
 
 /***/ },
 /* 3 */
 /***/ function(module, exports) {
 
-	(function() {
-	  var base64map
-	      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
-
-	  crypt = {
+	(function () {
+	  var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+	      crypt = {
 	    // Bit-wise rotation left
-	    rotl: function(n, b) {
-	      return (n << b) | (n >>> (32 - b));
+	    rotl: function (n, b) {
+	      return n << b | n >>> 32 - b;
 	    },
 
 	    // Bit-wise rotation right
-	    rotr: function(n, b) {
-	      return (n << (32 - b)) | (n >>> b);
+	    rotr: function (n, b) {
+	      return n << 32 - b | n >>> b;
 	    },
 
 	    // Swap big-endian to little-endian and vice versa
-	    endian: function(n) {
+	    endian: function (n) {
 	      // If number given, swap endian
 	      if (n.constructor == Number) {
 	        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;
 	      }
 
 	      // Else, assume array and swap all items
-	      for (var i = 0; i < n.length; i++)
-	        n[i] = crypt.endian(n[i]);
+	      for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]);
 	      return n;
 	    },
 
 	    // Generate an array of any length of random bytes
-	    randomBytes: function(n) {
-	      for (var bytes = []; n > 0; n--)
-	        bytes.push(Math.floor(Math.random() * 256));
+	    randomBytes: function (n) {
+	      for (var bytes = []; n > 0; n--) bytes.push(Math.floor(Math.random() * 256));
 	      return bytes;
 	    },
 
 	    // Convert a byte array to big-endian 32-bit words
-	    bytesToWords: function(bytes) {
-	      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)
-	        words[b >>> 5] |= bytes[i] << (24 - b % 32);
+	    bytesToWords: function (bytes) {
+	      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) words[b >>> 5] |= bytes[i] << 24 - b % 32;
 	      return words;
 	    },
 
 	    // Convert big-endian 32-bit words to a byte array
-	    wordsToBytes: function(words) {
-	      for (var bytes = [], b = 0; b < words.length * 32; b += 8)
-	        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
+	    wordsToBytes: function (words) {
+	      for (var bytes = [], b = 0; b < words.length * 32; b += 8) bytes.push(words[b >>> 5] >>> 24 - b % 32 & 0xFF);
 	      return bytes;
 	    },
 
 	    // Convert a byte array to a hex string
-	    bytesToHex: function(bytes) {
+	    bytesToHex: function (bytes) {
 	      for (var hex = [], i = 0; i < bytes.length; i++) {
 	        hex.push((bytes[i] >>> 4).toString(16));
 	        hex.push((bytes[i] & 0xF).toString(16));
 	      }
 	      return hex.join('');
 	    },
 
 	    // Convert a hex string to a byte array
-	    hexToBytes: function(hex) {
-	      for (var bytes = [], c = 0; c < hex.length; c += 2)
-	        bytes.push(parseInt(hex.substr(c, 2), 16));
+	    hexToBytes: function (hex) {
+	      for (var bytes = [], c = 0; c < hex.length; c += 2) bytes.push(parseInt(hex.substr(c, 2), 16));
 	      return bytes;
 	    },
 
 	    // Convert a byte array to a base-64 string
-	    bytesToBase64: function(bytes) {
+	    bytesToBase64: function (bytes) {
 	      for (var base64 = [], i = 0; i < bytes.length; i += 3) {
-	        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
-	        for (var j = 0; j < 4; j++)
-	          if (i * 8 + j * 6 <= bytes.length * 8)
-	            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));
-	          else
-	            base64.push('=');
+	        var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];
+	        for (var j = 0; j < 4; j++) if (i * 8 + j * 6 <= bytes.length * 8) base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 0x3F));else base64.push('=');
 	      }
 	      return base64.join('');
 	    },
 
 	    // Convert a base-64 string to a byte array
-	    base64ToBytes: function(base64) {
+	    base64ToBytes: function (base64) {
 	      // Remove non-base-64 characters
 	      base64 = base64.replace(/[^A-Z0-9+\/]/ig, '');
 
-	      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;
-	          imod4 = ++i % 4) {
+	      for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {
 	        if (imod4 == 0) continue;
-	        bytes.push(((base64map.indexOf(base64.charAt(i - 1))
-	            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))
-	            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));
+	        bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);
 	      }
 	      return bytes;
 	    }
 	  };
 
 	  module.exports = crypt;
 	})();
 
-
 /***/ },
 /* 4 */
 /***/ function(module, exports) {
 
 	var charenc = {
 	  // UTF-8 encoding
 	  utf8: {
 	    // Convert a string to a byte array
-	    stringToBytes: function(str) {
+	    stringToBytes: function (str) {
 	      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
 	    },
 
 	    // Convert a byte array to a string
-	    bytesToString: function(bytes) {
+	    bytesToString: function (bytes) {
 	      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
 	    }
 	  },
 
 	  // Binary encoding
 	  bin: {
 	    // Convert a string to a byte array
-	    stringToBytes: function(str) {
-	      for (var bytes = [], i = 0; i < str.length; i++)
-	        bytes.push(str.charCodeAt(i) & 0xFF);
+	    stringToBytes: function (str) {
+	      for (var bytes = [], i = 0; i < str.length; i++) bytes.push(str.charCodeAt(i) & 0xFF);
 	      return bytes;
 	    },
 
 	    // Convert a byte array to a string
-	    bytesToString: function(bytes) {
-	      for (var str = [], i = 0; i < bytes.length; i++)
-	        str.push(String.fromCharCode(bytes[i]));
+	    bytesToString: function (bytes) {
+	      for (var str = [], i = 0; i < bytes.length; i++) str.push(String.fromCharCode(bytes[i]));
 	      return str.join('');
 	    }
 	  }
 	};
 
 	module.exports = charenc;
 
-
 /***/ },
 /* 5 */
 /***/ function(module, exports) {
 
 	/*!
 	 * Determine if an object is a Buffer
 	 *
 	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
 	 * @license  MIT
 	 */
 
 	// The _isBuffer check is for Safari 5-7 support, because it's missing
 	// Object.prototype.constructor. Remove this eventually
 	module.exports = function (obj) {
-	  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
-	}
-
-	function isBuffer (obj) {
-	  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
+	  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
+	};
+
+	function isBuffer(obj) {
+	  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
 	}
 
 	// For Node v0.10 support. Remove this eventually.
-	function isSlowBuffer (obj) {
-	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
+	function isSlowBuffer(obj) {
+	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));
 	}
 
-
 /***/ },
 /* 6 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* This Source Code Form is subject to the terms of the Mozilla Public
 	 * License, v. 2.0. If a copy of the MPL was not distributed with this
 	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
@@ -509,39 +487,44 @@ return /******/ (function(modules) { // 
 /***/ function(module, exports) {
 
 	/* This Source Code Form is subject to the terms of the Mozilla Public
 	 * License, v. 2.0. If a copy of the MPL was not distributed with this
 	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 	function networkRequest(url, opts) {
 	  return new Promise((resolve, reject) => {
-	    const req = new XMLHttpRequest();
-
-	    req.addEventListener("readystatechange", () => {
-	      if (req.readyState === XMLHttpRequest.DONE) {
-	        if (req.status === 200) {
-	          resolve({ content: req.responseText });
-	        } else {
-	          resolve(req.statusText);
+	    try {
+	      const req = new XMLHttpRequest();
+
+	      req.addEventListener("readystatechange", () => {
+	        if (req.readyState === XMLHttpRequest.DONE) {
+	          if (req.status === 200) {
+	            resolve({ content: req.responseText });
+	          } else {
+	            let text = req.statusText || "invalid URL";
+	            reject(text);
+	          }
 	        }
-	      }
-	    });
-
-	    // Not working yet.
-	    // if (!opts.loadFromCache) {
-	    //   req.channel.loadFlags = (
-	    //     Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE |
-	    //       Components.interfaces.nsIRequest.INHIBIT_CACHING |
-	    //       Components.interfaces.nsIRequest.LOAD_ANONYMOUS
-	    //   );
-	    // }
-
-	    req.open("GET", url);
-	    req.send();
+	      });
+
+	      // Not working yet.
+	      // if (!opts.loadFromCache) {
+	      //   req.channel.loadFlags = (
+	      //     Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE |
+	      //       Components.interfaces.nsIRequest.INHIBIT_CACHING |
+	      //       Components.interfaces.nsIRequest.LOAD_ANONYMOUS
+	      //   );
+	      // }
+
+	      req.open("GET", url);
+	      req.send();
+	    } catch (e) {
+	      reject(e.toString());
+	    }
 	  });
 	}
 
 	module.exports = networkRequest;
 
 /***/ },
 /* 8 */
 /***/ function(module, exports) {
@@ -593,23 +576,27 @@ return /******/ (function(modules) { // 
 
 	        this.worker.addEventListener("message", listener);
 	      });
 	    };
 	  }
 	};
 
 	function workerHandler(publicInterface) {
-	  return function workerHandler(msg) {
+	  return function (msg) {
 	    const { id, method, args } = msg.data;
-	    const response = publicInterface[method].apply(undefined, args);
-	    if (response instanceof Promise) {
-	      response.then(val => self.postMessage({ id, response: val }), err => self.postMessage({ id, error: err }));
-	    } else {
-	      self.postMessage({ id, response });
+	    try {
+	      const response = publicInterface[method].apply(undefined, args);
+	      if (response instanceof Promise) {
+	        response.then(val => self.postMessage({ id, response: val }), err => self.postMessage({ id, error: err }));
+	      } else {
+	        self.postMessage({ id, response });
+	      }
+	    } catch (error) {
+	      self.postMessage({ id, error });
 	    }
 	  };
 	}
 
 	module.exports = {
 	  WorkerDispatcher,
 	  workerHandler
 	};
@@ -620,17 +607,21 @@ return /******/ (function(modules) { // 
 
 	let _resolveAndFetch = (() => {
 	  var _ref = _asyncToGenerator(function* (generatedSource) {
 	    // Fetch the sourcemap over the network and create it.
 	    const sourceMapURL = _resolveSourceMapURL(generatedSource);
 	    const fetched = yield networkRequest(sourceMapURL, { loadFromCache: false });
 
 	    // Create the source map and fix it up.
-	    const map = new SourceMapConsumer(fetched.content);
+	    let map = new SourceMapConsumer(fetched.content);
+	    if (generatedSource.isWasm) {
+	      map = new WasmRemap(map);
+	    }
+
 	    _setSourceMapRoot(map, sourceMapURL, generatedSource);
 	    return map;
 	  });
 
 	  return function _resolveAndFetch(_x) {
 	    return _ref.apply(this, arguments);
 	  };
 	})();
@@ -750,33 +741,38 @@ return /******/ (function(modules) { // 
 
 	  return function hasMappedSource(_x7) {
 	    return _ref6.apply(this, arguments);
 	  };
 	})();
 
 	function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	/**
 	 * Source Map Worker
 	 * @module utils/source-map-worker
 	 */
 
 	const { networkRequest } = __webpack_require__(6);
 
-	const path = __webpack_require__(17);
-	const { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(18);
-	const assert = __webpack_require__(29);
+	const path = __webpack_require__(10);
+	const { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(11);
+	const assert = __webpack_require__(22);
 	const {
 	  originalToGeneratedId,
 	  generatedToOriginalId,
 	  isGeneratedId,
 	  isOriginalId,
 	  getContentType
 	} = __webpack_require__(1);
+	const { WasmRemap } = __webpack_require__(23);
 
 	let sourceMapRequests = new Map();
 
 	function clearSourceMaps() {
 	  sourceMapRequests.clear();
 	}
 
 	function _resolveSourceMapURL(source) {
@@ -839,18 +835,20 @@ return /******/ (function(modules) { // 
 	    // requesting it, all subsequent calls will block on the initial
 	    // request.
 	    return existingRequest;
 	  } else if (!generatedSource.sourceMapURL) {
 	    return Promise.resolve(null);
 	  }
 
 	  // Fire off the request, set it in the cache, and return it.
-	  const req = _resolveAndFetch(generatedSource).catch(e => console.error(e));
-	  sourceMapRequests.set(generatedSource.id, req);
+	  const req = _resolveAndFetch(generatedSource);
+	  // Make sure the cached promise does not reject, because we only
+	  // want to report the error once.
+	  sourceMapRequests.set(generatedSource.id, req.catch(() => null));
 	  return req;
 	}
 
 	function applySourceMap(generatedId, url, code, mappings) {
 	  const generator = new SourceMapGenerator({ file: url });
 	  mappings.forEach(mapping => generator.addMapping(mapping));
 	  generator.setSourceContent(url, code);
 
@@ -864,26 +862,23 @@ return /******/ (function(modules) { // 
 	  getOriginalLocation,
 	  getOriginalSourceText,
 	  applySourceMap,
 	  clearSourceMaps,
 	  hasMappedSource
 	};
 
 /***/ },
-/* 10 */,
-/* 11 */,
-/* 12 */,
-/* 13 */,
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */
+/* 10 */
 /***/ function(module, exports) {
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	function dirname(path) {
 	  const idx = path.lastIndexOf("/");
 	  return path.slice(0, idx);
 	}
 
 	function isURL(str) {
 	  try {
 	    new URL(str);
@@ -897,44 +892,43 @@ return /******/ (function(modules) { // 
 	  return str[0] === "/";
 	}
 
 	module.exports = {
 	  dirname, isURL, isAbsolute
 	};
 
 /***/ },
-/* 18 */
+/* 11 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/*
 	 * Copyright 2009-2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE.txt or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
-	exports.SourceMapGenerator = __webpack_require__(19).SourceMapGenerator;
-	exports.SourceMapConsumer = __webpack_require__(25).SourceMapConsumer;
-	exports.SourceNode = __webpack_require__(28).SourceNode;
-
+	exports.SourceMapGenerator = __webpack_require__(12).SourceMapGenerator;
+	exports.SourceMapConsumer = __webpack_require__(18).SourceMapConsumer;
+	exports.SourceNode = __webpack_require__(21).SourceNode;
 
 /***/ },
-/* 19 */
+/* 12 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var base64VLQ = __webpack_require__(20);
-	var util = __webpack_require__(22);
-	var ArraySet = __webpack_require__(23).ArraySet;
-	var MappingList = __webpack_require__(24).MappingList;
+	var base64VLQ = __webpack_require__(13);
+	var util = __webpack_require__(15);
+	var ArraySet = __webpack_require__(16).ArraySet;
+	var MappingList = __webpack_require__(17).MappingList;
 
 	/**
 	 * An instance of the SourceMapGenerator represents a source map which is
 	 * being built incrementally. You may pass an object with the following
 	 * properties:
 	 *
 	 *   - file: The filename of the generated source.
 	 *   - sourceRoot: A root for all relative URLs in this source map.
@@ -954,129 +948,126 @@ return /******/ (function(modules) { // 
 
 	SourceMapGenerator.prototype._version = 3;
 
 	/**
 	 * Creates a new SourceMapGenerator based on a SourceMapConsumer
 	 *
 	 * @param aSourceMapConsumer The SourceMap.
 	 */
-	SourceMapGenerator.fromSourceMap =
-	  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
-	    var sourceRoot = aSourceMapConsumer.sourceRoot;
-	    var generator = new SourceMapGenerator({
-	      file: aSourceMapConsumer.file,
-	      sourceRoot: sourceRoot
-	    });
-	    aSourceMapConsumer.eachMapping(function (mapping) {
-	      var newMapping = {
-	        generated: {
-	          line: mapping.generatedLine,
-	          column: mapping.generatedColumn
-	        }
+	SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+	  var sourceRoot = aSourceMapConsumer.sourceRoot;
+	  var generator = new SourceMapGenerator({
+	    file: aSourceMapConsumer.file,
+	    sourceRoot: sourceRoot
+	  });
+	  aSourceMapConsumer.eachMapping(function (mapping) {
+	    var newMapping = {
+	      generated: {
+	        line: mapping.generatedLine,
+	        column: mapping.generatedColumn
+	      }
+	    };
+
+	    if (mapping.source != null) {
+	      newMapping.source = mapping.source;
+	      if (sourceRoot != null) {
+	        newMapping.source = util.relative(sourceRoot, newMapping.source);
+	      }
+
+	      newMapping.original = {
+	        line: mapping.originalLine,
+	        column: mapping.originalColumn
 	      };
 
-	      if (mapping.source != null) {
-	        newMapping.source = mapping.source;
-	        if (sourceRoot != null) {
-	          newMapping.source = util.relative(sourceRoot, newMapping.source);
-	        }
-
-	        newMapping.original = {
-	          line: mapping.originalLine,
-	          column: mapping.originalColumn
-	        };
-
-	        if (mapping.name != null) {
-	          newMapping.name = mapping.name;
-	        }
+	      if (mapping.name != null) {
+	        newMapping.name = mapping.name;
 	      }
-
-	      generator.addMapping(newMapping);
-	    });
-	    aSourceMapConsumer.sources.forEach(function (sourceFile) {
-	      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-	      if (content != null) {
-	        generator.setSourceContent(sourceFile, content);
-	      }
-	    });
-	    return generator;
-	  };
+	    }
+
+	    generator.addMapping(newMapping);
+	  });
+	  aSourceMapConsumer.sources.forEach(function (sourceFile) {
+	    var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+	    if (content != null) {
+	      generator.setSourceContent(sourceFile, content);
+	    }
+	  });
+	  return generator;
+	};
 
 	/**
 	 * Add a single mapping from original source line and column to the generated
 	 * source's line and column for this source map being created. The mapping
 	 * object should have the following properties:
 	 *
 	 *   - generated: An object with the generated line and column positions.
 	 *   - original: An object with the original line and column positions.
 	 *   - source: The original source file (relative to the sourceRoot).
 	 *   - name: An optional original token name for this mapping.
 	 */
-	SourceMapGenerator.prototype.addMapping =
-	  function SourceMapGenerator_addMapping(aArgs) {
-	    var generated = util.getArg(aArgs, 'generated');
-	    var original = util.getArg(aArgs, 'original', null);
-	    var source = util.getArg(aArgs, 'source', null);
-	    var name = util.getArg(aArgs, 'name', null);
-
-	    if (!this._skipValidation) {
-	      this._validateMapping(generated, original, source, name);
-	    }
-
-	    if (source != null) {
-	      source = String(source);
-	      if (!this._sources.has(source)) {
-	        this._sources.add(source);
-	      }
+	SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {
+	  var generated = util.getArg(aArgs, 'generated');
+	  var original = util.getArg(aArgs, 'original', null);
+	  var source = util.getArg(aArgs, 'source', null);
+	  var name = util.getArg(aArgs, 'name', null);
+
+	  if (!this._skipValidation) {
+	    this._validateMapping(generated, original, source, name);
+	  }
+
+	  if (source != null) {
+	    source = String(source);
+	    if (!this._sources.has(source)) {
+	      this._sources.add(source);
 	    }
-
-	    if (name != null) {
-	      name = String(name);
-	      if (!this._names.has(name)) {
-	        this._names.add(name);
-	      }
+	  }
+
+	  if (name != null) {
+	    name = String(name);
+	    if (!this._names.has(name)) {
+	      this._names.add(name);
 	    }
-
-	    this._mappings.add({
-	      generatedLine: generated.line,
-	      generatedColumn: generated.column,
-	      originalLine: original != null && original.line,
-	      originalColumn: original != null && original.column,
-	      source: source,
-	      name: name
-	    });
-	  };
+	  }
+
+	  this._mappings.add({
+	    generatedLine: generated.line,
+	    generatedColumn: generated.column,
+	    originalLine: original != null && original.line,
+	    originalColumn: original != null && original.column,
+	    source: source,
+	    name: name
+	  });
+	};
 
 	/**
 	 * Set the source content for a source file.
 	 */
-	SourceMapGenerator.prototype.setSourceContent =
-	  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
-	    var source = aSourceFile;
-	    if (this._sourceRoot != null) {
-	      source = util.relative(this._sourceRoot, source);
+	SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+	  var source = aSourceFile;
+	  if (this._sourceRoot != null) {
+	    source = util.relative(this._sourceRoot, source);
+	  }
+
+	  if (aSourceContent != null) {
+	    // Add the source content to the _sourcesContents map.
+	    // Create a new _sourcesContents map if the property is null.
+	    if (!this._sourcesContents) {
+	      this._sourcesContents = Object.create(null);
 	    }
-
-	    if (aSourceContent != null) {
-	      // Add the source content to the _sourcesContents map.
-	      // Create a new _sourcesContents map if the property is null.
-	      if (!this._sourcesContents) {
-	        this._sourcesContents = Object.create(null);
-	      }
-	      this._sourcesContents[util.toSetString(source)] = aSourceContent;
-	    } else if (this._sourcesContents) {
-	      // Remove the source file from the _sourcesContents map.
-	      // If the _sourcesContents map is empty, set the property to null.
-	      delete this._sourcesContents[util.toSetString(source)];
-	      if (Object.keys(this._sourcesContents).length === 0) {
-	        this._sourcesContents = null;
-	      }
+	    this._sourcesContents[util.toSetString(source)] = aSourceContent;
+	  } else if (this._sourcesContents) {
+	    // Remove the source file from the _sourcesContents map.
+	    // If the _sourcesContents map is empty, set the property to null.
+	    delete this._sourcesContents[util.toSetString(source)];
+	    if (Object.keys(this._sourcesContents).length === 0) {
+	      this._sourcesContents = null;
 	    }
-	  };
+	  }
+	};
 
 	/**
 	 * Applies the mappings of a sub-source-map for a specific source file to the
 	 * source map being generated. Each mapping to the supplied source file is
 	 * rewritten using the supplied source map. Note: The resolution for the
 	 * resulting mappings is the minimium of this map and the supplied map.
 	 *
 	 * @param aSourceMapConsumer The source map to be applied.
@@ -1084,254 +1075,228 @@ return /******/ (function(modules) { // 
 	 *        If omitted, SourceMapConsumer's file property will be used.
 	 * @param aSourceMapPath Optional. The dirname of the path to the source map
 	 *        to be applied. If relative, it is relative to the SourceMapConsumer.
 	 *        This parameter is needed when the two source maps aren't in the same
 	 *        directory, and the source map to be applied contains relative source
 	 *        paths. If so, those relative source paths need to be rewritten
 	 *        relative to the SourceMapGenerator.
 	 */
-	SourceMapGenerator.prototype.applySourceMap =
-	  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
-	    var sourceFile = aSourceFile;
-	    // If aSourceFile is omitted, we will use the file property of the SourceMap
-	    if (aSourceFile == null) {
-	      if (aSourceMapConsumer.file == null) {
-	        throw new Error(
-	          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
-	          'or the source map\'s "file" property. Both were omitted.'
-	        );
-	      }
-	      sourceFile = aSourceMapConsumer.file;
-	    }
-	    var sourceRoot = this._sourceRoot;
-	    // Make "sourceFile" relative if an absolute Url is passed.
-	    if (sourceRoot != null) {
-	      sourceFile = util.relative(sourceRoot, sourceFile);
+	SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+	  var sourceFile = aSourceFile;
+	  // If aSourceFile is omitted, we will use the file property of the SourceMap
+	  if (aSourceFile == null) {
+	    if (aSourceMapConsumer.file == null) {
+	      throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\'s "file" property. Both were omitted.');
 	    }
-	    // Applying the SourceMap can add and remove items from the sources and
-	    // the names array.
-	    var newSources = new ArraySet();
-	    var newNames = new ArraySet();
-
-	    // Find mappings for the "sourceFile"
-	    this._mappings.unsortedForEach(function (mapping) {
-	      if (mapping.source === sourceFile && mapping.originalLine != null) {
-	        // Check if it can be mapped by the source map, then update the mapping.
-	        var original = aSourceMapConsumer.originalPositionFor({
-	          line: mapping.originalLine,
-	          column: mapping.originalColumn
-	        });
-	        if (original.source != null) {
-	          // Copy mapping
-	          mapping.source = original.source;
-	          if (aSourceMapPath != null) {
-	            mapping.source = util.join(aSourceMapPath, mapping.source)
-	          }
-	          if (sourceRoot != null) {
-	            mapping.source = util.relative(sourceRoot, mapping.source);
-	          }
-	          mapping.originalLine = original.line;
-	          mapping.originalColumn = original.column;
-	          if (original.name != null) {
-	            mapping.name = original.name;
-	          }
+	    sourceFile = aSourceMapConsumer.file;
+	  }
+	  var sourceRoot = this._sourceRoot;
+	  // Make "sourceFile" relative if an absolute Url is passed.
+	  if (sourceRoot != null) {
+	    sourceFile = util.relative(sourceRoot, sourceFile);
+	  }
+	  // Applying the SourceMap can add and remove items from the sources and
+	  // the names array.
+	  var newSources = new ArraySet();
+	  var newNames = new ArraySet();
+
+	  // Find mappings for the "sourceFile"
+	  this._mappings.unsortedForEach(function (mapping) {
+	    if (mapping.source === sourceFile && mapping.originalLine != null) {
+	      // Check if it can be mapped by the source map, then update the mapping.
+	      var original = aSourceMapConsumer.originalPositionFor({
+	        line: mapping.originalLine,
+	        column: mapping.originalColumn
+	      });
+	      if (original.source != null) {
+	        // Copy mapping
+	        mapping.source = original.source;
+	        if (aSourceMapPath != null) {
+	          mapping.source = util.join(aSourceMapPath, mapping.source);
+	        }
+	        if (sourceRoot != null) {
+	          mapping.source = util.relative(sourceRoot, mapping.source);
+	        }
+	        mapping.originalLine = original.line;
+	        mapping.originalColumn = original.column;
+	        if (original.name != null) {
+	          mapping.name = original.name;
 	        }
 	      }
-
-	      var source = mapping.source;
-	      if (source != null && !newSources.has(source)) {
-	        newSources.add(source);
-	      }
-
-	      var name = mapping.name;
-	      if (name != null && !newNames.has(name)) {
-	        newNames.add(name);
+	    }
+
+	    var source = mapping.source;
+	    if (source != null && !newSources.has(source)) {
+	      newSources.add(source);
+	    }
+
+	    var name = mapping.name;
+	    if (name != null && !newNames.has(name)) {
+	      newNames.add(name);
+	    }
+	  }, this);
+	  this._sources = newSources;
+	  this._names = newNames;
+
+	  // Copy sourcesContents of applied map.
+	  aSourceMapConsumer.sources.forEach(function (sourceFile) {
+	    var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+	    if (content != null) {
+	      if (aSourceMapPath != null) {
+	        sourceFile = util.join(aSourceMapPath, sourceFile);
 	      }
-
-	    }, this);
-	    this._sources = newSources;
-	    this._names = newNames;
-
-	    // Copy sourcesContents of applied map.
-	    aSourceMapConsumer.sources.forEach(function (sourceFile) {
-	      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-	      if (content != null) {
-	        if (aSourceMapPath != null) {
-	          sourceFile = util.join(aSourceMapPath, sourceFile);
-	        }
-	        if (sourceRoot != null) {
-	          sourceFile = util.relative(sourceRoot, sourceFile);
-	        }
-	        this.setSourceContent(sourceFile, content);
+	      if (sourceRoot != null) {
+	        sourceFile = util.relative(sourceRoot, sourceFile);
 	      }
-	    }, this);
-	  };
+	      this.setSourceContent(sourceFile, content);
+	    }
+	  }, this);
+	};
 
 	/**
 	 * A mapping can have one of the three levels of data:
 	 *
 	 *   1. Just the generated position.
 	 *   2. The Generated position, original position, and original source.
 	 *   3. Generated and original position, original source, as well as a name
 	 *      token.
 	 *
 	 * To maintain consistency, we validate that any new mapping being added falls
 	 * in to one of these categories.
 	 */
-	SourceMapGenerator.prototype._validateMapping =
-	  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
-	                                              aName) {
-	    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
-	        && aGenerated.line > 0 && aGenerated.column >= 0
-	        && !aOriginal && !aSource && !aName) {
-	      // Case 1.
-	      return;
-	    }
-	    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
-	             && aOriginal && 'line' in aOriginal && 'column' in aOriginal
-	             && aGenerated.line > 0 && aGenerated.column >= 0
-	             && aOriginal.line > 0 && aOriginal.column >= 0
-	             && aSource) {
-	      // Cases 2 and 3.
-	      return;
-	    }
-	    else {
-	      throw new Error('Invalid mapping: ' + JSON.stringify({
-	        generated: aGenerated,
-	        source: aSource,
-	        original: aOriginal,
-	        name: aName
-	      }));
-	    }
-	  };
+	SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {
+	  if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {
+	    // Case 1.
+	    return;
+	  } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {
+	    // Cases 2 and 3.
+	    return;
+	  } else {
+	    throw new Error('Invalid mapping: ' + JSON.stringify({
+	      generated: aGenerated,
+	      source: aSource,
+	      original: aOriginal,
+	      name: aName
+	    }));
+	  }
+	};
 
 	/**
 	 * Serialize the accumulated mappings in to the stream of base 64 VLQs
 	 * specified by the source map format.
 	 */
-	SourceMapGenerator.prototype._serializeMappings =
-	  function SourceMapGenerator_serializeMappings() {
-	    var previousGeneratedColumn = 0;
-	    var previousGeneratedLine = 1;
-	    var previousOriginalColumn = 0;
-	    var previousOriginalLine = 0;
-	    var previousName = 0;
-	    var previousSource = 0;
-	    var result = '';
-	    var next;
-	    var mapping;
-	    var nameIdx;
-	    var sourceIdx;
-
-	    var mappings = this._mappings.toArray();
-	    for (var i = 0, len = mappings.length; i < len; i++) {
-	      mapping = mappings[i];
-	      next = ''
-
-	      if (mapping.generatedLine !== previousGeneratedLine) {
-	        previousGeneratedColumn = 0;
-	        while (mapping.generatedLine !== previousGeneratedLine) {
-	          next += ';';
-	          previousGeneratedLine++;
+	SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {
+	  var previousGeneratedColumn = 0;
+	  var previousGeneratedLine = 1;
+	  var previousOriginalColumn = 0;
+	  var previousOriginalLine = 0;
+	  var previousName = 0;
+	  var previousSource = 0;
+	  var result = '';
+	  var next;
+	  var mapping;
+	  var nameIdx;
+	  var sourceIdx;
+
+	  var mappings = this._mappings.toArray();
+	  for (var i = 0, len = mappings.length; i < len; i++) {
+	    mapping = mappings[i];
+	    next = '';
+
+	    if (mapping.generatedLine !== previousGeneratedLine) {
+	      previousGeneratedColumn = 0;
+	      while (mapping.generatedLine !== previousGeneratedLine) {
+	        next += ';';
+	        previousGeneratedLine++;
+	      }
+	    } else {
+	      if (i > 0) {
+	        if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+	          continue;
 	        }
-	      }
-	      else {
-	        if (i > 0) {
-	          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
-	            continue;
-	          }
-	          next += ',';
-	        }
+	        next += ',';
 	      }
-
-	      next += base64VLQ.encode(mapping.generatedColumn
-	                                 - previousGeneratedColumn);
-	      previousGeneratedColumn = mapping.generatedColumn;
-
-	      if (mapping.source != null) {
-	        sourceIdx = this._sources.indexOf(mapping.source);
-	        next += base64VLQ.encode(sourceIdx - previousSource);
-	        previousSource = sourceIdx;
-
-	        // lines are stored 0-based in SourceMap spec version 3
-	        next += base64VLQ.encode(mapping.originalLine - 1
-	                                   - previousOriginalLine);
-	        previousOriginalLine = mapping.originalLine - 1;
-
-	        next += base64VLQ.encode(mapping.originalColumn
-	                                   - previousOriginalColumn);
-	        previousOriginalColumn = mapping.originalColumn;
-
-	        if (mapping.name != null) {
-	          nameIdx = this._names.indexOf(mapping.name);
-	          next += base64VLQ.encode(nameIdx - previousName);
-	          previousName = nameIdx;
-	        }
+	    }
+
+	    next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);
+	    previousGeneratedColumn = mapping.generatedColumn;
+
+	    if (mapping.source != null) {
+	      sourceIdx = this._sources.indexOf(mapping.source);
+	      next += base64VLQ.encode(sourceIdx - previousSource);
+	      previousSource = sourceIdx;
+
+	      // lines are stored 0-based in SourceMap spec version 3
+	      next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);
+	      previousOriginalLine = mapping.originalLine - 1;
+
+	      next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);
+	      previousOriginalColumn = mapping.originalColumn;
+
+	      if (mapping.name != null) {
+	        nameIdx = this._names.indexOf(mapping.name);
+	        next += base64VLQ.encode(nameIdx - previousName);
+	        previousName = nameIdx;
 	      }
-
-	      result += next;
 	    }
 
-	    return result;
-	  };
-
-	SourceMapGenerator.prototype._generateSourcesContent =
-	  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
-	    return aSources.map(function (source) {
-	      if (!this._sourcesContents) {
-	        return null;
-	      }
-	      if (aSourceRoot != null) {
-	        source = util.relative(aSourceRoot, source);
-	      }
-	      var key = util.toSetString(source);
-	      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
-	        ? this._sourcesContents[key]
-	        : null;
-	    }, this);
-	  };
+	    result += next;
+	  }
+
+	  return result;
+	};
+
+	SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+	  return aSources.map(function (source) {
+	    if (!this._sourcesContents) {
+	      return null;
+	    }
+	    if (aSourceRoot != null) {
+	      source = util.relative(aSourceRoot, source);
+	    }
+	    var key = util.toSetString(source);
+	    return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;
+	  }, this);
+	};
 
 	/**
 	 * Externalize the source map.
 	 */
-	SourceMapGenerator.prototype.toJSON =
-	  function SourceMapGenerator_toJSON() {
-	    var map = {
-	      version: this._version,
-	      sources: this._sources.toArray(),
-	      names: this._names.toArray(),
-	      mappings: this._serializeMappings()
-	    };
-	    if (this._file != null) {
-	      map.file = this._file;
-	    }
-	    if (this._sourceRoot != null) {
-	      map.sourceRoot = this._sourceRoot;
-	    }
-	    if (this._sourcesContents) {
-	      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
-	    }
-
-	    return map;
+	SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {
+	  var map = {
+	    version: this._version,
+	    sources: this._sources.toArray(),
+	    names: this._names.toArray(),
+	    mappings: this._serializeMappings()
 	  };
+	  if (this._file != null) {
+	    map.file = this._file;
+	  }
+	  if (this._sourceRoot != null) {
+	    map.sourceRoot = this._sourceRoot;
+	  }
+	  if (this._sourcesContents) {
+	    map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+	  }
+
+	  return map;
+	};
 
 	/**
 	 * Render the source map being generated to a string.
 	 */
-	SourceMapGenerator.prototype.toString =
-	  function SourceMapGenerator_toString() {
-	    return JSON.stringify(this.toJSON());
-	  };
+	SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {
+	  return JSON.stringify(this.toJSON());
+	};
 
 	exports.SourceMapGenerator = SourceMapGenerator;
 
-
 /***/ },
-/* 20 */
+/* 13 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 *
@@ -1361,17 +1326,17 @@ return /******/ (function(modules) { // 
 	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 	 */
 
-	var base64 = __webpack_require__(21);
+	var base64 = __webpack_require__(14);
 
 	// A single base 64 digit can contain 6 bits of data. For the base 64 variable
 	// length quantities we use in the source map spec, the first bit is the sign,
 	// the next four bits are the actual value, and the 6th bit is the
 	// continuation bit. The continuation bit tells us whether there are more
 	// digits in this value following this digit.
 	//
 	//   Continuation
@@ -1393,33 +1358,29 @@ return /******/ (function(modules) { // 
 
 	/**
 	 * Converts from a two-complement value to a value where the sign bit is
 	 * placed in the least significant bit.  For example, as decimals:
 	 *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
 	 *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
 	 */
 	function toVLQSigned(aValue) {
-	  return aValue < 0
-	    ? ((-aValue) << 1) + 1
-	    : (aValue << 1) + 0;
+	  return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;
 	}
 
 	/**
 	 * Converts to a two-complement value from a value where the sign bit is
 	 * placed in the least significant bit.  For example, as decimals:
 	 *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1
 	 *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2
 	 */
 	function fromVLQSigned(aValue) {
 	  var isNegative = (aValue & 1) === 1;
 	  var shifted = aValue >> 1;
-	  return isNegative
-	    ? -shifted
-	    : shifted;
+	  return isNegative ? -shifted : shifted;
 	}
 
 	/**
 	 * Returns the base 64 VLQ encoded value.
 	 */
 	exports.encode = function base64VLQ_encode(aValue) {
 	  var encoded = "";
 	  var digit;
@@ -1465,19 +1426,18 @@ return /******/ (function(modules) { // 
 	    result = result + (digit << shift);
 	    shift += VLQ_BASE_SHIFT;
 	  } while (continuation);
 
 	  aOutParam.value = fromVLQSigned(result);
 	  aOutParam.rest = aIndex;
 	};
 
-
 /***/ },
-/* 21 */
+/* 14 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -1494,63 +1454,62 @@ return /******/ (function(modules) { // 
 	  throw new TypeError("Must be between 0 and 63: " + number);
 	};
 
 	/**
 	 * Decode a single base 64 character code digit to an integer. Returns -1 on
 	 * failure.
 	 */
 	exports.decode = function (charCode) {
-	  var bigA = 65;     // 'A'
-	  var bigZ = 90;     // 'Z'
-
-	  var littleA = 97;  // 'a'
+	  var bigA = 65; // 'A'
+	  var bigZ = 90; // 'Z'
+
+	  var littleA = 97; // 'a'
 	  var littleZ = 122; // 'z'
 
-	  var zero = 48;     // '0'
-	  var nine = 57;     // '9'
-
-	  var plus = 43;     // '+'
-	  var slash = 47;    // '/'
+	  var zero = 48; // '0'
+	  var nine = 57; // '9'
+
+	  var plus = 43; // '+'
+	  var slash = 47; // '/'
 
 	  var littleOffset = 26;
 	  var numberOffset = 52;
 
 	  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
 	  if (bigA <= charCode && charCode <= bigZ) {
-	    return (charCode - bigA);
+	    return charCode - bigA;
 	  }
 
 	  // 26 - 51: abcdefghijklmnopqrstuvwxyz
 	  if (littleA <= charCode && charCode <= littleZ) {
-	    return (charCode - littleA + littleOffset);
+	    return charCode - littleA + littleOffset;
 	  }
 
 	  // 52 - 61: 0123456789
 	  if (zero <= charCode && charCode <= nine) {
-	    return (charCode - zero + numberOffset);
+	    return charCode - zero + numberOffset;
 	  }
 
 	  // 62: +
 	  if (charCode == plus) {
 	    return 62;
 	  }
 
 	  // 63: /
 	  if (charCode == slash) {
 	    return 63;
 	  }
 
 	  // Invalid base64 digit.
 	  return -1;
 	};
 
-
 /***/ },
-/* 22 */
+/* 15 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -1602,17 +1561,17 @@ return /******/ (function(modules) { // 
 	  url += '//';
 	  if (aParsedUrl.auth) {
 	    url += aParsedUrl.auth + '@';
 	  }
 	  if (aParsedUrl.host) {
 	    url += aParsedUrl.host;
 	  }
 	  if (aParsedUrl.port) {
-	    url += ":" + aParsedUrl.port
+	    url += ":" + aParsedUrl.port;
 	  }
 	  if (aParsedUrl.path) {
 	    url += aParsedUrl.path;
 	  }
 	  return url;
 	}
 	exports.urlGenerate = urlGenerate;
 
@@ -1714,19 +1673,17 @@ return /******/ (function(modules) { // 
 	  }
 
 	  // `join('http://', 'www.example.com')`
 	  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
 	    aRootUrl.host = aPath;
 	    return urlGenerate(aRootUrl);
 	  }
 
-	  var joined = aPath.charAt(0) === '/'
-	    ? aPath
-	    : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+	  var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
 
 	  if (aRootUrl) {
 	    aRootUrl.path = joined;
 	    return urlGenerate(aRootUrl);
 	  }
 	  return joined;
 	}
 	exports.join = join;
@@ -1770,22 +1727,22 @@ return /******/ (function(modules) { // 
 	    ++level;
 	  }
 
 	  // Make sure we add a "../" for each component we removed from the root.
 	  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
 	}
 	exports.relative = relative;
 
-	var supportsNullProto = (function () {
+	var supportsNullProto = function () {
 	  var obj = Object.create(null);
 	  return !('__proto__' in obj);
-	}());
-
-	function identity (s) {
+	}();
+
+	function identity(s) {
 	  return s;
 	}
 
 	/**
 	 * Because behavior goes wacky when you set `__proto__` on objects, we
 	 * have to prefix all the strings in our set with an arbitrary character.
 	 *
 	 * See https://github.com/mozilla/source-map/pull/31 and
@@ -1814,35 +1771,27 @@ return /******/ (function(modules) { // 
 	function isProtoString(s) {
 	  if (!s) {
 	    return false;
 	  }
 
 	  var length = s.length;
 
 	  if (length < 9 /* "__proto__".length */) {
-	    return false;
-	  }
-
-	  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||
-	      s.charCodeAt(length - 2) !== 95  /* '_' */ ||
-	      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
-	      s.charCodeAt(length - 4) !== 116 /* 't' */ ||
-	      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
-	      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
-	      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
-	      s.charCodeAt(length - 8) !== 95  /* '_' */ ||
-	      s.charCodeAt(length - 9) !== 95  /* '_' */) {
-	    return false;
-	  }
+	      return false;
+	    }
+
+	  if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) {
+	      return false;
+	    }
 
 	  for (var i = length - 10; i >= 0; i--) {
 	    if (s.charCodeAt(i) !== 36 /* '$' */) {
-	      return false;
-	    }
+	        return false;
+	      }
 	  }
 
 	  return true;
 	}
 
 	/**
 	 * Comparator between two mappings where the original positions are compared.
 	 *
@@ -1961,29 +1910,28 @@ return /******/ (function(modules) { // 
 	  if (cmp !== 0) {
 	    return cmp;
 	  }
 
 	  return strcmp(mappingA.name, mappingB.name);
 	}
 	exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
-
 /***/ },
-/* 23 */
+/* 16 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var util = __webpack_require__(22);
+	var util = __webpack_require__(15);
 	var has = Object.prototype.hasOwnProperty;
 
 	/**
 	 * A data structure which is a combination of an array and a set. Adding a new
 	 * member is O(1), testing for membership is O(1), and finding the index of an
 	 * element is O(1). Removing elements from the set is not supported. Only
 	 * strings are supported for membership.
 	 */
@@ -2071,66 +2019,63 @@ return /******/ (function(modules) { // 
 	 * for storing the members so that no one can mess with internal state.
 	 */
 	ArraySet.prototype.toArray = function ArraySet_toArray() {
 	  return this._array.slice();
 	};
 
 	exports.ArraySet = ArraySet;
 
-
 /***/ },
-/* 24 */
+/* 17 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2014 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var util = __webpack_require__(22);
+	var util = __webpack_require__(15);
 
 	/**
 	 * Determine whether mappingB is after mappingA with respect to generated
 	 * position.
 	 */
 	function generatedPositionAfter(mappingA, mappingB) {
 	  // Optimized for most common case
 	  var lineA = mappingA.generatedLine;
 	  var lineB = mappingB.generatedLine;
 	  var columnA = mappingA.generatedColumn;
 	  var columnB = mappingB.generatedColumn;
-	  return lineB > lineA || lineB == lineA && columnB >= columnA ||
-	         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+	  return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
 	}
 
 	/**
 	 * A data structure to provide a sorted view of accumulated mappings in a
 	 * performance conscious manner. It trades a neglibable overhead in general
 	 * case for a large speedup in case of mappings being added in order.
 	 */
 	function MappingList() {
 	  this._array = [];
 	  this._sorted = true;
 	  // Serves as infimum
-	  this._last = {generatedLine: -1, generatedColumn: 0};
+	  this._last = { generatedLine: -1, generatedColumn: 0 };
 	}
 
 	/**
 	 * Iterate through internal items. This method takes the same arguments that
 	 * `Array.prototype.forEach` takes.
 	 *
 	 * NOTE: The order of the mappings is NOT guaranteed.
 	 */
-	MappingList.prototype.unsortedForEach =
-	  function MappingList_forEach(aCallback, aThisArg) {
-	    this._array.forEach(aCallback, aThisArg);
-	  };
+	MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {
+	  this._array.forEach(aCallback, aThisArg);
+	};
 
 	/**
 	 * Add the given source mapping.
 	 *
 	 * @param Object aMapping
 	 */
 	MappingList.prototype.add = function MappingList_add(aMapping) {
 	  if (generatedPositionAfter(this._last, aMapping)) {
@@ -2156,48 +2101,45 @@ return /******/ (function(modules) { // 
 	    this._array.sort(util.compareByGeneratedPositionsInflated);
 	    this._sorted = true;
 	  }
 	  return this._array;
 	};
 
 	exports.MappingList = MappingList;
 
-
 /***/ },
-/* 25 */
+/* 18 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var util = __webpack_require__(22);
-	var binarySearch = __webpack_require__(26);
-	var ArraySet = __webpack_require__(23).ArraySet;
-	var base64VLQ = __webpack_require__(20);
-	var quickSort = __webpack_require__(27).quickSort;
+	var util = __webpack_require__(15);
+	var binarySearch = __webpack_require__(19);
+	var ArraySet = __webpack_require__(16).ArraySet;
+	var base64VLQ = __webpack_require__(13);
+	var quickSort = __webpack_require__(20).quickSort;
 
 	function SourceMapConsumer(aSourceMap) {
 	  var sourceMap = aSourceMap;
 	  if (typeof aSourceMap === 'string') {
 	    sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
 	  }
 
-	  return sourceMap.sections != null
-	    ? new IndexedSourceMapConsumer(sourceMap)
-	    : new BasicSourceMapConsumer(sourceMap);
+	  return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap) : new BasicSourceMapConsumer(sourceMap);
 	}
 
-	SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+	SourceMapConsumer.fromSourceMap = function (aSourceMap) {
 	  return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
-	}
+	};
 
 	/**
 	 * The version of the source mapping spec that we are consuming.
 	 */
 	SourceMapConsumer.prototype._version = 3;
 
 	// `__generatedMappings` and `__originalMappings` are arrays that hold the
 	// parsed mapping coordinates from the source map's "mappings" attribute. They
@@ -2246,31 +2188,29 @@ return /******/ (function(modules) { // 
 	    if (!this.__originalMappings) {
 	      this._parseMappings(this._mappings, this.sourceRoot);
 	    }
 
 	    return this.__originalMappings;
 	  }
 	});
 
-	SourceMapConsumer.prototype._charIsMappingSeparator =
-	  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
-	    var c = aStr.charAt(index);
-	    return c === ";" || c === ",";
-	  };
+	SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+	  var c = aStr.charAt(index);
+	  return c === ";" || c === ",";
+	};
 
 	/**
 	 * Parse the mappings in a string in to a data structure which we can easily
 	 * query (the ordered arrays in the `this.__generatedMappings` and
 	 * `this.__originalMappings` properties).
 	 */
-	SourceMapConsumer.prototype._parseMappings =
-	  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
-	    throw new Error("Subclasses must implement _parseMappings");
-	  };
+	SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+	  throw new Error("Subclasses must implement _parseMappings");
+	};
 
 	SourceMapConsumer.GENERATED_ORDER = 1;
 	SourceMapConsumer.ORIGINAL_ORDER = 2;
 
 	SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
 	SourceMapConsumer.LEAST_UPPER_BOUND = 2;
 
 	/**
@@ -2284,49 +2224,48 @@ return /******/ (function(modules) { // 
 	 *        time that `aCallback` is called.
 	 * @param aOrder
 	 *        Either `SourceMapConsumer.GENERATED_ORDER` or
 	 *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
 	 *        iterate over the mappings sorted by the generated file's line/column
 	 *        order or the original's source/line/column order, respectively. Defaults to
 	 *        `SourceMapConsumer.GENERATED_ORDER`.
 	 */
-	SourceMapConsumer.prototype.eachMapping =
-	  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
-	    var context = aContext || null;
-	    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
-
-	    var mappings;
-	    switch (order) {
+	SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+	  var context = aContext || null;
+	  var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+	  var mappings;
+	  switch (order) {
 	    case SourceMapConsumer.GENERATED_ORDER:
 	      mappings = this._generatedMappings;
 	      break;
 	    case SourceMapConsumer.ORIGINAL_ORDER:
 	      mappings = this._originalMappings;
 	      break;
 	    default:
 	      throw new Error("Unknown order of iteration.");
+	  }
+
+	  var sourceRoot = this.sourceRoot;
+	  mappings.map(function (mapping) {
+	    var source = mapping.source === null ? null : this._sources.at(mapping.source);
+	    if (source != null && sourceRoot != null) {
+	      source = util.join(sourceRoot, source);
 	    }
-
-	    var sourceRoot = this.sourceRoot;
-	    mappings.map(function (mapping) {
-	      var source = mapping.source === null ? null : this._sources.at(mapping.source);
-	      if (source != null && sourceRoot != null) {
-	        source = util.join(sourceRoot, source);
-	      }
-	      return {
-	        source: source,
-	        generatedLine: mapping.generatedLine,
-	        generatedColumn: mapping.generatedColumn,
-	        originalLine: mapping.originalLine,
-	        originalColumn: mapping.originalColumn,
-	        name: mapping.name === null ? null : this._names.at(mapping.name)
-	      };
-	    }, this).forEach(aCallback, context);
-	  };
+	    return {
+	      source: source,
+	      generatedLine: mapping.generatedLine,
+	      generatedColumn: mapping.generatedColumn,
+	      originalLine: mapping.originalLine,
+	      originalColumn: mapping.originalColumn,
+	      name: mapping.name === null ? null : this._names.at(mapping.name)
+	    };
+	  }, this).forEach(aCallback, context);
+	};
 
 	/**
 	 * Returns all generated line and column information for the original source,
 	 * line, and column provided. If no column is provided, returns all mappings
 	 * corresponding to a either the line we are searching for or the next
 	 * closest line that has any mappings. Otherwise, returns all mappings
 	 * corresponding to the given line and either the column we are searching for
 	 * or the next closest column that has any offsets.
@@ -2337,88 +2276,80 @@ return /******/ (function(modules) { // 
 	 *   - line: The line number in the original source.
 	 *   - column: Optional. the column number in the original source.
 	 *
 	 * and an array of objects is returned, each with the following properties:
 	 *
 	 *   - line: The line number in the generated source, or null.
 	 *   - column: The column number in the generated source, or null.
 	 */
-	SourceMapConsumer.prototype.allGeneratedPositionsFor =
-	  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
-	    var line = util.getArg(aArgs, 'line');
-
-	    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
-	    // returns the index of the closest mapping less than the needle. By
-	    // setting needle.originalColumn to 0, we thus find the last mapping for
-	    // the given line, provided such a mapping exists.
-	    var needle = {
-	      source: util.getArg(aArgs, 'source'),
-	      originalLine: line,
-	      originalColumn: util.getArg(aArgs, 'column', 0)
-	    };
-
-	    if (this.sourceRoot != null) {
-	      needle.source = util.relative(this.sourceRoot, needle.source);
-	    }
-	    if (!this._sources.has(needle.source)) {
-	      return [];
-	    }
-	    needle.source = this._sources.indexOf(needle.source);
-
-	    var mappings = [];
-
-	    var index = this._findMapping(needle,
-	                                  this._originalMappings,
-	                                  "originalLine",
-	                                  "originalColumn",
-	                                  util.compareByOriginalPositions,
-	                                  binarySearch.LEAST_UPPER_BOUND);
-	    if (index >= 0) {
-	      var mapping = this._originalMappings[index];
-
-	      if (aArgs.column === undefined) {
-	        var originalLine = mapping.originalLine;
-
-	        // Iterate until either we run out of mappings, or we run into
-	        // a mapping for a different line than the one we found. Since
-	        // mappings are sorted, this is guaranteed to find all mappings for
-	        // the line we found.
-	        while (mapping && mapping.originalLine === originalLine) {
-	          mappings.push({
-	            line: util.getArg(mapping, 'generatedLine', null),
-	            column: util.getArg(mapping, 'generatedColumn', null),
-	            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
-	          });
-
-	          mapping = this._originalMappings[++index];
-	        }
-	      } else {
-	        var originalColumn = mapping.originalColumn;
-
-	        // Iterate until either we run out of mappings, or we run into
-	        // a mapping for a different line than the one we were searching for.
-	        // Since mappings are sorted, this is guaranteed to find all mappings for
-	        // the line we are searching for.
-	        while (mapping &&
-	               mapping.originalLine === line &&
-	               mapping.originalColumn == originalColumn) {
-	          mappings.push({
-	            line: util.getArg(mapping, 'generatedLine', null),
-	            column: util.getArg(mapping, 'generatedColumn', null),
-	            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
-	          });
-
-	          mapping = this._originalMappings[++index];
-	        }
+	SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+	  var line = util.getArg(aArgs, 'line');
+
+	  // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+	  // returns the index of the closest mapping less than the needle. By
+	  // setting needle.originalColumn to 0, we thus find the last mapping for
+	  // the given line, provided such a mapping exists.
+	  var needle = {
+	    source: util.getArg(aArgs, 'source'),
+	    originalLine: line,
+	    originalColumn: util.getArg(aArgs, 'column', 0)
+	  };
+
+	  if (this.sourceRoot != null) {
+	    needle.source = util.relative(this.sourceRoot, needle.source);
+	  }
+	  if (!this._sources.has(needle.source)) {
+	    return [];
+	  }
+	  needle.source = this._sources.indexOf(needle.source);
+
+	  var mappings = [];
+
+	  var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND);
+	  if (index >= 0) {
+	    var mapping = this._originalMappings[index];
+
+	    if (aArgs.column === undefined) {
+	      var originalLine = mapping.originalLine;
+
+	      // Iterate until either we run out of mappings, or we run into
+	      // a mapping for a different line than the one we found. Since
+	      // mappings are sorted, this is guaranteed to find all mappings for
+	      // the line we found.
+	      while (mapping && mapping.originalLine === originalLine) {
+	        mappings.push({
+	          line: util.getArg(mapping, 'generatedLine', null),
+	          column: util.getArg(mapping, 'generatedColumn', null),
+	          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+	        });
+
+	        mapping = this._originalMappings[++index];
+	      }
+	    } else {
+	      var originalColumn = mapping.originalColumn;
+
+	      // Iterate until either we run out of mappings, or we run into
+	      // a mapping for a different line than the one we were searching for.
+	      // Since mappings are sorted, this is guaranteed to find all mappings for
+	      // the line we are searching for.
+	      while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {
+	        mappings.push({
+	          line: util.getArg(mapping, 'generatedLine', null),
+	          column: util.getArg(mapping, 'generatedColumn', null),
+	          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+	        });
+
+	        mapping = this._originalMappings[++index];
 	      }
 	    }
-
-	    return mappings;
-	  };
+	  }
+
+	  return mappings;
+	};
 
 	exports.SourceMapConsumer = SourceMapConsumer;
 
 	/**
 	 * A BasicSourceMapConsumer instance represents a parsed source map which we can
 	 * query for information about the original file positions by giving it a file
 	 * position in the generated source.
 	 *
@@ -2464,31 +2395,28 @@ return /******/ (function(modules) { // 
 	  var file = util.getArg(sourceMap, 'file', null);
 
 	  // Once again, Sass deviates from the spec and supplies the version as a
 	  // string rather than a number, so we use loose equality checking here.
 	  if (version != this._version) {
 	    throw new Error('Unsupported version: ' + version);
 	  }
 
-	  sources = sources
-	    .map(String)
-	    // Some source maps produce relative source paths like "./foo.js" instead of
-	    // "foo.js".  Normalize these first so that future comparisons will succeed.
-	    // See bugzil.la/1090768.
-	    .map(util.normalize)
-	    // Always ensure that absolute sources are internally stored relative to
-	    // the source root, if the source root is absolute. Not doing this would
-	    // be particularly problematic when the source root is a prefix of the
-	    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
-	    .map(function (source) {
-	      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
-	        ? util.relative(sourceRoot, source)
-	        : source;
-	    });
+	  sources = sources.map(String)
+	  // Some source maps produce relative source paths like "./foo.js" instead of
+	  // "foo.js".  Normalize these first so that future comparisons will succeed.
+	  // See bugzil.la/1090768.
+	  .map(util.normalize)
+	  // Always ensure that absolute sources are internally stored relative to
+	  // the source root, if the source root is absolute. Not doing this would
+	  // be particularly problematic when the source root is a prefix of the
+	  // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+	  .map(function (source) {
+	    return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;
+	  });
 
 	  // Pass `true` below to allow duplicate names and sources. While source maps
 	  // are intended to be compressed and deduplicated, the TypeScript compiler
 	  // sometimes generates source maps with duplicates in them. See Github issue
 	  // #72 and bugzil.la/889492.
 	  this._names = ArraySet.fromArray(names.map(String), true);
 	  this._sources = ArraySet.fromArray(sources, true);
 
@@ -2503,61 +2431,59 @@ return /******/ (function(modules) { // 
 
 	/**
 	 * Create a BasicSourceMapConsumer from a SourceMapGenerator.
 	 *
 	 * @param SourceMapGenerator aSourceMap
 	 *        The source map that will be consumed.
 	 * @returns BasicSourceMapConsumer
 	 */
-	BasicSourceMapConsumer.fromSourceMap =
-	  function SourceMapConsumer_fromSourceMap(aSourceMap) {
-	    var smc = Object.create(BasicSourceMapConsumer.prototype);
-
-	    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
-	    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
-	    smc.sourceRoot = aSourceMap._sourceRoot;
-	    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
-	                                                            smc.sourceRoot);
-	    smc.file = aSourceMap._file;
-
-	    // Because we are modifying the entries (by converting string sources and
-	    // names to indices into the sources and names ArraySets), we have to make
-	    // a copy of the entry or else bad things happen. Shared mutable state
-	    // strikes again! See github issue #191.
-
-	    var generatedMappings = aSourceMap._mappings.toArray().slice();
-	    var destGeneratedMappings = smc.__generatedMappings = [];
-	    var destOriginalMappings = smc.__originalMappings = [];
-
-	    for (var i = 0, length = generatedMappings.length; i < length; i++) {
-	      var srcMapping = generatedMappings[i];
-	      var destMapping = new Mapping;
-	      destMapping.generatedLine = srcMapping.generatedLine;
-	      destMapping.generatedColumn = srcMapping.generatedColumn;
-
-	      if (srcMapping.source) {
-	        destMapping.source = sources.indexOf(srcMapping.source);
-	        destMapping.originalLine = srcMapping.originalLine;
-	        destMapping.originalColumn = srcMapping.originalColumn;
-
-	        if (srcMapping.name) {
-	          destMapping.name = names.indexOf(srcMapping.name);
-	        }
-
-	        destOriginalMappings.push(destMapping);
+	BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) {
+	  var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+	  var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+	  var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+	  smc.sourceRoot = aSourceMap._sourceRoot;
+	  smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);
+	  smc.file = aSourceMap._file;
+
+	  // Because we are modifying the entries (by converting string sources and
+	  // names to indices into the sources and names ArraySets), we have to make
+	  // a copy of the entry or else bad things happen. Shared mutable state
+	  // strikes again! See github issue #191.
+
+	  var generatedMappings = aSourceMap._mappings.toArray().slice();
+	  var destGeneratedMappings = smc.__generatedMappings = [];
+	  var destOriginalMappings = smc.__originalMappings = [];
+
+	  for (var i = 0, length = generatedMappings.length; i < length; i++) {
+	    var srcMapping = generatedMappings[i];
+	    var destMapping = new Mapping();
+	    destMapping.generatedLine = srcMapping.generatedLine;
+	    destMapping.generatedColumn = srcMapping.generatedColumn;
+
+	    if (srcMapping.source) {
+	      destMapping.source = sources.indexOf(srcMapping.source);
+	      destMapping.originalLine = srcMapping.originalLine;
+	      destMapping.originalColumn = srcMapping.originalColumn;
+
+	      if (srcMapping.name) {
+	        destMapping.name = names.indexOf(srcMapping.name);
 	      }
 
-	      destGeneratedMappings.push(destMapping);
+	      destOriginalMappings.push(destMapping);
 	    }
 
-	    quickSort(smc.__originalMappings, util.compareByOriginalPositions);
-
-	    return smc;
-	  };
+	    destGeneratedMappings.push(destMapping);
+	  }
+
+	  quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+	  return smc;
+	};
 
 	/**
 	 * The version of the source mapping spec that we are consuming.
 	 */
 	BasicSourceMapConsumer.prototype._version = 3;
 
 	/**
 	 * The list of original sources.
@@ -2582,170 +2508,162 @@ return /******/ (function(modules) { // 
 	  this.name = null;
 	}
 
 	/**
 	 * Parse the mappings in a string in to a data structure which we can easily
 	 * query (the ordered arrays in the `this.__generatedMappings` and
 	 * `this.__originalMappings` properties).
 	 */
-	BasicSourceMapConsumer.prototype._parseMappings =
-	  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
-	    var generatedLine = 1;
-	    var previousGeneratedColumn = 0;
-	    var previousOriginalLine = 0;
-	    var previousOriginalColumn = 0;
-	    var previousSource = 0;
-	    var previousName = 0;
-	    var length = aStr.length;
-	    var index = 0;
-	    var cachedSegments = {};
-	    var temp = {};
-	    var originalMappings = [];
-	    var generatedMappings = [];
-	    var mapping, str, segment, end, value;
-
-	    while (index < length) {
-	      if (aStr.charAt(index) === ';') {
-	        generatedLine++;
-	        index++;
-	        previousGeneratedColumn = 0;
-	      }
-	      else if (aStr.charAt(index) === ',') {
-	        index++;
-	      }
-	      else {
-	        mapping = new Mapping();
-	        mapping.generatedLine = generatedLine;
-
-	        // Because each offset is encoded relative to the previous one,
-	        // many segments often have the same encoding. We can exploit this
-	        // fact by caching the parsed variable length fields of each segment,
-	        // allowing us to avoid a second parse if we encounter the same
-	        // segment again.
-	        for (end = index; end < length; end++) {
-	          if (this._charIsMappingSeparator(aStr, end)) {
-	            break;
-	          }
-	        }
-	        str = aStr.slice(index, end);
-
-	        segment = cachedSegments[str];
-	        if (segment) {
-	          index += str.length;
-	        } else {
-	          segment = [];
-	          while (index < end) {
-	            base64VLQ.decode(aStr, index, temp);
-	            value = temp.value;
-	            index = temp.rest;
-	            segment.push(value);
-	          }
-
-	          if (segment.length === 2) {
-	            throw new Error('Found a source, but no line and column');
-	          }
-
-	          if (segment.length === 3) {
-	            throw new Error('Found a source and line, but no column');
-	          }
-
-	          cachedSegments[str] = segment;
-	        }
-
-	        // Generated column.
-	        mapping.generatedColumn = previousGeneratedColumn + segment[0];
-	        previousGeneratedColumn = mapping.generatedColumn;
-
-	        if (segment.length > 1) {
-	          // Original source.
-	          mapping.source = previousSource + segment[1];
-	          previousSource += segment[1];
-
-	          // Original line.
-	          mapping.originalLine = previousOriginalLine + segment[2];
-	          previousOriginalLine = mapping.originalLine;
-	          // Lines are stored 0-based
-	          mapping.originalLine += 1;
-
-	          // Original column.
-	          mapping.originalColumn = previousOriginalColumn + segment[3];
-	          previousOriginalColumn = mapping.originalColumn;
-
-	          if (segment.length > 4) {
-	            // Original name.
-	            mapping.name = previousName + segment[4];
-	            previousName += segment[4];
-	          }
-	        }
-
-	        generatedMappings.push(mapping);
-	        if (typeof mapping.originalLine === 'number') {
-	          originalMappings.push(mapping);
+	BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+	  var generatedLine = 1;
+	  var previousGeneratedColumn = 0;
+	  var previousOriginalLine = 0;
+	  var previousOriginalColumn = 0;
+	  var previousSource = 0;
+	  var previousName = 0;
+	  var length = aStr.length;
+	  var index = 0;
+	  var cachedSegments = {};
+	  var temp = {};
+	  var originalMappings = [];
+	  var generatedMappings = [];
+	  var mapping, str, segment, end, value;
+
+	  while (index < length) {
+	    if (aStr.charAt(index) === ';') {
+	      generatedLine++;
+	      index++;
+	      previousGeneratedColumn = 0;
+	    } else if (aStr.charAt(index) === ',') {
+	      index++;
+	    } else {
+	      mapping = new Mapping();
+	      mapping.generatedLine = generatedLine;
+
+	      // Because each offset is encoded relative to the previous one,
+	      // many segments often have the same encoding. We can exploit this
+	      // fact by caching the parsed variable length fields of each segment,
+	      // allowing us to avoid a second parse if we encounter the same
+	      // segment again.
+	      for (end = index; end < length; end++) {
+	        if (this._charIsMappingSeparator(aStr, end)) {
+	          break;
 	        }
 	      }
+	      str = aStr.slice(index, end);
+
+	      segment = cachedSegments[str];
+	      if (segment) {
+	        index += str.length;
+	      } else {
+	        segment = [];
+	        while (index < end) {
+	          base64VLQ.decode(aStr, index, temp);
+	          value = temp.value;
+	          index = temp.rest;
+	          segment.push(value);
+	        }
+
+	        if (segment.length === 2) {
+	          throw new Error('Found a source, but no line and column');
+	        }
+
+	        if (segment.length === 3) {
+	          throw new Error('Found a source and line, but no column');
+	        }
+
+	        cachedSegments[str] = segment;
+	      }
+
+	      // Generated column.
+	      mapping.generatedColumn = previousGeneratedColumn + segment[0];
+	      previousGeneratedColumn = mapping.generatedColumn;
+
+	      if (segment.length > 1) {
+	        // Original source.
+	        mapping.source = previousSource + segment[1];
+	        previousSource += segment[1];
+
+	        // Original line.
+	        mapping.originalLine = previousOriginalLine + segment[2];
+	        previousOriginalLine = mapping.originalLine;
+	        // Lines are stored 0-based
+	        mapping.originalLine += 1;
+
+	        // Original column.
+	        mapping.originalColumn = previousOriginalColumn + segment[3];
+	        previousOriginalColumn = mapping.originalColumn;
+
+	        if (segment.length > 4) {
+	          // Original name.
+	          mapping.name = previousName + segment[4];
+	          previousName += segment[4];
+	        }
+	      }
+
+	      generatedMappings.push(mapping);
+	      if (typeof mapping.originalLine === 'number') {
+	        originalMappings.push(mapping);
+	      }
 	    }
-
-	    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
-	    this.__generatedMappings = generatedMappings;
-
-	    quickSort(originalMappings, util.compareByOriginalPositions);
-	    this.__originalMappings = originalMappings;
-	  };
+	  }
+
+	  quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+	  this.__generatedMappings = generatedMappings;
+
+	  quickSort(originalMappings, util.compareByOriginalPositions);
+	  this.__originalMappings = originalMappings;
+	};
 
 	/**
 	 * Find the mapping that best matches the hypothetical "needle" mapping that
 	 * we are searching for in the given "haystack" of mappings.
 	 */
-	BasicSourceMapConsumer.prototype._findMapping =
-	  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
-	                                         aColumnName, aComparator, aBias) {
-	    // To return the position we are searching for, we must first find the
-	    // mapping for the given position and then return the opposite position it
-	    // points to. Because the mappings are sorted, we can use binary search to
-	    // find the best mapping.
-
-	    if (aNeedle[aLineName] <= 0) {
-	      throw new TypeError('Line must be greater than or equal to 1, got '
-	                          + aNeedle[aLineName]);
-	    }
-	    if (aNeedle[aColumnName] < 0) {
-	      throw new TypeError('Column must be greater than or equal to 0, got '
-	                          + aNeedle[aColumnName]);
-	    }
-
-	    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
-	  };
+	BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {
+	  // To return the position we are searching for, we must first find the
+	  // mapping for the given position and then return the opposite position it
+	  // points to. Because the mappings are sorted, we can use binary search to
+	  // find the best mapping.
+
+	  if (aNeedle[aLineName] <= 0) {
+	    throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]);
+	  }
+	  if (aNeedle[aColumnName] < 0) {
+	    throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]);
+	  }
+
+	  return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+	};
 
 	/**
 	 * Compute the last column for each generated mapping. The last column is
 	 * inclusive.
 	 */
-	BasicSourceMapConsumer.prototype.computeColumnSpans =
-	  function SourceMapConsumer_computeColumnSpans() {
-	    for (var index = 0; index < this._generatedMappings.length; ++index) {
-	      var mapping = this._generatedMappings[index];
-
-	      // Mappings do not contain a field for the last generated columnt. We
-	      // can come up with an optimistic estimate, however, by assuming that
-	      // mappings are contiguous (i.e. given two consecutive mappings, the
-	      // first mapping ends where the second one starts).
-	      if (index + 1 < this._generatedMappings.length) {
-	        var nextMapping = this._generatedMappings[index + 1];
-
-	        if (mapping.generatedLine === nextMapping.generatedLine) {
-	          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
-	          continue;
-	        }
+	BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {
+	  for (var index = 0; index < this._generatedMappings.length; ++index) {
+	    var mapping = this._generatedMappings[index];
+
+	    // Mappings do not contain a field for the last generated columnt. We
+	    // can come up with an optimistic estimate, however, by assuming that
+	    // mappings are contiguous (i.e. given two consecutive mappings, the
+	    // first mapping ends where the second one starts).
+	    if (index + 1 < this._generatedMappings.length) {
+	      var nextMapping = this._generatedMappings[index + 1];
+
+	      if (mapping.generatedLine === nextMapping.generatedLine) {
+	        mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+	        continue;
 	      }
-
-	      // The last mapping for each line spans the entire line.
-	      mapping.lastGeneratedColumn = Infinity;
 	    }
-	  };
+
+	    // The last mapping for each line spans the entire line.
+	    mapping.lastGeneratedColumn = Infinity;
+	  }
+	};
 
 	/**
 	 * Returns the original source, line, and column information for the generated
 	 * source's line and column positions provided. The only argument is an object
 	 * with the following properties:
 	 *
 	 *   - line: The line number in the generated source.
 	 *   - column: The column number in the generated source.
@@ -2757,126 +2675,113 @@ return /******/ (function(modules) { // 
 	 *
 	 * and an object is returned with the following properties:
 	 *
 	 *   - source: The original source file, or null.
 	 *   - line: The line number in the original source, or null.
 	 *   - column: The column number in the original source, or null.
 	 *   - name: The original identifier, or null.
 	 */
-	BasicSourceMapConsumer.prototype.originalPositionFor =
-	  function SourceMapConsumer_originalPositionFor(aArgs) {
-	    var needle = {
-	      generatedLine: util.getArg(aArgs, 'line'),
-	      generatedColumn: util.getArg(aArgs, 'column')
-	    };
-
-	    var index = this._findMapping(
-	      needle,
-	      this._generatedMappings,
-	      "generatedLine",
-	      "generatedColumn",
-	      util.compareByGeneratedPositionsDeflated,
-	      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
-	    );
-
-	    if (index >= 0) {
-	      var mapping = this._generatedMappings[index];
-
-	      if (mapping.generatedLine === needle.generatedLine) {
-	        var source = util.getArg(mapping, 'source', null);
-	        if (source !== null) {
-	          source = this._sources.at(source);
-	          if (this.sourceRoot != null) {
-	            source = util.join(this.sourceRoot, source);
-	          }
+	BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {
+	  var needle = {
+	    generatedLine: util.getArg(aArgs, 'line'),
+	    generatedColumn: util.getArg(aArgs, 'column')
+	  };
+
+	  var index = this._findMapping(needle, this._generatedMappings, "generatedLine", "generatedColumn", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));
+
+	  if (index >= 0) {
+	    var mapping = this._generatedMappings[index];
+
+	    if (mapping.generatedLine === needle.generatedLine) {
+	      var source = util.getArg(mapping, 'source', null);
+	      if (source !== null) {
+	        source = this._sources.at(source);
+	        if (this.sourceRoot != null) {
+	          source = util.join(this.sourceRoot, source);
 	        }
-	        var name = util.getArg(mapping, 'name', null);
-	        if (name !== null) {
-	          name = this._names.at(name);
-	        }
-	        return {
-	          source: source,
-	          line: util.getArg(mapping, 'originalLine', null),
-	          column: util.getArg(mapping, 'originalColumn', null),
-	          name: name
-	        };
+	      }
+	      var name = util.getArg(mapping, 'name', null);
+	      if (name !== null) {
+	        name = this._names.at(name);
 	      }
+	      return {
+	        source: source,
+	        line: util.getArg(mapping, 'originalLine', null),
+	        column: util.getArg(mapping, 'originalColumn', null),
+	        name: name
+	      };
 	    }
-
-	    return {
-	      source: null,
-	      line: null,
-	      column: null,
-	      name: null
-	    };
+	  }
+
+	  return {
+	    source: null,
+	    line: null,
+	    column: null,
+	    name: null
 	  };
+	};
 
 	/**
 	 * Return true if we have the source content for every source in the source
 	 * map, false otherwise.
 	 */
-	BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
-	  function BasicSourceMapConsumer_hasContentsOfAllSources() {
-	    if (!this.sourcesContent) {
-	      return false;
-	    }
-	    return this.sourcesContent.length >= this._sources.size() &&
-	      !this.sourcesContent.some(function (sc) { return sc == null; });
-	  };
+	BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {
+	  if (!this.sourcesContent) {
+	    return false;
+	  }
+	  return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) {
+	    return sc == null;
+	  });
+	};
 
 	/**
 	 * Returns the original source content. The only argument is the url of the
 	 * original source file. Returns null if no original source content is
 	 * available.
 	 */
-	BasicSourceMapConsumer.prototype.sourceContentFor =
-	  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
-	    if (!this.sourcesContent) {
-	      return null;
-	    }
-
-	    if (this.sourceRoot != null) {
-	      aSource = util.relative(this.sourceRoot, aSource);
-	    }
-
-	    if (this._sources.has(aSource)) {
-	      return this.sourcesContent[this._sources.indexOf(aSource)];
+	BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+	  if (!this.sourcesContent) {
+	    return null;
+	  }
+
+	  if (this.sourceRoot != null) {
+	    aSource = util.relative(this.sourceRoot, aSource);
+	  }
+
+	  if (this._sources.has(aSource)) {
+	    return this.sourcesContent[this._sources.indexOf(aSource)];
+	  }
+
+	  var url;
+	  if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {
+	    // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+	    // many users. We can help them out when they expect file:// URIs to
+	    // behave like it would if they were running a local HTTP server. See
+	    // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+	    var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+	    if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) {
+	      return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];
 	    }
 
-	    var url;
-	    if (this.sourceRoot != null
-	        && (url = util.urlParse(this.sourceRoot))) {
-	      // XXX: file:// URIs and absolute paths lead to unexpected behavior for
-	      // many users. We can help them out when they expect file:// URIs to
-	      // behave like it would if they were running a local HTTP server. See
-	      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
-	      var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
-	      if (url.scheme == "file"
-	          && this._sources.has(fileUriAbsPath)) {
-	        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
-	      }
-
-	      if ((!url.path || url.path == "/")
-	          && this._sources.has("/" + aSource)) {
-	        return this.sourcesContent[this._sources.indexOf("/" + aSource)];
-	      }
+	    if ((!url.path || url.path == "/") && this._sources.has("/" + aSource)) {
+	      return this.sourcesContent[this._sources.indexOf("/" + aSource)];
 	    }
-
-	    // This function is used recursively from
-	    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
-	    // don't want to throw if we can't find the source - we just want to
-	    // return null, so we provide a flag to exit gracefully.
-	    if (nullOnMissing) {
-	      return null;
-	    }
-	    else {
-	      throw new Error('"' + aSource + '" is not in the SourceMap.');
-	    }
-	  };
+	  }
+
+	  // This function is used recursively from
+	  // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+	  // don't want to throw if we can't find the source - we just want to
+	  // return null, so we provide a flag to exit gracefully.
+	  if (nullOnMissing) {
+	    return null;
+	  } else {
+	    throw new Error('"' + aSource + '" is not in the SourceMap.');
+	  }
+	};
 
 	/**
 	 * Returns the generated line and column information for the original source,
 	 * line, and column positions provided. The only argument is an object with
 	 * the following properties:
 	 *
 	 *   - source: The filename of the original source.
 	 *   - line: The line number in the original source.
@@ -2887,65 +2792,57 @@ return /******/ (function(modules) { // 
 	 *     searching for, respectively, if the exact element cannot be found.
 	 *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
 	 *
 	 * and an object is returned with the following properties:
 	 *
 	 *   - line: The line number in the generated source, or null.
 	 *   - column: The column number in the generated source, or null.
 	 */
-	BasicSourceMapConsumer.prototype.generatedPositionFor =
-	  function SourceMapConsumer_generatedPositionFor(aArgs) {
-	    var source = util.getArg(aArgs, 'source');
-	    if (this.sourceRoot != null) {
-	      source = util.relative(this.sourceRoot, source);
-	    }
-	    if (!this._sources.has(source)) {
-	      return {
-	        line: null,
-	        column: null,
-	        lastColumn: null
-	      };
-	    }
-	    source = this._sources.indexOf(source);
-
-	    var needle = {
-	      source: source,
-	      originalLine: util.getArg(aArgs, 'line'),
-	      originalColumn: util.getArg(aArgs, 'column')
-	    };
-
-	    var index = this._findMapping(
-	      needle,
-	      this._originalMappings,
-	      "originalLine",
-	      "originalColumn",
-	      util.compareByOriginalPositions,
-	      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
-	    );
-
-	    if (index >= 0) {
-	      var mapping = this._originalMappings[index];
-
-	      if (mapping.source === needle.source) {
-	        return {
-	          line: util.getArg(mapping, 'generatedLine', null),
-	          column: util.getArg(mapping, 'generatedColumn', null),
-	          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
-	        };
-	      }
-	    }
-
+	BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {
+	  var source = util.getArg(aArgs, 'source');
+	  if (this.sourceRoot != null) {
+	    source = util.relative(this.sourceRoot, source);
+	  }
+	  if (!this._sources.has(source)) {
 	    return {
 	      line: null,
 	      column: null,
 	      lastColumn: null
 	    };
+	  }
+	  source = this._sources.indexOf(source);
+
+	  var needle = {
+	    source: source,
+	    originalLine: util.getArg(aArgs, 'line'),
+	    originalColumn: util.getArg(aArgs, 'column')
 	  };
 
+	  var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));
+
+	  if (index >= 0) {
+	    var mapping = this._originalMappings[index];
+
+	    if (mapping.source === needle.source) {
+	      return {
+	        line: util.getArg(mapping, 'generatedLine', null),
+	        column: util.getArg(mapping, 'generatedColumn', null),
+	        lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+	      };
+	    }
+	  }
+
+	  return {
+	    line: null,
+	    column: null,
+	    lastColumn: null
+	  };
+	};
+
 	exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
 
 	/**
 	 * An IndexedSourceMapConsumer instance represents a parsed source map which
 	 * we can query for information. It differs from BasicSourceMapConsumer in
 	 * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
 	 * input.
 	 *
@@ -3013,31 +2910,30 @@ return /******/ (function(modules) { // 
 	      // The url field will require support for asynchronicity.
 	      // See https://github.com/mozilla/source-map/issues/16
 	      throw new Error('Support for url field in sections not implemented.');
 	    }
 	    var offset = util.getArg(s, 'offset');
 	    var offsetLine = util.getArg(offset, 'line');
 	    var offsetColumn = util.getArg(offset, 'column');
 
-	    if (offsetLine < lastOffset.line ||
-	        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+	    if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {
 	      throw new Error('Section offsets must be ordered and non-overlapping.');
 	    }
 	    lastOffset = offset;
 
 	    return {
 	      generatedOffset: {
 	        // The offset fields are 0-based, but we use 1-based indices when
 	        // encoding/decoding from VLQ.
 	        generatedLine: offsetLine + 1,
 	        generatedColumn: offsetColumn + 1
 	      },
 	      consumer: new SourceMapConsumer(util.getArg(s, 'map'))
-	    }
+	    };
 	  });
 	}
 
 	IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
 	IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
 
 	/**
 	 * The version of the source mapping spec that we are consuming.
@@ -3069,194 +2965,173 @@ return /******/ (function(modules) { // 
 	 *
 	 * and an object is returned with the following properties:
 	 *
 	 *   - source: The original source file, or null.
 	 *   - line: The line number in the original source, or null.
 	 *   - column: The column number in the original source, or null.
 	 *   - name: The original identifier, or null.
 	 */
-	IndexedSourceMapConsumer.prototype.originalPositionFor =
-	  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
-	    var needle = {
-	      generatedLine: util.getArg(aArgs, 'line'),
-	      generatedColumn: util.getArg(aArgs, 'column')
+	IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+	  var needle = {
+	    generatedLine: util.getArg(aArgs, 'line'),
+	    generatedColumn: util.getArg(aArgs, 'column')
+	  };
+
+	  // Find the section containing the generated position we're trying to map
+	  // to an original position.
+	  var sectionIndex = binarySearch.search(needle, this._sections, function (needle, section) {
+	    var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+	    if (cmp) {
+	      return cmp;
+	    }
+
+	    return needle.generatedColumn - section.generatedOffset.generatedColumn;
+	  });
+	  var section = this._sections[sectionIndex];
+
+	  if (!section) {
+	    return {
+	      source: null,
+	      line: null,
+	      column: null,
+	      name: null
 	    };
-
-	    // Find the section containing the generated position we're trying to map
-	    // to an original position.
-	    var sectionIndex = binarySearch.search(needle, this._sections,
-	      function(needle, section) {
-	        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
-	        if (cmp) {
-	          return cmp;
-	        }
-
-	        return (needle.generatedColumn -
-	                section.generatedOffset.generatedColumn);
-	      });
-	    var section = this._sections[sectionIndex];
-
-	    if (!section) {
-	      return {
-	        source: null,
-	        line: null,
-	        column: null,
-	        name: null
-	      };
-	    }
-
-	    return section.consumer.originalPositionFor({
-	      line: needle.generatedLine -
-	        (section.generatedOffset.generatedLine - 1),
-	      column: needle.generatedColumn -
-	        (section.generatedOffset.generatedLine === needle.generatedLine
-	         ? section.generatedOffset.generatedColumn - 1
-	         : 0),
-	      bias: aArgs.bias
-	    });
-	  };
+	  }
+
+	  return section.consumer.originalPositionFor({
+	    line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),
+	    column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
+	    bias: aArgs.bias
+	  });
+	};
 
 	/**
 	 * Return true if we have the source content for every source in the source
 	 * map, false otherwise.
 	 */
-	IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
-	  function IndexedSourceMapConsumer_hasContentsOfAllSources() {
-	    return this._sections.every(function (s) {
-	      return s.consumer.hasContentsOfAllSources();
-	    });
-	  };
+	IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+	  return this._sections.every(function (s) {
+	    return s.consumer.hasContentsOfAllSources();
+	  });
+	};
 
 	/**
 	 * Returns the original source content. The only argument is the url of the
 	 * original source file. Returns null if no original source content is
 	 * available.
 	 */
-	IndexedSourceMapConsumer.prototype.sourceContentFor =
-	  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
-	    for (var i = 0; i < this._sections.length; i++) {
-	      var section = this._sections[i];
-
-	      var content = section.consumer.sourceContentFor(aSource, true);
-	      if (content) {
-	        return content;
-	      }
+	IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+	  for (var i = 0; i < this._sections.length; i++) {
+	    var section = this._sections[i];
+
+	    var content = section.consumer.sourceContentFor(aSource, true);
+	    if (content) {
+	      return content;
 	    }
-	    if (nullOnMissing) {
-	      return null;
-	    }
-	    else {
-	      throw new Error('"' + aSource + '" is not in the SourceMap.');
-	    }
-	  };
+	  }
+	  if (nullOnMissing) {
+	    return null;
+	  } else {
+	    throw new Error('"' + aSource + '" is not in the SourceMap.');
+	  }
+	};
 
 	/**
 	 * Returns the generated line and column information for the original source,
 	 * line, and column positions provided. The only argument is an object with
 	 * the following properties:
 	 *
 	 *   - source: The filename of the original source.
 	 *   - line: The line number in the original source.
 	 *   - column: The column number in the original source.
 	 *
 	 * and an object is returned with the following properties:
 	 *
 	 *   - line: The line number in the generated source, or null.
 	 *   - column: The column number in the generated source, or null.
 	 */
-	IndexedSourceMapConsumer.prototype.generatedPositionFor =
-	  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
-	    for (var i = 0; i < this._sections.length; i++) {
-	      var section = this._sections[i];
-
-	      // Only consider this section if the requested source is in the list of
-	      // sources of the consumer.
-	      if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
-	        continue;
-	      }
-	      var generatedPosition = section.consumer.generatedPositionFor(aArgs);
-	      if (generatedPosition) {
-	        var ret = {
-	          line: generatedPosition.line +
-	            (section.generatedOffset.generatedLine - 1),
-	          column: generatedPosition.column +
-	            (section.generatedOffset.generatedLine === generatedPosition.line
-	             ? section.generatedOffset.generatedColumn - 1
-	             : 0)
-	        };
-	        return ret;
-	      }
+	IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+	  for (var i = 0; i < this._sections.length; i++) {
+	    var section = this._sections[i];
+
+	    // Only consider this section if the requested source is in the list of
+	    // sources of the consumer.
+	    if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+	      continue;
 	    }
-
-	    return {
-	      line: null,
-	      column: null
-	    };
+	    var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+	    if (generatedPosition) {
+	      var ret = {
+	        line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),
+	        column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)
+	      };
+	      return ret;
+	    }
+	  }
+
+	  return {
+	    line: null,
+	    column: null
 	  };
+	};
 
 	/**
 	 * Parse the mappings in a string in to a data structure which we can easily
 	 * query (the ordered arrays in the `this.__generatedMappings` and
 	 * `this.__originalMappings` properties).
 	 */
-	IndexedSourceMapConsumer.prototype._parseMappings =
-	  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
-	    this.__generatedMappings = [];
-	    this.__originalMappings = [];
-	    for (var i = 0; i < this._sections.length; i++) {
-	      var section = this._sections[i];
-	      var sectionMappings = section.consumer._generatedMappings;
-	      for (var j = 0; j < sectionMappings.length; j++) {
-	        var mapping = sectionMappings[j];
-
-	        var source = section.consumer._sources.at(mapping.source);
-	        if (section.consumer.sourceRoot !== null) {
-	          source = util.join(section.consumer.sourceRoot, source);
-	        }
-	        this._sources.add(source);
-	        source = this._sources.indexOf(source);
-
-	        var name = section.consumer._names.at(mapping.name);
-	        this._names.add(name);
-	        name = this._names.indexOf(name);
-
-	        // The mappings coming from the consumer for the section have
-	        // generated positions relative to the start of the section, so we
-	        // need to offset them to be relative to the start of the concatenated
-	        // generated file.
-	        var adjustedMapping = {
-	          source: source,
-	          generatedLine: mapping.generatedLine +
-	            (section.generatedOffset.generatedLine - 1),
-	          generatedColumn: mapping.generatedColumn +
-	            (section.generatedOffset.generatedLine === mapping.generatedLine
-	            ? section.generatedOffset.generatedColumn - 1
-	            : 0),
-	          originalLine: mapping.originalLine,
-	          originalColumn: mapping.originalColumn,
-	          name: name
-	        };
-
-	        this.__generatedMappings.push(adjustedMapping);
-	        if (typeof adjustedMapping.originalLine === 'number') {
-	          this.__originalMappings.push(adjustedMapping);
-	        }
+	IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+	  this.__generatedMappings = [];
+	  this.__originalMappings = [];
+	  for (var i = 0; i < this._sections.length; i++) {
+	    var section = this._sections[i];
+	    var sectionMappings = section.consumer._generatedMappings;
+	    for (var j = 0; j < sectionMappings.length; j++) {
+	      var mapping = sectionMappings[j];
+
+	      var source = section.consumer._sources.at(mapping.source);
+	      if (section.consumer.sourceRoot !== null) {
+	        source = util.join(section.consumer.sourceRoot, source);
+	      }
+	      this._sources.add(source);
+	      source = this._sources.indexOf(source);
+
+	      var name = section.consumer._names.at(mapping.name);
+	      this._names.add(name);
+	      name = this._names.indexOf(name);
+
+	      // The mappings coming from the consumer for the section have
+	      // generated positions relative to the start of the section, so we
+	      // need to offset them to be relative to the start of the concatenated
+	      // generated file.
+	      var adjustedMapping = {
+	        source: source,
+	        generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),
+	        generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
+	        originalLine: mapping.originalLine,
+	        originalColumn: mapping.originalColumn,
+	        name: name
+	      };
+
+	      this.__generatedMappings.push(adjustedMapping);
+	      if (typeof adjustedMapping.originalLine === 'number') {
+	        this.__originalMappings.push(adjustedMapping);
 	      }
 	    }
-
-	    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
-	    quickSort(this.__originalMappings, util.compareByOriginalPositions);
-	  };
+	  }
+
+	  quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+	  quickSort(this.__originalMappings, util.compareByOriginalPositions);
+	};
 
 	exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
 
-
 /***/ },
-/* 26 */
+/* 19 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -3287,33 +3162,31 @@ return /******/ (function(modules) { // 
 	  //
 	  //   3. We did not find the exact element, and there is no next-closest
 	  //      element than the one we are searching for, so we return -1.
 	  var mid = Math.floor((aHigh - aLow) / 2) + aLow;
 	  var cmp = aCompare(aNeedle, aHaystack[mid], true);
 	  if (cmp === 0) {
 	    // Found the element we are looking for.
 	    return mid;
-	  }
-	  else if (cmp > 0) {
+	  } else if (cmp > 0) {
 	    // Our needle is greater than aHaystack[mid].
 	    if (aHigh - mid > 1) {
 	      // The element is in the upper half.
 	      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
 	    }
 
 	    // The exact needle element was not found in this haystack. Determine if
 	    // we are in termination case (3) or (2) and return the appropriate thing.
 	    if (aBias == exports.LEAST_UPPER_BOUND) {
 	      return aHigh < aHaystack.length ? aHigh : -1;
 	    } else {
 	      return mid;
 	    }
-	  }
-	  else {
+	  } else {
 	    // Our needle is less than aHaystack[mid].
 	    if (mid - aLow > 1) {
 	      // The element is in the lower half.
 	      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
 	    }
 
 	    // we are in termination case (3) or (2) and return the appropriate thing.
 	    if (aBias == exports.LEAST_UPPER_BOUND) {
@@ -3342,18 +3215,17 @@ return /******/ (function(modules) { // 
 	 *     searching for, respectively, if the exact element cannot be found.
 	 *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
 	 */
 	exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
 	  if (aHaystack.length === 0) {
 	    return -1;
 	  }
 
-	  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
-	                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+	  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND);
 	  if (index < 0) {
 	    return -1;
 	  }
 
 	  // We have found either the exact element, or the next-closest element than
 	  // the one we are searching for. However, there may be more than one such
 	  // element. Make sure we always return the smallest of these.
 	  while (index - 1 >= 0) {
@@ -3361,19 +3233,18 @@ return /******/ (function(modules) { // 
 	      break;
 	    }
 	    --index;
 	  }
 
 	  return index;
 	};
 
-
 /***/ },
-/* 27 */
+/* 20 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -3408,17 +3279,17 @@ return /******/ (function(modules) { // 
 	 * Returns a random integer within the range `low .. high` inclusive.
 	 *
 	 * @param {Number} low
 	 *        The lower bound on the range.
 	 * @param {Number} high
 	 *        The upper bound on the range.
 	 */
 	function randomIntInRange(low, high) {
-	  return Math.round(low + (Math.random() * (high - low)));
+	  return Math.round(low + Math.random() * (high - low));
 	}
 
 	/**
 	 * The Quick Sort algorithm.
 	 *
 	 * @param {Array} ary
 	 *        An array to sort.
 	 * @param {function} comparator
@@ -3481,30 +3352,29 @@ return /******/ (function(modules) { // 
 	 *        An array to sort.
 	 * @param {function} comparator
 	 *        Function to use to compare two items.
 	 */
 	exports.quickSort = function (ary, comparator) {
 	  doQuickSort(ary, comparator, 0, ary.length - 1);
 	};
 
-
 /***/ },
-/* 28 */
+/* 21 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var SourceMapGenerator = __webpack_require__(19).SourceMapGenerator;
-	var util = __webpack_require__(22);
+	var SourceMapGenerator = __webpack_require__(12).SourceMapGenerator;
+	var util = __webpack_require__(15);
 
 	// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
 	// operating systems these days (capturing the result).
 	var REGEX_NEWLINE = /(\r?\n)/;
 
 	// Newline character code for charCodeAt() comparisons
 	var NEWLINE_CODE = 10;
 
@@ -3539,166 +3409,150 @@ return /******/ (function(modules) { // 
 	/**
 	 * Creates a SourceNode from generated code and a SourceMapConsumer.
 	 *
 	 * @param aGeneratedCode The generated code
 	 * @param aSourceMapConsumer The SourceMap for the generated code
 	 * @param aRelativePath Optional. The path that relative sources in the
 	 *        SourceMapConsumer should be relative to.
 	 */
-	SourceNode.fromStringWithSourceMap =
-	  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
-	    // The SourceNode we want to fill with the generated code
-	    // and the SourceMap
-	    var node = new SourceNode();
-
-	    // All even indices of this array are one line of the generated code,
-	    // while all odd indices are the newlines between two adjacent lines
-	    // (since `REGEX_NEWLINE` captures its match).
-	    // Processed fragments are removed from this array, by calling `shiftNextLine`.
-	    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
-	    var shiftNextLine = function() {
-	      var lineContents = remainingLines.shift();
-	      // The last line of a file might not have a newline.
-	      var newLine = remainingLines.shift() || "";
-	      return lineContents + newLine;
-	    };
-
-	    // We need to remember the position of "remainingLines"
-	    var lastGeneratedLine = 1, lastGeneratedColumn = 0;
-
-	    // The generate SourceNodes we need a code range.
-	    // To extract it current and last mapping is used.
-	    // Here we store the last mapping.
-	    var lastMapping = null;
-
-	    aSourceMapConsumer.eachMapping(function (mapping) {
-	      if (lastMapping !== null) {
-	        // We add the code from "lastMapping" to "mapping":
-	        // First check if there is a new line in between.
-	        if (lastGeneratedLine < mapping.generatedLine) {
-	          // Associate first line with "lastMapping"
-	          addMappingWithCode(lastMapping, shiftNextLine());
-	          lastGeneratedLine++;
-	          lastGeneratedColumn = 0;
-	          // The remaining code is added without mapping
-	        } else {
-	          // There is no new line in between.
-	          // Associate the code between "lastGeneratedColumn" and
-	          // "mapping.generatedColumn" with "lastMapping"
-	          var nextLine = remainingLines[0];
-	          var code = nextLine.substr(0, mapping.generatedColumn -
-	                                        lastGeneratedColumn);
-	          remainingLines[0] = nextLine.substr(mapping.generatedColumn -
-	                                              lastGeneratedColumn);
-	          lastGeneratedColumn = mapping.generatedColumn;
-	          addMappingWithCode(lastMapping, code);
-	          // No more remaining code, continue
-	          lastMapping = mapping;
-	          return;
-	        }
-	      }
-	      // We add the generated code until the first mapping
-	      // to the SourceNode without any mapping.
-	      // Each line is added as separate string.
-	      while (lastGeneratedLine < mapping.generatedLine) {
-	        node.add(shiftNextLine());
+	SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+	  // The SourceNode we want to fill with the generated code
+	  // and the SourceMap
+	  var node = new SourceNode();
+
+	  // All even indices of this array are one line of the generated code,
+	  // while all odd indices are the newlines between two adjacent lines
+	  // (since `REGEX_NEWLINE` captures its match).
+	  // Processed fragments are removed from this array, by calling `shiftNextLine`.
+	  var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+	  var shiftNextLine = function () {
+	    var lineContents = remainingLines.shift();
+	    // The last line of a file might not have a newline.
+	    var newLine = remainingLines.shift() || "";
+	    return lineContents + newLine;
+	  };
+
+	  // We need to remember the position of "remainingLines"
+	  var lastGeneratedLine = 1,
+	      lastGeneratedColumn = 0;
+
+	  // The generate SourceNodes we need a code range.
+	  // To extract it current and last mapping is used.
+	  // Here we store the last mapping.
+	  var lastMapping = null;
+
+	  aSourceMapConsumer.eachMapping(function (mapping) {
+	    if (lastMapping !== null) {
+	      // We add the code from "lastMapping" to "mapping":
+	      // First check if there is a new line in between.
+	      if (lastGeneratedLine < mapping.generatedLine) {
+	        // Associate first line with "lastMapping"
+	        addMappingWithCode(lastMapping, shiftNextLine());
 	        lastGeneratedLine++;
-	      }
-	      if (lastGeneratedColumn < mapping.generatedColumn) {
+	        lastGeneratedColumn = 0;
+	        // The remaining code is added without mapping
+	      } else {
+	        // There is no new line in between.
+	        // Associate the code between "lastGeneratedColumn" and
+	        // "mapping.generatedColumn" with "lastMapping"
 	        var nextLine = remainingLines[0];
-	        node.add(nextLine.substr(0, mapping.generatedColumn));
-	        remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+	        var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);
+	        remainingLines[0] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);
 	        lastGeneratedColumn = mapping.generatedColumn;
-	      }
-	      lastMapping = mapping;
-	    }, this);
-	    // We have processed all mappings.
-	    if (remainingLines.length > 0) {
-	      if (lastMapping) {
-	        // Associate the remaining code in the current line with "lastMapping"
-	        addMappingWithCode(lastMapping, shiftNextLine());
-	      }
-	      // and add the remaining lines without any mapping
-	      node.add(remainingLines.join(""));
-	    }
-
-	    // Copy sourcesContent into SourceNode
-	    aSourceMapConsumer.sources.forEach(function (sourceFile) {
-	      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-	      if (content != null) {
-	        if (aRelativePath != null) {
-	          sourceFile = util.join(aRelativePath, sourceFile);
-	        }
-	        node.setSourceContent(sourceFile, content);
-	      }
-	    });
-
-	    return node;
-
-	    function addMappingWithCode(mapping, code) {
-	      if (mapping === null || mapping.source === undefined) {
-	        node.add(code);
-	      } else {
-	        var source = aRelativePath
-	          ? util.join(aRelativePath, mapping.source)
-	          : mapping.source;
-	        node.add(new SourceNode(mapping.originalLine,
-	                                mapping.originalColumn,
-	                                source,
-	                                code,
-	                                mapping.name));
+	        addMappingWithCode(lastMapping, code);
+	        // No more remaining code, continue
+	        lastMapping = mapping;
+	        return;
 	      }
 	    }
-	  };
+	    // We add the generated code until the first mapping
+	    // to the SourceNode without any mapping.
+	    // Each line is added as separate string.
+	    while (lastGeneratedLine < mapping.generatedLine) {
+	      node.add(shiftNextLine());
+	      lastGeneratedLine++;
+	    }
+	    if (lastGeneratedColumn < mapping.generatedColumn) {
+	      var nextLine = remainingLines[0];
+	      node.add(nextLine.substr(0, mapping.generatedColumn));
+	      remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+	      lastGeneratedColumn = mapping.generatedColumn;
+	    }
+	    lastMapping = mapping;
+	  }, this);
+	  // We have processed all mappings.
+	  if (remainingLines.length > 0) {
+	    if (lastMapping) {
+	      // Associate the remaining code in the current line with "lastMapping"
+	      addMappingWithCode(lastMapping, shiftNextLine());
+	    }
+	    // and add the remaining lines without any mapping
+	    node.add(remainingLines.join(""));
+	  }
+
+	  // Copy sourcesContent into SourceNode
+	  aSourceMapConsumer.sources.forEach(function (sourceFile) {
+	    var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+	    if (content != null) {
+	      if (aRelativePath != null) {
+	        sourceFile = util.join(aRelativePath, sourceFile);
+	      }
+	      node.setSourceContent(sourceFile, content);
+	    }
+	  });
+
+	  return node;
+
+	  function addMappingWithCode(mapping, code) {
+	    if (mapping === null || mapping.source === undefined) {
+	      node.add(code);
+	    } else {
+	      var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;
+	      node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name));
+	    }
+	  }
+	};
 
 	/**
 	 * Add a chunk of generated JS to this source node.
 	 *
 	 * @param aChunk A string snippet of generated JS code, another instance of
 	 *        SourceNode, or an array where each member is one of those things.
 	 */
 	SourceNode.prototype.add = function SourceNode_add(aChunk) {
 	  if (Array.isArray(aChunk)) {
 	    aChunk.forEach(function (chunk) {
 	      this.add(chunk);
 	    }, this);
-	  }
-	  else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+	  } else if (aChunk[isSourceNode] || typeof aChunk === "string") {
 	    if (aChunk) {
 	      this.children.push(aChunk);
 	    }
-	  }
-	  else {
-	    throw new TypeError(
-	      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
-	    );
+	  } else {
+	    throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk);
 	  }
 	  return this;
 	};
 
 	/**
 	 * Add a chunk of generated JS to the beginning of this source node.
 	 *
 	 * @param aChunk A string snippet of generated JS code, another instance of
 	 *        SourceNode, or an array where each member is one of those things.
 	 */
 	SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
 	  if (Array.isArray(aChunk)) {
-	    for (var i = aChunk.length-1; i >= 0; i--) {
+	    for (var i = aChunk.length - 1; i >= 0; i--) {
 	      this.prepend(aChunk[i]);
 	    }
-	  }
-	  else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+	  } else if (aChunk[isSourceNode] || typeof aChunk === "string") {
 	    this.children.unshift(aChunk);
-	  }
-	  else {
-	    throw new TypeError(
-	      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
-	    );
+	  } else {
+	    throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk);
 	  }
 	  return this;
 	};
 
 	/**
 	 * Walk over the tree of JS snippets in this node and its children. The
 	 * walking function is called once for each snippet of JS and is passed that
 	 * snippet and the its original associated source's line/column location.
@@ -3706,23 +3560,22 @@ return /******/ (function(modules) { // 
 	 * @param aFn The traversal function.
 	 */
 	SourceNode.prototype.walk = function SourceNode_walk(aFn) {
 	  var chunk;
 	  for (var i = 0, len = this.children.length; i < len; i++) {
 	    chunk = this.children[i];
 	    if (chunk[isSourceNode]) {
 	      chunk.walk(aFn);
-	    }
-	    else {
+	    } else {
 	      if (chunk !== '') {
 	        aFn(chunk, { source: this.source,
-	                     line: this.line,
-	                     column: this.column,
-	                     name: this.name });
+	          line: this.line,
+	          column: this.column,
+	          name: this.name });
 	      }
 	    }
 	  }
 	};
 
 	/**
 	 * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
 	 * each of `this.children`.
@@ -3730,17 +3583,17 @@ return /******/ (function(modules) { // 
 	 * @param aSep The separator.
 	 */
 	SourceNode.prototype.join = function SourceNode_join(aSep) {
 	  var newChildren;
 	  var i;
 	  var len = this.children.length;
 	  if (len > 0) {
 	    newChildren = [];
-	    for (i = 0; i < len-1; i++) {
+	    for (i = 0; i < len - 1; i++) {
 	      newChildren.push(this.children[i]);
 	      newChildren.push(aSep);
 	    }
 	    newChildren.push(this.children[i]);
 	    this.children = newChildren;
 	  }
 	  return this;
 	};
@@ -3751,57 +3604,53 @@ return /******/ (function(modules) { // 
 	 *
 	 * @param aPattern The pattern to replace.
 	 * @param aReplacement The thing to replace the pattern with.
 	 */
 	SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
 	  var lastChild = this.children[this.children.length - 1];
 	  if (lastChild[isSourceNode]) {
 	    lastChild.replaceRight(aPattern, aReplacement);
-	  }
-	  else if (typeof lastChild === 'string') {
+	  } else if (typeof lastChild === 'string') {
 	    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
-	  }
-	  else {
+	  } else {
 	    this.children.push(''.replace(aPattern, aReplacement));
 	  }
 	  return this;
 	};
 
 	/**
 	 * Set the source content for a source file. This will be added to the SourceMapGenerator
 	 * in the sourcesContent field.
 	 *
 	 * @param aSourceFile The filename of the source file
 	 * @param aSourceContent The content of the source file
 	 */
-	SourceNode.prototype.setSourceContent =
-	  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
-	    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
-	  };
+	SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+	  this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+	};
 
 	/**
 	 * Walk over the tree of SourceNodes. The walking function is called for each
 	 * source file content and is passed the filename and source content.
 	 *
 	 * @param aFn The traversal function.
 	 */
-	SourceNode.prototype.walkSourceContents =
-	  function SourceNode_walkSourceContents(aFn) {
-	    for (var i = 0, len = this.children.length; i < len; i++) {
-	      if (this.children[i][isSourceNode]) {
-	        this.children[i].walkSourceContents(aFn);
-	      }
+	SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {
+	  for (var i = 0, len = this.children.length; i < len; i++) {
+	    if (this.children[i][isSourceNode]) {
+	      this.children[i].walkSourceContents(aFn);
 	    }
-
-	    var sources = Object.keys(this.sourceContents);
-	    for (var i = 0, len = sources.length; i < len; i++) {
-	      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
-	    }
-	  };
+	  }
+
+	  var sources = Object.keys(this.sourceContents);
+	  for (var i = 0, len = sources.length; i < len; i++) {
+	    aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+	  }
+	};
 
 	/**
 	 * Return the string representation of this source node. Walks over the tree
 	 * and concatenates all the various snippets together to one string.
 	 */
 	SourceNode.prototype.toString = function SourceNode_toString() {
 	  var str = "";
 	  this.walk(function (chunk) {
@@ -3823,23 +3672,18 @@ return /******/ (function(modules) { // 
 	  var map = new SourceMapGenerator(aArgs);
 	  var sourceMappingActive = false;
 	  var lastOriginalSource = null;
 	  var lastOriginalLine = null;
 	  var lastOriginalColumn = null;
 	  var lastOriginalName = null;
 	  this.walk(function (chunk, original) {
 	    generated.code += chunk;
-	    if (original.source !== null
-	        && original.line !== null
-	        && original.column !== null) {
-	      if(lastOriginalSource !== original.source
-	         || lastOriginalLine !== original.line
-	         || lastOriginalColumn !== original.column
-	         || lastOriginalName !== original.name) {
+	    if (original.source !== null && original.line !== null && original.column !== null) {
+	      if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {
 	        map.addMapping({
 	          source: original.source,
 	          original: {
 	            line: original.line,
 	            column: original.column
 	          },
 	          generated: {
 	            line: generated.line,
@@ -3894,25 +3738,149 @@ return /******/ (function(modules) { // 
 	    map.setSourceContent(sourceFile, sourceContent);
 	  });
 
 	  return { code: generated.code, map: map };
 	};
 
 	exports.SourceNode = SourceNode;
 
-
 /***/ },
-/* 29 */
+/* 22 */
 /***/ function(module, exports) {
 
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 	function assert(condition, message) {
 	  if (!condition) {
 	    throw new Error(`Assertion failure: ${message}`);
 	  }
 	}
 
 	module.exports = assert;
 
+/***/ },
+/* 23 */
+/***/ function(module, exports) {
+
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this
+	 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+	"use strict";
+
+	/**
+	 * SourceMapConsumer for WebAssembly source maps. It transposes columns with
+	 * lines, which allows mapping data to be used with SpiderMonkey Debugger API.
+	 */
+
+	class WasmRemap {
+	  /**
+	   * @param map SourceMapConsumer
+	   */
+	  constructor(map) {
+	    this._map = map;
+	    this.version = map.version;
+	    this.file = map.file;
+	    this._computeColumnSpans = false;
+	  }
+
+	  get sources() {
+	    return this._map.sources;
+	  }
+
+	  get sourceRoot() {
+	    return this._map.sourceRoot;
+	  }
+
+	  /**
+	   * @param url string
+	   */
+	  set sourceRoot(url) {
+	    // important, since sources are using this.
+	    this._map.sourceRoot = url;
+	  }
+
+	  get names() {
+	    return this._map.names;
+	  }
+
+	  get sourcesContent() {
+	    return this._map.sourcesContent;
+	  }
+
+	  get mappings() {
+	    throw new Error("not supported");
+	  }
+
+	  computeColumnSpans() {
+	    this._computeColumnSpans = true;
+	  }
+
+	  originalPositionFor(generatedPosition) {
+	    let result = this._map.originalPositionFor({
+	      line: 1,
+	      column: generatedPosition.line,
+	      bias: generatedPosition.bias
+	    });
+	    return result;
+	  }
+
+	  _remapGeneratedPosition(position) {
+	    let generatedPosition = {
+	      line: position.column,
+	      column: 0
+	    };
+	    if (this._computeColumnSpans) {
+	      generatedPosition.lastColumn = Infinity;
+	    }
+	    return generatedPosition;
+	  }
+
+	  generatedPositionFor(originalPosition) {
+	    let position = this._map.generatedPositionFor(originalPosition);
+	    return this._remapGeneratedPosition(position);
+	  }
+
+	  allGeneratedPositionsFor(originalPosition) {
+	    let positions = this._map.allGeneratedPositionsFor(originalPosition);
+	    return positions.map(position => {
+	      return this._remapGeneratedPosition(position);
+	    });
+	  }
+
+	  hasContentsOfAllSources() {
+	    return this._map.hasContentsOfAllSources();
+	  }
+
+	  sourceContentFor(source, returnNullOnMissing) {
+	    return this._map.sourceContentFor(source, returnNullOnMissing);
+	  }
+
+	  eachMapping(callback, context, order) {
+	    this._map.eachMapping(entry => {
+	      let {
+	        source,
+	        generatedColumn,
+	        originalLine,
+	        originalColumn,
+	        name
+	      } = entry;
+	      callback({
+	        source,
+	        generatedLine: generatedColumn,
+	        generatedColumn: 0,
+	        originalLine,
+	        originalColumn,
+	        name
+	      });
+	    }, context, order);
+	  }
+	}
+
+	exports.WasmRemap = WasmRemap;
+
 /***/ }
 /******/ ])
 });
 ;
\ No newline at end of file