varctx=require('./_ctx');varcall=require('./_iter-call');varisArrayIter=require('./_is-array-iter');varanObject=require('./_an-object');vartoLength=require('./_to-length');vargetIterFn=require('./core.get-iterator-method');varBREAK={};varRETURN={};varexports=module.exports=function(iterable,entries,fn,that,ITERATOR){variterFn=ITERATOR?function(){returniterable;}:getIterFn(iterable);varf=ctx(fn,that,entries?2:1);varindex=0;varlength,step,iterator,result;if(typeofiterFn!='function')throwTypeError(iterable+' is not iterable!');// fast case for arrays with default iteratorif(isArrayIter(iterFn))for(length=toLength(iterable.length);length>index;index++){result=entries?f(anObject(step=iterable[index])[0],step[1]):f(iterable[index]);if(result===BREAK||result===RETURN)returnresult;}elsefor(iterator=iterFn.call(iterable);!(step=iterator.next()).done;){result=call(iterator,f,step.value,entries);if(result===BREAK||result===RETURN)returnresult;}};exports.BREAK=BREAK;exports.RETURN=RETURN;