CubicBezier = function CubicBezier(x1, y1, x2, y2, functionName) {
    var this$1$1 = this;

    // pre-calculate the polynomial coefficients
    // First and last control points are implied to be (0.0, 0.0) and (1.0, 1.0)
    var p1x = x1 || 0;
    var p1y = y1 || 0;
    var p2x = x2 || 1;
    var p2y = y2 || 1;
    
    /** @type {number} */
    this.cx = 3 * p1x;
    
    /** @type {number} */
    this.bx = 3 * (p2x - p1x) - this.cx;

    /** @type {number} */
    this.ax = 1 - this.cx - this.bx;
      
    /** @type {number} */
    this.cy = 3 * p1y;
    
    /** @type {number} */
    this.by = 3 * (p2y - p1y) - this.cy;
    
    /** @type {number} */
    this.ay = 1 - this.cy - this.by;
      
    /** @type {(t: number) => number} */
    var BezierEasing = function (t) { return this$1$1.sampleCurveY(this$1$1.solveCurveX(t)); };

    // this function needs a name
    Object.defineProperty(BezierEasing, 'name', { writable: true });
    BezierEasing.name = functionName || ("cubic-bezier(" + ([p1x, p1y, p2x, p2y]) + ")");

    return BezierEasing;
  }
Creates cubic-bezier easing functions for animation engines.
@see http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h


@class