Skip to content

Instantly share code, notes, and snippets.

@aendra-rininsland
Created April 6, 2017 11:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aendra-rininsland/ddfbc2ac0cec643a3de912c35a18ce43 to your computer and use it in GitHub Desktop.
Save aendra-rininsland/ddfbc2ac0cec643a3de912c35a18ce43 to your computer and use it in GitHub Desktop.
Weird Nightingale Charts bug
This file has been truncated, but you can view the full file.
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var oCharts = __webpack_require__(1);
var d3 = __webpack_require__(4);
var fixtures = __webpack_require__(48).barChart;
var config = __webpack_require__(50).config;
var utils = __webpack_require__(49);
var sizes = config.sizes;
var chartConfig = config.columnChart;
// Fixture index
var index = Math.floor(Math.random() * fixtures.length);
// Size
var urlVar = utils.getQueryVariable('size');
var size = !urlVar ? sizes['medium'] : sizes[urlVar];
// Base Config
var baseConfig = Object.assign({}, chartConfig, {
data: [{ key: 'herpa', value: 2.01 }, { key: 'derpa', value: -3.01 }],
x: { series: 'key' },
y: { series: 'value' },
width: size.width
});
// Web Theme
var chartBasic = d3.select('#web').append('div').data([baseConfig]);
oCharts.addFont('BentonSans').then(function () {
chartBasic.call(oCharts.chart.column);
});
// Video Theme
var videoConfig = Object.assign({}, baseConfig, {
height: 338,
width: 600,
theme: 'ft-video'
});
var chartVideo = d3.select('#video').append('div').data([videoConfig]);
oCharts.addFont('MetricWebSemiBold').then(function () {
chartVideo.call(oCharts.chart.column);
});
// Print Theme
var printConfig = Object.assign({}, baseConfig, {
theme: 'ft-print'
});
var chartPrint = d3.select('#print').append('div').data([printConfig]);
oCharts.addFont(['MetricWeb', 'MetricWebSemiBold']).then(function () {
chartPrint.call(oCharts.chart.column);
});
// NAR chart
var narConfig = Object.assign({}, baseConfig, {
theme: 'ft-nar'
});
var narChart = d3.select('#nar').append('div').data([narConfig]);
oCharts.addFont(['AvenirLight', 'AvenirLightOblique', 'AvenirHeavy']).then(function () {
narChart.call(oCharts.chart.column);
});
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
module.exports = {
chart: __webpack_require__(2),
axis: __webpack_require__(5),
dressing: {
seriesKey: __webpack_require__(34),
textArea: __webpack_require__(33),
logo: __webpack_require__(35)
},
util: {
themes: __webpack_require__(8),
dates: __webpack_require__(14)
},
scale: __webpack_require__(44),
addFont: __webpack_require__(45),
version: __webpack_require__(46)
};
/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
module.exports = {
line: __webpack_require__(3),
blank: __webpack_require__(40),
pie: __webpack_require__(41),
column: __webpack_require__(42),
bar: __webpack_require__(43)
};
/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var axes = __webpack_require__(5);
var interpolator = __webpack_require__(26);
var DataModel = __webpack_require__(27);
var metadata = __webpack_require__(31);
var Dressing = __webpack_require__(32);
var themes = __webpack_require__(8);
var extend = __webpack_require__(36)._extend;
function drawLine(plotSVG, data, attrs) {
plotSVG.append('path').datum(data).attr(attrs);
}
function plotSeries(plotSVG, model, createdAxes, series, lineAttr, borderAttrs) {
var plot = new axes.Plot(model, createdAxes);
var line = d3.svg.line().interpolate(interpolator.gappedLine).x(function (d, i) {
return plot.x(d.key, 0);
}).y(function (d, i) {
return plot.y(d.value, i);
});
var data = formatData(model, series);
lineAttr.d = function (d) {
return line(d);
};
lineAttr['class'] = 'line ' + series.className;
lineAttr.stroke = model.colours[series.index];
if (lineAttr.border) {
borderAttrs.d = lineAttr.d;
drawLine(plotSVG, data, borderAttrs);
}
drawLine(plotSVG, data, lineAttr);
}
function formatData(model, series) {
//null values in the data are interpolated over, filter these out
//NaN values are represented by line breaks
var data = model.data.map(function (d) {
return {
key: d[model.x.series.key],
value: Array.isArray(d.values) ? d.values[0][series.key] : d[series.key]
};
}).filter(function (d) {
return d.value !== null;
});
return data;
}
function lineChart(g) {
'use strict';
var model = new DataModel('line', Object.create(g.data()[0]));
var svg = g.append('svg').attr({
'class': 'graphic line-chart',
height: model.height,
width: model.width,
xmlns: 'http://www.w3.org/2000/svg',
version: '1.2'
}).attr(themes.check(model.theme, 'svg').attributes);
metadata.create(svg, model);
var dressing = new Dressing(svg, model);
dressing.addHeaderItem('title');
dressing.addHeaderItem('subtitle');
!model.keyHover && dressing.addSeriesKey();
dressing.addFooter();
dressing.addBorders();
var chartSVG = svg.append('g').attr('class', 'chart');
chartSVG.attr('transform', model.translate(model.chartPosition));
// Add the axis to the SVG
var creator = new axes.Create(chartSVG, model);
creator.createAxes({
dependent: 'number',
independent: 'time'
});
model.keyHover && dressing.addSeriesKey();
// Set up the SVG to plot the line
var axisLayer = themes.check(model.theme, 'axis-layer').attributes.position || 'back';
var plotSVG = axisLayer === 'front' ? chartSVG.insert('g', '.axis--independent.axis').attr('class', 'plot') : chartSVG.append('g').attr('class', 'plot');
var i = model.y.series.length;
var lineAttr = extend(themes.check(model.theme, 'lines').attributes, { 'stroke-width': model.lineStrokeWidth });
var borderAttrs = extend({}, lineAttr);
borderAttrs['class'] = 'line line__border';
borderAttrs['stroke-width'] = lineAttr['stroke-width'] * 2;
borderAttrs.stroke = lineAttr.border;
// Plot the line
while (i--) {
plotSeries(plotSVG, model, creator, model.y.series[i], lineAttr, borderAttrs);
}
// Add transparency
chartSVG.selectAll('path.domain').attr('fill', 'none');
}
module.exports = lineChart;
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {
var d3 = {
version: "3.5.17"
};
var d3_arraySlice = [].slice, d3_array = function(list) {
return d3_arraySlice.call(list);
};
var d3_document = this.document;
function d3_documentElement(node) {
return node && (node.ownerDocument || node.document || node).documentElement;
}
function d3_window(node) {
return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);
}
if (d3_document) {
try {
d3_array(d3_document.documentElement.childNodes)[0].nodeType;
} catch (e) {
d3_array = function(list) {
var i = list.length, array = new Array(i);
while (i--) array[i] = list[i];
return array;
};
}
}
if (!Date.now) Date.now = function() {
return +new Date();
};
if (d3_document) {
try {
d3_document.createElement("DIV").style.setProperty("opacity", 0, "");
} catch (error) {
var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
d3_element_prototype.setAttribute = function(name, value) {
d3_element_setAttribute.call(this, name, value + "");
};
d3_element_prototype.setAttributeNS = function(space, local, value) {
d3_element_setAttributeNS.call(this, space, local, value + "");
};
d3_style_prototype.setProperty = function(name, value, priority) {
d3_style_setProperty.call(this, name, value + "", priority);
};
}
}
d3.ascending = d3_ascending;
function d3_ascending(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
}
d3.descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n) if ((b = array[i]) != null && b >= b) {
a = b;
break;
}
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
a = b;
break;
}
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
}
return a;
};
d3.max = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n) if ((b = array[i]) != null && b >= b) {
a = b;
break;
}
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
a = b;
break;
}
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
}
return a;
};
d3.extent = function(array, f) {
var i = -1, n = array.length, a, b, c;
if (arguments.length === 1) {
while (++i < n) if ((b = array[i]) != null && b >= b) {
a = c = b;
break;
}
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
a = c = b;
break;
}
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
}
return [ a, c ];
};
function d3_number(x) {
return x === null ? NaN : +x;
}
function d3_numeric(x) {
return !isNaN(x);
}
d3.sum = function(array, f) {
var s = 0, n = array.length, a, i = -1;
if (arguments.length === 1) {
while (++i < n) if (d3_numeric(a = +array[i])) s += a;
} else {
while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
}
return s;
};
d3.mean = function(array, f) {
var s = 0, n = array.length, a, i = -1, j = n;
if (arguments.length === 1) {
while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
} else {
while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
}
if (j) return s / j;
};
d3.quantile = function(values, p) {
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
return e ? v + e * (values[h] - v) : v;
};
d3.median = function(array, f) {
var numbers = [], n = array.length, a, i = -1;
if (arguments.length === 1) {
while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
} else {
while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
}
if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
};
d3.variance = function(array, f) {
var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;
if (arguments.length === 1) {
while (++i < n) {
if (d3_numeric(a = d3_number(array[i]))) {
d = a - m;
m += d / ++j;
s += d * (a - m);
}
}
} else {
while (++i < n) {
if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {
d = a - m;
m += d / ++j;
s += d * (a - m);
}
}
}
if (j > 1) return s / (j - 1);
};
d3.deviation = function() {
var v = d3.variance.apply(this, arguments);
return v ? Math.sqrt(v) : v;
};
function d3_bisector(compare) {
return {
left: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;
}
return lo;
},
right: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;
}
return lo;
}
};
}
var d3_bisect = d3_bisector(d3_ascending);
d3.bisectLeft = d3_bisect.left;
d3.bisect = d3.bisectRight = d3_bisect.right;
d3.bisector = function(f) {
return d3_bisector(f.length === 1 ? function(d, x) {
return d3_ascending(f(d), x);
} : f);
};
d3.shuffle = function(array, i0, i1) {
if ((m = arguments.length) < 3) {
i1 = array.length;
if (m < 2) i0 = 0;
}
var m = i1 - i0, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
}
return array;
};
d3.permute = function(array, indexes) {
var i = indexes.length, permutes = new Array(i);
while (i--) permutes[i] = array[indexes[i]];
return permutes;
};
d3.pairs = function(array) {
var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];
return pairs;
};
d3.transpose = function(matrix) {
if (!(n = matrix.length)) return [];
for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {
for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {
row[j] = matrix[j][i];
}
}
return transpose;
};
function d3_transposeLength(d) {
return d.length;
}
d3.zip = function() {
return d3.transpose(arguments);
};
d3.keys = function(map) {
var keys = [];
for (var key in map) keys.push(key);
return keys;
};
d3.values = function(map) {
var values = [];
for (var key in map) values.push(map[key]);
return values;
};
d3.entries = function(map) {
var entries = [];
for (var key in map) entries.push({
key: key,
value: map[key]
});
return entries;
};
d3.merge = function(arrays) {
var n = arrays.length, m, i = -1, j = 0, merged, array;
while (++i < n) j += arrays[i].length;
merged = new Array(j);
while (--n >= 0) {
array = arrays[n];
m = array.length;
while (--m >= 0) {
merged[--j] = array[m];
}
}
return merged;
};
var abs = Math.abs;
d3.range = function(start, stop, step) {
if (arguments.length < 3) {
step = 1;
if (arguments.length < 2) {
stop = start;
start = 0;
}
}
if ((stop - start) / step === Infinity) throw new Error("infinite range");
var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;
start *= k, stop *= k, step *= k;
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
return range;
};
function d3_range_integerScale(x) {
var k = 1;
while (x * k % 1) k *= 10;
return k;
}
function d3_class(ctor, properties) {
for (var key in properties) {
Object.defineProperty(ctor.prototype, key, {
value: properties[key],
enumerable: false
});
}
}
d3.map = function(object, f) {
var map = new d3_Map();
if (object instanceof d3_Map) {
object.forEach(function(key, value) {
map.set(key, value);
});
} else if (Array.isArray(object)) {
var i = -1, n = object.length, o;
if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);
} else {
for (var key in object) map.set(key, object[key]);
}
return map;
};
function d3_Map() {
this._ = Object.create(null);
}
var d3_map_proto = "__proto__", d3_map_zero = "\x00";
d3_class(d3_Map, {
has: d3_map_has,
get: function(key) {
return this._[d3_map_escape(key)];
},
set: function(key, value) {
return this._[d3_map_escape(key)] = value;
},
remove: d3_map_remove,
keys: d3_map_keys,
values: function() {
var values = [];
for (var key in this._) values.push(this._[key]);
return values;
},
entries: function() {
var entries = [];
for (var key in this._) entries.push({
key: d3_map_unescape(key),
value: this._[key]
});
return entries;
},
size: d3_map_size,
empty: d3_map_empty,
forEach: function(f) {
for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
}
});
function d3_map_escape(key) {
return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
}
function d3_map_unescape(key) {
return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
}
function d3_map_has(key) {
return d3_map_escape(key) in this._;
}
function d3_map_remove(key) {
return (key = d3_map_escape(key)) in this._ && delete this._[key];
}
function d3_map_keys() {
var keys = [];
for (var key in this._) keys.push(d3_map_unescape(key));
return keys;
}
function d3_map_size() {
var size = 0;
for (var key in this._) ++size;
return size;
}
function d3_map_empty() {
for (var key in this._) return false;
return true;
}
d3.nest = function() {
var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
function map(mapType, array, depth) {
if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;
while (++i < n) {
if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
values.push(object);
} else {
valuesByKey.set(keyValue, [ object ]);
}
}
if (mapType) {
object = mapType();
setter = function(keyValue, values) {
object.set(keyValue, map(mapType, values, depth));
};
} else {
object = {};
setter = function(keyValue, values) {
object[keyValue] = map(mapType, values, depth);
};
}
valuesByKey.forEach(setter);
return object;
}
function entries(map, depth) {
if (depth >= keys.length) return map;
var array = [], sortKey = sortKeys[depth++];
map.forEach(function(key, keyMap) {
array.push({
key: key,
values: entries(keyMap, depth)
});
});
return sortKey ? array.sort(function(a, b) {
return sortKey(a.key, b.key);
}) : array;
}
nest.map = function(array, mapType) {
return map(mapType, array, 0);
};
nest.entries = function(array) {
return entries(map(d3.map, array, 0), 0);
};
nest.key = function(d) {
keys.push(d);
return nest;
};
nest.sortKeys = function(order) {
sortKeys[keys.length - 1] = order;
return nest;
};
nest.sortValues = function(order) {
sortValues = order;
return nest;
};
nest.rollup = function(f) {
rollup = f;
return nest;
};
return nest;
};
d3.set = function(array) {
var set = new d3_Set();
if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
return set;
};
function d3_Set() {
this._ = Object.create(null);
}
d3_class(d3_Set, {
has: d3_map_has,
add: function(key) {
this._[d3_map_escape(key += "")] = true;
return key;
},
remove: d3_map_remove,
values: d3_map_keys,
size: d3_map_size,
empty: d3_map_empty,
forEach: function(f) {
for (var key in this._) f.call(this, d3_map_unescape(key));
}
});
d3.behavior = {};
function d3_identity(d) {
return d;
}
d3.rebind = function(target, source) {
var i = 1, n = arguments.length, method;
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
return target;
};
function d3_rebind(target, source, method) {
return function() {
var value = method.apply(source, arguments);
return value === source ? target : value;
};
}
function d3_vendorSymbol(object, name) {
if (name in object) return name;
name = name.charAt(0).toUpperCase() + name.slice(1);
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
var prefixName = d3_vendorPrefixes[i] + name;
if (prefixName in object) return prefixName;
}
}
var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ];
function d3_noop() {}
d3.dispatch = function() {
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
return dispatch;
};
function d3_dispatch() {}
d3_dispatch.prototype.on = function(type, listener) {
var i = type.indexOf("."), name = "";
if (i >= 0) {
name = type.slice(i + 1);
type = type.slice(0, i);
}
if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
if (arguments.length === 2) {
if (listener == null) for (type in this) {
if (this.hasOwnProperty(type)) this[type].on(name, null);
}
return this;
}
};
function d3_dispatch_event(dispatch) {
var listeners = [], listenerByName = new d3_Map();
function event() {
var z = listeners, i = -1, n = z.length, l;
while (++i < n) if (l = z[i].on) l.apply(this, arguments);
return dispatch;
}
event.on = function(name, listener) {
var l = listenerByName.get(name), i;
if (arguments.length < 2) return l && l.on;
if (l) {
l.on = null;
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
listenerByName.remove(name);
}
if (listener) listeners.push(listenerByName.set(name, {
on: listener
}));
return dispatch;
};
return event;
}
d3.event = null;
function d3_eventPreventDefault() {
d3.event.preventDefault();
}
function d3_eventSource() {
var e = d3.event, s;
while (s = e.sourceEvent) e = s;
return e;
}
function d3_eventDispatch(target) {
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
dispatch.of = function(thiz, argumentz) {
return function(e1) {
try {
var e0 = e1.sourceEvent = d3.event;
e1.target = target;
d3.event = e1;
dispatch[e1.type].apply(thiz, argumentz);
} finally {
d3.event = e0;
}
};
};
return dispatch;
}
d3.requote = function(s) {
return s.replace(d3_requote_re, "\\$&");
};
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
var d3_subclass = {}.__proto__ ? function(object, prototype) {
object.__proto__ = prototype;
} : function(object, prototype) {
for (var property in prototype) object[property] = prototype[property];
};
function d3_selection(groups) {
d3_subclass(groups, d3_selectionPrototype);
return groups;
}
var d3_select = function(s, n) {
return n.querySelector(s);
}, d3_selectAll = function(s, n) {
return n.querySelectorAll(s);
}, d3_selectMatches = function(n, s) {
var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, "matchesSelector")];
d3_selectMatches = function(n, s) {
return d3_selectMatcher.call(n, s);
};
return d3_selectMatches(n, s);
};
if (typeof Sizzle === "function") {
d3_select = function(s, n) {
return Sizzle(s, n)[0] || null;
};
d3_selectAll = Sizzle;
d3_selectMatches = Sizzle.matchesSelector;
}
d3.selection = function() {
return d3.select(d3_document.documentElement);
};
var d3_selectionPrototype = d3.selection.prototype = [];
d3_selectionPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, group, node;
selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(subnode = selector.call(node, node.__data__, i, j));
if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selector(selector) {
return typeof selector === "function" ? selector : function() {
return d3_select(selector, this);
};
}
d3_selectionPrototype.selectAll = function(selector) {
var subgroups = [], subgroup, node;
selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
subgroup.parentNode = node;
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selectorAll(selector) {
return typeof selector === "function" ? selector : function() {
return d3_selectAll(selector, this);
};
}
var d3_nsXhtml = "http://www.w3.org/1999/xhtml";
var d3_nsPrefix = {
svg: "http://www.w3.org/2000/svg",
xhtml: d3_nsXhtml,
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
d3.ns = {
prefix: d3_nsPrefix,
qualify: function(name) {
var i = name.indexOf(":"), prefix = name;
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
return d3_nsPrefix.hasOwnProperty(prefix) ? {
space: d3_nsPrefix[prefix],
local: name
} : name;
}
};
d3_selectionPrototype.attr = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node();
name = d3.ns.qualify(name);
return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
}
for (value in name) this.each(d3_selection_attr(value, name[value]));
return this;
}
return this.each(d3_selection_attr(name, value));
};
function d3_selection_attr(name, value) {
name = d3.ns.qualify(name);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
function attrConstant() {
this.setAttribute(name, value);
}
function attrConstantNS() {
this.setAttributeNS(name.space, name.local, value);
}
function attrFunction() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
}
function attrFunctionNS() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
}
return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
}
function d3_collapse(s) {
return s.trim().replace(/\s+/g, " ");
}
d3_selectionPrototype.classed = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;
if (value = node.classList) {
while (++i < n) if (!value.contains(name[i])) return false;
} else {
value = node.getAttribute("class");
while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
}
return true;
}
for (value in name) this.each(d3_selection_classed(value, name[value]));
return this;
}
return this.each(d3_selection_classed(name, value));
};
function d3_selection_classedRe(name) {
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
}
function d3_selection_classes(name) {
return (name + "").trim().split(/^|\s+/);
}
function d3_selection_classed(name, value) {
name = d3_selection_classes(name).map(d3_selection_classedName);
var n = name.length;
function classedConstant() {
var i = -1;
while (++i < n) name[i](this, value);
}
function classedFunction() {
var i = -1, x = value.apply(this, arguments);
while (++i < n) name[i](this, x);
}
return typeof value === "function" ? classedFunction : classedConstant;
}
function d3_selection_classedName(name) {
var re = d3_selection_classedRe(name);
return function(node, value) {
if (c = node.classList) return value ? c.add(name) : c.remove(name);
var c = node.getAttribute("class") || "";
if (value) {
re.lastIndex = 0;
if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
} else {
node.setAttribute("class", d3_collapse(c.replace(re, " ")));
}
};
}
d3_selectionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
return this;
}
if (n < 2) {
var node = this.node();
return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);
}
priority = "";
}
return this.each(d3_selection_style(name, value, priority));
};
function d3_selection_style(name, value, priority) {
function styleNull() {
this.style.removeProperty(name);
}
function styleConstant() {
this.style.setProperty(name, value, priority);
}
function styleFunction() {
var x = value.apply(this, arguments);
if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
}
return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
}
d3_selectionPrototype.property = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") return this.node()[name];
for (value in name) this.each(d3_selection_property(value, name[value]));
return this;
}
return this.each(d3_selection_property(name, value));
};
function d3_selection_property(name, value) {
function propertyNull() {
delete this[name];
}
function propertyConstant() {
this[name] = value;
}
function propertyFunction() {
var x = value.apply(this, arguments);
if (x == null) delete this[name]; else this[name] = x;
}
return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
}
d3_selectionPrototype.text = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.textContent = v == null ? "" : v;
} : value == null ? function() {
this.textContent = "";
} : function() {
this.textContent = value;
}) : this.node().textContent;
};
d3_selectionPrototype.html = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.innerHTML = v == null ? "" : v;
} : value == null ? function() {
this.innerHTML = "";
} : function() {
this.innerHTML = value;
}) : this.node().innerHTML;
};
d3_selectionPrototype.append = function(name) {
name = d3_selection_creator(name);
return this.select(function() {
return this.appendChild(name.apply(this, arguments));
});
};
function d3_selection_creator(name) {
function create() {
var document = this.ownerDocument, namespace = this.namespaceURI;
return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);
}
function createNS() {
return this.ownerDocument.createElementNS(name.space, name.local);
}
return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;
}
d3_selectionPrototype.insert = function(name, before) {
name = d3_selection_creator(name);
before = d3_selection_selector(before);
return this.select(function() {
return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
});
};
d3_selectionPrototype.remove = function() {
return this.each(d3_selectionRemove);
};
function d3_selectionRemove() {
var parent = this.parentNode;
if (parent) parent.removeChild(this);
}
d3_selectionPrototype.data = function(value, key) {
var i = -1, n = this.length, group, node;
if (!arguments.length) {
value = new Array(n = (group = this[0]).length);
while (++i < n) {
if (node = group[i]) {
value[i] = node.__data__;
}
}
return value;
}
function bind(group, groupData) {
var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
if (key) {
var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;
for (i = -1; ++i < n; ) {
if (node = group[i]) {
if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {
exitNodes[i] = node;
} else {
nodeByKeyValue.set(keyValue, node);
}
keyValues[i] = keyValue;
}
}
for (i = -1; ++i < m; ) {
if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
enterNodes[i] = d3_selection_dataNode(nodeData);
} else if (node !== true) {
updateNodes[i] = node;
node.__data__ = nodeData;
}
nodeByKeyValue.set(keyValue, true);
}
for (i = -1; ++i < n; ) {
if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {
exitNodes[i] = group[i];
}
}
} else {
for (i = -1; ++i < n0; ) {
node = group[i];
nodeData = groupData[i];
if (node) {
node.__data__ = nodeData;
updateNodes[i] = node;
} else {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
}
for (;i < m; ++i) {
enterNodes[i] = d3_selection_dataNode(groupData[i]);
}
for (;i < n; ++i) {
exitNodes[i] = group[i];
}
}
enterNodes.update = updateNodes;
enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
enter.push(enterNodes);
update.push(updateNodes);
exit.push(exitNodes);
}
var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
if (typeof value === "function") {
while (++i < n) {
bind(group = this[i], value.call(group, group.parentNode.__data__, i));
}
} else {
while (++i < n) {
bind(group = this[i], value);
}
}
update.enter = function() {
return enter;
};
update.exit = function() {
return exit;
};
return update;
};
function d3_selection_dataNode(data) {
return {
__data__: data
};
}
d3_selectionPrototype.datum = function(value) {
return arguments.length ? this.property("__data__", value) : this.property("__data__");
};
d3_selectionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
subgroup.push(node);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_filter(selector) {
return function() {
return d3_selectMatches(this, selector);
};
}
d3_selectionPrototype.order = function() {
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
if (node = group[i]) {
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
next = node;
}
}
}
return this;
};
d3_selectionPrototype.sort = function(comparator) {
comparator = d3_selection_sortComparator.apply(this, arguments);
for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
return this.order();
};
function d3_selection_sortComparator(comparator) {
if (!arguments.length) comparator = d3_ascending;
return function(a, b) {
return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
};
}
d3_selectionPrototype.each = function(callback) {
return d3_selection_each(this, function(node, i, j) {
callback.call(node, node.__data__, i, j);
});
};
function d3_selection_each(groups, callback) {
for (var j = 0, m = groups.length; j < m; j++) {
for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
if (node = group[i]) callback(node, i, j);
}
}
return groups;
}
d3_selectionPrototype.call = function(callback) {
var args = d3_array(arguments);
callback.apply(args[0] = this, args);
return this;
};
d3_selectionPrototype.empty = function() {
return !this.node();
};
d3_selectionPrototype.node = function() {
for (var j = 0, m = this.length; j < m; j++) {
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
var node = group[i];
if (node) return node;
}
}
return null;
};
d3_selectionPrototype.size = function() {
var n = 0;
d3_selection_each(this, function() {
++n;
});
return n;
};
function d3_selection_enter(selection) {
d3_subclass(selection, d3_selection_enterPrototype);
return selection;
}
var d3_selection_enterPrototype = [];
d3.selection.enter = d3_selection_enter;
d3.selection.enter.prototype = d3_selection_enterPrototype;
d3_selection_enterPrototype.append = d3_selectionPrototype.append;
d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
d3_selection_enterPrototype.node = d3_selectionPrototype.node;
d3_selection_enterPrototype.call = d3_selectionPrototype.call;
d3_selection_enterPrototype.size = d3_selectionPrototype.size;
d3_selection_enterPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, upgroup, group, node;
for (var j = -1, m = this.length; ++j < m; ) {
upgroup = (group = this[j]).update;
subgroups.push(subgroup = []);
subgroup.parentNode = group.parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));
subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
d3_selection_enterPrototype.insert = function(name, before) {
if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);
return d3_selectionPrototype.insert.call(this, name, before);
};
function d3_selection_enterInsertBefore(enter) {
var i0, j0;
return function(d, i, j) {
var group = enter[j].update, n = group.length, node;
if (j != j0) j0 = j, i0 = 0;
if (i >= i0) i0 = i + 1;
while (!(node = group[i0]) && ++i0 < n) ;
return node;
};
}
d3.select = function(node) {
var group;
if (typeof node === "string") {
group = [ d3_select(node, d3_document) ];
group.parentNode = d3_document.documentElement;
} else {
group = [ node ];
group.parentNode = d3_documentElement(node);
}
return d3_selection([ group ]);
};
d3.selectAll = function(nodes) {
var group;
if (typeof nodes === "string") {
group = d3_array(d3_selectAll(nodes, d3_document));
group.parentNode = d3_document.documentElement;
} else {
group = d3_array(nodes);
group.parentNode = null;
}
return d3_selection([ group ]);
};
d3_selectionPrototype.on = function(type, listener, capture) {
var n = arguments.length;
if (n < 3) {
if (typeof type !== "string") {
if (n < 2) listener = false;
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
return this;
}
if (n < 2) return (n = this.node()["__on" + type]) && n._;
capture = false;
}
return this.each(d3_selection_on(type, listener, capture));
};
function d3_selection_on(type, listener, capture) {
var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
if (i > 0) type = type.slice(0, i);
var filter = d3_selection_onFilters.get(type);
if (filter) type = filter, wrap = d3_selection_onFilter;
function onRemove() {
var l = this[name];
if (l) {
this.removeEventListener(type, l, l.$);
delete this[name];
}
}
function onAdd() {
var l = wrap(listener, d3_array(arguments));
onRemove.call(this);
this.addEventListener(type, this[name] = l, l.$ = capture);
l._ = listener;
}
function removeAll() {
var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match;
for (var name in this) {
if (match = name.match(re)) {
var l = this[name];
this.removeEventListener(match[1], l, l.$);
delete this[name];
}
}
}
return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
}
var d3_selection_onFilters = d3.map({
mouseenter: "mouseover",
mouseleave: "mouseout"
});
if (d3_document) {
d3_selection_onFilters.forEach(function(k) {
if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
});
}
function d3_selection_onListener(listener, argumentz) {
return function(e) {
var o = d3.event;
d3.event = e;
argumentz[0] = this.__data__;
try {
listener.apply(this, argumentz);
} finally {
d3.event = o;
}
};
}
function d3_selection_onFilter(listener, argumentz) {
var l = d3_selection_onListener(listener, argumentz);
return function(e) {
var target = this, related = e.relatedTarget;
if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {
l.call(target, e);
}
};
}
var d3_event_dragSelect, d3_event_dragId = 0;
function d3_event_dragSuppress(node) {
var name = ".dragsuppress-" + ++d3_event_dragId, click = "click" + name, w = d3.select(d3_window(node)).on("touchmove" + name, d3_eventPreventDefault).on("dragstart" + name, d3_eventPreventDefault).on("selectstart" + name, d3_eventPreventDefault);
if (d3_event_dragSelect == null) {
d3_event_dragSelect = "onselectstart" in node ? false : d3_vendorSymbol(node.style, "userSelect");
}
if (d3_event_dragSelect) {
var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];
style[d3_event_dragSelect] = "none";
}
return function(suppressClick) {
w.on(name, null);
if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
if (suppressClick) {
var off = function() {
w.on(click, null);
};
w.on(click, function() {
d3_eventPreventDefault();
off();
}, true);
setTimeout(off, 0);
}
};
}
d3.mouse = function(container) {
return d3_mousePoint(container, d3_eventSource());
};
var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
function d3_mousePoint(container, e) {
if (e.changedTouches) e = e.changedTouches[0];
var svg = container.ownerSVGElement || container;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
if (d3_mouse_bug44083 < 0) {
var window = d3_window(container);
if (window.scrollX || window.scrollY) {
svg = d3.select("body").append("svg").style({
position: "absolute",
top: 0,
left: 0,
margin: 0,
padding: 0,
border: "none"
}, "important");
var ctm = svg[0][0].getScreenCTM();
d3_mouse_bug44083 = !(ctm.f || ctm.e);
svg.remove();
}
}
if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX,
point.y = e.clientY;
point = point.matrixTransform(container.getScreenCTM().inverse());
return [ point.x, point.y ];
}
var rect = container.getBoundingClientRect();
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
}
d3.touch = function(container, touches, identifier) {
if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
if ((touch = touches[i]).identifier === identifier) {
return d3_mousePoint(container, touch);
}
}
};
d3.behavior.drag = function() {
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, "touchmove", "touchend");
function drag() {
this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart);
}
function dragstart(id, position, subject, move, end) {
return function() {
var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);
if (origin) {
dragOffset = origin.apply(that, arguments);
dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];
} else {
dragOffset = [ 0, 0 ];
}
dispatch({
type: "dragstart"
});
function moved() {
var position1 = position(parent, dragId), dx, dy;
if (!position1) return;
dx = position1[0] - position0[0];
dy = position1[1] - position0[1];
dragged |= dx | dy;
position0 = position1;
dispatch({
type: "drag",
x: position1[0] + dragOffset[0],
y: position1[1] + dragOffset[1],
dx: dx,
dy: dy
});
}
function ended() {
if (!position(parent, dragId)) return;
dragSubject.on(move + dragName, null).on(end + dragName, null);
dragRestore(dragged);
dispatch({
type: "dragend"
});
}
};
}
drag.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return drag;
};
return d3.rebind(drag, event, "on");
};
function d3_behavior_dragTouchId() {
return d3.event.changedTouches[0].identifier;
}
d3.touches = function(container, touches) {
if (arguments.length < 2) touches = d3_eventSource().touches;
return touches ? d3_array(touches).map(function(touch) {
var point = d3_mousePoint(container, touch);
point.identifier = touch.identifier;
return point;
}) : [];
};
var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;
function d3_sgn(x) {
return x > 0 ? 1 : x < 0 ? -1 : 0;
}
function d3_cross2d(a, b, c) {
return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
}
function d3_acos(x) {
return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
}
function d3_asin(x) {
return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);
}
function d3_sinh(x) {
return ((x = Math.exp(x)) - 1 / x) / 2;
}
function d3_cosh(x) {
return ((x = Math.exp(x)) + 1 / x) / 2;
}
function d3_tanh(x) {
return ((x = Math.exp(2 * x)) - 1) / (x + 1);
}
function d3_haversin(x) {
return (x = Math.sin(x / 2)) * x;
}
var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;
d3.interpolateZoom = function(p0, p1) {
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;
if (d2 < ε2) {
S = Math.log(w1 / w0) / ρ;
i = function(t) {
return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];
};
} else {
var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
S = (r1 - r0) / ρ;
i = function(t) {
var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];
};
}
i.duration = S * 1e3;
return i;
};
d3.behavior.zoom = function() {
var view = {
x: 0,
y: 0,
k: 1
}, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1;
if (!d3_behavior_zoomWheel) {
d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() {
return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);
}, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() {
return d3.event.wheelDelta;
}, "mousewheel") : (d3_behavior_zoomDelta = function() {
return -d3.event.detail;
}, "MozMousePixelScroll");
}
function zoom(g) {
g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
}
zoom.event = function(g) {
g.each(function() {
var dispatch = event.of(this, arguments), view1 = view;
if (d3_transitionInheritId) {
d3.select(this).transition().each("start.zoom", function() {
view = this.__chart__ || {
x: 0,
y: 0,
k: 1
};
zoomstarted(dispatch);
}).tween("zoom:zoom", function() {
var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);
return function(t) {
var l = i(t), k = dx / l[2];
this.__chart__ = view = {
x: cx - l[0] * k,
y: cy - l[1] * k,
k: k
};
zoomed(dispatch);
};
}).each("interrupt.zoom", function() {
zoomended(dispatch);
}).each("end.zoom", function() {
zoomended(dispatch);
});
} else {
this.__chart__ = view;
zoomstarted(dispatch);
zoomed(dispatch);
zoomended(dispatch);
}
});
};
zoom.translate = function(_) {
if (!arguments.length) return [ view.x, view.y ];
view = {
x: +_[0],
y: +_[1],
k: view.k
};
rescale();
return zoom;
};
zoom.scale = function(_) {
if (!arguments.length) return view.k;
view = {
x: view.x,
y: view.y,
k: null
};
scaleTo(+_);
rescale();
return zoom;
};
zoom.scaleExtent = function(_) {
if (!arguments.length) return scaleExtent;
scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];
return zoom;
};
zoom.center = function(_) {
if (!arguments.length) return center;
center = _ && [ +_[0], +_[1] ];
return zoom;
};
zoom.size = function(_) {
if (!arguments.length) return size;
size = _ && [ +_[0], +_[1] ];
return zoom;
};
zoom.duration = function(_) {
if (!arguments.length) return duration;
duration = +_;
return zoom;
};
zoom.x = function(z) {
if (!arguments.length) return x1;
x1 = z;
x0 = z.copy();
view = {
x: 0,
y: 0,
k: 1
};
return zoom;
};
zoom.y = function(z) {
if (!arguments.length) return y1;
y1 = z;
y0 = z.copy();
view = {
x: 0,
y: 0,
k: 1
};
return zoom;
};
function location(p) {
return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];
}
function point(l) {
return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];
}
function scaleTo(s) {
view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
}
function translateTo(p, l) {
l = point(l);
view.x += p[0] - l[0];
view.y += p[1] - l[1];
}
function zoomTo(that, p, l, k) {
that.__chart__ = {
x: view.x,
y: view.y,
k: view.k
};
scaleTo(Math.pow(2, k));
translateTo(center0 = p, l);
that = d3.select(that);
if (duration > 0) that = that.transition().duration(duration);
that.call(zoom.event);
}
function rescale() {
if (x1) x1.domain(x0.range().map(function(x) {
return (x - view.x) / view.k;
}).map(x0.invert));
if (y1) y1.domain(y0.range().map(function(y) {
return (y - view.y) / view.k;
}).map(y0.invert));
}
function zoomstarted(dispatch) {
if (!zooming++) dispatch({
type: "zoomstart"
});
}
function zoomed(dispatch) {
rescale();
dispatch({
type: "zoom",
scale: view.k,
translate: [ view.x, view.y ]
});
}
function zoomended(dispatch) {
if (!--zooming) dispatch({
type: "zoomend"
}), center0 = null;
}
function mousedowned() {
var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);
d3_selection_interrupt.call(that);
zoomstarted(dispatch);
function moved() {
dragged = 1;
translateTo(d3.mouse(that), location0);
zoomed(dispatch);
}
function ended() {
subject.on(mousemove, null).on(mouseup, null);
dragRestore(dragged);
zoomended(dispatch);
}
}
function touchstarted() {
var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);
started();
zoomstarted(dispatch);
subject.on(mousedown, null).on(touchstart, started);
function relocate() {
var touches = d3.touches(that);
scale0 = view.k;
touches.forEach(function(t) {
if (t.identifier in locations0) locations0[t.identifier] = location(t);
});
return touches;
}
function started() {
var target = d3.event.target;
d3.select(target).on(touchmove, moved).on(touchend, ended);
targets.push(target);
var changed = d3.event.changedTouches;
for (var i = 0, n = changed.length; i < n; ++i) {
locations0[changed[i].identifier] = null;
}
var touches = relocate(), now = Date.now();
if (touches.length === 1) {
if (now - touchtime < 500) {
var p = touches[0];
zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
d3_eventPreventDefault();
}
touchtime = now;
} else if (touches.length > 1) {
var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];
distance0 = dx * dx + dy * dy;
}
}
function moved() {
var touches = d3.touches(that), p0, l0, p1, l1;
d3_selection_interrupt.call(that);
for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
p1 = touches[i];
if (l1 = locations0[p1.identifier]) {
if (l0) break;
p0 = p1, l0 = l1;
}
}
if (l1) {
var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);
p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
scaleTo(scale1 * scale0);
}
touchtime = null;
translateTo(p0, l0);
zoomed(dispatch);
}
function ended() {
if (d3.event.touches.length) {
var changed = d3.event.changedTouches;
for (var i = 0, n = changed.length; i < n; ++i) {
delete locations0[changed[i].identifier];
}
for (var identifier in locations0) {
return void relocate();
}
}
d3.selectAll(targets).on(zoomName, null);
subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
dragRestore();
zoomended(dispatch);
}
}
function mousewheeled() {
var dispatch = event.of(this, arguments);
if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this),
translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);
mousewheelTimer = setTimeout(function() {
mousewheelTimer = null;
zoomended(dispatch);
}, 50);
d3_eventPreventDefault();
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
translateTo(center0, translate0);
zoomed(dispatch);
}
function dblclicked() {
var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;
zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
}
return d3.rebind(zoom, event, "on");
};
var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;
d3.color = d3_color;
function d3_color() {}
d3_color.prototype.toString = function() {
return this.rgb() + "";
};
d3.hsl = d3_hsl;
function d3_hsl(h, s, l) {
return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);
}
var d3_hslPrototype = d3_hsl.prototype = new d3_color();
d3_hslPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return new d3_hsl(this.h, this.s, this.l / k);
};
d3_hslPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return new d3_hsl(this.h, this.s, k * this.l);
};
d3_hslPrototype.rgb = function() {
return d3_hsl_rgb(this.h, this.s, this.l);
};
function d3_hsl_rgb(h, s, l) {
var m1, m2;
h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
l = l < 0 ? 0 : l > 1 ? 1 : l;
m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
m1 = 2 * l - m2;
function v(h) {
if (h > 360) h -= 360; else if (h < 0) h += 360;
if (h < 60) return m1 + (m2 - m1) * h / 60;
if (h < 180) return m2;
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
return m1;
}
function vv(h) {
return Math.round(v(h) * 255);
}
return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
d3.hcl = d3_hcl;
function d3_hcl(h, c, l) {
return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);
}
var d3_hclPrototype = d3_hcl.prototype = new d3_color();
d3_hclPrototype.brighter = function(k) {
return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.darker = function(k) {
return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.rgb = function() {
return d3_hcl_lab(this.h, this.c, this.l).rgb();
};
function d3_hcl_lab(h, c, l) {
if (isNaN(h)) h = 0;
if (isNaN(c)) c = 0;
return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
}
d3.lab = d3_lab;
function d3_lab(l, a, b) {
return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);
}
var d3_lab_K = 18;
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
var d3_labPrototype = d3_lab.prototype = new d3_color();
d3_labPrototype.brighter = function(k) {
return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.darker = function(k) {
return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.rgb = function() {
return d3_lab_rgb(this.l, this.a, this.b);
};
function d3_lab_rgb(l, a, b) {
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
x = d3_lab_xyz(x) * d3_lab_X;
y = d3_lab_xyz(y) * d3_lab_Y;
z = d3_lab_xyz(z) * d3_lab_Z;
return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
}
function d3_lab_hcl(l, a, b) {
return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);
}
function d3_lab_xyz(x) {
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
}
function d3_xyz_lab(x) {
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
}
function d3_xyz_rgb(r) {
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
}
d3.rgb = d3_rgb;
function d3_rgb(r, g, b) {
return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);
}
function d3_rgbNumber(value) {
return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);
}
function d3_rgbString(value) {
return d3_rgbNumber(value) + "";
}
var d3_rgbPrototype = d3_rgb.prototype = new d3_color();
d3_rgbPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
var r = this.r, g = this.g, b = this.b, i = 30;
if (!r && !g && !b) return new d3_rgb(i, i, i);
if (r && r < i) r = i;
if (g && g < i) g = i;
if (b && b < i) b = i;
return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
};
d3_rgbPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return new d3_rgb(k * this.r, k * this.g, k * this.b);
};
d3_rgbPrototype.hsl = function() {
return d3_rgb_hsl(this.r, this.g, this.b);
};
d3_rgbPrototype.toString = function() {
return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
};
function d3_rgb_hex(v) {
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
}
function d3_rgb_parse(format, rgb, hsl) {
var r = 0, g = 0, b = 0, m1, m2, color;
m1 = /([a-z]+)\((.*)\)/.exec(format = format.toLowerCase());
if (m1) {
m2 = m1[2].split(",");
switch (m1[1]) {
case "hsl":
{
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
}
case "rgb":
{
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
}
}
}
if (color = d3_rgb_names.get(format)) {
return rgb(color.r, color.g, color.b);
}
if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
if (format.length === 4) {
r = (color & 3840) >> 4;
r = r >> 4 | r;
g = color & 240;
g = g >> 4 | g;
b = color & 15;
b = b << 4 | b;
} else if (format.length === 7) {
r = (color & 16711680) >> 16;
g = (color & 65280) >> 8;
b = color & 255;
}
}
return rgb(r, g, b);
}
function d3_rgb_hsl(r, g, b) {
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
if (d) {
s = l < .5 ? d / (max + min) : d / (2 - max - min);
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
h *= 60;
} else {
h = NaN;
s = l > 0 && l < 1 ? 0 : h;
}
return new d3_hsl(h, s, l);
}
function d3_rgb_lab(r, g, b) {
r = d3_rgb_xyz(r);
g = d3_rgb_xyz(g);
b = d3_rgb_xyz(b);
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
}
function d3_rgb_xyz(r) {
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
}
function d3_rgb_parseNumber(c) {
var f = parseFloat(c);
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
}
var d3_rgb_names = d3.map({
aliceblue: 15792383,
antiquewhite: 16444375,
aqua: 65535,
aquamarine: 8388564,
azure: 15794175,
beige: 16119260,
bisque: 16770244,
black: 0,
blanchedalmond: 16772045,
blue: 255,
blueviolet: 9055202,
brown: 10824234,
burlywood: 14596231,
cadetblue: 6266528,
chartreuse: 8388352,
chocolate: 13789470,
coral: 16744272,
cornflowerblue: 6591981,
cornsilk: 16775388,
crimson: 14423100,
cyan: 65535,
darkblue: 139,
darkcyan: 35723,
darkgoldenrod: 12092939,
darkgray: 11119017,
darkgreen: 25600,
darkgrey: 11119017,
darkkhaki: 12433259,
darkmagenta: 9109643,
darkolivegreen: 5597999,
darkorange: 16747520,
darkorchid: 10040012,
darkred: 9109504,
darksalmon: 15308410,
darkseagreen: 9419919,
darkslateblue: 4734347,
darkslategray: 3100495,
darkslategrey: 3100495,
darkturquoise: 52945,
darkviolet: 9699539,
deeppink: 16716947,
deepskyblue: 49151,
dimgray: 6908265,
dimgrey: 6908265,
dodgerblue: 2003199,
firebrick: 11674146,
floralwhite: 16775920,
forestgreen: 2263842,
fuchsia: 16711935,
gainsboro: 14474460,
ghostwhite: 16316671,
gold: 16766720,
goldenrod: 14329120,
gray: 8421504,
green: 32768,
greenyellow: 11403055,
grey: 8421504,
honeydew: 15794160,
hotpink: 16738740,
indianred: 13458524,
indigo: 4915330,
ivory: 16777200,
khaki: 15787660,
lavender: 15132410,
lavenderblush: 16773365,
lawngreen: 8190976,
lemonchiffon: 16775885,
lightblue: 11393254,
lightcoral: 15761536,
lightcyan: 14745599,
lightgoldenrodyellow: 16448210,
lightgray: 13882323,
lightgreen: 9498256,
lightgrey: 13882323,
lightpink: 16758465,
lightsalmon: 16752762,
lightseagreen: 2142890,
lightskyblue: 8900346,
lightslategray: 7833753,
lightslategrey: 7833753,
lightsteelblue: 11584734,
lightyellow: 16777184,
lime: 65280,
limegreen: 3329330,
linen: 16445670,
magenta: 16711935,
maroon: 8388608,
mediumaquamarine: 6737322,
mediumblue: 205,
mediumorchid: 12211667,
mediumpurple: 9662683,
mediumseagreen: 3978097,
mediumslateblue: 8087790,
mediumspringgreen: 64154,
mediumturquoise: 4772300,
mediumvioletred: 13047173,
midnightblue: 1644912,
mintcream: 16121850,
mistyrose: 16770273,
moccasin: 16770229,
navajowhite: 16768685,
navy: 128,
oldlace: 16643558,
olive: 8421376,
olivedrab: 7048739,
orange: 16753920,
orangered: 16729344,
orchid: 14315734,
palegoldenrod: 15657130,
palegreen: 10025880,
paleturquoise: 11529966,
palevioletred: 14381203,
papayawhip: 16773077,
peachpuff: 16767673,
peru: 13468991,
pink: 16761035,
plum: 14524637,
powderblue: 11591910,
purple: 8388736,
rebeccapurple: 6697881,
red: 16711680,
rosybrown: 12357519,
royalblue: 4286945,
saddlebrown: 9127187,
salmon: 16416882,
sandybrown: 16032864,
seagreen: 3050327,
seashell: 16774638,
sienna: 10506797,
silver: 12632256,
skyblue: 8900331,
slateblue: 6970061,
slategray: 7372944,
slategrey: 7372944,
snow: 16775930,
springgreen: 65407,
steelblue: 4620980,
tan: 13808780,
teal: 32896,
thistle: 14204888,
tomato: 16737095,
turquoise: 4251856,
violet: 15631086,
wheat: 16113331,
white: 16777215,
whitesmoke: 16119285,
yellow: 16776960,
yellowgreen: 10145074
});
d3_rgb_names.forEach(function(key, value) {
d3_rgb_names.set(key, d3_rgbNumber(value));
});
function d3_functor(v) {
return typeof v === "function" ? v : function() {
return v;
};
}
d3.functor = d3_functor;
d3.xhr = d3_xhrType(d3_identity);
function d3_xhrType(response) {
return function(url, mimeType, callback) {
if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType,
mimeType = null;
return d3_xhr(url, mimeType, response, callback);
};
}
function d3_xhr(url, mimeType, response, callback) {
var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null;
if (this.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest();
"onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
request.readyState > 3 && respond();
};
function respond() {
var status = request.status, result;
if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
try {
result = response.call(xhr, request);
} catch (e) {
dispatch.error.call(xhr, e);
return;
}
dispatch.load.call(xhr, result);
} else {
dispatch.error.call(xhr, request);
}
}
request.onprogress = function(event) {
var o = d3.event;
d3.event = event;
try {
dispatch.progress.call(xhr, request);
} finally {
d3.event = o;
}
};
xhr.header = function(name, value) {
name = (name + "").toLowerCase();
if (arguments.length < 2) return headers[name];
if (value == null) delete headers[name]; else headers[name] = value + "";
return xhr;
};
xhr.mimeType = function(value) {
if (!arguments.length) return mimeType;
mimeType = value == null ? null : value + "";
return xhr;
};
xhr.responseType = function(value) {
if (!arguments.length) return responseType;
responseType = value;
return xhr;
};
xhr.response = function(value) {
response = value;
return xhr;
};
[ "get", "post" ].forEach(function(method) {
xhr[method] = function() {
return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));
};
});
xhr.send = function(method, data, callback) {
if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
request.open(method, url, true);
if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
if (responseType != null) request.responseType = responseType;
if (callback != null) xhr.on("error", callback).on("load", function(request) {
callback(null, request);
});
dispatch.beforesend.call(xhr, request);
request.send(data == null ? null : data);
return xhr;
};
xhr.abort = function() {
request.abort();
return xhr;
};
d3.rebind(xhr, dispatch, "on");
return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
}
function d3_xhr_fixCallback(callback) {
return callback.length === 1 ? function(error, request) {
callback(error == null ? request : null);
} : callback;
}
function d3_xhrHasResponse(request) {
var type = request.responseType;
return type && type !== "text" ? request.response : request.responseText;
}
d3.dsv = function(delimiter, mimeType) {
var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
function dsv(url, row, callback) {
if (arguments.length < 3) callback = row, row = null;
var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);
xhr.row = function(_) {
return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;
};
return xhr;
}
function response(request) {
return dsv.parse(request.responseText);
}
function typedResponse(f) {
return function(request) {
return dsv.parse(request.responseText, f);
};
}
dsv.parse = function(text, f) {
var o;
return dsv.parseRows(text, function(row, i) {
if (o) return o(row, i - 1);
var a = new Function("d", "return {" + row.map(function(name, i) {
return JSON.stringify(name) + ": d[" + i + "]";
}).join(",") + "}");
o = f ? function(row, i) {
return f(a(row), i);
} : a;
});
};
dsv.parseRows = function(text, f) {
var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;
function token() {
if (I >= N) return EOF;
if (eol) return eol = false, EOL;
var j = I;
if (text.charCodeAt(j) === 34) {
var i = j;
while (i++ < N) {
if (text.charCodeAt(i) === 34) {
if (text.charCodeAt(i + 1) !== 34) break;
++i;
}
}
I = i + 2;
var c = text.charCodeAt(i + 1);
if (c === 13) {
eol = true;
if (text.charCodeAt(i + 2) === 10) ++I;
} else if (c === 10) {
eol = true;
}
return text.slice(j + 1, i).replace(/""/g, '"');
}
while (I < N) {
var c = text.charCodeAt(I++), k = 1;
if (c === 10) eol = true; else if (c === 13) {
eol = true;
if (text.charCodeAt(I) === 10) ++I, ++k;
} else if (c !== delimiterCode) continue;
return text.slice(j, I - k);
}
return text.slice(j);
}
while ((t = token()) !== EOF) {
var a = [];
while (t !== EOL && t !== EOF) {
a.push(t);
t = token();
}
if (f && (a = f(a, n++)) == null) continue;
rows.push(a);
}
return rows;
};
dsv.format = function(rows) {
if (Array.isArray(rows[0])) return dsv.formatRows(rows);
var fieldSet = new d3_Set(), fields = [];
rows.forEach(function(row) {
for (var field in row) {
if (!fieldSet.has(field)) {
fields.push(fieldSet.add(field));
}
}
});
return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {
return fields.map(function(field) {
return formatValue(row[field]);
}).join(delimiter);
})).join("\n");
};
dsv.formatRows = function(rows) {
return rows.map(formatRow).join("\n");
};
function formatRow(row) {
return row.map(formatValue).join(delimiter);
}
function formatValue(text) {
return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
}
return dsv;
};
d3.csv = d3.dsv(",", "text/csv");
d3.tsv = d3.dsv(" ", "text/tab-separated-values");
var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) {
setTimeout(callback, 17);
};
d3.timer = function() {
d3_timer.apply(this, arguments);
};
function d3_timer(callback, delay, then) {
var n = arguments.length;
if (n < 2) delay = 0;
if (n < 3) then = Date.now();
var time = then + delay, timer = {
c: callback,
t: time,
n: null
};
if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;
d3_timer_queueTail = timer;
if (!d3_timer_interval) {
d3_timer_timeout = clearTimeout(d3_timer_timeout);
d3_timer_interval = 1;
d3_timer_frame(d3_timer_step);
}
return timer;
}
function d3_timer_step() {
var now = d3_timer_mark(), delay = d3_timer_sweep() - now;
if (delay > 24) {
if (isFinite(delay)) {
clearTimeout(d3_timer_timeout);
d3_timer_timeout = setTimeout(d3_timer_step, delay);
}
d3_timer_interval = 0;
} else {
d3_timer_interval = 1;
d3_timer_frame(d3_timer_step);
}
}
d3.timer.flush = function() {
d3_timer_mark();
d3_timer_sweep();
};
function d3_timer_mark() {
var now = Date.now(), timer = d3_timer_queueHead;
while (timer) {
if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;
timer = timer.n;
}
return now;
}
function d3_timer_sweep() {
var t0, t1 = d3_timer_queueHead, time = Infinity;
while (t1) {
if (t1.c) {
if (t1.t < time) time = t1.t;
t1 = (t0 = t1).n;
} else {
t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
}
}
d3_timer_queueTail = t0;
return time;
}
function d3_format_precision(x, p) {
return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
}
d3.round = function(x, n) {
return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
};
var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
d3.formatPrefix = function(value, precision) {
var i = 0;
if (value = +value) {
if (value < 0) value *= -1;
if (precision) value = d3.round(value, d3_format_precision(value, precision));
i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));
}
return d3_formatPrefixes[8 + i / 3];
};
function d3_formatPrefix(d, i) {
var k = Math.pow(10, abs(8 - i) * 3);
return {
scale: i > 8 ? function(d) {
return d / k;
} : function(d) {
return d * k;
},
symbol: d
};
}
function d3_locale_numberFormat(locale) {
var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {
var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;
while (i > 0 && g > 0) {
if (length + g + 1 > width) g = Math.max(1, width - length);
t.push(value.substring(i -= g, i + g));
if ((length += g + 1) > width) break;
g = locale_grouping[j = (j + 1) % locale_grouping.length];
}
return t.reverse().join(locale_thousands);
} : d3_identity;
return function(specifier) {
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "-", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = "", suffix = "", integer = false, exponent = true;
if (precision) precision = +precision.substring(1);
if (zfill || fill === "0" && align === "=") {
zfill = fill = "0";
align = "=";
}
switch (type) {
case "n":
comma = true;
type = "g";
break;
case "%":
scale = 100;
suffix = "%";
type = "f";
break;
case "p":
scale = 100;
suffix = "%";
type = "r";
break;
case "b":
case "o":
case "x":
case "X":
if (symbol === "#") prefix = "0" + type.toLowerCase();
case "c":
exponent = false;
case "d":
integer = true;
precision = 0;
break;
case "s":
scale = -1;
type = "r";
break;
}
if (symbol === "$") prefix = locale_currency[0], suffix = locale_currency[1];
if (type == "r" && !precision) type = "g";
if (precision != null) {
if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision));
}
type = d3_format_types.get(type) || d3_format_typeDefault;
var zcomma = zfill && comma;
return function(value) {
var fullSuffix = suffix;
if (integer && value % 1) return "";
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign === "-" ? "" : sign;
if (scale < 0) {
var unit = d3.formatPrefix(value, precision);
value = unit.scale(value);
fullSuffix = unit.symbol + suffix;
} else {
value *= scale;
}
value = type(value, precision);
var i = value.lastIndexOf("."), before, after;
if (i < 0) {
var j = exponent ? value.lastIndexOf("e") : -1;
if (j < 0) before = value, after = ""; else before = value.substring(0, j), after = value.substring(j);
} else {
before = value.substring(0, i);
after = locale_decimal + value.substring(i + 1);
}
if (!zfill && comma) before = formatGroup(before, Infinity);
var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);
negative += prefix;
value = before + after;
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;
};
};
}
var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i;
var d3_format_types = d3.map({
b: function(x) {
return x.toString(2);
},
c: function(x) {
return String.fromCharCode(x);
},
o: function(x) {
return x.toString(8);
},
x: function(x) {
return x.toString(16);
},
X: function(x) {
return x.toString(16).toUpperCase();
},
g: function(x, p) {
return x.toPrecision(p);
},
e: function(x, p) {
return x.toExponential(p);
},
f: function(x, p) {
return x.toFixed(p);
},
r: function(x, p) {
return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));
}
});
function d3_format_typeDefault(x) {
return x + "";
}
var d3_time = d3.time = {}, d3_date = Date;
function d3_date_utc() {
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
}
d3_date_utc.prototype = {
getDate: function() {
return this._.getUTCDate();
},
getDay: function() {
return this._.getUTCDay();
},
getFullYear: function() {
return this._.getUTCFullYear();
},
getHours: function() {
return this._.getUTCHours();
},
getMilliseconds: function() {
return this._.getUTCMilliseconds();
},
getMinutes: function() {
return this._.getUTCMinutes();
},
getMonth: function() {
return this._.getUTCMonth();
},
getSeconds: function() {
return this._.getUTCSeconds();
},
getTime: function() {
return this._.getTime();
},
getTimezoneOffset: function() {
return 0;
},
valueOf: function() {
return this._.valueOf();
},
setDate: function() {
d3_time_prototype.setUTCDate.apply(this._, arguments);
},
setDay: function() {
d3_time_prototype.setUTCDay.apply(this._, arguments);
},
setFullYear: function() {
d3_time_prototype.setUTCFullYear.apply(this._, arguments);
},
setHours: function() {
d3_time_prototype.setUTCHours.apply(this._, arguments);
},
setMilliseconds: function() {
d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);
},
setMinutes: function() {
d3_time_prototype.setUTCMinutes.apply(this._, arguments);
},
setMonth: function() {
d3_time_prototype.setUTCMonth.apply(this._, arguments);
},
setSeconds: function() {
d3_time_prototype.setUTCSeconds.apply(this._, arguments);
},
setTime: function() {
d3_time_prototype.setTime.apply(this._, arguments);
}
};
var d3_time_prototype = Date.prototype;
function d3_time_interval(local, step, number) {
function round(date) {
var d0 = local(date), d1 = offset(d0, 1);
return date - d0 < d1 - date ? d0 : d1;
}
function ceil(date) {
step(date = local(new d3_date(date - 1)), 1);
return date;
}
function offset(date, k) {
step(date = new d3_date(+date), k);
return date;
}
function range(t0, t1, dt) {
var time = ceil(t0), times = [];
if (dt > 1) {
while (time < t1) {
if (!(number(time) % dt)) times.push(new Date(+time));
step(time, 1);
}
} else {
while (time < t1) times.push(new Date(+time)), step(time, 1);
}
return times;
}
function range_utc(t0, t1, dt) {
try {
d3_date = d3_date_utc;
var utc = new d3_date_utc();
utc._ = t0;
return range(utc, t1, dt);
} finally {
d3_date = Date;
}
}
local.floor = local;
local.round = round;
local.ceil = ceil;
local.offset = offset;
local.range = range;
var utc = local.utc = d3_time_interval_utc(local);
utc.floor = utc;
utc.round = d3_time_interval_utc(round);
utc.ceil = d3_time_interval_utc(ceil);
utc.offset = d3_time_interval_utc(offset);
utc.range = range_utc;
return local;
}
function d3_time_interval_utc(method) {
return function(date, k) {
try {
d3_date = d3_date_utc;
var utc = new d3_date_utc();
utc._ = date;
return method(utc, k)._;
} finally {
d3_date = Date;
}
};
}
d3_time.year = d3_time_interval(function(date) {
date = d3_time.day(date);
date.setMonth(0, 1);
return date;
}, function(date, offset) {
date.setFullYear(date.getFullYear() + offset);
}, function(date) {
return date.getFullYear();
});
d3_time.years = d3_time.year.range;
d3_time.years.utc = d3_time.year.utc.range;
d3_time.day = d3_time_interval(function(date) {
var day = new d3_date(2e3, 0);
day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
return day;
}, function(date, offset) {
date.setDate(date.getDate() + offset);
}, function(date) {
return date.getDate() - 1;
});
d3_time.days = d3_time.day.range;
d3_time.days.utc = d3_time.day.utc.range;
d3_time.dayOfYear = function(date) {
var year = d3_time.year(date);
return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
};
[ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ].forEach(function(day, i) {
i = 7 - i;
var interval = d3_time[day] = d3_time_interval(function(date) {
(date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
return date;
}, function(date, offset) {
date.setDate(date.getDate() + Math.floor(offset) * 7);
}, function(date) {
var day = d3_time.year(date).getDay();
return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
});
d3_time[day + "s"] = interval.range;
d3_time[day + "s"].utc = interval.utc.range;
d3_time[day + "OfYear"] = function(date) {
var day = d3_time.year(date).getDay();
return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);
};
});
d3_time.week = d3_time.sunday;
d3_time.weeks = d3_time.sunday.range;
d3_time.weeks.utc = d3_time.sunday.utc.range;
d3_time.weekOfYear = d3_time.sundayOfYear;
function d3_locale_timeFormat(locale) {
var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;
function d3_time_format(template) {
var n = template.length;
function format(date) {
var string = [], i = -1, j = 0, c, p, f;
while (++i < n) {
if (template.charCodeAt(i) === 37) {
string.push(template.slice(j, i));
if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);
if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p);
string.push(c);
j = i + 1;
}
}
string.push(template.slice(j, i));
return string.join("");
}
format.parse = function(string) {
var d = {
y: 1900,
m: 0,
d: 1,
H: 0,
M: 0,
S: 0,
L: 0,
Z: null
}, i = d3_time_parse(d, template, string, 0);
if (i != string.length) return null;
if ("p" in d) d.H = d.H % 12 + d.p * 12;
var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();
if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("W" in d || "U" in d) {
if (!("w" in d)) d.w = "W" in d ? 1 : 0;
date.setFullYear(d.y, 0, 1);
date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
} else date.setFullYear(d.y, d.m, d.d);
date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);
return localZ ? date._ : date;
};
format.toString = function() {
return template;
};
return format;
}
function d3_time_parse(date, template, string, j) {
var c, p, t, i = 0, n = template.length, m = string.length;
while (i < n) {
if (j >= m) return -1;
c = template.charCodeAt(i++);
if (c === 37) {
t = template.charAt(i++);
p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];
if (!p || (j = p(date, string, j)) < 0) return -1;
} else if (c != string.charCodeAt(j++)) {
return -1;
}
}
return j;
}
d3_time_format.utc = function(template) {
var local = d3_time_format(template);
function format(date) {
try {
d3_date = d3_date_utc;
var utc = new d3_date();
utc._ = date;
return local(utc);
} finally {
d3_date = Date;
}
}
format.parse = function(string) {
try {
d3_date = d3_date_utc;
var date = local.parse(string);
return date && date._;
} finally {
d3_date = Date;
}
};
format.toString = local.toString;
return format;
};
d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;
var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);
locale_periods.forEach(function(p, i) {
d3_time_periodLookup.set(p.toLowerCase(), i);
});
var d3_time_formats = {
a: function(d) {
return locale_shortDays[d.getDay()];
},
A: function(d) {
return locale_days[d.getDay()];
},
b: function(d) {
return locale_shortMonths[d.getMonth()];
},
B: function(d) {
return locale_months[d.getMonth()];
},
c: d3_time_format(locale_dateTime),
d: function(d, p) {
return d3_time_formatPad(d.getDate(), p, 2);
},
e: function(d, p) {
return d3_time_formatPad(d.getDate(), p, 2);
},
H: function(d, p) {
return d3_time_formatPad(d.getHours(), p, 2);
},
I: function(d, p) {
return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);
},
j: function(d, p) {
return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);
},
L: function(d, p) {
return d3_time_formatPad(d.getMilliseconds(), p, 3);
},
m: function(d, p) {
return d3_time_formatPad(d.getMonth() + 1, p, 2);
},
M: function(d, p) {
return d3_time_formatPad(d.getMinutes(), p, 2);
},
p: function(d) {
return locale_periods[+(d.getHours() >= 12)];
},
S: function(d, p) {
return d3_time_formatPad(d.getSeconds(), p, 2);
},
U: function(d, p) {
return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);
},
w: function(d) {
return d.getDay();
},
W: function(d, p) {
return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);
},
x: d3_time_format(locale_date),
X: d3_time_format(locale_time),
y: function(d, p) {
return d3_time_formatPad(d.getFullYear() % 100, p, 2);
},
Y: function(d, p) {
return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);
},
Z: d3_time_zone,
"%": function() {
return "%";
}
};
var d3_time_parsers = {
a: d3_time_parseWeekdayAbbrev,
A: d3_time_parseWeekday,
b: d3_time_parseMonthAbbrev,
B: d3_time_parseMonth,
c: d3_time_parseLocaleFull,
d: d3_time_parseDay,
e: d3_time_parseDay,
H: d3_time_parseHour24,
I: d3_time_parseHour24,
j: d3_time_parseDayOfYear,
L: d3_time_parseMilliseconds,
m: d3_time_parseMonthNumber,
M: d3_time_parseMinutes,
p: d3_time_parseAmPm,
S: d3_time_parseSeconds,
U: d3_time_parseWeekNumberSunday,
w: d3_time_parseWeekdayNumber,
W: d3_time_parseWeekNumberMonday,
x: d3_time_parseLocaleDate,
X: d3_time_parseLocaleTime,
y: d3_time_parseYear,
Y: d3_time_parseFullYear,
Z: d3_time_parseZone,
"%": d3_time_parseLiteralPercent
};
function d3_time_parseWeekdayAbbrev(date, string, i) {
d3_time_dayAbbrevRe.lastIndex = 0;
var n = d3_time_dayAbbrevRe.exec(string.slice(i));
return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseWeekday(date, string, i) {
d3_time_dayRe.lastIndex = 0;
var n = d3_time_dayRe.exec(string.slice(i));
return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseMonthAbbrev(date, string, i) {
d3_time_monthAbbrevRe.lastIndex = 0;
var n = d3_time_monthAbbrevRe.exec(string.slice(i));
return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseMonth(date, string, i) {
d3_time_monthRe.lastIndex = 0;
var n = d3_time_monthRe.exec(string.slice(i));
return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseLocaleFull(date, string, i) {
return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
}
function d3_time_parseLocaleDate(date, string, i) {
return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
}
function d3_time_parseLocaleTime(date, string, i) {
return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
}
function d3_time_parseAmPm(date, string, i) {
var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());
return n == null ? -1 : (date.p = n, i);
}
return d3_time_format;
}
var d3_time_formatPads = {
"-": "",
_: " ",
"0": "0"
}, d3_time_numberRe = /^\s*\d+/, d3_time_percentRe = /^%/;
function d3_time_formatPad(value, fill, width) {
var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length;
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
}
function d3_time_formatRe(names) {
return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
}
function d3_time_formatLookup(names) {
var map = new d3_Map(), i = -1, n = names.length;
while (++i < n) map.set(names[i].toLowerCase(), i);
return map;
}
function d3_time_parseWeekdayNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 1));
return n ? (date.w = +n[0], i + n[0].length) : -1;
}
function d3_time_parseWeekNumberSunday(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i));
return n ? (date.U = +n[0], i + n[0].length) : -1;
}
function d3_time_parseWeekNumberMonday(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i));
return n ? (date.W = +n[0], i + n[0].length) : -1;
}
function d3_time_parseFullYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 4));
return n ? (date.y = +n[0], i + n[0].length) : -1;
}
function d3_time_parseYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
}
function d3_time_parseZone(date, string, i) {
return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string,
i + 5) : -1;
}
function d3_time_expandYear(d) {
return d + (d > 68 ? 1900 : 2e3);
}
function d3_time_parseMonthNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.m = n[0] - 1, i + n[0].length) : -1;
}
function d3_time_parseDay(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.d = +n[0], i + n[0].length) : -1;
}
function d3_time_parseDayOfYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 3));
return n ? (date.j = +n[0], i + n[0].length) : -1;
}
function d3_time_parseHour24(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.H = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMinutes(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.M = +n[0], i + n[0].length) : -1;
}
function d3_time_parseSeconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.S = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMilliseconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 3));
return n ? (date.L = +n[0], i + n[0].length) : -1;
}
function d3_time_zone(d) {
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = abs(z) / 60 | 0, zm = abs(z) % 60;
return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2);
}
function d3_time_parseLiteralPercent(date, string, i) {
d3_time_percentRe.lastIndex = 0;
var n = d3_time_percentRe.exec(string.slice(i, i + 1));
return n ? i + n[0].length : -1;
}
function d3_time_formatMulti(formats) {
var n = formats.length, i = -1;
while (++i < n) formats[i][0] = this(formats[i][0]);
return function(date) {
var i = 0, f = formats[i];
while (!f[1](date)) f = formats[++i];
return f[0](date);
};
}
d3.locale = function(locale) {
return {
numberFormat: d3_locale_numberFormat(locale),
timeFormat: d3_locale_timeFormat(locale)
};
};
var d3_locale_enUS = d3.locale({
decimal: ".",
thousands: ",",
grouping: [ 3 ],
currency: [ "$", "" ],
dateTime: "%a %b %e %X %Y",
date: "%m/%d/%Y",
time: "%H:%M:%S",
periods: [ "AM", "PM" ],
days: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
shortDays: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
months: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ],
shortMonths: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]
});
d3.format = d3_locale_enUS.numberFormat;
d3.geo = {};
function d3_adder() {}
d3_adder.prototype = {
s: 0,
t: 0,
add: function(y) {
d3_adderSum(y, this.t, d3_adderTemp);
d3_adderSum(d3_adderTemp.s, this.s, this);
if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;
},
reset: function() {
this.s = this.t = 0;
},
valueOf: function() {
return this.s;
}
};
var d3_adderTemp = new d3_adder();
function d3_adderSum(a, b, o) {
var x = o.s = a + b, bv = x - a, av = x - bv;
o.t = a - av + (b - bv);
}
d3.geo.stream = function(object, listener) {
if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
d3_geo_streamObjectType[object.type](object, listener);
} else {
d3_geo_streamGeometry(object, listener);
}
};
function d3_geo_streamGeometry(geometry, listener) {
if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
d3_geo_streamGeometryType[geometry.type](geometry, listener);
}
}
var d3_geo_streamObjectType = {
Feature: function(feature, listener) {
d3_geo_streamGeometry(feature.geometry, listener);
},
FeatureCollection: function(object, listener) {
var features = object.features, i = -1, n = features.length;
while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
}
};
var d3_geo_streamGeometryType = {
Sphere: function(object, listener) {
listener.sphere();
},
Point: function(object, listener) {
object = object.coordinates;
listener.point(object[0], object[1], object[2]);
},
MultiPoint: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
},
LineString: function(object, listener) {
d3_geo_streamLine(object.coordinates, listener, 0);
},
MultiLineString: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
},
Polygon: function(object, listener) {
d3_geo_streamPolygon(object.coordinates, listener);
},
MultiPolygon: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
},
GeometryCollection: function(object, listener) {
var geometries = object.geometries, i = -1, n = geometries.length;
while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
}
};
function d3_geo_streamLine(coordinates, listener, closed) {
var i = -1, n = coordinates.length - closed, coordinate;
listener.lineStart();
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
listener.lineEnd();
}
function d3_geo_streamPolygon(coordinates, listener) {
var i = -1, n = coordinates.length;
listener.polygonStart();
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
listener.polygonEnd();
}
d3.geo.area = function(object) {
d3_geo_areaSum = 0;
d3.geo.stream(object, d3_geo_area);
return d3_geo_areaSum;
};
var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();
var d3_geo_area = {
sphere: function() {
d3_geo_areaSum += 4 * π;
},
point: d3_noop,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
d3_geo_areaRingSum.reset();
d3_geo_area.lineStart = d3_geo_areaRingStart;
},
polygonEnd: function() {
var area = 2 * d3_geo_areaRingSum;
d3_geo_areaSum += area < 0 ? 4 * π + area : area;
d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
}
};
function d3_geo_areaRingStart() {
var λ00, φ00, λ0, cosφ0, sinφ0;
d3_geo_area.point = function(λ, φ) {
d3_geo_area.point = nextPoint;
λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4),
sinφ0 = Math.sin(φ);
};
function nextPoint(λ, φ) {
λ *= d3_radians;
φ = φ * d3_radians / 2 + π / 4;
var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);
d3_geo_areaRingSum.add(Math.atan2(v, u));
λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
}
d3_geo_area.lineEnd = function() {
nextPoint(λ00, φ00);
};
}
function d3_geo_cartesian(spherical) {
var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);
return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];
}
function d3_geo_cartesianDot(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
function d3_geo_cartesianCross(a, b) {
return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];
}
function d3_geo_cartesianAdd(a, b) {
a[0] += b[0];
a[1] += b[1];
a[2] += b[2];
}
function d3_geo_cartesianScale(vector, k) {
return [ vector[0] * k, vector[1] * k, vector[2] * k ];
}
function d3_geo_cartesianNormalize(d) {
var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
d[0] /= l;
d[1] /= l;
d[2] /= l;
}
function d3_geo_spherical(cartesian) {
return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];
}
function d3_geo_sphericalEqual(a, b) {
return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
}
d3.geo.bounds = function() {
var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;
var bound = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
bound.point = ringPoint;
bound.lineStart = ringStart;
bound.lineEnd = ringEnd;
dλSum = 0;
d3_geo_area.polygonStart();
},
polygonEnd: function() {
d3_geo_area.polygonEnd();
bound.point = point;
bound.lineStart = lineStart;
bound.lineEnd = lineEnd;
if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;
range[0] = λ0, range[1] = λ1;
}
};
function point(λ, φ) {
ranges.push(range = [ λ0 = λ, λ1 = λ ]);
if (φ < φ0) φ0 = φ;
if (φ > φ1) φ1 = φ;
}
function linePoint(λ, φ) {
var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);
if (p0) {
var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);
d3_geo_cartesianNormalize(inflection);
inflection = d3_geo_spherical(inflection);
var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;
if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
var φi = inflection[1] * d3_degrees;
if (φi > φ1) φ1 = φi;
} else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
var φi = -inflection[1] * d3_degrees;
if (φi < φ0) φ0 = φi;
} else {
if (φ < φ0) φ0 = φ;
if (φ > φ1) φ1 = φ;
}
if (antimeridian) {
if (λ < λ_) {
if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
} else {
if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
}
} else {
if (λ1 >= λ0) {
if (λ < λ0) λ0 = λ;
if (λ > λ1) λ1 = λ;
} else {
if (λ > λ_) {
if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
} else {
if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
}
}
}
} else {
point(λ, φ);
}
p0 = p, λ_ = λ;
}
function lineStart() {
bound.point = linePoint;
}
function lineEnd() {
range[0] = λ0, range[1] = λ1;
bound.point = point;
p0 = null;
}
function ringPoint(λ, φ) {
if (p0) {
var dλ = λ - λ_;
dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;
} else λ__ = λ, φ__ = φ;
d3_geo_area.point(λ, φ);
linePoint(λ, φ);
}
function ringStart() {
d3_geo_area.lineStart();
}
function ringEnd() {
ringPoint(λ__, φ__);
d3_geo_area.lineEnd();
if (abs(dλSum) > ε) λ0 = -(λ1 = 180);
range[0] = λ0, range[1] = λ1;
p0 = null;
}
function angle(λ0, λ1) {
return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;
}
function compareRanges(a, b) {
return a[0] - b[0];
}
function withinRange(x, range) {
return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
}
return function(feature) {
φ1 = λ1 = -(λ0 = φ0 = Infinity);
ranges = [];
d3.geo.stream(feature, bound);
var n = ranges.length;
if (n) {
ranges.sort(compareRanges);
for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {
b = ranges[i];
if (withinRange(b[0], a) || withinRange(b[1], a)) {
if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
} else {
merged.push(a = b);
}
}
var best = -Infinity, dλ;
for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
b = merged[i];
if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
}
}
ranges = range = null;
return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];
};
}();
d3.geo.centroid = function(object) {
d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
d3.geo.stream(object, d3_geo_centroid);
var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;
if (m < ε2) {
x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;
m = x * x + y * y + z * z;
if (m < ε2) return [ NaN, NaN ];
}
return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];
};
var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;
var d3_geo_centroid = {
sphere: d3_noop,
point: d3_geo_centroidPoint,
lineStart: d3_geo_centroidLineStart,
lineEnd: d3_geo_centroidLineEnd,
polygonStart: function() {
d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
},
polygonEnd: function() {
d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
}
};
function d3_geo_centroidPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
}
function d3_geo_centroidPointXYZ(x, y, z) {
++d3_geo_centroidW0;
d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
}
function d3_geo_centroidLineStart() {
var x0, y0, z0;
d3_geo_centroid.point = function(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
x0 = cosφ * Math.cos(λ);
y0 = cosφ * Math.sin(λ);
z0 = Math.sin(φ);
d3_geo_centroid.point = nextPoint;
d3_geo_centroidPointXYZ(x0, y0, z0);
};
function nextPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
d3_geo_centroidW1 += w;
d3_geo_centroidX1 += w * (x0 + (x0 = x));
d3_geo_centroidY1 += w * (y0 + (y0 = y));
d3_geo_centroidZ1 += w * (z0 + (z0 = z));
d3_geo_centroidPointXYZ(x0, y0, z0);
}
}
function d3_geo_centroidLineEnd() {
d3_geo_centroid.point = d3_geo_centroidPoint;
}
function d3_geo_centroidRingStart() {
var λ00, φ00, x0, y0, z0;
d3_geo_centroid.point = function(λ, φ) {
λ00 = λ, φ00 = φ;
d3_geo_centroid.point = nextPoint;
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
x0 = cosφ * Math.cos(λ);
y0 = cosφ * Math.sin(λ);
z0 = Math.sin(φ);
d3_geo_centroidPointXYZ(x0, y0, z0);
};
d3_geo_centroid.lineEnd = function() {
nextPoint(λ00, φ00);
d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
d3_geo_centroid.point = d3_geo_centroidPoint;
};
function nextPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);
d3_geo_centroidX2 += v * cx;
d3_geo_centroidY2 += v * cy;
d3_geo_centroidZ2 += v * cz;
d3_geo_centroidW1 += w;
d3_geo_centroidX1 += w * (x0 + (x0 = x));
d3_geo_centroidY1 += w * (y0 + (y0 = y));
d3_geo_centroidZ1 += w * (z0 + (z0 = z));
d3_geo_centroidPointXYZ(x0, y0, z0);
}
}
function d3_geo_compose(a, b) {
function compose(x, y) {
return x = a(x, y), b(x[0], x[1]);
}
if (a.invert && b.invert) compose.invert = function(x, y) {
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
};
return compose;
}
function d3_true() {
return true;
}
function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
var subject = [], clip = [];
segments.forEach(function(segment) {
if ((n = segment.length - 1) <= 0) return;
var n, p0 = segment[0], p1 = segment[n];
if (d3_geo_sphericalEqual(p0, p1)) {
listener.lineStart();
for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
listener.lineEnd();
return;
}
var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
a.o = b;
subject.push(a);
clip.push(b);
a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
a.o = b;
subject.push(a);
clip.push(b);
});
clip.sort(compare);
d3_geo_clipPolygonLinkCircular(subject);
d3_geo_clipPolygonLinkCircular(clip);
if (!subject.length) return;
for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
clip[i].e = entry = !entry;
}
var start = subject[0], points, point;
while (1) {
var current = start, isSubject = true;
while (current.v) if ((current = current.n) === start) return;
points = current.z;
listener.lineStart();
do {
current.v = current.o.v = true;
if (current.e) {
if (isSubject) {
for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
} else {
interpolate(current.x, current.n.x, 1, listener);
}
current = current.n;
} else {
if (isSubject) {
points = current.p.z;
for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
} else {
interpolate(current.x, current.p.x, -1, listener);
}
current = current.p;
}
current = current.o;
points = current.z;
isSubject = !isSubject;
} while (!current.v);
listener.lineEnd();
}
}
function d3_geo_clipPolygonLinkCircular(array) {
if (!(n = array.length)) return;
var n, i = 0, a = array[0], b;
while (++i < n) {
a.n = b = array[i];
b.p = a;
a = b;
}
a.n = b = array[0];
b.p = a;
}
function d3_geo_clipPolygonIntersection(point, points, other, entry) {
this.x = point;
this.z = points;
this.o = other;
this.e = entry;
this.v = false;
this.n = this.p = null;
}
function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
return function(rotate, listener) {
var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
var clip = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
clip.point = pointRing;
clip.lineStart = ringStart;
clip.lineEnd = ringEnd;
segments = [];
polygon = [];
},
polygonEnd: function() {
clip.point = point;
clip.lineStart = lineStart;
clip.lineEnd = lineEnd;
segments = d3.merge(segments);
var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
if (segments.length) {
if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
} else if (clipStartInside) {
if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
segments = polygon = null;
},
sphere: function() {
listener.polygonStart();
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
listener.polygonEnd();
}
};
function point(λ, φ) {
var point = rotate(λ, φ);
if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
}
function pointLine(λ, φ) {
var point = rotate(λ, φ);
line.point(point[0], point[1]);
}
function lineStart() {
clip.point = pointLine;
line.lineStart();
}
function lineEnd() {
clip.point = point;
line.lineEnd();
}
var segments;
var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;
function pointRing(λ, φ) {
ring.push([ λ, φ ]);
var point = rotate(λ, φ);
ringListener.point(point[0], point[1]);
}
function ringStart() {
ringListener.lineStart();
ring = [];
}
function ringEnd() {
pointRing(ring[0][0], ring[0][1]);
ringListener.lineEnd();
var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;
ring.pop();
polygon.push(ring);
ring = null;
if (!n) return;
if (clean & 1) {
segment = ringSegments[0];
var n = segment.length - 1, i = -1, point;
if (n > 0) {
if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
listener.lineStart();
while (++i < n) listener.point((point = segment[i])[0], point[1]);
listener.lineEnd();
}
return;
}
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
}
return clip;
};
}
function d3_geo_clipSegmentLength1(segment) {
return segment.length > 1;
}
function d3_geo_clipBufferListener() {
var lines = [], line;
return {
lineStart: function() {
lines.push(line = []);
},
point: function(λ, φ) {
line.push([ λ, φ ]);
},
lineEnd: d3_noop,
buffer: function() {
var buffer = lines;
lines = [];
line = null;
return buffer;
},
rejoin: function() {
if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
}
};
}
function d3_geo_clipSort(a, b) {
return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
}
var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);
function d3_geo_clipAntimeridianLine(listener) {
var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
return {
lineStart: function() {
listener.lineStart();
clean = 1;
},
point: function(λ1, φ1) {
var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);
if (abs(dλ - π) < ε) {
listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);
listener.point(sλ0, φ0);
listener.lineEnd();
listener.lineStart();
listener.point(sλ1, φ0);
listener.point(λ1, φ0);
clean = 0;
} else if (sλ0 !== sλ1 && dλ >= π) {
if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
listener.point(sλ0, φ0);
listener.lineEnd();
listener.lineStart();
listener.point(sλ1, φ0);
clean = 0;
}
listener.point(λ0 = λ1, φ0 = φ1);
sλ0 = sλ1;
},
lineEnd: function() {
listener.lineEnd();
λ0 = φ0 = NaN;
},
clean: function() {
return 2 - clean;
}
};
}
function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
}
function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
var φ;
if (from == null) {
φ = direction * halfπ;
listener.point(-π, φ);
listener.point(0, φ);
listener.point(π, φ);
listener.point(π, 0);
listener.point(π, -φ);
listener.point(0, -φ);
listener.point(-π, -φ);
listener.point(-π, 0);
listener.point(-π, φ);
} else if (abs(from[0] - to[0]) > ε) {
var s = from[0] < to[0] ? π : -π;
φ = direction * s / 2;
listener.point(-s, φ);
listener.point(0, φ);
listener.point(s, φ);
} else {
listener.point(to[0], to[1]);
}
}
function d3_geo_pointInPolygon(point, polygon) {
var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;
d3_geo_areaRingSum.reset();
for (var i = 0, n = polygon.length; i < n; ++i) {
var ring = polygon[i], m = ring.length;
if (!m) continue;
var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;
while (true) {
if (j === m) j = 0;
point = ring[j];
var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;
d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
d3_geo_cartesianNormalize(arc);
var intersection = d3_geo_cartesianCross(meridianNormal, arc);
d3_geo_cartesianNormalize(intersection);
var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
winding += antimeridian ^ dλ >= 0 ? 1 : -1;
}
}
if (!j++) break;
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
}
}
return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;
}
function d3_geo_clipCircle(radius) {
var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);
function visible(λ, φ) {
return Math.cos(λ) * Math.cos(φ) > cr;
}
function clipLine(listener) {
var point0, c0, v0, v00, clean;
return {
lineStart: function() {
v00 = v0 = false;
clean = 1;
},
point: function(λ, φ) {
var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
if (!point0 && (v00 = v0 = v)) listener.lineStart();
if (v !== v0) {
point2 = intersect(point0, point1);
if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
point1[0] += ε;
point1[1] += ε;
v = visible(point1[0], point1[1]);
}
}
if (v !== v0) {
clean = 0;
if (v) {
listener.lineStart();
point2 = intersect(point1, point0);
listener.point(point2[0], point2[1]);
} else {
point2 = intersect(point0, point1);
listener.point(point2[0], point2[1]);
listener.lineEnd();
}
point0 = point2;
} else if (notHemisphere && point0 && smallRadius ^ v) {
var t;
if (!(c & c0) && (t = intersect(point1, point0, true))) {
clean = 0;
if (smallRadius) {
listener.lineStart();
listener.point(t[0][0], t[0][1]);
listener.point(t[1][0], t[1][1]);
listener.lineEnd();
} else {
listener.point(t[1][0], t[1][1]);
listener.lineEnd();
listener.lineStart();
listener.point(t[0][0], t[0][1]);
}
}
}
if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
listener.point(point1[0], point1[1]);
}
point0 = point1, v0 = v, c0 = c;
},
lineEnd: function() {
if (v0) listener.lineEnd();
point0 = null;
},
clean: function() {
return clean | (v00 && v0) << 1;
}
};
}
function intersect(a, b, two) {
var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);
var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;
if (!determinant) return !two && a;
var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);
d3_geo_cartesianAdd(A, B);
var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
if (t2 < 0) return;
var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);
d3_geo_cartesianAdd(q, A);
q = d3_geo_spherical(q);
if (!two) return q;
var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;
if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;
if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
d3_geo_cartesianAdd(q1, A);
return [ q, d3_geo_spherical(q1) ];
}
}
function code(λ, φ) {
var r = smallRadius ? radius : π - radius, code = 0;
if (λ < -r) code |= 1; else if (λ > r) code |= 2;
if (φ < -r) code |= 4; else if (φ > r) code |= 8;
return code;
}
}
function d3_geom_clipLine(x0, y0, x1, y1) {
return function(line) {
var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;
r = x0 - ax;
if (!dx && r > 0) return;
r /= dx;
if (dx < 0) {
if (r < t0) return;
if (r < t1) t1 = r;
} else if (dx > 0) {
if (r > t1) return;
if (r > t0) t0 = r;
}
r = x1 - ax;
if (!dx && r < 0) return;
r /= dx;
if (dx < 0) {
if (r > t1) return;
if (r > t0) t0 = r;
} else if (dx > 0) {
if (r < t0) return;
if (r < t1) t1 = r;
}
r = y0 - ay;
if (!dy && r > 0) return;
r /= dy;
if (dy < 0) {
if (r < t0) return;
if (r < t1) t1 = r;
} else if (dy > 0) {
if (r > t1) return;
if (r > t0) t0 = r;
}
r = y1 - ay;
if (!dy && r < 0) return;
r /= dy;
if (dy < 0) {
if (r > t1) return;
if (r > t0) t0 = r;
} else if (dy > 0) {
if (r < t0) return;
if (r < t1) t1 = r;
}
if (t0 > 0) line.a = {
x: ax + t0 * dx,
y: ay + t0 * dy
};
if (t1 < 1) line.b = {
x: ax + t1 * dx,
y: ay + t1 * dy
};
return line;
};
}
var d3_geo_clipExtentMAX = 1e9;
d3.geo.clipExtent = function() {
var x0, y0, x1, y1, stream, clip, clipExtent = {
stream: function(output) {
if (stream) stream.valid = false;
stream = clip(output);
stream.valid = true;
return stream;
},
extent: function(_) {
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
if (stream) stream.valid = false, stream = null;
return clipExtent;
}
};
return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);
};
function d3_geo_clipExtent(x0, y0, x1, y1) {
return function(listener) {
var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;
var clip = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
listener = bufferListener;
segments = [];
polygon = [];
clean = true;
},
polygonEnd: function() {
listener = listener_;
segments = d3.merge(segments);
var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;
if (inside || visible) {
listener.polygonStart();
if (inside) {
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
if (visible) {
d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);
}
listener.polygonEnd();
}
segments = polygon = ring = null;
}
};
function insidePolygon(p) {
var wn = 0, n = polygon.length, y = p[1];
for (var i = 0; i < n; ++i) {
for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
b = v[j];
if (a[1] <= y) {
if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;
} else {
if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;
}
a = b;
}
}
return wn !== 0;
}
function interpolate(from, to, direction, listener) {
var a = 0, a1 = 0;
if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {
do {
listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
} while ((a = (a + direction + 4) % 4) !== a1);
} else {
listener.point(to[0], to[1]);
}
}
function pointVisible(x, y) {
return x0 <= x && x <= x1 && y0 <= y && y <= y1;
}
function point(x, y) {
if (pointVisible(x, y)) listener.point(x, y);
}
var x__, y__, v__, x_, y_, v_, first, clean;
function lineStart() {
clip.point = linePoint;
if (polygon) polygon.push(ring = []);
first = true;
v_ = false;
x_ = y_ = NaN;
}
function lineEnd() {
if (segments) {
linePoint(x__, y__);
if (v__ && v_) bufferListener.rejoin();
segments.push(bufferListener.buffer());
}
clip.point = point;
if (v_) listener.lineEnd();
}
function linePoint(x, y) {
x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
var v = pointVisible(x, y);
if (polygon) ring.push([ x, y ]);
if (first) {
x__ = x, y__ = y, v__ = v;
first = false;
if (v) {
listener.lineStart();
listener.point(x, y);
}
} else {
if (v && v_) listener.point(x, y); else {
var l = {
a: {
x: x_,
y: y_
},
b: {
x: x,
y: y
}
};
if (clipLine(l)) {
if (!v_) {
listener.lineStart();
listener.point(l.a.x, l.a.y);
}
listener.point(l.b.x, l.b.y);
if (!v) listener.lineEnd();
clean = false;
} else if (v) {
listener.lineStart();
listener.point(x, y);
clean = false;
}
}
}
x_ = x, y_ = y, v_ = v;
}
return clip;
};
function corner(p, direction) {
return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;
}
function compare(a, b) {
return comparePoints(a.x, b.x);
}
function comparePoints(a, b) {
var ca = corner(a, 1), cb = corner(b, 1);
return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];
}
}
function d3_geo_conic(projectAt) {
var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
p.parallels = function(_) {
if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];
return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
};
return p;
}
function d3_geo_conicEqualArea(φ0, φ1) {
var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;
function forward(λ, φ) {
var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
}
forward.invert = function(x, y) {
var ρ0_y = ρ0 - y;
return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];
};
return forward;
}
(d3.geo.conicEqualArea = function() {
return d3_geo_conic(d3_geo_conicEqualArea);
}).raw = d3_geo_conicEqualArea;
d3.geo.albers = function() {
return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);
};
d3.geo.albersUsa = function() {
var lower48 = d3.geo.albers();
var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);
var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);
var point, pointStream = {
point: function(x, y) {
point = [ x, y ];
}
}, lower48Point, alaskaPoint, hawaiiPoint;
function albersUsa(coordinates) {
var x = coordinates[0], y = coordinates[1];
point = null;
(lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);
return point;
}
albersUsa.invert = function(coordinates) {
var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;
return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);
};
albersUsa.stream = function(stream) {
var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);
return {
point: function(x, y) {
lower48Stream.point(x, y);
alaskaStream.point(x, y);
hawaiiStream.point(x, y);
},
sphere: function() {
lower48Stream.sphere();
alaskaStream.sphere();
hawaiiStream.sphere();
},
lineStart: function() {
lower48Stream.lineStart();
alaskaStream.lineStart();
hawaiiStream.lineStart();
},
lineEnd: function() {
lower48Stream.lineEnd();
alaskaStream.lineEnd();
hawaiiStream.lineEnd();
},
polygonStart: function() {
lower48Stream.polygonStart();
alaskaStream.polygonStart();
hawaiiStream.polygonStart();
},
polygonEnd: function() {
lower48Stream.polygonEnd();
alaskaStream.polygonEnd();
hawaiiStream.polygonEnd();
}
};
};
albersUsa.precision = function(_) {
if (!arguments.length) return lower48.precision();
lower48.precision(_);
alaska.precision(_);
hawaii.precision(_);
return albersUsa;
};
albersUsa.scale = function(_) {
if (!arguments.length) return lower48.scale();
lower48.scale(_);
alaska.scale(_ * .35);
hawaii.scale(_);
return albersUsa.translate(lower48.translate());
};
albersUsa.translate = function(_) {
if (!arguments.length) return lower48.translate();
var k = lower48.scale(), x = +_[0], y = +_[1];
lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;
alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;
hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;
return albersUsa;
};
return albersUsa.scale(1070);
};
var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
point: d3_noop,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
d3_geo_pathAreaPolygon = 0;
d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
},
polygonEnd: function() {
d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);
}
};
function d3_geo_pathAreaRingStart() {
var x00, y00, x0, y0;
d3_geo_pathArea.point = function(x, y) {
d3_geo_pathArea.point = nextPoint;
x00 = x0 = x, y00 = y0 = y;
};
function nextPoint(x, y) {
d3_geo_pathAreaPolygon += y0 * x - x0 * y;
x0 = x, y0 = y;
}
d3_geo_pathArea.lineEnd = function() {
nextPoint(x00, y00);
};
}
var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;
var d3_geo_pathBounds = {
point: d3_geo_pathBoundsPoint,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: d3_noop,
polygonEnd: d3_noop
};
function d3_geo_pathBoundsPoint(x, y) {
if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
}
function d3_geo_pathBuffer() {
var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];
var stream = {
point: point,
lineStart: function() {
stream.point = pointLineStart;
},
lineEnd: lineEnd,
polygonStart: function() {
stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
stream.lineEnd = lineEnd;
stream.point = point;
},
pointRadius: function(_) {
pointCircle = d3_geo_pathBufferCircle(_);
return stream;
},
result: function() {
if (buffer.length) {
var result = buffer.join("");
buffer = [];
return result;
}
}
};
function point(x, y) {
buffer.push("M", x, ",", y, pointCircle);
}
function pointLineStart(x, y) {
buffer.push("M", x, ",", y);
stream.point = pointLine;
}
function pointLine(x, y) {
buffer.push("L", x, ",", y);
}
function lineEnd() {
stream.point = point;
}
function lineEndPolygon() {
buffer.push("Z");
}
return stream;
}
function d3_geo_pathBufferCircle(radius) {
return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z";
}
var d3_geo_pathCentroid = {
point: d3_geo_pathCentroidPoint,
lineStart: d3_geo_pathCentroidLineStart,
lineEnd: d3_geo_pathCentroidLineEnd,
polygonStart: function() {
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
},
polygonEnd: function() {
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
}
};
function d3_geo_pathCentroidPoint(x, y) {
d3_geo_centroidX0 += x;
d3_geo_centroidY0 += y;
++d3_geo_centroidZ0;
}
function d3_geo_pathCentroidLineStart() {
var x0, y0;
d3_geo_pathCentroid.point = function(x, y) {
d3_geo_pathCentroid.point = nextPoint;
d3_geo_pathCentroidPoint(x0 = x, y0 = y);
};
function nextPoint(x, y) {
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
d3_geo_centroidX1 += z * (x0 + x) / 2;
d3_geo_centroidY1 += z * (y0 + y) / 2;
d3_geo_centroidZ1 += z;
d3_geo_pathCentroidPoint(x0 = x, y0 = y);
}
}
function d3_geo_pathCentroidLineEnd() {
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
}
function d3_geo_pathCentroidRingStart() {
var x00, y00, x0, y0;
d3_geo_pathCentroid.point = function(x, y) {
d3_geo_pathCentroid.point = nextPoint;
d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
};
function nextPoint(x, y) {
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
d3_geo_centroidX1 += z * (x0 + x) / 2;
d3_geo_centroidY1 += z * (y0 + y) / 2;
d3_geo_centroidZ1 += z;
z = y0 * x - x0 * y;
d3_geo_centroidX2 += z * (x0 + x);
d3_geo_centroidY2 += z * (y0 + y);
d3_geo_centroidZ2 += z * 3;
d3_geo_pathCentroidPoint(x0 = x, y0 = y);
}
d3_geo_pathCentroid.lineEnd = function() {
nextPoint(x00, y00);
};
}
function d3_geo_pathContext(context) {
var pointRadius = 4.5;
var stream = {
point: point,
lineStart: function() {
stream.point = pointLineStart;
},
lineEnd: lineEnd,
polygonStart: function() {
stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
stream.lineEnd = lineEnd;
stream.point = point;
},
pointRadius: function(_) {
pointRadius = _;
return stream;
},
result: d3_noop
};
function point(x, y) {
context.moveTo(x + pointRadius, y);
context.arc(x, y, pointRadius, 0, τ);
}
function pointLineStart(x, y) {
context.moveTo(x, y);
stream.point = pointLine;
}
function pointLine(x, y) {
context.lineTo(x, y);
}
function lineEnd() {
stream.point = point;
}
function lineEndPolygon() {
context.closePath();
}
return stream;
}
function d3_geo_resample(project) {
var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;
function resample(stream) {
return (maxDepth ? resampleRecursive : resampleNone)(stream);
}
function resampleNone(stream) {
return d3_geo_transformPoint(stream, function(x, y) {
x = project(x, y);
stream.point(x[0], x[1]);
});
}
function resampleRecursive(stream) {
var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;
var resample = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
stream.polygonStart();
resample.lineStart = ringStart;
},
polygonEnd: function() {
stream.polygonEnd();
resample.lineStart = lineStart;
}
};
function point(x, y) {
x = project(x, y);
stream.point(x[0], x[1]);
}
function lineStart() {
x0 = NaN;
resample.point = linePoint;
stream.lineStart();
}
function linePoint(λ, φ) {
var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
stream.point(x0, y0);
}
function lineEnd() {
resample.point = point;
stream.lineEnd();
}
function ringStart() {
lineStart();
resample.point = ringPoint;
resample.lineEnd = ringEnd;
}
function ringPoint(λ, φ) {
linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
resample.point = linePoint;
}
function ringEnd() {
resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
resample.lineEnd = lineEnd;
lineEnd();
}
return resample;
}
function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
if (d2 > 4 * δ2 && depth--) {
var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;
if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {
resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
stream.point(x2, y2);
resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
}
}
}
resample.precision = function(_) {
if (!arguments.length) return Math.sqrt(δ2);
maxDepth = (δ2 = _ * _) > 0 && 16;
return resample;
};
return resample;
}
d3.geo.path = function() {
var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;
function path(object) {
if (object) {
if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);
d3.geo.stream(object, cacheStream);
}
return contextStream.result();
}
path.area = function(object) {
d3_geo_pathAreaSum = 0;
d3.geo.stream(object, projectStream(d3_geo_pathArea));
return d3_geo_pathAreaSum;
};
path.centroid = function(object) {
d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];
};
path.bounds = function(object) {
d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);
d3.geo.stream(object, projectStream(d3_geo_pathBounds));
return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];
};
path.projection = function(_) {
if (!arguments.length) return projection;
projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
return reset();
};
path.context = function(_) {
if (!arguments.length) return context;
contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);
if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
return reset();
};
path.pointRadius = function(_) {
if (!arguments.length) return pointRadius;
pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
return path;
};
function reset() {
cacheStream = null;
return path;
}
return path.projection(d3.geo.albersUsa()).context(null);
};
function d3_geo_pathProjectStream(project) {
var resample = d3_geo_resample(function(x, y) {
return project([ x * d3_degrees, y * d3_degrees ]);
});
return function(stream) {
return d3_geo_projectionRadians(resample(stream));
};
}
d3.geo.transform = function(methods) {
return {
stream: function(stream) {
var transform = new d3_geo_transform(stream);
for (var k in methods) transform[k] = methods[k];
return transform;
}
};
};
function d3_geo_transform(stream) {
this.stream = stream;
}
d3_geo_transform.prototype = {
point: function(x, y) {
this.stream.point(x, y);
},
sphere: function() {
this.stream.sphere();
},
lineStart: function() {
this.stream.lineStart();
},
lineEnd: function() {
this.stream.lineEnd();
},
polygonStart: function() {
this.stream.polygonStart();
},
polygonEnd: function() {
this.stream.polygonEnd();
}
};
function d3_geo_transformPoint(stream, point) {
return {
point: point,
sphere: function() {
stream.sphere();
},
lineStart: function() {
stream.lineStart();
},
lineEnd: function() {
stream.lineEnd();
},
polygonStart: function() {
stream.polygonStart();
},
polygonEnd: function() {
stream.polygonEnd();
}
};
}
d3.geo.projection = d3_geo_projection;
d3.geo.projectionMutator = d3_geo_projectionMutator;
function d3_geo_projection(project) {
return d3_geo_projectionMutator(function() {
return project;
})();
}
function d3_geo_projectionMutator(projectAt) {
var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {
x = project(x, y);
return [ x[0] * k + δx, δy - x[1] * k ];
}), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;
function projection(point) {
point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
return [ point[0] * k + δx, δy - point[1] * k ];
}
function invert(point) {
point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
}
projection.stream = function(output) {
if (stream) stream.valid = false;
stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));
stream.valid = true;
return stream;
};
projection.clipAngle = function(_) {
if (!arguments.length) return clipAngle;
preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
return invalidate();
};
projection.clipExtent = function(_) {
if (!arguments.length) return clipExtent;
clipExtent = _;
postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
return invalidate();
};
projection.scale = function(_) {
if (!arguments.length) return k;
k = +_;
return reset();
};
projection.translate = function(_) {
if (!arguments.length) return [ x, y ];
x = +_[0];
y = +_[1];
return reset();
};
projection.center = function(_) {
if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
λ = _[0] % 360 * d3_radians;
φ = _[1] % 360 * d3_radians;
return reset();
};
projection.rotate = function(_) {
if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];
δλ = _[0] % 360 * d3_radians;
δφ = _[1] % 360 * d3_radians;
δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
return reset();
};
d3.rebind(projection, projectResample, "precision");
function reset() {
projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
var center = project(λ, φ);
δx = x - center[0] * k;
δy = y + center[1] * k;
return invalidate();
}
function invalidate() {
if (stream) stream.valid = false, stream = null;
return projection;
}
return function() {
project = projectAt.apply(this, arguments);
projection.invert = project.invert && invert;
return reset();
};
}
function d3_geo_projectionRadians(stream) {
return d3_geo_transformPoint(stream, function(x, y) {
stream.point(x * d3_radians, y * d3_radians);
});
}
function d3_geo_equirectangular(λ, φ) {
return [ λ, φ ];
}
(d3.geo.equirectangular = function() {
return d3_geo_projection(d3_geo_equirectangular);
}).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
d3.geo.rotation = function(rotate) {
rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
function forward(coordinates) {
coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
}
forward.invert = function(coordinates) {
coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
};
return forward;
};
function d3_geo_identityRotation(λ, φ) {
return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];
}
d3_geo_identityRotation.invert = d3_geo_equirectangular;
function d3_geo_rotation(δλ, δφ, δγ) {
return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;
}
function d3_geo_forwardRotationλ(δλ) {
return function(λ, φ) {
return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];
};
}
function d3_geo_rotationλ(δλ) {
var rotation = d3_geo_forwardRotationλ(δλ);
rotation.invert = d3_geo_forwardRotationλ(-δλ);
return rotation;
}
function d3_geo_rotationφγ(δφ, δγ) {
var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);
function rotation(λ, φ) {
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;
return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];
}
rotation.invert = function(λ, φ) {
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;
return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];
};
return rotation;
}
d3.geo.circle = function() {
var origin = [ 0, 0 ], angle, precision = 6, interpolate;
function circle() {
var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];
interpolate(null, null, 1, {
point: function(x, y) {
ring.push(x = rotate(x, y));
x[0] *= d3_degrees, x[1] *= d3_degrees;
}
});
return {
type: "Polygon",
coordinates: [ ring ]
};
}
circle.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return circle;
};
circle.angle = function(x) {
if (!arguments.length) return angle;
interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
return circle;
};
circle.precision = function(_) {
if (!arguments.length) return precision;
interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
return circle;
};
return circle.angle(90);
};
function d3_geo_circleInterpolate(radius, precision) {
var cr = Math.cos(radius), sr = Math.sin(radius);
return function(from, to, direction, listener) {
var step = direction * precision;
if (from != null) {
from = d3_geo_circleAngle(cr, from);
to = d3_geo_circleAngle(cr, to);
if (direction > 0 ? from < to : from > to) from += direction * τ;
} else {
from = radius + direction * τ;
to = radius - .5 * step;
}
for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {
listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);
}
};
}
function d3_geo_circleAngle(cr, point) {
var a = d3_geo_cartesian(point);
a[0] -= cr;
d3_geo_cartesianNormalize(a);
var angle = d3_acos(-a[1]);
return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
}
d3.geo.distance = function(a, b) {
var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;
return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);
};
d3.geo.graticule = function() {
var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;
function graticule() {
return {
type: "MultiLineString",
coordinates: lines()
};
}
function lines() {
return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {
return abs(x % DX) > ε;
}).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {
return abs(y % DY) > ε;
}).map(y));
}
graticule.lines = function() {
return lines().map(function(coordinates) {
return {
type: "LineString",
coordinates: coordinates
};
});
};
graticule.outline = function() {
return {
type: "Polygon",
coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]
};
};
graticule.extent = function(_) {
if (!arguments.length) return graticule.minorExtent();
return graticule.majorExtent(_).minorExtent(_);
};
graticule.majorExtent = function(_) {
if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];
X0 = +_[0][0], X1 = +_[1][0];
Y0 = +_[0][1], Y1 = +_[1][1];
if (X0 > X1) _ = X0, X0 = X1, X1 = _;
if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
return graticule.precision(precision);
};
graticule.minorExtent = function(_) {
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
x0 = +_[0][0], x1 = +_[1][0];
y0 = +_[0][1], y1 = +_[1][1];
if (x0 > x1) _ = x0, x0 = x1, x1 = _;
if (y0 > y1) _ = y0, y0 = y1, y1 = _;
return graticule.precision(precision);
};
graticule.step = function(_) {
if (!arguments.length) return graticule.minorStep();
return graticule.majorStep(_).minorStep(_);
};
graticule.majorStep = function(_) {
if (!arguments.length) return [ DX, DY ];
DX = +_[0], DY = +_[1];
return graticule;
};
graticule.minorStep = function(_) {
if (!arguments.length) return [ dx, dy ];
dx = +_[0], dy = +_[1];
return graticule;
};
graticule.precision = function(_) {
if (!arguments.length) return precision;
precision = +_;
x = d3_geo_graticuleX(y0, y1, 90);
y = d3_geo_graticuleY(x0, x1, precision);
X = d3_geo_graticuleX(Y0, Y1, 90);
Y = d3_geo_graticuleY(X0, X1, precision);
return graticule;
};
return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);
};
function d3_geo_graticuleX(y0, y1, dy) {
var y = d3.range(y0, y1 - ε, dy).concat(y1);
return function(x) {
return y.map(function(y) {
return [ x, y ];
});
};
}
function d3_geo_graticuleY(x0, x1, dx) {
var x = d3.range(x0, x1 - ε, dx).concat(x1);
return function(y) {
return x.map(function(x) {
return [ x, y ];
});
};
}
function d3_source(d) {
return d.source;
}
function d3_target(d) {
return d.target;
}
d3.geo.greatArc = function() {
var source = d3_source, source_, target = d3_target, target_;
function greatArc() {
return {
type: "LineString",
coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]
};
}
greatArc.distance = function() {
return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));
};
greatArc.source = function(_) {
if (!arguments.length) return source;
source = _, source_ = typeof _ === "function" ? null : _;
return greatArc;
};
greatArc.target = function(_) {
if (!arguments.length) return target;
target = _, target_ = typeof _ === "function" ? null : _;
return greatArc;
};
greatArc.precision = function() {
return arguments.length ? greatArc : 0;
};
return greatArc;
};
d3.geo.interpolate = function(source, target) {
return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);
};
function d3_geo_interpolate(x0, y0, x1, y1) {
var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);
var interpolate = d ? function(t) {
var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];
} : function() {
return [ x0 * d3_degrees, y0 * d3_degrees ];
};
interpolate.distance = d;
return interpolate;
}
d3.geo.length = function(object) {
d3_geo_lengthSum = 0;
d3.geo.stream(object, d3_geo_length);
return d3_geo_lengthSum;
};
var d3_geo_lengthSum;
var d3_geo_length = {
sphere: d3_noop,
point: d3_noop,
lineStart: d3_geo_lengthLineStart,
lineEnd: d3_noop,
polygonStart: d3_noop,
polygonEnd: d3_noop
};
function d3_geo_lengthLineStart() {
var λ0, sinφ0, cosφ0;
d3_geo_length.point = function(λ, φ) {
λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
d3_geo_length.point = nextPoint;
};
d3_geo_length.lineEnd = function() {
d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
};
function nextPoint(λ, φ) {
var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);
d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
}
}
function d3_geo_azimuthal(scale, angle) {
function azimuthal(λ, φ) {
var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);
return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];
}
azimuthal.invert = function(x, y) {
var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);
return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];
};
return azimuthal;
}
var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {
return Math.sqrt(2 / (1 + cosλcosφ));
}, function(ρ) {
return 2 * Math.asin(ρ / 2);
});
(d3.geo.azimuthalEqualArea = function() {
return d3_geo_projection(d3_geo_azimuthalEqualArea);
}).raw = d3_geo_azimuthalEqualArea;
var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {
var c = Math.acos(cosλcosφ);
return c && c / Math.sin(c);
}, d3_identity);
(d3.geo.azimuthalEquidistant = function() {
return d3_geo_projection(d3_geo_azimuthalEquidistant);
}).raw = d3_geo_azimuthalEquidistant;
function d3_geo_conicConformal(φ0, φ1) {
var cosφ0 = Math.cos(φ0), t = function(φ) {
return Math.tan(π / 4 + φ / 2);
}, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;
if (!n) return d3_geo_mercator;
function forward(λ, φ) {
if (F > 0) {
if (φ < -halfπ + ε) φ = -halfπ + ε;
} else {
if (φ > halfπ - ε) φ = halfπ - ε;
}
var ρ = F / Math.pow(t(φ), n);
return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];
}
forward.invert = function(x, y) {
var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);
return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];
};
return forward;
}
(d3.geo.conicConformal = function() {
return d3_geo_conic(d3_geo_conicConformal);
}).raw = d3_geo_conicConformal;
function d3_geo_conicEquidistant(φ0, φ1) {
var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;
if (abs(n) < ε) return d3_geo_equirectangular;
function forward(λ, φ) {
var ρ = G - φ;
return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];
}
forward.invert = function(x, y) {
var ρ0_y = G - y;
return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];
};
return forward;
}
(d3.geo.conicEquidistant = function() {
return d3_geo_conic(d3_geo_conicEquidistant);
}).raw = d3_geo_conicEquidistant;
var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {
return 1 / cosλcosφ;
}, Math.atan);
(d3.geo.gnomonic = function() {
return d3_geo_projection(d3_geo_gnomonic);
}).raw = d3_geo_gnomonic;
function d3_geo_mercator(λ, φ) {
return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];
}
d3_geo_mercator.invert = function(x, y) {
return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];
};
function d3_geo_mercatorProjection(project) {
var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;
m.scale = function() {
var v = scale.apply(m, arguments);
return v === m ? clipAuto ? m.clipExtent(null) : m : v;
};
m.translate = function() {
var v = translate.apply(m, arguments);
return v === m ? clipAuto ? m.clipExtent(null) : m : v;
};
m.clipExtent = function(_) {
var v = clipExtent.apply(m, arguments);
if (v === m) {
if (clipAuto = _ == null) {
var k = π * scale(), t = translate();
clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);
}
} else if (clipAuto) {
v = null;
}
return v;
};
return m.clipExtent(null);
}
(d3.geo.mercator = function() {
return d3_geo_mercatorProjection(d3_geo_mercator);
}).raw = d3_geo_mercator;
var d3_geo_orthographic = d3_geo_azimuthal(function() {
return 1;
}, Math.asin);
(d3.geo.orthographic = function() {
return d3_geo_projection(d3_geo_orthographic);
}).raw = d3_geo_orthographic;
var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {
return 1 / (1 + cosλcosφ);
}, function(ρ) {
return 2 * Math.atan(ρ);
});
(d3.geo.stereographic = function() {
return d3_geo_projection(d3_geo_stereographic);
}).raw = d3_geo_stereographic;
function d3_geo_transverseMercator(λ, φ) {
return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];
}
d3_geo_transverseMercator.invert = function(x, y) {
return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];
};
(d3.geo.transverseMercator = function() {
var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;
projection.center = function(_) {
return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);
};
projection.rotate = function(_) {
return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(),
[ _[0], _[1], _[2] - 90 ]);
};
return rotate([ 0, 0, 90 ]);
}).raw = d3_geo_transverseMercator;
d3.geom = {};
function d3_geom_pointX(d) {
return d[0];
}
function d3_geom_pointY(d) {
return d[1];
}
d3.geom.hull = function(vertices) {
var x = d3_geom_pointX, y = d3_geom_pointY;
if (arguments.length) return hull(vertices);
function hull(data) {
if (data.length < 3) return [];
var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];
for (i = 0; i < n; i++) {
points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);
}
points.sort(d3_geom_hullOrder);
for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);
var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);
var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];
for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);
for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);
return polygon;
}
hull.x = function(_) {
return arguments.length ? (x = _, hull) : x;
};
hull.y = function(_) {
return arguments.length ? (y = _, hull) : y;
};
return hull;
};
function d3_geom_hullUpper(points) {
var n = points.length, hull = [ 0, 1 ], hs = 2;
for (var i = 2; i < n; i++) {
while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;
hull[hs++] = i;
}
return hull.slice(0, hs);
}
function d3_geom_hullOrder(a, b) {
return a[0] - b[0] || a[1] - b[1];
}
d3.geom.polygon = function(coordinates) {
d3_subclass(coordinates, d3_geom_polygonPrototype);
return coordinates;
};
var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];
d3_geom_polygonPrototype.area = function() {
var i = -1, n = this.length, a, b = this[n - 1], area = 0;
while (++i < n) {
a = b;
b = this[i];
area += a[1] * b[0] - a[0] * b[1];
}
return area * .5;
};
d3_geom_polygonPrototype.centroid = function(k) {
var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;
if (!arguments.length) k = -1 / (6 * this.area());
while (++i < n) {
a = b;
b = this[i];
c = a[0] * b[1] - b[0] * a[1];
x += (a[0] + b[0]) * c;
y += (a[1] + b[1]) * c;
}
return [ x * k, y * k ];
};
d3_geom_polygonPrototype.clip = function(subject) {
var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;
while (++i < n) {
input = subject.slice();
subject.length = 0;
b = this[i];
c = input[(m = input.length - closed) - 1];
j = -1;
while (++j < m) {
d = input[j];
if (d3_geom_polygonInside(d, a, b)) {
if (!d3_geom_polygonInside(c, a, b)) {
subject.push(d3_geom_polygonIntersect(c, d, a, b));
}
subject.push(d);
} else if (d3_geom_polygonInside(c, a, b)) {
subject.push(d3_geom_polygonIntersect(c, d, a, b));
}
c = d;
}
if (closed) subject.push(subject[0]);
a = b;
}
return subject;
};
function d3_geom_polygonInside(p, a, b) {
return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
}
function d3_geom_polygonIntersect(c, d, a, b) {
var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
return [ x1 + ua * x21, y1 + ua * y21 ];
}
function d3_geom_polygonClosed(coordinates) {
var a = coordinates[0], b = coordinates[coordinates.length - 1];
return !(a[0] - b[0] || a[1] - b[1]);
}
var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];
function d3_geom_voronoiBeach() {
d3_geom_voronoiRedBlackNode(this);
this.edge = this.site = this.circle = null;
}
function d3_geom_voronoiCreateBeach(site) {
var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();
beach.site = site;
return beach;
}
function d3_geom_voronoiDetachBeach(beach) {
d3_geom_voronoiDetachCircle(beach);
d3_geom_voronoiBeaches.remove(beach);
d3_geom_voronoiBeachPool.push(beach);
d3_geom_voronoiRedBlackNode(beach);
}
function d3_geom_voronoiRemoveBeach(beach) {
var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {
x: x,
y: y
}, previous = beach.P, next = beach.N, disappearing = [ beach ];
d3_geom_voronoiDetachBeach(beach);
var lArc = previous;
while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {
previous = lArc.P;
disappearing.unshift(lArc);
d3_geom_voronoiDetachBeach(lArc);
lArc = previous;
}
disappearing.unshift(lArc);
d3_geom_voronoiDetachCircle(lArc);
var rArc = next;
while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {
next = rArc.N;
disappearing.push(rArc);
d3_geom_voronoiDetachBeach(rArc);
rArc = next;
}
disappearing.push(rArc);
d3_geom_voronoiDetachCircle(rArc);
var nArcs = disappearing.length, iArc;
for (iArc = 1; iArc < nArcs; ++iArc) {
rArc = disappearing[iArc];
lArc = disappearing[iArc - 1];
d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);
}
lArc = disappearing[0];
rArc = disappearing[nArcs - 1];
rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);
d3_geom_voronoiAttachCircle(lArc);
d3_geom_voronoiAttachCircle(rArc);
}
function d3_geom_voronoiAddBeach(site) {
var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;
while (node) {
dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;
if (dxl > ε) node = node.L; else {
dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);
if (dxr > ε) {
if (!node.R) {
lArc = node;
break;
}
node = node.R;
} else {
if (dxl > -ε) {
lArc = node.P;
rArc = node;
} else if (dxr > -ε) {
lArc = node;
rArc = node.N;
} else {
lArc = rArc = node;
}
break;
}
}
}
var newArc = d3_geom_voronoiCreateBeach(site);
d3_geom_voronoiBeaches.insert(lArc, newArc);
if (!lArc && !rArc) return;
if (lArc === rArc) {
d3_geom_voronoiDetachCircle(lArc);
rArc = d3_geom_voronoiCreateBeach(lArc.site);
d3_geom_voronoiBeaches.insert(newArc, rArc);
newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);
d3_geom_voronoiAttachCircle(lArc);
d3_geom_voronoiAttachCircle(rArc);
return;
}
if (!rArc) {
newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);
return;
}
d3_geom_voronoiDetachCircle(lArc);
d3_geom_voronoiDetachCircle(rArc);
var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {
x: (cy * hb - by * hc) / d + ax,
y: (bx * hc - cx * hb) / d + ay
};
d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);
newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);
rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);
d3_geom_voronoiAttachCircle(lArc);
d3_geom_voronoiAttachCircle(rArc);
}
function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;
if (!pby2) return rfocx;
var lArc = arc.P;
if (!lArc) return -Infinity;
site = lArc.site;
var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;
if (!plby2) return lfocx;
var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;
if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;
return (rfocx + lfocx) / 2;
}
function d3_geom_voronoiRightBreakPoint(arc, directrix) {
var rArc = arc.N;
if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);
var site = arc.site;
return site.y === directrix ? site.x : Infinity;
}
function d3_geom_voronoiCell(site) {
this.site = site;
this.edges = [];
}
d3_geom_voronoiCell.prototype.prepare = function() {
var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;
while (iHalfEdge--) {
edge = halfEdges[iHalfEdge].edge;
if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);
}
halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);
return halfEdges.length;
};
function d3_geom_voronoiCloseCells(extent) {
var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;
while (iCell--) {
cell = cells[iCell];
if (!cell || !cell.prepare()) continue;
halfEdges = cell.edges;
nHalfEdges = halfEdges.length;
iHalfEdge = 0;
while (iHalfEdge < nHalfEdges) {
end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;
start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;
if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {
halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {
x: x0,
y: abs(x2 - x0) < ε ? y2 : y1
} : abs(y3 - y1) < ε && x1 - x3 > ε ? {
x: abs(y2 - y1) < ε ? x2 : x1,
y: y1
} : abs(x3 - x1) < ε && y3 - y0 > ε ? {
x: x1,
y: abs(x2 - x1) < ε ? y2 : y0
} : abs(y3 - y0) < ε && x3 - x0 > ε ? {
x: abs(y2 - y0) < ε ? x2 : x0,
y: y0
} : null), cell.site, null));
++nHalfEdges;
}
}
}
}
function d3_geom_voronoiHalfEdgeOrder(a, b) {
return b.angle - a.angle;
}
function d3_geom_voronoiCircle() {
d3_geom_voronoiRedBlackNode(this);
this.x = this.y = this.arc = this.site = this.cy = null;
}
function d3_geom_voronoiAttachCircle(arc) {
var lArc = arc.P, rArc = arc.N;
if (!lArc || !rArc) return;
var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;
if (lSite === rSite) return;
var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;
var d = 2 * (ax * cy - ay * cx);
if (d >= -ε2) return;
var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;
var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();
circle.arc = arc;
circle.site = cSite;
circle.x = x + bx;
circle.y = cy + Math.sqrt(x * x + y * y);
circle.cy = cy;
arc.circle = circle;
var before = null, node = d3_geom_voronoiCircles._;
while (node) {
if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {
if (node.L) node = node.L; else {
before = node.P;
break;
}
} else {
if (node.R) node = node.R; else {
before = node;
break;
}
}
}
d3_geom_voronoiCircles.insert(before, circle);
if (!before) d3_geom_voronoiFirstCircle = circle;
}
function d3_geom_voronoiDetachCircle(arc) {
var circle = arc.circle;
if (circle) {
if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;
d3_geom_voronoiCircles.remove(circle);
d3_geom_voronoiCirclePool.push(circle);
d3_geom_voronoiRedBlackNode(circle);
arc.circle = null;
}
}
function d3_geom_voronoiClipEdges(extent) {
var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;
while (i--) {
e = edges[i];
if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {
e.a = e.b = null;
edges.splice(i, 1);
}
}
}
function d3_geom_voronoiConnectEdge(edge, extent) {
var vb = edge.b;
if (vb) return true;
var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;
if (ry === ly) {
if (fx < x0 || fx >= x1) return;
if (lx > rx) {
if (!va) va = {
x: fx,
y: y0
}; else if (va.y >= y1) return;
vb = {
x: fx,
y: y1
};
} else {
if (!va) va = {
x: fx,
y: y1
}; else if (va.y < y0) return;
vb = {
x: fx,
y: y0
};
}
} else {
fm = (lx - rx) / (ry - ly);
fb = fy - fm * fx;
if (fm < -1 || fm > 1) {
if (lx > rx) {
if (!va) va = {
x: (y0 - fb) / fm,
y: y0
}; else if (va.y >= y1) return;
vb = {
x: (y1 - fb) / fm,
y: y1
};
} else {
if (!va) va = {
x: (y1 - fb) / fm,
y: y1
}; else if (va.y < y0) return;
vb = {
x: (y0 - fb) / fm,
y: y0
};
}
} else {
if (ly < ry) {
if (!va) va = {
x: x0,
y: fm * x0 + fb
}; else if (va.x >= x1) return;
vb = {
x: x1,
y: fm * x1 + fb
};
} else {
if (!va) va = {
x: x1,
y: fm * x1 + fb
}; else if (va.x < x0) return;
vb = {
x: x0,
y: fm * x0 + fb
};
}
}
}
edge.a = va;
edge.b = vb;
return true;
}
function d3_geom_voronoiEdge(lSite, rSite) {
this.l = lSite;
this.r = rSite;
this.a = this.b = null;
}
function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
var edge = new d3_geom_voronoiEdge(lSite, rSite);
d3_geom_voronoiEdges.push(edge);
if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);
if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);
d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));
d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));
return edge;
}
function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
var edge = new d3_geom_voronoiEdge(lSite, null);
edge.a = va;
edge.b = vb;
d3_geom_voronoiEdges.push(edge);
return edge;
}
function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
if (!edge.a && !edge.b) {
edge.a = vertex;
edge.l = lSite;
edge.r = rSite;
} else if (edge.l === rSite) {
edge.b = vertex;
} else {
edge.a = vertex;
}
}
function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
var va = edge.a, vb = edge.b;
this.edge = edge;
this.site = lSite;
this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);
}
d3_geom_voronoiHalfEdge.prototype = {
start: function() {
return this.edge.l === this.site ? this.edge.a : this.edge.b;
},
end: function() {
return this.edge.l === this.site ? this.edge.b : this.edge.a;
}
};
function d3_geom_voronoiRedBlackTree() {
this._ = null;
}
function d3_geom_voronoiRedBlackNode(node) {
node.U = node.C = node.L = node.R = node.P = node.N = null;
}
d3_geom_voronoiRedBlackTree.prototype = {
insert: function(after, node) {
var parent, grandpa, uncle;
if (after) {
node.P = after;
node.N = after.N;
if (after.N) after.N.P = node;
after.N = node;
if (after.R) {
after = after.R;
while (after.L) after = after.L;
after.L = node;
} else {
after.R = node;
}
parent = after;
} else if (this._) {
after = d3_geom_voronoiRedBlackFirst(this._);
node.P = null;
node.N = after;
after.P = after.L = node;
parent = after;
} else {
node.P = node.N = null;
this._ = node;
parent = null;
}
node.L = node.R = null;
node.U = parent;
node.C = true;
after = node;
while (parent && parent.C) {
grandpa = parent.U;
if (parent === grandpa.L) {
uncle = grandpa.R;
if (uncle && uncle.C) {
parent.C = uncle.C = false;
grandpa.C = true;
after = grandpa;
} else {
if (after === parent.R) {
d3_geom_voronoiRedBlackRotateLeft(this, parent);
after = parent;
parent = after.U;
}
parent.C = false;
grandpa.C = true;
d3_geom_voronoiRedBlackRotateRight(this, grandpa);
}
} else {
uncle = grandpa.L;
if (uncle && uncle.C) {
parent.C = uncle.C = false;
grandpa.C = true;
after = grandpa;
} else {
if (after === parent.L) {
d3_geom_voronoiRedBlackRotateRight(this, parent);
after = parent;
parent = after.U;
}
parent.C = false;
grandpa.C = true;
d3_geom_voronoiRedBlackRotateLeft(this, grandpa);
}
}
parent = after.U;
}
this._.C = false;
},
remove: function(node) {
if (node.N) node.N.P = node.P;
if (node.P) node.P.N = node.N;
node.N = node.P = null;
var parent = node.U, sibling, left = node.L, right = node.R, next, red;
if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);
if (parent) {
if (parent.L === node) parent.L = next; else parent.R = next;
} else {
this._ = next;
}
if (left && right) {
red = next.C;
next.C = node.C;
next.L = left;
left.U = next;
if (next !== right) {
parent = next.U;
next.U = node.U;
node = next.R;
parent.L = node;
next.R = right;
right.U = next;
} else {
next.U = parent;
parent = next;
node = next.R;
}
} else {
red = node.C;
node = next;
}
if (node) node.U = parent;
if (red) return;
if (node && node.C) {
node.C = false;
return;
}
do {
if (node === this._) break;
if (node === parent.L) {
sibling = parent.R;
if (sibling.C) {
sibling.C = false;
parent.C = true;
d3_geom_voronoiRedBlackRotateLeft(this, parent);
sibling = parent.R;
}
if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
if (!sibling.R || !sibling.R.C) {
sibling.L.C = false;
sibling.C = true;
d3_geom_voronoiRedBlackRotateRight(this, sibling);
sibling = parent.R;
}
sibling.C = parent.C;
parent.C = sibling.R.C = false;
d3_geom_voronoiRedBlackRotateLeft(this, parent);
node = this._;
break;
}
} else {
sibling = parent.L;
if (sibling.C) {
sibling.C = false;
parent.C = true;
d3_geom_voronoiRedBlackRotateRight(this, parent);
sibling = parent.L;
}
if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
if (!sibling.L || !sibling.L.C) {
sibling.R.C = false;
sibling.C = true;
d3_geom_voronoiRedBlackRotateLeft(this, sibling);
sibling = parent.L;
}
sibling.C = parent.C;
parent.C = sibling.L.C = false;
d3_geom_voronoiRedBlackRotateRight(this, parent);
node = this._;
break;
}
}
sibling.C = true;
node = parent;
parent = parent.U;
} while (!node.C);
if (node) node.C = false;
}
};
function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
var p = node, q = node.R, parent = p.U;
if (parent) {
if (parent.L === p) parent.L = q; else parent.R = q;
} else {
tree._ = q;
}
q.U = parent;
p.U = q;
p.R = q.L;
if (p.R) p.R.U = p;
q.L = p;
}
function d3_geom_voronoiRedBlackRotateRight(tree, node) {
var p = node, q = node.L, parent = p.U;
if (parent) {
if (parent.L === p) parent.L = q; else parent.R = q;
} else {
tree._ = q;
}
q.U = parent;
p.U = q;
p.L = q.R;
if (p.L) p.L.U = p;
q.R = p;
}
function d3_geom_voronoiRedBlackFirst(node) {
while (node.L) node = node.L;
return node;
}
function d3_geom_voronoi(sites, bbox) {
var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;
d3_geom_voronoiEdges = [];
d3_geom_voronoiCells = new Array(sites.length);
d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();
d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();
while (true) {
circle = d3_geom_voronoiFirstCircle;
if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {
if (site.x !== x0 || site.y !== y0) {
d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);
d3_geom_voronoiAddBeach(site);
x0 = site.x, y0 = site.y;
}
site = sites.pop();
} else if (circle) {
d3_geom_voronoiRemoveBeach(circle.arc);
} else {
break;
}
}
if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);
var diagram = {
cells: d3_geom_voronoiCells,
edges: d3_geom_voronoiEdges
};
d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;
return diagram;
}
function d3_geom_voronoiVertexOrder(a, b) {
return b.y - a.y || b.x - a.x;
}
d3.geom.voronoi = function(points) {
var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;
if (points) return voronoi(points);
function voronoi(data) {
var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];
d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {
var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {
var s = e.start();
return [ s.x, s.y ];
}) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];
polygon.point = data[i];
});
return polygons;
}
function sites(data) {
return data.map(function(d, i) {
return {
x: Math.round(fx(d, i) / ε) * ε,
y: Math.round(fy(d, i) / ε) * ε,
i: i
};
});
}
voronoi.links = function(data) {
return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {
return edge.l && edge.r;
}).map(function(edge) {
return {
source: data[edge.l.i],
target: data[edge.r.i]
};
});
};
voronoi.triangles = function(data) {
var triangles = [];
d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {
var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;
while (++j < m) {
e0 = e1;
s0 = s1;
e1 = edges[j].edge;
s1 = e1.l === site ? e1.r : e1.l;
if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {
triangles.push([ data[i], data[s0.i], data[s1.i] ]);
}
}
});
return triangles;
};
voronoi.x = function(_) {
return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;
};
voronoi.y = function(_) {
return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;
};
voronoi.clipExtent = function(_) {
if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;
clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;
return voronoi;
};
voronoi.size = function(_) {
if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];
return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);
};
return voronoi;
};
var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];
function d3_geom_voronoiTriangleArea(a, b, c) {
return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);
}
d3.geom.delaunay = function(vertices) {
return d3.geom.voronoi().triangles(vertices);
};
d3.geom.quadtree = function(points, x1, y1, x2, y2) {
var x = d3_geom_pointX, y = d3_geom_pointY, compat;
if (compat = arguments.length) {
x = d3_geom_quadtreeCompatX;
y = d3_geom_quadtreeCompatY;
if (compat === 3) {
y2 = y1;
x2 = x1;
y1 = x1 = 0;
}
return quadtree(points);
}
function quadtree(data) {
var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;
if (x1 != null) {
x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;
} else {
x2_ = y2_ = -(x1_ = y1_ = Infinity);
xs = [], ys = [];
n = data.length;
if (compat) for (i = 0; i < n; ++i) {
d = data[i];
if (d.x < x1_) x1_ = d.x;
if (d.y < y1_) y1_ = d.y;
if (d.x > x2_) x2_ = d.x;
if (d.y > y2_) y2_ = d.y;
xs.push(d.x);
ys.push(d.y);
} else for (i = 0; i < n; ++i) {
var x_ = +fx(d = data[i], i), y_ = +fy(d, i);
if (x_ < x1_) x1_ = x_;
if (y_ < y1_) y1_ = y_;
if (x_ > x2_) x2_ = x_;
if (y_ > y2_) y2_ = y_;
xs.push(x_);
ys.push(y_);
}
}
var dx = x2_ - x1_, dy = y2_ - y1_;
if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;
function insert(n, d, x, y, x1, y1, x2, y2) {
if (isNaN(x) || isNaN(y)) return;
if (n.leaf) {
var nx = n.x, ny = n.y;
if (nx != null) {
if (abs(nx - x) + abs(ny - y) < .01) {
insertChild(n, d, x, y, x1, y1, x2, y2);
} else {
var nPoint = n.point;
n.x = n.y = n.point = null;
insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);
insertChild(n, d, x, y, x1, y1, x2, y2);
}
} else {
n.x = x, n.y = y, n.point = d;
}
} else {
insertChild(n, d, x, y, x1, y1, x2, y2);
}
}
function insertChild(n, d, x, y, x1, y1, x2, y2) {
var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;
n.leaf = false;
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
if (right) x1 = xm; else x2 = xm;
if (below) y1 = ym; else y2 = ym;
insert(n, d, x, y, x1, y1, x2, y2);
}
var root = d3_geom_quadtreeNode();
root.add = function(d) {
insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);
};
root.visit = function(f) {
d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);
};
root.find = function(point) {
return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);
};
i = -1;
if (x1 == null) {
while (++i < n) {
insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);
}
--i;
} else data.forEach(root.add);
xs = ys = data = d = null;
return root;
}
quadtree.x = function(_) {
return arguments.length ? (x = _, quadtree) : x;
};
quadtree.y = function(_) {
return arguments.length ? (y = _, quadtree) : y;
};
quadtree.extent = function(_) {
if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];
if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0],
y2 = +_[1][1];
return quadtree;
};
quadtree.size = function(_) {
if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];
if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];
return quadtree;
};
return quadtree;
};
function d3_geom_quadtreeCompatX(d) {
return d.x;
}
function d3_geom_quadtreeCompatY(d) {
return d.y;
}
function d3_geom_quadtreeNode() {
return {
leaf: true,
nodes: [],
point: null,
x: null,
y: null
};
}
function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
if (!f(node, x1, y1, x2, y2)) {
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
}
}
function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
var minDistance2 = Infinity, closestPoint;
(function find(node, x1, y1, x2, y2) {
if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;
if (point = node.point) {
var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;
if (distance2 < minDistance2) {
var distance = Math.sqrt(minDistance2 = distance2);
x0 = x - distance, y0 = y - distance;
x3 = x + distance, y3 = y + distance;
closestPoint = point;
}
}
var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;
for (var i = below << 1 | right, j = i + 4; i < j; ++i) {
if (node = children[i & 3]) switch (i & 3) {
case 0:
find(node, x1, y1, xm, ym);
break;
case 1:
find(node, xm, y1, x2, ym);
break;
case 2:
find(node, x1, ym, xm, y2);
break;
case 3:
find(node, xm, ym, x2, y2);
break;
}
}
})(root, x0, y0, x3, y3);
return closestPoint;
}
d3.interpolateRgb = d3_interpolateRgb;
function d3_interpolateRgb(a, b) {
a = d3.rgb(a);
b = d3.rgb(b);
var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
return function(t) {
return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
};
}
d3.interpolateObject = d3_interpolateObject;
function d3_interpolateObject(a, b) {
var i = {}, c = {}, k;
for (k in a) {
if (k in b) {
i[k] = d3_interpolate(a[k], b[k]);
} else {
c[k] = a[k];
}
}
for (k in b) {
if (!(k in a)) {
c[k] = b[k];
}
}
return function(t) {
for (k in i) c[k] = i[k](t);
return c;
};
}
d3.interpolateNumber = d3_interpolateNumber;
function d3_interpolateNumber(a, b) {
a = +a, b = +b;
return function(t) {
return a * (1 - t) + b * t;
};
}
d3.interpolateString = d3_interpolateString;
function d3_interpolateString(a, b) {
var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];
a = a + "", b = b + "";
while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {
if ((bs = bm.index) > bi) {
bs = b.slice(bi, bs);
if (s[i]) s[i] += bs; else s[++i] = bs;
}
if ((am = am[0]) === (bm = bm[0])) {
if (s[i]) s[i] += bm; else s[++i] = bm;
} else {
s[++i] = null;
q.push({
i: i,
x: d3_interpolateNumber(am, bm)
});
}
bi = d3_interpolate_numberB.lastIndex;
}
if (bi < b.length) {
bs = b.slice(bi);
if (s[i]) s[i] += bs; else s[++i] = bs;
}
return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {
return b(t) + "";
}) : function() {
return b;
} : (b = q.length, function(t) {
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
});
}
var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
d3.interpolate = d3_interpolate;
function d3_interpolate(a, b) {
var i = d3.interpolators.length, f;
while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
return f;
}
d3.interpolators = [ function(a, b) {
var t = typeof b;
return (t === "string" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === "object" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);
} ];
d3.interpolateArray = d3_interpolateArray;
function d3_interpolateArray(a, b) {
var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
for (;i < na; ++i) c[i] = a[i];
for (;i < nb; ++i) c[i] = b[i];
return function(t) {
for (i = 0; i < n0; ++i) c[i] = x[i](t);
return c;
};
}
var d3_ease_default = function() {
return d3_identity;
};
var d3_ease = d3.map({
linear: d3_ease_default,
poly: d3_ease_poly,
quad: function() {
return d3_ease_quad;
},
cubic: function() {
return d3_ease_cubic;
},
sin: function() {
return d3_ease_sin;
},
exp: function() {
return d3_ease_exp;
},
circle: function() {
return d3_ease_circle;
},
elastic: d3_ease_elastic,
back: d3_ease_back,
bounce: function() {
return d3_ease_bounce;
}
});
var d3_ease_mode = d3.map({
"in": d3_identity,
out: d3_ease_reverse,
"in-out": d3_ease_reflect,
"out-in": function(f) {
return d3_ease_reflect(d3_ease_reverse(f));
}
});
d3.ease = function(name) {
var i = name.indexOf("-"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : "in";
t = d3_ease.get(t) || d3_ease_default;
m = d3_ease_mode.get(m) || d3_identity;
return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
};
function d3_ease_clamp(f) {
return function(t) {
return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
};
}
function d3_ease_reverse(f) {
return function(t) {
return 1 - f(1 - t);
};
}
function d3_ease_reflect(f) {
return function(t) {
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
};
}
function d3_ease_quad(t) {
return t * t;
}
function d3_ease_cubic(t) {
return t * t * t;
}
function d3_ease_cubicInOut(t) {
if (t <= 0) return 0;
if (t >= 1) return 1;
var t2 = t * t, t3 = t2 * t;
return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
}
function d3_ease_poly(e) {
return function(t) {
return Math.pow(t, e);
};
}
function d3_ease_sin(t) {
return 1 - Math.cos(t * halfπ);
}
function d3_ease_exp(t) {
return Math.pow(2, 10 * (t - 1));
}
function d3_ease_circle(t) {
return 1 - Math.sqrt(1 - t * t);
}
function d3_ease_elastic(a, p) {
var s;
if (arguments.length < 2) p = .45;
if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;
return function(t) {
return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
};
}
function d3_ease_back(s) {
if (!s) s = 1.70158;
return function(t) {
return t * t * ((s + 1) * t - s);
};
}
function d3_ease_bounce(t) {
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
}
d3.interpolateHcl = d3_interpolateHcl;
function d3_interpolateHcl(a, b) {
a = d3.hcl(a);
b = d3.hcl(b);
var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;
if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
return function(t) {
return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
};
}
d3.interpolateHsl = d3_interpolateHsl;
function d3_interpolateHsl(a, b) {
a = d3.hsl(a);
b = d3.hsl(b);
var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;
if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;
if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
return function(t) {
return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + "";
};
}
d3.interpolateLab = d3_interpolateLab;
function d3_interpolateLab(a, b) {
a = d3.lab(a);
b = d3.lab(b);
var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
return function(t) {
return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
};
}
d3.interpolateRound = d3_interpolateRound;
function d3_interpolateRound(a, b) {
b -= a;
return function(t) {
return Math.round(a + b * t);
};
}
d3.transform = function(string) {
var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
return (d3.transform = function(string) {
if (string != null) {
g.setAttribute("transform", string);
var t = g.transform.baseVal.consolidate();
}
return new d3_transform(t ? t.matrix : d3_transformIdentity);
})(string);
};
function d3_transform(m) {
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
if (r0[0] * r1[1] < r1[0] * r0[1]) {
r0[0] *= -1;
r0[1] *= -1;
kx *= -1;
kz *= -1;
}
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
this.translate = [ m.e, m.f ];
this.scale = [ kx, ky ];
this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
}
d3_transform.prototype.toString = function() {
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
};
function d3_transformDot(a, b) {
return a[0] * b[0] + a[1] * b[1];
}
function d3_transformNormalize(a) {
var k = Math.sqrt(d3_transformDot(a, a));
if (k) {
a[0] /= k;
a[1] /= k;
}
return k;
}
function d3_transformCombine(a, b, k) {
a[0] += k * b[0];
a[1] += k * b[1];
return a;
}
var d3_transformIdentity = {
a: 1,
b: 0,
c: 0,
d: 1,
e: 0,
f: 0
};
d3.interpolateTransform = d3_interpolateTransform;
function d3_interpolateTransformPop(s) {
return s.length ? s.pop() + "," : "";
}
function d3_interpolateTranslate(ta, tb, s, q) {
if (ta[0] !== tb[0] || ta[1] !== tb[1]) {
var i = s.push("translate(", null, ",", null, ")");
q.push({
i: i - 4,
x: d3_interpolateNumber(ta[0], tb[0])
}, {
i: i - 2,
x: d3_interpolateNumber(ta[1], tb[1])
});
} else if (tb[0] || tb[1]) {
s.push("translate(" + tb + ")");
}
}
function d3_interpolateRotate(ra, rb, s, q) {
if (ra !== rb) {
if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
q.push({
i: s.push(d3_interpolateTransformPop(s) + "rotate(", null, ")") - 2,
x: d3_interpolateNumber(ra, rb)
});
} else if (rb) {
s.push(d3_interpolateTransformPop(s) + "rotate(" + rb + ")");
}
}
function d3_interpolateSkew(wa, wb, s, q) {
if (wa !== wb) {
q.push({
i: s.push(d3_interpolateTransformPop(s) + "skewX(", null, ")") - 2,
x: d3_interpolateNumber(wa, wb)
});
} else if (wb) {
s.push(d3_interpolateTransformPop(s) + "skewX(" + wb + ")");
}
}
function d3_interpolateScale(ka, kb, s, q) {
if (ka[0] !== kb[0] || ka[1] !== kb[1]) {
var i = s.push(d3_interpolateTransformPop(s) + "scale(", null, ",", null, ")");
q.push({
i: i - 4,
x: d3_interpolateNumber(ka[0], kb[0])
}, {
i: i - 2,
x: d3_interpolateNumber(ka[1], kb[1])
});
} else if (kb[0] !== 1 || kb[1] !== 1) {
s.push(d3_interpolateTransformPop(s) + "scale(" + kb + ")");
}
}
function d3_interpolateTransform(a, b) {
var s = [], q = [];
a = d3.transform(a), b = d3.transform(b);
d3_interpolateTranslate(a.translate, b.translate, s, q);
d3_interpolateRotate(a.rotate, b.rotate, s, q);
d3_interpolateSkew(a.skew, b.skew, s, q);
d3_interpolateScale(a.scale, b.scale, s, q);
a = b = null;
return function(t) {
var i = -1, n = q.length, o;
while (++i < n) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
}
function d3_uninterpolateNumber(a, b) {
b = (b -= a = +a) || 1 / b;
return function(x) {
return (x - a) / b;
};
}
function d3_uninterpolateClamp(a, b) {
b = (b -= a = +a) || 1 / b;
return function(x) {
return Math.max(0, Math.min(1, (x - a) / b));
};
}
d3.layout = {};
d3.layout.bundle = function() {
return function(links) {
var paths = [], i = -1, n = links.length;
while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
return paths;
};
};
function d3_layout_bundlePath(link) {
var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
while (start !== lca) {
start = start.parent;
points.push(start);
}
var k = points.length;
while (end !== lca) {
points.splice(k, 0, end);
end = end.parent;
}
return points;
}
function d3_layout_bundleAncestors(node) {
var ancestors = [], parent = node.parent;
while (parent != null) {
ancestors.push(node);
node = parent;
parent = parent.parent;
}
ancestors.push(node);
return ancestors;
}
function d3_layout_bundleLeastCommonAncestor(a, b) {
if (a === b) return a;
var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
while (aNode === bNode) {
sharedNode = aNode;
aNode = aNodes.pop();
bNode = bNodes.pop();
}
return sharedNode;
}
d3.layout.chord = function() {
var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;
function relayout() {
var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;
chords = [];
groups = [];
k = 0, i = -1;
while (++i < n) {
x = 0, j = -1;
while (++j < n) {
x += matrix[i][j];
}
groupSums.push(x);
subgroupIndex.push(d3.range(n));
k += x;
}
if (sortGroups) {
groupIndex.sort(function(a, b) {
return sortGroups(groupSums[a], groupSums[b]);
});
}
if (sortSubgroups) {
subgroupIndex.forEach(function(d, i) {
d.sort(function(a, b) {
return sortSubgroups(matrix[i][a], matrix[i][b]);
});
});
}
k = (τ - padding * n) / k;
x = 0, i = -1;
while (++i < n) {
x0 = x, j = -1;
while (++j < n) {
var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;
subgroups[di + "-" + dj] = {
index: di,
subindex: dj,
startAngle: a0,
endAngle: a1,
value: v
};
}
groups[di] = {
index: di,
startAngle: x0,
endAngle: x,
value: groupSums[di]
};
x += padding;
}
i = -1;
while (++i < n) {
j = i - 1;
while (++j < n) {
var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i];
if (source.value || target.value) {
chords.push(source.value < target.value ? {
source: target,
target: source
} : {
source: source,
target: target
});
}
}
}
if (sortChords) resort();
}
function resort() {
chords.sort(function(a, b) {
return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);
});
}
chord.matrix = function(x) {
if (!arguments.length) return matrix;
n = (matrix = x) && matrix.length;
chords = groups = null;
return chord;
};
chord.padding = function(x) {
if (!arguments.length) return padding;
padding = x;
chords = groups = null;
return chord;
};
chord.sortGroups = function(x) {
if (!arguments.length) return sortGroups;
sortGroups = x;
chords = groups = null;
return chord;
};
chord.sortSubgroups = function(x) {
if (!arguments.length) return sortSubgroups;
sortSubgroups = x;
chords = null;
return chord;
};
chord.sortChords = function(x) {
if (!arguments.length) return sortChords;
sortChords = x;
if (chords) resort();
return chord;
};
chord.chords = function() {
if (!chords) relayout();
return chords;
};
chord.groups = function() {
if (!groups) relayout();
return groups;
};
return chord;
};
d3.layout.force = function() {
var force = {}, event = d3.dispatch("start", "tick", "end"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;
function repulse(node) {
return function(quad, x1, _, x2) {
if (quad.point !== node) {
var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;
if (dw * dw / theta2 < dn) {
if (dn < chargeDistance2) {
var k = quad.charge / dn;
node.px -= dx * k;
node.py -= dy * k;
}
return true;
}
if (quad.point && dn && dn < chargeDistance2) {
var k = quad.pointCharge / dn;
node.px -= dx * k;
node.py -= dy * k;
}
}
return !quad.charge;
};
}
force.tick = function() {
if ((alpha *= .99) < .005) {
timer = null;
event.end({
type: "end",
alpha: alpha = 0
});
return true;
}
var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;
for (i = 0; i < m; ++i) {
o = links[i];
s = o.source;
t = o.target;
x = t.x - s.x;
y = t.y - s.y;
if (l = x * x + y * y) {
l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
x *= l;
y *= l;
t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);
t.y -= y * k;
s.x += x * (k = 1 - k);
s.y += y * k;
}
}
if (k = alpha * gravity) {
x = size[0] / 2;
y = size[1] / 2;
i = -1;
if (k) while (++i < n) {
o = nodes[i];
o.x += (x - o.x) * k;
o.y += (y - o.y) * k;
}
}
if (charge) {
d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
i = -1;
while (++i < n) {
if (!(o = nodes[i]).fixed) {
q.visit(repulse(o));
}
}
}
i = -1;
while (++i < n) {
o = nodes[i];
if (o.fixed) {
o.x = o.px;
o.y = o.py;
} else {
o.x -= (o.px - (o.px = o.x)) * friction;
o.y -= (o.py - (o.py = o.y)) * friction;
}
}
event.tick({
type: "tick",
alpha: alpha
});
};
force.nodes = function(x) {
if (!arguments.length) return nodes;
nodes = x;
return force;
};
force.links = function(x) {
if (!arguments.length) return links;
links = x;
return force;
};
force.size = function(x) {
if (!arguments.length) return size;
size = x;
return force;
};
force.linkDistance = function(x) {
if (!arguments.length) return linkDistance;
linkDistance = typeof x === "function" ? x : +x;
return force;
};
force.distance = force.linkDistance;
force.linkStrength = function(x) {
if (!arguments.length) return linkStrength;
linkStrength = typeof x === "function" ? x : +x;
return force;
};
force.friction = function(x) {
if (!arguments.length) return friction;
friction = +x;
return force;
};
force.charge = function(x) {
if (!arguments.length) return charge;
charge = typeof x === "function" ? x : +x;
return force;
};
force.chargeDistance = function(x) {
if (!arguments.length) return Math.sqrt(chargeDistance2);
chargeDistance2 = x * x;
return force;
};
force.gravity = function(x) {
if (!arguments.length) return gravity;
gravity = +x;
return force;
};
force.theta = function(x) {
if (!arguments.length) return Math.sqrt(theta2);
theta2 = x * x;
return force;
};
force.alpha = function(x) {
if (!arguments.length) return alpha;
x = +x;
if (alpha) {
if (x > 0) {
alpha = x;
} else {
timer.c = null, timer.t = NaN, timer = null;
event.end({
type: "end",
alpha: alpha = 0
});
}
} else if (x > 0) {
event.start({
type: "start",
alpha: alpha = x
});
timer = d3_timer(force.tick);
}
return force;
};
force.start = function() {
var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
for (i = 0; i < n; ++i) {
(o = nodes[i]).index = i;
o.weight = 0;
}
for (i = 0; i < m; ++i) {
o = links[i];
if (typeof o.source == "number") o.source = nodes[o.source];
if (typeof o.target == "number") o.target = nodes[o.target];
++o.source.weight;
++o.target.weight;
}
for (i = 0; i < n; ++i) {
o = nodes[i];
if (isNaN(o.x)) o.x = position("x", w);
if (isNaN(o.y)) o.y = position("y", h);
if (isNaN(o.px)) o.px = o.x;
if (isNaN(o.py)) o.py = o.y;
}
distances = [];
if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;
strengths = [];
if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;
charges = [];
if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;
function position(dimension, size) {
if (!neighbors) {
neighbors = new Array(n);
for (j = 0; j < n; ++j) {
neighbors[j] = [];
}
for (j = 0; j < m; ++j) {
var o = links[j];
neighbors[o.source.index].push(o.target);
neighbors[o.target.index].push(o.source);
}
}
var candidates = neighbors[i], j = -1, l = candidates.length, x;
while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;
return Math.random() * size;
}
return force.resume();
};
force.resume = function() {
return force.alpha(.1);
};
force.stop = function() {
return force.alpha(0);
};
force.drag = function() {
if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend);
if (!arguments.length) return drag;
this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag);
};
function dragmove(d) {
d.px = d3.event.x, d.py = d3.event.y;
force.resume();
}
return d3.rebind(force, event, "on");
};
function d3_layout_forceDragstart(d) {
d.fixed |= 2;
}
function d3_layout_forceDragend(d) {
d.fixed &= ~6;
}
function d3_layout_forceMouseover(d) {
d.fixed |= 4;
d.px = d.x, d.py = d.y;
}
function d3_layout_forceMouseout(d) {
d.fixed &= ~4;
}
function d3_layout_forceAccumulate(quad, alpha, charges) {
var cx = 0, cy = 0;
quad.charge = 0;
if (!quad.leaf) {
var nodes = quad.nodes, n = nodes.length, i = -1, c;
while (++i < n) {
c = nodes[i];
if (c == null) continue;
d3_layout_forceAccumulate(c, alpha, charges);
quad.charge += c.charge;
cx += c.charge * c.cx;
cy += c.charge * c.cy;
}
}
if (quad.point) {
if (!quad.leaf) {
quad.point.x += Math.random() - .5;
quad.point.y += Math.random() - .5;
}
var k = alpha * charges[quad.point.index];
quad.charge += quad.pointCharge = k;
cx += k * quad.point.x;
cy += k * quad.point.y;
}
quad.cx = cx / quad.charge;
quad.cy = cy / quad.charge;
}
var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;
d3.layout.hierarchy = function() {
var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
function hierarchy(root) {
var stack = [ root ], nodes = [], node;
root.depth = 0;
while ((node = stack.pop()) != null) {
nodes.push(node);
if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {
var n, childs, child;
while (--n >= 0) {
stack.push(child = childs[n]);
child.parent = node;
child.depth = node.depth + 1;
}
if (value) node.value = 0;
node.children = childs;
} else {
if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;
delete node.children;
}
}
d3_layout_hierarchyVisitAfter(root, function(node) {
var childs, parent;
if (sort && (childs = node.children)) childs.sort(sort);
if (value && (parent = node.parent)) parent.value += node.value;
});
return nodes;
}
hierarchy.sort = function(x) {
if (!arguments.length) return sort;
sort = x;
return hierarchy;
};
hierarchy.children = function(x) {
if (!arguments.length) return children;
children = x;
return hierarchy;
};
hierarchy.value = function(x) {
if (!arguments.length) return value;
value = x;
return hierarchy;
};
hierarchy.revalue = function(root) {
if (value) {
d3_layout_hierarchyVisitBefore(root, function(node) {
if (node.children) node.value = 0;
});
d3_layout_hierarchyVisitAfter(root, function(node) {
var parent;
if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;
if (parent = node.parent) parent.value += node.value;
});
}
return root;
};
return hierarchy;
};
function d3_layout_hierarchyRebind(object, hierarchy) {
d3.rebind(object, hierarchy, "sort", "children", "value");
object.nodes = object;
object.links = d3_layout_hierarchyLinks;
return object;
}
function d3_layout_hierarchyVisitBefore(node, callback) {
var nodes = [ node ];
while ((node = nodes.pop()) != null) {
callback(node);
if ((children = node.children) && (n = children.length)) {
var n, children;
while (--n >= 0) nodes.push(children[n]);
}
}
}
function d3_layout_hierarchyVisitAfter(node, callback) {
var nodes = [ node ], nodes2 = [];
while ((node = nodes.pop()) != null) {
nodes2.push(node);
if ((children = node.children) && (n = children.length)) {
var i = -1, n, children;
while (++i < n) nodes.push(children[i]);
}
}
while ((node = nodes2.pop()) != null) {
callback(node);
}
}
function d3_layout_hierarchyChildren(d) {
return d.children;
}
function d3_layout_hierarchyValue(d) {
return d.value;
}
function d3_layout_hierarchySort(a, b) {
return b.value - a.value;
}
function d3_layout_hierarchyLinks(nodes) {
return d3.merge(nodes.map(function(parent) {
return (parent.children || []).map(function(child) {
return {
source: parent,
target: child
};
});
}));
}
d3.layout.partition = function() {
var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];
function position(node, x, dx, dy) {
var children = node.children;
node.x = x;
node.y = node.depth * dy;
node.dx = dx;
node.dy = dy;
if (children && (n = children.length)) {
var i = -1, n, c, d;
dx = node.value ? dx / node.value : 0;
while (++i < n) {
position(c = children[i], x, d = c.value * dx, dy);
x += d;
}
}
}
function depth(node) {
var children = node.children, d = 0;
if (children && (n = children.length)) {
var i = -1, n;
while (++i < n) d = Math.max(d, depth(children[i]));
}
return 1 + d;
}
function partition(d, i) {
var nodes = hierarchy.call(this, d, i);
position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
return nodes;
}
partition.size = function(x) {
if (!arguments.length) return size;
size = x;
return partition;
};
return d3_layout_hierarchyRebind(partition, hierarchy);
};
d3.layout.pie = function() {
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;
function pie(data) {
var n = data.length, values = data.map(function(d, i) {
return +value.call(pie, d, i);
}), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;
if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
return values[j] - values[i];
} : function(i, j) {
return sort(data[i], data[j]);
});
index.forEach(function(i) {
arcs[i] = {
data: data[i],
value: v = values[i],
startAngle: a,
endAngle: a += v * k + pa,
padAngle: p
};
});
return arcs;
}
pie.value = function(_) {
if (!arguments.length) return value;
value = _;
return pie;
};
pie.sort = function(_) {
if (!arguments.length) return sort;
sort = _;
return pie;
};
pie.startAngle = function(_) {
if (!arguments.length) return startAngle;
startAngle = _;
return pie;
};
pie.endAngle = function(_) {
if (!arguments.length) return endAngle;
endAngle = _;
return pie;
};
pie.padAngle = function(_) {
if (!arguments.length) return padAngle;
padAngle = _;
return pie;
};
return pie;
};
var d3_layout_pieSortByValue = {};
d3.layout.stack = function() {
var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
function stack(data, index) {
if (!(n = data.length)) return data;
var series = data.map(function(d, i) {
return values.call(stack, d, i);
});
var points = series.map(function(d) {
return d.map(function(v, i) {
return [ x.call(stack, v, i), y.call(stack, v, i) ];
});
});
var orders = order.call(stack, points, index);
series = d3.permute(series, orders);
points = d3.permute(points, orders);
var offsets = offset.call(stack, points, index);
var m = series[0].length, n, i, j, o;
for (j = 0; j < m; ++j) {
out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
for (i = 1; i < n; ++i) {
out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
}
}
return data;
}
stack.values = function(x) {
if (!arguments.length) return values;
values = x;
return stack;
};
stack.order = function(x) {
if (!arguments.length) return order;
order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;
return stack;
};
stack.offset = function(x) {
if (!arguments.length) return offset;
offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;
return stack;
};
stack.x = function(z) {
if (!arguments.length) return x;
x = z;
return stack;
};
stack.y = function(z) {
if (!arguments.length) return y;
y = z;
return stack;
};
stack.out = function(z) {
if (!arguments.length) return out;
out = z;
return stack;
};
return stack;
};
function d3_layout_stackX(d) {
return d.x;
}
function d3_layout_stackY(d) {
return d.y;
}
function d3_layout_stackOut(d, y0, y) {
d.y0 = y0;
d.y = y;
}
var d3_layout_stackOrders = d3.map({
"inside-out": function(data) {
var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {
return max[a] - max[b];
}), top = 0, bottom = 0, tops = [], bottoms = [];
for (i = 0; i < n; ++i) {
j = index[i];
if (top < bottom) {
top += sums[j];
tops.push(j);
} else {
bottom += sums[j];
bottoms.push(j);
}
}
return bottoms.reverse().concat(tops);
},
reverse: function(data) {
return d3.range(data.length).reverse();
},
"default": d3_layout_stackOrderDefault
});
var d3_layout_stackOffsets = d3.map({
silhouette: function(data) {
var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];
for (j = 0; j < m; ++j) {
for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
if (o > max) max = o;
sums.push(o);
}
for (j = 0; j < m; ++j) {
y0[j] = (max - sums[j]) / 2;
}
return y0;
},
wiggle: function(data) {
var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];
y0[0] = o = o0 = 0;
for (j = 1; j < m; ++j) {
for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
}
s2 += s3 * data[i][j][1];
}
y0[j] = o -= s1 ? s2 / s1 * dx : 0;
if (o < o0) o0 = o;
}
for (j = 0; j < m; ++j) y0[j] -= o0;
return y0;
},
expand: function(data) {
var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];
for (j = 0; j < m; ++j) {
for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;
}
for (j = 0; j < m; ++j) y0[j] = 0;
return y0;
},
zero: d3_layout_stackOffsetZero
});
function d3_layout_stackOrderDefault(data) {
return d3.range(data.length);
}
function d3_layout_stackOffsetZero(data) {
var j = -1, m = data[0].length, y0 = [];
while (++j < m) y0[j] = 0;
return y0;
}
function d3_layout_stackMaxIndex(array) {
var i = 1, j = 0, v = array[0][1], k, n = array.length;
for (;i < n; ++i) {
if ((k = array[i][1]) > v) {
j = i;
v = k;
}
}
return j;
}
function d3_layout_stackReduceSum(d) {
return d.reduce(d3_layout_stackSum, 0);
}
function d3_layout_stackSum(p, d) {
return p + d[1];
}
d3.layout.histogram = function() {
var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;
function histogram(data, i) {
var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;
while (++i < m) {
bin = bins[i] = [];
bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
bin.y = 0;
}
if (m > 0) {
i = -1;
while (++i < n) {
x = values[i];
if (x >= range[0] && x <= range[1]) {
bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
bin.y += k;
bin.push(data[i]);
}
}
}
return bins;
}
histogram.value = function(x) {
if (!arguments.length) return valuer;
valuer = x;
return histogram;
};
histogram.range = function(x) {
if (!arguments.length) return ranger;
ranger = d3_functor(x);
return histogram;
};
histogram.bins = function(x) {
if (!arguments.length) return binner;
binner = typeof x === "number" ? function(range) {
return d3_layout_histogramBinFixed(range, x);
} : d3_functor(x);
return histogram;
};
histogram.frequency = function(x) {
if (!arguments.length) return frequency;
frequency = !!x;
return histogram;
};
return histogram;
};
function d3_layout_histogramBinSturges(range, values) {
return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
}
function d3_layout_histogramBinFixed(range, n) {
var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
while (++x <= n) f[x] = m * x + b;
return f;
}
function d3_layout_histogramRange(values) {
return [ d3.min(values), d3.max(values) ];
}
d3.layout.pack = function() {
var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;
function pack(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() {
return radius;
};
root.x = root.y = 0;
d3_layout_hierarchyVisitAfter(root, function(d) {
d.r = +r(d.value);
});
d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);
if (padding) {
var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;
d3_layout_hierarchyVisitAfter(root, function(d) {
d.r += dr;
});
d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);
d3_layout_hierarchyVisitAfter(root, function(d) {
d.r -= dr;
});
}
d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));
return nodes;
}
pack.size = function(_) {
if (!arguments.length) return size;
size = _;
return pack;
};
pack.radius = function(_) {
if (!arguments.length) return radius;
radius = _ == null || typeof _ === "function" ? _ : +_;
return pack;
};
pack.padding = function(_) {
if (!arguments.length) return padding;
padding = +_;
return pack;
};
return d3_layout_hierarchyRebind(pack, hierarchy);
};
function d3_layout_packSort(a, b) {
return a.value - b.value;
}
function d3_layout_packInsert(a, b) {
var c = a._pack_next;
a._pack_next = b;
b._pack_prev = a;
b._pack_next = c;
c._pack_prev = b;
}
function d3_layout_packSplice(a, b) {
a._pack_next = b;
b._pack_prev = a;
}
function d3_layout_packIntersects(a, b) {
var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
return .999 * dr * dr > dx * dx + dy * dy;
}
function d3_layout_packSiblings(node) {
if (!(nodes = node.children) || !(n = nodes.length)) return;
var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
function bound(node) {
xMin = Math.min(node.x - node.r, xMin);
xMax = Math.max(node.x + node.r, xMax);
yMin = Math.min(node.y - node.r, yMin);
yMax = Math.max(node.y + node.r, yMax);
}
nodes.forEach(d3_layout_packLink);
a = nodes[0];
a.x = -a.r;
a.y = 0;
bound(a);
if (n > 1) {
b = nodes[1];
b.x = b.r;
b.y = 0;
bound(b);
if (n > 2) {
c = nodes[2];
d3_layout_packPlace(a, b, c);
bound(c);
d3_layout_packInsert(a, c);
a._pack_prev = c;
d3_layout_packInsert(c, b);
b = a._pack_next;
for (i = 3; i < n; i++) {
d3_layout_packPlace(a, b, c = nodes[i]);
var isect = 0, s1 = 1, s2 = 1;
for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
if (d3_layout_packIntersects(j, c)) {
isect = 1;
break;
}
}
if (isect == 1) {
for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
if (d3_layout_packIntersects(k, c)) {
break;
}
}
}
if (isect) {
if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
i--;
} else {
d3_layout_packInsert(a, c);
b = c;
bound(c);
}
}
}
}
var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
for (i = 0; i < n; i++) {
c = nodes[i];
c.x -= cx;
c.y -= cy;
cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
}
node.r = cr;
nodes.forEach(d3_layout_packUnlink);
}
function d3_layout_packLink(node) {
node._pack_next = node._pack_prev = node;
}
function d3_layout_packUnlink(node) {
delete node._pack_next;
delete node._pack_prev;
}
function d3_layout_packTransform(node, x, y, k) {
var children = node.children;
node.x = x += k * node.x;
node.y = y += k * node.y;
node.r *= k;
if (children) {
var i = -1, n = children.length;
while (++i < n) d3_layout_packTransform(children[i], x, y, k);
}
}
function d3_layout_packPlace(a, b, c) {
var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
if (db && (dx || dy)) {
var da = b.r + c.r, dc = dx * dx + dy * dy;
da *= da;
db *= db;
var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
c.x = a.x + x * dx + y * dy;
c.y = a.y + x * dy - y * dx;
} else {
c.x = a.x + db;
c.y = a.y;
}
}
d3.layout.tree = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;
function tree(d, i) {
var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);
d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;
d3_layout_hierarchyVisitBefore(root1, secondWalk);
if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {
var left = root0, right = root0, bottom = root0;
d3_layout_hierarchyVisitBefore(root0, function(node) {
if (node.x < left.x) left = node;
if (node.x > right.x) right = node;
if (node.depth > bottom.depth) bottom = node;
});
var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);
d3_layout_hierarchyVisitBefore(root0, function(node) {
node.x = (node.x + tx) * kx;
node.y = node.depth * ky;
});
}
return nodes;
}
function wrapTree(root0) {
var root1 = {
A: null,
children: [ root0 ]
}, queue = [ root1 ], node1;
while ((node1 = queue.pop()) != null) {
for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {
queue.push((children[i] = child = {
_: children[i],
parent: node1,
children: (child = children[i].children) && child.slice() || [],
A: null,
a: null,
z: 0,
m: 0,
c: 0,
s: 0,
t: null,
i: i
}).a = child);
}
}
return root1.children[0];
}
function firstWalk(v) {
var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;
if (children.length) {
d3_layout_treeShift(v);
var midpoint = (children[0].z + children[children.length - 1].z) / 2;
if (w) {
v.z = w.z + separation(v._, w._);
v.m = v.z - midpoint;
} else {
v.z = midpoint;
}
} else if (w) {
v.z = w.z + separation(v._, w._);
}
v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
}
function secondWalk(v) {
v._.x = v.z + v.parent.m;
v.m += v.parent.m;
}
function apportion(v, w, ancestor) {
if (w) {
var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;
while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
vom = d3_layout_treeLeft(vom);
vop = d3_layout_treeRight(vop);
vop.a = v;
shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
if (shift > 0) {
d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);
sip += shift;
sop += shift;
}
sim += vim.m;
sip += vip.m;
som += vom.m;
sop += vop.m;
}
if (vim && !d3_layout_treeRight(vop)) {
vop.t = vim;
vop.m += sim - sop;
}
if (vip && !d3_layout_treeLeft(vom)) {
vom.t = vip;
vom.m += sip - som;
ancestor = v;
}
}
return ancestor;
}
function sizeNode(node) {
node.x *= size[0];
node.y = node.depth * size[1];
}
tree.separation = function(x) {
if (!arguments.length) return separation;
separation = x;
return tree;
};
tree.size = function(x) {
if (!arguments.length) return nodeSize ? null : size;
nodeSize = (size = x) == null ? sizeNode : null;
return tree;
};
tree.nodeSize = function(x) {
if (!arguments.length) return nodeSize ? size : null;
nodeSize = (size = x) == null ? null : sizeNode;
return tree;
};
return d3_layout_hierarchyRebind(tree, hierarchy);
};
function d3_layout_treeSeparation(a, b) {
return a.parent == b.parent ? 1 : 2;
}
function d3_layout_treeLeft(v) {
var children = v.children;
return children.length ? children[0] : v.t;
}
function d3_layout_treeRight(v) {
var children = v.children, n;
return (n = children.length) ? children[n - 1] : v.t;
}
function d3_layout_treeMove(wm, wp, shift) {
var change = shift / (wp.i - wm.i);
wp.c -= change;
wp.s += shift;
wm.c += change;
wp.z += shift;
wp.m += shift;
}
function d3_layout_treeShift(v) {
var shift = 0, change = 0, children = v.children, i = children.length, w;
while (--i >= 0) {
w = children[i];
w.z += shift;
w.m += shift;
shift += w.s + (change += w.c);
}
}
function d3_layout_treeAncestor(vim, v, ancestor) {
return vim.a.parent === v.parent ? vim.a : ancestor;
}
d3.layout.cluster = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
function cluster(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;
d3_layout_hierarchyVisitAfter(root, function(node) {
var children = node.children;
if (children && children.length) {
node.x = d3_layout_clusterX(children);
node.y = d3_layout_clusterY(children);
} else {
node.x = previousNode ? x += separation(node, previousNode) : 0;
node.y = 0;
previousNode = node;
}
});
var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {
node.x = (node.x - root.x) * size[0];
node.y = (root.y - node.y) * size[1];
} : function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
});
return nodes;
}
cluster.separation = function(x) {
if (!arguments.length) return separation;
separation = x;
return cluster;
};
cluster.size = function(x) {
if (!arguments.length) return nodeSize ? null : size;
nodeSize = (size = x) == null;
return cluster;
};
cluster.nodeSize = function(x) {
if (!arguments.length) return nodeSize ? size : null;
nodeSize = (size = x) != null;
return cluster;
};
return d3_layout_hierarchyRebind(cluster, hierarchy);
};
function d3_layout_clusterY(children) {
return 1 + d3.max(children, function(child) {
return child.y;
});
}
function d3_layout_clusterX(children) {
return children.reduce(function(x, child) {
return x + child.x;
}, 0) / children.length;
}
function d3_layout_clusterLeft(node) {
var children = node.children;
return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
}
function d3_layout_clusterRight(node) {
var children = node.children, n;
return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
}
d3.layout.treemap = function() {
var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5));
function scale(children, k) {
var i = -1, n = children.length, child, area;
while (++i < n) {
area = (child = children[i]).value * (k < 0 ? 0 : k);
child.area = isNaN(area) || area <= 0 ? 0 : area;
}
}
function squarify(node) {
var children = node.children;
if (children && children.length) {
var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;
scale(remaining, rect.dx * rect.dy / node.value);
row.area = 0;
while ((n = remaining.length) > 0) {
row.push(child = remaining[n - 1]);
row.area += child.area;
if (mode !== "squarify" || (score = worst(row, u)) <= best) {
remaining.pop();
best = score;
} else {
row.area -= row.pop().area;
position(row, u, rect, false);
u = Math.min(rect.dx, rect.dy);
row.length = row.area = 0;
best = Infinity;
}
}
if (row.length) {
position(row, u, rect, true);
row.length = row.area = 0;
}
children.forEach(squarify);
}
}
function stickify(node) {
var children = node.children;
if (children && children.length) {
var rect = pad(node), remaining = children.slice(), child, row = [];
scale(remaining, rect.dx * rect.dy / node.value);
row.area = 0;
while (child = remaining.pop()) {
row.push(child);
row.area += child.area;
if (child.z != null) {
position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
row.length = row.area = 0;
}
}
children.forEach(stickify);
}
}
function worst(row, u) {
var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;
while (++i < n) {
if (!(r = row[i].area)) continue;
if (r < rmin) rmin = r;
if (r > rmax) rmax = r;
}
s *= s;
u *= u;
return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;
}
function position(row, u, rect, flush) {
var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;
if (u == rect.dx) {
if (flush || v > rect.dy) v = rect.dy;
while (++i < n) {
o = row[i];
o.x = x;
o.y = y;
o.dy = v;
x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);
}
o.z = true;
o.dx += rect.x + rect.dx - x;
rect.y += v;
rect.dy -= v;
} else {
if (flush || v > rect.dx) v = rect.dx;
while (++i < n) {
o = row[i];
o.x = x;
o.y = y;
o.dx = v;
y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);
}
o.z = false;
o.dy += rect.y + rect.dy - y;
rect.x += v;
rect.dx -= v;
}
}
function treemap(d) {
var nodes = stickies || hierarchy(d), root = nodes[0];
root.x = root.y = 0;
if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;
if (stickies) hierarchy.revalue(root);
scale([ root ], root.dx * root.dy / root.value);
(stickies ? stickify : squarify)(root);
if (sticky) stickies = nodes;
return nodes;
}
treemap.size = function(x) {
if (!arguments.length) return size;
size = x;
return treemap;
};
treemap.padding = function(x) {
if (!arguments.length) return padding;
function padFunction(node) {
var p = x.call(treemap, node, node.depth);
return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p);
}
function padConstant(node) {
return d3_layout_treemapPad(node, x);
}
var type;
pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ],
padConstant) : padConstant;
return treemap;
};
treemap.round = function(x) {
if (!arguments.length) return round != Number;
round = x ? Math.round : Number;
return treemap;
};
treemap.sticky = function(x) {
if (!arguments.length) return sticky;
sticky = x;
stickies = null;
return treemap;
};
treemap.ratio = function(x) {
if (!arguments.length) return ratio;
ratio = x;
return treemap;
};
treemap.mode = function(x) {
if (!arguments.length) return mode;
mode = x + "";
return treemap;
};
return d3_layout_hierarchyRebind(treemap, hierarchy);
};
function d3_layout_treemapPadNull(node) {
return {
x: node.x,
y: node.y,
dx: node.dx,
dy: node.dy
};
}
function d3_layout_treemapPad(node, padding) {
var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
if (dx < 0) {
x += dx / 2;
dx = 0;
}
if (dy < 0) {
y += dy / 2;
dy = 0;
}
return {
x: x,
y: y,
dx: dx,
dy: dy
};
}
d3.random = {
normal: function(µ, σ) {
var n = arguments.length;
if (n < 2) σ = 1;
if (n < 1) µ = 0;
return function() {
var x, y, r;
do {
x = Math.random() * 2 - 1;
y = Math.random() * 2 - 1;
r = x * x + y * y;
} while (!r || r > 1);
return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
};
},
logNormal: function() {
var random = d3.random.normal.apply(d3, arguments);
return function() {
return Math.exp(random());
};
},
bates: function(m) {
var random = d3.random.irwinHall(m);
return function() {
return random() / m;
};
},
irwinHall: function(m) {
return function() {
for (var s = 0, j = 0; j < m; j++) s += Math.random();
return s;
};
}
};
d3.scale = {};
function d3_scaleExtent(domain) {
var start = domain[0], stop = domain[domain.length - 1];
return start < stop ? [ start, stop ] : [ stop, start ];
}
function d3_scaleRange(scale) {
return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
}
function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
return function(x) {
return i(u(x));
};
}
function d3_scale_nice(domain, nice) {
var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
if (x1 < x0) {
dx = i0, i0 = i1, i1 = dx;
dx = x0, x0 = x1, x1 = dx;
}
domain[i0] = nice.floor(x0);
domain[i1] = nice.ceil(x1);
return domain;
}
function d3_scale_niceStep(step) {
return step ? {
floor: function(x) {
return Math.floor(x / step) * step;
},
ceil: function(x) {
return Math.ceil(x / step) * step;
}
} : d3_scale_niceIdentity;
}
var d3_scale_niceIdentity = {
floor: d3_identity,
ceil: d3_identity
};
function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
if (domain[k] < domain[0]) {
domain = domain.slice().reverse();
range = range.slice().reverse();
}
while (++j <= k) {
u.push(uninterpolate(domain[j - 1], domain[j]));
i.push(interpolate(range[j - 1], range[j]));
}
return function(x) {
var j = d3.bisect(domain, x, 1, k) - 1;
return i[j](u[j](x));
};
}
d3.scale.linear = function() {
return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);
};
function d3_scale_linear(domain, range, interpolate, clamp) {
var output, input;
function rescale() {
var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
output = linear(domain, range, uninterpolate, interpolate);
input = linear(range, domain, uninterpolate, d3_interpolate);
return scale;
}
function scale(x) {
return output(x);
}
scale.invert = function(y) {
return input(y);
};
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x.map(Number);
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.rangeRound = function(x) {
return scale.range(x).interpolate(d3_interpolateRound);
};
scale.clamp = function(x) {
if (!arguments.length) return clamp;
clamp = x;
return rescale();
};
scale.interpolate = function(x) {
if (!arguments.length) return interpolate;
interpolate = x;
return rescale();
};
scale.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
scale.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
scale.nice = function(m) {
d3_scale_linearNice(domain, m);
return rescale();
};
scale.copy = function() {
return d3_scale_linear(domain, range, interpolate, clamp);
};
return rescale();
}
function d3_scale_linearRebind(scale, linear) {
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
}
function d3_scale_linearNice(domain, m) {
d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
return domain;
}
function d3_scale_linearTickRange(domain, m) {
if (m == null) m = 10;
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
extent[0] = Math.ceil(extent[0] / step) * step;
extent[1] = Math.floor(extent[1] / step) * step + step * .5;
extent[2] = step;
return extent;
}
function d3_scale_linearTicks(domain, m) {
return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
}
function d3_scale_linearTickFormat(domain, m, format) {
var range = d3_scale_linearTickRange(domain, m);
if (format) {
var match = d3_format_re.exec(format);
match.shift();
if (match[8] === "s") {
var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));
if (!match[7]) match[7] = "." + d3_scale_linearPrecision(prefix.scale(range[2]));
match[8] = "f";
format = d3.format(match.join(""));
return function(d) {
return format(prefix.scale(d)) + prefix.symbol;
};
}
if (!match[7]) match[7] = "." + d3_scale_linearFormatPrecision(match[8], range);
format = match.join("");
} else {
format = ",." + d3_scale_linearPrecision(range[2]) + "f";
}
return d3.format(format);
}
var d3_scale_linearFormatSignificant = {
s: 1,
g: 1,
p: 1,
r: 1,
e: 1
};
function d3_scale_linearPrecision(value) {
return -Math.floor(Math.log(value) / Math.LN10 + .01);
}
function d3_scale_linearFormatPrecision(type, range) {
var p = d3_scale_linearPrecision(range[2]);
return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== "e") : p - (type === "%") * 2;
}
d3.scale.log = function() {
return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);
};
function d3_scale_log(linear, base, positive, domain) {
function log(x) {
return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);
}
function pow(x) {
return positive ? Math.pow(base, x) : -Math.pow(base, -x);
}
function scale(x) {
return linear(log(x));
}
scale.invert = function(x) {
return pow(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return domain;
positive = x[0] >= 0;
linear.domain((domain = x.map(Number)).map(log));
return scale;
};
scale.base = function(_) {
if (!arguments.length) return base;
base = +_;
linear.domain(domain.map(log));
return scale;
};
scale.nice = function() {
var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);
linear.domain(niced);
domain = niced.map(pow);
return scale;
};
scale.ticks = function() {
var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;
if (isFinite(j - i)) {
if (positive) {
for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);
ticks.push(pow(i));
} else {
ticks.push(pow(i));
for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);
}
for (i = 0; ticks[i] < u; i++) {}
for (j = ticks.length; ticks[j - 1] > v; j--) {}
ticks = ticks.slice(i, j);
}
return ticks;
};
scale.tickFormat = function(n, format) {
if (!arguments.length) return d3_scale_logFormat;
if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format);
var k = Math.max(1, base * n / scale.ticks().length);
return function(d) {
var i = d / pow(Math.round(log(d)));
if (i * base < base - .5) i *= base;
return i <= k ? format(d) : "";
};
};
scale.copy = function() {
return d3_scale_log(linear.copy(), base, positive, domain);
};
return d3_scale_linearRebind(scale, linear);
}
var d3_scale_logFormat = d3.format(".0e"), d3_scale_logNiceNegative = {
floor: function(x) {
return -Math.ceil(-x);
},
ceil: function(x) {
return -Math.floor(-x);
}
};
d3.scale.pow = function() {
return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);
};
function d3_scale_pow(linear, exponent, domain) {
var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
function scale(x) {
return linear(powp(x));
}
scale.invert = function(x) {
return powb(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return domain;
linear.domain((domain = x.map(Number)).map(powp));
return scale;
};
scale.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
scale.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
scale.nice = function(m) {
return scale.domain(d3_scale_linearNice(domain, m));
};
scale.exponent = function(x) {
if (!arguments.length) return exponent;
powp = d3_scale_powPow(exponent = x);
powb = d3_scale_powPow(1 / exponent);
linear.domain(domain.map(powp));
return scale;
};
scale.copy = function() {
return d3_scale_pow(linear.copy(), exponent, domain);
};
return d3_scale_linearRebind(scale, linear);
}
function d3_scale_powPow(e) {
return function(x) {
return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
};
}
d3.scale.sqrt = function() {
return d3.scale.pow().exponent(.5);
};
d3.scale.ordinal = function() {
return d3_scale_ordinal([], {
t: "range",
a: [ [] ]
});
};
function d3_scale_ordinal(domain, ranger) {
var index, range, rangeBand;
function scale(x) {
return range[((index.get(x) || (ranger.t === "range" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];
}
function steps(start, step) {
return d3.range(domain.length).map(function(i) {
return start + step * i;
});
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = [];
index = new d3_Map();
var i = -1, n = x.length, xi;
while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
return scale[ranger.t].apply(scale, ranger.a);
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
rangeBand = 0;
ranger = {
t: "range",
a: arguments
};
return scale;
};
scale.rangePoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2,
0) : (stop - start) / (domain.length - 1 + padding);
range = steps(start + step * padding / 2, step);
rangeBand = 0;
ranger = {
t: "rangePoints",
a: arguments
};
return scale;
};
scale.rangeRoundPoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2),
0) : (stop - start) / (domain.length - 1 + padding) | 0;
range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);
rangeBand = 0;
ranger = {
t: "rangeRoundPoints",
a: arguments
};
return scale;
};
scale.rangeBands = function(x, padding, outerPadding) {
if (arguments.length < 2) padding = 0;
if (arguments.length < 3) outerPadding = padding;
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
range = steps(start + step * outerPadding, step);
if (reverse) range.reverse();
rangeBand = step * (1 - padding);
ranger = {
t: "rangeBands",
a: arguments
};
return scale;
};
scale.rangeRoundBands = function(x, padding, outerPadding) {
if (arguments.length < 2) padding = 0;
if (arguments.length < 3) outerPadding = padding;
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));
range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);
if (reverse) range.reverse();
rangeBand = Math.round(step * (1 - padding));
ranger = {
t: "rangeRoundBands",
a: arguments
};
return scale;
};
scale.rangeBand = function() {
return rangeBand;
};
scale.rangeExtent = function() {
return d3_scaleExtent(ranger.a[0]);
};
scale.copy = function() {
return d3_scale_ordinal(domain, ranger);
};
return scale.domain(domain);
}
d3.scale.category10 = function() {
return d3.scale.ordinal().range(d3_category10);
};
d3.scale.category20 = function() {
return d3.scale.ordinal().range(d3_category20);
};
d3.scale.category20b = function() {
return d3.scale.ordinal().range(d3_category20b);
};
d3.scale.category20c = function() {
return d3.scale.ordinal().range(d3_category20c);
};
var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);
var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);
var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);
var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);
d3.scale.quantile = function() {
return d3_scale_quantile([], []);
};
function d3_scale_quantile(domain, range) {
var thresholds;
function rescale() {
var k = 0, q = range.length;
thresholds = [];
while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
return scale;
}
function scale(x) {
if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.quantiles = function() {
return thresholds;
};
scale.invertExtent = function(y) {
y = range.indexOf(y);
return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];
};
scale.copy = function() {
return d3_scale_quantile(domain, range);
};
return rescale();
}
d3.scale.quantize = function() {
return d3_scale_quantize(0, 1, [ 0, 1 ]);
};
function d3_scale_quantize(x0, x1, range) {
var kx, i;
function scale(x) {
return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
}
function rescale() {
kx = range.length / (x1 - x0);
i = range.length - 1;
return scale;
}
scale.domain = function(x) {
if (!arguments.length) return [ x0, x1 ];
x0 = +x[0];
x1 = +x[x.length - 1];
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.invertExtent = function(y) {
y = range.indexOf(y);
y = y < 0 ? NaN : y / kx + x0;
return [ y, y + 1 / kx ];
};
scale.copy = function() {
return d3_scale_quantize(x0, x1, range);
};
return rescale();
}
d3.scale.threshold = function() {
return d3_scale_threshold([ .5 ], [ 0, 1 ]);
};
function d3_scale_threshold(domain, range) {
function scale(x) {
if (x <= x) return range[d3.bisect(domain, x)];
}
scale.domain = function(_) {
if (!arguments.length) return domain;
domain = _;
return scale;
};
scale.range = function(_) {
if (!arguments.length) return range;
range = _;
return scale;
};
scale.invertExtent = function(y) {
y = range.indexOf(y);
return [ domain[y - 1], domain[y] ];
};
scale.copy = function() {
return d3_scale_threshold(domain, range);
};
return scale;
}
d3.scale.identity = function() {
return d3_scale_identity([ 0, 1 ]);
};
function d3_scale_identity(domain) {
function identity(x) {
return +x;
}
identity.invert = identity;
identity.domain = identity.range = function(x) {
if (!arguments.length) return domain;
domain = x.map(identity);
return identity;
};
identity.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
identity.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
identity.copy = function() {
return d3_scale_identity(domain);
};
return identity;
}
d3.svg = {};
function d3_zero() {
return 0;
}
d3.svg.arc = function() {
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;
function arc() {
var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;
if (r1 < r0) rc = r1, r1 = r0, r0 = rc;
if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : "") + "Z";
var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];
if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {
rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);
if (!cw) p1 *= -1;
if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));
if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));
}
if (r1) {
x0 = r1 * Math.cos(a0 + p1);
y0 = r1 * Math.sin(a0 + p1);
x1 = r1 * Math.cos(a1 - p1);
y1 = r1 * Math.sin(a1 - p1);
var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;
if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {
var h1 = (a0 + a1) / 2;
x0 = r1 * Math.cos(h1);
y0 = r1 * Math.sin(h1);
x1 = y1 = null;
}
} else {
x0 = y0 = 0;
}
if (r0) {
x2 = r0 * Math.cos(a1 - p0);
y2 = r0 * Math.sin(a1 - p0);
x3 = r0 * Math.cos(a0 + p0);
y3 = r0 * Math.sin(a0 + p0);
var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;
if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {
var h0 = (a0 + a1) / 2;
x2 = r0 * Math.cos(h0);
y2 = r0 * Math.sin(h0);
x3 = y3 = null;
}
} else {
x2 = y2 = 0;
}
if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {
cr = r0 < r1 ^ cw ? 0 : 1;
var rc1 = rc, rc0 = rc;
if (da < π) {
var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
rc0 = Math.min(rc, (r0 - lc) / (kc - 1));
rc1 = Math.min(rc, (r1 - lc) / (kc + 1));
}
if (x1 != null) {
var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);
if (rc === rc1) {
path.push("M", t30[0], "A", rc1, ",", rc1, " 0 0,", cr, " ", t30[1], "A", r1, ",", r1, " 0 ", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), ",", cw, " ", t12[1], "A", rc1, ",", rc1, " 0 0,", cr, " ", t12[0]);
} else {
path.push("M", t30[0], "A", rc1, ",", rc1, " 0 1,", cr, " ", t12[0]);
}
} else {
path.push("M", x0, ",", y0);
}
if (x3 != null) {
var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);
if (rc === rc0) {
path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t21[1], "A", r0, ",", r0, " 0 ", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), ",", 1 - cw, " ", t03[1], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
} else {
path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
}
} else {
path.push("L", x2, ",", y2);
}
} else {
path.push("M", x0, ",", y0);
if (x1 != null) path.push("A", r1, ",", r1, " 0 ", l1, ",", cw, " ", x1, ",", y1);
path.push("L", x2, ",", y2);
if (x3 != null) path.push("A", r0, ",", r0, " 0 ", l0, ",", 1 - cw, " ", x3, ",", y3);
}
path.push("Z");
return path.join("");
}
function circleSegment(r1, cw) {
return "M0," + r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + -r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + r1;
}
arc.innerRadius = function(v) {
if (!arguments.length) return innerRadius;
innerRadius = d3_functor(v);
return arc;
};
arc.outerRadius = function(v) {
if (!arguments.length) return outerRadius;
outerRadius = d3_functor(v);
return arc;
};
arc.cornerRadius = function(v) {
if (!arguments.length) return cornerRadius;
cornerRadius = d3_functor(v);
return arc;
};
arc.padRadius = function(v) {
if (!arguments.length) return padRadius;
padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);
return arc;
};
arc.startAngle = function(v) {
if (!arguments.length) return startAngle;
startAngle = d3_functor(v);
return arc;
};
arc.endAngle = function(v) {
if (!arguments.length) return endAngle;
endAngle = d3_functor(v);
return arc;
};
arc.padAngle = function(v) {
if (!arguments.length) return padAngle;
padAngle = d3_functor(v);
return arc;
};
arc.centroid = function() {
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;
return [ Math.cos(a) * r, Math.sin(a) * r ];
};
return arc;
};
var d3_svg_arcAuto = "auto";
function d3_svg_arcInnerRadius(d) {
return d.innerRadius;
}
function d3_svg_arcOuterRadius(d) {
return d.outerRadius;
}
function d3_svg_arcStartAngle(d) {
return d.startAngle;
}
function d3_svg_arcEndAngle(d) {
return d.endAngle;
}
function d3_svg_arcPadAngle(d) {
return d && d.padAngle;
}
function d3_svg_arcSweep(x0, y0, x1, y1) {
return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;
}
function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];
}
function d3_svg_line(projection) {
var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
function line(data) {
var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
function segment() {
segments.push("M", interpolate(projection(points), tension));
}
while (++i < n) {
if (defined.call(this, d = data[i], i)) {
points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
} else if (points.length) {
segment();
points = [];
}
}
if (points.length) segment();
return segments.length ? segments.join("") : null;
}
line.x = function(_) {
if (!arguments.length) return x;
x = _;
return line;
};
line.y = function(_) {
if (!arguments.length) return y;
y = _;
return line;
};
line.defined = function(_) {
if (!arguments.length) return defined;
defined = _;
return line;
};
line.interpolate = function(_) {
if (!arguments.length) return interpolateKey;
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
return line;
};
line.tension = function(_) {
if (!arguments.length) return tension;
tension = _;
return line;
};
return line;
}
d3.svg.line = function() {
return d3_svg_line(d3_identity);
};
var d3_svg_lineInterpolators = d3.map({
linear: d3_svg_lineLinear,
"linear-closed": d3_svg_lineLinearClosed,
step: d3_svg_lineStep,
"step-before": d3_svg_lineStepBefore,
"step-after": d3_svg_lineStepAfter,
basis: d3_svg_lineBasis,
"basis-open": d3_svg_lineBasisOpen,
"basis-closed": d3_svg_lineBasisClosed,
bundle: d3_svg_lineBundle,
cardinal: d3_svg_lineCardinal,
"cardinal-open": d3_svg_lineCardinalOpen,
"cardinal-closed": d3_svg_lineCardinalClosed,
monotone: d3_svg_lineMonotone
});
d3_svg_lineInterpolators.forEach(function(key, value) {
value.key = key;
value.closed = /-closed$/.test(key);
});
function d3_svg_lineLinear(points) {
return points.length > 1 ? points.join("L") : points + "Z";
}
function d3_svg_lineLinearClosed(points) {
return points.join("L") + "Z";
}
function d3_svg_lineStep(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]);
if (n > 1) path.push("H", p[0]);
return path.join("");
}
function d3_svg_lineStepBefore(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
return path.join("");
}
function d3_svg_lineStepAfter(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
return path.join("");
}
function d3_svg_lineCardinalOpen(points, tension) {
return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineCardinalClosed(points, tension) {
return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]),
points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
}
function d3_svg_lineCardinal(points, tension) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineHermite(points, tangents) {
if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
return d3_svg_lineLinear(points);
}
var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
if (quad) {
path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
p0 = points[1];
pi = 2;
}
if (tangents.length > 1) {
t = tangents[1];
p = points[pi];
pi++;
path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
for (var i = 2; i < tangents.length; i++, pi++) {
p = points[pi];
t = tangents[i];
path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
}
}
if (quad) {
var lp = points[pi];
path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
}
return path;
}
function d3_svg_lineCardinalTangents(points, tension) {
var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
while (++i < n) {
p0 = p1;
p1 = p2;
p2 = points[i];
tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
}
return tangents;
}
function d3_svg_lineBasis(points) {
if (points.length < 3) return d3_svg_lineLinear(points);
var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0, "L", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
points.push(points[n - 1]);
while (++i <= n) {
pi = points[i];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
points.pop();
path.push("L", pi);
return path.join("");
}
function d3_svg_lineBasisOpen(points) {
if (points.length < 4) return d3_svg_lineLinear(points);
var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
while (++i < 3) {
pi = points[i];
px.push(pi[0]);
py.push(pi[1]);
}
path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
--i;
while (++i < n) {
pi = points[i];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBasisClosed(points) {
var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
while (++i < 4) {
pi = points[i % n];
px.push(pi[0]);
py.push(pi[1]);
}
path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
--i;
while (++i < m) {
pi = points[i % n];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBundle(points, tension) {
var n = points.length - 1;
if (n) {
var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
while (++i <= n) {
p = points[i];
t = i / n;
p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
}
}
return d3_svg_lineBasis(points);
}
function d3_svg_lineDot4(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
}
var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];
function d3_svg_lineBasisBezier(path, x, y) {
path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
}
function d3_svg_lineSlope(p0, p1) {
return (p1[1] - p0[1]) / (p1[0] - p0[0]);
}
function d3_svg_lineFiniteDifferences(points) {
var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
while (++i < j) {
m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
}
m[i] = d;
return m;
}
function d3_svg_lineMonotoneTangents(points) {
var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
while (++i < j) {
d = d3_svg_lineSlope(points[i], points[i + 1]);
if (abs(d) < ε) {
m[i] = m[i + 1] = 0;
} else {
a = m[i] / d;
b = m[i + 1] / d;
s = a * a + b * b;
if (s > 9) {
s = d * 3 / Math.sqrt(s);
m[i] = s * a;
m[i + 1] = s * b;
}
}
}
i = -1;
while (++i <= j) {
s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
tangents.push([ s || 0, m[i] * s || 0 ]);
}
return tangents;
}
function d3_svg_lineMonotone(points) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
}
d3.svg.line.radial = function() {
var line = d3_svg_line(d3_svg_lineRadial);
line.radius = line.x, delete line.x;
line.angle = line.y, delete line.y;
return line;
};
function d3_svg_lineRadial(points) {
var point, i = -1, n = points.length, r, a;
while (++i < n) {
point = points[i];
r = point[0];
a = point[1] - halfπ;
point[0] = r * Math.cos(a);
point[1] = r * Math.sin(a);
}
return points;
}
function d3_svg_area(projection) {
var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
function area(data) {
var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
return x;
} : d3_functor(x1), fy1 = y0 === y1 ? function() {
return y;
} : d3_functor(y1), x, y;
function segment() {
segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
}
while (++i < n) {
if (defined.call(this, d = data[i], i)) {
points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
} else if (points0.length) {
segment();
points0 = [];
points1 = [];
}
}
if (points0.length) segment();
return segments.length ? segments.join("") : null;
}
area.x = function(_) {
if (!arguments.length) return x1;
x0 = x1 = _;
return area;
};
area.x0 = function(_) {
if (!arguments.length) return x0;
x0 = _;
return area;
};
area.x1 = function(_) {
if (!arguments.length) return x1;
x1 = _;
return area;
};
area.y = function(_) {
if (!arguments.length) return y1;
y0 = y1 = _;
return area;
};
area.y0 = function(_) {
if (!arguments.length) return y0;
y0 = _;
return area;
};
area.y1 = function(_) {
if (!arguments.length) return y1;
y1 = _;
return area;
};
area.defined = function(_) {
if (!arguments.length) return defined;
defined = _;
return area;
};
area.interpolate = function(_) {
if (!arguments.length) return interpolateKey;
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
interpolateReverse = interpolate.reverse || interpolate;
L = interpolate.closed ? "M" : "L";
return area;
};
area.tension = function(_) {
if (!arguments.length) return tension;
tension = _;
return area;
};
return area;
}
d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
d3.svg.area = function() {
return d3_svg_area(d3_identity);
};
d3.svg.area.radial = function() {
var area = d3_svg_area(d3_svg_lineRadial);
area.radius = area.x, delete area.x;
area.innerRadius = area.x0, delete area.x0;
area.outerRadius = area.x1, delete area.x1;
area.angle = area.y, delete area.y;
area.startAngle = area.y0, delete area.y0;
area.endAngle = area.y1, delete area.y1;
return area;
};
d3.svg.chord = function() {
var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
function chord(d, i) {
var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);
return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
}
function subgroup(self, f, d, i) {
var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;
return {
r: r,
a0: a0,
a1: a1,
p0: [ r * Math.cos(a0), r * Math.sin(a0) ],
p1: [ r * Math.cos(a1), r * Math.sin(a1) ]
};
}
function equals(a, b) {
return a.a0 == b.a0 && a.a1 == b.a1;
}
function arc(r, p, a) {
return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p;
}
function curve(r0, p0, r1, p1) {
return "Q 0,0 " + p1;
}
chord.radius = function(v) {
if (!arguments.length) return radius;
radius = d3_functor(v);
return chord;
};
chord.source = function(v) {
if (!arguments.length) return source;
source = d3_functor(v);
return chord;
};
chord.target = function(v) {
if (!arguments.length) return target;
target = d3_functor(v);
return chord;
};
chord.startAngle = function(v) {
if (!arguments.length) return startAngle;
startAngle = d3_functor(v);
return chord;
};
chord.endAngle = function(v) {
if (!arguments.length) return endAngle;
endAngle = d3_functor(v);
return chord;
};
return chord;
};
function d3_svg_chordRadius(d) {
return d.radius;
}
d3.svg.diagonal = function() {
var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;
function diagonal(d, i) {
var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
x: p0.x,
y: m
}, {
x: p3.x,
y: m
}, p3 ];
p = p.map(projection);
return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
}
diagonal.source = function(x) {
if (!arguments.length) return source;
source = d3_functor(x);
return diagonal;
};
diagonal.target = function(x) {
if (!arguments.length) return target;
target = d3_functor(x);
return diagonal;
};
diagonal.projection = function(x) {
if (!arguments.length) return projection;
projection = x;
return diagonal;
};
return diagonal;
};
function d3_svg_diagonalProjection(d) {
return [ d.x, d.y ];
}
d3.svg.diagonal.radial = function() {
var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;
diagonal.projection = function(x) {
return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;
};
return diagonal;
};
function d3_svg_diagonalRadialProjection(projection) {
return function() {
var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;
return [ r * Math.cos(a), r * Math.sin(a) ];
};
}
d3.svg.symbol = function() {
var type = d3_svg_symbolType, size = d3_svg_symbolSize;
function symbol(d, i) {
return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));
}
symbol.type = function(x) {
if (!arguments.length) return type;
type = d3_functor(x);
return symbol;
};
symbol.size = function(x) {
if (!arguments.length) return size;
size = d3_functor(x);
return symbol;
};
return symbol;
};
function d3_svg_symbolSize() {
return 64;
}
function d3_svg_symbolType() {
return "circle";
}
function d3_svg_symbolCircle(size) {
var r = Math.sqrt(size / π);
return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
}
var d3_svg_symbols = d3.map({
circle: d3_svg_symbolCircle,
cross: function(size) {
var r = Math.sqrt(size / 5) / 2;
return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z";
},
diamond: function(size) {
var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;
return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z";
},
square: function(size) {
var r = Math.sqrt(size) / 2;
return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z";
},
"triangle-down": function(size) {
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z";
},
"triangle-up": function(size) {
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z";
}
});
d3.svg.symbolTypes = d3_svg_symbols.keys();
var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
d3_selectionPrototype.transition = function(name) {
var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {
time: Date.now(),
ease: d3_ease_cubicInOut,
delay: 0,
duration: 250
};
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
subgroup.push(node);
}
}
return d3_transition(subgroups, ns, id);
};
d3_selectionPrototype.interrupt = function(name) {
return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));
};
var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());
function d3_selection_interruptNS(ns) {
return function() {
var lock, activeId, active;
if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {
active.timer.c = null;
active.timer.t = NaN;
if (--lock.count) delete lock[activeId]; else delete this[ns];
lock.active += .5;
active.event && active.event.interrupt.call(this, this.__data__, active.index);
}
};
}
function d3_transition(groups, ns, id) {
d3_subclass(groups, d3_transitionPrototype);
groups.namespace = ns;
groups.id = id;
return groups;
}
var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;
d3_transitionPrototype.call = d3_selectionPrototype.call;
d3_transitionPrototype.empty = d3_selectionPrototype.empty;
d3_transitionPrototype.node = d3_selectionPrototype.node;
d3_transitionPrototype.size = d3_selectionPrototype.size;
d3.transition = function(selection, name) {
return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);
};
d3.transition.prototype = d3_transitionPrototype;
d3_transitionPrototype.select = function(selector) {
var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;
selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
d3_transitionNode(subnode, i, ns, id, node[ns][id]);
subgroup.push(subnode);
} else {
subgroup.push(null);
}
}
}
return d3_transition(subgroups, ns, id);
};
d3_transitionPrototype.selectAll = function(selector) {
var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;
selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
transition = node[ns][id];
subnodes = selector.call(node, node.__data__, i, j);
subgroups.push(subgroup = []);
for (var k = -1, o = subnodes.length; ++k < o; ) {
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
subgroup.push(subnode);
}
}
}
}
return d3_transition(subgroups, ns, id);
};
d3_transitionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
subgroup.push(node);
}
}
}
return d3_transition(subgroups, this.namespace, this.id);
};
d3_transitionPrototype.tween = function(name, tween) {
var id = this.id, ns = this.namespace;
if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
return d3_selection_each(this, tween == null ? function(node) {
node[ns][id].tween.remove(name);
} : function(node) {
node[ns][id].tween.set(name, tween);
});
};
function d3_transition_tween(groups, name, value, tween) {
var id = groups.id, ns = groups.namespace;
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
} : (value = tween(value), function(node) {
node[ns][id].tween.set(name, value);
}));
}
d3_transitionPrototype.attr = function(nameNS, value) {
if (arguments.length < 2) {
for (value in nameNS) this.attr(value, nameNS[value]);
return this;
}
var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
function attrTween(b) {
return b == null ? attrNull : (b += "", function() {
var a = this.getAttribute(name), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.setAttribute(name, i(t));
});
});
}
function attrTweenNS(b) {
return b == null ? attrNullNS : (b += "", function() {
var a = this.getAttributeNS(name.space, name.local), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.setAttributeNS(name.space, name.local, i(t));
});
});
}
return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween);
};
d3_transitionPrototype.attrTween = function(nameNS, tween) {
var name = d3.ns.qualify(nameNS);
function attrTween(d, i) {
var f = tween.call(this, d, i, this.getAttribute(name));
return f && function(t) {
this.setAttribute(name, f(t));
};
}
function attrTweenNS(d, i) {
var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
return f && function(t) {
this.setAttributeNS(name.space, name.local, f(t));
};
}
return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
};
d3_transitionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.style(priority, name[priority], value);
return this;
}
priority = "";
}
function styleNull() {
this.style.removeProperty(name);
}
function styleString(b) {
return b == null ? styleNull : (b += "", function() {
var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;
return a !== b && (i = d3_interpolate(a, b), function(t) {
this.style.setProperty(name, i(t), priority);
});
});
}
return d3_transition_tween(this, "style." + name, value, styleString);
};
d3_transitionPrototype.styleTween = function(name, tween, priority) {
if (arguments.length < 3) priority = "";
function styleTween(d, i) {
var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));
return f && function(t) {
this.style.setProperty(name, f(t), priority);
};
}
return this.tween("style." + name, styleTween);
};
d3_transitionPrototype.text = function(value) {
return d3_transition_tween(this, "text", value, d3_transition_text);
};
function d3_transition_text(b) {
if (b == null) b = "";
return function() {
this.textContent = b;
};
}
d3_transitionPrototype.remove = function() {
var ns = this.namespace;
return this.each("end.transition", function() {
var p;
if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
});
};
d3_transitionPrototype.ease = function(value) {
var id = this.id, ns = this.namespace;
if (arguments.length < 1) return this.node()[ns][id].ease;
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
return d3_selection_each(this, function(node) {
node[ns][id].ease = value;
});
};
d3_transitionPrototype.delay = function(value) {
var id = this.id, ns = this.namespace;
if (arguments.length < 1) return this.node()[ns][id].delay;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node[ns][id].delay = +value.call(node, node.__data__, i, j);
} : (value = +value, function(node) {
node[ns][id].delay = value;
}));
};
d3_transitionPrototype.duration = function(value) {
var id = this.id, ns = this.namespace;
if (arguments.length < 1) return this.node()[ns][id].duration;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));
} : (value = Math.max(1, value), function(node) {
node[ns][id].duration = value;
}));
};
d3_transitionPrototype.each = function(type, listener) {
var id = this.id, ns = this.namespace;
if (arguments.length < 2) {
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
try {
d3_transitionInheritId = id;
d3_selection_each(this, function(node, i, j) {
d3_transitionInherit = node[ns][id];
type.call(node, node.__data__, i, j);
});
} finally {
d3_transitionInherit = inherit;
d3_transitionInheritId = inheritId;
}
} else {
d3_selection_each(this, function(node) {
var transition = node[ns][id];
(transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
});
}
return this;
};
d3_transitionPrototype.transition = function() {
var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if (node = group[i]) {
transition = node[ns][id0];
d3_transitionNode(node, i, ns, id1, {
time: transition.time,
ease: transition.ease,
delay: transition.delay + transition.duration,
duration: transition.duration
});
}
subgroup.push(node);
}
}
return d3_transition(subgroups, ns, id1);
};
function d3_transitionNamespace(name) {
return name == null ? "__transition__" : "__transition_" + name + "__";
}
function d3_transitionNode(node, i, ns, id, inherit) {
var lock = node[ns] || (node[ns] = {
active: 0,
count: 0
}), transition = lock[id], time, timer, duration, ease, tweens;
function schedule(elapsed) {
var delay = transition.delay;
timer.t = delay + time;
if (delay <= elapsed) return start(elapsed - delay);
timer.c = start;
}
function start(elapsed) {
var activeId = lock.active, active = lock[activeId];
if (active) {
active.timer.c = null;
active.timer.t = NaN;
--lock.count;
delete lock[activeId];
active.event && active.event.interrupt.call(node, node.__data__, active.index);
}
for (var cancelId in lock) {
if (+cancelId < id) {
var cancel = lock[cancelId];
cancel.timer.c = null;
cancel.timer.t = NaN;
--lock.count;
delete lock[cancelId];
}
}
timer.c = tick;
d3_timer(function() {
if (timer.c && tick(elapsed || 1)) {
timer.c = null;
timer.t = NaN;
}
return 1;
}, 0, time);
lock.active = id;
transition.event && transition.event.start.call(node, node.__data__, i);
tweens = [];
transition.tween.forEach(function(key, value) {
if (value = value.call(node, node.__data__, i)) {
tweens.push(value);
}
});
ease = transition.ease;
duration = transition.duration;
}
function tick(elapsed) {
var t = elapsed / duration, e = ease(t), n = tweens.length;
while (n > 0) {
tweens[--n].call(node, e);
}
if (t >= 1) {
transition.event && transition.event.end.call(node, node.__data__, i);
if (--lock.count) delete lock[id]; else delete node[ns];
return 1;
}
}
if (!transition) {
time = inherit.time;
timer = d3_timer(schedule, 0, time);
transition = lock[id] = {
tween: new d3_Map(),
time: time,
timer: timer,
delay: inherit.delay,
duration: inherit.duration,
ease: inherit.ease,
index: i
};
inherit = null;
++lock.count;
}
}
d3.svg.axis = function() {
var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;
function axis(g) {
g.each(function() {
var g = d3.select(this);
var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();
var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;
var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
d3.transition(path));
tickEnter.append("line");
tickEnter.append("text");
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"), sign = orient === "top" || orient === "left" ? -1 : 1, x1, x2, y1, y2;
if (orient === "bottom" || orient === "top") {
tickTransform = d3_svg_axisX, x1 = "x", y1 = "y", x2 = "x2", y2 = "y2";
text.attr("dy", sign < 0 ? "0em" : ".71em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize);
} else {
tickTransform = d3_svg_axisY, x1 = "y", y1 = "x", x2 = "y2", y2 = "x2";
text.attr("dy", ".32em").style("text-anchor", sign < 0 ? "end" : "start");
pathUpdate.attr("d", "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize);
}
lineEnter.attr(y2, sign * innerTickSize);
textEnter.attr(y1, sign * tickSpacing);
lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);
textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);
if (scale1.rangeBand) {
var x = scale1, dx = x.rangeBand() / 2;
scale0 = scale1 = function(d) {
return x(d) + dx;
};
} else if (scale0.rangeBand) {
scale0 = scale1;
} else {
tickExit.call(tickTransform, scale1, scale0);
}
tickEnter.call(tickTransform, scale0, scale1);
tickUpdate.call(tickTransform, scale1, scale1);
});
}
axis.scale = function(x) {
if (!arguments.length) return scale;
scale = x;
return axis;
};
axis.orient = function(x) {
if (!arguments.length) return orient;
orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient;
return axis;
};
axis.ticks = function() {
if (!arguments.length) return tickArguments_;
tickArguments_ = d3_array(arguments);
return axis;
};
axis.tickValues = function(x) {
if (!arguments.length) return tickValues;
tickValues = x;
return axis;
};
axis.tickFormat = function(x) {
if (!arguments.length) return tickFormat_;
tickFormat_ = x;
return axis;
};
axis.tickSize = function(x) {
var n = arguments.length;
if (!n) return innerTickSize;
innerTickSize = +x;
outerTickSize = +arguments[n - 1];
return axis;
};
axis.innerTickSize = function(x) {
if (!arguments.length) return innerTickSize;
innerTickSize = +x;
return axis;
};
axis.outerTickSize = function(x) {
if (!arguments.length) return outerTickSize;
outerTickSize = +x;
return axis;
};
axis.tickPadding = function(x) {
if (!arguments.length) return tickPadding;
tickPadding = +x;
return axis;
};
axis.tickSubdivide = function() {
return arguments.length && axis;
};
return axis;
};
var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = {
top: 1,
right: 1,
bottom: 1,
left: 1
};
function d3_svg_axisX(selection, x0, x1) {
selection.attr("transform", function(d) {
var v0 = x0(d);
return "translate(" + (isFinite(v0) ? v0 : x1(d)) + ",0)";
});
}
function d3_svg_axisY(selection, y0, y1) {
selection.attr("transform", function(d) {
var v0 = y0(d);
return "translate(0," + (isFinite(v0) ? v0 : y1(d)) + ")";
});
}
d3.svg.brush = function() {
var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];
function brush(g) {
g.each(function() {
var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
var background = g.selectAll(".background").data([ 0 ]);
background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move");
var resize = g.selectAll(".resize").data(resizes, d3_identity);
resize.exit().remove();
resize.enter().append("g").attr("class", function(d) {
return "resize " + d;
}).style("cursor", function(d) {
return d3_svg_brushCursor[d];
}).append("rect").attr("x", function(d) {
return /[ew]$/.test(d) ? -3 : null;
}).attr("y", function(d) {
return /^[ns]/.test(d) ? -3 : null;
}).attr("width", 6).attr("height", 6).style("visibility", "hidden");
resize.style("display", brush.empty() ? "none" : null);
var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;
if (x) {
range = d3_scaleRange(x);
backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]);
redrawX(gUpdate);
}
if (y) {
range = d3_scaleRange(y);
backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]);
redrawY(gUpdate);
}
redraw(gUpdate);
});
}
brush.event = function(g) {
g.each(function() {
var event_ = event.of(this, arguments), extent1 = {
x: xExtent,
y: yExtent,
i: xExtentDomain,
j: yExtentDomain
}, extent0 = this.__chart__ || extent1;
this.__chart__ = extent1;
if (d3_transitionInheritId) {
d3.select(this).transition().each("start.brush", function() {
xExtentDomain = extent0.i;
yExtentDomain = extent0.j;
xExtent = extent0.x;
yExtent = extent0.y;
event_({
type: "brushstart"
});
}).tween("brush:brush", function() {
var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);
xExtentDomain = yExtentDomain = null;
return function(t) {
xExtent = extent1.x = xi(t);
yExtent = extent1.y = yi(t);
event_({
type: "brush",
mode: "resize"
});
};
}).each("end.brush", function() {
xExtentDomain = extent1.i;
yExtentDomain = extent1.j;
event_({
type: "brush",
mode: "resize"
});
event_({
type: "brushend"
});
});
} else {
event_({
type: "brushstart"
});
event_({
type: "brush",
mode: "resize"
});
event_({
type: "brushend"
});
}
});
};
function redraw(g) {
g.selectAll(".resize").attr("transform", function(d) {
return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")";
});
}
function redrawX(g) {
g.select(".extent").attr("x", xExtent[0]);
g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]);
}
function redrawY(g) {
g.select(".extent").attr("y", yExtent[0]);
g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]);
}
function brushstart() {
var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;
var w = d3.select(d3_window(target)).on("keydown.brush", keydown).on("keyup.brush", keyup);
if (d3.event.changedTouches) {
w.on("touchmove.brush", brushmove).on("touchend.brush", brushend);
} else {
w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend);
}
g.interrupt().selectAll("*").interrupt();
if (dragging) {
origin[0] = xExtent[0] - origin[0];
origin[1] = yExtent[0] - origin[1];
} else if (resizing) {
var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];
origin[0] = xExtent[ex];
origin[1] = yExtent[ey];
} else if (d3.event.altKey) center = origin.slice();
g.style("pointer-events", "none").selectAll(".resize").style("display", null);
d3.select("body").style("cursor", eventTarget.style("cursor"));
event_({
type: "brushstart"
});
brushmove();
function keydown() {
if (d3.event.keyCode == 32) {
if (!dragging) {
center = null;
origin[0] -= xExtent[1];
origin[1] -= yExtent[1];
dragging = 2;
}
d3_eventPreventDefault();
}
}
function keyup() {
if (d3.event.keyCode == 32 && dragging == 2) {
origin[0] += xExtent[1];
origin[1] += yExtent[1];
dragging = 0;
d3_eventPreventDefault();
}
}
function brushmove() {
var point = d3.mouse(target), moved = false;
if (offset) {
point[0] += offset[0];
point[1] += offset[1];
}
if (!dragging) {
if (d3.event.altKey) {
if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];
origin[0] = xExtent[+(point[0] < center[0])];
origin[1] = yExtent[+(point[1] < center[1])];
} else center = null;
}
if (resizingX && move1(point, x, 0)) {
redrawX(g);
moved = true;
}
if (resizingY && move1(point, y, 1)) {
redrawY(g);
moved = true;
}
if (moved) {
redraw(g);
event_({
type: "brush",
mode: dragging ? "move" : "resize"
});
}
}
function move1(point, scale, i) {
var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;
if (dragging) {
r0 -= position;
r1 -= size + position;
}
min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];
if (dragging) {
max = (min += position) + size;
} else {
if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
if (position < min) {
max = min;
min = position;
} else {
max = position;
}
}
if (extent[0] != min || extent[1] != max) {
if (i) yExtentDomain = null; else xExtentDomain = null;
extent[0] = min;
extent[1] = max;
return true;
}
}
function brushend() {
brushmove();
g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
d3.select("body").style("cursor", null);
w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
dragRestore();
event_({
type: "brushend"
});
}
}
brush.x = function(z) {
if (!arguments.length) return x;
x = z;
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
brush.y = function(z) {
if (!arguments.length) return y;
y = z;
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
brush.clamp = function(z) {
if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;
if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;
return brush;
};
brush.extent = function(z) {
var x0, x1, y0, y1, t;
if (!arguments.length) {
if (x) {
if (xExtentDomain) {
x0 = xExtentDomain[0], x1 = xExtentDomain[1];
} else {
x0 = xExtent[0], x1 = xExtent[1];
if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
if (x1 < x0) t = x0, x0 = x1, x1 = t;
}
}
if (y) {
if (yExtentDomain) {
y0 = yExtentDomain[0], y1 = yExtentDomain[1];
} else {
y0 = yExtent[0], y1 = yExtent[1];
if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
if (y1 < y0) t = y0, y0 = y1, y1 = t;
}
}
return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
}
if (x) {
x0 = z[0], x1 = z[1];
if (y) x0 = x0[0], x1 = x1[0];
xExtentDomain = [ x0, x1 ];
if (x.invert) x0 = x(x0), x1 = x(x1);
if (x1 < x0) t = x0, x0 = x1, x1 = t;
if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];
}
if (y) {
y0 = z[0], y1 = z[1];
if (x) y0 = y0[1], y1 = y1[1];
yExtentDomain = [ y0, y1 ];
if (y.invert) y0 = y(y0), y1 = y(y1);
if (y1 < y0) t = y0, y0 = y1, y1 = t;
if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];
}
return brush;
};
brush.clear = function() {
if (!brush.empty()) {
xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];
xExtentDomain = yExtentDomain = null;
}
return brush;
};
brush.empty = function() {
return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];
};
return d3.rebind(brush, event, "on");
};
var d3_svg_brushCursor = {
n: "ns-resize",
e: "ew-resize",
s: "ns-resize",
w: "ew-resize",
nw: "nwse-resize",
ne: "nesw-resize",
se: "nwse-resize",
sw: "nesw-resize"
};
var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;
var d3_time_formatUtc = d3_time_format.utc;
var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ");
d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso;
function d3_time_formatIsoNative(date) {
return date.toISOString();
}
d3_time_formatIsoNative.parse = function(string) {
var date = new Date(string);
return isNaN(date) ? null : date;
};
d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
d3_time.second = d3_time_interval(function(date) {
return new d3_date(Math.floor(date / 1e3) * 1e3);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 1e3);
}, function(date) {
return date.getSeconds();
});
d3_time.seconds = d3_time.second.range;
d3_time.seconds.utc = d3_time.second.utc.range;
d3_time.minute = d3_time_interval(function(date) {
return new d3_date(Math.floor(date / 6e4) * 6e4);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 6e4);
}, function(date) {
return date.getMinutes();
});
d3_time.minutes = d3_time.minute.range;
d3_time.minutes.utc = d3_time.minute.utc.range;
d3_time.hour = d3_time_interval(function(date) {
var timezone = date.getTimezoneOffset() / 60;
return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 36e5);
}, function(date) {
return date.getHours();
});
d3_time.hours = d3_time.hour.range;
d3_time.hours.utc = d3_time.hour.utc.range;
d3_time.month = d3_time_interval(function(date) {
date = d3_time.day(date);
date.setDate(1);
return date;
}, function(date, offset) {
date.setMonth(date.getMonth() + offset);
}, function(date) {
return date.getMonth();
});
d3_time.months = d3_time.month.range;
d3_time.months.utc = d3_time.month.utc.range;
function d3_time_scale(linear, methods, format) {
function scale(x) {
return linear(x);
}
scale.invert = function(x) {
return d3_time_scaleDate(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
linear.domain(x);
return scale;
};
function tickMethod(extent, count) {
var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);
return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {
return d / 31536e6;
}), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];
}
scale.nice = function(interval, skip) {
var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval);
if (method) interval = method[0], skip = method[1];
function skipped(date) {
return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;
}
return scale.domain(d3_scale_nice(domain, skip > 1 ? {
floor: function(date) {
while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);
return date;
},
ceil: function(date) {
while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);
return date;
}
} : interval));
};
scale.ticks = function(interval, skip) {
var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ {
range: interval
}, skip ];
if (method) interval = method[0], skip = method[1];
return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);
};
scale.tickFormat = function() {
return format;
};
scale.copy = function() {
return d3_time_scale(linear.copy(), methods, format);
};
return d3_scale_linearRebind(scale, linear);
}
function d3_time_scaleDate(t) {
return new Date(t);
}
var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];
var d3_time_scaleLocalFormat = d3_time_format.multi([ [ ".%L", function(d) {
return d.getMilliseconds();
} ], [ ":%S", function(d) {
return d.getSeconds();
} ], [ "%I:%M", function(d) {
return d.getMinutes();
} ], [ "%I %p", function(d) {
return d.getHours();
} ], [ "%a %d", function(d) {
return d.getDay() && d.getDate() != 1;
} ], [ "%b %d", function(d) {
return d.getDate() != 1;
} ], [ "%B", function(d) {
return d.getMonth();
} ], [ "%Y", d3_true ] ]);
var d3_time_scaleMilliseconds = {
range: function(start, stop, step) {
return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);
},
floor: d3_identity,
ceil: d3_identity
};
d3_time_scaleLocalMethods.year = d3_time.year;
d3_time.scale = function() {
return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
};
var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {
return [ m[0].utc, m[1] ];
});
var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ ".%L", function(d) {
return d.getUTCMilliseconds();
} ], [ ":%S", function(d) {
return d.getUTCSeconds();
} ], [ "%I:%M", function(d) {
return d.getUTCMinutes();
} ], [ "%I %p", function(d) {
return d.getUTCHours();
} ], [ "%a %d", function(d) {
return d.getUTCDay() && d.getUTCDate() != 1;
} ], [ "%b %d", function(d) {
return d.getUTCDate() != 1;
} ], [ "%B", function(d) {
return d.getUTCMonth();
} ], [ "%Y", d3_true ] ]);
d3_time_scaleUtcMethods.year = d3_time.year.utc;
d3_time.scale.utc = function() {
return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);
};
d3.text = d3_xhrType(function(request) {
return request.responseText;
});
d3.json = function(url, callback) {
return d3_xhr(url, "application/json", d3_json, callback);
};
function d3_json(request) {
return JSON.parse(request.responseText);
}
d3.html = function(url, callback) {
return d3_xhr(url, "text/html", d3_html, callback);
};
function d3_html(request) {
var range = d3_document.createRange();
range.selectNode(d3_document.body);
return range.createContextualFragment(request.responseText);
}
d3.xml = d3_xhrType(function(request) {
return request.responseXML;
});
if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === "object" && module.exports) module.exports = d3; else this.d3 = d3;
}();
/***/ },
/* 5 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
module.exports = {
Create: __webpack_require__(6),
Plot: __webpack_require__(25),
category: __webpack_require__(7),
date: __webpack_require__(15),
number: __webpack_require__(17)
};
/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var axis = {
category: __webpack_require__(7),
date: __webpack_require__(15),
number: __webpack_require__(17)
};
var intraDay = __webpack_require__(20);
var themes = __webpack_require__(8);
var PADDING = 4;
function getDimension(dimension, selection) {
if (!selection.node()) return 0;
return Math.ceil(selection.node().getBoundingClientRect()[dimension]);
}
function getWidth(selection) {
return getDimension('width', selection);
}
function getHeight(selection) {
return getDimension('height', selection);
}
function isVertical(orient) {
return orient == 'right' || orient == 'left';
}
function getRange(model, orientation) {
var chartType = model.chartType;
var plotWidth = model.plotWidth = model.chartWidth - model.yLabelWidth;
var plotHeight = model.plotHeight = model.chartHeight - model.xLabelHeight;
var plotPaddingX = themes.check(model.theme, 'chart-plot').attributes['padding-x'] || 0;
var plotWidthInPixels = chartType !== 'bar' && plotPaddingX > 0 ? plotWidth * plotPaddingX : 0;
var rangePlotWidth = plotWidthInPixels > 0 ? [0 + plotWidthInPixels, plotWidth - plotWidthInPixels] : [0, plotWidth];
return isVertical(orientation) ? [0, plotHeight] : rangePlotWidth;
}
function ordinalScale(model, options, orientation) {
var range = getRange(model, orientation);
return d3.scale.ordinal().domain(model.independentDomain).rangeRoundBands(range, 0, options.margin);
}
function timeScale(model, options, orientation) {
var range = getRange(model, orientation);
return d3.time.scale().domain(model.independentDomain).range(range);
}
function intraDayScale(model, options, orientation) {
var range = getRange(model, orientation);
return intraDay(model.open, model.close).domain(model.independentDomain).range(range);
}
function linearScale(model, options, orientation) {
var range = getRange(model, orientation);
var domain = isVertical(orientation) ? model.dependentDomain.reverse() : model.dependentDomain;
return d3.scale.linear().range(range).domain(domain);
}
function setChartPosition(g, model) {
var labelSpace = 0,
spacing = PADDING,
top = model.chartPosition.top,
left = model.chartPosition.left;
if (isVertical(model.independentAxisOrient)) {
spacing = model.tickSize + PADDING * 2;
} else {
top += getHeight(g.select('.y.axis')) - model.plotHeight;
}
if ([model.dependentAxisOrient, model.independentAxisOrient].indexOf('top') > -1) {
g.selectAll('.x.axis text').each(function () {
labelSpace = Math.max(labelSpace, getHeight(d3.select(this)));
});
top += labelSpace;
}
if ([model.dependentAxisOrient, model.independentAxisOrient].indexOf('left') > -1) {
g.selectAll('.y.axis text').each(function () {
labelSpace = Math.max(labelSpace, getWidth(d3.select(this)));
});
left += labelSpace + spacing;
}
return { top: top, left: left };
}
function Create(svg, model) {
if (!model.independentAxisOrient) {
throw new Error("No independent axis orientation {left, right, top, bottom}");
}
if (!model.dependentAxisOrient) {
throw new Error("No dependent axis orientation {left, right, top, bottom}");
}
this.model = model;
this.chart = svg;
this.margin = 0.2;
this.attrs = {};
}
Create.prototype.getAttr = function (id) {
if (!this.attrs[id]) {
this.attrs[id] = themes.check(this.model.theme, id).attributes;
}
return this.attrs[id];
};
Create.prototype.hideTicks = function () {
var tickCount = this.chart.selectAll('.x.axis .primary line')[0].length;
var labelCount = this.chart.selectAll('.x.axis .primary text')[0].length;
var labelsShownRatio = labelCount / tickCount;
var allPositiveValues = Math.min.apply(null, this.dependentAxisScale.domain()) >= 0;
return labelsShownRatio === 1 && allPositiveValues;
};
Create.prototype.configureDependentScale = function (model) {
this.dependentAxis.tickFormat(model.numberAxisFormatter).simple(model.simpleValue).orient(model.dependentAxisOrient).reverse(model.y.reverse).attrs(model.chartType, 'chart-type').attrs(model.dependentAxisOrient, 'chart-alignment').attrs(this.getAttr('dependent-ticks'), 'ticks').attrs(this.getAttr('origin-ticks'), 'origin').attrs(this.getAttr('axis-text'), 'primary').attrs(this.getAttr('x-axis-text'), 'xAxisLabel').attrs(this.getAttr('y-axis-text'), 'yAxisLabel').attrs(this.getAttr('y-axis-line'), 'yAxisLine');
if (isVertical(model.dependentAxisOrient)) {
this.dependentAxis.tickSize(model.plotWidth).tickExtension(model.yLabelWidth);
} else {
this.dependentAxis.tickSize(model.plotHeight).yOffset(model.dependentAxisOrient == 'bottom' ? model.plotHeight : 0);
}
this.dependentAxis.scale(this.dependentAxisScale);
this.chart.call(this.dependentAxis);
};
Create.prototype.configureIndependentScale = function (model) {
this.independentAxis.simple(model.simpleDate).tickSize(model.tickSize).orient(model.independentAxisOrient).attrs(model.chartType, 'chart-type').attrs(model.dependentAxisOrient, 'chart-alignment').attrs(this.getAttr('independent-ticks'), 'ticks').attrs(this.getAttr('origin-ticks'), 'origin').attrs(this.getAttr('axis-text'), 'primary').attrs(this.getAttr('axis-secondary-text'), 'secondary').attrs(this.getAttr('x-axis-text'), 'xAxisLabel').attrs(this.getAttr('y-axis-text'), 'yAxisLabel').attrs(this.getAttr('y-axis-line'), 'yAxisLine');
if (!isVertical(model.independentAxisOrient)) {
this.independentAxis.yOffset(model.plotHeight); //position the axis at the bottom of the chart
}
this.independentAxis.scale(this.independentAxisScale, this.model.units);
this.chart.call(this.independentAxis);
};
Create.prototype.repositionAxis = function () {
var model = this.model;
var independentRange = getRange(model, model.independentAxisOrient);
var dependentRange = getRange(model, model.dependentAxisOrient);
if (this.independentAxisScale.rangeRoundBands) {
this.independentAxisScale.rangeRoundBands(independentRange, this.margin);
} else {
this.independentAxisScale.range(independentRange);
}
this.dependentAxisScale.range(dependentRange);
this.configureIndependentScale(model);
this.configureDependentScale(model);
};
Create.prototype.independentScale = function (scale) {
var model = this.model;
if (scale == 'ordinal') {
this.independentAxisScale = ordinalScale(model, this, model.independentAxisOrient);
this.independentAxis = axis.category(model).dataType(model.dataType);
} else if (model.intraDay) {
this.independentAxisScale = intraDayScale(model, this, model.independentAxisOrient);
this.independentAxis = axis.date(model);
} else {
this.independentAxisScale = timeScale(model, this, model.independentAxisOrient);
this.independentAxis = axis.date(model);
}
this.configureIndependentScale(this.model);
};
Create.prototype.dependentScale = function (scale) {
var model = this.model;
this.dependentAxisScale = linearScale(model, this, model.dependentAxisOrient);
this.dependentAxis = axis.number();
if (model.niceValue) {
this.dependentAxisScale.nice();
}
this.configureDependentScale(this.model);
};
Create.prototype.yLabelWidth = function () {
var widest = 0;
this.chart.selectAll('.axis.y text').each(function (d, i) {
widest = Math.max(getWidth(d3.select(this)) + PADDING, widest);
});
return widest;
};
Create.prototype.createAxes = function (axesSpec) {
var model = this.model;
var spacing = model.tickSize + PADDING * 2;
this.independentScale(axesSpec.independent);
if (isVertical(model.dependentAxisOrient)) {
model.xLabelHeight = getHeight(this.chart) + spacing;
this.dependentScale(axesSpec.dependent); //create Y
model.yLabelWidth = this.yLabelWidth();
} else {
model.yLabelWidth = this.yLabelWidth();
this.dependentScale(axesSpec.dependent);
model.xLabelHeight = getHeight(this.chart) - model.chartHeight;
}
this.model.tickSize = model.chartType == 'column' && this.hideTicks() ? 0 : model.tickSize;
this.chart.selectAll('*').remove();
this.repositionAxis();
model.chartPosition = setChartPosition(this.chart, model);
this.chart.attr('transform', model.translate(model.chartPosition));
};
module.exports = Create;
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var themes = __webpack_require__(8);
var labels = __webpack_require__(13);
var dates = __webpack_require__(14);
var timeDiff = dates.timeDiff;
function categoryAxis(model) {
var config = {
axes: [d3.svg.axis().orient('bottom')],
scale: false,
lineHeight: 20,
tickSize: 5,
simple: false, //axis has only first and last points as ticks, i.e. the scale's domain extent
nice: false,
pixelsPerTick: 100,
units: ['multi'],
unitOverride: false,
yOffset: 0,
xOffset: 0,
labelWidth: 0,
showDomain: false,
dataType: 'categorical',
attr: {
ticks: {
'stroke-dasharray': 'none',
'stroke': 'rgba(0, 0, 0, 0.3)',
'shape-rendering': 'crispEdges'
},
primary: {
fill: '#757470',
'font-family': 'BentonSans, sans-serif',
'font-size': 12
},
secondary: {},
xAxisLabel: {
'text-anchor': 'start'
},
yAxisLabel: {
'text-anchor': 'end'
},
yAxisLine: {}
}
};
function isVertical() {
return ['right', 'left'].indexOf(config.axes[0].orient()) > -1;
}
function customTickShape(g) {
var ticks = g.selectAll(".primary .tick");
ticks.each(function () {
isVertical() ? d3.select(this).select('text').attr("x", -6) : null;
d3.select(this).append("circle").attr("r", 2);
});
ticks.selectAll("line").remove();
}
function render(g) {
var chartType = config.attr['chart-type'];
var orientOffset = isVertical() ? -config.axes[0].tickSize() : 0;
var className = isVertical() ? 'y' : 'x';
config.attr.primary['text-anchor'] = isVertical() ? 'end' : 'middle';
config.attr.secondary['text-anchor'] = isVertical() ? 'end' : 'middle';
g = g.append('g').attr('transform', 'translate(' + (config.xOffset + orientOffset) + ',' + config.yOffset + ')').attr('class', className + ' axis axis--independent axis--category').each(function () {
labels.add(d3.select(this), config);
});
var customTick = themes.check(model.theme, 'ticks').attributes.customTickShape || false;
customTick && chartType !== 'bar' ? customTickShape(g) : null;
if (!config.showDomain) {
g.select('path.domain').remove();
}
}
render.simple = function (bool) {
if (!arguments.length) return config.simple;
config.simple = bool;
return render;
};
render.dataType = function (dataType) {
if (!arguments.length) return config.dataType;
config.dataType = dataType;
return render;
};
render.nice = function (bool) {
if (!arguments.length) return config.nice;
config.nice = bool;
return render;
};
render.tickSize = function (int) {
if (!arguments.length) return config.tickSize;
config.tickSize = int;
return render;
};
render.labelWidth = function (int) {
if (!arguments.length) return config.labelWidth;
config.labelWidth = int;
return render;
};
render.lineHeight = function (int) {
if (!arguments.length) return config.lineHeight;
config.lineHeight = int;
return render;
};
render.orient = function (string) {
if (!arguments.length) return config.axes[0].orient();
config.axes[0].orient(string);
return render;
};
render.yOffset = function (int) {
if (!arguments.length) return config.yOffset;
config.yOffset = int;
return render;
};
render.xOffset = function (int) {
if (!arguments.length) return config.xOffset;
config.xOffset = int;
return render;
};
render.attrs = function (obj, target) {
if (!arguments.length) return config.attr[target || 'primary'];
if (typeof obj !== "undefined") config.attr[target || 'primary'] = obj;
//for (var prop in config.attr){
// if (render[prop]) render[prop](obj[prop]);
//}
return render;
};
render.scale = function (scale, units) {
if (!arguments.length) return config.axes[0].scale();
units = units || ['unknown'];
if (config.dataType === 'categorical') {
units = ['categorical'];
}
config.scale = scale;
config.units = units;
var axes = [];
for (var i = 0; i < units.length; i++) {
var unit = units[i];
if (dates.formatGroups[unit]) {
var axis = d3.svg.axis().orient(config.axes[0].orient()).scale(scale).tickFormat(dates.formatGroups[unit]).tickSize(config.tickSize, 0);
axes.push(axis);
}
}
config.axes = axes;
return render;
};
return render;
}
module.exports = categoryAxis;
/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
// because of the need to export and convert browser rendered SVGs
// we need a simple way to attach styles as attributes if necessary,
// so, heres a list of attributes and the selectors to which they should be applied
var d3 = __webpack_require__(4);
var web = __webpack_require__(9);
var video = __webpack_require__(10);
var print = __webpack_require__(11);
var nar = __webpack_require__(12);
var themes = {
'ft-web': web.theme,
'ft-video': video.theme,
'ft-print': print.theme,
'ft-nar': nar.theme,
check: checkAttributes,
createDefinitions: createDefinitions
};
var definitions = {
'ft-web': web.defs,
'ft-video': video.defs,
'ft-print': print.defs,
'ft-nar': nar.defs
};
function createDefinitions(g, model) {
if (!model.gradients) return;
var theme = model.theme;
var series = model.y.series.length;
var defs = model.gradients.map(function (grad, i) {
if (i >= series) return;
var id = grad.match(/url\(#(.*)\)/)[1];
return definitions[theme][id];
});
var elDefs = g.select('.chart-definitions');
if (!elDefs.size()) elDefs = g.append('g').attr('class', 'chart-definitions');
elDefs.node().innerHTML += defs.join('');
}
function checkAttributes(theme, selector) {
return themes[theme || 'ft-web'].filter(function (style, i) {
return style.id == selector;
})[0] || { attributes: {} }; //return only a single object by id
}
module.exports = themes;
/***/ },
/* 9 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var colours = {
line: ['#af516c', '#ecafaf', '#d7706c', '#76acb8', '#7fd8f5', '#3d7ab3', '#b8b1a9'],
column: ['#bb6d82', '#ecafaf', '#d7706c', '#cb9f8c', '#b07979', '#ccc2c2', '#8f7d95', '#b8b1a9'],
bar: ['#bb6d82', '#ecafaf', '#d7706c', '#cb9f8c', '#b07979', '#ccc2c2', '#8f7d95', '#b8b1a9'],
accent: '#9e2f50'
};
// SPECIAL 'non-svg' ATTRIBUTES:
// padding-x: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding-y: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding: applied to 'text' elements (dressing/index.js does this)
// align: applied to 'text' elements (dressing/index.js does this)
// background:applied to 'text' elements (dressing/index.js does this)
// border: applied to 'line' and 'path' elements (dressing/index.js does this)
module.exports.theme = [{
'selector': 'path.accent, line.accent, rect.accent',
'attributes': {
'stroke': colours.accent
}
}, {
'id': 'svg',
'selector': 'svg',
'attributes': {
'background': '#fff1e0'
}
},
//lines
{
'id': 'lines',
'selector': 'path.line, line.key__line',
'attributes': {
'fill': 'none',
'stroke-linejoin': 'round',
'stroke-linecap': 'round'
}
},
////Columns
//{ 'id': 'columns',
// 'attributes': {
// 'stroke': 'none'
// }
//},
////Bars
//{ 'id': 'bars',
// 'attributes': {
// 'stroke': 'none'
// }
//},
{
'id': 'null-label',
'attributes': {
'text-anchor': 'middle',
'font-size': 10,
'fill': 'rgba(0, 0, 0, 0.4)'
}
},
//text
{ 'id': 'chart-title',
'attributes': {
'font-family': 'BentonSans, sans-serif',
'font-size': 18,
'fill': 'rgba(0, 0, 0, 0.8)'
}
}, { 'id': 'chart-subtitle',
'attributes': {
'font-family': 'BentonSans, sans-serif',
'font-size': 12,
'fill': 'rgba(0, 0, 0, 0.5)'
}
}, { 'id': 'chart-source',
'attributes': {
'font-family': 'BentonSans, sans-serif',
'font-size': 10,
'line-height': 12,
'fill': 'rgba(0, 0, 0, 0.5)'
}
}, { 'id': 'chart-footnote',
'attributes': {
'font-family': 'BentonSans, sans-serif',
'font-size': 12,
'line-height': 15,
'fill': 'rgba(0, 0, 0, 0.5)'
}
}, { 'id': 'key',
'attributes': {
'font-family': 'BentonSans, sans-serif',
'font-size': 12,
'line-height': 16,
'fill': 'rgba(0, 0, 0, 0.5)',
'padding-y': 8
}
}, { 'id': 'independent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#000000',
'stroke-opacity': '0.3',
'stroke-dasharray': 'none'
}
}, { 'id': 'dependent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#000000',
'stroke-opacity': '0.1',
'stroke-dasharray': '2 2'
}
}, { 'id': 'origin-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#000000',
'stroke-opacity': '0.3',
'stroke-dasharray': 'none'
}
},
// position plot lines, options: 'front', 'back'
{ 'id': 'axis-layer',
'attributes': {
'position': 'back'
}
}, { 'id': 'axis-text',
'attributes': {
'font-size': 12,
'font-family': 'BentonSans, sans-serif',
'stroke': 'none',
'fill': '#757470'
}
}, { 'id': 'axis-secondary-text',
'selector': '.axis .secondary text',
'attributes': {
'font-size': 10,
'fill': '#757470'
}
}, {
'id': 'x-axis-text',
'attributes': {
'text-anchor': 'middle'
}
}, {
'id': 'y-axis-text',
'attributes': {
'text-anchor': 'end'
}
}];
module.exports.theme.colours = colours;
/***/ },
/* 10 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var PADDING = 8;
var colours = {
line: ['rgb(180,63,51)', 'rgb(92,141,179)', 'rgb(165,174,103)', 'rgb(238,168,88)', 'rgb(163,91,133)', 'rgb(157,153,151)'],
bar: ['rgb(180,63,51)', 'rgb(92,141,179)', 'rgb(165,174,103)', 'rgb(238,168,88)', 'rgb(163,91,133)', 'rgb(157,153,151)'],
column: ['rgb(180,63,51)', 'rgb(92,141,179)', 'rgb(165,174,103)', 'rgb(238,168,88)', 'rgb(163,91,133)', 'rgb(157,153,151)'],
accent: '#9e2f50',
border: 'rgb(243, 236, 228)'
};
var gradients = {
bar: ['url(#hgradient--series1)', 'url(#hgradient--series2)', 'url(#hgradient--series3)', 'url(#hgradient--series4)', 'url(#hgradient--series5)', 'url(#hgradient--series6)'],
column: ['url(#gradient--series1)', 'url(#gradient--series2)', 'url(#gradient--series3)', 'url(#gradient--series4)', 'url(#gradient--series5)', 'url(#gradient--series6)']
};
function linearGradient(id, start, stop, positions) {
var x1 = positions.x1 || 0;
var x2 = positions.x2 || 0;
var y1 = positions.y1 || 0;
var y2 = positions.y2 || 0;
return ['<linearGradient id="' + id + '" x1="' + x1 + '" x2="' + x2 + '" y1="' + y1 + '" y2="' + y2 + '">', '<stop offset="0%" stop-color="' + start + '"/>', '<stop offset="100%" stop-color="' + stop + '"/>', '</linearGradient>'].join('');
}
function seriesGradient(chart, idPrefix, series, positions) {
var start = colours[chart][series - 1];
var stop = colours[chart][series - 1].replace('rgb', 'rgba').replace(')', ',0.5)');
return linearGradient(idPrefix + series, start, stop, positions);
}
module.exports.defs = {
'gradient--series1': seriesGradient('column', 'gradient--series', 1, { y2: 1 }),
'gradient--series2': seriesGradient('column', 'gradient--series', 2, { y2: 1 }),
'gradient--series3': seriesGradient('column', 'gradient--series', 3, { y2: 1 }),
'gradient--series4': seriesGradient('column', 'gradient--series', 4, { y2: 1 }),
'gradient--series5': seriesGradient('column', 'gradient--series', 5, { y2: 1 }),
'gradient--series6': seriesGradient('column', 'gradient--series', 6, { y2: 1 }),
'hgradient--series1': seriesGradient('bar', 'hgradient--series', 1, { x1: 1 }),
'hgradient--series2': seriesGradient('bar', 'hgradient--series', 2, { x1: 1 }),
'hgradient--series3': seriesGradient('bar', 'hgradient--series', 3, { x1: 1 }),
'hgradient--series4': seriesGradient('bar', 'hgradient--series', 4, { x1: 1 }),
'hgradient--series5': seriesGradient('bar', 'hgradient--series', 5, { x1: 1 }),
'hgradient--series6': seriesGradient('bar', 'hgradient--series', 6, { x1: 1 })
};
// SPECIAL 'non-svg' ATTRIBUTES:
// padding-x: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding-y: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding: applied to 'text' elements (dressing/index.js does this)
// align: applied to 'text' elements (dressing/index.js does this)
// background:applied to 'text' elements (dressing/index.js does this)
// position: absolute. applied to 'text' elements (dressing/index.js does this). means the height isnt accumulated.
// border: applied to 'line' and 'path' elements (dressing/index.js does this)
module.exports.theme = [
//general
{
'selector': 'path.accent, line.accent, rect.accent',
'attributes': {
'stroke': colours.accent
}
}, {
'id': 'svg',
'attributes': {
'padding-x': 52,
'padding-y': 25,
'background': 'rgb(229,216,196)'
}
}, { 'id': 'chart',
'attributes': {
'padding': PADDING
}
}, { 'id': 'chart-logo',
'attributes': {
'display': 'none'
}
},
//lines
{
'id': 'lines',
'attributes': {
'border': colours.border,
'fill': 'none',
'stroke-linejoin': 'round',
'stroke-linecap': 'round'
}
},
//Columns
{ 'id': 'columns',
'attributes': {
stroke: 'rgb(243, 236, 228)',
'stroke-width': 2
}
},
//bars
{ 'id': 'bars',
'attributes': {
stroke: 'rgb(243, 236, 228)',
'stroke-width': 2
}
}, {
'id': 'null-label',
'attributes': {
'text-anchor': 'middle',
'font-size': 10,
'fill': 'rgba(0, 0, 0, 0.4)'
}
},
//text
{ 'id': 'chart-title',
'attributes': {
'font-family': 'MetricWebSemiBold, sans-serif',
'font-size': 20,
'padding': PADDING,
'font-weight': '600',
'fill': '#ffffff',
'background': 'rgb(124,120,119)'
}
}, { 'id': 'chart-subtitle',
'attributes': {
'font-family': 'MetricWebSemiBold, sans-serif',
'font-size': 14,
'line-height': 14,
'fill': '#43423e',
'padding': PADDING
}
}, { 'id': 'key',
'attributes': {
'font-family': 'MetricWebSemiBold, sans-serif',
'font-size': 14,
'line-height': 16,
'font-weight': '600',
'fill': '#43423e',
'padding': PADDING
}
}, { 'id': 'chart-source',
'attributes': {
'font-family': 'MetricWebSemiBold, sans-serif',
'font-size': 12,
'line-height': 14,
'fill': '#43423e',
float: 'right',
'padding-x': PADDING
}
}, { 'id': 'chart-footnote',
'attributes': {
'font-family': 'MetricWebSemiBold, sans-serif',
'font-size': 12,
'line-height': 16,
'fill': '#43423e',
align: 'left',
'padding-x': PADDING
}
}, { 'id': 'dependent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#ffffff',
'stroke-width': 2
}
}, { 'id': 'independent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#ffffff',
'stroke-width': 2
}
}, { 'id': 'origin-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#ffffff',
'stroke-width': 2
}
},
// position plot lines, options: 'front', 'back'
{ 'id': 'axis-layer',
'attributes': {
'position': 'back'
}
}, {
'id': 'axis-text',
'attributes': {
'font-size': 14,
'font-family': 'MetricWebSemiBold, sans-serif',
'stroke': 'none',
'font-weight': '600',
'fill': '#43423e'
}
}, {
'id': 'axis-secondary-text',
'attributes': {
'font-size': 12,
'font-weight': '600',
'fill': '#43423e'
}
}, {
'id': 'x-axis-text',
'attributes': {
'text-anchor': 'start'
}
}, {
'id': 'y-axis-text',
'attributes': {
'text-anchor': 'end'
}
}];
module.exports.theme.colours = colours;
module.exports.theme.gradients = gradients;
/***/ },
/* 11 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
"use strict";
var define = false;
var PADDING = 0;
var colours = {
line: ["#004b6c", "#c99b2d", "#bac9b8", "#4988ad", "#8d221f", "#dee3dd"],
bar: ['#006791', '#003149', '#5288a5', '#80a9ac', '#bac9b8', '#d3e2eb'],
column: ['#006791', '#003149', '#5288a5', '#80a9ac', '#bac9b8', '#d3e2eb'],
accent: 'rgb(221,183,49)'
};
// SPECIAL 'non-svg' ATTRIBUTES:
// padding-x: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding-y: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding: applied to 'text' elements (dressing/index.js does this)
// align: applied to 'text' elements (dressing/index.js does this)
// background:applied to 'text' elements (dressing/index.js does this)
// border: applied to 'line' and 'path' elements (dressing/index.js does this)
module.exports.theme = [{
'selector': 'path.accent, line.accent, rect.accent',
'attributes': {
'stroke': colours.accent
}
}, {
'id': 'svg',
'attributes': {
background: 'none',
'padding-y': 10,
'padding-x': 10,
'padding': 10
}
}, {
'id': 'chart',
'attributes': {
'padding': 10
}
}, {
'id': 'svg-borders',
'attributes': {
'max-width': 318,
'stroke-width': '0.3',
'top': true,
'bottom': true,
'left': true,
'right': true
}
},
//lines
{
'id': 'lines',
'selector': 'path.line, line.key__line',
'attributes': {
'fill': 'none',
'stroke-linejoin': 'round',
'stroke-linecap': 'round',
'stroke-width': 3
}
},
//Columns
{ 'id': 'columns',
'attributes': {
'stroke-width': 0
}
},
//bars
{ 'id': 'bars',
'attributes': {
'stroke-width': 0
}
}, {
'id': 'null-label',
'attributes': {
'text-anchor': 'middle',
'font-size': 10,
'fill': 'rgba(0, 0, 0, 0.4)'
}
},
//text
{ 'id': 'chart-title',
'attributes': {
'font-family': 'MetricWebSemiBold, sans-serif',
'font-size': '12',
'line-height': '12',
'font-weight': 600,
'fill': 'rgba(0, 0, 0, 1)'
}
}, { 'id': 'chart-subtitle',
'attributes': {
'font-family': 'MetricWeb, sans-serif',
'font-size': '9.6',
'line-height': 11,
'font-weight': 400,
'fill': 'rgba(0, 0, 0, 1)'
}
}, { 'id': 'key',
'attributes': {
'font-family': 'MetricWeb, sans-serif',
'font-size': '9.6',
'line-height': 11,
'font-weight': 400,
'padding': 3,
'background': 'white',
'fill': 'rgba(0, 0, 0, 0.8)'
}
}, { 'id': 'chart-source',
'attributes': {
'font-family': 'MetricWeb, sans-serif',
'font-size': '7.2',
'line-height': 10,
'font-weight': 400
}
}, {
'id': 'chart-footnote',
'attributes': {
'font-family': 'MetricWeb, sans-serif',
'font-size': '7.2',
'line-height': 11,
'font-weight': 400
}
}, { 'id': 'dependent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#111111',
'stroke-width': '0.3'
}
}, { 'id': 'independent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#111111',
'stroke-width': '0.3'
}
}, { 'id': 'origin-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#111111',
'stroke-width': '0.3'
}
},
// position plot lines, options: 'front', 'back'
{ 'id': 'axis-layer',
'attributes': {
'position': 'back'
}
}, { 'id': 'axis-text',
'attributes': {
'font-size': '9.6',
'line-height': 11,
'font-family': 'MetricWeb, sans-serif',
'stroke': 'none',
'font-weight': 400,
'fill': 'rgba(0, 0, 0, 0.8)'
}
}, { 'id': 'axis-secondary-text',
'attributes': {
'font-size': '9.6',
'line-height': 11,
'font-family': 'MetricWeb, sans-serif',
'font-weight': 400,
'fill': 'rgba(0, 0, 0, 0.8)'
}
}, {
'id': 'x-axis-text',
'attributes': {
'text-anchor': 'start'
}
}, {
'id': 'y-axis-text',
'attributes': {
'text-anchor': 'end'
}
}, { 'id': 'chart-logo',
'attributes': {
'display': 'none'
}
}];
module.exports.theme.colours = colours;
/***/ },
/* 12 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var colours = {
line: ['#154577', '#58bdbb', '#cabd92', '#ac252a', '#ee5427', '#f9a71a'],
column: ['#154577', '#58bdbb', '#cabd92', '#ac252a', '#ee5427', '#f9a71a'],
bar: ['#154577', '#58bdbb', '#cabd92', '#ac252a', '#ee5427', '#f9a71a'],
accent: '#154577'
};
// SPECIAL 'non-svg' ATTRIBUTES:
// padding-x: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding-y: applied to the SVG (affects svg > child) and 'text' elements (dressing/index.js does this)
// padding: applied to 'text' elements (dressing/index.js does this)
// align: applied to 'text' elements (dressing/index.js does this)
// background:applied to 'text' elements (dressing/index.js does this)
// border: applied to 'line' and 'path' elements (dressing/index.js does this)
module.exports.theme = [{
'selector': 'path.accent, line.accent, rect.accent',
'attributes': {
'stroke': colours.accent
}
}, {
'id': 'svg',
'selector': 'svg',
'attributes': {
'background': 'none',
'padding-y': 10
}
}, {
'id': 'svg-borders',
'attributes': {
'top': true,
'bottom': true
}
},
//lines
{
'id': 'lines',
'selector': 'path.line, line.key__line',
'attributes': {
'fill': 'none',
'stroke-linejoin': 'round',
'stroke-linecap': 'round'
}
},
////Columns
//{ 'id': 'columns',
// 'attributes': {
// 'stroke': 'none'
// }
//},
////Bars
//{ 'id': 'bars',
// 'attributes': {
// 'stroke': 'none'
// }
//},
{
'id': 'null-label',
'attributes': {
'text-anchor': 'middle',
'font-size': 10,
'fill': 'rgba(0, 0, 0, 0.4)'
}
},
//text
{ 'id': 'chart-title',
'attributes': {
'font-family': 'AvenirHeavy, sans-serif',
'font-size': 18,
'font-weight': 900,
'fill': 'rgba(0, 0, 0, 0.8)'
}
}, { 'id': 'chart-subtitle',
'attributes': {
'font-family': 'AvenirLightOblique, sans-serif',
'font-size': 13,
'font-style': 'italic',
'fill': 'rgba(0, 0, 0, 0.8)'
}
}, { 'id': 'chart-source',
'attributes': {
'font-family': 'AvenirLightOblique, sans-serif',
'font-size': 11,
'font-style': 'italic',
'line-height': 12,
'fill': '#000000'
}
}, { 'id': 'chart-footnote',
'attributes': {
'font-family': 'AvenirLightOblique, sans-serif',
'font-size': 11,
'font-style': 'italic',
'line-height': 12,
'fill': '#000000',
'padding-y': 5
}
}, { 'id': 'chart-plot',
'attributes': {
'full-width': true,
'padding-x': 0.05
}
}, { 'id': 'key',
'attributes': {
'font-family': 'AvenirLight, sans-serif',
'font-size': 13,
'line-height': 16,
'fill': '#000000',
'stroke-opacity': '0.8',
'padding-y': 8
}
}, { 'id': 'independent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#000000',
'stroke-opacity': '0.3',
'stroke-width': 1
}
}, { 'id': 'dependent-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#000000',
'stroke-opacity': '0.1',
'stroke-width': 1
}
}, { 'id': 'origin-ticks',
'attributes': {
'shape-rendering': 'crispEdges',
'stroke': '#000000',
'stroke-width': 1,
'stroke-opacity': 1
}
},
// Controls whether the tick is a line or circle
{
'id': 'ticks',
'attributes': {
'customTickShape': true
}
},
// position plot lines, options: 'front', 'back'
{ 'id': 'axis-layer',
'attributes': {
'position': 'front'
}
}, { 'id': 'axis-text',
'attributes': {
'font-size': 13,
'font-family': 'AvenirLight, sans-serif',
'stroke': 'none',
'fill': '#000000'
}
}, { 'id': 'axis-secondary-text',
'selector': '.axis .secondary text',
'attributes': {
'font-family': 'AvenirLight, sans-serif',
'font-size': 13,
'fill': '#000000',
'text-anchor': 'middle'
}
}, {
'id': 'x-axis-text',
'attributes': {
'text-anchor': 'middle'
}
}, {
'id': 'y-axis-text',
'attributes': {
'text-anchor': 'end',
'transform': 'translate( 0, 0 )'
}
}, {
'id': 'y-axis-line',
'attributes': {
'x1': 0
}
}, { 'id': 'chart-logo',
'attributes': {
'display': 'none'
}
}, {
'id': 'datesFormatter',
'attributes': {
'decade-long-year': "'%y",
'decade-short-year': "'%y",
'centuries-short-year': "'%y",
'years-short-year': "'%y"
}
}];
module.exports.theme.colours = colours;
/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var dates = __webpack_require__(14);
var dateFormatter = dates.formatter;
module.exports = {
extendedTicks: function extendedTicks(g, config) {
var tickExtender = 1.5;
var extendedTicks_selector = ".tick line[y2=\"" + config.tickSize * tickExtender + "\"]";
var ticks_selector = ".tick line";
g.selectAll(ticks_selector).attr("y2", function (d) {
var formatted = d.getMonth ? dateFormatter[config.units[0]](d) : d.toString();
var isFirstInPeriod = formatted.indexOf('Q1') === 0 || formatted.indexOf('Jan') === 0;
return isFirstInPeriod ? config.tickSize * tickExtender : config.tickSize;
});
var tickCount = g.selectAll(ticks_selector)[0].length;
var extendedCount = g.selectAll(extendedTicks_selector)[0].length;
if (extendedCount + 2 >= tickCount) {
//take into account of first + last starting on something not q1
g.selectAll(extendedTicks_selector).attr("y2", config.tickSize);
}
},
add: function add(g, config) {
var self = this;
var options = { row: 0 };
config.axes.forEach(function (axis, i) {
self.addRow(g, axis, options, config);
options.row++;
});
g.selectAll('.axis .primary line').attr(config.attr.ticks);
//remove text-anchor attribute from year positions
g.selectAll('.x.axis .primary text').attr({
x: null,
y: null,
dy: 15 + config.tickSize
});
//if xAxisLabel is centre-aligned, and chart yAxis is right-aligned, make first xAxisLabel left-aligned
if (config.attr['chart-type'] === 'line' && config.attr['chart-alignment'] === 'right' && config.attr.primary['text-anchor'] === 'middle') {
g.selectAll('.x.axis .primary .tick:first-child text').attr({
'text-anchor': 'start'
});
}
},
addRow: function addRow(g, axis, options, config) {
var rowClass = options.row ? 'secondary' : 'primary';
var attr = config.attr[rowClass] || config.attr.primary;
g.append('g').attr('class', rowClass).attr('transform', 'translate(0,' + options.row * config.lineHeight + ')').call(axis);
g.selectAll('.axis .' + rowClass + ' text').attr('style', '').attr(attr);
if (config.dataType === 'categorical') {
return;
}
this.removeDuplicates(g, '.' + rowClass + ' text');
if (options.extendTicks) {
this.extendedTicks(g, config, options.extendTicks);
}
if (dates.unitGenerator(config.scale.domain())[0] == 'days') {
this.removeDays(g, '.primary text');
}
if (config.units[0] == 'quarterly') {
this.removeQuarters(g, axis, options);
}
if (config.units[0] == 'weekly') {
this.removeWeekly(g, axis, options);
}
if (config.units[0] == 'daily') {
// in this case we don't remove daily ticks
}
if (config.units[0] == 'monthly') {
this.removeMonths(g, axis, options, config);
}
this.removeOverlapping(g, '.' + rowClass + ' text', config.attr['chart-alignment'], config.attr['chart-type']);
this.removePrimaryOverlappingSecondary(g);
},
intersection: function intersection(a, b, padding) {
var PADDING = padding || 3;
var overlap = a.left <= b.right + PADDING && b.left <= a.right + PADDING && a.top <= b.bottom && b.top <= a.bottom;
return overlap;
},
overlapping: function overlapping(dElements) {
var self = this;
var bounds = [];
var overlap = false;
dElements.each(function (d, i) {
var rect = this.getBoundingClientRect();
var include = true;
bounds.forEach(function (b, i) {
if (self.intersection(b, rect)) {
include = false;
overlap = true;
}
});
if (include) {
bounds.push(rect);
}
});
return overlap;
},
removeQuarters: function removeQuarters(g, axis, options) {
if (!this.overlapping(g.selectAll(".primary text")) || options.extendTicks) return;
options.row--;
options.extendTicks = true;
g.select(".primary").remove();
},
removeWeekly: function removeWeekly(g, axis, options) {
if (options.extendTicks) return;
options.row--;
options.extendTicks = true;
g.select(".primary").remove();
},
removeDaily: function removeDaily(g, axis, options) {
if (options.extendTicks) return;
options.row--;
options.extendTicks = true;
g.select(".primary").remove();
},
removeMonths: function removeMonths(g, axis, options, config) {
if (g.selectAll(".primary text")[0].length < 13) return;
options.extendTicks = true;
var text = g.selectAll('.primary .tick text');
text.each(function (d, i) {
if (i === 0 || i === text[0].length - 1 || d3.select(this).text() == 'Jan') return;
d3.select(this).remove();
});
},
removeDays: function removeDays(g, selector) {
var dElements = g.selectAll(selector);
var elementCount = dElements[0].length;
function remove(d, i) {
var d3This = d3.select(this);
if (i !== 0 && i !== elementCount - 1 && d3This.text() != 1) {
d3This.remove();
}
}
dElements.each(remove);
},
removeOverlapping: function removeOverlapping(g, selector, alignment, type) {
var self = this;
var dElements = g.selectAll(selector);
var elementCount = dElements[0].length;
var limit = 5;
function removeNonOverlappingLabels(count) {
var firstLabel = dElements[0][0];
var nextLabel = dElements[0][count];
if (firstLabel !== undefined && nextLabel !== undefined) {
if (self.intersection(nextLabel.getBoundingClientRect(), firstLabel.getBoundingClientRect(), 20)) {
d3.select(nextLabel).remove();
}
}
}
function remove(d, i) {
var last = i === elementCount - 1;
var previousLabel = dElements[0][elementCount - 2];
var lastOverlapsPrevious = last && self.intersection(previousLabel.getBoundingClientRect(), this.getBoundingClientRect());
if (last && lastOverlapsPrevious) {
d3.select(previousLabel).remove();
} else if (i % 2 !== 0 && !last) {
d3.select(this).remove();
}
if (alignment === 'right' && type === 'line' && i > 0 && i < 3) {
removeNonOverlappingLabels(i);
}
}
while (self.overlapping(g.selectAll(selector)) && limit > 0) {
limit--;
g.selectAll(selector).each(remove);
dElements = g.selectAll(selector);
elementCount = dElements[0].length;
}
if (alignment === 'right' && type === 'line') {
removeNonOverlappingLabels(1);
}
},
removePrimaryOverlappingSecondary: function removePrimaryOverlappingSecondary(g) {
var self = this;
var primaryLabels = g.selectAll('.primary text');
var secondaryLabels = g.selectAll('.secondary text');
if (secondaryLabels[0].length > 0) {
secondaryLabels.each(function () {
var secondaryLabel = this;
primaryLabels.each(function () {
var primaryLabel = this;
if (self.intersection(primaryLabel.getBoundingClientRect(), secondaryLabel.getBoundingClientRect(), 40)) {
d3.select(primaryLabel).remove();
}
});
});
}
},
removeDuplicates: function removeDuplicates(g, selector) {
var dElements = g.selectAll(selector);
function remove(label, i) {
if (i === 0) return;
var d3This = d3.select(this);
var previousLabel = dElements[0][i - 1];
if (d3This.text() === d3.select(previousLabel).text()) {
d3This.remove();
}
}
dElements.each(remove);
}
};
/***/ },
/* 14 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var themes = __webpack_require__(8);
var formatter = {
// date, index, firstDate, model
centuries: function centuries(d, i, firstDate, model) {
if (i === 0 || d.getYear() % 100 === 0) {
return d3.time.format('%Y')(d);
}
var formatter = model ? themes.check(model.theme, 'datesFormatter').attributes['centuries-short-year'] || '%y' : '%y';
return d3.time.format(formatter)(d);
},
// date, index, firstDate, model
decades: function decades(d, i, firstDate, model) {
var formatterString;
if (i === 0 || d.getYear() % 100 === 0) {
formatterString = model ? themes.check(model.theme, 'datesFormatter').attributes['decade-long-year'] || '%Y' : '%Y';
return d3.time.format(formatterString)(d);
}
formatterString = model ? themes.check(model.theme, 'datesFormatter').attributes['decade-short-year'] || '%y' : '%y';
return d3.time.format(formatterString)(d);
},
years: function years(d, i, firstDate, model) {
if (i === 0 || d.getYear() % 100 === 0) {
return d3.time.format('%Y')(d);
}
var formatter = model ? themes.check(model.theme, 'datesFormatter').attributes['years-short-year'] || '%y' : '%y';
return d3.time.format(formatter)(d);
},
fullYears: function fullYears(d, i) {
return d3.time.format('%Y')(d);
},
yearly: function yearly(d, i, firstDate, model) {
var years = firstDate && !Array.isArray(firstDate) && formatter.years(firstDate, i, firstDate, model) == formatter.years(d, i, firstDate, model) ? 'fullYears' : 'years';
return formatter[years](d, i, firstDate, model);
},
quarterly: function quarterly(d, i) {
return 'Q' + Math.floor((d.getMonth() + 3) / 3);
},
weekly: function weekly(d, i) {
return d3.time.format('%W')(d);
},
monthly: function monthly(d, i) {
return formatter.months(d, i);
},
shortmonths: function shortmonths(d, i) {
return d3.time.format('%b')(d)[0];
},
months: function months(d, i) {
return d3.time.format('%b')(d);
},
weeks: function weeks(d, i) {
return d3.time.format('%e %b')(d);
},
days: function days(d, i) {
return d3.time.format('%e')(d);
},
daily: function daily(d, i) {
var str = d3.time.format('%e')(d);
if (str[0] === ' ') str = str.substring(1);
return str;
},
hours: function hours(d, i) {
return parseInt(d3.time.format('%H')(d)) + ':00';
}
};
function timeDiff(domain) {
if (!domain[0].getTime || !domain[1].getTime) return {};
var jsTimeDiff = domain[1].getTime() - domain[0].getTime();
var dayLength = 86400000;
return {
days: jsTimeDiff / dayLength,
months: jsTimeDiff / (dayLength * 30),
years: jsTimeDiff / (dayLength * 365.25),
decades: jsTimeDiff / (dayLength * 365.25 * 10),
centuries: jsTimeDiff / (dayLength * 365.25 * 100)
};
}
function unitGenerator(domain, simple) {
//which units are most appropriate
if (!domain[0].getTime || !domain[1].getTime) return [];
var timeDif = timeDiff(domain);
var units;
if (timeDif.days < 2) {
units = ['hours', 'days', 'months'];
} else if (timeDif.days < 60) {
units = ['days', 'months'];
} else if (timeDif.years < 1) {
units = ['months', 'years'];
} else if (timeDif.decades < 1.5) {
units = ['years'];
} else if (timeDif.centuries < 1.5) {
units = ['decades'];
} else if (timeDif.centuries < 10) {
units = ['centuries'];
} else {
units = ['multi'];
}
if (simple && (units.indexOf('years') > -1 || units.indexOf('decades') || units.indexOf('centuries'))) {
units = ['fullYears']; //simple axis always uses full years
}
return units;
}
var groups = {
unknown: function unknown(d, i) {
return d;
},
years: function years(d, i) {
return formatter.years(new Date(d), i);
},
yearly: function yearly(d, i) {
return d.split(' ')[d.split(' ').length - 1];
},
quarterly: function quarterly(d, i) {
return d.split(' ')[0];
},
weekly: function weekly(d, i) {
return d.split(' ')[0];
},
daily: function daily(d, i) {
if (d[0] === ' ') {
d = d.substring(1);
}
return d.split(' ')[0];
},
monthly: function monthly(d, i) {
var parts = d.split(' ');
var pos = parts.length == 3 ? 1 : 0;
return parts[pos];
},
months: function months(d, i) {
return d.split(' ')[0];
},
decades: function decades(d, i) {
return d.split(' ')[1];
},
centuries: function centuries(d, i) {
return d.split(' ')[1];
},
categorical: function categorical(d, i) {
return d;
}
};
module.exports = {
timeDiff: timeDiff,
formatGroups: groups,
formatter: formatter,
unitGenerator: unitGenerator
};
/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var themes = __webpack_require__(8);
var labels = __webpack_require__(13);
var dates = __webpack_require__(14);
var dateScale = __webpack_require__(16);
var timeDiff = dates.timeDiff;
function dateAxis(model) {
var config = {
axes: [d3.svg.axis().orient('bottom')],
scale: false,
lineHeight: 20,
tickSize: 5,
simple: false, //axis has only first and last points as ticks, i.e. the scale's domain extent
nice: false,
pixelsPerTick: 100,
units: ['multi'],
unitOverride: false,
yOffset: 0,
xOffset: 0,
labelWidth: 0,
showDomain: false,
attr: {
ticks: {
'stroke': 'rgba(0, 0, 0, 0.3)',
'shape-rendering': 'crispEdges'
},
primary: {
fill: '#757470',
'font-family': 'BentonSans, sans-serif',
'font-size': 12
},
secondary: {},
xAxisLabel: {
'text-anchor': 'start'
},
yAxisLabel: {
'text-anchor': 'end'
},
yAxisLine: {}
}
};
function isVertical() {
if (!config.axes.length) return true; //todo: log error. no axis
return ['right', 'left'].indexOf(config.axes[0].orient()) > -1;
}
function customTickShape(g) {
var ticks = g.selectAll(".primary .tick");
ticks.each(function () {
d3.select(this).append("circle").attr("r", 2);
});
ticks.selectAll("line").remove();
}
function render(g) {
var chartType = config.attr['chart-type'];
var lineChartTextAnchor = isVertical() ? 'end' : 'start';
var lineChartSecondaryTextAnchor = isVertical() ? 'end' : 'start';
var secondTextAnchor = themes.check(model.theme, 'axis-secondary-text').attributes['text-anchor'];
if (config.attr['chart-type'] === 'line') {
lineChartTextAnchor = isVertical() ? config.attr.yAxisLabel['text-anchor'] : config.attr.xAxisLabel['text-anchor'];
lineChartSecondaryTextAnchor = secondTextAnchor ? secondTextAnchor : lineChartSecondaryTextAnchor;
}
config.attr.primary['text-anchor'] = lineChartTextAnchor;
config.attr.secondary['text-anchor'] = lineChartSecondaryTextAnchor;
g = g.append('g').attr('transform', 'translate(' + config.xOffset + ',' + config.yOffset + ')').attr('class', 'x axis axis--independent axis--date').each(function () {
labels.add(d3.select(this), config);
});
if (!config.showDomain) {
g.select('path.domain').remove();
}
var customTick = themes.check(model.theme, 'ticks').attributes.customTickShape || false;
customTick && chartType !== 'bar' ? customTickShape(g) : null;
}
render.simple = function (bool) {
if (!arguments.length) return config.simple;
config.simple = bool;
return render;
};
render.nice = function (bool) {
if (!arguments.length) return config.nice;
config.nice = bool;
return render;
};
render.tickSize = function (int) {
if (!arguments.length) return config.tickSize;
config.tickSize = int;
return render;
};
render.labelWidth = function (int) {
if (!arguments.length) return config.labelWidth;
config.labelWidth = int;
return render;
};
render.lineHeight = function (int) {
if (!arguments.length) return config.lineHeight;
config.lineHeight = int;
return render;
};
render.orient = function (string) {
if (!arguments.length) return config.axes[0].orient();
if (!config.axes.length) return render;
config.axes[0].orient(string);
return render;
};
render.yOffset = function (int) {
if (!arguments.length) return config.yOffset;
config.yOffset = int;
return render;
};
render.xOffset = function (int) {
if (!arguments.length) return config.xOffset;
config.xOffset = int;
return render;
};
render.attrs = function (obj, target) {
if (!arguments.length) return config.attr[target || 'primary'];
if (typeof obj !== "undefined") config.attr[target || 'primary'] = obj;
//for (var prop in config.attr){
// if (render[prop]) render[prop](obj[prop]);
//}
return render;
};
render.scale = function (scale, units) {
if (!arguments.length) return config.axes[0].scale();
if (!units || units[0] === 'daily' && timeDiff(scale.domain()).months > 1 || units[0] === 'weekly' && timeDiff(scale.domain()).years > 1 || units[0] === 'quarterly' && timeDiff(scale.domain()).decades > 1 || units[0] === 'monthly' && timeDiff(scale.domain()).years > 4.9 || units[0] === 'yearly' && timeDiff(scale.domain()).years > 10) {
units = dates.unitGenerator(scale.domain(), config.simple);
}
if (config.nice) {
scale.nice((scale.range()[1] - scale.range()[0]) / config.pixelsPerTick);
}
config.units = units;
config.scale = scale;
config.axes = dateScale.render(scale, units, config, model);
return render;
};
return render;
}
module.exports = dateAxis;
/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var utils = __webpack_require__(14);
var interval = {
centuries: d3.time.year,
decades: d3.time.year,
yearly: d3.time.year,
years: d3.time.year,
fullYears: d3.time.year,
quarterly: d3.time.month,
monthly: d3.time.month,
months: d3.time.month,
weeks: d3.time.week,
weekly: d3.time.week,
days: d3.time.day,
daily: d3.time.day,
hours: d3.time.hours
};
var increment = {
centuries: 100,
decades: 10,
yearly: 1,
years: 1,
fullYears: 1,
quarterly: 3,
monthly: 1,
months: 1,
weeks: 1,
weekly: 1,
days: 1,
daily: 1,
hours: 1
};
module.exports = {
customTicks: function customTicks(scale, unit, primaryUnit) {
if (primaryUnit == 'quarterly' && unit == 'yearly') unit = 'quarterly';
var customTicks = scale.ticks(interval[unit], increment[unit]);
customTicks.push(scale.domain()[0]); //always include the first and last values
customTicks.push(scale.domain()[1]);
customTicks.sort(this.dateSort);
//if the last 2 values labels are the same, remove them
var labels = customTicks.map(utils.formatter[unit]);
if (labels[labels.length - 1] == labels[labels.length - 2]) {
customTicks.pop();
}
return customTicks;
},
dateSort: function dateSort(a, b) {
return a.getTime() - b.getTime();
},
createAxes: function createAxes(scale, unit, config, primaryUnit, model) {
var firstDate;
var customTicks = config.simple ? scale.domain() : this.customTicks(scale, unit, primaryUnit);
var axis = d3.svg.axis().scale(scale).tickValues(customTicks).tickFormat(function (d, i) {
firstDate = firstDate || d;
return utils.formatter[unit](d, i, firstDate, model);
}).tickSize(config.tickSize, 0);
return axis;
},
render: function render(scale, units, config, model) {
var axes = [];
for (var i = 0; i < units.length; i++) {
var unit = units[i];
if (utils.formatter[unit]) {
axes.push(this.createAxes(scale, unit, config, units[0], model));
}
}
return axes;
}
};
/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
//this is wrapper for d3.svg.axis
//for a standard FT styled numeric axis
//usually these are vertical
var d3 = __webpack_require__(4);
var numberLabels = __webpack_require__(18);
var numberScales = __webpack_require__(19);
function numericAxis() {
'use strict';
var config = {
axes: d3.svg.axis().orient('left').tickSize(5, 0),
tickSize: 5,
lineHeight: 16,
userTicks: [],
hardRules: [0],
yOffset: 0,
xOffset: 0,
reverse: false,
simple: false,
noLabels: false,
pixelsPerTick: 100,
tickExtension: 0,
attr: {
ticks: {
'stroke': 'rgba(0, 0, 0, 0.1)',
'shape-rendering': 'crispEdges'
},
origin: {
'stroke': 'rgba(0, 0, 0, 0.3)',
'stroke-dasharray': 'none'
},
primary: {
fill: '#757470',
'font-family': 'BentonSans, sans-serif',
'font-size': 12
},
secondary: {},
xAxisLabel: {
'text-anchor': 'start'
},
yAxisLabel: {
'text-anchor': 'end'
},
yAxisLine: {}
}
};
function isVertical() {
return ['right', 'left'].indexOf(config.axes.orient()) > -1;
}
function axis(g) {
var orientOffset = config.axes.orient() === 'right' ? -config.axes.tickSize() : 0;
var yAxisRightAligned = config.attr['chart-alignment'] === 'right' && config.attr.yAxisLine.x1 === 0;
var yAxisLabelTextAnchor = yAxisRightAligned ? 'start' : config.attr.yAxisLabel['text-anchor'];
config.attr.primary['text-anchor'] = isVertical() ? yAxisLabelTextAnchor : config.attr.xAxisLabel['text-anchor'];
config.attr.secondary['text-anchor'] = isVertical() ? 'end' : 'start';
g = g.insert('g', ':first-child').attr('transform', 'translate(' + (config.xOffset + orientOffset) + ',' + config.yOffset + ')');
numberLabels.render(g, config);
if (config.noLabels) {
g.selectAll('text').remove();
}
}
axis.tickExtension = function (int) {
// extend the axis ticks to the right/ left a specified distance
if (!arguments.length) return config.tickExtension;
config.tickExtension = int;
return axis;
};
axis.tickSize = function (int) {
if (!arguments.length) return config.axes.tickSize();
config.axes.tickSize(-int);
return axis;
};
axis.ticks = function (int) {
if (!arguments.length) return config.axes.ticks();
if (int.length > 0) {
config.userTicks = int;
}
return axis;
};
axis.orient = function (string) {
if (!arguments.length) return config.axes.orient();
if (string) {
config.axes.orient(string);
}
return axis;
};
axis.reverse = function (bool) {
if (!arguments.length) return config.reverse;
config.reverse = bool;
if (config.reverse) {
config.axes.scale().domain(config.axes.scale().domain().reverse());
}
return axis;
};
axis.simple = function (bool) {
if (!arguments.length) return config.simple;
config.simple = bool;
return axis;
};
axis.pixelsPerTick = function (int) {
if (!arguments.length) return config.pixelsPerTick;
config.pixelsPerTick = int;
return axis;
};
axis.scale = function (x) {
if (!arguments.length) return config.axes.scale();
config.axes.scale(x);
axis.reverse(config.reverse);
if (config.userTicks.length > 0) {
config.axes.tickValues(config.userTicks);
} else {
var customTicks = numberScales.customTicks(config);
config.axes.tickValues(customTicks);
}
config.reverse = false; //only reverse once, even if scale is called twice i.e. in redraw
return axis;
};
axis.hardRules = function (int) {
//this allows you to set which lines will be solid rather than dotted, by default it's just zero and the bottom of the chart
if (!arguments.length) return config.hardRules;
config.hardRules = int;
return axis;
};
axis.yOffset = function (int) {
if (!arguments.length) return config.yOffset;
config.yOffset = int;
return axis;
};
axis.xOffset = function (int) {
if (!arguments.length) return config.xOffset;
config.xOffset = int;
return axis;
};
axis.tickFormat = function (format) {
if (!arguments.length) return config.axes.tickFormat();
config.axes.tickFormat(format);
return axis;
};
axis.noLabels = function (bool) {
if (!arguments.length) return config.noLabels;
config.noLabels = bool;
return axis;
};
axis.attrs = function (obj, target) {
if (!arguments.length) return config.attr[target || 'primary'];
if (typeof obj !== "undefined") config.attr[target || 'primary'] = obj;
//for (var prop in config.attr){
// if (axis[prop]) axis[prop](obj[prop]);
//}
return axis;
};
return axis;
}
module.exports = numericAxis;
/***/ },
/* 18 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
module.exports = {
isVertical: function isVertical(axis) {
return axis.orient() === 'left' || axis.orient() === 'right';
},
arrangeTicks: function arrangeTicks(g, config) {
var textWidth = this.textWidth(g, config.axes.orient());
g.selectAll('.tick').classed('origin', function (d, i) {
return config.hardRules.indexOf(d) > -1;
});
g.selectAll('line').attr(config.attr.ticks);
g.selectAll('.origin line').attr(config.attr.origin);
if (this.isVertical(config.axes)) {
var checkIfYAxisLine = config.attr.yAxisLabel.transform;
var configYAxisTranslate = checkIfYAxisLine || 'translate( ' + textWidth + ', ' + -(config.lineHeight / 2) + ' )';
g.selectAll('text').attr('transform', configYAxisTranslate);
}
},
extendAxis: function extendAxis(g, axes, tickExtension) {
var rules = g.selectAll('line');
if (axes.orient() === 'right') {
rules.attr('x1', tickExtension);
} else {
rules.attr('x1', tickExtension === 0 ? 0 : -tickExtension);
}
},
textWidth: function textWidth(g, orient) {
var textWidth = 0;
if (orient == 'right') {
g.selectAll('text').each(function (d) {
textWidth = Math.max(textWidth, Math.ceil(this.getBoundingClientRect().width));
});
}
return textWidth;
},
removeDecimals: function removeDecimals(g) {
var decimalTotal = 0;
g.selectAll('text').each(function (d) {
var val0 = parseFloat(this.textContent.split('.')[0]);
var val1 = parseFloat(this.textContent.split('.')[1]);
decimalTotal += val1;
if (val0 === 0 && val1 === 0) {
this.textContent = 0;
}
});
if (!decimalTotal) {
g.selectAll('text').each(function (d) {
this.textContent = this.textContent.split('.')[0];
});
}
},
render: function render(g, config) {
var xOrY = this.isVertical(config.axes) ? 'y' : 'x';
var orient = config.axes.orient();
g.append('g').attr('class', 'axis axis--dependent axis--number ' + xOrY + ' ' + orient).append('g').attr('class', 'primary').call(config.axes);
g.selectAll('text').attr('style', '').attr(config.attr.primary);
this.removeDecimals(g);
this.arrangeTicks(g, config);
if (this.isVertical(config.axes)) {
var yAxisLine = config.attr.yAxisLine.x1;
var tickExtension = yAxisLine !== undefined ? yAxisLine : config.tickExtension;
this.extendAxis(g, config.axes, tickExtension);
}
}
};
/***/ },
/* 19 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
module.exports = {
removeDuplicateTicks: function removeDuplicateTicks(scale, ticks) {
var formatted = [];
var tickFormat = scale.tickFormat();
ticks = ticks.filter(function (d) {
var f = tickFormat(d);
if (formatted.indexOf(f) > -1) {
return false;
}
formatted.push(f);
return true;
});
return ticks;
},
tickIntervalBoundaries: function tickIntervalBoundaries(ticks) {
var interval = 0,
step;
ticks.forEach(function (d, i) {
if (i == ticks.length - 1) return;
// there was an issue with float precission
// so we're ensuring the step is sound
step = +(ticks[i + 1] - d).toPrecision(12);
interval = Math.max(step, interval);
});
return interval;
},
detailedTicks: function detailedTicks(scale, pixelsPerTick) {
var count = this.tickCount(scale, pixelsPerTick);
var ticks = scale.ticks(count);
var interval = this.tickIntervalBoundaries(ticks);
var pos = scale.domain()[0] > scale.domain()[1] ? 0 : 1;
var d1 = Math.ceil(scale.domain()[pos] / interval) * interval;
var d2 = Math.floor(scale.domain()[1 - pos] / interval) * interval;
ticks[d1 <= 0 ? 'unshift' : 'push'](d1);
ticks[d2 <= 0 ? 'unshift' : 'push'](d2);
scale.domain()[pos] = d1;
scale.domain()[1 - pos] = d2;
return ticks;
},
simpleTicks: function simpleTicks(scale) {
var customTicks = [];
var domain = scale.domain();
if (Math.min(domain[0], domain[1]) < 0 && Math.max(domain[0], domain[1]) > 0) {
customTicks.push(0);
}
customTicks.push(domain[1]);
customTicks.push(domain[0]);
return customTicks;
},
tickCount: function tickCount(scale, pixelsPerTick) {
var count = Math.round((scale.range()[1] - scale.range()[0]) / pixelsPerTick);
if (count < 2) {
count = 3;
} else if (count < 5) {
count = 5;
} else if (count < 10) {
count = 10;
}
return count;
},
customTicks: function customTicks(config) {
var customTicks = [];
var scale = config.axes.scale();
if (config.simple) {
customTicks = this.simpleTicks(scale);
} else {
customTicks = this.detailedTicks(scale, config.pixelsPerTick);
var pos = scale.domain()[0] > scale.domain()[1] ? 1 : 0;
if (config.reverse) pos = 1 - pos;
config.hardRules.push(scale.domain()[pos]);
}
customTicks = this.removeDuplicateTicks(scale, customTicks);
return customTicks;
}
};
/***/ },
/* 20 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var discontScale = __webpack_require__(21);
var intraDayDiscontinuity = __webpack_require__(23);
var skipWeekends = __webpack_require__(24);
/*
this is just a wrapper for the discontinuity scale, so that we get
a scale
*/
module.exports = function (open, close) {
return discontScale().discontinuityProvider(intraDayDiscontinuity(open, close));
};
/***/ },
/* 21 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var identity = __webpack_require__(22);
module.exports = function () {
return discontinuableDateTime();
};
// obtains the ticks from the given scale, transforming the result to ensure
// it does not include any discontinuities
module.exports.tickTransformer = function (ticks, discontinuityProvider, domain) {
var clampedTicks = ticks.map(function (tick, index) {
if (index < ticks.length - 1) {
return discontinuityProvider.clampUp(tick);
} else {
var clampedTick = discontinuityProvider.clampUp(tick);
return clampedTick < domain[1] ? clampedTick : discontinuityProvider.clampDown(tick);
}
});
var uniqueTicks = clampedTicks.reduce(function (arr, tick) {
if (arr.filter(function (f) {
return f.getTime() === tick.getTime();
}).length === 0) {
arr.push(tick);
}
return arr;
}, []);
return uniqueTicks;
};
/**
* The `discontinuableDateTime` scale renders a discontinuous date time scale, i.e. a time scale that incorporates gaps.
* As an example, you can use this scale to render a chart where the weekends are skipped.
*/
function discontinuableDateTime(adaptedScale, discontinuityProvider) {
if (!arguments.length) {
adaptedScale = d3.time.scale();
discontinuityProvider = identity();
}
function scale(date) {
var domain = adaptedScale.domain();
var range = adaptedScale.range();
// The discontinuityProvider is responsible for determine the distance between two points
// along a scale that has discontinuities (i.e. sections that have been removed).
// the scale for the given point 'x' is calculated as the ratio of the discontinuous distance
// over the domain of this axis, versus the discontinuous distance to 'x'
var totalDomainDistance = discontinuityProvider.distance(domain[0], domain[1]);
var distanceToX = discontinuityProvider.distance(domain[0], date);
var ratioToX = distanceToX / totalDomainDistance;
var scaledByRange = ratioToX * (range[1] - range[0]) + range[0];
return scaledByRange;
}
scale.invert = function (x) {
var domain = adaptedScale.domain();
var range = adaptedScale.range();
var ratioToX = (x - range[0]) / (range[1] - range[0]);
var totalDomainDistance = discontinuityProvider.distance(domain[0], domain[1]);
var distanceToX = ratioToX * totalDomainDistance;
return discontinuityProvider.offset(domain[0], distanceToX);
};
scale.domain = function (x) {
if (!arguments.length) {
return adaptedScale.domain();
}
// clamp the upper and lower domain values to ensure they
// do not fall within a discontinuity
var domainLower = discontinuityProvider.clampUp(x[0]);
var domainUpper = discontinuityProvider.clampDown(x[1]);
adaptedScale.domain([domainLower, domainUpper]);
return scale;
};
scale.nice = function () {
adaptedScale.nice();
var domain = adaptedScale.domain();
var domainLower = discontinuityProvider.clampUp(domain[0]);
var domainUpper = discontinuityProvider.clampDown(domain[1]);
adaptedScale.domain([domainLower, domainUpper]);
return scale;
};
scale.ticks = function () {
var ticks = adaptedScale.ticks.apply(this, arguments);
return module.exports.tickTransformer(ticks, discontinuityProvider, scale.domain());
};
scale.copy = function () {
return discontinuableDateTime(adaptedScale.copy(), discontinuityProvider.copy());
};
scale.discontinuityProvider = function (x) {
if (!arguments.length) {
return discontinuityProvider;
}
discontinuityProvider = x;
return scale;
};
return d3.rebind(scale, adaptedScale, 'range', 'rangeRound', 'interpolate', 'clamp', 'tickFormat');
}
/***/ },
/* 22 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
/**
# Discontinuity Providers
The `fc.scale.dateTime` scale renders a discontinuous date time scale, i.e. a time scale that incorporates gaps. As an
example, you can use this scale to render a chart where the weekends are skipped.
You can use a discontinuity provider to inform the `dateTime` scale of the discontinuities between a particular range of dates. In order
to achieve this, the discontinuity provider must expose the following functions:
+ `clampUp` - When given a date, if it falls within a discontinuity (i.e. an excluded period of time) it should be shifted
forwards in time to the discontinuity boundary. Otherwise, it should be returned unchanged.
+ `clampDown` - When given a date, if it falls within a discontinuity (i.e. an excluded period of time) it should be shifted
backwards in time to the discontinuity boundary. Otherwise, it should be returned unchanged.
+ `distance` - When given a pair of dates this function returns the number of milliseconds between the two dates minus any
discontinuities.
+ `offset` - When given a date and a number of milliseconds, the date should be advanced by the number of milliseconds, skipping
any discontinuities, to return the final date.
+ `copy` - When the `dateTime` scale is copied, the discontinuity provider is also copied.
*/
module.exports = function () {
var identity = {};
identity.distance = function (startDate, endDate) {
return endDate.getTime() - startDate.getTime();
};
identity.offset = function (startDate, ms) {
return new Date(startDate.getTime() + ms);
};
identity.clampUp = function (date) {
return date;
};
identity.clampDown = function (date) {
return date;
};
identity.copy = function () {
return identity;
};
return identity;
};
/***/ },
/* 23 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
"use strict";
var define = false;
var d3 = __webpack_require__(4);
var createIntraDay = function createIntraDay(openTime, closeTime) {
if (!openTime) {
throw new Error("You need to provide an opening time as 24H time, i.e. 08:30");
}
if (!closeTime) {
throw new Error("You need to provide a closing time as 24H time, i.e. 16:30");
}
var open = openTime;
var close = closeTime;
var millisPerDay = 864e5;
var millisPerWorkDay = calculateMillis();
var millisPerWorkWeek = millisPerWorkDay * 5;
var millisPerWeek = millisPerDay * 7;
var intraDay = {};
function calculateMillis() {
var openHour = +open.split(':')[0];
var openMinute = +open.split(':')[1];
var closeHour = +close.split(':')[0];
var closeMinute = +close.split(':')[1];
var openDate = new Date(1970, 0, 0, openHour, openMinute);
var closeDate = new Date(1970, 0, 0, closeHour, closeMinute);
return closeDate.getTime() - openDate.getTime();
}
function isWeekend(date) {
return [0, 6].indexOf(date.getDay()) >= 0;
}
function isTradingHours(date) {
if (isWeekend(date)) {
return false;
}
var openDate = dateFromTime(date, open);
var closeDate = dateFromTime(date, close);
return openDate <= date && date <= closeDate;
}
// given a date and a time in 24h,
// create a new date with the time
// specified
function dateFromTime(date, time) {
var hour = +time.split(':')[0];
var minute = +time.split(':')[1];
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hour, minute);
}
function calculateOpenTimeFor(date) {
return dateFromTime(date, open);
}
function calculateCloseTimeFor(date) {
return dateFromTime(date, close);
}
function moveToNextBoundary(date) {
var openTimeToday = calculateOpenTimeFor(date);
var closeTimeToday = calculateCloseTimeFor(date);
if (date.getTime() === closeTimeToday.getTime()) {
// add a second and clamp, you'll get tomorrow
date = intraDay.clampUp(new Date(date.getTime() + 1000));
return date;
}
return closeTimeToday;
}
function moveToPrevBoundary(date) {
var openTimeToday = calculateOpenTimeFor(date);
var closeTimeToday = calculateCloseTimeFor(date);
if (date.getTime() === openTimeToday.getTime()) {
// add a second and clamp, you'll get tomorrow
return intraDay.clampDown(new Date(date.getTime() - 1000));
}
return openTimeToday;
}
function findWeekends(startDate, endDate) {
var counter = new Date(startDate.getTime());
var weekendDays = 0;
while (counter < endDate) {
if (isWeekend(counter)) {
weekendDays++;
}
counter = d3.time.day.offset(counter, 1);
}
return weekendDays * millisPerWorkDay;
}
intraDay.clampDown = function (date) {
// first move the date back into the week
// if it's in the weekend
if (isWeekend(date)) {
var daysToSubtract = date.getDay() === 0 ? 2 : 1;
var newDate = d3.time.day.ceil(date);
date = d3.time.day.offset(newDate, -daysToSubtract);
}
// and now check if it's working hours
if (isTradingHours(date)) {
return date;
}
// when we get here, we know it's not a weekend or working hours, so
// we have to find the closest date
var openTimeToday = calculateOpenTimeFor(date);
var closeTimeToday = calculateCloseTimeFor(date);
// date is before open time
if (date < openTimeToday) {
// we gotta return yesterday's close time, if it is
// monday, then it's 3 days back, otherwise it is just one
var prevWorkDays = date.getDay() === 1 ? 3 : 1;
var yesterdayClose = d3.time.day.offset(closeTimeToday, -prevWorkDays);
return yesterdayClose;
}
// date is after close time today
if (date > closeTimeToday) {
return closeTimeToday;
}
return date;
};
intraDay.clampUp = function (date) {
// first move the date forward into the week
// if it's in the weekend
if (isWeekend(date)) {
var daysToAdd = date.getDay() === 0 ? 2 : 1;
var newDate = d3.time.day.ceil(date);
date = d3.time.day.offset(newDate, daysToAdd);
}
// check if it's working hours after moving it
// out of the weekend
if (isTradingHours(date)) {
return date;
}
var openTimeToday = calculateOpenTimeFor(date);
var closeTimeToday = calculateCloseTimeFor(date);
// date is before open time
if (date < openTimeToday) {
return openTimeToday;
}
if (date > closeTimeToday) {
var nextWorkDays = date.getDay() === 5 ? 3 : 1;
var tomorrowOpen = d3.time.day.offset(openTimeToday, nextWorkDays);
return tomorrowOpen;
}
};
// number of ms within discontinuities along the scale
intraDay.distance = function (startDate, endDate) {
startDate = intraDay.clampUp(startDate);
endDate = intraDay.clampDown(endDate);
var openTimeStart = calculateOpenTimeFor(startDate);
var closeTimeStart = calculateCloseTimeFor(startDate);
var openTimeEnd = calculateOpenTimeFor(endDate);
var closeTimeEnd = calculateCloseTimeFor(endDate);
if (endDate < closeTimeStart) {
return endDate.getTime() - startDate.getTime();
}
var msStartDayAdded = closeTimeStart.getTime() - startDate.getTime();
var msEndDayRemoved = openTimeEnd.getTime() - endDate.getTime();
var offsetDayStart = d3.time.day.ceil(startDate);
var offsetDayEnd = d3.time.day.floor(endDate);
var days = (offsetDayEnd.getTime() - offsetDayStart.getTime()) / millisPerDay;
var weekendTime = findWeekends(startDate, endDate);
return days * millisPerWorkDay + msStartDayAdded - msEndDayRemoved - weekendTime;
};
intraDay.offset = function (startDate, ms) {
var date = isTradingHours(startDate) ? startDate : intraDay.clampUp(startDate);
var remainingms = Math.abs(ms);
var diff;
if (ms >= 0) {
while (remainingms > 0) {
var closeTimeStart = calculateCloseTimeFor(date);
diff = closeTimeStart.getTime() - date.getTime();
if (diff < remainingms) {
date = new Date(date.getTime() + diff);
remainingms -= diff;
// we've crossed a boundary;
date = moveToNextBoundary(date);
} else {
return new Date(date.getTime() + remainingms);
}
}
} else {
// we're going backwards!
while (remainingms > 0) {
var openTimeStart = calculateOpenTimeFor(date);
diff = date.getTime() - openTimeStart.getTime();
if (diff < remainingms) {
date = new Date(date.getTime() - diff);
remainingms -= diff;
date = moveToPrevBoundary(date);
} else {
return new Date(date.getTime() - remainingms);
}
}
}
return date;
};
intraDay.copy = function () {
return createIntraDay(open, close);
};
return intraDay;
};
module.exports = createIntraDay;
/***/ },
/* 24 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
module.exports = function () {
var millisPerDay = 24 * 3600 * 1000;
var millisPerWorkWeek = millisPerDay * 5;
var millisPerWeek = millisPerDay * 7;
var skipWeekends = {};
function isWeekend(date) {
return date.getDay() === 0 || date.getDay() === 6;
}
skipWeekends.clampDown = function (date) {
if (isWeekend(date)) {
var daysToSubtract = date.getDay() === 0 ? 2 : 1;
// round the date up to midnight
var newDate = d3.time.day.ceil(date);
// then subtract the required number of days
return d3.time.day.offset(newDate, -daysToSubtract);
} else {
return date;
}
};
skipWeekends.clampUp = function (date) {
if (isWeekend(date)) {
var daysToAdd = date.getDay() === 0 ? 1 : 2;
// round the date down to midnight
var newDate = d3.time.day.floor(date);
// then add the required number of days
return d3.time.day.offset(newDate, daysToAdd);
} else {
return date;
}
};
// returns the number of included milliseconds (i.e. those which do not fall)
// within discontinuities, along this scale
skipWeekends.distance = function (startDate, endDate) {
startDate = skipWeekends.clampUp(startDate);
endDate = skipWeekends.clampDown(endDate);
// move the start date to the end of week boundary
var offsetStart = d3.time.saturday.ceil(startDate);
if (endDate < offsetStart) {
return endDate.getTime() - startDate.getTime();
}
var msAdded = offsetStart.getTime() - startDate.getTime();
// move the end date to the end of week boundary
var offsetEnd = d3.time.saturday.ceil(endDate);
var msRemoved = offsetEnd.getTime() - endDate.getTime();
// determine how many weeks there are between these two dates
var weeks = (offsetEnd.getTime() - offsetStart.getTime()) / millisPerWeek;
return weeks * millisPerWorkWeek + msAdded - msRemoved;
};
skipWeekends.offset = function (startDate, ms) {
var date = isWeekend(startDate) ? skipWeekends.clampUp(startDate) : startDate;
var remainingms = ms;
// move to the end of week boundary
var endOfWeek = d3.time.saturday.ceil(date);
remainingms -= endOfWeek.getTime() - date.getTime();
// if the distance to the boundary is greater than the number of ms
// simply add the ms to the current date
if (remainingms < 0) {
return new Date(date.getTime() + ms);
}
// skip the weekend
date = d3.time.day.offset(endOfWeek, 2);
// add all of the complete weeks to the date
var completeWeeks = Math.floor(remainingms / millisPerWorkWeek);
date = d3.time.day.offset(date, completeWeeks * 7);
remainingms -= completeWeeks * millisPerWorkWeek;
// add the remaining time
date = new Date(date.getTime() + remainingms);
return date;
};
skipWeekends.copy = function () {
return skipWeekends;
};
return skipWeekends;
};
/***/ },
/* 25 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
function stackSeries(model, value, stack) {
if (!model.stacks) model.stacks = [];
if (!model.stacks[stack]) model.stacks[stack] = [];
model.stacks[stack].push(value);
return model.stacks[stack];
}
function Plot(model, axes) {
this.model = model;
this.axes = axes;
}
Plot.prototype.columnHeight = function (value) {
return Math.abs(this.axes.dependentAxisScale(value) - this.axes.dependentAxisScale(0));
};
Plot.prototype.barWidth = function (value) {
return Math.abs(this.axes.dependentAxisScale(value) - this.axes.dependentAxisScale(0));
};
Plot.prototype.columnWidth = function () {
var size = 20;
if (this.axes.independentAxisScale.rangeBand) {
size = this.axes.independentAxisScale.rangeBand();
}
if (!this.model.stack) {
size = size / this.model.y.series.length;
}
return size;
};
Plot.prototype.barHeight = function () {
var size = 20;
if (this.axes.independentAxisScale.rangeBand) {
size = this.axes.independentAxisScale.rangeBand();
}
if (!this.model.stack) {
size = size / this.model.y.series.length;
}
return size;
};
Plot.prototype.x = function () {
if (['bottom', 'top'].indexOf(this.model.independentAxisOrient) > -1) {
return this.xIndependent.apply(this, arguments);
} else {
return this.xDependent.apply(this, arguments);
}
};
Plot.prototype.y = function () {
if (['bottom', 'top'].indexOf(this.model.independentAxisOrient) > -1) {
return this.yDependent.apply(this, arguments);
} else {
return this.yIndependent.apply(this, arguments);
}
};
Plot.prototype.xDependent = function (value, stack, width) {
if (this.model.chartType == 'line') return this.axes.dependentAxisScale(value);
var maxValue = Math.min(0, value);
if (this.model.stack && width !== undefined) {
maxValue = value < 0 ? Math.min(0, value) : Math.max(0, value - width);
}
return this.axes.dependentAxisScale(maxValue);
};
Plot.prototype.yDependent = function (value, stack, height) {
if (this.model.chartType == 'line') return this.axes.dependentAxisScale(value);
var maxValue = Math.max(0, value);
if (this.model.stack && height !== undefined) {
maxValue = value < 0 && value !== height ? Math.min(0, value - height) : Math.max(0, value);
}
return this.axes.dependentAxisScale(maxValue);
};
Plot.prototype.xIndependent = function (key, seriesNumber) {
var position = this.axes.independentAxisScale(key);
var adjust = 0;
if (this.axes.independentAxisScale.rangeBand && !this.model.stack) {
adjust = this.axes.independentAxisScale.rangeBand() / this.model.y.series.length;
}
return position + adjust * seriesNumber;
};
Plot.prototype.yIndependent = function (key, seriesNumber) {
var position = this.axes.independentAxisScale(key);
var adjust = 0;
if (this.axes.independentAxisScale.rangeBand && !this.model.stack) {
adjust = this.axes.independentAxisScale.rangeBand() / this.model.y.series.length;
}
return position + adjust * seriesNumber;
};
module.exports = Plot;
/***/ },
/* 26 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
//a place to define custom line interpolators
var d3 = __webpack_require__(4);
function gappedLineInterpolator(points) {
//interpolate straight lines with gaps for NaN
'use strict';
var section = 0;
var arrays = [[]];
points.forEach(function (d, i) {
if (isNaN(d[1])) {
if (arrays[section].length == 1) {
console.log('warning: Found a line fragment which is a single point this won\'t be drawn');
}
section++;
arrays[section] = [];
} else {
arrays[section].push(d);
}
});
var pathSections = [];
arrays.forEach(function (points) {
pathSections.push(d3.svg.line()(points));
});
var joined = pathSections.join('');
return joined.substr(1); //substring becasue D£ always adds an M to a path so we end up with MM at the start
}
module.exports = {
gappedLine: gappedLineInterpolator
};
/***/ },
/* 27 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var lineThickness = __webpack_require__(28);
var ratios = __webpack_require__(29);
var seriesOptions = __webpack_require__(30);
var dateUtil = __webpack_require__(14);
var themes = __webpack_require__(8);
function isDate(d) {
return d && d instanceof Date && !isNaN(+d);
}
function translate(margin) {
return function (position) {
var left = position.left || 0;
var top = position.top || 0;
return 'translate(' + (margin + left) + ',' + top + ')';
};
}
function chartWidth(model) {
if (model.chartWidth) {
return model.chartWidth;
}
var rightGutter = model.contentWidth < 260 ? 16 : 26;
var fullWidthChart = themes.check(model.theme, 'chart-plot').attributes['full-width'] || false;
if (fullWidthChart) {
return model.chartType === 'bar' ? model.contentWidth - rightGutter : model.contentWidth;
}
if (model.paddingX) rightGutter = 0;
return model.contentWidth - rightGutter - model.chartPadding * 2;
}
function setExtents(model) {
var extents = [];
model.y.series.forEach(function (l) {
var key = l.key;
model.data = model.data.map(function (d, j) {
var value = Array.isArray(d.values) ? d.values[0][key] : d[key];
var isValidNumber = value === null || typeof value === 'number';
if (!isValidNumber) {
model.error({
node: null,
message: 'Value is not a number',
value: value,
row: j,
column: key
});
}
return d;
});
var ext = d3.extent(model.data, function (d) {
return Array.isArray(d.values) ? d.values[0][key] : d[key];
});
extents = extents.concat(ext);
});
return extents;
}
function findOpenCloseTimes(model) {
var maxGap = Number.MIN_VALUE;
var gapIndex;
var gaps = [];
// brute force search for maximum gap.
// this will also work for weekend skips
// since intra-day skips weekends automatically
model.data.forEach(function (d, i) {
if (!i) return;
var prevdt = model.data[i - 1][model.x.series.key];
var dt = d[model.x.series.key];
var gap = dt - prevdt;
// weekend gaps
if (gap > 1000 * 60 * 60 * 24 * 2) {
return;
}
gaps.push([i, gap]);
if (gap > maxGap) {
gapIndex = i;
maxGap = gap;
}
});
var openTime = model.data[gapIndex][model.x.series.key];
var closeTime = model.data[gapIndex - 1][model.x.series.key];
var fmt = d3.time.format("%H:%M");
var open = fmt(new Date(openTime.getTime()));
var close = fmt(new Date(closeTime.getTime()));
// ;_; side effects ewww
model.open = open;
model.close = close;
}
function independentDomain(model, chartType) {
if (model.independentDomain) {
return model.independentDomain;
}
var isCategorical = model.dataType === 'categorical';
var isBarOrColumn = ['column', 'bar'].indexOf(chartType) >= 0;
if ((model.groupData || isCategorical) && isBarOrColumn) {
model.data = model.groupData && !isCategorical ? groupDates(model, model.units) : model.data;
return model.data.map(function (d) {
return d[model.x.series.key];
});
} else {
return d3.extent(model.data, function (d) {
return d[model.x.series.key];
});
}
}
function sumStackedValues(model) {
var extents = [];
model.data.map(function (d, j) {
var key,
sum = 0;
var values = Array.isArray(d.values) ? d.values[0] : d;
for (key in values) {
if (key !== model.x.series.originalKey) {
sum += values[key];
}
}
extents.push(sum);
});
return extents;
}
function dependentDomain(model, chartType) {
if (model.dependentDomain) {
return model.dependentDomain;
}
var extents = setExtents(model);
var domain = d3.extent(extents);
if (!model.falseOrigin && domain[0] > 0) {
domain[0] = 0;
}
var isBarOrColumn = ['column', 'bar'].indexOf(chartType) >= 0;
if (isBarOrColumn && domain[1] < 0) {
domain[1] = 0;
}
return domain;
}
function chartHeight(model) {
if (model.chartHeight) {
return model.chartHeight - model.paddingY * 2;
}
var isNarrow = model.chartWidth < 220;
var isWide = model.chartWidth > 400;
var ratio = isNarrow ? 1.1 : isWide ? ratios.commonRatios.widescreen : ratios.commonRatios.standard;
return ratios.heightFromWidth(model.chartWidth, ratio) - model.paddingY * 2;
}
function stackSeries(model) {
var data = JSON.parse(JSON.stringify(model.data));
return !Array.isArray(data) ? [] : data.map(function (dataItem, i) {
delete dataItem[model.x.series.key];
var chartValues = [];
for (var item in dataItem) {
chartValues.push(dataItem[item]);
}
return chartValues;
});
}
function verifyData(model) {
return !Array.isArray(model.data) ? [] : model.data.map(function (dataItem, i) {
var s = dataItem[model.x.series.key];
var error = {
node: null,
message: '',
row: i,
column: model.x.series.key,
value: s
};
if (!dataItem) {
error.message = 'Empty row';
} else if (!s) {
error.message = 'X axis value is empty or null';
} else if (!isDate(s) && model.chartType == 'line') {
error.message = 'Value is not a valid date';
}
if (error.message) {
model.error(error);
dataItem[model.x.series.key] = null;
}
return dataItem;
});
}
function setKey(model) {
var key = model.key;
if (typeof model.key !== 'boolean') {
key = model.y.series.length > 1;
} else if (model.key && !model.y.series.length) {
key = false;
}
return key;
}
function groupDates(m, units) {
var firstDate = m.data[0][m.x.series.key];
var data = [];
m.data.forEach(function (d, i) {
var dateStr = [dateUtil.formatter[units[0]](d[m.x.series.key], i, firstDate, m)];
units[1] && dateStr.push(dateUtil.formatter[units[1]](d[m.x.series.key], i, firstDate, m));
units[2] && dateStr.push(dateUtil.formatter[units[2]](d[m.x.series.key], i, firstDate, m));
data.push({ key: dateStr.join(' '), values: [d] });
});
m.data = data;
m.x.series.key = 'key';
return m.data;
}
function needsGrouping(units) {
if (!units) return false;
var isGroupingUnit = false;
units.forEach(function (unit) {
var groupThis = ['weekly', 'quarterly', 'monthly', 'yearly'].indexOf(unit);
isGroupingUnit = isGroupingUnit || groupThis > -1;
});
return isGroupingUnit;
}
function Model(chartType, opts) {
var classes = {
line: ['line--series1', 'line--series2', 'line--series3', 'line--series4', 'line--series5', 'line--series6', 'line--series7', 'accent'],
column: ['column--series1', 'column--series2', 'column--series3', 'column--series4', 'column--series5', 'column--series6', 'column--series7', 'accent'],
bar: ['bar--series1', 'bar--series2', 'bar--series3', 'bar--series4', 'bar--series5', 'bar--series6', 'bar--series7', 'accent']
};
var m = {
//layout stuff
theme: 'ft-web',
chartType: chartType,
keyColumns: chartType == 'column' ? 5 : 1,
keyHover: false,
height: undefined,
paddingX: 0,
paddingY: 0,
tickSize: 5,
width: 300,
chartHeight: undefined,
chartWidth: undefined,
simpleDate: false,
simpleValue: false,
logoSize: 28,
//data stuff
falseOrigin: false, //TODO, find out if there's a standard 'pipeline' temr for this
error: this.error,
lineClasses: {},
columnClasses: {},
niceValue: true,
stack: false,
dependentAxisOrient: 'left',
independentAxisOrient: 'bottom',
margin: 2,
lineThickness: undefined,
yLabelWidth: 0,
xLabelHeight: 0,
gradients: false,
x: {
series: '&'
},
y: {
series: [], reverse: false
},
labelLookup: null,
sourcePrefix: 'Source: '
};
for (var key in opts) {
m[key] = opts[key];
}
m.paddingX = themes.check(m.theme, 'svg').attributes['padding-x'] || 0;
m.paddingY = themes.check(m.theme, 'svg').attributes['padding-y'] || 0;
m.chartPadding = themes.check(m.theme, 'chart').attributes.padding || 0;
m.x.series = seriesOptions.normalise(m.x.series);
m.y.series = seriesOptions.normaliseY(m.y.series).filter(function (d) {
return !!d.key && d.key !== m.x.series.key;
}).map(function (d, i) {
d.index = i;
d.className = classes[chartType][i];
return d;
});
m.colours = themes[m.theme].colours[m.chartType];
m.contentWidth = m.width - m.margin * 2 - m.paddingX * 2;
m.chartWidth = chartWidth(m);
m.chartHeight = chartHeight(m);
m.translate = translate(0);
m.data = verifyData(m);
if (m.stack) {
m.stacks = stackSeries(m);
}
m.groupData = needsGrouping(m.units);
m.independentDomain = independentDomain(m, chartType);
m.dependentDomain = dependentDomain(m, chartType);
m.lineStrokeWidth = lineThickness(m.lineThickness, m.theme);
m.key = setKey(m);
if (m.intraDay) {
findOpenCloseTimes(m);
}
if (themes[m.theme].gradients && !m.stack) {
m.gradients = themes[m.theme].gradients[m.chartType];
}
return m;
}
Model.prototype.error = function (err) {
console.log('ERROR: ', err);
};
module.exports = Model;
/***/ },
/* 28 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var thicknesses = {
small: 2,
medium: 4,
large: 6
};
var defaultThickness = thicknesses.medium;
module.exports = function (value) {
// fail fast
if (!value) {
return defaultThickness;
}
var lineThicknessIsNumber = value && typeof value === 'number' && !isNaN(value);
if (lineThicknessIsNumber) {
return value;
} else if (typeof value === 'string' && value.toLowerCase() in thicknesses) {
return thicknesses[value];
} else {
return defaultThickness;
}
};
/***/ },
/* 29 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
// More info:
// http://en.wikipedia.org/wiki/Aspect_ratio_%28image%29
var commonRatios = {
square: { width: 1, height: 1 },
standard: { width: 4, height: 3 },
golden: { width: 1.618, height: 1 },
classicPhoto: { width: 3, height: 2 },
widescreen: { width: 16, height: 9 },
panoramic: { width: 2.39, height: 1 }
};
function getRatio(name) {
if (!name) return;
if (name in commonRatios) {
return commonRatios[name];
}
if (typeof name === 'string') {
var p = name.split(':');
return { width: p[0], height: p[1] };
}
return name;
}
module.exports = {
commonRatios: commonRatios,
widthFromHeight: function widthFromHeight(height, ratio) {
ratio = getRatio(ratio);
if (!ratio) {
throw new Error('Ratio is falsey');
}
if (typeof ratio === 'number') return height * ratio;
if (!ratio.height || !ratio.width) {
throw new Error('Ratio must have width and height values');
}
ratio = ratio.width / ratio.height;
return Math.ceil(height * ratio);
},
heightFromWidth: function heightFromWidth(width, ratio) {
ratio = getRatio(ratio);
if (!ratio) {
throw new Error('Ratio is falsey');
}
if (typeof ratio === 'number') return width * ratio;
if (!ratio.height || !ratio.width) {
throw new Error('Ratio must have width and height values');
}
ratio = ratio.height / ratio.width;
return Math.ceil(width * ratio);
}
};
/***/ },
/* 30 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
function isTruthy(value) {
return !!value;
}
function normalise(value) {
var d = { key: null, label: null };
if (!value) {
return d;
}
if (typeof value === 'string') {
d.key = d.label = value;
} else if (Array.isArray(value) && value.length <= 2 && typeof value[0] === 'string') {
d.key = value[0];
d.label = typeof value[1] === 'string' ? value[1] : d.key;
} else if (typeof value === 'function') {
d = value();
} else if (value.key) {
d.key = value.key;
d.label = value.label || d.key;
}
if (typeof d.key === 'function') {
d.key = d.key();
}
if (typeof d.label === 'function') {
d.label = d.label();
}
d.originalKey = d.key;
return d;
}
function normaliseY(value) {
if (!value) return [];
return (!Array.isArray(value) ? [normalise(value)] : value.map(normalise)).filter(isTruthy);
}
module.exports = {
normaliseY: normaliseY,
normalise: normalise
};
/***/ },
/* 31 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
//example:
//http://codinginparadise.org/projects/svgweb-staging/tests/htmlObjectHarness/basic-metadata-example-01-b.html
var svgSchema = 'http://www.w3.org/2000/svg';
var xlinkSchema = 'http://www.w3.org/1999/xlink';
var xmlnsSchema = 'http://www.w3.org/2000/xmlns/';
var rdfSchema = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
var dcSchema = 'http://purl.org/dc/elements/1.1/';
var ccSchema = 'http://creativecommons.org/ns#';
var prismSchema = "http://prismstandard.org/namespaces/1.0/basic/";
var rdfsSchema = "http://www.w3.org/2000/01/rdf-schema#";
function create(svg, model) {
svg.append('title').text(model.title);
svg.append('desc').text(model.subtitle);
svg.append('metadata').attr({ 'id': "license" });
var container = svg.node();
var meta = container.querySelector('metadata');
var rdf = document.createElement('rdf:RDF');
var rdfDesc = document.createElement('rdf:Description');
var title = document.createElement('dc:title');
var description = document.createElement('dc:description');
var format = document.createElement('dc:format');
var date = document.createElement('dc:date');
container.setAttribute('xmlns', svgSchema);
container.setAttributeNS(xmlnsSchema, 'xmlns:xlink', xlinkSchema);
rdfDesc.setAttribute('rdf:about', '');
rdf.setAttributeNS(xmlnsSchema, 'xmlns:rdf', rdfSchema);
rdf.setAttributeNS(xmlnsSchema, 'xmlns:dc', dcSchema);
rdf.setAttributeNS(xmlnsSchema, 'xmlns:cc', ccSchema);
title.textContent = model.title;
description.textContent = model.subtitle;
format.textContent = 'image/svg+xml';
date.textContent = new Date().toString();
meta.appendChild(rdf);
rdf.appendChild(rdfDesc);
rdfDesc.appendChild(title);
rdfDesc.appendChild(description);
rdfDesc.appendChild(format);
rdfDesc.appendChild(date);
}
module.exports = {
create: create
};
/***/ },
/* 32 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var textArea = __webpack_require__(33);
var seriesKey = __webpack_require__(34);
var ftLogo = __webpack_require__(35);
var themes = __webpack_require__(8);
var PADDING = 8;
function getHeight(selection) {
return Math.ceil(selection.node().getBoundingClientRect().height);
}
function Dressing(svg, model) {
this.svg = svg;
this.model = model;
this.halfLineStrokeWidth = Math.ceil(model.lineStrokeWidth / 2);
this.headerHeight = 0;
this.footerHeight = 0;
this.footerItemCount = 0;
this.attrs = {};
if (this.getAttr('chart-logo').display === 'none') this.model.logoSize = 0;
this.entries = model.y.series.map(function (d) {
return { key: d.label, value: d.className };
});
}
Dressing.prototype.getAttr = function (id) {
if (!this.attrs[id]) {
this.attrs[id] = themes.check(this.model.theme, id).attributes;
}
return this.attrs[id];
};
Dressing.prototype.addBackground = function (g, viewBox) {
return g.insert('rect', ':first-child').attr({
'id': 'backgroundFill',
'x': viewBox[0] * 2,
'y': viewBox[1],
'width': viewBox[2] + viewBox[0] * -2,
'height': viewBox[3],
'fill': g.attr('background')
});
};
Dressing.prototype.addHorizontalLine = function (g, id, viewBox) {
var strokeWidth = this.getAttr('svg-borders')['stroke-width'] || 1;
return g.append('line').attr({
'id': id,
'style': "stroke: black; stroke-width: " + strokeWidth,
'x1': viewBox[2],
'y1': 0,
'fill': g.attr('background'),
'transform': this.model.translate({
top: viewBox[3],
left: 0
})
});
};
Dressing.prototype.addVerticalLine = function (g, id, viewBox) {
var strokeWidth = this.getAttr('svg-borders')['stroke-width'] || 1;
return g.append('line').attr({
'id': id,
'style': "stroke: black; stroke-width: " + strokeWidth,
'x1': 0,
'y1': viewBox[3],
'fill': g.attr('background'),
'transform': this.model.translate({
top: 0,
left: viewBox[2]
})
});
};
Dressing.prototype.addBorders = function () {
var borderConfig = this.getAttr('svg-borders');
var maxWidth = borderConfig['max-width'] || 1000;
borderConfig.top && this.model.width <= maxWidth ? this.addHorizontalLine(this.svg, 'line-horizontal-header', [0, 0, this.model.width, 0]) : null;
borderConfig.bottom && this.model.width <= maxWidth ? this.addHorizontalLine(this.svg, 'line-horizontal-footer', [0, 0, this.model.width, this.model.height - 0]) : null;
borderConfig.left && this.model.width <= maxWidth ? this.addVerticalLine(this.svg, 'line-vertical-left', [0, 0, 0, 20]) : null;
borderConfig.right && this.model.width <= maxWidth ? this.addVerticalLine(this.svg, 'line-vertical-right', [0, 0, this.model.width, 20]) : null;
};
Dressing.prototype.addHeader = function () {
this.addHeaderItem('title');
this.addHeaderItem('subtitle');
this.addSeriesKey();
};
Dressing.prototype.addFooter = function () {
var footerText = this.addFooterItem('footnote');
var sourceText = this.addFooterItem('source', this.model.sourcePrefix);
this.setHeight();
this.addLogo();
this.positionFooterItem(footerText);
this.positionFooterItem(sourceText);
this.addBackground(this.svg, [0, 0, this.model.width, this.model.height]);
};
Dressing.prototype.addLogo = function () {
var model = this.model;
if (!model.logoSize) return;
var logo = this.svg.append('g').attr('class', 'chart-logo').call(ftLogo, model.logoSize);
logo.attr('transform', model.translate({
left: model.width - model.logoSize - 3,
top: model.height - getHeight(logo) - 3
}));
};
Dressing.prototype.addItem = function (item, widthRestrict, prefix) {
var text = textArea().width(this.model.width - widthRestrict - this.model.paddingX * 2).attrs(this.getAttr('chart-' + item));
return this.svg.append('g').attr('class', 'chart-' + item).datum((prefix || '') + this.model[item]).call(text);
};
Dressing.prototype.addHeaderItem = function (item) {
if (!this.model[item]) return;
var gText = this.addItem(item, 0);
var fontSize = Math.round(this.getAttr('chart-' + item)['font-size']);
var currentPosition = {
top: this.headerHeight + fontSize + this.model.paddingY,
left: this.model.paddingX
};
if (this.getAttr('chart-' + item).position !== 'absolute' && this.getAttr('chart-' + item).float !== 'right') {
this.headerHeight += getHeight(gText) + this.halfLineStrokeWidth;
}
gText.attr('transform', this.model.translate(currentPosition));
this.setChartPosition();
};
Dressing.prototype.addFooterItem = function (item, prefix) {
if (!this.model[item]) return;
var gText = this.addItem(item, this.model.logoSize, prefix);
if (this.getAttr('chart-' + item).position !== 'absolute' && this.getAttr('chart-' + item).float !== 'right') {
this.footerHeight += getHeight(gText) + PADDING;
}
gText.currentPosition = this.footerHeight;
return gText;
};
Dressing.prototype.positionSeriesKey = function (g) {
var model = this.model;
var labelWidth = model.yLabelWidth + PADDING;
var labelHeight = model.xLabelHeight + PADDING;
var hasTopAxis = [model.dependentAxisOrient, model.independentAxisOrient].indexOf('top') > -1;
var hasLeftAxis = [model.dependentAxisOrient, model.independentAxisOrient].indexOf('left') > -1;
var left = this.halfLineStrokeWidth;
var top = this.headerHeight;
if (model.keyHover) {
left = hasLeftAxis && left < labelWidth ? labelWidth : left;
top = hasTopAxis && top < labelHeight ? labelHeight : top;
} else {
this.headerHeight += getHeight(g) + PADDING;
}
model.keyPosition = model.keyPosition || { top: top + model.paddingY, left: left + model.paddingX };
g.attr('transform', model.translate(model.keyPosition));
};
Dressing.prototype.addSeriesKey = function () {
if (!this.model.key) {
return;
}
var model = this.model;
var chartKey = seriesKey(model).style(function (d) {
return d.value;
}).label(function (d) {
return d.key;
}).width(model.keyWidth || model.contentWidth).colours(model.gradients || model.colours).attrs(this.getAttr('key'));
var gText = this.svg.append('g').attr('class', 'chart__key').datum(this.entries).call(chartKey);
this.positionSeriesKey(gText);
this.setChartPosition();
};
Dressing.prototype.positionFooterItem = function (gText) {
if (!gText) return;
var model = this.model;
this.footerItemCount++;
// when tspans have been wrapped, we have to move the
// group up by the height of every nth-child(1+n);
var spans = gText.selectAll('tspan').size();
var gHeight = gText.node().getBBox().height / spans * (spans - 1);
var yTrans = model.chartPosition.top + model.chartHeight + gText.currentPosition - gHeight;
if (this.footerItemCount == 1 && gText.select('text').attr('float')) {
this.footerHeight += getHeight(gText) + PADDING;
this.setHeight();
}
gText.attr('transform', model.translate({
top: yTrans,
left: +model.paddingX
}));
model.footerHeight = this.footerHeight;
model.footerItemPosition = model.footerItemPosition || { top: yTrans, left: +model.paddingX };
};
Dressing.prototype.setHeight = function () {
var model = this.model;
var footerHeight = Math.max(this.footerHeight + PADDING * 2, model.logoSize);
if (model.height) {
model.chartHeight = model.height - this.headerHeight - footerHeight - model.paddingY * 2;
if (model.chartHeight < 0) {
model.error({ message: 'calculated plot height is less than zero' });
}
} else {
model.height = this.headerHeight + model.chartHeight + footerHeight + model.paddingY * 2;
}
this.svg.attr('height', Math.ceil(model.height));
};
Dressing.prototype.setChartPosition = function () {
this.model.chartPosition = {
top: this.halfLineStrokeWidth + this.model.paddingY + this.headerHeight + PADDING,
left: this.halfLineStrokeWidth + this.model.paddingX + this.model.chartPadding
};
};
module.exports = Dressing;
/***/ },
/* 33 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
/*jshint -W084 */
//text area provides a wrapping text block of a given type
var d3 = __webpack_require__(4);
function textArea() {
var xOffset = 0,
yOffset = 0,
paddingX = 0,
paddingY = 0,
align = 'left',
float = 'left',
attr = {},
width = 1000,
lineHeight = 20,
units = 'px',
//pixels by default
bounds,
fill = false,
background = false;
function createBackgroundColor(g, viewBox, translate) {
return g.insert('rect', ':first-child').attr({
'class': 'background',
'fill': background,
'x': viewBox[0] * 2,
'y': viewBox[1] * 0.85, // (i.e. -0.25em)
'width': viewBox[2],
'height': viewBox[3],
'transform': 'translate(' + translate[0] + ',' + translate[1] + ')'
});
}
function wrap(text, width) {
var innerWidth = width - paddingX * 2;
var lines = 1;
text.each(function () {
var text = d3.select(this),
words = text.text().trim().split(/\s+/).reverse(),
word,
line = [],
lineNumber = 0,
y = text.attr('y'),
dy = parseFloat(text.attr('dy'));
if (isNaN(dy)) {
dy = 0;
}
var tspan = text.text(null).append('tspan').attr('x', paddingX).attr('y', y + paddingY).attr('dy', dy + units);
while (word = words.pop()) {
line.push(word);
tspan.text(line.join(' '));
if (tspan.node().getComputedTextLength() > innerWidth) {
line.pop();
tspan.text(line.join(' '));
line = [word];
lineNumber++;
var newY = lineNumber * lineHeight + paddingY;
tspan = text.append('tspan').attr('x', paddingX).attr('y', +newY + units).text(word);
}
}
lines = lineNumber + 1;
});
if (align === 'right' || float === 'right') {
text.selectAll('tspan').each(function (d, i) {
var xPosRounded = Math.round(innerWidth - this.getComputedTextLength());
d3.select(this).attr('x', xPosRounded);
});
}
if (background) {
var d3El = d3.select(text.node().parentNode);
var fillHeight = text.node().getBoundingClientRect().height + paddingY * 2;
fillHeight = Math.max(fillHeight, lineHeight * lines + paddingY * 2);
var viewBox = [0, 0 - lineHeight, width, fillHeight];
var translate = [xOffset, yOffset];
createBackgroundColor(d3El, viewBox, translate);
}
}
function area(g, accessor) {
if (!accessor) {
accessor = function (d) {
return d;
};
}
g.append('text').text(accessor).attr(attr).call(wrap, width);
}
area.bounds = function () {
return bounds;
};
area.units = function (x) {
//px, em, rem
if (!arguments.length) return units;
units = x;
return area;
};
area['line-height'] = function (h) {
//pixels by default
if (!arguments.length) return lineHeight;
if (typeof h !== "undefined") lineHeight = h;
return area;
};
area.width = function (x) {
if (!arguments.length) return width;
width = x;
return area;
};
area.yOffset = function (y) {
if (!arguments.length) return yOffset;
yOffset = y;
return area;
};
area.xOffset = function (x) {
if (!arguments.length) return xOffset;
xOffset = x;
return area;
};
area.fill = function (bool) {
if (!arguments.length) return fill;
fill = bool;
return area;
};
area.background = function (color) {
if (!arguments.length) return background;
background = color;
return area;
};
area.align = function (a) {
if (!arguments.length) return align;
if (typeof a !== "undefined") align = a;
return area;
};
area.float = function (a) {
if (!arguments.length) return float;
if (typeof a !== "undefined") float = a;
return area;
};
area.padding = function (pad) {
if (!arguments.length) return [paddingX, paddingY];
if (typeof pad !== "undefined") {
paddingX = pad;
paddingY = pad;
}
return area;
};
area['padding-x'] = function (pad) {
if (!arguments.length) return paddingX;
if (typeof pad !== "undefined") paddingX = pad;
return area;
};
area['padding-y'] = function (pad) {
if (!arguments.length) return paddingY;
if (typeof pad !== "undefined") paddingY = pad;
return area;
};
area.attrs = function (obj) {
if (!arguments.length) return attr;
if (typeof obj !== "undefined") attr = obj;
for (var prop in attr) {
if (area[prop]) area[prop](obj[prop]);
}
return area;
};
return area;
}
module.exports = textArea;
/***/ },
/* 34 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var d3 = __webpack_require__(4);
var lineThickness = __webpack_require__(28);
var themes = __webpack_require__(8);
function seriesKey(options) {
'use strict';
options = options || {};
var theme = options.theme;
var columns = options.keyColumns || 1;
var width = options.keyWidth || options.width || 300;
var strokeLength = 15;
var lineHeight = 16;
var lineAttr = themes.check(theme, 'lines').attributes;
var colAttr = themes.check(theme, 'columns').attributes;
var strokeWidth = lineThickness(options.lineThickness);
var colours = ['#af516c', '#ecafaf', '#d7706c', '#76acb8', '#7fd8f5', '#3d7ab3', '#b8b1a9'];
var padding = 0;
var paddingY = 0;
var paddingX = 0;
var xOffset = 0;
var yOffset = 0;
var background = false;
var attr = {};
var charts = {
'line': addLineKeys,
'column': addColumnKeys,
'bar': addColumnKeys
};
var style = function style(d) {
return d.style;
};
var label = function label(d) {
return d.label;
};
var filter = function filter() {
return true;
};
function addBackgroundColor(keyItems) {
if (!background) return;
var parent = keyItems.node().parentNode;
var box = parent.getBoundingClientRect();
return d3.select(parent).insert('rect', ':first-child').attr({
'class': 'background',
'fill': background,
'x': 0,
'y': 5,
'width': box.width + paddingX * 2,
'height': box.height + paddingY * 2,
'transform': 'translate(' + xOffset + ',' + yOffset + ')'
});
}
function addLineKeys(keyItems, isBorder) {
if (lineAttr.border && !isBorder) {
addLineKeys(keyItems, true).attr(lineAttr).attr({
'stroke': lineAttr.border,
'stroke-width': strokeWidth * 2,
'class': 'key__border'
});
}
return keyItems.append('line').attr(lineAttr).attr({
'class': style,
x1: 1,
y1: -5,
x2: strokeLength,
y2: -5,
'stroke-width': strokeWidth,
'stroke': function stroke(d, i) {
return colours[i];
}
}).classed('key__line', true);
}
function addColumnKeys(keyItems) {
keyItems.append('rect').attr(colAttr).attr({
'class': style,
x: 1,
y: -10,
width: strokeLength,
height: 10,
'fill': function fill(d, i) {
return colours[i];
}
}).classed('key__column', true);
}
function addKey(keyItems) {
charts[options.chartType](keyItems);
attr.x = strokeLength + 10;
keyItems.append('text').attr(attr).text(label);
}
function positionKey(keyItems) {
var innerWidth = width - paddingX * 2;
var columnWidth = 10;
keyItems.each(function (d, i) {
if (i == keyItems[0].length - 1) return;
columnWidth = Math.max(this.getBoundingClientRect().width, columnWidth) + 10;
});
while (columnWidth * columns > innerWidth && columns > 1) columns--;
keyItems.attr({
'class': 'key__item',
'transform': function transform(d, i) {
var column = i % columns;
var row = Math.ceil((i + 1) / columns);
var x = column * (columnWidth + 8) + paddingX;
var y = row * lineHeight + paddingY;
return 'translate(' + x + ',' + y + ')';
}
});
}
function key(g) {
var gKey = g.append('g').attr('class', 'key');
var keyItems = gKey.selectAll('g').data(g.datum().filter(filter)).enter().append('g');
addKey(keyItems);
positionKey(keyItems);
addBackgroundColor(keyItems);
}
key.colours = function (col) {
if (!arguments.length) return colours;
if (col) colours = col;
return key;
};
key.theme = function (themeUpdate) {
if (!arguments.length) return theme;
if (themeUpdate) theme = themeUpdate;
return key;
};
key.label = function (f) {
if (!arguments.length) return label;
label = f;
return key;
};
key.style = function (f) {
if (!arguments.length) return style;
style = f;
return key;
};
key.width = function (x) {
if (!arguments.length) return width;
width = x;
return key;
};
key.lineHeight = key['line-height'] = function (x) {
if (!arguments.length) return lineHeight;
lineHeight = x;
return key;
};
key.columns = function (x) {
if (!arguments.length) return columns;
columns = x;
return key;
};
key.background = function (color) {
if (!arguments.length) return background;
background = color;
return key;
};
key['padding-x'] = function (pad) {
if (!arguments.length) return paddingX;
paddingX = pad;
return key;
};
key['padding-y'] = function (pad) {
if (!arguments.length) return paddingY;
paddingY = pad;
return key;
};
key.padding = function (pad) {
if (!arguments.length) return padding;
paddingX = pad;
paddingY = pad;
return key;
};
key.attrs = function (obj) {
if (!arguments.length) return attr;
if (typeof obj !== "undefined") attr = obj;
for (var prop in attr) {
if (key[prop]) key[prop](obj[prop]);
}
return key;
};
return key;
}
module.exports = seriesKey;
/***/ },
/* 35 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
//the ft logo there's probably an easier ay to do this...
//var d3 = require('d3');
function ftLogo(g, dim) {
'use strict';
if (!dim) {
dim = 32;
}
var d = 'M21.777,53.336c0,6.381,1.707,7.1,8.996,7.37v2.335H1.801v-2.335c6.027-0.27,7.736-0.989,7.736-7.37v-41.67 c0-6.387-1.708-7.104-7.556-7.371V1.959h51.103l0.363,13.472h-2.519c-2.16-6.827-4.502-8.979-16.467-8.979h-9.27 c-2.785,0-3.415,0.624-3.415,3.142v19.314h4.565c9.54,0,11.61-1.712,12.779-8.089h2.338v21.559h-2.338 c-1.259-7.186-4.859-8.981-12.779-8.981h-4.565V53.336z M110.955,1.959H57.328l-1.244,13.477h3.073c1.964-6.601,4.853-8.984,11.308-8.984h7.558v46.884 c0,6.381-1.71,7.1-8.637,7.37v2.335H98.9v-2.335c-6.931-0.27-8.64-0.989-8.64-7.37V6.453h7.555c6.458,0,9.351,2.383,11.309,8.984 h3.075L110.955,1.959z';
var path = g.append('path').attr('d', d); //measure and rescale to the bounds
var rect = path.node().getBoundingClientRect();
if (!rect.width) return; //todo: look into why this is being added before a svg exists?
//the logo is square so
var scale = Math.min(dim / rect.width, dim / rect.height);
path.attr({
'transform': 'scale(' + scale + ')',
'fill': 'rgba(0,0,0,0.1)'
});
}
module.exports = ftLogo;
/*
<path fill="none" d="M21.777,53.336c0,6.381,1.707,7.1,8.996,7.37v2.335H1.801v-2.335c6.027-0.27,7.736-0.989,7.736-7.37v-41.67
c0-6.387-1.708-7.104-7.556-7.371V1.959h51.103l0.363,13.472h-2.519c-2.16-6.827-4.502-8.979-16.467-8.979h-9.27
c-2.785,0-3.415,0.624-3.415,3.142v19.314h4.565c9.54,0,11.61-1.712,12.779-8.089h2.338v21.559h-2.338
c-1.259-7.186-4.859-8.981-12.779-8.981h-4.565V53.336z"/>
<path fill="none" d="M110.955,1.959H57.328l-1.244,13.477h3.073c1.964-6.601,4.853-8.984,11.308-8.984h7.558v46.884
c0,6.381-1.71,7.1-8.637,7.37v2.335H98.9v-2.335c-6.931-0.27-8.64-0.989-8.64-7.37V6.453h7.555c6.458,0,9.351,2.383,11.309,8.984
h3.075L110.955,1.959z"/>
*/
/***/ },
/* 36 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var formatRegExp = /%[sdj%]/g;
exports.format = function(f) {
if (!isString(f)) {
var objects = [];
for (var i = 0; i < arguments.length; i++) {
objects.push(inspect(arguments[i]));
}
return objects.join(' ');
}
var i = 1;
var args = arguments;
var len = args.length;
var str = String(f).replace(formatRegExp, function(x) {
if (x === '%%') return '%';
if (i >= len) return x;
switch (x) {
case '%s': return String(args[i++]);
case '%d': return Number(args[i++]);
case '%j':
try {
return JSON.stringify(args[i++]);
} catch (_) {
return '[Circular]';
}
default:
return x;
}
});
for (var x = args[i]; i < len; x = args[++i]) {
if (isNull(x) || !isObject(x)) {
str += ' ' + x;
} else {
str += ' ' + inspect(x);
}
}
return str;
};
// Mark that a method should not be used.
// Returns a modified function which warns once by default.
// If --no-deprecation is set, then it is a no-op.
exports.deprecate = function(fn, msg) {
// Allow for deprecating things in the process of starting up.
if (isUndefined(global.process)) {
return function() {
return exports.deprecate(fn, msg).apply(this, arguments);
};
}
if (process.noDeprecation === true) {
return fn;
}
var warned = false;
function deprecated() {
if (!warned) {
if (process.throwDeprecation) {
throw new Error(msg);
} else if (process.traceDeprecation) {
console.trace(msg);
} else {
console.error(msg);
}
warned = true;
}
return fn.apply(this, arguments);
}
return deprecated;
};
var debugs = {};
var debugEnviron;
exports.debuglog = function(set) {
if (isUndefined(debugEnviron))
debugEnviron = process.env.NODE_DEBUG || '';
set = set.toUpperCase();
if (!debugs[set]) {
if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
var pid = process.pid;
debugs[set] = function() {
var msg = exports.format.apply(exports, arguments);
console.error('%s %d: %s', set, pid, msg);
};
} else {
debugs[set] = function() {};
}
}
return debugs[set];
};
/**
* Echos the value of a value. Trys to print the value out
* in the best way possible given the different types.
*
* @param {Object} obj The object to print out.
* @param {Object} opts Optional options object that alters the output.
*/
/* legacy: obj, showHidden, depth, colors*/
function inspect(obj, opts) {
// default options
var ctx = {
seen: [],
stylize: stylizeNoColor
};
// legacy...
if (arguments.length >= 3) ctx.depth = arguments[2];
if (arguments.length >= 4) ctx.colors = arguments[3];
if (isBoolean(opts)) {
// legacy...
ctx.showHidden = opts;
} else if (opts) {
// got an "options" object
exports._extend(ctx, opts);
}
// set default options
if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
if (isUndefined(ctx.depth)) ctx.depth = 2;
if (isUndefined(ctx.colors)) ctx.colors = false;
if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
if (ctx.colors) ctx.stylize = stylizeWithColor;
return formatValue(ctx, obj, ctx.depth);
}
exports.inspect = inspect;
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
inspect.colors = {
'bold' : [1, 22],
'italic' : [3, 23],
'underline' : [4, 24],
'inverse' : [7, 27],
'white' : [37, 39],
'grey' : [90, 39],
'black' : [30, 39],
'blue' : [34, 39],
'cyan' : [36, 39],
'green' : [32, 39],
'magenta' : [35, 39],
'red' : [31, 39],
'yellow' : [33, 39]
};
// Don't use 'blue' not visible on cmd.exe
inspect.styles = {
'special': 'cyan',
'number': 'yellow',
'boolean': 'yellow',
'undefined': 'grey',
'null': 'bold',
'string': 'green',
'date': 'magenta',
// "name": intentionally not styling
'regexp': 'red'
};
function stylizeWithColor(str, styleType) {
var style = inspect.styles[styleType];
if (style) {
return '\u001b[' + inspect.colors[style][0] + 'm' + str +
'\u001b[' + inspect.colors[style][1] + 'm';
} else {
return str;
}
}
function stylizeNoColor(str, styleType) {
return str;
}
function arrayToHash(array) {
var hash = {};
array.forEach(function(val, idx) {
hash[val] = true;
});
return hash;
}
function formatValue(ctx, value, recurseTimes) {
// Provide a hook for user-specified inspect functions.
// Check that value is an object with an inspect function on it
if (ctx.customInspect &&
value &&
isFunction(value.inspect) &&
// Filter out the util module, it's inspect function is special
value.inspect !== exports.inspect &&
// Also filter out any prototype objects using the circular check.
!(value.constructor && value.constructor.prototype === value)) {
var ret = value.inspect(recurseTimes, ctx);
if (!isString(ret)) {
ret = formatValue(ctx, ret, recurseTimes);
}
return ret;
}
// Primitive types cannot have properties
var primitive = formatPrimitive(ctx, value);
if (primitive) {
return primitive;
}
// Look up the keys of the object.
var keys = Object.keys(value);
var visibleKeys = arrayToHash(keys);
if (ctx.showHidden) {
keys = Object.getOwnPropertyNames(value);
}
// IE doesn't make error fields non-enumerable
// http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
if (isError(value)
&& (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
return formatError(value);
}
// Some type of object without properties can be shortcutted.
if (keys.length === 0) {
if (isFunction(value)) {
var name = value.name ? ': ' + value.name : '';
return ctx.stylize('[Function' + name + ']', 'special');
}
if (isRegExp(value)) {
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
}
if (isDate(value)) {
return ctx.stylize(Date.prototype.toString.call(value), 'date');
}
if (isError(value)) {
return formatError(value);
}
}
var base = '', array = false, braces = ['{', '}'];
// Make Array say that they are Array
if (isArray(value)) {
array = true;
braces = ['[', ']'];
}
// Make functions say that they are functions
if (isFunction(value)) {
var n = value.name ? ': ' + value.name : '';
base = ' [Function' + n + ']';
}
// Make RegExps say that they are RegExps
if (isRegExp(value)) {
base = ' ' + RegExp.prototype.toString.call(value);
}
// Make dates with properties first say the date
if (isDate(value)) {
base = ' ' + Date.prototype.toUTCString.call(value);
}
// Make error with message first say the error
if (isError(value)) {
base = ' ' + formatError(value);
}
if (keys.length === 0 && (!array || value.length == 0)) {
return braces[0] + base + braces[1];
}
if (recurseTimes < 0) {
if (isRegExp(value)) {
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
} else {
return ctx.stylize('[Object]', 'special');
}
}
ctx.seen.push(value);
var output;
if (array) {
output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
} else {
output = keys.map(function(key) {
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
});
}
ctx.seen.pop();
return reduceToSingleString(output, base, braces);
}
function formatPrimitive(ctx, value) {
if (isUndefined(value))
return ctx.stylize('undefined', 'undefined');
if (isString(value)) {
var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
.replace(/'/g, "\\'")
.replace(/\\"/g, '"') + '\'';
return ctx.stylize(simple, 'string');
}
if (isNumber(value))
return ctx.stylize('' + value, 'number');
if (isBoolean(value))
return ctx.stylize('' + value, 'boolean');
// For some reason typeof null is "object", so special case here.
if (isNull(value))
return ctx.stylize('null', 'null');
}
function formatError(value) {
return '[' + Error.prototype.toString.call(value) + ']';
}
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
var output = [];
for (var i = 0, l = value.length; i < l; ++i) {
if (hasOwnProperty(value, String(i))) {
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
String(i), true));
} else {
output.push('');
}
}
keys.forEach(function(key) {
if (!key.match(/^\d+$/)) {
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
key, true));
}
});
return output;
}
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
var name, str, desc;
desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
if (desc.get) {
if (desc.set) {
str = ctx.stylize('[Getter/Setter]', 'special');
} else {
str = ctx.stylize('[Getter]', 'special');
}
} else {
if (desc.set) {
str = ctx.stylize('[Setter]', 'special');
}
}
if (!hasOwnProperty(visibleKeys, key)) {
name = '[' + key + ']';
}
if (!str) {
if (ctx.seen.indexOf(desc.value) < 0) {
if (isNull(recurseTimes)) {
str = formatValue(ctx, desc.value, null);
} else {
str = formatValue(ctx, desc.value, recurseTimes - 1);
}
if (str.indexOf('\n') > -1) {
if (array) {
str = str.split('\n').map(function(line) {
return ' ' + line;
}).join('\n').substr(2);
} else {
str = '\n' + str.split('\n').map(function(line) {
return ' ' + line;
}).join('\n');
}
}
} else {
str = ctx.stylize('[Circular]', 'special');
}
}
if (isUndefined(name)) {
if (array && key.match(/^\d+$/)) {
return str;
}
name = JSON.stringify('' + key);
if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
name = name.substr(1, name.length - 2);
name = ctx.stylize(name, 'name');
} else {
name = name.replace(/'/g, "\\'")
.replace(/\\"/g, '"')
.replace(/(^"|"$)/g, "'");
name = ctx.stylize(name, 'string');
}
}
return name + ': ' + str;
}
function reduceToSingleString(output, base, braces) {
var numLinesEst = 0;
var length = output.reduce(function(prev, cur) {
numLinesEst++;
if (cur.indexOf('\n') >= 0) numLinesEst++;
return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
}, 0);
if (length > 60) {
return braces[0] +
(base === '' ? '' : base + '\n ') +
' ' +
output.join(',\n ') +
' ' +
braces[1];
}
return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
}
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
return Array.isArray(ar);
}
exports.isArray = isArray;
function isBoolean(arg) {
return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;
function isNull(arg) {
return arg === null;
}
exports.isNull = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === 'number';
}
exports.isNumber = isNumber;
function isString(arg) {
return typeof arg === 'string';
}
exports.isString = isString;
function isSymbol(arg) {
return typeof arg === 'symbol';
}
exports.isSymbol = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
exports.isUndefined = isUndefined;
function isRegExp(re) {
return isObject(re) && objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
exports.isObject = isObject;
function isDate(d) {
return isObject(d) && objectToString(d) === '[object Date]';
}
exports.isDate = isDate;
function isError(e) {
return isObject(e) &&
(objectToString(e) === '[object Error]' || e instanceof Error);
}
exports.isError = isError;
function isFunction(arg) {
return typeof arg === 'function';
}
exports.isFunction = isFunction;
function isPrimitive(arg) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;
exports.isBuffer = __webpack_require__(38);
function objectToString(o) {
return Object.prototype.toString.call(o);
}
function pad(n) {
return n < 10 ? '0' + n.toString(10) : n.toString(10);
}
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec'];
// 26 Feb 16:19:34
function timestamp() {
var d = new Date();
var time = [pad(d.getHours()),
pad(d.getMinutes()),
pad(d.getSeconds())].join(':');
return [d.getDate(), months[d.getMonth()], time].join(' ');
}
// log is just a thin wrapper to console.log that prepends a timestamp
exports.log = function() {
console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
};
/**
* Inherit the prototype methods from one constructor into another.
*
* The Function.prototype.inherits from lang.js rewritten as a standalone
* function (not on Function.prototype). NOTE: If this file is to be loaded
* during bootstrapping this function needs to be rewritten using some native
* functions as prototype setup using normal JavaScript does not work as
* expected during bootstrapping (see mirror.js in r114903).
*
* @param {function} ctor Constructor function which needs to inherit the
* prototype.
* @param {function} superCtor Constructor function to inherit prototype from.
*/
exports.inherits = __webpack_require__(39);
exports._extend = function(origin, add) {
// Don't do anything if add isn't an object
if (!add || !isObject(add)) return origin;
var keys = Object.keys(add);
var i = keys.length;
while (i--) {
origin[keys[i]] = add[keys[i]];
}
return origin;
};
function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(37)))
/***/ },
/* 37 */
/***/ function(module, exports) {
// shim for using process in browser
var process = module.exports = {};
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
} ())
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while(len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
// v8 likes predictible objects
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () { return '/' };
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function() { return 0; };
/***/ },
/* 38 */
/***/ function(module, exports) {
module.exports = function isBuffer(arg) {
return arg && typeof arg === 'object'
&& typeof arg.copy === 'function'
&& typeof arg.fill === 'function'
&& typeof arg.readUInt8 === 'function';
}
/***/ },
/* 39 */
/***/ function(module, exports) {
if (typeof Object.create === 'function') {
// implementation from standard node.js 'util' module
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
};
} else {
// old school shim for old browsers
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
TempCtor.prototype = superCtor.prototype
ctor.prototype = new TempCtor()
ctor.prototype.constructor = ctor
}
}
/***/ },
/* 40 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
//var d3 = require('d3');
function blankChart() {
'use strict';
function buildModel(opts) {
var m = {
//layout stuff
title: 'chart title',
subtitle: 'chart subtitle (letters)',
height: undefined,
width: 300,
chartHeight: 300,
chartWidth: 300,
blockPadding: 8,
data: [],
error: function error(err) {
console.log('ERROR: ', err);
}
};
for (var key in opts) {
m[key] = opts[key];
}
return m;
}
function getHeight(selection) {
return Math.ceil(selection.node().getBoundingClientRect().height);
}
function getWidth(selection) {
return Math.ceil(selection.node().getBoundingClientRect().width);
}
function translate(position) {
return 'translate(' + position.left + ',' + position.top + ')';
}
function chart(g) {
var model = buildModel(g.data()[0]);
if (!model.height) {
model.height = model.width;
}
var svg = g.append('svg').attr({
'class': 'null-chart',
height: model.height,
width: model.width
});
var title = svg.append('text').text(model.title + " - PLACE HOLDER CHART");
title.attr('transform', translate({ top: getHeight(title), left: 0 }));
var subtitle = svg.append('text').text(model.subtitle);
subtitle.attr('transform', translate({ top: getHeight(title) + getHeight(subtitle), left: 0 }));
svg.selectAll('text').attr({
fill: '#000',
stroke: 'none'
});
}
return chart;
}
module.exports = blankChart;
/***/ },
/* 41 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
//var d3 = require('d3');
function pieChart() {
'use strict';
function buildModel(opts) {
var m = {
//layout stuff
title: 'chart title',
height: undefined,
width: 300,
chartHeight: 300,
chartWidth: 300,
indexProperty: '&',
valueProperty: 'value',
blockPadding: 8,
data: [],
error: function error(err) {
console.log('ERROR: ', err);
}
};
for (var key in opts) {
m[key] = opts[key];
}
return m;
}
function getHeight(selection) {
return Math.ceil(selection.node().getBoundingClientRect().height);
}
function getWidth(selection) {
return Math.ceil(selection.node().getBoundingClientRect().width);
}
function translate(position) {
return 'translate(' + position.left + ',' + position.top + ')';
}
function chart(g) {
var model = buildModel(g.data()[0]);
if (!model.height) {
model.height = model.width;
}
var svg = g.append('svg').attr({
'class': 'null-chart',
'height': model.height,
'width': model.width
});
var title = svg.append('text').text(model.title + " - PLACE HOLDER CHART");
title.attr('transform', translate({ top: getHeight(title), left: 0 }));
var subtitle = svg.append('text').text(model.subtitle);
subtitle.attr('transform', translate({ top: getHeight(title) + getHeight(subtitle), left: 0 }));
var chartSvg = svg.append('g').attr('class', 'chart');
if (model.data.length > 3) {
model.error('PIE warning: too many segments!');
}
var outerRadius = model.width / 2;
chartSvg.selectAll('.slice').data(model.data).enter();
//.append(path);
svg.selectAll('text').attr({
fill: '#000',
stroke: 'none'
});
}
return chart;
}
module.exports = pieChart;
/***/ },
/* 42 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var axes = __webpack_require__(5);
var DataModel = __webpack_require__(27);
var metadata = __webpack_require__(31);
var Dressing = __webpack_require__(32);
var themes = __webpack_require__(8);
function plotSeries(plotSVG, model, createdAxes, series, seriesNumber) {
var data = formatData(model, series);
var plot = new axes.Plot(model, createdAxes);
var s = plotSVG.append('g').attr('class', 'series');
var attr = themes.check(model.theme, 'columns').attributes;
attr.fill = model.gradients[series.index] || model.colours[series.index];
s.selectAll('rect').data(data).enter().append('rect').attr('class', function (d) {
return 'column ' + series.className + (d.value < 0 ? ' negative' : ' positive');
}).attr('data-value', function (d) {
return d.value;
}).attr('x', function (d, i) {
return plot.x(d.key, seriesNumber);
}).attr('y', function (d, i) {
if (model.stack) {
return plot.y(d.value, i, getStackedHeight(model.data, model.stacks, d.key, d.value, model.x.series.key));
}
return plot.y(d.value, i);
}).attr('height', function (d, i) {
if (model.stack) {
return plot.columnHeight(getStackedHeight(model.data, model.stacks, d.key, d.value, model.x.series.key));
}
return plot.columnHeight(d.value);
}).attr('width', function (d, i) {
return plot.columnWidth(d, i);
}).attr(attr);
if (!model.stack) {
// add N/As for null values
s.selectAll('text.null-label').data(data._nulls).enter().append('text').attr('class', 'null-label').attr('x', function (d, i) {
return plot.x(d.key, seriesNumber);
}).attr('y', function (d, i) {
return plot.y(d.value, i);
}).attr('dy', '-0.5em').attr('dx', function (d, i) {
return plot.columnWidth(d, i) / 4;
}).attr('font-family', "BentonSans, sans-serif").attr('font-size', '10').attr('fill', "rgba(0,0,0,0.4)").text('n/a');
}
if (!model.stack) {
// make those labels who don't fit smaller
s.selectAll('text.null-label').each(function (d, i) {
var w = this.getBoundingClientRect();
if (w.width + 2 >= plot.columnWidth(d, i)) {
this.innerHTML = '–';
}
});
}
}
function formatData(model, series) {
var nulls = [];
var data = model.data.map(function (d) {
return {
key: d[model.x.series.key],
value: Array.isArray(d.values) ? d.values[0][series.key] : d[series.key]
};
}).filter(function (d) {
var isNull = !(d.value !== null && !isNaN(d.value));
if (isNull) nulls.push(d);
// if we're stacking - we transform nulls
// into zeros to avoid problems
if (model.stack && isNull) {
d.value = 0;
return true;
}
return !isNull;
});
data._nulls = nulls;
return data;
}
function getStackedHeight(data, stacks, key, val, xKey) {
var value = isNaN(val) ? 0 : val;
var height;
var seriesKey;
function calculateHeight(val, nextVal, previousVal) {
if (val < 0 && previousVal >= 0) {
return val;
} else if (val >= 0 && nextVal < 0) {
return val;
} else if (val < 0 && nextVal < 0) {
return val - nextVal;
}
return val - nextVal;
}
data.map(function (d, i) {
if (d[xKey] === key) {
seriesKey = i;
}
});
stacks[seriesKey].sort(function (a, b) {
return b - a;
}).map(function (data, i) {
var isValuePositive = data < 0 ? false : true;
var previousVal = stacks[seriesKey][i - 1];
if (data === value) {
if (isValuePositive && stacks[seriesKey][i + 1] !== undefined) {
height = calculateHeight(value, stacks[seriesKey][i + 1], previousVal);
} else if (isValuePositive && stacks[seriesKey][i + 1] === undefined) {
height = calculateHeight(value, 0, previousVal);
} else if (!isValuePositive && stacks[seriesKey][i - 1] !== undefined) {
height = calculateHeight(value, stacks[seriesKey][i - 1], previousVal);
} else if (!isValuePositive && stacks[seriesKey][i - 1] === undefined) {
height = calculateHeight(value, 0, previousVal);
}
}
});
return isNaN(height) ? 0 : height;
}
function columnChart(g) {
var model = new DataModel('column', Object.create(g.data()[0]));
var svg = g.append('svg').attr({
'id': model.id,
'class': 'graphic column-chart',
height: model.height,
width: model.width,
xmlns: 'http://www.w3.org/2000/svg',
version: '1.2'
}).attr(themes.check(model.theme, 'svg').attributes);
metadata.create(svg, model);
themes.createDefinitions(svg, model);
var dressing = new Dressing(svg, model);
dressing.addHeaderItem('title');
dressing.addHeaderItem('subtitle');
!model.keyHover && dressing.addSeriesKey();
dressing.addFooter();
dressing.addBorders();
var chartSVG = svg.append('g').attr('class', 'chart');
chartSVG.attr('transform', model.translate(model.chartPosition));
var independent = model.groupData || model.dataType === 'categorical' ? 'ordinal' : 'time';
var creator = new axes.Create(chartSVG, model);
creator.createAxes({ dependent: 'number', independent: independent });
model.keyHover && dressing.addSeriesKey();
var axisLayer = themes.check(model.theme, 'axis-layer').attributes.position || 'back';
var plotSVG = axisLayer === 'front' ? chartSVG.insert('g', '.x.axis').attr('class', 'plot') : chartSVG.append('g').attr('class', 'plot');
var i = 0;
for (i; i < model.y.series.length; i++) {
plotSeries(plotSVG, model, creator, model.y.series[i], i);
}
chartSVG.selectAll('path.domain').attr('fill', 'none');
}
module.exports = columnChart;
/***/ },
/* 43 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
var axes = __webpack_require__(5);
var DataModel = __webpack_require__(27);
var metadata = __webpack_require__(31);
var Dressing = __webpack_require__(32);
var themes = __webpack_require__(8);
function plotSeries(plotSVG, model, createdAxes, series, seriesNumber) {
var data = formatData(model, series);
var plot = new axes.Plot(model, createdAxes);
var s = plotSVG.append('g').attr('class', 'series');
var attr = themes.check(model.theme, 'bars').attributes;
attr.fill = model.gradients[series.index] || model.colours[series.index];
s.selectAll('rect').data(data).enter().append('rect').attr('class', function (d) {
return 'bar ' + series.className + (d.value < 0 ? ' negative' : ' positive');
}).attr('data-value', function (d) {
return d.value;
}).attr('x', function (d, i) {
if (model.stack) {
return plot.x(d.value, i, getStackedWidth(model.data, model.stacks, d.key, d.value, model.x.series.key));
}
return plot.x(d.value, i);
}).attr('y', function (d, i) {
return plot.y(d.key, seriesNumber);
}).attr('height', function (d, i) {
return plot.barHeight(d, i);
}).attr('width', function (d, i) {
if (model.stack) {
return plot.barWidth(getStackedWidth(model.data, model.stacks, d.key, d.value, model.x.series.key));
}
return plot.barWidth(d.value);
}).attr(attr);
if (!model.stack) {
// add N/As for null values
s.selectAll('text.null-label').data(data._nulls).enter().append('text').attr('x', function (d, i) {
return plot.x(d.value, i);
}).attr('y', function (d, i) {
var yPos = plot.y(d.key, seriesNumber);
var halfHeight = plot.barHeight(d, i) / 2;
return yPos + halfHeight;
}).attr({
'class': 'null-label',
'dx': '1em',
'dy': '0.31em'
}).attr(themes.check(model.theme, 'null-label').attributes).text('n/a');
}
if (!model.stack) {
// make those labels who don't fit smaller
s.selectAll('text.null-label').each(function (d, i) {
var w = this.getBoundingClientRect();
if (w.height + 2 >= plot.barHeight(d, i)) {
this.innerHTML = '–';
}
});
}
}
function formatData(model, series) {
var nulls = [];
var data = model.data.map(function (d) {
return {
key: d[model.x.series.key],
value: Array.isArray(d.values) ? d.values[0][series.key] : d[series.key]
};
}).filter(function (d) {
var isNull = !(d.value !== null && !isNaN(d.value));
if (isNull) nulls.push(d);
// if we're stacking - we transform nulls
// into zeros to avoid problems
if (model.stack && isNull) {
d.value = 0;
return true;
}
return !isNull;
});
data._nulls = nulls;
return data;
}
function getStackedWidth(data, stacks, key, val, xKey) {
var value = isNaN(val) ? 0 : val;
var width;
var seriesKey;
function calculateWidth(val, nextVal, previousVal) {
if (val < 0 && previousVal >= 0) {
return val;
} else if (val >= 0 && nextVal < 0) {
return val;
} else if (val < 0 && nextVal < 0) {
return val - nextVal;
}
return val - nextVal;
}
data.map(function (d, i) {
if (d[xKey] === key) {
seriesKey = i;
}
});
stacks[seriesKey].sort(function (a, b) {
return b - a;
}).map(function (data, i) {
var isValuePositive = data < 0 ? false : true;
var previousVal = stacks[seriesKey][i - 1];
if (data === value) {
if (isValuePositive && stacks[seriesKey][i + 1] !== undefined) {
width = calculateWidth(value, stacks[seriesKey][i + 1], previousVal);
} else if (isValuePositive && stacks[seriesKey][i + 1] === undefined) {
width = calculateWidth(value, 0, previousVal);
} else if (!isValuePositive && stacks[seriesKey][i - 1] !== undefined) {
width = calculateWidth(value, stacks[seriesKey][i - 1], previousVal);
} else if (!isValuePositive && stacks[seriesKey][i - 1] === undefined) {
width = calculateWidth(value, 0, previousVal);
}
}
});
return isNaN(width) ? 0 : width;
}
function barChart(g) {
'use strict';
var model = new DataModel('bar', Object.create(g.data()[0]));
var svg = g.append('svg').attr({
'class': 'graphic bar-chart',
height: model.height,
width: model.width,
xmlns: 'http://www.w3.org/2000/svg',
version: '1.2'
}).attr(themes.check(model.theme, 'svg').attributes);
metadata.create(svg, model);
themes.createDefinitions(svg, model);
var dressing = new Dressing(svg, model);
dressing.addHeaderItem('title');
dressing.addHeaderItem('subtitle');
!model.keyHover && dressing.addSeriesKey();
dressing.addFooter();
dressing.addBorders();
var chartSVG = svg.append('g').attr('class', 'chart');
chartSVG.attr('transform', model.translate(model.chartPosition));
model.tickSize = 0;
var independent = model.groupData || model.dataType === 'categorical' ? 'ordinal' : 'time';
var creator = new axes.Create(chartSVG, model);
creator.createAxes({ dependent: 'number', independent: independent });
model.keyHover && dressing.addSeriesKey();
var axisLayer = themes.check(model.theme, 'axis-layer').attributes.position || 'back';
var plotSVG = axisLayer === 'front' ? chartSVG.insert('g', '.axis--independent.axis').attr('class', 'plot') : chartSVG.append('g').attr('class', 'plot');
var i = 0;
for (i; i < model.y.series.length; i++) {
plotSeries(plotSVG, model, creator, model.y.series[i], i);
}
chartSVG.selectAll('path.domain').attr('fill', 'none');
}
module.exports = barChart;
/***/ },
/* 44 */
/***/ function(module, exports, __webpack_require__) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
module.exports = {
intraDay: __webpack_require__(20)
};
/***/ },
/* 45 */
/***/ function(module, exports) {
/*** IMPORTS FROM imports-loader ***/
'use strict';
var define = false;
/* globals __dirname, Promise */
var dataURI = {
BentonSans: "data:application/font-woff;charset=utf-8;base64,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\n".trim(),
MetricWeb: "data:application/font-woff;charset=utf-8;base64,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\n".trim(),
MetricWebSemiBold: "data:application/font-woff;charset=utf-8;base64,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\n".trim(),
AvenirLight: "data:application/font-woff;charset=utf-8;base64,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AHMAZQByAGkAZgAgAHQAeQBwAGUAZgBhAGMAZQBzAC4AIABJAG4AIABhAG4AIABpAG4AdABlAHIAdgBpAGUAdwAgAHcAaQB0AGgAIABMAGkAbgBvAHQAeQBwAGUALAAgAGgAZQAgAHMAYQBpAGQAIABoAGUAIABmAGUAbAB0ACAAYQBuACAAbwBiAGwAaQBnAGEAdABpAG8AbgAgAHQAbwAgAGQAZQBzAGkAZwBuACAAYQAgAGwAaQBuAGUAYQByACAAcwBhAG4AcwAgAGkAbgAgAHQAaABlACAAdAByAGEAZABpAHQAaQBvAG4AIABvAGYAIABFAHIAYgBhAHIAIABhAG4AZAAgAEYAdQB0AHUAcgBhACwAIABiAHUAdAAgAHQAbwAgAGEAbABzAG8AIABtAGEAawBlACAAdQBzAGUAIABvAGYAIAB0AGgAZQAgAGUAeABwAGUAcgBpAGUAbgBjAGUAIABhAG4AZAAgAHMAdAB5AGwAaQBzAHQAaQBjACAAZABlAHYAZQBsAG8AcABtAGUAbgB0AHMAIABvAGYAIAB0AGgAZQAgAHQAdwBlAG4AdABpAGUAdABoACAAYwBlAG4AdAB1AHIAeQAuACAAVABoAGUAIAB3AG8AcgBkACAAQQB2AGUAbgBpAHIAIABtAGUAYQBuAHMAIAAnAGYAdQB0AHUAcgBlACcAIABpAG4AIABGAHIAZQBuAGMAaAAgAGEAbgBkACAAaABpAG4AdABzACAAdABoAGEAdAAgAHQAaABlACAAdAB5AHAAZQBmAGEAYwBlACAAbwB3AGUAcwAgAHMAbwBtAGUAIABvAGYAIABpAHQAcwAgAGkAbgB0AGUAcgBwAHIAZQB0AGEAdABpAG8AbgAgAHQAbwAgAEYAdQB0AHUAcgBhAC4AIABCAHUAdAAgAHUAbgBsAGkAawBlACAARgB1AHQAdQByAGEALAAgAEEAdgBlAG4AaQByACAAaQBzACAAbgBvAHQAIABwAHUAcgBlAGwAeQAgAGcAZQBvAG0AZQB0AHIAaQBjADsAIABpAHQAIABoAGEAcwAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAG8AawBlAHMAIAB0AGgAYQB0ACAAYQByAGUAIAB0AGgAaQBjAGsAZQByACAAdABoAGEAbgAgAHQAaABlACAAaABvAHIAaQB6AG8AbgB0AGEAbABzACwAIABhAG4AIAAiAG8AIgAgAHQAaABhAHQAIABpAHMAIABuAG8AdAAgAGEAIABwAGUAcgBmAGUAYwB0ACAAYwBpAHIAYwBsAGUALAAgAGEAbgBkACAAcwBoAG8AcgB0AGUAbgBlAGQAIABhAHMAYwBlAG4AZABlAHIAcwAuACAAVABoAGUAcwBlACAAbgB1AGEAbgBjAGUAcwAgAGEAaQBkACAAaQBuACAAbABlAGcAaQBiAGkAbABpAHQAeQAgAGEAbgBkACAAZwBpAHYAZQAgAEEAdgBlAG4AaQByACAAYQAgAGgAYQByAG0AbwBuAGkAbwB1AHMAIABhAG4AZAAgAHMAZQBuAHMAaQBiAGwAZQAgAGEAcABwAGUAYQByAGEAbgBjAGUAIABmAG8AcgAgAGIAbwB0AGgAIAB0AGUAeAB0AHMAIABhAG4AZAAgAGgAZQBhAGQAbABpAG4AZQBzAC4AIABJAG4AIAAyADAAMAA0ACAAQQBkAHIAaQBhAG4AIABGAHIAdQB0AGkAZwBlAHIAIABhAG4AZAAgAHQAaABlACAAdAB5AHAAZQAgAGQAaQByAGUAYwB0AG8AcgAgAG8AZgAgAEwAaQBuAG8AdAB5AHAAZQAgAEcAbQBiAEgAIAAgAEEAawBpAHIAYQAgAEsAbwBiAGEAeQBhAHMAaABpACAAcgBlAHcAbwByAGsAZQBkACAAdABoAGUAIABBAHYAZQBuAGkAcgAgAGEAbgBkACAAYwByAGUAYQB0AGUAZAAgAHQAaABlACAAQQB2AGUAbgBpAHIAIABOAGUAeAB0ACAAZgBvAHIAIAB0AGgAZQAgAFAAbABhAHQAaQBuAHUAbQAgAEMAbwBsAGwAZQBjAHQAaQBvAG4ALgAgAABBZHJpYW4gRnJ1dGlnZXIgZGVzaWduZWQgQXZlbmlyIGluIDE5ODgsIGFmdGVyIHllYXJzIG9mIGhhdmluZyBhbiBpbnRlcmVzdCBpbiBzYW5zIHNlcmlmIHR5cGVmYWNlcy4gSW4gYW4gaW50ZXJ2aWV3IHdpdGggTGlub3R5cGUsIGhlIHNhaWQgaGUgZmVsdCBhbiBvYmxpZ2F0aW9uIHRvIGRlc2lnbiBhIGxpbmVhciBzYW5zIGluIHRoZSB0cmFkaXRpb24gb2YgRXJiYXIgYW5kIEZ1dHVyYSwgYnV0IHRvIGFsc28gbWFrZSB1c2Ugb2YgdGhlIGV4cGVyaWVuY2UgYW5kIHN0eWxpc3RpYyBkZXZlbG9wbWVudHMgb2YgdGhlIHR3ZW50aWV0aCBjZW50dXJ5LiBUaGUgd29yZCBBdmVuaXIgbWVhbnMgJ2Z1dHVyZScgaW4gRnJlbmNoIGFuZCBoaW50cyB0aGF0IHRoZSB0eXBlZmFjZSBvd2VzIHNvbWUgb2YgaXRzIGludGVycHJldGF0aW9uIHRvIEZ1dHVyYS4gQnV0IHVubGlrZSBGdXR1cmEsIEF2ZW5pciBpcyBub3QgcHVyZWx5IGdlb21ldHJpYzsgaXQgaGFzIHZlcnRpY2FsIHN0cm9rZXMgdGhhdCBhcmUgdGhpY2tlciB0aGFuIHRoZSBob3Jpem9udGFscywgYW4gIm8iIHRoYXQgaXMgbm90IGEgcGVyZmVjdCBjaXJjbGUsIGFuZCBzaG9ydGVuZWQgYXNjZW5kZXJzLiBUaGVzZSBudWFuY2VzIGFpZCBpbiBsZWdpYmlsaXR5IGFuZCBnaXZlIEF2ZW5pciBhIGhhcm1vbmlvdXMgYW5kIHNlbnNpYmxlIGFwcGVhcmFuY2UgZm9yIGJvdGggdGV4dHMgYW5kIGhlYWRsaW5lcy4gSW4gMjAwNCBBZHJpYW4gRnJ1dGlnZXIgYW5kIHRoZSB0eXBlIGRpcmVjdG9yIG9mIExpbm90eXBlIEdtYkggIEFraXJhIEtvYmF5YXNoaSByZXdvcmtlZCB0aGUgQXZlbmlyIGFuZCBjcmVhdGVkIHRoZSBBdmVuaXIgTmV4dCBmb3IgdGhlIFBsYXRpbnVtIENvbGxlY3Rpb24uIAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGwAaQBuAG8AdAB5AHAAZQAuAGMAbwBtAABodHRwOi8vd3d3Lmxpbm90eXBlLmNvbQAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGwAaQBuAG8AdAB5AHAAZQAuAGMAbwBtAC8AZgBvAG4AdABkAGUAcwBpAGcAbgBlAHIAcwAAaHR0cDovL3d3dy5saW5vdHlwZS5jb20vZm9udGRlc2lnbmVycwAAQQB2AGUAbgBpAHIAAEF2ZW5pcgAATABpAGcAaAB0AABMaWdodAAAQQB2AGUAbgBpAHIA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dW1mbGV4amNpcmN1bWZsZXhLY29tbWFhY2NlbnRrY29tbWFhY2NlbnRMYWN1dGVsYWN1dGVMY29tbWFhY2NlbnRsY29tbWFhY2NlbnRMY2Fyb25sY2Fyb25MZG90bGRvdE5hY3V0ZW5hY3V0ZU5jb21tYWFjY2VudG5jb21tYWFjY2VudE5jYXJvbm5jYXJvbm5hcG9zdHJvcGhlT21hY3Jvbm9tYWNyb25PYnJldmVvYnJldmVPaHVuZ2FydW1sYXV0b2h1bmdhcnVtbGF1dFJhY3V0ZXJhY3V0ZVJjb21tYWFjY2VudHJjb21tYWFjY2VudFJjYXJvbnJjYXJvblNhY3V0ZXNhY3V0ZVNjaXJjdW1mbGV4c2NpcmN1bWZsZXhTY2VkaWxsYXNjZWRpbGxhVGNvbW1hYWNjZW50dGNvbW1hYWNjZW50VGNhcm9udGNhcm9uVGJhcnRiYXJVdGlsZGV1dGlsZGVVbWFjcm9udW1hY3JvblVicmV2ZXVicmV2ZVVyaW5ndXJpbmdVaHVuZ2FydW1sYXV0dWh1bmdhcnVtbGF1dFVvZ29uZWt1b2dvbmVrV2NpcmN1bWZsZXh3Y2lyY3VtZmxleFljaXJjdW1mbGV4eWNpcmN1bWZsZXhaYWN1dGV6YWN1dGVaZG90YWNjZW50emRvdGFjY2VudFNjb21tYWFjY2VudHNjb21tYWFjY2VudHVuaTAyMUF1bmkwMjFCZG90bGVzc2p1bmkwMkM5dW5pMDM5NHVuaTAzQTl1bmkwM0JDcGlFdXJvYWZpaTYxMjg5T21lZ2Flc3RpbWF0ZWRwYXJ0aWFsZGlmZkRlbHRhcHJvZHVjdHN1bW1hdGlvbnVuaTIyMTV1bmkyMjE5cmFkaWNhbGluZmluaXR5aW50ZWdyYWxhcHByb3hlcXVhbG5vdGVxdWFsbGVzc2VxdWFsZ3JlYXRlcmVxdWFsbG96ZW5nZWdyYXZlLmNhcGFjdXRlLmNhcGNpcmN1bWZsZXguY2FwY2Fyb24uY2FwdGlsZGUuY2FwZGllcmVzaXMuY2FwbWFjcm9uLmNhcGJyZXZlLmNhcHJpbmcuY2FwaHVuZ2FydW1sYXV0LmNhcGRvdGFjY2VudC5jYXBjYXJvbi5hbHRjb21tYWFjY2VudGNvbW1hYWNjZW50LmFsdHVuaUY4RkY4LjBkNWUzQ29weXJpZ2h0KGMpIDIwMDcgTGlub3R5cGUgR21iSCwgd3d3Lmxpbm90eXBlLmNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5BdmVuaXIgTGlnaHRBdmVuaXIgTGlnaHQAAAABhwABAAIAAwAEAAUABgAHAGgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAHwAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8BiABgAGEAYgBnAGQAoABmAIMAqgCLAGoAlwGJAKUAgAChAJwApACpAH0AmABzAHIAhQCWAI8AeACeAJsAowB7AK4AqwCsALAArQCvAIoAsQC1ALIAswC0ALkAtgC3ALgAmgC6AL4AuwC8AL8AvQCoAI0AxADBAMIAwwDFAJ0AlQDLAMgAyQDNAMoAzACQAM4A0gDPANAA0QDWANMA1ADVAKcA1wDbANgA2QDcANoAnwCTAOEA3gDfAOAA4gCiAOMBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AJEBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAIwAkgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAI4AlAHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wDAAN0B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QDGAfYB9wH4AfkAxwDkAGUB+gH7AfwB/QH+AH4AiAH/AIEAggCEAIcAfwCGAgACAQICAgMAbwCJAEEACAB1AGkAdwB2AHAAcQB0AHkAegBrAGwAYwIEAgUAmQIGAgcCCAIJAgoCCwCmAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQAbQBuAYMCAAEAJwAqAC0AQQBWALcEsQTRCS0JOgpaC4YLsgvLC9sL5wvvDAIQUhBqEiIVSBVzF7oa1RrqID0jTCNaI3AjiiOfI7cluCu6K8gunC6mLrYuvi7ULt0u5i7vLvgvAC8ILzUvPi9LMCIy5DL0Mv0zBjMPMyozMzNfM2gzbzODM5UzqDPEM80z1TPkNW01dTWDNZE1mzWpNbE1vjXLNdM12jiiOKo4tjo/O7c7wDvJO9M73Dv4PAE8LTw3PD8+oj6vQRFC1kLZQu1FJkZeSKJI5Ej5TplOpVFtVERUUlRiVG5V21XjWCJYRVhOW0FbSVtSW/Fb+l1XXWFf3F/sYApgImM1ZTZlS2VgZXVliWWiZbtl/Wk7aUlpWGlnaXtpiWmYaadpvGnMadpp7moCahZqKmpDam9simyabKpsumzPbN9tunDmcPtxEHElcTtxVnFxdX94z3jjePh5DXkneTN5QHlNeWB7tHvCe9V76Hv7fA18JHyrf0V/VX9lf3V/in+agSSBOoFPgWSBeIGOgw2GYoZzhoKGk4aihrOGwobThuKG+IcNhx2JoomvicOJ0onnifaKC4uAjoyOmo6vjr+O1I7kjvmPCY8ejy6PSo9aj2iPj5DskPuRCZEXkSSSjJP4lAeUDpQelDqUSZRWlGWUc5SBlI6UnJSplLaUw5TSlOGVCJUmlTaVRZVVlWSVc5WClZCVpJW3lcuV3ZX1lgyXh5tjm3mbiZufm66bw5vTm+Ob85wDnBKgtqTvpP+lD6UfpS+lPqVOpW+mkKagprCmwKbPpt+m76cEpxmnLadBqeetK607rUutW61rrYCtjq2craqtua3GrdSviq+ar6qvuq/Kr9Gv2K/gr+iv76/2sAKxe7GCsY2xnrGmsa+y17Lhsuyy/bMHsxCzLLM6s0ezYbOJtPK1BbUutTe1QbVLt/O6BLpCukq8HMAawCvAQMBnwHLAfMCFwKXFwsjlyPPJLclQyXTJnsmmya7Jtcm9ycTJ0MnYyd/J68n2yf3KBMoKyhnKP8pVymVJ93L3CRXDzlMGjr0VIAr3g/tdFfww+P34MAa9vhX8lP1i+JQGDvzWDvvSDvtk92v3ThX4nk/8ngd5+yQVIQoOUfc1+VgV+3jH93gH2Rb7eMf3eAcOUfcN93kVbft5v4up93n3H4tt+3m/i6n3efcHi4u7+wCLoPcw9weLi7v7AIuq93cFV4ts+3f7H4uq93dXi237d/sHi4tb9wCLdfsw+weLi1sF99v3YBV2+zD7Houg9zAFDlH3rbUVi/ektnsFnf//+VVV/wAO1VX///hVVv8AC6qr///3VVX/AAuqq///91VVlP//9qqr/wAGVVWB/wAGVVWB/wAEgAD///Wqq/8AAqqr///1VVX/AAKqq///9VVV/wABVVX///Wqq4uBi3f///yqq///7YAA///5VVV6///5VVV6///2qqv///Eqq3////NVVQh////zVVV9///11VZ7///4VVV7///4VVX//+6qq///+9VW///tVVX///9VVQhb+QQVi/ueepEF///gqqv/AAtVVXL/AA6qq///7VVVnf//7VVVnf//9qqr/wAaqquL/wAjVVWL/wASqqv/AANVVf8AESqq/wAGqqv/AA+qq/8ABqqr/wAPqqv/AAjVVf8ADaqqlv8AC6qrlv8AC6qr/wAMqqv/AAmAAP8ADlVV/wAHVVX/AA5VVf8AB1VV/wAPKquQm/8AAqqrCP06BEi7zgf/ABlVVf8AAVVV/wAYqqv/AAWAAKP/AAmqq6P/AAmqq/8AFSqr/wANKqr/ABJVVf8AEKqr/wASVVX/ABCqq/8ADqqr/wAT1VWWopai/wAFgAD/ABnVVYv/AByqq4v/ABqqq////Cqr/wAXVVX///hVVZ////hVVZ+B/wARKqv///Oqq/8ADlVVCP//86qr/wAOVVX///Iqqv8AC9VW///wqqv/AAlVVf//8Kqr/wAJVVV8/wAHVVb///FVVf8ABVVVCEWji/euBaOL/wAX1VX///mAAP8AF6qrfv8AF6qrfv8AE4AA///tgAD/AA9VVXMIwrMF///yqqud///yKqr/AA7VVf//8aqr/wALqqv///Gqq/8AC6qrfP8ACSqq///wVVX/AAaqq///8FVV/wAGqqv//+/VVv8ABIAA///vVVX/AAJVVf//71VV/wACVVX//+9VVv8AASqr///vVVWLCM5bSAd1iXWFdYF1gXf///Kqq3n//+9VVXn//+9VVf//8YAA///sKquAdIB0///6gAD//+aAAItvi///9Kqr/wABVVX///Kqqv8AAqqr///wqqv/AAKqq///8Kqr/wAFgAD///BVVf8ACFVVewj/AAhVVXv/AAuqq///8Kqrmv//8VVVmv//8VVV/wAT1VX///RVVv8AGKqr///3VVUI0nGL+7YF///jVVX/AAFVVXD/AAiAAP//5qqr/wAPqqv//+aqq/8AD6qr///rVVX/ABWAAHv/ABtVVQhSZAWX///uqqv/AA2qq///8NVV/wAPVVV+/wAPVVV+/wAQgACA/wARqquC/wARqquC/wASKqr///lVVf8AEqqr///7qqv/ABKqq///+6qr/wASVVX///3VVZ2LCA73gfj6+XoVIgr9Avs6FSMKwRYkCvfp/BgVIwrBFiQKDvcS+Hv3YhX7QPdKBZ//AAqqq/8AE1VVlv8AEqqr/wALVVX/ABKqq/8AC1VV/wAQ1VWYmv8ADqqrmv8ADqqrl/8AEKqqlP8AEqqrlP8AEqqr/wAEgAChi/8AGVVVi/8AFqqr///7qqv/ABSAAP//91VV/wASVVX///dVVf8AElVV///0Kqv/AA+qq3yYCHyY///u1VX/AAoqq///7Kqr/wAHVVX//+yqq/8AB1VVd/8AA6qr///rVVWL///oqquL///pgAD///xVVf//6lVV///4qqv//+pVVf//+KqreP//9YAA///vqqv///JVVf//76qr///yVVV+///vKqv///ZVVXf///ZVVXf///sqq///6VVVi///5qqrCIt7/wACqqv///CAAP8ABVVVfP8ABVVVfP8ABqqr///xgACTfZN9/wAJKqv///KAAP8AClVVfv8AClVVfv8ACiqr///zgACVf///61VV///zVVV3///zKqv//+yqq37//+yqq37//+7VVf//8YAAfHsIfHv///PVVf//7aqr///2qqv//+tVVf//9qqr///rVVX///tVVXOL///kqquL///gqqv/AAWqq///46qq/wALVVX//+aqq/8AC1VV///mqqv/AA9VVv//6lVV/wATVVV5/wATVVV5/wAW1Vb///Iqq/8AGlVV///2VVX/ABpVVf//9lVV/wAcKqv///sqq6mLCP8AMVVVi/8AKdVW/wALgAD/ACJVVaL/ACJVVaL/AB+AAP8AHtVV/wAcqqv/ACaqqwj1+wbki/s19z33FPd2R4sF+633qBX/AByqq4v/ABeqqv//9yqr/wASqqv//+5VVf8AEqqr///uVVX/AAlVVf//6Sqri2+L///tVVX///vVVf//74AA///3qqv///Gqq///96qr///xqqv///WAAP//8yqq///zVVX///Sqq///81VV///0qqt9gf//8Kqr///3VVX///Cqq///91VV///xVVWDff//+KqrCP//+Kqr/wAIqqv///fVVf8ACaqqgv8ACqqrgv8ACqqr///3qqv/AAtVVf//+FVVl///+FVVl///+aqr/wAMVVWG/wAMqquG/wAMqqv///2AAP8ADFVVi5eLqf8AClVV/wAYKqv/ABSqq/8AElVV/wAUqqv/ABJVVf8AGVVV/wAJKqupiwha+8sV91j7YAWB///xVVWA///yKqt/fn9+fv//9IAAfYF9gf//8NVVg///76qrhf//76qrhf//7oAAiP//7VVVi3WL///rKqv/AAOAAP//7FVVkv//7FVVknqV///xqquYCP//8aqrmP//9Kqq/wAPgAD///eqq53///eqq53///vVVf8AFFVVi/8AFqqri/8AFKqrj/8AEoAAk/8AEFVVk/8AEFVV/wAKgAD/AA6qq5iYmJj/AA5VVf8AC9VV/wAPqqv/AAqqq/8AD6qr/wAKqqv/AA/VVZWb/wAJVVUIDvvS7/lYFft4x/d4Bw770veM+VAVWKsFX03//93VVf//ulVV///nqqv//7Kqq///56qr//+yqqv///PVVf//saqqi///sKqri2X/AAMqq///2aqr/wAGVVX//9lVVf8ABlVV///ZVVX/AAkqq///2aqrl2WXZf8ADtVV///a1VX/ABGqq///26qr/wARqqv//9uqq/8AFIAA///d1VX/ABdVVWsIuqkF///Wqqv/AECqq2v/AEGqqv//6VVV/wBCqqv//+lVVf8AQqqr///0qqv/AEhVVYvZi/8AIqqr/wACqqv/ACOqqv8ABVVV/wAkqqv/AAVVVf8AJKqr/wAIKqv/ACRVVZavlq//AA2AAP8AItVVm/8AIaqrm/8AIaqrnv8AHoAAof8AG1VVCA770pf7EBW+awW3yf8AIiqr/wBFqqv/ABhVVf8ATVVV/wAYVVX/AE1VVf8ADCqr/wBOVVaL/wBPVVWLsf///NVV/wAmVVX///mqq/8AJqqr///5qqv/ACaqq///9tVV/wAmVVV/sX+x///xKqv/ACUqq///7lVV/wAkVVX//+5VVf8AJFVV///rgAD/ACIqq///6KqrqwhcbQX/ABSqq///31VV/wASVVX//9+AAJv//9+qq5v//9+qq/8ADYAA///e1VWWaZZp/wAIgABokWeRZ47//9qqq4v//9lVVYv//91VVf///VVV///cKqv///qqq2b///qqq2b///fVVf//24AAgGcIgGf///KAAP//3VVVe///3qqre///3qqreP//4aqqdf//5KqrCA77GveL+MAV9yxb+ywH+ye7fV73Jlkw+w6zbuT3Een7EbCoMPcO9yS6fLsFDuPZ99sVW/d7+3u793v3e7v7e/d7W/t7Bw770vcI5RVJ+3jGi9j3eAUO+4m295wVVfeLwQcO+9LdtRUhCg77ZPfN+XwV+8T9jsB598P5jgUOUaX39hWLcf8AASqrcP8AAlVVb/8AAlVVb/8ABFVW///kgAD/AAZVVXD/AAZVVXD/AAiqq///5lVVlv//56qrlv//56qr/wAOKqv//+qAAP8AEVVV///tVVX/ABFVVf//7VVV/wAU1Vb///Eqq/8AGFVVgP8AGFVVgP8AHNVW///6gAD/ACFVVYsI/wAhVVWL/wAc1Vb/AAWAAP8AGFVVlv8AGFVVlv8AFNVW/wAO1VX/ABFVVf8AEqqr/wARVVX/ABKqq/8ADiqr/wAVgACW/wAYVVWW/wAYVVX/AAiqq/8AGaqr/wAGVVWm/wAGVVWm/wAEVVb/ABuAAP8AAlVVp/8AAlVVp/8AASqrpoulCIv/ABlVVf///tVV/wAa1Vb///2qq/8AHFVV///9qqv/ABxVVf//+6qq/wAbqqv///mqq6b///mqq6b///dVVf8AGaqrgP8AGFVVgP8AGFVV///x1VX/ABWAAP//7qqr/wASqqv//+6qq/8AEqqr///rKqr/AA7VVf//56qrlv//56qrlv//4yqq/wAFgAD//96qq4sI///eqquL///jKqr///qAAP//56qrgP//56qrgP//6yqq///xKqv//+6qq///7VVV///uqqv//+1VVf//8dVV///qgACA///nqquA///nqqv///dVVf//5lVV///5qqtw///5qqtw///7qqr//+RVVf///aqr///jqqv///2qq///46qr///+1VX//+Uqqov//+aqqwjNFoud/wAAqqv/ABRVVf8AAVVV/wAWqqv/AAFVVf8AFqqr/wACqqv/ABbVVY+ij6L/AAXVVf8AFoAA/wAHqquh/wAHqquhlf8AE4AA/wAMVVWc/wAMVVWc/wAPVVb/AA2qq/8AElVV/wAKVVX/ABJVVf8AClVV/wAVgAD/AAUqq/8AGKqriwj/ABiqq4v/ABWAAP//+tVV/wASVVX///Wqq/8AElVV///1qqv/AA9VVv//8lVV/wAMVVV6/wAMVVV6lf//7IAA/wAHqqt1/wAHqqt1/wAF1VX//+mAAI90j3T/AAKqq///6Sqr/wABVVX//+lVVf8AAVVV///pVVX/AACqq///66qri3kIi///7VVV////VVX//+uAAP///qqr///pqqv///6qq///6aqr///9VVX//+lVVYd0h3T///oqq///6YAA///4VVV1///4VVV1gf//7IAA///zqqt6///zqqt6///wqqr///JVVf//7aqr///1qqv//+2qq///9aqr///qgAD///rVVf//51VViwj//+aqq4v//+pVVf8ABSqref8AClVVef8AClVV///w1VX/AA2qq///86qrnP//86qrnIH/ABOAAP//+FVVof//+FVVof//+iqr/wAWgACHooei///9VVX/ABaqq////qqr/wAWVVX///6qq/8AFlVV////VVX/ABSAAIv/ABKqqwgOUfeZ+QQV/QTH+VhYB/tD+yOwXfcU9AUOUbTRFUX4SsH8CAf3cfd3BZ3/ABKqq/8AEdVV/wASqqr/ABGqq/8AEqqr/wARqqv/ABKqq/8AD6qq/wAT1VX/AA2qq6D/AA2qq6CW/wAWKqv/AAhVVf8AF1VV/wAIVVX/ABdVVf8ABCqr/wAZVVaL/wAbVVWL/wAcqqv///qAAP8AGYAAgP8AFlVVgP8AFlVV///xKqv/ABLVVv//7VVV/wAPVVUI///tVVX/AA9VVf//6lVW/wAL1Vb//+dVVf8ACFVV///nVVX/AAhVVXH/AAQqq///5Kqri///yVVVi///0VVW///ygAD//9lVVXD//9lVVXBy///XKqv///Sqq///yVVVCNGEBf8AB1VV/wAiqqv/ABBVVqf/ABlVVf8AFVVV/wAZVVX/ABVVVar/AAqqq/8AJKqri/8AKKqri/8AIaqq///0VVX/ABqqq///6Kqr/wAaqqv//+iqq/8ADVVV///fqqqL///WqquL///sqquIeYX//+9VVYX//+9VVf//+Cqr///wKqv///ZVVXwI///2VVV8///1Kqv///Gqq3////JVVX////JVVX////Mqq39/CA5R9fcoFUp2Bf8AEqqrW/8AG9VV///c1VWw///pqquw///pqqv/AC0qq///9NVV/wA1VVWL/wAkqquLq/8ABVVV/wAbVVX/AAqqq/8AG1VV/wAKqqv/ABbVVv8ADoAA/wASVVX/ABJVVf8AElVV/wASVVX/AA2qq/8AFYAAlP8AGKqrlP8AGKqr/wAEgAD/ABpVVYunCIv/ABaqq////FVV/wAVVVX///iqq5////iqq5////Wqqp3///Kqq5v///Kqq5v///Aqqv8ADYAA///tqquW///tqquW///rgAD/AAeAAP//6VVVjwiNB/8AKVVV/wALVVX/AB9VVv8AFIAA/wAVVVX/AB2qq/8AFVVV/wAdqqv/AAqqq/8AIiqqi/8AJqqri/8AHqqr///61VX/ABqqqv//9aqr/wAWqqv///Wqq/8AFqqr///x1VX/ABLVVXmaeZp2/wALVVVz/wAHqqtz/wAHqqv//+aqq/8AA9VV///lVVWLCP//11VVi///2tVW///3qqv//95VVf//71VV///eVVX//+9VVf//5YAA///lVVb//+yqq///21VVCMRrBf8ADVVV/wAZVVX/ABJVVv8AFCqr/wAXVVWa/wAXVVWa/wAaVVb/AAeAAP8AHVVVi7OL/wAf1VX///PVVf8AF6qr///nqqv/ABeqq///56qr/wAL1VX//+DVVYtli3P///tVVf//64AA///2qqt6///2qqt6///z1VX///Iqq3z///VVVQh8///1VVV6///4Kqt4hniG///tKqv///2AAP//7VVViwhtT6UG/wAWqquL/wAWgAD///1VVf8AFlVV///6qqv/ABZVVf//+qqrn///94AA/wARqqv///RVVf8AEaqr///0VVX/AA5VVf//8NVWlv//7VVVlv//7VVV/wAFgAD//+mqq4txi///6qqr///8qqt3///5VVX//+1VVf//+VVV///tVVX///Yqq///76qrfn0Ifn3//++AAIB3g3eDdIdxi2OL///ggAD/AAkqq3T/ABJVVXT/ABJVVf//7dVV/wAaKqv///Kqq60IDlH33fdCFftCx/dC9wDB+wD4dDgH+6/8Y4tEBffG+GgV/DL7kAf3jvgyBQ5R+Ff5IhXB+/IHhfv9BZ+Zof8AC4AAo5SjlP8AGKqr/wAEgAD/ABlVVYv/ABlVVYv/ABeAAP//+yqr/wAVqqv///ZVVf8AFaqr///2VVX/ABLVVf//8tVWm///71VVm///71VV/wAMgAD//+yAAJT//+mqq5T//+mqq/8ABIAA///oKqqL///mqqsIi2////qqq///51VV///1VVX//+qqq///9VVV///qqqv///Kqq///7lVVe317ff//7qqr///1gAD//+1VVYT//+1VVYT//+6qq////IAAe4t7i///8FVV/wACgAD///Cqq5D///Cqq5D///GqqpL///Kqq5QI///yqquU///0Kqr/AApVVf//9aqr/wALqqv///Wqq/8AC6qr///31VX/AAyAAIX/AA1VVQhNbAX/ABNVVf//2qqr/wAbKqv//+Kqqq7//+qqq67//+qqq/8AK4AA///1VVW/i6WL/wAaVVX/AASqq/8AGqqr/wAJVVX/ABqqq/8ACVVV/wAYVVWZof8AEqqrof8AEqqr/wAR1VX/ABeqqv8ADaqr/wAcqqv/AA2qq/8AHKqr/wAG1VX/ACFVVYuxCIur///61VX/AB4qq///9aqr/wAcVVX///Wqq/8AHFVV///xVVX/ABjVVnj/ABVVVXj/ABVVVXT/ABDVVnD/AAxVVXD/AAxVVf//4YAA/wAGKqtpi///7qqri///7lVV///+qqt5///9VVV5///9VVX//+9VVf//+qqr///wqquDCI73dQUOUfc8+CAV91X3zD+L+1T70wX///iqq3////iqqv//81VV///4qqv///Kqq///+Kqr///yqquE///x1VX///lVVXz///lVVXz///qqq///8Cqrh///71VVh///71VVif//7lVWi///7VVVi2v/AAXVVf//4oAA/wALqqtw/wALqqtw/wAQKqr//+jVVf8AFKqr///sqqsI/wAUqqv//+yqq/8AGIAA///w1VX/ABxVVYD/ABxVVYD/AB7VVv//+oAA/wAhVVWL/wAhVVWL/wAe1Vb/AAWAAP8AHFVVlv8AHFVVlv8AGIAA/wAPKqv/ABSqq/8AE1VV/wAUqqv/ABNVVf8AECqq/wAXKqv/AAuqq6b/AAuqq6b/AAXVVf8AHYAAi6sIi/8AHqqr///6qqv/AByAAP//9VVV/wAaVVX///VVVf8AGlVVfKL//+yqq/8AE6qr///sqqv/ABOqq3T/AA+AAP//5VVV/wALVVX//+VVVf8AC1VVbv8ABaqr///gqquL///uqquL///tKqr///2AAP//66qrhv//66qrhv//79VV///4gAB/gQjldRX/ABaqq4v/ABWAAP//+6qr/wAUVVX///dVVf8AFFVV///3VVX/ABGqq///9CqrmnyafP8AC9VV///uVVX/AAiqq///66qr/wAIqqv//+uqq/8ABFVV///qgACL///pVVWL///nVVWH///pgACD///rqquD///rqqv///Sqq///7oAA///xVVX///FVVQj///FVVf//8VVV///ugAD///Sqq///66qrg///66qrg///6YAAh///51VVi///51VVi///6YAAj///66qrk///66qrk///7oAA/wALVVX///FVVf8ADqqr///xVVX/AA6qq///9Kqr/wARgACD/wAUVVWD/wAUVVWH/wAWgACL/wAYqqsIi/8AFqqr/wAEVVX/ABWAAP8ACKqr/wAUVVX/AAiqq/8AFFVV/wAL1VX/ABGqq5qampr/ABGAAP8AC9VVn/8ACKqrn/8ACKqr/wAVqqv/AARVVf8AF1VViwgOUfhP+SIVwfwmVffoB/uz/SLOiwUOUc34rBWL///vVVX/AAKqq///74AA/wAFVVX//++qq/8ABVVV///vqqv/AAeAAP//8Kqq/wAJqqv///Gqq/8ACaqr///xqqv/AAvVVf//84AAmf//9VVVmf//9VVV/wAPqqv///hVVv8AEVVV///7VVUIigf//+lVVf//+1VV///sKqv///fVVnr///RVVXr///RVVf//8aqrff//9FVV///vqqv///RVVf//76qr///3Kqt5hf//7FVVhf//7FVViP//64AAi///6qqri2v/AAWAAP//4yqrlv//5lVVlv//5lVV/wAPVVX//+oqq/8AE6qreQj/ABOqq3n/ABcqqn3/ABqqq4H/ABqqq4Gohv8AH1VVi/8AH1VVi6iQ/wAaqquV/wAaqquV/wAXKqqZ/wATqqud/wATqqud/wAPVVX/ABXVVZb/ABmqq5b/ABmqq/8ABYAA/wAc1VWLqwiL/wAVVVWI/wAUgACF/wATqquF/wATqqv///cqq53///RVVf8AEFVV///0VVX/ABBVVf//8aqrmXr/AAuqq3r/AAuqq///7Cqr/wAIKqr//+lVVf8ABKqrCIwH/wARVVX/AASqq/8AD6qr/wAHqqqZ/wAKqquZ/wAKqqv/AAvVVf8ADIAA/wAJqqv/AA5VVf8ACaqr/wAOVVX/AAeAAP8AD1VW/wAFVVX/ABBVVf8ABVVV/wAQVVX/AAKqq/8AEIAAi/8AEKqri/8AG1VVhqSB/wAWqquB/wAWqqv///JVVf8AE1VV///uqqubCP//7qqrm///64AA/wAMgAD//+hVVZT//+hVVZT//+aAAP8ABIAA///kqquL///kqquL///mgAD///uAAP//6FVVgv//6FVVgv//64AA///zgAD//+6qq3v//+6qq3v///JVVf//7Kqrgf//6VVVgf//6VVVhnKL///kqqsIzRaL/wAnVVX/AAwqq/8AH4AA/wAYVVX/ABeqq/8AGFVV/wAXqqv/AB6AAP8AC9VV/wAkqquL/wAkqquL/wAegAD///Qqq/8AGFVV///oVVX/ABhVVf//6FVV/wAMKqv//+CAAIv//9iqq4t5///81VX//+8qq///+aqr///wVVX///mqq///8FVV///3VVX///JVVoD///RVVQiA///0VVX///KAAP//9qqre4R7hP//7qqr///8gAD//+1VVYv//+yqq4v//+6AAP8AA4AA///wVVWS///wVVWS///yqqv/AAlVVYD/AAuqq4D/AAuqq///91VV/wANqqr///mqq/8AD6qr///5qqv/AA+qq////NVV/wAQ1VWLnQhy++cVi/8AF1VVj/8AFSqrk56Tnv8ACtVV/wAQVVX/AA2qq/8ADaqr/wANqqv/AA2qq/8AECqq/wAKgAD/ABKqq/8AB1VV/wASqqv/AAdVVZ//AAOqq/8AFVVVi/8AFVVVi5////xVVf8AEqqr///4qqv/ABKqq///+Kqr/wAQKqr///WAAP8ADaqr///yVVUI/wANqqv///JVVf8ACtVV///vqquTeJN4j///6tVVi///6Kqri///6qqr///8VVV3///4qqv//+1VVf//+Kqr///tVVX///Wqqv//76qr///yqqt9///yqqt9e///9NVV///tVVX///eqq///7VVV///3qqt2///71VX//+iqq4sI///oqquLdv8ABCqr///tVVX/AAhVVf//7VVV/wAIVVV7/wALKqv///Kqq5n///Kqq5n///Wqqv8AEFVV///4qqv/ABKqq///+Kqr/wASqqv///xVVZ+L/wAVVVUIDlH39PfMFftV+8zXi/dU99MF/wAGqquX/wAHKqr/AAyqq/8AB6qr/wANVVX/AAeqq/8ADVVV/wAHKqr/AA4qq/8ABqqrmv8ABqqrmv8ABVVV/wAP1VWP/wAQqquP/wAQqquN/wARqqqL/wASqquLq///+iqr/wAdgAD///RVVab///RVVab//+/VVv8AFyqr///rVVX/ABNVVQj//+tVVf8AE1VV///ngAD/AA8qq///46qrlv//46qrlv//4Sqq/wAFgAD//96qq4v//96qq4v//+Eqqv//+oAA///jqquA///jqquA///ngAD///DVVf//61VV///sqqv//+tVVf//7Kqr///v1Vb//+jVVf//9FVVcP//9FVVcP//+iqr///igACLawiL///hVVX/AAVVVf//44AA/wAKqqv//+Wqq/8ACqqr///lqquadP8AE1VV///sVVX/ABNVVf//7FVVov//8IAA/wAaqqv///Sqq/8AGqqr///0qquo///6VVX/AB9VVYv/ABFVVYv/ABLVVv8AAoAA/wAUVVWQ/wAUVVWQ/wAQKqv/AAeAAJeVCDGhFf//6Kqri///6lVV/wAEVVV3/wAIqqt3/wAIqqv//+6AAP8AC9VVfJp8mv//9Cqr/wARgAD///dVVZ////dVVZ////uqq/8AFaqri/8AF1VVi/8AGKqrj/8AFoAAk/8AFFVVk/8AFFVV/wALVVX/ABGAAP8ADqqr/wAOqqsI/wAOqqv/AA6qq/8AEYAA/wALVVX/ABRVVZP/ABRVVZP/ABaAAI//ABiqq4v/ABiqq4v/ABaAAIf/ABRVVYP/ABRVVYP/ABGAAP//9Kqr/wAOqqv///FVVf8ADqqr///xVVX/AAtVVf//7oAAk///66qrk///66qrj///6YAAi///51VVCIv//+iqq///+6qr///qVVX///dVVXf///dVVXf///Qqq///7oAAfHx8fP//7lVV///0Kqv//+uqq///91VV///rqqv///dVVf//6oAA///7qqv//+lVVYsIDvvS3fg4FSEK/A4EIQoO+9L3COUVSft4xovY93gFI/feFSEKDuP43PiTFYu9/Ir7fotb+Ir7fou9/FT3ZAUO49n4IxVb+JK7B/yS+yQVW/iSuwcO493qFYtZ+Ir3fou7/Ir3fotZ+FT7ZAUO+wf3YPeiFTfHyweL/wAXVVWP/wAT1VaT/wAQVVWT/wAQVVWV/wAOqquXmJeYmP8ADKqrmf8ADFVVmf8ADFVVmP8ADYAAl/8ADqqrl/8ADqqrlZyT/wATVVWT/wATVVWP/wAXqquLpwiL/wAbVVX///tVVf8AGFVW///2qqv/ABVVVf//9qqr/wAVVVX///Mqqp3//++qq/8ADqqr///vqqv/AA6qq///7IAA/wALKqr//+lVVf8AB6qr///pVVX/AAeqq///56qr/wAD1VVxi1mL///VVVX///HVVf//3Kqr///jqqv//9yqq///46qr///pqqr//9gqqv//9qqr///MqqsIzIMF/wAHVVX/ACKqq/8ADtVWp/8AFlVV/wAVVVX/ABZVVf8AFVVV/wAc1Vb/AAqqq/8AI1VVi/8AJKqri/8AHKqq///01VX/ABSqq///6aqr/wAUqqv//+mqq/8AClVV///i1VWLZ4t1///8Kqt4///4VVV7///4VVV7///2VVb///Eqq///9FVV///yVVUI///0VVX///JVVf//84AA///zKqv///Kqq3////Kqq3////OAAP//81VV///0VVX///Kqq///9FVV///yqqv///ZVVnz///hVVf//71VV///4VVX//+9VVf///Cqr///sqquLdQh6+3gVIQoO93L3kvesFYuj/wAEKqv/ABmqq/8ACFVV/wAbVVX/AAhVVf8AG1VV/wAL1Vb/ABlVVv8AD1VV/wAXVVX/AA9VVf8AF1VV/wASKqv/ABNVVqD/AA9VVaD/AA9VVf8AFyqr/wAHqqv/ABlVVYuni/8AFIAAgph5mHn/AAaAAHKLawiLdf//+6qr///n1VX///dVVf//5aqr///3VVX//+Wqq3///+dVVf//8KqrdP//8KqrdHn//+zVVf//61VV///wqqv//+tVVf//8Kqrdf//+FVV///oqquLcYv//+uAAP8ACNVVfP8AEaqrfP8AEaqr///4gAD/ABbVVYunCPejdhXs97ZPi3NLiYsF///2qqv/AB6qq///8YAA/wAVgAD//+xVVf8ADFVV///sVVX/AAxVVf//6yqr/wAGKqt1i///21VVi///3yqr///3VVVu///uqqtu///uqqv//+dVVf//6aqq///rqqv//+Sqq///66qr///kqqv///BVVWyA///dVVWA///dVVX///qAAP//3VVWi///3VVVCIt3/wAC1VX//+0qq/8ABaqr///uVVX/AAWqq///7lVV/wAIgAD///BVVv8AC1VV///yVVX/AAtVVf//8lVVmf//9VVW/wAQqqv///hVVf8AEKqr///4VVX/ABOqqv///Cqr/wAWqquLpYv/ABiqq5L/ABdVVZn/ABdVVZn/ABJVVv8AD1VV/wANVVX/ABCqqwiNBov//+lVVZH//+8qq5eAl4D/AA6qq///+oAA/wARVVWLp4un/wAHgACnmqea/wAZKqv/ABTVVf8AFlVV/wAaqqv/ABZVVf8AGqqrnf8AH1VV/wANqquv/wANqquv/wAG1VX/ACaqq4v/AClVVQiL/wAqqqv///dVVf8AJ6qq///uqqv/ACSqq///7qqr/wAkqqtz/wAfqqr//+FVVf8AGqqr///hVVX/ABqqq///29VWoP//1lVV/wAPVVX//9ZVVf8AD1VV///S1Vb/AAeqq///z1VVi///zKqri///z9VV///2gABeeF54///Y1VX//+Wqq///3qqr///eVVUI///eqqv//95VVf//5aqq///Yqqv//+yqq17//+yqq17///ZVVf//z4AAi1eLV/8ACVVV///PVVX/ABKqq///0qqr/wASqqv//9Kqq/8AGdVV///YgACs///eVVWs///eVVX/ACeAAP//5YAAuf//7Kqruf//7Kqrvf//9lVVwYsI/wAfVVWLqv8ABCqr/wAeqqv/AAhVVf8AHqqr/wAIVVWol/8AG1VV/wAPqqv/ABtVVf8AD6qrpP8AEtVV/wAWqquh/wAWqquhnqT/AA9VVacIUQb///Kqq///7Kqre///7lVV///tVVV7///tVVV7///rgAD///Iqq///6aqr///0VVX//+mqq///9FVV///ogAD///bVVv//51VV///5VVX//+dVVf//+VVV///nVVb///yqq///51VVi1+L///WgAD/AAiAAGScZJxp/wAXVVVu/wAdqqsIbv8AHaqr///pKqv/ACKAAP//71VV/wAnVVX//+9VVf8AJ1VV///3qqu1i/8ALKqri/8AKqqrk/8AKNVVm7Kbsv8AFiqr/wAiVVX/ABxVVf8AHaqr/wAcVVX/AB2qq/8AIaqr/wAXqqqy/wARqquy/wARqqv/ACoqq/8ACNVV/wAtVVWLCP8AJVVVi6////nVVf8AIqqr///zqqv/ACKqq///86qr/wAegAD//+7VVf8AGlVVdf8AGlVVdaD//+WAAP8AD6qrbP8AD6qrbP8AB9VV///d1VWL///aqquLb///+tVV///jqqv///Wqq///41VV///1qqv//+NVVf//8tVV///mKqt7dAh7dP//7oAA///tKqt4///xVVV4///xVVX//+3VVf//+Kqr///uqquL///0qquL///41VWOiJGIkf///oAA/wAFqquL/wAFVVWLj4z/AAZVVY3/AAiqq43/AAiqq/8AAqqr/wAJqqr/AANVVf8ACqqrCA729875WBUlCmZDFSYKDr/s+VgV/Vj3dgeji/8AGdVV/wACqqv/ABuqq/8ABVVV/wAbqqv/AAVVVf8AGaqqlf8AF6qr/wAOqqv/ABeqq/8ADqqr/wATqqr/ABQqqv8AD6qr/wAZqqv/AA+qq/8AGaqr/wAH1VX/ACEqqov/ACiqq4v/ABiqq////Cqr/wAWqqr///hVVf8AFKqr///4VVX/ABSqq///9Sqr/wAR1VV9mgh9mv//71VVl///7KqrlP//7KqrlP//6qqq/wAFgAD//+iqq40IjQe1/wAIqqv/AB+qq/8AEaqq/wAVVVX/ABqqq/8AFVVV/wAaqqv/AAqqq/8AH1VVi6+Ls///+Sqr/wAgKqv///JVVf8AGFVV///yVVX/ABhVVf//7lVWnv//6lVV/wANqqv//+pVVf8ADaqr///ngACU///kqqv/AARVVf//5Kqr/wAEVVVw/wACKqv//+VVVYsI+x77xhX3ivcmB/8AFKqri/8AE6qqif8AEqqrh/8AEqqrh/8AEFVV///5KquZ///2VVWZ///2VVX/AAsqq37/AAhVVf//76qr/wAIVVX//++qq/8ABCqr///rgACL///nVVWL///0qquJ///zgACH///yVVWH///yVVWD///zKqt/fwh/f///71VV///11VX//+qqq///96qr///qqqv///eqq///5FVV///71VVpiwj7HfvqFfeu9zUH/wAUqquL/wAUgAD///1VVf8AFFVV///6qqv/ABRVVf//+qqr/wASKqv///eAAJv///RVVZv///RVVZj///DVVpX//+1VVZX//+1VVZD//+mqq4txi///81VV///91VX///HVVv//+6qr///wVVX///uqq///8FVV///3gAD///Eqq///81VVfQj///NVVX3//+3VVv//9FVV///oVVX///aqq///6FVV///2qqv//+DVVv//+1VV///ZVVWLCA73Evk89wMVJwoO9zfj+VgVKAr7Lf0cFSkKDprs+VgVKgoOdez5WBX9WM335Pfhx/vh95D3+scHDvdc+T25FSsKDvck7PlYFSwKDvvS7PlYFS0KDiv4FfdkFS4KDqzs+VgVLwoOPez5WBUwCg73y+X5WBX9WM35BI0H96b9BKiL96L5BI2Li/0EzYuL+Vgti/uW/Ob7lvjmBQ73XOz5WBUxCg73lL739hUyCs0WMwoOh+z5WBX9WM335PctB6eL/wAa1VX/AAOqq/8AGaqr/wAHVVX/ABmqq/8AB1VV/wAWqqr/AAsqq/8AE6qrmv8AE6qrmv8AD6qq/wATKqv/AAuqq/8AF1VV/wALqqv/ABdVVf8ABdVV/wAbqquLq4v/ACSqq///+NVV/wAegAD///Gqq/8AGFVV///xqqv/ABhVVf//7aqq/wATKqv//+mqq5kI///pqquZ///nVVX/AAnVVXD/AAWqq3D/AAWqq///5iqr/wAC1VX//+dVVYsI+x77zBU0Cg73lPnBFsf7cY0H/wAbVVX/AAqqq/8AGKqr/wAP1VWhoKGg/wASqqv/ABgqq/8AD1VV/wAbVVX/AA9VVf8AG1VV/wALqqv/AB0qq5Oqk6qP/wAfKquL/wAfVVWL/wAzVVX///eAAP8AL9VWev8ALFVVev8ALFVVc/8AJlVWbP8AIFVVCGz/ACBVVf//2lVV/wAZgAD//9Oqq/8AEqqr///Tqqv/ABKqq///zoAA/wAJVVX//8lVVYv//8lVVYv//86AAP//9qqr///Tqqv//+1VVf//06qr///tVVX//9pVVf//5oAAbP//36qrbP//36qrc///2aqqev//06qrev//06qr///3gAD//9Aqqov//8yqqwiL///JVVX/AAoqq///zlVW/wAUVVX//9NVVf8AFFVV///TVVX/ABsqq///2dVWrf//4FVVrf//4FVV/wAngAD//+eAALj//+6qq7j//+6qq/8ALyqr///3VVX/ADFVVYsI+8b3/xWL/wAqqqv/AAaqq/8AJ9VV/wANVVWw/wANVVWw/wATKqv/ACAqq6T/ABtVVaT/ABtVVf8AHqqr/wAVVVb/ACRVVf8AD1VV/wAkVVX/AA9VVf8AKSqr/wAHqqu5i7mL/wApKqv///hVVf8AJFVV///wqqv/ACRVVf//8Kqr/wAeqqv//+qqqqT//+Sqqwik///kqqv/ABMqq///39VV/wANVVVm/wANVVVm/wAGqqv//9gqq4v//9VVVYv//9iqq///+dVV///aKqr///Oqq///26qr///zqqv//9uqq///7dVV///f1VVzb3Nv///igAD//+mAAGh6aHr//9fVVf//94AA///SqquLCP//01VVi///1yqrk2abZptr/wAVqqtw/wAbVVVw/wAbVVV2/wAgKqt8sHyw///4gAD/ACcqq4v/AClVVQgOmvc3+CAVNQr7YvfMFTYKDnX3CPcXFTcKDof3kvkcFTgKDvX47PejFTkKDpqI+VgV95z9WM2L96H5WEWL+3r9Aft4+QEFDvgCkPlYFToKDqz3n/gIFfue/Ajai/d099T3dPvU3Yv7m/gI94T35DyL+137tPtg97Q9iwUOh/eS98UVOwoOdaK/FTwKDvvS93T5QBW7+yr+DPcquzH5rAcO+2T3/XkV+8T5jld598P9jgUO+9Kv+wAVW/cq+gz7Klvl/awHDuP3yvlYFft4/FjEi/dW+CL3V/wiw4v7ePhYBQ49QARZ+Ii9Bw73RvjIFT0KDlD4S/dWFT4K+wyxFT8KDqzO+YgV/YjH3I0H/wAJVVV7/wALqqv///Iqq5n///RVVZn///RVVf8ADyqr///2VVb/ABBVVf//+FVV/wAQVVX///hVVf8AESqr///6VVad///8VVWd///8VVX/ABGqq////iqr/wARVVWL/wAjVVWL/wAggACR/wAdqquX/wAdqquX/wAZqqr/ABDVVf8AFaqr/wAVqqsI/wAVqqv/ABWqq/8AENVV/wAZqqqX/wAdqquX/wAdqquR/wAggACL/wAjVVWL/wAjVVWF/wAggAB//wAdqqt//wAdqqv//+8qq/8AGaqq///qVVX/ABWqq///6lVV/wAVqqv//+ZVVv8AENVV///iVVWX///iVVWX///fgACR///cqquLCP//7qqri///7lVV///+Kqt5///8VVV5///8VVX//+7VVf//+lVW///vqqv///hVVf//76qr///4VVX///DVVf//9lVWff//9FVVff//9FVV///0VVX///Iqq///9qqrewiJ+AsGhfyhFUAKDir4Z88VQQoOrPh43BVCCpP3KhVDCg51+HziFUQKXfdLFUUKDvuu9wb4LBVGCg6s+LSpFUcKUfdjFUgKDnXb+YgVSQoO5fhiFUoKQPdLFUsKDvcqOhVMCkD5ahVLCg4q2/mIFU0KDuX5iBVOCg73ptv34BX74Mf3eweLq/8ABCqr/wAb1VX/AAhVVf8AF6qr/wAIVVX/ABeqq/8AC1VW/wATqqr/AA5VVf8AD6qr/wAOVVX/AA+qq5z/AAuqqv8AE6qr/wAHqqv/ABOqq/8AB6qr/wAU1VX/AAPVVaGL/wAgqquL/wAYKqp+/wAPqqtx/wAPqqtx/wAH1VX//92qq4v//9VVVQj7qsf3mAeL/wAQqqv/AAIqq/8AEaqq/wAEVVX/ABKqq/8ABFVV/wASqqv/AAdVVv8AEVVV/wAKVVWb/wAKVVWb/wAOKqv/AA0qq53/AApVVZ3/AApVVaL/AAUqq6eLo4v/ABOAAP//+9VVmv//96qrmv//96qr/wALqqv///TVVf8ACFVVfQj/AAhVVX3/AAXVVv//8Cqr/wADVVX//+5VVf8AA1VV///uVVX/AAGqq///7dVWi///7VVVCPukx/enB4v/ABlVVf///YAA/wAYqquGo4ajgv8AFSqrfv8AElVVfv8AElVV///uKqv/AA7VVv//6VVV/wALVVX//+lVVf8AC1VV///iqqv/AAWqq2eLa4v//+GAAINue257///qKqv//+aqq///8VVV///dVVUI///0qqv/ACNVVf//7aqq/wAZgAD//+aqq/8AD6qr///mqqv/AA+qq2//AAfVVf//4VVVi///2qqri///31VV///21VVv///tqqtv///tqqt3///qKqp////mqqsIiAb///6qq/8ABKqr////Kqr/AApVVf///6qrm////6qrm////4AA/wAQqqv///9VVf8AEVVVCE8Gi4X/AABVVf//94AA/wAAqquA/wAAqquA/wAAgAD///Qqq/8AAFVV///zVVX/AABVVf//81VV/wAAgAD///OAAP8AAKqr///zqqv/AACqq///86qr/wAAVVX///WAAIv///dVVQgOddv34BVPCg6bwfd7FVAKxxZRCg6szvhiFf1Gx/fJjQf/AAlVVXv/AAuqq///8iqrmf//9FVVmf//9FVV/wAPKqv///ZVVv8AEFVV///4VVX/ABBVVf//+FVV/wARKqv///pVVp3///xVVZ3///xVVf8AEaqr///+Kqv/ABFVVYv/ACNVVYv/ACCAAJH/AB2qq5f/AB2qq5f/ABmqqv8AENVV/wAVqqv/ABWqqwj/ABWqq/8AFaqr/wAQ1VX/ABmqqpf/AB2qq5f/AB2qq5H/ACCAAIv/ACNVVYv/ACNVVYX/ACCAAH//AB2qq3//AB2qq///7yqr/wAZqqr//+pVVf8AFaqr///qVVX/ABWqq///5lVW/wAQ1VX//+JVVZf//+JVVZf//9+AAJH//9yqq4sI///uqquL///uVVX///4qq3n///xVVXn///xVVf//7tVV///6VVb//++qq///+FVV///vqqv///hVVf//8NVV///2VVZ9///0VVV9///0VVX///RVVf//8iqr///2qqt7CIncBoX7exVACg6s+HjcFfvJx/lGTzqJB///9qqrm///9FVV/wAN1VV9/wALqqt9/wALqqv///DVVf8ACaqq///vqqv/AAeqq///76qr/wAHqqv//+7VVf8ABaqqef8AA6qref8AA6qr///uVVX/AAHVVf//7qqri///3Kqri///31VVhW1/bX///+ZVVf//7yqr///qqqv//+pVVQj//+qqq///6lVV///vVVX//+ZVVn///+JVVX///+JVVYX//9+AAIv//9yqq4v//9yqq5H//9+AAJf//+JVVZf//+JVVf8AEKqr///mVVb/ABVVVf//6lVV/wAVVVX//+pVVf8AGaqr///vKqupf6l//wAgqquF/wAjVVWLCP8AEVVVi/8AEaqr/wAB1VWd/wADqqud/wADqqv/ABEqq/8ABaqq/wAQVVX/AAeqq/8AEFVV/wAHqqv/AA8qq/8ACaqqmf8AC6qrmf8AC6qr/wALqqv/AA3VVf8ACVVVmwiT9yoVQwoO+4nb9+AVUgoO+yzc9woVUwoO+4n3xvgsFVQKDnX4a/cWFVUKDvsHmvhiFfdR/GLJi/dK+GJOi/sq/CH7LvghBQ73Epr4YhVWCg4q91r3jhX7VPuO04v3Mvdl9zX7ZdmL+1r3jvc392hAi/sT+0P7FPdDPosFDvsH92b7IxVXCg77LKavFVgKDvuJ96b5QBW7WQdvi///6lVV///1VVX///Cqq///6qqr///wqqv//+qqq///+FVV///iVVWLZQj7JQeL///sqquKeIn//+1VVYn//+1VVf///FVV///vgAD///qqq///8aqr///6qqv///Gqq///+NVV///0gACC///3VVWC///3VVX///SAAP//+6qrfYsIWweZi/8AC4AA///7qquU///3VVWU///3VVX/AAcqq///9IAA/wAFVVX///Gqq/8ABVVV///xqqv/AAOqq///76qqjf//7aqrjf//7aqrjP//7Sqqi///7KqrCPsmB4v//9qqq/8AB6qr///igAD/AA9VVf//6lVV/wAPVVX//+pVVf8AFaqr///1Kquniwi9u3QGgYv///eAAP8AAtVVhP8ABaqrhP8ABaqr///6VVX/AAdVVf//+6qrlP//+6qrlP///NVV/wAKVVWJ/wALqquJ/wALqquK/wAL1VWLlwj3IgeLpYj/ABaAAIWehZ6E/wAPqquD/wAMVVWD/wAMVVX///gqq/8ACYAA///4VVX/AAaqq///+FVV/wAGqqv///qAAP8ABFVV///8qquNCI0H/wADVVX/AAFVVf8ABYAAj/8AB6qr/wAGqqv/AAeqq/8ABqqr/wAH1VX/AAmqqpP/AAyqq5P/AAyqq5L/AA/VVZGekZ6O/wAWgACLpQj3IQeL/wAMqquM/wAMKqqN/wALqquN/wALqqv/AAMqq/8AClVV/wAEVVWU/wAEVVWU/wAFqqv/AAdVVZL/AAWqq5L/AAWqq/8ACIAA/wAC1VWViwgO+/j3G/mCFVv+fLsGDvuJxvsAFVu9B6eL/wAVqqv/AAqqq/8AD1VV/wAVVVX/AA9VVf8AFVVV/wAHqqv/AB2qq4uxCPclB4v/ABNVVYyejf8AEqqrjf8AEqqr/wADqqv/ABCAAP8ABVVV/wAOVVX/AAVVVf8ADlVV/wAHKqv/AAuAAJT/AAiqq5T/AAiqq/8AC4AA/wAEVVWZiwi7B32L///0gAD/AARVVYL/AAiqq4L/AAiqq///+NVV/wALgAD///qqq/8ADlVV///6qqv/AA5VVf///FVV/wAQVVaJ/wASVVWJ/wASVVWK/wAS1VaL/wATVVUI9yYHi/8AJVVV///4VVX/AB2AAP//8Kqr/wAVqqv///Cqq/8AFaqr///qVVX/AArVVW+LCFlbogaVi/8ACIAA///9KquS///6VVWS///6VVX/AAWqq///+Kqr/wAEVVWC/wAEVVWC/wADKqv///Wqq43///RVVY3///RVVYz///Qqq4t/CPsiB4txjv//6YAAkXiReJL///BVVZP///Oqq5P///Oqq/8AB9VV///2gAD/AAeqq///+VVV/wAHqqv///lVVf8ABYAA///7qqv/AANVVYkIiQf///yqq////qqr///6gACH///4VVX///lVVf//+FVV///5VVX///gqq///9lVWg///81VVg///81VVhP//8CqrhXiFeIj//+mAAItxCPshB4v///NVVYr///PVVon///RVVYn///RVVf///NVV///1qqv///uqq4L///uqq4L///pVVf//+KqrhP//+lVVhP//+lVV///3gAD///0qq4GLCA7j+Mf34BVpqwX///Sqq///7qqr///zgAD///BVVf//8lVVff//8lVVff//7yqrhHeL///zVVWL///xVVb/AAMqq///71VV/wAGVVX//+9VVf8ABlVVef8AB4AA///sqqv/AAiqq///7VVVk///7NVWk///7FVVk///7FVVk///7NVWj///7VVViwj//+9VVYv///Eqq////VVVfv//+qqrfv//+qqr///0gACEgf//91VVgf//91VV///3Kqv///ZVVv//+FVV///1VVX///hVVf//9VVV///5gAD///VVVv//+qqr///1VVUIrWsF/wALVVX/ABFVVf8ADIAA/wAPqqv/AA2qq5n/AA2qq5n/ABDVVZKfi/8ADKqri/8ADqqq///81VX/ABCqq///+aqr/wAQqqv///mqq53///iAAP8AE1VV///3VVX/ABKqq4P/ABMqqoP/ABOqq4P/ABOqq4P/ABMqqof/ABKqq4sI/wAQqquL/wAO1VX/AAKAAJiQmJD/AAuAAP8ABqqrlf8ACFVVlf8ACFVV/wAI1VX/AAmqq/8AB6qrlv8AB6qrlv8ABoAA/wALKqv/AAVVVf8AC1VVCA770g77ZPcv98AV/J7H+J4HnfckFVkKDlH3lPg1FfwGB3X/AASqq///7Cqr/wAIKqr//+5VVf8AC6qr///uVVX/AAuqq///8NVW/wAOKqr///NVVf8AEKqr///zVVX/ABCqq///9lVW/wASgAD///lVVf8AFFVV///5VVX/ABRVVf///Kqr/wAVKquLoYuh/wADKqv/ABVVVf8ABlVV/wAUqqv/AAZVVf8AFKqr/wAJVVb/ABKqqv8ADFVV/wAQqqsI/wAMVVX/ABCqq5qZ/wARqqv/AAtVVf8AEaqr/wALVVX/ABSAAP8AB1VW/wAXVVX/AANVVQi7/AsV+AwH/wAYqquJ/wAVqqr///nVVf8AEqqr///1qqv/ABKqq///9aqrnP//8iqq/wAPVVX//+6qqwi7rwX//+qqq6P//+eAAP8AEtVV///kVVX/AA2qq///5FVV/wANqqv//+HVVv8AByqq///fVVX/AACqqwjSW0MHbYf//+SAAP//9yqrcv//8lVVcv//8lVV///qgAD//+6qq3l2eXZ9c4FwgXCG///i1VWL///gqquL///gqqv/AATVVf//4qqq/wAJqqv//+Sqq/8ACaqr///kqqv/AA3VVf//54AAnf//6lVVCJ3//+pVVf8AFYAA///uKqukfaR9/wAb1VWC/wAeqquHCEO70AfNjcH/ABqqq7X/ADNVVQhdsQX///FVVXn//+7VVv//8Sqr///sVVX///RVVf//7FVV///0VVX//+qAAP//+YAA///oqqv///6qqwgOUcXBFVX4NMH7ife09znB+zn3EAeL/wAOqqv/AAKqq5v/AAVVVf8AEVVV/wAFVVX/ABFVVf8ACFVW/wAP1Vb/AAtVVf8ADlVV/wALVVX/AA5VVf8ADoAAl/8AEaqr/wAJqqv/ABGqq/8ACaqr/wAVgAD/AATVVf8AGVVVi/8AFVVVi/8AE4AA///7Kqv/ABGqq///9lVV/wARqqv///ZVVf8AD9VV///0KquZfQizuwX//9VVVf8AJVVV///QVVb/ABKqq///y1VVi///2VVVi///31VW///5gAD//+VVVX7//+VVVX7//+pVVv//71VV///vVVX//+uqq///71VV///rqqt////pqqr///iqq///56qr///4qqv//+eqq////FVV///ogACL///pVVUI+wksVer7tAcOUdL3WRVSVK1mxMMFof//7qqr/wAYVVX///LVVf8AGqqrgv8AGqqrgv8AG1VV///7gACni6eL/wAbVVX/AASAAP8AGqqrlP8AGqqrlP8AGFVV/wANKquh/wARVVUIxFOtsFLCBbP/ACtVVZ//ADRVVov/AD1VVYv/AD1VVXf/ADRVVmP/ACtVVQjEwmmwUlMFdf8AEVVV///nqqv/AA0qq///5VVVlP//5VVVlP//5Kqr/wAEgABvi2+L///kqqv///uAAP//5VVVgv//5VVVgv//56qr///y1VV1///uqqsIUsNpZsRUBWP//9Sqq3f//8uqqov//8Kqq4v//8Kqq5///8uqqrP//9Sqqwj3MQSL/wAaqquQpJX/ABdVVZX/ABdVVf8ADaqr/wAUVVb/ABFVVf8AEVVV/wARVVX/ABFVVZ//AA2qq/8AFqqrlf8AFqqrlf8AGFVVkKWLpYv/ABhVVYb/ABaqq4H/ABaqq4Gf///yVVX/ABFVVf//7qqrCP8AEVVV///uqqv/AA2qq///66qqlf//6Kqrlf//6KqrkHKL///lVVWL///lVVWGcoH//+iqq4H//+iqq///8lVV///rqqr//+6qq///7qqr///uqqv//+6qq3f///JVVf//6VVVgf//6VVVgf//56qrhnGLCHGL///nqquQ///pVVWV///pVVWVd/8ADaqr///uqqv/ABFVVf//7qqr/wARVVX///JVVf8AFFVWgf8AF1VVgf8AF1VVhqSL/wAaqqsIDlH3d/dIFftIzfdI9z67+z7YB5Sb9zWLi7v7Gov3U/fnSov7V/vs+1T37EeL91P75/sai4tb9zWLlHuLPgX7PlsGDvv49xv5NxVb+/K7BvsqBFv78rsGDlH3zvdDFSW/Bf//7VVV/wAJVVV7/wAKqqv///Kqq5f///Kqq5f///lVVf8AEqqri/8AGVVVi/8ADVVVjv8AC9VWkf8AClVVkf8AClVV/wAH1VWU/wAJqqv/AAeqq/8ACaqr/wAHqqv/AAqAAP8ABoAA/wALVVX/AAVVVf8AC1VV/wAFVVWW/wAEVVb/AAqqq/8AA1VVCNZiBZOH/wAIVVX///rVVf8ACKqr///5qqv/AAiqq///+aqrk///+Kqq/wAHVVX///eqq/8AB1VV///3qquR///21VX/AASqq4H/AASqq4H/AAJVVYCLf4v///VVVf///aqr///11Vb///tVVf//9lVV///7VVX///ZVVYX///cqq///+Kqrgwj///iqq4P///fVVf//+Kqrgv//+VVVgv//+VVV///3Kqv///pVVv//91VV///7VVUI+1H7PRVObQWT///rVVX/AAqqq///7iqr/wANVVV8/wANVVV8mv//84AA/wAQqquB/wAQqquB/wASKqr///iqq/8AE6qr///7VVX/ABOqq///+1VV/wAUKqr///2qq/8AFKqri6OL/wAXKqv/AAOqq/8AFlVV/wAHVVX/ABZVVf8AB1VV/wAT1Vb/AArVVv8AEVVV/wAOVVUI/wARVVX/AA5VVf8ADdVW/wARgAD/AApVVf8AFKqr/wAKVVX/ABSqq/8ABSqr/wAXqqqL/wAaqquL/wAaqquE/wAX1VV9oH2gef8AESqrdf8ADVVV/wAZVVWZ/wAVKqv/ABHVVZz/ABWqq5z/ABWqq/8ACIAA/wAaKqqL/wAeqqsIi/8AHVVV///41VX/ABiqq///8aqrn///8aqrn///7iqq/wARVVX//+qqq/8ADqqr///qqqv/AA6qq3T/AAzVVf//51VVlv//51VVlnT/AAtVVf//6qqr/wALqqv//+qqq/8AC6qr///uKqqY///xqqv/AA5VVf//8aqr/wAOVVX///jVVf8AEdVWi/8AFVVVCIub/wADVVX/AA4qq/8ABqqr/wAMVVX/AAaqq/8ADFVV/wAIqqr/AAoqq/8ACqqrk/8ACqqrk/8ADFVVkZmPmY//AA6qq43/AA9VVYuji/8AFSqr///6VVX/ABJVVf//9Kqr/wASVVX///Sqq/8ADdVWev8ACVVV///pVVUIxa0F///5VVX/ABCqq///9yqr/wAOVVWAl4CX///zVVX/AAmqq///8aqr/wAHVVX///Gqq/8AB1VV///wqqr/AAWAAP//76qr/wADqqv//++qq/8AA6qr///vgAD/AAHVVf//71VVi///6Kqri///6VVV///8qqt1///5VVV1///5VVX//+wqq4H//+5VVf//8qqrCP//7lVV///yqqv///HVVv//76qq///1VVX//+yqq///9VVV///sqqv///qqq///6VVVi3GLbf8AB6qrcv8AD1VVd/8AD1VVd/8AE6qr///uqquj///xVVV9hf//8qqr///5Kqv///NVVf//+FVV///zVVX///hVVf//9Kqr///21VaB///1VVUIgf//9VVV///4Kqt////6VVX///Kqq///+lVV///yqqv///0qq3yL///vVVWL///gqqv/AAdVVf//5iqq/wAOqqv//+uqq/8ADqqr///rqqv/ABJVVf//7lVVoXyhfKN+pYClgKP///Sqq6H///RVVQih///0VVX/ABJVVf//8qqr/wAOqqt8/wAOqqt8/wAHVVX//+0qq4v//+lVVYt7///8gAB9hH+Ef///9tVV///11VX///Sqq///96qr///0qqv///eqq37///nVVf//8VVVh///8VVVh///8VVWif//8VVViwj//+Cqq4v//+VVVf8AB4AAdZp1mv//71VV/wAWgAD///Sqq6kIDnT5IBUhCvdSFiEKDvdy+LD4QxXBBv///Kqr/wAYqquE/wAVqqr///VVVf8AEqqr///1VVX/ABKqq///8lVW/wAP1VX//+9VVZj//+9VVZj//+0qq/8ACdVVdv8ABqqrdv8ABqqr///p1VX/AANVVf//6Kqri2mL///hqqv///pVVf//5VVV///0qqv//+VVVf//9Kqr///pqqt7ef//61VVCHn//+tVVf//8iqr///nqqv///ZVVW////ZVVW////sqq///4aqri///31VVi///3qqr/wAE1VX//+GAAP8ACaqr///kVVX/AAmqq///5FVV/wAN1VX//+fVVp3//+tVVZ3//+tVVf8AFlVVe/8AGqqr///0qqv/ABqqq///9Kqr/wAeVVX///pVVa2LCP8AF1VVi/8AFiqr/wADVVWg/wAGqqug/wAGqqv/ABLVVf8ACdVV/wAQqquY/wAQqquY/wANqqr/AA/VVf8ACqqr/wASqqv/AAqqq/8AEqqrkv8AFaqq/wADVVX/ABiqqwhVBv///VVVff//+yqr///y1VWE///zqquE///zqquCgID///ZVVYD///ZVVX7///hVVnz///pVVXz///pVVf//74AA///9Kqt5i///5qqri///6VVV/wAE1VV3/wAJqqt3/wAJqqv//+8qq5j///JVVf8AEFVVCP//8lVV/wAQVVX///WAAP8AEyqr///4qquh///4qquh///8VVX/ABdVVYv/ABiqq4v/ABiqq/8AA6qr/wAXKqr/AAdVVf8AFaqr/wAHVVX/ABWqq/8ACoAA/wATKqr/AA2qq/8AEKqr/wANqqv/ABCqq/8AENVV/wANKqqf/wAJqquf/wAJqqv/ABaqq/8ABNVV/wAZVVWLCP8AJKqr////VVX/AB1VVf//9VVWof//61VVof//61VVmXOR///kqqsI/JQ+FVoKwRZbCg77hfeO+O4VSwZ5i3n///6qq3n///1VVXn///1VVf//76qrhv//8VVV///4qqv///FVVf//+Kqr///0KquBgv//81VVgv//81VV///7gAB7i///7Kqri///8VVVjv//84AAkf//9aqrkf//9aqr/wAIKqv///eqqv8AClVV///5qqsI/wAKVVX///mqq/8AC9VW///7VVX/AA1VVYj/AA1VVYj/AA2qq////oAAmYv/ABdVVYv/ABRVVo//ABFVVZP/ABFVVZP/AA5VVv8ADVVV/wALVVX/ABKqqwiNBv8AAKqr///3VVX/AABVVYOL///4qquL///4qquM///4qqqN///4qqsIvAb///1VVZv///6AAP8AEIAA////qquc////qquc////1VX/ABEqq4v/ABFVVQjbB4v/ACiqq4H/ABxVVXebd5ttk2OL///IqquL///UVVV+a3EIpWUFmf8AC1VV/wAOKqv/AAiqq/8ADlVVkf8ADlVVkf8AESqrjp+Lm4v/AA0qq////oAA/wAKVVWI/wAKVVWI/wAIVVb///uqq/8ABlVV///6VVX/AAZVVf//+lVV/wAEgACE/wACqqv///eqq/8AAqqr///3qqv/AAGqqv//9oAA/wAAqqv///VVVQhlWBWxhAaL///3VVX///5VVf//9oAA///8qqv///Wqq////Kqr///1qqv///qAAP//9oAA///4VVX///dVVf//+FVV///3VVWB///41Vb///Oqq///+lVV///zqqv///pVVf//8Sqq///9Kqv//+6qq4t5i///74AA/wAD1VV8/wAHqqt8/wAHqqv///iAAP8ACdVVi5cIi/8ACqqr/wAEKqv/AAjVVf8ACFVVkv8ACFVVkv8ACoAA/wAFgAD/AAyqq4//AAyqq4+Z/wACqqv/AA9VVf8AAVVV/wAPVVX/AAFVVf8ADqqr/wAAqquZiwgOKsr3gRVcCqj7XxVcCg7j+LD38xX7bbv3nfySWwcO+4m295wVVfeLwQcO93L30/chFfdQ2Af3FPtQyIv7FPdQBf8ADqqr/wACqqv/AA3VVf8ABCqqmP8ABaqrmP8ABaqr/wALgAD/AAeqqpX/AAmqq5X/AAmqq/8AB9VV/wAL1VX/AAWqq5n/AAWqq5n/AALVVZyLn4v/ACaqq///9aqr/wAdgAD//+tVVf8AFFVV///rVVX/ABRVVf//3VVW/wAKKqv//89VVYsI+zn8QQbB94AV9yXrB/8AC1VVi/8AC4AA///+1VX/AAuqq////aqr/wALqqv///2qq/8AClVV///8KqqU///6qquU///6qqv/AAdVVf//+NVV/wAFqquC/wAFqquC/wAC1VX///SAAIt9i3n///xVVf//8iqr///4qqv///ZVVf//+Kqr///2VVX///aAAP//+Kqr///0VVWGCP//9FVVhv//8tVWiP//8VVViv//8VVViv//8VVW////gAD///FVVYsI+/x0FVoKwRZbCg73kPjyFV0KDvtG91z4RBWfi/8AEqqr/wAD1VX/ABFVVf8AB6qr/wARVVX/AAeqq/8ADyqr/wAKVVWYmJiY/wAKVVX/AA9VVf8AB6qr/wARqqv/AAeqq/8AEaqr/wAD1VX/ABLVVYufi5////wqq/8AEqqr///4VVX/ABFVVf//+FVV/wARVVX///Wqq/8ADyqrfpgIfpj///DVVf8ACiqr///uqqv/AAdVVf//7qqr/wAHVVX//+1VVf8AA6qrd4t3i///7Sqr///8VVX//+5VVf//+Kqr///uVVX///iqq///8Kqr///11VV+fn5+///11VX///DVVf//+Kqr///uqqv///iqq///7qqr///8VVX//+1VVYt3CIt3/wADqqv//+0qq/8AB1VV///uVVX/AAdVVf//7lVV/wAKKqv///Cqq5h+mH7/AA9VVf//9aqr/wARqqv///hVVf8AEaqr///4VVX/ABLVVf///Cqrn4sIuwT//+VVVYv//+lVVv8ACVVV///tVVX/ABKqq///7VVV/wASqqv///aqq/8AFqqqi/8AGqqri/8AGqqr/wAJVVX/ABaqqv8AEqqr/wASqqv/ABKqq/8AEqqr/wAWqqr/AAlVVf8AGqqri/8AGqqri/8AFqqq///2qqv/ABKqq///7VVV/wASqqv//+1VVf8ACVVV///pVVaL///lVVUIi///5VVV///2qqv//+lVVv//7VVV///tVVX//+1VVf//7VVV///pVVb///aqq///5VVViwgO49n4CxVb93j7S7v3S/d+u/t+90tb+0sH+3T7qxVb+Iq7Bw77hKL34BVeCg77hPcT+KwVW5wH/wAOqquL/wAOKqr///6qq/8ADaqr///9VVX/AA2qq////VVVl///+6qr/wAKVVWF/wAKVVWF/wAIVVb///fVVf8ABlVV///1qqv/AAZVVf//9aqr/wADKqv///LVVYt7i4H///1VVf//9lVV///6qqv///aqq///+qqr///2qqv///kqqv//99VV///3qquECP//96qrhP//9lVV///6gACAh4CH///01VWJ///0qquLcYt3/wAFVVV9/wAKqqt9/wAKqqv///VVVf8ADlVV///4qqudCFx5BZdrnf//6Sqro///8lVVo///8lVV/wAcVVX///kqq/8AIKqri/8AFKqri/8AEyqq/wAC1VX/ABGqq/8ABaqr/wARqqv/AAWqq/8AD1VVk5j/AApVVZj/AApVVf8ACiqr/wAMqqv/AAdVVZr/AAdVVZr/AAOqq/8AENVVi/8AEqqrCIv/ABtVVf//96qr/wAXqqv//+9VVZ///+9VVZ90l///4qqrjwiNB/8AF1VV/wAHVVX/ABOAAP8ADIAA/wAPqqv/ABGqq/8AD6qr/wARqqv/AAfVVf8AFIAAi/8AF1VVi/8AEKqr///8qqua///5VVX/AA1VVf//+VVV/wANVVX///aqq/8AC1VWf/8ACVVVf/8ACVVVff8AByqre5B7kHr/AAKAAHmLCP//41VVi3L///kqq///6qqr///yVVX//+qqq///8lVV///uqqr//+6AAP//8qqr///qqqsIsnIF/wAJVVX/AA9VVf8ADCqr/wAMKqualJqU/wARKqv/AASAAP8AE1VVi/8AF1VVi/8AEqqr///6KquZ///0VVWZ///0VVWS///xgACL///uqquLfYj///Qqq4X///ZVVYX///ZVVf//+FVV///4VVb///aqq///+lVVCP//9qqr///6VVX///Wqqv//+9VW///0qqv///1VVf//9Kqr///9VVX///VVVf///qqrgYsIDvc6+VgVXwoOdfhr9xYVYAoOofef99cV/FXH+ab3D/2mx/nW+3cH//+5VVWL///JKqv//+8qq2T//95VVWT//95VVf//7IAA///PgACL///AqquLcf8ABVVV///nqqv/AAqqq///6VVV/wAKqqv//+lVVf8ADoAAd/8AElVV///uqqv/ABJVVf//7qqr/wAV1Vb///JVVf8AGVVVgf8AGVVVgf8AG1VWhv8AHVVViwgO+9Ld99IVIQoO9xBLFbrLZYtMM5t8BZn/AAVVVf8ADqqr/wACqqv/AA9VVYv/AA1VVYv/AAyqq////NVVl///+aqrl///+aqrkf//9Sqqi///8Kqri4OJ///5VVWH///6qquH///6qqv///rVVf//+6qq///5qqv///yqq///+aqr///8qqv///kqqv///YAA///4qqv///5VVQj///iqq////lVVhP///yqr///5VVWL///jVVWL///mqqv/AAWqq3X/AAtVVQh9awWpff8AH6qrhP8AIVVVi/8ADKqri5j/AAGqq/8ADVVV/wADVVX/AA1VVf8AA1VV/wAMKquQlv8ABqqrlv8ABqqr/wAI1VX/AAiqqv8ABqqr/wAKqqv/AAaqq/8ACqqr/wADVVWYi/8AD1VVi6P///eAAJ16lwh6l///7NVVkf//6qqri3+L///1qqv///2qq///91VV///7VVUIDvuE90X5KBVhCg77VK340BWLdf8AA6qrd/8AB1VVef8AB1VVef8ACqqr///wgACZfpl+/wAQqqv///XVVf8AE1VV///4qqv/ABNVVf//+Kqr/wAVqqv///xVVaOL/wAWqquL/wAVKqr/AAOqq/8AE6qr/wAHVVX/ABOqq/8AB1VVnP8ACiqr/wAOVVWYCP8ADlVVmP8ACyqr/wAPgACTnZOdj5+LoYv/ABaqq4f/ABRVVYOdg53///TVVf8AD4AA///xqquY///xqquYepX//+xVVZL//+xVVZL//+rVVv8AA4AA///pVVWLCHOL///qVVX///xVVf//7Kqr///4qqv//+yqq///+Kqr///vVVX///XVVX1+fX7///VVVf//8IAA///4qqt5///4qqt5///8VVV3i3UIuxaLmf8AAqqr/wANVVX/AAVVVf8ADKqr/wAFVVX/AAyqq/8AB6qr/wALVVWVlZWV/wALqqv/AAfVVf8ADVVV/wAFqqv/AA1VVf8ABaqr/wAOqqv/AALVVZuLrYv/ABsqq///9dVV/wAUVVX//+uqq/8AFFVV///rqqv/AAoqq///5tVVi20Ii///8VVV///9Kqv///JVVv//+lVV///zVVX///pVVf//81VV///4Kqv///TVVoH///ZVVYH///ZVVf//9Cqr///4VVb///JVVf//+lVV///yVVX///pVVf//8Sqr///9Kqt7i3uL///xKqv/AALVVf//8lVV/wAFqqv///JVVf8ABaqr///0VVb/AAfVVf//9lVVlQj///ZVVZX///iAAP8AC1VV///6qqv/AAyqq///+qqr/wAMqqv///1VVf8ADVVVi5kIDir3kPeBFWIK98P3XxViCg73XPcm+SgVYQr4kvcoFSIKkvz4FWMK91L3jhVkCg73XPce+SgVYQr4kfcoFSIK+yr9MxVeCg73XPcN+KwVW5wH/wAOqquL/wAOKqr///6qq/8ADaqr///9VVX/AA2qq////VVVl///+6qr/wAKVVWF/wAKVVWF/wAIVVb///fVVf8ABlVV///1qqv/AAZVVf//9aqr/wADKqv///LVVYt7i4H///1VVf//9lVV///6qqv///aqq///+qqr///2qqv///kqqv//99VV///3qquECP//96qrhP//9lVV///6gACAh4CH///01VWJ///0qquLcYt3/wAFVVV9/wAKqqt9/wAKqqv///VVVf8ADlVV///4qqudCFt5Bf8ADKqra/8AElVV///pKquj///yVVWj///yVVX/ABxVVf//+Sqr/wAgqquL/wAUqquL/wATKqr/AALVVf8AEaqr/wAFqqv/ABGqq/8ABaqr/wAPVVWTmP8AClVVmP8AClVV/wAKKqv/AAyqq/8AB1VVmv8AB1VVmv8AA6qr/wAQ1VWL/wASqqsIi/8AG1VV///3qqv/ABeqq///71VVn///71VVn3SX///iqquPCI0H/wAXVVX/AAdVVf8AE4AA/wAMgAD/AA+qq/8AEaqr/wAPqqv/ABGqq/8AB9VV/wAUgACL/wAXVVWL/wAQqqv///yqq5r///lVVf8ADVVV///5VVX/AA1VVf//9qqr/wALVVZ//wAJVVV//wAJVVV9/wAHKqt7kHuQev8AAoAAeYsI///jVVWLcv//+Sqr///qqqv///JVVf//6qqr///yVVX//+6qqv//7oAA///yqqv//+qqqwiycgX/AAlVVf8AD1VV/wAMKqv/AAwqq5qUmpT/ABEqq/8ABIAA/wATVVWL/wAXVVWL/wASqqv///oqq5n///RVVZn///RVVZL///GAAIv//+6qq4t9iP//9FVVhf//9qqrhf//9qqr///4VVX///iAAP//9qqr///6VVUI///2qqv///pVVf//9aqq///71Vb///Sqq////VVV///0qqv///1VVf//9VVV///+VVaB////VVUI+HL3YhUiCm/8+BVjCvdQ944VZAoO+wf3l/dsFd9PSweL///oqquH///sKqqD///vqquD///vqquB///xVVV/fn9+fv//81VVff//86qrff//86qrfv//8oAAf///8VVVf///8VVVgXqD///sqquD///sqquH///oVVWLbwiL///kqqv/AASqq///56qq/wAJVVX//+qqq/8ACVVV///qqqv/AAzVVnn/ABBVVf//8VVV/wAQVVX///FVVf8AE4AA///01Vb/ABaqq///+FVV/wAWqqv///hVVf8AGFVV///8Kquli72L/wAqqqv/AA4qq/8AI1VV/wAcVVX/ACNVVf8AHFVV/wAWVVb/ACfVVv8ACVVV/wAzVVUISpMF///4qqv//91VVf//8Sqqb///6aqr///qqqv//+mqq///6qqr///jKqr///VVVf//3Kqri///21VVi///41VW/wALKqv//+tVVf8AFlVV///rVVX/ABZVVf//9aqr/wAdKquLr4uh/wAD1VWe/wAHqqub/wAHqqub/wAJqqr/AA7VVf8AC6qr/wANqqsI/wALqqv/AA2qq/8ADIAA/wAM1VX/AA1VVZf/AA1VVZf/AAyAAP8ADKqr/wALqqv/AA1VVf8AC6qr/wANVVX/AAmqqpr/AAeqq/8AEKqr/wAHqqv/ABCqq/8AA9VV/wATVVWLoQic93gVWQoO9vfO+VgVJQpmQxUmCvdx+IwVPQoO9vfO+VgVJQpmQxUmCvdl+RwVXwoO9vfO+VgVJQpmQxUmCvcU+RwVZQoO9vfO+VgVJQpmQxUmCpL4nRVmCg729875WBUlCmZDFSYKn/jkFSEK91IWIQoO9vfO+VgVJQpmQxUmCtH44RVnCvcqFmgKDvfw+Fz5WBX8Yf1Y0Yv3D/dQ98yLi/tQ+AOLi8f7wYuL96j3qIuLx/uoi4v3kPe5i4vHBfv7TxX8JPulB/eZ+CQFDvcS+Tz3AxVVtAX///NVVf//7Kqr///xVVb//++AAP//71VV///yVVX//+9VVf//8lVV///ugAD///Sqq///7aqrgv//7aqrgv//7Sqq///5VVX//+yqq///+6qr///sqqv///uqq///7VVV///91VV5i12L///WgACTZptmm///4IAAoXGnCHGnd6x9sX2xhLSLt4u3krSZsZmxn6ylp6Wn/wAfgAChsJuwm/8AKYAAk7mLCK+L/wAjKqv///hVVf8AIlVV///wqqv/ACJVVf//8Kqr/wAcKqv//+eqqqH//96qqwjBuAX//+Cqq7P//9uAAP8AHIAA///WVVWc///WVVWc///TKqv/AAiAAFuLVYv//86AAP//9qqrXv//7VVVXv//7VVV///ZgAD//+Yqq2tqa2py///Y1VV5///Sqqt5///SqquC///OVVWLVQiL///PVVX/AAdVVf//0qqr/wAOqqth/wAOqqth/wAUqqpm/wAaqqtr/wAaqqtr/wAgKqr//+WAAP8AJaqrdv8AJaqrdv8AKYAA///ygAD/AC1VVYUIVUCbfAWZ/wAFVVX/AA6qq/8AAqqr/wAPVVWL/wANVVWL/wAMqqv///zVVZf///mqq5f///mqq5H///Uqqov///Cqq4uDif//+VVVh///+qqrh///+qqr///61VX///uqqv//+aqr///8qqv///mqq////Kqr///5Kqr///2AAP//+Kqr///+VVUI///4qqv///5VVYT///8qq///+VVVi///41VVi///5qqr/wAFqqt1/wALVVUIfWsFqX3/AB+qq4T/ACFVVYv/AAyqq4uY/wABqqv/AA1VVf8AA1VV/wANVVX/AANVVf8ADCqrkJb/AAaqq5b/AAaqq/8ACNVV/wAIqqr/AAaqq/8ACqqr/wAGqqv/AAqqq/8AA1VVmIv/AA9VVYuj///3gACdepcIepf//+zVVZH//+qqq4t/i///9aqr///9qqv///dVVf//+1VVCImNrboF/wAEqqv///9VVf8ABIAA////qqv/AARVVYsI/wANgAAGv4v/ADBVVZX/ACyqq5//ACyqq5//ACdVVaytuQgOmuz5WBUqCvtDtxU9Cg6a7PlYFSoK+0/3UBVfCg6a7PlYFSoK+6D3UBVlCg6a7PlYFSoK/Az3GBUhCvdSFiEKDvvS7PlYFS0KpLcVPQoO+9Ls+VgVLQqY91AVXwoO+9Ls+VgVLQpH91AVZQoO+9Ls+VgVLQr7RPcYFSEK91IWIQoO9zf3LvggFWkK+9hVFWoKDvdc7PlYFTEKvsgVZgoO95S+9/YVMgrNFjMK9/r4IhU9Cg73lL739hUyCs0WMwr37viyFV8KDveUvvf2FTIKzRYzCved+LIVZQoO95S+9/YVMgrNFjMK9yT4MxVmCg73lL739hUyCs0WMwr3Mfh6FSEK91IWIQoO4/fi9+UV+1r3Wmlp91r7Wvtc+1quafdb91v3Wftbra37Wvda91v3WmqtBQ73lPck7BU/Oa5s1twF/wAfVVX//+VVVf8AI6qr///rgACz///xqquz///xqqu3///41VW7i8GL/wAxgAD/AAkqq7j/ABJVVbj/ABJVVf8AJoAA/wAZqqurrKuspP8AJ1VVnf8ALaqrnf8ALaqrlP8AMdVVi8EIi/8ANVVV///3gAD/ADDVVnr/ACxVVXr/ACxVVf//59VV/wAmgAD//+Cqq/8AIKqrCNbcaapBOgX//+Cqq/8AGVVV///cqqr/ABOAAP//2Kqr/wANqqv//9iqq/8ADaqrYP8ABtVV///RVVWLVYv//86AAP//9qqrXv//7VVVXv//7VVV///ZgAD//+Yqq2tqa2py///Y1VV5///Sqqt5///SqquC///OVVWLVQiLV5P//9BVVZv//9Sqq5v//9Sqq6Jlqf//31VVCPhl+IwV/Dn8XQX//9Cqq/8AN1VV///oVVXRi/8AVKqri7eStJmxmbGfrKWnpaf/AB+AAKGwm7Cb/wApgACTuYv/ACaqq4v/ACNVVf//+lVVq///9KqrCKv///Sqq/8AHKqre/8AGVVV///rVVUI/Bn8fhX4OvheBaP//+Sqq/8AEoAAa5j//9tVVZj//9tVVf8ABoAA///YVVaL///VVVWLX4RifWV9ZXdqcW9xb///4IAAdWZ7Znv//9aAAINdiwhji///24AAkWqXapf//+LVVZz//+aqq6EIDvX47PejFTkK+1z4dRU9Cg71+Oz3oxU5Cvto+QUVXwoO9fjs96MVOQr7ufkFFWUKDvX47PejFTkK/CX4zRUhCvdSFiEKDof3kvfFFTsK9+f3UBVfCg6H7PlYFf1YzfdI9y0Hp4v/ABrVVf8AA6qr/wAZqqv/AAdVVf8AGaqr/wAHVVX/ABaqqv8ACyqr/wATqqua/wATqqua/wAPqqr/ABMqq/8AC6qr/wAXVVX/AAuqq/8AF1VV/wAF1VX/ABuqq4uri/8AJKqr///41VX/AB6AAP//8aqr/wAYVVX///Gqq/8AGFVV///tqqr/ABMqq///6aqrmQj//+mqq5n//+dVVf8ACdVVcP8ABaqrcP8ABaqr///mKqv/AALVVf//51VViwj7H/cwBoz8aBU0Cg6a9574XhVVoAf/ABiqq4v/ABeqqv///FVV/wAWqqv///iqq/8AFqqr///4qqv/ABQqqv//9NVV/wARqqt8/wARqqt8mf//7NVV/wAKVVX//+iqq/8AClVV///oqqv/AAUqq///5Kqqi///4Kqri3H///uqq///6FVV///3VVX//+qqq///91VV///qqqv///Oqq///7dVVe3wIe3z//+zVVf//9IAA///pqquD///pqquD///ngACH///lVVWL///2qquLgv8AAKqr///3VVX/AAFVVf//91VV/wABVVX///dVVv8AAlVW///3VVX/AANVVQhRB5OJ/wAH1VX///6qq/8AB6qr////VVX/AAeqq////1VV/wAH1VX///+qq5OLr4uskKmVqZWl/wAOqquh/wATVVWh/wATVVX/ABEqq/8AF9VW/wAMVVX/ABxVVf8ADFVV/wAcVVX/AAYqq/8AICqri68Ii/8AJqqr///7Kqv/ACAqqv//9lVV/wAZqqv///ZVVf8AGaqr///zgAD/ABTVVf//8Kqrm///8Kqrm3qX///tVVWT///tVVWT///tVVb/AAWqq///7VVV/wADVVUIjQep/wAJVVWj/wASKqudpp2mlP8AISqri/8AJ1VVi/8AHKqr///7Kqv/ABmAAP//9lVV/wAWVVX///ZVVf8AFlVVfv8AEqqr///vqqua///vqqua///sgAD/AAuAAP//6VVVk///6VVVk///56qrj3GLCGmL///h1VX///oqq///5aqr///0VVX//+Wqq///9FVV///p1VX//+/VVnn//+tVVXn//+tVVf//8oAA///nVVaC///jVVWC///jVVX///uAAP//4Kqri2kI/KrH+KEHi/8AGVVV/wACgAD/ABgqq5CikKL/AAgqq/8AFCqr/wALVVX/ABFVVf8AC1VV/wARVVWa/wANqqv/ABKqq5X/ABKqq5WikP8AG1VVi7GL/wAfKqv///VVVf8AGFVV///qqqv/ABhVVf//6qqr/wAMKqv//+BVVYthCItj///zgAD//+CAAHJ0cnT//9+AAP//9IAAY4sIDlD4S/dWFT4K+wyxFT8KivfgFT0KDlD4S/dWFT4K+wyxFT8KfvhwFV8KDlD4S/dWFT4K+wyxFT8KLfhwFWUKDlD4S/dWFT4K+wyxFT8K+2v38RVrCg5Q+Ev3VhU+CvsMsRU/Cvte+DgVIQr3UhYhCg5Q+Ev3VhU+CvsMsRU/Cvss+DUVbAr3KhZoCg73pvgc96sVgvsHB///0Kqri///2dVV///7Kqtu///2VVVu///2VVX//+mAAH97///xqqt7///xqqv///Uqq///8FVV///6VVV6///6VVV6///9Kqv///Aqq4v///FVVYv//+dVVf8ABNVVdv8ACaqr///uqqv/AAmqq///7qqr/wAMgAD///HVVf8AD1VVgAj/AA9VVYD/ABFVVoP/ABNVVYb/ABNVVYb/ABOqq////YAAn4u3i7P/AAiqq6//ABFVVa//ABFVVf8AG6qr/wAdVVb/ABNVVf8AKVVV/wAQqqtj/wAYVVVuq3mref8AJFVVgv8AKKqriwj/ACqqq4v/ACPVVf8AByqrqP8ADlVVqP8ADlVV/wAbgAD/ABgqq6WtCFytBf//8VVV///oqqv//+1VVv//7dVV///pVVV+///pVVV+///mVVb///mAAP//41VVi///5Kqri///6Cqq/wAEqqv//+uqq/8ACVVV///rqqv/AAlVVf//7yqq/wAMgAD///Kqq/8AD6qr///yqqv/AA+qq4H/ABJVVf//+VVVoP//+VVVoP///VVW/wAWgAD/AAFVVaMI9/iuBov/ACdVVf//+lVV/wAh1Vb///Sqq/8AHFVV///0qqv/ABxVVf//8NVV/wAXKqt4nXid///p1VX/AA0qq///5qqr/wAIVVX//+aqq/8ACFVV///lVVX/AAQqq2+Le4v//+/VVYn//++qq4f//++qq4f///BVVYV8gwh8g///8iqrgf//81VVf///81VVf///9VVWff//91VVe///7qqr/wAkqqv//+gqqv8AGSqq///hqqv/AA2qq///4aqr/wANqqv//9vVVf8ABtVVYYtti///4Kqr///6gAD//99VVYD//99VVYD//+Sqq///79VVdf//6qqrCK5iBf8AKKqr/wAiqqu6/wARVVX/ADVVVYu9i/8AJCqr///z1VX/ABZVVf//56qr/wAWVVX//+eqq/8ACyqr///dKqqL///SqqsI+wlMFfcJBotz///81VX//+mAAP//+aqrdv//+aqrdv//9dVV///tqqt9///wVVV9///wVVV5///zgAB1///2qqt1///2qqv//+Wqq///+1VV///hVVWL///zVVWL///zgAD/AAHVVf//86qr/wADqqv///Oqq/8AA6qr///01VX/AAVVVYGSCIGS///31VWU///5qquW///5qquW///81VX/AAyAAIuZi/8ABqqr/wAB1VX/AAiAAP8AA6qr/wAKVVX/AAOqq/8AClVV/wAHgAD/AAmqq/8AC1VVlP8AC1VVlP8AECqr/wAH1VWg/wAGqqug/wAGqqv/ABwqq/8AA1VV/wAjVVWLCPhtwRVtCg4q+GfPFV2xBf//8Kqr///sqqv//+3VVf//8IAAdv//9FVVdv//9FVV///o1VX///oqq///5qqri2+L///mqquQ///pVVWV///pVVWV///sqqv/AA2AAHuce5z///PVVZ////eqq6L///eqq6L///vVVf8AGIAAi6UIi6X/AAQqq/8AGIAA/wAIVVWi/wAIVVWi/wAMKqufm5ybnP8AE1VV/wANgAD/ABaqq5X/ABaqq5X/ABlVVZCni6OL/wAWVVX///qAAP8AFKqrgP8AFKqrgJ7///DVVf8AEVVV///sqqsIu68F///pVVX/ABlVVf//5iqr/wATqqtumW6Z///ggACSaYv//9yqq4v//99VVYVtf21////mVVX//+8qq///6qqr///qVVX//+qqq///6lVV///vVVX//+ZVVn///+JVVX///+JVVYX//9+AAIv//9yqqwiL///gqqv/AASqq///4tVV/wAJVVVw/wAJVVVw/wANKqv//+gqq5z//+tVVZz//+tVVf8AFIAA///u1Vaj///yVVWj///yVVX/ABpVVf//9tVW/wAcqqv///tVVQhSOpt8BZn/AAVVVf8ADqqr/wACqqv/AA9VVYv/AA1VVYv/AAyqq////NVVl///+aqrl///+aqrkf//9Sqqi///8Kqri4OJ///5VVWH///6qquH///6qqv///rVVf//+6qq///5qqv///yqq///+aqr///8qqv///kqqv///YAA///4qqv///5VVQj///iqq////lVVhP///yqr///5VVWL///jVVWL///mqqv/AAWqq3X/AAtVVQh9awWpff8AH6qrhP8AIVVVi/8ADKqri5j/AAGqq/8ADVVV/wADVVX/AA1VVf8AA1VV/wAMKquQlv8ABqqrlv8ABqqr/wAI1VX/AAiqqv8ABqqr/wAKqqv/AAaqq/8ACqqr/wADVVWYi/8AD1VVi6P///eAAJ16lwh6l///7NVVkf//6qqri3+L///1qqv///2qq///91VV///7VVUIiY2xwAX/AANVVf///1VV/wAEqqv///+qq5GL/wAhVVWLqv8ABoAA/wAcqquY/wAcqquY/wAZqqr/ABQqq/8AFqqr/wAbVVUIDnX4fOIVRApd90sVRQoh97oVPQoOdfh84hVECl33SxVFCvsK+EoVXwoOdfh84hVECl33SxVFCvtb+EoVZQoOdfh84hVECl33SxVFCvvH+BIVIQr3UhYhCg7l+GIVSgqn8RU9Cg7l+GIVSgqb94oVXwoO5fhiFUoKSveKFWUKDuX4YhVKCvtB91IVIQr3UhYhCg6b95H5KBUjU6pq9sQF/wAYqqt1/wAaqqr//+Mqq/8AHKqr///cVVX/AByqq///3FVVpv//19VW/wAZVVX//9NVVQiJiQX//+qqq/8AE1VV///o1VWZcv8ACKqrcv8ACKqr///lgAD/AARVVW+L///cqquL///fVVWFbX9tf///5lVV///vKqv//+qqq///6lVV///qqqv//+pVVf//71VV///mVVZ////iVVV////iVVWF///fgACL///cqqsIi///3Kqrkf//34AAl///4lVVl///4lVV/wAQqqv//+ZVVv8AFVVV///qVVX/ABVVVf//6lVV/wAZqqv//+8qq6l/qX//ACCqq4X/ACNVVYv/ACNVVYv/ACCAAP8ABiqr/wAdqqv/AAxVVf8AHaqr/wAMVVX/ABmqqv8AEaqr/wAVqquiCP8AFaqrov8AENVV/wAcKquX/wAhVVWX/wAhVVWR/wAlVVaL/wApVVWLv///+FVV/wAvqqv///Cqq/8AK1VV///wqqv/ACtVVf//7aqq/wAmgAD//+qqq/8AIaqr///qqqv/ACGqq3X/ABzVVf//6VVVo///6VVVo///7VVW/wASqqv///FVVf8ADVVVCPXEZ6kjUwX///Kqq/8ADVVV///wqqr/AA3VVv//7qqr/wAOVVX//+6qq/8ADlVV///vqqr/AAzVVv//8Kqr/wALVVUIV20F/wAMqqv///aqq5r///Qqqv8AEVVV///xqqv/ABFVVf//8aqr/wAQVVb///HVVf8AD1VVfQj7H/xBFVEKDnXb9+AVTwq1940VawoOm8H3exVQCscWUQr3hffhFT0KDpvB93sVUArHFlEK93n4cRVfCg6bwfd7FVAKxxZRCvco+HEVZQoOm8H3exVQCscWUQqm9/IVawoOm8H3exVQCscWUQqz+DkVIQr3UhYhCg7j2ffbFVv4krsH+8b3FhWLfZB/lYGVgZeGmYuZi5eQlZWVlZCXi5mLmYaXgZWBlX+QfYsIfYt/hoGBgYGGf4t9CPvIBIt9kH+VgZWBl4aZi5mLl5CVlZWVkJeLmYuZhpeBlYGVf5B9iwh9////VVV/hoH///aqq4H///aqq4Z/i///8VVVCA6b9wHUFUVEq27P0AWf///uqqv/ABdVVf//8qqq/wAaqqv///aqq/8AGqqr///2qqv/AB1VVf//+1VVq4v/ACNVVYv/ACCAAJH/AB2qq5f/AB2qq5f/ABmqqv8AENVV/wAVqqv/ABWqq/8AFaqr/wAVqqv/ABDVVf8AGaqql/8AHaqrl/8AHaqrkf8AIIAAi/8AI1VVCIur///7Kqv/AB2AAP//9lVVpv//9lVVpv//8iqr/wAX1VV5/wAUqqsI0tJrqEZFBf//61VV/wAQqqv//+iAAJj//+Wqq/8ACVVV///lqqv/AAlVVf//4yqq/wAEqqv//+Cqq4v//9yqq4v//99VVYVtf21////mVVX//+8qq///6qqr///qVVX//+qqq///6lVV///vVVX//+ZVVn///+JVVX///+JVVYX//9+AAIv//9yqqwiL///BVVX/ABJVVf//y1VW/wAkqqv//9VVVQj3xPfHFfub+50Ff/8AD1VVgv8AEaqrhZ+Fn4igi6GLpf8ABCqr/wAYgAD/AAhVVaL/AAhVVaL/AAwqq5+bnJuc/wATVVX/AA2AAP8AFqqrlf8AFqqrlf8AGVVVkKeLCP8AF1VVi/8AFVVW///8gAD/ABNVVYT/ABNVVYT/ABFVVv//9iqr/wAPVVX///NVVQj7ffu9Ffeb954Fl///8Kqr/wAJKqv//+5VVf8ABlVVd/8ABlVVd/8AAyqr///qVVWL///oqquLcf//+9VV///ngAD///eqq3T///eqq3T///PVVXd7ent6///sqqv///KAAP//6VVVgf//6VVVgf//5qqrhm+LCHOL///qKqv/AAOAAP//7FVVkv//7FVVkv//7tVW/wAKKqv///FVVf8ADVVVCA51+Gv3FhVVCvsb+EYVPQoOdfhr9xYVVQr7J/jWFV8KDnX4a/cWFVUK+3j41hVlCg51+Gv3FhVVCvvk+J4VIQr3UhYhCg77B/dm+yMVVwrP+ecVXwoOrM75iBX+bMf3yY0H/wAJVVV7/wALqqv///Iqq5n///RVVZn///RVVf8ADyqr///2VVb/ABBVVf//+FVV/wAQVVX///hVVf8AESqr///6VVad///8VVWd///8VVX/ABGqq////iqr/wARVVWL/wAjVVWL/wAggACR/wAdqquX/wAdqquX/wAZqqr/ABDVVf8AFaqr/wAVqqsI/wAVqqv/ABWqq/8AENVV/wAZqqqX/wAdqquX/wAdqquR/wAggACL/wAjVVWL/wAjVVWF/wAggAB//wAdqqt//wAdqqv//+8qq/8AGaqq///qVVX/ABWqq///6lVV/wAVqqv//+ZVVv8AENVV///iVVWX///iVVWX///fgACR///cqquLCP//7qqri///7lVV///+Kqt5///8VVV5///8VVX//+7VVf//+lVW///vqqv///hVVf//76qr///4VVX///DVVf//9lVWff//9FVVff//9FVV///0VVX///Iqq///9qqrewiJ+AsGhfyhFUAKDvsH92b7IxVXCvsN+a8VIQr3UhYhCg729875WBUlCmZDFSYK9734uxVdCg5Q+Ev3VhU+CvsMsRU/CuD4ChVdCg729875WBUlCmZDFSYK3fkNFW4KDlD4S/dWFT4K+wyxFT8K+yn4cBVvCg72+Uv7SxV4sQX///tVVf//+qqr///5Kqv///rVVYKGgob///SAAP///YAAfYv//+NVVYv///Gqq/8AD6qri/8AH1VVi/8ADKqr/wACgAD/AAxVVZCXkJf/AAYqq/8AC1VV/wAHVVX/AAqqq/8AB1VV/wAKqqv/AAfVVv8ACaqq/wAIVVX/AAiqqwj/AAhVVf8ACKqr/wAH1VaS/wAHVVX/AAVVVQioi/u++VhHi/vJ/VjQi9v3UPgLi9j7UAWBg///9aqrgv//9VVVgf//9VVVgf//9oAA///1gAD///eqq4D///eqq4D///kqqv//9Cqr///6qqv///NVVf//+qqr///zVVX///1VVf//8qqri32L///mqqv/AAiqq3f/ABFVVf//8VVV/wARVVX///FVVaH///iqq/8AGqqriwj/ABKqq4v/ABAqqv8AAyqr/wANqqv/AAZVVf8ADaqr/wAGVVX/AAwqqv8AB9VW/wAKqqv/AAlVVQj78vnHFSYKDlD4dftLFXixBf//+1VV///6qqv///kqq///+tVVgoaChv//9IAA///9gAB9i///41VVi///8aqr/wAPqquL/wAfVVWL/wAMqqv/AAKAAP8ADFVVkJeQl/8ABiqr/wALVVX/AAdVVf8ACqqr/wAHVVX/AAqqq/8AB9VW/wAJqqr/AAhVVf8ACKqrCP8ACFVV/wAIqqv/AAfVVpL/AAdVVf8ABVVVCJYGif8ADVVV///+VVX/AA1VVv///qqr/wANVVX///6qq/8ADVVV////Kqr/AA5VVv///6qr/wAPVVX///+qq/8AD1VV////qqr/ABCqq////6qrnf///6qrnf///9VV/wAUVVWL/wAWqqsI9wUHi/8AOqqr///vVVX/ACqAAP//3qqr/wAaVVX//96qq/8AGlVV///TVVX/AA0qq1OLbYv//+Cqq///+oAA///fVVWA///fVVWA///kqqv//+/VVXX//+qqqwiuYgX/ACiqq/8AIqqruv8AEVVV/wA1VVWLsYv/AB8qq///91VV/wAYVVX//+6qq/8AGFVV///uqqv/AAwqq///41VVi2MIb0UH///oqquL///lqqr///6AAP//4qqriP//4qqriP//5Cqq///5VVX//+Wqq///9aqr///lqqv///Wqq///6dVV///wgAB5///rVVV5///rVVWCb4v//9yqq4v//+dVVf8ABNVVdv8ACaqr///uqqv/AAmqq///7qqr/wAMgAD///HVVf8AD1VVgAj/AA9VVYD/ABFVVoP/ABNVVYb/ABNVVYb/ABOqq////YAAn4uzi/8AIKqrkv8AGVVVmf8AGVVVmf8AFVVWof8AEVVVqQiNBov//+Sqq41yj///6VVVgYP///Wqq4L///VVVYH///VVVYH///aAAP//9YAA///3qquA///3qquA///5Kqr///Qqq///+qqr///zVVX///qqq///81VV///9VVX///Kqq4t9i///5qqr/wAIqqt3/wARVVX///FVVQj/ABFVVf//8VVVof//+Kqr/wAaqquL/wASqquL/wAQKqr/AAMqq/8ADaqr/wAGVVX/AA2qq/8ABlVV/wAMKqr/AAfVVv8ACqqr/wAJVVUI+zb4MxU/Cg73Evk89wMVJwr7f/mlFV8KDir4Z88VQQr7EvkUFV8KDvcS+Tz3AxUnCvu++aUVZQoOKvhnzxVBCvtk+RQVZQoO9xL5PPcDFScK+8j5bRUhCg4q+GfPFUEK+2743BUhCg73Evk89wMVJwr7evkVFXAKDir4Z88VQQr7IPiEFXAKDvc34/lYFSgK+y39HBUpCtH5SBVwCg6s+HjcFUIKk/cqFUMK90b4cRVxCg73N/cu+CAVaQr72FUVagoOrPh43BU6x/jZ08BD9w5P+w77Nlb3NvtciQf///aqq5v///RVVf8ADdVVff8AC6qrff8AC6qr///w1VX/AAmqqv//76qr/wAHqqv//++qq/8AB6qr///u1VX/AAWqqnn/AAOqq3n/AAOqq///7lVV/wAB1VX//+6qq4v//9yqq4v//99VVYVtf21////mVVX//+8qq///6qqr///qVVUI///qqqv//+pVVf//71VV///mVVZ////iVVV////iVVWF///fgACL///cqquL///cqquR///fgACX///iVVWX///iVVX/ABCqq///5lVW/wAVVVX//+pVVf8AFVVV///qVVX/ABmqq///7yqrqX+pf/8AIKqrhf8AI1VViwj/ABFVVYv/ABGqq/8AAdVVnf8AA6qrnf8AA6qr/wARKqv/AAWqqv8AEFVV/wAHqqv/ABBVVf8AB6qr/wAPKqv/AAmqqpn/AAuqq5n/AAuqq/8AC6qr/wAN1VX/AAlVVZsIk/cqFYtxhv//54AAgXSBdP//8lVVd///7qqrev//7qqrev//64AA///ygAD//+hVVYH//+hVVYH//+bVVob//+VVVYtvi///5qqrkP//6VVVlf//6VVVlf//7Kqr/wANgAB7nAh7nP//89VVn///96qrov//96qrov//+9VV/wAYgACLpYul/wAEKqv/ABiAAP8ACFVVov8ACFVVov8ADCqrn5ucm5z/ABNVVf8ADYAA/wAWqquV/wAWqquV/wAZVVWQp4sI/wAaqquL/wAZKqqG/wAXqquB/wAXqquB/wAUgAD///KAAP8AEVVVev8AEVVVev8ADaqrd5V0lXSQ///ngACLcQgOmuz5WBUqCj7mFV0KDnX4fOIVRApd90sVRQp79+QVXQoOmuz5WBUqCvvL90EVbgoOdfh84hVECl33SxVFCvuO+EoVbwoOmuz5WBUqCvuS9xgVIQoOdfh84hVECl33SxVFCvtV+BIVIQoOmuz5WBX9WPf0B4GD///1qquC///1VVWB///1VVWB///2gAD///WAAP//96qrgP//96qrgP//+Sqq///0Kqv///qqq///81VV///6qqv///NVVf///VVV///yqquLfYv//+aqq/8ACKqrd/8AEVVV///xVVX/ABFVVf//8VVVof//+Kqr/wAaqquLCP8AEqqri/8AECqq/wADKqv/AA2qq/8ABlVV/wANqqv/AAZVVf8ADCqq/wAH1Vb/AAqqq/8ACVVVCHixBf//+1VV///6qqv///kqq///+tVVgoaChv//9IAA///9gAB9i///41VVi///8aqr/wAPqquL/wAfVVWL/wAMqqv/AAKAAP8ADFVVkJeQl/8ABiqr/wALVVX/AAdVVf8ACqqr/wAHVVX/AAqqq/8AB9VW/wAJqqr/AAhVVf8ACKqrCP8ACFVV/wAIqqv/AAfVVpL/AAdVVf8ABVVVCL/H/BP3qPfsx/vs95D4A8cGDnX4GPtLFXixBf//+1VV///6qqv///kqq///+tVVgoaChv//9IAA///9gAB9i///41VVi///8aqr/wAPqquL/wAfVVWL/wAWqqv/AAbVVf8AFVVV/wANqquf/wANqquf/wAN1VWbmZer/wAEqquolaX/AA9VVQil/wAPVVX/ABaqq6H/ABNVVf8AHKqrCF+wBYP///NVVf//9lVV///0gAD///Sqq///9aqr///0qqv///Wqq///84AA///3VVX///JVVYT///JVVYT///Gqq///+qqrfP///FVVfP///FVV///w1VX///4qq///8Kqri///3Kqri///4yqq/wAGqqv//+mqq/8ADVVV///pqqv/AA1VVf//7iqqm///8qqr/wASqqsI///yqqv/ABKqq///9tVV/wATKqqG/wATqquG/wATqqv///2AAP8AECqqi/8ADKqrCPgYtQaL/wAaqqv///tVVf8AGlVV///2qqul///2qqul///yKqr/ABcqq///7aqr/wAUVVX//+2qq/8AFFVV///pVVX/ABBVVnD/AAxVVXD/AAxVVf//4NVV/wAGKqv//9yqq4tpi2z///nVVW////Oqq2////Oqq///56qrev//61VV///qVVUI///rVVX//+pVVXv//+aAAP//9Kqr///iqqv///Sqq///4qqr///6VVVri///3VVVi///3Kqr/wAFgAD//9+AAJb//+JVVZb//+JVVf8AD4AA///mgACf///qqquf///qqqv/ABgqq///7yqq/wAcVVX///Oqq/8AHFVV///zqqv/AB+AAP//+YAA/wAiqqv///9VVQj//+1VVf//8Kqr///vKqt5fP//61VVfP//61VV///4gAD//+lVVov//+dVVYv//+aqq/8ACKqrd/8AEVVV///xVVX/ABFVVf//8VVVof//+Kqr/wAaqquL/wASqquL/wAQKqr/AAMqq/8ADaqr/wAGVVX/AA2qq/8ABlVV/wAMKqr/AAfVVv8ACqqr/wAJVVUIwfhZFUUKDprs+VgVKgr7RLcVcAoOdfh84hVECl33SxVFCvsH97oVcAoO91z5PbkVKwr7wfnmFWUKDqz4tKkVRwpR92MVSAr7VPhrFWUKDvdc+T25FSsK/AT51xVuCg6s+LSpFUcKUfdjFUgK+5f4axVvCg73XPk9uRUrCvvL+a4VIQoOrPi0qRVHClH3YxVICvte+DMVIQoO91z5PbkVKwr7uvsEFXIKDqz4tKkVRwpR92MVSAr7HPf5Fb73OVaLTPs5BQ73JOz5WBUsCvc291AVZQoOddv5iBVJCtf3SBVlCg73JOz5WBX9WM335Pgg++TN+VhJ+wP8IPcDB/gg+8wV/CD3LfggBg512/jZFfzZx/d7B4ur/wAEKqv/ABvVVf8ACFVV/wAXqqv/AAhVVf8AF6qr/wALVVb/ABOqqv8ADlVV/wAPqqv/AA5VVf8AD6qrnP8AC6qq/wATqqv/AAeqq/8AE6qr/wAHqqv/ABTVVf8AA9VVoYuji/8AE4AA///71VWa///3qqua///3qqv/AAuqq///9NVV/wAIVVV9CP8ACFVVff8ABdVW///wKqv/AANVVf//7lVV/wADVVX//+5VVf8AAaqr///t1VaL///tVVUI+6TH96cHi/8AGVVV///9gAD/ABiqq4ajhqOC/wAVKqt+/wASVVV+/wASVVX//+4qq/8ADtVW///pVVX/AAtVVf//6VVV/wALVVX//+Kqq/8ABaqrZ4v//9qqq4v//99VVf//9tVVb///7aqrb///7aqrd///6iqqf///5qqrCIn3XPc2wPs29w5P+w5DVgYO+9Ls+VgVLQr7UMgVZgoO5fhiFUoK+0z3CxVrCg770uz5WBUtCu3mFV0KDuX4YhVKCvL3JBVdCg770uz5WBX9WJMHgYP///Wqq4L///VVVYH///VVVYH///aAAP//9YAA///3qquA///3qquA///5Kqr///Qqq///+qqr///zVVX///qqq///81VV///9VVX///Kqq4t9i///5qqr/wAIqqt3/wARVVX///FVVf8AEVVV///xVVWh///4qqv/ABqqq4sI/wASqquL/wAQKqr/AAMqq/8ADaqr/wAGVVX/AA2qq/8ABlVV/wAMKqr/AAfVVv8ACqqr/wAJVVUIeLEF///7VVX///qqq///+Sqr///61VWChoKG///0gAD///2AAH2L///jVVWL///xqqv/AA+qq4v/AB9VVYv/AAyqq/8AAoAA/wAMVVWQl5CX/wAGKqv/AAtVVf8AB1VV/wAKqqv/AAdVVf8ACqqr/wAH1Vb/AAmqqv8ACFVV/wAIqqsI/wAIVVX/AAiqq/8AB9VWkv8AB1VV/wAFVVUImPlYBg7l+GIV/GKQB4GD///1qquC///1VVWB///1VVWB///2gAD///WAAP//96qrgP//96qrgP//+Sqq///0Kqv///qqq///81VV///6qqv///NVVf///VVV///yqquLfYv//+aqq/8ACKqrd/8AEVVV///xVVX/ABFVVf//8VVVof//+Kqr/wAaqquLCP8AEqqri/8AECqq/wADKqv/AA2qq/8ABlVV/wANqqv/AAZVVf8ADCqq/wAH1Vb/AAqqq/8ACVVVCHixBf//+1VV///6qqv///kqq///+tVVgoaChv//9IAA///9gAB9i///41VVi///8aqr/wAPqquL/wAfVVWL/wAMqqv/AAKAAP8ADFVVkJeQl/8ABiqr/wALVVX/AAdVVf8ACqqr/wAHVVX/AAqqq/8AB9VW/wAJqqr/AAhVVf8ACKqrCP8ACFVV/wAIqqv/AAfVVpL/AAdVVf8ABVVVCJX4YgZA90sVSwoO+9Ls+VgVLQo+9xgVIQoO5fhiFUoKDvcW7PlYFS0K+FT8iBUuCg77D+X4YhVKCkD3SxVLCve2/WoVTApA+WoVSwoOK/gV92QVLgpF+UQVZQoO9yo6FXMKSvmpFWUKDqzs+VgVLwr3KP2aFXIKDirb+YgVTQrS/coVcgoOPez5WBUwCpj3UBVfCg7l+YgVTgqj90gVXwoOPez5WBUwCvb9mhVyCg7l+YgVTgpm/coVcgoOPez5WBUwCvcMFnEKDuX5iBVOCvcMWxVxCg497PlYFTAK90P7/xUhCg77huX5iBVOCt/8ERUhCg497Pd7Fft7+CDH+973eAf3bPdRi8n7bPtRi/f6SYuL/DFDTItKBQ7l99gV+9jH+BUH3+CLzjc1i/fFT4uL/AE3NotIBQ73XOz5WBUxCvec91AVXwoOddv34BVPCvd8+AwVXwoO91zs+VgVMQr3Sf2aFXIKDnXb9+AVTwr3Q/wiFXIKDvdc7PlYFTEK94e3FXAKDnXb9+AVTwr3gvd8FXAKDnXb9+AVTwp8+AwVcQoO95S+9/YVMgrNFjMK+EX4URVdCg6bwfd7FVAKxxZRCvfQ+AsVXQoO95S+9/YVMgrNFjMK91v4oxVuCg6bwfd7FVAKxxZRCt34cRVvCg73lL739hUyCs0WMwr3u/iyFV8KzRZfCg6bwfd7FVAKxxZRCvdJ+HEVXwrNFl8KDvgC+NnHFfeo96vH+6v3kPe8x/xEB///zqqri///0Cqq///4gAD//9Gqq3z//9Gqq3z//9bVVf//6aqrZ///4lVVZ///4lVV///jKqv//9sqq///6lVVX///6lVVX///9Sqr///MqquL///FVVWL///Kqqv/AAmAAP//z4AAnv//1FVVnv//1FVV/wAZqqv//9qqq/8AIFVVbAj/ACBVVWz/ACWqq///6Cqrtv//71VVtv//71VV/wAtKqv///eqq/8AL1VViwj4bMcG/Ab44BX84DcH///iqquL///fqqqQ///cqquV///cqquV///e1VX/ABCAAGyibKJx/wAeKqt2/wAlVVV2/wAlVVX///WAAP8ALlVWi/8AN1VVi/8AM1VV/wAJqqv/ACwqq/8AE1VVsP8AE1VVsP8AGNVW/wAegAD/AB5VVaMI/wAeVVWj/wAhgAD/ABGqq/8AJKqr/wALVVX/ACSqq/8AC1VVr/8ABaqr/wAjVVWLCA733fm396IVbQr7vFUV9/iuBov/ACdVVf//+lVV/wAh1Vb///Sqq/8AHFVV///0qqv/ABxVVf//8NVV/wAXKqt4nXid///p1VX/AA0qq///5qqr/wAIVVX//+aqq/8ACFVV///lVVX/AAQqq2+L///mqquL///pVVX///yAAHeEd4T//+6qq4L///FVVYAI///xVVWA///zqqv///Oqq4H///JVVYH///JVVYP///KAAIX///Kqq4eT///5gAD/AAqAAIKYgpj///PVVf8ADKqr///wqqv/AAxVVf//8Kqr/wAMVVX//+yqqv8ACqqr///oqquU///oqquU///jqqr/AASAAP//3qqriwj//96qq4v//+FVVYVvf29////n1VX//+8qq///66qr///qVVX//+uqq///6lVVe///5lVW///0VVX//+JVVf//9FVV///iVVX///oqq///34AAi///3Kqri///3Kqr/wAF1VX//9+AAP8AC6qr///iVVX/AAuqq///4lVVm///5lVW/wAUVVX//+pVVQj/ABRVVf//6lVV/wAYKqv//+8qq6d/p3//AB6qq4X/ACFVVYu3i/8AJ1VV/wAJqqv/ACKqq/8AE1VV/wAiqqv/ABNVVab/ABxVVv8AE1VV/wAlVVUIjQb/ABCqq2P/ABhVVW6reat5/wAkVVWC/wAoqquL/wAqqquL/wAj1VX/AAcqq6j/AA5VVaj/AA5VVf8AG4AA/wAYKqulrQhcrQX///FVVf//6Kqr///tVVb//+3VVf//6VVVfv//6VVVfv//5lVW///5gAD//+NVVYv//+Sqq4v//+gqqv8ABKqr///rqqv/AAlVVf//66qr/wAJVVX//+8qqv8ADIAA///yqqv/AA+qq///8qqr/wAPqquB/wASVVX///lVVaD///lVVaD///1VVv8AFoAA/wABVVWjCPwnmhWL/wAYqquP/wAXqqqT/wAWqquT/wAWqqv/AAuAAP8AFCqqmv8AEaqrmv8AEaqrnZmg/wAKVVWg/wAKVVX/ABfVVf8ABSqr/wAaqquL/wAaqquL/wAX1VWGoIGggf8AEdVV///ygAD/AA6qq3oI/wAOqqt6/wALVVV3k3STdI///+eAAItxi3GH///ngACDdIN0///0qqt3///xVVV6///xVVV6///uKqv///KAAHaBdoH//+gqq4b//+VVVYsI///lVVWL///oKqv/AAUqq3b/AApVVXb/AApVVXmZfP8AEaqrfP8AEaqr///0gAD/ABQqqoP/ABaqq4P/ABaqq4f/ABeqqov/ABiqqwgOmvc3+CAVNQr7YvfMFTYKvPdQFV8KDvuJ2/fgFVIK9y34DBVfCg6a9zf4IBU1Cvti98wVNgp9/ZoVcgoO+4nb9+AVUgq7/CIVcgoOmvc3+CAVNQr7YvfMFTYKubcVcAoO+4nb9+AVUgr3Ivd8FXAKDnX3CPcXFTcK93b5kRVfCg77LNz3ChVTCvdN+OIVXwoOdfcI9xcVNwr3J/mRFWUKDvss3PcKFVMK8PjiFWUKDnX3CPcXFUxhBf8AGVVVZ/8AHiqrca57rnv/ACaAAP//9qqrtf///VVVCFlEm3wF/wAOqqv/AAVVVf8ADqqq/wACqqv/AA6qq4v/AA1VVYv/AAyqq////NVVl///+aqrl///+aqrkf//9Sqqi///8Kqri4OJ///5VVWH///6qquH///6qqv///rVVf//+6qq///5qqv///yqq///+aqr///8qqv///kqqv///YAA///4qqv///5VVQj///iqq////lVVhP///yqr///5VVWLb4v//+aqq/8ABaqr///pVVX/AAtVVQh9awWpff8AH6qrhP8AIVVVi/8ADKqri5j/AAGqq/8ADVVV/wADVVX/AA1VVf8AA1VV/wAMKquQlv8ABqqrlv8ABqqr/wAI1VX/AAiqqv8ABqqr/wAKqqv/AAaqq/8ACqqr/wADVVWYi/8AD1VVi6P///eAAJ16lwh6l///7NVVkf//6qqri3+L///1qqv///2qq///91VV///7VVUIiY2tugX/ABqqq/8AAVVV/wAZ1VX/AAVVVqT/AAlVVaT/AAlVVaGYnv8AEKqrnv8AEKqr/wAPKqv/ABRVVf8AC1VVo/8AC1VVo/8ABaqr/wAbVVWL/wAeqquLt4L/ACKAAHmkeaT//+mAAP8AE4AAcJkIcJn//+Kqq/8ACyqr///gVVX/AAhVVf//4FVV/wAIVVX//+Kqq/8ACaqrcJZwlv//6YAAmnmeeZ6C/wAbKquL/wAjVVWL/wAWqqv/AARVVf8AE6qq/wAIqqv/ABCqq/8ACKqr/wAQqqv/AAuAAP8ADdVV/wAOVVWWCP8ADlVVlv8AENVW/wAIVVX/ABNVVf8ABaqr/wATVVX/AAWqq/8AFFVW/wAC1VX/ABVVVYv/ADtVVYu5///oqqv/ACCqq///0VVVCMS0BXOr///jgAD/ABbVVWr/AA2qq2r/AA2qq///3Cqr/wAG1VX//9lVVYtti///41VV///71VX//+Sqq///96qr///kqqv///eqq///59VV///zqqp2///vqqt2///vqqv//+9VVf//66qq///zqqv//+eqq///86qr///nqqv///nVVf//5Cqqi///4KqrCIv//96qq/8ABSqrb/8AClVV///pVVX/AApVVf//6VVV/wAN1Vb//+0qq/8AEVVVfP8AEVVVfP8AE4AA///z1VX/ABWqq///9qqr/wAVqqv///aqq/8AFlVV///3qqqi///4qqui///4qqv/ABZVVf//+Kqq/wAVqqv///iqq/8AFaqr///4qqv/ABOAAP//9yqq/wARVVX///Wqqwj/ABFVVf//9aqr/wAN1Vb///LVVf8AClVVe/8AClVVe/8ABSqr///rqquL///nVVWL///qqqv///vVVf//7NVV///3qqt6///3qqt6///0qqr///GAAP//8aqrf///8aqrf///7yqq///2qqv//+yqq///+VVV///sqqv///lVVf//61VV///8qqt1iwhni///4FVV/wAHVVX//+Sqq/8ADqqr///kqqv/AA6qq///6aqq/wAWVVX//+6qq6kIDvss3PcKFVZnBf8AEKqrbf8AFtVV///pgACofKh8/wAggAD///eAAK+JCFQ+m3wF/wAOqqv/AAVVVf8ADqqq/wACqqv/AA6qq4v/AA1VVYv/AAyqq////NVVl///+aqrl///+aqrkf//9Sqqi///8Kqri4OJ///5VVWH///6qquH///6qqv///rVVf//+6qq///5qqv///yqq///+aqr///8qqv///kqqv///YAA///4qqv///5VVQj///iqq////lVVhP///yqr///5VVWLb4v//+aqq/8ABaqr///pVVX/AAtVVQh9awWpff8AH6qrhP8AIVVVi/8ADKqri5j/AAGqq/8ADVVV/wADVVX/AA1VVf8AA1VV/wAMKquQlv8ABqqrlv8ABqqr/wAI1VX/AAiqqv8ABqqr/wAKqqv/AAaqq/8ACqqr/wADVVWYi/8AD1VVi6P///eAAJ16lwh6l///7NVVkf//6qqri3+L///1qqv///2qq///91VV///7VVUIiY2ywAWf/wABVVWej53/AAaqq53/AAaqq/8AD9VV/wAJVVX/AA2qq5f/AA2qq5f/AArVVf8ADoAAk5yTnI//ABOAAIuhi/8AH1VV///5Kqv/ABgqq///8lVVnP//8lVVnP//7yqrmHeUCHeUdf8ABoAAc49zj3X/AATVVXf/AAWqq3f/AAWqq///7yqr/wAH1VX///JVVZX///JVVZX///kqq/8AD1VVi/8AFKqri5f/AAMqq/8ACqqr/wAGVVX/AAlVVf8ABlVV/wAJVVX/AAfVVv8AB6qr/wAJVVWRCP8ACVVVkf8ACoAA/wAEqqv/AAuqq/8AA1VV/wALqqv/AANVVf8ACyqq/wABqqv/AAqqq4uni/8AFlVV///6gAD/ABCqq4D/ABCqq4CZ///v1VX/AAtVVf//6qqrCMGrBf//8Kqrqf//6oAAof//5FVVmf//5FVVmf//3yqrkmWL///sqquLeP///VVV///tVVX///qqq///7VVV///6qqv//+8qq///99VVfIB8gP//89VV///yKqv///aqq///71VV///2qqv//+9VVf//+1VV///sVVaL///pVVUIi///4qqr/wAG1VX//+lVVf8ADaqre/8ADaqre/8AENVV///zgACfgp+Cof//+VVVo///+6qro///+6qrof//+tVVn4Wfhf8AENVV///3qqv/AA2qq///9VVV/wANqqv///VVVf8ABtVVe4v//+qqqwiL///yqqv///zVVf//9Cqq///5qqv///Wqq///+aqr///1qqv///fVVf//9yqqgf//+Kqrgf//+Kqr///0qqv///pVVf//81VVh///81VVh///81VWif//81VVi2+L///l1VX/AAaAAP//56qrmP//56qrmP//7YAA/wAS1VX///NVVf8AGKqrCA519wj3FxU3CvdX+QEVcAoO+yzc9woVUwr3OfhSFXAKDof3kvkcFTgK94v9XhVyCg77iffG+CwVVAp7/G4VcgoOh/eS+RwVOAr3zPMVcAoO+4n3xvgsFVQK8/fAFXEKDof4avgyFbv7KvdO94bH/LpP94b7TvsoW/co/DLN+DIHDvuJ97f3qRW7+wne9xjB+xj3GU/7GSdV7zg0Wwfi+z4Gi///71VV/wACKqv///CAAP8ABFVV///xqqv/AARVVf//8aqr/wAG1Vb///OAAP8ACVVV///1VVX/AAlVVf//9VVV/wAMVVb///eAAP8AD1VV///5qqv/AA9VVf//+aqr/wASVVb///zVVf8AFVVVi/8AC1VVi5j/AAGqq/8ADqqr/wADVVX/AA6qq/8AA1VVmP8AA6qr/wALVVWPCIbBBf//9VVV///7VVX///TVVv///Cqr///0VVWI///0VVWI///0gAD///6AAP//9Kqri3eL///wVVX/AAWqq///9Kqr/wALVVX///Sqq/8AC1VV///6VVWbi/8AFKqrCPc+Bw71+Oz3oxU5Cvwx+IYVZgoOdfhr9xYVVQr78vhXFWsKDvX47PejFTkK+xH4pBVdCg51+Gv3FhVVCk34cBVdCg71+Oz3oxU5Cvv7+PYVbgoOdfhr9xYVVQr7vPjWFW8KDvX47PejFTkK+/L4yhVnCvcqFmgKDnX4a/cWFVUK+7P4mxVsCvcqFmgKDvX47PejFTkK+6b5BRVfCs0WXwoOdfhr9xYVVQr7Z/jWFV8KzRZfCg71+E77SxV4sQX///tVVf//+qqr///5Kqv///rVVYKGgob///SAAP///YAAfYv//+NVVYv///Gqq/8AD6qri/8AH1VVi/8AFKqr/wAFqqv/ABOAAP8AC1VV/wASVVX/AAtVVf8AElVV/wAMVVb/AA+AAP8ADVVV/wAMqqv/ACiqq4//ACKAAP8ACqqr/wAcVVX/ABFVVQj/ABxVVf8AEVVV/wAW1Vb/ABWqq/8AEVVVpf8AEVVVpf8ADIAA/wAdVVX/AAeqq/8AIKqr/wAHqqv/ACCqq/8AA9VVrYv/ACNVVQj4SUn8OAeL///mqqv///2qq3D///tVVf//41VV///7VVX//+NVVf//9tVW///lVVb///JVVf//51VV///yVVX//+dVVf//7IAA///rqqv//+aqq3v//+aqq3tqg///11VVi///1qqri///3tVVk3Kbcpv//+yqq/8AFFVV///yVVX/ABiqqwj///JVVf8AGKqr///21Vb/ABqqqv//+1VV/wAcqqv///tVVf8AHKqr///9qqumi/8AGVVVCPg4SfxJB4v//9qqq/8ABCqr///cVVX/AAhVVWn/AAhVVWmZ///h1VX/ABOqq///5aqr/wATqqv//+Wqq/8AGYAA///qqqr/AB9VVf//76qr/wAfVVX//++qq/8AJqqr///3Kqq5///+qqv//+6qq///8Kqr///wqqr//+6AAP//8qqr///sVVX///Kqq///7FVV///5VVX//+qAAIv//+iqqwiL///mqqv/AAiqq3f/ABFVVf//8VVV/wARVVX///FVVaH///iqq/8AGqqri/8AEqqri/8AECqq/wADKqv/AA2qq/8ABlVV/wANqqv/AAZVVf8ADCqq/wAH1Vb/AAqqq/8ACVVVCA51+I37SxV4sQX///tVVf//+qqr///5Kqv///rVVYKGgob///SAAP///YAAfYv//+NVVYv///Gqq/8AD6qri/8AH1VVi/8ADKqr/wACgAD/AAxVVZCXkJf/AAYqq/8AC1VV/wAHVVX/AAqqq/8AB1VV/wAKqqv/AAfVVv8ACaqq/wAIVVX/AAiqqwj/AAhVVf8ACKqr/wAH1VaS/wAHVVX/AAVVVQiaBouR////qqv/AAiAAP///1VVlv///1VVlv///4AA/wAL1VX///+qq/8ADKqr////qqv/AAyqq////4AA/wAMgAD///9VVf8ADFVV////VVX/AAxVVf///6qr/wAKgACL/wAIqqsI9+BP+3sHi2v///vVVf//5Cqr///3qqv//+hVVf//96qr///oVVX///Sqqv//7FVW///xqqv///BVVf//8aqr///wVVV6///0VVb//+xVVf//+FVV///sVVX///hVVf//6yqr///8Kqt1i3OL///sgAD/AAQqq3z/AAhVVXz/AAhVVf//9FVV/wALKqv///eqq5kI///3qquZ///6Kqr/AA/VVf///Kqr/wARqqv///yqq/8AEaqr///+VVX/ABIqqov/ABKqqwj3pE/7pweL///mqqv/AAJVVf//51VV/wAEqqtz/wAEqqtz/wAI1VX//+rVVZj//+2qq5j//+2qq53///EqqqL///Sqq6L///Sqq/8AHYAA///6VVWvi/8AJVVVi/8AIKqr/wAJKqun/wASVVWn/wASVVWf/wAV1VaX/wAZVVUIjgb/AAFVVf//+1VV/wAA1Vb///Wqq/8AAFVVe/8AAFVVe/8AAIAA///vVVX/AACqq///7qqrgYP///Wqq4L///VVVYH///VVVYH///aAAP//9YAA///3qquA///3qquA///5Kqr///Qqq///+qqr///zVVX///qqq///81VV///9VVX///Kqq4t9CIv//+aqq/8ACKqrd/8AEVVV///xVVX/ABFVVf//8VVVof//+Kqr/wAaqquL/wASqquL/wAQKqr/AAMqq/8ADaqr/wAGVVX/AA2qq/8ABlVV/wAMKqr/AAfVVv8ACqqr/wAJVVUIDvgCkPlYFToK+AD3UBVlCg73Epr4YhVWCveB94oVZQoOh/eS98UVOwr3lvdQFWUKDvsH92b7IxVXCoP55xVlCg6H95L3xRU7Cvcq9xgVIQr3UhYhCg51or8VPAr7APeMFV8KDvsspq8VWApl98AVXwoOdaK/FTwK+1P3VBUhCg77LKavFVgK+wz3iBUhCg51or8VPAr7EvMVcAoO+yymrxVYClH3MBVwCg5R+B/4BxW7+wAHqPcxBf8ABKqr/wAYqqv/AAiqqv8AFSqq/wAMqqv/ABGqq/8ADKqr/wARqque/wAI1VX/ABlVVYv/AAqqq4v/AAoqqon/AAmqq4f/AAmqq4f/AAkqqob/AAiqq4UIq7gF///kqqufbZX//99VVYv//+iqq4t3///7qqv//+9VVf//91VV///vVVX///dVVX3///Sqq///9Kqrff//9Kqrff//9yqq///wKqv///mqq///7lVV///5qqv//+5VVf//+yqq///ugAD///yqq///7qqrCG77LvsJi4tb9wCLS/vyBf//+VVVZ///9oAA///kgAD///Oqq3j///Oqq3j//+yAAP//9oAA///lVVWL///2qquL///2qqr/AAFVVf//9qqr/wACqqv///aqq/8AAqqr///3qqr/AARVVf//+KqrkQhtXAX/AAtVVf//9qqr/wAMgAD///mqqv8ADaqr///8qqv/AA2qq////Kqr/wAN1VX///5VVZmL/wArVVWL/wAg1VaW/wAWVVWh/wAWVVWh/wAO1Vb/AB5VVf8AB1VV/wAmqqsI0/gbBQ519wj3FxU3Cvce+1kVcgoO+yzc9woVUwr3A/tMFXIKDof3kvkcFTgK94v9XhVyCg77iffG+CwVVAp7/G4VcgoO9yo6FXMKDuD5WBVlCg73LfjIFXAKDveQ+PIVXQoOnflYFW8KDtb5IBUhCg6m+R0VbAr3KhZoCg73T/tLFXixBf//+1VV///6qqv///kqq///+tVVgoaChv//9IAA///9gAB9i///41VVi///8aqr/wAPqquL/wAfVVWL/wAMqqv/AAKAAP8ADIAAkP8ADFVVkP8ADFVV/wAGKqv/AAtVVv8AB1VV/wAKVVX/AAdVVf8AClVV/wAH1Vb/AAmAAP8ACFVV/wAIqqsI/wAIVVX/AAiqq/8AB9VWkv8AB1VV/wAFVVUIXgaBg///9aqr///3Kqv///VVVf//9lVV///1VVX///ZVVf//9oAA///1gAD///eqq///9Kqr///3qqv///Sqq///+Sqqf///+qqr///zVVX///qqq///81VV///9VVX///Kqq4t9i///5qqr/wAIqqt3/wARVVX///FVVf8AEVVV///xVVWh///4qqv/ABqqq4sI/wASqquL/wAQKqr/AAMqq/8ADaqr/wAGVVX/AA2qq/8ABlVV/wAMKqr/AAfVVv8ACqqr/wAJVVUIDmf42RVrCg7o+VgVXwrNFl8KDueaFnQKr0gV93n82/xbiwUO9zr4RhZ1Cg51+Gv3FhVgCg58+KCUFa8HhYn///nVVf///lVV///5qqv///6qq///+aqr///+qqv///oqqv///1VV///6qquL///1VVWL///31Vb/AAGqq///+lVV/wADVVX///pVVf8AA1VV///7qqv/AARVVoj/AAVVVYj/AAVVVf///iqr/wAGVVb///9VVf8AB1VV////VVX/AAdVVf///6qr/wAHqquLkwj30de6/HZc0fwzv/gz93z7ygeL///xVVX/AACAAH2M///yqquM///yqqv/AALVVf//9Cqq/wAEqqv///Wqq/8ABKqr///1qqv/AAdVVf//99VVlYWVhZmInYv/AAtVVYuV/wABVVX/AAiqq/8AAqqr/wAIqqv/AAKqq/8ACVVV/wADqqqV/wAEqqsIDj33nARV+IjBBw74OvecBFX6fMEHDvvS9xr4dBXL93hPiz/7eAUO+9L3EflYFXYKDvvS9xHlFXYKDlH3Rvh0Fcr3eFCLPvt4BfeLFsr3eFCLPvt4BQ5R9+r5WBV2CvuLFnYKDlH36uUVdgr7ixZ2Cg5R93r4YRX838f43/dUu/tU91tP+1v7VFsHDlH3etQV+1vH91v3VLv7VPfo91S7+1T3W0/7W/tUWwf3VPvo+1RbBg491Pf2FYv//+dVVf8ABKqrdP8ACVVV///qqqv/AAlVVf//6qqr/wAMqqv//+1VVZt7m3v/ABKqq///81VV/wAVVVX///aqq/8AFVVV///2qqui///7VVX/ABiqq4v/ABiqq4ui/wAEqqv/ABVVVf8ACVVV/wAVVVX/AAlVVf8AEqqr/wAMqqubmwibm/8ADKqr/wASqqv/AAlVVf8AFVVV/wAJVVX/ABVVVf8ABKqroov/ABiqq4v/ABiqq///+1VVov//9qqr/wAVVVX///aqq/8AFVVV///zVVX/ABKqq3ube5v//+1VVf8ADKqr///qqqv/AAlVVf//6qqr/wAJVVV0/wAEqqv//+dVVYsI///nVVWLdP//+1VV///qqqv///aqq///6qqr///2qqv//+1VVf//81VVe3t7e///81VV///tVVX///aqq///6qqr///2qqv//+qqq///+1VVdIv//+dVVQgO+Dr3C7UVIQr34RYhCvfhFiEKDvgn+J75ehUiCvua/NEVdwq7FngK97sWdwq7FngK/TP4PhV3CrsWeAoO+5vK94EVXAoO+5v3kPeBFWIKDvwu97X5ehUiCg77APg9+R0Vm8IF///0qqv/AAVVVf//8Sqq/wAEqqv//+2qq4///+2qq4///+wqqo3//+qqq4tLi///ytVV///qgAD//9Wqq2D//9Wqq2D//+LVVf//vdVVe///pqqrCFeLgFvGiwX///6qq///9qqriv//9YAA////VVX///RVVf///1VV///0VVX///+qq///9YAAi///9qqri///+Kqr/wAAKqv///cqqv8AAFVV///1qqv/AABVVf//9aqr/wAA1Vb///cqqv8AAVVV///4qqsIW4t/W8qLBf8ABVVV///ZVVWU///cgAD/AAyqq///36qr/wAMqqv//9+qq/8AECqqb/8AE6qr///oVVX/ABOqq///6FVV/wAXKqr//+2qq/8AGqqrfv8AGqqrfv8AHlVV///5gACti6eL/wAXqquO/wATVVWR/wATVVWR/wAPVVb/AAaqq/8AC1VV/wAHVVUIf8QF///zVVX///iqq///8dVW///5qqr///BVVf//+qqr///wVVX///qqq///7YAA///9VVX//+qqq4tdi///2VVV/wASKqv//+Cqq/8AJFVV///gqqv/ACRVVf//7FVV/wAygACD/wBAqqsI90uLlrv7XIsF////VVX/AAdVVf///4AA/wAI1Vb///+qq/8AClVV////qqv/AApVVf///9VV/wAI1VaL/wAHVVWLlf8AAFVV/wAK1VX/AACqq/8AC6qr/wAAqqv/AAuqq4z/AAoqqv8AAVVV/wAIqqsI926LmLv7c4sF/wALVVXP/wAVKqv/ADNVVar/ACKqq6r/ACKqq/8AJoAA/wARVVW5i5+L/wARKqv///4qq/8ADlVV///8VVX/AA5VVf///FVV/wALgAD///vVVv8ACKqr///7VVUIDj34K7UVeKMF///wqqt/fP//91VV///xVVX///qqq///8VVV///6qqt9///9VVX///Kqq4v///aqq4v///aAAP8AAVVV///2VVX/AAKqq///9lVV/wACqqv///dVVv8ABNVV///4VVWS///4VVWS///5qqv/AAmAAIaXhpf///2AAP8AD1VVi/8AEqqrCPcsB/8AOKqrxf8AKqqq/wA21VX/AByqq/8AM6qr/wAcqqv/ADOqq/8ADlVV/wAygACL/wAxVVWLsf//9lVV/wAd1VX//+yqq/8AFaqr///sqqv/ABWqq3L/AArVVf//4VVVi///3VVVi///4tVW///xVVX//+hVVf//4qqr///oVVX//+Kqq///9Cqr///WVVWLVQiL+5k3OaBvys+L+xUFi2H/AAtVVf//4Sqr/wAWqqv//+xVVf8AFqqr///sVVWo///2Kqv/ACNVVYuhi/8AFVVV/wAEVVX/ABSqq/8ACKqr/wAUqqv/AAiqq/8AE1VV/wAMVVWdmwhO+LYVi///2Kqr///1gAD//9Uqqnb//9Gqq3b//9Gqq///4IAA///Q1VVhWwj3gweLtf8ABtVV/wAe1VX/AA2qq/8AE6qr/wANqqv/ABOqq/8AD4AA/wAJ1VX/ABFVVYv/ABFVVYv/AA4qq///99VVlv//76qrlv//76qr/wAFgAD//+nVVYtvCA74MPdt+SgV/ADB+AD3Gbv71FsH+B67Ffwwwff9jQf3Ivv9q4v3Ivf9jYuL+/3Bi4v4MDiL+xX73PsW99wFDvc6+EYWdQoOPfcx95cV+CgGi/8AKKqr///5qqv/ACUqqv//81VV/wAhqqv///NVVf8AIaqr///uVVao///pVVX/ABhVVf//6VVV/wAYVVX//+TVVp7//+BVVf8ADaqr///gVVX/AA2qq///3NVW/wAG1VX//9lVVYv//9iqq4v//9yAAP//+NVV///gVVX///Gqq///4FVV///xqqv//+TVVv//7IAA///pVVX//+dVVQj//+lVVf//51VV///uqqv//+LVVn///95VVX///95VVYX//9vVVov//9lVVYv//9lVVZFnl///3qqrl///3qqr/wARVVX//+LVVf8AFqqrcv8AFqqrcv8AGyqq///sVVX/AB+qq///8aqr/wAfqqv///Gqq/8AI4AA///41VX/ACdVVYsIpYv/ABeqq/8AAoAA/wAVVVWQ/wAVVVWQ/wAT1VaT/wASVVWW/wASVVWWnJn/AA+qq5z/AA+qq5z/AA+AAP8AFIAA/wAPVVWjCGigBf//5qqrYW///+GAAP//4VVVeP//4VVVeP//26qr///2gABhi///xqqri///z6qq/wATqqv//9iqq/8AJ1VVCPe3920V+7f3JQazs7ufw4vDi7x3tWMIDjn4W/f/FYul///+VVX/ABrVVf///Kqr/wAbqqv///yqq/8AG6qr///6qqr/ABsqqv//+Kqr/wAaqqv///iqq/8AGqqr///2Kqr/ABkqqv//86qr/wAXqqv///Oqq/8AF6qr///w1VX/ABTVVXmdeZ3//+qqq/8ADiqr///nVVX/AApVVf//51VV/wAKVVX//+Oqq/8ABSqra4sI///jVVWLcYb//+iqq4H//+iqq4H//+mqqv//8aqr///qqqv//+1VVQivYAX/ABFVVf8ADVVV/wARKquWnP8ACKqrnP8ACKqr/wAUKqv/AARVVf8AF1VVi/8AIqqri/8AHNVVgqJ5onn/ABJVVf//6VVV/wANqqv//+Sqq/8ADaqr///kqqv/AAmqqv//4oAA/wAFqqv//+BVVf8ABaqr///gVVX/AALVVf//4iqri28Ii///91VV////1VX///dVVv///6qr///3VVX///+qq///91VV////1VX///dVVov///dVVf//61VV/wAZVVX//+dVVv8AFFVW///jVVX/AA9VVf//41VV/wAPVVX//+FVVv8AB6qr///fVVWL///hVVWL///kqqv///pVVXP///Sqq3P///Sqq///66qr///wqqr//+9VVf//7KqrCP//71VV///sqqv///NVVv//6VVV///3VVVx///3VVVx///7qqv//+Sqq4v//+NVVYv//+Kqq/8ABIAA///j1VWUcJRwmP//6CqrnP//61VVnP//61VV/wAU1VX//++AAP8AGKqr///zqqv/ABiqq///86qrp///+dVV/wAfVVWLCLuL/wAm1VX/AAyqq/8AHaqr/wAZVVX/AB2qq/8AGVVV/wAW1VX/AB+AAJv/ACWqq5v/ACWqq/8ACqqr/wAoqqr/AAVVVf8AK6qr/wAFVVX/ACuqq/8AAqqr/wAoKqqL/wAkqqsIRjYV///+qqv//+iqq////Kqq///mqqr///qqq///5Kqr///6qqv//+Sqq///91VV///mVVV/c39z///wVVV3///sqqt7///sqqt7c4P//+NVVYv//+lVVYv//+wqq5B6lXqV///xqqv/AA0qq///9FVV/wAQVVUI///0VVX/ABBVVf//91VW/wASKqv///pVVZ////pVVZ////0qq5+Ln4v/ABSqq/8AAtVVn/8ABaqr/wATVVX/AAWqq/8AE1VV/wAIqqqc/wALqqv/AA6qq/8AC6qr/wAOqqv/AA5VVf8AC6qqnP8ACKqrnP8ACKqr/wAT1VX/AARVVf8AFqqriwiri/8AHVVV///21VX/ABqqq///7aqr/wAaqqv//+2qq/8AFlVV///q1VWdcwgO55oWdAqvSBX3efzb/FuLBQ73GfjT+2oVzfp8/M7+fM36PvhKBg6lpPtqFfi9yPxtBvfc+E77yfhH+E6Li8n8o4uLU/fP/E373fxUBQ7j2ffbFVv4krsHDvwu97X5ehUiCg770t330hUhCg4297j7ahX3Zvp8TIv7Uf4o+zL34Cdbo1m5ofc4++gFDvc3+VD3kBWL/wAUqqv///yqq/8AE1VV///5VVWd///5VVWd///2VVb/AA+AAP//81VVmP//81VVmHz/AAoqq///7qqr/wAHVVX//+6qq/8AB1VV///sqqr/AAOqq///6qqri3eL///tgAD///yAAHqEeoR7gnyACHyA///xqqv///PVVf//8lVV///yqqv///JVVf//8qqr///ygAB+///yqqv///NVVf//8qqr/wAMqqv///Iqqv8ADNVV///xqquY///xqquYfJf///BVVZb///BVVZb//+9VVpT//+5VVZL//+5VVZL//+2AAP8AA4AA///sqquLCP//6qqri///7NVV///8Kqt6///4VVV6///4VVX///GAAP//9VVWf///8lVVf///8lVV///21VX///Aqq///+aqref//+aqref///NVVeIt3i///61VV/wADVVX//+zVVv8ABqqr///uVVX/AAaqq///7lVV/wAJgAD///Cqq/8ADFVVfgj/AAxVVX7/AA6qq///9dVVnP//+KqrnP//+Kqr/wATKqv///xVVf8AFVVVi5+L/wASgAD/AANVVZz/AAaqq5z/AAaqq5v/AAiAAJr/AApVVZr/AApVVf8ADoAA/wALgACZ/wAMqquZ/wAMqqv/AA5VVf8ADFVV/wAOqquXCP8ADKqr///zVVX/AA1VVf//81VWmf//81VVmf//81VV/wAO1VX///SAAP8AD6qr///1qqv/AA+qq///9aqr/wAQgAD///eqqv8AEVVV///5qqv/ABFVVf//+aqr/wASVVb///zVVf8AE1VVi/8AFVVVi/8AE1VW/wAD1VX/ABFVVf8AB6qr/wARVVX/AAeqq/8ADqqr/wAKgACX/wANVVUIl/8ADVVV/wAJVVX/AA+qq/8ABqqrnf8ABqqrnf8AA1VV/wATVVWL/wAUqqsIUogVi///51VVhP//61VWff//71VVff//71VV///sVVX///eqq///5qqri///8Kqri///8YAA/wACqqv///JVVf8ABVVV///yVVX/AAVVVf//8qqrkn7/AAiqq37/AAiqq///86qr/wAJVVX///RVVZX///RVVZX///TVVv8ACaqr///1VVX/AAlVVQiV/wAIqquW/wAJqqqX/wAKqquX/wAKqqv/AAxVVf8ACiqq/wAMqqv/AAmqq/8ADKqr/wAJqqv/AA0qqpP/AA2qq/8ABlVV/wANqqv/AAZVVf8ADdVV/wADKquZi6eL/wAU1VWC/wANqqt5/wANqqt5/wAG1VX//+pVVYv//+aqqwj7yhb///aqq///91VV///1VVX///aAAH////Wqq3////Wqq///84AA///2gAB+///3VVV+///3VVX///Kqq///+NVW///yVVX///pVVf//8lVV///6VVX///Iqq////SqrfYv//+VVVYv//+tVVv8ACFVV///xVVX/ABCqq///8VVV/wAQqqv///iqq6CL/wAZVVUIi5f/AAHVVf8AC1VV/wADqqv/AAqqq/8AA6qr/wAKqqv/AAUqqv8ACYAA/wAGqqv/AAhVVf8ABqqr/wAIVVX/AAhVVf8ABqqrlZCVkP8AC1VV/wACgAD/AAyqq4uZi5n///zVVZn///mqq5n///mqq/8ADdVV///4Kqr/AA2qq///9qqrCP8ADaqr///2qqv/AAzVVf//9iqql///9aqrl///9aqrlv//9oAAlf//91VVCA5o+Cr5dBWL/wAJVVX///3VVf8AB9VW///7qqv/AAZVVf//+6qr/wAGVVX///pVVf8ABSqrhI+Ej///+FVV/wAC1VX///eqq/8AAaqr///3qqv/AAGqq///+Cqq/wAA1VX///iqq4v//+iqq4v//+zVVf//+yqrfP//9lVVfP//9lVVf///8yqrgnsIgnv///mqq3n///xVVXf///xVVXf///2qq///64AAinaKdv///9VV///rgAD/AACqq3f/AACqq3f/AABVVf//7lVVi///8KqrCIv8g4p2i///4IAABYt6////Kqt5///+VVV4///+VVV4///81VZ6///7VVV8///7VVV8///5VVb///iAAP//91VVi4eL///8qquN///9VVWP///9VVWP///9Kqv/AARVVYj/AASqq4j/AASqq////Cqr/wAEVVX///tVVY8I///7VVWP///5VVaN///3VVWL///2qquL///4KqqI///5qquF///5qquF///81VX///hVVYv///aqq4v//+9VVf8ABoAAf5j///iqq5j///iqq/8ADYAA///8VVWZi6uL/wAYVVX/AAmAAP8AEKqrngj/ABCqq56X/wAXKqv/AAdVVf8AG1VV/wAHVVX/ABtVVY//AByAAP8AAKqr/wAdqqv/AACqq/8AHaqr/wAAVVX/ABmAAIv/ABVVVQj4jAeL/wADVVX////VVZL///+qq/8ACqqr////qqv/AAqqq////6qq/wAMgAD///+qq/8ADlVV////qqv/AA5VVf8AAFVV/wAO1VaM/wAPVVWM/wAPVVX/AAGqq/8ADiqr/wACVVWY/wACVVWY/wADgAD/AArVVf8ABKqr/wAIqqv/AASqq/8ACKqr/wAGVVX/AARVVZOLCP8ABKqri/8AA6qq///91VX/AAKqq///+6qr/wACqqv///uqq/8AAtVV///7VVWOho6G/wAD1VX///uAAP8ABKqrh/8ABKqrh5KJ/wAJVVWL/wAKqquL/wAI1VX/AALVVZL/AAWqq5L/AAWqq/8AA4AA/wAIgACL/wALVVUIDuP44fghFXkK+z8EeQoO4/e69xIV97C7+5cG1/ci90uLi7v7MovM9w9ioT77Jfuri4tb95GLQPsi+0aLi1v3LYtL+w0FtXYFDuPjlxX4frr8fgb3hgT4fvtMi778Q/c0+EP3NYu//H77TAUO4+P3CRX4fvdMi8P8fvdMi1f4Q/s1/EP7NAX7MAT4frr8fgYOmvfbaBX3P/gb+z/4G0yL+z38G/c9/BsFq/lgFfcd+9n7HfvZ+xz32QUO90b5hBU9Cg73OvoUFV8KDuD6FBVlCg73LfmEFXAKDmf5lRVmCg50+dwVIQr3UhYhCg73kPmzFV0KDp36BRVuCg6m+dkVZwr3KhZoCg7o+hQVXwrNFl8KDtb53BUhCg7n+VgVcQoO50kVcgoO9xv45hW+9zlWi0z7OQUOSfdy9wkVw85TBo69FSAK94P7XRX8MPj9+DAGvb4V/JT9YviUBg5Q+AX4YhVKCkD3SxVLCvuE+4EVRgoOUPcG+CwVRgr38/fwFU4KDveEFPjWFXmd+GKX936dqYsG+4SXB4sMChwAHBMAWgIAAQGFAlgCZAPIBUwFYwVsBxQIHAjUCOkKggqXCp4LnAu+C8kL5gzqDW4OJg72D/QTbhN7FOQVFBUsFUMVThc2GEAZRBsTHIAdhB9kICYgsyMGJKol9iX9JtAnoCe/J8YprCsALAQtcTBGMVUzOzNrNGw0gzVWNto4fjiQOJY5/ToIO8072zvtO/88CjwePb8/Pz/2QLZBxUNuRPJFmEYzRtpG7Ub3RwFH1UfgSqdKsUu1TWlPNrkGi/8AIqqrjaOP/wANVVWP/wAMqqv/AA5VVf8AEVVV/wAYqquh/wAZVVX/ABdVVf8AENVW/wAUgAD/AAhVVf8AEaqr/wAIVVX/ABGqq/8ABCqr/wATgACL/wAVVVWLs///9FVV/wAf1VX//+iqq/8AF6qr///oqqv/ABeqq///4lVV/wAL1VVniwhni///4aqr///1Kqv//+dVVf//6lVV///nVVX//+pVVf//8VVW///dKqv///tVVVsIvYMFj63/AAmAAP8AGFVVmv8ADqqrmv8ADqqr/wAR1VX/AAdVVf8AFKqri/8AFKqri/8AEdVV///31VWa///vqqua///vqqv/AAeAAP//69VVi3OLf4j///Qqq4X///RVVYX///RVVf//8lVV///wKqv//+qqq3cI///0qqv///Sqq///9qqq///1gAD///iqq///9lVV///4qqv///ZVVYX///bVVv//+1VV///3VVX///dVVf//71VV///7qqtwi///2qqrCAuL///yqqv/AASqq///9Kqq/wAJVVX///aqq/8ACVVV///2qqv/AAtVVv//+1VV/wANVVWL/wANVVWL/wALVVb/AASqq/8ACVVV/wAJVVX/AAlVVf8ACVVV/wAEqqv/AAtVVov/AA1VVYv/AA1VVf//+1VV/wALVVb///aqq/8ACVVV///2qqv/AAlVVf//9Kqq/wAEqqv///Kqq4sI///yqquL///0qqr///tVVf//9qqr///2qqv///aqq///9qqr///7VVX///Sqqov///KqqwgL/Fz9gLhv+F35gAULi3P/AASAAP//6aqrlP//61VVlP//61VV/wAMVVX//+3VVv8AD6qr///wVVX/AA+qq///8FVV/wASKqr///Oqq/8AFKqrgv8AFKqrgv8AFlVV///7gACji6OL/wAWVVX/AASAAP8AFKqrlP8AFKqrlP8AEiqq/wAMVVX/AA+qq/8AD6qrCP8AD6qr/wAPqqv/AAxVVf8AEiqqlP8AFKqrlP8AFKqr/wAEgAD/ABZVVYuji6P///uAAP8AFlVVgv8AFKqrgv8AFKqr///zqqv/ABIqqv//8FVV/wAPqqv///BVVf8AD6qr///t1Vb/AAxVVf//61VVlP//61VVlP//6aqr/wAEgABziwhzi///6aqr///7gAD//+tVVYL//+tVVYL//+3VVv//86qr///wVVX///BVVf//8FVV///wVVX///Oqq///7dVWgv//61VVgv//61VV///7gAD//+mqq4tzCAuL/wAQqqv/AAMqq/8AD4AA/wAGVVX/AA5VVf8ABlVV/wAOVVX/AAiAAP8ADIAA/wAKqqv/AAqqq/8ACqqr/wAKqqv/AAyAAP8ACFVV/wAOVVWR/wAOVVWR/wAPKquOm4ubi/8ADyqriP8ADlVVhf8ADlVVhf8ADIAA///3qqv/AAqqq///9VVVCP8ACqqr///1VVX/AAiAAP//84AA/wAGVVX///Gqq/8ABlVV///xqqv/AAMqq///8IAAi///71VVi///71VV///81VX///CAAP//+aqr///xqqv///mqq///8aqr///3gAD///OAAP//9VVV///1VVX///VVVf//9VVV///zgAD///eqq///8aqrhf//8aqrhf//8NVViHuLCHuL///w1VWO///xqquR///xqquR///zgAD/AAhVVf//9VVV/wAKqqv///VVVf8ACqqr///3gAD/AAyAAP//+aqr/wAOVVX///mqq/8ADlVV///81VX/AA+AAIv/ABCqqwgL+8n9WNCL2/dQ+AuL2PtQ1Yv7vvlYBQv3NPwY+9mLBQtVtAX///NVVf//7Kqr///xVVb//++AAP//71VV///yVVX//+9VVf//8lVV///ugAD///Sqq///7aqrgv//7aqrgv//7Sqq///5VVX//+yqq///+6qr///sqqv///uqq///7VVV///91VV5i12L///WgACTZptmm///4IAAoXGnCHGnd6x9sX2xhLSLt4u3krSZsZmxn6ylp6Wn/wAfgAChsJuwm/8AKYAAk7mLCK+L/wAjKqv///hVVf8AIlVV///wqqv/ACJVVf//8Kqr/wAcKqv//+eqqqH//96qqwjBuAX//+Cqq7P//9uAAP8AHIAA///WVVWc///WVVWc///TKqv/AAiAAFuLVYv//86AAP//9qqrXv//7VVVXv//7VVV///ZgAD//+Yqq2tqa2py///Y1VV5///Sqqt5///SqquC///OVVWLVQiLVZT//84qq53//9JVVZ3//9JVVaT//9iqq6tqq2r/ACaAAP//5lVVuP//7aqruP//7aqr/wAxgAD///bVVcGLv4v/ADBVVZX/ACyqq5//ACyqq5//ACdVVaytuQgL/Vj3bwf/AD1VVYu//wAHgAD/ACqqq5r/ACqqq5r/ACOAAP8AEyqr/wAcVVX/ABdVVf8AHFVV/wAXVVX/ABZVVv8AGdVW/wAQVVX/ABxVVf8AEFVV/wAcVVWX/wAbKqv/AAeqq6X/AAeqq6X/AATVVf8AF4AAjaCNoIz/AA7VVYv/AAiqqwiL/wAIqquK/wAO1VWJoImg///7Kqv/ABeAAP//+FVVpf//+FVVpX//ABsqq///76qr/wAcVVX//++qq/8AHFVV///pqqr/ABnVVv//46qr/wAXVVX//+Oqq/8AF1VV///cgAD/ABMqq///1VVVmv//1VVVmlf/AAeAAP//wqqriwgL+OD3HAf/AC6qq4v/ACuqqv//+iqr/wAoqqv///RVVf8AKKqr///0VVX/ACNVVf//7iqrqXOpc/8AF6qr///hgAD/ABFVVWb/ABFVVWb/AAiqq///1Cqri///zVVVi///zVVV///3VVX//9Qqq///7qqrZv//7qqrZv//6FVV///hgABtcwhtc///3Kqr///uKqv//9dVVf//9FVV///XVVX///RVVf//1FVW///6Kqv//9FVVYsIC/1Y+FXH/BP3qPfsx/vs95D4A8cHC/fk+4BP9z77ggf//+Sqq3v//+GqqoD//96qq4X//96qq4X//9xVVYhli12L///WgACTZptmm///4IAAoXGncad3rH2xfbGEtIu3CIu3krSZsZmxn6ylp6Wn/wAfgAChsJuwm/8AKYAAk7mL/wATVVWL/wATqqv///3VVZ////uqq5////uqq/8AEyqrhf8AElVV///4VVUI/wASVVX///hVVZz///aqq/8AD6qrgP8AD6qrgP8ADSqq///0Kqv/AAqqq///81VVCLu9Bf//v1VV/wBBVVU2/wAgqqv//5aqq4tVi///zoAA///2qqte///tVVVe///tVVX//9mAAP//5iqra2pranL//9jVVXn//9Kqq3n//9Kqq4L//85VVYtVi1WU///OKqud///SVVUInf//0lVVpP//2Kqrq2qrav8AJoAA///mVVW4///tqqu4///tqqv/ADGAAP//9tVVwYu5i/8ALSqr/wAE1VX/ACxVVf8ACaqr/wAsVVX/AAmqq/8AKtVW/wAQgAD/AClVVf8AF1VVCAv9WM335Pgg++TN+VhJ+8z8IPfMBwv9WM35WAcL+IhJ/JgHi///6qqr///9qqv//+wqqv//+1VV///tqqv///tVVf//7aqr///4qqv///AqqoH///Kqq4H///Kqq///8tVV///1gAD//++qq///+FVV///vqqv///hVVf//7Cqq///8Kqv//+iqq4v//8FVVYv//9iqq/8AIFVVe/8AQKqrCEl/BZVf/wAUKqv//9zVVf8AHlVV///lqqv/AB5VVf//5aqr/wApKqv///LVVb+LuYv/ACPVVf8AB9VV/wAZqqv/AA+qq/8AGaqr/wAPqqv/ABNVVf8AE1VVmKKYopP/ABiAAI6ljqX/AAGAAP8AF6qri/8AFVVVCAv9WM34ApEH9/v8AuqL/A74FPf699gwi/vr+8yFi4v3zAUL/Vj4IMf73vkcBwv9WM35AI0H+EP9AOCLi/lYSYuL/QCJi/xD+QAFC4tVlP//ziqrnf//0lVVnf//0lVVpP//2Kqrq2qrav8AJoAA///mVVW4///tqqu4///tqqv/ADGAAP//9tVVwYvBi/8AMYAA/wAJKqu4/wASVVW4/wASVVX/ACaAAP8AGaqrq6wIq6yk/wAnVVWd/wAtqqud/wAtqquU/wAx1VWLwYvBgv8AMaqref8ALVVVef8ALVVVcv8AJyqra6xrrP//2YAA/wAZ1VVe/wASqqte/wASqqv//86AAP8ACVVVVYsIVYv//86AAP//9qqrXv//7VVVXv//7VVV///ZgAD//+Yqq2tqa2py///Y1VV5///Sqqt5///SqquC///OVVWLVQgLi7eStJmxmbGfrKWnpaf/AB+AAKGwm7Cb/wApgACTuYu5i/8AKYAAg7B7sHv/AB+AAHWlbwilb59qmWWZZZJii1+LX4RifWV9ZXdqcW9xb///4IAAdWZ7Znv//9aAAINdiwhdi///1oAAk2abZpv//+CAAKFxp3Gnd6x9sX2xhLSLtwgL95D3Jgf/ABKqq4v/ABKqqv///aqr/wASqqv///tVVf8AEqqr///7VVX/ABCAAP//+IAA/wAOVVX///Wqq/8ADlVV///1qqv/AAuqq///8tVVlHuUe/8ABIAA///sqquL///pVVWL///oqqv///uqq///7FVV///3VVV7///3VVV7///0qqv///Mqq33///ZVVQh9///2VVV7hHn///uqq3n///uqq///7aqr///91VX//+1VVYsIC/eQ9yAH/wAiqquL/wAcKqr///uqq/8AFaqr///3VVX/ABWqq///91VV/wAQ1VX///VVVpf///NVVZf///NVVf8ACCqr///yVVb/AARVVf//8VVV/wAEVVX///FVVf8AAiqr///yqquLf4t////91VX///Kqq///+6qr///xVVX///uqq///8VVV///31VX///JVVn////NVVQh////zVVX//+8qq///9VVW///qVVX///dVVf//6lVV///3VVX//+PVVv//+6qr///dVVWLCAv9WM335PcPB/db++TWi/ti9+gF/wATVVX/AAKqq/8AFFVW/wAEqqr/ABVVVf8ABqqr/wAVVVX/AAaqq/8AE4AA/wAKKqr/ABGqq/8ADaqr/wARqqv/AA2qq/8ADqqq/wAR1VX/AAuqq6H/AAuqq6H/AAXVVaeLrYv/AB6qq4algf8AFVVVgf8AFVVV///zVVX/ABGqq///8KqrmQj///Cqq5n//+6qqv8ACqqr///sqqv/AAdVVf//7Kqr/wAHVVV4/wAFVVb//+1VVf8AA1VV///tVVX/AANVVf//7qqrjXv/AACqq3v/AACqq///81VV/wAAVVX///aqq4sIC0xhBaf//9lVVf8AIaqr///kgAD/ACdVVf//76qr/wAnVVX//++qq7b///fVVf8ALqqri/8AHKqri/8AG6qq/wAEVVX/ABqqq/8ACKqr/wAaqqv/AAiqq/8AF4AA/wAM1VX/ABRVVZz/ABRVVZz/ABAqq/8AFNVVl/8AGKqrl/8AGKqrkf8AHFVVi6sIi7eC/wAigAB5pHmk///pgAD/ABOAAHCZcJn//+Kqq/8ACyqr///gVVX/AAhVVf//4FVV/wAIVVX//+Kqq/8ACaqrcJZwlv//6YAAmnmeeZ6C/wAbKquL/wAjVVUIi/8AFqqr/wAEVVX/ABOqqv8ACKqr/wAQqqv/AAiqq/8AEKqr/wALgAD/AA3VVf8ADlVVlv8ADlVVlv8AENVW/wAIVVX/ABNVVf8ABaqr/wATVVX/AAWqq/8AFFVW/wAC1VX/ABVVVYv/AB6qq4v/ABqAAP//+iqr/wAWVVX///RVVf8AFlVV///0VVX/ABOAAP//7oAA/wAQqqv//+iqqwjEtAVzq///44AA/wAW1VVq/wANqqtq/wANqqv//9wqq/8ABtVV///ZVVWLbYv//+NVVf//+9VV///kqqv///eqq///5Kqr///3qqv//+fVVf//86qqdv//76qrdv//76qr///vVVX//+uqqv//86qr///nqqv///Oqq///56qr///51VX//+Qqqov//+CqqwiL///eqqv/AAUqq2//AApVVf//6VVV/wAKVVX//+lVVf8ADdVW///tKqv/ABFVVXz/ABFVVXz/ABOAAP//89VV/wAVqqv///aqq/8AFaqr///2qqv/ABZVVf//96qqov//+Kqrov//+Kqr/wAWVVX///iqqv8AFaqr///4qqv/ABWqq///+Kqr/wATgAD///cqqv8AEVVV///1qqsI/wARVVX///Wqq/8ADdVW///y1VX/AApVVXv/AApVVXv/AAUqq///66qri///51VVi///6qqr///71VX//+zVVf//96qrev//96qrev//9Kqq///xgAD///Gqq3////Gqq3///+8qqv//9qqr///sqqv///lVVf//7Kqr///5VVX//+tVVf///KqrdYsI///cqquL///ggAD/AAdVVf//5FVV/wAOqqv//+RVVf8ADqqr///pgAD/ABZVVf//7qqrqQgL/RzN+Rz3hsf8uk8HC/hJSfw4B4v//+aqq////aqrcP//+1VV///jVVX///tVVf//41VV///21Vb//+VVVv//8lVV///nVVX///JVVf//51VV///sqqv//+uqq3J7cnv//97VVYP//9aqq4v//9aqq4v//97VVZNym3Kb///sqqv/ABRVVf//8lVV/wAYqqsI///yVVX/ABiqq///9tVW/wAaqqr///tVVf8AHKqr///7VVX/AByqq////aqrpov/ABlVVQj4OEn8SQeLZf8ABFVV///bqqv/AAiqq///3VVV/wAIqqv//91VVf8ADoAA///hVVb/ABRVVf//5VVV/wAUVVX//+VVVf8AGqqr///qqquse6x7/wAogACDu4u7i/8AKIAAk6ybrJv/ABqqq/8AFVVV/wAUVVX/ABqqqwj/ABRVVf8AGqqr/wAOgAD/AB6qqv8ACKqr/wAiqqv/AAiqq/8AIqqr/wAEVVX/ACRVVYuxCAv3Yv1Y3Iv3R/kKjYv3R/0K3Iv3YvlYR4v7RP0HiYv7R/kHN4v7R/0HiYv7RPkHBQv7xc33xQf3mPgnQYv7b/vk+2r35DyLBQtX+JLH/EAH+DX45ovB/IGLi0/4LIsFCyP3JDuL9xr7JAUL9wUHi/8AOqqr///vVVX/ACqAAP//3qqr/wAaVVX//96qq/8AGlVV///TVVX/AA0qq1OLbYv//+Cqq///+oAA///fVVWA///fVVWA///kqqv//+/VVXX//+qqqwiuYgX/ACiqq/8AIqqruv8AEVVV/wA1VVWL/wAlVVWLqv//91VV/wAYqqv//+6qq/8AGKqr///uqqv/AAxVVf//41VVi2MIb0UH///pVVWL///l1Vb///6AAP//4lVViP//4lVViG////lVVf//5aqr///1qqv//+Wqq///9aqr///p1VX///CAAHn//+tVVXn//+tVVYJvi///3Kqri///51VV/wAE1VV2/wAJqqv//+6qq/8ACaqr///uqqv/AAyAAP//8dVV/wAPVVWACP8AD1VVgP8AEVVWg/8AE1VVhv8AE1VVhv8AE6qr///9gACfi/8AJ1VVi/8AIIAAkv8AGaqrmf8AGaqrmf8AFYAAof8AEVVVqQiNBov//+Sqq41yj///6VVVCMMGif8ADVVV///+gAD/AA1VVor/AA1VVYr/AA1VVf///yqr/wAOVVb///9VVf8AD1VV////VVX/AA9VVf///4AA/wAQqqv///+qq53///+qq53////VVf8AFFVVi/8AFqqrCAvNbAaL///sqqv///2qq///7NVV///7VVV4///7VVV4///3gAB6///zqqt8///zqqt8///vgAD///PVVf//61VV///2qqv//+tVVf//9qqr///lqqv///tVVWuL///zVVWL///zgAD/AAHVVf//86qr/wADqqv///Oqq/8AA6qr///01VX/AAVVVYGSCIGS///31VWU///5qquW///5qquW///81VX/AAyAAIuZi5//AAWqq/8AEKqr/wALVVX/AA1VVf8AC1VV/wANVVX/AA8qq/8ACqqrnpOek/8AFVVV/wAFqqv/ABeqq/8AA1VV/wAXqqv/AANVVf8AGIAA/wABqqv/ABlVVYsIC4ulkP8AGIAAlaKVov8ADaqrn/8AEVVVnP8AEVVVnP8AFFVW/wANgAD/ABdVVZX/ABdVVZX/ABlVVpD/ABtVVYuni/8AGVVVhv8AFqqrgf8AFqqrgf8AE1VV///ygACbegibev8ADCqrd/8ACFVVdP8ACFVVdP8ABCqr///ngACLcYtx///71VX//+eAAP//96qrdP//96qrdP//89VVd3t6e3r//+yqq///8oAA///pVVWB///pVVWB///mqquGb4sI///kqquL///mqqqQ///oqquV///oqquV///rqqr/AA2AAP//7qqrnP//7qqrnP//8lVVn4GigaKG/wAYgACLpQgLXbEF///wqqv//+yqq///7dVV///wgAB2///0VVV2///0VVX//+jVVf//+iqr///mqquLb4v//+aqq5D//+lVVZX//+lVVZX//+yqq/8ADYAAe5x7nP//89VVn///96qrov//96qrov//+9VV/wAYgACLpQiLpf8ABCqr/wAYgAD/AAhVVaL/AAhVVaL/AAwqq5+bnJuc/wATVVX/AA2AAP8AFqqrlf8AFqqrlf8AGVVVkKeLo4v/ABZVVf//+oAA/wAUqquA/wAUqquAnv//8NVV/wARVVX//+yqqwi7rwX//+lVVf8AGVVV///mKqv/ABOqq26Zbpn//+CAAJJpi///3Kqri///31VVhW1/bX///+ZVVf//7yqr///qqqv//+pVVf//6qqr///qVVX//+9VVf//5lVWf///4lVVf///4lVVhf//34AAi///3KqrCIv//9yqq5H//9+AAJf//+JVVZf//+JVVf8AEKqr///mVVb/ABVVVf//6lVV/wAVVVX//+pVVf8AGaqr///vKqupf6l//wAgqquF/wAjVVWL/wAhVVWLqv8ABoAA/wAcqquY/wAcqquY/wAZqqr/ABQqq/8AFqqr/wAbVVUICzrH+YhP/AuJB///9qqrm///9FVV/wAN1VV9/wALqqt9/wALqqv///DVVf8ACaqq///vqqv/AAeqq///76qr/wAHqqv//+7VVf8ABaqqef8AA6qref8AA6qr///uVVX/AAHVVf//7qqri///3Kqri///31VVhW1/bX///+ZVVf//7yqr///qqqv//+pVVQj//+qqq///6lVV///vVVX//+ZVVn///+JVVX///+JVVYX//9+AAIv//9yqq4v//9yqq5H//9+AAJf//+JVVZf//+JVVf8AEKqr///mVVb/ABVVVf//6lVV/wAVVVX//+pVVf8AGaqr///vKqupf6l//wAgqquF/wAjVVWLCP8AEVVVi/8AEaqr/wAB1VWd/wADqqud/wADqqv/ABEqq/8ABaqq/wAQVVX/AAeqq/8AEFVV/wAHqqv/AA8qq/8ACaqqmf8AC6qrmf8AC6qr/wALqqv/AA3VVf8ACVVVmwgLi3GG///ngACBdIF0///yVVV3///uqqt6///uqqt6///rqqr///KAAP//6Kqrgf//6Kqrgf//5qqqhv//5Kqri2+L///mqquQ///pVVWV///pVVWV///sqqv/AA2AAHucCHuc///z1VWf///3qqui///3qqui///71VX/ABiAAIuli6X/AAQqq/8AGIAA/wAIVVWi/wAIVVWi/wAMKqufm5ybnP8AE1VV/wANgAD/ABaqq5X/ABaqq5X/ABlVVZCniwj/ABtVVYv/ABlVVob/ABdVVYH/ABdVVYH/ABRVVv//8oAA/wARVVV6/wARVVV6/wANqqt3lXSVdJD//+eAAItxCAtfsAX///Cqq///5qqrdXf//+NVVf//8VVV///jVVX///FVVf//4lVW///4qqv//+FVVYv//9yqq4v//+Mqqv8ABqqr///pqqv/AA1VVf//6aqr/wANVVX//+4qqpv///Kqq/8AEqqr///yqqv/ABKqq///9tVV/wATKqqG/wATqquG/wATqqv///2AAP8AECqqi/8ADKqrCPgYtQaL/wAaqqv///tVVf8AGlVV///2qqul///2qqul///yKqr/ABcqq///7aqr/wAUVVX//+2qq/8AFFVV///pVVX/ABBVVnD/AAxVVXD/AAxVVf//4NVV/wAGKqv//9yqq4tpi2z///nVVW////Oqq2////Oqq///56qrev//61VV///qVVUI///rVVX//+pVVXv//+aAAP//9Kqr///iqqv///Sqq///4qqr///6VVVri///3VVVi2f/AAWAAP//3yqrlv//4lVVlv//4lVV/wAP1VX//+ZVVv8AFKqr///qVVX/ABSqq///6lVV/wAYqqr//+8qq/8AHKqrf/8AHKqrf6uF/wAjVVWLCP8AKVVVi/8AJdVW/wAHqqv/ACJVVf8AD1VV/wAiVVX/AA9VVf8AHNVW/wAZVVb/ABdVVf8AI1VVCAv73AaLkf8AAqqr/wALKqv/AAVVVf8AEFVV/wAFVVX/ABBVVZT/ABDVVv8ADKqr/wARVVX/AAyqq/8AEVVV/wARKqr/AA9VVv8AFaqr/wANVVX/ABWqq/8ADVVV/wAbKqr/AAaqq/8AIKqri6GL/wAU1VWH/wATqquD/wATqquDnP//9Sqr/wAOVVX///JVVQj/AA5VVf//8lVV/wALVVb///Aqq/8ACFVVef8ACFVVef8ABCqr///sqquL///rVVUIC/wsx/gs9wDB+wD3FQfdprTBHv8AFqqri53///yqq/8ADVVV///5VVUIl78FeZN0j2+L///xVVWL///wgAD///2AAP//76qrhv//76qrhv//8Sqq///3gAD///Kqq3////Kqq3////TVVf//8Cqrgv//7FVVgv//7FVV///7gAD//+cqq4ttCPsrK1UHC/hETz2JB///7qqrp///6IAAof//4lVVm///4lVVm///3Sqrk2OLaYtr///5qqtt///zVVVt///zVVX//+XVVXr//+mqq///6qqr///pqqv//+qqq///7lVVcn7//+NVVX7//+NVVf//+YAA///hVVaL///fVVUIi///31VV/wAGgAD//+FVVpj//+NVVZj//+NVVf8AEaqr///m1Vb/ABZVVf//6lVV/wAWVVX//+pVVf8AGiqreqn///Oqq6n///Oqq6v///nVVa2Ls4v/ACLVVZP/AB2qq5v/AB2qq5v/ABeAAKH/ABFVVacIjUsGi///91VV////qqv///Sqq////1VVff///1VVff///dVW///xKqv///xVVf//8FVV///8VVX///BVVf//+lVW///wVVb///hVVf//8FVV///4VVX///BVVf//9VVW///xqqv///JVVX7///JVVX7//+6qq///9YAAdoN2g///5iqrh///4VVViwhni2mSa5lrmf//5VVVof//6qqrqQhcXwWX///wqqv/AA4qq///8lVV/wAQVVV//wAQVVV//wASKqv///XVVZ////eqq5////eqq/8AFSqr///5qqr/ABZVVf//+6qr/wAWVVX///uqq/8AFtVW///91VX/ABdVVYv/ABdVVYul/wADVVX/AByqq/8ABqqr/wAcqqv/AAaqq/8AGtVVmKT/ABNVVQik/wATVVX/ABTVVf8AG1VW/wAQqqv/ACNVVf8AEKqr/wAjVVX/AAhVVf8ALlVWi/8AOVVVCAuL///mqqv///sqq///6Cqq///2VVX//+mqq///9lVV///pqqt+///sqqr//++qq///76qr///vqqv//++qq///7Kqqfv//6aqr///2VVX//+mqq///9lVV///oKqr///sqq///5qqri///5qqri///6Cqq/wAE1VX//+mqq/8ACaqr///pqqv/AAmqq///7KqqmP//76qr/wAQVVUI///vqqv/ABBVVX7/ABNVVv//9lVV/wAWVVX///ZVVf8AFlVV///7Kqv/ABfVVov/ABlVVYv/ABlVVf8ABNVV/wAX1Vb/AAmqq/8AFlVV/wAJqqv/ABZVVZj/ABNVVv8AEFVV/wAQVVX/ABBVVf8AEFVV/wATVVaY/wAWVVX/AAmqq/8AFlVV/wAJqqv/ABfVVv8ABNVV/wAZVVWLCP8AGVVVi/8AF9VW///7Kqv/ABZVVf//9lVV/wAWVVX///ZVVf8AE1VWfv8AEFVV///vqqv/ABBVVf//76qrmP//7Kqq/wAJqqv//+mqq/8ACaqr///pqqv/AATVVf//6Cqqi///5qqrCAv9iMf3eweLq/8ABCqr/wAb1VX/AAhVVf8AF6qr/wAIVVX/ABeqq/8AC1VW/wATqqr/AA5VVf8AD6qr/wAOVVX/AA+qq5z/AAuqqv8AE6qr/wAHqqv/ABOqq/8AB6qr/wAU1VX/AAPVVaGLo4v/ABOAAP//+9VVmv//96qrmv//96qr/wALqqv///TVVf8ACFVVfQj/AAhVVX3/AAXVVv//8Cqr/wADVVX//+5VVf8AA1VV///uVVX/AAGqq///7dVWi///7VVVCPukx/enB4v/ABlVVf///YAA/wAYqquGo4ajgv8AFSqrfv8AElVVfv8AElVV///uKqv/AA7VVv//6VVV/wALVVX//+lVVf8AC1VV///iqqv/AAWqq2eL///aqquL///fVVX///bVVW///+2qq2///+2qq3f//+oqqn///+aqqwiJ+AsGC/xix/hiBwuL///zVVX/AARVVf//9VVW/wAIqqv///dVVf8ACKqr///3VVX/AAqqqv//+6qr/wAMqquL/wAMqquL/wAKqqr/AARVVf8ACKqr/wAIqqv/AAiqq/8ACKqr/wAEVVX/AAqqqov/AAyqq4v/AAyqq///+6qr/wAKqqr///dVVf8ACKqr///3VVX/AAiqq///9VVW/wAEVVX///NVVYsI///zVVWL///1VVb///uqq///91VV///3VVX///dVVf//91VV///7qqv///VVVov///NVVQgL+LNP/LgHi///8qqr////Kqv///NVVf///lVVf////lVVf////Kqr///1gACGgoaC///4qqv///iqq///9lVV///6VVX///ZVVf//+lVV///zKqv///0qq3uL///0qquL///zVVX/AAKqq33/AAVVVQiCVgWbhZuIm4v/ABqqq4v/ABXVVf8AA9VVnP8AB6qrnP8AB6qr/wANgAD/AArVVZWZlZn/AAbVVf8AEKqr/wADqqv/ABNVVf8AA6qr/wATVVX/AAHVVf8AFaqri6MIC/2Ix/eIB/eR+4jmi/ue9473gvdnM4v7ePtli/iMBQv9iMf5iAcL++DH93sHi6v/AAQqq/8AG9VV/wAIVVX/ABeqq/8ACFVV/wAXqqv/AAtVVv8AE6qq/wAOVVX/AA+qq/8ADlVV/wAPqquc/wALqqr/ABOqq/8AB6qr/wATqqv/AAeqq/8AFNVV/wAD1VWhi6OL/wATgAD///vVVZr///eqq5r///eqq/8AC6qr///01VX/AAhVVX0I/wAIVVV9/wAF1Vb///Aqq/8AA1VV///uVVX/AANVVf//7lVV/wABqqv//+3VVov//+1VVQj7pMf3pweL/wAZVVX///2AAP8AGKqrhqOGo4L/ABUqq37/ABJVVX7/ABJVVf//7iqr/wAO1Vb//+lVVf8AC1VV///pVVX/AAtVVf//4qqr/wAFqqtni///2qqri///31VV///21VVv///tqqtv///tqqt3///qKqp////mqqsIiAb///6qq/8ABKqr////Kqr/AApVVf///6qrm////6qrm////4AA/wAQqqv///9VVf8AEVVVCE8Gi4X/AABVVf//94AA/wAAqquA/wAAqquA/wAAgAD///Qqq/8AAFVV///zVVX/AABVVf//81VV/wAAgAD///OAAP8AAKqr///zqqv/AACqq///86qr/wAAVVX///WAAIv///dVVQgLi///3Kqrkf//34AAl///4lVVl///4lVV/wAQqqv//+ZVVv8AFVVV///qVVX/ABVVVf//6lVV/wAZqqv//+8qq6l/qX//ACCqq4X/ACNVVYv/ACNVVYv/ACCAAJH/AB2qq5f/AB2qq5f/ABmqqv8AENVV/wAVqqv/ABWqqwj/ABWqq/8AFaqr/wAQ1VX/ABmqqpf/AB2qq5f/AB2qq5H/ACCAAIv/ACNVVYv/ACNVVYX/ACCAAH//AB2qq3//AB2qq///7yqr/wAZqqr//+pVVf8AFaqr///qVVX/ABWqq///5lVW/wAQ1VX//+JVVZf//+JVVZf//9+AAJH//9yqq4sI///cqquL///fVVWFbX9tf///5lVV///vKqv//+qqq///6lVV///qqqv//+pVVf//71VV///mVVZ////iVVV////iVVWF///fgACL///cqqsIC4ul/wAEKqv/ABiAAP8ACFVVov8ACFVVov8ADCqrn5ucm5z/ABNVVf8ADYAA/wAWqquV/wAWqquV/wAZVVWQp4uni/8AGVVVhv8AFqqrgf8AFqqrgf8AE1VV///ygACbegibev8ADCqrd/8ACFVVdP8ACFVVdP8ABCqr///ngACLcYtx///71VX//+eAAP//96qrdP//96qrdP//89VVd3t6e3r//+yqq///8oAA///pVVWB///pVVWB///mqquGb4sIb4v//+aqq5D//+lVVZX//+lVVZX//+yqq/8ADYAAe5x7nP//89VVn///96qrov//96qrov//+9VV/wAYgACLpQgL++DH95AHi/8AFqqrjv8AFSqqkf8AE6qrkf8AE6qr/wAJKqv/ABEqqv8ADFVV/wAOqqv/AAxVVf8ADqqr/wAPqqv/AAuAAJ7/AAhVVZ7/AAhVVf8AFoAA/wAEKquli/8AB1VVi/8AB6qr///+qquT///9VVUIksYFhf8AAVVV///6Kqv/AAEqq///+lVVjP//+lVVjP//+iqr/wAAgACFi///3VVVi///4qqr///3VVVz///uqqtz///uqqv//+xVVf//6aqq///wqqv//+Sqq////qqr/wAEqqv///8qqv8AClVV////qqub////qqub////gAD/ABCqq////1VV/wARVVUITwaLhf8AAFVV///3gAD/AACqq4D/AACqq4D/AACAAP//9Cqr/wAAVVX///NVVf8AAFVV///zVVX/AACAAP//84AA/wAAqqv///Oqq/8AAKqr///zqqv/AABVVf//9YAAi///91VVCAtWZwWda/8AGYAA///oVVWs///wqqus///wqqv/ACSAAP//+FVVs4uhi6COn5Gfkf8AEdVVlP8AD6qrl/8AD6qrl/8ADFVV/wAO1VWU/wARqquU/wARqqv/AASAAP8AFNVVi6MIi/8AH1VV///5Kqv/ABgqq///8lVVnP//8lVVnP//7yqrmHeUd5R1/wAGgABzj3OPdf8ABNVVd/8ABaqrd/8ABaqr///vKqv/AAfVVf//8lVVlf//8lVVlf//+Sqr/wAPVVWL/wAUqqsIi5f/AAMqq/8ACqqr/wAGVVX/AAlVVf8ABlVV/wAJVVX/AAfVVv8AB6qr/wAJVVWR/wAJVVWR/wAKgAD/AASqq/8AC6qr/wADVVX/AAuqq/8AA1VV/wALKqr/AAGqq/8ACqqri/8AG1VVi/8AFiqr///6gACcgJyA/wAOKqv//+/VVf8AC1VV///qqqsIwasF///wqqup///qgACh///kVVWZ///kVVWZ///fKquSZYv//+yqq4t4///9VVX//+1VVf//+qqr///tVVX///qqq///7yqr///31VV8gHyA///z1VX///Iqq///9qqr///vVVX///aqq///71VV///7VVX//+xVVov//+lVVQiL///iqqv/AAbVVf//6VVV/wANqqt7/wANqqt7/wAQ1VX///OAAJ+Cn4Kh///5VVWj///7qquj///7qquh///61VWfhZ+F/wAQ1VX///eqq/8ADaqr///1VVX/AA2qq///9VVV/wAG1VV7i///6qqrCIv///Kqq////NVV///0Kqr///mqq///9aqr///5qqv///Wqq///99VV///3KqqB///4qquB///4qqv///Sqq///+lVV///zVVWH///zVVWH///zVVaJ///zVVWL///kqquLcf8ABoAA///nVVWY///nVVWY///tVVb/ABLVVf//81VV/wAYqqsIC8H7GPcZT/sZJ1Xv+8EHi///71VV/wACKqv///CAAP8ABFVV///xqqv/AARVVf//8aqr/wAG1Vb///OAAP8ACVVV///1VVX/AAlVVf//9VVV/wAMVVb///eAAP8AD1VV///5qqv/AA9VVf//+aqr/wASVVb///zVVf8AFVVVi/8AC1VVi5j/AAGqq/8ADqqr/wADVVX/AA6qq/8AA1VVmP8AA6qr/wALVVWPCIbBBf//9VVV///7VVX///TVVv///Cqr///0VVWI///0VVWI///0gAD///6AAP//9Kqri3eL///wVVX/AAWqq///9Kqr/wALVVX///Sqq/8AC1VV///6VVWbi/8AFKqrCPfBBwv34E/7eweLa///+9VV///kKqv///eqq///6FVV///3qqv//+hVVf//9Kqq///sVVb///Gqq///8FVV///xqqv///BVVXr///RVVv//7FVV///4VVX//+xVVf//+FVV///rKqv///wqq3WLc4v//+yAAP8ABCqrfP8ACFVVfP8ACFVV///0VVX/AAsqq///96qrmQj///eqq5n///oqqv8AD9VV///8qqv/ABGqq////Kqr/wARqqv///5VVf8AEiqqi/8AEqqrCPekT/unB4v//+aqq/8AAlVV///nVVX/AASqq3P/AASqq3P/AAjVVf//6tVVmP//7aqrmP//7aqrnf//8Sqqov//9Kqrov//9Kqr/wAdgAD///pVVa+L/wAlVVWL/wAgqqv/AAkqq6f/ABJVVaf/ABJVVZ//ABXVVpf/ABlVVQiOBv8AAVVV///7VVX/AADVVv//9aqr/wAAVVV7/wAAVVV7/wAAgAD//+9VVf8AAKqr///uqqsIxwaLkf///6qr/wAIgAD///9VVZb///9VVZb///+AAP8AC9VV////qqv/AAyqq////6qr/wAMqqv///+AAP8ADIAA////VVX/AAxVVf///1VV/wAMVVX///+qq/8ACoAAi/8ACKqrCAv3JfxiyYv3FfgOjYv3HvwOyYv3HPhiT4v7AfwXiYv7HfgXUov7FfwXiYv7BPgXBQv3gvjxS4v7KfwZ+y34GUiL91D8ZGEgBf///Kqr///2qqv///wqqv//9tVV///7qquC///7qquC///61VX///fVVYX///iqq4X///iqq///+NVVhf//96qr///7VVX///eqq///+1VV///2gAD///2qq///9VVVi///9qqri///9tVV/wABKquC/wACVVWC/wACVVX///cqq/8AAoAA///3VVX/AAKqqwiFUwX/AAlVVf///VVV/wAJqqv///3VVpX///5VVZX///5VVZX///8qq5WL/wAhVVWL/wAaqqv/AAiqq5//ABFVVZ//ABFVVf8AD6qr/wAXqqv/AAtVVakIC2f4CMH7tAf3qPgIi6/77ouLVfebiwULi/8ADVVV///7VVX/AAtVVv//9qqr/wAJVVX///aqq/8ACVVV///0qqr/AASqq///8qqri///8qqri///9Kqq///7VVX///aqq///9qqr///2qqv///aqq///+1VV///0qqqL///yqquL///yqqv/AASqq///9Kqq/wAJVVX///aqq/8ACVVV///2qqv/AAtVVv//+1VV/wANVVWLCP8ADVVVi/8AC1VW/wAEqqv/AAlVVf8ACVVV/wAJVVX/AAlVVf8ABKqr/wALVVaL/wANVVUIC4v//8yqq/8ACdVV///P1VX/ABOqq17/ABOqq17/ABqqqv//2Kqr/wAhqqv//95VVf8AIaqr///eVVX/ACdVVf//5VVWuP//7FVVuP//7FVV/wAwKqv///Yqq/8AM1VVi/8AM1VVi/8AMCqr/wAJ1VW4/wATqqu4/wATqqv/ACdVVf8AGqqq/wAhqqv/ACGqqwj/ACGqq/8AIaqr/wAaqqr/ACdVVf8AE6qruP8AE6qruP8ACdVV/wAwKquL/wAzVVWL/wAzVVX///Yqq/8AMCqr///sVVW4///sVVW4///lVVb/ACdVVf//3lVV/wAhqqv//95VVf8AIaqr///Yqqv/ABqqql7/ABOqq17/ABOqq///z9VV/wAJ1VX//8yqq4sI///MqquL///P1VX///Yqq17//+xVVV7//+xVVf//2Kqr///lVVb//95VVf//3lVV///eVVX//95VVf//5VVW///Yqqv//+xVVV7//+xVVV7///Yqq///z9VVi///zKqrCAuLt/8ACFVV/wApVVX/ABCqq/8AJqqr/wAQqqv/ACaqq/8AFqqq/wAhqqr/AByqq/8AHKqr/wAcqqv/AByqq/8AIaqq/wAWqqr/ACaqq/8AEKqr/wAmqqv/ABCqq/8AKVVV/wAIVVW3i7eL/wApVVX///eqq/8AJqqr///vVVX/ACaqq///71VV/wAhqqr//+lVVv8AHKqr///jVVUI/wAcqqv//+NVVf8AFqqq///eVVb/ABCqq///2VVV/wAQqqv//9lVVf8ACFVV///WqquLX4tf///3qqv//9aqq///71VV///ZVVX//+9VVf//2VVV///pVVb//95VVv//41VV///jVVX//+NVVf//41VV///eVVb//+lVVv//2VVV///vVVX//9lVVf//71VV///Wqqv///eqq1+LCF+L///Wqqv/AAhVVf//2VVV/wAQqqv//9lVVf8AEKqr///eVVb/ABaqqv//41VV/wAcqqv//+NVVf8AHKqr///pVVb/ACGqqv//71VV/wAmqqv//+9VVf8AJqqr///3qqv/AClVVYu3CAv3Hftft6b7CvdE9wj3QmGoBQu7+5xbBwtg97i7+3AH9xP3DQWX/wALVVX/AAuAAP8AC1VWlv8AC1VVlv8AC1VV/wAJqqv/AAuqq/8ACFVVl/8ACFVVl/8ABtVWmP8ABVVVmf8ABVVVmf8AAqqrmoubi/8AIqqrfv8AGtVVcZ5xnv//36qr/wAJgAD//9lVVYsI///zVVWL///ygAD///4qq///8aqr///8VVX///Gqq////FVV///yVVX///oqq36DfoP///RVVf//9YAA///1qqt+///1qqt+///4gAD//+/VVf//+1VV///sqqsIvocF/wAFVVX/AA9VVf8ACVVW/wANqqv/AA1VVZf/AA1VVZf/ABNVVpH/ABlVVYv/ABqqq4v/ABSqqv//+iqr/wAOqqv///RVVf8ADqqr///0VVX/AAdVVf//8NVWi///7VVVi///6Kqr///5qqv//+xVVf//81VVe///81VVe///8Kqr///vVVV5///uqqsICyP7JL2L9xr3JAUL9+BP+3sHi2v///vVVf//5Cqr///3qqv//+hVVf//96qr///oVVX///Sqqv//7FVW///xqqv///BVVf//8aqr///wVVV6///0VVb//+xVVf//+FVV///sVVX///hVVf//6yqr///8Kqt1i3OL///sgAD/AAQqq3z/AAhVVXz/AAhVVf//9FVV/wALKqv///eqq5kI///3qquZ///6Kqr/AA/VVf///Kqr/wARqqv///yqq/8AEaqr///+VVX/ABIqqov/ABKqqwj3pE/9Rsb3kgf/AA1VVX+b///2qqv/ABKqq///+VVV/wASqqv///lVVaL///yqq/8AG1VVi/8AJVVVi/8AIKqr/wAJKqun/wASVVWn/wASVVWf/wAV1VaX/wAZVVUIjgb/AAFVVf//+1VV/wAA1Vb///Wqq/8AAFVVe/8AAFVVe/8AAIAA///vVVX/AACqq///7qqrCMcGi5H///+qq/8ACIAA////VVWW////VVWW////gAD/AAvVVf///6qr/wAMqqv///+qq/8ADKqr////gAD/AAyAAP///1VV/wAMVVX///9VVf8ADFVV////qqv/AAqAAIv/AAiqqwgL/AfB+D1VB/sCNaRpBQv7HfdfX3D3CvtE+wj7QrVuBQslwfHLu0v3plAH+037qYteBQv7XvscB/ca914FC/sA+yTGi9z3ANz7AMyL+wD3JAULrwb/AANVVZf/AAWAAJb/AAeqq5X/AAeqq5X/AAuAAJD/AA9VVYuVi/8ACoAA///9VVWW///6qquW///6qqv/AAuAAP//+qqql///+qqrl///+qqr/wAMKqv///qqqv8ADFVV///6qqv/AAxVVf//+qqr/wAM1Vb///1VVf8ADVVViwj/AAyqq4v/AAtVVY6VkZWR/wAIgAD/AAfVVZL/AAmqq5L/AAmqq/8ABYAAlo//AAxVVY//AAxVVf8AAqqr/wAMKqv/AAFVVZcIZwb///1VVX+GgP//+Kqrgf//+KqrgYCG///xVVWL///2qquLgf8AAoAA///1VVWQ///1VVWQgP8ABSqr///0qqv/AAVVVf//9KqrkX//AAWqq///81VV/wAFVVX///NVVf8ABVVVfv8AAqqr///yqquLCP//8qqri3////zVVf//9VVV///5qqv///VVVf//+aqrgv//99VV///4qquB///4qqv///aqq4X///Uqqv//+1VV///zqqv///tVVf//86qriP//9Cqq///+qqv///SqqwgLi///8qqr/wACgAD///OqqpD///Sqq5D///Sqq/8ABqqrgf8ACFVV///3VVX/AAhVVf//91VV/wAJ1Vb///kqq/8AC1VVhv8AC1VVhv8ADFVW///9gAD/AA1VVYv/AAyqq4uX/wACqqv/AAtVVf8ABVVV/wALVVX/AAVVVf8ACdVWkv8ACFVV/wAIqqsI/wAIVVX/AAiqq/8ABoAAlf8ABKqr/wALVVX/AASqq/8AC1VV/wACVVX/AAuqq4uXi/8ADKqr///9qquX///7VVX/AAtVVf//+1VV/wALVVX///mAAP8ACiqr///3qquU///3qquU///2Kqr/AAcqq///9Kqr/wAFVVX///Sqq/8ABVVVf/8AAqqr///zVVWLCP//8qqri///86qq///9gAD///Sqq4b///Sqq4b///Yqqv//+Sqr///3qqv///dVVf//96qr///3VVX///lVVf//9dVWhv//9FVVhv//9FVV///9gAD///PVVov///NVVQgLi///71VV///6qqt9///1VVX///Sqq///9VVV///0qqv///JVVv//+lVV///vVVWLe4v///KAAP8ABYAAgJaAlv//+oAA/wAN1VWL/wAQqquL/wAQqqv/AAVVVf8ADiqq/wAKqqv/AAuqq/8ACqqr/wALqqv/AA2qqv8ABdVV/wAQqquLCP8AEKqri/8ADaqq///6VVX/AAqqq///9Kqr/wAKqqv///Sqq/8ABVVVfYv//+9VVQgL95D3HAf/AC6qq4v/ACuqqv//+iqr/wAoqqv///RVVf8AKKqr///0VVX/ACNVVf//7iqrqXOpc/8AF6qr///hgAD/ABFVVWb/ABFVVWb/AAiqq///1Cqri///zVVVi///zVVV///3VVX//9Qqq///7qqrZv//7qqrZv//6FVV///hgABtcwhtc///3Kqr///uKqv//9dVVf//9FVV///XVVX///RVVf//1FVW///6Kqv//9FVVYsI+xz3rveWwQYL++r3bwf/AD1VVYu//wAHgAD/ACqqq5r/ACqqq5r/ACOAAP8AEyqr/wAcVVX/ABdVVf8AHFVV/wAXVVX/ABZVVv8AGdVW/wAQVVX/ABxVVf8AEFVV/wAcVVWX/wAbKqv/AAeqq6X/AAeqq6X/AATVVf8AF4AAjaCNoIz/AA7VVYv/AAiqqwiL/wAIqquK/wAO1VWJoImg///7Kqv/ABeAAP//+FVVpf//+FVVpX//ABsqq///76qr/wAcVVX//++qq/8AHFVV///pqqr/ABnVVv//46qr/wAXVVX//+Oqq/8AF1VV///cgAD/ABMqq///1VVVmv//1VVVmlf/AAeAAP//wqqriwj7b/vMPVUGC68G/wADVVWX/wAFgACW/wAHqquV/wAHqquV/wALgACQ/wAPVVWLlYv/AAqAAP///VVVlv//+qqrlv//+qqr/wALgAD///qqqpf///qqq5f///qqq/8ADCqr///6qqr/AAxVVf//+qqr/wAMVVX///qqq/8ADNVW///9VVX/AA1VVYsI/wANVVWL/wALgACO/wAJqquR/wAJqquR/wAIVVX/AAfVVZL/AAmqq5L/AAmqq/8ABYAAlo//AAxVVY//AAxVVf8AAqqr/wAMKqv/AAFVVZcIZwb///1VVX+GgP//+Kqrgf//+KqrgYCG///xVVWL///2qquLgf8AAoAA///1VVWQ///1VVWQgP8ABSqr///0qqv/AAVVVf//9KqrkX//AAWqq///81VV/wAFVVX///NVVf8ABVVVfv8AAqqr///yqquLCP//8qqri3////zVVf//9VVV///5qqv///VVVf//+aqrgv//99VV///4qquB///4qqv///aqq4X///Uqqv//+1VV///zqqv///tVVf//86qriP//9Cqq///+qqv///SqqwgLi///81VV/wACgAD///PVVpD///RVVZD///RVVf8ABqqr///11Vb/AAhVVf//91VV/wAIVVX///dVVf8ACdVW///5Kqv/AAtVVYb/AAtVVYb/AAxVVv///YAA/wANVVWL/wAMqquLl/8AAqqr/wALVVX/AAVVVf8AC1VV/wAFVVX/AAnVVpL/AAhVVf8ACKqrCP8ACFVV/wAIqqv/AAaAAJX/AASqq/8AC1VV/wAEqqv/AAtVVf8AAlVV/wALqquLl4v/AAyqq////aqrl///+1VV/wALVVX///tVVf8AC1VV///5gAD/AAoqq///96qrlP//96qrlP//9iqq/wAHKqv///Sqq/8ABVVV///0qqv/AAVVVX//AAKqq///81VViwj///Kqq4v///Oqqv///YAA///0qquG///0qquG///2Kqr///kqq///96qr///3VVX///eqq///91VV///5VVX///XVVob///RVVYb///RVVf///YAA///z1VaL///zVVUIC/u8Bov/ABSqq/8AA4AA/wATVVWSnZKd/wAJ1VX/AA/VVf8ADKqr/wANqqv/AAyqq/8ADaqr/wAPgAD/AArVVf8AElVVk/8AElVVk/8AFNVWj/8AF1VVi/8AGVVVi/8AFdVWh/8AElVVg/8AElVVg/8ADyqr///1VVWX///yqqsIl///8qqrlP//8Cqqkf//7aqrkf//7aqrjv//7IAAi///61VVCAthBo1j/wAOKqts/wAaVVV1/wAaVVV1/wAhKquAs4uzi/8AISqrlv8AGlVVof8AGlVVof8AD4AAqv8ABKqrswhhBv//+VVVbf//9IAA///rgAD//++qq4D//++qq4D//+jVVf//+oAAbYtxi///6dVV/wAGVVX//+2qq/8ADKqr///tqqv/AAyqq///9NVV/wATqqqH/wAaqqsIC2EGjWP/AA5VVWz/ABqqq3X/ABqqq3WsgP8AJ1VVi7OL/wAhKquW/wAaVVWh/wAaVVWh/wAPgACq/wAEqquzCGEG///5VVX//+Kqq///9IAA///rqqr//++qq///9Kqr///vqqv///Sqq///6NVV///6VVVti3GL///p1VX/AAZVVf//7aqr/wAMqqv//+2qq/8ADKqr///01VX/ABOqqof/ABqqqwgL9fckVYs1+wY49wZNi/cB+yQFC1j7TcCLyvdNBQtZ+znAi8n3OQUL+LNP/LgHi///8qqr////Kqv///NVVf///lVVf////lVVf////Kqr///1gACGgoaC///4qqv///iqq///9lVV///6VVX///ZVVf//+lVV///zKqv///0qq3uL///1VVWL///zVVb/AAKqq///8VVV/wAFVVUIglYFm4WbiJuL/wAaqquL/wAV1VX/AAPVVZz/AAeqq5z/AAeqq/8ADYAA/wAK1VWVmZWZ/wAG1VX/ABCqq/8AA6qr/wATVVX/AAOqq/8AE1VV/wAB1VX/ABWqq4ujCAv5Fov7s/lcQYsFC/ePxftZ3Qar/wAIqqv/ABwqq/8ADSqq/wAYVVX/ABGqq/8AGFVV/wARqqv/ABSAAP8AFSqq/wAQqqv/ABiqq/8AEKqr/wAYqqv/AAyqqv8AGyqq/wAIqqv/AB2qq/8ACKqr/wAdqqv/AARVVf8AHtVVi6uLt///94AA/wAoqqt6/wAlVVV6/wAlVVV0/wAgKqtupghupv//3iqroP//2VVVmv//2VVVmv//11VW/wAHgAD//9VVVYv//9Sqq4ti///4gAD//9lVVXz//9lVVXxpdv//4qqrcP//4qqrcP//6NVV///f1VV6///aqqt6///aqqv///eAAGKL///TVVUIi2v/AARVVf//4VVV/wAIqqv//+Kqq/8ACKqr///iqqv/AAzVVf//5SqqnP//56qrnP//56qr/wAUqqv//+rVVf8AGFVVef8AGFVVef8AG9VW///yqqv/AB9VVf//91VVCDn7WVH3j/dJB23/AASqq///5YAA/wAJVVV0mXSZ///sqqv/ABFVVf//8FVV/wAUqqv///BVVf8AFKqr///0VVb/ABeAAP//+FVV/wAaVVX///hVVf8AGlVV///8Kqv/ABvVVov/AB1VVYv/ACNVVf8ABoAA/wAgqquYqZip/wAR1VX/ABnVVf8AFqqr/wAVqqsI/wAWqqv/ABWqq/8AGqqqnP8AHqqr/wAMVVX/AB6qq/8ADFVVrP8ABiqr/wAjVVWL/wAjVVWLrIX/AB6qq3//AB6qq3//ABqqqv//7yqr/wAWqqv//+pVVf8AFqqr///qVVX/ABHVVf//5iqrmG2Ybf8ABoAAaotnCItt///8Kqtv///4VVVx///4VVVx///0VVb//+iqq///8FVV///rVVX///BVVf//61VV///sqqv//+7VVnT///JVVXT///JVVf//5YAA///2gABt///6qqsIC0z7eMaL2Pd4BQuL///qqquP///sKqqT///tqquT///tqquW///v1VWZfZl9/wAQKquA/wASVVWD/wASVVWD/wAT1VaH/wAVVVWL/wAUqquL/wATqqqP/wASqquT/wASqquT/wAQVVWWmZkImZmW/wAQKquT/wASVVWT/wASVVWP/wAT1VaL/wAVVVWL/wAUqquH/wATqqqD/wASqquD/wASqquA/wAQVVV9mX2Z///vqquW///tVVWT///tVVWT///sVVaP///rVVWLCP//6qqri///7Cqqh///7aqrg///7aqrg///79VVgH19fX2A///vqquD///tVVWD///tVVWH///sVVaL///rVVUIC4v/AA6qq/8AAqqr/wANqqr/AAVVVf8ADKqr/wAFVVX/AAyqq/8AB4AAlv8ACaqr/wAJVVX/AAmqq/8ACVVV/wALKqr/AAeAAP8ADKqr/wAFqqv/AAyqq/8ABaqr/wANqqr/AALVVf8ADqqri/8ADqqri/8ADaqq///9Kqv/AAyqq///+lVV/wAMqqv///pVVZb///iAAP8ACVVV///2qqsI/wAJVVX///aqq/8AB4AAgP8ABaqr///zVVX/AAWqq///81VV/wAC1VX///JVVov///FVVYv///FVVf///Sqr///yVVb///pVVf//81VV///6VVX///NVVf//+IAA///01Vb///aqq///9lVV///2qqv///ZVVYD///iAAP//81VV///6qqv///NVVf//+qqr///yVVb///1VVf//8VVViwj///FVVYv///JVVv8AAqqr///zVVX/AAVVVf//81VV/wAFVVX///TVVv8AB4AA///2VVX/AAmqq///9lVV/wAJqqv///iAAP8ACyqq///6qqv/AAyqq///+qqr/wAMqqv///1VVf8ADaqqi/8ADqqrCAtrBv//+qqrdYL//+2AAP//81VVfP//81VVfP//7VVW///4gAD//+dVVYt3i3X/AAPVVXP/AAeqq3P/AAeqq3P/AAiAAHP/AAlVVf//5qqr/wAJVVX//+cqqv8ACFVW///nqqv/AAdVVf//56qr/wAHVVX//+mAAP8AA6qr///rVVWLCP//7Kqri///76qq///8gAD///Kqq4T///Kqq4T///TVVf//9oAAgn+Cf///+NVV///yVVX///qqq///8Kqr///6qqv///Cqq4d7///9VVX//+9VVQisBv8ABKqr/wAVVVX/AAlVVf8AEqqrmZuZm/8AEqqrk/8AF1VVi/8AE1VVi/8AFSqr///8VVWi///4qqui///4qqv/ABfVVf//96qq/wAYqqv///aqq/8AGKqr///2qqv/ABiqqv//94AA/wAYqqv///hVVf8AGKqr///4VVX/ABaqqv///Cqr/wAUqquLCP8AEqqri/8AECqq/wADgAD/AA2qq5L/AA2qq5L/AAuAAP8ACVVV/wAJVVX/AAuqq/8ACVVV/wALqqv/AAeAAP8ADYAA/wAFqqv/AA9VVf8ABaqr/wAPVVX/AAPVVf8AD6qrjZsICwAAAQAAAAwAAAAWAAAAAgABAAEBggABAAQAAAACAAAAAAABAAAACgAcAB4AAURGTFQACAAEAAAAAP//AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAADAAwO+hkcAAEOhAAEAAAAMwBwAKoA5AEWAVABfgLAA/4FBAYOBpgGDgaqBg4HQAdOB1gHZgdmB2YHZgdmB2YHtAdYB1gHZgdmB2YI3gloCWgJaAmqCjQKcgo0CnIKNApyCxwLHAySDRwOQge0B1gHtAscDlAOVgAOADj/zgBY/+4Anv+2AL7/7gDA/+4BHv+8ASD/vAEw//sBMf/uATL/tgEz/+4BNP+2AT7/vAFR/6oADgAO/38AEP9/ACP/yQCB/8kAgv/JAIP/yQCE/8kAhf/JAIb/yQCH/8kAwf/JAMP/yQDF/8kBWf9/AAwAOP+kAJ7/kQC+/9sAwP/bAR7/pAEg/6QBMP/JATL/kQEz/9sBNP+RAT7/pAFR/5EADgAO/2cAEP9nACP/tgCB/7YAgv+2AIP/tgCE/7YAhf+2AIb/tgCH/7YAwf+2AMP/tgDF/7YBWf9nAAsAOAAGAJ7/8wC+ABgAwAAYAR4ABgEgAAYBMAAGATL/8wEzABgBNP/zAT4ABgBQAA7/kQAc/5EAHf+RAG7/fwCB/7wAgv+8AIP/vACE/7wAhf+8AIb/vACH/7wAof+RAKL/kQCj/5EApP+RAKX/kQCm/5EAp/+RAKj/kQCp/5EAqv+RAKv/kQCs/5EArQAYAK4AGACvABgAsAAYALP/kQC0/5EAtf+RALb/kQC3/5EAuf+RALr/pAC7/6QAvP+kAL3/pAC+/5EAwP+RAMH/vADC/5EAw/+8AMT/kQDF/7wAxv+RAMj/kQDK/5EAzP+RAM7/kQDU/5EA1v+RANj/kQDa/5EA3P+RAOoAGADsABgA7gAYAPAAGADyABgBCf+RAQv/kQEN/5EBD/+RARH/pAET/6QBFf+kARf/kQEZ/5EBG/+RAR3/kQEl/6QBJ/+kASn/pAEr/6QBLf+kAS//pAEx/5EBM/+RAT3/kQFZ/5EATwAO/38AD//JABD/fwAc/8oAHf/KACP/yQBD/8kAR//JAEsABgBR/8kAVP/bAFf/2wBb/+4Abv/JAIH/yQCC/8kAg//JAIT/yQCF/8kAhv/JAIf/yQCh/8kAov/JAKP/yQCk/8kApf/JAKb/yQCn/8kAqf/JAKr/yQCr/8kArP/JAK0ABgCuAAYArwAGALAABgCz/8kAtP/JALX/yQC2/8kAt//JALn/yQC6/9sAu//bALz/2wC9/9sAvv/uAMD/7gDB/8kAwv/JAMP/yQDE/8kAxf/JAMb/yQDU/8kA1v/JANj/yQDa/8kA3P/JAOoABgDsAAYA7gAGAPAABgDyAAYBCf/JAQv/yQEN/8kBD//JARH/2wET/9sBFf/bASX/2wEn/9sBKf/bASv/2wEt/9sBL//bATP/7gFZ/38AQQAO/7YAHP/uAB3/7gCB/+4Agv/uAIP/7gCE/+4Ahf/uAIb/7gCH/+4Aof/bAKL/2wCj/9sApP/bAKX/2wCm/9sAp//bAKn/7gCq/+4Aq//uAKz/7gCtABgArgAYAK8AGACwABgAs//uALT/7gC1/+4Atv/uALf/7gC5/+4Auv/uALv/7gC8/+4Avf/uAMH/7gDC/9sAw//uAMT/2wDF/+4Axv/bANT/7gDW/+4A2P/uANr/7gDc/+4A6gAYAOwAGADuABgA8AAYAPIAGAEJ/+4BC//uAQ3/7gEP/+4BEf/uARP/7gEV/+4BJf/uASf/7gEp/+4BK//uAS3/7gEv/+4BWf+2AEIADv+FABz/pAAd/6QAUv+2AFP/pABY/8kAbv+RAIH/tgCC/7YAg/+2AIT/tgCF/7YAhv+2AIf/tgCh/6QAov+kAKP/pACk/6QApf+kAKb/pACn/6QAqf+kAKr/pACr/6QArP+kAK3/+QCu//kAr//5ALD/+QCz/6QAtP+kALX/pAC2/6QAt/+kALn/pAC6/7YAu/+2ALz/tgC9/7YAwf+2AML/pADD/7YAxP+kAMX/tgDG/6QA1P+kANb/pADY/6QA2v+kANz/pADq//kA7P/5AO7/+QDw//kA8v/5AQn/pAEL/6QBDf+kAQ//pAEl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AFQADgBVAFUADwBXAFcAEABZAFkABABbAFsABQBuAG4ABgCBAIcACACeAJ4AAwChAKcACQCoAKgACgCpAKwACwCtALAADACzALcADQC5ALkADQC6AL0AEAC+AL4ABQDAAMAABQDBAMEACADCAMIACQDDAMMACADEAMQACQDFAMUACADGAMYACQDIAMgACgDKAMoACgDMAMwACgDOAM4ACgDUANQACwDWANYACwDYANgACwDaANoACwDcANwACwDqAOoADADsAOwADADuAO4ADADwAPAADADyAPIADAEJAQkADQELAQsADQENAQ0ADQEPAQ8ADQERAREADgETARMADgEVARUADgEXARcADwEZARkADwEbARsADwEdAR0ADwEeAR4AAQEgASAAAQElASUAEAEnAScAEAEpASkAEAErASsAEAEtAS0AEAEvAS8AEAEwATAAAgExATEABAEyATIAAwEzATMABQE0ATQAAwE9AT0ADwE+AT4AAQFZAVkABwABACIAIwAuADQANgA5ADsAVABZAIEAggCDAIQAhQCGAJ4AwQDDAMUA9wD5APsBEAERARIBEwEUARUBHgEgATABMQEyATQBPgAAAgAAAAAAAAABBAAAAXIAiQIIAKECCAANAggAIQMvACYCwAA7AQQAZAEEADoBBAAMAbwAJgKaAE4BBAAyAU0AKwEEAFIBcgAJAggAGgIIAF8CCAApAggAKQIIABcCCAApAggAHAIIACkCCAApAggAHAEEAFIBBAAyApoAUgKaAE4CmgBSAc8ALwMgACwCrQAFAnYAYQLAADMC5QBYAlEAYQIsAGEDCgAzAtIAYQEEAGEB4gAHAmMAYQH0AGEDeQBaAwoAYQNCADMCPgBhA0IAMwJRAGECLAA1Aj4ADAKsAFQCUf/9A7AABQJjAAECPv/6AiwAFwEEAEoBcgAFAQQAJAKaAFIB9AAAAPD/+gIHADsCYwBDAeEANgJjADYCLAA2ASgAEgJjADwCLABQAPAASwDw/+IB4QBQAPAAWgNUAEsCLABLAlIANgJjAEMCYwA2AU0ASwGqABwBTQAOAiwASwHPAA8CwAAPAeEABgHPAA8BqgAbAU0AQgDeAFcBTQA7ApoAZwEEAAABcgCJAggANAIIADoCCAALAggAAADeAFcCCABAAPD/6QMgABwBUQAiAeEAPwKaAE4BTQArAyAAHADw//QBkAA4ApoATgFSABcBUgAbAPAAPgIsAEsCWAA8AQQAUgDwACEBUgBDAYIAIgHhAEcDCgAkAwoAHAMKABQBzwAlAq0ABQKtAAUCrQAFAq0ABQKtAAUCrQAFA57/+wLAADMCUQBhAlEAYQJRAGECUQBhAQQABAEEAEgBBP/zAQT/8wLlAAoDCgBhA0IAMwNCADMDQgAzA0IAMwNCADMCmgBkA0IAMwKsAFQCrABUAqwAVAKsAFQCPv/6Aj4AYQJRAFACBwA7AgcAOwIHADsCBwA7AgcAOwIHADsDVAA2AeEANgIsADYCLAA2AiwANgIsADYA8P/6APAAPgDw/+kA8P/pAlIANgIsAEsCUgA2AlIANgJSADYCUgA2AlIANgKaAE4CUgAnAiwASwIsAEsCLABLAiwASwHPAA8CYwBDAc8ADwKtAAUCBwA7Aq0ABQIHADsCrQAFAgcAOwLAADMB4QA2AsAAMwHhADYCwAAzAeEANgLAADMB4QA2AuUAWAJjADYC5QAKAmMANgJRAGECLAA2AlEAYQIsADYCUQBhAiwANgJRAGECLAA2AlEAYQIsADYDCgAzAmMAPAMKADMCYwA8AwoAMwJjADwDCgAzAmMAPALSAGECLABQAtIAYQIsAAgBBP/nAPD/3gEE//0A8P/1AQQAEQDwAAcBBABWAPAAWgLEAGEBxwBLAeIABwDw/+ICYwBhAeEAUAH0AEgA8ABGAfQAYQDwAD8B9ABhAPAAWgH0AGEBUABaAfQAGQDwAAYDCgBhAiwASwMKAGECLABLAwoAYQIsAEsCLAAOA0IAMwJSADYDQgAzAlIANgNCADMCUgA2A7AAOwOLACwCUQBhAU0ASwJRAGEBTQBLAlEAYQFNACsCLAA1AaoAHAIsADUBqgAcAiwANQGqABwCLAA1AaoAHAI+AAwBTQAOAj4ADAFNAA4CPgAMAU0ADgKsAFQCLABLAqwAVAIsAEsCrABUAiwASwKsAFQCLABLAqwAVAIsAEsCrABUAiwASwOwAAUCwAAPAj7/+gHPAA8CPv/6AiwAFwGqABsCLAAXAaoAGwIsABcBqgAbAgj/8AIsADUBqgAcAj4ADAFNAA4A8P/iAPD/6QDw/+YA8P/0APD/6ADwAEsA8AAbAPAACgDw/9wA8P/1Ap4ADwLoAC8CLABLAjMAJgH0AAAD6AAAAQQAPgEEAD4BBAA+AggAaQIIAGkCCABpAggAJgIIACYB9ABJA+gAdwPVABoBOwA/ATsARwCo/1kB1gAZAfQAUAPeAFQC6AAvAfQALAHwAB8CngAPAscARwJcABkCmgBOAKj/WQEEAFIB7f/4AuUAKQIfAGUCmgBOApoAWAKaAFgCmgBYAlEAXwDw//oA8AA+APD/6QDw/+YA8P/cAPD/6QDw//QA8P/oAPAAGwDw//UA8ABLAPAAKQDwACoA8ABGAgAAAAIHABIAEgAAAAAAAQAAAADQcD/WAAAAAMJXW6UAAAAAzEYHPw==\n".trim(),
AvenirLightOblique: "data:application/font-woff;charset=utf-8;base64,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ZQBhAHIAcwAgAG8AZgAgAGgAYQB2AGkAbgBnACAAYQBuACAAaQBuAHQAZQByAGUAcwB0ACAAaQBuACAAcwBhAG4AcwAgAHMAZQByAGkAZgAgAHQAeQBwAGUAZgBhAGMAZQBzAC4AIABJAG4AIABhAG4AIABpAG4AdABlAHIAdgBpAGUAdwAgAHcAaQB0AGgAIABMAGkAbgBvAHQAeQBwAGUALAAgAGgAZQAgAHMAYQBpAGQAIABoAGUAIABmAGUAbAB0ACAAYQBuACAAbwBiAGwAaQBnAGEAdABpAG8AbgAgAHQAbwAgAGQAZQBzAGkAZwBuACAAYQAgAGwAaQBuAGUAYQByACAAcwBhAG4AcwAgAGkAbgAgAHQAaABlACAAdAByAGEAZABpAHQAaQBvAG4AIABvAGYAIABFAHIAYgBhAHIAIABhAG4AZAAgAEYAdQB0AHUAcgBhACwAIABiAHUAdAAgAHQAbwAgAGEAbABzAG8AIABtAGEAawBlACAAdQBzAGUAIABvAGYAIAB0AGgAZQAgAGUAeABwAGUAcgBpAGUAbgBjAGUAIABhAG4AZAAgAHMAdAB5AGwAaQBzAHQAaQBjACAAZABlAHYAZQBsAG8AcABtAGUAbgB0AHMAIABvAGYAIAB0AGgAZQAgAHQAdwBlAG4AdABpAGUAdABoACAAYwBlAG4AdAB1AHIAeQAuACAAVABoAGUAIAB3AG8AcgBkACAAQQB2AGUAbgBpAHIAIABtAGUAYQBuAHMAIAAnAGYAdQB0AHUAcgBlACcAIABpAG4AIABGAHIAZQBuAGMAaAAgAGEAbgBkACAAaABpAG4AdABzACAAdABoAGEAdAAgAHQAaABlACAAdAB5AHAAZQBmAGEAYwBlACAAbwB3AGUAcwAgAHMAbwBtAGUAIABvAGYAIABpAHQAcwAgAGkAbgB0AGUAcgBwAHIAZQB0AGEAdABpAG8AbgAgAHQAbwAgAEYAdQB0AHUAcgBhAC4AIABCAHUAdAAgAHUAbgBsAGkAawBlACAARgB1AHQAdQByAGEALAAgAEEAdgBlAG4AaQByACAAaQBzACAAbgBvAHQAIABwAHUAcgBlAGwAeQAgAGcAZQBvAG0AZQB0AHIAaQBjADsAIABpAHQAIABoAGEAcwAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAG8AawBlAHMAIAB0AGgAYQB0ACAAYQByAGUAIAB0AGgAaQBjAGsAZQByACAAdABoAGEAbgAgAHQAaABlACAAaABvAHIAaQB6AG8AbgB0AGEAbABzACwAIABhAG4AIAAiAG8AIgAgAHQAaABhAHQAIABpAHMAIABuAG8AdAAgAGEAIABwAGUAcgBmAGUAYwB0ACAAYwBpAHIAYwBsAGUALAAgAGEAbgBkACAAcwBoAG8AcgB0AGUAbgBlAGQAIABhAHMAYwBlAG4AZABlAHIAcwAuACAAVABoAGUAcwBlACAAbgB1AGEAbgBjAGUAcwAgAGEAaQBkACAAaQBuACAAbABlAGcAaQBiAGkAbABpAHQAeQAgAGEAbgBkACAAZwBpAHYAZQAgAEEAdgBlAG4AaQByACAAYQAgAGgAYQByAG0AbwBuAGkAbwB1AHMAIABhAG4AZAAgAHMAZQBuAHMAaQBiAGwAZQAgAGEAcABwAGUAYQByAGEAbgBjAGUAIABmAG8AcgAgAGIAbwB0AGgAIAB0AGUAeAB0AHMAIABhAG4AZAAgAGgAZQBhAGQAbABpAG4AZQBzAC4AIABJAG4AIAAyADAAMAA0ACAAQQBkAHIAaQBhAG4AIABGAHIAdQB0AGkAZwBlAHIAIABhAG4AZAAgAHQAaABlACAAdAB5AHAAZQAgAGQAaQByAGUAYwB0AG8AcgAgAG8AZgAgAEwAaQBuAG8AdAB5AHAAZQAgAEcAbQBiAEgAIAAgAEEAawBpAHIAYQAgAEsAbwBiAGEAeQBhAHMAaABpACAAcgBlAHcAbwByAGsAZQBkACAAdABoAGUAIABBAHYAZQBuAGkAcgAgAGEAbgBkACAAYwByAGUAYQB0AGUAZAAgAHQAaABlACAAQQB2AGUAbgBpAHIAIABOAGUAeAB0ACAAZgBvAHIAIAB0AGgAZQAgAFAAbABhAHQAaQBuAHUAbQAgAEMAbwBsAGwAZQBjAHQAaQBvAG4ALgAgAABBZHJpYW4gRnJ1dGlnZXIgZGVzaWduZWQgQXZlbmlyIGluIDE5ODgsIGFmdGVyIHllYXJzIG9mIGhhdmluZyBhbiBpbnRlcmVzdCBpbiBzYW5zIHNlcmlmIHR5cGVmYWNlcy4gSW4gYW4gaW50ZXJ2aWV3IHdpdGggTGlub3R5cGUsIGhlIHNhaWQgaGUgZmVsdCBhbiBvYmxpZ2F0aW9uIHRvIGRlc2lnbiBhIGxpbmVhciBzYW5zIGluIHRoZSB0cmFkaXRpb24gb2YgRXJiYXIgYW5kIEZ1dHVyYSwgYnV0IHRvIGFsc28gbWFrZSB1c2Ugb2YgdGhlIGV4cGVyaWVuY2UgYW5kIHN0eWxpc3RpYyBkZXZlbG9wbWVudHMgb2YgdGhlIHR3ZW50aWV0aCBjZW50dXJ5LiBUaGUgd29yZCBBdmVuaXIgbWVhbnMgJ2Z1dHVyZScgaW4gRnJlbmNoIGFuZCBoaW50cyB0aGF0IHRoZSB0eXBlZmFjZSBvd2VzIHNvbWUgb2YgaXRzIGludGVycHJldGF0aW9uIHRvIEZ1dHVyYS4gQnV0IHVubGlrZSBGdXR1cmEsIEF2ZW5pciBpcyBub3QgcHVyZWx5IGdlb21ldHJpYzsgaXQgaGFzIHZlcnRpY2FsIHN0cm9rZXMgdGhhdCBhcmUgdGhpY2tlciB0aGFuIHRoZSBob3Jpem9udGFscywgYW4gIm8iIHRoYXQgaXMgbm90IGEgcGVyZmVjdCBjaXJjbGUsIGFuZCBzaG9ydGVuZWQgYXNjZW5kZXJzLiBUaGVzZSBudWFuY2VzIGFpZCBpbiBsZWdpYmlsaXR5IGFuZCBnaXZlIEF2ZW5pciBhIGhhcm1vbmlvdXMgYW5kIHNlbnNpYmxlIGFwcGVhcmFuY2UgZm9yIGJvdGggdGV4dHMgYW5kIGhlYWRsaW5lcy4gSW4gMjAwNCBBZHJpYW4gRnJ1dGlnZXIgYW5kIHRoZSB0eXBlIGRpcmVjdG9yIG9mIExpbm90eXBlIEdtYkggIEFraXJhIEtvYmF5YXNoaSByZXdvcmtlZCB0aGUgQXZlbmlyIGFuZCBjcmVhdGVkIHRoZSBBdmVuaXIgTmV4dCBmb3IgdGhlIFBsYXRpbnVtIENvbGxlY3Rpb24uIAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGwAaQBuAG8AdAB5AHAAZQAuAGMAbwBtAABodHRwOi8vd3d3Lmxpbm90eXBlLmNvbQAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGwAaQBuAG8AdAB5AHAAZQAuAGMAbwBtAC8AZgBvAG4AdABkAGUAcwBpAGcAbgBlAHIAcwAAaHR0cDovL3d3dy5saW5vdHlwZS5j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ZW50Z2RvdGFjY2VudEdjb21tYWFjY2VudGdjb21tYWFjY2VudEhjaXJjdW1mbGV4aGNpcmN1bWZsZXhIYmFyaGJhckl0aWxkZWl0aWxkZUltYWNyb25pbWFjcm9uSW9nb25la2lvZ29uZWtJZG90YWNjZW50SUppakpjaXJjdW1mbGV4amNpcmN1bWZsZXhLY29tbWFhY2NlbnRrY29tbWFhY2NlbnRMYWN1dGVsYWN1dGVMY29tbWFhY2NlbnRsY29tbWFhY2NlbnRMY2Fyb25sY2Fyb25MZG90bGRvdE5hY3V0ZW5hY3V0ZU5jb21tYWFjY2VudG5jb21tYWFjY2VudE5jYXJvbm5jYXJvbm5hcG9zdHJvcGhlT21hY3Jvbm9tYWNyb25PYnJldmVvYnJldmVPaHVuZ2FydW1sYXV0b2h1bmdhcnVtbGF1dFJhY3V0ZXJhY3V0ZVJjb21tYWFjY2VudHJjb21tYWFjY2VudFJjYXJvbnJjYXJvblNhY3V0ZXNhY3V0ZVNjaXJjdW1mbGV4c2NpcmN1bWZsZXhTY2VkaWxsYXNjZWRpbGxhVGNvbW1hYWNjZW50dGNvbW1hYWNjZW50VGNhcm9udGNhcm9uVGJhcnRiYXJVdGlsZGV1dGlsZGVVbWFjcm9udW1hY3JvblVicmV2ZXVicmV2ZVVyaW5ndXJpbmdVaHVuZ2FydW1sYXV0dWh1bmdhcnVtbGF1dFVvZ29uZWt1b2dvbmVrV2NpcmN1bWZsZXh3Y2lyY3VtZmxleFljaXJjdW1mbGV4eWNpcmN1bWZsZXhaYWN1dGV6YWN1dGVaZG90YWNjZW50emRvdGFjY2VudFNjb21tYWFjY2VudHNjb21tYWFjY2VudHVuaTAyMUF1bmkwMjFCZG90bGVzc2p1bmkwMkM5dW5pMDM5NHVuaTAzQTl1bmkwM0JDcGlFdXJvYWZpaTYxMjg5T21lZ2Flc3RpbWF0ZWRwYXJ0aWFsZGlmZkRlbHRhcHJvZHVjdHN1bW1hdGlvbnVuaTIyMTV1bmkyMjE5cmFkaWNhbGluZmluaXR5aW50ZWdyYWxhcHByb3hlcXVhbG5vdGVxdWFsbGVzc2VxdWFsZ3JlYXRlcmVxdWFsbG96ZW5nZWdyYXZlLmNhcGFjdXRlLmNhcGNpcmN1bWZsZXguY2FwY2Fyb24uY2FwdGlsZGUuY2FwZGllcmVzaXMuY2FwbWFjcm9uLmNhcGJyZXZlLmNhcHJpbmcuY2FwaHVuZ2FydW1sYXV0LmNhcGRvdGFjY2VudC5jYXBjYXJvbi5hbHRjb21tYWFjY2VudGNvbW1hYWNjZW50LmFsdHVuaUY4RkY4LjBkNWUzQ29weXJpZ2h0KGMpIDIwMDcgTGlub3R5cGUgR21iSCwgd3d3Lmxpbm90eXBlLmNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5BdmVuaXIgTGlnaHQgT2JsaXF1ZUF2ZW5pciBMaWdodAAAAAGHAAEAAgADAAQABQAGAAcAaAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAfABCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwGIAGAAYQBiAGcAZACgAGYAgwCqAIsAagCXAYkApQCAAKEAnACkAKkAfQCYAHMAcgCFAJYAjwB4AJ4AmwCjAHsArgCrAKwAsACtAK8AigCxALUAsgCzALQAuQC2ALcAuACaALoAvgC7ALwAvwC9AKgAjQDEAMEAwgDDAMUAnQCVAMsAyADJAM0AygDMAJAAzgDSAM8A0ADRANYA0wDUANUApwDXANsA2ADZANwA2gCfAJMA4QDeAN8A4ADiAKIA4wGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgAkQG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYAjACSAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMAjgCUAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAMAA3QHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AMYB9gH3AfgB+QDHAOQAZQH6AfsB/AH9Af4AfgCIAf8AgQCCAIQAhwB/AIYCAAIBAgICAwBvAIkAQQAIAHUAaQB3AHYAcABxAHQAeQB6AGsAbABjAgQCBQCZAgYCBwIIAgkCCgILAKYCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJABtAG4BgwIAAQAnACoALQBEAFEAsgT0CnQPRQ9PELwSGBJHEmwSdRKEEowSnxbbFvYY1RwHHDoeliFdIXUnIio1KkUqVCpuKoQqnCzZMyozODYzNj02TjZXNnc2gDaKNpQ2nTamNq824DbqNvc30zq0OsQ6zTrWOt86+jsDOy87ODs/O1w7bjuKO6Y7szu7O8o9fj2GPZQ9oj2sPbo9wz3RPd495z3vQPVA/kEKQr5EdER+RIdEkUSaRLVEvkTpRPNE+0fMR91KsUxiTGVMfE65T+9SrFL2UxJY/lkKW/ZepF6yXsde02BHYE9i52MZZIFnt2e/Z8hoemiEailqM2zTbONtAW6scfN0E3QodD10UnRmdH90mXTceJ54rXi9eM144njxeQF5EXkneTd5RnlaeW55gnmWea9523ycfKx8vHzMfOF88X3TgSaBO4FQgWWBe4GWgbCFzol+iZKJpom7idWJ4onwif6KEoyqjLmMzIzfjPKNBI0bjimQr5C+kM2Q3ZDykQOSuZLOkuOS+ZMOkyOUipf1mAaYFJglmDSYRZhUmGWYc5iLmKCYsJtzm4GblZulm7qbypvfnUmgl6CmoLqgyqDfoO+hBKEUoSmhOaFUoWWhdKGqo2WjdaOEo5Sjo6T8pl2mbaZ1poamo6aypr+mzqbdpuym+qcJpxinJqc0p0OnU6d/p6CnsafBp9Gn4afxqAGoEKgkqDeoS6heqHaojapErrauzK7drvSvBK8ZryqvOq9Kr1qvarSWuYC5kLmgubC5wLnPueC6ELs/u0+7X7tuu327jbudu7K7x7vbu+++l8IWwibCNsJGwlfCbMJ5wofClcKjwrDCvsRDxFPEYsRyxILEicSRxJnEocSpxLHEvsYfxibGMsZDxkvGVMeEx5LHocezx73HxsfUx+LH78gUyE/JucnMzHrMg8yNzKDPLNFw0bbRvtOQ163XvtfT1/rYA9gW2CDYQN1d4IDgj+DL4PLhGuFE4UzhVOFc4WTha+F34X/hh+GU4aDhqOGw4bbhxeHr4gHiEUn3cvcJFcPOUwaOvRUgCveD+10V/DD4/fgwBr2+FfyU/WL4lAYO/NYO+9IO+2T3hfdOFdT4nk+LQvyeBWT7JBUhCg5R95j5WBUiCtkWIgoOUfct93kVTft5v4vJ93n3H4tN+3m/i8n3efcHi5G7+wCLtvcw9weLkrv7AIvK93cFV4tM+3f7H4vK93dXi037d/sHi4Rb9wCLX/sw+weLhVsF9/f3YBVg+zD7Hou29zAFDlH3srUVsveks3sF/wARVVX///lVVf8ADdVW///4VVb/AApVVf//91VV/wAKVVX///dVVf8AB9VW///2qqv/AAVVVYH/AAVVVYH/AAMqq///9aqrjP//9VVVjP//9VVV////1VX///Wqq////qqrgf///Kqrd///+dVV///tgACCeoJ6///0qqv///Eqq///8lVV///zVVUI///yVVX///NVVf//8IAA///11Vb//+6qq///+FVV///uqqv///hVVXn///vVVv//7VVV////VVUIs/kEFWb7nnuRBf//8VVV/wAFVVX///LVVv8ABiqr///0VVWS///0VVWS///2VVb/AAiAAP//+FVVlf//+FVVlf//+oAA/wALgAD///yqq5j///yqq5j///+qqv8ADyqr/wACqqv/ABFVVf8AAqqr/wASqqv/AAXVVf8AESqqlP8AD6qrlP8AD6qr/wAK1VX/AA2qqv8ADKqr/wALqqsI/wAMqqv/AAuqq5n/AAmAAP8AD1VV/wAHVVX/AA9VVf8AB1VV/wAPqquQm/8AAqqrCCz9OhWBSLuLlc4Fpf8AAVVV/wAZgAD/AAWAAKT/AAmqq6T/AAmqq/8AFtVV/wANKqr/ABSqq/8AEKqr/wAUqqv/ABCqq/8AEYAA/wAT1VX/AA5VVaL/AA5VVaL/AAkqq/8AGdVVj/8AHKqrj/8AGqqr////gAD/ABdVVYafhp////hVVf8AESqr///1qqv/AA5VVQj///Wqq/8ADlVV///z1VX/AAvVVn3/AAlVVX3/AAlVVX3/AAdVVn3/AAVVVQhIo7P3rgWji/8AFtVV///5gAD/ABWqq37/ABWqq37/ABEqqv//7YAA/wAMqqtzCMezBf//9VVVnf//9Cqr/wAO1VV+/wALqqt+/wALqqv///Iqq/8ACSqq///xVVX/AAaqq///8VVV/wAGqqv///Cqq/8ABIAAe/8AAlVVe/8AAlVV///vqqv/AAEqq///71VViwiUzluLgkgF///pVVWJ///o1VaF///oVVWB///oVVWB///qKqv///Kqq3f//+9VVXf//+9VVf//7tVV///sKqv///Gqq3T///Gqq3T///bVVf//5oAAh2////6qq///9Kqr////gAD///Kqqv8AAFVV///wqqv/AABVVf//8Kqr/wADKqv///BVVZF7CJF7/wAJqqv///Cqq/8ADVVV///xVVX/AA1VVf//8VVV/wASVVb///RVVv8AF1VV///3VVUIznFi+7YFb/8AAVVV///mVVX/AAiAAP//6Kqr/wAPqqv//+iqq/8AD6qr///uVVX/ABWAAH//ABtVVQhNZAX/AAlVVf//7qqr/wALgAD///DVVf8ADaqrfv8ADaqrfpqA/wAQVVWC/wAQVVWC/wARKqv///lVVZ3///uqq53///uqq53///3VVZ2LCA73gfli+XoVIwr9Gfs6Ff///Kqrc/8AAVVV///pqquR///rVVWR///rVVX/AAmqq///7dVW/wANVVX///BVVf8ADVVV///wVVX/ABBVVv//86qr/wATVVWC/wATVVWC/wAVqqv///uAAKOLo4ui/wAEgAChlKGUn/8ADFVVnf8AD6qrCJ3/AA+qq5r/ABIqqpf/ABSqq5f/ABSqq/8AB6qr/wAWVVX/AANVVaP/AANVVaP///6qq/8AFlVVhf8AFKqrhf8AFKqr///2Kqv/ABIqqv//8lVV/wAPqqv///JVVf8AD6qr///vgAD/AAxVVf//7KqrlP//7KqrlP//6lVV/wAEgABziwhzi3T///uAAHWCdYL//+wqq///86qr///uVVX///BVVf//7lVV///wVVX///Eqq///7dVWf///61VVf///61VV///4VVX//+mqq////KqrcwjBFo3/ABCqq/8ABSqr/wAPgAD/AAhVVf8ADlVV/wAIVVX/AA5VVf8ACiqr/wAMgACX/wAKqquX/wAKqqv/AA2qq/8ACFVV/wAPVVWR/wAPVVWR/wAPqquOm4ubi/8ADtVViP8ADaqrhf8ADaqrhf8AC4AA///3qqv/AAlVVf//9VVVCP8ACVVV///1VVX/AAaqq///84AAj///8aqrj///8aqrjP//8IAAif//71VV///9VVX//+9VVf//+oAA///wgAD///eqq///8aqr///3qqv///Gqq///9dVV///zgAB////1VVV////1VVX///JVVf//96qr///wqquF///wqquF///wVVWIe4sIe4v///Eqq47///JVVZH///JVVZH///Sqq/8ACFVVgv8ACqqrgv8ACqqr///5VVX/AAyAAP//+6qr/wAOVVX///uqq/8ADlVV////Kqr/AA+AAP8AAqqr/wAQqqsI97L8GBX///yqq3P/AAFVVf//6aqrkf//61VVkf//61VV/wAJ1VX//+3VVv8ADaqr///wVVX/AA2qq///8FVV/wAQgAD///Oqq/8AE1VVgv8AE1VVgv8AFaqr///7gACji6OLov8ABIAAoZShlP8AE9VV/wAMVVX/ABGqq/8AD6qrCP8AEaqr/wAPqqv/AA7VVf8AEiqql/8AFKqrl/8AFKqr/wAHqqv/ABZVVf8AA1VVo/8AA1VVo////qqr/wAWVVWF/wAUqquF/wAUqqv///Yqq/8AEiqq///yVVX/AA+qq///8lVV/wAPqqv//++AAP8ADFVV///sqquU///sqquU///qVVX/AASAAHOLCHOLdP//+4AAdYJ1gv//7Cqr///zqqv//+5VVf//8FVV///uVVX///BVVf//8Sqr///t1VZ////rVVV////rVVX///hVVf//6aqr///8qqtzCMEWjf8AEKqr/wAFKqv/AA+AAP8ACFVV/wAOVVX/AAhVVf8ADlVV/wAKVVb/AAyAAP8ADFVV/wAKqqv/AAxVVf8ACqqr/wAN1Vb/AAhVVf8AD1VVkf8AD1VVkf8AD6qrjpuLm4v/AA7VVYj/AA2qq4X/AA2qq4X/AAtVVf//96qrlP//9VVVCJT///VVVf8ABoAA///zgACP///xqquP///xqquM///wgACJ///vVVWJ///vVVX///rVVf//8IAA///3qqv///Gqq///96qr///xqqv///Wqqv//84AA///zqqv///VVVf//86qr///1VVX///Iqqv//96qr///wqquF///wqquF///wVVWIe4sIe4v///Eqq47///JVVZH///JVVZH///Sqq/8ACFVVgv8ACqqrgv8ACqqr///5gAD/AAyAAIf/AA5VVYf/AA5VVYr/AA+AAI3/ABCqqwgO9xL4l/diFfsm90oF/wAVVVX/AAqqq/8AFNVWlv8AFFVV/wALVVX/ABRVVf8AC1VV/wASqquYnP8ADqqrnP8ADqqr/wAOVVX/ABCqqv8AC6qr/wASqqv/AAuqq/8AEqqr/wAHgACh/wADVVX/ABlVVf8AA1VV/wAWqqv///6qq/8AFIAAhf8AElVVhf8AElVV///2gAD/AA+qq36YCH6Y///wVVX/AAoqq///7aqr/wAHVVX//+2qq/8AB1VV///sgAD/AAOqq///61VVi///6Kqri3T///xVVf//6VVV///4qqv//+lVVf//+Kqr///rgAD///WAAP//7aqr///yVVX//+2qq///8lVV///wgAD//+8qq///81VVd///81VVd4P//+lVVf///Kqr///mqqsIiXv/AACAAP//8IAAjnyOfP8ABKqr///xgAD/AAZVVX3/AAZVVX3/AAdVVv//8oAA/wAIVVV+/wAIVVV+/wAIKqv///OAAJN/df//81VV///qVVX///Mqq///6qqrfv//6qqrfv//7Kqq///xgAD//+6qq3sI///uqqt7///xVVX//+2qq3///+tVVX///+tVVYNzh///5Kqr///7VVX//+Cqq/8AAYAA///jqqr/AAeqq///5qqr/wAHqqv//+aqq/8ADFVV///qVVWceZx5oP//8iqrpP//9lVVpP//9lVV/wAbgAD///sqq6mLCP8AMVVVi/8AK4AA/wALgAD/ACWqq6L/ACWqq6L/ACPVVf8AHtVVrf8AJqqrCOX7BuSL+x33Pfcz93ZHiwX7hveoFf8AHKqri/8AFoAA///3Kqv/ABBVVf//7lVV/wAQVVX//+5VVf8ABiqr///pKquHb////VVV///tVVX///mAAP//74AA///1qqv///Gqq///9aqr///xqqv///Oqqv//8yqq///xqqv///Sqq///8aqr///0qqv///CAAIH//+9VVf//91VV///vVVX///dVVf//8FVWg///8VVV///4qqsIhf8ACKqr///5Kqv/AAmqqv//+FVV/wAKqqv///hVVf8ACqqr///5Kqv/AAtVVYWXhZf///tVVf8ADFVV///8qqv/AAyqq////Kqr/wAMqqv///9VVf8ADFVVjZeN/wAOqqv/AASqq/8ADYAA/wAHVVX/AAxVVf8AB1VV/wAMVVX/AAkqq/8ACoAAlv8ACKqrCJb/AAiqq/8ADFVV/wAG1VX/AA2qq5D/AA2qq5D/AA4qqv8AAoAA/wAOqquLCC77yxX3PPtgBX////FVVf//8yqr///yKqv///JVVX7///JVVX7///FVVv//9IAA///wVVWB///wVVWB///vgACD///uqquF///uqquFeYj//+1VVYt1i///66qr/wADgAD//+1VVZL//+1VVZL///CAAJX///Oqq5gI///zqquY///21VX/AA+AAIWdhZ3///6qq/8AFFVV/wADVVX/ABaqq/8AAqqr/wAUqqv/AAaqqv8AEoAA/wAKqqv/ABBVVf8ACqqr/wAQVVX/AAyAAP8ADqqr/wAOVVWY/wAOVVWY/wAP1Vb/AAvVVf8AEVVV/wAKqqv/ABFVVf8ACqqr/wARVVaV/wARVVX/AAlVVQgO+9L3W/lYFSIKDvvS9+75UBVcqwX//8tVVU3//9Qqq///ulVVaP//sqqraP//sqqr///o1VX//7Gqqv//9Kqr//+wqqv///qqq2X///2qqv//2aqr/wAAqqv//9lVVf8AAKqr///ZVVX/AAPVVf//2aqrkmWSZf8ACdVV///a1VX/AAyqq///26qr/wAMqqv//9uqq/8AD6qq///d1VX/ABKqq2sIvqkFe/8AIKqr///yKqv/ACCAAP//9FVV/wAgVVX///RVVf8AIFVVgv8AISqr///5qqut///5qqut///8gAD/ACLVVf///1VV/wAjqqv///9VVf8AI6qr/wACVVb/ACWAAP8ABVVV/wAnVVX/AASqq/8AIqqr/wAHqqr/ACOqqv8ACqqr/wAkqqv/AAqqq/8AJKqr/wANKqr/ACRVVf8AD6qrrwj/AA+qq6//ABJVVf8AItVVoP8AIaqroP8AIaqr/wAXgAD/AB6AAKX/ABtVVQgO+9KG+xAVuWsF/wA0qqvJ/wAr1VX/AEWqq67/AE1VVa7/AE1VVf8AFyqr/wBOVVb/AAtVVf8AT1VV/wAFVVWx/wACVVb/ACZVVf///1VV/wAmqqv///9VVf8AJqqr///8Kqv/ACZVVYSxhLH///Yqq/8AJSqr///zVVX/ACRVVf//81VV/wAkVVX///BVVv8AIiqr///tVVWrCFhtBZv//99VVf8ADdVV///fgAD/AAuqq///36qr/wALqqv//9+qq5T//97VVf8ABlVVaf8ABlVVaf8AA4AAaP8AAKqrZ/8AAKqrZ////aqq///aqqv///qqq///2VVV///7VVX//91VVf//+FVW///cKqv///VVVWb///VVVWb///LVVv//24AA///wVVVnCP//8FVVZ///7aqr///dVVV2///eqqt2///eqqv//+jVVf//4aqq///mqqv//+SqqwgO+xr32fjAFaD3LFuLdvss+yG7d173H1n7APsOr2719xHY+xG0qEH3DvcruoK7BQ7j9w/32xWFW/d7i2r7e7uLrPd793uLkbv7e4us93tbi2r7ewUO+9L3FOUVJAoO+4nb95wVg1X3i4uTwQUO+9LitRUhCg77ZPg1+XwV/C/9jr15+C/5jgUOUdb39hX///yqq3H///2AAHD///5VVW////5VVW//AACAAP//5IAA/wACqqtw/wACqqtwkP//5lVV/wAHVVX//+eqq/8AB1VV///nqqv/AAsqq///6oAAmv//7VVVmv//7VVV/wAS1VX///Eqq/8AFqqrgP8AFqqrgKf///qAAP8AIVVViwj/ACFVVYv/AB2qq/8ABYAApZallqL/AA7VVZ//ABKqq5//ABKqq/8AESqr/wAVgAD/AA5VVf8AGFVV/wAOVVX/ABhVVf8ADCqr/wAZqquVppWm/wAIKqv/ABuAAP8ABlVVp/8ABlVVp/8ABNVWpv8AA1VVpQj/AANVVf8AGVVV/wACgAD/ABrVVv8AAaqr/wAcVVX/AAGqq/8AHFVV////qqr/ABuqq////aqrpv///aqrpv//+yqq/wAZqqv///iqq/8AGFVV///4qqv/ABhVVf//9NVV/wAVgAB8/wASqqt8/wASqqv//+0qq/8ADtVV///pVVWW///pVVWWb/8ABYAA///eqquLCP//3qqri///4lVV///6gABxgHGAdP//8Sqrd///7VVVd///7VVV///u1VX//+qAAP//8aqr///nqqv///Gqq///56qr///z1VX//+ZVVYFwgXD///fVVf//5FVV///5qqv//+Oqq///+aqr///jqqv///rVVf//5Sqqh///5qqrCM0W/wACqqud/wADqqr/ABRVVf8ABKqr/wAWqqv/AASqq/8AFqqrkf8AFtVV/wAHVVWi/wAHVVWilP8AFoAA/wAKqquh/wAKqquh/wAMqqr/ABOAAP8ADqqrnP8ADqqrnP8AESqq/wANqqv/ABOqq/8AClVV/wATqqv/AApVVf8AFiqq/wAFKqv/ABiqq4sI/wAYqquL/wAUqqr///rVVf8AEKqr///1qqv/ABCqq///9aqr/wANVVX///JVVZV6lXr/AAdVVf//7IAA/wAEqqt1/wAEqqt1/wAC1VX//+mAAIx0jHT///+AAP//6Sqrif//6VVVif//6VVV///9qqv//+uqq////VVVeQj///1VVf//7VVV///8gAD//+uAAP//+6qr///pqqv///uqq///6aqr///6Kqr//+lVVf//+KqrdP//+KqrdIL//+mAAP//9VVVdf//9VVVdf//8yqr///sgAB8enx6///uqqv///JVVf//7FVV///1qqv//+xVVf//9aqr///p1Vb///rVVf//51VViwj//+aqq4v//+sqqv8ABSqr///vqqv/AApVVf//76qr/wAKVVX///LVVf8ADaqrgZyBnP//+Kqr/wATgAD///tVVaH///tVVaH///1VVv8AFoAA////VVWi////VVWi/wAAgAD/ABaqq/8AAaqr/wAWVVX/AAGqq/8AFlVV/wACKqr/ABSAAP8AAqqr/wASqqsIDlH38PkEFTT9BMeL7vlYWIv7V/sjqV33I/QFDlG90RWCRfhKi5LB/AiL95H3dwX/ABSqq/8AEqqr/wAUgAD/ABKqqv8AFFVV/wASqqv/ABRVVf8AEqqr/wASVVb/ABPVVf8AEFVVoP8AEFVVoJn/ABYqq/8AC6qr/wAXVVX/AAuqq/8AF1VV/wAH1VX/ABlVVo//ABtVVY//AByqq////iqr/wAZgAD///hVVf8AFlVV///4VVX/ABZVVf//89VW/wAS1Vb//+9VVf8AD1VVCP//71VV/wAPVVV3/wAL1Vb//+iqq/8ACFVV///oqqv/AAhVVf//5qqq/wAEKqv//+Sqq4v//8lVVYv//8+AAP//8oAA///Vqqtw///Vqqtw///hKqr//9cqq///7Kqr///JVVUI0IQFl/8AIqqr/wAUKqun/wAcVVX/ABVVVf8AHFVV/wAVVVX/ACCAAP8ACqqr/wAkqquL/wAoqquLq///9FVV/wAXVVX//+iqq/8AF1VV///oqquU///fqqr///qqq///1qqr///9VVX//+yqq///+lVWef//91VV///vVVX///dVVf//71VV///11Vb///Aqq///9FVVfAj///RVVXz///Mqq///8aqrff//8lVVff//8lVV///yVVX///Mqq///8qqrfwgOUfcS9ygVR3YFl1ui///c1VWt///pqqut///pqqv/ACuqq///9NVV/wA1VVWL/wAkqquL/wAgqqr/AAVVVf8AHKqr/wAKqqv/AByqq/8ACqqr/wAY1VX/AA6AAKD/ABJVVaD/ABJVVf8AEKqr/wAVgAD/AAxVVf8AGKqr/wAMVVX/ABiqq/8ACCqr/wAaVVWPpwj/AANVVf8AFqqr////gAD/ABVVVf//+6qrn///+6qrn///+FVVnYCbgJt9/wANgAB6lnqW///sgAD/AAeAAHWPCI0H/wAqqqv/AAtVVf8AIiqq/wAUgAD/ABmqq/8AHaqr/wAZqqv/AB2qq/8AD4AA/wAiKqr/AAVVVf8AJqqrj/8AHqqr///+gAD/ABqqqoT/ABaqq4T/ABaqq///9Kqr/wAS1VX///BVVZr///BVVZr//+yqq/8AC1VVdP8AB6qrdP8AB6qr///nKqv/AAPVVf//5VVViwj//9dVVYv//9mqq///96qrZ///71VVZ///71VV///hqqv//+VVVv//51VV///bVVUIv2sF/wARVVX/ABlVVf8AFVVW/wAUKqv/ABlVVZr/ABlVVZr/ABtVVv8AB4AA/wAdVVWLs4v/AB4qq///89VV/wAUVVX//+eqq/8AFFVV///nqqv/AAeAAP//4NVV///6qqtl///8qqtz///4VVX//+uAAH96f3r///HVVf//8iqr///vqqv///VVVQj//++qq///9VVVef//+Cqr///sVVWG///sVVWG///s1Vb///2AAP//7VVViwhti4NPpYsF/wAWqquLof///VVV/wAVVVX///qqq/8AFVVV///6qqv/ABKqq///94AAm///9FVVm///9FVV/wAMVVX///DVVv8ACKqr///tVVX/AAiqq///7VVV/wACVVX//+mqq4dx///8qqv//+qqq///+dVVd4L//+1VVYL//+1VVf//89VV///vqqv///Cqq30I///wqqt9///t1VWAdoN2g///6IAAh3GLY4v//+HVVf8ACSqr///rqqv/ABJVVf//66qr/wASVVX///GAAP8AGiqr///3VVWtCA5R9/X3QhVz+0LHi6P3QvcAi5PB+wCLzvh0OIv78PxjgUQF+Aj4aBVR/DL7kIv3yPgyBQ5R+LL5IhWTwfvyi1L7/QWhmf8AF6qr/wALgAD/ABlVVZT/ABlVVZT/ABlVVv8ABIAA/wAZVVWL/wAZVVWL/wAW1Vb///sqq/8AFFVV///2VVX/ABRVVf//9lVV/wAQ1Vb///LVVv8ADVVV///vVVX/AA1VVf//71VV/wAJqqv//+yAAJH//+mqq5H//+mqq/8AAVVV///oKqr///yqq///5qqrCIdv///3Kqv//+dVVf//8lVV///qqqv///JVVf//6qqr///wKqv//+5VVXl9eX3//+0qq///9YAA///sVVWE///sVVWE///uKqv///yAAHuLe4v///Cqq/8AAoAA///xVVWQ///xVVWQ///yqquSf5QIf5T///Wqq/8AClVV///3VVX/AAuqq///91VV/wALqqv///mqq/8ADIAAh/8ADVVVCElsBZn//9qqq6L//+Kqqqv//+qqq6v//+qqq7X///VVVb+LpYum/wAEqqun/wAJVVWn/wAJVVX/ABoqq5n/ABhVVf8AEqqr/wAYVVX/ABKqq/8AFSqr/wAXqqqd/wAcqqud/wAcqqv/AAuqq/8AIVVV/wAFVVWxCP8ABKqrq////yqq/wAeKqv///mqq/8AHFVV///5qqv/ABxVVf//9NVV/wAY1VZ7/wAVVVV7/wAVVVX//+tVVf8AENVW///mqqv/AAxVVf//5qqr/wAMVVX//+JVVf8ABiqraYv//+6qq4v//+4qqv///qqr///tqqv///1VVf//7aqr///9VVX//+6AAP//+qqr///vVVWDCK33dQUOUfdz+CAV94H3zD+L+4H70wX//+6qq///6Kqref//5VVV///tVVVt///tVVVtf///3lVV///6qqv//9qqq///+1VVa/8AAaqr///igACTcJNw/wAM1VX//+jVVf8AEaqr///sqqv/ABGqq///7Kqr/wAWVVX///DVVaaApoD/AB4qq///+oAA/wAhVVWLCP8AIVVVi/8AH6qr/wAFgACplqmW/wAaqqv/AA8qq/8AF1VV/wATVVX/ABdVVf8AE1VV/wATVVb/ABcqq/8AD1VVpv8AD1VVppX/AB2AAP8ABKqrq4//AB6qq////oAA/wAcgACE/wAaVVWE/wAaVVX///Qqq6L//+9VVf8AE6qrCP//71VV/wATqqv//+sqq/8AD4AAcv8AC1VVcv8AC1VV///j1VX/AAWqq///4Kqri///7qqri///7NVV///9gAB2hnaG///u1VX///iAAP//8qqrgQjidRX/ABaqq4v/ABTVVf//+6qrnv//91VVnv//91VVm///9CqrmHyYfP8ACYAA///uVVWR///rqquR///rqqv/AAFVVf//6oAA///8qqv//+lVVf///Kqr///nVVX///jVVf//6YAAgP//66qrgP//66qrff//7oAAev//8VVVCHr///FVVf//7NVV///0qqv//+qqq4P//+qqq4N0h///51VVi///51VVi///6iqrj3iTeJP///Aqq/8AC1VV///zVVX/AA6qq///81VV/wAOqqv///cqq/8AEYAAhv8AFFVVhv8AFFVV////Kqv/ABaAAP8AA1VV/wAYqqsI/wADVVX/ABaqq/8AB1VW/wAVgAD/AAtVVf8AFFVV/wALVVX/ABRVVf8ADiqr/wARqqucmpya/wATKqv/AAvVVf8AFVVV/wAIqqv/ABVVVf8ACKqr/wAWVVb/AARVVf8AF1VViwgOUfiq+SIVk8H8JouDVffoi/wO/SLOiwUOUfch+KwVif//71VV/wAAgAD//++AAI7//++qq47//++qq/8ABVVV///wqqr/AAeqq///8aqr/wAHqqv///Gqq5X///OAAP8ADFVV///1VVX/AAxVVf//9VVV/wAOgAD///hVVv8AEKqr///7VVUIigf//+iqq///+1VVdv//99VW///tVVX///RVVf//7VVV///0VVX//++qq319///vqqt9///vqqv///SAAHmC///sVVWC///sVVX///oqq///64AA///9VVX//+qqq///+1VVa/8AAYAA///jKqv/AAeqq///5lVV/wAHqqv//+ZVVf8ADFVV///qKquceQicef8AFSqrff8AGVVVgf8AGVVVgf8AHFVWhv8AH1VVi/8AH1VVi/8AHaqrkKeVp5WkmaGdoZ3/ABJVVf8AFdVV/wAOqqv/ABmqq/8ADqqr/wAZqqv/AAmqqv8AHNVV/wAEqqurCP8AAqqr/wAVVVX////VVf8AFIAAiP8AE6qriP8AE6qr///51VWd///2qqv/ABBVVf//9qqr/wAQVVX///Oqqpn///Cqq/8AC6qr///wqqv/AAuqq///7VVV/wAIKqp1/wAEqqsIjAed/wAEqqv/ABCqq/8AB6qq/wAPVVX/AAqqq/8AD1VV/wAKqqv/AA2qq/8ADIAAl/8ADlVVl/8ADlVV/wAJ1VX/AA9VVv8AB6qr/wAQVVX/AAeqq/8AEFVV/wAE1VX/ABCAAI3/ABCqq4//ABtVVf///oAApIT/ABaqq4T/ABaqq4D/ABNVVXybCHyb///tVVX/AAyAAP//6aqrlP//6aqrlP//5yqq/wAEgAD//+Sqq4v//+Sqq4v//+XVVf//+4AAcoJygv//6aqr///zgAD//+xVVXv//+xVVXv//++qq///7Kqrfv//6VVVfv//6VVV///3gAByh///5KqrCM0W/wACqqv/ABNVVf8ABaqq/wARqqv/AAiqq5v/AAiqq5v/AArVVf8ADaqrmP8AC1VVmP8AC1VV/wAO1VX/AAjVVv8AEKqr/wAGVVX/ABCqq/8ABlVV/wARVVX/AAMqq52L/wAkqquL/wAc1VX///Qqq6D//+hVVaD//+hVVf8AB9VV///ggAD///qqq///2KqrCP///VVVef//+oAA///vKqv///eqq///8FVV///3qqv///BVVf//9VVV///yVVZ+///0VVV+///0VVX///Eqq///9qqr///vVVWE///vVVWE///uVVb///yAAP//7VVVi///7Kqri3r/AAOAAP//8VVVkv//8VVVkv//89VW/wAJVVX///ZVVf8AC6qrCP//9lVV/wALqqv///kqq/8ADaqqh/8AD6qrh/8AD6qr////VVX/ABDVVf8AAqqrnQhC++cV/wADVVX/ABdVVZL/ABUqq/8ACqqrnv8ACqqrnv8ADSqq/wAQVVX/AA+qq/8ADaqr/wAPqqv/AA2qq/8AEaqq/wAKgAD/ABOqq/8AB1VV/wATqqv/AAdVVf8AFIAA/wADqqv/ABVVVYv/ABVVVYv/ABNVVv///FVV/wARVVX///iqq/8AEVVV///4qqv/AA6qq///9YAAl///8lVVCJf///JVVf8ACKqr///vqqv/AAVVVXj/AAVVVXiM///q1VX///yqq///6Kqr///8qqv//+qqq///+YAAd///9lVV///tVVX///ZVVf//7VVV///zgAD//++qq///8Kqrff//8Kqrff//7lVV///01VV3///3qqt3///3qqv//+pVVf//+9VV///oqquLCP//6Kqri///64AA/wAEKqv//+5VVf8ACFVV///uVVX/AAhVVf//8YAA/wALKqv///Sqq5n///Sqq5mD/wAQVVX///tVVf8AEqqr///7VVX/ABKqq////1VWn/8AA1VV/wAVVVUIDlH4H/fMFfuA+8zXi/eA99MF/wAIqquX/wAJKqr/AAyqq/8ACaqr/wANVVX/AAmqq/8ADVVVlP8ADiqr/wAIVVWa/wAIVVWa/wAHgAD/AA/VVf8ABqqr/wAQqqv/AAaqq/8AEKqr/wAEqqr/ABGqqv8AAqqr/wASqqv/AASqq6v///5VVf8AHYAAg6aDpv//8yqr/wAXKqv//+5VVf8AE1VVCP//7lVV/wATVVX//+mqq/8ADyqrcJZwlv//4dVV/wAFgAD//96qq4v//96qq4v//+BVVf//+oAAbYBtgP//5VVV///w1VX//+iqq///7Kqr///oqqv//+yqq///7Kqq///o1VX///Cqq3D///Cqq3CB///igAD///tVVWsIh///4VVV/wABgAD//+OAAJL//+Wqq5L//+Wqq/8AC6qrdP8AEFVV///sVVX/ABBVVf//7FVV/wAUqqv///CAAKT///Sqq6T///Sqq/8AHCqr///6VVX/AB9VVYv/ABFVVYv/ABMqq/8AAoAAoJCgkP8AESqr/wAHgAD/AA1VVZUINKEV///oqquLdv8ABFVV///tVVX/AAiqq///7VVV/wAIqqv///Aqq/8AC9VVfpp+mv//9qqr/wARgAD///pVVZ////pVVZ////7VVv8AFaqr/wADVVX/ABdVVf8AA1VV/wAYqqv/AAcqq/8AFoAAlv8AFFVVlv8AFFVV/wAN1VX/ABGAAP8AEKqr/wAOqqsI/wAQqqv/AA6qq57/AAtVVf8AFVVVk/8AFVVVk6KP/wAYqquL/wAYqquLoYf/ABNVVYP/ABNVVYP/AA/VVv//9Kqr/wAMVVX///FVVf8ADFVV///xVVX/AAjVVv//7oAA/wAFVVX//+uqq/8ABVVV///rqquM///pgAD///yqq///51VVCP///Kqr///oqqv///iAAP//6lVV///0VVV3///0VVV3///xqqv//+6AAHp8enz//+yqq///9Cqr///qVVX///dVVf//6lVV///3VVX//+nVVv//+6qr///pVVWLCA770vch+DgVJQpV/A4VIQoO+9L3FOUVJApS994VJQoO4/kj+JMVkr38q/t+hVv4aft+kr38N/dkBQ7j9xr4IxWEW/iSi5K7Bfyn+yQVJgoO4+rqFYRZ+Kv3fpG7/Gn3foRZ+Df7ZAUO+wf3hfeiFYA3x4uUywX/AANVVf8AF1VV/wAGqqv/ABPVVpX/ABBVVZX/ABBVVZf/AA6qq5mYmZj/AA7VVf8ADKqr/wAPqqv/AAxVVf8AD6qr/wAMVVX/AA7VVf8ADYAAmf8ADqqrmf8ADqqr/wAMVVWc/wAKqqv/ABNVVf8ACqqr/wATVVX/AAdVVf8AF6qrj6cIj/8AG1VV///+1VX/ABhVVv//+aqr/wAVVVX///mqq/8AFVVV///1qqqd///xqqv/AA6qq///8aqr/wAOqqv//+4qqv8ACyqq///qqqv/AAeqq///6qqr/wAHqqv//+hVVf8AA9VVcYv//+dVVYv//+gqq////FVVdP//+KqrdP//+Kqrdv//9VVVeH0IeH3//+9VVXr///Gqq3f///Gqq3f///TVVf//6VVVg///5qqrCMuDBf8AC1VV/wAiqqv/ABKAAKf/ABmqq/8AFVVV/wAZqqv/ABVVVf8AHoAA/wAKqqv/ACNVVYv/ACSqq4v/ABsqqv//9NVV/wARqqv//+mqq/8AEaqr///pqqv/AAYqqv//4tVV///6qqtn///8qqt1///5gAB4///2VVV7///2VVV7///0VVb///Eqq///8lVV///yVVUI///yVVX///JVVf//8aqr///zKqt8f3x////xqqv///NVVf//8lVV///yqqv///JVVf//8qqr///0Kqt8gf//71VVgf//71VV///5VVX//+yqq////KqrdQha+3gVIQoO93L3ufesFf8AA1VVo/8AB9VW/wAZqqv/AAxVVf8AG1VV/wAMVVX/ABtVVf8AD1VW/wAZVVb/ABJVVf8AF1VV/wASVVX/ABdVVf8AFNVW/wATVVb/ABdVVf8AD1VV/wAXVVX/AA9VVf8AGFVW/wAHqqv/ABlVVYuni/8AEyqrgv8AClVVef8AClVVef8AAtVWcv//+1VVawj///yqq3X///gqqv//59VV///zqqv//+Wqq///86qr///lqqv///Cqqv//51VV///tqqt0///tqqt0///rgAD//+zVVf//6VVV///wqqv//+lVVf//8KqrdP//+FVV///oqquLcYv//+yqq/8ACNVV///zVVX/ABGqq///81VV/wARqqv///uqq/8AFtVVj6cI96B2Ffce97ZPi2pLiYsF///6qqv/AB6qq///9FVV/wAVgAB5/wAMVVV5/wAMVVV3/wAGKqt1i///21VVi2n///dVVf//4Kqr///uqqv//+Cqq///7qqr///kKqr//+mqqv//56qr///kqqv//+eqq///5Kqrd2z///BVVf//3VVV///wVVX//91VVf//9dVW///dVVb///tVVf//3VVVCP///Kqrd4v//+0qq/8AA1VV///uVVX/AANVVf//7lVV/wAGVVb///BVVv8ACVVV///yVVX/AAlVVf//8lVV/wAMgAD///VVVv8AD6qr///4VVX/AA+qq///+FVV/wATKqr///wqq/8AFqqri6WL/wAZqquS/wAZVVWZ/wAZVVWZ/wAUVVb/AA9VVf8AD1VV/wAQqqsIjQb///yqq///6VVV/wADqqr//+8qq/8ACqqrgP8ACqqrgJn///qAAP8AEVVVi6eLqP8AB4AAqZqpmqf/ABTVVaX/ABqqq6X/ABqqq/8AFlVV/wAfVVX/ABKqq6//ABKqq6//AAxVVf8AJqqrkf8AKVVVCJH/ACqqq4j/ACeqqn//ACSqq3//ACSqq///7Kqr/wAfqqr//+VVVf8AGqqr///lVVX/ABqqq///3tVWoP//2FVV/wAPVVX//9hVVf8AD1VV///T1Vb/AAeqq///z1VVi///zKqri///zoAA///2gAD//9BVVXj//9BVVXhg///lqqv//9mqq///3lVVCP//2aqr///eVVVr///Yqqv//+ZVVV7//+ZVVV7//++AAP//z4AA///4qqtX///4qqtX/wACgAD//89VVf8ADFVV///Sqqv/AAxVVf//0qqr/wAUVVb//9iAAP8AHFVV///eVVX/ABxVVf//3lVV/wAj1Vb//+WAAP8AK1VV///sqqv/ACtVVf//7Kqr/wAwqqv///ZVVcGLCP8AH1VVi/8AH6qr/wAEKqur/wAIVVWr/wAIVVX/AB6qq5f/AB1VVf8AD6qr/wAdVVX/AA+qq/8AG4AA/wAS1VX/ABmqq6H/ABmqq6H/ABaAAKT/ABNVVacIUQZ7///sqqv//+2AAP//7lVVdnt2e///6aqr///yKqv//+hVVf//9FVV///oVVX///RVVf//51VW///21Vb//+ZVVf//+VVV///mVVX///lVVf//5tVW///8qqv//+dVVYtfi///16qr/wAIgAD//9tVVZz//9tVVZz//+Eqq/8AF1VVcv8AHaqrCHL/AB2qq3n/ACKAAID/ACdVVYD/ACdVVf///YAAtZH/ACyqq5H/ACqqq/8ADdVV/wAo1VX/ABWqq7L/ABWqq7L/ABsqqv8AIlVV/wAgqqv/AB2qq/8AIKqr/wAdqquw/wAXqqr/AClVVf8AEaqr/wApVVX/ABGqq/8AK1VW/wAI1VX/AC1VVYsI/wAlVVWLrv//+dVV/wAgqqv///Oqq/8AIKqr///zqqun///u1VX/ABdVVXX/ABdVVXX/ABFVVv//5YAA/wALVVVs/wALVVVsjv//3dVV///6qqv//9qqq4dv///21VX//+Oqq///8aqr///jVVX///Gqq///41VV///vVVX//+Yqq3h0CHh0d///7Sqrdv//8VVVdv//8VVV///s1VX///iqq///7qqri///9Kqri///+Sqqjv///aqrkf///aqrkf///yqq/wAFqqv/AACqq/8ABVVV/wABVVX/AAlVVZGb/wAKqqv/ABaqqwgO9vgx+VgVJwpcQxUoCg6/91j5WBUo/Vj3dosFo4v/ABoqq/8AAqqr/wAcVVX/AAVVVf8AHFVV/wAFVVWmlf8AGaqr/wAOqqv/ABmqq/8ADqqr/wAWVVX/ABQqqp7/ABmqq57/ABmqq/8ADIAA/wAhKqqR/wAoqqv/AANVVf8AGKqr////VVb/ABaqqv//+1VV/wAUqqv///tVVf8AFKqr///31Vb/ABHVVf//9FVVmgj///RVVZp8l///7aqrlP//7aqrlP//64AA/wAFgAD//+lVVY0IjQf/ACtVVf8ACKqr/wAiKqv/ABGqqqT/ABqqq6T/ABqqq/8ADyqr/wAfVVX/AAVVVa//AAVVVbP///2qq/8AICqrgf8AGFVVgf8AGFVVfJ53/wANqqt3/wANqqv//+iqq5T//+VVVf8ABFVV///lVVX/AARVVf//5VVW/wACKqv//+VVVYsI+0n7xhWu94r3JosF/wAUqquL/wATgACJ/wASVVWH/wASVVWH/wAPgAD///kqq/8ADKqr///2VVX/AAyqq///9lVV/wAJKqp+/wAFqqv//++qq/8ABaqr///vqqv/AAEqqv//64AA///8qqv//+dVVf///qqr///0qqv///wqqv//84AA///5qqv///JVVf//+aqr///yVVX///Yqqv//8yqr///yqqt/CP//8qqrf3n///XVVf//6VVV///3qqv//+lVVf//96qr///jqqv///vVVWmLCPtN++oVs/eu9zWLBf8AFKqri/8AFCqq///9VVX/ABOqq///+qqr/wATqqv///qqq5z///eAAP8ADlVV///0VVX/AA5VVf//9FVV/wAK1Vb///DVVv8AB1VV///tVVX/AAdVVf//7VVV/wABqqv//+mqq4dxif//81VV///71VX///HVVv//+aqr///wVVX///mqq///8FVV///1gAD///Eqq///8VVVfQj///FVVX3//+wqq///9FVVcv//9qqrcv//9qqr///gKqv///tVVf//2VVViwgO9xL5S/cDFSkKDvc390/5WBUqCvuI/RwVKwoOmvdY+VgVLAoOdfdY+VgVKP1YzYu69+T34YuTx/vhi6/3kPf6i5PHBQ73XPlDuRUtCg73JPdY+VgVLgoO+9L3WPlYFS8KDiv4MvdkFTAKDqz3WPlYFTEKDj33WPlYFTIKDvfL91H5WBUo/VjNi+L5BI2L90/9BKiL9/n5BI2LNP0EzYvu+Vgti/vp/Ob7Q/jmBQ73XPdY+VgVMwoO95Tv9/YVNArNFjUKDof3WPlYFSj9WM2Luvfk9y2LBaeL/wAbVVX/AAOqq/8AGqqr/wAHVVX/ABqqq/8AB1VV/wAYKqr/AAsqq/8AFaqrmv8AFaqrmv8AElVV/wATKqua/wAXVVWa/wAXVVX/AAnVVf8AG6qr/wAEqqur/wAFVVX/ACSqq////Sqr/wAegACA/wAYVVWA/wAYVVX///BVVf8AEyqr///rqquZCP//66qrmf//6Kqq/wAJ1VX//+Wqq/8ABaqr///lqqv/AAWqq///5oAA/wAC1VX//+dVVYsI+0r7zBU2Cg73lPnBFpPH+3GLi40F/wAcqqv/AAqqq/8AGtVV/wAP1VWkoKSgof8AGCqrnv8AG1VVnv8AG1VV/wAP1VX/AB0qq/8ADKqrqv8ADKqrqv8ACKqq/wAfKqv/AASqq/8AH1VV/wAGqqv/ADNVVYn/AC/VVv//9VVV/wAsVVX///VVVf8ALFVV///tgAD/ACZVVv//5aqr/wAgVVUI///lqqv/ACBVVWn/ABmAAP//1lVV/wASqqv//9ZVVf8AEqqr///P1Vb/AAlVVf//yVVVi///yVVVi///zSqr///2qqtc///tVVVc///tVVX//9aqq///5oAA///cVVX//9+qq///3FVV///fqqv//+KAAP//2aqq///oqqv//9Oqq///6Kqr///Tqqt8///QKqr///lVVf//zKqrCIP//8lVVY7//85VVpn//9NVVZn//9NVVaH//9nVVqn//+BVVan//+BVVf8AJCqr///ngAD/ACpVVf//7qqr/wAqVVX//+6qq/8ALdVW///3VVX/ADFVVYsI+5P3/xWR/wAqqqv/AAwqq/8AJ9VV/wASVVWw/wASVVWw/wAXqqv/ACAqq6j/ABtVVaj/ABtVVf8AIaqr/wAVVVb/ACZVVf8AD1VV/wAmVVX/AA9VVf8AKiqr/wAHqqu5i7mLs///+FVVrf//8Kqrrf//8Kqr/wAb1VX//+qqqv8AFaqr///kqqsI/wAVqqv//+Sqq/8ADtVV///f1VWTZpNmjP//2Cqrhf//1VVVhf//2Kqr///0VVX//9oqqv//7qqr///bqqv//+6qq///26qr///pVVX//9/VVW9vb2///99VVf//6YAA///aqqt6///aqqt6///Wqqr///eAAP//0qqriwj//9NVVYv//9gqq5Nom2ibbv8AFaqrdP8AG1VVdP8AG1VV///vqqv/ACAqq///9lVVsP//9lVVsP///iqr/wAnKquR/wApVVUIDpr3bvggFTcK+zb3zBU4Cg519xr3FxU5Cg6H9+35HBU6Cg71+RL3oxU7Cg6a6/lYFfc5/VjNi/gE+VhFi/vR/QH7IfkBBQ74AvP5WBU8Cg6s99P4CBX70vwI2ov3oPfU90j71N2L+2f4CPez9+Q8i/uF+7T7OPe0PYsFDof3vPfFFT0KDnWpvxU+Cg770vfU+UAVkbv7Kov7EP4M9yqLkbsxi/cE+awFDvtk9/p5FftZ+Y5VefdX/Y4FDvvSn/sAFYVb9yqL9xD6DPsqi4Vb5Yv7BP2sBQ7j+C35WBX7uPxYxIv3jvgi9x/8IsOL+zj4WAUOPYFAFYRZ+IeLkr0FDveV+MgVPwoOUPhm91YVQAr7B7EVQQoOrPdB+YgVIf2Ix4uW3I2LBf8ABqqre/8ACYAA///yKqv/AAxVVf//9FVV/wAMVVX///RVVZn///ZVVv8AD6qr///4VVX/AA+qq///+FVV/wAQgAD///pVVv8AEVVV///8VVX/ABFVVf///FVV/wARVVb///4qq/8AEVVVi/8AI1VVi/8AIVVWkf8AH1VVl/8AH1VVl6f/ABDVVf8AGKqr/wAVqqsI/wAYqqv/ABWqq/8AFFVV/wAZqqqb/wAdqqub/wAdqqv/AAqqq/8AIIAA/wAFVVX/ACNVVf8ABKqr/wAjVVX///6AAP8AIIAA///4VVX/AB2qq///+FVV/wAdqqv///LVVv8AGaqq///tVVX/ABWqq///7VVV/wAVqqv//+iqq/8AENVVb5dvl///4FVVkf//3Kqriwj//+6qq4v//+4qqv///iqr///tqqv///xVVf//7aqr///8VVV5///6VVb//+5VVf//+FVV///uVVX///hVVf//71VW///2VVb///BVVf//9FVV///wVVX///RVVf//8oAA///yKqv///Sqq3sIiYvA+AsFO/yhFUIKDir4cM8VQwoOrPiD3BVECqj3KhVFCg51+IjiFUYKdvdLFUcKDvuu9z/4LBVICg6s+LipFUkKbvdjFUoKDnX3TvmIFUsKDvcu+GIVTApa90sVTQoO9x46FU4KpvlqFU0KDir3TvmIFU8KDvdY+YgVUAoO96b3EvfgFV374MeLq/d7Bf8ABKqrq/8ACCqq/wAb1VX/AAuqq/8AF6qr/wALqqv/ABeqq/8ADiqq/wATqqr/ABCqq/8AD6qr/wAQqqv/AA+qq/8AEqqq/wALqqr/ABSqq/8AB6qr/wAUqqv/AAeqq/8AFVVV/wAD1VWhi/8AIKqri/8AFlVVfpdxl3GO///dqquF///VVVUIZPuqx4uv95gFjf8AEKqr/wAEgAD/ABGqqpL/ABKqq5L/ABKqq5X/ABFVVZibmJv/ABAqq/8ADSqr/wATVVX/AApVVf8AE1VV/wAKVVX/ABeqq/8ABSqrp4uji/8AEtVV///71VX/AA2qq///96qr/wANqqv///eqq/8ACiqq///01VX/AAaqq30I/wAGqqt9/wADqqr///Aqq/8AAKqr///uVVX/AACqq///7lVViv//7dVW///9VVX//+1VVQhl+6THi7H3pwX/AANVVf8AGVVVjP8AGKqr///+qquj///+qquj///6Kqr/ABUqq///9aqr/wASVVX///Wqq/8AElVV///wKqr/AA7VVv//6qqr/wALVVX//+qqq/8AC1VV///jVVX/AAWqq2eLa4v//+BVVYP//+Cqq3v//+Cqq3v//+aqqv//5qqr///sqqv//91VVQiF/wAjVVX///FVVf8AGYAA///oqqv/AA+qq///6Kqr/wAPqqtw/wAH1VX//+FVVYv//+1VVYt5///9gAD//+6qq4b//+6qq4Z7///5VVX///FVVf//96qr///xVVX///eqq///8tVW///2Kqr///RVVf//9Kqr///0VVX///Sqq///9iqrf4P///NVVQiIBv///1VV/wAEqqv/AACqq/8AClVVjZuNm/8AAaqr/wAQqqv/AAFVVf8AEVVVCE8G////VVWF////Kqv///eAAIqAioCK///0KquK///zVVWK///zVVX///7VVf//84AA///+qqv///Oqq////qqr///zqqv///6qqv//9YAA///+qqv///dVVQgOdfcS9+AVUQoOm+H3exVSCscWUwoOrPcX+GIVKv1Gx4u398mNiwX/AAaqq3v/AAmAAP//8iqr/wAMVVX///RVVf8ADFVV///0VVWZ///2VVb/AA+qq///+FVV/wAPqqv///hVVf8AEIAA///6VVb/ABFVVf///FVV/wARVVX///xVVf8AEVVW///+Kqv/ABFVVYv/ACNVVYv/ACFVVpH/AB9VVZf/AB9VVZen/wAQ1VX/ABiqq/8AFaqrCP8AGKqr/wAVqqv/ABRVVf8AGaqqm/8AHaqrm/8AHaqr/wAKqqv/ACCAAP8ABVVV/wAjVVX/AASqq/8AI1VV///+gAD/ACCAAP//+FVV/wAdqqv///hVVf8AHaqr///y1Vb/ABmqqv//7VVV/wAVqqv//+1VVf8AFaqr///oqqv/ABDVVW+Xb5f//+BVVZH//9yqq4sI///uqquL///uKqr///4qq///7aqr///8VVX//+2qq////FVVef//+lVW///uVVX///hVVf//7lVV///4VVX//+9VVv//9lVW///wVVX///RVVf//8FVV///0VVX///KAAP//8iqr///0qqt7CImLltwFZft7FUIKDqz4g9wVX/vJx4vs+UZPi4A6iYsF///4qqub///2VVX/AA3VVX//AAuqq3//AAuqq///8iqr/wAJqqr///BVVf8AB6qr///wVVX/AAeqq///74AA/wAFqqr//+6qq/8AA6qr///uqqv/AAOqq///7qqq/wAB1VX//+6qq4v//9yqq4v//96AAIX//+BVVX///+BVVX9v///vKqv//+eqq///6lVVCP//56qr///qVVX//+uqqv//5lVW///vqqv//+JVVf//76qr///iVVX///WAAP//34AA///7VVX//9yqq///+qqr///cqqv/AAFVVf//34AAk///4lVVk///4lVV/wANKqv//+ZVVv8AElVV///qVVX/ABJVVf//6lVV/wAXVVb//+8qq/8AHFVVf/8AHFVVf/8AH9VWhf8AI1VViwj/ABFVVYv/ABHVVv8AAdVV/wASVVX/AAOqq/8AElVV/wADqqud/wAFqqr/ABGqq/8AB6qr/wARqqv/AAeqq/8AEKqq/wAJqqr/AA+qq/8AC6qr/wAPqqv/AAuqq/8ADYAA/wAN1VX/AAtVVZsIqPcqFUUKDvuJ9xL34BVUCg77LOz3ChVVCg77iff/+CwVVgoOdfh99xYVVwoO+wfa+GIV9xH8YsmL94r4Yk6L+2H8ISj4IQUO9xLa+GIVWAoOKvd9944V+3f7jtOL90/3ZfcY+2XZi/s39473VPdoQIv7K/tDI/dDPosFDvsH91H7IxVZCg77LKuvFVoKDvuJ+Ab5QBWRu1mLBW+L///o1VX///VVVf//7aqr///qqqv//+2qq///6qqr///0Kqr//+JVVf//+qqrZQh3+yUF///9VVX//+yqq////FVWeP//+1VV///tVVX///tVVf//7VVVhf//74AA///4qqv///Gqq///+Kqr///xqqv///cqqv//9IAA///1qqv///dVVf//9aqr///3VVX///PVVf//+6qrfYsIhVsFmYv/AArVVf//+6qr/wAHqqv///dVVf8AB6qr///3VVX/AAWAAP//9IAA/wADVVX///Gqq/8AA1VV///xqqv/AAFVVv//76qq////VVX//+2qq////1VV///tqqv///5VVv//7Sqq///9VVX//+yqqwh3+yYF///6qqv//9qqq/8AA4AA///igAD/AAxVVf//6lVV/wAMVVX//+pVVf8AFCqr///1Kquniwi9i5G7dIsFgYv///fVVf8AAtVV///5qqv/AAWqq///+aqr/wAFqqv///tVVf8AB1VViJSIlP///lVV/wAKVVX///+qq/8AC6qr////qqv/AAuqq/8AANVV/wAL1VWNlwif9yIFj6X/AABVVf8AFoAA///8qque///8qque///7Kqr/AA+qq///+aqr/wAMVVX///mqq/8ADFVV///5VVX/AAmAAIT/AAaqq4T/AAaqq///+yqr/wAEVVX///1VVY0IjQf/AANVVf8AAVVVkY//AAiqq/8ABqqr/wAIqqv/AAaqq/8ACVVV/wAJqqqV/wAMqquV/wAMqqv/AAlVVf8AD9VV/wAIqque/wAIqquekf8AFoAA/wADVVWlCJ/3IQWN/wAMqqv/AAKqq/8ADCqq/wADVVX/AAuqq/8AA1VV/wALqqv/AASAAP8AClVV/wAFqquU/wAFqquU/wAG1VX/AAdVVZP/AAWqq5P/AAWqq5T/AALVVZWLCA77+PeE+YIVW4v7If58u4sFDvuJtvsAFYVbvYsFp4v/ABcqq/8ACqqr/wASVVX/ABVVVf8AElVV/wAVVVX/AAvVVv8AHaqr/wAFVVWxCJ/3JQX/AAKqq/8AE1VV/wADqqqe/wAEqqv/ABKqq/8ABKqr/wASqquR/wAQgAD/AAdVVf8ADlVV/wAHVVX/AA5VVf8ACNVW/wALgAD/AApVVf8ACKqr/wAKVVX/AAiqq/8ADCqr/wAEVVWZiwiRuwV9i///9Sqr/wAEVVX///hVVf8ACKqr///4VVX/AAiqq///+oAA/wALgAD///yqq/8ADlVV///8qqv/AA5VVf///qqq/wAQVVb/AACqq/8AElVV/wAAqqv/ABJVVf8AAaqq/wAS1Vb/AAKqq/8AE1VVCJ/3JgX/AAVVVf8AJVVV///8gAD/AB2AAP//86qr/wAVqqv///Oqq/8AFaqr///r1VX/AArVVW+LCFmLhVuiiwWVi/8ACCqr///9Kqv/AAZVVf//+lVV/wAGVVX///pVVf8ABKqr///4qquOgo6C/wABqqv///Wqq/8AAFVV///0VVX/AABVVf//9FVV////Kqv///Qqq4l/CHf7IgWHcf///6qr///pgAD/AANVVXj/AANVVXj/AATVVv//8FVV/wAGVVX///Oqq/8ABlVV///zqqv/AAaAAP//9oAA/wAGqqv///lVVf8ABqqr///5VVWQ///7qqv/AANVVYkIiQf///yqq////qqrhYf///dVVf//+VVV///3VVX///lVVf//9qqr///2VVaB///zVVWB///zVVX///aqq///8Cqr///3VVV4///3VVV4hf//6YAA///8qqtxCHf7IQWJ///zVVX///1VVf//89VW///8qqv///RVVf///Kqr///0VVX///uAAP//9aqr///6VVWC///6VVWC///5Kqv///iqq4P///pVVYP///pVVYL///0qq4GLCA7j+PX34BVuqwV9///uqqv///Eqq///8FVV///wVVV9///wVVV9///uKquEd4v///NVVYv///Gqq/8AAyqre/8ABlVVe/8ABlVV///vVVX/AAeAAP//7qqr/wAIqqv//+6qq5N5k///7VVVk///7VVVk///7VVWj///7VVViwj//+9VVYv///Cqq////VVVff//+qqrff//+qqr///zVVWE///0qqv///dVVf//9Kqr///3VVX///XVVf//9lVWgv//9VVVgv//9VVV///4Kqv///VVVv//+VVV///1VVUIqWsF/wANVVX/ABFVVf8ADoAA/wAPqqv/AA+qq5n/AA+qq5n/ABHVVZKfi/8ADKqri/8ADlVV///81VWb///5qqub///5qquc///4gACd///3VVX/ABFVVYOdg/8AEqqrg/8AEqqrg/8AEqqqh/8AEqqriwj/ABCqq4v/AA8qqv8AAoAA/wANqquQ/wANqquQ/wAMgAD/AAaqq/8AC1VV/wAIVVX/AAtVVf8ACFVVlf8ACaqr/wAIqquW/wAIqquWk/8ACyqr/wAHVVX/AAtVVQgO+9IO+2T3WffAFUH8nseL1fieBbH3JBVbCg5R9874NRVX/AYF///qqqv/AASqq///7VVV/wAIKqp7/wALqqt7/wALqqv///LVVf8ADiqq///1qqv/ABCqq///9aqr/wAQqqv///jVVf8AEoAAh/8AFFVVh/8AFFVV////qqv/ABUqq/8AA1VVof8AA1VVof8ABlVW/wAVVVX/AAlVVf8AFKqr/wAJVVX/ABSqq/8AC9VW/wASqqr/AA5VVf8AEKqrCP8ADlVV/wAQqqucmf8AE6qr/wALVVX/ABOqq/8AC1VV/wAVgAD/AAdVVv8AF1VV/wADVVUIhvwLFcD4DAX/ABiqq4n/ABTVVf//+dVVnP//9aqrnP//9aqr/wAPKqv///Iqqv8ADVVV///uqqsIwK8FeaP//+oqq/8AEtVV///mVVX/AA2qq///5lVV/wANqqv//+LVVv8AByqq///fVVX/AACqqwiV0luLgUMF///hVVWH///jKqv///cqq3D///JVVXD///JVVXP//+6qq3Z2dnb//+6qq3P///JVVXD///JVVXD///bVVv//4tVV///7VVX//+Cqq4f//+Cqq4z//+KqqpH//+Sqq5H//+Sqq/8AClVV///ngAD/AA6qq///6lVVCP8ADqqr///qVVX/ABLVVf//7iqron2iff8AGoAAgqmHCIFDu4uV0AXNjf8AOaqr/wAaqqv/ADFVVf8AM1VVCGKxBf//7qqref//7NVV///xKqt2///0VVV2///0VVX//+mAAP//+YAAc////qqrCA5RzMEVhFX4NIuSwfuJi7T3tPc5i5LB+zmLnfcQBY3/AA6qq/8ABNVVm/8AB6qr/wARVVX/AAeqq/8AEVVV/wAKgAD/AA/VVv8ADVVV/wAOVVX/AA1VVf8ADlVV/wAQKquXnv8ACaqrnv8ACaqr/wAWKqv/AATVVf8AGVVVi/8AFVVVi/8AEtVW///7Kqv/ABBVVf//9lVV/wAQVVX///ZVVf8ADiqr///0KquXfQi6uwX//9qqq/8AJVVVXv8AEqqr///LVVWL///ZVVWL///eVVb///mAAP//41VVfv//41VVfnP//+9VVf//7Kqr///rqqv//+yqq///66qr///w1VX//+mqqoD//+eqq4D//+eqq///+Sqr///ogAD///1VVf//6VVVCHr7CSyLhFXqi2L7tAUOUe33WRVKVKhmzMMF/wATVVX//+6qq/8AFoAA///y1VX/ABmqq4L/ABmqq4L/ABrVVf//+4AAp4uni/8AG9VV/wAEgAD/ABuqq5T/ABuqq5T/ABoqqv8ADSqr/wAYqqv/ABFVVQi8U7KwWsIF/wAWqqv/ABVVVf8AElVV/wAX1VaZ/wAaVVWZ/wAaVVWU/wAcgACP/wAeqqv/AASqq/8AHqqriv8AHIAA///5VVX/ABpVVf//+VVV/wAaVVX///RVVv8AF9VW///vVVX/ABVVVQjMwm6wSlMF///sqqv/ABFVVf//6aqq/wANKqv//+aqq5T//+aqq5T//+VVVf8ABIAAb4tvi2////uAAG+Cb4L//+Wqq///8tVV///nVVX//+6qqwhaw2RmvFQF///Sqqv//9VVVf//5Kqq///Lqqv///aqq02DTf8ADKqr///Lqqv/ACFVVf//1VVVCKH3MRWP/wAaqqv/AAiqq6T/AA1VVf8AF1VV/wANVVX/ABdVVf8AEFVW/wAUVVb/ABNVVf8AEVVV/wATVVX/ABFVVf8AFdVW/wANqqv/ABhVVZX/ABhVVZX/ABkqq5Cli6WL/wAXqquG/wAVVVWB/wAVVVWBnf//8lVV/wAOqqv//+6qqwj/AA6qq///7qqr/wAK1VX//+uqqpL//+iqq5L//+iqq/8AAYAAcof//+VVVYf//+VVVf//91VVcv//8qqr///oqqv///Kqq///6Kqr///vqqr//+uqqv//7Kqr///uqqv//+yqq///7qqr///qKqr///JVVf//56qrgf//56qrgf//5tVVhnGLCHGL///oVVWQ///qqquV///qqquVef8ADaqr///xVVX/ABFVVf//8VVV/wARVVX///Uqq/8AFFVWhP8AF1VVhP8AF1VV///+gACkj/8AGqqrCA5R95D3SBVy+0jNi6T3SPc+i5K7+z6LldiXm/c1i5G7+xqL94P350qL+4f77Psk9+wFR4v3I/vn+xqLhVv3NYuRe4E++z6LhFsFDvv493n5NxVbi1r78ruLBXb7KhVbi1r78ruLBQ5R9+b3QxUsvwX//+6qq/8ACVVV///xqqr/AAqqq///9Kqrl///9Kqrl4f/ABKqq/8AA1VV/wAZVVWN/wANVVX/AASqq/8AC9VW/wAHVVX/AApVVf8AB1VV/wAKVVX/AAjVVpT/AApVVf8AB6qr/wAKVVX/AAeqq/8AC1VW/wAGgAD/AAxVVf8ABVVV/wAMVVX/AAVVVf8AC9VW/wAEVVb/AAtVVf8AA1VVCNBiBf8AB1VVh/8AB6qr///61VWT///5qquT///5qquS///4qqqR///3qquR///3qqv/AASqq///9tVV/wADVVWB/wADVVWBjID///6qq3////6qq///9VVV///8Kqr///XVVv//+aqr///2VVX///mqq///9lVV///4qqr///cqq///96qrgwj///eqq4P///bVVf//+Kqrgf//+VVVgf//+VVV///2VVX///pVVv//9qqr///7VVUI+2n7PRVKbQX/AASqq///61VVk///7iqr/wALVVV8/wALVVV8/wANVVb///OAAP8AD1VVgf8AD1VVgf8AESqr///4qque///7VVWe///7VVX/ABPVVf///aqr/wAUqquLo4v/ABeqq/8AA6qr/wAXVVX/AAdVVf8AF1VV/wAHVVX/ABVVVv8ACtVW/wATVVX/AA5VVQj/ABNVVf8ADlVV/wAQVVb/ABGAAP8ADVVV/wAUqqv/AA1VVf8AFKqr/wAIqqv/ABeqqo//ABqqq/8AA1VV/wAaqqv///wqq/8AF9VVgKCAoP//8IAA/wARKqt3/wANVVWnmf8AF9VV/wAR1VX/ABOqq/8AFaqr/wATqqv/ABWqq/8ADCqq/wAaKqr/AASqq/8AHqqrCI//AB1VVf///FVV/wAYqqv///Sqq5////Sqq5////Cqqv8AEVVV///sqqv/AA6qq///7Kqr/wAOqqv//+qAAP8ADNVV///oVVWW///oVVWW///qVVb/AAtVVf//7FVV/wALqqv//+xVVf8AC6qre5j///Oqq/8ADlVV///zqqv/AA5VVf//+4AA/wAR1Vb/AANVVf8AFVVVCP8AAqqrm/8ABYAA/wAOKqv/AAhVVf8ADFVV/wAIVVX/AAxVVf8ACiqr/wAKKquXk5eT/wANKquR/wAOVVWP/wAOVVWP/wAO1VaN/wAPVVWLo4v/ABRVVf//+lVV/wAQqqv///Sqq/8AEKqr///0qqv/AAuqqnr/AAaqq///6VVVCMmtBYf/ABCqq///+VVV/wAOVVX///aqq5f///aqq5f///TVVf8ACaqrfv8AB1VVfv8AB1VV///xgAD/AAWAAHv/AAOqq3v/AAOqq///76qr/wAB1VX//+9VVYv//+iqq4v//+jVVf///KqrdP//+VVVdP//+VVV///qqquB///sVVX///Kqqwj//+xVVf//8qqr///vgAD//++qqv//8qqr///sqqv///Kqq///7Kqr///3VVX//+lVVYdxh23/AARVVXL/AAyqq3f/AAyqq3f/ABFVVf//7qqrof//8VVV///wqquF///xgAD///kqq///8lVV///4VVX///JVVf//+FVV///zgAD///bVVv//9Kqr///1VVUI///0qqv///VVVf//9oAAf///+FVV///yqqv///hVVf//8qqr///61VZ8///9VVX//+9VVf//+1VV///gqqv/AAOqq///5iqql///66qrl///66qrm///7lVVn3yffP8AFiqrfv8AGFVVgP8AGFVVgP8AFlVW///0qqv/ABRVVf//9FVVCP8AFFVV///0VVX/ABCAAP//8qqr/wAMqqt8/wAMqqt8/wAEqqr//+0qq////Kqr///pVVWJe///+qqrff//91VVf///91VVf///9VVW///11VX///NVVf//96qr///zVVX///eqq///8iqr///51VV8h3yH///xKquJ///xVVWLCP//4Kqri///5lVV/wAHgAB3mnea///yVVX/ABaAAP//+KqrqQgOz/kgFVwK91IWXAoO93L47PhDFcEGi/8AGKqrh/8AFaqqg/8AEqqrg/8AEqqr///0qqv/AA/VVf//8VVVmP//8VVVmP//7oAA/wAJ1VX//+uqq/8ABqqr///rqqv/AAaqq///6iqq/wADVVX//+iqq4tpi2z///pVVW////Sqq2////Sqq///54AAe3b//+tVVQh2///rVVX//+6qq///56qr///yVVVv///yVVVv///21Vb//+Gqq///+1VV///fVVX///tVVf//3qqr/wAAgAD//+GAAP8ABaqr///kVVX/AAWqq///5FVV/wAKgAD//+fVVv8AD1VV///rVVX/AA9VVf//61VV/wAUKqt7pP//9KqrpP//9Kqr/wAdgAD///pVVa2LCP8AF1VVi/8AFqqr/wADVVWh/wAGqquh/wAGqqv/ABQqq/8ACdVV/wASVVWY/wASVVWY/wAP1Vb/AA/VVf8ADVVV/wASqqv/AA1VVf8AEqqrlf8AFaqq/wAGqqv/ABiqqwhVBod9///5qqv///LVVf//91VV///zqqv///dVVf//86qr///1VVaA///zVVX///ZVVf//81VV///2VVX///HVVv//+FVW///wVVX///pVVf//8FVV///6VVX//+8qq////SqreYv//+aqq4t1/wAE1VX//+1VVf8ACaqr///tVVX/AAmqq///8NVWmP//9FVV/wAQVVUI///0VVX/ABBVVf//+Cqr/wATKquHoYeh////qqv/ABdVVf8AA1VV/wAYqqv/AANVVf8AGKqr/wAG1Vb/ABcqqv8AClVV/wAVqqv/AApVVf8AFaqr/wANVVb/ABMqqv8AEFVV/wAQqqv/ABBVVf8AEKqr/wAS1Vb/AA0qqv8AFVVV/wAJqqv/ABVVVf8ACaqr/wAXVVb/AATVVf8AGVVViwj/ACSqq////1VV/wAb1VX///VVVp7//+tVVZ7//+tVVf8ACoAAc43//+Sqqwj8nz4VXQrBFl4KDvuF9+L47hVLBnmL///tqqv///6qq///7VVV///9VVX//+1VVf///VVVeob///Cqq///+Kqr///wqqv///iqq///8tVVgYD///NVVYD///NVVf//+Sqre////VVV///sqquJ///xVVX/AAFVVf//84AA/wAEqqv///Wqq/8ABKqr///1qquS///3qqr/AAlVVf//+aqrCP8ACVVV///5qqv/AAsqq///+1VVmIiYiP8ADYAA///+gACZi/8AF1VVi/8AFNVWj/8AElVVk/8AElVVk/8AECqr/wANVVWZ/wASqqsIjQb///9VVf//91VV////KquDiv//+Kqriv//+Kqr/wAAKqv///iqqv8AAVVV///4qqsIvAb///9VVZv/AACqq/8AEIAAjZyNnP8AAlVV/wARKqv/AAKqq/8AEVVVCJbbBZH/ACiqq///+iqr/wAcVVX//+5VVZv//+5VVZv//+Mqq5Nji///yKqri///0lVVfmdxCKBlBf8AD1VV/wALVVX/AA9VVv8ACKqr/wAPVVWR/wAPVVWR/wARqquOn4uri/8AFKqr///6Kqv/AAlVVf//9FVV/wAJVVX///RVVf8AA6qr///vgACJ///qqqsIXlgVsYuKhAX///6qq///91VViP//9oAA///7VVX///Wqq///+1VV///1qqv///kqq///9oAAgv//91VVgv//91VVgP//+NVWfv//+lVVfv//+lVV///w1VX///0qq///7qqri3mLe/8AA9VVff8AB6qrff8AB6qrhf8ACdVVjZcI/wABVVX/AAqqq/8ABVVW/wAI1VX/AAlVVZL/AAlVVZL/AAsqq/8ABYAAmI+Yj/8ADlVV/wACqqv/AA+qq/8AAVVV/wAPqqv/AAFVVf8ADtVV/wAAqquZiwgOKuv3gRVfCoz7XxVfCg7j+OH38xVs+227i7H3nfySi4RbBQ77ibb3nBVV94vBBw73cvfm9yEVpvdQ2Ivw+1DIiyb3UAX/AA6qq/8AAqqr/wAOVVX/AAQqqpn/AAWqq5n/AAWqq/8ADIAA/wAHqqqW/wAJqquW/wAJqqv/AAmAAP8AC9VVk5mTmf8ABVVVnP8AAqqrn/8ABVVV/wAmqqv///nVVv8AHYAA///uVVX/ABRVVf//7lVV/wAUVVX//97VVv8ACiqr///PVVWLCPs5i078QQXi94AVoPcl64sF/wALVVWL/wALVVb///7VVf8AC1VV///9qqv/AAtVVf///aqr/wAJ1Vb///wqqv8ACFVV///6qqv/AAhVVf//+qqr/wAGVVb///jVVf8ABFVVgv8ABFVVgv8AASqr///0gACJff///VVVef//+lVW///yKqv///dVVf//9lVV///3VVX///ZVVf//9YAA///4qqv///Oqq4YI///zqquG///yVVWIfIp8iv//8Sqr////gAD///FVVYsI+/90FV0KwRZeCg735fjyFWAKDvtG95j4RBWfi/8AE1VV/wAD1VX/ABKqq/8AB6qr/wASqqv/AAeqq/8AEKqq/wAKVVX/AA6qq5j/AA6qq5j/AAxVVf8AD1VVlf8AEaqrlf8AEaqr/wAGqqv/ABLVVf8AA1VVn/8AAqqrn////tVV/wASqquG/wARVVWG/wARVVX///fVVf8ADyqr///0qquYCP//9KqrmP//8iqq/wAKKqv//++qq/8AB1VV///vqqv/AAdVVf//7dVV/wADqqt3i3eL///sqqv///xVVf//7VVV///4qqv//+1VVf//+Kqr///vVVb///XVVf//8VVVfv//8VVVfv//86qr///w1VWB///uqquB///uqqv///mqq///7VVV///9VVV3CP///Kqrd/8AANVV///tKquQ///uVVWQ///uVVX/AAgqq///8Kqr/wALVVV+/wALVVV+/wAN1Vb///Wqq/8AEFVV///4VVX/ABBVVf//+FVV/wASKqv///wqq5+LCJK7Ff//5VVVi///6qqr/wAJVVV7/wASqqt7/wASqqv///mqq/8AFqqq/wADVVX/ABqqq43/AA1VVf8ABFVV/wAMgAD/AAaqq/8AC6qr/wAGqqv/AAuqq/8ACFVV/wAKKqqV/wAIqquV/wAIqqv/AAsqq/8ABtVV/wAMVVWQ/wAMVVWQ/wAM1Vb/AAKAAP8ADVVViwj/ABqqq4v/ABVVVf//9qqrm///7VVVm///7VVVkf//6VVWh///5VVVif//8qqr///71VX///OAAP//+aqr///0VVX///mqq///9FVV///31VX///XVVoH///dVVYH///dVVf//9NVV///5Kqv///Oqq4b///Oqq4b///Mqqv///YAA///yqquLCA7j9xb4CxWEW/d4i3L7S7uLpPdL936Lkrv7foul90tbi3H7SwX7m/urFYRb+IqLkrsFDvuE0PfgFYVg97iLkrv7cIv3JPcNBf8ADVVV/wALVVWY/wALVVb/AAyqq/8AC1VV/wAMqqv/AAtVVf8AC1VV/wALqquVl5WX/wAIqquY/wAHVVWZ/wAHVVWZ/wAEqquajZv/AASqq/8AIqqr///21VX/ABrVVXSedJ7//+Eqq/8ACYAA///ZVVWLCP//81VVi///8iqr///+Kqt8///8VVV8///8VVX///FVVf//+iqr///xqquD///xqquD///y1VX///WAAH9+f37///ZVVf//79VV///4qqv//+yqqwi+hwX/AAdVVf8AD1VV/wALKqv/AA2qq5qXmpf/ABQqq5H/ABlVVYv/ABqqq4v/ABPVVf//+iqrmP//9FVVmP//9FVV/wAFKqv///DVVv///VVV///tVVX///yqq///6Kqrgv//7FVV///xVVV7///xVVV7///uVVb//+9VVf//61VV///uqqsIDvuE9174rBWEW5yLBf8ADqqri5n///6qq/8ADVVV///9VVX/AA1VVf///VVV/wALgAD///uqq/8ACaqrhf8ACaqrhf8AByqq///31VX/AASqq///9aqr/wAEqqv///Wqq/8AAVVV///y1VWJe////qqrgYf///ZVVf//+VVV///2qqv///lVVf//9qqr///31Vb///fVVf//9lVVhAj///ZVVYT///WAAP//+oAA///0qquH///0qquH///0qqqJ///0qquLcYv//+yqq/8ABVVV///zVVX/AAqqq///81VV/wAKqqv///dVVv8ADlVV///7VVWdCFp5Bf8AB1VVa/8ADqqr///pKquh///yVVWh///yVVX/ABtVVf//+Sqr/wAgqquL/wAUqquL/wATgAD/AALVVf8AElVV/wAFqqv/ABJVVf8ABaqr/wAQgACT/wAOqqv/AApVVf8ADqqr/wAKVVWX/wAMqqv/AAlVVZr/AAlVVZqR/wAQ1VX/AAKqq/8AEqqrCI//ABtVVYb/ABeqq32ffZ///+qqq5f//+NVVY8IjI0Fo/8AB1VV/wAVKqv/AAyAAP8AElVV/wARqqv/ABJVVf8AEaqr/wAK1Vb/ABSAAP8AA1VV/wAXVVWN/wAQqqv///6AAJqG/wANVVWG/wANVVX///hVVf8AC1VW///1qqv/AAlVVf//9aqr/wAJVVX///Mqqv8AByqr///wqquQ///wqquQ///vVVX/AAKAAHmLCP//41VVi3H///kqq///6Kqr///yVVX//+iqq///8lVVd///7oAA///vVVX//+qqqwivcgX/AAtVVf8AD1VV/wAN1Vb/AAwqq/8AEFVVlP8AEFVVlP8AEdVW/wAEgAD/ABNVVYv/ABdVVYv/ABHVVv//+iqr/wAMVVX///RVVf8ADFVV///0VVX/AATVVv//8YAA///9VVX//+6qq4l9///7VVX///Qqq///+Kqr///2VVX///iqq///9lVV///3VVX///hVVoH///pVVQiB///6VVX///Uqq///+9VW///0VVX///1VVf//9FVV///9VVX///Uqq////qqrgYsIDved+VgVYQoOdfh99xYVYgoOoffM99cVTPxVx4v3Avmm9w+L+wL9pseL9wn51vt3iwX//7lVVYv//8bVVv//7yqr///UVVX//95VVf//1FVV///eVVX//+WAAP//z4AA///2qqv//8Cqq////KqrcY3//+eqq/8AB1VV///pVVX/AAdVVf//6VVV/wAL1VZ3/wAQVVX//+6qq/8AEFVV///uqquf///yVVX/ABeqq4H/ABeqq4H/ABqAAIb/AB1VVYsIDvvS9xL30hVcCg73B0sVw8tliz8zmXwF/wAOqqv/AAVVVZr/AAKqq/8AD1VVi/8ADVVVi/8ADCqr///81VWW///5qquW///5qqv/AASAAP//9Sqqif//8Kqr///+qquDiP//+VVV///7VVX///qqq///+1VV///6qqv///pVVv//+6qq///5VVX///yqq///+VVV///8qqv///jVVv///YAA///4VVX///5VVQj///hVVf///lVV///41Vb///8qq///+VVVi///41VVi///56qr/wAFqqt3/wALVVUIeGsFp33/AB6qq4T/ACFVVYv/AAyqq4v/AA1VVf8AAaqrmf8AA1VVmf8AA1VV/wAM1VWQ/wALqqv/AAaqq/8AC6qr/wAGqquV/wAIqqr/AAhVVf8ACqqr/wAIVVX/AAqqq/8ABSqrmI3/AA9VVY2X////VVX/AAqAAP///KqrlAj///yqq5T///rVVf8AB4AAhJGEkf//96qr/wAEgAD///ZVVY7///ZVVY7///XVVv8AAYAA///1VVWLf4v///VVVf///aqr///2qqv///tVVQgO+4T3ofkoFWMKDvtU9wb40BX///yqq3X/AADVVXeQeZB5/wAIgAD///CAAJd+l37/AA8qq///9dVV/wASVVX///iqq/8AElVV///4qqv/ABUqq////FVVo4v/ABaqq4v/ABWqqv8AA6qr/wAUqqv/AAdVVf8AFKqr/wAHVVX/ABKAAP8ACiqr/wAQVVWYCP8AEFVVmP8ADVVW/wAPgAD/AApVVZ3/AApVVZ3/AAbVVp//AANVVaH/AANVVf8AFqqriv8AFFVV///6qqud///6qqudgv8AD4AA///zVVWY///zVVWY///wVVaV///tVVWS///tVVWS///rVVb/AAOAAP//6VVViwhzi///6aqr///8VVX//+tVVf//+Kqr///rVVX///iqq3n///XVVf//8Kqrfv//8Kqrfv//8yqq///wgAD///Wqq3n///Wqq3n///mAAHf///1VVXUIuxaNmf8ABKqr/wANVVX/AAdVVf8ADKqr/wAHVVX/AAyqq/8ACSqr/wALVVWWlZaV/wAMqqv/AAfVVf8ADlVV/wAFqqv/AA5VVf8ABaqr/wAPKqv/AALVVZuLrYv/ABmqq///9dVV/wARVVX//+uqq/8AEVVV///rqqv/AAaqq///5tVVh20Iif//8VVV///7VVX///JVVv//+Kqr///zVVX///iqq///81VV///2gAD///TVVv//9FVV///2VVX///RVVf//9lVVfv//+FVW///xqqv///pVVf//8aqr///6VVX///DVVf///Sqre4t7i///8aqr/wAC1VX///NVVf8ABaqr///zVVX/AAWqq///9YAA/wAH1VX///eqq5UI///3qquVhf8AC1VV///8VVX/AAyqq////FVV/wAMqqv///8qq/8ADVVVjZkIDir3sfeBFWQK9+D3XxVkCg73XPeC+SgVYwr4p/coFSMKPPz4FWUK93X3jhVmCg73XPd6+SgVYwr4pvcoFSMK+4j9MxWFYPe4i5G7+3CL9yT3DQX/AA1VVf8AC1VVmP8AC1VW/wAMqqv/AAtVVf8ADKqr/wALVVX/AAuAAP8AC6qr/wAKVVWX/wAKVVWX/wAI1VaY/wAHVVWZ/wAHVVWZ/wAEqquajZuN/wARVVX///6AAP8AD1VWhv8ADVVVhv8ADVVVg/8AC1VWgP8ACVVVCID/AAlVVf//8qqr/wAHKqv///BVVZD///BVVZD//+6AAP8AAoAA///sqquL///zVVWL///yKqv///4qq3z///xVVXz///xVVf//8YAA///6Kqt9g32D///y1VX///WAAP//86qrfv//86qrfv//9oAA///v1VX///lVVf//7KqrCL2HBf8AB1VV/wAPVVX/AAsqq/8ADaqrmpeal/8AFCqrkf8AGVVVi/8AGqqri5////oqq/8ADVVV///0VVX/AA1VVf//9FVVkP//8NVW///8qqv//+1VVf///Kqr///oqquC///sVVX///FVVXv///FVVXv//+5VVv//71VV///rVVX//+6qqwgO91z3WPisFYRbnIsF/wAOqquLmf///qqr/wANVVX///1VVf8ADVVV///9VVX/AAuAAP//+6qr/wAJqquF/wAJqquF/wAHKqr///fVVf8ABKqr///1qqv/AASqq///9aqr/wABVVX///LVVYl7///+qquBh///9lVV///5VVX///aqq///+VVV///2qqv///fVVv//99VV///2VVWECP//9lVVhP//9YAA///6gAD///Sqq4f///Sqq4f///Sqqon///Sqq4txi///7Kqr/wAFVVX///NVVf8ACqqr///zVVX/AAqqq///91VW/wAOVVX///tVVZ0IWXkFk2ua///pKquh///yVVWh///yVVX/ABtVVf//+Sqr/wAgqquL/wAUqquL/wATgAD/AALVVf8AElVV/wAFqqv/ABJVVf8ABaqr/wAQgACT/wAOqqv/AApVVf8ADqqr/wAKVVWX/wAMqqv/AAlVVZr/AAlVVZqR/wAQ1VX/AAKqq/8AEqqrCI//ABtVVYb/ABeqq32ffZ///+qqq5f//+NVVY8IjI0Fo/8AB1VV/wAVKqv/AAyAAP8AElVV/wARqqv/ABJVVf8AEaqr/wAK1Vb/ABSAAP8AA1VV/wAXVVWN/wAQqqv///6AAJqG/wANVVWG/wANVVX///hVVf8AC1VW///1qqv/AAlVVf//9aqr/wAJVVX///Mqqv8AByqr///wqquQ///wqquQ///vVVX/AAKAAHmLCP//41VVi3H///kqq///6Kqr///yVVX//+iqq///8lVVd///7oAA///vVVX//+qqqwivcgX/AAtVVf8AD1VV/wAN1Vb/AAwqq/8AEFVVlP8AEFVVlP8AEdVW/wAEgAD/ABNVVYv/ABdVVYv/ABHVVv//+iqr/wAMVVX///RVVf8ADFVV///0VVX/AATVVv//8YAA///9VVX//+6qq4l9///7VVX///RVVf//+Kqr///2qqv///iqq///9qqr///3VVX///iAAIH///pVVQiB///6VVX///Uqq///+9VW///0VVX///1VVf//9FVV///9VVX///Uqq////lVWgf///1VVCPiP92IVIwr7Bvz4FWUK93P3jhVmCg77B/e192wVl99Pi4JLBf///Kqr///oqqv///kqqv//7Cqq///1qqv//++qq///9aqr///vqqt////xVVX///JVVX7///JVVX7///Eqq///81VVe///86qre///86qrfP//8oAAff//8VVVff//8VVV///zqqt6///1VVX//+yqq///9VVV///sqqv///iqq///6FVVh28Ih///5Kqr/wABKqv//+eqqv8ABlVV///qqqv/AAZVVf//6qqr/wAKVVZ5/wAOVVX///FVVf8ADlVV///xVVWd///01Vb/ABWqq///+FVV/wAVqqv///hVVf8AF9VV///8Kquli72L/wAsqqv/AA4qq/8AJ1VV/wAcVVX/ACdVVf8AHFVVp/8AJ9VW/wAQqqv/ADNVVQhLkwV////dVVX//+0qq2///+ZVVf//6qqr///mVVX//+qqq///4YAA///1VVX//9yqq4v//9tVVYv//+TVVv8ACyqr///uVVX/ABZVVf//7lVV/wAWVVX///nVVv8AHSqr/wAFVVWv/wADVVWh/wAGqquelZuVm/8AC6qr/wAO1VX/AA1VVf8ADaqrCP8ADVVV/wANqqv/AA5VVv8ADNVV/wAPVVWX/wAPVVWX/wAOVVb/AAyqq/8ADVVV/wANVVX/AA1VVf8ADVVV/wALqqualf8AEKqrlf8AEKqr/wAGqqv/ABNVVf8AA1VVoQi893gVWwoO9vgx+VgVJwpcQxUoCve4+IwVPwoO9vgx+VgVJwpcQxUoCvfA+RwVYQoO9vgx+VgVJwpcQxUoCvdv+RwVZwoO9vgx+VgVJwpcQxUoCtz4nRVoCg72+DH5WBUnClxDFSgK8/jkFSUK91IWJQoO9vgx+VgVJwpcQxUoCvct+OEVaQr3KhZqCg738Pi/+VgV/MT9WNGL9yn3UPfMi3H7UPgDi5PH+8GLsveo96iLk8f7qIuv95D3uYuTxwX8A08VUvwk+6WL99L4JAUO9xL5S/cDFVu0Bf//8Kqr///sqqt6///vgAD//+1VVf//8lVV///tVVX///JVVf//7Kqr///0qqt3gneC///sKqv///lVVf//7FVV///7qqv//+xVVf//+6qr///tKqv///3VVXmLXYv//9eqq5P//91VVZv//91VVZv//+Oqq6F1pwh1p///8KqrrP//91VVsf//91VVsf///qqrtJG3kbf/AAyqq7T/ABNVVbH/ABNVVbH/ABiqq6ypp6mn/wAiqquh/wAnVVWb/wAnVVWb/wAqqquTuYsI/wAjVVWLrf//+Cqr/wAgqqv///BVVf8AIKqr///wVVWk///n1Vb/ABFVVf//31VVCMe4Bf//5qqrs///36qq/wAcgAD//9iqq5z//9iqq5z//9RVVf8ACIAAW4tVi///zVVV///2qqv//9Cqq///7VVV///Qqqv//+1VVf//1dVV///mKqtmamZq///hVVX//9jVVf//56qr///Sqqv//+eqq///0qqr///v1VX//85VVYNVCP//+VVV///PVVWM///Sqqv/AAiqq2H/AAiqq2H/AA+AAGb/ABZVVWv/ABZVVWv/AByAAP//5YAA/wAiqqt2/wAiqqt2/wAnqqr///KAAP8ALKqrhQhKQJl8Bf8ADqqr/wAFVVWa/wACqqv/AA9VVYv/AA1VVYv/AAwqq////NVVlv//+aqrlv//+aqr/wAEgAD///Uqqon///Cqq////qqrg4j///lVVf//+1VV///6qqv///tVVf//+qqr///6VVb///uqqv//+VVV///8qqv///lVVf///Kqr///41Vb///2AAP//+FVV///+VVUI///4VVX///5VVf//+NVW////Kqv///lVVYv//+NVVYv//+eqq/8ABaqrd/8AC1VVCHhrBad9/wAeqquE/wAhVVWL/wAMqquL/wANVVX/AAGqq5n/AANVVZn/AANVVf8ADNVVkP8AC6qr/wAGqqv/AAuqq/8ABqqrlf8ACKqq/wAIVVX/AAqqq/8ACFVV/wAKqqv/AAUqq5iN/wAPVVWNl////1VV/wAKgAD///yqq5QI///8qquU///61VX/AAeAAISRhJH///eqq/8ABIAA///2VVWO///2VVWO///11Vb/AAGAAP//9VVVi3+L///1VVX///2qq///9qqr///7VVUIio2zugX/AASqq////1VV/wAEgAD///+qq/8ABFVViwj/AA2AAAa/i/8AMdVVlf8AL6qrn/8AL6qrn/8AK9VVrLO5CA6a91j5WBUsCvs9txU/Cg6a91j5WBUsCvs191AVYQoOmvdY+VgVLAr7hvdQFWcKDpr3WPlYFSwK+/n3GBUlCvdSFiUKDvvS91j5WBUvCqq3FT8KDvvS91j5WBUvCrL3UBVhCg770vdY+VgVLwph91AVZwoO+9L3WPlYFS8K+zH3GBUlCvdSFiUKDvc392X4IBVrCvvfVRVsCg73XPdY+VgVMwrHyBVoCg73lO/39hU0Cs0WNQr4MvgiFT8KDveU7/f2FTQKzRY1Cvg6+LIVYQoO95Tv9/YVNArNFjUK9+n4shVnCg73lO/39hU0Cs0WNQr3X/gzFWgKDveU7/f2FTQKzRY1Cvd2+HoVJQr3UhYlCg7j+BH35RX7PvdaZGn3Pvta+3j7Wqlp93f3W/c9+1uyrfs+91r3d/dab60FDveU9zHsFTQ5qWzi3AX/ABtVVf//5VVV/wAgqqv//+uAALH///Gqq7H///Gqq7b///jVVbuLwYv/ADKqq/8ACSqr/wAvVVX/ABJVVf8AL1VV/wASVVX/ACoqq/8AGaqrsKywrP8AHqqr/wAnVVX/ABhVVf8ALaqr/wAYVVX/AC2qq/8AD9VW/wAx1VX/AAdVVcEI/wAHVVX/ADVVVf///lVW/wAw1Vb///VVVf8ALFVV///1VVX/ACxVVf//7VVW/wAmgAD//+VVVf8AIKqrCOHcbqo1OgVv/wAZVVX//9+AAP8AE4AAZv8ADaqrZv8ADaqr///WKqv/AAbVVf//0VVVi1WL///NVVX///aqq///0Kqr///tVVX//9Cqq///7VVV///V1VX//+Yqq2ZqZmr//+FVVf//2NVV///nqqv//9Kqq///56qr///Sqqv//+/VVf//zlVVg1UI///4qqtX/wABVVX//9BVVZX//9Sqq5X//9Sqq/8AEaqrZf8AGVVV///fVVUI+Kz4jBX8efxdBf//7Kqr/wAbVVX///LVVf8AH1VWhP8AI1VVhP8AI1VV////Kqv/ACaqq/8ABVVVtZG3/wAMqqu0/wATVVWx/wATVVWx/wAYqqusqaepp/8AIqqrof8AJ1VVm/8AJ1VVm/8AKqqrk7mLCP8AJqqri/8AIqqq///6VVX/AB6qq///9Kqr/wAeqqv///Sqq/8AGlVVe6H//+tVVQj8Xvx+Ffh6+F4F/wAUqqv//+Sqq/8ADiqqa/8AB6qr///bVVX/AAeqq///21VV/wAA1VX//9hVVoX//9VVVYVf///zVVVi///sqqtl///sqqtl///nVVVqbW9tb///3VVVdf//2Kqre///2Kqre///1VVVg12LCGOL///cVVWR///gqquX///gqquX///lVVWcdaEIDvX5EvejFTsK+xn4dRU/Cg71+RL3oxU7CvsR+QUVYQoO9fkS96MVOwr7YvkFFWcKDvX5EvejFTsK+9X4zRUlCvdSFiUKDof3vPfFFT0K+AH3UBVhCg6H91j5WBUo/VjNi6T3SPctiwWni/8AG1VV/wADqqv/ABqqq/8AB1VV/wAaqqv/AAdVVf8AGCqq/wALKqv/ABWqq5r/ABWqq5r/ABJVVf8AEyqrmv8AF1VVmv8AF1VV/wAJ1VX/ABuqq/8ABKqrq/8ABVVV/wAkqqv///0qq/8AHoAAgP8AGFVVgP8AGFVV///wVVX/ABMqq///66qrmQj//+uqq5n//+iqqv8ACdVV///lqqv/AAWqq///5aqr/wAFqqv//+aAAP8AAtVV///nVVWLCPsfi6H3MAVK/GgVNgoOmvfe+F4Vg1WgiwX/ABiqq4v/ABcqqv///FVV/wAVqqv///iqq/8AFaqr///4qqv/ABKAAP//9NVV/wAPVVV8/wAPVVV8/wALVVb//+zVVf8AB1VV///oqqv/AAdVVf//6Kqr/wABVVb//+Sqqv//+1VV///gqqv///yqq3H///hVVf//6FVVf///6qqrf///6qqrfP//7dVVeXwIeXz//+tVVf//9IAA///oqquD///oqquDcof//+VVVYv///aqq4v///cqqv8AAKqr///3qqv/AAFVVf//96qr/wABVVX///fVVf8AAlVWg/8AA1VVCIJRBZOJ/wAH1VX///6qq/8AB6qr////VVX/AAeqq////1VV/wAH1VX///+qq5OLr4v/ACGqq5D/AB9VVZX/AB9VVZWn/wAOqqv/ABiqq/8AE1VV/wAYqqv/ABNVVf8AFIAA/wAX1Vb/ABBVVf8AHFVV/wAQVVX/ABxVVf8ACtVW/wAgKqv/AAVVVa8I/wAFVVX/ACaqq////4AA/wAgKqr///mqq/8AGaqr///5qqv/ABmqq///9lVV/wAU1VV+m36b///wqquX///uVVWT///uVVWT///uKqv/AAWqq3n/AANVVQiMjQX/AB9VVf8ACVVV/wAagAD/ABIqq/8AFaqrpv8AFaqrpv8ADYAA/wAhKqv/AAVVVf8AJ1VVj/8AHKqr///+1VX/ABmAAP//+aqr/wAWVVX///mqq/8AFlVV///1gAD/ABKqq///8VVVmv//8VVVmnn/AAuAAP//6qqrk///6qqrk///6FVVj3GLCGmLbP//+iqrb///9FVVb///9FVV///nqqv//+/VVv//61VV///rVVX//+tVVf//61VV///vKqv//+dVVn7//+NVVX7//+NVVf//9yqr///gqqv///tVVWkIQPyqx4vU+KEFj/8AGVVVkf8AGCqrk6KTopb/ABQqq5n/ABFVVZn/ABFVVZz/AA2qq5+Vn5X/ABeqq5D/ABtVVYuxi/8AHaqr///1VVX/ABVVVf//6qqr/wAVVVX//+qqq/8AB6qr///gVVWFYQj///qqq2P//+8qqv//4IAA///jqqt0///jqqt0///d1VX///SAAGOLCA5Q+Gb3VhVACvsHsRVBCrn34BU/Cg5Q+Gb3VhVACvsHsRVBCsH4cBVhCg5Q+Gb3VhVACvsHsRVBCnD4cBVnCg5Q+Gb3VhVACvsHsRVBCvs69/EVbQoOUPhm91YVQAr7B7EVQQr7I/g4FVwK91IWXAoOUPhm91YVQAr7B7EVQQou+DUVbgr3KhZvCg73pvhD96sViYL7B4sF///QqquL///ZKqr///sqq///4aqr///2VVX//+Gqq///9lVV///n1VV/ef//8aqref//8aqrfv//8FVVg3qDeob///Aqq4n///FVVf///Kqr///nVVX/AAHVVXaS///uqquS///uqqv/AAqAAP//8dVVmYAImYD/ABBVVYP/ABKqq4b/ABKqq4b/ABNVVf///YAAn4u3i/8AKSqr/wAIqqv/ACZVVf8AEVVV/wAmVVX/ABFVVf8AH9VW/wAdVVb/ABlVVf8AKVVV/wALVVVj/wAUVVZu/wAdVVV5/wAdVVV5roL/ACiqq4sI/wAVVVWL/wATqqv/AAGqq53/AANVVZ3/AANVVZz/AAWAAJv/AAeqq5v/AAeqq/8AD6qr/wAJqqr/AA9VVf8AC6qr/wAPVVX/AAuqq/8AD1VW/wAOgAD/AA9VVf8AEVVVCGGtBXn//+iqq///6qqr///t1VX//+dVVX7//+dVVX7//+VVVv//+YAA///jVVWL///kqquL///o1VX/AASqq3j/AAlVVXj/AAlVVXz/AAyAAID/AA+qq4D/AA+qq///+NVV/wASVVX///yqq6D///yqq6D/AABVVf8AFoAAj6MI9/iLkK4F/wAFVVX/ACdVVYr/ACHVVv//+Kqr/wAcVVX///iqq/8AHFVVf/8AFyqr///vVVWd///vVVWd///rqqv/AA0qq3P/AAhVVXP/AAhVVXH/AAQqq2+Le4v//++AAIl6h3qH///vgACFe4MIe4P///DVVYH///Gqq3////Gqq3////OAAH3///VVVXv///NVVf8AJKqr///rgAD/ABkqqv//46qr/wANqqv//+Oqq/8ADaqr///c1VX/AAbVVWGLbYtr///6gABpgGmA///iVVX//+/VVf//5qqr///qqqsIqGIF/wAtVVX/ACKqq/8AMaqr/wARVVXBi72L/wAiVVX///PVVf8AEqqr///nqqv/ABKqq///56qr/wAGVVX//90qqoX//9Kqqwj7EkwV9wkG///8qqtz///5qqr//+mAAP//9qqrdv//9qqrdv//8yqq///tqqv//++qq///8FVV///vqqv///BVVf//7Cqq///zgAD//+iqq///9qqr///oqqv///aqq3D///tVVf//4VVVi///81VVi///86qr/wAB1VV//wADqqt//wADqqv///WAAP8ABVVVgpIIgpL///kqq5T///tVVZb///tVVZb///6qq/8ADIAAjZn/AACqq/8ABqqrjv8ACIAA/wAFVVX/AApVVf8ABVVV/wAKVVWU/wAJqqv/AAyqq5T/AAyqq5T/ABFVVf8AB9VVof8ABqqrof8ABqqr/wAcqqv/AANVVf8AI1VViwj4dMEVcAoOKvhwzxVisQV5///sqqv//+uqq///8IAA///pVVX///RVVf//6VVV///0VVVz///6Kqv//+aqq4tvi///51VVkP//6qqrlf//6qqrlf//7qqq/wANgAD///Kqq5z///Kqq5z///aqqp////qqq6L///qqq6L///9VVf8AGIAAj6UIj6X/AAfVVf8AGIAA/wALqqui/wALqquimp//ABJVVZz/ABJVVZz/ABUqq/8ADYAAo5WjlaWQp4uji/8AFVVV///6gAD/ABKqq4D/ABKqq4Cc///w1VX/AA9VVf//7KqrCMCvBf//7Kqr/wAZVVX//+jVVf8AE6qrcJlwmf//4YAAkmmL///cqquL///egACF///gVVV////gVVV/b///7yqr///nqqv//+pVVf//56qr///qVVX//+uqqv//5lVW///vqqv//+JVVf//76qr///iVVX///WAAP//34AA///7VVX//9yqqwj///tVVf//4Kqr/wAAgAD//+LVVf8ABaqrcP8ABaqrcJX//+gqq/8ADlVV///rVVX/AA5VVf//61VV/wASKqv//+7VVqH///JVVaH///JVVaT///bVVqf///tVVQhGOpl8Bf8ADqqr/wAFVVWa/wACqqv/AA9VVYv/AA1VVYv/AAwqq////NVVlv//+aqrlv//+aqr/wAEgAD///Uqqon///Cqq////qqrg4j///lVVf//+1VV///6qqv///tVVf//+qqr///6VVb///uqqv//+VVV///8qqv///lVVf///Kqr///41Vb///2AAP//+FVV///+VVUI///4VVX///5VVf//+NVW////Kqv///lVVYv//+NVVYv//+eqq/8ABaqrd/8AC1VVCHhrBad9/wAeqquE/wAhVVWL/wAMqquL/wANVVX/AAGqq5n/AANVVZn/AANVVf8ADNVVkP8AC6qr/wAGqqv/AAuqq/8ABqqrlf8ACKqq/wAIVVX/AAqqq/8ACFVV/wAKqqv/AAUqq5iN/wAPVVWNl////1VV/wAKgAD///yqq5QI///8qquU///61VX/AAeAAISRhJH///eqq/8ABIAA///2VVWO///2VVWO///11Vb/AAGAAP//9VVVi3+L///1VVX///2qq///9qqr///7VVUIio24wAX/AANVVf///1VV/wAEqqv///+qq5GL/wAhVVWL/wAf1Vb/AAaAAP8AHlVVmP8AHlVVmP8AHIAA/wAUKqv/ABqqq/8AG1VVCA51+IjiFUYKdvdLFUcKS/e6FT8KDnX4iOIVRgp290sVRwpT+EoVYQoOdfiI4hVGCnb3SxVHCvsd+EoVZwoOdfiI4hVGCnb3SxVHCvuR+BIVXAr3UhZcCg73LvhiFUwKtvEVPwoO9y74YhVMCr73ihVhCg73LvhiFUwKbfeKFWcKDvcu+GIVTAr7JvdSFVwK91IWXAoOm/ft+SgV+wRTpmr3B8QF/wAVVVV1/wAWgAD//+Mqq/8AF6qr///cVVX/ABeqq///3FVV/wAVgAD//9fVVv8AE1VV///TVVUIiIkF///tVVX/ABNVVf//6tVWmf//6FVV/wAIqqv//+hVVf8ACKqr///mKqv/AARVVW+L///cqquL///egACF///gVVV////gVVV/b///7yqr///nqqv//+pVVf//56qr///qVVX//+uqqv//5lVW///vqqv//+JVVf//76qr///iVVX///WAAP//34AA///7VVX//9yqqwj///qqq///3Kqr/wABVVX//9+AAJP//+JVVZP//+JVVf8ADSqr///mVVb/ABJVVf//6lVV/wASVVX//+pVVf8AF1VW///vKqv/ABxVVX//ABxVVX//AB/VVoX/ACNVVYv/ACNVVYv/ACGAAP8ABiqr/wAfqqv/AAxVVf8AH6qr/wAMVVX/ABwqqv8AEaqr/wAYqquiCP8AGKqrov8AFIAA/wAcKqv/ABBVVf8AIVVV/wAQVVX/ACFVVf8ACyqr/wAlVVaR/wApVVX/AAdVVb+K/wAvqqv///aqq/8AK1VV///2qqv/ACtVVf//8yqq/wAmgAD//++qq/8AIaqr///vqqv/ACGqq///7iqq/wAc1VX//+yqq6P//+yqq6N7/wASqqv///NVVf8ADVVVCPcGxGup+wRTBf//9Kqr/wANVVX///KAAP8ADdVW///wVVX/AA5VVf//8FVV/wAOVVX///GAAP8ADNVW///yqqv/AAtVVQhTbQX/AAtVVf//9qqr/wANVVb///Qqqv8AD1VV///xqqv/AA9VVf//8aqr/wAOVVb///HVVf8ADVVVfQj7W/xBFVMKDnX3EvfgFVEK2PeNFW0KDpvh93sVUgrHFlMK97T34RU/Cg6b4fd7FVIKxxZTCve8+HEVYQoOm+H3exVSCscWUwr3a/hxFWcKDpvh93sVUgrHFlMK1/fyFW0KDpvh93sVUgrHFlMK7vg5FVwK91IWXAoO4/cP99sVJgr7s/cWFYl9/wADVVV//wAIqquB/wAIqquB/wALVVWGmYuZi/8ADKqrkP8AC1VVlf8AC1VVlf8ABqqrl42ZjZn///yqq5f///dVVZX///dVVZX///Sqq5B9iwh9i///81VVhv//9Kqrgf//9Kqrgf//+VVVf4l9CF/7yBX///6qq33/AAOAAH//AAhVVYH/AAhVVYH/AAsqq4aZi5mL/wAM1VWQ/wALqquV/wALqquV/wAGgACX/wABVVWZjZn///zVVZf///eqq5X///eqq5X///TVVZB9iwj///FVVf///1VV///zKquGgP//9qqrgP//9qqr///5Kqt////9VVX///FVVQgOm/cL1BU7RKdu2NAFnf//7qqr/wAVqqv///Kqqv8AGVVV///2qqv/ABlVVf//9qqr/wAcqqv///tVVauL/wAjVVWL/wAhVVaR/wAfVVWX/wAfVVWXp/8AENVV/wAYqqv/ABWqq/8AGKqr/wAVqqv/ABRVVf8AGaqqm/8AHaqrm/8AHaqr/wAKqqv/ACCAAP8ABVVV/wAjVVUI/wAJVVX/AECqq///9Kqr/wA1VVVrtQjc0nCoPEUF///tVVX/ABCqq///6iqrmHL/AAlVVXL/AAlVVf//49VV/wAEqqv//+Cqq4v//9yqq4v//96AAIX//+BVVX///+BVVX9v///vKqv//+eqq///6lVV///nqqv//+pVVf//66qq///mVVb//++qq///4lVV///vqqv//+JVVf//9YAA///fgAD///tVVf//3KqrCP//91VVTZb//8tVVf8AHqqr///UqqsI9+/3xxX7wPudBYH/AA9VVf//+VVV/wARqqv///yqq5////yqq5+LoP8AA1VVoY+l/wAH1VX/ABiAAP8AC6qrov8AC6qropqf/wASVVWc/wASVVWc/wAVKqv/AA2AAKOVo5WlkKeLCP8AF1VVi/8AFNVW///8gAD/ABJVVYT/ABJVVYT/AA/VVv//9iqr/wANVVX///NVVQj7p/u9FffB954F/wAJVVX///Cqq/8ABoAA///uVVX/AAOqq3f/AAOqq3f/AAAqqv//6lVV///8qqv//+iqq4dx///4Kqv//+eAAP//9FVVdP//9FVVdHx3///tqqt6///tqqt6///q1VX///KAAHOBc4Fxhm+LCP//0VVVi2b/AA2qq///5Kqr/wAbVVUIDnX4ffcWFVcKQfhGFT8KDnX4ffcWFVcKSfjWFWEKDnX4ffcWFVcK+yf41hVnCg51+H33FhVXCvub+J4VXAr3UhZcCg77B/dR+yMVWQr3UPnnFWEKDqz3QfmIFfsf/mzHi7f3yY2LBf8ABqqre/8ACYAA///yKqv/AAxVVf//9FVV/wAMVVX///RVVZn///ZVVv8AD6qr///4VVX/AA+qq///+FVV/wAQgAD///pVVv8AEVVV///8VVX/ABFVVf///FVV/wARVVb///4qq/8AEVVVi/8AI1VVi/8AIVVWkf8AH1VVl/8AH1VVl6f/ABDVVf8AGKqr/wAVqqsI/wAYqqv/ABWqq/8AFFVV/wAZqqqb/wAdqqub/wAdqqv/AAqqq/8AIIAA/wAFVVX/ACNVVf8ABKqr/wAjVVX///6AAP8AIIAA///4VVX/AB2qq///+FVV/wAdqqv///LVVv8AGaqq///tVVX/ABWqq///7VVV/wAVqqv//+iqq/8AENVVb5dvl///4FVVkf//3Kqriwj//+6qq4v//+4qqv///iqr///tqqv///xVVf//7aqr///8VVV5///6VVb//+5VVf//+FVV///uVVX///hVVf//71VW///2VVb///BVVf//9FVV///wVVX///RVVf//8oAA///yKqv///Sqq3sIiYvA+AsFO/yhFUIKDvsH91H7IxVZCoL5rxVcCvdSFlwKDvb4MflYFScKXEMVKAr4C/i7FXEKDlD4ZvdWFUAK+wexFUEK9x74ChVgCg72+DH5WBUnClxDFSgK9z/5DRVyCg5Q+Gb3VhVACvsHsRVBCjn4cBVzCg72+TH7SxV9sQX///qqq///+qqr///4gAD///rVVf//9lVVhv//9lVVhv//9Cqr///9gAB9i///41VVi///86qr/wAPqquP/wAfVVWN/wAMqqv/AARVVf8ADFVV/wAGqquX/wAGqquX/wAH1VX/AAtVVZT/AAqqq5T/AAqqq/8ACVVV/wAJqqr/AAmqq/8ACKqrCP8ACaqr/wAIqqv/AAjVVZKT/wAFVVUIqIv7W/lYR4v8LP1Y0Iv191D4C4u++1AF///0qquD///0VVWCf4F/gYD///WAAIGAgYD///eAAP//9CqrhP//81VVhP//81VV///7gAD///Kqq4l9h///5qqr/wAFqqt3/wAPVVX///FVVf8AD1VV///xVVWg///4qqv/ABqqq4sI/wASqquL/wAQqqr/AAMqq/8ADqqr/wAGVVX/AA6qq/8ABlVV/wANVVX/AAfVVpf/AAlVVQj7f/nHFSgKDlD4W/tLFX2xBf//+qqr///6qqv///iAAP//+tVV///2VVWG///2VVWG///0Kqv///2AAH2L///jVVWL///zqqv/AA+qq4//AB9VVY3/AAyqq/8ABFVV/wAMVVX/AAaqq5f/AAaqq5f/AAfVVf8AC1VVlP8ACqqrlP8ACqqr/wAJVVX/AAmqqv8ACaqr/wAIqqsI/wAJqqv/AAiqq/8ACNVVkpP/AAVVVQiWBov/AA1VVf8AACqr/wANVVb/AABVVf8ADVVV/wAAVVX/AA1VVYz/AA5VVv8AAaqr/wAPVVX/AAGqq/8AD1VVjf8AEKqr/wACVVWd/wACVVWd/wAC1Vb/ABRVVf8AA1VV/wAWqqsIm/cFBZP/ADqqq///9Sqr/wAqgAD//+JVVf8AGlVV///iVVX/ABpVVf//1Sqr/wANKqtTi22La///+oAAaYBpgP//4lVV///v1VX//+aqq///6qqrCKhiBf8ALVVV/wAiqqv/ADGqq/8AEVVVwYuxi/8AHdVV///3VVX/ABWqq///7qqr/wAVqqv//+6qq/8ACCqq///jVVX///qqq2MIh29FiwX///Cqq4t6////gAD//+1VVYr//+1VVYr//+zVVv///aqr///sVVX///xVVf//7FVV///8VVX//+zVVv//+qqr///tVVWE///tVVWE///u1Vb///bVVf//8FVV///0qqv///BVVf//9Kqr///y1Vb///HVVf//9VVVev//9VVVeoT//+vVVf///Kqr///oqqsI///8qqv//+dVVf8AAdVVdpL//+6qq5L//+6qq/8ACoAA///x1VWZgJmA/wAQVVWD/wASqquG/wASqquG/wATVVX///2AAJ+Ls4v/ACGqq5L/ABtVVZn/ABtVVZn/ABhVVqH/ABVVVakIjQaH///mqqv///6qq3L/AAFVVf//51VV///0qquD///0VVWCf4F/gYD///WAAIGAgYD///eAAP//9CqrhP//81VVhP//81VV///7gAD///Kqq4l9h///5qqr/wAFqqt3/wAPVVX///FVVQj/AA9VVf//8VVVoP//+Kqr/wAaqquL/wASqquL/wAQqqr/AAMqq/8ADqqr/wAGVVX/AA6qq/8ABlVV/wANVVX/AAfVVpf/AAlVVQgj+DMVQQoO9xL5S/cDFSkK+xH5pRVhCg4q+HDPFUMKZ/kUFWEKDvcS+Uv3AxUpCvtQ+aUVZwoOKvhwzxVDCvsK+RQVZwoO9xL5S/cDFSkK+2H5bRUlCg4q+HDPFUMK+xz43BVcCg73EvlL9wMVKQr7IPkVFXQKDir4cM8VQwpF+IQVdAoO9zf3T/lYFSoK+4j9HBUrCvc7+UgVdAoOrPiD3BVECqj3KhVFCveJ+HEVdQoO9zf3ZfggFWsK+99VFWwKDqz4g9wVgDrHi9z42dOLk8BDi5z3Dk+LevsO+zaLg1b3Notv+1yJiwX///iqq5v///ZVVf8ADdVVf/8AC6qrf/8AC6qr///yKqv/AAmqqv//8FVV/wAHqqv///BVVf8AB6qr///vgAD/AAWqqv//7qqr/wADqqv//+6qq/8AA6qr///uqqr/AAHVVf//7qqri///3Kqri///3oAAhf//4FVVf///4FVVf2///+8qq///56qr///qVVUI///nqqv//+pVVf//66qq///mVVb//++qq///4lVV///vqqv//+JVVf//9YAA///fgAD///tVVf//3Kqr///6qqv//9yqq/8AAVVV///fgACT///iVVWT///iVVX/AA0qq///5lVW/wASVVX//+pVVf8AElVV///qVVX/ABdVVv//7yqr/wAcVVV//wAcVVV//wAf1VaF/wAjVVWLCP8AEVVVi/8AEdVW/wAB1VX/ABJVVf8AA6qr/wASVVX/AAOqq53/AAWqqv8AEaqr/wAHqqv/ABGqq/8AB6qr/wAQqqr/AAmqqv8AD6qr/wALqqv/AA+qq/8AC6qr/wANgAD/AA3VVf8AC1VVmwio9yoVh3H///eAAP//54AAfnR+dP//74AAd3d6d3r//+mAAP//8oAAcoFygf//5iqrhv//5VVVi2+L///nVVWQ///qqquV///qqquV///uqqr/AA2AAP//8qqrnAj///Kqq5z///aqqp////qqq6L///qqq6L///9VVf8AGIAAj6WPpf8AB9VV/wAYgAD/AAuqq6L/AAuqq6Kan/8AElVVnP8AElVVnP8AFSqr/wANgACjlaOVpZCniwj/ABqqq4v/ABiAAIb/ABZVVYH/ABZVVYH/ABKqq///8oAAmnqaev8ACtVVd/8ABqqrdP8ABqqrdP8AAVVV///ngACHcQgOmvdY+VgVLApL5hVxCg51+IjiFUYKdvdLFUcKq/fkFWAKDpr3WPlYFSwK+7P3QRVyCg51+IjiFUYKdvdLFUcK+1D4ShVzCg6a91j5WBUsCvt/9xgVJQoOdfiI4hVGCnb3SxVHCvsf+BIVXAoOmvdY+VgVKP1Y9/SLBf//9Kqrg///9FVVgn+Bf4GA///1gACBgIGA///3gAD///Qqq4T///NVVYT///NVVf//+4AA///yqquJfYf//+aqq/8ABaqrd/8AD1VV///xVVX/AA9VVf//8VVVoP//+Kqr/wAaqquLCP8AEqqri/8AEKqq/wADKqv/AA6qq/8ABlVV/wAOqqv/AAZVVf8ADVVV/wAH1VaX/wAJVVUIfbEF///6qqv///qqq///+IAA///61VX///ZVVYb///ZVVYb///Qqq////YAAfYv//+NVVYv///Oqq/8AD6qrj/8AH1VVjf8ADKqr/wAEVVX/AAxVVf8ABqqrl/8ABqqrl/8AB9VV/wALVVWU/wAKqquU/wAKqqv/AAlVVf8ACaqq/wAJqqv/AAiqqwj/AAmqq/8ACKqr/wAI1VWSk/8ABVVVCL+Lk8f8E4uy96j37IuTx/vsi6/3kPgDi5PHBQ519/77SxV9sQX///qqq///+qqr///4gAD///rVVf//9lVVhv//9lVVhv//9Cqr///9gAB9i///41VVi///86qr/wAPqquP/wAfVVWN/wALVVX/AAOqq5b/AAVVVf8ACqqr/wAFVVX/AAqqq/8ABlVW/wAKKqr/AAdVVf8ACaqr/wAHVVX/AAmqq/8AB9VWlP8ACFVV/wAIVVUI/wAIVVX/AAhVVf8ACCqr/wAHKquTkf8AIVVV/wAEqqv/AB6qq5Wn/wAPVVWn/wAPVVX/ABmqq6H/ABdVVf8AHKqrCGSwBf//7Kqr///mqqtyd///4VVV///xVVX//+FVVf//8VVV///hVVb///iqq///4VVVi///3Kqri///5Cqq/wAGqqv//+uqq/8ADVVV///rqqv/AA1VVf//8IAAm///9VVV/wASqqv///VVVf8AEqqr///5gAD/ABMqqv///aqr/wATqqv///2qq/8AE6qr////1VX/ABAqqo3/AAyqqwj4GIuRtQWP/wAaqquK/wAaVVWFpYWl///1VVX/ABcqq///8Kqr/wAUVVX///Cqq/8AFFVV///rqqr/ABBVVv//5qqr/wAMVVX//+aqq/8ADFVV///hqqr/AAYqq///3Kqri2mL///gKqv///nVVf//4lVV///zqqv//+JVVf//86qr///lVVZ6///oVVX//+pVVQj//+hVVf//6lVV///sVVb//+aAAP//8FVV///iqqv///BVVf//4qqr///11VZr///7VVX//91VVf//+qqr///cqqv/AADVVf//34AAkv//4lVVkv//4lVVl///5oAAnP//6qqrnP//6qqr/wAV1VX//+8qqv8AGqqr///zqqv/ABqqq///86qr/wAeqqr///mAAP8AIqqr////VVUI///qqqv///Cqq///7IAAef//7lVV///rVVX//+5VVf//61VV///1gAD//+lVVv///Kqr///nVVWH///mqqv/AAWqq3f/AA9VVf//8VVV/wAPVVX///FVVaD///iqq/8AGqqri/8AEqqri/8AEKqq/wADKqv/AA6qq/8ABlVV/wAOqqv/AAZVVf8ADVVV/wAH1VaX/wAJVVUI9wn4WRVHCg6a91j5WBUsCvs+txV0Cg51+IjiFUYKdvdLFUcKQve6FXQKDvdc+UO5FS0K+0r55hVnCg6s+LipFUkKbvdjFUoK+xL4axVnCg73XPlDuRUtCvuP+dcVcgoOrPi4qRVJCm73YxVKCvtV+GsVcwoO91z5Q7kVLQr7W/muFSUKDqz4uKkVSQpu92MVSgr7JPgzFVwKDvdc+UO5FS0K+8r7BBV2Cg6s+LipFUkKbvdjFUoKNff5FdX3OVaLNfs5BQ73JPdY+VgVLgr3UPdQFWcKDnX3TvmIFUsK6vdIFWcKDvck91j5WBUo/VjNi7r35Pggi1z75M2L7vlYSYt7+wP8IIub9wMF9/T7zBX8IIuh9y34IIsFDnX3NfjZFTr82ceLq/d7Bf8ABKqrq/8ACCqq/wAb1VX/AAuqq/8AF6qr/wALqqv/ABeqq/8ADiqq/wATqqr/ABCqq/8AD6qr/wAQqqv/AA+qq/8AEqqq/wALqqr/ABSqq/8AB6qr/wAUqqv/AAeqq/8AFVVV/wAD1VWhi6OL/wAS1VX///vVVf8ADaqr///3qqv/AA2qq///96qr/wAKKqr///TVVf8ABqqrfQj/AAaqq33/AAOqqv//8Cqr/wAAqqv//+5VVf8AAKqr///uVVWK///t1Vb///1VVf//7VVVCGX7pMeLsfenBf8AA1VV/wAZVVWM/wAYqqv///6qq6P///6qq6OF/wAVKqv///VVVf8AElVV///1VVX/ABJVVf//8Cqr/wAO1VZ2/wALVVV2/wALVVX//+OAAP8ABaqrZ4v//+1VVYt5///9gAD//+6qq4b//+6qq4Z7///5VVX///FVVf//96qrCP//8VVV///3qqv///LVVv//9iqq///0VVX///Sqq///9FVV///0qqv///Yqq3+D///zVVUIiYun91z3NouTwPs2i5z3Dk+LevsOQ4uDVgUO+9L3WPlYFS8K+0fIFWgKDvcu+GIVTAr7O/cLFW0KDvvS91j5WBUvCvcD5hVxCg73LvhiFUwK9xD3JBVgCg770vdY+VgVKP1Yk4sF///0qquD///0VVWCf4F/gYD///WAAIGAgYD///eqq///9Cqr///5VVX///NVVf//+VVV///zVVX///uqq///8qqriX2H///mqqv/AAWAAHea///xVVWa///xVVX/ABTVVf//+Kqr/wAaqquLCP8AEqqri/8AEKqq/wADKqv/AA6qq/8ABlVV/wAOqqv/AAZVVf8ADVVV/wAH1VaX/wAJVVUIfbEF///6qqv///qqq///+IAA///61VX///ZVVYb///ZVVYb///Qqq////YAAfYv//+NVVYv///Oqq/8AD6qrj/8AH1VVjf8ADKqr/wAEVVX/AAxVVf8ABqqrl/8ABqqrl/8AB9VV/wALVVWU/wAKqquU/wAKqqv/AAlVVf8ACaqq/wAJqqv/AAiqqwj/AAmqq/8ACKqr/wAI1VWSk/8ABVVVCJiL7vlYBQ73LvhiFUv8YpCLBf//9Kqrg///9IAAgv//9FVVgf//9FVVgf//9Sqr///1gACBgIGA///3gAD///Qqq4T///NVVYT///NVVf//+4AA///yqquJfYf//+aqq/8ABYAAd5r///FVVZr///FVVf8AFNVV///4qqv/ABqqq4sI/wASqquL/wAQqqr/AAMqq/8ADqqr/wAGVVX/AA6qq/8ABlVV/wANVVX/AAfVVpf/AAlVVQh9sQX///qqq///+qqr///4gAD///rVVf//9lVVhv//9lVVhv//9Cqr///9gAB9i///41VVi///86qr/wAPqquP/wAfVVWN/wAMqqv/AARVVf8ADFVV/wAGqquX/wAGqquX/wAH1VX/AAtVVZT/AAqqq5T/AAqqq/8ACVVV/wAJqqr/AAmqq/8ACKqrCP8ACaqr/wAIqqv/AAjVVZKT/wAFVVUIlYvL+GIFWvdLFU0KDvvS91j5WBUvClH3GBUlCg73LvhiFUwKDvcW91j5WBUvCvgO/IgVMAoO+w/3LvhiFUwKWvdLFU0K91D9ahVOCqb5ahVNCg4r+DL3ZBUwCqX5RBVnCg73HjoVdwq5+akVZwoOrPdY+VgVMQqy/ZoVdgoOKvdO+YgVTwpe/coVdgoOPfdY+VgVMgqy91AVYQoO91j5iBVQCsr3SBVhCg4991j5WBUyCon9mhV2Cg73WPmIFVAK+y39yhV2Cg4991j5WBUyCvcMFnUKDvdY+YgVUAr3BVsVdQoOPfdY+VgVMgr1++kVXAoO+4b3WPmIFVAKpPwIFVwKDj33Ffd7FWv7e/ggi5PH+96Lq/d494f3UZPJ+4b7Ub33+kmLUfwxOkyCSgUO9xv32BVe+9jHi8H4FevglM4rNbb3xU+LV/wBLDaBSAUO91z3WPlYFTMK97b3UBVhCg519xL34BVRCvex+AwVYQoO91z3WPlYFTMK0/2aFXYKDnX3EvfgFVEK9wv8IhV2Cg73XPdY+VgVMwr3jbcVdAoOdfcS9+AVUQr3o/d8FXQKDnX3EvfgFVEKsfgMFXUKDveU7/f2FTQKzRY1CviE+FEVcQoOm+H3exVSCscWUwr4BfgLFWAKDveU7/f2FTQKzRY1Cvel+KMVcgoOm+H3exVSCscWUwr3KfhxFXMKDveU7/f2FTQKzRY1CvgH+LIVYQrNFmEKDpvh93sVUgrHFlMK94z4cRVhCs0WYQoO+AL44ccVsveo96uLk8f7q4uv95D3vIuTx/xEiwX//86qq4ta///4gAD//89VVXz//89VVXz//9Oqq///6aqrY///4lVVY///4lVVaf//2yqrb19vX3n//8yqq4P//8VVVf//+Kqr///Kqqv/AALVVf//z4AAmP//1FVVmP//1FVV/wAUgAD//9qqq6dsCKds/wAiVVX//+gqq/8AKKqr///vVVX/ACiqq///71VVt///96qr/wAvVVWLCPhsi5PHBfuz+OAVOPzgN4sF///sqquL///rVVX/AAIqq3X/AARVVXX/AARVVf//6lVVkv//6qqr/wAJqqv//+qqq/8ACaqr///r1VX/AAxVVXiaeJr//+/VVf8AEoAA///yqquh///yqquh///2gAD/ABlVVf//+lVV/wAcqqv///pVVf8AHKqr////1Vb/ACCqqv8ABVVV/wAkqqsI/wAHVVX/ADNVVZv/ACwqq/8AGKqrsP8AGKqrsP8AHSqq/wAegAD/ACGqq6P/ACGqq6Ov/wARqqv/ACZVVf8AC1VV/wAmVVX/AAtVVf8AJNVW/wAFqqv/ACNVVYsIDvfd+dz3ohVwCvvDVRX3+IuQrgX/AAVVVf8AJ1VViv8AIdVW///4qqv/ABxVVf//+Kqr/wAcVVV//wAXKqv//+9VVZ3//+9VVZ3//+uqq/8ADSqrc/8ACFVVc/8ACFVVcf8ABCqrb4v//+aqq4v//+jVVf///IAAdoR2hP//7VVVgv//76qrgAj//++qq4B9///zqqv///RVVf//8lVV///0VVX///JVVf//9iqr///ygACD///yqqv///yqq5P///rVVf8ACoAAhJiEmP//9aqr/wAMqqv///JVVf8ADFVV///yVVX/AAxVVf//7iqr/wAKqqt1lHWU///kVVX/AASAAP//3qqriwj//96qq4v//+CAAIX//+JVVX///+JVVX///+WAAP//7yqr///oqqv//+pVVf//6Kqr///qVVX//+xVVf//5lVWe///4lVVe///4lVV///1qqv//9+AAP//+1VV///cqqv///qqq///3Kqr/wABKqr//9+AAP8AB6qr///iVVX/AAeqq///4lVV/wAMgAD//+ZVVv8AEVVV///qVVUI/wARVVX//+pVVf8AFdVW///vKqv/ABpVVX//ABpVVX//AB3VVoX/ACFVVYu3i/8AKKqr/wAJqqv/ACVVVf8AE1VV/wAlVVX/ABNVVar/ABxVVv8AGKqr/wAlVVUIjQb/AAtVVWP/ABRVVm7/AB1VVXn/AB1VVXmugv8AKKqri/8AFVVVi/8AE6qr/wABqqud/wADVVWd/wADVVWc/wAFgACb/wAHqqub/wAHqqv/AA+qq/8ACaqq/wAPVVX/AAuqq/8AD1VV/wALqqv/AA9VVv8ADoAA/wAPVVX/ABFVVQhhrQV5///oqqv//+qqq///7dVV///nVVV+///nVVV+///lVVb///mAAP//41VVi///5Kqri///6NVV/wAEqqt4/wAJVVV4/wAJVVV8/wAMgACA/wAPqquA/wAPqqv///jVVf8AElVV///8qqug///8qqug/wAAVVX/ABaAAI+jCPwlmhX/AANVVf8AGKqr/wAHVVb/ABeqqv8AC1VV/wAWqqv/AAtVVf8AFqqr/wAOVVb/ABQqqv8AEVVV/wARqqv/ABFVVf8AEaqrn5n/ABaqq/8AClVV/wAWqqv/AApVVf8AGKqq/wAFKqv/ABqqq4v/ABqqq4v/ABcqqob/ABOqq4H/ABOqq4Gb///ygAD/AAxVVXoI/wAMVVV6/wAIgAB3/wAEqqt0/wAEqqt0/wAAVVX//+eAAIdxh3H///iAAP//54AAgHSAdP//8dVVd///7qqrev//7qqrev//7Cqq///ygAD//+mqq4H//+mqq4H//+eAAIb//+VVVYsI///lVVWL///o1Vb/AAUqq///7FVV/wAKVVX//+xVVf8AClVVe5n///Oqq/8AEaqr///zqqv/ABGqq///94AA/wAUKqr///tVVf8AFqqr///7VVX/ABaqq////1VW/wAXqqr/AANVVf8AGKqrCA6a9274IBU3Cvs298wVOArW91AVYQoO+4n3EvfgFVQK92L4DBVhCg6a9274IBU3Cvs298wVOAr7D/2aFXYKDvuJ9xL34BVUCoP8IhV2Cg6a9274IBU3Cvs298wVOAq/txV0Cg77ifcS9+AVVAr3Q/d8FXQKDnX3GvcXFTkK9+H5kRVhCg77LOz3ChVVCveg+OIVYQoOdfca9xcVOQr3kvmRFWcKDvss7PcKFVUK90z44hVnCg519xr3FxVGYQX/ABSqq2f/ABqAAHH/ACBVVXv/ACBVVXv/ACUqq///9qqrtf///VVVCE9EmXwFm/8ABVVVmv8AAqqrmYv/AA1VVYv/AAxVVv///NVV/wALVVX///mqq/8AC1VV///5qqv/AARVVv//9Sqq///9VVX///Cqq////qqrg4j///lVVf//+1VV///6qqv///tVVf//+qqr///6VVb///uqqv//+VVV///8qqv///lVVf///Kqr///41Vb///2AAP//+FVV///+VVUI///4VVX///5VVf//+NVW////Kqv///lVVYtvi///56qr/wAFqqv//+tVVf8AC1VVCHhrBad9/wAeqquE/wAhVVWL/wAMqquL/wANVVX/AAGqq5n/AANVVZn/AANVVf8ADNVVkP8AC6qr/wAGqqv/AAuqq/8ABqqrlf8ACKqq/wAIVVX/AAqqq/8ACFVV/wAKqqv/AAUqq5iN/wAPVVWNl////1VV/wAKgAD///yqq5QI///8qquU///61VX/AAeAAISRhJH///eqq/8ABIAA///2VVWO///2VVWO///11Vb/AAGAAP//9VVVi3+L///1VVX///2qq///9qqr///7VVUIio2zugX/ABtVVf8AAVVV/wAaqqv/AAVVVqX/AAlVVaX/AAlVVf8AF9VVmP8AFaqr/wAQqqv/ABWqq/8AEKqr/wASKqr/ABRVVf8ADqqro/8ADqqro/8ACVVV/wAbVVWP/wAeqqv/AASqq/8AIVVV///+qqr/ABuqq///+Kqrof//+Kqrof//9Kqq/wASKqv///Cqq/8ADlVVCP//8Kqr/wAOVVV5/wALgAD//+tVVf8ACKqr///rVVX/AAiqq///6tVW/wAH1VX//+pVVZL//+pVVZL//+qqq5J2knaS///t1VWU///wqquW///wqquW///0KqqZ///3qquc///3qquc///91VX/ABXVVY//ABqqqwj/AANVVf8AFqqr/wAHKqv/ABOqqpb/ABCqq5b/ABCqq/8ADYAA/wAN1VWblpuWnf8ACFVVn/8ABaqrn/8ABaqr/wAUqqv/AALVVf8AFVVVi/8AO1VVi/8AKqqr///oqqul///RVVUIyrQF///sqqur///m1VX/ABbVVWz/AA2qq2z/AA2qq///3Sqr/wAG1VX//9lVVYtti///4qqr///71VX//+NVVf//96qr///jVVX///eqq3H///Oqqv//6Kqr///vqqv//+iqq///76qr///sgAD//+uqqv//8FVV///nqqv///BVVf//56qr///11Vb//+Qqqv//+1VV///gqqsI///7VVX//96qq/8AAVVWb/8AB1VV///pVVX/AAdVVf//6VVV/wALKqv//+0qq5p8mnz/ABHVVf//89VV/wAUqqv///aqq/8AFKqr///2qqv/ABUqqv//96qq/wAVqqv///iqq/8AFaqr///4qqv/ABVVVf//+KqqoP//+KqroP//+Kqr/wASVVX///cqqv8AD6qr///1qqsI/wAPqqv///Wqq/8AC9VV///y1VWTe5N7/wACVVX//+uqq////Kqr///nVVX///yqq///6qqrhP//7NVV///1VVV6///1VVV6///yqqv///GAAHt/e3///+3VVf//9qqr///rqqv///lVVf//66qr///5VVX//+rVVf///KqrdYsIZ4v//+GAAP8AB1VVcv8ADqqrcv8ADqqr///s1VX/ABZVVf//8qqrqQgO+yzs9woVUWcF/wAMqqtt/wATqqr//+mAAP8AGqqrfP8AGqqrfP8AH1VV///3gACviQhJPpl8BZv/AAVVVZr/AAKqq5mL/wANVVWL/wAMVVb///zVVf8AC1VV///5qqv/AAtVVf//+aqr/wAEVVb///Uqqv///VVV///wqqv///6qq4OI///5VVX///tVVf//+qqr///7VVX///qqq///+lVW///7qqr///lVVf///Kqr///5VVX///yqq///+NVW///9gAD///hVVf///lVVCP//+FVV///+VVX///jVVv///yqr///5VVWLb4v//+eqq/8ABaqr///rVVX/AAtVVQh4awWnff8AHqqrhP8AIVVVi/8ADKqri/8ADVVV/wABqquZ/wADVVWZ/wADVVX/AAzVVZD/AAuqq/8ABqqr/wALqqv/AAaqq5X/AAiqqv8ACFVV/wAKqqv/AAhVVf8ACqqr/wAFKquYjf8AD1VVjZf///9VVf8ACoAA///8qquUCP///KqrlP//+tVV/wAHgACEkYSR///3qqv/AASAAP//9lVVjv//9lVVjv//9dVW/wABgAD///VVVYt/i///9VVV///9qqv///aqq///+1VVCIqNucAFn/8AAVVV/wATgACPnv8ABqqrnv8ABqqr/wARKqv/AAlVVf8AD1VVl/8AD1VVl/8ADNVW/wAOgAD/AApVVZz/AApVVZz/AAbVVv8AE4AA/wADVVWhj/8AH1VV///8gAD/ABgqq4CcgJx8mHiUCHiUdv8ABoAAdI90j///6qqr/wAE1VX//+xVVf8ABaqr///sVVX/AAWqq///8Cqr/wAH1VV/lX+V///7VVX/AA9VVf8AAqqr/wAUqquNl/8ABKqr/wAKqqv/AAdVVf8ACVVV/wAHVVX/AAlVVZT/AAeqq/8ACqqrkQj/AAqqq5H/AAtVVf8ABKqrl/8AA1VVl/8AA1VV/wALVVX/AAGqq/8ACqqri6eL/wAVVVX///qAAP8ADqqrgP8ADqqrgP8AC6qq///v1VX/AAiqq///6qqrCMarBf//9Kqrqf//7YAAof//5lVVmf//5lVVmf//4CqrkmWL///sqquL///sqqr///1VVf//7Kqr///6qqv//+yqq///+qqref//99VV///vVVWA///vVVWA///x1Vb///Iqq///9FVV///vVVX///RVVf//71VV///4gAD//+xVVv///Kqr///pVVUI///8qqt1/wABVVX//+3VVZH///Gqq5H///Gqq/8ACNVV///0Kqr/AAuqq///9qqr/wALqqv///aqq/8ADaqq///4qqr/AA+qq///+qqr/wAPqqv///qqq/8AECqq///7gAD/ABCqq////FVV/wAQqqv///xVVf8AECqq///8Kqv/AA+qq4f/AA+qq4f/AA3VVYaXhQiXhf8ACSqr///4Kqv/AAZVVf//9lVV/wAGVVX///ZVVf8AAiqr///zKquJe4n///Kqq///+yqr///0Kqr///hVVf//9aqr///4VVX///Wqq///9qqr///3KqqA///4qquA///4qqv///PVVf//+lVV///yqquH///yqquHfon///NVVYsIb4v//+bVVf8ABoAA///pqquY///pqquY///wKqr/ABLVVf//9qqr/wAYqqsIDnX3GvcXFTkK9675ARV0Cg77LOz3ChVVCvd4+FIVdAoOh/ft+RwVOgr3Jv1eFXYKDvuJ9//4LBVWCjj8bhV2Cg6H9+35HBU6Cvfa8xV0Cg77iff/+CwVVgr3JvfAFXUKDof4pPgyFZG7+yqLpvdO94aLk8f8uouDT/eGi3D7Tvsoi4Vb9yiLUfwyzYvF+DIFDvuJ9933qRWSu/sJi5fe9xiLksH7GIue9xlPi3j7GSeLhFXvi384NIuEWwXii3T7PgX///1VVf//71VV////1Vb///CAAP8AAlVV///xqqv/AAJVVf//8aqr/wAFKqv///OAAJP///VVVZP///VVVf8ACyqr///3gAD/AA5VVf//+aqr/wAOVVX///mqq/8AEdVW///81VX/ABVVVYv/AAtVVYv/AA0qq/8AAaqrmv8AA1VVmv8AA1VV/wANgAD/AAOqq5ePCI7BBf//9Kqr///7VVX///Qqqv///Cqr///zqquI///zqquI///0Kqr///6AAP//9Kqri3eL///xKqv/AAWqq///9lVV/wALVVX///ZVVf8AC1VV///81Vab/wADVVX/ABSqqwii9z4FDvX5EvejFTsK++v4hhVoCg51+H33FhVXCvuz+FcVbQoO9fkS96MVOwpY+KQVcQoOdfh99xYVVwqQ+HAVYAoO9fkS96MVOwr7pvj2FXIKDnX4ffcWFVcK+2v41hVzCg71+RL3oxU7Cvuj+MoVaQr3KhZqCg51+H33FhVXCvtq+JsVbgr3KhZvCg71+RL3oxU7CvtP+QUVYQrNFmEKDnX4ffcWFVcK+xb41hVhCs0WYQoO9fg0+0sVfbEF///6qqv///qqq///+IAA///61VX///ZVVYb///ZVVYb///Qqq////YAAfYv//+NVVYv///Oqq/8AD6qrj/8AH1VV/wADVVX/ABSqq/8ACIAA/wATgAD/AA2qq/8AElVV/wANqqv/ABJVVf8ADoAA/wAPgAD/AA9VVf8ADKqrtY//ACRVVf8ACqqr/wAeqqv/ABFVVQj/AB6qq/8AEVVV/wAZ1VX/ABWqq6CloKX/ABCAAP8AHVVVl/8AIKqrl/8AIKqr/wAIqqut/wAFVVX/ACNVVQjI+ElJi1D8OAX///yqq///5qqrhXD///dVVf//41VV///3VVX//+NVVX7//+VVVv//7qqr///nVVX//+6qq///51VV///pgAD//+uqq///5FVVe///5FVVe///3dVWg///11VVi///1qqri2uT///pVVWb///pVVWb///vgAD/ABRVVf//9aqr/wAYqqsI///1qqv/ABiqq///+qqq/wAaqqr///+qq/8AHKqr////qqv/AByqq/8AAYAApv8AA1VV/wAZVVUIxvg4SYtO/EkF///6qqv//9qqq////yqq///cVVX/AAOqq2n/AAOqq2n/AAmqqv//4dVV/wAPqqv//+Wqq/8AD6qr///lqqv/ABZVVf//6qqqqP//76qrqP//76qr/wAlgAD///cqqrn///6qq///7Kqr///wqqv//+5VVf//7oAAe///7FVVe///7FVV///2VVX//+qAAP///Kqr///oqqsIh///5qqr/wAFqqt3/wAPVVX///FVVf8AD1VV///xVVWg///4qqv/ABqqq4v/ABKqq4v/ABCqqv8AAyqr/wAOqqv/AAZVVf8ADqqr/wAGVVX/AA1VVf8AB9VWl/8ACVVVCA51+HP7SxV9sQX///qqq///+qqr///4gAD///rVVf//9lVVhv//9lVVhv//9Cqr///9gAB9i///41VVi///86qr/wAPqquP/wAfVVWN/wAMqqv/AARVVf8ADFVV/wAGqquX/wAGqquX/wAH1VX/AAtVVZT/AAqqq5T/AAqqq/8ACVVV/wAJqqr/AAmqq/8ACKqrCP8ACaqr/wAIqqv/AAjVVZKT/wAFVVUImgb/AACqq5H/AADVVf8ACIAAjJaMloz/AAvVVYz/AAyqq4z/AAyqq/8AASqr/wAMgAD/AAFVVf8ADFVV/wABVVX/AAxVVf8AAVVW/wAKgAD/AAFVVf8ACKqrCLn34E+La/t7Bf//+1VVa///99VW///kKqv///RVVf//6FVV///0VVX//+hVVf//8dVW///sVVb//+9VVf//8FVV///vVVX///BVVf//7VVW///0VVb//+tVVf//+FVV///rVVX///hVVf//6qqr///8Kqt1i3OL///tKqv/AAQqq///8lVV/wAIVVX///JVVf8ACFVV///11Vb/AAsqq///+VVVmQj///lVVZn///xVVv8AD9VV////VVX/ABGqq////1VV/wARqquM/wASKqr/AAKqq/8AEqqrCLH3pE+LZfunBf///Kqr///mqquK///nVVX/AAFVVXP/AAFVVXP/AAXVVv//6tVV/wAKVVX//+2qq/8AClVV///tqqv/AA/VVv//8Sqq/wAVVVX///Sqq/8AFVVV///0qqv/AByqq///+lVVr4v/ABKqq4ud/wACgAD/ABFVVZD/ABFVVZCb/wAGqqv/AA6qq/8ACFVVCP8ADqqr/wAIVVX/AA0qqv8ACdVW/wALqqv/AAtVVf8AC6qr/wALVVX/AAnVVZeT/wAMqqsIjgb/AAFVVf//+1VV////gAD///Wqq////aqre////aqre////iqq///vVVX///6qq///7qqr///0qquD///0VVWCf4F/gYD///WAAIGAgYD///eAAP//9CqrhP//81VVhP//81VV///7gAD///Kqq4l9CIf//+aqq/8ABaqrd/8AD1VV///xVVX/AA9VVf//8VVVoP//+Kqr/wAaqquL/wASqquL/wAQqqr/AAMqq/8ADqqr/wAGVVX/AA6qq/8ABlVV/wANVVX/AAfVVpf/AAlVVQgO+ALz+VgVPAr4GvdQFWcKDvcS2vhiFVgK96T3ihVnCg6H97z3xRU9Cvew91AVZwoO+wf3UfsjFVkK9wT55xVnCg6H97z3xRU9Cvc99xgVJQr3UhYlCg51qb8VPgpB94wVYQoO+yyrrxVaCo/3wBVhCg51qb8VPgr7OPdUFSUKDvssq68VWgo194gVXAoOdam/FT4K+wTzFXQKDvssq68VWgpn9zAVdAoOUfhT+AcVkbv7AIu+9zEFk/8AGKqr/wALqqv/ABUqqv8AD1VV/wARqqv/AA9VVf8AEaqr/wAUVVb/AAjVVf8AGVVVi/8ACqqri5WJ/wAJVVWH/wAJVVWH/wAIVVaG/wAHVVWFCLG4BXOf///jqquV///fVVWL///oqquL///rVVX///uqq3n///dVVXn///dVVf//8IAA///0qqt+fX59gP//8Cqrgv//7lVVgv//7lVV///4gAD//+6AAIX//+6qqwhY+y77CYuFW/cAi/sG+/IF///0qqtn///y1VX//+SAAHx4fHj//+sqq///9oAA///lVVWL///2qquLgv8AAVVV///3VVX/AAKqq///91VV/wACqquD/wAEVVX///iqq5EIaFwF/wAJVVX///aqq/8ACyqr///5qqqY///8qquY///8qqv/AA2AAP///lVVmYv/ACtVVYv/ACJVVpb/ABlVVaH/ABlVVaH/ABNVVv8AHlVV/wANVVX/ACaqqwj3E/gbBQ519xr3FxU5CvcC+1kVdgoO+yzs9woVVQrg+0wVdgoOh/ft+RwVOgr3Jv1eFXYKDvuJ9//4LBVWCjj8bhV2Cg73HjoVdwoO90z5WBVnCg73fPjIFXQKDvfl+PIVYAoO9wn5WBVzCg73OvkgFVwKDvcK+R0Vbgr3KhZvCg73NftLFX2xBf//+qqr///6qqv///iAAP//+tVV///2VVWG///2VVWG///0Kqv///2AAH2L///jVVWL///zqqv/AA+qq4//AB9VVY3/AAyqq/8ABFVV/wAMgAD/AAaqq/8ADFVV/wAGqqv/AAxVVf8AB6qq/wALVVb/AAiqq/8AClVV/wAIqqv/AApVVf8ACVVV/wAJgACV/wAIqqsIlf8ACKqrlJKT/wAFVVUIXgb///Sqq4P///RVVf//9yqrf///9lVVf///9lVVgP//9YAAgf//9Kqrgf//9Kqr///3qqt////5VVX///NVVf//+VVV///zVVX///uqq///8qqriX2H///mqqv/AAWAAHea///xVVWa///xVVX/ABTVVf//+Kqr/wAaqquLCP8AEqqri/8AEKqq/wADKqv/AA6qq/8ABlVV/wAOqqv/AAZVVf8ADVVV/wAH1VaX/wAJVVUIDrj42RVtCg73VPlYFWEKzRZhCg7nmhZ4CqVIFfcn/Nv8W4sFDvc6+EYWeQoOdfh99xYVYgoOfPihlBWQrwX///lVVYn///mAAP///lVV///5qqv///6qq///+aqr///+qqv///oqqv///1VV///6qquL///1VVWLg/8AAaqr///6qqv/AANVVf//+qqr/wADVVX///xVVf8ABFVWif8ABVVVif8ABVVViv8ABlVWi/8AB1VVi/8AB1VV/wAAqqv/AAeqq/8AAVVVkwi499HXi5G6/HaLhVzRi1H8M7+Lxfgz93yLX/vKBYn///FVVf///oAAfYr///Kqq4r///Kqq/8AAVVV///0Kqr/AAOqq///9aqr/wADqqv///Wqq/8ABlVV///31VWUhZSF/wANgACInYv/AAtVVYv/AAoqq/8AAVVVlP8AAqqrlP8AAqqr/wAJ1VX/AAOqqv8ACqqr/wAEqqsIDj2w95wVg1X4iIuTwQUO+Dqw95wVg1X6fIuTwQUO+9L3Xfh0Fev3eE+L+wD7eAUO+9L3dPlYFXoKDvvS9x3lFXoKDlH3ifh0FXsK94sWewoOUfhN+VgVegr7ixZ6Cg5R9/blFXoK+4sWegoOUfe6+GEVOfzfx4vd+N/3VIuSu/tUi6f3W0+Lb/tb+1SLhFsFDlH3hNQVb/tbx4un91v3VIuSu/tUi7r36PdUi5K7+1SLp/dbT4tv+1v7VIuEWwX3VItc++j7VIuEWwUOPfcO9/YV///8qqv//+dVVf8AAVVVdJH//+qqq5H//+qqq5X//+1VVZl7mXuc///zVVWf///2qquf///2qqv/ABZVVf//+1VV/wAYqquL/wAYqquL/wAXqqr/AASqq/8AFqqr/wAJVVX/ABaqq/8ACVVV/wAUgAD/AAyqq/8AElVVmwj/ABJVVZv/AA9VVv8AEqqr/wAMVVX/ABVVVf8ADFVV/wAVVVX/AAfVVqL/AANVVf8AGKqr/wADVVX/ABiqq////qqrooX/ABVVVYX/ABVVVYH/ABKqq32bfZt6/wAMqqt3/wAJVVV3/wAJVVX//+mqq/8ABKqr///nVVWLCP//51VVi///6FVW///7VVX//+lVVf//9qqr///pVVX///aqq///64AA///zVVX//+2qq3v//+2qq3v///Cqqv//7VVV///zqqv//+qqq///86qr///qqqv///gqqnT///yqq///51VVCA74OvcQtRUhCvfhFiEK9+EWIQoO+Cf5Bvl6FSMK++v80RV8CrsWfQr3uxZ8CrsWfQr89/g+Ff///Kqr///qqqv/AAEqqv//7Cqq/wAFqqv//+2qq/8ABaqr///tqqv/AAjVVf//79VVl32Xff8ADqqrgP8AEVVVg/8AEVVVg/8AE1VWh/8AFVVVi/8AFKqri/8AFCqqj/8AE6qrk/8AE6qrk/8AEdVVlpuZCJuZ/wANKqv/ABAqq/8AClVV/wASVVX/AApVVf8AElVV/wAG1Vb/ABPVVv8AA1VV/wAVVVX/AAKqq/8AFKqr///+qqr/ABOqqv//+qqr/wASqqv///qqq/8AEqqr///3gAD/ABBVVf//9FVVmf//9FVVmf//8VVWlv//7lVVk///7lVVk///7NVWj///61VViwj//+qqq4v//+uAAIf//+xVVYP//+xVVYP//+5VVoD///BVVX3///BVVX3///Kqq///76qrgP//7VVVgP//7VVV///5Kqv//+xVVv///VVV///rVVUIuxaN/wAOqqv/AASqq/8ADaqq/wAHVVX/AAyqq/8AB1VV/wAMqqv/AAkqq5aW/wAJVVWW/wAJVVX/AAwqq/8AB4AA/wANVVX/AAWqq/8ADVVV/wAFqquZ/wAC1VX/AA6qq4v/AB1VVYv/ABdVVv//9dVV/wARVVX//+uqq/8AEVVV///rqqv/AAaqq///5yqqh///4qqrCIn///FVVf//+1VV///yVVb///iqq///81VV///4qqv///NVVf//9tVV///01VaA///2VVWA///2VVX///PVVf//+IAA///yqqv///qqq///8qqr///6qqt9///9VVX///FVVYv//+Kqq4v//+iqqv8ACiqr///uqqv/ABRVVf//7qqr/wAUVVX///lVVf8AGNVWj/8AHVVVCA77m+v3gRVfCg77m/ex94EVZAoO/C74Hfl6FfzE/YC0b/jF+YAFDvsA+Jj5HRWiwgX///VVVf8ABVVV///x1Vb/AASqq///7lVVj///7lVVj///7IAAjf//6qqri0uL///H1VX//+qAAP//z6qrYP//z6qrYP//2YAA//+91VX//+NVVf//pqqrCFeLelvGiwX///yqq///9qqr///9VVX///WAAIn///RVVYn///RVVf///lVV///1gAD///6qq///9qqr///+qqv///iqq////qqq///3Kqr///6qq///9aqr///+qqv///Wqq////6qq///3Kqr/AACqq///+KqrCFuLeFvKiwWL///ZVVWP///cgACT///fqquT///fqqv/AAxVVW//ABCqq///6FVV/wAQqqv//+hVVf8AFKqq///tqqv/ABiqq37/ABiqq37/AB1VVf//+YAArYuni6OOn5Gfkf8AEFVV/wAGqqv/AAyqq/8AB1VVCIfEBf//8qqr///4qqv///Eqqv//+aqq///vqqv///qqq///76qr///6qqv//+0qqv///VVV///qqquLXYv//9uqq/8AEiqr///lVVX/ACRVVf//5VVV/wAkVVX///NVVv8AMoAA/wABVVX/AECqqwj3S4udu/tciwX/AACqq/8AB1VV/wAA1VX/AAjVVoz/AApVVYz/AApVVf8AASqr/wAI1Vb/AAFVVf8AB1VV/wABVVWV/wABqqv/AArVVY3/AAuqq43/AAuqq/8AAqqr/wAKKqr/AANVVf8ACKqrCPdui567+3OLBf8AFVVVz/8AHIAA/wAzVVX/ACOqq/8AIqqr/wAjqqv/ACKqq/8AKNVV/wARVVW5i5+LnP///iqrmf///FVVmf///FVVlv//+9VWk///+1VVCA49+DC1FXyjBf//7qqrf///76qq///3VVX///Cqq///+qqr///wqqv///qqq///8aqq///9VVX///Kqq4v///aqq4v///bVVf8AAVVVgv8AAqqrgv8AAqqrg/8ABNVVhJKEkv//+tVV/wAJgAD///yqq5f///yqq5f///+qqv8AD1VV/wACqqv/ABKqqwig9ywF/wBAqqvF/wAyVVX/ADbVVa//ADOqq6//ADOqq/8AFaqr/wAygAD/AAdVVf8AMVVV/wAFVVWx///6gAD/AB3VVf//76qr/wAVqqv//++qq/8AFaqr///ogAD/AArVVf//4VVVi///7qqri///71VV///8VVV7///4qqt7///4qqv///GAAIB+///xVVUIfv//8VVV///01VX//+4qq///9qqrdv//9qqrdv//+VVV///oKquH///lVVUIZ/uZKzmcb9TPefsVBYVh/wAG1VX//+Eqq/8AE6qr///sVVX/ABOqq///7FVV/wAbgAD///Yqq/8AI1VVi6GLof8ABFVVof8ACKqrof8ACKqroP8ADFVVn5sIm/i2Ff//+qqr///Yqqv//++AAP//1Sqq///kVVX//9Gqq///5FVV///Rqqv//9nVVv//0NVV///PVVVbCK33gwWRtf8ACyqr/wAe1VX/ABBVVf8AE6qr/wAQVVX/ABOqq/8AENVW/wAJ1VX/ABFVVYv/ABFVVYuY///31VX/AAiqq///76qr/wAIqqv//++qq/8AAlVV///p1VWHbwgO+DD3yfkoFVj8AMGLvvgA9xmLkrv71IuEWwX4JbsVUfwwwYu+9/2Ni+b7/auL91X3/Y2LWPv9wYvF+DA4i/tD+9w399wFDvc6+EYWeQoOPfcx95cV+CgGi/8AKKqr///5qqv/ACUqqv//81VV/wAhqqv///NVVf8AIaqr///uVVao///pVVX/ABhVVf//6VVV/wAYVVX//+TVVp7//+BVVf8ADaqr///gVVX/AA2qq///3NVW/wAG1VX//9lVVYv//9iqq4v//9yAAP//+NVV///gVVX///Gqq///4FVV///xqqv//+TVVv//7IAA///pVVX//+dVVQj//+lVVf//51VV///uqqv//+LVVn///95VVX///95VVYX//9vVVov//9lVVYv//9lVVZFnl///3qqrl///3qqr/wARVVX//+LVVf8AFqqrcv8AFqqrcv8AGyqq///sVVX/AB+qq///8aqr/wAfqqv///Gqq/8AI4AA///41VX/ACdVVYsIpYv/ABeqq/8AAoAA/wAVVVWQ/wAVVVWQ/wAT1VaT/wASVVWW/wASVVWWnJn/AA+qq5z/AA+qq5z/AA+AAP8AFIAA/wAPVVWjCGigBf//5qqrYW///+GAAP//4VVVeP//4VVVeP//26qr///2gABhi///xqqri///z6qq/wATqqv//9iqq/8AJ1VVCPe3920V+7f3JQazs7ufw4vDi7x3tWMIDjn4jvf/Ff8ABVVV/wAmqqv/AAHVVv8AKIAA///+VVX/ACpVVf///lVV/wAqVVX///hVVv8AJqqr///yVVWu///yVVWudv8AHNVV///jqqv/ABaqq///46qr/wAWqqv//9nVVf8AC1VVW4v//+NVVYv//+VVVob//+dVVYH//+dVVYH//+eqq///8aqrc///7VVVCKlgBf8AE1VV/wANVVX/ABKqq5ad/wAIqqud/wAIqqv/ABSqq/8ABFVV/wAXVVWL/wAiqquL/wAbgACC/wAUVVV5/wAUVVV5/wAPKqv//+lVVZX//+Sqq5X//+Sqq/8ABaqr///igAD/AAFVVf//4FVV/wABVVX//+BVVf///qqr///iKquHbwj///6qq///91VV///+gAD///dVVv///lVV///3VVX///5VVf//91VV///+gAD///dVVv///qqr///3VVX//+9VVf8AGVVV///qVVb/ABRVVv//5VVV/wAPVVX//+VVVf8AD1VV///iVVb/AAeqq///31VVi///4VVVi///49VW///6VVX//+ZVVf//9Kqr///mVVX///Sqq///6YAA///wqqr//+yqq///7KqrCP//7Kqr///sqqv///Aqqv//6VVV///zqqtx///zqqtx///31VX//+Sqq4f//+NVVYf//+Kqq/8AAKqr///j1VX/AAVVVXD/AAVVVXD/AAmqq///6Cqrmf//61VVmf//61VV/wASgAD//++AAKL///Oqq6L///Oqq/8AGyqr///51VX/AB9VVYsIq4v/AByqq/8ABdVV/wAZVVX/AAuqq/8AGVVV/wALqqv/ABZVVv8AD6qq/wATVVX/ABOqq/8AE1VV/wATqqv/ABDVVv8AFqqq/wAOVVX/ABmqq/8ADlVV/wAZqquX/wAaqqr/AAmqq/8AG6qr/wAJqqv/ABuqq5P/ABvVVf8ABlVVp/8ABlVVp/8ABNVW/wAaVVX/AANVVf8AGKqrCDo2Ff//+1VV///oqquE///mqqr///aqq///5Kqr///2qqv//+Sqq///86qq///mVVX///Cqq3P///Cqq3P//+2AAHf//+pVVXv//+pVVXv//+bVVoP//+NVVYv//+lVVYv//+zVVpD///BVVZX///BVVZX///Oqq/8ADSqrgv8AEFVVCIL/ABBVVYX/ABIqq4ifiJ/////VVZ//AAKqq5//AAKqq/8AFKqr/wAFqqqf/wAIqqv/ABNVVf8ACKqr/wATVVWWnP8ADVVV/wAOqqv/AA1VVf8ADqqr/wAP1Vb/AAuqqv8AElVV/wAIqqv/ABJVVf8ACKqr/wAUgAD/AARVVf8AFqqriwiri6f///bVVaP//+2qq6P//+2qq/8AE6qr///q1VX/AA9VVXMIDueaFngKpUgV9yf82/xbiwUO9xn40/tqFc36fPzO/nzN+j74SgYOpaT7ahX4vcj8bQb33PhO+8n4R/hOi4vJ/KOLi1P3z/xN+938VAUO4/cP99sVJgoO/C73tfl6Ffxc/YC4b/hd+YAFDvvS9xL30hVcCg4297j7ahX3Zvp8TIv7Uf4o+zL34Cdbo1m5ofc4++gFDvc3+VD3kBWL/wAUqqv///yqq/8AE1VV///5VVWd///5VVWd///2VVb/AA+AAP//81VVmP//81VVmHz/AAoqq///7qqr/wAHVVX//+6qq/8AB1VV///sqqr/AAOqq///6qqri3eL///tgAD///yAAHqEeoR7gnyACHyA///xqqv///PVVf//8lVV///yqqv///JVVf//8qqr///ygAB+///yqqv///NVVf//8qqr/wAMqqv///Iqqv8ADNVV///xqquY///xqquYfJf///BVVZb///BVVZb//+9VVpT//+5VVZL//+5VVZL//+2AAP8AA4AA///sqquLCP//6qqri///7NVV///8Kqt6///4VVV6///4VVX///GAAP//9VVWf///8lVVf///8lVV///21VX///Aqq///+aqref//+aqref///NVVeIt3i///61VV/wADVVX//+zVVv8ABqqr///uVVX/AAaqq///7lVV/wAJgAD///Cqq/8ADFVVfgj/AAxVVX7/AA6qq///9dVVnP//+KqrnP//+Kqr/wATKqv///xVVf8AFVVVi5+L/wASgAD/AANVVZz/AAaqq5z/AAaqq5v/AAiAAJr/AApVVZr/AApVVf8ADoAA/wALgACZ/wAMqquZ/wAMqqv/AA5VVf8ADFVV/wAOqquXCP8ADKqr///zVVX/AA1VVf//81VWmf//81VVmf//81VV/wAO1VX///SAAP8AD6qr///1qqv/AA+qq///9aqr/wAQgAD///eqqv8AEVVV///5qqv/ABFVVf//+aqr/wASVVb///zVVf8AE1VVi/8AFVVVi/8AE1VW/wAD1VX/ABFVVf8AB6qr/wARVVX/AAeqq/8ADqqr/wAKgACX/wANVVUIl/8ADVVV/wAJVVX/AA+qq/8ABqqrnf8ABqqrnf8AA1VV/wATVVWL/wAUqqsIUogVi///51VVhP//61VWff//71VVff//71VV///sVVX///eqq///5qqri///8Kqri///8YAA/wACqqv///JVVf8ABVVV///yVVX/AAVVVf//8qqrkn7/AAiqq37/AAiqq///86qr/wAJVVX///RVVZX///RVVZX///TVVv8ACaqr///1VVX/AAlVVQiV/wAIqquW/wAJqqqX/wAKqquX/wAKqqv/AAxVVf8ACiqq/wAMqqv/AAmqq/8ADKqr/wAJqqv/AA0qqpP/AA2qq/8ABlVV/wANqqv/AAZVVf8ADdVV/wADKquZi6eL/wAU1VWC/wANqqt5/wANqqt5/wAG1VX//+pVVYv//+aqqwj7yhb///aqq///91VV///1VVX///aAAH////Wqq3////Wqq///84AA///2gAB+///3VVV+///3VVX///Kqq///+NVW///yVVX///pVVf//8lVV///6VVX///Iqq////SqrfYv//+VVVYv//+tVVv8ACFVV///xVVX/ABCqq///8VVV/wAQqqv///iqq6CL/wAZVVUIi5f/AAHVVf8AC1VV/wADqqv/AAqqq/8AA6qr/wAKqqv/AAUqqv8ACYAA/wAGqqv/AAhVVf8ABqqr/wAIVVX/AAhVVf8ABqqrlZCVkP8AC1VV/wACgAD/AAyqq4uZi5n///zVVZn///mqq5n///mqq/8ADdVV///4Kqr/AA2qq///9qqrCP8ADaqr///2qqv/AAzVVf//9iqql///9aqrl///9aqrlv//9oAAlf//91VVCA5o+Cr5dBWL/wAJVVX///3VVf8AB9VW///7qqv/AAZVVf//+6qr/wAGVVX///pVVf8ABSqrhI+Ej///+FVV/wAC1VX///eqq/8AAaqr///3qqv/AAGqq///+Cqq/wAA1VX///iqq4v//+iqq4v//+zVVf//+yqrfP//9lVVfP//9lVVf///8yqrgnsIgnv///mqq3n///xVVXf///xVVXf///2qq///64AAinaKdv///9VV///rgAD/AACqq3f/AACqq3f/AABVVf//7lVVi///8KqrCIv8g4p2i///4IAABYt6////Kqt5///+VVV4///+VVV4///81VZ6///7VVV8///7VVV8///5VVb///iAAP//91VVi4eL///8qquN///9VVWP///9VVWP///9Kqv/AARVVYj/AASqq4j/AASqq////Cqr/wAEVVX///tVVY8I///7VVWP///5VVaN///3VVWL///2qquL///4KqqI///5qquF///5qquF///81VX///hVVYv///aqq4v//+9VVf8ABoAAf5j///iqq5j///iqq/8ADYAA///8VVWZi6uL/wAYVVX/AAmAAP8AEKqrngj/ABCqq56X/wAXKqv/AAdVVf8AG1VV/wAHVVX/ABtVVY//AByAAP8AAKqr/wAdqqv/AACqq/8AHaqr/wAAVVX/ABmAAIv/ABVVVQj4jAeL/wADVVX////VVZL///+qq/8ACqqr////qqv/AAqqq////6qq/wAMgAD///+qq/8ADlVV////qqv/AA5VVf8AAFVV/wAO1VaM/wAPVVWM/wAPVVX/AAGqq/8ADiqr/wACVVWY/wACVVWY/wADgAD/AArVVf8ABKqr/wAIqqv/AASqq/8ACKqr/wAGVVX/AARVVZOLCP8ABKqri/8AA6qq///91VX/AAKqq///+6qr/wACqqv///uqq/8AAtVV///7VVWOho6G/wAD1VX///uAAP8ABKqrh/8ABKqrh5KJ/wAJVVWL/wAKqquL/wAI1VX/AALVVZL/AAWqq5L/AAWqq/8AA4AA/wAIgACL/wALVVUIDuP5GPghFX4Kc/s/FX4KDuP3y/cSFfewi5K7+5eL6/ci90uLkrv7Movd9w9loSr7Jfuri4Rb95GLLPsi+0aLBYRb9y2LOvsNsnYFDuPklxX4fouSuvx+iwWt94YV+GT7TJK+/Cz3NPhZ9zWTv/yY+0wFDuPz9wkV+Jj3TJPD/GT3TINX+C37Nfxa+zQFdfswFfh+i5K6/H6LBQ6a99toFfc/+Bv7P/gbTIv7Pfwb9z38GwWr+WAV9x372fsd+9n7HPfZBQ73r/mEFT8KDve3+hQVYQoO92b6FBVnCg73lvmEFXQKDtP5lRVoCg7q+dwVJQr3UhYlCg74APmzFXEKDvch+gUVcgoO9yT52RVpCvcqFmoKDvdu+hQVYQrNFmEKDvdV+dwVJQoO91P5WBV1Cg7dSRV2Cg73bvjmFdX3OVaLNfs5BQ5J93L3CRXDzlMGjr0VIAr3g/tdFfww+P34MAa9vhX8lP1i+JQGDlD4RfhiFUwKWvdLFU0K+6X7gRVICg5Q9z/4LBVICvgk9/AVUAoO94QU+NYVeZ34Ypf3fp2piwb7hJcHiwwKHAAcEwBfAgABAYUCQAJKAlYCYQMcAyUDPANEBUQGTgcIBygJMglSCVwKWQp+Co4KrgwiDP4NwA6WD5sTUhNmFPEVHRU3FVEVXBdhGGEZXRtUHP8d+x/9IMshayOjJUcm9Cb+J8kovijfKOkrGiyeLaIvADIiM0M1dDWgNqg2wjd1OCg5rDsoOzk7QjtOPU89YD1xPYo9lj2pP3ZAskFtQjNDSETyRm5HLUfjR+xIe0kaSS1JN0lBShxKJ0zzTP5NCU5lT5RRdbkGi/8AIqqrjaOP/wANVVWP/wAMqqv/AA5VVf8AEVVV/wAYqquh/wAZVVX/ABdVVf8AENVW/wAUgAD/AAhVVf8AEaqr/wAIVVX/ABGqq/8ABCqr/wATgACL/wAVVVWLs///9FVV/wAf1VX//+iqq/8AF6qr///oqqv/ABeqq///4lVV/wAL1VVniwhni///4aqr///1Kqv//+dVVf//6lVV///nVVX//+pVVf//8VVW///dKqv///tVVVsIvYMFj63/AAmAAP8AGFVVmv8ADqqrmv8ADqqr/wAR1VX/AAdVVf8AFKqri/8AFKqri/8AEdVV///31VWa///vqqua///vqqv/AAeAAP//69VVi3OLf4j///Qqq4X///RVVYX///RVVf//8lVV///wKqv//+qqq3cI///0qqv///Sqq///9qqq///1gAD///iqq///9lVV///4qqv///ZVVYX///bVVv//+1VV///3VVX///dVVf//71VV///7qqtwi///2qqrCAv///6qq///8qqr/wADVVX///SqqpP///aqq5P///aqq/8ACqqr///7VVX/AA1VVYv/AA1VVYuX/wAEqqv/AAqqq/8ACVVV/wAKqqv/AAlVVZH/AAtVVv8AAVVV/wANVVWN/wANVVWI/wALVVaD/wAJVVWD/wAJVVX///VVVf8ABKqr///yqquLCP//8qqri3////tVVf//9VVV///2qqv///VVVf//9qqr///5qqv///Sqqon///KqqwgLa/t4x4ur93gFC/zF/YC0b/jG+YAFCyn7eMaL9wH3eAULif//8qqrjv//9Kqqk///9qqrk///9qqr/wAKqqv///tVVf8ADVVVi/8ADVVVi5f/AASqq/8ACqqr/wAJVVX/AAqqq/8ACVVV/wAGVVX/AAtVVo3/AA1VVf8AAVVV/wANVVX///yqq/8AC1VWg/8ACVVVg/8ACVVV///1VVX/AASqq///8qqriwj///Kqq4t////7VVX///VVVf//9qqr///1VVX///aqq4X///Sqqv///qqr///yqqsIC4Vb+JKLkbsFC/ws/VjQi/X3UPgLi777UNWL+1v5WAUL9PwY+9mLBQtbtAX///Cqq///7Kqrev//74AA///tVVX///JVVf//7VVV///yVVX//+yqq///9Kqrd4J3gv//7Cqr///5VVX//+xVVf//+6qr///sVVX///uqq///7Sqr///91VV5i12L///XqquT///dVVWb///dVVWb///jqquhdacIdaf///Cqq6z///dVVbH///dVVbH///6qq7SRt5G3/wAMqqu0/wATVVWx/wATVVWx/wAYqqusqaepp/8AIqqrof8AJ1VVm/8AJ1VVm/8AKqqrk7mLCP8AI1VVi63///gqq/8AIKqr///wVVX/ACCqq///8FVVpP//59VW/wARVVX//99VVQjHuAX//+aqq7P//9+qqv8AHIAA///Yqquc///Yqquc///UVVX/AAiAAFuLVYv//81VVf//9qqr///Qqqv//+1VVf//0Kqr///tVVX//9XVVf//5iqrZmpmav//4VVV///Y1VX//+eqq///0qqr///nqqv//9Kqq///79VV///OVVWDVQj///iqq1WN///OKqv/AAtVVf//0lVV/wALVVX//9JVVf8AE4AA///Yqqv/ABuqq2r/ABuqq2qu///mVVX/ACpVVf//7aqr/wAqVVX//+2qq/8AMCqr///21VXBi7+L/wAx1VWV/wAvqquf/wAvqquf/wAr1VWss7kICyj9WPdviwX/AD1VVYv/ADUqq/8AB4AAuJq4mv8AJiqr/wATKqv/AB9VVf8AF1VV/wAfVVX/ABdVVf8AGaqr/wAZ1Vaf/wAcVVWf/wAcVVX/AA/VVf8AGyqr/wALqqul/wALqqul/wAIKqr/ABeAAP8ABKqroP8ABKqroI7/AA7VVf8AAVVV/wAIqqsI/wABVVX/AAiqq/8AASqr/wAO1VWMoIyg///+gAD/ABeAAIelh6X///fVVf8AGyqr///zqqv/ABxVVf//86qr/wAcVVX//+1VVf8AGdVWcv8AF1VVcv8AF1VV///fKqv/ABMqq///11VVmv//11VVmlj/AAeAAP//wqqriwgL3vjg9xyLBf8ALqqri7b///oqq/8AJ1VV///0VVX/ACdVVf//9FVV/wAg1Vb//+4qq/8AGlVVc/8AGlVVc/8AEyqr///hgACXZpdm/wACVVX//9Qqq///+Kqr///NVVX///iqq///zVVV///xVVX//9Qqq3VmdWb//+Qqq///4YAA///eVVVzCP//3lVVc2X//+4qq///1aqr///0VVX//9Wqq///9FVV///TgAD///oqq///0VVViwgLKP1Y+FWLk8f8E4uy96j37IuTx/vsi6/3kPgDi5PHBQu69+T7gIuDT/c+i2n7ggX//+Kqq3v//+AqqoD//92qq4X//92qq4X//9vVVYhli12L///XqquT///dVVWb///dVVWb///jqquhdad1p///8KqrrP//91VVsf//91VVsf///qqrtJG3CJG3/wAMqqu0/wATVVWx/wATVVWx/wAYqqusqaepp/8AIqqrof8AJ1VVm/8AJ1VVm/8AKqqrk7mL/wATVVWL/wATVVb///3VVf8AE1VV///7qqv/ABNVVf//+6qr/wASVVaF/wARVVX///hVVQj/ABFVVf//+FVV/wAPqqv///aqq5mAmYD/AAuqq///9Cqr/wAJVVX///NVVQjCvQX//8iqq/8AQVVV//+vqqr/ACCqq///lqqri1WL///NVVX///aqq///0Kqr///tVVX//9Cqq///7VVV///V1VX//+Yqq2ZqZmr//+FVVf//2NVV///nqqv//9Kqq///56qr///Sqqv//+/VVf//zlVVg1X///iqq1WN///OKqv/AAtVVf//0lVVCP8AC1VV///SVVX/ABOAAP//2Kqr/wAbqqtq/wAbqqtqrv//5lVV/wAqVVX//+2qq/8AKlVV///tqqv/ADAqq///9tVVwYu5i/8ALdVV/wAE1VX/AC2qq/8ACaqr/wAtqqv/AAmqq/8ALSqq/wAQgAD/ACyqq/8AF1VVCAso/VjNi7r35Pggi1z75M2L7vlYSYtf+8z8IIu398wFCyj9WM2L7vlYBQvR+IhJi0L8mAX///yqq///6qqr///61VX//+wqqoT//+2qq4T//+2qq///9oAA///wKqp////yqqt////yqqv///FVVf//9YAA///uqqv///hVVf//7qqr///4VVX//+uqqv///Cqr///oqquL///BVVWL///dVVb/ACBVVf//+VVV/wBAqqsIR38Fj1//AA9VVf//3NVV/wAaqqv//+Wqq/8AGqqr///lqqv/ACdVVf//8tVVv4u5i7D/AAfVVaf/AA+qq6f/AA+qq6H/ABNVVZuim6L/AAtVVf8AGIAA/wAGqqul/wAGqqulkP8AF6qr/wADVVX/ABVVVQgLKP1YzYu++AKRi/fI/ALqi/vZ+BT4KPfYMIv8F/vMhYu398wFCyj9WPggi5PH+96L5vkcBQso/VjNi+L5AI2L9+z9AOCL7vlYSYs0/QCJi/vs+QAFC///+KqrVY3//84qq/8AC1VV///SVVX/AAtVVf//0lVV/wATgAD//9iqq/8AG6qrav8AG6qraq7//+ZVVf8AKlVV///tqqv/ACpVVf//7aqr/wAwKqv///bVVcGLwYv/ADKqq/8ACSqr/wAvVVX/ABJVVf8AL1VV/wASVVX/ACoqq/8AGaqrsKwIsKz/AB6qq/8AJ1VV/wAYVVX/AC2qq/8AGFVV/wAtqqv/AA/VVv8AMdVV/wAHVVXBk8H///4qq/8AMaqr///0VVX/AC1VVf//9FVV/wAtVVX//+yAAP8AJyqr///kqqus///kqqus///dKqr/ABnVVf//1aqr/wASqqv//9Wqq/8AEqqr///P1VX/AAlVVVWLCFWL///NVVX///aqq///0Kqr///tVVX//9Cqq///7VVV///V1VX//+Yqq2ZqZmr//+FVVf//2NVV///nqqv//9Kqq///56qr///Sqqv//+/VVf//zlVVg1UIC5G3/wAMqqu0/wATVVWx/wATVVWx/wAYqqusqaepp/8AIqqrof8AJ1VVm/8AJ1VVm/8AKqqrk7mLuYv/ACiAAIOue657/wAcgAB1oW8IoW//AA8qq2r/AAhVVWX/AAhVVWX/AAEqq2KFX4Vf///zVVVi///sqqtl///sqqtl///nVVVqbW9tb///3VVVdf//2Kqre///2Kqre///1VVVg12LCF2L///XqquT///dVVWb///dVVWb///jqquhdad1p///8KqrrP//91VVsf//91VVsf///qqrtJG3CAuv95D3JosF/wASqquL/wASVVX///2qq53///tVVZ3///tVVf8AD4AA///4gACY///1qquY///1qqv/AAnVVf//8tVV/wAGqqt7/wAGqqt7/wABqqr//+yqq////Kqr///pVVX///yqq///6Kqr///41VX//+xVVYB7gHv///LVVf//8yqr///wqqv///ZVVQj///Cqq///9lVVeoT//+1VVf//+6qr///tVVX///uqq///7VVW///91VX//+1VVYsIC6/3kPcgiwX/ACKqq4v/ABuAAP//+6qr/wAUVVX///dVVf8AFFVV///3VVX/AA9VVv//9VVW/wAKVVX///NVVf8AClVV///zVVX/AAZVVv//8lVW/wACVVX///FVVf8AAlVV///xVVX/AAAqq///8qqriX+Jf///+9VV///yqqv///mqq///8VVV///5qqv///FVVYH///JVVv//8lVV///zVVUI///yVVX///NVVf//7aqr///1VVZ0///3VVV0///3VVX//+Mqq///+6qr///dVVWLCAso/VjNi7r35PcPi/cs++TWi/sz9+gFn/8AAqqr/wAVKqv/AASqqv8AFlVV/wAGqqv/ABZVVf8ABqqroP8ACiqq/wATqqv/AA2qq/8AE6qr/wANqqv/ABEqqv8AEdVV/wAOqquh/wAOqquh/wAJqqqn/wAEqqutj/8AHqqr///+qqul///5VVX/ABVVVf//+VVV/wAVVVX///XVVv8AEaqr///yVVWZCP//8lVVmf//8Cqr/wAKqqt5/wAHVVV5/wAHVVX//+3VVf8ABVVW///tqqv/AANVVf//7aqr/wADVVX//+7VVY17/wAAqqt7/wAAqqv///NVVf8AAFVV///2qquLCAtGYQWh///ZVVX/AB2qq///5IAA/wAlVVX//++qq/8AJVVV///vqqu1///31VX/AC6qq4v/AByqq4v/ABwqqv8ABFVV/wAbqqv/AAiqq/8AG6qr/wAIqqv/ABkqqv8ADNVV/wAWqquc/wAWqquc/wATKqr/ABTVVf8AD6qr/wAYqqv/AA+qq/8AGKqr/wAKKqr/ABxVVf8ABKqrqwj/AASqq/8AIVVV///+qqr/ABuqq///+Kqrof//+Kqrof//9Kqq/wASKqv///Cqq/8ADlVV///wqqv/AA5VVXn/AAuAAP//61VV/wAIqqv//+tVVf8ACKqr///q1Vb/AAfVVf//6lVVkv//6lVVkv//6qqrknaSdpL//+3VVZT///Cqq5YI///wqquW///0KqqZ///3qquc///3qquc///91VX/ABXVVY//ABqqq/8AA1VV/wAWqqv/AAcqq/8AE6qqlv8AEKqrlv8AEKqr/wANgAD/AA3VVZuWm5ad/wAIVVWf/wAFqquf/wAFqqv/ABSqq/8AAtVV/wAVVVWLCP8AHqqri/8AGaqq///6Kqv/ABSqq///9FVV/wAUqqv///RVVZz//+6AAP8ADVVV///oqqsIyrQF///sqqur///m1VX/ABbVVWz/AA2qq2z/AA2qq///3Sqr/wAG1VX//9lVVYtti///4tVV///71VX//+Oqq///96qr///jqqv///eqq///5iqq///zqqr//+iqq///76qr///oqqv//++qq///7FVV///rqqp7///nqqt7///nqqv///Wqq///5Cqq///7VVX//+Cqqwj///tVVf//3qqr/wABVVZv/wAHVVX//+lVVf8AB1VV///pVVX/AAsqq///7SqrmnyafP8AEdVV///z1VX/ABSqq///9qqr/wAUqqv///aqq/8AFSqq///3qqr/ABWqq///+Kqr/wAVqqv///iqq/8AFVVV///4qqqg///4qqug///4qqv/ABJVVf//9yqq/wAPqqv///Wqqwj/AA+qq///9aqr/wAL1VX///LVVZN7k3v/AAJVVf//66qr///8qqv//+dVVf///Kqr///qqquE///s1VX///VVVXr///VVVXr///Kqq///8YAAe397f///7dVV///2qqv//+uqq///+VVV///rqqv///lVVf//6tVV///8qqt1iwj//9yqq4v//+Gqqv8AB1VV///mqqv/AA6qq///5qqr/wAOqqv//+yqqv8AFlVV///yqqupCAsw/RzNi+b5HPeGi5PH/LqLg08FC8j4SUmLUPw4Bf///Kqr///mqquFcP//91VV///jVVX///dVVf//41VVfv//5VVW///uqqv//+dVVf//7qqr///nVVX//+mqqv//66qr///kqqt7///kqqt7///dqqqD///WqquL///WqquLa5P//+lVVZv//+lVVZv//++AAP8AFFVV///1qqv/ABiqqwj///Wqq/8AGKqr///6qqr/ABqqqv///6qr/wAcqqv///+qq/8AHKqr/wABgACm/wADVVX/ABlVVQjG+DhJi078SQX///qqq2X///8qqv//26qr/wADqqv//91VVf8AA6qr///dVVX/AAoqqv//4VVW/wAQqqv//+VVVf8AEKqr///lVVX/ABeqqv//6qqr/wAeqqt7/wAeqqt7/wAnVVWDu4u7i/8AKaqrk/8AI1VVm/8AI1VVm/8AHaqr/wAVVVWj/wAaqqsIo/8AGqqr/wAS1VX/AB6qqv8ADaqr/wAiqqv/AA2qq/8AIqqr/wAJgAD/ACRVVf8ABVVVsQgL9v1Y3Iv3n/kKjYvm/Qrci/fF+VhHi/uc/QeJizD5BzeL+5/9B4mLM/kHBQth+8XNi7X3xffR+CdBi/ue++T7O/fkPIsFC4RX+JKLk8f8QIv4iPjmk8H8gYuDT/gsiwULN/ckO4v3BvskBQub9wUFk/8AOqqr///1Kqv/ACqAAP//4lVV/wAaVVX//+JVVf8AGlVV///VKqv/AA0qq1OLbYtr///6gABpgGmA///iVVX//+/VVf//5qqr///qqqsIqGIF/wAtVVX/ACKqq/8AMaqr/wARVVXBi/8AJVVVi/8AHaqr///3VVWh///uqquh///uqqv/AAhVVf//41VV///6qqtjCIdvRYsF///pVVWL///lqqv///6AAG2IbYj//+Mqq///+VVV///kVVX///Wqq///5FVV///1qqv//+eAAP//8IAA///qqqv//+tVVf//6qqr///rVVV+b///+1VV///cqqv///yqq///51VV/wAB1VV2kv//7qqrkv//7qqr/wAKgAD///HVVZmACJmA/wAQVVWD/wASqquG/wASqquG/wATVVX///2AAJ+L/wAnVVWL/wAhgACS/wAbqquZ/wAbqquZ/wAYgACh/wAVVVWpCI0Gif//8qqr///+qqt+////VVX///NVVf///1VV///zVVWLf/8AAKqr///0qqsIwwaL/wANVVX/AABVVf8ADVVW/wAAqqv/AA1VVf8AAKqr/wANVVWM/wAOVVb/AAFVVf8AD1VV/wABVVX/AA9VVf8AAdVW/wAQqqv/AAJVVZ3/AAJVVZ3/AALVVv8AFFVV/wADVVX/ABaqqwgLzYuHbAX///1VVf//7Kqr///61Vb//+zVVf//+FVVeP//+FVVeIB6///xqqt8///xqqt8///t1VX///PVVXX///aqq3X///aqq3D///tVVWuL///zVVWL///zqqv/AAHVVX//AAOqq3//AAOqq///9YAA/wAFVVWCkgiCkv//+SqrlP//+1VVlv//+1VVlv///qqr/wAMgACNmf8AAqqrn/8ACCqq/wAQqqv/AA2qq/8ADVVV/wANqqv/AA1VVf8AEKqq/wAKqqv/ABOqq5P/ABOqq5Oh/wAFqqv/ABhVVf8AA1VV/wAYVVX/AANVVf8AGNVW/wABqqv/ABlVVYsIC4+l/wAIgAD/ABiAAJiimKL/ABBVVZ//ABOqq5z/ABOqq5z/ABZVVf8ADYAApJWklf8AGiqrkP8AG1VVi6eL/wAYqquG/wAVVVWB/wAVVVWB/wARVVb///KAAP8ADVVVegj/AA1VVXr/AAlVVnf/AAVVVXT/AAVVVXT/AACqq///54AAh3GHcf//+Cqr///ngAD///RVVXT///RVVXR8d///7aqrev//7aqrev//6tVV///ygABzgXOBcYZviwj//+Sqq4v//+dVVZB1lXWV///tgAD/AA2AAHycfJz///Uqq5////lVVaL///lVVaL///6qq/8AGIAAj6UIC2KxBXn//+yqq///66qr///wgAD//+lVVf//9FVV///pVVX///RVVXP///oqq///5qqri2+L///nVVWQ///qqquV///qqquV///uqqr/AA2AAP//8qqrnP//8qqrnP//9qqqn///+qqrov//+qqrov///1VV/wAYgACPpQiPpf8AB9VV/wAYgAD/AAuqq6L/AAuqq6Kan/8AElVVnP8AElVVnP8AFSqr/wANgACjlaOVpZCni6OL/wAVVVX///qAAP8AEqqrgP8AEqqrgJz///DVVf8AD1VV///sqqsIwK8F///sqqv/ABlVVf//6NVV/wATqqtwmXCZ///hgACSaYv//9yqq4v//96AAIX//+BVVX///+BVVX9v///vKqv//+eqq///6lVV///nqqv//+pVVf//66qq///mVVb//++qq///4lVV///vqqv//+JVVf//9YAA///fgAD///tVVf//3KqrCP//+qqr///cqqv/AAFVVf//34AAk///4lVVk///4lVV/wANKqv//+ZVVv8AElVV///qVVX/ABJVVf//6lVV/wAXVVb//+8qq/8AHFVVf/8AHFVVf/8AH9VWhf8AI1VVi/8AIVVVi/8AH9VW/wAGgAD/AB5VVZj/AB5VVZj/AByAAP8AFCqr/wAaqqv/ABtVVQgLgDrHi/X5iE+LVvwLiYsF///4qqub///2VVX/AA3VVX//AAuqq3//AAuqq///8iqr/wAJqqr///BVVf8AB6qr///wVVX/AAeqq///74AA/wAFqqr//+6qq/8AA6qr///uqqv/AAOqq///7qqq/wAB1VX//+6qq4v//9yqq4v//96AAIX//+BVVX///+BVVX9v///vKqv//+eqq///6lVVCP//56qr///qVVX//+uqqv//5lVW///vqqv//+JVVf//76qr///iVVX///WAAP//34AA///7VVX//9yqq///+qqr///cqqv/AAFVVf//34AAk///4lVVk///4lVV/wANKqv//+ZVVv8AElVV///qVVX/ABJVVf//6lVV/wAXVVb//+8qq/8AHFVVf/8AHFVVf/8AH9VWhf8AI1VViwj/ABFVVYv/ABHVVv8AAdVV/wASVVX/AAOqq/8AElVV/wADqqud/wAFqqr/ABGqq/8AB6qr/wARqqv/AAeqq/8AEKqq/wAJqqr/AA+qq/8AC6qr/wAPqqv/AAuqq/8ADYAA/wAN1VX/AAtVVZsIC4dx///3gAD//+eAAH50fnT//++qq3f//+xVVXr//+xVVXr//+mqq///8oAAcoFygf//5dVVhv//5Kqri2+L///nVVWQ///qqquV///qqquV///uqqr/AA2AAP//8qqrnAj///Kqq5z///aqqp////qqq6L///qqq6L///9VVf8AGIAAj6WPpf8AB9VV/wAYgAD/AAuqq6L/AAuqq6Kan/8AElVVnP8AElVVnP8AFSqr/wANgACjlaOVpZCniwj/ABtVVYv/ABiqq4ahgaGB/wASgAD///KAAJp6mnr/AArVVXf/AAaqq3T/AAaqq3T/AAFVVf//54AAh3EIC2SwBf//7VVV///mqqv//+cqq3ds///xVVVs///xVVX//+Eqq///+Kqr///hVVWL///cqquL///kKqr/AAaqq///66qr/wANVVX//+uqq/8ADVVV///wgACb///1VVX/ABKqq///9VVV/wASqqv///mAAP8AEyqq///9qqv/ABOqq////aqr/wATqqv////VVf8AECqqjf8ADKqrCPgYi5G1BY//ABqqq////yqr/wAaVVX///pVVaX///pVVaX///VVVv8AFyqr///wVVX/ABRVVf//8FVV/wAUVVX//+uAAP8AEFVW///mqqv/AAxVVf//5qqr/wAMVVX//+Gqqv8ABiqr///cqquLaYv//+Aqq///+dVV///iVVX///Oqq///4lVV///zqqv//+VVVnr//+hVVf//6lVVCP//6FVV///qVVX//+xVVv//5oAA///wVVX//+Kqq///8FVV///iqqv///XVVmv///tVVf//3VVV///6qqtn/wAA1VX//98qq5L//+JVVZL//+JVVf8ADFVV///mVVb/ABGqq///6lVV/wARqqv//+pVVf8AFlVV///vKqumf6Z//wAfKquF/wAjVVWLCP8AKVVVi/8AJtVW/wAHqqv/ACRVVf8AD1VV/wAkVVX/AA9VVf8AIIAA/wAZVVb/AByqq/8AI1VVCAv73Ab/AACqq5H/AAQqqv8ACyqr/wAHqqv/ABBVVf8AB6qr/wAQVVX/AAuAAP8AENVW/wAPVVX/ABFVVf8AD1VV/wARVVX/ABOAAP8AD1VW/wAXqqv/AA1VVf8AF6qr/wANVVX/ABwqqv8ABqqr/wAgqquLoYv/ABQqq4f/ABJVVYP/ABJVVYP/AA+AAP//9Sqr/wAMqqv///JVVQj/AAyqq///8lVVlP//8Cqr/wAFVVV5/wAFVVV5/wABVVb//+yqq////VVV///rVVUIC1L8LMeLxPgs9wCLksH7AIue9xUF/wAKqqvd/wAgqqq0/wA2qquLo
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment