'use strict'; 
 | 
var fails = require('../internals/fails'); 
 | 
var isCallable = require('../internals/is-callable'); 
 | 
var isObject = require('../internals/is-object'); 
 | 
var create = require('../internals/object-create'); 
 | 
var getPrototypeOf = require('../internals/object-get-prototype-of'); 
 | 
var defineBuiltIn = require('../internals/define-built-in'); 
 | 
var wellKnownSymbol = require('../internals/well-known-symbol'); 
 | 
var IS_PURE = require('../internals/is-pure'); 
 | 
  
 | 
var ITERATOR = wellKnownSymbol('iterator'); 
 | 
var BUGGY_SAFARI_ITERATORS = false; 
 | 
  
 | 
// `%IteratorPrototype%` object 
 | 
// https://tc39.es/ecma262/#sec-%iteratorprototype%-object 
 | 
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; 
 | 
  
 | 
/* eslint-disable es/no-array-prototype-keys -- safe */ 
 | 
if ([].keys) { 
 | 
  arrayIterator = [].keys(); 
 | 
  // Safari 8 has buggy iterators w/o `next` 
 | 
  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; 
 | 
  else { 
 | 
    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); 
 | 
    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; 
 | 
  } 
 | 
} 
 | 
  
 | 
var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { 
 | 
  var test = {}; 
 | 
  // FF44- legacy iterators case 
 | 
  return IteratorPrototype[ITERATOR].call(test) !== test; 
 | 
}); 
 | 
  
 | 
if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; 
 | 
else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); 
 | 
  
 | 
// `%IteratorPrototype%[@@iterator]()` method 
 | 
// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator 
 | 
if (!isCallable(IteratorPrototype[ITERATOR])) { 
 | 
  defineBuiltIn(IteratorPrototype, ITERATOR, function () { 
 | 
    return this; 
 | 
  }); 
 | 
} 
 | 
  
 | 
module.exports = { 
 | 
  IteratorPrototype: IteratorPrototype, 
 | 
  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS 
 | 
}; 
 |