text: import { deprecate } from '../utils/deprecate';
  import isArray from '../utils/is-array';
  import { createLocal } from '../create/local';
  import { createInvalid } from '../create/valid';
  
  export var prototypeMin = deprecate(
       'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
       function () {
           var other = createLocal.apply(null, arguments);
           if (this.isValid() && other.isValid()) {
               return other < this ? this : other;
           } else {
               return createInvalid();
           }
       }
   );
  
  export var prototypeMax = deprecate(
      'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
      function () {
          var other = createLocal.apply(null, arguments);
          if (this.isValid() && other.isValid()) {
              return other > this ? this : other;
          } else {
              return createInvalid();
          }
      }
  );
  
  // Pick a moment m from moments so that m[fn](other) is true for all
  // other. This relies on the function fn to be transitive.
  //
  // moments should either be an array of moment objects or an array, whose
  // first element is an array of moment objects.
  function pickBy(fn, moments) {
      var res, i;
      if (moments.length === 1 && isArray(moments[0])) {
          moments = moments[0];
      }
      if (!moments.length) {
          return createLocal();
      }
      res = moments[0];
      for (i = 1; i < moments.length; ++i) {
          if (!moments[i].isValid() || moments[i][fn](res)) {
              res = moments[i];
          }
      }
      return res;
  }
  
  // TODO: Use [].sort instead?
  export function min () {
      var args = [].slice.call(arguments, 0);
  
      return pickBy('isBefore', args);
  }
  
  export function max () {
      var args = [].slice.call(arguments, 0);
  
      return pickBy('isAfter', args);
  }
  