| 
								
							 | 
							
								var isFunction = require('./isFunction'),
							 | 
						
						
						
							| 
								
							 | 
							
								    isMasked = require('./_isMasked'),
							 | 
						
						
						
							| 
								
							 | 
							
								    isObject = require('./isObject'),
							 | 
						
						
						
							| 
								
							 | 
							
								    toSource = require('./_toSource');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/**
							 | 
						
						
						
							| 
								
							 | 
							
								 * Used to match `RegExp`
							 | 
						
						
						
							| 
								
							 | 
							
								 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
							 | 
						
						
						
							| 
								
							 | 
							
								 */
							 | 
						
						
						
							| 
								
							 | 
							
								var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/** Used to detect host constructors (Safari). */
							 | 
						
						
						
							| 
								
							 | 
							
								var reIsHostCtor = /^\[object .+?Constructor\]$/;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/** Used for built-in method references. */
							 | 
						
						
						
							| 
								
							 | 
							
								var funcProto = Function.prototype,
							 | 
						
						
						
							| 
								
							 | 
							
								    objectProto = Object.prototype;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/** Used to resolve the decompiled source of functions. */
							 | 
						
						
						
							| 
								
							 | 
							
								var funcToString = funcProto.toString;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/** Used to check objects for own properties. */
							 | 
						
						
						
							| 
								
							 | 
							
								var hasOwnProperty = objectProto.hasOwnProperty;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/** Used to detect if a method is native. */
							 | 
						
						
						
							| 
								
							 | 
							
								var reIsNative = RegExp('^' +
							 | 
						
						
						
							| 
								
							 | 
							
								  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
							 | 
						
						
						
							| 
								
							 | 
							
								  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
							 | 
						
						
						
							| 
								
							 | 
							
								);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/**
							 | 
						
						
						
							| 
								
							 | 
							
								 * The base implementation of `_.isNative` without bad shim checks.
							 | 
						
						
						
							| 
								
							 | 
							
								 *
							 | 
						
						
						
							| 
								
							 | 
							
								 * @private
							 | 
						
						
						
							| 
								
							 | 
							
								 * @param {*} value The value to check.
							 | 
						
						
						
							| 
								
							 | 
							
								 * @returns {boolean} Returns `true` if `value` is a native function,
							 | 
						
						
						
							| 
								
							 | 
							
								 *  else `false`.
							 | 
						
						
						
							| 
								
							 | 
							
								 */
							 | 
						
						
						
							| 
								
							 | 
							
								function baseIsNative(value) {
							 | 
						
						
						
							| 
								
							 | 
							
								  if (!isObject(value) || isMasked(value)) {
							 | 
						
						
						
							| 
								
							 | 
							
								    return false;
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
							 | 
						
						
						
							| 
								
							 | 
							
								  return pattern.test(toSource(value));
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								module.exports = baseIsNative;
							 |