{"version":3,"sources":["jsdelivr-header.js","/npm/graceful-fs@4.2.8/graceful-fs.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAQI,cACA,eATA,GAAK,QAAQ,MACb,UAAY,QAAQ,kBACpB,OAAS,QAAQ,uBACjB,MAAQ,QAAQ,cAEhB,KAAO,QAAQ,QAgBnB,SAAS,OAAS,CAElB,SAAS,aAAa,EAAS,GAC7B,OAAO,eAAe,EAAS,cAAe,CAC5C,IAAK,WACH,OAAO,CACT,GAEJ,CAjBsB,mBAAX,QAA+C,mBAAf,OAAO,KAChD,cAAgB,OAAO,IAAI,qBAE3B,eAAiB,OAAO,IAAI,0BAE5B,cAAgB,uBAChB,eAAiB,2BAanB,IAuUI,WAvUA,MAAQ,KAWZ,GAVI,KAAK,SACP,MAAQ,KAAK,SAAS,QACf,YAAY,KAAK,QAAQ,IAAI,YAAc,MAClD,MAAQ,WACN,IAAI,EAAI,KAAK,OAAO,MAAM,KAAM,WAChC,EAAI,SAAW,EAAE,MAAM,MAAM,KAAK,YAClC,QAAQ,MAAM,EAChB,IAGG,GAAG,eAAgB,CAEtB,IAAI,MAAQ,OAAO,gBAAkB,GACrC,aAAa,GAAI,OAMjB,GAAG,MAAQ,SAAW,GACpB,SAAS,EAAO,EAAI,GAClB,OAAO,EAAS,KAAK,GAAI,GAAI,SAAU,GAEhC,GACH,aAGgB,mBAAP,GACT,EAAG,MAAM,KAAM,UACnB,GACF,CAKA,OAHA,OAAO,eAAe,EAAO,eAAgB,CAC3C,MAAO,IAEF,CACR,CAjBU,CAiBR,GAAG,OAEN,GAAG,UAAY,SAAW,GACxB,SAAS,EAAW,GAElB,EAAa,MAAM,GAAI,WACvB,YACF,CAKA,OAHA,OAAO,eAAe,EAAW,eAAgB,CAC/C,MAAO,IAEF,CACR,CAXc,CAWZ,GAAG,WAEF,YAAY,KAAK,QAAQ,IAAI,YAAc,KAC7C,QAAQ,GAAG,QAAQ,WACjB,MAAM,GAAG,gBACT,QAAQ,UAAU,MAAM,GAAG,eAAe,OAAQ,EACpD,GAEJ,CAYA,SAAS,MAAO,GAEd,UAAU,GACV,EAAG,YAAc,MAEjB,EAAG,iBAsNH,SAA2B,EAAM,GAC/B,OAAO,IAAI,EAAG,WAAW,EAAM,EACjC,EAvNA,EAAG,kBAyNH,SAA4B,EAAM,GAChC,OAAO,IAAI,EAAG,YAAY,EAAM,EAClC,EA1NA,IAAI,EAAc,EAAG,SACrB,EAAG,SACH,SAAmB,EAAM,EAAS,GACT,mBAAZ,IACT,EAAK,EAAS,EAAU,MAE1B,OAEA,SAAS,EAAa,EAAM,EAAS,EAAI,GACvC,OAAO,EAAY,EAAM,GAAS,SAAU,IACtC,GAAqB,WAAb,EAAI,MAAkC,WAAb,EAAI,KAGrB,mBAAP,GACT,EAAG,MAAM,KAAM,WAHjB,QAAQ,CAAC,EAAa,CAAC,EAAM,EAAS,GAAK,EAAK,GAAa,KAAK,MAAO,KAAK,OAKlF,GACF,CAXO,CAAY,EAAM,EAAS,EAYpC,EAEA,IAAI,EAAe,EAAG,UACtB,EAAG,UACH,SAAoB,EAAM,EAAM,EAAS,GAChB,mBAAZ,IACT,EAAK,EAAS,EAAU,MAE1B,OAEA,SAAS,EAAc,EAAM,EAAM,EAAS,EAAI,GAC9C,OAAO,EAAa,EAAM,EAAM,GAAS,SAAU,IAC7C,GAAqB,WAAb,EAAI,MAAkC,WAAb,EAAI,KAGrB,mBAAP,GACT,EAAG,MAAM,KAAM,WAHjB,QAAQ,CAAC,EAAc,CAAC,EAAM,EAAM,EAAS,GAAK,EAAK,GAAa,KAAK,MAAO,KAAK,OAKzF,GACF,CAXO,CAAa,EAAM,EAAM,EAAS,EAY3C,EAEA,IAAI,EAAgB,EAAG,WACnB,IACF,EAAG,WACL,SAAqB,EAAM,EAAM,EAAS,GACjB,mBAAZ,IACT,EAAK,EAAS,EAAU,MAE1B,OAEA,SAAS,EAAe,EAAM,EAAM,EAAS,EAAI,GAC/C,OAAO,EAAc,EAAM,EAAM,GAAS,SAAU,IAC9C,GAAqB,WAAb,EAAI,MAAkC,WAAb,EAAI,KAGrB,mBAAP,GACT,EAAG,MAAM,KAAM,WAHjB,QAAQ,CAAC,EAAe,CAAC,EAAM,EAAM,EAAS,GAAK,EAAK,GAAa,KAAK,MAAO,KAAK,OAK1F,GACF,CAXO,CAAc,EAAM,EAAM,EAAS,EAY5C,GAEA,IAAI,EAAc,EAAG,SACjB,IACF,EAAG,SACL,SAAmB,EAAK,EAAM,EAAO,GACd,mBAAV,IACT,EAAK,EACL,EAAQ,GAEV,OAEA,SAAS,EAAa,EAAK,EAAM,EAAO,EAAI,GAC1C,OAAO,EAAY,EAAK,EAAM,GAAO,SAAU,IACzC,GAAqB,WAAb,EAAI,MAAkC,WAAb,EAAI,KAGrB,mBAAP,GACT,EAAG,MAAM,KAAM,WAHjB,QAAQ,CAAC,EAAa,CAAC,EAAK,EAAM,EAAO,GAAK,EAAK,GAAa,KAAK,MAAO,KAAK,OAKrF,GACF,CAXO,CAAY,EAAK,EAAM,EAAO,EAYvC,GAEA,IAAI,EAAa,EAAG,QAuBpB,GAtBA,EAAG,QACH,SAAkB,EAAM,EAAS,GACR,mBAAZ,IACT,EAAK,EAAS,EAAU,MAE1B,OAEA,SAAS,EAAY,EAAM,EAAS,EAAI,GACtC,OAAO,EAAW,EAAM,GAAS,SAAU,EAAK,IAC1C,GAAqB,WAAb,EAAI,MAAkC,WAAb,EAAI,MAGnC,GAAS,EAAM,MACjB,EAAM,OAEU,mBAAP,GACT,EAAG,KAAK,KAAM,EAAK,IANrB,QAAQ,CAAC,EAAY,CAAC,EAAM,EAAS,GAAK,EAAK,GAAa,KAAK,MAAO,KAAK,OAQjF,GACF,CAdO,CAAW,EAAM,EAAS,EAenC,EAEqC,SAAjC,QAAQ,QAAQ,OAAO,EAAG,GAAe,CAC3C,IAAI,EAAa,OAAO,GACxB,EAAa,EAAW,WACxB,EAAc,EAAW,WAC3B,CAEA,IAAI,EAAgB,EAAG,WACnB,IACF,EAAW,UAAY,OAAO,OAAO,EAAc,WACnD,EAAW,UAAU,KA6DvB,WACE,IAAI,EAAO,KACX,EAAK,EAAK,KAAM,EAAK,MAAO,EAAK,MAAM,SAAU,EAAK,GAChD,GACE,EAAK,WACP,EAAK,UAEP,EAAK,KAAK,QAAS,KAEnB,EAAK,GAAK,EACV,EAAK,KAAK,OAAQ,GAClB,EAAK,OAET,GACF,GAxEA,IAAI,EAAiB,EAAG,YACpB,IACF,EAAY,UAAY,OAAO,OAAO,EAAe,WACrD,EAAY,UAAU,KA8ExB,WACE,IAAI,EAAO,KACX,EAAK,EAAK,KAAM,EAAK,MAAO,EAAK,MAAM,SAAU,EAAK,GAChD,GACF,EAAK,UACL,EAAK,KAAK,QAAS,KAEnB,EAAK,GAAK,EACV,EAAK,KAAK,OAAQ,GAEtB,GACF,GAtFA,OAAO,eAAe,EAAI,aAAc,CACtC,IAAK,WACH,OAAO,CACT,EACA,IAAK,SAAU,GACb,EAAa,CACf,EACA,YAAY,EACZ,cAAc,IAEhB,OAAO,eAAe,EAAI,cAAe,CACvC,IAAK,WACH,OAAO,CACT,EACA,IAAK,SAAU,GACb,EAAc,CAChB,EACA,YAAY,EACZ,cAAc,IAIhB,IAAI,EAAiB,EACrB,OAAO,eAAe,EAAI,iBAAkB,CAC1C,IAAK,WACH,OAAO,CACT,EACA,IAAK,SAAU,GACb,EAAiB,CACnB,EACA,YAAY,EACZ,cAAc,IAEhB,IAAI,EAAkB,EAYtB,SAAS,EAAY,EAAM,GACzB,OAAI,gBAAgB,GACX,EAAc,MAAM,KAAM,WAAY,MAEtC,EAAW,MAAM,OAAO,OAAO,EAAW,WAAY,UACjE,CAkBA,SAAS,EAAa,EAAM,GAC1B,OAAI,gBAAgB,GACX,EAAe,MAAM,KAAM,WAAY,MAEvC,EAAY,MAAM,OAAO,OAAO,EAAY,WAAY,UACnE,CAvCA,OAAO,eAAe,EAAI,kBAAmB,CAC3C,IAAK,WACH,OAAO,CACT,EACA,IAAK,SAAU,GACb,EAAkB,CACpB,EACA,YAAY,EACZ,cAAc,IAsDhB,IAAI,EAAU,EAAG,KAEjB,SAAS,EAAM,EAAM,EAAO,EAAM,GAIhC,MAHoB,mBAAT,IACT,EAAK,EAAM,EAAO,MAIpB,SAAS,EAAS,EAAM,EAAO,EAAM,EAAI,GACvC,OAAO,EAAQ,EAAM,EAAO,GAAM,SAAU,EAAK,IAC3C,GAAqB,WAAb,EAAI,MAAkC,WAAb,EAAI,KAGrB,mBAAP,GACT,EAAG,MAAM,KAAM,WAHjB,QAAQ,CAAC,EAAS,CAAC,EAAM,EAAO,EAAM,GAAK,EAAK,GAAa,KAAK,MAAO,KAAK,OAKlF,GACF,CAXO,CAAQ,EAAM,EAAO,EAAM,EAYpC,CAEA,OAnBA,EAAG,KAAO,EAmBH,CACT,CAEA,SAAS,QAAS,GAChB,MAAM,UAAW,EAAK,GAAG,KAAM,EAAK,IACpC,GAAG,eAAe,KAAK,GACvB,OACF,CAQA,SAAS,aAEP,IADA,IAAI,EAAM,KAAK,MACN,EAAI,EAAG,EAAI,GAAG,eAAe,SAAU,EAG1C,GAAG,eAAe,GAAG,OAAS,IAChC,GAAG,eAAe,GAAG,GAAK,EAC1B,GAAG,eAAe,GAAG,GAAK,GAI9B,OACF,CAEA,SAAS,QAKP,GAHA,aAAa,YACb,gBAAa,EAEoB,IAA7B,GAAG,eAAe,OAAtB,CAGA,IAAI,EAAO,GAAG,eAAe,QACzB,EAAK,EAAK,GACV,EAAO,EAAK,GAEZ,EAAM,EAAK,GACX,EAAY,EAAK,GACjB,EAAW,EAAK,GAIpB,QAAkB,IAAd,EACF,MAAM,QAAS,EAAG,KAAM,GACxB,EAAG,MAAM,KAAM,QACV,GAAI,KAAK,MAAQ,GAAa,IAAO,CAE1C,MAAM,UAAW,EAAG,KAAM,GAC1B,IAAI,EAAK,EAAK,MACI,mBAAP,GACT,EAAG,KAAK,KAAM,EAClB,KAAO,CAEL,IAAI,EAAe,KAAK,MAAQ,EAG5B,EAAa,KAAK,IAAI,EAAW,EAAW,GAK5C,GAFe,KAAK,IAAiB,IAAb,EAAkB,MAG5C,MAAM,QAAS,EAAG,KAAM,GACxB,EAAG,MAAM,KAAM,EAAK,OAAO,CAAC,MAI5B,GAAG,eAAe,KAAK,EAE3B,MAGmB,IAAf,aACF,WAAa,WAAW,MAAO,GA3C/B,CA6CJ,CAjVK,OAAO,gBACV,aAAa,OAAQ,GAAG,gBAG1B,OAAO,QAAU,MAAM,MAAM,KACzB,QAAQ,IAAI,gCAAkC,GAAG,YACjD,OAAO,QAAU,MAAM,IACvB,GAAG,WAAY","file":"/npm/graceful-fs@4.2.8/graceful-fs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/graceful-fs@4.2.8/graceful-fs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n  gracefulQueue = Symbol.for('graceful-fs.queue')\n  // This is used in testing by future versions\n  previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n  gracefulQueue = '___graceful-fs.queue'\n  previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n  Object.defineProperty(context, gracefulQueue, {\n    get: function() {\n      return queue\n    }\n  })\n}\n\nvar debug = noop\nif (util.debuglog)\n  debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n  debug = function() {\n    var m = util.format.apply(util, arguments)\n    m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n    console.error(m)\n  }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n  // This queue can be shared by multiple loaded instances\n  var queue = global[gracefulQueue] || []\n  publishQueue(fs, queue)\n\n  // Patch fs.close/closeSync to shared queue version, because we need\n  // to retry() whenever a close happens *anywhere* in the program.\n  // This is essential when multiple graceful-fs instances are\n  // in play at the same time.\n  fs.close = (function (fs$close) {\n    function close (fd, cb) {\n      return fs$close.call(fs, fd, function (err) {\n        // This function uses the graceful-fs shared queue\n        if (!err) {\n          resetQueue()\n        }\n\n        if (typeof cb === 'function')\n          cb.apply(this, arguments)\n      })\n    }\n\n    Object.defineProperty(close, previousSymbol, {\n      value: fs$close\n    })\n    return close\n  })(fs.close)\n\n  fs.closeSync = (function (fs$closeSync) {\n    function closeSync (fd) {\n      // This function uses the graceful-fs shared queue\n      fs$closeSync.apply(fs, arguments)\n      resetQueue()\n    }\n\n    Object.defineProperty(closeSync, previousSymbol, {\n      value: fs$closeSync\n    })\n    return closeSync\n  })(fs.closeSync)\n\n  if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n    process.on('exit', function() {\n      debug(fs[gracefulQueue])\n      require('assert').equal(fs[gracefulQueue].length, 0)\n    })\n  }\n}\n\nif (!global[gracefulQueue]) {\n  publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n    module.exports = patch(fs)\n    fs.__patched = true;\n}\n\nfunction patch (fs) {\n  // Everything that references the open() function needs to be in here\n  polyfills(fs)\n  fs.gracefulify = patch\n\n  fs.createReadStream = createReadStream\n  fs.createWriteStream = createWriteStream\n  var fs$readFile = fs.readFile\n  fs.readFile = readFile\n  function readFile (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readFile(path, options, cb)\n\n    function go$readFile (path, options, cb, startTime) {\n      return fs$readFile(path, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$writeFile = fs.writeFile\n  fs.writeFile = writeFile\n  function writeFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$writeFile(path, data, options, cb)\n\n    function go$writeFile (path, data, options, cb, startTime) {\n      return fs$writeFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$appendFile = fs.appendFile\n  if (fs$appendFile)\n    fs.appendFile = appendFile\n  function appendFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$appendFile(path, data, options, cb)\n\n    function go$appendFile (path, data, options, cb, startTime) {\n      return fs$appendFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$copyFile = fs.copyFile\n  if (fs$copyFile)\n    fs.copyFile = copyFile\n  function copyFile (src, dest, flags, cb) {\n    if (typeof flags === 'function') {\n      cb = flags\n      flags = 0\n    }\n    return go$copyFile(src, dest, flags, cb)\n\n    function go$copyFile (src, dest, flags, cb, startTime) {\n      return fs$copyFile(src, dest, flags, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$readdir = fs.readdir\n  fs.readdir = readdir\n  function readdir (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readdir(path, options, cb)\n\n    function go$readdir (path, options, cb, startTime) {\n      return fs$readdir(path, options, function (err, files) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readdir, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (files && files.sort)\n            files.sort()\n\n          if (typeof cb === 'function')\n            cb.call(this, err, files)\n        }\n      })\n    }\n  }\n\n  if (process.version.substr(0, 4) === 'v0.8') {\n    var legStreams = legacy(fs)\n    ReadStream = legStreams.ReadStream\n    WriteStream = legStreams.WriteStream\n  }\n\n  var fs$ReadStream = fs.ReadStream\n  if (fs$ReadStream) {\n    ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n    ReadStream.prototype.open = ReadStream$open\n  }\n\n  var fs$WriteStream = fs.WriteStream\n  if (fs$WriteStream) {\n    WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n    WriteStream.prototype.open = WriteStream$open\n  }\n\n  Object.defineProperty(fs, 'ReadStream', {\n    get: function () {\n      return ReadStream\n    },\n    set: function (val) {\n      ReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  Object.defineProperty(fs, 'WriteStream', {\n    get: function () {\n      return WriteStream\n    },\n    set: function (val) {\n      WriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  // legacy names\n  var FileReadStream = ReadStream\n  Object.defineProperty(fs, 'FileReadStream', {\n    get: function () {\n      return FileReadStream\n    },\n    set: function (val) {\n      FileReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  var FileWriteStream = WriteStream\n  Object.defineProperty(fs, 'FileWriteStream', {\n    get: function () {\n      return FileWriteStream\n    },\n    set: function (val) {\n      FileWriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  function ReadStream (path, options) {\n    if (this instanceof ReadStream)\n      return fs$ReadStream.apply(this, arguments), this\n    else\n      return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n  }\n\n  function ReadStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        if (that.autoClose)\n          that.destroy()\n\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n        that.read()\n      }\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (this instanceof WriteStream)\n      return fs$WriteStream.apply(this, arguments), this\n    else\n      return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n  }\n\n  function WriteStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        that.destroy()\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n      }\n    })\n  }\n\n  function createReadStream (path, options) {\n    return new fs.ReadStream(path, options)\n  }\n\n  function createWriteStream (path, options) {\n    return new fs.WriteStream(path, options)\n  }\n\n  var fs$open = fs.open\n  fs.open = open\n  function open (path, flags, mode, cb) {\n    if (typeof mode === 'function')\n      cb = mode, mode = null\n\n    return go$open(path, flags, mode, cb)\n\n    function go$open (path, flags, mode, cb, startTime) {\n      return fs$open(path, flags, mode, function (err, fd) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  return fs\n}\n\nfunction enqueue (elem) {\n  debug('ENQUEUE', elem[0].name, elem[1])\n  fs[gracefulQueue].push(elem)\n  retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n  var now = Date.now()\n  for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n    // entries that are only a length of 2 are from an older version, don't\n    // bother modifying those since they'll be retried anyway.\n    if (fs[gracefulQueue][i].length > 2) {\n      fs[gracefulQueue][i][3] = now // startTime\n      fs[gracefulQueue][i][4] = now // lastTime\n    }\n  }\n  // call retry to make sure we're actively processing the queue\n  retry()\n}\n\nfunction retry () {\n  // clear the timer and remove it to help prevent unintended concurrency\n  clearTimeout(retryTimer)\n  retryTimer = undefined\n\n  if (fs[gracefulQueue].length === 0)\n    return\n\n  var elem = fs[gracefulQueue].shift()\n  var fn = elem[0]\n  var args = elem[1]\n  // these items may be unset if they were added by an older graceful-fs\n  var err = elem[2]\n  var startTime = elem[3]\n  var lastTime = elem[4]\n\n  // if we don't have a startTime we have no way of knowing if we've waited\n  // long enough, so go ahead and retry this item now\n  if (startTime === undefined) {\n    debug('RETRY', fn.name, args)\n    fn.apply(null, args)\n  } else if (Date.now() - startTime >= 60000) {\n    // it's been more than 60 seconds total, bail now\n    debug('TIMEOUT', fn.name, args)\n    var cb = args.pop()\n    if (typeof cb === 'function')\n      cb.call(null, err)\n  } else {\n    // the amount of time between the last attempt and right now\n    var sinceAttempt = Date.now() - lastTime\n    // the amount of time between when we first tried, and when we last tried\n    // rounded up to at least 1\n    var sinceStart = Math.max(lastTime - startTime, 1)\n    // backoff. wait longer than the total time we've been retrying, but only\n    // up to a maximum of 100ms\n    var desiredDelay = Math.min(sinceStart * 1.2, 100)\n    // it's been long enough since the last retry, do it again\n    if (sinceAttempt >= desiredDelay) {\n      debug('RETRY', fn.name, args)\n      fn.apply(null, args.concat([startTime]))\n    } else {\n      // if we can't do this job yet, push it to the end of the queue\n      // and let the next iteration check again\n      fs[gracefulQueue].push(elem)\n    }\n  }\n\n  // schedule our next run if one isn't already scheduled\n  if (retryTimer === undefined) {\n    retryTimer = setTimeout(retry, 0)\n  }\n}\n"]}