var arrayMap = require('./_arrayMap'), baseClone = require('./_baseClone'), baseUnset = require('./_baseUnset'), castPath = require('./_castPath'), copyObject = require('./_copyObject'), flatRest = require('./_flatRest'), getAllKeysIn = require('./_getAllKeysIn');
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
var omit = flatRest(function(object, paths) { var result = {}; if (object == null) { return result; } var bitmask = CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG; paths = arrayMap(paths, function(path) { path = castPath(path, object); bitmask |= (path.length > 1 ? CLONE_DEEP_FLAG : 0); return path; });
copyObject(object, getAllKeysIn(object), result); result = baseClone(result, bitmask);
var length = paths.length; while (length--) { baseUnset(result, paths[length]); } return result;});
module.exports = omit;