From 33c57f75dca1f1b83f3bc752812ae4374486d1b2 Mon Sep 17 00:00:00 2001 From: Bala Clark Date: Sat, 18 Jul 2015 20:20:02 +0200 Subject: [PATCH] progress bar --- app/comic-book.js | 15 + app/index.js | 46 +- app/view/progress-bar.js | 29 + ...bar.handlebars => progress-bar.handlebars} | 0 dist/comicbook.js | 3782 +++++++---------- dist/comicbook.js.map | 124 +- dist/comicbook.min.js | 5 +- dist/comicbook.min.js.map | 2 +- package.json | 1 + test/comic-book.test.js | 38 +- test/view/progress-bar.test.js | 32 + 11 files changed, 1705 insertions(+), 2369 deletions(-) create mode 100644 app/view/progress-bar.js rename app/view/template/{progressbar.handlebars => progress-bar.handlebars} (100%) create mode 100644 test/view/progress-bar.test.js diff --git a/app/comic-book.js b/app/comic-book.js index 6ac9aca..300728f 100644 --- a/app/comic-book.js +++ b/app/comic-book.js @@ -1,5 +1,6 @@ let EventEmitter = require('events').EventEmitter let LoadIndicator = require('./view/load-indicator') +let ProgressBar = require('./view/progress-bar') class ComicBook extends EventEmitter { @@ -13,12 +14,22 @@ class ComicBook extends EventEmitter { this.pages = new Map() this.loadIndicator = new LoadIndicator() + this.progressBar = new ProgressBar() this.addEventListeners() } addEventListeners () { this.on('preload:start', this.loadIndicator.show.bind(this.loadIndicator)) + this.on('preload:start', this.progressBar.show.bind(this.progressBar)) + this.on('preload:image', this.updateProgressBar.bind(this)) + this.on('preload:finish', this.progressBar.hide.bind(this.progressBar)) + } + + render () { + this.el = document.createElement('div') + this.el.appendChild(this.progressBar.el) + return this } preload () { @@ -43,6 +54,10 @@ class ComicBook extends EventEmitter { }) } + updateProgressBar () { + let percentage = Math.floor((this.pages.size / this.srcs.size) * 100) + this.progressBar.update(percentage) + } } module.exports = ComicBook diff --git a/app/index.js b/app/index.js index e8165ec..1209b76 100644 --- a/app/index.js +++ b/app/index.js @@ -1,30 +1,20 @@ -// let ComicBook = window.ComicBook = require('./comic-book') -let Canvas = require('./view/canvas') -let canvas = new Canvas({ zoomMode: 'fitWidth' }) -/* -let image = new window.Image() -image.onload = () => { - canvas.drawImage(image) - document.body.appendChild(canvas.canvas) -} -image.src = 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_01.jpg' -*/ +let ComicBook = window.ComicBook = require('./comic-book') +let comic = new ComicBook([ + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_00.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_01.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_02.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_03.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_04.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_05.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_06.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_07.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_08.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_09.jpg', + 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_10.jpg' +]) -let testImages = require('../test/data') -let fixtureImages = require('../test/fixture') -let imagediff = require('imagediff') - -testImages.portrait1((testImage) => { - fixtureImages.singlePortrait((fixtureImage) => { - canvas.drawImage(testImage) - - console.log(imagediff.equal(canvas.canvas, fixtureImage)) - - console.log(testImage.width, testImage.height) - console.log(fixtureImage.width, fixtureImage.height) - console.log(canvas.canvas.width, canvas.canvas.height) - - document.body.appendChild(canvas.canvas) - }) -}) +document.addEventListener('DOMContentLoaded', () => { + document.body.appendChild(comic.render().el) + comic.preload() +}, false) diff --git a/app/view/progress-bar.js b/app/view/progress-bar.js new file mode 100644 index 0000000..1a78ae3 --- /dev/null +++ b/app/view/progress-bar.js @@ -0,0 +1,29 @@ +let template = require('./template/progress-bar.handlebars') + +class ProgressBar { + constructor () { + this.createElements() + this.hide() + } + + createElements () { + let el = document.createElement('div') + el.innerHTML = template() + this.el = el.firstChild + this.progressEl = this.el.querySelector('.progressbar-value') + } + + update (percentage) { + this.progressEl.style.width = `${percentage}%` + } + + show () { + this.el.style.display = 'block' + } + + hide () { + this.el.style.display = 'none' + } +} + +module.exports = ProgressBar diff --git a/app/view/template/progressbar.handlebars b/app/view/template/progress-bar.handlebars similarity index 100% rename from app/view/template/progressbar.handlebars rename to app/view/template/progress-bar.handlebars diff --git a/dist/comicbook.js b/dist/comicbook.js index 1dd222c..00fe3eb 100644 --- a/dist/comicbook.js +++ b/dist/comicbook.js @@ -1,48 +1,4 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o { - canvas.drawImage(image) - document.body.appendChild(canvas.canvas) -} -image.src = 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_01.jpg' -*/ - -var testImages = require('../test/data'); -var fixtureImages = require('../test/fixture'); -var imagediff = require('imagediff'); - -testImages.portrait1(function (testImage) { - fixtureImages.singlePortrait(function (fixtureImage) { - canvas.drawImage(testImage); - - console.log(imagediff.equal(canvas.canvas, fixtureImage)); - - console.log(testImage.width, testImage.height); - console.log(fixtureImage.width, fixtureImage.height); - console.log(canvas.canvas.width, canvas.canvas.height); - - document.body.appendChild(canvas.canvas); - }); -}); - -},{"../test/data":32,"../test/fixture":34,"./view/canvas":3,"imagediff":30}],2:[function(require,module,exports){ -"use strict"; - -module.exports = function makeImage(src, cb) { - var image = new window.Image(); - image.onload = function () { - cb(image); - }; - image.src = src; -}; - -},{}],3:[function(require,module,exports){ 'use strict'; var _get = require('babel-runtime/helpers/get')['default']; @@ -53,169 +9,209 @@ var _createClass = require('babel-runtime/helpers/create-class')['default']; var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default']; -var _Object$assign = require('babel-runtime/core-js/object/assign')['default']; +var _Set = require('babel-runtime/core-js/set')['default']; + +var _Map = require('babel-runtime/core-js/map')['default']; var EventEmitter = require('events').EventEmitter; +var LoadIndicator = require('./view/load-indicator'); +var ProgressBar = require('./view/progress-bar'); -// TODO replace -function windowWidth() { - return window.innerWidth; -} +var ComicBook = (function (_EventEmitter) { + _inherits(ComicBook, _EventEmitter); -var Canvas = (function (_EventEmitter) { - _inherits(Canvas, _EventEmitter); + function ComicBook() { + var srcs = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; - function Canvas(options) { - _classCallCheck(this, Canvas); + _classCallCheck(this, ComicBook); - _get(Object.getPrototypeOf(Canvas.prototype), 'constructor', this).call(this); + _get(Object.getPrototypeOf(ComicBook.prototype), 'constructor', this).call(this); - this.options = _Object$assign({ - // fitWidth, fitWindow, manua - zoomMode: 'fitWidth', - // ltr, rtl - readDirection: 'ltr', - // should two pages be rendered at a time? - doublePage: false - }, options); + // requested image srcs + this.srcs = new _Set(srcs); - this.canvas = document.createElement('canvas'); - this.context = this.canvas.getContext('2d'); + // loaded image objects + this.pages = new _Map(); + + this.loadIndicator = new LoadIndicator(); + this.progressBar = new ProgressBar(); + + this.addEventListeners(); } - _createClass(Canvas, [{ - key: 'drawImage', - value: function drawImage(page, page2) { - this.emit('draw:start'); + _createClass(ComicBook, [{ + key: 'addEventListeners', + value: function addEventListeners() { + this.on('preload:start', this.loadIndicator.show.bind(this.loadIndicator)); + this.on('preload:start', this.progressBar.show.bind(this.progressBar)); + this.on('preload:image', this.updateProgressBar.bind(this)); + this.on('preload:finish', this.progressBar.hide.bind(this.progressBar)); + } + }, { + key: 'render', + value: function render() { + this.el = document.createElement('div'); + this.el.appendChild(this.progressBar.el); + return this; + } + }, { + key: 'preload', + value: function preload() { + var self = this; - if (!(page instanceof window.Image) || this.options.doublePage && !(page2 instanceof window.Image)) { - throw new Error('Invalid image'); - } + this.emit('preload:start'); - var zoomScale = undefined; - var offsetW = 0; - var offsetH = 0; - var width = page.width; - var height = page.height; - var doublePageMode = this.options.doublePage; - var canvasWidth = undefined; - var canvasHeight = undefined; - var pageWidth = undefined; - var pageHeight = undefined; + this.srcs.forEach(function (src, pageIndex) { + var image = new window.Image(); - // reset the canvas to stop duplicate pages showing - this.canvas.width = 0; - this.canvas.height = 0; + image.src = src; + image.onload = setImage; - // show double page spreads on a single page - var isDoublePageSpread = page2 && (page.width > page.height || page2.width > page2.height) && doublePageMode; + function setImage() { + self.pages.set(pageIndex, this); + self.emit('preload:image', this); - if (isDoublePageSpread) doublePageMode = false; - - if (doublePageMode) { - - // for double page spreads, factor in the width of both pages - if (typeof page2 === 'object') { - width += page2.width - // if this is the last page and there is no page2, still keep the canvas wide - ; - } else { - width += width; - } - } - - // update the page this.scale if a non manual mode has been chosen - switch (this.options.zoomMode) { - - case 'manual': - document.body.style.overflowX = 'auto'; - zoomScale = doublePageMode ? this.scale * 2 : this.scale; - break; - - case 'fitWidth': - document.body.style.overflowX = 'hidden'; - - // this.scale up if the window is wider than the page, scale down if the window - // is narrower than the page - zoomScale = windowWidth() > width ? (windowWidth() - width) / windowWidth() + 1 : windowWidth() / width; - this.scale = zoomScale; - break; - - case 'fitWindow': - document.body.style.overflowX = 'hidden'; - - var widthScale = windowWidth() > width ? (windowWidth() - width) / windowWidth() + 1 // scale up if the window is wider than the page - : windowWidth() / width; // scale down if the window is narrower than the page - var windowHeight = window.innerHeight; - var heightScale = windowHeight > height ? (windowHeight - height) / windowHeight + 1 // scale up if the window is wider than the page - : windowHeight / height; // scale down if the window is narrower than the page - - zoomScale = widthScale > heightScale ? heightScale : widthScale; - this.scale = zoomScale; - break; - } - - canvasWidth = page.width * zoomScale; - canvasHeight = page.height * zoomScale; - - pageWidth = this.options.zoomMode === 'manual' ? page.width * this.scale : canvasWidth; - pageHeight = this.options.zoomMode === 'manual' ? page.height * this.scale : canvasHeight; - - canvasHeight = pageHeight; - - // make sure the canvas is always at least full screen, even if the page is narrower than the screen - this.canvas.width = canvasWidth < windowWidth() ? windowWidth() : canvasWidth; - this.canvas.height = canvasHeight < window.innerHeight ? window.innerHeight : canvasHeight; - - // always keep pages centered - if (this.options.zoomMode === 'manual' || this.options.zoomMode === 'fitWindow') { - - // work out a horizontal position - if (canvasWidth < windowWidth()) { - offsetW = (windowWidth() - pageWidth) / 2; - if (this.options.doublePage) { - offsetW = offsetW - pageWidth / 2; + if (self.pages.size === self.srcs.size) { + self.emit('preload:finish'); } } - - // work out a vertical position - if (canvasHeight < window.innerHeight) { - offsetH = (window.innerHeight - pageHeight) / 2; - } - } - - // in manga double page mode reverse the page(s) - if (this.options.manga && this.options.doublePage && typeof page2 === 'object') { - var tmpPage = page; - var tmpPage2 = page2; - page = tmpPage2; - page2 = tmpPage; - } - - // draw the page(s) - this.context.drawImage(page, offsetW, offsetH, pageWidth, pageHeight); - if (this.options.doublePage && typeof page2 === 'object') { - this.context.drawImage(page2, pageWidth + offsetW, offsetH, pageWidth, pageHeight); - } - - this.emit('draw:finish'); + }); + } + }, { + key: 'updateProgressBar', + value: function updateProgressBar() { + var percentage = Math.floor(this.pages.size / this.srcs.size * 100); + this.progressBar.update(percentage); } }]); - return Canvas; + return ComicBook; })(EventEmitter); -module.exports = Canvas; +module.exports = ComicBook; -},{"babel-runtime/core-js/object/assign":4,"babel-runtime/helpers/class-call-check":8,"babel-runtime/helpers/create-class":9,"babel-runtime/helpers/get":10,"babel-runtime/helpers/inherits":11,"events":27}],4:[function(require,module,exports){ -module.exports = { "default": require("core-js/library/fn/object/assign"), __esModule: true }; -},{"core-js/library/fn/object/assign":15}],5:[function(require,module,exports){ +},{"./view/load-indicator":3,"./view/progress-bar":4,"babel-runtime/core-js/map":6,"babel-runtime/core-js/set":10,"babel-runtime/helpers/class-call-check":11,"babel-runtime/helpers/create-class":12,"babel-runtime/helpers/get":13,"babel-runtime/helpers/inherits":14,"events":51}],2:[function(require,module,exports){ +'use strict'; + +var ComicBook = window.ComicBook = require('./comic-book'); +var comic = new ComicBook(['https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_00.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_01.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_02.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_03.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_04.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_05.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_06.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_07.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_08.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_09.jpg', 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_10.jpg']); + +document.addEventListener('DOMContentLoaded', function () { + document.body.appendChild(comic.render().el); + comic.preload(); +}, false); + +},{"./comic-book":1}],3:[function(require,module,exports){ +'use strict'; + +var _get = require('babel-runtime/helpers/get')['default']; + +var _inherits = require('babel-runtime/helpers/inherits')['default']; + +var _createClass = require('babel-runtime/helpers/create-class')['default']; + +var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default']; + +var EventEmitter = require('events').EventEmitter; + +var LoadIndicator = (function (_EventEmitter) { + _inherits(LoadIndicator, _EventEmitter); + + function LoadIndicator() { + _classCallCheck(this, LoadIndicator); + + _get(Object.getPrototypeOf(LoadIndicator.prototype), 'constructor', this).call(this); + this.render().hide(); + } + + _createClass(LoadIndicator, [{ + key: 'render', + value: function render() { + this.el = document.createElement('div'); + this.el.id = 'cb-loading-overlay'; + return this; + } + }, { + key: 'show', + value: function show() { + this.el.style.display = 'block'; + this.emit('show', this); + } + }, { + key: 'hide', + value: function hide() { + this.el.style.display = 'none'; + this.emit('hide', this); + } + }]); + + return LoadIndicator; +})(EventEmitter); + +module.exports = LoadIndicator; + +},{"babel-runtime/helpers/class-call-check":11,"babel-runtime/helpers/create-class":12,"babel-runtime/helpers/get":13,"babel-runtime/helpers/inherits":14,"events":51}],4:[function(require,module,exports){ +'use strict'; + +var _createClass = require('babel-runtime/helpers/create-class')['default']; + +var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default']; + +var template = require('./template/progress-bar.handlebars'); + +var ProgressBar = (function () { + function ProgressBar() { + _classCallCheck(this, ProgressBar); + + this.createElements(); + this.hide(); + } + + _createClass(ProgressBar, [{ + key: 'createElements', + value: function createElements() { + var el = document.createElement('div'); + el.innerHTML = template(); + this.el = el.firstChild; + this.progressEl = this.el.querySelector('.progressbar-value'); + } + }, { + key: 'update', + value: function update(percentage) { + this.progressEl.style.width = percentage + '%'; + } + }, { + key: 'show', + value: function show() { + this.el.style.display = 'block'; + } + }, { + key: 'hide', + value: function hide() { + this.el.style.display = 'none'; + } + }]); + + return ProgressBar; +})(); + +module.exports = ProgressBar; + +},{"./template/progress-bar.handlebars":5,"babel-runtime/helpers/class-call-check":11,"babel-runtime/helpers/create-class":12}],5:[function(require,module,exports){ +var templater = require("handlebars/runtime")["default"].template;module.exports = templater({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { + return "
\n
\n
\n
\n
\n"; +},"useData":true}); +},{"handlebars/runtime":59}],6:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/map"), __esModule: true }; +},{"core-js/library/fn/map":15}],7:[function(require,module,exports){ module.exports = { "default": require("core-js/library/fn/object/create"), __esModule: true }; -},{"core-js/library/fn/object/create":16}],6:[function(require,module,exports){ +},{"core-js/library/fn/object/create":16}],8:[function(require,module,exports){ module.exports = { "default": require("core-js/library/fn/object/define-property"), __esModule: true }; -},{"core-js/library/fn/object/define-property":17}],7:[function(require,module,exports){ +},{"core-js/library/fn/object/define-property":17}],9:[function(require,module,exports){ module.exports = { "default": require("core-js/library/fn/object/get-own-property-descriptor"), __esModule: true }; -},{"core-js/library/fn/object/get-own-property-descriptor":18}],8:[function(require,module,exports){ +},{"core-js/library/fn/object/get-own-property-descriptor":18}],10:[function(require,module,exports){ +module.exports = { "default": require("core-js/library/fn/set"), __esModule: true }; +},{"core-js/library/fn/set":19}],11:[function(require,module,exports){ "use strict"; exports["default"] = function (instance, Constructor) { @@ -225,7 +221,7 @@ exports["default"] = function (instance, Constructor) { }; exports.__esModule = true; -},{}],9:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ "use strict"; var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"]; @@ -250,7 +246,7 @@ exports["default"] = (function () { })(); exports.__esModule = true; -},{"babel-runtime/core-js/object/define-property":6}],10:[function(require,module,exports){ +},{"babel-runtime/core-js/object/define-property":8}],13:[function(require,module,exports){ "use strict"; var _Object$getOwnPropertyDescriptor = require("babel-runtime/core-js/object/get-own-property-descriptor")["default"]; @@ -295,7 +291,7 @@ exports["default"] = function get(_x, _x2, _x3) { }; exports.__esModule = true; -},{"babel-runtime/core-js/object/get-own-property-descriptor":7}],11:[function(require,module,exports){ +},{"babel-runtime/core-js/object/get-own-property-descriptor":9}],14:[function(require,module,exports){ "use strict"; var _Object$create = require("babel-runtime/core-js/object/create")["default"]; @@ -317,1613 +313,311 @@ exports["default"] = function (subClass, superClass) { }; exports.__esModule = true; -},{"babel-runtime/core-js/object/create":5}],12:[function(require,module,exports){ -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -;(function (exports) { - 'use strict'; - - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - var PLUS_URL_SAFE = '-'.charCodeAt(0) - var SLASH_URL_SAFE = '_'.charCodeAt(0) - - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS || - code === PLUS_URL_SAFE) - return 62 // '+' - if (code === SLASH || - code === SLASH_URL_SAFE) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } - - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length - - var L = 0 - - function push (v) { - arr[L++] = v - } - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } - - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } - - return arr - } - - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length - - function encode (num) { - return lookup.charAt(num) - } - - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } - - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } - - return output - } - - exports.toByteArray = b64ToByteArray - exports.fromByteArray = uint8ToBase64 -}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) - -},{}],13:[function(require,module,exports){ - -},{}],14:[function(require,module,exports){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var isArray = require('is-array') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 -Buffer.poolSize = 8192 // not used by this implementation - -var rootParent = {} - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Note: - * - * - Implementation must support adding new properties to `Uint8Array` instances. - * Firefox 4-29 lacked support, fixed in Firefox 30+. - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - * - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will - * get the Object implementation, which is slower but will work correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = (function () { - function Foo () {} - try { - var buf = new ArrayBuffer(0) - var arr = new Uint8Array(buf) - arr.foo = function () { return 42 } - arr.constructor = Foo - return arr.foo() === 42 && // typed array instances can be augmented - arr.constructor === Foo && // constructor can be set - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` - } catch (e) { - return false - } -})() - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -/** - * Class: Buffer - * ============= - * - * The Buffer constructor returns instances of `Uint8Array` that are augmented - * with function properties for all the node `Buffer` API functions. We use - * `Uint8Array` so that square bracket notation works as expected -- it returns - * a single octet. - * - * By augmenting the instances, we can avoid modifying the `Uint8Array` - * prototype. - */ -function Buffer (arg) { - if (!(this instanceof Buffer)) { - // Avoid going through an ArgumentsAdaptorTrampoline in the common case. - if (arguments.length > 1) return new Buffer(arg, arguments[1]) - return new Buffer(arg) - } - - this.length = 0 - this.parent = undefined - - // Common case. - if (typeof arg === 'number') { - return fromNumber(this, arg) - } - - // Slightly less common case. - if (typeof arg === 'string') { - return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') - } - - // Unusual. - return fromObject(this, arg) -} - -function fromNumber (that, length) { - that = allocate(that, length < 0 ? 0 : checked(length) | 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < length; i++) { - that[i] = 0 - } - } - return that -} - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' - - // Assumption: byteLength() return value is always < kMaxLength. - var length = byteLength(string, encoding) | 0 - that = allocate(that, length) - - that.write(string, encoding) - return that -} - -function fromObject (that, object) { - if (Buffer.isBuffer(object)) return fromBuffer(that, object) - - if (isArray(object)) return fromArray(that, object) - - if (object == null) { - throw new TypeError('must start with number, buffer, array or string') - } - - if (typeof ArrayBuffer !== 'undefined' && object.buffer instanceof ArrayBuffer) { - return fromTypedArray(that, object) - } - - if (object.length) return fromArrayLike(that, object) - - return fromJsonObject(that, object) -} - -function fromBuffer (that, buffer) { - var length = checked(buffer.length) | 0 - that = allocate(that, length) - buffer.copy(that, 0, 0, length) - return that -} - -function fromArray (that, array) { - var length = checked(array.length) | 0 - that = allocate(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -// Duplicate of fromArray() to keep fromArray() monomorphic. -function fromTypedArray (that, array) { - var length = checked(array.length) | 0 - that = allocate(that, length) - // Truncating the elements is probably not what people expect from typed - // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior - // of the old Buffer constructor. - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function fromArrayLike (that, array) { - var length = checked(array.length) | 0 - that = allocate(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. -// Returns a zero-length buffer for inputs that don't conform to the spec. -function fromJsonObject (that, object) { - var array - var length = 0 - - if (object.type === 'Buffer' && isArray(object.data)) { - array = object.data - length = checked(array.length) | 0 - } - that = allocate(that, length) - - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function allocate (that, length) { - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = Buffer._augment(new Uint8Array(length)) - } else { - // Fallback: Return an object instance of the Buffer class - that.length = length - that._isBuffer = true - } - - var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 - if (fromPool) that.parent = rootParent - - return that -} - -function checked (length) { - // Note: cannot use `length < kMaxLength` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (subject, encoding) { - if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) - - var buf = new Buffer(subject, encoding) - delete buf.parent - return buf -} - -Buffer.isBuffer = function isBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - var i = 0 - var len = Math.min(x, y) - while (i < len) { - if (a[i] !== b[i]) break - - ++i - } - - if (i !== len) { - x = a[i] - y = b[i] - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'binary': - case 'base64': - case 'raw': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') - - if (list.length === 0) { - return new Buffer(0) - } else if (list.length === 1) { - return list[0] - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; i++) { - length += list[i].length - } - } - - var buf = new Buffer(length) - var pos = 0 - for (i = 0; i < list.length; i++) { - var item = list[i] - item.copy(buf, pos) - pos += item.length - } - return buf -} - -function byteLength (string, encoding) { - if (typeof string !== 'string') string = '' + string - - var len = string.length - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'binary': - // Deprecated - case 'raw': - case 'raws': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -// pre-set for values that may exist in the future -Buffer.prototype.length = undefined -Buffer.prototype.parent = undefined - -function slowToString (encoding, start, end) { - var loweredCase = false - - start = start | 0 - end = end === undefined || end === Infinity ? this.length : end | 0 - - if (!encoding) encoding = 'utf8' - if (start < 0) start = 0 - if (end > this.length) end = this.length - if (end <= start) return '' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'binary': - return binarySlice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toString = function toString () { - var length = this.length | 0 - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') - if (this.length > max) str += ' ... ' - } - return '' -} - -Buffer.prototype.compare = function compare (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return 0 - return Buffer.compare(this, b) -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset) { - if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff - else if (byteOffset < -0x80000000) byteOffset = -0x80000000 - byteOffset >>= 0 - - if (this.length === 0) return -1 - if (byteOffset >= this.length) return -1 - - // Negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) - - if (typeof val === 'string') { - if (val.length === 0) return -1 // special case: looking for empty string always fails - return String.prototype.indexOf.call(this, val, byteOffset) - } - if (Buffer.isBuffer(val)) { - return arrayIndexOf(this, val, byteOffset) - } - if (typeof val === 'number') { - if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { - return Uint8Array.prototype.indexOf.call(this, val, byteOffset) - } - return arrayIndexOf(this, [ val ], byteOffset) - } - - function arrayIndexOf (arr, val, byteOffset) { - var foundIndex = -1 - for (var i = 0; byteOffset + i < arr.length; i++) { - if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex - } else { - foundIndex = -1 - } - } - return -1 - } - - throw new TypeError('val must be string, number or Buffer') -} - -// `get` will be removed in Node 0.13+ -Buffer.prototype.get = function get (offset) { - console.log('.get() is deprecated. Access using array indexes instead.') - return this.readUInt8(offset) -} - -// `set` will be removed in Node 0.13+ -Buffer.prototype.set = function set (v, offset) { - console.log('.set() is deprecated. Access using array indexes instead.') - return this.writeUInt8(v, offset) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - // must be an even number of digits - var strLen = string.length - if (strLen % 2 !== 0) throw new Error('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; i++) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) throw new Error('Invalid hex string') - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function binaryWrite (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0 - if (isFinite(length)) { - length = length | 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - var swap = encoding - encoding = offset - offset = length | 0 - length = swap - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'binary': - return binaryWrite(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - var res = '' - var tmp = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - if (buf[i] <= 0x7F) { - res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) - tmp = '' - } else { - tmp += '%' + buf[i].toString(16) - } - } - - return res + decodeUtf8Char(tmp) -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function binarySlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; i++) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = Buffer._augment(this.subarray(start, end)) - } else { - var sliceLen = end - start - newBuf = new Buffer(sliceLen, undefined) - for (var i = 0; i < sliceLen; i++) { - newBuf[i] = this[i + start] - } - } - - if (newBuf.length) newBuf.parent = this.parent || this - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') - if (value > max || value < min) throw new RangeError('value is out of bounds') - if (offset + ext > buf.length) throw new RangeError('index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - this[offset] = value - return offset + 1 -} - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = value - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = value - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = value - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = value < 0 ? 1 : 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = value < 0 ? 1 : 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - if (value < 0) value = 0xff + value + 1 - this[offset] = value - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = value - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = value - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (value > max || value < min) throw new RangeError('value is out of bounds') - if (offset + ext > buf.length) throw new RangeError('index out of range') - if (offset < 0) throw new RangeError('index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < len; i++) { - target[i + targetStart] = this[i + start] - } - } else { - target._set(this.subarray(start, start + len), targetStart) - } - - return len -} - -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function fill (value, start, end) { - if (!value) value = 0 - if (!start) start = 0 - if (!end) end = this.length - - if (end < start) throw new RangeError('end < start') - - // Fill 0 bytes; we're done - if (end === start) return - if (this.length === 0) return - - if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') - if (end < 0 || end > this.length) throw new RangeError('end out of bounds') - - var i - if (typeof value === 'number') { - for (i = start; i < end; i++) { - this[i] = value - } - } else { - var bytes = utf8ToBytes(value.toString()) - var len = bytes.length - for (i = start; i < end; i++) { - this[i] = bytes[i % len] - } - } - - return this -} - -/** - * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. - * Added in Node 0.12. Only available in browsers that support ArrayBuffer. - */ -Buffer.prototype.toArrayBuffer = function toArrayBuffer () { - if (typeof Uint8Array !== 'undefined') { - if (Buffer.TYPED_ARRAY_SUPPORT) { - return (new Buffer(this)).buffer - } else { - var buf = new Uint8Array(this.length) - for (var i = 0, len = buf.length; i < len; i += 1) { - buf[i] = this[i] - } - return buf.buffer - } - } else { - throw new TypeError('Buffer.toArrayBuffer not supported in this browser') - } -} - -// HELPER FUNCTIONS -// ================ - -var BP = Buffer.prototype - -/** - * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods - */ -Buffer._augment = function _augment (arr) { - arr.constructor = Buffer - arr._isBuffer = true - - // save reference to original Uint8Array set method before overwriting - arr._set = arr.set - - // deprecated, will be removed in node 0.13+ - arr.get = BP.get - arr.set = BP.set - - arr.write = BP.write - arr.toString = BP.toString - arr.toLocaleString = BP.toString - arr.toJSON = BP.toJSON - arr.equals = BP.equals - arr.compare = BP.compare - arr.indexOf = BP.indexOf - arr.copy = BP.copy - arr.slice = BP.slice - arr.readUIntLE = BP.readUIntLE - arr.readUIntBE = BP.readUIntBE - arr.readUInt8 = BP.readUInt8 - arr.readUInt16LE = BP.readUInt16LE - arr.readUInt16BE = BP.readUInt16BE - arr.readUInt32LE = BP.readUInt32LE - arr.readUInt32BE = BP.readUInt32BE - arr.readIntLE = BP.readIntLE - arr.readIntBE = BP.readIntBE - arr.readInt8 = BP.readInt8 - arr.readInt16LE = BP.readInt16LE - arr.readInt16BE = BP.readInt16BE - arr.readInt32LE = BP.readInt32LE - arr.readInt32BE = BP.readInt32BE - arr.readFloatLE = BP.readFloatLE - arr.readFloatBE = BP.readFloatBE - arr.readDoubleLE = BP.readDoubleLE - arr.readDoubleBE = BP.readDoubleBE - arr.writeUInt8 = BP.writeUInt8 - arr.writeUIntLE = BP.writeUIntLE - arr.writeUIntBE = BP.writeUIntBE - arr.writeUInt16LE = BP.writeUInt16LE - arr.writeUInt16BE = BP.writeUInt16BE - arr.writeUInt32LE = BP.writeUInt32LE - arr.writeUInt32BE = BP.writeUInt32BE - arr.writeIntLE = BP.writeIntLE - arr.writeIntBE = BP.writeIntBE - arr.writeInt8 = BP.writeInt8 - arr.writeInt16LE = BP.writeInt16LE - arr.writeInt16BE = BP.writeInt16BE - arr.writeInt32LE = BP.writeInt32LE - arr.writeInt32BE = BP.writeInt32BE - arr.writeFloatLE = BP.writeFloatLE - arr.writeFloatBE = BP.writeFloatBE - arr.writeDoubleLE = BP.writeDoubleLE - arr.writeDoubleBE = BP.writeDoubleBE - arr.fill = BP.fill - arr.inspect = BP.inspect - arr.toArrayBuffer = BP.toArrayBuffer - - return arr -} - -var INVALID_BASE64_RE = /[^+\/0-9A-z\-]/g - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - var i = 0 - - for (; i < length; i++) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (leadSurrogate) { - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } else { - // valid surrogate pair - codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 - leadSurrogate = null - } - } else { - // no lead yet - - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else { - // valid lead - leadSurrogate = codePoint - continue - } - } - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = null - } - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x200000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; i++) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; i++) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -function decodeUtf8Char (str) { - try { - return decodeURIComponent(str) - } catch (err) { - return String.fromCharCode(0xFFFD) // UTF 8 invalid char - } -} - -},{"base64-js":12,"ieee754":28,"is-array":31}],15:[function(require,module,exports){ -require('../../modules/es6.object.assign'); -module.exports = require('../../modules/$').core.Object.assign; -},{"../../modules/$":24,"../../modules/es6.object.assign":25}],16:[function(require,module,exports){ +},{"babel-runtime/core-js/object/create":7}],15:[function(require,module,exports){ +require('../modules/es6.object.to-string'); +require('../modules/es6.string.iterator'); +require('../modules/web.dom.iterable'); +require('../modules/es6.map'); +require('../modules/es7.map.to-json'); +module.exports = require('../modules/$').core.Map; +},{"../modules/$":33,"../modules/es6.map":43,"../modules/es6.object.to-string":45,"../modules/es6.string.iterator":47,"../modules/es7.map.to-json":48,"../modules/web.dom.iterable":50}],16:[function(require,module,exports){ var $ = require('../../modules/$'); module.exports = function create(P, D){ return $.create(P, D); }; -},{"../../modules/$":24}],17:[function(require,module,exports){ +},{"../../modules/$":33}],17:[function(require,module,exports){ var $ = require('../../modules/$'); module.exports = function defineProperty(it, key, desc){ return $.setDesc(it, key, desc); }; -},{"../../modules/$":24}],18:[function(require,module,exports){ +},{"../../modules/$":33}],18:[function(require,module,exports){ var $ = require('../../modules/$'); require('../../modules/es6.object.statics-accept-primitives'); module.exports = function getOwnPropertyDescriptor(it, key){ return $.getDesc(it, key); }; -},{"../../modules/$":24,"../../modules/es6.object.statics-accept-primitives":26}],19:[function(require,module,exports){ -var $ = require('./$') - , enumKeys = require('./$.enum-keys'); -// 19.1.2.1 Object.assign(target, source, ...) -/* eslint-disable no-unused-vars */ -module.exports = Object.assign || function assign(target, source){ -/* eslint-enable no-unused-vars */ - var T = Object($.assertDefined(target)) - , l = arguments.length - , i = 1; - while(l > i){ - var S = $.ES5Object(arguments[i++]) - , keys = enumKeys(S) - , length = keys.length - , j = 0 - , key; - while(length > j)T[key = keys[j++]] = S[key]; - } - return T; +},{"../../modules/$":33,"../../modules/es6.object.statics-accept-primitives":44}],19:[function(require,module,exports){ +require('../modules/es6.object.to-string'); +require('../modules/es6.string.iterator'); +require('../modules/web.dom.iterable'); +require('../modules/es6.set'); +require('../modules/es7.set.to-json'); +module.exports = require('../modules/$').core.Set; +},{"../modules/$":33,"../modules/es6.object.to-string":45,"../modules/es6.set":46,"../modules/es6.string.iterator":47,"../modules/es7.set.to-json":49,"../modules/web.dom.iterable":50}],20:[function(require,module,exports){ +var $ = require('./$'); +function assert(condition, msg1, msg2){ + if(!condition)throw TypeError(msg2 ? msg1 + msg2 : msg1); +} +assert.def = $.assertDefined; +assert.fn = function(it){ + if(!$.isFunction(it))throw TypeError(it + ' is not a function!'); + return it; }; -},{"./$":24,"./$.enum-keys":21}],20:[function(require,module,exports){ +assert.obj = function(it){ + if(!$.isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; +assert.inst = function(it, Constructor, name){ + if(!(it instanceof Constructor))throw TypeError(name + ": use the 'new' operator!"); + return it; +}; +module.exports = assert; +},{"./$":33}],21:[function(require,module,exports){ +var $ = require('./$') + , TAG = require('./$.wks')('toStringTag') + , toString = {}.toString; +function cof(it){ + return toString.call(it).slice(8, -1); +} +cof.classof = function(it){ + var O, T; + return it == undefined ? it === undefined ? 'Undefined' : 'Null' + : typeof (T = (O = Object(it))[TAG]) == 'string' ? T : cof(O); +}; +cof.set = function(it, tag, stat){ + if(it && !$.has(it = stat ? it : it.prototype, TAG))$.hide(it, TAG, tag); +}; +module.exports = cof; +},{"./$":33,"./$.wks":41}],22:[function(require,module,exports){ +'use strict'; +var $ = require('./$') + , ctx = require('./$.ctx') + , safe = require('./$.uid').safe + , assert = require('./$.assert') + , forOf = require('./$.for-of') + , step = require('./$.iter').step + , $has = $.has + , set = $.set + , isObject = $.isObject + , hide = $.hide + , isExtensible = Object.isExtensible || isObject + , ID = safe('id') + , O1 = safe('O1') + , LAST = safe('last') + , FIRST = safe('first') + , ITER = safe('iter') + , SIZE = $.DESC ? safe('size') : 'size' + , id = 0; + +function fastKey(it, create){ + // return primitive with prefix + if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!$has(it, ID)){ + // can't set id to frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add id + if(!create)return 'E'; + // add missing object id + hide(it, ID, ++id); + // return object id with prefix + } return 'O' + it[ID]; +} + +function getEntry(that, key){ + // fast case + var index = fastKey(key), entry; + if(index !== 'F')return that[O1][index]; + // frozen object case + for(entry = that[FIRST]; entry; entry = entry.n){ + if(entry.k == key)return entry; + } +} + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + assert.inst(that, C, NAME); + set(that, O1, $.create(null)); + set(that, SIZE, 0); + set(that, LAST, undefined); + set(that, FIRST, undefined); + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + require('./$.mix')(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear(){ + for(var that = this, data = that[O1], entry = that[FIRST]; entry; entry = entry.n){ + entry.r = true; + if(entry.p)entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that[FIRST] = that[LAST] = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function(key){ + var that = this + , entry = getEntry(that, key); + if(entry){ + var next = entry.n + , prev = entry.p; + delete that[O1][entry.i]; + entry.r = true; + if(prev)prev.n = next; + if(next)next.p = prev; + if(that[FIRST] == entry)that[FIRST] = next; + if(that[LAST] == entry)that[LAST] = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /*, that = undefined */){ + var f = ctx(callbackfn, arguments[1], 3) + , entry; + while(entry = entry ? entry.n : this[FIRST]){ + f(entry.v, entry.k, this); + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key){ + return !!getEntry(this, key); + } + }); + if($.DESC)$.setDesc(C.prototype, 'size', { + get: function(){ + return assert.def(this[SIZE]); + } + }); + return C; + }, + def: function(that, key, value){ + var entry = getEntry(that, key) + , prev, index; + // change existing entry + if(entry){ + entry.v = value; + // create new entry + } else { + that[LAST] = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that[LAST], // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if(!that[FIRST])that[FIRST] = entry; + if(prev)prev.n = entry; + that[SIZE]++; + // add to index + if(index !== 'F')that[O1][index] = entry; + } return that; + }, + getEntry: getEntry, + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + setIter: function(C, NAME, IS_MAP){ + require('./$.iter-define')(C, NAME, function(iterated, kind){ + set(this, ITER, {o: iterated, k: kind}); + }, function(){ + var iter = this[ITER] + , kind = iter.k + , entry = iter.l; + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + // get next entry + if(!iter.o || !(iter.l = entry = entry ? entry.n : iter.o[FIRST])){ + // or finish the iteration + iter.o = undefined; + return step(1); + } + // return step by kind + if(kind == 'keys' )return step(0, entry.k); + if(kind == 'values')return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true); + } +}; +},{"./$":33,"./$.assert":20,"./$.ctx":25,"./$.for-of":27,"./$.iter":32,"./$.iter-define":31,"./$.mix":34,"./$.uid":39}],23:[function(require,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +var $def = require('./$.def') + , forOf = require('./$.for-of'); +module.exports = function(NAME){ + $def($def.P, NAME, { + toJSON: function toJSON(){ + var arr = []; + forOf(this, false, arr.push, arr); + return arr; + } + }); +}; +},{"./$.def":26,"./$.for-of":27}],24:[function(require,module,exports){ +'use strict'; +var $ = require('./$') + , $def = require('./$.def') + , $iter = require('./$.iter') + , BUGGY = $iter.BUGGY + , forOf = require('./$.for-of') + , assertInstance = require('./$.assert').inst + , INTERNAL = require('./$.uid').safe('internal'); + +module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){ + var Base = $.g[NAME] + , C = Base + , ADDER = IS_MAP ? 'set' : 'add' + , proto = C && C.prototype + , O = {}; + if(!$.DESC || !$.isFunction(C) || !(IS_WEAK || !BUGGY && proto.forEach && proto.entries)){ + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + require('./$.mix')(C.prototype, methods); + } else { + C = wrapper(function(target, iterable){ + assertInstance(target, C, NAME); + target[INTERNAL] = new Base; + if(iterable != undefined)forOf(iterable, IS_MAP, target[ADDER], target); + }); + $.each.call('add,clear,delete,forEach,get,has,set,keys,values,entries'.split(','),function(KEY){ + var chain = KEY == 'add' || KEY == 'set'; + if(KEY in proto)$.hide(C.prototype, KEY, function(a, b){ + var result = this[INTERNAL][KEY](a === 0 ? 0 : a, b); + return chain ? this : result; + }); + }); + if('size' in proto)$.setDesc(C.prototype, 'size', { + get: function(){ + return this[INTERNAL].size; + } + }); + } + + require('./$.cof').set(C, NAME); + + O[NAME] = C; + $def($def.G + $def.W + $def.F, O); + require('./$.species')(C); + + if(!IS_WEAK)common.setIter(C, NAME, IS_MAP); + + return C; +}; +},{"./$":33,"./$.assert":20,"./$.cof":21,"./$.def":26,"./$.for-of":27,"./$.iter":32,"./$.mix":34,"./$.species":37,"./$.uid":39}],25:[function(require,module,exports){ +// Optional / simple context binding +var assertFunction = require('./$.assert').fn; +module.exports = function(fn, that, length){ + assertFunction(fn); + if(~length && that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; +},{"./$.assert":20}],26:[function(require,module,exports){ var $ = require('./$') , global = $.g , core = $.core @@ -1972,24 +666,27 @@ function $def(type, name, source){ } } module.exports = $def; -},{"./$":24}],21:[function(require,module,exports){ -var $ = require('./$'); -module.exports = function(it){ - var keys = $.getKeys(it) - , getDesc = $.getDesc - , getSymbols = $.getSymbols; - if(getSymbols)$.each.call(getSymbols(it), function(key){ - if(getDesc(it, key).enumerable)keys.push(key); - }); - return keys; +},{"./$":33}],27:[function(require,module,exports){ +var ctx = require('./$.ctx') + , get = require('./$.iter').get + , call = require('./$.iter-call'); +module.exports = function(iterable, entries, fn, that){ + var iterator = get(iterable) + , f = ctx(fn, that, entries ? 2 : 1) + , step; + while(!(step = iterator.next()).done){ + if(call(iterator, f, step.value, entries) === false){ + return call.close(iterator); + } + } }; -},{"./$":24}],22:[function(require,module,exports){ +},{"./$.ctx":25,"./$.iter":32,"./$.iter-call":30}],28:[function(require,module,exports){ module.exports = function($){ $.FW = false; $.path = $.core; return $; }; -},{}],23:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var $ = require('./$') , toString = {}.toString @@ -2010,7 +707,124 @@ module.exports.get = function getOwnPropertyNames(it){ if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it); return getNames($.toObject(it)); }; -},{"./$":24}],24:[function(require,module,exports){ +},{"./$":33}],30:[function(require,module,exports){ +var assertObject = require('./$.assert').obj; +function close(iterator){ + var ret = iterator['return']; + if(ret !== undefined)assertObject(ret.call(iterator)); +} +function call(iterator, fn, value, entries){ + try { + return entries ? fn(assertObject(value)[0], value[1]) : fn(value); + } catch(e){ + close(iterator); + throw e; + } +} +call.close = close; +module.exports = call; +},{"./$.assert":20}],31:[function(require,module,exports){ +var $def = require('./$.def') + , $redef = require('./$.redef') + , $ = require('./$') + , cof = require('./$.cof') + , $iter = require('./$.iter') + , SYMBOL_ITERATOR = require('./$.wks')('iterator') + , FF_ITERATOR = '@@iterator' + , KEYS = 'keys' + , VALUES = 'values' + , Iterators = $iter.Iterators; +module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCE){ + $iter.create(Constructor, NAME, next); + function createMethod(kind){ + function $$(that){ + return new Constructor(that, kind); + } + switch(kind){ + case KEYS: return function keys(){ return $$(this); }; + case VALUES: return function values(){ return $$(this); }; + } return function entries(){ return $$(this); }; + } + var TAG = NAME + ' Iterator' + , proto = Base.prototype + , _native = proto[SYMBOL_ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , _default = _native || createMethod(DEFAULT) + , methods, key; + // Fix native + if(_native){ + var IteratorPrototype = $.getProto(_default.call(new Base)); + // Set @@toStringTag to native iterators + cof.set(IteratorPrototype, TAG, true); + // FF fix + if($.FW && $.has(proto, FF_ITERATOR))$iter.set(IteratorPrototype, $.that); + } + // Define iterator + if($.FW || FORCE)$iter.set(proto, _default); + // Plug for library + Iterators[NAME] = _default; + Iterators[TAG] = $.that; + if(DEFAULT){ + methods = { + keys: IS_SET ? _default : createMethod(KEYS), + values: DEFAULT == VALUES ? _default : createMethod(VALUES), + entries: DEFAULT != VALUES ? _default : createMethod('entries') + }; + if(FORCE)for(key in methods){ + if(!(key in proto))$redef(proto, key, methods[key]); + } else $def($def.P + $def.F * $iter.BUGGY, NAME, methods); + } +}; +},{"./$":33,"./$.cof":21,"./$.def":26,"./$.iter":32,"./$.redef":35,"./$.wks":41}],32:[function(require,module,exports){ +'use strict'; +var $ = require('./$') + , cof = require('./$.cof') + , classof = cof.classof + , assert = require('./$.assert') + , assertObject = assert.obj + , SYMBOL_ITERATOR = require('./$.wks')('iterator') + , FF_ITERATOR = '@@iterator' + , Iterators = require('./$.shared')('iterators') + , IteratorPrototype = {}; +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +setIterator(IteratorPrototype, $.that); +function setIterator(O, value){ + $.hide(O, SYMBOL_ITERATOR, value); + // Add iterator for FF iterator protocol + if(FF_ITERATOR in [])$.hide(O, FF_ITERATOR, value); +} + +module.exports = { + // Safari has buggy iterators w/o `next` + BUGGY: 'keys' in [] && !('next' in [].keys()), + Iterators: Iterators, + step: function(done, value){ + return {value: value, done: !!done}; + }, + is: function(it){ + var O = Object(it) + , Symbol = $.g.Symbol; + return (Symbol && Symbol.iterator || FF_ITERATOR) in O + || SYMBOL_ITERATOR in O + || $.has(Iterators, classof(O)); + }, + get: function(it){ + var Symbol = $.g.Symbol + , getIter; + if(it != undefined){ + getIter = it[Symbol && Symbol.iterator || FF_ITERATOR] + || it[SYMBOL_ITERATOR] + || Iterators[classof(it)]; + } + assert($.isFunction(getIter), it, ' is not iterable!'); + return assertObject(getIter.call(it)); + }, + set: setIterator, + create: function(Constructor, NAME, next, proto){ + Constructor.prototype = $.create(proto || IteratorPrototype, {next: $.desc(1, next)}); + cof.set(Constructor, NAME + ' Iterator'); + } +}; +},{"./$":33,"./$.assert":20,"./$.cof":21,"./$.shared":36,"./$.wks":41}],33:[function(require,module,exports){ 'use strict'; var global = typeof self != 'undefined' ? self : Function('return this')() , core = {} @@ -2107,11 +921,118 @@ var $ = module.exports = require('./$.fw')({ /* eslint-disable no-undef */ if(typeof __e != 'undefined')__e = core; if(typeof __g != 'undefined')__g = global; -},{"./$.fw":22}],25:[function(require,module,exports){ -// 19.1.3.1 Object.assign(target, source) -var $def = require('./$.def'); -$def($def.S, 'Object', {assign: require('./$.assign')}); -},{"./$.assign":19,"./$.def":20}],26:[function(require,module,exports){ +},{"./$.fw":28}],34:[function(require,module,exports){ +var $redef = require('./$.redef'); +module.exports = function(target, src){ + for(var key in src)$redef(target, key, src[key]); + return target; +}; +},{"./$.redef":35}],35:[function(require,module,exports){ +module.exports = require('./$').hide; +},{"./$":33}],36:[function(require,module,exports){ +var $ = require('./$') + , SHARED = '__core-js_shared__' + , store = $.g[SHARED] || ($.g[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; +},{"./$":33}],37:[function(require,module,exports){ +var $ = require('./$') + , SPECIES = require('./$.wks')('species'); +module.exports = function(C){ + if($.DESC && !(SPECIES in C))$.setDesc(C, SPECIES, { + configurable: true, + get: $.that + }); +}; +},{"./$":33,"./$.wks":41}],38:[function(require,module,exports){ +// true -> String#at +// false -> String#codePointAt +var $ = require('./$'); +module.exports = function(TO_STRING){ + return function(that, pos){ + var s = String($.assertDefined(that)) + , i = $.toInteger(pos) + , l = s.length + , a, b; + if(i < 0 || i >= l)return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l + || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; +},{"./$":33}],39:[function(require,module,exports){ +var sid = 0; +function uid(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++sid + Math.random()).toString(36)); +} +uid.safe = require('./$').g.Symbol || uid; +module.exports = uid; +},{"./$":33}],40:[function(require,module,exports){ +module.exports = function(){ /* empty */ }; +},{}],41:[function(require,module,exports){ +var global = require('./$').g + , store = require('./$.shared')('wks'); +module.exports = function(name){ + return store[name] || (store[name] = + global.Symbol && global.Symbol[name] || require('./$.uid').safe('Symbol.' + name)); +}; +},{"./$":33,"./$.shared":36,"./$.uid":39}],42:[function(require,module,exports){ +var $ = require('./$') + , setUnscope = require('./$.unscope') + , ITER = require('./$.uid').safe('iter') + , $iter = require('./$.iter') + , step = $iter.step + , Iterators = $iter.Iterators; + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +require('./$.iter-define')(Array, 'Array', function(iterated, kind){ + $.set(this, ITER, {o: $.toObject(iterated), i: 0, k: kind}); +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function(){ + var iter = this[ITER] + , O = iter.o + , kind = iter.k + , index = iter.i++; + if(!O || index >= O.length){ + iter.o = undefined; + return step(1); + } + if(kind == 'keys' )return step(0, index); + if(kind == 'values')return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +setUnscope('keys'); +setUnscope('values'); +setUnscope('entries'); +},{"./$":33,"./$.iter":32,"./$.iter-define":31,"./$.uid":39,"./$.unscope":40}],43:[function(require,module,exports){ +'use strict'; +var strong = require('./$.collection-strong'); + +// 23.1 Map Objects +require('./$.collection')('Map', function(get){ + return function Map(){ return get(this, arguments[0]); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key){ + var entry = strong.getEntry(this, key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value){ + return strong.def(this, key === 0 ? 0 : key, value); + } +}, strong, true); +},{"./$.collection":24,"./$.collection-strong":22}],44:[function(require,module,exports){ var $ = require('./$') , $def = require('./$.def') , isObject = $.isObject @@ -2148,7 +1069,73 @@ $.each.call(('freeze,seal,preventExtensions,isFrozen,isSealed,isExtensible,' + } $def($def.S + $def.F * forced, 'Object', method); }); -},{"./$":24,"./$.def":20,"./$.get-names":23}],27:[function(require,module,exports){ +},{"./$":33,"./$.def":26,"./$.get-names":29}],45:[function(require,module,exports){ +'use strict'; +// 19.1.3.6 Object.prototype.toString() +var cof = require('./$.cof') + , tmp = {}; +tmp[require('./$.wks')('toStringTag')] = 'z'; +if(require('./$').FW && cof(tmp) != 'z'){ + require('./$.redef')(Object.prototype, 'toString', function toString(){ + return '[object ' + cof.classof(this) + ']'; + }, true); +} +},{"./$":33,"./$.cof":21,"./$.redef":35,"./$.wks":41}],46:[function(require,module,exports){ +'use strict'; +var strong = require('./$.collection-strong'); + +// 23.2 Set Objects +require('./$.collection')('Set', function(get){ + return function Set(){ return get(this, arguments[0]); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value){ + return strong.def(this, value = value === 0 ? 0 : value, value); + } +}, strong); +},{"./$.collection":24,"./$.collection-strong":22}],47:[function(require,module,exports){ +var set = require('./$').set + , $at = require('./$.string-at')(true) + , ITER = require('./$.uid').safe('iter') + , $iter = require('./$.iter') + , step = $iter.step; + +// 21.1.3.27 String.prototype[@@iterator]() +require('./$.iter-define')(String, 'String', function(iterated){ + set(this, ITER, {o: String(iterated), i: 0}); +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function(){ + var iter = this[ITER] + , O = iter.o + , index = iter.i + , point; + if(index >= O.length)return step(1); + point = $at(O, index); + iter.i += point.length; + return step(0, point); +}); +},{"./$":33,"./$.iter":32,"./$.iter-define":31,"./$.string-at":38,"./$.uid":39}],48:[function(require,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +require('./$.collection-to-json')('Map'); +},{"./$.collection-to-json":23}],49:[function(require,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +require('./$.collection-to-json')('Set'); +},{"./$.collection-to-json":23}],50:[function(require,module,exports){ +require('./es6.array.iterator'); +var $ = require('./$') + , Iterators = require('./$.iter').Iterators + , ITERATOR = require('./$.wks')('iterator') + , ArrayValues = Iterators.Array + , NL = $.g.NodeList + , HTC = $.g.HTMLCollection + , NLProto = NL && NL.prototype + , HTCProto = HTC && HTC.prototype; +if($.FW){ + if(NL && !(ITERATOR in NLProto))$.hide(NLProto, ITERATOR, ArrayValues); + if(HTC && !(ITERATOR in HTCProto))$.hide(HTCProto, ITERATOR, ArrayValues); +} +Iterators.NodeList = Iterators.HTMLCollection = ArrayValues; +},{"./$":33,"./$.iter":32,"./$.wks":41,"./es6.array.iterator":42}],51:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -2451,570 +1438,769 @@ function isUndefined(arg) { return arg === void 0; } -},{}],28:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] +},{}],52:[function(require,module,exports){ +'use strict'; - i += d +var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} +exports.__esModule = true; - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} +var _import = require('./handlebars/base'); - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +var base = _interopRequireWildcard(_import); + +// Each of these augment the Handlebars object. No need to setup here. +// (This is done to easily share code between commonjs and browse envs) + +var _SafeString = require('./handlebars/safe-string'); + +var _SafeString2 = _interopRequireWildcard(_SafeString); + +var _Exception = require('./handlebars/exception'); + +var _Exception2 = _interopRequireWildcard(_Exception); + +var _import2 = require('./handlebars/utils'); + +var Utils = _interopRequireWildcard(_import2); + +var _import3 = require('./handlebars/runtime'); + +var runtime = _interopRequireWildcard(_import3); + +var _noConflict = require('./handlebars/no-conflict'); + +var _noConflict2 = _interopRequireWildcard(_noConflict); + +// For compatibility and usage outside of module systems, make the Handlebars object a namespace +function create() { + var hb = new base.HandlebarsEnvironment(); + + Utils.extend(hb, base); + hb.SafeString = _SafeString2['default']; + hb.Exception = _Exception2['default']; + hb.Utils = Utils; + hb.escapeExpression = Utils.escapeExpression; + + hb.VM = runtime; + hb.template = function (spec) { + return runtime.template(spec, hb); + }; + + return hb; } -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 +var inst = create(); +inst.create = create; - value = Math.abs(value) +_noConflict2['default'](inst); - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } +inst['default'] = inst; - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } +exports['default'] = inst; +module.exports = exports['default']; +},{"./handlebars/base":53,"./handlebars/exception":54,"./handlebars/no-conflict":55,"./handlebars/runtime":56,"./handlebars/safe-string":57,"./handlebars/utils":58}],53:[function(require,module,exports){ +'use strict'; - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} +var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} +exports.__esModule = true; +exports.HandlebarsEnvironment = HandlebarsEnvironment; +exports.createFrame = createFrame; - buffer[offset + i - d] |= s * 128 -} +var _import = require('./utils'); -},{}],29:[function(require,module,exports){ -"use strict"; +var Utils = _interopRequireWildcard(_import); -module.exports = function Canvas () { - return document.createElement('canvas'); +var _Exception = require('./exception'); + +var _Exception2 = _interopRequireWildcard(_Exception); + +var VERSION = '3.0.1'; +exports.VERSION = VERSION; +var COMPILER_REVISION = 6; + +exports.COMPILER_REVISION = COMPILER_REVISION; +var REVISION_CHANGES = { + 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it + 2: '== 1.0.0-rc.3', + 3: '== 1.0.0-rc.4', + 4: '== 1.x.x', + 5: '== 2.0.0-alpha.x', + 6: '>= 2.0.0-beta.1' }; -},{}],30:[function(require,module,exports){ -(function (Buffer){ -// js-imagediff 1.0.3 -// (c) 2011-2012 Carl Sutherland, Humble Software -// Distributed under the MIT License -// For original source and documentation visit: -// http://www.github.com/HumbleSoftware/js-imagediff +exports.REVISION_CHANGES = REVISION_CHANGES; +var isArray = Utils.isArray, + isFunction = Utils.isFunction, + toString = Utils.toString, + objectType = '[object Object]'; -(function (name, definition) { - var root = this; - if (typeof module !== 'undefined') { - try { - var Canvas = require('canvas'); - } catch (e) { - throw new Error( - e.message + '\n' + - 'Please see https://github.com/HumbleSoftware/js-imagediff#cannot-find-module-canvas\n' - ); - } - module.exports = definition(root, name, Canvas); - } else if (typeof define === 'function' && typeof define.amd === 'object') { - define(definition); - } else { - root[name] = definition(root, name); - } -})('imagediff', function (root, name, Canvas) { +function HandlebarsEnvironment(helpers, partials) { + this.helpers = helpers || {}; + this.partials = partials || {}; - var - TYPE_ARRAY = /\[object Array\]/i, - TYPE_CANVAS = /\[object (Canvas|HTMLCanvasElement)\]/i, - TYPE_CONTEXT = /\[object CanvasRenderingContext2D\]/i, - TYPE_IMAGE = /\[object (Image|HTMLImageElement)\]/i, - TYPE_IMAGE_DATA = /\[object ImageData\]/i, + registerDefaultHelpers(this); +} - UNDEFINED = 'undefined', +HandlebarsEnvironment.prototype = { + constructor: HandlebarsEnvironment, - canvas = getCanvas(), - context = canvas.getContext('2d'), - previous = root[name], - imagediff, jasmine; + logger: logger, + log: log, - // Creation - function getCanvas (width, height) { - var - canvas = Canvas ? - new Canvas() : - document.createElement('canvas'); - if (width) canvas.width = width; - if (height) canvas.height = height; - return canvas; - } - function getImageData (width, height) { - canvas.width = width; - canvas.height = height; - context.clearRect(0, 0, width, height); - return context.createImageData(width, height); - } - // expost canvas module - function getCanvasRef() { - return Canvas; - } - - - // Type Checking - function isImage (object) { - return isType(object, TYPE_IMAGE); - } - function isCanvas (object) { - return isType(object, TYPE_CANVAS); - } - function isContext (object) { - return isType(object, TYPE_CONTEXT); - } - function isImageData (object) { - return !!(object && - isType(object, TYPE_IMAGE_DATA) && - typeof(object.width) !== UNDEFINED && - typeof(object.height) !== UNDEFINED && - typeof(object.data) !== UNDEFINED); - } - function isImageType (object) { - return ( - isImage(object) || - isCanvas(object) || - isContext(object) || - isImageData(object) - ); - } - function isType (object, type) { - return typeof (object) === 'object' && !!Object.prototype.toString.apply(object).match(type); - } - - - // Type Conversion - function copyImageData (imageData) { - var - height = imageData.height, - width = imageData.width, - data = imageData.data, - newImageData, newData, i; - - canvas.width = width; - canvas.height = height; - newImageData = context.getImageData(0, 0, width, height); - newData = newImageData.data; - - for (i = imageData.data.length; i--;) { - newData[i] = data[i]; - } - - return newImageData; - } - function toImageData (object) { - if (isImage(object)) { return toImageDataFromImage(object); } - if (isCanvas(object)) { return toImageDataFromCanvas(object); } - if (isContext(object)) { return toImageDataFromContext(object); } - if (isImageData(object)) { return object; } - } - function toImageDataFromImage (image) { - var - height = image.height, - width = image.width; - canvas.width = width; - canvas.height = height; - context.clearRect(0, 0, width, height); - context.drawImage(image, 0, 0); - return context.getImageData(0, 0, width, height); - } - function toImageDataFromCanvas (canvas) { - var - height = canvas.height, - width = canvas.width, - context = canvas.getContext('2d'); - return context.getImageData(0, 0, width, height); - } - function toImageDataFromContext (context) { - var - canvas = context.canvas, - height = canvas.height, - width = canvas.width; - return context.getImageData(0, 0, width, height); - } - function toCanvas (object) { - var - data = toImageData(object), - canvas = getCanvas(data.width, data.height), - context = canvas.getContext('2d'); - - context.putImageData(data, 0, 0); - return canvas; - } - - - // ImageData Equality Operators - function equalWidth (a, b) { - return a.width === b.width; - } - function equalHeight (a, b) { - return a.height === b.height; - } - function equalDimensions (a, b) { - return equalHeight(a, b) && equalWidth(a, b); - } - function equal (a, b, tolerance) { - - var - aData = a.data, - bData = b.data, - length = aData.length, - i; - - tolerance = tolerance || 0; - - if (!equalDimensions(a, b)) return false; - for (i = length; i--;) if (aData[i] !== bData[i] && Math.abs(aData[i] - bData[i]) > tolerance) return false; - - return true; - } - - - // Diff - function diff (a, b, options) { - return (equalDimensions(a, b) ? diffEqual : diffUnequal)(a, b, options); - } - function diffEqual (a, b, options) { - - var - height = a.height, - width = a.width, - c = getImageData(width, height), // c = a - b - aData = a.data, - bData = b.data, - cData = c.data, - length = cData.length, - row, column, - i, j, k, v; - - for (i = 0; i < length; i += 4) { - cData[i] = Math.abs(aData[i] - bData[i]); - cData[i+1] = Math.abs(aData[i+1] - bData[i+1]); - cData[i+2] = Math.abs(aData[i+2] - bData[i+2]); - cData[i+3] = Math.abs(255 - Math.abs(aData[i+3] - bData[i+3])); - } - - return c; - } - function diffUnequal (a, b, options) { - - var - height = Math.max(a.height, b.height), - width = Math.max(a.width, b.width), - c = getImageData(width, height), // c = a - b - aData = a.data, - bData = b.data, - cData = c.data, - align = options && options.align, - rowOffset, - columnOffset, - row, column, - i, j, k, v; - - - for (i = cData.length - 1; i > 0; i = i - 4) { - cData[i] = 255; - } - - // Add First Image - offsets(a); - for (row = a.height; row--;){ - for (column = a.width; column--;) { - i = 4 * ((row + rowOffset) * width + (column + columnOffset)); - j = 4 * (row * a.width + column); - cData[i+0] = aData[j+0]; // r - cData[i+1] = aData[j+1]; // g - cData[i+2] = aData[j+2]; // b - // cData[i+3] = aData[j+3]; // a + registerHelper: function registerHelper(name, fn) { + if (toString.call(name) === objectType) { + if (fn) { + throw new _Exception2['default']('Arg not supported with multiple helpers'); } + Utils.extend(this.helpers, name); + } else { + this.helpers[name] = fn; } + }, + unregisterHelper: function unregisterHelper(name) { + delete this.helpers[name]; + }, - // Subtract Second Image - offsets(b); - for (row = b.height; row--;){ - for (column = b.width; column--;) { - i = 4 * ((row + rowOffset) * width + (column + columnOffset)); - j = 4 * (row * b.width + column); - cData[i+0] = Math.abs(cData[i+0] - bData[j+0]); // r - cData[i+1] = Math.abs(cData[i+1] - bData[j+1]); // g - cData[i+2] = Math.abs(cData[i+2] - bData[j+2]); // b + registerPartial: function registerPartial(name, partial) { + if (toString.call(name) === objectType) { + Utils.extend(this.partials, name); + } else { + if (typeof partial === 'undefined') { + throw new _Exception2['default']('Attempting to register a partial as undefined'); } + this.partials[name] = partial; } + }, + unregisterPartial: function unregisterPartial(name) { + delete this.partials[name]; + } +}; - // Helpers - function offsets (imageData) { - if (align === 'top') { - rowOffset = 0; - columnOffset = 0; +function registerDefaultHelpers(instance) { + instance.registerHelper('helperMissing', function () { + if (arguments.length === 1) { + // A missing field in a {{foo}} constuct. + return undefined; + } else { + // Someone is actually trying to call something, blow up. + throw new _Exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); + } + }); + + instance.registerHelper('blockHelperMissing', function (context, options) { + var inverse = options.inverse, + fn = options.fn; + + if (context === true) { + return fn(this); + } else if (context === false || context == null) { + return inverse(this); + } else if (isArray(context)) { + if (context.length > 0) { + if (options.ids) { + options.ids = [options.name]; + } + + return instance.helpers.each(context, options); } else { - rowOffset = Math.floor((height - imageData.height) / 2); - columnOffset = Math.floor((width - imageData.width) / 2); + return inverse(this); + } + } else { + if (options.data && options.ids) { + var data = createFrame(options.data); + data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name); + options = { data: data }; + } + + return fn(context, options); + } + }); + + instance.registerHelper('each', function (context, options) { + if (!options) { + throw new _Exception2['default']('Must pass iterator to #each'); + } + + var fn = options.fn, + inverse = options.inverse, + i = 0, + ret = '', + data = undefined, + contextPath = undefined; + + if (options.data && options.ids) { + contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; + } + + if (isFunction(context)) { + context = context.call(this); + } + + if (options.data) { + data = createFrame(options.data); + } + + function execIteration(field, index, last) { + if (data) { + data.key = field; + data.index = index; + data.first = index === 0; + data.last = !!last; + + if (contextPath) { + data.contextPath = contextPath + field; + } + } + + ret = ret + fn(context[field], { + data: data, + blockParams: Utils.blockParams([context[field], field], [contextPath + field, null]) + }); + } + + if (context && typeof context === 'object') { + if (isArray(context)) { + for (var j = context.length; i < j; i++) { + execIteration(i, i, i === context.length - 1); + } + } else { + var priorKey = undefined; + + for (var key in context) { + if (context.hasOwnProperty(key)) { + // We're running the iterations one step out of sync so we can detect + // the last iteration without have to scan the object twice and create + // an itermediate keys array. + if (priorKey) { + execIteration(priorKey, i - 1); + } + priorKey = key; + i++; + } + } + if (priorKey) { + execIteration(priorKey, i - 1, true); + } } } - return c; - } + if (i === 0) { + ret = inverse(this); + } + return ret; + }); - // Validation - function checkType () { - var i; - for (i = 0; i < arguments.length; i++) { - if (!isImageType(arguments[i])) { - throw { - name : 'ImageTypeError', - message : 'Submitted object was not an image.' - }; + instance.registerHelper('if', function (conditional, options) { + if (isFunction(conditional)) { + conditional = conditional.call(this); + } + + // Default behavior is to render the positive path if the value is truthy and not empty. + // The `includeZero` option may be set to treat the condtional as purely not empty based on the + // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. + if (!options.hash.includeZero && !conditional || Utils.isEmpty(conditional)) { + return options.inverse(this); + } else { + return options.fn(this); + } + }); + + instance.registerHelper('unless', function (conditional, options) { + return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash }); + }); + + instance.registerHelper('with', function (context, options) { + if (isFunction(context)) { + context = context.call(this); + } + + var fn = options.fn; + + if (!Utils.isEmpty(context)) { + if (options.data && options.ids) { + var data = createFrame(options.data); + data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]); + options = { data: data }; } + + return fn(context, options); + } else { + return options.inverse(this); + } + }); + + instance.registerHelper('log', function (message, options) { + var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1; + instance.log(level, message); + }); + + instance.registerHelper('lookup', function (obj, field) { + return obj && obj[field]; + }); +} + +var logger = { + methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' }, + + // State enum + DEBUG: 0, + INFO: 1, + WARN: 2, + ERROR: 3, + level: 1, + + // Can be overridden in the host environment + log: function log(level, message) { + if (typeof console !== 'undefined' && logger.level <= level) { + var method = logger.methodMap[level]; + (console[method] || console.log).call(console, message); // eslint-disable-line no-console + } + } +}; + +exports.logger = logger; +var log = logger.log; + +exports.log = log; + +function createFrame(object) { + var frame = Utils.extend({}, object); + frame._parent = object; + return frame; +} + +/* [args, ]options */ +},{"./exception":54,"./utils":58}],54:[function(require,module,exports){ +'use strict'; + +exports.__esModule = true; + +var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack']; + +function Exception(message, node) { + var loc = node && node.loc, + line = undefined, + column = undefined; + if (loc) { + line = loc.start.line; + column = loc.start.column; + + message += ' - ' + line + ':' + column; + } + + var tmp = Error.prototype.constructor.call(this, message); + + // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. + for (var idx = 0; idx < errorProps.length; idx++) { + this[errorProps[idx]] = tmp[errorProps[idx]]; + } + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, Exception); + } + + if (loc) { + this.lineNumber = line; + this.column = column; + } +} + +Exception.prototype = new Error(); + +exports['default'] = Exception; +module.exports = exports['default']; +},{}],55:[function(require,module,exports){ +(function (global){ +'use strict'; + +exports.__esModule = true; +/*global window */ + +exports['default'] = function (Handlebars) { + /* istanbul ignore next */ + var root = typeof global !== 'undefined' ? global : window, + $Handlebars = root.Handlebars; + /* istanbul ignore next */ + Handlebars.noConflict = function () { + if (root.Handlebars === Handlebars) { + root.Handlebars = $Handlebars; + } + }; +}; + +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],56:[function(require,module,exports){ +'use strict'; + +var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; + +exports.__esModule = true; +exports.checkRevision = checkRevision; + +// TODO: Remove this line and break up compilePartial + +exports.template = template; +exports.wrapProgram = wrapProgram; +exports.resolvePartial = resolvePartial; +exports.invokePartial = invokePartial; +exports.noop = noop; + +var _import = require('./utils'); + +var Utils = _interopRequireWildcard(_import); + +var _Exception = require('./exception'); + +var _Exception2 = _interopRequireWildcard(_Exception); + +var _COMPILER_REVISION$REVISION_CHANGES$createFrame = require('./base'); + +function checkRevision(compilerInfo) { + var compilerRevision = compilerInfo && compilerInfo[0] || 1, + currentRevision = _COMPILER_REVISION$REVISION_CHANGES$createFrame.COMPILER_REVISION; + + if (compilerRevision !== currentRevision) { + if (compilerRevision < currentRevision) { + var runtimeVersions = _COMPILER_REVISION$REVISION_CHANGES$createFrame.REVISION_CHANGES[currentRevision], + compilerVersions = _COMPILER_REVISION$REVISION_CHANGES$createFrame.REVISION_CHANGES[compilerRevision]; + throw new _Exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); + } else { + // Use the embedded version info since the runtime doesn't know about this revision yet + throw new _Exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); + } + } +} + +function template(templateSpec, env) { + /* istanbul ignore next */ + if (!env) { + throw new _Exception2['default']('No environment passed to template'); + } + if (!templateSpec || !templateSpec.main) { + throw new _Exception2['default']('Unknown template object: ' + typeof templateSpec); + } + + // Note: Using env.VM references rather than local var references throughout this section to allow + // for external users to override these as psuedo-supported APIs. + env.VM.checkRevision(templateSpec.compiler); + + function invokePartialWrapper(partial, context, options) { + if (options.hash) { + context = Utils.extend({}, context, options.hash); + } + + partial = env.VM.resolvePartial.call(this, partial, context, options); + var result = env.VM.invokePartial.call(this, partial, context, options); + + if (result == null && env.compile) { + options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); + result = options.partials[options.name](context, options); + } + if (result != null) { + if (options.indent) { + var lines = result.split('\n'); + for (var i = 0, l = lines.length; i < l; i++) { + if (!lines[i] && i + 1 === l) { + break; + } + + lines[i] = options.indent + lines[i]; + } + result = lines.join('\n'); + } + return result; + } else { + throw new _Exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); } } - - // Jasmine Matchers - function get (element, content) { - element = document.createElement(element); - if (element && content) { - element.innerHTML = content; - } - return element; - } - - jasmine = { - - toBeImageData : function () { - return imagediff.isImageData(this.actual); + // Just add water + var container = { + strict: function strict(obj, name) { + if (!(name in obj)) { + throw new _Exception2['default']('"' + name + '" not defined in ' + obj); + } + return obj[name]; + }, + lookup: function lookup(depths, name) { + var len = depths.length; + for (var i = 0; i < len; i++) { + if (depths[i] && depths[i][name] != null) { + return depths[i][name]; + } + } + }, + lambda: function lambda(current, context) { + return typeof current === 'function' ? current.call(context) : current; }, - toImageDiffEqual : function (expected, tolerance) { + escapeExpression: Utils.escapeExpression, + invokePartial: invokePartialWrapper, - if (typeof (document) !== UNDEFINED) { - this.message = function () { - var - div = get('div'), - a = get('div', '
Actual:
'), - b = get('div', '
Expected:
'), - c = get('div', '
Diff:
'), - diff = imagediff.diff(this.actual, expected), - canvas = getCanvas(), - context; + fn: function fn(i) { + return templateSpec[i]; + }, - canvas.height = diff.height; - canvas.width = diff.width; + programs: [], + program: function program(i, data, declaredBlockParams, blockParams, depths) { + var programWrapper = this.programs[i], + fn = this.fn(i); + if (data || depths || blockParams || declaredBlockParams) { + programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); + } else if (!programWrapper) { + programWrapper = this.programs[i] = wrapProgram(this, i, fn); + } + return programWrapper; + }, - div.style.overflow = 'hidden'; - a.style.float = 'left'; - b.style.float = 'left'; - c.style.float = 'left'; + data: function data(value, depth) { + while (value && depth--) { + value = value._parent; + } + return value; + }, + merge: function merge(param, common) { + var obj = param || common; - context = canvas.getContext('2d'); - context.putImageData(diff, 0, 0); - - a.appendChild(toCanvas(this.actual)); - b.appendChild(toCanvas(expected)); - c.appendChild(canvas); - - div.appendChild(a); - div.appendChild(b); - div.appendChild(c); - - return [ - div, - "Expected not to be equal." - ]; - }; + if (param && common && param !== common) { + obj = Utils.extend({}, common, param); } - return imagediff.equal(this.actual, expected, tolerance); + return obj; + }, + + noop: env.VM.noop, + compilerInfo: templateSpec.compiler + }; + + function ret(context) { + var options = arguments[1] === undefined ? {} : arguments[1]; + + var data = options.data; + + ret._setup(options); + if (!options.partial && templateSpec.useData) { + data = initData(context, data); + } + var depths = undefined, + blockParams = templateSpec.useBlockParams ? [] : undefined; + if (templateSpec.useDepths) { + depths = options.depths ? [context].concat(options.depths) : [context]; + } + + return templateSpec.main.call(container, context, container.helpers, container.partials, data, blockParams, depths); + } + ret.isTop = true; + + ret._setup = function (options) { + if (!options.partial) { + container.helpers = container.merge(options.helpers, env.helpers); + + if (templateSpec.usePartial) { + container.partials = container.merge(options.partials, env.partials); + } + } else { + container.helpers = options.helpers; + container.partials = options.partials; } }; - - // Image Output - function imageDataToPNG (imageData, outputFile, callback) { - - var - canvas = toCanvas(imageData), - base64Data, - decodedImage; - - callback = callback || Function; - - base64Data = canvas.toDataURL().replace(/^data:image\/\w+;base64,/,""); - decodedImage = new Buffer(base64Data, 'base64'); - require('fs').writeFile(outputFile, decodedImage, callback); - } - - - // Definition - imagediff = { - - createCanvas : getCanvas, - createImageData : getImageData, - getCanvasRef: getCanvasRef, - - isImage : isImage, - isCanvas : isCanvas, - isContext : isContext, - isImageData : isImageData, - isImageType : isImageType, - - toImageData : function (object) { - checkType(object); - if (isImageData(object)) { return copyImageData(object); } - return toImageData(object); - }, - - equal : function (a, b, tolerance) { - checkType(a, b); - a = toImageData(a); - b = toImageData(b); - return equal(a, b, tolerance); - }, - diff : function (a, b, options) { - checkType(a, b); - a = toImageData(a); - b = toImageData(b); - return diff(a, b, options); - }, - - jasmine : jasmine, - - // Compatibility - noConflict : function () { - root[name] = previous; - return imagediff; + ret._child = function (i, data, blockParams, depths) { + if (templateSpec.useBlockParams && !blockParams) { + throw new _Exception2['default']('must pass block params'); + } + if (templateSpec.useDepths && !depths) { + throw new _Exception2['default']('must pass parent depths'); } - }; - if (typeof module !== 'undefined') { - imagediff.imageDataToPNG = imageDataToPNG; + return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); + }; + return ret; +} + +function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { + function prog(context) { + var options = arguments[1] === undefined ? {} : arguments[1]; + + return fn.call(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), depths && [context].concat(depths)); + } + prog.program = i; + prog.depth = depths ? depths.length : 0; + prog.blockParams = declaredBlockParams || 0; + return prog; +} + +function resolvePartial(partial, context, options) { + if (!partial) { + partial = options.partials[options.name]; + } else if (!partial.call && !options.name) { + // This is a dynamic partial that returned a string + options.name = partial; + partial = options.partials[partial]; + } + return partial; +} + +function invokePartial(partial, context, options) { + options.partial = true; + + if (partial === undefined) { + throw new _Exception2['default']('The partial ' + options.name + ' could not be found'); + } else if (partial instanceof Function) { + return partial(context, options); + } +} + +function noop() { + return ''; +} + +function initData(context, data) { + if (!data || !('root' in data)) { + data = data ? _COMPILER_REVISION$REVISION_CHANGES$createFrame.createFrame(data) : {}; + data.root = context; + } + return data; +} +},{"./base":53,"./exception":54,"./utils":58}],57:[function(require,module,exports){ +'use strict'; + +exports.__esModule = true; +// Build out our basic SafeString type +function SafeString(string) { + this.string = string; +} + +SafeString.prototype.toString = SafeString.prototype.toHTML = function () { + return '' + this.string; +}; + +exports['default'] = SafeString; +module.exports = exports['default']; +},{}],58:[function(require,module,exports){ +'use strict'; + +exports.__esModule = true; +exports.extend = extend; + +// Older IE versions do not directly support indexOf so we must implement our own, sadly. +exports.indexOf = indexOf; +exports.escapeExpression = escapeExpression; +exports.isEmpty = isEmpty; +exports.blockParams = blockParams; +exports.appendContextPath = appendContextPath; +var escape = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + '\'': ''', + '`': '`' +}; + +var badChars = /[&<>"'`]/g, + possible = /[&<>"'`]/; + +function escapeChar(chr) { + return escape[chr]; +} + +function extend(obj /* , ...source */) { + for (var i = 1; i < arguments.length; i++) { + for (var key in arguments[i]) { + if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { + obj[key] = arguments[i][key]; + } + } } - return imagediff; -}); + return obj; +} -}).call(this,require("buffer").Buffer) +var toString = Object.prototype.toString; -},{"buffer":14,"canvas":29,"fs":13}],31:[function(require,module,exports){ - -/** - * isArray - */ - -var isArray = Array.isArray; - -/** - * toString - */ - -var str = Object.prototype.toString; - -/** - * Whether or not the given `val` - * is an array. - * - * example: - * - * isArray([]); - * // > true - * isArray(arguments); - * // > false - * isArray(''); - * // > false - * - * @param {mixed} val - * @return {bool} - */ - -module.exports = isArray || function (val) { - return !! val && '[object Array]' == str.call(val); +exports.toString = toString; +// Sourced from lodash +// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt +/*eslint-disable func-style, no-var */ +var isFunction = function isFunction(value) { + return typeof value === 'function'; }; +// fallback for older versions of Chrome and Safari +/* istanbul ignore next */ +if (isFunction(/x/)) { + exports.isFunction = isFunction = function (value) { + return typeof value === 'function' && toString.call(value) === '[object Function]'; + }; +} +var isFunction; +exports.isFunction = isFunction; +/*eslint-enable func-style, no-var */ -},{}],32:[function(require,module,exports){ -'use strict'; +/* istanbul ignore next */ +var isArray = Array.isArray || function (value) { + return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; +};exports.isArray = isArray; -module.exports = { - portrait1: require('./portrait1') -}; +function indexOf(array, value) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + return -1; +} -},{"./portrait1":33}],33:[function(require,module,exports){ -'use strict'; +function escapeExpression(string) { + if (typeof string !== 'string') { + // don't escape SafeStrings, since they're already safe + if (string && string.toHTML) { + return string.toHTML(); + } else if (string == null) { + return ''; + } else if (!string) { + return string + ''; + } -var makeImage = require('../../app/lib/make-image'); + // Force a string conversion as this will be done by the append regardless and + // the regex test will do this transparently behind the scenes, causing issues if + // an object's to string has escaped characters in it. + string = '' + string; + } -module.exports = function (cb) { - makeImage('data:image/jpg;base64,\n/9j/4AAQSkZJRgABAQEASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAAB\nAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAAB\nAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAA\nAGSgAwAEAAAAAQAAAJMAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAA\nOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/iDFhJQ0NfUFJPRklMRQABAQAA\nDEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElF\nQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\nc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdY\nWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1\nZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl\nY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl\neHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55\nAABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0Ig\nSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA\nAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZ\nWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVj\nLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklF\nQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA\nAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0g\nc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2Ug\nVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVm\nZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwAD\nXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAA\nAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU\nABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCL\nAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH\nAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGp\nAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6\nAoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+\nA4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2\nBMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn\nBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS\nB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6\nCc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh\nC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J\nDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1\nERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPl\nFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\nF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe\nGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q\nHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKC\nIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtybo\nJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSud\nK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk\nMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9\nNjc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuq\nO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGs\nQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgF\nSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63\nTwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC\nVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n\nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTp\nZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I\nbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWF\ndeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\nfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4ef\niASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/\nkaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC\nm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWp\nphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1\nsOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7Lrun\nvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB\nx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE\n08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v\n4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG\n7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH\n+lf65/t3/Af8mP0p/br+S/7c/23////AABEIAJMAZAMBEgACEQEDEQH/xAAfAAAB\nBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0B\nAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp\nKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImK\nkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj\n5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ\n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', cb); -}; + if (!possible.test(string)) { + return string; + } + return string.replace(badChars, escapeChar); +} -},{"../../app/lib/make-image":2}],34:[function(require,module,exports){ -'use strict'; +function isEmpty(value) { + if (!value && value !== 0) { + return true; + } else if (isArray(value) && value.length === 0) { + return true; + } else { + return false; + } +} -module.exports = { - singlePortrait: require('./single-portrait') -}; +function blockParams(params, ids) { + params.path = ids; + return params; +} -},{"./single-portrait":35}],35:[function(require,module,exports){ -'use strict'; +function appendContextPath(contextPath, id) { + return (contextPath ? contextPath + '.' : '') + id; +} +},{}],59:[function(require,module,exports){ +// Create a simple path alias to allow browserify to resolve +// the runtime on a supported path. +module.exports = require('./dist/cjs/handlebars.runtime')['default']; -var makeImage = require('../../app/lib/make-image'); - -module.exports = function (cb) { - makeImage('data:image/png;base64,\n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\nRWARCPwfuNDlwVfqKPUAAAAASUVORK5CYII=', cb); -}; - -},{"../../app/lib/make-image":2}]},{},[1]) +},{"./dist/cjs/handlebars.runtime":52}]},{},[2]) //# sourceMappingURL=comicbook.js.map diff --git a/dist/comicbook.js.map b/dist/comicbook.js.map index dc2854d..e2a508d 100644 --- a/dist/comicbook.js.map +++ b/dist/comicbook.js.map @@ -2,82 +2,130 @@ "version": 3, "sources": [ "node_modules/browser-pack/_prelude.js", + "/Users/bala/dev/HTML5-Comic-Book-Reader/app/comic-book.js", "/Users/bala/dev/HTML5-Comic-Book-Reader/app/index.js", - "/Users/bala/dev/HTML5-Comic-Book-Reader/app/lib/make-image.js", - "/Users/bala/dev/HTML5-Comic-Book-Reader/app/view/canvas.js", - "node_modules/babel-runtime/core-js/object/assign.js", + "/Users/bala/dev/HTML5-Comic-Book-Reader/app/view/load-indicator.js", + "/Users/bala/dev/HTML5-Comic-Book-Reader/app/view/progress-bar.js", + "app/view/template/progress-bar.handlebars", + "node_modules/babel-runtime/core-js/map.js", "node_modules/babel-runtime/core-js/object/create.js", "node_modules/babel-runtime/core-js/object/define-property.js", "node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js", + "node_modules/babel-runtime/core-js/set.js", "node_modules/babel-runtime/helpers/class-call-check.js", "node_modules/babel-runtime/helpers/create-class.js", "node_modules/babel-runtime/helpers/get.js", "node_modules/babel-runtime/helpers/inherits.js", - "node_modules/base64-js/lib/b64.js", - "node_modules/browserify/lib/_empty.js", - "node_modules/buffer/index.js", - "node_modules/core-js/library/fn/object/assign.js", + "node_modules/core-js/library/fn/map.js", "node_modules/core-js/library/fn/object/create.js", "node_modules/core-js/library/fn/object/define-property.js", "node_modules/core-js/library/fn/object/get-own-property-descriptor.js", - "node_modules/core-js/library/modules/$.assign.js", + "node_modules/core-js/library/fn/set.js", + "node_modules/core-js/library/modules/$.assert.js", + "node_modules/core-js/library/modules/$.cof.js", + "node_modules/core-js/library/modules/$.collection-strong.js", + "node_modules/core-js/library/modules/$.collection-to-json.js", + "node_modules/core-js/library/modules/$.collection.js", + "node_modules/core-js/library/modules/$.ctx.js", "node_modules/core-js/library/modules/$.def.js", - "node_modules/core-js/library/modules/$.enum-keys.js", + "node_modules/core-js/library/modules/$.for-of.js", "node_modules/core-js/library/modules/$.fw.js", "node_modules/core-js/library/modules/$.get-names.js", + "node_modules/core-js/library/modules/$.iter-call.js", + "node_modules/core-js/library/modules/$.iter-define.js", + "node_modules/core-js/library/modules/$.iter.js", "node_modules/core-js/library/modules/$.js", - "node_modules/core-js/library/modules/es6.object.assign.js", + "node_modules/core-js/library/modules/$.mix.js", + "node_modules/core-js/library/modules/$.redef.js", + "node_modules/core-js/library/modules/$.shared.js", + "node_modules/core-js/library/modules/$.species.js", + "node_modules/core-js/library/modules/$.string-at.js", + "node_modules/core-js/library/modules/$.uid.js", + "node_modules/core-js/library/modules/$.unscope.js", + "node_modules/core-js/library/modules/$.wks.js", + "node_modules/core-js/library/modules/es6.array.iterator.js", + "node_modules/core-js/library/modules/es6.map.js", "node_modules/core-js/library/modules/es6.object.statics-accept-primitives.js", + "node_modules/core-js/library/modules/es6.object.to-string.js", + "node_modules/core-js/library/modules/es6.set.js", + "node_modules/core-js/library/modules/es6.string.iterator.js", + "node_modules/core-js/library/modules/es7.map.to-json.js", + "node_modules/core-js/library/modules/es7.set.to-json.js", + "node_modules/core-js/library/modules/web.dom.iterable.js", "node_modules/events/events.js", - "node_modules/ieee754/index.js", - "node_modules/imagediff/browser/canvas.js", - "node_modules/imagediff/imagediff.js", - "node_modules/is-array/index.js", - "/Users/bala/dev/HTML5-Comic-Book-Reader/test/data/index.js", - "/Users/bala/dev/HTML5-Comic-Book-Reader/test/data/portrait1.js", - "/Users/bala/dev/HTML5-Comic-Book-Reader/test/fixture/index.js", - "/Users/bala/dev/HTML5-Comic-Book-Reader/test/fixture/single-portrait.js" + "node_modules/handlebars/dist/cjs/handlebars.runtime.js", + "node_modules/handlebars/dist/cjs/handlebars/base.js", + "node_modules/handlebars/dist/cjs/handlebars/exception.js", + "node_modules/handlebars/dist/cjs/handlebars/no-conflict.js", + "node_modules/handlebars/dist/cjs/handlebars/runtime.js", + "node_modules/handlebars/dist/cjs/handlebars/safe-string.js", + "node_modules/handlebars/dist/cjs/handlebars/utils.js", + "node_modules/handlebars/runtime.js" ], "names": [], - "mappings": "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,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;OACnF;;AAED,UAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;KACzB;;;SAvIG,MAAM;GAAS,YAAY;;AA0IjC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAA;;;ACjJvB;;ACAA;;ACAA;;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC75CA;AACA;;ACDA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjCA,MAAM,CAAC,OAAO,GAAG;AACf,WAAS,EAAE,OAAO,CAAC,aAAa,CAAC;CAClC,CAAA;;;;;ACFD,IAAI,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAA;;AAEnD,MAAM,CAAC,OAAO,GAAG,UAAC,EAAE,EAAK;AACvB,WAAS,mlVAqKP,EAAE,CAAC,CAAA;CACN,CAAA;;;;;ACzKD,MAAM,CAAC,OAAO,GAAG;AACf,gBAAc,EAAE,OAAO,CAAC,mBAAmB,CAAC;CAC7C,CAAA;;;;;ACFD,IAAI,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAA;;AAEnD,MAAM,CAAC,OAAO,GAAG,UAAC,EAAE,EAAK;AACvB,WAAS,q8xBAoYP,EAAE,CAAC,CAAA;CACN,CAAA", + "mappings": "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I,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;KAC/B;;;SAvBG,WAAW;;;AA0BjB,MAAM,CAAC,OAAO,GAAG,WAAW,CAAA;;;AC5B5B;AACA;AACA;;ACFA;;ACAA;;ACAA;;ACAA;;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;;ACJA;;ACAA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;;ACLA;;ACAA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o {\n canvas.drawImage(image)\n document.body.appendChild(canvas.canvas)\n}\nimage.src = 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_01.jpg'\n*/\n\nlet testImages = require('../test/data')\nlet fixtureImages = require('../test/fixture')\nlet imagediff = require('imagediff')\n\ntestImages.portrait1((testImage) => {\n fixtureImages.singlePortrait((fixtureImage) => {\n canvas.drawImage(testImage)\n\n console.log(imagediff.equal(canvas.canvas, fixtureImage))\n\n console.log(testImage.width, testImage.height)\n console.log(fixtureImage.width, fixtureImage.height)\n console.log(canvas.canvas.width, canvas.canvas.height)\n\n document.body.appendChild(canvas.canvas)\n })\n})\n\n", - "\nmodule.exports = function makeImage (src, cb) {\n let image = new window.Image()\n image.onload = () => {\n cb(image)\n }\n image.src = src\n}\n\n", - "let EventEmitter = require('events').EventEmitter\n\n// TODO replace\nfunction windowWidth () {\n return window.innerWidth\n}\n\nclass Canvas extends EventEmitter {\n\n constructor (options) {\n super()\n\n this.options = Object.assign({\n // fitWidth, fitWindow, manua\n zoomMode: 'fitWidth',\n // ltr, rtl\n readDirection: 'ltr',\n // should two pages be rendered at a time?\n doublePage: false\n }, options)\n\n this.canvas = document.createElement('canvas')\n this.context = this.canvas.getContext('2d')\n }\n\n drawImage (page, page2) {\n this.emit('draw:start')\n\n if (!(page instanceof window.Image) || (this.options.doublePage && !(page2 instanceof window.Image))) {\n throw new Error('Invalid image')\n }\n\n let zoomScale\n let offsetW = 0\n let offsetH = 0\n let width = page.width\n let height = page.height\n let doublePageMode = this.options.doublePage\n let canvasWidth\n let canvasHeight\n let pageWidth\n let pageHeight\n\n // reset the canvas to stop duplicate pages showing\n this.canvas.width = 0\n this.canvas.height = 0\n\n // show double page spreads on a single page\n let isDoublePageSpread = (\n page2 &&\n (page.width > page.height || page2.width > page2.height) &&\n doublePageMode\n )\n\n if (isDoublePageSpread) doublePageMode = false\n\n if (doublePageMode) {\n\n // for double page spreads, factor in the width of both pages\n if (typeof page2 === 'object') {\n width += page2.width\n // if this is the last page and there is no page2, still keep the canvas wide\n } else {\n width += width\n }\n }\n\n // update the page this.scale if a non manual mode has been chosen\n switch (this.options.zoomMode) {\n\n case 'manual':\n document.body.style.overflowX = 'auto'\n zoomScale = (doublePageMode) ? this.scale * 2 : this.scale\n break\n\n case 'fitWidth':\n document.body.style.overflowX = 'hidden'\n\n // this.scale up if the window is wider than the page, scale down if the window\n // is narrower than the page\n zoomScale = (windowWidth() > width) ? ((windowWidth() - width) / windowWidth()) + 1 : windowWidth() / width\n this.scale = zoomScale\n break\n\n case 'fitWindow':\n document.body.style.overflowX = 'hidden'\n\n let widthScale = (windowWidth() > width)\n ? ((windowWidth() - width) / windowWidth()) + 1 // scale up if the window is wider than the page\n : windowWidth() / width // scale down if the window is narrower than the page\n let windowHeight = window.innerHeight\n let heightScale = (windowHeight > height)\n ? ((windowHeight - height) / windowHeight) + 1 // scale up if the window is wider than the page\n : windowHeight / height // scale down if the window is narrower than the page\n\n zoomScale = (widthScale > heightScale) ? heightScale : widthScale\n this.scale = zoomScale\n break\n }\n\n canvasWidth = page.width * zoomScale\n canvasHeight = page.height * zoomScale\n\n pageWidth = (this.options.zoomMode === 'manual') ? page.width * this.scale : canvasWidth\n pageHeight = (this.options.zoomMode === 'manual') ? page.height * this.scale : canvasHeight\n\n canvasHeight = pageHeight\n\n // make sure the canvas is always at least full screen, even if the page is narrower than the screen\n this.canvas.width = (canvasWidth < windowWidth()) ? windowWidth() : canvasWidth\n this.canvas.height = (canvasHeight < window.innerHeight) ? window.innerHeight : canvasHeight\n\n // always keep pages centered\n if (this.options.zoomMode === 'manual' || this.options.zoomMode === 'fitWindow') {\n\n // work out a horizontal position\n if (canvasWidth < windowWidth()) {\n offsetW = (windowWidth() - pageWidth) / 2\n if (this.options.doublePage) { offsetW = offsetW - pageWidth / 2 }\n }\n\n // work out a vertical position\n if (canvasHeight < window.innerHeight) {\n offsetH = (window.innerHeight - pageHeight) / 2\n }\n }\n\n // in manga double page mode reverse the page(s)\n if (this.options.manga && this.options.doublePage && typeof page2 === 'object') {\n let tmpPage = page\n let tmpPage2 = page2\n page = tmpPage2\n page2 = tmpPage\n }\n\n // draw the page(s)\n this.context.drawImage(page, offsetW, offsetH, pageWidth, pageHeight)\n if (this.options.doublePage && typeof page2 === 'object') {\n this.context.drawImage(page2, pageWidth + offsetW, offsetH, pageWidth, pageHeight)\n }\n\n this.emit('draw:finish')\n }\n}\n\nmodule.exports = Canvas\n", - "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", + "let EventEmitter = require('events').EventEmitter\nlet LoadIndicator = require('./view/load-indicator')\nlet ProgressBar = require('./view/progress-bar')\n\nclass ComicBook extends EventEmitter {\n\n constructor (srcs = []) {\n super()\n\n // requested image srcs\n this.srcs = new Set(srcs)\n\n // loaded image objects\n this.pages = new Map()\n\n this.loadIndicator = new LoadIndicator()\n this.progressBar = new ProgressBar()\n\n this.addEventListeners()\n }\n\n addEventListeners () {\n this.on('preload:start', this.loadIndicator.show.bind(this.loadIndicator))\n this.on('preload:start', this.progressBar.show.bind(this.progressBar))\n this.on('preload:image', this.updateProgressBar.bind(this))\n this.on('preload:finish', this.progressBar.hide.bind(this.progressBar))\n }\n\n render () {\n this.el = document.createElement('div')\n this.el.appendChild(this.progressBar.el)\n return this\n }\n\n preload () {\n let self = this\n\n this.emit('preload:start')\n\n this.srcs.forEach((src, pageIndex) => {\n let image = new window.Image()\n\n image.src = src\n image.onload = setImage\n\n function setImage () {\n self.pages.set(pageIndex, this)\n self.emit('preload:image', this)\n\n if (self.pages.size === self.srcs.size) {\n self.emit('preload:finish')\n }\n }\n })\n }\n\n updateProgressBar () {\n let percentage = Math.floor((this.pages.size / this.srcs.size) * 100)\n this.progressBar.update(percentage)\n }\n}\n\nmodule.exports = ComicBook\n\n", + "let ComicBook = window.ComicBook = require('./comic-book')\nlet comic = new ComicBook([\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_00.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_01.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_02.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_03.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_04.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_05.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_06.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_07.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_08.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_09.jpg',\n 'https://raw.githubusercontent.com/balaclark/HTML5-Comic-Book-Reader/master/examples/goldenboy/goldenboy_10.jpg'\n])\n\ndocument.addEventListener('DOMContentLoaded', () => {\n document.body.appendChild(comic.render().el)\n comic.preload()\n}, false)\n\n", + "let EventEmitter = require('events').EventEmitter\n\nclass LoadIndicator extends EventEmitter {\n constructor () {\n super()\n this.render().hide()\n }\n\n render () {\n this.el = document.createElement('div')\n this.el.id = 'cb-loading-overlay'\n return this\n }\n\n show () {\n this.el.style.display = 'block'\n this.emit('show', this)\n }\n\n hide () {\n this.el.style.display = 'none'\n this.emit('hide', this)\n }\n}\n\nmodule.exports = LoadIndicator\n\n", + "let template = require('./template/progress-bar.handlebars')\n\nclass ProgressBar {\n constructor () {\n this.createElements()\n this.hide()\n }\n\n createElements () {\n let el = document.createElement('div')\n el.innerHTML = template()\n this.el = el.firstChild\n this.progressEl = this.el.querySelector('.progressbar-value')\n }\n\n update (percentage) {\n this.progressEl.style.width = `${percentage}%`\n }\n\n show () {\n this.el.style.display = 'block'\n }\n\n hide () {\n this.el.style.display = 'none'\n }\n}\n\nmodule.exports = ProgressBar\n", + "var templater = require(\"handlebars/runtime\")[\"default\"].template;module.exports = templater({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n return \"
\\n\t
\\n\t\t
\\n\t
\\n
\\n\";\n},\"useData\":true});", + "module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };", + "module.exports = { \"default\": require(\"core-js/library/fn/set\"), __esModule: true };", "\"use strict\";\n\nexports[\"default\"] = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nexports.__esModule = true;", "\"use strict\";\n\nvar _Object$defineProperty = require(\"babel-runtime/core-js/object/define-property\")[\"default\"];\n\nexports[\"default\"] = (function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nexports.__esModule = true;", "\"use strict\";\n\nvar _Object$getOwnPropertyDescriptor = require(\"babel-runtime/core-js/object/get-own-property-descriptor\")[\"default\"];\n\nexports[\"default\"] = function get(_x, _x2, _x3) {\n var _again = true;\n\n _function: while (_again) {\n var object = _x,\n property = _x2,\n receiver = _x3;\n desc = parent = getter = undefined;\n _again = false;\n if (object === null) object = Function.prototype;\n\n var desc = _Object$getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n _x = parent;\n _x2 = property;\n _x3 = receiver;\n _again = true;\n continue _function;\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n }\n};\n\nexports.__esModule = true;", "\"use strict\";\n\nvar _Object$create = require(\"babel-runtime/core-js/object/create\")[\"default\"];\n\nexports[\"default\"] = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) subClass.__proto__ = superClass;\n};\n\nexports.__esModule = true;", - "var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n", - null, - "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('is-array')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Note:\n *\n * - Implementation must support adding new properties to `Uint8Array` instances.\n * Firefox 4-29 lacked support, fixed in Firefox 30+.\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n *\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will\n * get the Object implementation, which is slower but will work correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = (function () {\n function Foo () {}\n try {\n var buf = new ArrayBuffer(0)\n var arr = new Uint8Array(buf)\n arr.foo = function () { return 42 }\n arr.constructor = Foo\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Foo && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n})()\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n this.length = 0\n this.parent = undefined\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n } else if (list.length === 1) {\n return list[0]\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\n// pre-set for values that may exist in the future\nBuffer.prototype.length = undefined\nBuffer.prototype.parent = undefined\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` will be removed in Node 0.13+\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` will be removed in Node 0.13+\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n var res = ''\n var tmp = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n if (buf[i] <= 0x7F) {\n res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])\n tmp = ''\n } else {\n tmp += '%' + buf[i].toString(16)\n }\n }\n\n return res + decodeUtf8Char(tmp)\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = value\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = value\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = value\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = value\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = value\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = value\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = value\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated, will be removed in node 0.13+\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-z\\-]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n var i = 0\n\n for (; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (leadSurrogate) {\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n } else {\n // valid surrogate pair\n codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000\n leadSurrogate = null\n }\n } else {\n // no lead yet\n\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else {\n // valid lead\n leadSurrogate = codePoint\n continue\n }\n }\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = null\n }\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x200000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction decodeUtf8Char (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n return String.fromCharCode(0xFFFD) // UTF 8 invalid char\n }\n}\n", - "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/$').core.Object.assign;", + "require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nmodule.exports = require('../modules/$').core.Map;", "var $ = require('../../modules/$');\nmodule.exports = function create(P, D){\n return $.create(P, D);\n};", "var $ = require('../../modules/$');\nmodule.exports = function defineProperty(it, key, desc){\n return $.setDesc(it, key, desc);\n};", "var $ = require('../../modules/$');\nrequire('../../modules/es6.object.statics-accept-primitives');\nmodule.exports = function getOwnPropertyDescriptor(it, key){\n return $.getDesc(it, key);\n};", - "var $ = require('./$')\n , enumKeys = require('./$.enum-keys');\n// 19.1.2.1 Object.assign(target, source, ...)\n/* eslint-disable no-unused-vars */\nmodule.exports = Object.assign || function assign(target, source){\n/* eslint-enable no-unused-vars */\n var T = Object($.assertDefined(target))\n , l = arguments.length\n , i = 1;\n while(l > i){\n var S = $.ES5Object(arguments[i++])\n , keys = enumKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)T[key = keys[j++]] = S[key];\n }\n return T;\n};", + "require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nmodule.exports = require('../modules/$').core.Set;", + "var $ = require('./$');\nfunction assert(condition, msg1, msg2){\n if(!condition)throw TypeError(msg2 ? msg1 + msg2 : msg1);\n}\nassert.def = $.assertDefined;\nassert.fn = function(it){\n if(!$.isFunction(it))throw TypeError(it + ' is not a function!');\n return it;\n};\nassert.obj = function(it){\n if(!$.isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\nassert.inst = function(it, Constructor, name){\n if(!(it instanceof Constructor))throw TypeError(name + \": use the 'new' operator!\");\n return it;\n};\nmodule.exports = assert;", + "var $ = require('./$')\n , TAG = require('./$.wks')('toStringTag')\n , toString = {}.toString;\nfunction cof(it){\n return toString.call(it).slice(8, -1);\n}\ncof.classof = function(it){\n var O, T;\n return it == undefined ? it === undefined ? 'Undefined' : 'Null'\n : typeof (T = (O = Object(it))[TAG]) == 'string' ? T : cof(O);\n};\ncof.set = function(it, tag, stat){\n if(it && !$.has(it = stat ? it : it.prototype, TAG))$.hide(it, TAG, tag);\n};\nmodule.exports = cof;", + "'use strict';\nvar $ = require('./$')\n , ctx = require('./$.ctx')\n , safe = require('./$.uid').safe\n , assert = require('./$.assert')\n , forOf = require('./$.for-of')\n , step = require('./$.iter').step\n , $has = $.has\n , set = $.set\n , isObject = $.isObject\n , hide = $.hide\n , isExtensible = Object.isExtensible || isObject\n , ID = safe('id')\n , O1 = safe('O1')\n , LAST = safe('last')\n , FIRST = safe('first')\n , ITER = safe('iter')\n , SIZE = $.DESC ? safe('size') : 'size'\n , id = 0;\n\nfunction fastKey(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!$has(it, ID)){\n // can't set id to frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add id\n if(!create)return 'E';\n // add missing object id\n hide(it, ID, ++id);\n // return object id with prefix\n } return 'O' + it[ID];\n}\n\nfunction getEntry(that, key){\n // fast case\n var index = fastKey(key), entry;\n if(index !== 'F')return that[O1][index];\n // frozen object case\n for(entry = that[FIRST]; entry; entry = entry.n){\n if(entry.k == key)return entry;\n }\n}\n\nmodule.exports = {\n getConstructor: function(wrapper, NAME, IS_MAP, ADDER){\n var C = wrapper(function(that, iterable){\n assert.inst(that, C, NAME);\n set(that, O1, $.create(null));\n set(that, SIZE, 0);\n set(that, LAST, undefined);\n set(that, FIRST, undefined);\n if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n });\n require('./$.mix')(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear(){\n for(var that = this, data = that[O1], entry = that[FIRST]; entry; entry = entry.n){\n entry.r = true;\n if(entry.p)entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that[FIRST] = that[LAST] = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function(key){\n var that = this\n , entry = getEntry(that, key);\n if(entry){\n var next = entry.n\n , prev = entry.p;\n delete that[O1][entry.i];\n entry.r = true;\n if(prev)prev.n = next;\n if(next)next.p = prev;\n if(that[FIRST] == entry)that[FIRST] = next;\n if(that[LAST] == entry)that[LAST] = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /*, that = undefined */){\n var f = ctx(callbackfn, arguments[1], 3)\n , entry;\n while(entry = entry ? entry.n : this[FIRST]){\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while(entry && entry.r)entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key){\n return !!getEntry(this, key);\n }\n });\n if($.DESC)$.setDesc(C.prototype, 'size', {\n get: function(){\n return assert.def(this[SIZE]);\n }\n });\n return C;\n },\n def: function(that, key, value){\n var entry = getEntry(that, key)\n , prev, index;\n // change existing entry\n if(entry){\n entry.v = value;\n // create new entry\n } else {\n that[LAST] = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that[LAST], // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if(!that[FIRST])that[FIRST] = entry;\n if(prev)prev.n = entry;\n that[SIZE]++;\n // add to index\n if(index !== 'F')that[O1][index] = entry;\n } return that;\n },\n getEntry: getEntry,\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n setIter: function(C, NAME, IS_MAP){\n require('./$.iter-define')(C, NAME, function(iterated, kind){\n set(this, ITER, {o: iterated, k: kind});\n }, function(){\n var iter = this[ITER]\n , kind = iter.k\n , entry = iter.l;\n // revert to the last existing entry\n while(entry && entry.r)entry = entry.p;\n // get next entry\n if(!iter.o || !(iter.l = entry = entry ? entry.n : iter.o[FIRST])){\n // or finish the iteration\n iter.o = undefined;\n return step(1);\n }\n // return step by kind\n if(kind == 'keys' )return step(0, entry.k);\n if(kind == 'values')return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);\n }\n};", + "// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $def = require('./$.def')\n , forOf = require('./$.for-of');\nmodule.exports = function(NAME){\n $def($def.P, NAME, {\n toJSON: function toJSON(){\n var arr = [];\n forOf(this, false, arr.push, arr);\n return arr;\n }\n });\n};", + "'use strict';\nvar $ = require('./$')\n , $def = require('./$.def')\n , $iter = require('./$.iter')\n , BUGGY = $iter.BUGGY\n , forOf = require('./$.for-of')\n , assertInstance = require('./$.assert').inst\n , INTERNAL = require('./$.uid').safe('internal');\n\nmodule.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){\n var Base = $.g[NAME]\n , C = Base\n , ADDER = IS_MAP ? 'set' : 'add'\n , proto = C && C.prototype\n , O = {};\n if(!$.DESC || !$.isFunction(C) || !(IS_WEAK || !BUGGY && proto.forEach && proto.entries)){\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n require('./$.mix')(C.prototype, methods);\n } else {\n C = wrapper(function(target, iterable){\n assertInstance(target, C, NAME);\n target[INTERNAL] = new Base;\n if(iterable != undefined)forOf(iterable, IS_MAP, target[ADDER], target);\n });\n $.each.call('add,clear,delete,forEach,get,has,set,keys,values,entries'.split(','),function(KEY){\n var chain = KEY == 'add' || KEY == 'set';\n if(KEY in proto)$.hide(C.prototype, KEY, function(a, b){\n var result = this[INTERNAL][KEY](a === 0 ? 0 : a, b);\n return chain ? this : result;\n });\n });\n if('size' in proto)$.setDesc(C.prototype, 'size', {\n get: function(){\n return this[INTERNAL].size;\n }\n });\n }\n\n require('./$.cof').set(C, NAME);\n\n O[NAME] = C;\n $def($def.G + $def.W + $def.F, O);\n require('./$.species')(C);\n\n if(!IS_WEAK)common.setIter(C, NAME, IS_MAP);\n\n return C;\n};", + "// Optional / simple context binding\nvar assertFunction = require('./$.assert').fn;\nmodule.exports = function(fn, that, length){\n assertFunction(fn);\n if(~length && that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n } return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};", "var $ = require('./$')\n , global = $.g\n , core = $.core\n , isFunction = $.isFunction;\nfunction ctx(fn, that){\n return function(){\n return fn.apply(that, arguments);\n };\n}\n// type bitmap\n$def.F = 1; // forced\n$def.G = 2; // global\n$def.S = 4; // static\n$def.P = 8; // proto\n$def.B = 16; // bind\n$def.W = 32; // wrap\nfunction $def(type, name, source){\n var key, own, out, exp\n , isGlobal = type & $def.G\n , isProto = type & $def.P\n , target = isGlobal ? global : type & $def.S\n ? global[name] : (global[name] || {}).prototype\n , exports = isGlobal ? core : core[name] || (core[name] = {});\n if(isGlobal)source = name;\n for(key in source){\n // contains in native\n own = !(type & $def.F) && target && key in target;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n if(isGlobal && !isFunction(target[key]))exp = source[key];\n // bind timers to global for call from export context\n else if(type & $def.B && own)exp = ctx(out, global);\n // wrap global constructors for prevent change them in library\n else if(type & $def.W && target[key] == out)!function(C){\n exp = function(param){\n return this instanceof C ? new C(param) : C(param);\n };\n exp.prototype = C.prototype;\n }(out);\n else exp = isProto && isFunction(out) ? ctx(Function.call, out) : out;\n // export\n exports[key] = exp;\n if(isProto)(exports.prototype || (exports.prototype = {}))[key] = out;\n }\n}\nmodule.exports = $def;", - "var $ = require('./$');\nmodule.exports = function(it){\n var keys = $.getKeys(it)\n , getDesc = $.getDesc\n , getSymbols = $.getSymbols;\n if(getSymbols)$.each.call(getSymbols(it), function(key){\n if(getDesc(it, key).enumerable)keys.push(key);\n });\n return keys;\n};", + "var ctx = require('./$.ctx')\n , get = require('./$.iter').get\n , call = require('./$.iter-call');\nmodule.exports = function(iterable, entries, fn, that){\n var iterator = get(iterable)\n , f = ctx(fn, that, entries ? 2 : 1)\n , step;\n while(!(step = iterator.next()).done){\n if(call(iterator, f, step.value, entries) === false){\n return call.close(iterator);\n }\n }\n};", "module.exports = function($){\n $.FW = false;\n $.path = $.core;\n return $;\n};", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\r\nvar $ = require('./$')\r\n , toString = {}.toString\r\n , getNames = $.getNames;\r\n\r\nvar windowNames = typeof window == 'object' && Object.getOwnPropertyNames\r\n ? Object.getOwnPropertyNames(window) : [];\r\n\r\nfunction getWindowNames(it){\r\n try {\r\n return getNames(it);\r\n } catch(e){\r\n return windowNames.slice();\r\n }\r\n}\r\n\r\nmodule.exports.get = function getOwnPropertyNames(it){\r\n if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it);\r\n return getNames($.toObject(it));\r\n};", + "var assertObject = require('./$.assert').obj;\nfunction close(iterator){\n var ret = iterator['return'];\n if(ret !== undefined)assertObject(ret.call(iterator));\n}\nfunction call(iterator, fn, value, entries){\n try {\n return entries ? fn(assertObject(value)[0], value[1]) : fn(value);\n } catch(e){\n close(iterator);\n throw e;\n }\n}\ncall.close = close;\nmodule.exports = call;", + "var $def = require('./$.def')\n , $redef = require('./$.redef')\n , $ = require('./$')\n , cof = require('./$.cof')\n , $iter = require('./$.iter')\n , SYMBOL_ITERATOR = require('./$.wks')('iterator')\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values'\n , Iterators = $iter.Iterators;\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCE){\n $iter.create(Constructor, NAME, next);\n function createMethod(kind){\n function $$(that){\n return new Constructor(that, kind);\n }\n switch(kind){\n case KEYS: return function keys(){ return $$(this); };\n case VALUES: return function values(){ return $$(this); };\n } return function entries(){ return $$(this); };\n }\n var TAG = NAME + ' Iterator'\n , proto = Base.prototype\n , _native = proto[SYMBOL_ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , _default = _native || createMethod(DEFAULT)\n , methods, key;\n // Fix native\n if(_native){\n var IteratorPrototype = $.getProto(_default.call(new Base));\n // Set @@toStringTag to native iterators\n cof.set(IteratorPrototype, TAG, true);\n // FF fix\n if($.FW && $.has(proto, FF_ITERATOR))$iter.set(IteratorPrototype, $.that);\n }\n // Define iterator\n if($.FW || FORCE)$iter.set(proto, _default);\n // Plug for library\n Iterators[NAME] = _default;\n Iterators[TAG] = $.that;\n if(DEFAULT){\n methods = {\n keys: IS_SET ? _default : createMethod(KEYS),\n values: DEFAULT == VALUES ? _default : createMethod(VALUES),\n entries: DEFAULT != VALUES ? _default : createMethod('entries')\n };\n if(FORCE)for(key in methods){\n if(!(key in proto))$redef(proto, key, methods[key]);\n } else $def($def.P + $def.F * $iter.BUGGY, NAME, methods);\n }\n};", + "'use strict';\nvar $ = require('./$')\n , cof = require('./$.cof')\n , classof = cof.classof\n , assert = require('./$.assert')\n , assertObject = assert.obj\n , SYMBOL_ITERATOR = require('./$.wks')('iterator')\n , FF_ITERATOR = '@@iterator'\n , Iterators = require('./$.shared')('iterators')\n , IteratorPrototype = {};\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nsetIterator(IteratorPrototype, $.that);\nfunction setIterator(O, value){\n $.hide(O, SYMBOL_ITERATOR, value);\n // Add iterator for FF iterator protocol\n if(FF_ITERATOR in [])$.hide(O, FF_ITERATOR, value);\n}\n\nmodule.exports = {\n // Safari has buggy iterators w/o `next`\n BUGGY: 'keys' in [] && !('next' in [].keys()),\n Iterators: Iterators,\n step: function(done, value){\n return {value: value, done: !!done};\n },\n is: function(it){\n var O = Object(it)\n , Symbol = $.g.Symbol;\n return (Symbol && Symbol.iterator || FF_ITERATOR) in O\n || SYMBOL_ITERATOR in O\n || $.has(Iterators, classof(O));\n },\n get: function(it){\n var Symbol = $.g.Symbol\n , getIter;\n if(it != undefined){\n getIter = it[Symbol && Symbol.iterator || FF_ITERATOR]\n || it[SYMBOL_ITERATOR]\n || Iterators[classof(it)];\n }\n assert($.isFunction(getIter), it, ' is not iterable!');\n return assertObject(getIter.call(it));\n },\n set: setIterator,\n create: function(Constructor, NAME, next, proto){\n Constructor.prototype = $.create(proto || IteratorPrototype, {next: $.desc(1, next)});\n cof.set(Constructor, NAME + ' Iterator');\n }\n};", "'use strict';\nvar global = typeof self != 'undefined' ? self : Function('return this')()\n , core = {}\n , defineProperty = Object.defineProperty\n , hasOwnProperty = {}.hasOwnProperty\n , ceil = Math.ceil\n , floor = Math.floor\n , max = Math.max\n , min = Math.min;\n// The engine works fine with descriptors? Thank's IE8 for his funny defineProperty.\nvar DESC = !!function(){\n try {\n return defineProperty({}, 'a', {get: function(){ return 2; }}).a == 2;\n } catch(e){ /* empty */ }\n}();\nvar hide = createDefiner(1);\n// 7.1.4 ToInteger\nfunction toInteger(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n}\nfunction desc(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n}\nfunction simpleSet(object, key, value){\n object[key] = value;\n return object;\n}\nfunction createDefiner(bitmap){\n return DESC ? function(object, key, value){\n return $.setDesc(object, key, desc(bitmap, value));\n } : simpleSet;\n}\n\nfunction isObject(it){\n return it !== null && (typeof it == 'object' || typeof it == 'function');\n}\nfunction isFunction(it){\n return typeof it == 'function';\n}\nfunction assertDefined(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n}\n\nvar $ = module.exports = require('./$.fw')({\n g: global,\n core: core,\n html: global.document && document.documentElement,\n // http://jsperf.com/core-js-isobject\n isObject: isObject,\n isFunction: isFunction,\n that: function(){\n return this;\n },\n // 7.1.4 ToInteger\n toInteger: toInteger,\n // 7.1.15 ToLength\n toLength: function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n },\n toIndex: function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n },\n has: function(it, key){\n return hasOwnProperty.call(it, key);\n },\n create: Object.create,\n getProto: Object.getPrototypeOf,\n DESC: DESC,\n desc: desc,\n getDesc: Object.getOwnPropertyDescriptor,\n setDesc: defineProperty,\n setDescs: Object.defineProperties,\n getKeys: Object.keys,\n getNames: Object.getOwnPropertyNames,\n getSymbols: Object.getOwnPropertySymbols,\n assertDefined: assertDefined,\n // Dummy, fix for not array-like ES3 string in es5 module\n ES5Object: Object,\n toObject: function(it){\n return $.ES5Object(assertDefined(it));\n },\n hide: hide,\n def: createDefiner(0),\n set: global.Symbol ? simpleSet : hide,\n each: [].forEach\n});\n/* eslint-disable no-undef */\nif(typeof __e != 'undefined')__e = core;\nif(typeof __g != 'undefined')__g = global;", - "// 19.1.3.1 Object.assign(target, source)\nvar $def = require('./$.def');\n$def($def.S, 'Object', {assign: require('./$.assign')});", + "var $redef = require('./$.redef');\r\nmodule.exports = function(target, src){\r\n for(var key in src)$redef(target, key, src[key]);\r\n return target;\r\n};", + "module.exports = require('./$').hide;", + "var $ = require('./$')\r\n , SHARED = '__core-js_shared__'\r\n , store = $.g[SHARED] || ($.g[SHARED] = {});\r\nmodule.exports = function(key){\r\n return store[key] || (store[key] = {});\r\n};", + "var $ = require('./$')\n , SPECIES = require('./$.wks')('species');\nmodule.exports = function(C){\n if($.DESC && !(SPECIES in C))$.setDesc(C, SPECIES, {\n configurable: true,\n get: $.that\n });\n};", + "// true -> String#at\n// false -> String#codePointAt\nvar $ = require('./$');\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String($.assertDefined(that))\n , i = $.toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l\n || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};", + "var sid = 0;\nfunction uid(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++sid + Math.random()).toString(36));\n}\nuid.safe = require('./$').g.Symbol || uid;\nmodule.exports = uid;", + "module.exports = function(){ /* empty */ };", + "var global = require('./$').g\n , store = require('./$.shared')('wks');\nmodule.exports = function(name){\n return store[name] || (store[name] =\n global.Symbol && global.Symbol[name] || require('./$.uid').safe('Symbol.' + name));\n};", + "var $ = require('./$')\n , setUnscope = require('./$.unscope')\n , ITER = require('./$.uid').safe('iter')\n , $iter = require('./$.iter')\n , step = $iter.step\n , Iterators = $iter.Iterators;\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nrequire('./$.iter-define')(Array, 'Array', function(iterated, kind){\n $.set(this, ITER, {o: $.toObject(iterated), i: 0, k: kind});\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var iter = this[ITER]\n , O = iter.o\n , kind = iter.k\n , index = iter.i++;\n if(!O || index >= O.length){\n iter.o = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\nsetUnscope('keys');\nsetUnscope('values');\nsetUnscope('entries');", + "'use strict';\nvar strong = require('./$.collection-strong');\n\n// 23.1 Map Objects\nrequire('./$.collection')('Map', function(get){\n return function Map(){ return get(this, arguments[0]); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key){\n var entry = strong.getEntry(this, key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value){\n return strong.def(this, key === 0 ? 0 : key, value);\n }\n}, strong, true);", "var $ = require('./$')\n , $def = require('./$.def')\n , isObject = $.isObject\n , toObject = $.toObject;\n$.each.call(('freeze,seal,preventExtensions,isFrozen,isSealed,isExtensible,' +\n 'getOwnPropertyDescriptor,getPrototypeOf,keys,getOwnPropertyNames').split(',')\n, function(KEY, ID){\n var fn = ($.core.Object || {})[KEY] || Object[KEY]\n , forced = 0\n , method = {};\n method[KEY] = ID == 0 ? function freeze(it){\n return isObject(it) ? fn(it) : it;\n } : ID == 1 ? function seal(it){\n return isObject(it) ? fn(it) : it;\n } : ID == 2 ? function preventExtensions(it){\n return isObject(it) ? fn(it) : it;\n } : ID == 3 ? function isFrozen(it){\n return isObject(it) ? fn(it) : true;\n } : ID == 4 ? function isSealed(it){\n return isObject(it) ? fn(it) : true;\n } : ID == 5 ? function isExtensible(it){\n return isObject(it) ? fn(it) : false;\n } : ID == 6 ? function getOwnPropertyDescriptor(it, key){\n return fn(toObject(it), key);\n } : ID == 7 ? function getPrototypeOf(it){\n return fn(Object($.assertDefined(it)));\n } : ID == 8 ? function keys(it){\n return fn(toObject(it));\n } : require('./$.get-names').get;\n try {\n fn('z');\n } catch(e){\n forced = 1;\n }\n $def($def.S + $def.F * forced, 'Object', method);\n});", + "'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar cof = require('./$.cof')\n , tmp = {};\ntmp[require('./$.wks')('toStringTag')] = 'z';\nif(require('./$').FW && cof(tmp) != 'z'){\n require('./$.redef')(Object.prototype, 'toString', function toString(){\n return '[object ' + cof.classof(this) + ']';\n }, true);\n}", + "'use strict';\nvar strong = require('./$.collection-strong');\n\n// 23.2 Set Objects\nrequire('./$.collection')('Set', function(get){\n return function Set(){ return get(this, arguments[0]); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value){\n return strong.def(this, value = value === 0 ? 0 : value, value);\n }\n}, strong);", + "var set = require('./$').set\n , $at = require('./$.string-at')(true)\n , ITER = require('./$.uid').safe('iter')\n , $iter = require('./$.iter')\n , step = $iter.step;\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./$.iter-define')(String, 'String', function(iterated){\n set(this, ITER, {o: String(iterated), i: 0});\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var iter = this[ITER]\n , O = iter.o\n , index = iter.i\n , point;\n if(index >= O.length)return step(1);\n point = $at(O, index);\n iter.i += point.length;\n return step(0, point);\n});", + "// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nrequire('./$.collection-to-json')('Map');", + "// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nrequire('./$.collection-to-json')('Set');", + "require('./es6.array.iterator');\nvar $ = require('./$')\n , Iterators = require('./$.iter').Iterators\n , ITERATOR = require('./$.wks')('iterator')\n , ArrayValues = Iterators.Array\n , NL = $.g.NodeList\n , HTC = $.g.HTMLCollection\n , NLProto = NL && NL.prototype\n , HTCProto = HTC && HTC.prototype;\nif($.FW){\n if(NL && !(ITERATOR in NLProto))$.hide(NLProto, ITERATOR, ArrayValues);\n if(HTC && !(ITERATOR in HTCProto))$.hide(HTCProto, ITERATOR, ArrayValues);\n}\nIterators.NodeList = Iterators.HTMLCollection = ArrayValues;", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n }\n throw TypeError('Uncaught, unspecified \"error\" event.');\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n var m;\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n var ret;\n if (!emitter._events || !emitter._events[type])\n ret = 0;\n else if (isFunction(emitter._events[type]))\n ret = 1;\n else\n ret = emitter._events[type].length;\n return ret;\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n", - "exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", - "\"use strict\";\n\nmodule.exports = function Canvas () {\n return document.createElement('canvas');\n};\n", - "// js-imagediff 1.0.3\n// (c) 2011-2012 Carl Sutherland, Humble Software\n// Distributed under the MIT License\n// For original source and documentation visit:\n// http://www.github.com/HumbleSoftware/js-imagediff\n\n(function (name, definition) {\n var root = this;\n if (typeof module !== 'undefined') {\n try {\n var Canvas = require('canvas');\n } catch (e) {\n throw new Error(\n e.message + '\\n' +\n 'Please see https://github.com/HumbleSoftware/js-imagediff#cannot-find-module-canvas\\n'\n );\n }\n module.exports = definition(root, name, Canvas);\n } else if (typeof define === 'function' && typeof define.amd === 'object') {\n define(definition);\n } else {\n root[name] = definition(root, name);\n }\n})('imagediff', function (root, name, Canvas) {\n\n var\n TYPE_ARRAY = /\\[object Array\\]/i,\n TYPE_CANVAS = /\\[object (Canvas|HTMLCanvasElement)\\]/i,\n TYPE_CONTEXT = /\\[object CanvasRenderingContext2D\\]/i,\n TYPE_IMAGE = /\\[object (Image|HTMLImageElement)\\]/i,\n TYPE_IMAGE_DATA = /\\[object ImageData\\]/i,\n\n UNDEFINED = 'undefined',\n\n canvas = getCanvas(),\n context = canvas.getContext('2d'),\n previous = root[name],\n imagediff, jasmine;\n\n // Creation\n function getCanvas (width, height) {\n var\n canvas = Canvas ?\n new Canvas() :\n document.createElement('canvas');\n if (width) canvas.width = width;\n if (height) canvas.height = height;\n return canvas;\n }\n function getImageData (width, height) {\n canvas.width = width;\n canvas.height = height;\n context.clearRect(0, 0, width, height);\n return context.createImageData(width, height);\n }\n // expost canvas module\n function getCanvasRef() {\n return Canvas;\n }\n\n\n // Type Checking\n function isImage (object) {\n return isType(object, TYPE_IMAGE);\n }\n function isCanvas (object) {\n return isType(object, TYPE_CANVAS);\n }\n function isContext (object) {\n return isType(object, TYPE_CONTEXT);\n }\n function isImageData (object) {\n return !!(object &&\n isType(object, TYPE_IMAGE_DATA) &&\n typeof(object.width) !== UNDEFINED &&\n typeof(object.height) !== UNDEFINED &&\n typeof(object.data) !== UNDEFINED);\n }\n function isImageType (object) {\n return (\n isImage(object) ||\n isCanvas(object) ||\n isContext(object) ||\n isImageData(object)\n );\n }\n function isType (object, type) {\n return typeof (object) === 'object' && !!Object.prototype.toString.apply(object).match(type);\n }\n\n\n // Type Conversion\n function copyImageData (imageData) {\n var\n height = imageData.height,\n width = imageData.width,\n data = imageData.data,\n newImageData, newData, i;\n\n canvas.width = width;\n canvas.height = height;\n newImageData = context.getImageData(0, 0, width, height);\n newData = newImageData.data;\n\n for (i = imageData.data.length; i--;) {\n newData[i] = data[i];\n }\n\n return newImageData;\n }\n function toImageData (object) {\n if (isImage(object)) { return toImageDataFromImage(object); }\n if (isCanvas(object)) { return toImageDataFromCanvas(object); }\n if (isContext(object)) { return toImageDataFromContext(object); }\n if (isImageData(object)) { return object; }\n }\n function toImageDataFromImage (image) {\n var\n height = image.height,\n width = image.width;\n canvas.width = width;\n canvas.height = height;\n context.clearRect(0, 0, width, height);\n context.drawImage(image, 0, 0);\n return context.getImageData(0, 0, width, height);\n }\n function toImageDataFromCanvas (canvas) {\n var\n height = canvas.height,\n width = canvas.width,\n context = canvas.getContext('2d');\n return context.getImageData(0, 0, width, height);\n }\n function toImageDataFromContext (context) {\n var\n canvas = context.canvas,\n height = canvas.height,\n width = canvas.width;\n return context.getImageData(0, 0, width, height);\n }\n function toCanvas (object) {\n var\n data = toImageData(object),\n canvas = getCanvas(data.width, data.height),\n context = canvas.getContext('2d');\n\n context.putImageData(data, 0, 0);\n return canvas;\n }\n\n\n // ImageData Equality Operators\n function equalWidth (a, b) {\n return a.width === b.width;\n }\n function equalHeight (a, b) {\n return a.height === b.height;\n }\n function equalDimensions (a, b) {\n return equalHeight(a, b) && equalWidth(a, b);\n }\n function equal (a, b, tolerance) {\n\n var\n aData = a.data,\n bData = b.data,\n length = aData.length,\n i;\n\n tolerance = tolerance || 0;\n\n if (!equalDimensions(a, b)) return false;\n for (i = length; i--;) if (aData[i] !== bData[i] && Math.abs(aData[i] - bData[i]) > tolerance) return false;\n\n return true;\n }\n\n\n // Diff\n function diff (a, b, options) {\n return (equalDimensions(a, b) ? diffEqual : diffUnequal)(a, b, options);\n }\n function diffEqual (a, b, options) {\n\n var\n height = a.height,\n width = a.width,\n c = getImageData(width, height), // c = a - b\n aData = a.data,\n bData = b.data,\n cData = c.data,\n length = cData.length,\n row, column,\n i, j, k, v;\n\n for (i = 0; i < length; i += 4) {\n cData[i] = Math.abs(aData[i] - bData[i]);\n cData[i+1] = Math.abs(aData[i+1] - bData[i+1]);\n cData[i+2] = Math.abs(aData[i+2] - bData[i+2]);\n cData[i+3] = Math.abs(255 - Math.abs(aData[i+3] - bData[i+3]));\n }\n\n return c;\n }\n function diffUnequal (a, b, options) {\n\n var\n height = Math.max(a.height, b.height),\n width = Math.max(a.width, b.width),\n c = getImageData(width, height), // c = a - b\n aData = a.data,\n bData = b.data,\n cData = c.data,\n align = options && options.align,\n rowOffset,\n columnOffset,\n row, column,\n i, j, k, v;\n\n\n for (i = cData.length - 1; i > 0; i = i - 4) {\n cData[i] = 255;\n }\n\n // Add First Image\n offsets(a);\n for (row = a.height; row--;){\n for (column = a.width; column--;) {\n i = 4 * ((row + rowOffset) * width + (column + columnOffset));\n j = 4 * (row * a.width + column);\n cData[i+0] = aData[j+0]; // r\n cData[i+1] = aData[j+1]; // g\n cData[i+2] = aData[j+2]; // b\n // cData[i+3] = aData[j+3]; // a\n }\n }\n\n // Subtract Second Image\n offsets(b);\n for (row = b.height; row--;){\n for (column = b.width; column--;) {\n i = 4 * ((row + rowOffset) * width + (column + columnOffset));\n j = 4 * (row * b.width + column);\n cData[i+0] = Math.abs(cData[i+0] - bData[j+0]); // r\n cData[i+1] = Math.abs(cData[i+1] - bData[j+1]); // g\n cData[i+2] = Math.abs(cData[i+2] - bData[j+2]); // b\n }\n }\n\n // Helpers\n function offsets (imageData) {\n if (align === 'top') {\n rowOffset = 0;\n columnOffset = 0;\n } else {\n rowOffset = Math.floor((height - imageData.height) / 2);\n columnOffset = Math.floor((width - imageData.width) / 2);\n }\n }\n\n return c;\n }\n\n\n // Validation\n function checkType () {\n var i;\n for (i = 0; i < arguments.length; i++) {\n if (!isImageType(arguments[i])) {\n throw {\n name : 'ImageTypeError',\n message : 'Submitted object was not an image.'\n };\n }\n }\n }\n\n\n // Jasmine Matchers\n function get (element, content) {\n element = document.createElement(element);\n if (element && content) {\n element.innerHTML = content;\n }\n return element;\n }\n\n jasmine = {\n\n toBeImageData : function () {\n return imagediff.isImageData(this.actual);\n },\n\n toImageDiffEqual : function (expected, tolerance) {\n\n if (typeof (document) !== UNDEFINED) {\n this.message = function () {\n var\n div = get('div'),\n a = get('div', '
Actual:
'),\n b = get('div', '
Expected:
'),\n c = get('div', '
Diff:
'),\n diff = imagediff.diff(this.actual, expected),\n canvas = getCanvas(),\n context;\n\n canvas.height = diff.height;\n canvas.width = diff.width;\n\n div.style.overflow = 'hidden';\n a.style.float = 'left';\n b.style.float = 'left';\n c.style.float = 'left';\n\n context = canvas.getContext('2d');\n context.putImageData(diff, 0, 0);\n\n a.appendChild(toCanvas(this.actual));\n b.appendChild(toCanvas(expected));\n c.appendChild(canvas);\n\n div.appendChild(a);\n div.appendChild(b);\n div.appendChild(c);\n\n return [\n div,\n \"Expected not to be equal.\"\n ];\n };\n }\n\n return imagediff.equal(this.actual, expected, tolerance);\n }\n };\n\n\n // Image Output\n function imageDataToPNG (imageData, outputFile, callback) {\n\n var\n canvas = toCanvas(imageData),\n base64Data,\n decodedImage;\n\n callback = callback || Function;\n\n base64Data = canvas.toDataURL().replace(/^data:image\\/\\w+;base64,/,\"\");\n decodedImage = new Buffer(base64Data, 'base64');\n require('fs').writeFile(outputFile, decodedImage, callback);\n }\n\n\n // Definition\n imagediff = {\n\n createCanvas : getCanvas,\n createImageData : getImageData,\n getCanvasRef: getCanvasRef,\n\n isImage : isImage,\n isCanvas : isCanvas,\n isContext : isContext,\n isImageData : isImageData,\n isImageType : isImageType,\n\n toImageData : function (object) {\n checkType(object);\n if (isImageData(object)) { return copyImageData(object); }\n return toImageData(object);\n },\n\n equal : function (a, b, tolerance) {\n checkType(a, b);\n a = toImageData(a);\n b = toImageData(b);\n return equal(a, b, tolerance);\n },\n diff : function (a, b, options) {\n checkType(a, b);\n a = toImageData(a);\n b = toImageData(b);\n return diff(a, b, options);\n },\n\n jasmine : jasmine,\n\n // Compatibility\n noConflict : function () {\n root[name] = previous;\n return imagediff;\n }\n };\n\n if (typeof module !== 'undefined') {\n imagediff.imageDataToPNG = imageDataToPNG;\n }\n\n return imagediff;\n});\n", - "\n/**\n * isArray\n */\n\nvar isArray = Array.isArray;\n\n/**\n * toString\n */\n\nvar str = Object.prototype.toString;\n\n/**\n * Whether or not the given `val`\n * is an array.\n *\n * example:\n *\n * isArray([]);\n * // > true\n * isArray(arguments);\n * // > false\n * isArray('');\n * // > false\n *\n * @param {mixed} val\n * @return {bool}\n */\n\nmodule.exports = isArray || function (val) {\n return !! val && '[object Array]' == str.call(val);\n};\n", - "module.exports = {\n portrait1: require('./portrait1')\n}\n", - "let makeImage = require('../../app/lib/make-image')\n\nmodule.exports = (cb) => {\n makeImage(`data:image/jpg;base64,\n/9j/4AAQSkZJRgABAQEASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAAB\nAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAAB\nAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAA\nAGSgAwAEAAAAAQAAAJMAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAA\nOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/iDFhJQ0NfUFJPRklMRQABAQAA\nDEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElF\nQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\nc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdY\nWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1\nZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl\nY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl\neHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55\nAABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0Ig\nSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA\nAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZ\nWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVj\nLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklF\nQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA\nAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0g\nc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2Ug\nVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVm\nZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwAD\nXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAA\nAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU\nABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCL\nAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH\nAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGp\nAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6\nAoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+\nA4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2\nBMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn\nBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS\nB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6\nCc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh\nC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J\nDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1\nERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPl\nFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\nF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe\nGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q\nHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKC\nIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtybo\nJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSud\nK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk\nMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9\nNjc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuq\nO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGs\nQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgF\nSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63\nTwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC\nVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n\nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTp\nZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I\nbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWF\ndeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\nfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4ef\niASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/\nkaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC\nm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWp\nphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1\nsOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7Lrun\nvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB\nx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE\n08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v\n4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG\n7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH\n+lf65/t3/Af8mP0p/br+S/7c/23////AABEIAJMAZAMBEgACEQEDEQH/xAAfAAAB\nBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0B\nAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp\nKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImK\nkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj\n5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ\n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`\n , cb)\n}\n", - "module.exports = {\n singlePortrait: require('./single-portrait')\n}\n", - "let makeImage = require('../../app/lib/make-image')\n\nmodule.exports = (cb) => {\n makeImage(`data:image/png;base64,\n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\nRWARCPwfuNDlwVfqKPUAAAAASUVORK5CYII=`\n , cb)\n}\n" + "'use strict';\n\nvar _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };\n\nexports.__esModule = true;\n\nvar _import = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_import);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _SafeString = require('./handlebars/safe-string');\n\nvar _SafeString2 = _interopRequireWildcard(_SafeString);\n\nvar _Exception = require('./handlebars/exception');\n\nvar _Exception2 = _interopRequireWildcard(_Exception);\n\nvar _import2 = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_import2);\n\nvar _import3 = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_import3);\n\nvar _noConflict = require('./handlebars/no-conflict');\n\nvar _noConflict2 = _interopRequireWildcard(_noConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _SafeString2['default'];\n hb.Exception = _Exception2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_noConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];", + "'use strict';\n\nvar _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\nexports.createFrame = createFrame;\n\nvar _import = require('./utils');\n\nvar Utils = _interopRequireWildcard(_import);\n\nvar _Exception = require('./exception');\n\nvar _Exception2 = _interopRequireWildcard(_Exception);\n\nvar VERSION = '3.0.1';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 6;\n\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar isArray = Utils.isArray,\n isFunction = Utils.isFunction,\n toString = Utils.toString,\n objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n\n registerDefaultHelpers(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: log,\n\n registerHelper: function registerHelper(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new _Exception2['default']('Arg not supported with multiple helpers');\n }\n Utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (toString.call(name) === objectType) {\n Utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _Exception2['default']('Attempting to register a partial as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n }\n};\n\nfunction registerDefaultHelpers(instance) {\n instance.registerHelper('helperMissing', function () {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} constuct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _Exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = createFrame(options.data);\n data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _Exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: Utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n var priorKey = undefined;\n\n for (var key in context) {\n if (context.hasOwnProperty(key)) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n }\n }\n if (priorKey) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n\n instance.registerHelper('if', function (conditional, options) {\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || Utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n });\n\n instance.registerHelper('with', function (context, options) {\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!Utils.isEmpty(context)) {\n if (options.data && options.ids) {\n var data = createFrame(options.data);\n data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]);\n options = { data: data };\n }\n\n return fn(context, options);\n } else {\n return options.inverse(this);\n }\n });\n\n instance.registerHelper('log', function (message, options) {\n var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n instance.log(level, message);\n });\n\n instance.registerHelper('lookup', function (obj, field) {\n return obj && obj[field];\n });\n}\n\nvar logger = {\n methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },\n\n // State enum\n DEBUG: 0,\n INFO: 1,\n WARN: 2,\n ERROR: 3,\n level: 1,\n\n // Can be overridden in the host environment\n log: function log(level, message) {\n if (typeof console !== 'undefined' && logger.level <= level) {\n var method = logger.methodMap[level];\n (console[method] || console.log).call(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports.logger = logger;\nvar log = logger.log;\n\nexports.log = log;\n\nfunction createFrame(object) {\n var frame = Utils.extend({}, object);\n frame._parent = object;\n return frame;\n}\n\n/* [args, ]options */", + "'use strict';\n\nexports.__esModule = true;\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n column = undefined;\n if (loc) {\n line = loc.start.line;\n column = loc.start.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n if (loc) {\n this.lineNumber = line;\n this.column = column;\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];", + "'use strict';\n\nexports.__esModule = true;\n/*global window */\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n };\n};\n\nmodule.exports = exports['default'];", + "'use strict';\n\nvar _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\n\n// TODO: Remove this line and break up compilePartial\n\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n\nvar _import = require('./utils');\n\nvar Utils = _interopRequireWildcard(_import);\n\nvar _Exception = require('./exception');\n\nvar _Exception2 = _interopRequireWildcard(_Exception);\n\nvar _COMPILER_REVISION$REVISION_CHANGES$createFrame = require('./base');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _COMPILER_REVISION$REVISION_CHANGES$createFrame.COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = _COMPILER_REVISION$REVISION_CHANGES$createFrame.REVISION_CHANGES[currentRevision],\n compilerVersions = _COMPILER_REVISION$REVISION_CHANGES$createFrame.REVISION_CHANGES[compilerRevision];\n throw new _Exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _Exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _Exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _Exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _Exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name) {\n if (!(name in obj)) {\n throw new _Exception2['default']('\"' + name + '\" not defined in ' + obj);\n }\n return obj[name];\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n if (depths[i] && depths[i][name] != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n return templateSpec[i];\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n merge: function merge(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n depths = options.depths ? [context].concat(options.depths) : [context];\n }\n\n return templateSpec.main.call(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n container.helpers = container.merge(options.helpers, env.helpers);\n\n if (templateSpec.usePartial) {\n container.partials = container.merge(options.partials, env.partials);\n }\n } else {\n container.helpers = options.helpers;\n container.partials = options.partials;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _Exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _Exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments[1] === undefined ? {} : arguments[1];\n\n return fn.call(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), depths && [context].concat(depths));\n }\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n partial = options.partials[options.name];\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n options.partial = true;\n\n if (partial === undefined) {\n throw new _Exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _COMPILER_REVISION$REVISION_CHANGES$createFrame.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}", + "'use strict';\n\nexports.__esModule = true;\n// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];", + "'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '`': '`'\n};\n\nvar badChars = /[&<>\"'`]/g,\n possible = /[&<>\"'`]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/*eslint-disable func-style, no-var */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nvar isFunction;\nexports.isFunction = isFunction;\n/*eslint-enable func-style, no-var */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};exports.isArray = isArray;\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}", + "// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n" ] } \ No newline at end of file diff --git a/dist/comicbook.min.js b/dist/comicbook.min.js index d19e632..1e4a181 100644 --- a/dist/comicbook.min.js +++ b/dist/comicbook.min.js @@ -1,4 +1,3 @@ -!function t(n,e,r){function A(o,s){if(!e[o]){if(!n[o]){var a="function"==typeof require&&require;if(!s&&a)return a(o,!0);if(i)return i(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var h=e[o]={exports:{}};n[o][0].call(h.exports,function(t){var e=n[o][1][t];return A(e?e:t)},h,h.exports,t,n,e,r)}return e[o].exports}for(var i="function"==typeof require&&require,o=0;ot.height||n.width>n.height)&&a;switch(g&&(a=!1),a&&(o+="object"==typeof n?n.width:o),this.options.zoomMode){case"manual":document.body.style.overflowX="auto",e=a?2*this.scale:this.scale;break;case"fitWidth":document.body.style.overflowX="hidden",e=r()>o?(r()-o)/r()+1:r()/o,this.scale=e;break;case"fitWindow":document.body.style.overflowX="hidden";var l=r()>o?(r()-o)/r()+1:r()/o,E=window.innerHeight,d=E>s?(E-s)/E+1:E/s;e=l>d?d:l,this.scale=e}if(u=t.width*e,h=t.height*e,f="manual"===this.options.zoomMode?t.width*this.scale:u,c="manual"===this.options.zoomMode?t.height*this.scale:h,h=c,this.canvas.width=un?-1:a+10>n?n-a+26+26:h+26>n?n-h:u+26>n?n-u+26:void 0}function e(t){function e(t){u[f++]=t}var r,A,o,s,a,u;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var h=t.length;a="="===t.charAt(h-2)?2:"="===t.charAt(h-1)?1:0,u=new i(3*t.length/4-a),o=a>0?t.length-4:t.length;var f=0;for(r=0,A=0;o>r;r+=4,A+=3)s=n(t.charAt(r))<<18|n(t.charAt(r+1))<<12|n(t.charAt(r+2))<<6|n(t.charAt(r+3)),e((16711680&s)>>16),e((65280&s)>>8),e(255&s);return 2===a?(s=n(t.charAt(r))<<2|n(t.charAt(r+1))>>4,e(255&s)):1===a&&(s=n(t.charAt(r))<<10|n(t.charAt(r+1))<<4|n(t.charAt(r+2))>>2,e(s>>8&255),e(255&s)),u}function A(t){function n(t){return r.charAt(t)}function e(t){return n(t>>18&63)+n(t>>12&63)+n(t>>6&63)+n(63&t)}var A,i,o,s=t.length%3,a="";for(A=0,o=t.length-s;o>A;A+=3)i=(t[A]<<16)+(t[A+1]<<8)+t[A+2],a+=e(i);switch(s){case 1:i=t[t.length-1],a+=n(i>>2),a+=n(i<<4&63),a+="==";break;case 2:i=(t[t.length-2]<<8)+t[t.length-1],a+=n(i>>10),a+=n(i>>4&63),a+=n(i<<2&63),a+="="}return a}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),s="/".charCodeAt(0),a="0".charCodeAt(0),u="a".charCodeAt(0),h="A".charCodeAt(0),f="-".charCodeAt(0),c="_".charCodeAt(0);t.toByteArray=e,t.fromByteArray=A}("undefined"==typeof e?this.base64js={}:e)},{}],13:[function(t,n,e){},{}],14:[function(t,n,e){function r(){return A.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function A(t){return this instanceof A?(this.length=0,this.parent=void 0,"number"==typeof t?i(this,t):"string"==typeof t?o(this,t,arguments.length>1?arguments[1]:"utf8"):s(this,t)):arguments.length>1?new A(t,arguments[1]):new A(t)}function i(t,n){if(t=g(t,0>n?0:0|l(n)),!A.TYPED_ARRAY_SUPPORT)for(var e=0;n>e;e++)t[e]=0;return t}function o(t,n,e){("string"!=typeof e||""===e)&&(e="utf8");var r=0|d(n,e);return t=g(t,r),t.write(n,e),t}function s(t,n){if(A.isBuffer(n))return a(t,n);if(z(n))return u(t,n);if(null==n)throw new TypeError("must start with number, buffer, array or string");return"undefined"!=typeof ArrayBuffer&&n.buffer instanceof ArrayBuffer?h(t,n):n.length?f(t,n):c(t,n)}function a(t,n){var e=0|l(n.length);return t=g(t,e),n.copy(t,0,0,e),t}function u(t,n){var e=0|l(n.length);t=g(t,e);for(var r=0;e>r;r+=1)t[r]=255&n[r];return t}function h(t,n){var e=0|l(n.length);t=g(t,e);for(var r=0;e>r;r+=1)t[r]=255&n[r];return t}function f(t,n){var e=0|l(n.length);t=g(t,e);for(var r=0;e>r;r+=1)t[r]=255&n[r];return t}function c(t,n){var e,r=0;"Buffer"===n.type&&z(n.data)&&(e=n.data,r=0|l(e.length)),t=g(t,r);for(var A=0;r>A;A+=1)t[A]=255&e[A];return t}function g(t,n){A.TYPED_ARRAY_SUPPORT?t=A._augment(new Uint8Array(n)):(t.length=n,t._isBuffer=!0);var e=0!==n&&n<=A.poolSize>>>1;return e&&(t.parent=H),t}function l(t){if(t>=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|t}function E(t,n){if(!(this instanceof E))return new E(t,n);var e=new A(t,n);return delete e.parent,e}function d(t,n){"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var r=!1;;)switch(n){case"ascii":case"binary":case"raw":case"raws":return e;case"utf8":case"utf-8":return j(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return T(t).length;default:if(r)return j(t).length;n=(""+n).toLowerCase(),r=!0}}function p(t,n,e){var r=!1;if(n=0|n,e=void 0===e||e===1/0?this.length:0|e,t||(t="utf8"),0>n&&(n=0),e>this.length&&(e=this.length),n>=e)return"";for(;;)switch(t){case"hex":return Q(this,n,e);case"utf8":case"utf-8":return S(this,n,e);case"ascii":return C(this,n,e);case"binary":return F(this,n,e);case"base64":return R(this,n,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m(this,n,e);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function I(t,n,e,r){e=Number(e)||0;var A=t.length-e;r?(r=Number(r),r>A&&(r=A)):r=A;var i=n.length;if(i%2!==0)throw new Error("Invalid hex string");r>i/2&&(r=i/2);for(var o=0;r>o;o++){var s=parseInt(n.substr(2*o,2),16);if(isNaN(s))throw new Error("Invalid hex string");t[e+o]=s}return o}function v(t,n,e,r){return N(j(n,t.length-e),t,e,r)}function B(t,n,e,r){return N(P(n),t,e,r)}function w(t,n,e,r){return B(t,n,e,r)}function U(t,n,e,r){return N(T(n),t,e,r)}function y(t,n,e,r){return N(O(n,t.length-e),t,e,r)}function R(t,n,e){return 0===n&&e===t.length?X.fromByteArray(t):X.fromByteArray(t.slice(n,e))}function S(t,n,e){var r="",A="";e=Math.min(t.length,e);for(var i=n;e>i;i++)t[i]<=127?(r+=V(A)+String.fromCharCode(t[i]),A=""):A+="%"+t[i].toString(16);return r+V(A)}function C(t,n,e){var r="";e=Math.min(t.length,e);for(var A=n;e>A;A++)r+=String.fromCharCode(127&t[A]);return r}function F(t,n,e){var r="";e=Math.min(t.length,e);for(var A=n;e>A;A++)r+=String.fromCharCode(t[A]);return r}function Q(t,n,e){var r=t.length;(!n||0>n)&&(n=0),(!e||0>e||e>r)&&(e=r);for(var A="",i=n;e>i;i++)A+=K(t[i]);return A}function m(t,n,e){for(var r=t.slice(n,e),A="",i=0;it)throw new RangeError("offset is not uint");if(t+n>e)throw new RangeError("Trying to access beyond buffer length")}function b(t,n,e,r,i,o){if(!A.isBuffer(t))throw new TypeError("buffer must be a Buffer instance");if(n>i||o>n)throw new RangeError("value is out of bounds");if(e+r>t.length)throw new RangeError("index out of range")}function W(t,n,e,r){0>n&&(n=65535+n+1);for(var A=0,i=Math.min(t.length-e,2);i>A;A++)t[e+A]=(n&255<<8*(r?A:1-A))>>>8*(r?A:1-A)}function k(t,n,e,r){0>n&&(n=4294967295+n+1);for(var A=0,i=Math.min(t.length-e,4);i>A;A++)t[e+A]=n>>>8*(r?A:3-A)&255}function x(t,n,e,r,A,i){if(n>A||i>n)throw new RangeError("value is out of bounds");if(e+r>t.length)throw new RangeError("index out of range");if(0>e)throw new RangeError("index out of range")}function M(t,n,e,r,A){return A||x(t,n,e,4,3.4028234663852886e38,-3.4028234663852886e38),G.write(t,n,e,r,23,4),e+4}function L(t,n,e,r,A){return A||x(t,n,e,8,1.7976931348623157e308,-1.7976931348623157e308),G.write(t,n,e,r,52,8),e+8}function Y(t){if(t=D(t).replace(q,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function D(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function K(t){return 16>t?"0"+t.toString(16):t.toString(16)}function j(t,n){n=n||1/0;for(var e,r=t.length,A=null,i=[],o=0;r>o;o++){if(e=t.charCodeAt(o),e>55295&&57344>e){if(!A){if(e>56319){(n-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(n-=3)>-1&&i.push(239,191,189);continue}A=e;continue}if(56320>e){(n-=3)>-1&&i.push(239,191,189),A=e;continue}e=A-55296<<10|e-56320|65536,A=null}else A&&((n-=3)>-1&&i.push(239,191,189),A=null);if(128>e){if((n-=1)<0)break;i.push(e)}else if(2048>e){if((n-=2)<0)break;i.push(e>>6|192,63&e|128)}else if(65536>e){if((n-=3)<0)break;i.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(2097152>e))throw new Error("Invalid code point");if((n-=4)<0)break;i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return i}function P(t){for(var n=[],e=0;e>8,A=e%256,i.push(A),i.push(r);return i}function T(t){return X.toByteArray(Y(t))}function N(t,n,e,r){for(var A=0;r>A&&!(A+e>=n.length||A>=t.length);A++)n[A+e]=t[A];return A}function V(t){try{return decodeURIComponent(t)}catch(t){return String.fromCharCode(65533)}}var X=t("base64-js"),G=t("ieee754"),z=t("is-array");e.Buffer=A,e.SlowBuffer=E,e.INSPECT_MAX_BYTES=50,A.poolSize=8192;var H={};A.TYPED_ARRAY_SUPPORT=function(){function t(){}try{var n=new ArrayBuffer(0),e=new Uint8Array(n);return e.foo=function(){return 42},e.constructor=t,42===e.foo()&&e.constructor===t&&"function"==typeof e.subarray&&0===new Uint8Array(1).subarray(1,1).byteLength}catch(t){return!1}}(),A.isBuffer=function(t){return!(null==t||!t._isBuffer)},A.compare=function(t,n){if(!A.isBuffer(t)||!A.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(t===n)return 0;for(var e=t.length,r=n.length,i=0,o=Math.min(e,r);o>i&&t[i]===n[i];)++i;return i!==o&&(e=t[i],r=n[i]),r>e?-1:e>r?1:0},A.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},A.concat=function(t,n){if(!z(t))throw new TypeError("list argument must be an Array of Buffers.");if(0===t.length)return new A(0);if(1===t.length)return t[0];var e;if(void 0===n)for(n=0,e=0;e0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},A.prototype.compare=function(t){if(!A.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t?0:A.compare(this,t)},A.prototype.indexOf=function(t,n){function e(t,n,e){for(var r=-1,A=0;e+A2147483647?n=2147483647:-2147483648>n&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(0>n&&(n=Math.max(this.length+n,0)),"string"==typeof t)return 0===t.length?-1:String.prototype.indexOf.call(this,t,n);if(A.isBuffer(t))return e(this,t,n);if("number"==typeof t)return A.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,t,n):e(this,[t],n);throw new TypeError("val must be string, number or Buffer")},A.prototype.get=function(t){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(t)},A.prototype.set=function(t,n){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(t,n)},A.prototype.write=function(t,n,e,r){if(void 0===n)r="utf8",e=this.length,n=0;else if(void 0===e&&"string"==typeof n)r=n,e=this.length,n=0;else if(isFinite(n))n=0|n,isFinite(e)?(e=0|e,void 0===r&&(r="utf8")):(r=e,e=void 0);else{var A=r;r=n,n=0|e,e=A}var i=this.length-n;if((void 0===e||e>i)&&(e=i),t.length>0&&(0>e||0>n)||n>this.length)throw new RangeError("attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return I(this,t,n,e);case"utf8":case"utf-8":return v(this,t,n,e);case"ascii":return B(this,t,n,e);case"binary":return w(this,t,n,e);case"base64":return U(this,t,n,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return y(this,t,n,e);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},A.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},A.prototype.slice=function(t,n){var e=this.length;t=~~t,n=void 0===n?e:~~n,0>t?(t+=e,0>t&&(t=0)):t>e&&(t=e),0>n?(n+=e,0>n&&(n=0)):n>e&&(n=e),t>n&&(n=t);var r;if(A.TYPED_ARRAY_SUPPORT)r=A._augment(this.subarray(t,n));else{var i=n-t;r=new A(i,void 0);for(var o=0;i>o;o++)r[o]=this[o+t]}return r.length&&(r.parent=this.parent||this),r},A.prototype.readUIntLE=function(t,n,e){t=0|t,n=0|n,e||J(t,n,this.length);for(var r=this[t],A=1,i=0;++i0&&(A*=256);)r+=this[t+--n]*A;return r},A.prototype.readUInt8=function(t,n){return n||J(t,1,this.length),this[t]},A.prototype.readUInt16LE=function(t,n){return n||J(t,2,this.length),this[t]|this[t+1]<<8},A.prototype.readUInt16BE=function(t,n){return n||J(t,2,this.length),this[t]<<8|this[t+1]},A.prototype.readUInt32LE=function(t,n){return n||J(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},A.prototype.readUInt32BE=function(t,n){return n||J(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},A.prototype.readIntLE=function(t,n,e){t=0|t,n=0|n,e||J(t,n,this.length);for(var r=this[t],A=1,i=0;++i=A&&(r-=Math.pow(2,8*n)),r},A.prototype.readIntBE=function(t,n,e){t=0|t,n=0|n,e||J(t,n,this.length);for(var r=n,A=1,i=this[t+--r];r>0&&(A*=256);)i+=this[t+--r]*A;return A*=128,i>=A&&(i-=Math.pow(2,8*n)),i},A.prototype.readInt8=function(t,n){return n||J(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},A.prototype.readInt16LE=function(t,n){n||J(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},A.prototype.readInt16BE=function(t,n){n||J(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},A.prototype.readInt32LE=function(t,n){return n||J(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},A.prototype.readInt32BE=function(t,n){return n||J(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},A.prototype.readFloatLE=function(t,n){return n||J(t,4,this.length),G.read(this,t,!0,23,4)},A.prototype.readFloatBE=function(t,n){return n||J(t,4,this.length),G.read(this,t,!1,23,4)},A.prototype.readDoubleLE=function(t,n){return n||J(t,8,this.length),G.read(this,t,!0,52,8)},A.prototype.readDoubleBE=function(t,n){return n||J(t,8,this.length),G.read(this,t,!1,52,8)},A.prototype.writeUIntLE=function(t,n,e,r){t=+t,n=0|n,e=0|e,r||b(this,t,n,e,Math.pow(2,8*e),0);var A=1,i=0;for(this[n]=255&t;++i=0&&(i*=256);)this[n+A]=t/i&255;return n+e},A.prototype.writeUInt8=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,1,255,0),A.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[n]=t,n+1},A.prototype.writeUInt16LE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,2,65535,0),A.TYPED_ARRAY_SUPPORT?(this[n]=t,this[n+1]=t>>>8):W(this,t,n,!0),n+2},A.prototype.writeUInt16BE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,2,65535,0),A.TYPED_ARRAY_SUPPORT?(this[n]=t>>>8,this[n+1]=t):W(this,t,n,!1),n+2},A.prototype.writeUInt32LE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,4,4294967295,0),A.TYPED_ARRAY_SUPPORT?(this[n+3]=t>>>24,this[n+2]=t>>>16,this[n+1]=t>>>8,this[n]=t):k(this,t,n,!0),n+4},A.prototype.writeUInt32BE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,4,4294967295,0),A.TYPED_ARRAY_SUPPORT?(this[n]=t>>>24,this[n+1]=t>>>16,this[n+2]=t>>>8,this[n+3]=t):k(this,t,n,!1),n+4},A.prototype.writeIntLE=function(t,n,e,r){if(t=+t,n=0|n,!r){var A=Math.pow(2,8*e-1);b(this,t,n,e,A-1,-A)}var i=0,o=1,s=0>t?1:0;for(this[n]=255&t;++i>0)-s&255;return n+e},A.prototype.writeIntBE=function(t,n,e,r){if(t=+t,n=0|n,!r){var A=Math.pow(2,8*e-1);b(this,t,n,e,A-1,-A)}var i=e-1,o=1,s=0>t?1:0;for(this[n+i]=255&t;--i>=0&&(o*=256);)this[n+i]=(t/o>>0)-s&255;return n+e},A.prototype.writeInt8=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,1,127,-128),A.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),0>t&&(t=255+t+1),this[n]=t,n+1},A.prototype.writeInt16LE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,2,32767,-32768),A.TYPED_ARRAY_SUPPORT?(this[n]=t,this[n+1]=t>>>8):W(this,t,n,!0),n+2},A.prototype.writeInt16BE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,2,32767,-32768),A.TYPED_ARRAY_SUPPORT?(this[n]=t>>>8,this[n+1]=t):W(this,t,n,!1),n+2},A.prototype.writeInt32LE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,4,2147483647,-2147483648),A.TYPED_ARRAY_SUPPORT?(this[n]=t,this[n+1]=t>>>8,this[n+2]=t>>>16,this[n+3]=t>>>24):k(this,t,n,!0),n+4},A.prototype.writeInt32BE=function(t,n,e){return t=+t,n=0|n,e||b(this,t,n,4,2147483647,-2147483648),0>t&&(t=4294967295+t+1),A.TYPED_ARRAY_SUPPORT?(this[n]=t>>>24,this[n+1]=t>>>16,this[n+2]=t>>>8,this[n+3]=t):k(this,t,n,!1),n+4},A.prototype.writeFloatLE=function(t,n,e){return M(this,t,n,!0,e)},A.prototype.writeFloatBE=function(t,n,e){return M(this,t,n,!1,e)},A.prototype.writeDoubleLE=function(t,n,e){return L(this,t,n,!0,e)},A.prototype.writeDoubleBE=function(t,n,e){return L(this,t,n,!1,e)},A.prototype.copy=function(t,n,e,r){if(e||(e=0),r||0===r||(r=this.length),n>=t.length&&(n=t.length),n||(n=0),r>0&&e>r&&(r=e),r===e)return 0;if(0===t.length||0===this.length)return 0;if(0>n)throw new RangeError("targetStart out of bounds");if(0>e||e>=this.length)throw new RangeError("sourceStart out of bounds");if(0>r)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-ni||!A.TYPED_ARRAY_SUPPORT)for(var o=0;i>o;o++)t[o+n]=this[o+e];else t._set(this.subarray(e,e+i),n);return i},A.prototype.fill=function(t,n,e){if(t||(t=0),n||(n=0),e||(e=this.length),n>e)throw new RangeError("end < start");if(e!==n&&0!==this.length){if(0>n||n>=this.length)throw new RangeError("start out of bounds");if(0>e||e>this.length)throw new RangeError("end out of bounds");var r;if("number"==typeof t)for(r=n;e>r;r++)this[r]=t;else{var A=j(t.toString()),i=A.length;for(r=n;e>r;r++)this[r]=A[r%i]}return this}},A.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(A.TYPED_ARRAY_SUPPORT)return new A(this).buffer;for(var t=new Uint8Array(this.length),n=0,e=t.length;e>n;n+=1)t[n]=this[n];return t.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var Z=A.prototype;A._augment=function(t){return t.constructor=A,t._isBuffer=!0,t._set=t.set,t.get=Z.get,t.set=Z.set,t.write=Z.write,t.toString=Z.toString,t.toLocaleString=Z.toString,t.toJSON=Z.toJSON,t.equals=Z.equals,t.compare=Z.compare,t.indexOf=Z.indexOf,t.copy=Z.copy,t.slice=Z.slice,t.readUIntLE=Z.readUIntLE,t.readUIntBE=Z.readUIntBE,t.readUInt8=Z.readUInt8,t.readUInt16LE=Z.readUInt16LE,t.readUInt16BE=Z.readUInt16BE,t.readUInt32LE=Z.readUInt32LE,t.readUInt32BE=Z.readUInt32BE,t.readIntLE=Z.readIntLE,t.readIntBE=Z.readIntBE,t.readInt8=Z.readInt8,t.readInt16LE=Z.readInt16LE,t.readInt16BE=Z.readInt16BE,t.readInt32LE=Z.readInt32LE,t.readInt32BE=Z.readInt32BE,t.readFloatLE=Z.readFloatLE,t.readFloatBE=Z.readFloatBE,t.readDoubleLE=Z.readDoubleLE,t.readDoubleBE=Z.readDoubleBE,t.writeUInt8=Z.writeUInt8,t.writeUIntLE=Z.writeUIntLE,t.writeUIntBE=Z.writeUIntBE,t.writeUInt16LE=Z.writeUInt16LE,t.writeUInt16BE=Z.writeUInt16BE,t.writeUInt32LE=Z.writeUInt32LE,t.writeUInt32BE=Z.writeUInt32BE,t.writeIntLE=Z.writeIntLE,t.writeIntBE=Z.writeIntBE,t.writeInt8=Z.writeInt8,t.writeInt16LE=Z.writeInt16LE,t.writeInt16BE=Z.writeInt16BE,t.writeInt32LE=Z.writeInt32LE,t.writeInt32BE=Z.writeInt32BE,t.writeFloatLE=Z.writeFloatLE,t.writeFloatBE=Z.writeFloatBE,t.writeDoubleLE=Z.writeDoubleLE,t.writeDoubleBE=Z.writeDoubleBE,t.fill=Z.fill,t.inspect=Z.inspect,t.toArrayBuffer=Z.toArrayBuffer,t};var q=/[^+\/0-9A-z\-]/g},{"base64-js":12,ieee754:28,"is-array":31}],15:[function(t,n,e){t("../../modules/es6.object.assign"),n.exports=t("../../modules/$").core.Object.assign},{"../../modules/$":24,"../../modules/es6.object.assign":25}],16:[function(t,n,e){var r=t("../../modules/$");n.exports=function(t,n){return r.create(t,n)}},{"../../modules/$":24}],17:[function(t,n,e){var r=t("../../modules/$");n.exports=function(t,n,e){return r.setDesc(t,n,e)}},{"../../modules/$":24}],18:[function(t,n,e){var r=t("../../modules/$");t("../../modules/es6.object.statics-accept-primitives"),n.exports=function(t,n){return r.getDesc(t,n)}},{"../../modules/$":24,"../../modules/es6.object.statics-accept-primitives":26}],19:[function(t,n,e){var r=t("./$"),A=t("./$.enum-keys");n.exports=Object.assign||function(t,n){for(var e=Object(r.assertDefined(t)),i=arguments.length,o=1;i>o;)for(var s,a=r.ES5Object(arguments[o++]),u=A(a),h=u.length,f=0;h>f;)e[s=u[f++]]=a[s];return e}},{"./$":24,"./$.enum-keys":21}],20:[function(t,n,e){function r(t,n){return function(){return t.apply(n,arguments)}}function A(t,n,e){var i,u,h,f,c=t&A.G,g=t&A.P,l=c?o:t&A.S?o[n]:(o[n]||{}).prototype,E=c?s:s[n]||(s[n]={});c&&(e=n);for(i in e)u=!(t&A.F)&&l&&i in l,u&&i in E||(h=u?l[i]:e[i],c&&!a(l[i])?f=e[i]:t&A.B&&u?f=r(h,o):t&A.W&&l[i]==h?!function(t){f=function(n){return this instanceof t?new t(n):t(n)},f.prototype=t.prototype}(h):f=g&&a(h)?r(Function.call,h):h,E[i]=f,g&&((E.prototype||(E.prototype={}))[i]=h))}var i=t("./$"),o=i.g,s=i.core,a=i.isFunction;A.F=1,A.G=2,A.S=4,A.P=8,A.B=16,A.W=32,n.exports=A},{"./$":24}],21:[function(t,n,e){var r=t("./$");n.exports=function(t){var n=r.getKeys(t),e=r.getDesc,A=r.getSymbols;return A&&r.each.call(A(t),function(r){e(t,r).enumerable&&n.push(r)}),n}},{"./$":24}],22:[function(t,n,e){n.exports=function(t){return t.FW=!1,t.path=t.core,t}},{}],23:[function(t,n,e){function r(t){try{return o(t)}catch(t){return s.slice()}}var A=t("./$"),i={}.toString,o=A.getNames,s="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];n.exports.get=function(t){return s&&"[object Window]"==i.call(t)?r(t):o(A.toObject(t))}},{"./$":24}],24:[function(t,n,e){"use strict";function r(t){return isNaN(t=+t)?0:(t>0?E:l)(t)}function A(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}function i(t,n,e){return t[n]=e,t}function o(t){return I?function(n,e,r){return B.setDesc(n,e,A(t,r))}:i}function s(t){return null!==t&&("object"==typeof t||"function"==typeof t)}function a(t){return"function"==typeof t}function u(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}var h="undefined"!=typeof self?self:Function("return this")(),f={},c=Object.defineProperty,g={}.hasOwnProperty,l=Math.ceil,E=Math.floor,d=Math.max,p=Math.min,I=!!function(){try{return 2==c({},"a",{get:function(){return 2}}).a}catch(t){}}(),v=o(1),B=n.exports=t("./$.fw")({g:h,core:f,html:h.document&&document.documentElement,isObject:s,isFunction:a,that:function(){return this},toInteger:r,toLength:function(t){return t>0?p(r(t),9007199254740991):0},toIndex:function(t,n){return t=r(t),0>t?d(t+n,0):p(t,n)},has:function(t,n){return g.call(t,n)},create:Object.create,getProto:Object.getPrototypeOf,DESC:I,desc:A,getDesc:Object.getOwnPropertyDescriptor,setDesc:c,setDescs:Object.defineProperties,getKeys:Object.keys,getNames:Object.getOwnPropertyNames,getSymbols:Object.getOwnPropertySymbols,assertDefined:u,ES5Object:Object,toObject:function(t){return B.ES5Object(u(t))},hide:v,def:o(0),set:h.Symbol?i:v,each:[].forEach});"undefined"!=typeof __e&&(__e=f),"undefined"!=typeof __g&&(__g=h)},{"./$.fw":22}],25:[function(t,n,e){var r=t("./$.def");r(r.S,"Object",{assign:t("./$.assign")})},{"./$.assign":19,"./$.def":20}],26:[function(t,n,e){var r=t("./$"),A=t("./$.def"),i=r.isObject,o=r.toObject;r.each.call("freeze,seal,preventExtensions,isFrozen,isSealed,isExtensible,getOwnPropertyDescriptor,getPrototypeOf,keys,getOwnPropertyNames".split(","),function(n,e){var s=(r.core.Object||{})[n]||Object[n],a=0,u={};u[n]=0==e?function(t){return i(t)?s(t):t}:1==e?function(t){return i(t)?s(t):t}:2==e?function(t){return i(t)?s(t):t}:3==e?function(t){return i(t)?s(t):!0}:4==e?function(t){return i(t)?s(t):!0}:5==e?function(t){return i(t)?s(t):!1}:6==e?function(t,n){return s(o(t),n)}:7==e?function(t){return s(Object(r.assertDefined(t)))}:8==e?function(t){return s(o(t))}:t("./$.get-names").get;try{s("z")}catch(t){a=1}A(A.S+A.F*a,"Object",u)})},{"./$":24,"./$.def":20,"./$.get-names":23}],27:[function(t,n,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function A(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function s(t){return void 0===t}n.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!i(t)||0>t||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var n,e,r,i,a,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;throw TypeError('Uncaught, unspecified "error" event.')}if(e=this._events[t],s(e))return!1;if(A(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:for(r=arguments.length,i=new Array(r-1),a=1;r>a;a++)i[a-1]=arguments[a];e.apply(this,i)}else if(o(e)){for(r=arguments.length,i=new Array(r-1),a=1;r>a;a++)i[a-1]=arguments[a];for(u=e.slice(),r=u.length,a=0;r>a;a++)u[a].apply(this,i)}return!0},r.prototype.addListener=function(t,n){var e;if(!A(n))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,A(n.listener)?n.listener:n),this._events[t]?o(this._events[t])?this._events[t].push(n):this._events[t]=[this._events[t],n]:this._events[t]=n,o(this._events[t])&&!this._events[t].warned){var e;e=s(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,e&&e>0&&this._events[t].length>e&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,n){function e(){this.removeListener(t,e),r||(r=!0,n.apply(this,arguments))}if(!A(n))throw TypeError("listener must be a function");var r=!1;return e.listener=n,this.on(t,e),this},r.prototype.removeListener=function(t,n){var e,r,i,s;if(!A(n))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(e=this._events[t],i=e.length,r=-1,e===n||A(e.listener)&&e.listener===n)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,n);else if(o(e)){for(s=i;s-->0;)if(e[s]===n||e[s].listener&&e[s].listener===n){r=s;break}if(0>r)return this;1===e.length?(e.length=0,delete this._events[t]):e.splice(r,1),this._events.removeListener&&this.emit("removeListener",t,n)}return this},r.prototype.removeAllListeners=function(t){var n,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"), -this._events={},this}if(e=this._events[t],A(e))this.removeListener(t,e);else for(;e.length;)this.removeListener(t,e[e.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var n;return n=this._events&&this._events[t]?A(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.listenerCount=function(t,n){var e;return e=t._events&&t._events[n]?A(t._events[n])?1:t._events[n].length:0}},{}],28:[function(t,n,e){e.read=function(t,n,e,r,A){var i,o,s=8*A-r-1,a=(1<>1,h=-7,f=e?A-1:0,c=e?-1:1,g=t[n+f];for(f+=c,i=g&(1<<-h)-1,g>>=-h,h+=s;h>0;i=256*i+t[n+f],f+=c,h-=8);for(o=i&(1<<-h)-1,i>>=-h,h+=r;h>0;o=256*o+t[n+f],f+=c,h-=8);if(0===i)i=1-u;else{if(i===a)return o?NaN:(g?-1:1)*(1/0);o+=Math.pow(2,r),i-=u}return(g?-1:1)*o*Math.pow(2,i-r)},e.write=function(t,n,e,r,A,i){var o,s,a,u=8*i-A-1,h=(1<>1,c=23===A?Math.pow(2,-24)-Math.pow(2,-77):0,g=r?0:i-1,l=r?1:-1,E=0>n||0===n&&0>1/n?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(s=isNaN(n)?1:0,o=h):(o=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-o))<1&&(o--,a*=2),n+=o+f>=1?c/a:c*Math.pow(2,1-f),n*a>=2&&(o++,a/=2),o+f>=h?(s=0,o=h):o+f>=1?(s=(n*a-1)*Math.pow(2,A),o+=f):(s=n*Math.pow(2,f-1)*Math.pow(2,A),o=0));A>=8;t[e+g]=255&s,g+=l,s/=256,A-=8);for(o=o<0;t[e+g]=255&o,g+=l,o/=256,u-=8);t[e+g-l]|=128*E}},{}],29:[function(t,n,e){"use strict";n.exports=function(){return document.createElement("canvas")}},{}],30:[function(t,n,e){(function(e){!function(e,r){var A=this;if("undefined"!=typeof n){try{var i=t("canvas")}catch(t){throw new Error(t.message+"\nPlease see https://github.com/HumbleSoftware/js-imagediff#cannot-find-module-canvas\n")}n.exports=r(A,e,i)}else"function"==typeof define&&"object"==typeof define.amd?define(r):A[e]=r(A,e)}("imagediff",function(r,A,i){function o(t,n){var e=i?new i:document.createElement("canvas");return t&&(e.width=t),n&&(e.height=n),e}function s(t,n){return D.width=t,D.height=n,K.clearRect(0,0,t,n),K.createImageData(t,n)}function a(){return i}function u(t){return l(t,M)}function h(t){return l(t,k)}function f(t){return l(t,x)}function c(t){return!(!t||!l(t,L)||typeof t.width===Y||typeof t.height===Y||typeof t.data===Y)}function g(t){return u(t)||h(t)||f(t)||c(t)}function l(t,n){return"object"==typeof t&&!!Object.prototype.toString.apply(t).match(n)}function E(t){var n,e,r,A=t.height,i=t.width,o=t.data;for(D.width=i,D.height=A,n=K.getImageData(0,0,i,A),e=n.data,r=t.data.length;r--;)e[r]=o[r];return n}function d(t){return u(t)?p(t):h(t)?I(t):f(t)?v(t):c(t)?t:void 0}function p(t){var n=t.height,e=t.width;return D.width=e,D.height=n,K.clearRect(0,0,e,n),K.drawImage(t,0,0),K.getImageData(0,0,e,n)}function I(t){var n=t.height,e=t.width,r=t.getContext("2d");return r.getImageData(0,0,e,n)}function v(t){var n=t.canvas,e=n.height,r=n.width;return t.getImageData(0,0,r,e)}function B(t){var n=d(t),e=o(n.width,n.height),r=e.getContext("2d");return r.putImageData(n,0,0),e}function w(t,n){return t.width===n.width}function U(t,n){return t.height===n.height}function y(t,n){return U(t,n)&&w(t,n)}function R(t,n,e){var r,A=t.data,i=n.data,o=A.length;if(e=e||0,!y(t,n))return!1;for(r=o;r--;)if(A[r]!==i[r]&&Math.abs(A[r]-i[r])>e)return!1;return!0}function S(t,n,e){return(y(t,n)?C:F)(t,n,e)}function C(t,n,e){var r,A=t.height,i=t.width,o=s(i,A),a=t.data,u=n.data,h=o.data,f=h.length;for(r=0;f>r;r+=4)h[r]=Math.abs(a[r]-u[r]),h[r+1]=Math.abs(a[r+1]-u[r+1]),h[r+2]=Math.abs(a[r+2]-u[r+2]),h[r+3]=Math.abs(255-Math.abs(a[r+3]-u[r+3]));return o}function F(t,n,e){function r(t){"top"===p?(A=0,i=0):(A=Math.floor((f-t.height)/2),i=Math.floor((c-t.width)/2))}var A,i,o,a,u,h,f=Math.max(t.height,n.height),c=Math.max(t.width,n.width),g=s(c,f),l=t.data,E=n.data,d=g.data,p=e&&e.align;for(u=d.length-1;u>0;u-=4)d[u]=255;for(r(t),o=t.height;o--;)for(a=t.width;a--;)u=4*((o+A)*c+(a+i)),h=4*(o*t.width+a),d[u+0]=l[h+0],d[u+1]=l[h+1],d[u+2]=l[h+2];for(r(n),o=n.height;o--;)for(a=n.width;a--;)u=4*((o+A)*c+(a+i)),h=4*(o*n.width+a),d[u+0]=Math.abs(d[u+0]-E[h+0]),d[u+1]=Math.abs(d[u+1]-E[h+1]),d[u+2]=Math.abs(d[u+2]-E[h+2]);return g}function Q(){var t;for(t=0;tActual:"),A=m("div","
Expected:
"),i=m("div","
Diff:
"),s=b.diff(this.actual,t),a=o();return a.height=s.height,a.width=s.width,e.style.overflow="hidden",r.style.float="left",A.style.float="left",i.style.float="left",n=a.getContext("2d"),n.putImageData(s,0,0),r.appendChild(B(this.actual)),A.appendChild(B(t)),i.appendChild(a),e.appendChild(r),e.appendChild(A),e.appendChild(i),[e,"Expected not to be equal."]}),b.equal(this.actual,t,n)}},b={createCanvas:o,createImageData:s,getCanvasRef:a,isImage:u,isCanvas:h,isContext:f,isImageData:c,isImageType:g,toImageData:function(t){return Q(t),c(t)?E(t):d(t)},equal:function(t,n,e){return Q(t,n),t=d(t),n=d(n),R(t,n,e)},diff:function(t,n,e){return Q(t,n),t=d(t),n=d(n),S(t,n,e)},jasmine:W,noConflict:function(){return r[A]=j,b}},"undefined"!=typeof n&&(b.imageDataToPNG=J),b})}).call(this,t("buffer").Buffer)},{buffer:14,canvas:29,fs:13}],31:[function(t,n,e){var r=Array.isArray,A=Object.prototype.toString;n.exports=r||function(t){return!!t&&"[object Array]"==A.call(t)}},{}],32:[function(t,n,e){"use strict";n.exports={portrait1:t("./portrait1")}},{"./portrait1":33}],33:[function(t,n,e){"use strict";var r=t("../../app/lib/make-image");n.exports=function(t){r("data:image/jpg;base64,\n/9j/4AAQSkZJRgABAQEASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAAB\nAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAAB\nAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAA\nAGSgAwAEAAAAAQAAAJMAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAA\nOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/iDFhJQ0NfUFJPRklMRQABAQAA\nDEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElF\nQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\nc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdY\nWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1\nZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl\nY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl\neHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55\nAABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0Ig\nSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA\nAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZ\nWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVj\nLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklF\nQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA\nAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0g\nc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2Ug\nVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVm\nZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwAD\nXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAA\nAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU\nABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCL\nAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH\nAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGp\nAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6\nAoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+\nA4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2\nBMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn\nBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS\nB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6\nCc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh\nC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J\nDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1\nERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPl\nFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\nF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe\nGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q\nHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKC\nIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtybo\nJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSud\nK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk\nMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9\nNjc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuq\nO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGs\nQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgF\nSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63\nTwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC\nVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n\nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTp\nZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I\nbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWF\ndeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\nfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4ef\niASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/\nkaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC\nm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWp\nphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1\nsOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7Lrun\nvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB\nx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE\n08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v\n4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG\n7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH\n+lf65/t3/Af8mP0p/br+S/7c/23////AABEIAJMAZAMBEgACEQEDEQH/xAAfAAAB\nBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0B\nAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp\nKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImK\nkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj\n5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ\n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",t)}},{"../../app/lib/make-image":2}],34:[function(t,n,e){"use strict";n.exports={singlePortrait:t("./single-portrait")}},{"./single-portrait":35}],35:[function(t,n,e){"use strict";var r=t("../../app/lib/make-image");n.exports=function(t){r("data:image/png;base64,\n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\nRWARCPwfuNDlwVfqKPUAAAAASUVORK5CYII=",t); -}},{"../../app/lib/make-image":2}]},{},[1]); +!function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){var r=t[s][1][e];return o(r?r:e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var i="function"==typeof require&&require,s=0;s= 2.0.0-beta.1"],main:function(e,t,r,n){return'
\n
\n
\n
\n
\n'},useData:!0})},{"handlebars/runtime":59}],6:[function(e,t,r){t.exports={default:e("core-js/library/fn/map"),__esModule:!0}},{"core-js/library/fn/map":15}],7:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/create"),__esModule:!0}},{"core-js/library/fn/object/create":16}],8:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:!0}},{"core-js/library/fn/object/define-property":17}],9:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/get-own-property-descriptor"),__esModule:!0}},{"core-js/library/fn/object/get-own-property-descriptor":18}],10:[function(e,t,r){t.exports={default:e("core-js/library/fn/set"),__esModule:!0}},{"core-js/library/fn/set":19}],11:[function(e,t,r){"use strict";r.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},r.__esModule=!0},{}],12:[function(e,t,r){"use strict";var n=e("babel-runtime/core-js/object/define-property").default;r.default=function(){function e(e,t){for(var r=0;r0?m:h)(e)}function o(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}function i(e,t,r){return e[t]=r,e}function s(e){return g?function(t,r,n){return $.setDesc(t,r,o(e,n))}:i}function a(e){return null!==e&&("object"==typeof e||"function"==typeof e)}function u(e){return"function"==typeof e}function c(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}var l="undefined"!=typeof self?self:Function("return this")(),f={},p=Object.defineProperty,d={}.hasOwnProperty,h=Math.ceil,m=Math.floor,v=Math.max,b=Math.min,g=!!function(){try{return 2==p({},"a",{get:function(){return 2}}).a}catch(e){}}(),y=s(1),$=t.exports=e("./$.fw")({g:l,core:f,html:l.document&&document.documentElement,isObject:a,isFunction:u,that:function(){return this},toInteger:n,toLength:function(e){return e>0?b(n(e),9007199254740991):0},toIndex:function(e,t){return e=n(e),0>e?v(e+t,0):b(e,t)},has:function(e,t){return d.call(e,t)},create:Object.create,getProto:Object.getPrototypeOf,DESC:g,desc:o,getDesc:Object.getOwnPropertyDescriptor,setDesc:p,setDescs:Object.defineProperties,getKeys:Object.keys,getNames:Object.getOwnPropertyNames,getSymbols:Object.getOwnPropertySymbols,assertDefined:c,ES5Object:Object,toObject:function(e){return $.ES5Object(c(e))},hide:y,def:s(0),set:l.Symbol?i:y,each:[].forEach});"undefined"!=typeof __e&&(__e=f),"undefined"!=typeof __g&&(__g=l)},{"./$.fw":28}],34:[function(e,t,r){var n=e("./$.redef");t.exports=function(e,t){for(var r in t)n(e,r,t[r]);return e}},{"./$.redef":35}],35:[function(e,t,r){t.exports=e("./$").hide},{"./$":33}],36:[function(e,t,r){var n=e("./$"),o="__core-js_shared__",i=n.g[o]||(n.g[o]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./$":33}],37:[function(e,t,r){var n=e("./$"),o=e("./$.wks")("species");t.exports=function(e){!n.DESC||o in e||n.setDesc(e,o,{configurable:!0,get:n.that})}},{"./$":33,"./$.wks":41}],38:[function(e,t,r){var n=e("./$");t.exports=function(e){return function(t,r){var o,i,s=String(n.assertDefined(t)),a=n.toInteger(r),u=s.length;return 0>a||a>=u?e?"":void 0:(o=s.charCodeAt(a),55296>o||o>56319||a+1===u||(i=s.charCodeAt(a+1))<56320||i>57343?e?s.charAt(a):o:e?s.slice(a,a+2):(o-55296<<10)+(i-56320)+65536)}}},{"./$":33}],39:[function(e,t,r){function n(e){return"Symbol(".concat(void 0===e?"":e,")_",(++o+Math.random()).toString(36))}var o=0;n.safe=e("./$").g.Symbol||n,t.exports=n},{"./$":33}],40:[function(e,t,r){t.exports=function(){}},{}],41:[function(e,t,r){var n=e("./$").g,o=e("./$.shared")("wks");t.exports=function(t){return o[t]||(o[t]=n.Symbol&&n.Symbol[t]||e("./$.uid").safe("Symbol."+t))}},{"./$":33,"./$.shared":36,"./$.uid":39}],42:[function(e,t,r){var n=e("./$"),o=e("./$.unscope"),i=e("./$.uid").safe("iter"),s=e("./$.iter"),a=s.step,u=s.Iterators;e("./$.iter-define")(Array,"Array",function(e,t){n.set(this,i,{o:n.toObject(e),i:0,k:t})},function(){var e=this[i],t=e.o,r=e.k,n=e.i++;return!t||n>=t.length?(e.o=void 0,a(1)):"keys"==r?a(0,n):"values"==r?a(0,t[n]):a(0,[n,t[n]])},"values"),u.Arguments=u.Array,o("keys"),o("values"),o("entries")},{"./$":33,"./$.iter":32,"./$.iter-define":31,"./$.uid":39,"./$.unscope":40}],43:[function(e,t,r){"use strict";var n=e("./$.collection-strong");e("./$.collection")("Map",function(e){return function(){return e(this,arguments[0])}},{get:function(e){var t=n.getEntry(this,e);return t&&t.v},set:function(e,t){return n.def(this,0===e?0:e,t)}},n,!0)},{"./$.collection":24,"./$.collection-strong":22}],44:[function(e,t,r){var n=e("./$"),o=e("./$.def"),i=n.isObject,s=n.toObject;n.each.call("freeze,seal,preventExtensions,isFrozen,isSealed,isExtensible,getOwnPropertyDescriptor,getPrototypeOf,keys,getOwnPropertyNames".split(","),function(t,r){var a=(n.core.Object||{})[t]||Object[t],u=0,c={};c[t]=0==r?function(e){return i(e)?a(e):e}:1==r?function(e){return i(e)?a(e):e}:2==r?function(e){return i(e)?a(e):e}:3==r?function(e){return i(e)?a(e):!0}:4==r?function(e){return i(e)?a(e):!0}:5==r?function(e){return i(e)?a(e):!1}:6==r?function(e,t){return a(s(e),t)}:7==r?function(e){return a(Object(n.assertDefined(e)))}:8==r?function(e){return a(s(e))}:e("./$.get-names").get;try{a("z")}catch(e){u=1}o(o.S+o.F*u,"Object",c)})},{"./$":33,"./$.def":26,"./$.get-names":29}],45:[function(e,t,r){"use strict";var n=e("./$.cof"),o={};o[e("./$.wks")("toStringTag")]="z",e("./$").FW&&"z"!=n(o)&&e("./$.redef")(Object.prototype,"toString",function(){return"[object "+n.classof(this)+"]"},!0)},{"./$":33,"./$.cof":21,"./$.redef":35,"./$.wks":41}],46:[function(e,t,r){"use strict";var n=e("./$.collection-strong");e("./$.collection")("Set",function(e){return function(){return e(this,arguments[0])}},{add:function(e){return n.def(this,e=0===e?0:e,e)}},n)},{"./$.collection":24,"./$.collection-strong":22}],47:[function(e,t,r){var n=e("./$").set,o=e("./$.string-at")(!0),i=e("./$.uid").safe("iter"),s=e("./$.iter"),a=s.step;e("./$.iter-define")(String,"String",function(e){n(this,i,{o:String(e),i:0})},function(){var e,t=this[i],r=t.o,n=t.i;return n>=r.length?a(1):(e=o(r,n),t.i+=e.length,a(0,e))})},{"./$":33,"./$.iter":32,"./$.iter-define":31,"./$.string-at":38,"./$.uid":39}],48:[function(e,t,r){e("./$.collection-to-json")("Map")},{"./$.collection-to-json":23}],49:[function(e,t,r){e("./$.collection-to-json")("Set")},{"./$.collection-to-json":23}],50:[function(e,t,r){e("./es6.array.iterator");var n=e("./$"),o=e("./$.iter").Iterators,i=e("./$.wks")("iterator"),s=o.Array,a=n.g.NodeList,u=n.g.HTMLCollection,c=a&&a.prototype,l=u&&u.prototype;n.FW&&(!a||i in c||n.hide(c,i,s),!u||i in l||n.hide(l,i,s)),o.NodeList=o.HTMLCollection=s},{"./$":33,"./$.iter":32,"./$.wks":41,"./es6.array.iterator":42}],51:[function(e,t,r){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function o(e){return"function"==typeof e}function i(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!i(e)||0>e||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,r,n,i,u,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(r=this._events[e],a(r))return!1;if(o(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:for(n=arguments.length,i=new Array(n-1),u=1;n>u;u++)i[u-1]=arguments[u];r.apply(this,i)}else if(s(r)){for(n=arguments.length,i=new Array(n-1),u=1;n>u;u++)i[u-1]=arguments[u];for(c=r.slice(),n=c.length,u=0;n>u;u++)c[u].apply(this,i)}return!0},n.prototype.addListener=function(e,t){var r;if(!o(t))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,o(t.listener)?t.listener:t),this._events[e]?s(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,s(this._events[e])&&!this._events[e].warned){var r;r=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners,r&&r>0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())}return this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!o(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var r,n,i,a;if(!o(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],i=r.length,n=-1,r===t||o(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(a=i;a-->0;)if(r[a]===t||r[a].listener&&r[a].listener===t){n=a;break}if(0>n)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],o(r))this.removeListener(e,r);else for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?o(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.listenerCount=function(e,t){var r;return r=e._events&&e._events[t]?o(e._events[t])?1:e._events[t].length:0}},{}],52:[function(e,t,r){"use strict";function n(){var e=new s.HandlebarsEnvironment;return p.extend(e,s),e.SafeString=u.default,e.Exception=l.default,e.Utils=p,e.escapeExpression=p.escapeExpression,e.VM=h,e.template=function(t){return h.template(t,e)},e}var o=function(e){return e&&e.__esModule?e:{default:e}};r.__esModule=!0;var i=e("./handlebars/base"),s=o(i),a=e("./handlebars/safe-string"),u=o(a),c=e("./handlebars/exception"),l=o(c),f=e("./handlebars/utils"),p=o(f),d=e("./handlebars/runtime"),h=o(d),m=e("./handlebars/no-conflict"),v=o(m),b=n();b.create=n,v.default(b),b.default=b,r.default=b,t.exports=r.default},{"./handlebars/base":53,"./handlebars/exception":54,"./handlebars/no-conflict":55,"./handlebars/runtime":56,"./handlebars/safe-string":57,"./handlebars/utils":58}],53:[function(e,t,r){"use strict";function n(e,t){this.helpers=e||{},this.partials=t||{},o(this)}function o(e){e.registerHelper("helperMissing",function(){if(1===arguments.length)return void 0;throw new l.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}),e.registerHelper("blockHelperMissing",function(t,r){var n=r.inverse,o=r.fn;if(t===!0)return o(this);if(t===!1||null==t)return n(this);if(h(t))return t.length>0?(r.ids&&(r.ids=[r.name]),e.helpers.each(t,r)):n(this);if(r.data&&r.ids){var s=i(r.data);s.contextPath=u.appendContextPath(r.data.contextPath,r.name),r={data:s}}return o(t,r)}),e.registerHelper("each",function(e,t){function r(t,r,o){c&&(c.key=t,c.index=r,c.first=0===r,c.last=!!o,f&&(c.contextPath=f+t)),a+=n(e[t],{data:c,blockParams:u.blockParams([e[t],t],[f+t,null])})}if(!t)throw new l.default("Must pass iterator to #each");var n=t.fn,o=t.inverse,s=0,a="",c=void 0,f=void 0;if(t.data&&t.ids&&(f=u.appendContextPath(t.data.contextPath,t.ids[0])+"."),m(e)&&(e=e.call(this)),t.data&&(c=i(t.data)),e&&"object"==typeof e)if(h(e))for(var p=e.length;p>s;s++)r(s,s,s===e.length-1);else{var d=void 0;for(var v in e)e.hasOwnProperty(v)&&(d&&r(d,s-1),d=v,s++);d&&r(d,s-1,!0)}return 0===s&&(a=o(this)),a}),e.registerHelper("if",function(e,t){return m(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||u.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,r){return e.helpers.if.call(this,t,{fn:r.inverse,inverse:r.fn,hash:r.hash})}),e.registerHelper("with",function(e,t){m(e)&&(e=e.call(this));var r=t.fn;if(u.isEmpty(e))return t.inverse(this);if(t.data&&t.ids){var n=i(t.data);n.contextPath=u.appendContextPath(t.data.contextPath,t.ids[0]),t={data:n}}return r(e,t)}),e.registerHelper("log",function(t,r){var n=r.data&&null!=r.data.level?parseInt(r.data.level,10):1;e.log(n,t)}),e.registerHelper("lookup",function(e,t){return e&&e[t]})}function i(e){var t=u.extend({},e);return t._parent=e,t}var s=function(e){return e&&e.__esModule?e:{default:e}};r.__esModule=!0,r.HandlebarsEnvironment=n,r.createFrame=i;var a=e("./utils"),u=s(a),c=e("./exception"),l=s(c),f="3.0.1";r.VERSION=f;var p=6;r.COMPILER_REVISION=p;var d={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};r.REVISION_CHANGES=d;var h=u.isArray,m=u.isFunction,v=u.toString,b="[object Object]";n.prototype={constructor:n,logger:g,log:y,registerHelper:function(e,t){if(v.call(e)===b){if(t)throw new l.default("Arg not supported with multiple helpers");u.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(v.call(e)===b)u.extend(this.partials,e);else{if("undefined"==typeof t)throw new l.default("Attempting to register a partial as undefined");this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]}};var g={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:1,log:function(e,t){if("undefined"!=typeof console&&g.level<=e){var r=g.methodMap[e];(console[r]||console.log).call(console,t)}}};r.logger=g;var y=g.log;r.log=y},{"./exception":54,"./utils":58}],54:[function(e,t,r){"use strict";function n(e,t){var r=t&&t.loc,i=void 0,s=void 0;r&&(i=r.start.line,s=r.start.column,e+=" - "+i+":"+s);for(var a=Error.prototype.constructor.call(this,e),u=0;ut){var n=m.REVISION_CHANGES[r],o=m.REVISION_CHANGES[t];throw new h.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+n+") or downgrade your runtime to an older version ("+o+").")}throw new h.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function o(e,t){function r(r,n,o){o.hash&&(n=p.extend({},n,o.hash)),r=t.VM.resolvePartial.call(this,r,n,o);var i=t.VM.invokePartial.call(this,r,n,o);if(null==i&&t.compile&&(o.partials[o.name]=t.compile(r,e.compilerOptions,t),i=o.partials[o.name](n,o)),null!=i){if(o.indent){for(var s=i.split("\n"),a=0,u=s.length;u>a&&(s[a]||a+1!==u);a++)s[a]=o.indent+s[a];i=s.join("\n")}return i}throw new h.default("The partial "+o.name+" could not be compiled when running in runtime-only mode")}function n(t){var r=void 0===arguments[1]?{}:arguments[1],i=r.data;n._setup(r),!r.partial&&e.useData&&(i=c(t,i));var s=void 0,a=e.useBlockParams?[]:void 0;return e.useDepths&&(s=r.depths?[t].concat(r.depths):[t]),e.main.call(o,t,o.helpers,o.partials,i,a,s)}if(!t)throw new h.default("No environment passed to template");if(!e||!e.main)throw new h.default("Unknown template object: "+typeof e);t.VM.checkRevision(e.compiler);var o={strict:function(e,t){if(!(t in e))throw new h.default('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var r=e.length,n=0;r>n;n++)if(e[n]&&null!=e[n][t])return e[n][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:p.escapeExpression,invokePartial:r,fn:function(t){return e[t]},programs:[],program:function(e,t,r,n,o){var s=this.programs[e],a=this.fn(e);return t||o||n||r?s=i(this,e,a,t,r,n,o):s||(s=this.programs[e]=i(this,e,a)), +s},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var r=e||t;return e&&t&&e!==t&&(r=p.extend({},t,e)),r},noop:t.VM.noop,compilerInfo:e.compiler};return n.isTop=!0,n._setup=function(r){r.partial?(o.helpers=r.helpers,o.partials=r.partials):(o.helpers=o.merge(r.helpers,t.helpers),e.usePartial&&(o.partials=o.merge(r.partials,t.partials)))},n._child=function(t,r,n,s){if(e.useBlockParams&&!n)throw new h.default("must pass block params");if(e.useDepths&&!s)throw new h.default("must pass parent depths");return i(o,t,e[t],r,0,n,s)},n}function i(e,t,r,n,o,i,s){function a(t){var o=void 0===arguments[1]?{}:arguments[1];return r.call(e,t,e.helpers,e.partials,o.data||n,i&&[o.blockParams].concat(i),s&&[t].concat(s))}return a.program=t,a.depth=s?s.length:0,a.blockParams=o||0,a}function s(e,t,r){return e?e.call||r.name||(r.name=e,e=r.partials[e]):e=r.partials[r.name],e}function a(e,t,r){if(r.partial=!0,void 0===e)throw new h.default("The partial "+r.name+" could not be found");return e instanceof Function?e(t,r):void 0}function u(){return""}function c(e,t){return t&&"root"in t||(t=t?m.createFrame(t):{},t.root=e),t}var l=function(e){return e&&e.__esModule?e:{default:e}};r.__esModule=!0,r.checkRevision=n,r.template=o,r.wrapProgram=i,r.resolvePartial=s,r.invokePartial=a,r.noop=u;var f=e("./utils"),p=l(f),d=e("./exception"),h=l(d),m=e("./base")},{"./base":53,"./exception":54,"./utils":58}],57:[function(e,t,r){"use strict";function n(e){this.string=e}r.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},r.default=n,t.exports=r.default},{}],58:[function(e,t,r){"use strict";function n(e){return l[e]}function o(e){for(var t=1;tr;r++)if(e[r]===t)return r;return-1}function s(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return p.test(e)?e.replace(f,n):e}function a(e){return e||0===e?m(e)&&0===e.length?!0:!1:!0}function u(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}r.__esModule=!0,r.extend=o,r.indexOf=i,r.escapeExpression=s,r.isEmpty=a,r.blockParams=u,r.appendContextPath=c;var l={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},f=/[&<>"'`]/g,p=/[&<>"'`]/,d=Object.prototype.toString;r.toString=d;var h=function(e){return"function"==typeof e};h(/x/)&&(r.isFunction=h=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)});var h;r.isFunction=h;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};r.isArray=m},{}],59:[function(e,t,r){t.exports=e("./dist/cjs/handlebars.runtime").default},{"./dist/cjs/handlebars.runtime":52}]},{},[2]); //# sourceMappingURL=dist/comicbook.min.js.map \ No newline at end of file diff --git a/dist/comicbook.min.js.map b/dist/comicbook.min.js.map index c019f61..1e502e0 100644 --- a/dist/comicbook.min.js.map +++ b/dist/comicbook.min.js.map @@ -1 +1 @@ -{"version":3,"file":"dist/comicbook.min.js","sources":["dist/comicbook.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","Canvas","canvas","zoomMode","testImages","fixtureImages","imagediff","portrait1","testImage","singlePortrait","fixtureImage","drawImage","console","log","equal","width","height","document","body","appendChild","../test/data","../test/fixture","./view/canvas",2,"src","cb","image","window","Image","onload",3,"windowWidth","innerWidth","_get","_inherits","_createClass","_classCallCheck","_Object$assign","EventEmitter","_EventEmitter","options","this","Object","getPrototypeOf","prototype","readDirection","doublePage","createElement","context","getContext","key","value","page","page2","emit","zoomScale","undefined","offsetW","offsetH","doublePageMode","canvasWidth","canvasHeight","pageWidth","pageHeight","isDoublePageSpread","style","overflowX","scale","widthScale","windowHeight","innerHeight","heightScale","manga","tmpPage","tmpPage2","babel-runtime/core-js/object/assign","babel-runtime/helpers/class-call-check","babel-runtime/helpers/create-class","babel-runtime/helpers/get","babel-runtime/helpers/inherits","events",4,"default","__esModule","core-js/library/fn/object/assign",5,"core-js/library/fn/object/create",6,"core-js/library/fn/object/define-property",7,"core-js/library/fn/object/get-own-property-descriptor",8,"instance","Constructor","TypeError",9,"_Object$defineProperty","defineProperties","target","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","babel-runtime/core-js/object/define-property",10,"_Object$getOwnPropertyDescriptor","_x","_x2","_x3","_again","object","property","receiver","desc","parent","getter","Function","get","babel-runtime/core-js/object/get-own-property-descriptor",11,"_Object$create","subClass","superClass","constructor","__proto__","babel-runtime/core-js/object/create",12,"lookup","decode","elt","charCodeAt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","push","v","arr","L","j","tmp","placeHolders","len","charAt","Arr","uint8ToBase64","uint8","encode","num","tripletToBase64","temp","extraBytes","output","Uint8Array","Array","toByteArray","fromByteArray","base64js",13,14,"kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","arg","fromNumber","fromString","arguments","fromObject","that","allocate","checked","string","encoding","byteLength","write","isBuffer","fromBuffer","isArray","fromArray","ArrayBuffer","buffer","fromTypedArray","fromArrayLike","fromJsonObject","copy","array","type","data","_augment","_isBuffer","fromPool","poolSize","rootParent","RangeError","toString","SlowBuffer","subject","buf","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","Infinity","hexSlice","utf8Slice","asciiSlice","binarySlice","base64Slice","utf16leSlice","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","isNaN","utf8Write","blitBuffer","asciiWrite","asciiToBytes","binaryWrite","base64Write","ucs2Write","utf16leToBytes","base64","slice","res","Math","min","decodeUtf8Char","String","fromCharCode","ret","out","toHex","bytes","checkOffset","ext","checkInt","max","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","str","stringtrim","replace","INVALID_BASE64_RE","trim","units","codePoint","leadSurrogate","byteArray","c","hi","lo","dst","decodeURIComponent","err","INSPECT_MAX_BYTES","Foo","foo","subarray","b","compare","x","y","isEncoding","concat","list","pos","item","apply","equals","inspect","match","join","indexOf","val","byteOffset","arrayIndexOf","foundIndex","readUInt8","set","writeUInt8","isFinite","swap","toJSON","_arr","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","_set","fill","toArrayBuffer","BP","toLocaleString","base64-js","is-array",15,"core","assign","../../modules/$","../../modules/es6.object.assign",16,"$","P","D","create",17,"it","setDesc",18,"getDesc","../../modules/es6.object.statics-accept-primitives",19,"enumKeys","source","T","assertDefined","S","ES5Object","keys","./$","./$.enum-keys",20,"ctx","fn","$def","name","own","exp","isGlobal","G","isProto","global","F","isFunction","B","W","C","param","g",21,"getKeys","getSymbols","each",22,"FW","path",23,"getWindowNames","getNames","windowNames","getOwnPropertyNames","toObject",24,"toInteger","ceil","bitmap","simpleSet","createDefiner","DESC","isObject","self","defineProperty","hasOwnProperty","hide","html","documentElement","toLength","toIndex","index","has","getProto","getOwnPropertyDescriptor","setDescs","getOwnPropertySymbols","def","Symbol","forEach","__e","__g","./$.fw",25,"./$.assign","./$.def",26,"split","KEY","ID","forced","method","./$.get-names",27,"_events","_maxListeners","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","er","handler","args","listeners","error","addListener","listener","m","newListener","warned","trace","on","once","removeListener","fired","position","splice","removeAllListeners","listenerCount","emitter",28,"isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","NaN","rt","abs","LN2",29,30,"definition","root","message","define","amd","getCanvas","getImageData","clearRect","createImageData","getCanvasRef","isImage","isType","TYPE_IMAGE","isCanvas","TYPE_CANVAS","isContext","TYPE_CONTEXT","isImageData","TYPE_IMAGE_DATA","UNDEFINED","isImageType","copyImageData","imageData","newImageData","newData","toImageData","toImageDataFromImage","toImageDataFromCanvas","toImageDataFromContext","toCanvas","putImageData","equalWidth","equalHeight","equalDimensions","tolerance","aData","bData","diff","diffEqual","diffUnequal","cData","offsets","align","rowOffset","columnOffset","row","column","checkType","element","content","innerHTML","imageDataToPNG","outputFile","callback","base64Data","decodedImage","toDataURL","writeFile","jasmine","previous","toBeImageData","actual","toImageDiffEqual","expected","div","overflow","float","createCanvas","noConflict","fs",31,32,"./portrait1",33,"makeImage","../../app/lib/make-image",34,"./single-portrait",35],"mappings":"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","sourceRoot":"./"} \ No newline at end of file +{"version":3,"file":"dist/comicbook.min.js","sources":["dist/comicbook.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","_get","_inherits","_createClass","_classCallCheck","_Set","_Map","EventEmitter","LoadIndicator","ProgressBar","ComicBook","_EventEmitter","srcs","arguments","undefined","this","Object","getPrototypeOf","prototype","pages","loadIndicator","progressBar","addEventListeners","key","value","on","show","bind","updateProgressBar","hide","el","document","createElement","appendChild","self","emit","forEach","src","pageIndex","setImage","set","size","image","window","Image","onload","percentage","Math","floor","update","./view/load-indicator","./view/progress-bar","babel-runtime/core-js/map","babel-runtime/core-js/set","babel-runtime/helpers/class-call-check","babel-runtime/helpers/create-class","babel-runtime/helpers/get","babel-runtime/helpers/inherits","events",2,"comic","addEventListener","body","render","preload","./comic-book",3,"id","style","display",4,"template","createElements","innerHTML","firstChild","progressEl","querySelector","width","./template/progress-bar.handlebars",5,"templater","compiler","main","depth0","helpers","partials","data","useData","handlebars/runtime",6,"default","__esModule","core-js/library/fn/map",7,"core-js/library/fn/object/create",8,"core-js/library/fn/object/define-property",9,"core-js/library/fn/object/get-own-property-descriptor",10,"core-js/library/fn/set",11,"instance","Constructor","TypeError",12,"_Object$defineProperty","defineProperties","target","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","babel-runtime/core-js/object/define-property",13,"_Object$getOwnPropertyDescriptor","_x","_x2","_x3","_again","object","property","receiver","desc","parent","getter","Function","get","babel-runtime/core-js/object/get-own-property-descriptor",14,"_Object$create","subClass","superClass","constructor","__proto__","babel-runtime/core-js/object/create",15,"core","Map","../modules/$","../modules/es6.map","../modules/es6.object.to-string","../modules/es6.string.iterator","../modules/es7.map.to-json","../modules/web.dom.iterable",16,"$","P","D","create","../../modules/$",17,"it","setDesc",18,"getDesc","../../modules/es6.object.statics-accept-primitives",19,"Set","../modules/es6.set","../modules/es7.set.to-json",20,"assert","condition","msg1","msg2","def","assertDefined","fn","isFunction","obj","isObject","inst","name","./$",21,"cof","toString","slice","TAG","classof","O","T","tag","stat","has","./$.wks",22,"fastKey","$has","ID","isExtensible","getEntry","that","entry","index","O1","FIRST","k","ctx","safe","forOf","step","LAST","ITER","SIZE","DESC","getConstructor","wrapper","NAME","IS_MAP","ADDER","C","iterable","clear","p","delete","next","prev","callbackfn","v","setIter","iterated","kind","iter","./$.assert","./$.ctx","./$.for-of","./$.iter","./$.iter-define","./$.mix","./$.uid",23,"$def","toJSON","arr","push","./$.def",24,"$iter","BUGGY","assertInstance","INTERNAL","methods","common","IS_WEAK","Base","g","proto","entries","each","split","KEY","chain","b","result","G","W","F","./$.cof","./$.species",25,"assertFunction","c","apply",26,"type","source","own","out","exp","isGlobal","isProto","global","S","B","param",27,"iterator","done","close","./$.iter-call",28,"FW","path",29,"getWindowNames","getNames","windowNames","getOwnPropertyNames","toObject",30,"ret","assertObject",31,"$redef","SYMBOL_ITERATOR","FF_ITERATOR","KEYS","VALUES","Iterators","DEFAULT","IS_SET","FORCE","createMethod","$$","_native","_default","IteratorPrototype","getProto","keys","values","./$.redef",32,"setIterator","is","Symbol","getIter","./$.shared",33,"toInteger","isNaN","ceil","bitmap","simpleSet","createDefiner","defineProperty","hasOwnProperty","max","min","html","documentElement","toLength","toIndex","getOwnPropertyDescriptor","setDescs","getKeys","getSymbols","getOwnPropertySymbols","ES5Object","__e","__g","./$.fw",34,35,36,"SHARED","store",37,"SPECIES",38,"TO_STRING","pos","String","charCodeAt","charAt",39,"uid","concat","sid","random",40,41,42,"setUnscope","Array","Arguments","./$.unscope",43,"strong","./$.collection","./$.collection-strong",44,"forced","method","./$.get-names",45,"tmp",46,"add",47,"$at","point","./$.string-at",48,"./$.collection-to-json",49,50,"ITERATOR","ArrayValues","NL","NodeList","HTC","HTMLCollection","NLProto","HTCProto","./es6.array.iterator",51,"_events","_maxListeners","arg","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","er","handler","len","args","listeners","error","addListener","listener","m","newListener","warned","console","trace","once","removeListener","fired","list","position","splice","removeAllListeners","listenerCount","emitter",52,"hb","base","HandlebarsEnvironment","Utils","extend","SafeString","_SafeString2","Exception","_Exception2","escapeExpression","VM","runtime","spec","_interopRequireWildcard","_import","_SafeString","_Exception","_import2","_import3","_noConflict","_noConflict2","./handlebars/base","./handlebars/exception","./handlebars/no-conflict","./handlebars/runtime","./handlebars/safe-string","./handlebars/utils",53,"registerDefaultHelpers","registerHelper","context","options","inverse","isArray","ids","createFrame","contextPath","appendContextPath","execIteration","field","last","first","blockParams","j","priorKey","conditional","hash","includeZero","isEmpty","message","level","parseInt","log","frame","_parent","VERSION","COMPILER_REVISION","REVISION_CHANGES","objectType","logger","unregisterHelper","registerPartial","partial","unregisterPartial","methodMap","DEBUG","INFO","WARN","ERROR","./exception","./utils",54,"node","loc","line","column","start","idx","errorProps","captureStackTrace","lineNumber",55,"Handlebars","root","$Handlebars","noConflict",56,"checkRevision","compilerInfo","compilerRevision","currentRevision","_COMPILER_REVISION$REVISION_CHANGES$createFrame","runtimeVersions","compilerVersions","templateSpec","env","invokePartialWrapper","resolvePartial","invokePartial","compile","compilerOptions","indent","lines","join","_setup","initData","depths","useBlockParams","useDepths","container","strict","lookup","lambda","current","programs","program","declaredBlockParams","programWrapper","wrapProgram","depth","merge","noop","isTop","usePartial","_child","prog","./base",57,"string","toHTML",58,"escapeChar","chr","escape","indexOf","array","possible","test","replace","badChars","params","&","<",">","\"","'","`",59,"./dist/cjs/handlebars.runtime"],"mappings":"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","sourceRoot":"./"} \ No newline at end of file diff --git a/package.json b/package.json index b2b5fcc..3eadac4 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "imagediff": "^1.0.8", "mochify": "^2.10.0", "phantomjs": "^1.9.17", + "spy": "^0.1.3", "standard": "^4.5.3", "uglify-js": "^2.4.23", "watchify": "http://registry.npmjs.org/watchify/-/watchify-3.2.3.tgz" diff --git a/test/comic-book.test.js b/test/comic-book.test.js index 22202f6..460a088 100644 --- a/test/comic-book.test.js +++ b/test/comic-book.test.js @@ -1,4 +1,5 @@ let assert = require('assert') +let spy = require('spy') let ComicBook = require('../app/comic-book') let srcs = [ 'data:image/gif;base64,R0lGODlhAQABAPAAAKqqqv///yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==', @@ -49,7 +50,42 @@ describe('ComicBook', () => { comic.preload() }) - it('should scroll to the top of the page on page turn') + it('should show the progress bar on preload:start', () => { + let comic = new ComicBook(srcs) + assert.equal(comic.progressBar.el.style.display, 'none') + comic.preload() + assert.equal(comic.progressBar.el.style.display, 'block') + }) + it('should update the progress bar', done => { + let comic = new ComicBook(srcs) + + comic.progressBar.update = spy() + comic.preload() + + comic.on('preload:finish', () => { + assert.equal(comic.progressBar.update.callCount, 5) + assert(comic.progressBar.update.calls[0].calledWith(20)) + assert(comic.progressBar.update.calls[1].calledWith(40)) + assert(comic.progressBar.update.calls[2].calledWith(60)) + assert(comic.progressBar.update.calls[3].calledWith(80)) + assert(comic.progressBar.update.calls[4].calledWith(100)) + done() + }) + }) + + it('should hide the progress bar when finished', done => { + let comic = new ComicBook(srcs) + + comic.preload() + + comic.on('preload:finish', () => { + assert.equal(comic.progressBar.el.style.display, 'none') + done() + }) + }) }) + + it('should scroll to the top of the page on page turn') + }) diff --git a/test/view/progress-bar.test.js b/test/view/progress-bar.test.js new file mode 100644 index 0000000..fe791b1 --- /dev/null +++ b/test/view/progress-bar.test.js @@ -0,0 +1,32 @@ +let assert = require('assert') +let ProgressBar = require('../../app/view/progress-bar') + +describe('PreloadProgress', () => { + + it('should show', () => { + let bar = new ProgressBar() + bar.el.style.display = 'none' + bar.show() + assert.equal(bar.el.style.display, 'block') + }) + + it('should hide', () => { + let bar = new ProgressBar() + bar.el.style.display = 'block' + bar.hide() + assert.equal(bar.el.style.display, 'none') + }) + + it('should show on when preload is started', () => { + let bar = new ProgressBar() + assert.equal(bar.el.style.display, 'none') + }) + + it('should show the current percentage of the total preloading images', () => { + let bar = new ProgressBar() + bar.update(50) + assert.equal(bar.progressEl.style.width, '50%') + }) + +}) +