docs: function (module, exports, __webpack_require__) {
  
    "use strict";
  
    var aFunction = __webpack_require__(10);
    var isObject = __webpack_require__(4);
    var invoke = __webpack_require__(101);
    var arraySlice = [].slice;
    var factories = {};
  
    var construct = function construct(F, len, args) {
      if (!(len in factories)) {
        for (var n = [], i = 0; i < len; i++) {
          n[i] = 'a[' + i + ']';
        } // eslint-disable-next-line no-new-func
        factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
      }return factories[len](F, args);
    };
  
    module.exports = Function.bind || function bind(that /* , ...args */) {
      var fn = aFunction(this);
      var partArgs = arraySlice.call(arguments, 1);
      var bound = function bound() /* args... */{
        var args = partArgs.concat(arraySlice.call(arguments));
        return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
      };
      if (isObject(fn.prototype)) bound.prototype = fn.prototype;
      return bound;
    };
  
    /***/
  }