dist/ZeroClipboard.js
function(source) {
    var copy, i, len, prop;
    if (typeof source !== "object" || source == null || typeof source.nodeType === "number") {
      copy = source;
    } else if (typeof source.length === "number") {
      copy = [];
      for (i = 0, len = source.length; i < len; i++) {
        if (_hasOwn.call(source, i)) {
          copy[i] = _deepCopy(source[i]);
        }
      }
    } else {
      copy = {};
      for (prop in source) {
        if (_hasOwn.call(source, prop)) {
          copy[prop] = _deepCopy(source[prop]);
        }
      }
    }
    return copy;
  }
function(source) {
    var copy, i, len, prop;
    if (typeof source !== "object" || source == null || typeof source.nodeType === "number") {
      copy = source;
    } else if (typeof source.length === "number") {
      copy = [];
      for (i = 0, len = source.length; i < len; i++) {
        if (_hasOwn.call(source, i)) {
          copy[i] = _deepCopy(source[i]);
        }
      }
    } else {
      copy = {};
      for (prop in source) {
        if (_hasOwn.call(source, prop)) {
          copy[prop] = _deepCopy(source[prop]);
        }
      }
    }
    return copy;
  }
function ( source ) { var copy , i , len , prop ; if ( typeof source !== "object" || source == null || typeof source . nodeType === "number" ) { copy = source ; } else if ( typeof source . length === "number" ) { copy = [ ] ; for ( i = 0 , len = source . length ; i < len ; i ++ ) { if ( _hasOwn . call ( source , i ) ) { copy [ i ] = _deepCopy ( source [ i ] ) ; } } } else { copy = { } ; for ( prop in source ) { if ( _hasOwn . call ( source , prop ) ) { copy [ prop ] = _deepCopy ( source [ prop ] ) ; } } } return copy ; }
Return a deep copy of the source object or array.

@returns Object or Array
@private
Return a deep copy of the source object or array .