anchor.diff:          .attr("x", function(d, i) { return textXOffset(d, i, maxrad); })
           .attr("y", function(d, i) { return textYOffset(d, i, maxrad); })
           .attr("text-anchor", textAnchor)
  -        .attr("fill", textFill);
  +        .attr("fill", textFill)
  +        // .attr("font-size", function(){ return 15; });
  +        .attr("class", function() { return "pacticpantLabel"; });
   
           circles.on("mouseover", pacticipantMouseover).on("mouseout", pacticipantMouseout);
  -
  -        legend = d3.select("#legend").append("svg").attr("width", 600).attr("height", 70);
  -
  -        var lineLength = 20;
  -
  -        var connlines = legend.selectAll("line").data([0, 1, 2]).enter().append("line").attr("x1", lineLength).attr("y1", function(d, i) {
  -            return 5 + 25 * d;
  -        }).attr("x2", lineLength * 4).attr("y2", function(d, i) {
  -            return 5 + 25 * d;
  -        }).attr("stroke", function(d) {
  -            if (d == 0) {
  -                return "red";
  -            } else if (d == 1) {
  -                return "teal";
  -            }
  -            return "purple";
  -        }).attr("stroke-width", 2);
  -
  -        legend.append("text").text("is a consumer of").attr("x", lineLength * 5).attr("y", 10).attr("fill", "black");
  -        legend.append("text").text("is a provider for").attr("x", lineLength * 5).attr("y", 35).attr("fill", "black");
  -        legend.append("text").text("is a consumer and a provider of").attr("x", lineLength * 5).attr("y", 60).attr("fill", "black");
  +        text.on("mouseover", pacticipantMouseover).on("mouseout", pacticipantMouseout);
  +
       });
   }</script>
   </body>
  
positive.code:     var dy = nodeLocations[relationship[1]].y - nodeLocations[relationship[0]].y;
      var dr = Math.sqrt(dx * dx + dy * dy);
      var inout = 1;
      if ((nodeLocations[relationship[1]].i > nodeLocations[relationship[0]].i && Math.abs(nodeLocations[relationship[1]].i - nodeLocations[relationship[0]].i) <= pacticipants.length / 2) || (nodeLocations[relationship[1]].i < nodeLocations[relationship[0]].i && Math.abs(nodeLocations[relationship[1]].i - nodeLocations[relationship[0]].i) >= pacticipants.length / 2)) {
          inout = 0;
      }
      return "M" + 0 + "," + 0 + "A" + dr + ", " + dr + " 0 0," + inout + " " + dx + "," + dy;
  
negative.code:         .attr("stroke-width", 2)
          .attr("cx", circleXOffset)
          .attr("cy", circleYOffset);
  
          var textAnchor = function(d, i) {
              if (onRight(i)) {
  