bot18
Version:
A high-frequency cryptocurrency trading bot by Zenbot creator @carlos8f
2,561 lines (2,516 loc) • 1.11 MB
JavaScript
/*
based on:
http://geeksretreat.wordpress.com/2012/04/26/html5s-canvas-lets-draw-the-world/
*/
/*jslint plusplus: true, sloppy: true, indent: 4 */
( function() {"use strict";
// this function is strict...
}());
Map.prototype.drawBackground = function() {
// Black background
this.ctx.fillStyle = "rgb(0,0,0)";
// Draw rectangle for the background
this.ctx.fillRect(this.iCANVAS_START_X_POS, this.iCANVAS_START_Y_POS, (this.iCANVAS_START_X_POS + this.iCANVAS_WIDTH), this.iCANVAS_START_Y_POS + this.iCANVAS_HEIGHT);
this.ctx.stroke();
}
Map.prototype.drawMapBackground = function() {
// Ocean blue colour!
this.ctx.fillStyle = "rgb(10, 133, 255)";
// Draw rectangle for the map
this.ctx.fillRect(this.iMAP_START_X_POS, this.iMAP_START_Y_POS, this.iMAP_WIDTH, this.iMAP_HEIGHT);
}
Map.prototype.degreesOfLatitudeToScreenY = function(iDegreesOfLatitude) {
var minLat = this.options.startLat || 0
, maxLat = this.options.endLat || 180
// Make the value positive, so we can calculate the percentage
var iAdjustedDegreesOfLatitude = (iDegreesOfLatitude * 1) + 90,
iDegreesOfLatitudeToScreenY = 0;
if (iAdjustedDegreesOfLatitude < minLat || iAdjustedDegreesOfLatitude > maxLat) {
return
}
// Are we at the South pole?
if (iAdjustedDegreesOfLatitude === minLat) {
// Screen Y is the botton of the map (avoid divide by zero)
iDegreesOfLatitudeToScreenY = this.iMAP_HEIGHT + this.iMAP_START_Y_POS;
} else if (iAdjustedDegreesOfLatitude === maxLat) {
// Are we at the North pole (or beyond)?
// Screen Y is the top of the map
iDegreesOfLatitudeToScreenY = this.iMAP_START_Y_POS;
} else {
// Convert the latitude value to screen X
iDegreesOfLatitudeToScreenY = (this.iMAP_HEIGHT - ( (iAdjustedDegreesOfLatitude-minLat) * (this.iMAP_HEIGHT / (maxLat-minLat) )) + this.iMAP_START_Y_POS);
}
return iDegreesOfLatitudeToScreenY;
}
Map.prototype.drawLongitudeLines = function(iDEGREES_BETWEEN_GRID_LINES) {
var iNORTH_LATITUDE = 90,
iSOUTH_LATITUDE = -90,
iDegreesScreenY = 0,
iLineOfLatitude;
// Iterate around the latitude axis at the given interval
for (iLineOfLatitude = iNORTH_LATITUDE; iLineOfLatitude >= iSOUTH_LATITUDE; iLineOfLatitude -= iDEGREES_BETWEEN_GRID_LINES) {
// Convert the latitude value and move the pen to the start of the line
iDegreesScreenY = this.degreesOfLatitudeToScreenY(iLineOfLatitude, this.options);
this.ctx.moveTo(this.iMAP_START_X_POS, iDegreesScreenY);
// Plot the line
this.ctx.lineTo(this.iMAP_START_X_POS + this.iMAP_WIDTH, iDegreesScreenY);
// Put the label on the line
this.ctx.fillText(iLineOfLatitude, this.iCANVAS_START_X_POS + 5, iDegreesScreenY - 5);
this.ctx.stroke();
}
}
Map.prototype.degreesOfLongitudeToScreenX = function(iDegreesOfLongitude) {
var minLon = this.options.startLon || 0
, maxLon = this.options.endLon || 360
// Make the value positive, so we can calculate the percentage
var iAdjustedDegreesOfLongitude = (iDegreesOfLongitude * 1) + 180,
iDegreesOfLongitudeToScreenX = 0;
if (iAdjustedDegreesOfLongitude < minLon || iAdjustedDegreesOfLongitude > maxLon) {
return
}
// Are we at the West -180 point?
if (iAdjustedDegreesOfLongitude === minLon) {
// Screen X is the left of the map (avoid divide by zero)
iDegreesOfLongitudeToScreenX = this.iMAP_START_X_POS;
} else if (iAdjustedDegreesOfLongitude === maxLon) {
// If the longitude crosses the 180 line fix it (doesn't translat to screen well)
iDegreesOfLongitudeToScreenX = this.iMAP_START_X_POS + this.iMAP_WIDTH;
} else {
// Convert the longitude value to screen X
iDegreesOfLongitudeToScreenX = (this.iMAP_START_X_POS + ( (iAdjustedDegreesOfLongitude-minLon) * (this.iMAP_WIDTH / (maxLon-minLon))));
}
return iDegreesOfLongitudeToScreenX;
}
Map.prototype.degToRad = function(angle) {
// Degrees to radians
return ((angle * Math.PI) / 180);
}
Map.prototype.radToDeg = function(angle) {
// Radians to degree
return ((angle * 180) / Math.PI);
}
Map.prototype.drawLatitudeLines = function(iDEGREES_BETWEEN_GRID_LINES) {
var iMIN_LONGITUDE = -180,
iMAX_LONGITUDE = 180,
iDegreesScreenY = 0,
iLineOfLongitude,
iDegreesScreenX,
iCentralMeridian = this.degToRad(0),
iRadius = this.iMAP_HEIGHT / 2;
// Iterate around the longitude axis at the given interval
for (iLineOfLongitude = iMIN_LONGITUDE; iLineOfLongitude <= iMAX_LONGITUDE; iLineOfLongitude += iDEGREES_BETWEEN_GRID_LINES) {
// Convert the longitude value and move the pen to the start of the line
iDegreesScreenX = this.degreesOfLongitudeToScreenX(iLineOfLongitude);
//iDegreesScreenX = iRadius * (degToRad(iLineOfLongitude) - (degToRad(iLineOfLongitude) * iCentralMeridian));
this.ctx.moveTo(iDegreesScreenX, this.iMAP_START_Y_POS);
// Plot the line
this.ctx.lineTo(iDegreesScreenX, this.iMAP_START_Y_POS + this.iMAP_HEIGHT);
// Put the label on the line
this.ctx.fillText(iLineOfLongitude, iDegreesScreenX - 10, this.iCANVAS_START_Y_POS + 10);
this.ctx.stroke();
}
}
Map.prototype.drawGraticule = function() {
// Set distance between lines
var iDEGREES_BETWEEN_LAT_GRID_LINES = 10,
iDEGREES_BETWEEN_LON_GRID_LINES = 10;
// Style
this.ctx.lineWidth = 0.2;
this.ctx.strokeStyle = 'rgba(0, 0, 0, 0.1)';
this.ctx.fillStyle = 'rgb(255,255,255)';
// Font styling
this.ctx.font = 'italic 10px sans-serif';
this.ctx.textBaseline = 'top';
this.drawLatitudeLines(iDEGREES_BETWEEN_LAT_GRID_LINES);
this.drawLongitudeLines(iDEGREES_BETWEEN_LON_GRID_LINES, this.options);
}
Map.prototype.getMapData = function(region) {
if (!region) return this.getMapData_world()
return this["getMapData_" + region]()
}
Map.prototype.getMapData_us = function() {
var res = {
"shapes": [
[
{
"lon": "-122.400749",
"lat": "48.225395"
},
{
"lon": "-122.461586",
"lat": "48.228542"
},
{
"lon": "-122.453156",
"lat": "48.128674"
},
{
"lon": "-122.360077",
"lat": "48.060280"
},
{
"lon": "-122.513245",
"lat": "48.134155"
},
{
"lon": "-122.540802",
"lat": "48.210640"
},
{
"lon": "-122.507858",
"lat": "48.253971"
},
{
"lon": "-122.403137",
"lat": "48.246773"
},
{
"lon": "-122.377052",
"lat": "48.289898"
},
{
"lon": "-122.563087",
"lat": "48.414421"
},
{
"lon": "-122.665749",
"lat": "48.413071"
},
{
"lon": "-122.698128",
"lat": "48.494503"
},
{
"lon": "-122.606895",
"lat": "48.518997"
},
{
"lon": "-122.521950",
"lat": "48.458576"
},
{
"lon": "-122.472557",
"lat": "48.462368"
},
{
"lon": "-122.504021",
"lat": "48.559616"
},
{
"lon": "-122.428268",
"lat": "48.599567"
},
{
"lon": "-122.486519",
"lat": "48.638741"
},
{
"lon": "-122.525276",
"lat": "48.711895"
},
{
"lon": "-122.515572",
"lat": "48.758091"
},
{
"lon": "-122.696114",
"lat": "48.803185"
},
{
"lon": "-122.752953",
"lat": "48.910156"
},
{
"lon": "-122.821129",
"lat": "48.950893"
},
{
"lon": "-122.742653",
"lat": "48.955975"
},
{
"lon": "-122.763832",
"lat": "48.999912"
},
{
"lon": "-120.855827",
"lat": "48.999973"
},
{
"lon": "-118.842453",
"lat": "49.000000"
},
{
"lon": "-118.199234",
"lat": "49.000004"
},
{
"lon": "-117.437500",
"lat": "48.999996"
},
{
"lon": "-117.030975",
"lat": "49.000000"
},
{
"lon": "-117.028046",
"lat": "48.838150"
},
{
"lon": "-117.037834",
"lat": "48.046284"
},
{
"lon": "-117.036438",
"lat": "47.971191"
},
{
"lon": "-117.040779",
"lat": "47.361542"
},
{
"lon": "-117.041382",
"lat": "47.258602"
},
{
"lon": "-117.039963",
"lat": "47.119423"
},
{
"lon": "-117.040932",
"lat": "46.536716"
},
{
"lon": "-117.037567",
"lat": "46.428097"
},
{
"lon": "-117.043480",
"lat": "46.388691"
},
{
"lon": "-117.063194",
"lat": "46.348816"
},
{
"lon": "-117.026985",
"lat": "46.335545"
},
{
"lon": "-117.000656",
"lat": "46.302567"
},
{
"lon": "-116.971741",
"lat": "46.249428"
},
{
"lon": "-116.966507",
"lat": "46.197674"
},
{
"lon": "-116.928444",
"lat": "46.165604"
},
{
"lon": "-116.960655",
"lat": "46.097397"
},
{
"lon": "-116.986229",
"lat": "46.078632"
},
{
"lon": "-116.956741",
"lat": "46.065811"
},
{
"lon": "-116.918152",
"lat": "45.995300"
},
{
"lon": "-117.480652",
"lat": "45.999966"
},
{
"lon": "-117.601807",
"lat": "46.000401"
},
{
"lon": "-117.981628",
"lat": "46.000019"
},
{
"lon": "-117.991478",
"lat": "46.001778"
},
{
"lon": "-118.981018",
"lat": "45.999203"
},
{
"lon": "-119.031105",
"lat": "45.966419"
},
{
"lon": "-119.139130",
"lat": "45.925854"
},
{
"lon": "-119.177620",
"lat": "45.922497"
},
{
"lon": "-119.301636",
"lat": "45.932808"
},
{
"lon": "-119.378311",
"lat": "45.917755"
},
{
"lon": "-119.437729",
"lat": "45.914413"
},
{
"lon": "-119.511086",
"lat": "45.899345"
},
{
"lon": "-119.588158",
"lat": "45.913460"
},
{
"lon": "-119.620979",
"lat": "45.899555"
},
{
"lon": "-119.677307",
"lat": "45.852684"
},
{
"lon": "-119.832413",
"lat": "45.841755"
},
{
"lon": "-119.868591",
"lat": "45.831844"
},
{
"lon": "-119.993172",
"lat": "45.811287"
},
{
"lon": "-120.067497",
"lat": "45.780350"
},
{
"lon": "-120.154755",
"lat": "45.761410"
},
{
"lon": "-120.206291",
"lat": "45.719933"
},
{
"lon": "-120.282478",
"lat": "45.716732"
},
{
"lon": "-120.442223",
"lat": "45.689430"
},
{
"lon": "-120.497993",
"lat": "45.695782"
},
{
"lon": "-120.568916",
"lat": "45.741070"
},
{
"lon": "-120.622589",
"lat": "45.743763"
},
{
"lon": "-120.657234",
"lat": "45.732765"
},
{
"lon": "-120.695824",
"lat": "45.710663"
},
{
"lon": "-120.860245",
"lat": "45.665340"
},
{
"lon": "-120.906761",
"lat": "45.635632"
},
{
"lon": "-120.947395",
"lat": "45.650471"
},
{
"lon": "-120.967300",
"lat": "45.645309"
},
{
"lon": "-121.032303",
"lat": "45.653000"
},
{
"lon": "-121.072350",
"lat": "45.646767"
},
{
"lon": "-121.124023",
"lat": "45.607216"
},
{
"lon": "-121.173134",
"lat": "45.600674"
},
{
"lon": "-121.190872",
"lat": "45.613400"
},
{
"lon": "-121.202126",
"lat": "45.657444"
},
{
"lon": "-121.213089",
"lat": "45.665802"
},
{
"lon": "-121.275208",
"lat": "45.678497"
},
{
"lon": "-121.318794",
"lat": "45.696800"
},
{
"lon": "-121.366631",
"lat": "45.699844"
},
{
"lon": "-121.420845",
"lat": "45.690762"
},
{
"lon": "-121.441368",
"lat": "45.695126"
},
{
"lon": "-121.527870",
"lat": "45.719727"
},
{
"lon": "-121.705231",
"lat": "45.688953"
},
{
"lon": "-121.757507",
"lat": "45.689877"
},
{
"lon": "-121.809853",
"lat": "45.700844"
},
{
"lon": "-121.887093",
"lat": "45.677017"
},
{
"lon": "-121.925629",
"lat": "45.642189"
},
{
"lon": "-121.971466",
"lat": "45.635937"
},
{
"lon": "-121.998817",
"lat": "45.617985"
},
{
"lon": "-122.080841",
"lat": "45.590664"
},
{
"lon": "-122.243721",
"lat": "45.548271"
},
{
"lon": "-122.301949",
"lat": "45.543251"
},
{
"lon": "-122.355255",
"lat": "45.566330"
},
{
"lon": "-122.435951",
"lat": "45.564938"
},
{
"lon": "-122.564224",
"lat": "45.594978"
},
{
"lon": "-122.650002",
"lat": "45.606991"
},
{
"lon": "-122.695114",
"lat": "45.631207"
},
{
"lon": "-122.759331",
"lat": "45.649559"
},
{
"lon": "-122.771339",
"lat": "45.727848"
},
{
"lon": "-122.763077",
"lat": "45.760731"
},
{
"lon": "-122.786797",
"lat": "45.800507"
},
{
"lon": "-122.783302",
"lat": "45.850613"
},
{
"lon": "-122.782860",
"lat": "45.868050"
},
{
"lon": "-122.805008",
"lat": "45.904236"
},
{
"lon": "-122.806526",
"lat": "45.944054"
},
{
"lon": "-122.874199",
"lat": "46.027348"
},
{
"lon": "-122.898537",
"lat": "46.079494"
},
{
"lon": "-122.972946",
"lat": "46.110649"
},
{
"lon": "-123.049370",
"lat": "46.155903"
},
{
"lon": "-123.117325",
"lat": "46.179478"
},
{
"lon": "-123.174965",
"lat": "46.183754"
},
{
"lon": "-123.211205",
"lat": "46.170174"
},
{
"lon": "-123.247566",
"lat": "46.144188"
},
{
"lon": "-123.303482",
"lat": "46.144905"
},
{
"lon": "-123.469528",
"lat": "46.275192"
},
{
"lon": "-123.618828",
"lat": "46.258835"
},
{
"lon": "-123.724205",
"lat": "46.285595"
},
{
"lon": "-123.884514",
"lat": "46.240612"
},
{
"lon": "-123.992065",
"lat": "46.310452"
},
{
"lon": "-124.077843",
"lat": "46.267437"
},
{
"lon": "-124.064232",
"lat": "46.639927"
},
{
"lon": "-124.021767",
"lat": "46.583721"
},
{
"lon": "-124.011734",
"lat": "46.383858"
},
{
"lon": "-123.840187",
"lat": "46.404518"
},
{
"lon": "-123.939423",
"lat": "46.481293"
},
{
"lon": "-123.892296",
"lat": "46.511257"
},
{
"lon": "-123.956436",
"lat": "46.617405"
},
{
"lon": "-123.925194",
"lat": "46.673241"
},
{
"lon": "-123.839691",
"lat": "46.718468"
},
{
"lon": "-123.894264",
"lat": "46.745167"
},
{
"lon": "-124.041878",
"lat": "46.716038"
},
{
"lon": "-124.089767",
"lat": "46.729206"
},
{
"lon": "-124.100784",
"lat": "46.789654"
},
{
"lon": "-124.137543",
"lat": "46.900173"
},
{
"lon": "-124.104477",
"lat": "46.908337"
},
{
"lon": "-124.103455",
"lat": "46.874332"
},
{
"lon": "-124.027527",
"lat": "46.823952"
},
{
"lon": "-124.045647",
"lat": "46.887440"
},
{
"lon": "-123.811378",
"lat": "46.964149"
},
{
"lon": "-123.994583",
"lat": "46.976574"
},
{
"lon": "-124.033112",
"lat": "47.031223"
},
{
"lon": "-124.111076",
"lat": "47.042866"
},
{
"lon": "-124.160751",
"lat": "46.929802"
},
{
"lon": "-124.191444",
"lat": "47.167175"
},
{
"lon": "-124.230133",
"lat": "47.275265"
},
{
"lon": "-124.318130",
"lat": "47.349434"
},
{
"lon": "-124.347778",
"lat": "47.527107"
},
{
"lon": "-124.372299",
"lat": "47.638962"
},
{
"lon": "-124.482719",
"lat": "47.808456"
},
{
"lon": "-124.605362",
"lat": "47.873940"
},
{
"lon": "-124.731422",
"lat": "48.150204"
},
{
"lon": "-124.703857",
"lat": "48.232212"
},
{
"lon": "-124.715820",
"lat": "48.377773"
},
{
"lon": "-124.562202",
"lat": "48.357487"
},
{
"lon": "-123.989899",
"lat": "48.159355"
},
{
"lon": "-123.395561",
"lat": "48.111217"
},
{
"lon": "-123.121933",
"lat": "48.148918"
},
{
"lon": "-122.920311",
"lat": "48.094364"
},
{
"lon": "-122.923561",
"lat": "48.066982"
},
{
"lon": "-122.839828",
"lat": "48.133320"
},
{
"lon": "-122.767601",
"lat": "48.144176"
},
{
"lon": "-122.801651",
"lat": "48.085506"
},
{
"lon": "-122.660294",
"lat": "47.917343"
},
{
"lon": "-122.652321",
"lat": "47.864616"
},
{
"lon": "-122.744598",
"lat": "47.809174"
},
{
"lon": "-122.788528",
"lat": "47.802734"
},
{
"lon": "-122.808243",
"lat": "47.857262"
},
{
"lon": "-122.857529",
"lat": "47.827515"
},
{
"lon": "-122.898094",
"lat": "47.672703"
},
{
"lon": "-122.981476",
"lat": "47.605659"
},
{
"lon": "-123.112648",
"lat": "47.456459"
},
{
"lon": "-123.152794",
"lat": "47.348732"
},
{
"lon": "-123.009209",
"lat": "47.353210"
},
{
"lon": "-122.831993",
"lat": "47.438648"
},
{
"lon": "-123.034943",
"lat": "47.356236"
},
{
"lon": "-123.111420",
"lat": "47.371754"
},
{
"lon": "-123.025070",
"lat": "47.516121"
},
{
"lon": "-122.915703",
"lat": "47.614792"
},
{
"lon": "-122.751678",
"lat": "47.660873"
},
{
"lon": "-122.721794",
"lat": "47.757084"
},
{
"lon": "-122.609901",
"lat": "47.850193"
},
{
"lon": "-122.611954",
"lat": "47.936375"
},
{
"lon": "-122.530632",
"lat": "47.909645"
},
{
"lon": "-122.472343",
"lat": "47.755161"
},
{
"lon": "-122.620255",
"lat": "47.697151"
},
{
"lon": "-122.585213",
"lat": "47.571373"
},
{
"lon": "-122.554016",
"lat": "47.583687"
},
{
"lon": "-122.541458",
"lat": "47.522915"
},
{
"lon": "-122.503220",
"lat": "47.507397"
},
{
"lon": "-122.557205",
"lat": "47.398544"
},
{
"lon": "-122.542885",
"lat": "47.374107"
},
{
"lon": "-122.587013",
"lat": "47.334110"
},
{
"lon": "-122.551918",
"lat": "47.283512"
},
{
"lon": "-122.579292",
"lat": "47.251568"
},
{
"lon": "-122.610306",
"lat": "47.293579"
},
{
"lon": "-122.605675",
"lat": "47.270752"
},
{
"lon": "-122.698502",
"lat": "47.292267"
},
{
"lon": "-122.627510",
"lat": "47.398735"
},
{
"lon": "-122.636192",
"lat": "47.398762"
},
{
"lon": "-122.740303",
"lat": "47.341633"
},
{
"lon": "-122.768463",
"lat": "47.266338"
},
{
"lon": "-122.718559",
"lat": "47.223312"
},
{
"lon": "-122.759995",
"lat": "47.162678"
},
{
"lon": "-122.823860",
"lat": "47.235008"
},
{
"lon": "-122.772087",
"lat": "47.337543"
},
{
"lon": "-122.800934",
"lat": "47.360924"
},
{
"lon": "-122.879120",
"lat": "47.299416"
},
{
"lon": "-123.114174",
"lat": "47.208164"
},
{
"lon": "-123.079941",
"lat": "47.090240"
},
{
"lon": "-123.030090",
"lat": "47.100956"
},
{
"lon": "-122.921898",
"lat": "47.048145"
},
{
"lon": "-122.788803",
"lat": "47.126041"
},
{
"lon": "-122.726944",
"lat": "47.082623"
},
{
"lon": "-122.698837",
"lat": "47.098507"
},
{
"lon": "-122.590569",
"lat": "47.180241"
},
{
"lon": "-122.529526",
"lat": "47.287636"
},
{
"lon": "-122.545349",
"lat": "47.316456"
},
{
"lon": "-122.422859",
"lat": "47.259651"
},
{
"lon": "-122.391609",
"lat": "47.277901"
},
{
"lon": "-122.440369",
"lat": "47.301304"
},
{
"lon": "-122.419601",
"lat": "47.319023"
},
{
"lon": "-122.324142",
"lat": "47.344501"
},
{
"lon": "-122.318504",
"lat": "47.390293"
},
{
"lon": "-122.391396",
"lat": "47.510422"
},
{
"lon": "-122.380981",
"lat": "47.595589"
},
{
"lon": "-122.413574",
"lat": "47.664360"
},
{
"lon": "-122.393250",
"lat": "47.774357"
},
{
"lon": "-122.301674",
"lat": "47.950397"
},
{
"lon": "-122.228874",
"lat": "47.969296"
},
{
"lon": "-122.215744",
"lat": "48.007622"
},
{
"lon": "-122.367073",
"lat": "48.128323"
},
{
"lon": "-122.400749",
"lat": "48.225395"
}
],
[
{
"lon": "-122.966690",
"lat": "48.443974"
},
{
"lon": "-123.093941",
"lat": "48.479603"
},
{
"lon": "-123.158424",
"lat": "48.522022"
},
{
"lon": "-123.168602",
"lat": "48.562744"
},
{
"lon": "-123.139755",
"lat": "48.623825"
},
{
"lon": "-123.102425",
"lat": "48.608555"
},
{
"lon": "-123.010803",
"lat": "48.557655"
},
{
"lon": "-123.007408",
"lat": "48.533897"
},
{
"lon": "-122.966690",
"lat": "48.527111"
},
{
"lon": "-123.020981",
"lat": "48.513538"
},
{
"lon": "-123.017593",
"lat": "48.489784"
},
{
"lon": "-122.966690",
"lat": "48.443974"
}
],
[
{
"lon": "-122.731903",
"lat": "48.276825"
},
{
"lon": "-122.664330",
"lat": "48.396954"
},
{
"lon": "-122.603104",
"lat": "48.404964"
},
{
"lon": "-122.524475",
"lat": "48.321220"
},
{
"lon": "-122.527374",
"lat": "48.283688"
},
{
"lon": "-122.622231",
"lat": "48.296528"
},
{
"lon": "-122.730751",
"lat": "48.225594"
},
{
"lon": "-122.609650",
"lat": "48.206501"
},
{
"lon": "-122.544937",
"lat": "48.077042"
},
{
"lon": "-122.494949",
"lat": "48.094254"
},
{
"lon": "-122.378738",
"lat": "48.032330"
},
{
"lon": "-122.354149",
"lat": "47.964069"
},
{
"lon": "-122.385712",
"lat": "47.904732"
},
{
"lon": "-122.441536",
"lat": "47.918240"
},
{
"lon": "-122.470360",
"lat": "47.987694"
},
{
"lon": "-122.543701",
"lat": "47.967716"
},
{
"lon": "-122.607361",
"lat": "48.031616"
},
{
"lon": "-122.694275",
"lat": "48.181366"
},
{
"lon": "-122.767494",
"lat": "48.218998"
},
{
"lon": "-122.731903",
"lat": "48.276825"
}
],
[
{
"lon": "-111.474632",
"lat": "44.702240"
},
{
"lon": "-111.480011",
"lat": "44.691494"
},
{
"lon": "-111.459900",
"lat": "44.670101"
},
{
"lon": "-111.457474",
"lat": "44.652634"
},
{
"lon": "-111.469376",
"lat": "44.640789"
},
{
"lon": "-111.506897",
"lat": "44.637768"
},
{
"lon": "-111.500954",
"lat": "44.616051"
},
{
"lon": "-111.513733",
"lat": "44.593277"
},
{
"lon": "-111.492111",
"lat": "44.551270"
},
{
"lon": "-111.462036",
"lat": "44.550022"
},
{
"lon": "-111.458534",
"lat": "44.538002"
},
{
"lon": "-111.481781",
"lat": "44.536224"
},
{
"lon": "-111.489449",
"lat": "44.528778"
},
{
"lon": "-111.566437",
"lat": "44.552948"
},
{
"lon": "-111.604454",
"lat": "44.543072"
},
{
"lon": "-111.684067",
"lat": "44.550835"
},
{
"lon": "-111.716202",
"lat": "44.533844"
},
{
"lon": "-111.766121",
"lat": "44.518909"
},
{
"lon": "-111.791809",
"lat": "44.518547"
},
{
"lon": "-111.807037",
"lat": "44.504066"
},
{
"lon": "-111.871696",
"lat": "44.556351"
},
{
"lon": "-111.939575",
"lat": "44.549812"
},
{
"lon": "-111.977005",
"lat": "44.529762"
},
{
"lon": "-112.022797",
"lat": "44.535130"
},
{
"lon": "-112.026260",
"lat": "44.522930"
},
{
"lon": "-112.058548",
"lat": "44.528698"
},
{
"lon": "-112.099075",
"lat": "44.518318"
},
{
"lon": "-112.123367",
"lat": "44.528339"
},
{
"lon": "-112.198830",
"lat": "44.531536"
},
{
"lon": "-112.216934",
"lat": "44.538582"
},
{
"lon": "-112.229568",
"lat": "44.559578"
},
{
"lon": "-112.255844",
"lat": "44.560059"
},
{
"lon": "-112.281509",
"lat": "44.541790"
},
{
"lon": "-112.341675",
"lat": "44.525188"
},
{
"lon": "-112.339745",
"lat": "44.497269"
},
{
"lon": "-112.366753",
"lat": "44.449360"
},
{
"lon": "-112.419922",
"lat": "44.449375"
},
{
"lon": "-112.457687",
"lat": "44.468925"
},
{
"lon": "-112.501007",
"lat": "44.463089"
},
{
"lon": "-112.538490",
"lat": "44.477589"
},
{
"lon": "-112.652351",
"lat": "44.480892"
},
{
"lon": "-112.713486",
"lat": "44.497025"
},
{
"lon": "-112.732872",
"lat": "44.484409"
},
{
"lon": "-112.779022",
"lat": "44.474010"
},
{
"lon": "-112.795387",
"lat": "44.458099"
},
{
"lon": "-112.825851",
"lat": "44.421173"
},
{
"lon": "-112.817871",
"lat": "44.394909"
},
{
"lon": "-112.816559",
"lat": "44.364292"
},
{
"lon": "-112.843437",
"lat": "44.353729"
},
{
"lon": "-112.869942",
"lat": "44.370068"
},
{
"lon": "-112.886467",
"lat": "44.392941"
},
{
"lon": "-112.937439",
"lat": "44.407280"
},
{
"lon": "-112.984406",
"lat": "44.435627"
},
{
"lon": "-113.011169",
"lat": "44.437801"
},
{
"lon": "-113.005814",
"lat": "44.452702"
},
{
"lon": "-113.019463",
"lat": "44.481861"
},
{
"lon": "-113.006866",
"lat": "44.510696"
},
{
"lon": "-113.036972",
"lat": "44.533043"
},
{
"lon": "-113.038811",
"lat": "44.556377"
},
{
"lon": "-113.082184",
"lat": "44.582764"
},
{
"lon": "-113.053436",
"lat": "44.624371"
},
{
"lon": "-113.072289",
"lat": "44.675606"
},
{
"lon": "-113.098099",
"lat": "44.695995"
},
{
"lon": "-113.100845",
"lat": "44.715252"
},
{
"lon": "-113.126572",
"lat": "44.737457"
},
{
"lon": "-113.137413",
"lat": "44.761517"
},
{
"lon": "-113.239471",
"lat": "44.811916"
},
{
"lon": "-113.256287",
"lat": "44.810562"
},
{
"lon": "-113.317810",
"lat": "44.780304"
},
{
"lon": "-113.339760",
"lat": "44.779076"
},
{
"lon": "-113.349152",
"lat": "44.807644"
},
{
"lon": "-113.420502",
"lat": "44.833775"
},
{
"lon": "-113.444695",
"lat": "44.851315"
},
{
"lon": "-113.495308",
"lat": "44.930744"
},
{
"lon": "-113.486465",
"lat": "44.939648"
},
{
"lon": "-113.462532",
"lat": "44.940849"
},
{
"lon": "-113.447884",
"lat": "44.949596"
},
{
"lon": "-113.440147",
"lat": "44.998268"
},
{
"lon": "-113.457970",
"lat": "45.027523"
},
{
"lon": "-113.454552",
"lat": "45.043423"
},
{
"lon": "-113.485420",
"lat": "45.058395"
},
{
"lon": "-113.489273",
"lat": "45.071293"
},
{
"lon": "-113.519722",
"lat": "45.082138"
},
{
"lon": "-113.509338",
"lat": "45.107910"
},
{
"lon": "-113.551384",
"lat": "45.107624"
},
{
"lon": "-113.573486",
"lat": "45.117786"
},
{
"lon": "-113.570694",
"lat": "45.134621"
},
{
"lon": "-113.593208",
"lat": "45.149818"
},
{
"lon": "-113.600037",
"lat": "45.181068"
},
{
"lon": "-113.644699",
"lat": "45.206867"
},
{
"lon": "-113.689224",
"lat": "45.262360"
},
{
"lon": "-113.687813",
"lat": "45.277866"
},
{
"lon": "-113.738182",
"lat": "45.321609"
},
{
"lon": "-113.740410",
"lat": "45.382465"
},
{
"lon": "-113.774124",
"lat": "45.410252"
},
{
"lon": "-113.784760",
"lat": "45.445713"
},
{
"lon": "-113.768265",
"lat": "45.477787"
},
{
"lon": "-113.771400",
"lat": "45.507133"
},
{
"lon": "-113.780029",
"lat": "45.516945"
},
{
"lon": "-113.832809",
"lat": "45.514988"
},
{
"lon": "-113.802849",
"lat": "45.583809"
},
{
"lon": "-113.821579",
"lat": "45.600716"
},
{
"lon": "-113.851120",
"lat": "45.609642"
},
{
"lon": "-113.902397",
"lat": "45.613571"
},
{
"lon": "-113.901291",
"lat": "45.637333"
},
{
"lon": "-113.922623",
"lat": "45.655205"
},
{
"lon": "-113.925789",
"lat": "45.671291"
},
{
"lon": "-113.963234",
"lat": "45.679459"
},
{
"lon": "-113.970238",
"lat": "45.697456"
},
{
"lon": "-114.008560",
"lat": "45.686413"
},
{
"lon": "-114.018967",
"lat": "45.672459"
},
{
"lon": "-114.010078",
"lat": "45.652592"
},
{
"lon": "-114.017120",
"lat": "45.640854"
},
{
"lon": "-114.055603",
"lat": "45.625225"
},
{
"lon": "-114.082054",
"lat": "45.586460"
},
{
"lon": "-114.117226",
"lat": "45.571209"
},
{
"lon": "-114.131134",
"lat": "45.550465"
},
{
"lon": "-114.171753",
"lat": "45.544006"
},
{
"lon": "-114.193893",
"lat": "45.528000"
},
{
"lon": "-114.241081",
"lat": "45.535374"
},
{
"lon": "-114.246964",
"lat": "45.503029"
},
{
"lon": "-114.261322",
"lat": "45.485943"
},
{
"lon": "-114.325516",
"lat": "45.457508"
},
{
"lon": "-114.349327",
"lat": "45.463467"
},
{
"lon": "-114.370537",
"lat": "45.485825"
},
{
"lon": "-114.418129",
"lat": "45.499092"
},
{
"lon": "-114.432632",
"lat": "45.527718"
},
{
"lon": "-114.461784",
"lat": "45.547932"
},
{
"lon": "-114.495667",
"lat": "45.546734"
},
{
"lon": "-114.526466",
"lat": "45.558277"
},
{
"lon": "-114.559998",
"lat": "45.548824"
},
{
"lon": "-114.540031",
"lat": "45.596481"
},
{
"lon": "-114.563751",
"lat": "45.624355"
},
{
"lon": "-114.500816",
"lat": "45.652477"
},
{
"lon": "-114.509781",
"lat": "45.674141"
},
{
"lon": "-114.496635",
"lat": "45.694485"
},
{
"lon": "-114.534050",
"lat": "45.723080"
},
{
"lon": "-114.541031",
"lat": "45.746082"
},
{
"lon": "-114.562614",
"lat": "45.762482"
},
{
"lon": "-114.516449",
"lat": "45.810150"
},
{
"lon": "-114.498238",
"lat": "45.842766"
},
{
"lon": "-114.472878",
"lat": "45.839550"
},
{
"lon": "-114.442307",
"lat": "45.852703"
},
{
"lon": "-114.406601",
"lat": "45.846535"
},
{
"lon": "-114.391914",
"lat": "45.870968"
},
{
"lon": "-114.412605",
"lat": "45.910732"
},
{
"lon": "-114.428535",
"lat": "45.921558"
},
{
"lon": "-114.404366",
"lat": "45.954060"
},
{
"lon": "-114.411522",
"lat": "45.972054"
},
{
"lon": "-114.483528",
"lat": "45.989887"
},
{
"lon": "-114.473602",
"lat": "46.009846"
},
{
"lon": "-114.493393",
"lat": "46.023491"
},
{
"lon": "-114.464828",
"lat": "46.050896"
},
{
"lon": "-114.455101",
"lat": "46.082310"
},
{
"lon": "-114.476440",
"lat": "46.107437"
},
{
"lon": "-114.505638",
"lat": "46.116222"
},
{
"lon": "-114.518013",
"lat": "46.136143"
},
{
"lon": "-114.508682",
"lat": "46.157497"
},
{
"lon": "-114.466087",
"lat": "46.155342"
},
{
"lon": "-114.439949",
"lat": "46.169048"
},
{
"lon": "-114.438622",
"lat": "46.220333"
},
{
"lon": "-114.471901",
"lat": "46.243862"
},
{
"lon": "-114.472862",
"lat": "46.253040"
},
{
"lon": "-114.430862",
"lat": "46.284790"
},
{
"lon": "-114.408859",
"lat": "46.392990"
},
{
"lon": "-114.396080",
"lat": "46.399624"
},
{
"lon": "-114.383087",
"lat": "46.428257"
},
{
"lon": "-114.409775",
"lat": "46.487450"
},
{
"lon": "-114.359528",
"lat": "46.506203"
},
{
"lon": "-114.349174",
"lat": "46.517467"
},
{
"lon": "-114.342377",
"lat": "46.587959"
},
{
"lon": "-114.323769",
"lat": "46.622917"
},
{
"lon": "-114.333740",
"lat": "46.654305"
},
{
"lon": "-114.383072",
"lat": "46.661674"
},
{
"lon": "-114.440590",
"lat": "46.645794"
},
{
"lon": "-114.483772",
"lat": "46.623653"
},
{
"lon": "-114.539444",
"lat": "46.637970"
},
{
"lon": "-114.609879",
"lat": "46.629128"
},
{
"lon": "-114.643791",
"lat": "46.660904"
},
{
"lon": "-114.644089",
"lat": "46.671001"
},
{
"lon": "-114.624977",
"lat": "46.687187"
},
{
"lon": "-114.672935",
"lat": "46.734802"
},
{
"lon": "-114.697479",
"lat": "46.733841"
},
{
"lon": "-114.747154",
"lat": "46.695213"
},
{
"lon": "-114.781967",
"lat": "46.703121"
},
{
"lon": "-114.776878",
"lat": "46.755798"
},
{
"lon": "-114.793076",
"lat": "46.766613"
},
{
"lon": "-114.839836",
"lat": "46.775620"
},
{
"lon": "-114.865646",
"lat": "46.797127"
},
{
"lon": "-114.901367",
"lat": "46.799515"
},
{
"lon": "-114.947449",
"lat": "46.852528"
},
{
"lon": "-114.939606",
"lat": "46.890968"
},
{
"lon": "-114.923164",
"lat": "46.907246"
},
{
"lon": "-114.963768",
"lat": "46.925293"
},
{
"lon": "-115.000610",
"lat": "46.958889"
},
{
"lon": "-115.036369",
"lat": "46.963081"
},
{
"lon": "-115.054672",
"lat": "46.973438"
},
{
"lon": "-115.080368",
"lat": "47.026604"
},
{
"lon": "-115.134537",
"lat": "47.063629"
},
{
"lon": "-115.147713",
"lat": "47.091820"
},
{
"lon": "-115.171524",
"lat": "47.097649"
},
{
"lon": "-115.192101",
"lat": "47.124104"
},
{
"lon": "-115.295258",
"lat": "47.179626"
},
{
"lon": "-115.324249",
"lat": "47.245224"
},
{
"lon": "-115.342682",
"lat": "47.255096"
},
{
"lon": "-115.407227",
"lat": "47.263668"
},
{
"lon": "-115.425659",
"lat": "47.274448"
},
{
"lon": "-115.500946",
"lat": "47.281719"
},
{
"lon": "-115.522079",
"lat": "47.292057"
},
{
"lon": "-115.554535",
"lat": "47.334686"
},
{
"lon": "-115.598549",
"lat": "47.370075"
},
{
"lon": "-115.637794",
"lat": "47.380116"
},
{
"lon": "-115.665489",
"lat": "47.399239"
},
{
"lon": "-115.749336",
"lat": "47.422546"
},
{
"lon": "-115.749115",
"lat": "47.434036"
},
{
"lon": "-115.731491",
"lat": "47.445374"
},
{
"lon": "-115.655098",
"lat": "47.449249"
},
{
"lon": "-115.642197",
"lat": "47.457863"
},
{
"lon": "-115.639153",
"lat": "47.475304"
},
{
"lon": "-115.691780",
"lat": "47.489609"
},
{
"lon": "-115.700531",
"lat": "47.520962"
},
{
"lon": "-115.741837",
"lat": "47.533760"
},
{
"lon": "-115.691093",
"lat": "47.590790"
},
{
"lon": "-115.697289",
"lat": "47.616150"
},
{
"lon": "-115.733070",
"lat": "47.639950"
},
{
"lon": "-115.732666",
"lat": "47.695625"
},
{
"lon": "-115.774727",
"lat": "47.709805"
},
{
"lon": "-115.789536",
"lat": "47.744911"
},
{
"lon": "-115.835739",
"lat": "47.756355"
},
{
"lon": "-115.848320",
"lat": "47.805256"
},
{
"lon": "-115.868805",
"lat": "47.827526"
},
{
"lon": "-115.902916",
"lat": "47.841148"
},
{
"lon": "-115.936836",
"lat": "47.867199"
},
{
"lon": "-115.997925",
"lat": "47.925217"
},
{
"lon": "-116.024307",
"lat": "47.965015"
},
{
"lon": "-116.052483",
"lat": "47.976269"
},
{
"lon": "-116.054497",
"lat": "48.208549"
},
{
"lon": "-116.055679",
"lat": "48.498726"
},
{
"lon": "-116.062500",
"lat": "48.999996"
},
{
"lon": "-114.728333",
"lat": "49.000000"
},
{
"lon": "-114.062500",
"lat": "49.000000"
},
{
"lon": "-112.187500",
"lat": "48.999996"
},
{
"lon": "-111.281876",
"lat": "49.000000"
},
{
"lon": "-110.750000",
"lat": "49.000000"
},
{
"lon": "-109.500000",
"lat": "48.999996"
},
{
"lon": "-108.250000",
"lat": "48.999996"
},
{
"lon": "-107.187500",
"lat": "48.999996"
},
{
"lon": "-106.125000",
"lat": "48.999996"
},
{
"lon": "-105.062500",
"lat": "48.999996"
},
{
"lon": "-104.062500",
"lat": "49.000000"
},
{
"lon": "-104.051826",
"lat": "48.645798"
},
{
"lon": "-104.051620",
"lat": "48.390995"
},
{
"lon": "-104.047935",
"lat": "48.000061"
},
{
"lon": "-104.046822",
"lat": "47.400002"
},
{
"lon": "-104.045441",
"lat": "47.333817"
},
{
"lon": "-104.046951",
"lat": "46.642937"
},
{
"lon": "-104.046219",
"lat": "46.542530"
},
{
"lon": "-104.047348",
"lat": "46.280876"
},
{
"lon": "-104.048416",
"lat": "45.942993"
},
{
"lon": "-104.049026",
"lat": "45.883053"
},
{
"lon": "-104.043358",
"lat": "45.212887"
},
{
"lon": "-104.042580",
"lat": "44.997818"
},
{
"lon": "-104.059349",
"lat": "44.997349"
},
{
"lon": "-105.041260",
"lat": "45.001091"
},
{
"lon": "-105.084465",
"lat": "44.999832"
},
{
"lon": "-106.020576",
"lat": "44.997227"
},
{
"lon": "-106.258644",
"lat": "44.996174"
},
{
"lon": "-107.893715",
"lat": "44.999813"
},
{
"lon": "-108.258568",
"lat": "45.000160"
},
{
"lon": "-108.624573",
"lat": "44.997643"
},
{
"lon": "-109.798653",
"lat": "44.999580"
},
{
"lon": "-109.994789",
"lat": "45.002853"
},
{
"lon": "-110.392006",
"lat": "44.998688"
},
{
"lon": "-110.428894",
"lat": "44.992348"
},
{
"lon": "-111.052650",
"lat": "44.995766"
},
{
"lon": "-111.050842",
"lat": "44.664562"
},
{
"lon": "-111.050789",
"lat": "44.473396"
},
{
"lon": "-111.093857",
"lat": "44.486198"
},
{
"lon": "-111.128143",
"lat": "44.500832"
},
{
"lon": "-111.133583",
"lat": "44.527977"
},
{
"lon": "-111.169464",
"lat": "44.545261"
},
{
"lon": "-111.177986",
"lat": "44.564926"
},
{
"lon": "-111.218727",
"lat": "44.573246"
},
{
"lon": "-111.233452",
"lat": "44.602638"
},
{
"lon": "-111.219017",
"lat": "44.618057"
},
{
"lon": "-111.223190",
"lat": "44.626984"
},
{
"lon": "-111.269882",
"lat": "44.642288"
},
{
"lon": "-111.269424",
"lat": "44.673878"
},
{
"lon": "-111.294884",
"lat": "44.683014"
},
{
"lon": "-111.314690",
"lat": "44.705269"
},
{
"lon": "-111.318436",
"lat": "44.727940"
},
{
"lon": "-111.349190",
"lat": "44.726254"
},
{
"lon": "-111.371521",
"lat": "44.745163"
},
{
"lon": "-111.384171",
"lat": "44.737770"
},
{
"lon": "-111.394295",
"lat": "44.708946"
},
{
"lon": "-111.442841",
"lat": "44.713257"
},
{
"lon": "-111.474632",
"lat": "44.702240"
}
],
[
{
"lon": "-69.777786",
"lat": "44.074074"
},
{
"lon": "-69.860435",
"lat": "43.999924"
},
{
"lon": "-69.792038",
"lat": "43.756001"
},
{
"lon": "-69.830902",
"lat": "43.727901"
},
{
"lon": "-69.852295",
"lat": "43.744244"
},
{
"lon": "-69.846664",
"lat": "43.842262"
},
{
"lon": "-69.887299",
"lat": "43.876633"
},
{
"lon": "-69.903641",
"lat": "43.790649"
},
{
"lon": "-69.973412",
"lat": "43.768764"
},
{
"lon": "-70.000008",
"lat": "43.786125"
},
{
"lon": "-69.987877",
"lat": "43.845657"
},
{
"lon": "-70.026909",
"lat": "43.845520"
},
{
"lon": "-70.157135",
"lat": "43.789730"
},
{
"lon": "-70.236305",
"lat": "43.685715"
},
{
"lon": "-70.222748",
"lat": "43.577156"
},
{
"lon": "-70.342117",
"lat": "43.534824"
},
{
"lon": "-70.366432",
"lat": "43.430218"
},
{
"lon": "-70.457481",
"lat": "43.349384"
},
{
"lon": "-70.539444",
"lat": "43.335632"
},
{
"lon": "-70.666176",
"lat": "43.090961"
},
{
"lon": "-70.819168",