(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var eps=1e-9,eq=function(n,t){return Math.abs(n-t)<eps},signum=function(n){return eq(n,0)?0:n/Math.abs(n)},sub=function(n,t){return{x:n.x-t.x,y:n.y-t.y}},len=function(n){return Math.sqrt(n.x*n.x+n.y*n.y)},dist=function(n,t){return len(sub(n,t))},dot=function(n,t){return n.x*t.x+n.y*t.y},cross=function(n,t){return n.x*t.y-n.y*t.x},ccw=function(n,t,r){return cross(sub(t,n),sub(r,n))},Geom={convexhull:function(n){var t;_.each(n,function(n){(null==t||n.x<t.x-eps||eq(n.x,t.x)&&n.y<t.y)&&(t=n)}),n=n.slice(0),n.sort(function(n,r){if(n===t)return-1;if(r===t)return 1;var e=ccw(t,n,r);if(eq(e,0)){var u=dist(t,n),o=dist(t,r);return o>u?-1:u>o?1:0}return-signum(e)});var r=[];return _.each(n,function(n){for(;r.length>=2&&ccw(r[r.length-2],r[r.length-1],n)<=eps;)r.pop();r.push(n)}),r},rotationalSymmetries:function(n){var t=n.length,r=n[0],e=[],u=2*Math.PI;n:for(var o=1;t>o;o++){for(var s=n[o],i=len(r)*len(s),c=dot(r,s)/i,a=-cross(r,s)/i,f=0;t>f;f++){var h=n[(o+f)%t],l={x:c*h.x-a*h.y,y:a*h.x+c*h.y};if(!eq(dist(l,n[f]),0))continue n}var x=(eps+u+Math.atan2(a,c))%u-eps;eq(x,0)||e.push(x)}return e=KhanUtil.sortNumbers(e),e=_.uniq(e,!0,function(){return KhanUtil.roundToNearest(eps)})}};KhanUtil.Geom=Geom;
},{}]},{},[1]);
