code: function getOverlappingCircles(circles) {
      var ret = {}, circleids = [];
      for (var circleid in circles) {
          circleids.push(circleid);
          ret[circleid] = [];
      }
      for (var i  = 0; i < circleids.length; i++) {
          var a = circles[circleids[i]];
          for (var j = i + 1; j < circleids.length; ++j) {
              var b = circles[circleids[j]],
                  d = distance(a, b);
  
              if (d + b.radius <= a.radius + 1e-10) {
                  ret[circleids[j]].push(circleids[i]);
  
              } else if (d + a.radius <= b.radius + 1e-10) {
                  ret[circleids[i]].push(circleids[j]);
              }
          }
      }
      return ret;
  }
docs: given a dictionary of {setid : circle}, returns a dictionary of setid to list of circles that completely overlap it