text: (function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i<allseries.length;++i){if(s==allseries[i])
      break;if(allseries[i].stack==s.stack)
      res=allseries[i];}
      return res;}
      function stackData(plot,s,datapoints){if(s.stack==null||s.stack===false)
          return;var other=findMatchingSeries(s,plot.getData());if(!other)
          return;var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,horizontal=s.bars.horizontal,withbottom=ps>2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)
          break;l=newpoints.length;if(points[i]==null){for(m=0;m<ps;++m)
          newpoints.push(points[i+m]);i+=ps;}
      else if(j>=otherpoints.length){if(!withlines){for(m=0;m<ps;++m)
          newpoints.push(points[i+m]);}
          i+=ps;}
      else if(otherpoints[j]==null){for(m=0;m<ps;++m)
          newpoints.push(null);fromgap=true;j+=otherps;}
      else{px=points[i+keyOffset];py=points[i+accumulateOffset];qx=otherpoints[j+keyOffset];qy=otherpoints[j+accumulateOffset];bottom=0;if(px==qx){for(m=0;m<ps;++m)
          newpoints.push(points[i+m]);newpoints[l+accumulateOffset]+=qy;bottom=qy;i+=ps;j+=otherps;}
      else if(px>qx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m<ps;++m)
          newpoints.push(points[i+m]);bottom=qy;}
          j+=otherps;}
      else{if(fromgap&&withlines){i+=ps;continue;}
          for(m=0;m<ps;++m)
              newpoints.push(points[i+m]);if(withlines&&j>0&&otherpoints[j-otherps]!=null)
              bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps;}
          fromgap=false;if(l!=newpoints.length&&withbottom)
              newpoints[l+2]+=bottom;}
          if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m<ps;++m)
              newpoints[l+ps+m]=newpoints[l+m];newpoints[l+1]=newpoints[l-ps+1];}}
          datapoints.points=newpoints;}
      plot.hooks.processDatapoints.push(stackData);}
      $.plot.plugins.push({init:init,options:options,name:'stack',version:'1.2'});})(jQuery);
  