{"id":"node_modules/des.js/lib/des/cipher.js","dependencies":[{"name":"/www/ml-classifier/example/package.json","includedInParent":true,"mtime":1551949031632},{"name":"/www/ml-classifier/example/.babelrc","includedInParent":true,"mtime":1551703756168},{"name":"/www/ml-classifier/example/node_modules/des.js/package.json","includedInParent":true,"mtime":1542304152748},{"name":"minimalistic-assert","loc":{"line":3,"column":21},"parent":"/www/ml-classifier/example/node_modules/des.js/lib/des/cipher.js","resolved":"/www/ml-classifier/example/node_modules/minimalistic-assert/index.js"}],"generated":{"js":"'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n","map":{"mappings":[{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":1,"column":0},"generated":{"line":1,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":2,"column":0},"generated":{"line":2,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":3,"column":0},"generated":{"line":3,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":4,"column":0},"generated":{"line":4,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":5,"column":0},"generated":{"line":5,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":6,"column":0},"generated":{"line":6,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":7,"column":0},"generated":{"line":7,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":8,"column":0},"generated":{"line":8,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":9,"column":0},"generated":{"line":9,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":10,"column":0},"generated":{"line":10,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":11,"column":0},"generated":{"line":11,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":12,"column":0},"generated":{"line":12,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":13,"column":0},"generated":{"line":13,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":14,"column":0},"generated":{"line":14,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":15,"column":0},"generated":{"line":15,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":16,"column":0},"generated":{"line":16,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":17,"column":0},"generated":{"line":17,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":18,"column":0},"generated":{"line":18,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":19,"column":0},"generated":{"line":19,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":20,"column":0},"generated":{"line":20,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":21,"column":0},"generated":{"line":21,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":22,"column":0},"generated":{"line":22,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":23,"column":0},"generated":{"line":23,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":24,"column":0},"generated":{"line":24,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":25,"column":0},"generated":{"line":25,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":26,"column":0},"generated":{"line":26,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":27,"column":0},"generated":{"line":27,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":28,"column":0},"generated":{"line":28,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":29,"column":0},"generated":{"line":29,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":30,"column":0},"generated":{"line":30,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":31,"column":0},"generated":{"line":31,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":32,"column":0},"generated":{"line":32,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":33,"column":0},"generated":{"line":33,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":34,"column":0},"generated":{"line":34,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":35,"column":0},"generated":{"line":35,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":36,"column":0},"generated":{"line":36,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":37,"column":0},"generated":{"line":37,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":38,"column":0},"generated":{"line":38,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":39,"column":0},"generated":{"line":39,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":40,"column":0},"generated":{"line":40,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":41,"column":0},"generated":{"line":41,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":42,"column":0},"generated":{"line":42,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":43,"column":0},"generated":{"line":43,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":44,"column":0},"generated":{"line":44,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":45,"column":0},"generated":{"line":45,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":46,"column":0},"generated":{"line":46,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":47,"column":0},"generated":{"line":47,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":48,"column":0},"generated":{"line":48,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":49,"column":0},"generated":{"line":49,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":50,"column":0},"generated":{"line":50,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":51,"column":0},"generated":{"line":51,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":52,"column":0},"generated":{"line":52,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":53,"column":0},"generated":{"line":53,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":54,"column":0},"generated":{"line":54,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":55,"column":0},"generated":{"line":55,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":56,"column":0},"generated":{"line":56,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":57,"column":0},"generated":{"line":57,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":58,"column":0},"generated":{"line":58,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":59,"column":0},"generated":{"line":59,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":60,"column":0},"generated":{"line":60,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":61,"column":0},"generated":{"line":61,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":62,"column":0},"generated":{"line":62,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":63,"column":0},"generated":{"line":63,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":64,"column":0},"generated":{"line":64,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":65,"column":0},"generated":{"line":65,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":66,"column":0},"generated":{"line":66,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":67,"column":0},"generated":{"line":67,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":68,"column":0},"generated":{"line":68,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":69,"column":0},"generated":{"line":69,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":70,"column":0},"generated":{"line":70,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":71,"column":0},"generated":{"line":71,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":72,"column":0},"generated":{"line":72,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":73,"column":0},"generated":{"line":73,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":74,"column":0},"generated":{"line":74,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":75,"column":0},"generated":{"line":75,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":76,"column":0},"generated":{"line":76,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":77,"column":0},"generated":{"line":77,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":78,"column":0},"generated":{"line":78,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":79,"column":0},"generated":{"line":79,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":80,"column":0},"generated":{"line":80,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":81,"column":0},"generated":{"line":81,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":82,"column":0},"generated":{"line":82,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":83,"column":0},"generated":{"line":83,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":84,"column":0},"generated":{"line":84,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":85,"column":0},"generated":{"line":85,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":86,"column":0},"generated":{"line":86,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":87,"column":0},"generated":{"line":87,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":88,"column":0},"generated":{"line":88,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":89,"column":0},"generated":{"line":89,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":90,"column":0},"generated":{"line":90,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":91,"column":0},"generated":{"line":91,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":92,"column":0},"generated":{"line":92,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":93,"column":0},"generated":{"line":93,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":94,"column":0},"generated":{"line":94,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":95,"column":0},"generated":{"line":95,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":96,"column":0},"generated":{"line":96,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":97,"column":0},"generated":{"line":97,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":98,"column":0},"generated":{"line":98,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":99,"column":0},"generated":{"line":99,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":100,"column":0},"generated":{"line":100,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":101,"column":0},"generated":{"line":101,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":102,"column":0},"generated":{"line":102,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":103,"column":0},"generated":{"line":103,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":104,"column":0},"generated":{"line":104,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":105,"column":0},"generated":{"line":105,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":106,"column":0},"generated":{"line":106,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":107,"column":0},"generated":{"line":107,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":108,"column":0},"generated":{"line":108,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":109,"column":0},"generated":{"line":109,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":110,"column":0},"generated":{"line":110,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":111,"column":0},"generated":{"line":111,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":112,"column":0},"generated":{"line":112,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":113,"column":0},"generated":{"line":113,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":114,"column":0},"generated":{"line":114,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":115,"column":0},"generated":{"line":115,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":116,"column":0},"generated":{"line":116,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":117,"column":0},"generated":{"line":117,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":118,"column":0},"generated":{"line":118,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":119,"column":0},"generated":{"line":119,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":120,"column":0},"generated":{"line":120,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":121,"column":0},"generated":{"line":121,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":122,"column":0},"generated":{"line":122,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":123,"column":0},"generated":{"line":123,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":124,"column":0},"generated":{"line":124,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":125,"column":0},"generated":{"line":125,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":126,"column":0},"generated":{"line":126,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":127,"column":0},"generated":{"line":127,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":128,"column":0},"generated":{"line":128,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":129,"column":0},"generated":{"line":129,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":130,"column":0},"generated":{"line":130,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":131,"column":0},"generated":{"line":131,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":132,"column":0},"generated":{"line":132,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":133,"column":0},"generated":{"line":133,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":134,"column":0},"generated":{"line":134,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":135,"column":0},"generated":{"line":135,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":136,"column":0},"generated":{"line":136,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":137,"column":0},"generated":{"line":137,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":138,"column":0},"generated":{"line":138,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":139,"column":0},"generated":{"line":139,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":140,"column":0},"generated":{"line":140,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":141,"column":0},"generated":{"line":141,"column":0}},{"source":"node_modules/des.js/lib/des/cipher.js","original":{"line":142,"column":0},"generated":{"line":142,"column":0}}],"sources":{"node_modules/des.js/lib/des/cipher.js":"'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n"},"lineCount":142}},"hash":"a58570b5bc98da2b6aae64e91744244c","cacheData":{"env":{}}}