lib/datagovsg-charts.js
function baseIsMatch(object, source, matchData, customizer) {
  var index = matchData.length,
      length = index,
      noCustomizer = !customizer;

  if (object == null) {
    return !length;
  }
  object = Object(object);
  while (index--) {
    var data = matchData[index];
    if ((noCustomizer && data[2])
          ? data[1] !== object[data[0]]
          : !(data[0] in object)
        ) {
      return false;
    }
  }
  while (++index < length) {
    data = matchData[index];
    var key = data[0],
        objValue = object[key],
        srcValue = data[1];

    if (noCustomizer && data[2]) {
      if (objValue === undefined && !(key in object)) {
        return false;
      }
    } else {
      var stack = new _Stack;
      if (customizer) {
        var result = customizer(objValue, srcValue, key, object, source, stack);
      }
      if (!(result === undefined
            ? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
            : result
          )) {
        return false;
      }
    }
  }
  return true;
}
function baseIsMatch(object, source, matchData, customizer) {
  var index = matchData.length,
      length = index,
      noCustomizer = !customizer;

  if (object == null) {
    return !length;
  }
  object = Object(object);
  while (index--) {
    var data = matchData[index];
    if ((noCustomizer && data[2])
          ? data[1] !== object[data[0]]
          : !(data[0] in object)
        ) {
      return false;
    }
  }
  while (++index < length) {
    data = matchData[index];
    var key = data[0],
        objValue = object[key],
        srcValue = data[1];

    if (noCustomizer && data[2]) {
      if (objValue === undefined && !(key in object)) {
        return false;
      }
    } else {
      var stack = new _Stack;
      if (customizer) {
        var result = customizer(objValue, srcValue, key, object, source, stack);
      }
      if (!(result === undefined
            ? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
            : result
          )) {
        return false;
      }
    }
  }
  return true;
}
function baseIsMatch ( object , source , matchData , customizer ) { var index = matchData . length , length = index , noCustomizer = ! customizer ; if ( object == null ) { return ! length ; } object = Object ( object ) ; while ( index -- ) { var data = matchData [ index ] ; if ( ( noCustomizer && data [ 2 ] ) ? data [ 1 ] !== object [ data [ 0 ] ] : ! ( data [ 0 ] in object ) ) { return false ; } } while ( ++ index < length ) { data = matchData [ index ] ; var key = data [ 0 ] , objValue = object [ key ] , srcValue = data [ 1 ] ; if ( noCustomizer && data [ 2 ] ) { if ( objValue === undefined && ! ( key in object ) ) { return false ; } } else { var stack = new _Stack ; if ( customizer ) { var result = customizer ( objValue , srcValue , key , object , source , stack ) ; } if ( ! ( result === undefined ? _baseIsEqual ( srcValue , objValue , COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG , customizer , stack ) : result ) ) { return false ; } } } return true ; }
The base implementation of `_.isMatch` without support for iteratee shorthands.

@private
@param {Object} object The object to inspect.
@param {Object} source The object of property values to match.
@param {Array} matchData The property names, values, and compare flags to match.
@param {Function} [customizer] The function to customize comparisons.
@returns {boolean} Returns `true` if `object` is a match, else `false`.
The base implementation of _ . isMatch without support for iteratee shorthands .