Skip to content

Instantly share code, notes, and snippets.

@tianshuo
Created February 10, 2014 03:56
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 tianshuo/8910103 to your computer and use it in GitHub Desktop.
Save tianshuo/8910103 to your computer and use it in GitHub Desktop.
d3 = function() {
var d3 = {
version: "3.3.8"
};
if (!Date.now) Date.now = function() {
return +new Date();
};
var d3_arraySlice = [].slice, d3_array = function(list) {
return d3_arraySlice.call(list);
};
var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window;
try {
d3_array(d3_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;
};
}
try {
d3_document.createElement("div").style.setProperty("opacity", 0, "");
} catch (error) {
var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.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 = function(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 && !((a = array[i]) != null && a <= a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
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 && !((a = array[i]) != null && a <= a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
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 && !((a = c = array[i]) != null && a <= a)) a = c = undefined;
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
while (++i < n && !((a = c = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
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 ];
};
d3.sum = function(array, f) {
var s = 0, n = array.length, a, i = -1;
if (arguments.length === 1) {
while (++i < n) if (!isNaN(a = +array[i])) s += a;
} else {
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
}
return s;
};
function d3_number(x) {
return x != null && !isNaN(x);
}
d3.mean = function(array, f) {
var n = array.length, a, m = 0, i = -1, j = 0;
if (arguments.length === 1) {
while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
} else {
while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
}
return j ? m : undefined;
};
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) {
if (arguments.length > 1) array = array.map(f);
array = array.filter(d3_number);
return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
};
d3.bisector = function(f) {
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 (f.call(a, a[mid], mid) < x) 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 (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1;
}
return lo;
}
};
};
var d3_bisector = d3.bisector(function(d) {
return d;
});
d3.bisectLeft = d3_bisector.left;
d3.bisect = d3.bisectRight = d3_bisector.right;
d3.shuffle = function(array) {
var m = array.length, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m], array[m] = array[i], array[i] = 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.zip = function() {
if (!(n = arguments.length)) return [];
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
zip[j] = arguments[j][i];
}
}
return zips;
};
function d3_zipLength(d) {
return d.length;
}
d3.transpose = function(matrix) {
return d3.zip.apply(d3, matrix);
};
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) {
try {
for (var key in properties) {
Object.defineProperty(ctor.prototype, key, {
value: properties[key],
enumerable: false
});
}
} catch (e) {
ctor.prototype = properties;
}
}
d3.map = function(object) {
var map = new d3_Map();
if (object instanceof d3_Map) object.forEach(function(key, value) {
map.set(key, value);
}); else for (var key in object) map.set(key, object[key]);
return map;
};
function d3_Map() {}
d3_class(d3_Map, {
has: function(key) {
return d3_map_prefix + key in this;
},
get: function(key) {
return this[d3_map_prefix + key];
},
set: function(key, value) {
return this[d3_map_prefix + key] = value;
},
remove: function(key) {
key = d3_map_prefix + key;
return key in this && delete this[key];
},
keys: function() {
var keys = [];
this.forEach(function(key) {
keys.push(key);
});
return keys;
},
values: function() {
var values = [];
this.forEach(function(key, value) {
values.push(value);
});
return values;
},
entries: function() {
var entries = [];
this.forEach(function(key, value) {
entries.push({
key: key,
value: value
});
});
return entries;
},
forEach: function(f) {
for (var key in this) {
if (key.charCodeAt(0) === d3_map_prefixCode) {
f.call(this, key.substring(1), this[key]);
}
}
}
});
var d3_map_prefix = "\x00", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
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() {}
d3_class(d3_Set, {
has: function(value) {
return d3_map_prefix + value in this;
},
add: function(value) {
this[d3_map_prefix + value] = true;
return value;
},
remove: function(value) {
value = d3_map_prefix + value;
return value in this && delete this[value];
},
values: function() {
var values = [];
this.forEach(function(value) {
values.push(value);
});
return values;
},
forEach: function(f) {
for (var value in this) {
if (value.charCodeAt(0) === d3_map_prefixCode) {
f.call(this, value.substring(1));
}
}
}
});
d3.behavior = {};
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.substring(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.substring(i + 1);
type = type.substring(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_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) {
return d3_selectMatcher.call(n, s);
};
if (typeof Sizzle === "function") {
d3_select = function(s, n) {
return Sizzle(s, n)[0] || null;
};
d3_selectAll = function(s, n) {
return Sizzle.uniqueSort(Sizzle(s, n));
};
d3_selectMatches = Sizzle.matchesSelector;
}
d3.selection = function() {
return d3_selectionRoot;
};
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_nsPrefix = {
svg: "http://www.w3.org/2000/svg",
xhtml: "http://www.w3.org/1999/xhtml",
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.substring(0, i);
name = name.substring(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 = name.trim().split(/^|\s+/g)).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_classed(name, value) {
name = name.trim().split(/\s+/).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) return d3_window.getComputedStyle(this.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) {
return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() {
return this.ownerDocument.createElementNS(name.space, name.local);
} : function() {
return this.ownerDocument.createElementNS(this.namespaceURI, name);
};
}
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(function() {
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(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue;
for (i = -1; ++i < n; ) {
keyValue = key.call(node = group[i], node.__data__, i);
if (nodeByKeyValue.has(keyValue)) {
exitNodes[i] = node;
} else {
nodeByKeyValue.set(keyValue, node);
}
keyValues.push(keyValue);
}
for (i = -1; ++i < m; ) {
keyValue = key.call(groupData, nodeData = groupData[i], i);
if (node = nodeByKeyValue.get(keyValue)) {
updateNodes[i] = node;
node.__data__ = nodeData;
} else if (!dataByKeyValue.has(keyValue)) {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
dataByKeyValue.set(keyValue, nodeData);
nodeByKeyValue.remove(keyValue);
}
for (i = -1; ++i < n; ) {
if (nodeByKeyValue.has(keyValues[i])) {
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)) {
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;
this.each(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_selectionPrototype.transition = function() {
var id = d3_transitionInheritId || ++d3_transitionId, 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, id, transition);
subgroup.push(node);
}
}
return d3_transition(subgroups, id);
};
d3_selectionPrototype.interrupt = function() {
return this.each(d3_selection_interrupt);
};
function d3_selection_interrupt() {
var lock = this.__transition__;
if (lock) ++lock.active;
}
d3.select = function(node) {
var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ];
group.parentNode = d3_documentElement;
return d3_selection([ group ]);
};
d3.selectAll = function(nodes) {
var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes);
group.parentNode = d3_documentElement;
return d3_selection([ group ]);
};
var d3_selectionRoot = d3.select(d3_documentElement);
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.substring(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"
});
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_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0;
function d3_event_dragSuppress() {
var name = ".dragsuppress-" + ++d3_event_dragId, touchmove = "touchmove" + name, selectstart = "selectstart" + name, dragstart = "dragstart" + name, click = "click" + name, w = d3.select(d3_window).on(touchmove, d3_eventPreventDefault).on(selectstart, d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault), style = d3_documentElement.style, select = style[d3_event_dragSelect];
style[d3_event_dragSelect] = "none";
return function(suppressClick) {
w.on(name, null);
style[d3_event_dragSelect] = select;
if (suppressClick) {
function off() {
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 = /WebKit/.test(d3_window.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 && (d3_window.scrollX || d3_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.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;
}) : [];
};
d3.behavior.drag = function() {
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, "mousemove", "mouseup"), touchstart = dragstart(touchid, touchposition, "touchmove", "touchend");
function drag() {
this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart);
}
function touchid() {
return d3.event.changedTouches[0].identifier;
}
function touchposition(parent, id) {
return d3.touches(parent).filter(function(p) {
return p.identifier === id;
})[0];
}
function dragstart(id, position, move, end) {
return function() {
var target = this, parent = target.parentNode, event_ = event.of(target, arguments), eventTarget = d3.event.target, eventId = id(), drag = eventId == null ? "drag" : "drag-" + eventId, origin_ = position(parent, eventId), dragged = 0, offset, w = d3.select(d3_window).on(move + "." + drag, moved).on(end + "." + drag, ended), dragRestore = d3_event_dragSuppress();
if (origin) {
offset = origin.apply(target, arguments);
offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
} else {
offset = [ 0, 0 ];
}
event_({
type: "dragstart"
});
function moved() {
var p = position(parent, eventId), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
dragged |= dx | dy;
origin_ = p;
event_({
type: "drag",
x: p[0] + offset[0],
y: p[1] + offset[1],
dx: dx,
dy: dy
});
}
function ended() {
w.on(move + "." + drag, null).on(end + "." + drag, null);
dragRestore(dragged && d3.event.target === eventTarget);
event_({
type: "dragend"
});
}
};
}
drag.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return drag;
};
return d3.rebind(drag, event, "on");
};
var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π;
function d3_sgn(x) {
return x > 0 ? 1 : x < 0 ? -1 : 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];
var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, 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), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ;
function interpolate(t) {
var s = t * S;
if (dr) {
var 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) ];
}
return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ];
}
interpolate.duration = S * 1e3;
return interpolate;
};
d3.behavior.zoom = function() {
var view = {
x: 0,
y: 0,
k: 1
}, translate0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, 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;
function zoom(g) {
g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on(mousemove, mousewheelreset).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
}
zoom.event = function(g) {
g.each(function() {
var event_ = 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(event_);
}).tween("zoom:zoom", function() {
var dx = size[0], dy = size[1], cx = dx / 2, cy = 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(event_);
};
}).each("end.zoom", function() {
zoomended(event_);
});
} else {
this.__chart__ = view;
zoomstarted(event_);
zoomed(event_);
zoomended(event_);
}
});
};
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: +_
};
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.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 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(event) {
event({
type: "zoomstart"
});
}
function zoomed(event) {
rescale();
event({
type: "zoom",
scale: view.k,
translate: [ view.x, view.y ]
});
}
function zoomended(event) {
event({
type: "zoomend"
});
}
function mousedowned() {
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, dragged = 0, w = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress();
d3_selection_interrupt.call(target);
zoomstarted(event_);
function moved() {
dragged = 1;
translateTo(d3.mouse(target), l);
zoomed(event_);
}
function ended() {
w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null);
dragRestore(dragged && d3.event.target === eventTarget);
zoomended(event_);
}
}
function touchstarted() {
var target = this, event_ = event.of(target, arguments), locations0 = {}, distance0 = 0, scale0, eventId = d3.event.changedTouches[0].identifier, touchmove = "touchmove.zoom-" + eventId, touchend = "touchend.zoom-" + eventId, w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended), t = d3.select(target).on(mousedown, null).on(touchstart, started), dragRestore = d3_event_dragSuppress();
d3_selection_interrupt.call(target);
started();
zoomstarted(event_);
function relocate() {
var touches = d3.touches(target);
scale0 = view.k;
touches.forEach(function(t) {
if (t.identifier in locations0) locations0[t.identifier] = location(t);
});
return touches;
}
function started() {
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], l = locations0[p.identifier];
scaleTo(view.k * 2);
translateTo(p, l);
d3_eventPreventDefault();
zoomed(event_);
}
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(target), p0, l0, p1, l1;
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(event_);
}
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();
}
}
w.on(touchmove, null).on(touchend, null);
t.on(mousedown, mousedowned).on(touchstart, touchstarted);
dragRestore();
zoomended(event_);
}
}
function mousewheeled() {
var event_ = event.of(this, arguments);
if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this),
zoomstarted(event_);
mousewheelTimer = setTimeout(function() {
mousewheelTimer = null;
zoomended(event_);
}, 50);
d3_eventPreventDefault();
var point = center || d3.mouse(this);
if (!translate0) translate0 = location(point);
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
translateTo(point, translate0);
zoomed(event_);
}
function mousewheelreset() {
translate0 = null;
}
function dblclicked() {
var event_ = event.of(this, arguments), p = d3.mouse(this), l = location(p), k = Math.log(view.k) / Math.LN2;
zoomstarted(event_);
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
translateTo(p, l);
zoomed(event_);
zoomended(event_);
}
return d3.rebind(zoom, event, "on");
};
var d3_behavior_zoomInfinity = [ 0, Infinity ];
var d3_behavior_zoomDelta, 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 d3_Color() {}
d3_Color.prototype.toString = function() {
return this.rgb() + "";
};
d3.hsl = function(h, s, l) {
return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
};
function d3_hsl(h, s, l) {
return new d3_Hsl(h, s, l);
}
function d3_Hsl(h, s, l) {
this.h = h;
this.s = s;
this.l = l;
}
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
d3_hslPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, this.l / k);
};
d3_hslPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return 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 d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
d3.hcl = function(h, c, l) {
return arguments.length === 1 ? h instanceof d3_Hcl ? 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) : d3_hcl(+h, +c, +l);
};
function d3_hcl(h, c, l) {
return new d3_Hcl(h, c, l);
}
function d3_Hcl(h, c, l) {
this.h = h;
this.c = c;
this.l = l;
}
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
d3_hclPrototype.brighter = function(k) {
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.darker = function(k) {
return 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 d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
}
d3.lab = function(l, a, b) {
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
};
function d3_lab(l, a, b) {
return new d3_Lab(l, a, b);
}
function d3_Lab(l, a, b) {
this.l = l;
this.a = a;
this.b = 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 d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.darker = function(k) {
return 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 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 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : 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 = function(r, g, b) {
return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
};
function d3_rgbNumber(value) {
return d3_rgb(value >> 16, value >> 8 & 255, value & 255);
}
function d3_rgbString(value) {
return d3_rgbNumber(value) + "";
}
function d3_rgb(r, g, b) {
return new d3_Rgb(r, g, b);
}
function d3_Rgb(r, g, b) {
this.r = r;
this.g = g;
this.b = b;
}
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 d3_rgb(i, i, i);
if (r && r < i) r = i;
if (g && g < i) g = i;
if (b && b < i) b = i;
return 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 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, name;
m1 = /([a-z]+)\((.*)\)/i.exec(format);
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 (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
if (format != null && format.charAt(0) === "#") {
if (format.length === 4) {
r = format.charAt(1);
r += r;
g = format.charAt(2);
g += g;
b = format.charAt(3);
b += b;
} else if (format.length === 7) {
r = format.substring(1, 3);
g = format.substring(3, 5);
b = format.substring(5, 7);
}
r = parseInt(r, 16);
g = parseInt(g, 16);
b = parseInt(b, 16);
}
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 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,
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;
function d3_identity(d) {
return d;
}
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 (d3_window.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 && request.responseText || 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;
}
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, callback);
xhr.row = function(_) {
return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;
};
return xhr.row(row);
}
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.substring(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.substring(j, I - k);
}
return text.substring(j);
}
while ((t = token()) !== EOF) {
var a = [];
while (t !== EOL && t !== EOF) {
a.push(t);
t = token();
}
if (f && !(a = f(a, n++))) 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_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) {
setTimeout(callback, 17);
};
d3.timer = function(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,
f: false,
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);
}
};
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();
d3_timer_active = d3_timer_queueHead;
while (d3_timer_active) {
if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
d3_timer_active = d3_timer_active.n;
}
return now;
}
function d3_timer_sweep() {
var t0, t1 = d3_timer_queueHead, time = Infinity;
while (t1) {
if (t1.f) {
t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
} else {
if (t1.t < time) time = t1.t;
t1 = (t0 = t1).n;
}
}
d3_timer_queueTail = t0;
return time;
}
var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ], d3_format_currencySymbol = "$";
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) {
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 <= 0 ? i + 1 : 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
};
}
d3.round = function(x, n) {
return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
};
d3.format = 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, suffix = "", integer = false;
if (precision) precision = +precision.substring(1);
if (zfill || fill === "0" && align === "=") {
zfill = fill = "0";
align = "=";
if (comma) width -= Math.floor((width - 1) / 4);
}
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 === "#") symbol = "0" + type.toLowerCase();
case "c":
case "d":
integer = true;
precision = 0;
break;
case "s":
scale = -1;
type = "r";
break;
}
if (symbol === "#") symbol = ""; else if (symbol === "$") symbol = d3_format_currencySymbol;
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) {
if (integer && value % 1) return "";
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
if (scale < 0) {
var prefix = d3.formatPrefix(value, precision);
value = prefix.scale(value);
suffix = prefix.symbol;
} else {
value *= scale;
}
value = type(value, precision);
var i = value.lastIndexOf("."), before = i < 0 ? value : value.substring(0, i), after = i < 0 ? "" : d3_format_decimalPoint + value.substring(i + 1);
if (!zfill && comma) before = d3_format_group(before);
var length = symbol.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
if (zcomma) before = d3_format_group(padding + before);
negative += symbol;
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)) + suffix;
};
};
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_precision(x, p) {
return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
}
function d3_format_typeDefault(x) {
return x + "";
}
var d3_format_group = d3_identity;
if (d3_format_grouping) {
var d3_format_groupingLength = d3_format_grouping.length;
d3_format_group = function(value) {
var i = value.length, t = [], j = 0, g = d3_format_grouping[0];
while (i > 0 && g > 0) {
t.push(value.substring(i -= g, i + g));
g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength];
}
return t.reverse().join(d3_format_thousandsSeparator);
};
}
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, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ);
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_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 = [];
listener.polygonStart();
},
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) {
d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
} else if (clipStartInside) {
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
listener.polygonEnd();
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), 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;
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]);
}
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, antimeridian = abs(dλ) > π, k = sinφ0 * sinφ;
d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k * Math.cos(dλ)));
polarAngle += antimeridian ? dλ + (dλ >= 0 ? τ : -τ) : 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 < 0) ^ winding & 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_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 && isLeft(a, b, p) > 0) ++wn;
} else {
if (b[1] <= y && isLeft(a, b, p) < 0) --wn;
}
a = b;
}
}
return wn !== 0;
}
function isLeft(a, b, c) {
return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]);
}
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_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_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, 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) {
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) < ε ? (λ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.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();
}
};
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) {
var transform = new d3_geo_transform(stream = resample(stream));
transform.point = function(x, y) {
stream.point(x * d3_radians, y * d3_radians);
};
return transform;
};
}
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) {
var transform = new d3_geo_transform(stream);
transform.point = function(λ, φ) {
stream.point(λ * d3_radians, φ * d3_radians);
};
return transform;
}
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(λ, φ) {
var ρ = abs(abs(φ) - halfπ) < ε ? 0 : 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(λ, φ) {
var B = Math.cos(φ) * Math.sin(λ);
return [ Math.log((1 + B) / (1 - B)) / 2, Math.atan2(Math.tan(φ), Math.cos(λ)) ];
}
d3_geo_transverseMercator.invert = function(x, y) {
return [ Math.atan2(d3_sinh(x), Math.cos(y)), d3_asin(Math.sin(y) / d3_cosh(x)) ];
};
(d3.geo.transverseMercator = function() {
return d3_geo_mercatorProjection(d3_geo_transverseMercator);
}).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), n = data.length, vertices, plen = n - 1, points = [], stack = [], d, i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
if (fx === d3_geom_pointX && y === d3_geom_pointY) vertices = data; else for (i = 0,
vertices = []; i < n; ++i) {
vertices.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
}
for (i = 1; i < n; ++i) {
if (vertices[i][1] < vertices[h][1] || vertices[i][1] == vertices[h][1] && vertices[i][0] < vertices[h][0]) h = i;
}
for (i = 0; i < n; ++i) {
if (i === h) continue;
y1 = vertices[i][1] - vertices[h][1];
x1 = vertices[i][0] - vertices[h][0];
points.push({
angle: Math.atan2(y1, x1),
index: i
});
}
points.sort(function(a, b) {
return a.angle - b.angle;
});
a = points[0].angle;
v = points[0].index;
u = 0;
for (i = 1; i < plen; ++i) {
j = points[i].index;
if (a == points[i].angle) {
x1 = vertices[v][0] - vertices[h][0];
y1 = vertices[v][1] - vertices[h][1];
x2 = vertices[j][0] - vertices[h][0];
y2 = vertices[j][1] - vertices[h][1];
if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
points[i].index = -1;
continue;
} else {
points[u].index = -1;
}
}
a = points[i].angle;
u = i;
v = j;
}
stack.push(h);
for (i = 0, j = 0; i < 2; ++j) {
if (points[j].index > -1) {
stack.push(points[j].index);
i++;
}
}
sp = stack.length;
for (;j < plen; ++j) {
if (points[j].index < 0) continue;
while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
--sp;
}
stack[sp++] = points[j].index;
}
var poly = [];
for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]);
return poly;
}
hull.x = function(_) {
return arguments.length ? (x = _, hull) : x;
};
hull.y = function(_) {
return arguments.length ? (y = _, hull) : y;
};
return hull;
};
function d3_geom_hullCCW(i1, i2, i3, v) {
var t, a, b, c, d, e, f;
t = v[i1];
a = t[0];
b = t[1];
t = v[i2];
c = t[0];
d = t[1];
t = v[i3];
e = t[0];
f = t[1];
return (f - b) * (c - a) - (d - b) * (e - a) > 0;
}
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 sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = x >= sx, bottom = y >= sy, i = (bottom << 1) + right;
n.leaf = false;
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
if (right) x1 = sx; else x2 = sx;
if (bottom) y1 = sy; else y2 = sy;
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_);
};
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);
}
}
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) {
b -= a = +a;
return function(t) {
return a + b * t;
};
}
d3.interpolateString = d3_interpolateString;
function d3_interpolateString(a, b) {
var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o;
a = a + "", b = b + "";
d3_interpolate_number.lastIndex = 0;
for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
if (m.index) s.push(b.substring(s0, s1 = m.index));
q.push({
i: s.length,
x: m[0]
});
s.push(null);
s0 = d3_interpolate_number.lastIndex;
}
if (s0 < b.length) s.push(b.substring(s0));
for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
o = q[i];
if (o.x == m[0]) {
if (o.i) {
if (s[o.i + 1] == null) {
s[o.i - 1] += o.x;
s.splice(o.i, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
} else {
s[o.i - 1] += o.x + s[o.i + 1];
s.splice(o.i, 2);
for (j = i + 1; j < n; ++j) q[j].i -= 2;
}
} else {
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
}
}
q.splice(i, 1);
n--;
i--;
} else {
o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
}
}
while (i < n) {
o = q.pop();
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
}
n--;
}
if (s.length === 1) {
return s[0] == null ? (o = q[0].x, function(t) {
return o(t) + "";
}) : function() {
return b;
};
}
return function(t) {
for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
}
var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/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) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_Color ? d3_interpolateRgb : t === "object" ? Array.isArray(b) ? d3_interpolateArray : 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.substring(0, i) : name, m = i >= 0 ? name.substring(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_interpolateTransform(a, b) {
var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
if (ta[0] != tb[0] || ta[1] != tb[1]) {
s.push("translate(", null, ",", null, ")");
q.push({
i: 1,
x: d3_interpolateNumber(ta[0], tb[0])
}, {
i: 3,
x: d3_interpolateNumber(ta[1], tb[1])
});
} else if (tb[0] || tb[1]) {
s.push("translate(" + tb + ")");
} else {
s.push("");
}
if (ra != rb) {
if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
q.push({
i: s.push(s.pop() + "rotate(", null, ")") - 2,
x: d3_interpolateNumber(ra, rb)
});
} else if (rb) {
s.push(s.pop() + "rotate(" + rb + ")");
}
if (wa != wb) {
q.push({
i: s.push(s.pop() + "skewX(", null, ")") - 2,
x: d3_interpolateNumber(wa, wb)
});
} else if (wb) {
s.push(s.pop() + "skewX(" + wb + ")");
}
if (ka[0] != kb[0] || ka[1] != kb[1]) {
n = s.push(s.pop() + "scale(", null, ",", null, ")");
q.push({
i: n - 4,
x: d3_interpolateNumber(ka[0], kb[0])
}, {
i: n - 2,
x: d3_interpolateNumber(ka[1], kb[1])
});
} else if (kb[0] != 1 || kb[1] != 1) {
s.push(s.pop() + "scale(" + kb + ")");
}
n = q.length;
return function(t) {
var i = -1, 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 - a) : 0;
return function(x) {
return (x - a) * b;
};
}
function d3_uninterpolateClamp(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
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: (x - x0) / k
};
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"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, 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, dn = 1 / Math.sqrt(dx * dx + dy * dy);
if ((x2 - x1) * dn < theta) {
var k = quad.charge * dn * dn;
node.px -= dx * k;
node.py -= dy * k;
return true;
}
if (quad.point && isFinite(dn)) {
var k = quad.pointCharge * dn * dn;
node.px -= dx * k;
node.py -= dy * k;
}
}
return !quad.charge;
};
}
force.tick = function() {
if ((alpha *= .99) < .005) {
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));
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.gravity = function(x) {
if (!arguments.length) return gravity;
gravity = +x;
return force;
};
force.theta = function(x) {
if (!arguments.length) return theta;
theta = +x;
return force;
};
force.alpha = function(x) {
if (!arguments.length) return alpha;
x = +x;
if (alpha) {
if (x > 0) alpha = x; else alpha = 0;
} else if (x > 0) {
event.start({
type: "start",
alpha: alpha = x
});
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, m = candidates.length, x;
while (++j < m) 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.hierarchy = function() {
var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
function recurse(node, depth, nodes) {
var childs = children.call(hierarchy, node, depth);
node.depth = depth;
nodes.push(node);
if (childs && (n = childs.length)) {
var i = -1, n, c = node.children = new Array(n), v = 0, j = depth + 1, d;
while (++i < n) {
d = c[i] = recurse(childs[i], j, nodes);
d.parent = node;
v += d.value;
}
if (sort) c.sort(sort);
if (value) node.value = v;
} else {
delete node.children;
if (value) {
node.value = +value.call(hierarchy, node, depth) || 0;
}
}
return node;
}
function revalue(node, depth) {
var children = node.children, v = 0;
if (children && (n = children.length)) {
var i = -1, n, j = depth + 1;
while (++i < n) v += revalue(children[i], j);
} else if (value) {
v = +value.call(hierarchy, node, depth) || 0;
}
if (value) node.value = v;
return v;
}
function hierarchy(d) {
var nodes = [];
recurse(d, 0, nodes);
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) {
revalue(root, 0);
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_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 = τ;
function pie(data) {
var values = data.map(function(d, i) {
return +value.call(pie, d, i);
});
var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values);
var index = d3.range(data.length);
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]);
});
var arcs = [];
index.forEach(function(i) {
var d;
arcs[i] = {
data: data[i],
value: d = values[i],
startAngle: a,
endAngle: a += d * k
};
});
return arcs;
}
pie.value = function(x) {
if (!arguments.length) return value;
value = x;
return pie;
};
pie.sort = function(x) {
if (!arguments.length) return sort;
sort = x;
return pie;
};
pie.startAngle = function(x) {
if (!arguments.length) return startAngle;
startAngle = x;
return pie;
};
pie.endAngle = function(x) {
if (!arguments.length) return endAngle;
endAngle = x;
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) {
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 n = series.length, m = series[0].length, 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.tree = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
function tree(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0];
function firstWalk(node, previousSibling) {
var children = node.children, layout = node._tree;
if (children && (n = children.length)) {
var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1;
while (++i < n) {
child = children[i];
firstWalk(child, previousChild);
ancestor = apportion(child, previousChild, ancestor);
previousChild = child;
}
d3_layout_treeShift(node);
var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim);
if (previousSibling) {
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
layout.mod = layout.prelim - midpoint;
} else {
layout.prelim = midpoint;
}
} else {
if (previousSibling) {
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
}
}
}
function secondWalk(node, x) {
node.x = node._tree.prelim + x;
var children = node.children;
if (children && (n = children.length)) {
var i = -1, n;
x += node._tree.mod;
while (++i < n) {
secondWalk(children[i], x);
}
}
}
function apportion(node, previousSibling, ancestor) {
if (previousSibling) {
var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, 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._tree.ancestor = node;
shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip);
if (shift > 0) {
d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift);
sip += shift;
sop += shift;
}
sim += vim._tree.mod;
sip += vip._tree.mod;
som += vom._tree.mod;
sop += vop._tree.mod;
}
if (vim && !d3_layout_treeRight(vop)) {
vop._tree.thread = vim;
vop._tree.mod += sim - sop;
}
if (vip && !d3_layout_treeLeft(vom)) {
vom._tree.thread = vip;
vom._tree.mod += sip - som;
ancestor = node;
}
}
return ancestor;
}
d3_layout_treeVisitAfter(root, function(node, previousSibling) {
node._tree = {
ancestor: node,
prelim: 0,
mod: 0,
change: 0,
shift: 0,
number: previousSibling ? previousSibling._tree.number + 1 : 0
};
});
firstWalk(root);
secondWalk(root, -root._tree.prelim);
var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1;
d3_layout_treeVisitAfter(root, nodeSize ? function(node) {
node.x *= size[0];
node.y = node.depth * size[1];
delete node._tree;
} : function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = node.depth / y1 * size[1];
delete node._tree;
});
return nodes;
}
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;
return tree;
};
tree.nodeSize = function(x) {
if (!arguments.length) return nodeSize ? size : null;
nodeSize = (size = x) != null;
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(node) {
var children = node.children;
return children && children.length ? children[0] : node._tree.thread;
}
function d3_layout_treeRight(node) {
var children = node.children, n;
return children && (n = children.length) ? children[n - 1] : node._tree.thread;
}
function d3_layout_treeSearch(node, compare) {
var children = node.children;
if (children && (n = children.length)) {
var child, n, i = -1;
while (++i < n) {
if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
node = child;
}
}
}
return node;
}
function d3_layout_treeRightmost(a, b) {
return a.x - b.x;
}
function d3_layout_treeLeftmost(a, b) {
return b.x - a.x;
}
function d3_layout_treeDeepest(a, b) {
return a.depth - b.depth;
}
function d3_layout_treeVisitAfter(node, callback) {
function visit(node, previousSibling) {
var children = node.children;
if (children && (n = children.length)) {
var child, previousChild = null, i = -1, n;
while (++i < n) {
child = children[i];
visit(child, previousChild);
previousChild = child;
}
}
callback(node, previousSibling);
}
visit(node, null);
}
function d3_layout_treeShift(node) {
var shift = 0, change = 0, children = node.children, i = children.length, child;
while (--i >= 0) {
child = children[i]._tree;
child.prelim += shift;
child.mod += shift;
shift += child.shift + (change += child.change);
}
}
function d3_layout_treeMove(ancestor, node, shift) {
ancestor = ancestor._tree;
node = node._tree;
var change = shift / (node.number - ancestor.number);
ancestor.change += change;
node.change -= change;
node.shift += shift;
node.prelim += shift;
node.mod += shift;
}
function d3_layout_treeAncestor(vim, node, ancestor) {
return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
}
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_treeVisitAfter(root, function(d) {
d.r = +r(d.value);
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
if (padding) {
var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;
d3_layout_treeVisitAfter(root, function(d) {
d.r += dr;
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
d3_layout_treeVisitAfter(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.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_treeVisitAfter(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_treeVisitAfter(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 = 0;
root.y = 0;
root.dx = size[0];
root.dy = size[1];
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());
};
},
irwinHall: function(m) {
return function() {
for (var s = 0, j = 0; j < m; j++) s += Math.random();
return s / m;
};
}
};
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) {
return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
}
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 precision = -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01);
return d3.format(format ? format.replace(d3_format_re, function(a, b, c, d, e, f, g, h, i, j) {
return [ b, c, d, e, f, g, h, i || "." + (precision - (j === "%") * 2), j ].join("");
}) : ",." + precision + "f");
}
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, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12,
Math.floor), e;
return function(d) {
return d / pow(f(log(d) + e)) <= 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))) - 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 = (stop - start) / (Math.max(1, domain.length - 1) + padding);
range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
rangeBand = 0;
ranger = {
t: "rangePoints",
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)), error = stop - start - (domain.length - padding) * step;
range = steps(start + Math.round(error / 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.filter(function(d) {
return !isNaN(d);
}).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 = {};
d3.svg.arc = function() {
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
function arc() {
var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0,
a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1);
return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z";
}
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.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.centroid = function() {
var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
return [ Math.cos(a) * r, Math.sin(a) * r ];
};
return arc;
};
var d3_svg_arcOffset = -halfπ, d3_svg_arcMax = τ - ε;
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_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.join("L");
}
function d3_svg_lineLinearClosed(points) {
return d3_svg_lineLinear(points) + "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, points.length - 1), d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineCardinalClosed(points, tension) {
return points.length < 3 ? d3_svg_lineLinear(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] + d3_svg_arcOffset;
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) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset;
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] + d3_svg_arcOffset;
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);
function d3_transition(groups, id) {
d3_subclass(groups, d3_transitionPrototype);
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) {
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
};
d3.transition.prototype = d3_transitionPrototype;
d3_transitionPrototype.select = function(selector) {
var id = this.id, 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, id, node.__transition__[id]);
subgroup.push(subnode);
} else {
subgroup.push(null);
}
}
}
return d3_transition(subgroups, id);
};
d3_transitionPrototype.selectAll = function(selector) {
var id = this.id, 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.__transition__[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, id, transition);
subgroup.push(subnode);
}
}
}
}
return d3_transition(subgroups, 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)) {
subgroup.push(node);
}
}
}
return d3_transition(subgroups, this.id);
};
d3_transitionPrototype.tween = function(name, tween) {
var id = this.id;
if (arguments.length < 2) return this.node().__transition__[id].tween.get(name);
return d3_selection_each(this, tween == null ? function(node) {
node.__transition__[id].tween.remove(name);
} : function(node) {
node.__transition__[id].tween.set(name, tween);
});
};
function d3_transition_tween(groups, name, value, tween) {
var id = groups.id;
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
} : (value = tween(value), function(node) {
node.__transition__[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.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.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() {
return this.each("end.transition", function() {
var p;
if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this);
});
};
d3_transitionPrototype.ease = function(value) {
var id = this.id;
if (arguments.length < 1) return this.node().__transition__[id].ease;
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
return d3_selection_each(this, function(node) {
node.__transition__[id].ease = value;
});
};
d3_transitionPrototype.delay = function(value) {
var id = this.id;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].delay = +value.call(node, node.__data__, i, j);
} : (value = +value, function(node) {
node.__transition__[id].delay = value;
}));
};
d3_transitionPrototype.duration = function(value) {
var id = this.id;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j));
} : (value = Math.max(1, value), function(node) {
node.__transition__[id].duration = value;
}));
};
d3_transitionPrototype.each = function(type, listener) {
var id = this.id;
if (arguments.length < 2) {
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
d3_transitionInheritId = id;
d3_selection_each(this, function(node, i, j) {
d3_transitionInherit = node.__transition__[id];
type.call(node, node.__data__, i, j);
});
d3_transitionInherit = inherit;
d3_transitionInheritId = inheritId;
} else {
d3_selection_each(this, function(node) {
var transition = node.__transition__[id];
(transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener);
});
}
return this;
};
d3_transitionPrototype.transition = function() {
var id0 = this.id, id1 = ++d3_transitionId, 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 = Object.create(node.__transition__[id0]);
transition.delay += transition.duration;
d3_transitionNode(node, i, id1, transition);
}
subgroup.push(node);
}
}
return d3_transition(subgroups, id1);
};
function d3_transitionNode(node, i, id, inherit) {
var lock = node.__transition__ || (node.__transition__ = {
active: 0,
count: 0
}), transition = lock[id];
if (!transition) {
var time = inherit.time;
transition = lock[id] = {
tween: new d3_Map(),
time: time,
ease: inherit.ease,
delay: inherit.delay,
duration: inherit.duration
};
++lock.count;
d3.timer(function(elapsed) {
var d = node.__data__, ease = transition.ease, delay = transition.delay, duration = transition.duration, timer = d3_timer_active, tweened = [];
timer.t = delay + time;
if (delay <= elapsed) return start(elapsed - delay);
timer.c = start;
function start(elapsed) {
if (lock.active > id) return stop();
lock.active = id;
transition.event && transition.event.start.call(node, d, i);
transition.tween.forEach(function(key, value) {
if (value = value.call(node, d, i)) {
tweened.push(value);
}
});
d3.timer(function() {
timer.c = tick(elapsed || 1) ? d3_true : tick;
return 1;
}, 0, time);
}
function tick(elapsed) {
if (lock.active !== id) return stop();
var t = elapsed / duration, e = ease(t), n = tweened.length;
while (n > 0) {
tweened[--n].call(node, e);
}
if (t >= 1) {
transition.event && transition.event.end.call(node, d, i);
return stop();
}
}
function stop() {
if (--lock.count) delete lock[id]; else delete node.__transition__;
return 1;
}
}, 0, time);
}
}
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).style("opacity", 1), 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");
switch (orient) {
case "bottom":
{
tickTransform = d3_svg_axisX;
lineEnter.attr("y2", innerTickSize);
textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding);
lineUpdate.attr("x2", 0).attr("y2", innerTickSize);
textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding);
text.attr("dy", ".71em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize);
break;
}
case "top":
{
tickTransform = d3_svg_axisX;
lineEnter.attr("y2", -innerTickSize);
textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
text.attr("dy", "0em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
break;
}
case "left":
{
tickTransform = d3_svg_axisY;
lineEnter.attr("x2", -innerTickSize);
textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding));
lineUpdate.attr("x2", -innerTickSize).attr("y2", 0);
textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0);
text.attr("dy", ".32em").style("text-anchor", "end");
pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
break;
}
case "right":
{
tickTransform = d3_svg_axisY;
lineEnter.attr("x2", innerTickSize);
textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding);
lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0);
text.attr("dy", ".32em").style("text-anchor", "start");
pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
break;
}
}
if (scale1.rangeBand) {
var dx = scale1.rangeBand() / 2, x = function(d) {
return scale1(d) + dx;
};
tickEnter.call(tickTransform, x);
tickUpdate.call(tickTransform, x);
} else {
tickEnter.call(tickTransform, scale0);
tickUpdate.call(tickTransform, scale1);
tickExit.call(tickTransform, 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_ = 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, x) {
selection.attr("transform", function(d) {
return "translate(" + x(d) + ",0)";
});
}
function d3_svg_axisY(selection, y) {
selection.attr("transform", function(d) {
return "translate(0," + y(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(), center, origin = d3.mouse(target), offset;
var w = d3.select(d3_window).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 = d3.time = {}, d3_date = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
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;
var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S";
var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
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);
};
d3_time_daySymbols.forEach(function(day, i) {
day = day.toLowerCase();
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;
d3_time.format = d3_time_format;
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.substring(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.substring(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 && ("W" in d || "U" in d)) {
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 + Math.floor(d.Z / 100), 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;
}
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_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);
}
var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayLookup = d3_time_formatLookup(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_dayAbbrevLookup = d3_time_formatLookup(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations), d3_time_percentRe = /^%/;
var d3_time_formatPads = {
"-": "",
_: " ",
"0": "0"
};
var d3_time_formats = {
a: function(d) {
return d3_time_dayAbbreviations[d.getDay()];
},
A: function(d) {
return d3_time_days[d.getDay()];
},
b: function(d) {
return d3_time_monthAbbreviations[d.getMonth()];
},
B: function(d) {
return d3_time_months[d.getMonth()];
},
c: d3_time_format(d3_time_formatDateTime),
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 d.getHours() >= 12 ? "PM" : "AM";
},
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(d3_time_formatDate),
X: d3_time_format(d3_time_formatTime),
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.substring(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.substring(i));
return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseWeekdayNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(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.substring(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.substring(i));
return n ? (date.W = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMonthAbbrev(date, string, i) {
d3_time_monthAbbrevRe.lastIndex = 0;
var n = d3_time_monthAbbrevRe.exec(string.substring(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.substring(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_parseFullYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(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.substring(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.substring(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.substring(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.substring(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.substring(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.substring(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.substring(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.substring(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.substring(i, i + 3));
return n ? (date.L = +n[0], i + n[0].length) : -1;
}
var d3_time_numberRe = /^\s*\d+/;
function d3_time_parseAmPm(date, string, i) {
var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
return n == null ? -1 : (date.p = n, i);
}
var d3_time_amPmLookup = d3.map({
am: 0,
pm: 1
});
function d3_time_zone(d) {
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(abs(z) / 60), 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.substring(i, i + 1));
return n ? i + n[0].length : -1;
}
d3_time_format.utc = d3_time_formatUtc;
function d3_time_formatUtc(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;
}
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);
}
function d3_time_scaleFormat(formats) {
return function(date) {
var i = formats.length - 1, f = formats[i];
while (!f[1](date)) f = formats[--i];
return f[0](date);
};
}
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_scaleLocalFormats = [ [ d3_time_format("%Y"), d3_true ], [ d3_time_format("%B"), function(d) {
return d.getMonth();
} ], [ d3_time_format("%b %d"), function(d) {
return d.getDate() != 1;
} ], [ d3_time_format("%a %d"), function(d) {
return d.getDay() && d.getDate() != 1;
} ], [ d3_time_format("%I %p"), function(d) {
return d.getHours();
} ], [ d3_time_format("%I:%M"), function(d) {
return d.getMinutes();
} ], [ d3_time_format(":%S"), function(d) {
return d.getSeconds();
} ], [ d3_time_format(".%L"), function(d) {
return d.getMilliseconds();
} ] ];
var d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats);
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_scaleMilliseconds = {
range: function(start, stop, step) {
return d3.range(+start, +stop, step).map(d3_time_scaleDate);
}
};
var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) {
return [ m[0].utc, m[1] ];
});
var d3_time_scaleUTCFormats = [ [ d3_time_formatUtc("%Y"), d3_true ], [ d3_time_formatUtc("%B"), function(d) {
return d.getUTCMonth();
} ], [ d3_time_formatUtc("%b %d"), function(d) {
return d.getUTCDate() != 1;
} ], [ d3_time_formatUtc("%a %d"), function(d) {
return d.getUTCDay() && d.getUTCDate() != 1;
} ], [ d3_time_formatUtc("%I %p"), function(d) {
return d.getUTCHours();
} ], [ d3_time_formatUtc("%I:%M"), function(d) {
return d.getUTCMinutes();
} ], [ d3_time_formatUtc(":%S"), function(d) {
return d.getUTCSeconds();
} ], [ d3_time_formatUtc(".%L"), function(d) {
return d.getUTCMilliseconds();
} ] ];
var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats);
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);
����Mk1�����S���S���
�Co%&����:��������E��@`�y���n18D���;0����� �D <��4 �HVo��l��04��a˓���1syⳅ�^,"�)he�^���6=ڞ�"cN�Y�O� ��� �ę&�Q��S����KM��y"�
*&ZԼ��=���z�jڊWϳw9oTvI���-�-��/��
���ǝ}��/�V�}��Q�����ȵ���]�1 �@ �w�����(N�Nm'�nr�{���\���Uth�<��b��*�,O�& ����;(W���8�D߼�w$2mv�0��'�$��G6�7��� �FOMگ�%�+�4�y��vzp3�P�HV���d��������J[��ǕU��w>�[1���+)-�S(J-,M-.�+J-.��+N�����RP���E�% 5)�
/*!
* jQuery JavaScript Library v1.8.3
* http://jquery.com/
*
* Includes Sizzle.js
* http://sizzlejs.com/
*
* Copyright 2012 jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)
*/
(function( window, undefined ) {
var
// A central reference to the root jQuery(document)
rootjQuery,
// The deferred used on DOM ready
readyList,
// Use the correct document accordingly with window argument (sandbox)
document = window.document,
location = window.location,
navigator = window.navigator,
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// Save a reference to some core methods
core_push = Array.prototype.push,
core_slice = Array.prototype.slice,
core_indexOf = Array.prototype.indexOf,
core_toString = Object.prototype.toString,
core_hasOwn = Object.prototype.hasOwnProperty,
core_trim = String.prototype.trim,
// Define a local copy of jQuery
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
// Used for matching numbers
core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
// Used for detecting and trimming whitespace
core_rnotwhite = /\S/,
core_rspace = /\s+/,
// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
// JSON RegExp
rvalidchars = /^[\],:{}\s]*$/,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
// Matches dashed string for camelizing
rmsPrefix = /^-ms-/,
rdashAlpha = /-([\da-z])/gi,
// Used by jQuery.camelCase as callback to replace()
fcamelCase = function( all, letter ) {
return ( letter + "" ).toUpperCase();
},
// The ready event handler and self cleanup method
DOMContentLoaded = function() {
if ( document.addEventListener ) {
document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
jQuery.ready();
} else if ( document.readyState === "complete" ) {
// we're here because readyState === "complete" in oldIE
// which is good enough for us to call the dom ready!
document.detachEvent( "onreadystatechange", DOMContentLoaded );
jQuery.ready();
}
},
// [[Class]] -> type pairs
class2type = {};
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
// Handle $(""), $(null), $(undefined), $(false)
if ( !selector ) {
return this;
}
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
// Handle HTML strings
if ( typeof selector === "string" ) {
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
// Assume that strings that start and end with <> are HTML and skip the regex check
match = [ null, selector, null ];
} else {
match = rquickExpr.exec( selector );
}
// Match html or make sure no context is specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
if ( match[1] ) {
context = context instanceof jQuery ? context[0] : context;
doc = ( context && context.nodeType ? context.ownerDocument || context : document );
// scripts is true for back-compat
selector = jQuery.parseHTML( match[1], doc, true );
if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
this.attr.call( selector, context, true );
}
return jQuery.merge( this, selector );
// HANDLE: $(#id)
} else {
elem = document.getElementById( match[2] );
// Check parentNode to catch when Blackberry 4.6 returns
// nodes that are no longer in the document #6963
if ( elem && elem.parentNode ) {
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem.id !== match[2] ) {
return rootjQuery.find( selector );
}
// Otherwise, we inject the element directly into the jQuery object
this.length = 1;
this[0] = elem;
}
this.context = document;
this.selector = selector;
return this;
}
// HANDLE: $(expr, $(...))
} else if ( !context || context.jquery ) {
return ( context || rootjQuery ).find( selector );
// HANDLE: $(expr, context)
// (which is just equivalent to: $(context).find(expr)
} else {
return this.constructor( context ).find( selector );
}
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
if ( selector.selector !== undefined ) {
this.selector = selector.selector;
this.context = selector.context;
}
return jQuery.makeArray( selector, this );
},
// Start with an empty selector
selector: "",
// The current version of jQuery being used
jquery: "1.8.3",
// The default length of a jQuery object is 0
length: 0,
// The number of elements contained in the matched element set
size: function() {
return this.length;
},
toArray: function() {
return core_slice.call( this );
},
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function( num ) {
return num == null ?
// Return a 'clean' array
this.toArray() :
// Return just the object
( num < 0 ? this[ this.length + num ] : this[ num ] );
},
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
// Build a new jQuery matched element set
var ret = jQuery.merge( this.constructor(), elems );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
if ( name === "find" ) {
ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
} else if ( name ) {
ret.selector = this.selector + "." + name + "(" + selector + ")";
}
// Return the newly-formed element set
return ret;
},
// Execute a callback for every element in the matched set.
// (You can seed the arguments with an array of args, but this is
// only used internally.)
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
ready: function( fn ) {
// Add the callback
jQuery.ready.promise().done( fn );
return this;
},
eq: function( i ) {
i = +i;
return i === -1 ?
this.slice( i ) :
this.slice( i, i + 1 );
},
first: function() {
return this.eq( 0 );
},
last: function() {
return this.eq( -1 );
},
slice: function() {
return this.pushStack( core_slice.apply( this, arguments ),
"slice", core_slice.call(arguments).join(",") );
},
map: function( callback ) {
return this.pushStack( jQuery.map(this, function( elem, i ) {
return callback.call( elem, i, elem );
}));
},
end: function() {
return this.prevObject || this.constructor(null);
},
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: core_push,
sort: [].sort,
splice: [].splice
};
// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {
var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
// Handle a deep copy situation
if ( typeof target === "boolean" ) {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
// Handle case when target is a string or something (possible in deep copy)
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
target = {};
}
// extend jQuery itself if only one argument is passed
if ( length === i ) {
target = this;
--i;
}
for ( ; i < length; i++ ) {
// Only deal with non-null/undefined values
if ( (options = arguments[ i ]) != null ) {
// Extend the base object
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
// Prevent never-ending loop
if ( target === copy ) {
continue;
}
// Recurse if we're merging plain objects or arrays
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
if ( copyIsArray ) {
copyIsArray = false;
clone = src && jQuery.isArray(src) ? src : [];
} else {
clone = src && jQuery.isPlainObject(src) ? src : {};
}
// Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy );
// Don't bring in undefined values
} else if ( copy !== undefined ) {
target[ name ] = copy;
}
}
}
}
// Return the modified object
return target;
};
jQuery.extend({
noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}
if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
},
// Is the DOM ready to be used? Set to true once it occurs.
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
readyWait: 1,
// Hold (or release) the ready event
holdReady: function( hold ) {
if ( hold ) {
jQuery.readyWait++;
} else {
jQuery.ready( true );
}
},
// Handle when the DOM is ready
ready: function( wait ) {
// Abort if there are pending holds or we're already ready
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
return;
}
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if ( !document.body ) {
return setTimeout( jQuery.ready, 1 );
}
// Remember that the DOM is ready
jQuery.isReady = true;
// If a normal DOM Ready event fired, decrement, and wait if need be
if ( wait !== true && --jQuery.readyWait > 0 ) {
return;
}
// If there are functions bound, to execute
readyList.resolveWith( document, [ jQuery ] );
// Trigger any bound ready events
if ( jQuery.fn.trigger ) {
jQuery( document ).trigger("ready").off("ready");
}
},
// See test/unit/core.js for details concerning isFunction.
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
isFunction: function( obj ) {
return jQuery.type(obj) === "function";
},
isArray: Array.isArray || function( obj ) {
return jQuery.type(obj) === "array";
},
isWindow: function( obj ) {
return obj != null && obj == obj.window;
},
isNumeric: function( obj ) {
return !isNaN( parseFloat(obj) ) && isFinite( obj );
},
type: function( obj ) {
return obj == null ?
String( obj ) :
class2type[ core_toString.call(obj) ] || "object";
},
isPlainObject: function( obj ) {
// Must be an Object.
// Because of IE, we also have to check the presence of the constructor property.
// Make sure that DOM nodes and window objects don't pass through, as well
if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
return false;
}
try {
// Not own constructor property must be Object
if ( obj.constructor &&
!core_hasOwn.call(obj, "constructor") &&
!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
return false;
}
} catch ( e ) {
// IE8,9 Will throw exceptions on certain host objects #9897
return false;
}
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
var key;
for ( key in obj ) {}
return key === undefined || core_hasOwn.call( obj, key );
},
isEmptyObject: function( obj ) {
var name;
for ( name in obj ) {
return false;
}
return true;
},
error: function( msg ) {
throw new Error( msg );
},
// data: string of html
// context (optional): If specified, the fragment will be created in this context, defaults to document
// scripts (optional): If true, will include scripts passed in the html string
parseHTML: function( data, context, scripts ) {
var parsed;
if ( !data || typeof data !== "string" ) {
return null;
}
if ( typeof context === "boolean" ) {
scripts = context;
context = 0;
}
context = context || document;
// Single tag
if ( (parsed = rsingleTag.exec( data )) ) {
return [ context.createElement( parsed[1] ) ];
}
parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );
return jQuery.merge( [],
(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );
},
parseJSON: function( data ) {
if ( !data || typeof data !== "string") {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( rvalidchars.test( data.replace( rvalidescape, "@" )
.replace( rvalidtokens, "]" )
.replace( rvalidbraces, "")) ) {
return ( new Function( "return " + data ) )();
}
jQuery.error( "Invalid JSON: " + data );
},
// Cross-browser xml parsing
parseXML: function( data ) {
var xml, tmp;
if ( !data || typeof data !== "string" ) {
return null;
}
try {
if ( window.DOMParser ) { // Standard
tmp = new DOMParser();
xml = tmp.parseFromString( data , "text/xml" );
} else { // IE
xml = new ActiveXObject( "Microsoft.XMLDOM" );
xml.async = "false";
xml.loadXML( data );
}
} catch( e ) {
xml = undefined;
}
if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
jQuery.error( "Invalid XML: " + data );
}
return xml;
},
noop: function() {},
// Evaluates a script in a global context
// Workarounds based on findings by Jim Driscoll
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
globalEval: function( data ) {
if ( data && core_rnotwhite.test( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
},
// Convert dashed to camelCase; used by the css and data modules
// Microsoft forgot to hump their vendor prefix (#9572)
camelCase: function( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
},
// args is for internal usage only
each: function( obj, callback, args ) {
var name,
i = 0,
length = obj.length,
isObj = length === undefined || jQuery.isFunction( obj );
if ( args ) {
if ( isObj ) {
for ( name in obj ) {
if ( callback.apply( obj[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( obj[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in obj ) {
if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
break;
}
}
}
}
return obj;
},
// Use native String.trim function wherever possible
trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
function( text ) {
return text == null ?
"" :
core_trim.call( text );
} :
// Otherwise use our own trimming functionality
function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
},
// results is for internal usage only
makeArray: function( arr, results ) {
var type,
ret = results || [];
if ( arr != null ) {
// The window, strings (and functions) also have 'length'
// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
type = jQuery.type( arr );
if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) {
core_push.call( ret, arr );
} else {
jQuery.merge( ret, arr );
}
}
return ret;
},
inArray: function( elem, arr, i ) {
var len;
if ( arr ) {
if ( core_indexOf ) {
return core_indexOf.call( arr, elem, i );
}
len = arr.length;
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays
if ( i in arr && arr[ i ] === elem ) {
return i;
}
}
}
return -1;
},
merge: function( first, second ) {
var l = second.length,
i = first.length,
j = 0;
if ( typeof l === "number" ) {
for ( ; j < l; j++ ) {
first[ i++ ] = second[ j ];
}
} else {
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
}
}
first.length = i;
return first;
},
grep: function( elems, callback, inv ) {
var retVal,
ret = [],
i = 0,
length = elems.length;
inv = !!inv;
// Go through the array, only saving the items
// that pass the validator function
for ( ; i < length; i++ ) {
retVal = !!callback( elems[ i ], i );
if ( inv !== retVal ) {
ret.push( elems[ i ] );
}
}
return ret;
},
// arg is for internal usage only
map: function( elems, callback, arg ) {
var value, key,
ret = [],
i = 0,
length = elems.length,
// jquery objects are treated as arrays
isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
// Go through the array, translating each of the items to their
if ( isArray ) {
for ( ; i < length; i++ ) {
value = callback( elems[ i ], i, arg );
if ( value != null ) {
ret[ ret.length ] = value;
}
}
// Go through every key on the object,
} else {
for ( key in elems ) {
value = callback( elems[ key ], key, arg );
if ( value != null ) {
ret[ ret.length ] = value;
}
}
}
// Flatten any nested arrays
return ret.concat.apply( [], ret );
},
// A global GUID counter for objects
guid: 1,
// Bind a function to a context, optionally partially applying any
// arguments.
proxy: function( fn, context ) {
var tmp, args, proxy;
if ( typeof context === "string" ) {
tmp = fn[ context ];
context = fn;
fn = tmp;
}
// Quick check to determine if target is callable, in the spec
// this throws a TypeError, but we will just return undefined.
if ( !jQuery.isFunction( fn ) ) {
return undefined;
}
// Simulated bind
args = core_slice.call( arguments, 2 );
proxy = function() {
return fn.apply( context, args.concat( core_slice.call( arguments ) ) );
};
// Set the guid of unique handler to the same of original handler, so it can be removed
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
return proxy;
},
// Multifunctional method to get and set values of a collection
// The value/s can optionally be executed if it's a function
access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
var exec,
bulk = key == null,
i = 0,
length = elems.length;
// Sets many values
if ( key && typeof key === "object" ) {
for ( i in key ) {
jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
}
chainable = 1;
// Sets one value
} else if ( value !== undefined ) {
// Optionally, function values get executed if exec is true
exec = pass === undefined && jQuery.isFunction( value );
if ( bulk ) {
// Bulk operations only iterate when executing function values
if ( exec ) {
exec = fn;
fn = function( elem, key, value ) {
return exec.call( jQuery( elem ), value );
};
// Otherwise they run against the entire set
} else {
fn.call( elems, value );
fn = null;
}
}
if ( fn ) {
for (; i < length; i++ ) {
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
}
}
chainable = 1;
}
return chainable ?
elems :
// Gets
bulk ?
fn.call( elems ) :
length ? fn( elems[0], key ) : emptyGet;
},
now: function() {
return ( new Date() ).getTime();
}
});
jQuery.ready.promise = function( obj ) {
if ( !readyList ) {
readyList = jQuery.Deferred();
// Catch cases where $(document).ready() is called after the browser event has already occurred.
// we once tried to use readyState "interactive" here, but it caused issues like the one
// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
if ( document.readyState === "complete" ) {
// Handle it asynchronously to allow scripts the opportunity to delay ready
setTimeout( jQuery.ready, 1 );
// Standards-based browsers support DOMContentLoaded
} else if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
// A fallback to window.onload, that will always work
window.addEventListener( "load", jQuery.ready, false );
// If IE event model is used
} else {
// Ensure firing before onload, maybe late but safe also for iframes
document.attachEvent( "onreadystatechange", DOMContentLoaded );
// A fallback to window.onload, that will always work
window.attachEvent( "onload", jQuery.ready );
// If IE and not a frame
// continually check to see if the document is ready
var top = false;
try {
top = window.frameElement == null && document.documentElement;
} catch(e) {}
if ( top && top.doScroll ) {
(function doScrollCheck() {
if ( !jQuery.isReady ) {
try {
// Use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
top.doScroll("left");
} catch(e) {
return setTimeout( doScrollCheck, 50 );
}
// and execute any waiting functions
jQuery.ready();
}
})();
}
}
}
return readyList.promise( obj );
};
// Populate the class2type map
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
// All jQuery objects should point back to these
rootjQuery = jQuery(document);
// String to Object options format cache
var optionsCache = {};
// Convert String-formatted options into Object-formatted ones and store in cache
function createOptions( options ) {
var object = optionsCache[ options ] = {};
jQuery.each( options.split( core_rspace ), function( _, flag ) {
object[ flag ] = true;
});
return object;
}
/*
* Create a callback list using the following parameters:
*
* options: an optional list of space-separated options that will change how
* the callback list behaves or a more traditional option object
*
* By default a callback list will act like an event callback list and can be
* "fired" multiple times.
*
* Possible options:
*
* once: will ensure the callback list can only be fired once (like a Deferred)
*
* memory: will keep track of previous values and will call any callback added
* after the list has been fired right away with the latest "memorized"
* values (like a Deferred)
*
* unique: will ensure a callback can only be added once (no duplicate in the list)
*
* stopOnFalse: interrupt callings when a callback returns false
*
*/
jQuery.Callbacks = function( options ) {
// Convert options from String-formatted to Object-formatted if needed
// (we check in cache first)
options = typeof options === "string" ?
( optionsCache[ options ] || createOptions( options ) ) :
jQuery.extend( {}, options );
var // Last fire value (for non-forgettable lists)
memory,
// Flag to know if list was already fired
fired,
// Flag to know if list is currently firing
firing,
// First callback to fire (used internally by add and fireWith)
firingStart,
// End of the loop when firing
firingLength,
// Index of currently firing callback (modified by remove if needed)
firingIndex,
// Actual callback list
list = [],
// Stack of fire calls for repeatable lists
stack = !options.once && [],
// Fire callbacks
fire = function( data ) {
memory = options.memory && data;
fired = true;
firingIndex = firingStart || 0;
firingStart = 0;
firingLength = list.length;
firing = true;
for ( ; list && firingIndex < firingLength; firingIndex++ ) {
if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
memory = false; // To prevent further calls using add
break;
}
}
firing = false;
if ( list ) {
if ( stack ) {
if ( stack.length ) {
fire( stack.shift() );
}
} else if ( memory ) {
list = [];
} else {
self.disable();
}
}
},
// Actual Callbacks object
self = {
// Add a callback or a collection of callbacks to the list
add: function() {
if ( list ) {
// First, we save the current length
var start = list.length;
(function add( args ) {
jQuery.each( args, function( _, arg ) {
var type = jQuery.type( arg );
if ( type === "function" ) {
if ( !options.unique || !self.has( arg ) ) {
list.push( arg );
}
} else if ( arg && arg.length && type !== "string" ) {
// Inspect recursively
add( arg );
}
});
})( arguments );
// Do we need to add the callbacks to the
// current firing batch?
if ( firing ) {
firingLength = list.length;
// With memory, if we're not firing then
// we should call right away
} else if ( memory ) {
firingStart = start;
fire( memory );
}
}
return this;
},
// Remove a callback from the list
remove: function() {
if ( list ) {
jQuery.each( arguments, function( _, arg ) {
var index;
while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
list.splice( index, 1 );
// Handle firing indexes
if ( firing ) {
if ( index <= firingLength ) {
firingLength--;
}
if ( index <= firingIndex ) {
firingIndex--;
}
}
}
});
}
return this;
},
// Control if a given callback is in the list
has: function( fn ) {
return jQuery.inArray( fn, list ) > -1;
},
// Remove all callbacks from the list
empty: function() {
list = [];
return this;
},
// Have the list do nothing anymore
disable: function() {
list = stack = memory = undefined;
return this;
},
// Is it disabled?
disabled: function() {
return !list;
},
// Lock the list in its current state
lock: function() {
stack = undefined;
if ( !memory ) {
self.disable();
}
return this;
},
// Is it locked?
locked: function() {
return !stack;
},
// Call all callbacks with the given context and arguments
fireWith: function( context, args ) {
args = args || [];
args = [ context, args.slice ? args.slice() : args ];
if ( list && ( !fired || stack ) ) {
if ( firing ) {
stack.push( args );
} else {
fire( args );
}
}
return this;
},
// Call all the callbacks with the given arguments
fire: function() {
self.fireWith( this, arguments );
return this;
},
// To know if the callbacks have already been called at least once
fired: function() {
return !!fired;
}
};
return self;
};
jQuery.extend({
Deferred: function( func ) {
var tuples = [
// action, add listener, listener list, final state
[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
[ "notify", "progress", jQuery.Callbacks("memory") ]
],
state = "pending",
promise = {
state: function() {
return state;
},
always: function() {
deferred.done( arguments ).fail( arguments );
return this;
},
then: function( /* fnDone, fnFail, fnProgress */ ) {
var fns = arguments;
return jQuery.Deferred(function( newDefer ) {
jQuery.each( tuples, function( i, tuple ) {
var action = tuple[ 0 ],
fn = fns[ i ];
// deferred[ done | fail | progress ] for forwarding actions to newDefer
deferred[ tuple[1] ]( jQuery.isFunction( fn ) ?
function() {
var returned = fn.apply( this, arguments );
if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise()
.done( newDefer.resolve )
.fail( newDefer.reject )
.progress( newDefer.notify );
} else {
newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
}
} :
newDefer[ action ]
);
});
fns = null;
}).promise();
},
// Get a promise for this deferred
// If obj is provided, the promise aspect is added to the object
promise: function( obj ) {
return obj != null ? jQuery.extend( obj, promise ) : promise;
}
},
deferred = {};
// Keep pipe for back-compat
promise.pipe = promise.then;
// Add list-specific methods
jQuery.each( tuples, function( i, tuple ) {
var list = tuple[ 2 ],
stateString = tuple[ 3 ];
// promise[ done | fail | progress ] = list.add
promise[ tuple[1] ] = list.add;
// Handle state
if ( stateString ) {
list.add(function() {
// state = [ resolved | rejected ]
state = stateString;
// [ reject_list | resolve_list ].disable; progress_list.lock
}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
}
// deferred[ resolve | reject | notify ] = list.fire
deferred[ tuple[0] ] = list.fire;
deferred[ tuple[0] + "With" ] = list.fireWith;
});
// Make the deferred a promise
promise.promise( deferred );
// Call given func if any
if ( func ) {
func.call( deferred, deferred );
}
// All done!
return deferred;
},
// Deferred helper
when: function( subordinate /* , ..., subordinateN */ ) {
var i = 0,
resolveValues = core_slice.call( arguments ),
length = resolveValues.length,
// the count of uncompleted subordinates
remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
// Update function for both resolve and progress values
updateFunc = function( i, contexts, values ) {
return function( value ) {
contexts[ i ] = this;
values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
if( values === progressValues ) {
deferred.notifyWith( contexts, values );
} else if ( !( --remaining ) ) {
deferred.resolveWith( contexts, values );
}
};
},
progressValues, progressContexts, resolveContexts;
// add listeners to Deferred subordinates; treat others as resolved
if ( length > 1 ) {
progressValues = new Array( length );
progressContexts = new Array( length );
resolveContexts = new Array( length );
for ( ; i < length; i++ ) {
if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
resolveValues[ i ].promise()
.done( updateFunc( i, resolveContexts, resolveValues ) )
.fail( deferred.reject )
.progress( updateFunc( i, progressContexts, progressValues ) );
} else {
--remaining;
}
}
}
// if we're not waiting on anything, resolve the master
if ( !remaining ) {
deferred.resolveWith( resolveContexts, resolveValues );
}
return deferred.promise();
}
});
jQuery.support = (function() {
var support,
all,
a,
select,
opt,
input,
fragment,
eventName,
i,
isSupported,
clickFn,
div = document.createElement("div");
// Setup
div.setAttribute( "className", "t" );
div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
// Support tests won't run in some limited or non-browser environments
all = div.getElementsByTagName("*");
a = div.getElementsByTagName("a")[ 0 ];
if ( !all || !a || !all.length ) {
return {};
}
// First batch of tests
select = document.createElement("select");
opt = select.appendChild( document.createElement("option") );
input = div.getElementsByTagName("input")[ 0 ];
a.style.cssText = "top:1px;float:left;opacity:.5";
support = {
// IE strips leading whitespace when .innerHTML is used
leadingWhitespace: ( div.firstChild.nodeType === 3 ),
// Make sure that tbody elements aren't automatically inserted
// IE will insert them into empty tables
tbody: !div.getElementsByTagName("tbody").length,
// Make sure that link elements get serialized correctly by innerHTML
// This requires a wrapper element in IE
htmlSerialize: !!div.getElementsByTagName("link").length,
// Get the style information from getAttribute
// (IE uses .cssText instead)
style: /top/.test( a.getAttribute("style") ),
// Make sure that URLs aren't manipulated
// (IE normalizes it by default)
hrefNormalized: ( a.getAttribute("href") === "/a" ),
// Make sure that element opacity exists
// (IE uses filter instead)
// Use a regex to work around a WebKit issue. See #5145
opacity: /^0.5/.test( a.style.opacity ),
// Verify style float existence
// (IE uses styleFloat instead of cssFloat)
cssFloat: !!a.style.cssFloat,
// Make sure that if no value is specified for a checkbox
// that it defaults to "on".
// (WebKit defaults to "" instead)
checkOn: ( input.value === "on" ),
// Make sure that a selected-by-default option has a working selected property.
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
optSelected: opt.selected,
// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
getSetAttribute: div.className !== "t",
// Tests for enctype support on a form (#6743)
enctype: !!document.createElement("form").enctype,
// Makes sure cloning an html5 element does not cause problems
// Where outerHTML is undefined, this still works
html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
boxModel: ( document.compatMode === "CSS1Compat" ),
// Will be defined later
submitBubbles: true,
changeBubbles: true,
focusinBubbles: false,
deleteExpando: true,
noCloneEvent: true,
inlineBlockNeedsLayout: false,
shrinkWrapBlocks: false,
reliableMarginRight: true,
boxSizingReliable: true,
pixelPosition: false
};
// Make sure checked status is properly cloned
input.checked = true;
support.noCloneChecked = input.cloneNode( true ).checked;
// Make sure that the options inside disabled selects aren't marked as disabled
// (WebKit marks them as disabled)
select.disabled = true;
support.optDisabled = !opt.disabled;
// Test to see if it's possible to delete an expando from an element
// Fails in Internet Explorer
try {
delete div.test;
} catch( e ) {
support.deleteExpando = false;
}
if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
div.attachEvent( "onclick", clickFn = function() {
// Cloning a node shouldn't copy over any
// bound event handlers (IE does this)
support.noCloneEvent = false;
});
div.cloneNode( true ).fireEvent("onclick");
div.detachEvent( "onclick", clickFn );
}
// Check if a radio maintains its value
// after being appended to the DOM
input = document.createElement("input");
input.value = "t";
input.setAttribute( "type", "radio" );
support.radioValue = input.value === "t";
input.setAttribute( "checked", "checked" );
// #11217 - WebKit loses check when the name is after the checked attribute
input.setAttribute( "name", "t" );
div.appendChild( input );
fragment = document.createDocumentFragment();
fragment.appendChild( div.lastChild );
// WebKit doesn't clone checked state correctly in fragments
support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
// Check if a disconnected checkbox will retain its checked
// value of true after appended to the DOM (IE6/7)
support.appendChecked = input.checked;
fragment.removeChild( input );
fragment.appendChild( div );
// Technique from Juriy Zaytsev
// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
// We only care about the case where non-standard event systems
// are used, namely in IE. Short-circuiting here helps us to
// avoid an eval call (in setAttribute) which can cause CSP
// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
if ( div.attachEvent ) {
for ( i in {
submit: true,
change: true,
focusin: true
}) {
eventName = "on" + i;
isSupported = ( eventName in div );
if ( !isSupported ) {
div.setAttribute( eventName, "return;" );
isSupported = ( typeof div[ eventName ] === "function" );
}
support[ i + "Bubbles" ] = isSupported;
}
}
// Run tests that need a body at doc ready
jQuery(function() {
var container, div, tds, marginDiv,
divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
body = document.getElementsByTagName("body")[0];
if ( !body ) {
// Return for frameset docs that don't have a body
return;
}
container = document.createElement("div");
container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";
body.insertBefore( container, body.firstChild );
// Construct the test element
div = document.createElement("div");
container.appendChild( div );
// Check if table cells still have offsetWidth/Height when they are set
// to display:none and there are still other visible table cells in a
// table row; if so, offsetWidth/Height are not reliable for use when
// determining if an element has been hidden directly using
// display:none (it is still safe to use offsets if a parent element is
// hidden; don safety goggles and see bug #4512 for more information).
// (only IE 8 fails this test)
div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
tds = div.getElementsByTagName("td");
tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
isSupported = ( tds[ 0 ].offsetHeight === 0 );
tds[ 0 ].style.display = "";
tds[ 1 ].style.display = "none";
// Check if empty table cells still have offsetWidth/Height
// (IE <= 8 fail this test)
support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
// Check box-sizing and margin behavior
div.innerHTML = "";
div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
support.boxSizing = ( div.offsetWidth === 4 );
support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
// NOTE: To any future maintainer, we've window.getComputedStyle
// because jsdom on node.js will break without it.
if ( window.getComputedStyle ) {
support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
// Check if div with explicit width and no margin-right incorrectly
// gets computed margin-right based on width of container. For more
// info see bug #3333
// Fails in WebKit before Feb 2011 nightlies
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
marginDiv = document.createElement("div");
marginDiv.style.cssText = div.style.cssText = divReset;
marginDiv.style.marginRight = marginDiv.style.width = "0";
div.style.width = "1px";
div.appendChild( marginDiv );
support.reliableMarginRight =
!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
}
if ( typeof div.style.zoom !== "undefined" ) {
// Check if natively block-level elements act like inline-block
// elements when setting their display to 'inline' and giving
// them layout
// (IE < 8 does this)
div.innerHTML = "";
div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
// Check if elements with layout shrink-wrap their children
// (IE 6 does this)
div.style.display = "block";
div.style.overflow = "visible";
div.innerHTML = "<div></div>";
div.firstChild.style.width = "5px";
support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
container.style.zoom = 1;
}
// Null elements to avoid leaks in IE
body.removeChild( container );
container = div = tds = marginDiv = null;
});
// Null elements to avoid leaks in IE
fragment.removeChild( div );
all = a = select = opt = input = fragment = div = null;
return support;
})();
var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
rmultiDash = /([A-Z])/g;
jQuery.extend({
cache: {},
deletedIds: [],
// Remove at next major release (1.9/2.0)
uuid: 0,
// Unique for each copy of jQuery on the page
// Non-digits removed to match rinlinejQuery
expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
// The following elements throw uncatchable exceptions if you
// attempt to add expando properties to them.
noData: {
"embed": true,
// Ban all objects except for Flash (which handle expandos)
"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
"applet": true
},
hasData: function( elem ) {
elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
return !!elem && !isEmptyDataObject( elem );
},
data: function( elem, name, data, pvt /* Internal Use Only */ ) {
if ( !jQuery.acceptData( elem ) ) {
return;
}
var thisCache, ret,
internalKey = jQuery.expando,
getByName = typeof name === "string",
// We have to handle DOM nodes and JS objects differently because IE6-7
// can't GC object references properly across the DOM-JS boundary
isNode = elem.nodeType,
// Only DOM nodes need the global jQuery cache; JS object data is
// attached directly to the object so GC can occur automatically
cache = isNode ? jQuery.cache : elem,
// Only defining an ID for JS objects if its cache already exists allows
// the code to shortcut on the same path as a DOM node with no cache
id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
// Avoid doing any more work than we need to when trying to get data on an
// object that has no data at all
if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
return;
}
if ( !id ) {
// Only DOM nodes need a new unique ID for each element since their data
// ends up in the global cache
if ( isNode ) {
elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;
} else {
id = internalKey;
}
}
if ( !cache[ id ] ) {
cache[ id ] = {};
// Avoids exposing jQuery metadata on plain JS objects when the object
// is serialized using JSON.stringify
if ( !isNode ) {
cache[ id ].toJSON = jQuery.noop;
}
}
// An object can be passed to jQuery.data instead of a key/value pair; this gets
// shallow copied over onto the existing cache
if ( typeof name === "object" || typeof name === "function" ) {
if ( pvt ) {
cache[ id ] = jQuery.extend( cache[ id ], name );
} else {
cache[ id ].data = jQuery.extend( cache[ id ].data, name );
}
}
thisCache = cache[ id ];
// jQuery data() is stored in a separate object inside the object's internal data
// cache in order to avoid key collisions between internal data and user-defined
// data.
if ( !pvt ) {
if ( !thisCache.data ) {
thisCache.data = {};
}
thisCache = thisCache.data;
}
if ( data !== undefined ) {
thisCache[ jQuery.camelCase( name ) ] = data;
}
// Check for both converted-to-camel and non-converted data property names
// If a data property was specified
if ( getByName ) {
// First Try to find as-is property data
ret = thisCache[ name ];
// Test for null|undefined property data
if ( ret == null ) {
// Try to find the camelCased property
ret = thisCache[ jQuery.camelCase( name ) ];
}
} else {
ret = thisCache;
}
return ret;
},
removeData: function( elem, name, pvt /* Internal Use Only */ ) {
if ( !jQuery.acceptData( elem ) ) {
return;
}
var thisCache, i, l,
isNode = elem.nodeType,
// See jQuery.data for more information
cache = isNode ? jQuery.cache : elem,
id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
// If there is already no cache entry for this object, there is no
// purpose in continuing
if ( !cache[ id ] ) {
return;
}
if ( name ) {
thisCache = pvt ? cache[ id ] : cache[ id ].data;
if ( thisCache ) {
// Support array or space separated string names for data keys
if ( !jQuery.isArray( name ) ) {
// try the string as a key before any manipulation
if ( name in thisCache ) {
name = [ name ];
} else {
// split the camel cased version by spaces unless a key with the spaces exists
name = jQuery.camelCase( name );
if ( name in thisCache ) {
name = [ name ];
} else {
name = name.split(" ");
}
}
}
for ( i = 0, l = name.length; i < l; i++ ) {
delete thisCache[ name[i] ];
}
// If there is no data left in the cache, we want to continue
// and let the cache object itself get destroyed
if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
return;
}
}
}
// See jQuery.data for more information
if ( !pvt ) {
delete cache[ id ].data;
// Don't destroy the parent cache unless the internal data object
// had been the only thing left in it
if ( !isEmptyDataObject( cache[ id ] ) ) {
return;
}
}
// Destroy the cache
if ( isNode ) {
jQuery.cleanData( [ elem ], true );
// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
} else if ( jQuery.support.deleteExpando || cache != cache.window ) {
delete cache[ id ];
// When all else fails, null
} else {
cache[ id ] = null;
}
},
// For internal use only.
_data: function( elem, name, data ) {
return jQuery.data( elem, name, data, true );
},
// A method for determining if a DOM node can handle the data expando
acceptData: function( elem ) {
var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
// nodes accept data unless otherwise specified; rejection can be conditional
return !noData || noData !== true && elem.getAttribute("classid") === noData;
}
});
jQuery.fn.extend({
data: function( key, value ) {
var parts, part, attr, name, l,
elem = this[0],
i = 0,
data = null;
// Gets all values
if ( key === undefined ) {
if ( this.length ) {
data = jQuery.data( elem );
if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
attr = elem.attributes;
for ( l = attr.length; i < l; i++ ) {
name = attr[i].name;
if ( !name.indexOf( "data-" ) ) {
name = jQuery.camelCase( name.substring(5) );
dataAttr( elem, name, data[ name ] );
}
}
jQuery._data( elem, "parsedAttrs", true );
}
}
return data;
}
// Sets multiple values
if ( typeof key === "object" ) {
return this.each(function() {
jQuery.data( this, key );
});
}
parts = key.split( ".", 2 );
parts[1] = parts[1] ? "." + parts[1] : "";
part = parts[1] + "!";
return jQuery.access( this, function( value ) {
if ( value === undefined ) {
data = this.triggerHandler( "getData" + part, [ parts[0] ] );
// Try to fetch any internally stored data first
if ( data === undefined && elem ) {
data = jQuery.data( elem, key );
data = dataAttr( elem, key, data );
}
return data === undefined && parts[1] ?
this.data( parts[0] ) :
data;
}
parts[1] = value;
this.each(function() {
var self = jQuery( this );
self.triggerHandler( "setData" + part, parts );
jQuery.data( this, key, value );
self.triggerHandler( "changeData" + part, parts );
});
}, null, value, arguments.length > 1, null, false );
},
removeData: function( key ) {
return this.each(function() {
jQuery.removeData( this, key );
});
}
});
function dataAttr( elem, key, data ) {
// If nothing was found internally, try to fetch any
// data from the HTML5 data-* attribute
if ( data === undefined && elem.nodeType === 1 ) {
var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
data = elem.getAttribute( name );
if ( typeof data === "string" ) {
try {
data = data === "true" ? true :
data === "false" ? false :
data === "null" ? null :
// Only convert to a number if it doesn't change the string
+data + "" === data ? +data :
rbrace.test( data ) ? jQuery.parseJSON( data ) :
data;
} catch( e ) {}
// Make sure we set the data so it isn't changed later
jQuery.data( elem, key, data );
} else {
data = undefined;
}
}
return data;
}
// checks a cache object for emptiness
function isEmptyDataObject( obj ) {
var name;
for ( name in obj ) {
// if the public data object is empty, the private is still empty
if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
continue;
}
if ( name !== "toJSON" ) {
return false;
}
}
return true;
}
jQuery.extend({
queue: function( elem, type, data ) {
var queue;
if ( elem ) {
type = ( type || "fx" ) + "queue";
queue = jQuery._data( elem, type );
// Speed up dequeue by getting out quickly if this is just a lookup
if ( data ) {
if ( !queue || jQuery.isArray(data) ) {
queue = jQuery._data( elem, type, jQuery.makeArray(data) );
} else {
queue.push( data );
}
}
return queue || [];
}
},
dequeue: function( elem, type ) {
type = type || "fx";
var queue = jQuery.queue( elem, type ),
startLength = queue.length,
fn = queue.shift(),
hooks = jQuery._queueHooks( elem, type ),
next = function() {
jQuery.dequeue( elem, type );
};
// If the fx queue is dequeued, always remove the progress sentinel
if ( fn === "inprogress" ) {
fn = queue.shift();
startLength--;
}
if ( fn ) {
// Add a progress sentinel to prevent the fx queue from being
// automatically dequeued
if ( type === "fx" ) {
queue.unshift( "inprogress" );
}
// clear up the last queue stop function
delete hooks.stop;
fn.call( elem, next, hooks );
}
if ( !startLength && hooks ) {
hooks.empty.fire();
}
},
// not intended for public consumption - generates a queueHooks object, or returns the current one
_queueHooks: function( elem, type ) {
var key = type + "queueHooks";
return jQuery._data( elem, key ) || jQuery._data( elem, key, {
empty: jQuery.Callbacks("once memory").add(function() {
jQuery.removeData( elem, type + "queue", true );
jQuery.removeData( elem, key, true );
})
});
}
});
jQuery.fn.extend({
queue: function( type, data ) {
var setter = 2;
if ( typeof type !== "string" ) {
data = type;
type = "fx";
setter--;
}
if ( arguments.length < setter ) {
return jQuery.queue( this[0], type );
}
return data === undefined ?
this :
this.each(function() {
var queue = jQuery.queue( this, type, data );
// ensure a hooks for this queue
jQuery._queueHooks( this, type );
if ( type === "fx" && queue[0] !== "inprogress" ) {
jQuery.dequeue( this, type );
}
});
},
dequeue: function( type ) {
return this.each(function() {
jQuery.dequeue( this, type );
});
},
// Based off of the plugin by Clint Helfers, with permission.
// http://blindsignals.com/index.php/2009/07/jquery-delay/
delay: function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
type = type || "fx";
return this.queue( type, function( next, hooks ) {
var timeout = setTimeout( next, time );
hooks.stop = function() {
clearTimeout( timeout );
};
});
},
clearQueue: function( type ) {
return this.queue( type || "fx", [] );
},
// Get a promise resolved when queues of a certain type
// are emptied (fx is the type by default)
promise: function( type, obj ) {
var tmp,
count = 1,
defer = jQuery.Deferred(),
elements = this,
i = this.length,
resolve = function() {
if ( !( --count ) ) {
defer.resolveWith( elements, [ elements ] );
}
};
if ( typeof type !== "string" ) {
obj = type;
type = undefined;
}
type = type || "fx";
while( i-- ) {
tmp = jQuery._data( elements[ i ], type + "queueHooks" );
if ( tmp && tmp.empty ) {
count++;
tmp.empty.add( resolve );
}
}
resolve();
return defer.promise( obj );
}
});
var nodeHook, boolHook, fixSpecified,
rclass = /[\t\r\n]/g,
rreturn = /\r/g,
rtype = /^(?:button|input)$/i,
rfocusable = /^(?:button|input|object|select|textarea)$/i,
rclickable = /^a(?:rea|)$/i,
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
getSetAttribute = jQuery.support.getSetAttribute;
jQuery.fn.extend({
attr: function( name, value ) {
return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
},
removeAttr: function( name ) {
return this.each(function() {
jQuery.removeAttr( this, name );
});
},
prop: function( name, value ) {
return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
},
removeProp: function( name ) {
name = jQuery.propFix[ name ] || name;
return this.each(function() {
// try/catch handles cases where IE balks (such as removing a property on window)
try {
this[ name ] = undefined;
delete this[ name ];
} catch( e ) {}
});
},
addClass: function( value ) {
var classNames, i, l, elem,
setClass, c, cl;
if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) {
jQuery( this ).addClass( value.call(this, j, this.className) );
});
}
if ( value && typeof value === "string" ) {
classNames = value.split( core_rspace );
for ( i = 0, l = this.length; i < l; i++ ) {
elem = this[ i ];
if ( elem.nodeType === 1 ) {
if ( !elem.className && classNames.length === 1 ) {
elem.className = value;
} else {
setClass = " " + elem.className + " ";
for ( c = 0, cl = classNames.length; c < cl; c++ ) {
if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) {
setClass += classNames[ c ] + " ";
}
}
elem.className = jQuery.trim( setClass );
}
}
}
}
return this;
},
removeClass: function( value ) {
var removes, className, elem, c, cl, i, l;
if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) {
jQuery( this ).removeClass( value.call(this, j, this.className) );
});
}
if ( (value && typeof value === "string") || value === undefined ) {
removes = ( value || "" ).split( core_rspace );
for ( i = 0, l = this.length; i < l; i++ ) {
elem = this[ i ];
if ( elem.nodeType === 1 && elem.className ) {
className = (" " + elem.className + " ").replace( rclass, " " );
// loop over each item in the removal list
for ( c = 0, cl = removes.length; c < cl; c++ ) {
// Remove until there is nothing to remove,
while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) {
className = className.replace( " " + removes[ c ] + " " , " " );
}
}
elem.className = value ? jQuery.trim( className ) : "";
}
}
}
return this;
},
toggleClass: function( value, stateVal ) {
var type = typeof value,
isBool = typeof stateVal === "boolean";
if ( jQuery.isFunction( value ) ) {
return this.each(function( i ) {
jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
});
}
return this.each(function() {
if ( type === "string" ) {
// toggle individual class names
var className,
i = 0,
self = jQuery( this ),
state = stateVal,
classNames = value.split( core_rspace );
while ( (className = classNames[ i++ ]) ) {
// check each className given, space separated list
state = isBool ? state : !self.hasClass( className );
self[ state ? "addClass" : "removeClass" ]( className );
}
} else if ( type === "undefined" || type === "boolean" ) {
if ( this.className ) {
// store className if set
jQuery._data( this, "__className__", this.className );
}
// toggle whole className
this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
}
});
},
hasClass: function( selector ) {
var className = " " + selector + " ",
i = 0,
l = this.length;
for ( ; i < l; i++ ) {
if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
return true;
}
}
return false;
},
val: function( value ) {
var hooks, ret, isFunction,
elem = this[0];
if ( !arguments.length ) {
if ( elem ) {
hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
return ret;
}
ret = elem.value;
return typeof ret === "string" ?
// handle most common string cases
ret.replace(rreturn, "") :
// handle cases where value is null/undef or number
ret == null ? "" : ret;
}
return;
}
isFunction = jQuery.isFunction( value );
return this.each(function( i ) {
var val,
self = jQuery(this);
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
val = value.call( this, i, self.val() );
} else {
val = value;
}
// Treat null/undefined as ""; convert numbers to string
if ( val == null ) {
val = "";
} else if ( typeof val === "number" ) {
val += "";
} else if ( jQuery.isArray( val ) ) {
val = jQuery.map(val, function ( value ) {
return value == null ? "" : value + "";
});
}
hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
// If set returns undefined, fall back to normal setting
if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
this.value = val;
}
});
}
});
jQuery.extend({
valHooks: {
option: {
get: function( elem ) {
// attributes.value is undefined in Blackberry 4.7 but
// uses .value. See #6932
var val = elem.attributes.value;
return !val || val.specified ? elem.value : elem.text;
}
},
select: {
get: function( elem ) {
var value, option,
options = elem.options,
index = elem.selectedIndex,
one = elem.type === "select-one" || index < 0,
values = one ? null : [],
max = one ? index + 1 : options.length,
i = index < 0 ?
max :
one ? index : 0;
// Loop through all the selected options
for ( ; i < max; i++ ) {
option = options[ i ];
// oldIE doesn't update selected after form reset (#2551)
if ( ( option.selected || i === index ) &&
// Don't return options that are disabled or in a disabled optgroup
( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
// Get the specific value for the option
value = jQuery( option ).val();
// We don't need an array for one selects
if ( one ) {
return value;
}
// Multi-Selects return an array
values.push( value );
}
}
return values;
},
set: function( elem, value ) {
var values = jQuery.makeArray( value );
jQuery(elem).find("option").each(function() {
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {
elem.selectedIndex = -1;
}
return values;
}
}
},
// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9
attrFn: {},
attr: function( elem, name, value, pass ) {
var ret, hooks, notxml,
nType = elem.nodeType;
// don't get/set attributes on text, comment and attribute nodes
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
return;
}
if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {
return jQuery( elem )[ name ]( value );
}
// Fallback to prop when attributes are not supported
if ( typeof elem.getAttribute === "undefined" ) {
return jQuery.prop( elem, name, value );
}
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
// All attributes are lowercase
// Grab necessary hook if one is defined
if ( notxml ) {
name = name.toLowerCase();
hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
}
if ( value !== undefined ) {
if ( value === null ) {
jQuery.removeAttr( elem, name );
return;
} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
return ret;
} else {
elem.setAttribute( name, value + "" );
return value;
}
} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
return ret;
} else {
ret = elem.getAttribute( name );
// Non-existent attributes return null, we normalize to undefined
return ret === null ?
undefined :
ret;
}
},
removeAttr: function( elem, value ) {
var propName, attrNames, name, isBool,
i = 0;
if ( value && elem.nodeType === 1 ) {
attrNames = value.split( core_rspace );
for ( ; i < attrNames.length; i++ ) {
name = attrNames[ i ];
if ( name ) {
propName = jQuery.propFix[ name ] || name;
isBool = rboolean.test( name );
// See #9699 for explanation of this approach (setting first, then removal)
// Do not do this for boolean attributes (see #10870)
if ( !isBool ) {
jQuery.attr( elem, name, "" );
}
elem.removeAttribute( getSetAttribute ? name : propName );
// Set corresponding property to false for boolean attributes
if ( isBool && propName in elem ) {
elem[ propName ] = false;
}
}
}
}
},
attrHooks: {
type: {
set: function( elem, value ) {
// We can't allow the type property to be changed (since it causes problems in IE)
if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
jQuery.error( "type property can't be changed" );
} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
// Setting the type on a radio button after the value resets the value in IE6-9
// Reset value to it's default in case type is set after value
// This is for element creation
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
elem.value = val;
}
return value;
}
}
},
// Use the value property for back compat
// Use the nodeHook for button elements in IE6/7 (#1954)
value: {
get: function( elem, name ) {
if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
return nodeHook.get( elem, name );
}
return name in elem ?
elem.value :
null;
},
set: function( elem, value, name ) {
if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
return nodeHook.set( elem, value, name );
}
// Does not return so that setAttribute is also used
elem.value = value;
}
}
},
propFix: {
tabindex: "tabIndex",
readonly: "readOnly",
"for": "htmlFor",
"class": "className",
maxlength: "maxLength",
cellspacing: "cellSpacing",
cellpadding: "cellPadding",
rowspan: "rowSpan",
colspan: "colSpan",
usemap: "useMap",
frameborder: "frameBorder",
contenteditable: "contentEditable"
},
prop: function( elem, name, value ) {
var ret, hooks, notxml,
nType = elem.nodeType;
// don't get/set properties on text, comment and attribute nodes
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
return;
}
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
if ( notxml ) {
// Fix name and attach hooks
name = jQuery.propFix[ name ] || name;
hooks = jQuery.propHooks[ name ];
}
if ( value !== undefined ) {
if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
return ret;
} else {
return ( elem[ name ] = value );
}
} else {
if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
return ret;
} else {
return elem[ name ];
}
}
},
propHooks: {
tabIndex: {
get: function( elem ) {
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
var attributeNode = elem.getAttributeNode("tabindex");
return attributeNode && attributeNode.specified ?
parseInt( attributeNode.value, 10 ) :
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
0 :
undefined;
}
}
}
});
// Hook for boolean attributes
boolHook = {
get: function( elem, name ) {
// Align boolean attributes with corresponding properties
// Fall back to attribute presence where some booleans are not supported
var attrNode,
property = jQuery.prop( elem, name );
return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
name.toLowerCase() :
undefined;
},
set: function( elem, value, name ) {
var propName;
if ( value === false ) {
// Remove boolean attributes when set to false
jQuery.removeAttr( elem, name );
} else {
// value is true since we know at this point it's type boolean and not false
// Set boolean attributes to the same name and set the DOM property
propName = jQuery.propFix[ name ] || name;
if ( propName in elem ) {
// Only set the IDL specifically if it already exists on the element
elem[ propName ] = true;
}
elem.setAttribute( name, name.toLowerCase() );
}
return name;
}
};
// IE6/7 do not support getting/setting some attributes with get/setAttribute
if ( !getSetAttribute ) {
fixSpecified = {
name: true,
id: true,
coords: true
};
// Use this for any attribute in IE6/7
// This fixes almost every IE6/7 issue
nodeHook = jQuery.valHooks.button = {
get: function( elem, name ) {
var ret;
ret = elem.getAttributeNode( name );
return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ?
ret.value :
undefined;
},
set: function( elem, value, name ) {
// Set the existing or create a new attribute node
var ret = elem.getAttributeNode( name );
if ( !ret ) {
ret = document.createAttribute( name );
elem.setAttributeNode( ret );
}
return ( ret.value = value + "" );
}
};
// Set width and height to auto instead of 0 on empty string( Bug #8150 )
// This is for removals
jQuery.each([ "width", "height" ], function( i, name ) {
jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
set: function( elem, value ) {
if ( value === "" ) {
elem.setAttribute( name, "auto" );
return value;
}
}
});
});
// Set contenteditable to false on removals(#10429)
// Setting to empty string throws an error as an invalid value
jQuery.attrHooks.contenteditable = {
get: nodeHook.get,
set: function( elem, value, name ) {
if ( value === "" ) {
value = "false";
}
nodeHook.set( elem, value, name );
}
};
}
// Some attributes require a special call on IE
if ( !jQuery.support.hrefNormalized ) {
jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
get: function( elem ) {
var ret = elem.getAttribute( name, 2 );
return ret === null ? undefined : ret;
}
});
});
}
if ( !jQuery.support.style ) {
jQuery.attrHooks.style = {
get: function( elem ) {
// Return undefined in the case of empty string
// Normalize to lowercase since IE uppercases css property names
return elem.style.cssText.toLowerCase() || undefined;
},
set: function( elem, value ) {
return ( elem.style.cssText = value + "" );
}
};
}
// Safari mis-reports the default selected property of an option
// Accessing the parent's selectedIndex property fixes it
if ( !jQuery.support.optSelected ) {
jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
get: function( elem ) {
var parent = elem.parentNode;
if ( parent ) {
parent.selectedIndex;
// Make sure that it also works with optgroups, see #5701
if ( parent.parentNode ) {
parent.parentNode.selectedIndex;
}
}
return null;
}
});
}
// IE6/7 call enctype encoding
if ( !jQuery.support.enctype ) {
jQuery.propFix.enctype = "encoding";
}
// Radios and checkboxes getter/setter
if ( !jQuery.support.checkOn ) {
jQuery.each([ "radio", "checkbox" ], function() {
jQuery.valHooks[ this ] = {
get: function( elem ) {
// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
return elem.getAttribute("value") === null ? "on" : elem.value;
}
};
});
}
jQuery.each([ "radio", "checkbox" ], function() {
jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
set: function( elem, value ) {
if ( jQuery.isArray( value ) ) {
return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
}
}
});
});
var rformElems = /^(?:textarea|input|select)$/i,
rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/,
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
rkeyEvent = /^key/,
rmouseEvent = /^(?:mouse|contextmenu)|click/,
rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
hoverHack = function( events ) {
return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
};
/*
* Helper functions for managing events -- not part of the public interface.
* Props to Dean Edwards' addEvent library for many of the ideas.
*/
jQuery.event = {
add: function( elem, types, handler, data, selector ) {
var elemData, eventHandle, events,
t, tns, type, namespaces, handleObj,
handleObjIn, handlers, special;
// Don't attach events to noData or text/comment nodes (allow plain objects tho)
if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
return;
}
// Caller can pass in an object of custom data in lieu of the handler
if ( handler.handler ) {
handleObjIn = handler;
handler = handleObjIn.handler;
selector = handleObjIn.selector;
}
// Make sure that the handler has a unique ID, used to find/remove it later
if ( !handler.guid ) {
handler.guid = jQuery.guid++;
}
// Init the element's event structure and main handler, if this is the first
events = elemData.events;
if ( !events ) {
elemData.events = events = {};
}
eventHandle = elemData.handle;
if ( !eventHandle ) {
elemData.handle = eventHandle = function( e ) {
// Discard the second event of a jQuery.event.trigger() and
// when an event is called after a page has unloaded
return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
undefined;
};
// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
eventHandle.elem = elem;
}
// Handle multiple events separated by a space
// jQuery(...).bind("mouseover mouseout", fn);
types = jQuery.trim( hoverHack(types) ).split( " " );
for ( t = 0; t < types.length; t++ ) {
tns = rtypenamespace.exec( types[t] ) || [];
type = tns[1];
namespaces = ( tns[2] || "" ).split( "." ).sort();
// If event changes its type, use the special event handlers for the changed type
special = jQuery.event.special[ type ] || {};
// If selector defined, determine special event api type, otherwise given type
type = ( selector ? special.delegateType : special.bindType ) || type;
// Update special based on newly reset type
special = jQuery.event.special[ type ] || {};
// handleObj is passed to all event handlers
handleObj = jQuery.extend({
type: type,
origType: tns[1],
data: data,
handler: handler,
guid: handler.guid,
selector: selector,
needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
namespace: namespaces.join(".")
}, handleObjIn );
// Init the event handler queue if we're the first
handlers = events[ type ];
if ( !handlers ) {
handlers = events[ type ] = [];
handlers.delegateCount = 0;
// Only use addEventListener/attachEvent if the special events handler returns false
if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
// Bind the global event handler to the element
if ( elem.addEventListener ) {
elem.addEventListener( type, eventHandle, false );
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" + type, eventHandle );
}
}
}
if ( special.add ) {
special.add.call( elem, handleObj );
if ( !handleObj.handler.guid ) {
handleObj.handler.guid = handler.guid;
}
}
// Add to the element's handler list, delegates in front
if ( selector ) {
handlers.splice( handlers.delegateCount++, 0, handleObj );
} else {
handlers.push( handleObj );
}
// Keep track of which events have ever been used, for event optimization
jQuery.event.global[ type ] = true;
}
// Nullify elem to prevent memory leaks in IE
elem = null;
},
global: {},
// Detach an event or set of events from an element
remove: function( elem, types, handler, selector, mappedTypes ) {
var t, tns, type, origType, namespaces, origCount,
j, events, special, eventType, handleObj,
elemData = jQuery.hasData( elem ) && jQuery._data( elem );
if ( !elemData || !(events = elemData.events) ) {
return;
}
// Once for each type.namespace in types; type may be omitted
types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
for ( t = 0; t < types.length; t++ ) {
tns = rtypenamespace.exec( types[t] ) || [];
type = origType = tns[1];
namespaces = tns[2];
// Unbind all events (on this namespace, if provided) for the element
if ( !type ) {
for ( type in events ) {
jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
}
continue;
}
special = jQuery.event.special[ type ] || {};
type = ( selector? special.delegateType : special.bindType ) || type;
eventType = events[ type ] || [];
origCount = eventType.length;
namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
// Remove matching events
for ( j = 0; j < eventType.length; j++ ) {
handleObj = eventType[ j ];
if ( ( mappedTypes || origType === handleObj.origType ) &&
( !handler || handler.guid === handleObj.guid ) &&
( !namespaces || namespaces.test( handleObj.namespace ) ) &&
( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
eventType.splice( j--, 1 );
if ( handleObj.selector ) {
eventType.delegateCount--;
}
if ( special.remove ) {
special.remove.call( elem, handleObj );
}
}
}
// Remove generic event handler if we removed something and no more handlers exist
// (avoids potential for endless recursion during removal of special event handlers)
if ( eventType.length === 0 && origCount !== eventType.length ) {
if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
jQuery.removeEvent( elem, type, elemData.handle );
}
delete events[ type ];
}
}
// Remove the expando if it's no longer used
if ( jQuery.isEmptyObject( events ) ) {
delete elemData.handle;
// removeData also checks for emptiness and clears the expando if empty
// so use it instead of delete
jQuery.removeData( elem, "events", true );
}
},
// Events that are safe to short-circuit if no handlers are attached.
// Native DOM events should not be added, they may have inline handlers.
customEvent: {
"getData": true,
"setData": true,
"changeData": true
},
trigger: function( event, data, elem, onlyHandlers ) {
// Don't do events on text and comment nodes
if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
return;
}
// Event object or event type
var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,
type = event.type || event,
namespaces = [];
// focus/blur morphs to focusin/out; ensure we're not firing them right now
if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
return;
}
if ( type.indexOf( "!" ) >= 0 ) {
// Exclusive events trigger only for the exact event (no namespaces)
type = type.slice(0, -1);
exclusive = true;
}
if ( type.indexOf( "." ) >= 0 ) {
// Namespaced trigger; create a regexp to match event type in handle()
namespaces = type.split(".");
type = namespaces.shift();
namespaces.sort();
}
if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
// No jQuery handlers for this event type, and it can't have inline handlers
return;
}
// Caller can pass in an Event, Object, or just an event type string
event = typeof event === "object" ?
// jQuery.Event object
event[ jQuery.expando ] ? event :
// Object literal
new jQuery.Event( type, event ) :
// Just the event type (string)
new jQuery.Event( type );
event.type = type;
event.isTrigger = true;
event.exclusive = exclusive;
event.namespace = namespaces.join( "." );
event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
// Handle a global trigger
if ( !elem ) {
// TODO: Stop taunting the data cache; remove global events and always attach to document
cache = jQuery.cache;
for ( i in cache ) {
if ( cache[ i ].events && cache[ i ].events[ type ] ) {
jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
}
}
return;
}
// Clean up the event in case it is being reused
event.result = undefined;
if ( !event.target ) {
event.target = elem;
}
// Clone any incoming data and prepend the event, creating the handler arg list
data = data != null ? jQuery.makeArray( data ) : [];
data.unshift( event );
// Allow special events to draw outside the lines
special = jQuery.event.special[ type ] || {};
if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
return;
}
// Determine event propagation path in advance, per W3C events spec (#9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
eventPath = [[ elem, special.bindType || type ]];
if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
bubbleType = special.delegateType || type;
cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
for ( old = elem; cur; cur = cur.parentNode ) {
eventPath.push([ cur, bubbleType ]);
old = cur;
}
// Only add window if we got to document (e.g., not plain obj or detached DOM)
if ( old === (elem.ownerDocument || document) ) {
eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
}
}
// Fire handlers on the event path
for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
cur = eventPath[i][0];
event.type = eventPath[i][1];
handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
if ( handle ) {
handle.apply( cur, data );
}
// Note that this is a bare JS function and not a jQuery handler
handle = ontype && cur[ ontype ];
if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
event.preventDefault();
}
}
event.type = type;
// If nobody prevented the default action, do it now
if ( !onlyHandlers && !event.isDefaultPrevented() ) {
if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
// Call a native DOM method on the target with the same name name as the event.
// Can't use an .isFunction() check here because IE6/7 fails that test.
// Don't do default actions on window, that's where global variables be (#6170)
// IE<9 dies on focus/blur to hidden element (#1486)
if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
// Don't re-trigger an onFOO event when we call its FOO() method
old = elem[ ontype ];
if ( old ) {
elem[ ontype ] = null;
}
// Prevent re-triggering of the same event, since we already bubbled it above
jQuery.event.triggered = type;
elem[ type ]();
jQuery.event.triggered = undefined;
if ( old ) {
elem[ ontype ] = old;
}
}
}
}
return event.result;
},
dispatch: function( event ) {
// Make a writable jQuery.Event from the native event object
event = jQuery.event.fix( event || window.event );
var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,
handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
delegateCount = handlers.delegateCount,
args = core_slice.call( arguments ),
run_all = !event.exclusive && !event.namespace,
special = jQuery.event.special[ event.type ] || {},
handlerQueue = [];
// Use the fix-ed jQuery.Event rather than the (read-only) native event
args[0] = event;
event.delegateTarget = this;
// Call the preDispatch hook for the mapped type, and let it bail if desired
if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
return;
}
// Determine handlers that should run if there are delegated events
// Avoid non-left-click bubbling in Firefox (#3861)
if ( delegateCount && !(event.button && event.type === "click") ) {
for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)
if ( cur.disabled !== true || event.type !== "click" ) {
selMatch = {};
matches = [];
for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ];
sel = handleObj.selector;
if ( selMatch[ sel ] === undefined ) {
selMatch[ sel ] = handleObj.needsContext ?
jQuery( sel, this ).index( cur ) >= 0 :
jQuery.find( sel, this, null, [ cur ] ).length;
}
if ( selMatch[ sel ] ) {
matches.push( handleObj );
}
}
if ( matches.length ) {
handlerQueue.push({ elem: cur, matches: matches });
}
}
}
}
// Add the remaining (directly-bound) handlers
if ( handlers.length > delegateCount ) {
handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
}
// Run delegates first; they may want to stop propagation beneath us
for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
matched = handlerQueue[ i ];
event.currentTarget = matched.elem;
for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
handleObj = matched.matches[ j ];
// Triggered event must either 1) be non-exclusive and have no namespace, or
// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
event.data = handleObj.data;
event.handleObj = handleObj;
ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
.apply( matched.elem, args );
if ( ret !== undefined ) {
event.result = ret;
if ( ret === false ) {
event.preventDefault();
event.stopPropagation();
}
}
}
}
}
// Call the postDispatch hook for the mapped type
if ( special.postDispatch ) {
special.postDispatch.call( this, event );
}
return event.result;
},
// Includes some event props shared by KeyEvent and MouseEvent
// *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
fixHooks: {},
keyHooks: {
props: "char charCode key keyCode".split(" "),
filter: function( event, original ) {
// Add which for key events
if ( event.which == null ) {
event.which = original.charCode != null ? original.charCode : original.keyCode;
}
return event;
}
},
mouseHooks: {
props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
filter: function( event, original ) {
var eventDoc, doc, body,
button = original.button,
fromElement = original.fromElement;
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && original.clientX != null ) {
eventDoc = event.target.ownerDocument || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
}
// Add relatedTarget, if necessary
if ( !event.relatedTarget && fromElement ) {
event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
}
// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && button !== undefined ) {
event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
}
return event;
}
},
fix: function( event ) {
if ( event[ jQuery.expando ] ) {
return event;
}
// Create a writable copy of the event object and normalize some properties
var i, prop,
originalEvent = event,
fixHook = jQuery.event.fixHooks[ event.type ] || {},
copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
event = jQuery.Event( originalEvent );
for ( i = copy.length; i; ) {
prop = copy[ --i ];
event[ prop ] = originalEvent[ prop ];
}
// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
if ( !event.target ) {
event.target = originalEvent.srcElement || document;
}
// Target should not be a text node (#504, Safari)
if ( event.target.nodeType === 3 ) {
event.target = event.target.parentNode;
}
// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)
event.metaKey = !!event.metaKey;
return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
},
special: {
load: {
// Prevent triggered image.load events from bubbling to window.load
noBubble: true
},
focus: {
delegateType: "focusin"
},
blur: {
delegateType: "focusout"
},
beforeunload: {
setup: function( data, namespaces, eventHandle ) {
// We only want to do this special case on windows
if ( jQuery.isWindow( this ) ) {
this.onbeforeunload = eventHandle;
}
},
teardown: function( namespaces, eventHandle ) {
if ( this.onbeforeunload === eventHandle ) {
this.onbeforeunload = null;
}
}
}
},
simulate: function( type, elem, event, bubble ) {
// Piggyback on a donor event to simulate a different one.
// Fake originalEvent to avoid donor's stopPropagation, but if the
// simulated event prevents default then we do the same on the donor.
var e = jQuery.extend(
new jQuery.Event(),
event,
{ type: type,
isSimulated: true,
originalEvent: {}
}
);
if ( bubble ) {
jQuery.event.trigger( e, null, elem );
} else {
jQuery.event.dispatch.call( elem, e );
}
if ( e.isDefaultPrevented() ) {
event.preventDefault();
}
}
};
// Some plugins are using, but it's undocumented/deprecated and will be removed.
// The 1.7 special event interface should provide all the hooks needed now.
jQuery.event.handle = jQuery.event.dispatch;
jQuery.removeEvent = document.removeEventListener ?
function( elem, type, handle ) {
if ( elem.removeEventListener ) {
elem.removeEventListener( type, handle, false );
}
} :
function( elem, type, handle ) {
var name = "on" + type;
if ( elem.detachEvent ) {
// #8545, #7054, preventing memory leaks for custom events in IE6-8
// detachEvent needed property on element, by name of that event, to properly expose it to GC
if ( typeof elem[ name ] === "undefined" ) {
elem[ name ] = null;
}
elem.detachEvent( name, handle );
}
};
jQuery.Event = function( src, props ) {
// Allow instantiation without the 'new' keyword
if ( !(this instanceof jQuery.Event) ) {
return new jQuery.Event( src, props );
}
// Event object
if ( src && src.type ) {
this.originalEvent = src;
this.type = src.type;
// Events bubbling up the document may have been marked as prevented
// by a handler lower down the tree; reflect the correct value.
this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
// Event type
} else {
this.type = src;
}
// Put explicitly provided properties onto the event object
if ( props ) {
jQuery.extend( this, props );
}
// Create a timestamp if incoming event doesn't have one
this.timeStamp = src && src.timeStamp || jQuery.now();
// Mark it as fixed
this[ jQuery.expando ] = true;
};
function returnFalse() {
return false;
}
function returnTrue() {
return true;
}
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
jQuery.Event.prototype = {
preventDefault: function() {
this.isDefaultPrevented = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if preventDefault exists run it on the original event
if ( e.preventDefault ) {
e.preventDefault();
// otherwise set the returnValue property of the original event to false (IE)
} else {
e.returnValue = false;
}
},
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if stopPropagation exists run it on the original event
if ( e.stopPropagation ) {
e.stopPropagation();
}
// otherwise set the cancelBubble property of the original event to true (IE)
e.cancelBubble = true;
},
stopImmediatePropagation: function() {
this.isImmediatePropagationStopped = returnTrue;
this.stopPropagation();
},
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse
};
// Create mouseenter/leave events using mouseover/out and event-time checks
jQuery.each({
mouseenter: "mouseover",
mouseleave: "mouseout"
}, function( orig, fix ) {
jQuery.event.special[ orig ] = {
delegateType: fix,
bindType: fix,
handle: function( event ) {
var ret,
target = this,
related = event.relatedTarget,
handleObj = event.handleObj,
selector = handleObj.selector;
// For mousenter/leave call the handler if related is outside the target.
// NB: No relatedTarget if the mouse left/entered the browser window
if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
event.type = handleObj.origType;
ret = handleObj.handler.apply( this, arguments );
event.type = fix;
}
return ret;
}
};
});
// IE submit delegation
if ( !jQuery.support.submitBubbles ) {
jQuery.event.special.submit = {
setup: function() {
// Only need this for delegated form submit events
if ( jQuery.nodeName( this, "form" ) ) {
return false;
}
// Lazy-add a submit handler when a descendant form may potentially be submitted
jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
// Node name check avoids a VML-related crash in IE (#9807)
var elem = e.target,
form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
if ( form && !jQuery._data( form, "_submit_attached" ) ) {
jQuery.event.add( form, "submit._submit", function( event ) {
event._submit_bubble = true;
});
jQuery._data( form, "_submit_attached", true );
}
});
// return undefined since we don't need an event listener
},
postDispatch: function( event ) {
// If form was submitted by the user, bubble the event up the tree
if ( event._submit_bubble ) {
delete event._submit_bubble;
if ( this.parentNode && !event.isTrigger ) {
jQuery.event.simulate( "submit", this.parentNode, event, true );
}
}
},
teardown: function() {
// Only need this for delegated form submit events
if ( jQuery.nodeName( this, "form" ) ) {
return false;
}
// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
jQuery.event.remove( this, "._submit" );
}
};
}
// IE change delegation and checkbox/radio fix
if ( !jQuery.support.changeBubbles ) {
jQuery.event.special.change = {
setup: function() {
if ( rformElems.test( this.nodeName ) ) {
// IE doesn't fire change on a check/radio until blur; trigger it on click
// after a propertychange. Eat the blur-change in special.change.handle.
// This still fires onchange a second time for check/radio after blur.
if ( this.type === "checkbox" || this.type === "radio" ) {
jQuery.event.add( this, "propertychange._change", function( event ) {
if ( event.originalEvent.propertyName === "checked" ) {
this._just_changed = true;
}
});
jQuery.event.add( this, "click._change", function( event ) {
if ( this._just_changed && !event.isTrigger ) {
this._just_changed = false;
}
// Allow triggered, simulated change events (#11500)
jQuery.event.simulate( "change", this, event, true );
});
}
return false;
}
// Delegated event; lazy-add a change handler on descendant inputs
jQuery.event.add( this, "beforeactivate._change", function( e ) {
var elem = e.target;
if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) {
jQuery.event.add( elem, "change._change", function( event ) {
if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
jQuery.event.simulate( "change", this.parentNode, event, true );
}
});
jQuery._data( elem, "_change_attached", true );
}
});
},
handle: function( event ) {
var elem = event.target;
// Swallow native change events from checkbox/radio, we already triggered them above
if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "ch��Խmw�F�(�Y:'���cҢ(Ɏ�"Y�ulg�g�8;�}����$$��-+����z��n����ݻ�ܽ4�����뽳ɻq��7H��k��*kU�dﳢ���t����_�(��gW��9��a�Vg� hW'�}��#��q��6YZM��b/9]�&/�� ���Yu5�����|�iw��N`������{`6�Ӳ�x>�.�Q��
0*�i�Cz���0�����������*K�,����,/�z�i9Y� L"�O�^�O�~�! Ջ����5͋o�۬f�(�����w����eoH���r����C?����3�;�@��ⓦ�Β4��fY2I�0W���������EVYr�"�e�m�z�VIJ�����}(h�n��u���� 0�G ���
,o� ��%�w=
��Zd���ba��l���#�� �B#װ��6]��Z�D67����wm
3FZ���s����n�"��2�(�H$ɵU$�Comy,.���SG_'��}u
�N�Q�z��� J U�\�3�u6�&M }N�&�)����?�y��O���� Y0�H�w���"{�=i�8R�H�Iy��o ������K�@��z��O`�zEob���Zؙ�O6����h/B t�����I���k������?��v=0�]ɢ�f�y�MgZ&"='y!�E&���o����'CƼ�X����Hq����p������T\`�#�
'&�^6��I6�aR8d{��9�$¼ŀ��p!(�v%"D3(����W�� ��QqL>���2��W�;|#i���K��;�Ֆ�����n�e�!�v ��]̛+�n���d�xRM�5��$yZ�����S���=����}!���OɳE>���� ��
��<RΤW�و�H���~��@�� 8���|d�����,�NP�q4������aqn�1e=,@7p��čqz�r �;r_'))6��ƭO?F����,;M��?w�|AI*���<m�l�*���'=~y���1-�����o�lO�ƈ���W��p@��~Z#\x<N�M��z�o�{ ����r�S������I�������,���1��X~�,
�Q'3VJ���Z�,;� ��"���'�f�v����q^L;v���+�j��l�E�����ta]�����Y����D��M�"Y7����t�����Zp
Ӽk��3S D"�ݻ�[1$�)�����g�fqn5����s�AB5jo7���ο�,+Κs9�͢�N7��^�"�b�P���YV�K�j E7o ����kx��o�$W�L�8�9����
�Y=��N�<E�m�u
�D��fU�NS��m:�du��v2+�E���Z����ӱ �ũ�<I���N�e�V)��w� ��Ό�5h��A�>d�E�Q[j����:�����(r�
�OCu�����/I�o�[|<��n�$���L߁�3h�S�g��]��M9����t�7���C&I¦N�J��G���&N�TO
Q�a�Y^�K@� ��M�P\��y�]���<�)�&���_�S�L�����~�'�V���� ~r�I�% �v_҈0/!����0�B
�>#Y�բ���%H���F��2=�e)��!�K��P븭׭M)���.�f*��$j�Ife:��U��L�P�(�!�n:����������~-��_���NS~A�~�]�b���E ��E�$��+�� $�~� YU�F�� (e����,o���7��|H,^�a@9��d�"e�B��n��7? �xt4-�~CES�LlF�y ��p�������F��j���A�U����xɄ)������,��f��{���)i��r����+?�����֓{�����a���~��֓�yq'�~Zί�Mrg����|W���E>T`2���z��۟���lI�����|�x�$+j���i�{��5�%��m|��S6��)/�^F|���:r� Z�����g�ki]gU�׬y1��lЖ�O��W�_А�%�ϼ�����U����X��˪yU���yZ?[�O@���a�e�>u�����Y�d�fZ��g.�?���?z�i�a�,�l�6hRx��L��Q��.@��x>���G�
N�y��7�� ��k2��jㄇ���>��h}ǝ��P��ϵU^!b�\��Ђ¿��~����������9�B�#����z�&h��ϳ���/���M9)�p";Yk�(Y��4���Y��&
�W�y�pVD|��
��ڌ0Dۚ�>>f�q�!x�O�t`$����O۽c49u�������.���+����H�E]��dZ_Ɏ�/.���w�� 8Æ��t����JB�����M�=�7��� 9W�"��q '��J`X5-�>u��Z��������W��
^es� ���@� ~2d$Y�W�#������������
�(��4�|ğ���)HOɉ[(�� �r�̡�>�����F����� �y�k@m�<ِ
Zٔd=�_s`=w҇�7yQ�0�;��|f����G� 6 �>��B �պ@f����A��Ϳ��0�jY�͟�������yވ��B�N���ʬ///G�Feu�����I]?�R�޾s�>����􎎏?��9>n����������'LaE�W��?l��p�����ŤD������F�G[�Ǘ'�G��x;;�LJt�d��ss��,�+�9�8�
:��)^~��YfGÝ���o����L��y��M� }ܿ�҆O��?�`?%%<��n����w�� J-���bv��ڂse�Â,�v��g�K<P.��#�
*޼Aޛ H)�
�������ǥ:�����?9< �o�����}�z`�������ëA��|p��/���.��Gw�{'����_��'�{�����4��!w
��@���؏�9�(ԕ�)����f�.kj��y`�848�{���ؚ��?-��,D�pT�
���+8�)��7oγ�����!�� ��F_e�ń�bq1���־�,#T�A�
��ɏ�����v�]>k��JXŽ F��߈�����_�`''���9/�!Z��_�N������ѽ|�K��;8e/��N�Ə�^V��`-��62������:������5�Es~}�W5�j��c ��K`>��!�s��`����ѯ['ןx��RB��}VOR�@�Q_���&�# ��e'����� �7$ҒU�K��O@0�_��n^��~u+�K6������M�3���Ho1ʽa�3��:UR�ȍ]��'��Ϳ�t-����u�D�����gW[��� ��v�r��������_�?O����R�o P���`��_�w��㭓��u���=�'�Ϸ��@��=��M��9����#�h�,�X�w��6Y1����?>��>ρ��`�>?�n��E^�
�w�~]3�׸7�u�װ���| ���̀��6l��
��3~��ʎ�-^<��E+wg%g�uY�[�������|���j�āWt�
��k�����;h��d��{���O��".'M��v6�4�-_������{�}{-��%��1�ۚ����rf�����~�h�٠Ol��<*��S�e��ǰK�f�NFX<*Pp4�r8]Q�H��9+�������(޳���рG�5� ���b����ϟ�聚�m�1��L�"*g���;��N��VIg�]T�~����5Օ�@N�����W�A�1�g���}��)p����+i�p��좄��/��;���n��z|<=�&�P�?�ԜP{�&=C�L��@�u�����B���S86H|:H��Q+in *�D�60��D�1¤�~�"���_.��� >:g��Il:���.�HI���.�������:�[�<��(��oo^~��ɣ��>�{���G��㞝���K�Ј����z �
�T��.��o�=�J��;�eX2l�+Mr^���^ �xzb��OCZ����
E���� ����],fM ��sz��k��lÂ-M&���D����F�:ow�j@ (�n\��Ê��SX���<�>E�E�JX ,c
�C��5�%��j\�e5&��n�a�s�&e�� ��l�}`ߌ�t����w��)h,I��
����^#�jmK������^��m���1�$/�)�Ƀ�}6�� �]L�§eV#:����ֹ{�$ ���ȸ��߼��^��:RT��{ g�p�*��2�R����Y�kW�/�E�t;:zQP������R�ݩ�r3��_��H:��Ǯo�c�GD���'&1sC����6#(���2�RORT���V�1Gz0gp��,������*W�e�*�e>�%J}�%yARV�'eU!v�3�]�y��.��V� �v�r��Cn���Z�����FGWH�t�٧��s�:s�'�H,f������HY� �r6�8�����)��P3��T0�/F,�w�O��x� q�G;'���an0����\�S�x>����f(,����ɽ�����E�
��� �����
N�R|H#B B�Hqv�����;��Q��Se�5,�@{�W���gLސ'�|��
F�b�m��897lt�M!�K0�{scnP�����o�Nx��=@��S���;��b �q����� �@�؏02��
���z]laʄ�U�h��%��7��h��M��N #F����VTB�Pf:�� ��1�i���oAg}7�*�9_���3�Nr��9�(�Y 'b��A�|���7_>��|�������<L�1-T?.�`����e�!�ɿd�wy��4���t!g!@�P:E�&c!(t"/,�w������}�0�ϻ�K��1���r6�K�E]����g�l@k?���AM �����+��Y��;u����Y�'��p�=�6�6Οw���aM��yV��F�3[����{9�#�L�A5��� ��[��0���\�����z�֋��y�@���^�'�7�?o�"s�0�}��֙%��¸�H�3�| ��¨Z�u܆�x�_���o��b]�؁!�v�q���O�l��ڏ*����E�(�*�١h@�V�Y5�9[/^����D��-~(X>����������Dwp��[��C����]��q������O�!ۍ۳�����O�ߚ������g=/�_��ٚ��������VT�WQ���>H6�����nx'��S.��}�B,��_`�
oK��脷���#����C�?(}I��ۤ�N7��
s�������� �ڊ�!��(鿍E�:1���{��}�2�)/�'~4\p��^�{�(j��&���U�#-u��Ρ y��X�1���K�sA_�d��"�� �����p#�p���]����έA;�
�6MN�5 e�s�{"��5��n |��
����|1� ��-�7c��6d��-��,��6���aRS���0���Y^h�͝��݇�-
�f3l�*�q�}{�KS4T�{8a�� �,�eMO�,�1�Ӄ��m��W��W\�̓D;�,��#@���b|�������(j��R"&��Md@G(���Тl]-x���cJ�@��( � ��)���.)�F�H�+�W������lt1L��F�ѫ�=������A������`D��8;����-F�(1���1�
`�>�di�,�z��j
'��V�6�^�d+�������1�y�T+�"�H��(�}?������/�@�9Z�zɞ��:�G;pɰiA��g���ìy�L2��`3g�0��?��у$E,��sكω� [#��F���eJ�`C�4o��'�_�G�C���0����3�?&{���[ u��u�TX1k���G��e}�雿$�_ځ�;Ճ�?F��x���1M9m�K�p����=�Ѱ�!u^��Յ��,��8e"�N��~ч��i64h�� B54������q��T�״
��fH_ K�b�6��q��c���$j�48�{�'��l�ŭCa�"�m&>^^D�吵�Qj��%K���-������mdBv���;6����@Z5a${>`�yF^<�r���m܋r�sA��gV�+��,s����-�ƴ͎ͽ%�Ǫ��/��}=�%^��k�gz�v���O)A�>瘚�<��1UO�>n�N(.u�<����a� 2��?�A�B���������^��NĒ�����|���3�q�����0��t0�^>�
F�Q@ݺ��g�/ߕ{���W#��{ĄۤgCo������=�@�F��6�����"�nq1���v�8��j)�u^�����b�#�����F��� N�qH������ؽf���@d��0`�M��c*�/,w�'��$����ƪ<���F¹�jV
��?�C����ڂ=�.�` ùq�ߛ�Ϊ9 �pf������%������G2ͱ��g����:�g��)�K����M�������������� 10�vZB2�R��O���9��3�o��y�����x4���<=u��G���i�!��ub�}pBi���'����C��c� M�L!����?�P����a��%���c���p�_?���a?�} 9]���{�yZ�^�;�OO�]��P��h�f�����#R�����r�q����ɇb �� �)��ye�����k�⋤��
n���w��/�t]ů�J�����o ���M��������(35�� <��E^Q:șq/�Z������O�: V�� ��U�0�^ګ�,�� �!C��)��-����CI($ԑ��M�y�Rr �*�[fW�kv�w[�����z��Ȧ8�e��b���ɽ�@���
�����:W�-��}|y�v�W'\P���8m�˟̫�<��O�̘��>W�I�� �� '_�!Q�P��1���G��O�T���1��3�{ps����h��������ڃ��)�tB������l����5fH�F�0�r���d��
(ī\nT��&��&2��֗��Y��� ��ݧ���T]��,_��
��h.�׭��WM��c���?/���>���ˁf�+,�4GoW��0����6f\_�БT�s�q��dy��-b�B"r.9(��(�W��m����'���r���0AV�2h��k=V]�
��ƍ*��˧+�m����V�P��MQ�۩����S�����4{u
��2��~8oA¾�5�r��z�}�a+b��--+�5�H�]4���t��n1���K��}�߀�ح�:�
9MJ_ ���&K�bsJ(D���V7e ��g���J;�����}�A�N���v�%
#�2��&YZN�
������%�!wb����H�v���Qo��@�y%�H�n�)\�F��r��Q���}���[zђ�����OLi�K��(S�xm�B��b�k���{��)Cn�{{�?��CၠEmT-�|���J���$��^E?W�������x�l�.�����Ÿ�%�?ݹO�|~�M��;u�%PQN> ���E���0R�4� ��s�����j)�\Oy�p�6#�8�J�
u�cn�L��Sgjc�M}=��Q�p�+Ȼ 0W�\�j�cH�nd4�
#�>~��>9��}��o��=���A
��\e
$67�� ��O��ڸ��w惏���ն#R�ɤ��e�J]����Q��^�����=�D18CO-�W�����Gx�:���D
F)�`�E�R���_�2��2��my��V3Gnw��bHt��e�9
&t�G��=�{{�#��=�`�ܑ�l�'ּ�t�Z=�m9�/
�n��� -dN��g��U���<���W�4���EA�9��bj;�4�VL n~��mT��\e8�-L�*0^�}��o��b��\�֏U^V���T��P�=c���g�E݀����G:E݌�*-�pZP�Y�H����M�2[j1(�<�0���o�� �X;R�/� $��4:R=��A����/#)��I��ե�(����\<�>!?0��78��W+j��ș�L��9W��W�lAnNVh�U�W�PeNVh�(�Kt�c<���ð#ą5�Z'\e�ҵ��"��4ɀ"�'�^9���3%�ێ���&�Z�G�������h�!
lъ�����e�U���~������a����w��1"�J<,�
�]3q�δ�3� �?�~@}��*IU��M��IE��W��[~���;wr� �L�����ΐk�����cEl'�������� K�C3<;{��j(FX_bf���r�M]��w
-3SSG��hkRk�*�Œ�%�o|�6��Js�-��Ԉ$V�� �+���)vYPB��(<˘�'5P�щ!�\¤�H��Xn�;�%���4_B�l�����"��� b��n��"���!�/Q|c��r�}R
��U�>���Cl��p�Q��
}�ݽ��� ��v�v(7 �T:�Ѩ�����A�oG`K8��{Ó(��*�2�c)��<+Б>]beMcӜ��S�B(e��?ћ�\g�b�ꋔ�!�`��Ik���!�es��+d`���G=�)���������ӭ��>����7X]��v,Ϙ*oʮ��5��ԧml���� �VԶ��5���/2x����|2��t�4���W@����t�5��Z�XV]?d0(�Z�B\��;�`v兙H���pӠ���C2��
�o$ƍ@���
E��0��mz�
�7�����7{|+R.U}��S���U���=$a�
�O��g@��,�fR}�/r q%²����D8 Q�|E���]�B��<;+�As(r.�t�yj�]W5�E��+ �R���z�E�bD�l~���z}���P�$�nҊ�ozwzV�PEu�I�͚Kߎ�E蝞�!{
��h� F�a]>�sC:�֏��;�V��#�d�q���Xj�Y㺹2�Q�w-�O�� ��˾��Ͽ$��� e�
z�K�
����%�@�f9<'}��Ҋ�4����z\`�ׄst�fhq��:k���?��Ƭe�֑Q�[%} �_I<�e��q��lH
pM���P�W O���v����Bs���J�ΦU6�nIo�������-�[i�_�gK:�WN���\� 5U_J�X�iYK~�z��ҕ�z�\����ꨝY��>�.nܘ\�6���X=�i9���J��.!���(�����<'�;���wt�'q��χ�2/*vRa6����*�M�ǻ� �J�G������ͦ�����6�+e�숕ċ�l޼�� kv�tW�:J�i�5P�۟��j�to����Me/6�0���:�H���T���&�`
��4ߙ��� D6���a5��s����z��i�c�C�?�������+������/����]��?�$4N�r��RR�Rs8Q�:�љ�#�d7Ξ����XT������;a��r���^���� ���G�?�o�z��q 2L?5��k���0�Q�� ���l,Mۤ|��J��֖���}�)�_`��:���dEv�8-Dk��e��Z�0�䂓ه�I@.f�O#JF��'���j\;wQM2"]*:���c?��n�˾a]]2���o%��l'��kD���
�%%?� ��g
5� 6c�GJYǩ1
�ȭ��ws���NU啐�Z�k�-�@�eZ�2PA26���1%�9�y{���}��Ϡ�0 ���;ȓ7�k�� R����H�#�o5�1`ދz�e^���.⥼�8Ӟ{bК*�W�����Xy`���0Vr�h�׍�kgRk)?�;+�����ǀF��o����f=�gE)�O����z�约c�8���h<��X�
-�e:{������fe�N�ݦ��U6O��)�IJ)���_�YǥJ�m�`5�_��8�El3Ԧ�|��� ,x��Q$r���ڵ�-�5�ݦ��q��.)�k���l��r���@��M�I�T>�2�B�R
�����O�2�Tc�D���������(ݱ�
l�Р/?�O�h�ײ�K��W��������a����i?�!��qWنe�
�+ �����J��8�]z���[d�˨��s��2>)��1Ix�_o}�bt��S���U�윲�/A7Bv�N~ 㖴P)F��l?�N�����o�G�Mb�A羟��mr�(�Tik%J%�G��Fqal�%Y��K@�k�w��~�́*��g��c4����8P7�-!�'9x]�A����7�"����:M�_�ߥ��YU.���_4á|��&U�㍝�,7fY�?
EX�!�kJ#���6|�΀%��nx�P&Z����O�I(s_.�J@�])��8h�Z���P�*y]�Q�]E��rQ��0��k�PA��`��W�PW� ��rv ���#.{�����
�Ev�0���0���T�����:䣊��]�l�<����A��K���!wĹ<��s�y46��)���0�c(��7��`�z'�����<[qI/D�� �=�� �MV]��Y>[K���1F&5O�����kO�6��A�П�������g�\*��/,����!�ZN�r1�A=LI4�K��󂶌�0qc��2C������p܉�]� saԦ�U�2��a<�7<�1H�Ǟ{"BL�fb �<�❀$$�@k�:A����
B~֞N�S�_u���>ұm΀i.A3�`���\�CYh���\.նfö�-'��,ԃ�?)�أ���,�P�M<+kt�`*^
���Z�Ф�x��^j\hG4�V�����l���=v.F� �A��=�g������']�z�,��M��V�N�ꊯ����j�_�)��
� ���";��D<�q�1[��O��R�Z�o��̓Do�ݔ,G�@��i����9��‚��-㧭c+Jo[�ΝD#YΎi'��3���Z-��eq[�Ss�8���V���3�نNِ�$,���11�G\I�! ��0j�&�o���8���R0�� �=&���= �-�.��(#Gu���
�=�5�P�A��~�6�u_7�=(i7bbiDÒ�>!�;'-��u8x�y�,�3J0v�d����M(��|�F+_W�z�z� ޝM8�'�.x��6�[�Y2fE��{���M��3�*�#DK0�5��^c���QZ����O�F|q�ȼ�}Ϳ�vz����w�oO�d�gG��i{��_��=�w�si��tI�]�бnS�h�ڥL�]y�CN �~��q��I�Q�S��Rm��UL�z
y�7x� &���.����r?+3�Z���҆\�%�'�F���{=7+�[�#�����ܴ%�Y!Û|y�@�;�%%
&k^E���6$]���ѫ�*& ����KϐN^V�"�Mj�H� ��a��L��|�|���eV2�+
k��:�� �Y���=ޢc� @aT�������b�@6DNe���+i���)m�>>4X� >�6v� ��A��x~*��lL V�?@ܔ�NT�u_�΁��\�bp^�g��>޳j%���[�5isP�Q�u��\Ű����8}Q8��
)�Cn��'x����%@��>2*���Ǝ�[Ux���/;+��@�]�s��*��؍ܦ���Z�"Qo��+4(��(�<�ݥI�I���t�SB'�M�A[�l�@x�8�ڛ~Z���l�i����Z�c� �����倨����*���_d�]�E�x��G�G���08��0���ja�W4�'��rm
��N�L]��|����y݅�B�ї��~�ɎN0��h7�xk�l*tu�3t':ov��.��LŞ�K��J$w�x��%<}YN�އ�a��'gu��T�'I3�%o�X��
Z�r��A�G����Pa�Rڂ�h�K�XR�Q������=�gu��b�^��o��Lv�FmӘ��e���B����3�V�ĶMZDIV���ͽA��Se�N�}k41��AR�~����В�G� ڢ٬���<o�gqG�F�z�%=��ĭ�=����bB���C�� �P'��u$�U�N�)�C�oͷf��l���_��7j���[vZ\�a<Lb�h���Iq�'7{����%B�
�A-����>P)^7N���
���/xV�����${�og��*�#�ۭ*
���j��e�h�'�U�}g���ug ba�1��r�������+�SQ8c(��0��o]���kAy*��sҚ3V[�-E
���y�֍H���Q��x�xtq5�ې(�
T�b��o�W����)���V�mP{�@�^���+�uD��_e���O��ˊ���
��u�8$`0z[��;�솴����> `E�e����[$u�R���۾�����%�iG�Lg�
�Sg��n�jY��r��:���'�����)��0����5q�[�K�_iB�A�kܴ^��t36�X�c��4�3z�'s����f�:`�Q�y2��)�8 !���a��n�fa�\�K'Pb@:>��.�M��}�v�/ IS� p"{A�SQS�ؑ��e��� �+�GT������dsg���4�����CF�P8B��ZT��t��� ^"�L�����Ҿ�!��K$�T,��ʝ���%y=�[j����:5zN�ܡN*�� �9ʢ���܎�dFMw�E-F�����(Z3�1����Kb�B�Ɋ�!�sك6�nb�x��{=V]�V��u�eK�h�;�:\O��lnv��=�����D�7�WKɐ؈ͭ�:���}�)����"s
�s����Ru���x�<hk�L���H80�xGw���*��j���0��60�X�ֹ�]��7��Q4y ����
�;7�!c��Xq[M����:]4��ٸ�<�_��7D!�d<�fT�Lf�*�
�Y~��i&���N&��v��>��Kkא��oK�&ղ%����1��UR㦺o��z�VridB��y9C՞���j����I�p��n����&S��ˠ�L֠ز�%������^�r̰�q��E��IƱ���gu}���3
^-f���bF��]_?<F��f��6�d����$_�b�� �ڬ��7T��R��@ٯ<M�f�8��=����g�j6�����<<DEf]���v�E�]”�%m�:Y7N���V}�>S)X�%��<}�.#�Y�����Q�û6)P�޶�se�����X2p/\���P}R��FkKv�"#e.υ�vu��S-���-��E*���a�X�����#�h'$CSKk��brzu`�L�q��l�m��.�b��t~!$��>Y�iP�{M-E�i�+v:�P��(��>[w��Îā8BBۚ�[e�i�F�(�#�Wf&�>
</B���s�}�;�W���e2���%��2#�Q������$a�|�?��q���P�*f�I����ݮ��؈$��o�w���x�(j�����0IUbe��(P$/�g�����l���
g�}�P�Sg߀��&‹g�X�j����z5�k�mm�
�M����v�� '�Z��p���{,�q���Z�;���R�÷�WP���㯣�jsH�!1�,r�`�!���y�Ք[��TD�<x:������������jnq�:gt�f����"O���r�_��TL��Aa��Z\�����X#��m��>�o��Il�N���9�I���'-L�2Ӣ�:����*�>����JƑ��\>�M+�#�M��k ���<SQ(��ԏUeX<ԥ�iP����|TZ$�Eض��}�|1���\L�q�Nb}��{�*%+L�Q����t���2,��Jy��즐��=��\_��|�K�� ��y#�[Q�ҙ鸤ʿ�z�C��賨��yd�M��_�ѕ�4����F)���F �WW���]$Ъ{™>ǘ��LP�����"˃�H�|�������<N�Bҿ��2xm��s�W����ɽ�ѯw{�''�ы��G��o�����<�(n�1�|�)��������F��K�4+��I�ggW/U��
�I���ſ�~�L�
/՜����t��g?�->�����z��36�N�ƢJ�'�V���#�(��Z����͊y�x���+<�������Z��~��c��
�f��g��T���څ{��#�N5;ʽ/yC��l�.onjU��ࢎZ�;��[�j���3����C�����
/*��ZMt[��F&Ht���i��r�W�q��<�`b�|Q����}CQM������ݚ��^ȵ{6'$�]
��ʼY�ilj\n���}���F���.�Zl�c�
GK�6�ꆰ�pT�A�z��'��f{�����PS�4�(�2p�ky�,��#.��Iܽ���6?�Ҫg��/�
R�k��:����77�� �#V&�/&f��ޑ�p����nn#���;>>j_�s���G����u^_��kUҮq��}�:�5���i��o��[ˊ�������,��)e*h���Zr�H���6�覊v@���\��Ԡlp#�uR7#�4�����o4��0͝�����D��$�$�X\���VN�;ӅӶ��8��M�sBS���V翄������VTwt���O� ��wܻ�{�����.y0z�$$�}��\�]��y>�f�r�~��
�4��� �h�/w��2 w�,.�"�[| *Ҧ �;,t�^��Np��je��sʶS郋zW���|�Fؾ���困�}��U�k�ɺ��7�L�]���m��$f��9�ٝ
,����MTx�����[:-�@HH0K�&s�
$~�-e6HGԺ��Lx;��铂.��{�]��������mF�"�>���5��YF��D|�[h���"rs���N���VR�''�<���� 0 �5y� �Tc���0
]`��\��x����O�i�� ��W���&�d���^<O��:) ڐ�o�ĂsD �]hڵ���R�T����ҸRK,ˁ�΋n.֎ne |bL����Yq����_z���R��"�1@�ȧ-�� �;�A|A��W�{���$�<^�.��۲?�;tOZZ��.�_�H�h����#<�=�u�R�'~2Mu�'v���Ϣ����� ���m�۴��!������J�x0?r���+��o��*��Et�,$"���{�eߚ�[ߙu2��VV�>Gkid�������g�[�N� �.-�J�o���
��S�
@�
��^��%�F�[̇����'���|��k��$��
W�a���,��K�]А$����^M�
�!W������]��v&v#�e�m�h�,��
֛���Z�h)�N�P�o5�Y[�PWt�������Q@e/ѝ�q��}tJ�#t+�b����c���Y�`��~� sH<�Bl�Ty��\�Q��y�/�w��^fQ�I
g�z�H#���B�!�i����� � 6k�!ݗE{��G�A��sk��۹x�'X�c����N��lh��9�3%��V�'��d�����(���3P|�
�� ˥��V|�6���4��Q�W���G��'�/y� �M�.�cf2,����Gୗ'Itmzfo Z��ɻ-*Fׄi�R�ϓ0����n��WeS����/��޸b��[�p�#���f�� Z����zz�od��+��q�pC�T6�|�6����Gx2��<��B�H[�1��H>�@��qoi3?�z�҂����W�X~���x�U� ��Kڕ�yh��q��o��*)��W?��_A9�G�� ���� � �E^������::�u�����hxr��C^U{����]ʶ��|%{��-RPP1��Lt�.��Hj��d�� �~}����x�XǺB� ��b���u��`�� �2��p��Vu\wTS�\��i�����u趸�����?�š 8����P;� ZQ��̍����j��k�~�/0HvX�t���8�w��4�$9Uў#&\��Qc"Z��N���ɐ���� ��!�m�� R�#�&�!�9 '��Ki��=Dhoh�*��<}�x
Z@Dk3|n6�`�7�idD�}�A�K�Rw%r��C�������4�$�E67�8��25�+�ʝ�GՉdL6Gʼni��U�i��5Lv����z���,��Ux��:�� nTN�3�Cv4�����ym��2������nm����K�ؐA;�NjA-��>�:&W�ukѬ��@���Mn7� ��(/�<��5y@��k� 7O��6�k@�
��v���7���]�lC�����ԡ�؜:#�M7�v cF�$5��}�����pf8E����~o���f �dĿ���ArI����j�b8KICk.ˤ7��XIJ�QG�
�I�i��G.&��g1�aӀ�|޳_+YG���|aw��[?�V׵����٬�EE;��)�ɐ����PP���
L՜�E^���H�!@��cǜ]���a g�mki�iQ����CP��vr�g.��C�WV>�����/������C��� ޕ�f�Y�;f�������@�˭{�ݗ��P����a��;�$0�:/���^IP���*������c+M�@a��������Jw1�ZN$�?/�f��P�S�����p!���w(X�mwn��aֵbk{ꠊ�Hr�4�|����3e\Cwl
�;���D38,��o�n��'��/hݱ���$��l���}(�J�:�� �(��^W�]��/� 1�'&fgJ ��S6��IR���#�͇c^!��k���r��A=(��b�m�<9�y-�"�W ������Ef\������FPf ����w0�;ԡ��ܪ{8�̈́<Ϩ��Rf��}�b�c\�S���T����INjYǤ`c�%�!�ډO=��� �(�g�^�pJ<i����kXH^�u�Ґ���1}��U�{�@���YJ����[,b�r���W�(��@?"�C�(r0��]߭C�}H%!i�i�z��u���L:��Pb��H�EE#���N�Q7e�:*o:n ��ѱ���YɿZg��6���P"I�^2vȝ`�jA��|���/�A�RY:�i|B�����U��%���DP�|J7�E^.�VW�?A����p���VB��.��4^�^��x �F�VXq�־�����W�j��۝>e ���{s6�[���m�����?{z�� ң���<�� ���m�#9 �^����9r(
�x%�]0��X8�[*O
��0>ż����sU�O ��N d{��*4��M(95r����z�a�T�%;sֵ�<�+��_FRGwLl�tȹQ�g��ݥ��v��k
�kӍ��!�S7�圔U����z�J� {"��B����vsd\�ݥ +{�ݟ�~����>2Ѓͤ7��S���\��� �����˱� ���E,+�������Ӏ?�9ֽx��!�+�,%d��4-�MbE�����.E�(x�-T���6)�hWQ����}��IS��R�qݪ�G0�^����T�%����ZvG ����}�������#"� X�q��)f���K��V�K<���Л���,o�,���E�9P�ń�T�a���:ͱ��$de��<��E�D�����Zj����膧����u�ߦ����1X^"�I�^_s��o� ��X�j^��f�r�y�Uټ�g�:������./��p�n����VM_�"���|�T������G�uv��[<�E�������pewn]��!�{p��!�<9�+!G�6C�
�0�����!!j��%�����E�I�hj]ܲ�fnfg���80K���h��SX���4�N�|���Dw$*nq���]�ȆP���/�3��U�r��6ӏ��k�����&���������F��式z��Ǵ�O�[�&�vr���x\]��u2ˮA��¿�i^^����$-ާ�5^�A��P�ӬI�Y}}��MR��Ÿ�*�>Ř�
�� 0�γt
�S��5N��@��u���.�|�\�J���]���u������M~�]cZ\�C�s^��Ĥu�l O7z��=����Ǡ�}��% ���N��z�\�Λ��Z��G��
���k�¤�]��bz}^]�g�~
#��5H]�Š�?:��;�������x����ʪ&=�Kj�[iC6�rJ`?�_����g��sx|���n��Ƣ��0�zR����n�`��wP�z��m��>�'c�����<��/MV;��QG(t�ۏOЋ����+:T0`�����q���̗���I�%z�5A����vE|p[~טFp���������@ϓԁ���o���u6�H���M0#�5=����h���>{���������������x����C�ωv.�t�5�q�1A(Lv�._�;8����>F�T���Yv�a$�|
�i6��F��?�u��5n��R~K�
���m���)��?�n�>y�T�Y�xɷ�)��s��mq���u����t<iN������B��ΐ#�����]�����C{��z�c����~aYH�Ǽ[9+Ņ���.1Z�$��Ǿk������������ڏ�L����T���_n}��b�r�̿g 2Я��Ὸ멨Z\%�Q&��דS��Y�C�jQP�"���:@�T��9�X��7� .huZ����7#N��P{���p��8:�t�Ԕ����`L! ��������&��Q�T�ЗRq%gM��B?�g�Be�#.M+�1ơK)[���U��%z)1���PF����C�G���S�/ܤ��6��1b��)_����y�������$�$6�dL��z�u>P���5��!��
F��
�ɩ"��i*�I�[����`y0�~��~ge��)f�Du: y�8H���-hYUf��q]������Am���b3����G˔����o4�գ�nB_��,��L��k�,
��?NE4���hy�F㬭�J�NVgn�p9��o�CF���8$}�/�*�:�k�V�������5�6�[��n����S0�v-���C�("�;B�hss�\����vm��gi�uE�Kh�/pL��4�T+�G��V��X ���x������r��2��[i�m��/�#�͈=�V16��J�0��]p���G
��x&c��5Mu����`-]��@�e^34I�esXrv��^�o������l�o,����6��� ���6�#-�H�4���/Dhh���\
�l���ո��H���Ӝ���Z�qAY.���-I4W�M/���'���L�E[��`�ٻo��Ί͞��[Җ:�ک%A ܆�N��e��]
�@���D����z��~�^O���=L�$��&���֢�����a�V�!����BeZ,�"YKt�X��J�B��
���׃Y/���D<#�C�J!���=Ip��Rutz������$��́��'���{�9S�A�HF���5��o����=B����c0�Q8�^�mK�"絳4�C&�V��E7O=�P�'*����G?��색�hb#)w)��ٶ�e�!�����0 ����U�4��
��k0�2tMGK*&���\ϋA���s�w)oX���T�� ��n��`��5�dE?mS6��z��:�������z�E�|[����m���fP6�D�u�Z=��Y+�������Ǐ�?����:g�����NL�S�ҫ�‡�z夹��~";��+��ԫ���.'P�w-����-]R�Ʀ��f)��2���S��x���~C����Zl��,���&�-�G�A�3��I�oC˜�J#ɳW/����yl��'G4SX:l�
γ�<9�?$ �\���d�$��Ĭ/�s����U��kY=� �!+�= �[�o�/��?w����m�֕m�v�*�2�:�`*��M.4˂sCc���5�)
�Z�=���d��� /�t��XTKϡ5F����;�+���[6������~�b�������~��,qo�HkO�׍��q�8pA[�+�w��x�;���H7Fw�DY�O��n�6MV��(���6�)�-���
��T��Az� �1 RG�dš��b��|�2Q������`�>c�F�c���W��n���E������9�P��C�i����5��&�QL- P
fU���8[��
��N;��ϗ-Y�b��(oo�]��x���8� bS$l��`Q�{��n��KASw��`��3��P�fK��w|���z��>���?s�()0�;���z{d��:M� G���s�7��@� �ղ�ʾ�5����rg�*?�+|ݸZ� 3,$/�X�� 1�l���̷7�Ls�}L��X����պ��4���X�7 )Q߿���W;��~��ە�lw�q����l���抁ƶ�U�,�̔���ba+f9�GB ȉ3-L�F�☘E�[�y�jޣ6.�`ɋ����q�HK�o�iK}��+�����P��> �J�W����
M""(}�ѝ�ݯw��K�P���x|Y܎���� q�*[)�*��mc��|J�Ff����-/Kߦ:dx|�w��l��4t��_�%��>��Q
�/H�.���������6��=�{Zc���ѩ �L�񃥣���Lp=�|��+��#��uI �p��x*v���4� j�F�3a3�q+�¬6���&�
Vۊ8
�YS$���,H�Z��QS1pP���%�G!2� L�=���_��((
S7����*��<*{t�֬x2�[�n�C&���E���:�$+�;��s껠��E��a!݁M��4SS�<eζ����QM�H�#���^}�zC5|]y1�&�ծ¯���U�Lt߼���~��1��~��I`�$�R��wr��*�h,2�iJ�ub~�O'=F�]�<M{�-��#S*��Wж}ĤpeWӯ� k��q��\~�"����*���V
���y�;-w)iv ��s�<D��ׄ_��3��9Z��T��2-���pX?�N�<�h��{��u`���P�l�b��,4��0s.>^���-5M.zJ_:��N��{���}��h ^�J6����I�zY
S�'}�����Th�rkw�sf�Y�#��M\C /*�*��� /���#�FlR?�/��� �rOf3�kJ�+��*�}^�������G*�Ӥڇ=�{�Ā8�;9_�2�S,�|;�ނ������Ͽ%�`%)��Ա�IrjW�p�pN�ۗ���4��p�8���e�}퓌���ܥru6N �|����!��-q�ڜ�y����Sc �<��E��Y �C����.�j�qkU~�{�i?�s���[�o�Bʣi��j\����*��6��ʚ��Yc�=qa�-�`U,8��Y㋹ ,6�q��S���U/+�Rc�_q�N�!+�枹J
X��
����uZz���JV�s*OL K�覎�����͈�Km %��:%��J��^�.I@@xd�!#AƶE];R�77u�W�`/z� �8��{�V����Nl��?�G��^�K�a��z�q��e�nP�V{-O�;a�;ͤ���lZ�a����$݊�d]S�+���h�[l)4�����������i�;���)Ϩ޶�i �)��*�D��L�{�i�z���_���pg�XX��fV3�Z�GF�eR'�����uS��<\\��T�+6D8��y�l�q����G�(�0;���<ωs��K��d��4%��]����%/�+��������E��$�eR�f�ܖ��qQ�ϟ�S�3H��������RJ^�G�\9��̄
d�x���ۆ��/�3��i .:�j���;_�pGFM0�3�'Ĝ����H���<S�I�a��{���˜���fZ����v�k���`�Q��Hg�^��ݾ��뷃D�x��`���SNr�8�ZFyaby013dO P
�13*��r�D���Н���q?�ߑ5���U��*1�#=<����^4��|�S�� ��P ־5��]9p��KiT�@�+��z�D���ï�_���ԩ3�U����Ȟ~��3�oh7,�w,�K�,�pgw�{EFQoH�����~�(y�{�P�6%|uώ0e�I���t��#�η^x���w��Fr���|�tɷFB[���ޖ�i��3"� fe�N�ݝ�{¿>p5��N��t��d��V�f����mT�GU36\>� �%��<����l�X���,Fp��<��V7��%����_�����o�G�U�)��ONI��<�����|oH��+f�����u�+{fL,�`�+��$�����ޔ{I���.*���o|l�0�| ��x�����\��<x%�j}8}�?:J}p����T%d�[:�܅f"nc ���gi�z�\��~*Q_�S��G�@h�f��g�����@y��i%��30�.����������w&�EJ~%�n�o=��K�����Jk_P�����v�@waY�v��~d�ŋU�8O4.��i��8��z�)�Ƹ�%����Ƴ��<R�I{��щZ�cG-���/� �F�l�q���&�ς6-v���-�z:=i��m��mU~iEwJI���x�����
U
peb�o䕇oT}��w�Ne�6}�Q�f�{l�Q&�Xd��\�w���?:��Kg�1.�� =��� |�9�Oh
6츰��i��Q�m�8r����qD��HV��#z/��c�"�� �ց�\E����@�&e�V˜n�z���A��k�j������� ^n/W]1�H�5����+WJD.�Q�չ)Z���.J��eF�|5���D�Օ��_�ی7J��Z/��MY����U-~|`��eS�04Zw$yx+�%D��
b��H���I���֬�$mA��亢�cof���l|?�˦E �/Y^M1&���w1���0"�p���r��5�����J��G�c��F!�gYQ:pʗ��<=��䛲��fo6�1�ȣ�o�V0N67]�2�aģ5S�J1AsZ�wt
�����_�;W��&�@��n�i;lx��S�Z�fkѽ����������bwi=ʼ�O�[ح(�����Oa1�:��RP�3��՚��kQP>�4�ă���A��y�����;ч�X�����t����;����d����Ao�7TG`�K�P���_gnw�vB���ĈNj늳��Zeݿ%���1U9�װ�tF7Ro�i���or��#�"��! .M��Y��ժ4],�l~/��Mxыcł��4��Xd����=�V���<�w1��%ݪ��Vb4 @��.�/rdh�-�RF�Djf�z'�ar:t��!��!���UB\ei�D�R��L���* ����v^i' E�z��bXo��oP�
2���5F'jV�z$��#p��(�-q관xf���ܘP_6���T.��r:XCŎZ �d��?d�Rw�e�`�d��Kz(Z�����zd�+��=i���O̔_��� �7�
�(�J���_]�/dYq<�n4e\,��7����ESjA"5n��c�h���a����e8-�7�% RBg�ܻH��3Ż2��
������p_Ժ�9o3��58lM�����/��Q���]� !?,;>� �{���xc�Q�6VS��Ǯ��)[\�P7HS0�{s��@��[�(aB>��|��������6$Ъ�&P�?���L�Ϳ����~�L�e�n��I�H�8)H�,�����@�����Wl�6c�|��%��NC7��̱��^����xyG��`�Xɼ5�H�X(�0$��`�V���C>>� }PO(� �$Y}N�M� �x��lɄ������ڒ��s�Y�yNV0�Ԉ�����{�S����A ��NN���T���ѧ2��� ޑA�TjCQ'�ih��4#��rE>��7�9X|����_Q`��;��%Ĩ'�܎����~�LLZ��Y�U�!����@��Gl�~�����\lo0l[閪^��GJQ��ʈS/_�F�ym����ޠ���.~� ����5+�'��V��+|%��,�xd�~M�� b�FV�6FL!��&H��g؅�!��(o�6)�o(/)�c8� i�H����Z�jU���J���rK�����3ຌ��ZVS���L��=S��n�����h�q���\�eUb�d�S~�v
�nEQ����3�I��
tIe�fe�oH
.�#֒�9n�b �c��R0�6��S�ޅ��E���@ �D�7�
$�ڦ,��9d���E:����[��[V���pT�ĕ��f)�����Niཏ�܃�Bz�����*��<��֓ 7�>���иrQ�I����P� ��N��T���(�~w���8��L٤P����c{��m�0ti�v��{�V˽m���7Q��R
�|�L!>NG��Nj��]�hn
Ab?�SUo7y����?�h���C�f�0i? ������#+�
N�13���0��x_���(��-N��sR!h�G��������LMv��[az@wI0b,hP ���X��f;�Pb���x�R�SGO�¿չ������?����0���� D3eҢ���.�B m�b�r����.�
��:YU�9Z����s^��
|� �+���;�cH^%[��wS�S?t�b��$
��%S��\|W�J���R��hTa�=%ՙ����|�X�.���0r�XhBpMw]��A������#�[�Pc��/�*h�V��8�dPalW~����k2/g�{���-P�����ɏ/��4�usw�P�X�����L~Eu�*���x�����b�g>���`3���N���:��v�
~�ף�|/<���Ǫ���Z�� ��F�@��H� n~�~�?9�d���x��x����̨��k��A��˛����H�ý�=���q���E�g�dy ��\��1�*4�%;ȕ����|6�������v��[4�io��E�c�%�l��QZ��ý�//wz�}��N•�(���Y�����T=9#5e]�G��h���#���Q�8j�=��p�h$�� m,O�%��)-6R�/��hƿ��@����4�r)r�]3� ��$��DM��j���C�N��s2��9��x(�y�/��Q�뿻�Xe9/���+
�p����q����O�����U�T�h5�5;�#�N��l��;����(I�0�\��^EC�5��^�
S�5l�U���0P0v쏬����ap<�Of����v} l�4(��z�Teٸ^���6L۷���n,�jt��ip�~��ɥ�O_����(�����A��l~�,y�~��~��;�B��<���:�Z~p�Q�]�J�4���\���iʋ�Yvڸ;�KPJHs���栨�W�Z/ȉ Ua��S;�lWk�f�oM�٬G���n��0��N�Ѥ�P�x5�xS��fx"��?���l;+�~~�
���]��1LS~� x��5
�?�ؚe��`$�L\��Y���|����..I���ޯt���5�6t�Cto�9��@���1�8�p��7�G����r��Re��>��6O]��QBRd�ѐ|�����!��r򮗰
Xׯ�A4��J�:�K�sp���u>���&x~�O�Y���ag?����TiQ�B��M v���zN���X5<�M�K����|���*i]�ԉ�������|~�f��["Q��=P)_}��Xe�G� ��^�?/���?55_���7����(���z�™l�4��]p �T��
�%FC�N��83]����Gx�6�_@.��+��BE��t��˵@-"F�Y9����N(JpvI�d�¾cxi,�]�-%��������v�������Rp1��O���fyL�!�=���X���9g�o*H�z�tM8�qX������oDΪlf���g3�Ѥv�`=� h����2=�'����L��j��Ž�2{�>�YW�C�TI�����I�0[�z3��B���G�+�;[�1�pd?7?qK��`Al�G���U[A�YΦ��?{㐡K��Х;2H���I��`��K�@��\x�����OR��V L��t�ƙ�6bص�/Mx�X�_���k�* @�L8���
R��z�Ɠ���C�1ނ����u���(�yƷ�a2�� �*�:9d
ԋ�
� �w�$�t���9���z�_� ��C��{w`}����S��4�q]K�=l���f�����5M�S�EY7�U�֜׏3ofe9���Q��jI$�;�Og���[���'6���Ɲ���K�E��νA�K�?�J\ngO�o3x���ko���Z�8�^��)��uxN�ރC���g϶3' �4��������t�� 0�����m��5���:?t���TY��������˒*�����N4�/�����l�Pn?05��[)\
+��s�'տ���(l��9
0{���FQ�A�B����9�f���a%R�f�uI0���S/9)��,�q\��-�� �dp�����|vUN]�4ꕶ�߰�=]K�c
zh'��mmј��b��J���bK�:��O8���ʐ�UF�������V=g���/�A�Io�g.��L�r{����b*��K��S:�W �j���a�� ���;-���5͆�ة>�)
2k=-۟���Em]�S_7����Yg���I+�� ���t.�K�N�>0��2��5���!Ecg:
:��n�NV΅V؋q�ռ��� e�VJ�)@'��w��K�9@�����5k���_���Y�������6���A]��g%�׈�E�
hw����"�?2�ŝ�:�M�C�8v%�\|KT��C.ˊ���|��Y��-��5��k2ʛ��^d3���b'+�t`Nw�>E�����S����lp�LIvm>9�j^�kj7e��2+V�u�m��
��jQt�c�i�'F��r��׿��+HQ,�g��'l��PB�Vӭ)��Rz&~^e����<��&C������û�V�(��Ճ/�C�Qb�E�������}$�s<t�p�1&�ޣ?�㟘;�[�ߡ/n!��sj�xq�����N�Lh�.Ed�C��3��cQ�1P�7�o6؃���~馯Ն]βLJ&
�v]/�Z����V�d�[�) uHG��������(��Vx���p�A�2�6<N�� 6Q�L��0������*�^Z'?m��Q���_���*F��Z��kV���y�{�
=� ��=A������ �3���/�kBU�g3��B>w��Χw
Y��v��Ç;�0��;���|sEA��V�[�lo�XT� D�!M�<j����3�W�i�g�r��
H
B� ��
�^�
���Ոs:�E��jb�]v�}gU> \<�`Hz��g���?"�{�2^���<��tW��J��{O�Z-�e�����vM�' 5A�;��>�5�M�������'T$���@�)�cq�G�����8�%�A��n����p7��ܡJ$��z ��D�f��><�
��MrF�"{Pg ��J���B
�M�#; *r�����?�Q���
v��59y�ʾQY$ۛv�o�|�+۠��s��1�><R�P�6�$�M�T����m�$媢K��N�5��D*�r�YF�@i�3� �:S����?���i�������Ѕ9�<'�T��~ m������iw���{��O�&H����Ƕ�Ee �ë7���7Ty�A����*,p�=�z�L�����8�:Y58��m=Ek����֜�N�q�GqWo/��'���o\w�$@
�����E~��T�S,���r�J��mJ����Q��қ�>�E��]�����UtE'����Y�!Fq�z�r9n��ى.��be�[�Ĭ�b�c�i|AߓD� E�V�H�qñ�,K����2��uO��P�G��W�K9j)y8���Nz!���A�Ο<G�r�Iҿ�ow�U�Id��u37s����;I�Re3�����T]���*�1\��ZR�@a��1,��W����:CL�NJ~�2�V�iCr� &�f�G�(�h���-/��T����l����,�7H
�Yf%�B��'+ɠ��8��X��
���y-�ȿ�b� �i�
G䬎}CZ��/[}���`!���=�ξ�b�a�� ����.��a̟�N�3L��&L�}A��ٴu[��G���[�f����AE]��zX�"���D;��)����K (x����c��]��w�����T6H'�FY�����N��y�>�����|�
�w���ݯG��>ܾ#v��ݝ������3+t�m�́��g |T�]Eb㯨ʻ�p��pɔK*�*^�h�& �,���>���+*���^hq�U�S .AS�h�ho�v� �rSW��S����#/��� �e�b���=��o.Hɂ�ϐ��hz�E�*B���=�a<����,f�������P�B+���vp\�`y����+�(0�5���|(C��p�t(׉�A+�� �����A�@k����!��v�6.\�bt6������]8�G�mFD<ɦ�2�$89O���H����O��[�������c3� �����b�y�^�A��� 8��d�=}؏6%W�˴9G��{7�
�xoa���C� R�� Ʈ}�7 X]�bR��I��G�ƫ��B���T2Є�o�dַ�?1��b�
q���� /����+��o�
C���,�qp�@��y_Д ��E�(ڜ�v�ſYB�h�t@�0��3���ӹ����P�����;A�n_�6�7# ,�ݎa���j�L%o�(�y��ټ�,\�,#�7�y�� ���4&ky�-�ͧ����^"�"�e/�_�n$��!j�<�0�3P����� 9����<���̹>�-౨�!��p�vJV�t����zH����d��ޢ9A6>�Bt�������omo�H��,�
��NH�"%_�����e�=��c;��#���DHBL�����o�[��@Y���=�t7�Z]׷�|cE�t�#�lc���4�v���jf_�\�1=8�tSQ�a:?:����G��+�[d ����͖}r�>�alt9��y��:�P1_3 �D��2Cn����y�.`*�~�H��������4���L�S �/������<���+ONHpSó&�!�����qMd=;7�@�wr�dy���1������̝�=s(��5�{�G`�+�n6���ޛ�k@W���a�ePK��&�U��P�C���>�����07��4ܱp�:�(
@~6�›��i�_L�������;l X����_m���;�~����?bN�E��U�^9O�UE…� c*l*����$���d6A���������-
�+#�t`5�-�a���A�=/�% �1��cu_+��v�~dEӰ�);��pJhH����C�!��ޏ��7Ն��*�0ͮ�ݻ������������֞�Wڢ-AیG�ssz!�0b_����$�T�6@C���J<J5�y`0 �D�*>��q�idLh��˜=V��q��×[�M��B�7M7�<��n�T�D�n�ó�J�M�##����G/ p�'��IDR�DO�����@ӵD gs߫&����ڍţV����x<T�y��a�3����ʢ] ���L��Gs��(&�*�
60$�h"��o�ކ���ѕ���V�J�l��_HxYG��\z[�x�A{�&�߬���!m��^:# s(�F69m�0��
��~򮓈#Q@گ3�>�;@����Gh��v�8��c¿K� B�����,)��
g�E0+r�d �����&����0���aj�k%Н��f1�[��X�'�4^��k�>F��vj�6ھ{@��+�]���$�J)���w�4������)4�5�������=\^�o���/P�F2V9�$2�(��i�{ʽK7N_йa<A(����H&�%P|
�%��v.�X��,�icnO>��.�.�i�w����/8*��yp�޵�����^�Z'�)6�
�"<�8������#̹ؐ` 9��-/I
5�&�a,�!�0#M�
g����A.�?��^\l�祉��ǎ��q�f�(Liն��8�Aݯ�պ��!͚9����
E�g�V��Eoq�5W�/(ݸ@�e3��X
a6����R
Z$�0��z�V�=
�n;7�m��s��%�z�e�������U*�d���6;�������W1�r����Z��m�w�[ ��ïwD�IQ8(m=QOz�j��>���J����N�Ԣ��Rqڛ^%�)RS||O���I㗷���m�F��Q����nk��0}U�w7�����f�@�8Q H�9�Ё@�5�ɑ��Ce��sZ�6�8��|dz�lǾZ7�|�`�vX�����Q7<��T�B2�1s=� ˌF�W�~{��|��%K�ϗ*5]rt���E��h1m R��ZF��6��(W.��u�����e�r��.�w�(�+a�j�a��D���9
8�|���@���Lq����F!�D�@B��(���I�u�f���9;&�CJ�;��JO;mA�28��!�����ا���pD;��b4A-��b}�o�m�ڍ�\&� �}x/2�I����o��&_�w'���"i�|;ⶾvD��M�^�?b�I�F+�D5C�ATw��/�����DT�,Vs����ֆpi���֫��4��]�w�]�����x+
?�N���w��
翡ZQu��� gO�<[�[�^�x��Z�35P�r1Y�H�Ԏ��0C)�i ����G�kLX��"AO�pUkb�,D�ι��Qc ���"G/(GG�ӱ�'V�QԪJ�����{*��ϵ���z���Opy1"���aZF2��U1᜺g�T�ϕޑN(�s(ˑ���ᬜ�w����J:™���uB]�R�
"�?��� ٯ�L�c�X3�H�ҕ�*5�T�䦻|�X6�]���*����<�g�n�9MwX��¾i����&�׷q�f̙�St:�2.#��5nU��PozϽ�C�AX�Vl
���R�!�8�c������� =�֊�����D1��!�M�f13�ˆ7�ϕ��m�S�Z�[ ��`BeP[��q��Z�J�C�L~�*K�YivI /���l���P�^RJO����^ �ۘTՊbC'i�f�s9ҥ8{����Ґ�4�LB������;��)�gҿ�9Y�`�j��i��t�*g��:�/9�%��R�
y�-�I�F�^�3�|��қ~��޲D(E.:uA�ܦA��lr����=:%̨�E�K�7z{��X^�G�~y�'���s.��ׁ��?>.g������M���
�d�)?��O|>�����'^�O�v6��9}�rr����g�(<�[-f�.��}�kF)c��7��]��O?i^����mGt�����:���mr�@;�����{����X�"�8LI|��!���.��C���{��Z� z���뚇�)7��
&�,� I�IƊOfY�!7m#���/aG�B
*�����n��F*>8f�5{"�D{��0��ǟ FQɼ�)l?�Q?8<,�[�pd�5f��P}�
��w#�ĉtD…�v�>�M٦���IC�cY xx�ێ Z �_"r�<�L��~�����j$��@!���O���|r�M�Eh2-���|��� ���G�k���Y�ް!���L�0e��Pr��hF��-���- Qo��ztB�����}�B�2�@A�̜���^=#&;0�'����������k����q�F�先A\��^�3�;�c�C���^[�Y��pg��|mG��8�x�*Fy��I�B�d\ؖ���k�fӾ���D8�l"��i�ї�I1�8P.���P�8�h���e�IS� [� C��B�3��4N�@֚cA�ٴ �i�~��x�|�M�
{Z�W`߇@K#8XdZ
<h.��ik���:��Ѫ�M_�N��&v�Ҟ��3}4��Ki�ȫՌ�`2��u�����eQ�ody����v E�!�~�i�[;W���)% ��f����+ϛ�X�Y_s|/�N,3O��u&�M;;���d���,�������L�_���Q[&�Ğ"�*6¸�[�L֓3����m�bi:A
~d +�VQCi,�*f����t�p8�y5����T���Zѱ�n����/�ٕk5����XO��b��.�)X�+��Ӓ����� ‹1���J�������%�6�:��y9-N���ol��A�N�E�<;G^�R#Q� q$!=?�MN��*��:m����3��y�Z�4���.��U a�W�D�� �tݹ4P�4���ߥN>��"�b��WvFjQ�G^CQl�s�<�!�*�����)g��lq�NrX��bH��00��IP`�Dw�/��K���/I�\�M*`�5��
�� 5������ {�<��;�b�o�������t��y�~�fo�@O�WdO^��n}�ݷ�����ܹ�����p8_�A���ѱR�z�oD"A�O�� ���[��ed����[�F�J8��S8۟.�i`��cӼ|$����ߟ���󓇏`yq���v�v��|Œ���ߕf����=:������{��?����?�q�V|4:��)|�;���a��������Z2�������o�o�o� ���B?��jZ Oƽ�S¿�D�ɘ���� ��D�
�����hw6���G٥h�V�W�U:d����J�''�+���r�:&��0���B��*�Q�*m�џU9��8_���� 9H���f��:P�|:Ƌ�����'O_�z.�"q����IW�=|���+��kd��0J��9Q$3�I���⒃�cyI�#w�n�h�Y�t<xu���[�!_����(l���.|'�r�[���Kb)�����l#��A�����y�����_��R��Gͧ����qak����m�ʎ
���ҭѝ��(� ��uD���a,c�m���{a�f�)(H�~8|���jg{���]v7!W"�Y��V+������3�F�� Huo���d
t9�=���D���b
oU�ˆI��ȓ$���=)�p���"1�Ja�#E)L>�\#m���x�K1Z���,,0ŝ2�M&��������^�#B,Y< �*M+/,@�1Nk<��k\
ڙ5�|Yw�V_V��Z;�r��}��&� ���u�E��@ %�+i.�x�rЁ��O�#�.�B�I�ڌ�aϸv�\��t���$��"6�B�/P���1x�Q� b�/����Y%��D��p7av\��>�[�7[�[��^KipP-��Q�̕O��Bݬ��� � 'R�F����K&�eF�_p*�~-K�!d[�"{- ��Sԉ<%n<�B��A��Q���k��uJlk�� ���h�1�+�΅�L �)�F���_����Dz�>�/s"�G"aY�0����ͮ��[J 6Gq��ˬ�,Z[����>�_;\�\���D2/a�W��xR)-tGͮ�{I��)gauV�0�$%��f���I��R��bN�YN���D��Ҥ�/:�U�x��0������_��\�%��7Я��P���Ǻe�hb��C������sM�l��G���<�9����׬��
H��Qc���O������^�q�I�r+ү��J;����t�C��P���%�ޗ����Eמ��H>-<�tT���'���;\�zN��#�.�&{s-%�(���(��n ���t�n-c��+�'�4��
�Ic'
���2?��&�?��� g�m;�qkX� ^���42�iwnN����D�6R������_�٠Xuk@<�a����D��i
��O��jnQj̟���X�����
� �p:d��� {-�R$ � )�̕X���������ǢY`�t4�
=��'���a+"U�f�5DS�S��|����W�?x����B�O47��P���8*?a�Ɛ�&|Mf�]}?�%�T
���4��K����^�C��2ע�ܗ��P��BO��H�ae���s1=�f|���5O����O'��Q`��/�c�yE��� �������p}9#4OK��Q�Z�I��4Rp�)`�tئ*�B���c�b�0�Q<�EX���I)�b�Y��/-,�`���
�^�Ȟ2��#9U��:Th���5Z:�ܸR�����y��su�}�eŰa(*�\���o*;Ŵ�J�+˺'
PϤ��~���Ƥ$J�O��S�V�n����6������7�]g:��g��9��U�4�:��L@�9Ɩ���0���‚s�gQ�
�����ɛ��2Ĝ�3Ы��D�{�rh-�g]}6�#�a�zJP�=q�[N��*��k����Ī�����̭
����㦕S9�]��5ϝ��Wv��59]�Lj��g������r{�k���<g|O; �w�RNؐ&1������������lZ|�K����ц��x(te~���7��xɺ�d<k7-��̪p�V�|�T}�r�����K�heQ�q>��Fa����J��ί3��ԃ�: -E^�ev�U��P�6S��M������� ��y��aï8l}�ƴ�3kD"��"�Æ9�}Yv�f�|9���0���?$MG�
�uq�B������n'��4��~��汫R?y��k�"vu����u�$�������\�|J�p%�[�(�W��5�@�6/NN�ϱ�ሡ��� V������X�r[K�%�x~^��m�G詒ir�R@K�M#�By�P�D������O��8΁W�0a��#�n{���
����'�F>�>��ŏ�����U�1|��~����t�����wɪ�>b䍯�pHOf����*uQ3"i9�ccI���y���bM3��Ņ������ C���yN�����*��5&Z?����}�'� $�L:x��p�mN3l�Lr��vE�˴ڞ4��-coe��mn�O�tBɇ��5�Mqr��:J-�+�HM�����kF�B�tVQz���� �f… $�?8��uyy�E�9[�7��0݅A$ i��7O�� gъ��TW���st�>]���j)*>ڈ�JX!}B��ٱN��?i|�@������}'q�rOŦ<��gc�ֈ��X�e-��>����q#9��_H�F(��ƿm�O}zA>P���m�Iz$m�9�0���A�gj:�h����ԝ��z2r��gFֆ^�Oq�����?~�%�����1����I�m��X�� �ѭ���8��d������Y�����:��o���<������ R&~��Mz6�h��$30c��!�(���[�3,���^Ch]0=�A�Q�{$N.��B����KJ�c
|r���"�qg����c��\�t�X[/��5V3V��/��4��)b���L�9�xVS��%��'�z�;T���^[�d'��h��̌������8�oF{>�~�f�
,ɺ#�a
�i�,�Db|_o[�:b�T��_����}��%C��?P[
����w�'y�]3��� a�#����~xp��*fXp*��X���&ؕ�j��,��vg֙�o�LuZ6�Af��,�$�r���>��ijY.�O���1~�Gz�o�硱�����7`��'o�? -�hQVՖ���
�~��B<�����yyI�6_�"����g��'r˜���(im�R!F� ��ؓ\Ÿ@��G���e\]��Z���Z������ďH8��d��� h[~�*4��@Z!� �$���?Ua�a$�0���R$���Su`ufꔥ|��E�}���C�bD�uL��$�9r��Q��[���g��!�t7�c:}��� ��@�ޘʏ�t��׷�$�>n�5 "lIN��y����U~
��w�̧]��jz��&�V��ı�F�T���8
�Њ��8��!�*�g�Г��ϑ3p�5�&,>땐/S;����g H8�#��9'[é�\<�3B�� �NWk=�8׏g��/�)`l-4;�B�ʩ�/<[��+͖�� �OkF3�E��&�X����� �đhj��Y;�ڇ_zVOS�o4�=O�X�k��
� �&O.}�^X�f�R�ۈ��m�T�w�����g̻7� ��һ�<�Ζ�n��\ܣ�;�4@%��A;�����&ziw����#��)�{
�L '�/��iH����8��vk�G�������������l��z���CH3s���ϫ[��e6��Xė-����M�濆{�e@�.�*�����KM�T�|�? -0N
ހ��3�*So�g��=_0L��n������l�/��IG�;�sZ�4GH���Czm��N�Y"�� C}��oYa��1y�q9Q���A��Y�$4 ���-p"�c����S!��s򶙕������ɔ�9x|��W��),_�DcFxy�V�(W��0h�zvg�c���rdq������#� �6�\GP�2C��H<�✒��[�N����3�I�웞���2P
��I��8�q`3��w(0H'��Uv:YQ���
{s�
Y�#���J1z��+*Go��'Ly�o�H/�$
�6t�S�%�Ћ�q���Nl�c�H�=r��G}�)7l�m����f���� �Bo%��2w
W7]� ���<YI���|�g���l[�zv��6g>������Lz��������D�N�T�z
g���QX���yؐ[�����"�^1�r��rd
wi����6�P���o�ֽ�/�ji}��=�<�-2�.x*i��,�&�B��)��Iw�,'�7�E�����m
ؼf��,�Y��uCe��Վ*�s�u���\�eG-x�2�Ҡþ���S�t�jB��;����{3ml��&/��e$��_g�(��sF d�[�?|좖�M>fwc�������| �0�H������Z����[��k���~[١��l����O�]<i��U3���������9�c��Fz�k\qq@���Nh+��fV#Kq��OY�ס�6�^,�� ;��r�.��߁_z�0
xm�����KzX��� �~�HV�Ճ�,��^��]k���� j*0��I ��gv?�ʟ�K����G<H*����Z��g]�0���|�
��?�v���`��~B.Ȱ�E���rE>������-U�16������r,0į��*촸3L�R���E�Aev.������o���[%6��л�;s����3�N�G��]\�ĉo���P��ҋ��C/�/�c.�/3������Im4P���w���Cʘt��j�g�dK��P4KH��ᇓ������ԗ�.)���n���4�����ww�rQ���.պC�a:�Q���k���W�|��8{��;�f���ߚцX-f�4F�u��4@��������!� QWCVܓ���"��G�����i\��C�Ơ�tZ�O����ic�
9��>�&����$�#|��A8�80;��x�ۄ'⹔8A}�����j9���"�cU��cn��,���� �{1�O[�67{A��q:Iݜ�u�� CL�޶��j�q�<�<�QH��(_��{wA�6�j�� `�4�uMs⒌RjG�hW���La�K��HjI�`�?��h� �W{5'~���&�zH�ΠGݹ>�&��uZ67:�_��$ �G8*��f��,/�L�-����������N��&�!�
J��:�� �~������0 'Be�J.�NT����TY�u�f�(��)�4&����w pߌ��⨢�Q����69ƚa%���^uZ� ��{��m��D^{����M7ȯ��2˵z#R��L�����~�.��3�� ���A����fYَ��P��o��6�w����c�D���3D���(���o�+f3Z�J��M�tU ���w�jB��ŕ���9\���z$|9�0chB��1_[pω7�������pA���: �W�+GZt��Dy ������)� �U�W ���^Tc��ܰ � ���\��z����U
l�I�)�j��-���H0b�n��y�~L�W���ߵ^1h�s��$�M5��;�O9��r���k����9��\�2�xA_@�%sm5�Z8����j�'G����]�ղQ���l�ږ��rJO�ډh �;�a˶�IwڵT7�F��؅5���l٧NV�T�4b]�AD��}��Ͳշ�ʛS��2�z��B����/q;�e�V���B�� �
�!�����{�%���A��G����� XY5�|l:Ŕb��5�ƺ+��dcL ��-)6"��Cr���`��`�N���� I�l�
���w�Y4J��q�\l�o��tX���w$�2�O&��M+\�d�@Ri��i:Z�B�*]����#&9���r�[�g挾#�%��uv��ɺIXp���!�yɛI���Fg�/�����(�ǯ��V���
#%[߶����ˈ��m�T��Xvv�^�����"B0G�z��|Pl_�a�C2S����ԯ�� кf>�����-�]��E� �j蕍h���qV�J�}��ƀ�jB����rw�^RB�Sj2��.�uJ�`]�É �;U�kJ)G#��a�v%�6�YM���V�I�����M�2��#I���x������5ì!4���4���@���.4�S0�G�D�X9c"�9�X�w�[�V�� GE���H�D�2��pU��٦������휺I�6�l���6���:�Ɣ�X�G�;Jb�of�3M�4��r8+\ 2���N�M�>�sv���!w�:u_t�OI��Ӣu�5rz)�*��\`I�DU#�i�*~(nWR��ۈ��6$B�PQ�H����(Z��� �،=a3�w'�Qb���e+z��1�-�C��;-%���� F�A1��i>�L 1x��t�v�cܕtels$���P��j�4���� -�K�66���ޱ����BUL�I�*����p�t�Z6TrJR�MI����
4�gZ�� 6v.�׵A,��2�������|��=�ҩ�O&'�5⟺Fd����RRosfL���H�1%���P�KZ4�/3qk%���4*T�h�S)���"bꮡ�ʰ��9�� ���8�Q5�o�M9��3$Ҡ� g�e`�G�("{����֜g�����}ġ%WD� @����{g� ��� D�GY�N(
d�4ͳ��.Bm�8��w���9�,��8hr!�10�cN
!hP
�y�xla!�x��*��>�����o�s���>��8����� S5#M �$�&�ٱ
�t�a�5���#�w��hJ%�X�jS�>%(!s'c . z%�-�Y��@�±b���SX������t�vq��u�.oH��M�X2���}��p>O��a�e�w�J�2��
a@�b �eۦ�=��+NN��\J�e����� w���.�>W�{"N�u�K�ט��̯�Rz�큮�R�[������0Q��S|�bRx�8�[3��<gFBl;qi� ��bEi[��l�q%\���
v~
L�ɲ�`$�O{ÀXP�@i}���~q�U��јV;#2������7]���9m�p*���'��z4fD
���:ϓ�k*�s()E����k�p��+��8��ز-=�����_:
|�3��ր��m9c��q���Pf"�[w�c�l=�zjU�����
�ILF��y�m� kP( p�y?��`�a�:e8ǰk�4]�0��9s��e
��TNvz�Վ2�,��1�8�����;��F
}�5�P��ەi�{;-��Ȋ5��� �ĩ#~�w�ĥ���r?K���i�_�i]�<Ǚ�"��l��$1��
��)46���wo��v�����O_�?����s�N�"*Ѩ#�����F�]XS ����x�lƀw��~,Ë��'�4bz��!K�v� �� v���#�b�f�:,� �$�G�H�{"��t-����mH�=ƥ��]r�����������=GpŃ�D�#J����r��x����1�0� �R=�S]
yf�b�lt�濡��A��;��O�ܒ:����J�I�ѩ�{�™�����,]�z9��}��ۗ���%Y]�� MS����ջ�R��s�1�#H�˄%�k-�J��g��~���)�m�rX�"?�I�ǞV���r�ݤ��c����4����ڭ~ �M��Dv��ĐS{L'���� 8Hv�\�lT���F
��R��3߈k����3Ǘ���� Ҡ���^5��j+���i���dž�Hzk� �e�s�����S�0�/z�o��8dN G*��3vgؕ���߁�V����Q��D�Ҡ<�n*4���^:Et�� 1,�U�[��"�5m��y$r���qvͳ'�@�LX�i��lvs� ��(��������v�!���sM\Z��Y�&��/�{�q����λ#}Ӊna3NHv�]dV�g?Az�j�Ќ:�֪R[�ގ���0*���/3�zT���4�N�֫S�zE�����K��
�Śv'eV�Y��x:�n���ﴸX��h�?m��� �[y2��`TϺ�-M�*���mץ�5��p�h��Tr�򉎼��q�㎆�~;Um�]�T XX��3�4�5���������.'�L�}����O��Ȫ8l}�V�@Z�� cbg������QK�x���Ga&`b��20^��&f�]�"*‘g��꽺��
{��nĨM=q�����.����7���� o���i8d)0{|[����T����r��1:-���#!z��������� ����,��˔�߁ղ��R�fT?]���}]�r�>"��/�H�]g�eY���~3����1 ԄDkx8�<WCL���AH��N�yĨc.Š�
�Y��j���!h����Esp��BrQ�* ��ʑ�22������Г�iW��q��$*%$\����r����>�O?�7�f^h���trB��a�w��m$ ��kg�6��=lAR�p�Avk�1RQgA�����謘Mu@N�ᾗ�&�?j��o�>��Ew$^.��M�2�;��=��D����ׄ���o��!�aI!Ar4��0������:.�t|�
�˷�������nL�8�O�gB��!��
a%w������{w�{����\�
�]�Š����q�`:#|e}j����v��RF\�l}<[�2�l��<����2P������,tw���� �+\k�\ b'3�a��Hތ
�����x1�
?ԵK���c��Cd��(�����z#:�sV� �;$?��Lp�����E��P��T Q��`P��9�B��� �0���t��^���jD!��9/c���_~^./�G�� '�`4��/��֓
D�ׂ���d���y�R�I�_%�Vj���U����?��"�,���I�B�}��v��:*f���_c������u �lE��5'&r��.1�<�_&��e=N���ℂ��"�Qh�*iklW��u��c�B��S�i D��b#�|�ܑѳ'·P[���}ؠCI�֞˜��g�-{��Q�-����\���D�с
���������'���#O���*^�%9�9(rZl�l ��T`� ķ���Ř�h�d�.1ka�N��n�E��s�ך�!�@1���,X'3�Ut)O ��{pK����[��Km`v�gr~1':���ς {zV[�Im�)��]�y3.īs�����X�$���Ѣ\�
�9*H`��̭�J���������/.��*)C�=9A:=��S��Av���t,e� +S^�.�� --&t�>��~߱r���ꎕ���9�`�����u���ߊl��d���X�
Q�h��-n���Bh?q���%~�m�W�˼�K�dd�a�+"`O9���9��>�[8�
%�>ݵ�I-����+���E��J�X[j�:`����Y�D����9�`"�/z_ ��$��8�&����_����s��s�dB�[�jH#5�6z|֣�}(|4_l���EB�^��:c=�i6��誰�����%2�x�Rl����������h,B�>͉��"��X���ns��v�3w��-��UȦ����T~��r3��6}-�B�Yk�E3��o~���1'd�LV���sC���]L
�V����E��1�I";��t���$�^`=����C�6�xLtC�Z��$&�)�H+�?��β��u ���@:�Qī�|<O�T]]6��i�j�T=�`�9�)�&"}��H�L_Î=�&=�峋��l�~^�A��6�`�^�]�֢���}��a>}G�f8��Ȓ7~�������흝�w����=y��ūw�_�y���<|��ß~y"+&V���J�ؖ��VA>��ڢ��qJ �>�co/��j��Gq���wCS<׽Or9��I�����չ���^
V���ߦ�0�~y��V�NCHLZԀ�T��o{�ϝ���3E��'چ��'�f�~Z��>�Y�߆��~M6eM���F�u8�*6��@
��5�.�X+h��謜`c��J#k�m q��$u�D�&��8�|��k/)��W����@3[n4�5���ϒyJ��;!�D.��9��c��gO�����͜�I30�\�0��_,Ս��&���}��s�η�X5�J�.X�~#:��s��y�k����Ӿ������\f��y���I0�����@��;:�@��{~���L�� � 3~U�k�~��~��o��أ�l��PZ��I��������^N�Mm���I3=E
R���̢Q�I � \ ˥`p�"O"�qZ�O�:x�V��_;b�qƌ�� l�Y\�y��3�_��W8��m��Mg�I��}�s���8i�9��-�i�Ν���L���پ�7ItHp(z���sw�^x�^��6� ���X�'vL\�k�����u�Zjq��ll�&"ׯ�5Дɧ@���9���q������M�;�S����B$2�[
�G�F�HM�R��5����۫�wt:H{�7�y�
;��gl�$`�|����T<���<F"�맏�����I��4�e�oCٻ���:.$U�
OD�`��W_��4`V�2v[xĮ�n�6%6���H�nżg5j����Pc'+�G�♤�i\������b)��Zv�VA 7������&��ۯۃ��Y�Y��W�Փ����@�> �ԓ�K�g�Oo�,OOg��@�.?������K�W�d��/�W�铏��K�{[��{��=�Jp���u����ֿ�����ׄQP04�b��gl��V��e���&����İr�M�֞"�a�Gӑ�DQ�#9���Oc�)a5/D���V΁*��7��V� &B����� �Õ�(/���'E�8�-o��!���O>>SOe�t!�@�����"Cn�i�Ɩ� ����}����#���CN�.��������!Z�ZBA�H���K��N�
�����.Sχ�4���i�s������|Q�/\���)Eane(,���W����0V�wD�����Ѫ��
�aB�+��S=UW4�r���?A|�tH�1�hO�RYdۈ��{j-���U`w�]!q%E��O�h6Hv]Q�rE!�����!!{�;�����׭�Y{� !j���4��#�������(��7����2�"�f��n����<���ꍇS�P�ړ�W��l��#��dR���+�9nN"W��;��xĽ�%�^�Fa��'�ys�ch��>"�C��f���,\�� �6� |�� ��ֹ��4,/�(��E�4�����Μ�I�&}�Lв;�sk+%fŎ�j(G���u���6/�g�����h+��|OЄ.��@�KNf��gQy%v�3�a²C�C��&�rv �~L�m8��-\I�Ȇ�T���JlxSpjA �[7�P��<}\7?�{��K��.R\~5����6I{����.��Gq]"`3�۷J�}H����ͬyGq(���GS�9�ٔ�0�:�01����E��e��F�q���%E7-��Dr�2yÿ��o��bR�P@wj3�#u��E:V�
z�BIjǹĉ����"�`�i�� ��فh��Df��f��ˆ�t!���\I���R̴���P�~a̟CrTN}LD��,�߃,��)�^�m���
I{�J`�e\��@���A�C�_'˳a�;���3AAS����J����k�,�� �p>J��G�SQ
���a` ��j'��8�f(,X﫝;����I5)� �k7Gm}�laGr� �K��yzZ�x��P�q�b�"k���z+�Lj�˴S޳�P��&�bk�����7��Z���/��v�\��.w`
b��Bot$���IuT�㉴�Vx/k�N�k�������1+�8CP��x�eG�px��D>E
�cO�'RdN�H2��/�ᱧ��%oT����0����'ݐV׶(�,��sl�Ɔ�9ƍ�J��j>RD�
Sx��6������J �y�K��vc�u���?w,�$v��� �Y?��rY>�O��N��n {Zj6T�����r2���8�Ɍ&q׬Æ�U�}q!7�DM!F�K��HCL�rs��%�Sc�� �q4����*gs,aE�6�/����Lh���)���XM;��&�5����Iv����l��M�4� �9����F]��Y\��*1��~�_��D֣љ,b"I�ˤ�V���e:��/��4�~��]�� �7��� �F9 D>q�pq��S߂�U��3(u��~�� � ���
� =� �]�ܽƜ'�㔒7�@_|�r�"�������#Cx�=�����
�'L�emٿ�
��*��@"O��
'=��HS&�u
�;�ޒ`��?�UEʵ���8�~.�^J�l���Ц�4���{Y���K\)�rN�e;9vl�>\,&W�D<�p��9 9v��mk5��Ŏ~�K�D��ߤzK�Ia���F���D�}�7��\`ĺ<�����Ɵ�@�PB�mZz2��������U�-'q�wY஗����9F��<�6�ǁ ��� �Q�Q�*���љ�ԣn��m+�yG �r��iv�[J7��3��,�����\!��jݡI�ςQ%���1�5b�0c�bEl��mՠ��_G�k��|R��ۈ�H�����k�[����qY`�Qpe'�ܔ���v�7���5ʋ��x,Τ.�,��H�s�^�5P��짏ڬ k��f��Z��P
��D����i`V�F���d k��#��`��if�+7€`;�J���4�'����ÇY�JOI��L���d㬘N!i��e����~�;�a9�)L�}�V�O�7# �Q����)Hg�{���8)&��9
N�iR�o%]�LL���{��Q��V|آU����7R&�yW-n�Nݾ�sF tM�9�b��h�>��1�i��(bB5c;�I#���h�J7���׺�����/˄W�
k��Ƥ�s�g��ϝ���<�,����NHM�, ��n�=Ք#p��v�C� 4�m�;�S��!�����B�z"
&��أ��.��c��%�� "��!�)^��7��D��� F�k��HV��ʹ�T��
'�Z�|U�8ۣA��������WT$Z���>Z�g�<�:����#}��
��D@Rż�(��Ȭ���[�T�Y�aC�%�" ��p�
M��R#�l���sd�u({2�Y�!��nr }2�]=:��^^��G����'W�{���E��#��š@��wr9<��mΨ ���p����Y�X�i�+��,�R�I��*S�KBՓ�C�[�k��>��lQ�����\`���uYkЛ�G��8����n��i/��fIMH��! � ��È��,-}A�Qo��A@�c����W;���G�'�%� ��]���.܍|e�c�rX�i<]�t�C1_Eͭ����8IO6���Z� F�~B��Aq:=r7��'j���7^���h �z�+��/����`x��=���p�tv��|N�U6$�d���ы�; qnA���F��Z���C6���c�� ���NCm���\sZj�i��f��|Mu vcW$��q�*��n���#�]�ҩ �縉1�.K?�M0���!;�E��]��]5��ؼ����5K����X�ܢ�q��v��j4�~�d߲sR|�F���SE$C8!J�gϔe�4s�9}]^��4
;�2X�5�
��zC�>DڶbN)�� iͼ�#��
�:�&���X�� U%�C�B��>;�6<�p�X��gN��g���?���. Lϊ�5jO;`ot��c��nh�E�?�EO
<q�ͻ��yV�VH��l�/D��!XL���>�%�G�*����!pu�f��������*���
պ�"��>v�N3
w�M�rȸFY�bz�~.j$������a6���oE#./�)F-5.���H[J�ݶ���V���ނ'j�v��LH��/���/�f`�c`�v��`k�Á�؃���F�v���t궤@��t�'!��
�I�~���6Mp����V5��M���o9����Ќ���$_.t���jm��#�,����Q�EĹ�0s�R �l�ݣ$�\�(
�����c��dk
b���Y�OI����9S�G�� �(�,*i�*�i���ƒp�����M���IT��Ϩ:�U��&����L�܀F7���o;���Ε3N�@`Rb���'Ƴ`�XZ�����Ҽq��m��[HG�I�]�����g������]�C�H3��LG�`I�$z��!��)�V^�&�7�֊��aQ� �T$��h§�N�����#�}\�#[ �>�qp�j���/Y�J�Odd򢕧��v�wݮΈF�Μ�f2no-�؋��»�N
�UX�;�m����QeϞ<�����1���=9>�����}#aؐκ��(�&uDՠ��iV�fo����%?Y2�f��ѫ���&h�Mg�&ʻa�,=)y�b��w�,�~ߺ�z� D'sgl<��d����۬Y�����������<Є��$�Ӯ� ��P���Q�XU����SeSD��L�Z�[���S2��7_̓ͪ�Q�����Ǟ��Y����]�èb3���0u'��a�qs�������bc�TΊzAF��CQ^L� V�n���P�9j!w\�?�R� �b��ޕIP�._�XA���B�‘��ֿ� c��� e4yө���י����xZ,��Ciƭ$��f��\�M�
�c��
c�h�|�*�%bzjل�TzD���M���s�m��Րv� ȅ����4���U�K^ �p`�J'_�R�J� ō��87q��X�bz�};=�>��П-���Via�u'<��9$e��\+�cH��⿹c)�k�bfd��N�Y{�sc��v2 S����2tz����sG��g�} ϟ����\��wI��($S�T8�����ӧK���զ������-�����u�
,GZ��v%ƌ�����L��P���d,��z�}�JF�����.�p��z�V��MM��䔿y(�b���:���~5s���H��a�������=cU��n����s�x�F<�T�
�^�Q����d�N����@̂�u(Le�"@fS�G�XnV�5��B���g��jd��(A�s,��EDw�}A BI��v�@b�6E@��㶭��&�ں���z)���%a4t�X��@�E��#^N"�B �2ݨ�2LE���l5���XF�^�%G��Eu��j�c�gi���^��ۑ d���X}���<p�p�ɵM݁@N�d ���Sc����Guc�K���'�l ������M���Z&d��~/��@�0=�1?�c1� b.Kl����L����eL�(���U�*/'�
/eP��/���� j�#pr��1%���E!�0H����qy9�6aI��!����^@��o���K�T�51��B{�)#�gy�b�L_�T���i_B��‰�����8��D�I���{S�_����=�ǃW���Ĕ7N�b\OR��p�*��/�N?A��� ��L�߉�g�$���0{�K�J�Q���M�ĬSw��{N�R���6I&#- � XhN�w�i&"�)lh U�G{t��Bֶz��
�K�?�=�^id ���֏`¢�ݪv���IJ9����+��%�)gS�ژ_�N�]l
Qf�ק�g��<pz��
=v31 ��7WLU�������D V�Er����鉽P���w��r·�A��e�/n����2�u��[��K���%��yh�]�ak�#B��E��\��%�ٛ������/�S��k$y�_� �I���&ė�-����8ŮIްhE��cG�
wg
�^�z�y�*�9`9� �i�GBn]�"'���"����Iq�`5�gh�U��:�}� =p� )#1*iG��^�s7y#Bi�_ �ŏZ�B˱_�c ��:Vj���q���6��*\�w��(f�CqoE����J۟��{���v�2\>����><c̛�9�x���ϡB�$����޾�-��$�<k"�E~�K��vb&Ug� t2w���i��%.eI�3�f���է�������H�|���'��ۍ�0mc��#�c�{����*N�����ք
� � _�/G}٩�PC=[!���O`�Q���-�L�R��$�{��J]�����Q�rt7��~�$�����Y%�t���.�9
z�C��c$�X�M*���3�=�r��)C������*��.�hSfBl���x�3 �35G<~�+L:��p���'\:�t5�d���9 �.�?=z5�����Y�\΀<C�}����?����)�����u�:���,yy������WfaN��O��+ܥ����(�*.ۛ���E__M�x�Q�\(�;��0�s�eO9���= ��U�Ѷ��MZӚ��jF�P��Ë�i�����Y9�#_�:��C�vc�V�J�T�����}�[��u(���
���(>���"�H�� �� �o���D�)�:�$�,=@�7<�ߨ��Z�� $D�_!?��d]0�C�sf�ĵ�i��֡+�>{a��O��*So��^�)jI��Mޕ�#��xfn/ʪH����o���YaF��ʐVf I�B�F��:���3����5df�30�s4+]���ӵY0!z��&c�/tkIA�=+���k6���@R7�%����[���x:���ݯ�yrT���2g����I񑩔��9��=فu���g���G��>h��ڡ���<Ѻv<H6�.�pD -��%v2�`^0�Xz�:�N��e>uE+-��E�S����Q{I�u��iq����{-=T#����v�.Q�[3������rl�Y/j'�aUج(��>�Iy��R��bQ�Vc3���D&�i���ސ
�eW$���%nm\n��o~��r;�6��.�d�|���6#CHf�"���7)�K_F�6wgC�T�eS�=b��SN<�A�C�>�a�&��\:��1�y  R�������q�mhd0���~��K�3Ycg�|�ؠ���j�0�������I��#��:Z.&�ob����:L��N����ٹؘ �����WaGЎ��6����dQd ��`%S6#��
ʸѳ������[���M��򎡡&��\L9۠_��8��J�q�� ݆b>�{����u
�`�-�vCÔn��@�]Y�Y}���E����0��w�q��f�|r�j3�ҁLRf���@���d��\s��q�W{}�=��O�#�h7�o��f�3a�K���;�����N�*ad���4��;'��(mt� .oDv�&�nU�GL�kl�͈C�儫�l'Pk�HԌr�z�:ˬ�����X�c�v�k�dk��&���F���D��?1j�I������*��YO���[�.b;��+�^��4�����xi�q���md_*��Ԡ(�o��L{��"����4�O�Hc�+g/�-���1.�Vb_�<c�#
����Yx!���S��(s���&��� |v������0K���l,>�gb;.�,�p���-��G-�Yl�u4�P|l�I-Fǥ%Ѫ5&��1ż��Lu[jH~��X���P}�"�gd��Pn&~�<�ČFr��xw� ��ܰ�r=�k)=��\ 5�$"1�k�1���{�B����G�l~�8�ר�����$�O���}�7��B���됂ˆ:�gQ^����8�������l���r���n��y���Z��ǜ��%pp�V 8�L�f/����B�Q ��y�'�k� /�����V.��UE����H ���ht$���,��O��C-���VD8��54��Z)�Ƈ��ӑ� ��2PИ�8�md��8j�[�m�w������{����>�7w�9w?}.@H ��$�e[��/Ws�XJl�* �~u����R����P���btG���iI��:'_���gS���a���O���q���a�q
ȵ���yK]��f��s��o���/S�@�x<�5��m�ڮ �y�I*� 1��vc¹Ŧf���$�#�T���/v i9 �mk��a} ��R�q���]�̘��j���10���"u�>��G�y�ԯ��W�X�ޯM��6��� =��1eYQ̿�H�@.�Cft���'���EUQL�L���"�����
%��D�����Nބ6�9�>y</��0{�s�P-
*�ÁCL��� �������G׭2R������W�[��pr>��G͐�GP��ǝ�.��<���r�KI'�`���KL
g�E*c/�%$�
-��^�=�]SĕI*q�������o�
嶐�0{(=��l39���� ,�#2" �Y�P���/�e��B�o˝��2�;�F�B�SA�a��Z�!���*UT�?��4��� ιHIc��V�y\2���8=*(������)N�� ��J���4*���ɬ8��@h[�GܩJƀ}G) �o(��U�pH*�R�Kw�3��Y�g.ڑ;�H��>f7�,@��3Ys��v�/�Lɀ����Խkw�F�(�Y\��ΉI��~ġ,k9~t�Llgbg��duD�l`P�����Y� e�{���fz,�w�ڵ�;~���U՗����Y6�����'����mlld��mN������|���I]�O��~<N��d�N��h����Y4��I�6ʓ�����{:Z��3St��iVI=�� �����v�jG��"���I��I�W�xVLV�0��(����4�e�D2��Y:����&��;�E���Fw����������e��Xdy?������iCS�U>��"�G��Đ�~��Q�V�y���q
�ϋ�[���|~��4j.dtq��0�:�e�:-��t���S}�U��@��c�O�n�3� TQ�\�/���Xp��8���Y�U�'cu�w���iY��0�����(�SX��\��&��M�y #)�����|ӵ��t���(/��{����� ��c�����3�(�OUT�e�����E����4��ʢ�a���YZ�Z���$ɩb���`�h9O.�j�N��%,7�$�Z�^=�6��4��\+����]-�YY,�P�F��gIc���i>-����0/Kl�N'gy���^��E�"���5� �,N>"��<�ma�2��2�/o�E:�����|�TimB��ۍ��n���V��<�3�0�V�����kG�i�����dU��8�l�F����t9O&�2��I�L����ͷq$G�;L���]T���Fخ�_|�Mn��]*t7�oG�������V.β9�^�mm�p٣��q���= �e���Lڇ���2)a����EWW�v�����������ΐv�V����K?1D�#�
}����$M@摟E�k#vl�n0�v��ߞ�2�We�����$����G��(ˢ���h/�!��2�B�3[� �L�yڀC���pw��
Cel�2O��h���"pE�[�t�ʍ0��������;�N�3��O@�4�շ�hYT0)���h��P�C
V0����#��|/x�~}���Hs��0 8��ol�94��auV�`�gI�Q$��I��ɸ��)���2Jq'q�pU+��'��:M�\��`�h���lܾ}<��?���C�E�Zjś��U���+*�����˞�I:�B�jS ��yJh��F8>Kf萿Bjh�6�����b������b�wo@���SU+��곤�=%�a�%� x[r-j�����mW�?�(,H|p�����
���¶W�+8�'�YQ9�Y���y��77�c�*S�"i��T��
�l�|��7�\���amnG�pF['�
0v
��}R������V�E:�;ڣͫ��a��aC��DC�ȬLN�%����8ϑ��� ^x2ɇ��;�^��� ��@II5�j���W8E���7�8r�ēhG�F��ϗA��Z� >O�e
}"�@��p��Y�x�6�#>ޗ�?$�O[�b�L`��L��_^�y��x���Ѳ,��&b,�f_*��HH�ѷm�(ޞ��3�3� ���d�L�������W3=���nO$���{+�Z���|?�ǴN敛��[��[��wEY�"B�H �#5�_�0?/&��q��p���~� v.$�/.�T��]�5\S�q��l{%�T��9~�G�p,���<R�+�g��U���r�R���?Ʒ>}
��p{��*O��5"<0����"�ϊi��`PjDvpJT�+@sI$k ��l[U'e�,��{o÷����?�L�l.#3��f���0 ����'8A�=59�*N��,�и��ų�c��
#8�|8��¥O�>���� � �#�Avx8��o����`����x��d��C��)�����������|��=����ݻڃ �k������
:*\�}�m=�/P��p�|�`u"N�ՀT�BA.h<�lVh
������\h-�����,�|
���ȳ��� ��bw������Ьwc�a�0L3�(�������ßǮViK����<&f�Ǧ���Z"{�Ϸ����`_?��i�I���7�l��U�Cxu�T�����J��u�μTH����qQ�7�W��5@l�@v=�C���Yls�}"�j���~-:}�د9�v�����E����F$�~14j���S�o��5�s��6N��U_�msӽ��O��@SM:��� ���2�%�o��<!������-�� ��g��/>`8��s�@ӏ��YVVu<���� >D����
�sh�E��x�$�������F�2L���� (%�̠v����4��
֍F�Mj�S`��)��o2/*u�&V�97�u�*�$2:�3bԡ�0����`��^�Rx���*��x-�Ki�-�*˱cn�.|S�)��f��b*���U9*.��|n�w�����\�� .�!�+;`����h���Ɂb9�� ���Qlmp5�h�"�����h;��`T�0ԀeV
����zt�J h�Qy�#Nt��)T=�@��,��#��TK���iƂ*�<��9n0��N=:�o
�cOi�TrQD�(JBm����� �,?�<����}(�s�m ��h��T�A�Q�_��~��er��5tצ�~`;��@����� �mVŠ�R��u�s(9C�8I�"Z�b"GR��W��ZU鴧,�G�s�z���XD��@�i'm܅�*��~���pWȤ@���ګK�C~<�+�S���p_2�{.f�
�;��Z0���;JY��H#p85����ߠ3�v�]�
ݪg��uF���4���%&A����-�T�Q��^I�j�Z4�K�CJr�����;&�CI
��,��Pz]179i�y
���Ii��sҘ��aQ����%��i�� ��#/�h.|�(K)�\� ���xh�j(�Y�����k~Gɔlʴ`�T��}:�Ռ:.��Rb����g�Q9�dr��)������(��C^+Ҵ�1����x�E�G ��u���;��U��1�
��� �
��5b��_h�U����n�n �1���ߙ�����4�5�bU�����
����v\�Jc׎���;��~`���v7��C��f ����<*� ����.pa>C�Pڑ�����tD��6}kNfu��T��%�����B�H��,� ����� ��u$�!�R�����r) �0s��s����Ct�hh���[̫��T�~��vd �;�U�~��o@��h-�iI�k�Oٙ�����\�-�2�:�c��K�8_%���l7i������(�w���7���e��U�+��\�S�38�D���6%��@���Eu)��5��Q�o���ѐ�^܍�Aܜ��K�V �
�`�c�:D�c�"��G��q����������e��ʕGr 8S Dn+����q���,��"�?@@��0Jh�'�DR;J`3�r��6���yA�������/=���4�y��.IM]/��v���Ew�h��@�Or�|d.�`�y�EPNk`�ƍR��� RO�"[�D,�Hd��)���L��'���$I<��r=�("<��?VPk��"��t)�0�D$(�Z&U��;��7HhbQ�ΐI} ����ݧ��������?eˈ߽
�!���
pA+]ͪ�nW|�A�EtZ�˾�U�R��_ r\����@͜� �ʪ�l!.Ծ�o{j,E#�����wF��
�߷�p�P�N1�ݾTp5T�dt��ѭ���h8D�'wC{'�#w�L�0�����!&jX߂T���hE�I:h�Ҿ�mi�Y���!�h��¥��O��L�:}��җb��'u��4�*�C�ܪH�%㫘d�ԇ2�V�[V�˵>p�L+II1֔9*�Ǟ�1�5��H��AŗŲ�|��_iǟH]�&qfnJx�&''��]'��
8�)���f���4��$�yR]M�:����iZ'ټ��e��������L�fhsZ��܅1�gi2��32ٻZ$姫J�����X��U},=@U]U)��U�Z@�˫:[�W�0�"F�s��OE�um |��=���cĖW�0��O����3��Y`�LX����K���g�b��vn�q�ph��
VaR̯PO1�:+�����_A�4��
��d1���>\��������������ST��ur����J��>)�4���k�J� ��շ�?\��g5{�*�S�&WM�lY_U�%�f�
��$�(��>�G��CU]��,[hMc�c#d8�������'Ǩ��b���.4Xg�ö����|U������^�ӃX~�x��om������P݁֎�qp|u�G�z$��Ij������*�,��b�I��^���y� �~8z�������>l}�\}8��u�Ͻ/O��7;e�|�,ž���h��ؽ/V�:�zp[�~� �x� <�#"���i��R��|Z�����\���
׸�RR~K����2 TZ�~7�P��ZUץV+��� ���?WJ����c�!<env��Iq��%~R'��R;C��O��t����8ʫ��� �_lm4��m!���݊Y�.�X��@�`�&͙W���t���<���W�Bm%�����6���íGh��b��`�?������O�0"���1ʃ���x7)�� dU
��U>L=,�(�,�T�"�"�S���&d��f%���v��1Wy�j�,�z�]�s���L��[�d>A�o��O ���Зn���!�;O��n�/�L`nN��YC�𻐡�� ����y�Q見e}�X��UR����
䡕�Y���*W�@z;������µmH�1lv�/Eµ�y��ٵ�)�$�$��On� z^�l���<8i+C�)���p)� �ɮ"l��n*�I�Wo���׬�`���߁��y�'� cԩ,�)b@a���e�����=-�Ҫ�Y��o�黦PMN��uL��4�(���1}�"�2�"�%�0D��q(�^oG��7geU:u��8q����s߂��l��r�j_fY$�tk��ZfH�Κ�&#,�ʞ�j�|KSٽ��j�)�N��`l��G��c�0e��ȱs��[�˵�����u5/����5%2҆�Zz���ժ��zZ,^'y��;\�W��r/�m[5|i(݌Xsk�# �d ���k�!~��MGs&'T�5uu����@-]�%C�u�00I�usXsw��^�o�����@l��������ʘV�!��Ų���q�ҳP��ႆB���W
)kZ\Z����"=O��PЛ�P�ɜ���|~��5-H��4�^�'��NƵ��<-I���bᄀ#��c�be����S�f��ߵJ��kI`��F�T�:R��V�(6ᡪ.߳D�߉�����P24��j6 �,�����h��%z��o����}�����l^�k)�F���7 (P^F���^0�5+�/.</�2��fI�㙤q��!R�wz�Z�5H͂An������s�����C�k��FO��6����
tt�
;�˶�.R^;Is?D�n��\����Db���o�S�����R���MkbC)w1�NٶVe�&��)C����_�h.�ȗA�to�nB�~�f��F���x�z����}\U5amן'�Xu����6�PiIJ�S�U��[��h�������F#״�eS[�׍]��"r9B�P����ė��X��h��6�X�uZhy���+�������'����{+O�ަ�u�=���%d�Yb�� �r�|��Et>��Mք^]���q�}G���vW�_�D}VU�n>$�%^��N��@�:�ެ��?n�!��V x�}cq���������XN$�.X|�L]���������xI���d�f2K�
Q�Y:_F��s�C�'j�HRNb���z9�?^~�N��!� ��0�X"$%���W��7{�����”su�_�%��h]ކ�4+c-����b[��ȅf��oh��� d��6�9-�w\E2�Ù��
�r0:���s(����q� ��it��`l��\F�
1�:Zя>�R��J���Ё�X�׃��qC;pY����?��������#� � &�b����yR�iNc� ����xR�.���
��TA�A���6 G�hš��`~S<C�����������c�F�m�����v�E���W1�GB�FQ��kz���7i\�T��D�\���%T�ٺ��"(픓:�|ݖu2�k�����5(�όl�# h� ��98�T�V���6��JA]w���d�ݫ �i�8q�3�_�FF�����́��@����呡������jbp��]ߴ���Z-�����.=�G�!�2;��B>���B�Ʌ�Q$�I:I�j��:�����I��)�i'EY��_�y��}�g���U� UE�[�v�����Kw*�����V
��%��I�z�vvh�JNL�,�Ȕ��bA+f;�EZ@���V��M�*�10 9�~坫yLe�-6�%˧o˧F#%U�=֒�M�W7 ߠ.��������/.�D�Pz �ѭ��G;ߏ���E6%��������S��!Z�(5�J�}E�Xn4�T��٫rbu�˒���_��ˍU9����5��q����ؿD6�=�A�oIu�O�" uoO��I2o�����5���ű !M��CG�㼈p�/�몥�s4��v��:ܺ�g��r�<�o��6l�1��[ǡ,��"����4B���"��uҔ�$�p99
���ݨ�8�XK���!�� t�3��X^�� 
]7k��h��y�U��,���d��D�>�L���`;��#=
>IRZw��>�M��Ϊ�,�c!ށE�X4UQ���N�����`��4��a��tN ��q�!�S\L��Im�#���#.~|] =7�dуޏ<3^���l�%iU1D
��x�ȭ�\�2!��F�L�R\^��I�ў3��iO�D?xeB���
���ԛ@X�������a�8�y.@��"�P;�4;�i��]��</��4;M�9�~D’W�&.RS�ޙ�� �pS
�p����p��hք���l�i�δ�C
��6ǡ`���J_�h��<5�D�Pc��q�X�TH $49�)�td��$�2 )Λk�����I��Q7�$�պ��L�⍠�=���pkw�}f�i �#��"u\C
�bUDQ��l:҆��I�)^�l�M��{:�ø������g��n�����)�N�j_����P��vt��e\&��vR�x�����_��~����p�ǖ'�M�\�B�}�>��o �[���Qr�BH 0\�f0� �L��>Ii�q�]B�t�q������!�\�0��67q��aժFk�so�~�������M��Z���l�[�n?�{Y���o�B�#i���]���jv�`�E�$s/�
M� �=pUcT 8��Y틹 6�vƈS�"�]/J�Rc��q�Nh�#�䞺H
��u���`��LC/�q�3)�L{F�� �a�=ԍ�rz�a3��<�l�G��m��fľ �0_��S4�l�A�Hc�.��3����a��"�����8�@)d���
�-td����il���=�3�»|a,ת��8.[��:��Jg���~�������h�2Z�ae�q�r� 1�5�ٿR�x����Q�@�=R�hL)V0��⽐9E's���lڂ�~��Q ��'�:&B������'��N�  +�YZb4ө�A@$$�S&qҩ>U��uQ���fdcuk
-�%� ��Y���;���Q�av��y��V��$]��i�۝*!����n�b��H+#��pU��2)�svy�׸)��/�)��DP�_���𡄼`�.]��+r3
�AWt�5�[n��o�eB]�(\T�U�<^��}�`GzN0�;�'�����|O=
EؘOj
�o�o����8�›i���f�fԮp��`�Q\-��<����{��0�����,F��:�$�� b�(ˍ-:f��)�J!�#dF�}���Q@���ԇ.��<�D�4:���*B��W� ��cr�y�I3��W8���nE`�#P�-ݖ 綡Y#�+��j��Z�H��%]��`=�snԉ����Teڔ�_ �0���n��a��_i�;�=g���zA���� ��j��у�=9Tڄ��3;B���u����N�o��*g�z��BR���|���������^��:)?yDD���(>I��3RO��.ơ�Щ��nБ�C�ي،�𽵪��lƦ+·��D��z��P�����)<�#A��q�Cb�K�j���Ѝˊ���GX����B�"ʮ�Ɠ[R� ���}t���|u��V �j���6��WƦO �`�+��$��F�V�/�Q�?㡳
���_[+̱�!�O�^T��*��G�dW��� �GG���*����<F��nD�B1���
C�r ��|=��t_����������Y����0������7�JB�g �]%q���� l+��׋����l�je-)~j86nWJ��"��
?����Ⱦ�Mm��^L���x��P|�B^�sp�,DY_��Y��O�(6�MR����Uڽ�G�*d�i�o����P
f��;���~�i-a'���˧ӛo�r@ �fy���/-�N �r3OR5�ݣ���� �LL��|��ۈ�Nֻ�u�2� w��A��(~b�Q&�X�Q����-��|��Sg�0.b�4=���3|kb��lXqa%fA�@������^��o@䬊df�(0�^�Mc��*a�u`%W����b@M�X�>��2Y�gI P&�Z���E#i�p��7��K�+^%"��:��JJ��J`�Bvn�ҁ"���blp��!_����Qf0���Eˇ�$�6��"�U�uQ�/����tuY��YQ�@ �zDZ>�<A1 |�+��"��r�L�rk^\� ��ĺ��ck����h|�y�M���~M�r�6 % R�v�6F�6_���aCn�e�Q���X-d�T<���c�l��iEi�1_��4%�o¤��Y����}��0�qt�� 3CB�<�x��c�S)"hv+xI����<���T�v59�0t��L�a�r`�%��Tj-���Nn��:!cr�h�K;�Q��};��na7ߧ֐��U G��3� h'J�5�Gנ�|���͋�+��+F�^�>$�j��ZP6*���t���`�/Q��F��G`�C�P�#"0D��ܞm��9/����g�z^�y��f�KFT��^ͦ�94:��R���gr��"c����:
��\��Պ4��0l~���]�7mł��4�,_�����Y+��u8�hL��n�Z#1�@�U=�� ��
�[<,$��b�����(�I���E [��������QB\di�D�R��p�j��Q@�}ۍ�!��N�Rſ!oQ�
��A�;��NP���U�<�N�8�~���8u�@��PWMj��/��e4�ĝ�C;�)�Q�D��z����]p�$�$�k�!=tY�H�p�b�+}�=j�Ћ�c3��D{���Y�8JF%�j��SW��V��M�g���M^��
�fU�AI���Xì��i!��_�� �%�A� �AB� �;��� S̕�\��V;���}����|̈V��
�7C�K�$6?DZ�;�AZ�0�D��:Џ{�Zs'HB=�(5,��(7O\y�S��j ��!ј�nݗ#�O?�Di%��#�͏�m?���hM-Kh 5��T
,0ql�K�LǴ�a
��t�E���X�5�����p}5����m��;��"n�
���k���:�j�u�cM�-g��s���m�!`%�ְj-�BA�!8,�
������b�{BVO�%I�3B�(:�0���#�u[&��mP�[�&�07Yp����$�E
�!��<Gψ�s�! K;9��ө���ӫOiJ���)*���Ć"3v�S��Pix������cݤ�`q6Ň�ߑa�ÝAo
0���=���<��ٯ֑Ik�5���a7@�V��l�o4E�����7��tkY/6v
�#%��bdĩ��g
�hhm�cvo`Ո~�f
�q̆%��f�U��r
_��-r Y�^��������o���xN�V���LY �՚MJ��K��h�&�4������F�j����R��f��%Ab�OR���"�k5��t���ڿ{�`���o�l�%��� p�$����0����)���%Ym�IG͐2+�-����] ո��X V溱�-���
���\3"�8½3k���[�Yp&�d*8��c(����2S�ɲ:+j/͒f�y�� ���%. 7J��
 �1
|�1�{pP��C��>e%�
a=I����'�s2�+V��H:I/ 6u\H>;�O���Q��0�9vJ#��q�ΐ���6��Ms:��9�����6Y�,�F��R
�l�D!h>NW��Nj��^Zkn2Ab=�SUm7i���ʿk����"��2AҾ2o�ם�G�+8
��ܫB�ˀ��s�ʞ���^�8�kψ�������N�������B���2�`ī�F�Q,����5�����������\�:Z��-�D�m���B �d���w��O �)�>d�� Y0� �T�9Ɵ\v�ܬ��'ˠ�;Gk�3qʫ��ϑc�R;<���>��U�%
}39�1�Cw*ƞ��}>d
���w���v.�P��*,�'��*Ր"B����� �u? ](�p��������A�ݠnc �v� �ƃ���*��Y^��1Ń
m���}��_�e1��X[Lٶ������ӟ^�B7���]1T)־*�q��?Q��-�О��G=�┬���F�����d�I�9� �a3XKӣ$�
���c���g-�5Jig�i���C��|��O�`U��Q�a��x�0��̨��+�́�<���_/�G#�ǣ;���q�Ң��A��LC�A�c^L�t��h�2�P������aT�������Xآ6L=�TI�0��9�vY��[���}ܓ�;1�r@[>�I�3hEt��&��h���)�)�=�~���9G�m�<��{c8y5���-,o����m6B쯴�lhƿ��@���d���9֦L�!�$�0,i �UԾ��M�ݚ�S�h� �Ԟá\���d}zF�j���Jc��,���Zd���Y�ecc׀ ��j'-ɩ(�h��K"�7I]������HIVЭ$yr�]��%X��$S4k����acSɪj
����C$E��� �{��x2;�%,��C`�H��
�A��(jת�hj/@����>�ð;P:`��i��~��IR�g��}M)��/��ht�̗g����LJ��?�w>H��b�L0�|��\�3*�d��~�.�W��:)��X\��Y�rT���
{9̀QI.Y���6�D� 2��rlٮ�t��ߚ��yL���n���Tl'�j�nȃD.�
n�)Pgs�F��GEy���[��ۆ���a���2LS~� x�8�+����59J���H�L,��4�ៜPb���%Q��!��A��(���P��������@ƖXz\~�Q������Q����<��R��7�E�����ǃ���Le��t1�j�~x���I뼘|�#f������Y��[O��ܿ���N2���ϲ�4����Q�6���d��L�
��3A�Tڻ%ŏ3k8�C�k��7����(KZULu�z;��K���X �@ ��~(��P��2e;?��7z���.��?�����c�}qz:7�'��^1q&�3��ug!��gAb����S{-Np�<�.�B.��g����s���1T�oLYD��r�nԛ������
E�� ��U�vs���.8��I�/���/���vw�3�����q1����
�e�=&̐�3�w̹�)Ξ�wuH�z�tM�1��a�- ?�U'pVf3�l'P;�&�M*g�I@�������(Z��0 ^��Dž CKm�3|置�*��&��p�3ga�aԶڵf���FS�Ǒ ��N�i�%l��ŏݖ��:�kF�ō�Um�V��,�S���}?{����r��]�����vkpRQ%�� S�?��� �`�' JG�:x���D@�ͱkx_��ȡX��A��F��E<ᜒ�M4��'�9
OJ']���l.���Q��Tg)g�Cg:
�cH�$�}r��0P�&��/��uL�t��2�迾�C<�j��_z�W<���3���L0uLc׵���f{��>l�� 㝺�z�\U�^5n�y���f^K���j�TK$1樟͋ =�����8�'O�����k
���<Լ�3���v��|���֦����q�z�_��v�0N�����v�3���
�4�9��_� �A��O���2� �'h�nVlg����0�DYd��Y�g�'EA%{0y�L��4���?�
��&����=��a)=U�����o��e8�C�ؠ@�mԈ=��C�p��v��}ߠ o3�J�*���B�J=+�Ol�.���k z��2)�1����oͪʩ���4Z�#�wlyLCƒ6����
��V� h-���[ �+�������#6���2$o�^��O~���R*v�]��RtŻ�I��J���'��T�(�'w���5���33@4d^�x\�[ �4�k��طH�����hW/J`��ʾ�Ȧ>n������M��FV�
��\���}���EV��C=;C
��pt� �!<Y�Xa-Ƃ�y���Fʆ��%��0��qU����_���N~���[Z+ ��6<^�hw�����6���A]���猫��"��;��O����iq��ν�׏�wh_�.���oi�}f�������!��>qV=wdT�F��tM�ys��E:'nOn V�Ґ��N�'���9Ƌ�����1ɮ��;�Q̋3u�&efEJ�ږ#-!���VyG9F�v����W����O~�:��-�G�r&l���B�Vѭ ��\z&b~^�����<�5&C��ŭ��w��Qt��{��K�V`�A�����0�}��g{��f�ctҽC�{����|4��r�6RP?�本N�[���c�Y 5�٥ؿI�p<S�?6
����0�������M_�
;�e��4@�
4�.jy8�W3Y�����ꐮ���Ϸ���/�Q[��
w�����m2���k�wMp��mBo����c�tth�b��q��ZqE���r��Tђ`�ih'�Y�)B�Տ�p��
�##���A����� ��iJ�W/ԡ�仙B�J ��Ymg��,�|;�������|�BA�=ߤ(��`����M�
.&t��:��~iyea��S��������E��S_Y��$Ȁ��p�u���zu1��`�LY5����n��2��.^V�%}��w���~E��s�����7��W@�:��j���T���0�Ԏ�IԄ�ȀMPG��᤟�
Ŧ����۝m��2���A�-39��q�q�W�A��j�p���i� ܡRD�z ���D�f��<8� ��M�rN�"gPg �D��nt���tS������!Ƿ��w�K��/��*r�R�}ò��7��?V��F�A=%��m��}x�*�hl�I2��扄�úm�$��I �J�
NE"{��,�] 7߹@J��D�`��^���wzT�HY��Є��<&�P��~
e�����iw��Ĺ��O�k#��~S�"��,��N߼}�b��Ȼ�!5"ng�Tb���\p�"�gr��a�=�j����j��v}��q�Gq��״Ǔb�в�7�;����"��_�g��U���tm#]z-�����
M�$ �I�M6�D��"z�6�7�=p]Q kw��#�Ũٮ޴G� �mv���X��*1K��ߦ�����i�f�Bp��E�Q#�3<�pm>O�<z1�H�iK-1ez�~G�������A�(�|�8���
�����]{����>P"�4�ꁨ�+t���1H�*�c�n�ݩ�`��Uc�W�J\��a˒��%�.����u�+�' ���hZ&���xgL8M�G�Ȟ`���-۷JX��y:�r�_�U����$�bH!��ٓ���0�8�'&����o�B>�)��先��:�Ra��ձo@���E�M�a���,k�k?V'_l!���M��F�C|F����_�Nh�3��
�&L:}A��ٴ/�X_���䑶J�%�!���B����A�U;�r�U]����C ����� �t��h��ʲ\� ���N>��$�i������<���vv�ۆ��}���h���h���-��m����}���gf6(�m��Á�ۧ@|�|\�b�Z�]i8�X8d�t��E��I�'�-�;���MRc/���(� ���W�b��B9�D��*�ǩA�F���%j��Y,WIѣ�~� & �?EĖ�� 6��OS�8��9��\�b6�[�� )0
��q����U:.��*G���XؗRQ��i��鐮��F2j�'@x\��&�~���w2�p�b���]�g�:�t������H����-��'gI~�j0�ԍ�/͋˭C�Fa�����K�f�����b
�R�:&fb2@�U3����/zz�-J���I}���y7� �xo����C� B�]g�]ykoX`U��H�N&Y�W�oKV
�bɀ�~��Y?������Y6\�~P����@Z ��)�o92C�9�L��q��T=��Ӕ �J"W$m��8����<"C4@:�~^͉`p�����ߍ�l��<�N`���}�s� R}3���� LzL��B�T��1�B��(��j���d��`��0��r��i��"�V��oe���D,?�bK_S�d�H+JC6Up��C|΃�9;I2�3�杇y����ɠexL�~��z�ڣ����0��<�TI�-�Ov��-����w[��YN��b�)�X>\��>�lk�
h:�v��j_�.n-C<�!�@��t}ti9Sφ|� ���ccЛpr�1�al
��� ����D��LCс�����s9o<ZJ 8�� ���+y�p��� ��H��% ��5��wߡ%<�x�l���*�5)�%��ʠ1M�z�܈Q���%�� ���>3c�����A_��z� ��mC��b�2ofc�]�wg��'K y��Q�A�������!����
���QF�����O��Uw���){Xo�����&��a6=xx���Gz� ��^��W����Ç�z^��#���WD5z弤XU�\X�0Ř��g�.f@'��YB9�?����-
t },B�*g-b�i�K��@��7�% j��Y���Im{z?2���i�ʔ
Osr8�hHb���C�!�\�GOh��jKFWex�旔ݻrKo/Y�(��T��=?k�n �V��P�8�����P�#�D3",��%HW|%���̌n��[W�q�i��Y�.s�XqȎۿ =w�*�%��I�����&D�ODl�)1p\� %���Kv��1`��ˁG�����>�[ۀاk�1��S̑���cO�Qh�g�Z�����̀�#
<o�:� ��[�2kh�-��7���k��he��t`��g��`tYn#��
n��ɥ�%] ]�:],Ž����Lz;�x����MR~���2i#/� �0E@ż�H�&��&c����b�G�:�8�{:��"��u'���|��8@�DŽ~���B<s�&�%���=�5���@|[ϋ�SL���E�9����1j��:Š;��f1�6z��� N�E����3�F�i ���M?4���pu����WJI>ᅭJ�߻�������d�~�x��� �
O���O�H�*L"�����F_�S�[8�A���P,�� �,�I���".��X�s��h�@�s��K���(����MH��F�`/^g�.{�Z��vk�z�jM �
�)�I�0��E�ijBx�,'gCT��� ��b���PC�$r
�!�0��$r({�=�I�Y�};��KK#^��wT��k��Fa
���[9��6��M�qbЬ)�Ø�!o�L���k�;La���W�n\� ֒��0������K�1\��f���{�P�unF�������K�z �"ka�\�[��T^ �]C]ze1��lbe�
4��lP?���Fw"�=�G���(�p���ZҳW���ȳ+�
X�w;�S�ܛK�eo[�hW(4F�����#���D�;;�0M��Fe���R�kMa���s��������KJ'�3{#��@����V�H4��2@�ٜ�h���� ���A��z�֝u�t��.�y!)��R
�b QY�� ɹdZNi�z����C���O$K�͗*5Mrt�M��
z^c�$H��;�M��d섹r��(���j���)�f̥Ʊ*e��b�Umf`��MTZQ�<����E�l��# {$�C'�4�yr��x�s"P@����e_KV��)�I�&���F�����A;�F� �ɿ�����Cߧ����G;���l�Z�o�&�ov�~�� .�Bg><$+T�I����:��Mz:4'�
R5�� �KqW?$��&��b{D�I�b�V
��*�9���De��w���{"����r�Km ��*��Q�y�t�x����”8�+nX�oEL���h�޽�����D+*��( 8{b��a�B��'�ׂ���I�2)��G_�GVJ�b����E��]O?�ӓ\c�U�+b���j�����sf-�ט�3�x���(G'�ӱ�'V��S����Σ�ʨw��������'��b���mӲ-돱*Ω{����S��eBp�1@YJ9ZX��i�F8�l����̑��>I\��x�?�G�� �W�L0,Gͱ<��#dKPV���bL��2&7�����m�� {/xUTem3-�������4��n��C'1b+7�h���'Kƌ�>�NG�L�KO��К��|�Mo�W�a$q�D+v���RK!���c�c�ٷT������3���c�l ��=af3ӯ�xs�Z���w
^�d��6R�rP[mc�ݍD����%�<��(K�YavIv@+��iv��\�KJ���Q�#�"ճ��6��Z�oh�di��s�t)�^T|I��B����L\�)n݇;�#)�g2��Y���U�o�:J3��VЯ�1,�4����6�fG ����ڟ�3}��2�A��ޱE�(�&:MFۙM6����U�sog�cF����������˫|���/�My�!�r�|�bc�'ż(�0u,��f:��\���*]$���O�բ���+��+tx��*�@��J�d��N�W�{E�����E�~|�Q�8��{I�����W��}���wGt���#�ʺXR �-Y�%���y����,!���EjcD��l�!9@E]��Gx%s��Z�:�#H���IFG)7�I�,� I�I����!7�u#�{"���4��c0��:TqnB0����/��:&S��3��U�n�
; dA8v �����A���D_"1���kbX
<"p�|(?�
�'lӐ��NC_|Y���N�Z~� ϝ���98ہC�O����Rr������t-��[�&B�4Og+&�l\�(4Ͱu�φ��Q��_��˜�����^� O��UGЎ ^nC��xB� ����Џ"�\drd����@ `<�OKI+�u�0-~�7|̲�f�6HW>>�vG�F{.��H0����q|wqg>&�E�Q2ξ���y5� ��@� ��e��Zl:���K��� 9&�i�d�[���z��*�s
�[�GH�|�b�#>�:���,*R�DC�k�)�Ә��}|��y(|�O� {��U���@K#t�P�
4h����5L���M2��*�O�:�FK�5< G��ɣy_MJ�2�Vs��ɚ�ե
�G� Q�-j�=2��Tt���/6Mt�����]�Rt����@ ���y�����s�/�N\f��)��LH�nr��ӣv����~#2����IJ��d��]&�@�"��7�qO����/g�����v2Au~�@V$[%�Lciw1J'�銄�p^�j�-�)4�
Nz�����vF;1� ��Ҵ���J��'Vc��,��S��W|G�
' �����oJ�|�G�O�˗����@�E1�f�4��n��I�O�2���W�POTDH�I��g��T��3$
��[c����Tݼ^0�8�(&+leC��]C$#
_��tݹtA��\��J�,��S��qD��;#
/˓��`7�\,Op
PŹ��E2M���# ��  ����>zG���(0V�;��b�rMC�H��,ϒ�b���aSD����ѝ���(�P��� ��;`]��^�#V����n�%�&���+�o�a�����{��֣ݽ���ޘ�H�u<YM�ҧ���p$���*Y.��?lar�x���[čPTz���+8�W�ȼ�������U�ۋ�W��9X.������-_�ȫ�s�٤���'G�x +s8�n>���o� ����j��x-�·�G��~?8�Ƿ�w�e��xdG.>��0��u|w�a�q,��ۇ���"��?L1��L����4]�k�7�AW�y�L�E���;=�(����Q�W��6P!7@ʥ
Of�9 �벘�&h�k��l ����>z�"`m��|�~���
��
����@d3���E:��o+���˷?�� �|����F�{�U�bO_��3��
4�> �pN� ;��6
<��G�y@�D�f�I�C��Xz��"hKZ].N<�;1�N�����>Hb)U����5O���_��4�# � ¢�:٣�Sn{���t{Cbٱ��l�d����n݌�n>#XfW���N�uӨ���4�UQ�`���)a�yA�������`��MДmV癤�J�[�xN=�݀�1\#�َQ�?�cvn�s��^���A�ьQ�ϑ'����w��p��xE|��R@v�)�n�>�J�%��E���%?Gg���w�Al"���50�_��|�#Ģ�3åҴ�B�q
�q�G׺t0kl��8a-�-N�蹍vZ�T&�.=
�%f�I�׳*��W�\�����#��"b�T!6�!1m�̘� ����}�Q���6 ��=���s8�c�Ⳃ ��/���ʬ���XOp�ar\��6�[G��魩�AGi��:9��9S>M,��"�ͳ�F��p"աm���'�2-s���S�Y�\�lװ ��6 ������D{nd<��������.l�b�V̸H>��ո����sp�I�z�����B���l�a��,���˔��m���D1Fka�;�Z�h1�G�"ġu o���po��T@���v���?�e^��^���ITZ�xG�/]G��1gau��8�$&���c���MH1
��,G�,����;Ӏ�|i����� :�U�z�Mu`~�/>����& r]�0[�P{@h���cݱW�����@k;|s�i����������%�b�������
C�S�C���>��f(E�J���<�ّA�eT�!��
ZA{:d`��C�����V1(9��S4I�Y�ˈG5g�,O8�
��b�3Sjͺp�l�UK�Q6�o`l3�D-JÙ����}\A�N����� i$��ٕm5y����_8#� �6b��hi�JS&�3M��͉;��O�z�?��Z�k���f��=��,�_Y&覹@�.��y�1}�X��?`��Ɲ�����p��u����*�R��
��)�LN�S�Y�ΏY3 �t6=���z�|�=�9�ֈT}\}�M�O�F�����>���ѣ� �m���\~�fˉ~���5Л�b��~dK��C�R�����>w�Z�G�E-y(C%E M���� �k�Ӊ�3k��T
p:����p9��B�>�9=yy3��EQ(��H8,4T�����"/��ӂ¬+W�|�>
���C
�D:�S�[������_>s�Q�n {B�)|C.���� ���p)�x�D��� [��N�ٰ
g��BCz֡�ֱ�Ɣ�Rkf-^���m��k
�=-+�
E���Put�r�����{e[��4��FGcb%���ň��J+
(�l[��тz��}�oT'���;Y�]�Mg�� p9��2y��v�6��>���hȔg���c
G�!�T�A����z/`�z1���X�H�M�1A����k�N�U\܍�� y�U�o4�n��F��=��㦕R9n\�贕�F�o+`y�F׮3Ds�'�tRl\�����]�r|Ow��USH9a#\D�w0:T�c��7]-��4;�K� ��^�F� �P�C�'��[S�$���+5��Y��\�P�J��j�o��o��-�q�� =Z��}��0����"�Q%�U ��(����w�%)Eڈ�l��dS�ͺ�B[�‡Kr���f�3T��J����q�} �3��/,yJ����
sF�e��R�aʡP,�O����$MG`
�t����K��L��nk\E��"���u���G+�AC�X��������qpu�؂�����b͜ɟMɡ��gU���` c�w����'�V��X�pDQC���3θ7tf�EV����K��v�y���� D���$��t��t(V0"ϙ�.�n(6�y�M��د��0b��!�~w���
���3n.p}�c�x�T�`|�1��X�Ǩ������V/�6~����Ǩ�0�8��W:��<�b<�JMFT��RN�ؘS�(F��&&�KŒfT;� �����aD~�jwd)]����*����h����;��� $�L8���λ�fX�F��zԴ)JP���Q�l�{'Y/ds�x�`�>�]�C�'G�CjG1F >��P%)B9+���c$�<�'XG��y#�� �̈́
!� �p��������l�h؈a�O
���/�_n=�&�F�w�T���?n����EZ�j���&o���7�˚
���ړ�7���I}���)�}/0�2oE�<&���Ɲm�O�b��ZR}^̛˱�È����܀R���o��o�hů��6��W����<�A���G�:����v�8�m3ɶ钺�vm����Nv0]������ػ>v
!��q�:B�u����Q�A�PF\�r��Nw�4E�3���LR���8���|�$�/�4p�7�rH�/��l��A>� �@��$����w�'l����/2ԺD� ����d�w��d���i^�����
��K��b��4���w
�ƍ:�����*śŵ��q
�n����g[�7
�6�%�35F<�ܢ�g
1����P��(_��P�"W=��$�ɞ ���db���vw=12}z}>#�A(f�d��0��V.�D�|_�[�2b�Tq��Rը�rE�FE��?`[-��M�)%��<�f��7�/��2Al����S8F+�a��P:�b²�`_V��bs�:Hp�ӳ��L��*;��_�Y@̨���H)M-���� r�<������m�Xhlx%��������7��O����EUm��ܙ!�OcZ����"��Hi�5+\����p�O
�I�efY���J�6~,��Qq-�I�l܌B��{��-e\-�x�ypr� Yib{K�?�W(
�grdw��E۲3U��)�
�2xЃ��T���C�M��,z"���U�3W�,�k^�(���ݣ ��~��>Ś�l��)������|
\~�f�LWv���<�o�R4鍩<�����������VA����hd�HEy�]~Gr�-v�D�O�(����.,��y�c��ȩ"sh6�b/x�V�a�&��!����,������x`���r%ʗ�K���W�"�$'h۳@]é�,��;����N��^����3
�=h�ҵ���2VN��%�o��f��v�'�uJ3�E��&c=7y��#��B�v$����vOS�o�6�;O�h���
� ''�o�����!�myE�6}*׽�0�D������.@ ���ŭޒ�Gg:���p���͆��]�p��{��D�H)���7N&!VD��� jwqĭ�7 �pS��#�A�޺�n,�fa��-v��4f0fϛ�]W��o9�lZy��/[��7IH���{�y@#.�"����-��H�n�����N
}!���\���x����l��X�B�7U�#w�F�c�O8 ���>��H{���K=��]�D�c�,a{0� ���{��e�����s�ʑ.'�"�j��d��&`q1����Xt�}���!��Z�̋S��͎a��9��Z�'�
��RX�sk����,<���\�ݠ��ٍ��m�e��`_���x:��d�n��u�+3$�C�O)�b����-��;��3�p��$f�OKúN9P
i ���� �n�J1H�r~�&� &� �/����+�F+F �6/D�������k�MM���=��+m莇Q��C�_���w��FO�@e��p���՗Q�pí�6��^m$�߉��[ m��9���0z��p�̟0曜�Y� ؁��dg�3�Ћ�ѽ�F=�L��w�7#&���m)����u��m�r��r�5�{^[J��喏è��Y�C�o��
=TH����n�~�cR�n,���˅m���P�s��u����� Q�C�y�Ἠ�ӛ�"��7����V��Rf��[��b��uc��8c\�:�H%��@����+�*��b��uI�����G��[���w��� �|�73�4�:kx���r$A@3�*���!j9���L�f���e���E�E�0�Hu����n�6�����7��Z�-X�C�c�� E�w���ĭ�t&<��
0|����~󋌮ߺ����޹�VޡmR�:��w��) �:��_����1�#-W�Ro�ح7
��׶Ip����M�{=�l� ye�=������Սk����}��#Ƀ$�nvO�+{�����i�������A%=��u�W�9>6e#�͗��9�7��Émn�$�� �_�Qd10)Vh�li?��R��F7l��4���.●�*䴘3L�P���pP�������l������Ȇ�0z����e���$ө�����@�,e�/=�L4t�X��T�c�3�c������=GT��#s����1fLZү�F���T4
P������"��x8�-lrJ6;+�$�S�4ڿ�݃{�c�(���
.T���0�z�Q1�u�����>G�^|�ܬs��[s�U9��14��W� 菒y����du�!��jĂ{6�/���J"�Zo�װ�R�1�PC ��O���t�z4t�QX�� ާ�$n��םp\��hb%��n���8υ�yH�g������11pI:�s�*5���l$�X�}�hA��^��Ö���>{�yi��/'ʡۋ��G�u��S ۮ�{�j�4Oz�Q����0_�����mJ�����k�=�k�#&.�(�zT�v�p_�)̄����Rȵ~�ޞSJty�ɧ�F'~
W�
�&�z��F��ù��Ɨ���h9n���V�D
����(~�o��bfB��
�b'�+%U�봩h"3D�A��W/P4���k��Yb��D��h�%����TL��=h&���L}Үj���}ӻ����Ə�6%n�}�1 ����֫^1a��н~���-H y�����QNs�ֈ8"#��0�>���$�|%V��U�=�؞����m�؏��N�v ��E�Ξ�n��RD 9D���Э��������Z�
c���tUI�ߜ�i���g]^
�M4�i�����/{F���~�u�E�9����z<�\�mjj��Hn���ǩn:��x~�s���+�L*�ˈ�@��^���s�e�$����@����+�����C�ԙr\
��arD��S�a"�}bl��7��؍���s�^ ��TF��p����n��
�ӳ1#t��`�m=�L�5�kp0��-,�G��[��-����Y��}�7N��^��i����v<N���&���臰������m�d�Ȃ#
%1�.6BD��s���m��2p�1�Qd?��k����%�F���*$w(���B���p���?0KB����N�a�gS ���*��c��QL�l��h�۰l��J6ƀ��?b�%ŶQgV�(rI�������:�γ?�}3B��C*�8����"Q��� �����H+��Ѡ�D_���Ӥw�ӂ�U�T��暎֚P���sh� ���0-�o�柑3F�����:�ї`��-�k���!���U�|�T��f_#U�@�l��?~U[��o����}ۂ��o
�%n�Tw�Xv��^'����'""g�N���Pt_�` �d��O{bį���B�:�Y#���3��6��^^44]XQ��^���>^������o �P�$��_�~jN�O����ac�
a��9X��p�F�F��S�!�đi\��.� �H��f
���-��N2@��(��1� K���$��,<h<g�Gz�0iH}I:���@��/4�)1ӷ��l�2�:��gcij܋�D[(O�+����M&�(T�*�5ۉF��t����X;�f��?��Vp����u8�);���z�(�e��~��i������Y��� �B���c�ۦ{œ
%�|�ܫ�^������G�eֹ��9]KP�FsƱ�Y�j ���?�+�p�mx��""
P��H��b�(R��� 5Ȍ!3xt>NGI�Y_'ug�؍ �-�%�Qv���[l~�1���3M≉
N��5Ԟ%�����ԥ��J�w�g�64CG���� 'p}2$i8#ب��I��0�P%�y��>ܭ�
NI������ߓY+ �(x�+�Z���}��%��AVQ��4]]�昽U���ep�M#��iD6�L�J�*E�6g��K�9���4�o]�/p�0�Lb�J$��i�T(�MAc�HA��KSw
.U������2 ��Q��
��6�$��!�9�,�x��"Kɱ8ܚ�l��Chy-�>�Ԃ+���_ �yH��
5���-C�a������٥�.L�8y?��w�D7��Yz�:hr!�1p�ǜB���PX�%�c��T�Mϊ@^�W���~��AC��0�Ġ� ue�TsT0��D��7��/`#�"���0w��X�k\m*��%����5�^����b�� �\t��4E��iX������t�nv<�7�.�Q�v��X2D}��p>OG�c.����D)�i�Pat*n�h�l���y�lF�ѤDZv��j7pg�gBhs�~B�Dq����gZ�������Z�#�nK�w����&�a������2ɬZ��m(o�<G�8p�2�4�f�´�~]6T9K%L���
�XzSk�\/��ѧ���X$N!��r��~u�WĿ^��8#�������)f�HMS%8�y2'�����Ι<mK]��E�=��L�� �-Y�F1܄��3��N���@�cD���z���/9�L��5D�d����?OHl(1��6M�3�G}�*�v��i���t�~�I�.�5Е���3<��NH+�,uHp�a�>J�b�0��͚�� ����\�'9��j{�?
�ʥ1�ث%&�Β�͜D��~5�$���+�6�{wZ0�A+Ω��On�H�8g�s�qg5]
l*,��4j����E�s̃�_
���G1�z76ILRm���446~������a���۫oW�sN�S�������W��^��������ǃ�hz�l9���#fع��Ų/�4|z1ȂT;lFæ��h�r���}6C����!.2�� R������R�ZZ����d���\4�ANL|9
q�������ސs��`X �=��@ q�QS,D��SVRɐ�R=�K]�xNMŲ�ѽ����������}��-����oT� ��F
<�0���~C�%��}T���c��V0`�$ �+�r@Ѵy[a/+޽e���Ơƙ�\$qSj!
`:�
���*�{N�������t����-�R���풪*&x�M�hΐ������~G��f!��l���"��O��P聃P,8+��v3�H)REəo�4[� ��9���k�iL��&�m�����U�ƞ���
���.T.۟��>�����hu$��/�� (s
��<�� �aW2#�8�=2���D���
A��@���<^o*8��~�Dx�� ,�U�j��,�k�Z�"�3�Ь e�>{h�
�v�gǴ�B�Y��y��[����BEN%�����,��'���h=�:��}�����鈷��R���j��O(=n�*5�N���T��#�e�:�ED���6�f�x�y�5���^ᠭ�<����;[Q�bM�� ����q<�]7����u��,�����jÁ���h�bA/�5o;�Q�iԅ�5 Mal�����P��i
��hs4���S�E�р* 7B� � �Ϛ��d������s��0��vkZ��U�]�F��H��#��]� c�gM��y���Z<^�X�Q� R�ݮ\0^�%Nǻ�D�G�<�|�Wk��Tm�oL�����%������j�ވ��6���!Co�:9����������9�ʥaxF�]T�N2-ԡ�!!�8
M�����A��5��ɔA�@j��i-y3�.�'��`�X�#�����C���-�Ҩ����{#|�@MH�6����gj�j�1����bp�gu�xXqU�F��,lIUC�~0�r`qh�9�鲔\A赊���r��Fh���܁XI~�U���8lj���.ů)�7�e '��6v�N�ԚD3/� b:9��a}2E��L84�oZ��>���������
�Hy��Q곳l>� a��/�Mnv꠭�o��>��Ev$V.n��vgdt
�}��z�����8+�_8��aI!�|4��0��/�6›j��p:�)�
����du����H� }���h���`����J�����������{4�괸v���?"-D�_��� v�+�P��q�~(�n�Q�!WD[��JG� 9ۃ�G;c��1���sn����0�\ky*!b�9ڀ��vJ��9* 2+Fo�x��Bj�%�۞���o��x��,��y�F4��,�8�x��ltU�;��nW/�ȇ�ү���B�
��5DP�$��p��iRN��汫Q5Z�˜{����z)6��\8��DJ�F��P_o=XQ@��3���YM����'m��ĴR����bH�~��k1���m4O�\� X����$�g���A�1��ޱ����)D�y�=jNL�A�VPt�����e��]�紛:-N(�+�A#U���]�8��K^����Nէ(�FǢ#q��y ۯ^<����jY�>Б�@��e���%�(�ct�*�� C>fc�@9y�^�C7�Jk�F��[]z�%{�T�%U�C5��P���&��KX �RyH��@|��P�5�HE�#ۻ�H��NY� 7ct�B��e��L�E�Q̂�#3����.�����Zpˀ���;��I���)���aD���t�π�==k��ʤ6C�m�¡��9*Ċs���b�ؠ$����y����W�����Z�J���������o�bQ�!ؽ�)�tz����f��i����b)c`ؙb�Z�U-� ^��>R�I�nH ��3Wg�����uh��o�l�Ne���L� 7EQ��ѷ�%�
f
�~`4��v�]pTl�|`K�dd�`�;"��"4R�s�K�����(��Q�����4ѱ<�m���>�����R4���Z�V��F���g���oN��:�}ѧ�Rj&����J.����?~?Wla�cH&r}�4C
J�F��~���h�=%:M�-�v�Z���%�YG,�r��A0�
��=� ����Z�-�|��٫�@M��"��eT��c�]�E�!B�ۻ��n��#��s���yv2��/3إ�st����X�
� ��N狶��~��~gJ�
�9jU򩥆�7"�0%h�d$[ R�b-$&��'����E��%��� �]4�`�9�
�����D 0H���b�gD���h6���,��y�š ��+ī}��|^\��.����U�T��~p�9�)�&�}B�HlL_LH�=��Mz{�,�/g���S^��@b�6l�&o�<[ncX�"������t�;�p�GM����Ϗvv����������?�����߼}����z��ǧ?��BvLV�O�� V9�.�;$�Y�����4�v�P��zrD�CI�r�(&a �&4��s�}�ˉ�K*5�O�˅��t��xX��
a�.��S�Kc�B���ĠEux
�9����|��_vF�4zmH��O��T�Y��,7oC;|�'��'v
X�9Fu
8�*6L�!B>P�׎t��:��=zc� 6&Ui�Ě7�!�U����H��`5ğ�����[޺���G��r�=�� d1�)ǯ�-#�8�r�w��^�x��=�+�9��fH�r��l�X�j�Vy��ӿ��{���W
����K�c��>:��s��y� ����Ӷ� �CJ*4��즕�O'�A����oo�BR�_ӓO�g�����e3$XG�q� ��7���ؓ�,9π
k��2��,��7�r�lj����5j�����I4t1ʁ+Is)1�O(E4�����p5�rR
RHU���gL��f��%\W�9��zH�
�������J����[��쌁I[��-�\�v���9�g
@�wo��o�`��Q�5�� Fa1z�������/�11��+��Z�^����HOf�.ױ��+bMhʠk
�j㡙Щ�x�M"v��/6����(�-�,#~E'{r���P�-u�����v�w��OJϿE���Ŏ�J���6�l���c-����l'��2�TB�%UX�^�R�[�5�g�h�F���~�<��O���l]>�������~�_pq��H
LB��c5��E6��GO�m��ޠ1��6n]���b��LwQ!��Th";���}�Z҂Ydʱ�X�#z�H����/������Ũ��x#*���:���=�/$eL��=ӈ4Xq�K�[����(n$��6�ǖT�^���4<�\fi����o�mnJD p@���۵������d�\^.�?f���*��{r���-iછ��������R��������?�F0���Y�Tu���^O~���{Q���C�VXƆwhS}�4oZ�0]֜�&��#0ی-`��4pK?���&z�<⣲�����6�ZX:�m��������\�Bqa#$WRòq��qx�4�K�����I���ɗp~p���o��/�R���g�GO\z��Cn=n��V�J�Gg���E�~ /��Xr�9��m� #؇p�f
�*5��)a<��P���zLy=�U$��#��1Wl�=%���j����z鄢P�2Ax�w����S7V����od��F�VR*�� �nm���V�_�r� > ���U2!=Ǹ�#9lJeY
؈��{�-�s�U w�[!~%u��O/h7�w�P�fC.����^ !{���H���A슴�� !Z���4Y�#�ʋ���`�����pJicKA���F�_2:���'3�Pۓ�W��n����^Ѥ�����縻��h�!��xļ�%�^���o��2p�kh���9��C�����4X\�� �m�t�ZH 2�� ��,/�(����4���]��I�F{l��u����A�L���X�8�s⊓�6+���v��� ̡yC� ]֛R�Nf��Sy&v�3�a�rL�Ch �I�\<�O��#S��'� �0��UGkE�7����-QCp��,��\Y��k�^:�({H��e�{��l�9�
���1
<���x.�c�mSuҮ�ܛ�u�(veՠ�������lJ�|H����+ ���E����F�q���%E7��Dr�/
�¿����=A���R�L��d;�=ޖ�+�>G�$5��\������/Xf�f,�vrv`8��-�]{��l�z�.�yܑ+����3���%4q
�0����SS�����7@�lf��שDۑ7�B�S
@�i��~���o9���r����[;#t��Jgy��Ѥ["�W��" Jqk�7�"��7<È1^���Cq�)��p`��?��oeTM�)0�:�þ9D2�bG�� �K��<�=G<$�v�Z��(:7b'�%މ��F�N�[[Tf�I�qk����ⶥۂ3�Z�����N�L��-O`K�r
�3��:�.�PU�'ҪZ�Ӣt�Q���~Ƭdb A��U�j`���D>Er�cK��SRȜ��dN
޿��'_�*��Q�U
��!��u� ���(�,pL�7pgǽ��s�Š�4>RX�
aS��"�v��'���
�d��Ò��i���X���R �W�d����^6���r�,0��&����e��P9T%��7�%d�DL�0��f=Xl(h������LUbA��xj��X>?܇ �3� \G�#}����XK��a��A�<B�i��C��z�Kki7?�$��:��nѴP��]c�ɣf�О��BȨ�@�م<%&�_�;h�Hzt&SĘHҹ�2��U(T��`�s)I���W��%�a�yľ��� sXHb~�pqn�cߚ�X5�� S�:�|^(-ӷ'?�Q�P�:7�U��k�y���������C.�B���^Ԏ��vTȟ���*�%LF���o�J��J�<e�+�tY\��L6�"TXP씼'��F�\�- �
2�����\/=���U��]km����E�x,ů���9�ѳ��
�OV���Q����Q��'L���멋�@���Q{�7iޓuR����%�<�@^������!o>�2���s^
ŕ�v�g&���KN� �n���#��%�e��^�oZ�H=�0����c�y(D�`}��~,��sr�P���}t�!�h�c�4�h-YN:�f/Ѷ�t{O4C
g�6C�{S���7�B���%F���G�f��ID���
ۘ�mm�K淡�l3�M�<v;�!��$[�~ƿYX�����A7vLχ�4 �.�NGRq�Ex�[;�;�GU���q���+|F{��iQ�va��n����n�.J!|�b��Lo1J�&2��D'���yu�
T3%o��%�� -��b�Р���臁Y�J���L��$t��U=���@�FP[�~�o��� �0y�9��p�>�i9� ��+��t���ۡ��mn��8�Ӥ�_%]�lLĺd{��Q'�U,쑪����
��#O���-���>��~�,�]�����Gp��B��
Քl�&�H���-Z�m�g�=88q��c§��ƙ䡳����]q���*�L>��g�z��$&b�c�`x��r8�R�a|cH3����w' �2u������RTmD��G!��G�(�(P���|�1q��|����
/\�;혣����P�VZ��d5_+� M���p��W�W��������_b����[b-M�J���E����Ł��3������8"DRž�*���YC�C��P1g�:B�&%������kh���aeӵ�_"s���'+ZT�U�8Mv�O�{�W�~��Uz^��9>���罛y�pէ�!Y��ߠ:Hm�/y����sԄt�z��D���/A4r ��
~oz�����)`��z94�
CC��b۫U�|��jz����e��o:�$3qQ�2���<���K��&$�" 
���!;��-����5Ej ������᧝�n�#���D���l�a���6����TA�O�:���8��M����/Č��8�TԊ�0�� �W�=�T�^
�Ot���Q�7>�
vt6�>�J���1� �Pz9�<�Z�݃�Z��b[�I89�,p�!@'E�[��z n��Dr+=�t�0�]?�R,�1 o��ӘV;�%6�ܖ�=����w4W��$NE\ޟ��[0�DfD:���Q.���������r��E}�1&�t$��"�����ˡ�f󚘵\2��nM�^��5�-�7ʁ�nW�[� p*��I�������P�PB���ʔdzp�Ds���;�v�e�,[�+���}��m��R*��
Iͼ�#��GV% �.���B��)�$j��L�}Öbb�݆%�3@'Z��^+3���A�g{C����j�Nu�E ?���l��Y���8t��@�3��Ϭ�84�f�R�1��k�s�ş�,&�br���G�*�1�!���n�J���2��&Պ�զZQD����I3w�U�rɸE��az�~%b$�g���c:���D%.^�R�z�<=ӑ��;�����`�����xˆ���:� �Atv9J��2���f����X��7t+�
)y�A�K
���'�z��U�MxHF-:.G�
`�ĭb�g|[U�c/A�g{-˥���fdݍ5�q�K��e}��#�,^��3�����\��9yi �bZ|BI�}pM�(,_����]�_'kk�;���m��aP>̝1�Y$JxTE<�V�i�R--1xP����"n���ag�h���0m Fǫ�l�;P�F��v���~�L9��&%&1 �?7����(]�0ډ!�O ~$��2�$�)�C�M���������ab$��e��faI$$I@�]5CJ���| �/z��ˢZ���H�5nЅO�0��[�� �3:��Rj`�}1:R��Չ�=s]�⍌D^��d��'|�A
�M8z�p���J�����4v�2�b:)ѯ�Y< ��m������ò�@Ħ�_O/��-��]���b̺ؐn%�Q�M∶�)�Y�X�z���7�|�h�`�ы�]q7hׇ��m�7�|m�t)\r�l��7άK�?�m]�~�D���vʼ$�4���63M��T2�6��|Z�N8o
q:���=5ԡenT6V�e�c<s�l��=�G���ը}�M�-�⛟�2�fU�����F���ۑ����,��� L��T�V�\غ�4L3����ٲ�"��o�;峢\�#�ʥh��5 F�Rbc��Ո�9.�Ci3�E�0����&�t��^� yKR%"�ȆTv��„ڼ�g�́����
� ������x�4�3�j�G�q�����q��k���#���8��c�h� �6�%brjB6*='�}�æe��˙3Xn15$��9�~ڝ�[m�귒�B<X?�ډ�����4C���&�XLO��n���=�wKt2��2�,Б�q̞��RV��V����h������R��fJ6�q�d�Y)��
D�x�zkMWe��e4mw�&�n���%��?
֫c�&�%����l�Z���o)ѧO�����O7�~�������2���#-�E��cFVYNsʿK0uD��2I&�^�ߤ���" ���"�L��P��M&LOr��(�j�q�u���yus���H��q��ppp��W�3cQ�)�n@�2ȹw<k�9�t �+:L���,��h���,8lQ���T�"d6Ez�E�n�[��)X��)��#��*�� @�t.����]�E_)Q�PS� ��o$ 1�M�0�ź
tu��67p��*��]F@���-��"��#^NcD��e�Q!e��ˋ�fV�-���X-�2�k�T����������kOK>��K2�ޓ�>L��.]'�mrgW��Q4)�
���4E���5�&K���9%�������S.탞
���?����l؞@��
�c�$'b�Kd�~���fx��uL�(��3*ڏ�����7�(ׁڗ��� j�(�����!�ǯ�B�a׳ ų�f90aN��!|���}�a~�n�S��D���9�P�|���w�u�����]��n��}�<��������F�J� �}��2^�A��ILy�X)��I��P� ����s8��M�D���{�pR<сw��J|W�N�/�lr#fmؙ���(>uҗf>i�lFZ��О$߈�L
b7��Bڸ�V�:텴my��
�K�?�;yZ���C<�-�U�g�&)��trb�H ��T�Y�Xkcv�����uX�mV�ڟ��R����=N3Q ��"�����דT"
��#�LSK���^+�p�������E�������:?<ɤ0F��!��DW0ɽ�1��{�k�Ȟ��hc{d�<{g���儠����(E{�%�3��JW�nG-�)�K�w3��e �b�%,zQ&$#�(��qb���kS�</[%;G��;"u�HЭ�Q��G^T$Ë[�T' &�F�."�x[�o�>҃.��ZꈏJ:Q�xZ?J�S�� x�8��,���9�qѱPs��L�ώ������}��c�>T�Z�O��Th����/Y�������r��T^p̛$su{���ϱ�LI<��}}�W��I�}�D,��z�^$�ln*g(#4_:�h4d�W�����fΛٻ?��o{։�/<X�Cc��hm���
�6�0��ޓ�-&Wq2��e�0c*x2���9��F��j�
~��x���� E$n��e��r�'Q�ea"u�š���|d7Gd>_��
X�Sଋ�a: *� H���j�L�/�.���� �M�@֔1����[aE��j���8����{2�$ֹ��䙪#�}�* ]�jk8GS;�.M�v2>�/�G�˧_�P�L�G�Q(�+D���}i-�.��}~�+>
��ݫ�Q1�����W͒��za��Z?��\�-����@�e��R.>�����
�B���
�=7(+x�iWƮ0�GtVYё��M��iK-��Q+T ���zzY��� �}Йճ62���y[�ws��SB�"�֘P=���s8pWm@�/to�*�eU1􁻊��"&24Dʃߞ�U�"S~u�I�Xf�)�_xAݨ�dZ�mH��/��X>�)q���:5|bZ͸GX�0��[a��oƇ5��&���S0Ԛ0�5�~"�;�:��̪�.^7m�21��[�j�*�g��F�*CR�$ �:�t��q�9bf 6����l`�>S�>G���Mp�qs��+�C�^j��16�������*|��+Y{v ,iX��r�z��ʭ�tq� �������<=o��f]��`�i^�2�r��%�s��BY���#����l��;��9���ڡ����h[��F|"��N�'N��k�� $=N��No�e9sU[���E�SZ��:��^{ɬ���k1����w�=V%��.��`�ϭE#p����VŇ�����
���Ԇ1q!�qV��:L,��i��[����2�x���a_�"��hqo��p����o�~�6?�!�da|����#cTHv�<�;��/)�K_G�>�`GA�c�)�~Gg)%�� O!��r�(�Ƀ��.�s��� G�O5H�e��b��5Zk_�I{Fkl�a��+t�(a��
C�y{��b�L�1���z5
s�~�oX;Pg�j"��M����Ma���^j���$�Q}����Χ�� 1�88���lق$0+h"�[bA����������ECM��Y�8۠?��=Gv�%�P?a��'sO:����1-&�9�
�8H� �]ErE�b#�&ɡf F��)w.�����^���ﻐI�L"��h$¤&)'w��8w��Ӟ��'����%�M��sG��i��Y�oQ^u�RX9:~� S����,U���d��������.�D5½���I ����1�c�Ӝp�Lw�VG�Q�Uΐ��:�ؚ��9?����Xo&[��x\�ԋ%�$��^3�N��x[�V�V���zZ*�o��q۩_= ���٥�}��O��F�j`�����?�u�z<&әN���֗�SiiL}���ٱ8��²�U�3�?RG迱0 D��?u�e�t����s�����e��j������+)�qHd����߬i��j�ע�V���@���&�(זD+�L���y]��j_ZH~��h���Ps�*�0�O�)7����O��H/�V^�e;�z��Sz����H�$��iW� Kf?Sg*�M,B�9��i���#���R�<�������?AN|iP��,��`��a�"i� ����?�x7d<򎲺ErJL�Y;��9�׏)��%0p�^k�L�v�X4��B�Q��WU�'�k� D^����o8�r�^lZ��O�GJ��N/G�9G���J����ÿ~& "���:d������� dT"��U!�g?�sڰ=����|�<�s��{���u8��������r�BZ����@A.��f�x�Y��R|�l�E$ѿ<�����R����qC�S��i��
a��-���L�q6�ۢ^��s���\���Ȏ��πL+/��{���t�vʥ-�O�?�qe��g�
� *H���|�e�Jh��0�Bv#¹Ǯd�]�R�ݑa�M�սHzN\k���gX�E�X��$����e&���i&Ⱦ
m%�H
�/�y $��d��*���#���N/�i��EO^>�l#��ٷ
�ȥ���@>�${3L�n[�i�8�*��ۀ�jxJ���c.#��X�ބ��-�6y�/��q�#��#�"piXP}.|B��
u-@���2 |L�� +���cl���f���ogq���S�Jӷb�3������)����t���ZB}�M�L�He�를����qѓ����ق�uET��G���J��i���Od�TH�6�y%���6��UsNJ$A7+Y꘺����VH��`��5�Lc��.�9Ք���Q/�d�\bT٨���c�����8�"%��q�-���a�n0zԠ�rچw�����Ы�aHT�l��E}9i�o���%%c�Q
���+���D�,T�JDXJ)d�=/���0ю�IA\u��1'�{ �H9�5��������W���ս�w�F�0���W@tvLZ|H��8TǏ���k;��Q4> ��I��������gw5���w�97;k@����ޕ�?�Ţ�x�WU���L�U�����3G�e�^���$J��,-���:J�(˳$ʋ����*�˴ZD�K��ɺ����ȏ�4Y.� ���x]�y��n�$Z$E͡�v�!^n�r-�j]N��Y�!Y�����?��2���8Ɇ?���i9~�~p��N!�p�q4�g���:�����I|���q��*..Ҍ��Oz�mV�FZ��,��^'O�ֽ���^7ڋ�y��[C����Fw�_�|�nԗ������*�쮯������:� Z)�� (�h�t�w�?ni�TN��J�8�3����L���2���F���δ,�,�K��������e��T��2=Oa���"�͒ �J�Ak�؋�r�������gggg�TUR�Y��4��D�Pvg�g�/ �$�������� �l5O���|��y�������'��ntƽ�*�yz��\����}J�_�?��?�Ϫ���*��*��������I���<U�����,�jSdQA�Ѻ@�����dU9|X�����%@j��p�<���Йo�).��x�_ī���z� � �>���E^T�ME�?�Q���(����U�������KMRc;;2|�t+��O��=�]/����K!�Mq�����au~����2����s�L�I��m',b���~��-���Z�
�\.Rl/J�Cr�UM��(���yHG��� �f S�Y�[�Q^�=I� �{��ˍ��?~�OG�!�V��I�G]�2]������4���2K���t��л� ����p
������.q��5�4�J��3Z�l� ⡓ƫN3���> 4����+|�~�ۓ�u+��O���ے]�Z�!8�4��n�]U����*v˙/g~E]�~�;ɯ�2��l ,S����sx ד�O�2�a��@�i)
�'��"�f��5�X9�gp����_^aY�]}��[�'<r(�o� u��T����>i0o`.����"Z�$ .����.Y�x�#i EDE���$�Y_�DW�"͒y�YV�y�_�I!�-�@��^�L�ᦾm�]\����u�}�x���@��u����n���`��P&ܙ_���
��`un�Jma����V6�s�����U^V ���s޿N�,Z���*�%�!OgT>�
�q�_��u�������$
^��7p��z6�����K�T�H�M�#<�o��
��Y�O"&�"X�B�KxcJ�x:M�#2�z ��Z��! m`�s@M���Bͷ���-gn�h�A���У��*�����r0K���b�����/���0�d���γCY!����| {\]�8T�a?$q֥�Jp&ː�O�&�58�-_��p7,�7�my�v+' ��S��$�.z�%���Nd0�yAj�C_�p�z�# ��õ�TB ��?
��G<��<!���E��/ ����w��:|��b�yt�9�A���ߵV���-Oh�9���<��I��L��x��[Z��[�/ ��f9���%�l8$�4�p_��H��*�^��lZ�K)! <<Pa�A'Q�
��ہ����#�'W��f�����%`^\��H���}X_1DC�e�΁K})���)�k��طH���x�7���z��}u���j�o�x��3x����~�Af:�������|TG��9I@P���p����D�Ix�|-��3� �?`�9�4���%��0:E���x!D�O�<����{����d��@�0L�������/�G/���_�P`X8mE,�
<γ�5��6YA��hN$X��^u�!~z ؏��n���;4�c�a��`4���0�M�0�x�܆��y�7�%2�$ۡYuܑ0�@��̛�@��$nOn *�C:6�;�,�*��/��{78��$�2}!�`�s%
����1���J�ώжxj�-�Xj���c�i�O���'NCo|��!="�v�7�#R9 m��pE ��#<R�1/�˸J�9�XVtRF��c<���>��Z�r��������غ\����R�8�E�Lu��i�zG�ȟ�ݡ�C|\�E�G���/gn#�?%����"�����o赬D��_c�j`�"~A�/�,�B7��D��p8䷾98��M_�p�u`w�zH���@�n��s���l�/��0[\� "�]
��W�q[{"E��Žƀ}��2�߲MfX�~M�� Q�M��U�e�tth�E���� ڔ����rn�?�~ߔ�G��d��S<@ׂ��!��u�p�zק���C�FP@!"D����ADB��op�����=a��Z|7��x��|;͠�tvۀ��o �ݿ��-�_q�� � ���T�M�
�D�L���V�Rw[��\L`g�� ���$�_Z^Y����]WshyQ/���c�g��E!�� �^GP�����dZ�;X2e�D�����N�t^�xYA���/�UG�����U������g�ݛ��F���jm�K䪂��vL���aP׈ � '�JK�*R3�/a��Y�ᄌ���yz w����Ž�����*�nQ���h|OSGd�x�J��%c�zS@S�kxpvn%^�����EΠ�@�H��hE!��앏
���"yߐ��_�;��:��P`h{h@EN^�rdX�h�T�|F'�_�t�~y�zJ\�4盪v�*�Ls�n��7^N7H"�P�X���rROA�%q�+ �J��|�ڪ??��Y%� ������w��A���K` �W`q��t�k M��c ;��PVj��p�2��P�������F�>?����/p@�/^�}2��C�]ÆT��W@!!����@��E�."�Gr��`��jLc<���3�dČ�~G5Pz�E�'�� �V�A���xR�`mW$�
��h�f�ȯ���@U0���.]�H���p5E)ruC�����_„)r�pB�$�3��G���y����v��ٓo���upx��p��bToWoZ<�Z�o�#]���Ү_��D����S'x��?�$=��(�ݍ/�2�� <�pm>N�,z2���YٕZ��~�"�E��)}��"�����)�n���6+�$�����)�{\^6 U!���F�D=�D�I\V}Q3JNYÚ\�D-�
d��(�y1��^���'����9l�耥juH���/p��$$�|͊x^϶lZ1��K���o��*`����Н�V5nUIY�6�dV )��2{��<�c�G�Ĥ��M_�g9E����]X�Q*�Y\�w�0~�hSk��6: ���ڏ����#l-�LN�H<a��p0�տ��Цg%ZM �������M�R��M�Oi�T�Q�2Y��k�RDB��0\E.]��(G�Ty'��
aT�/�^�pLw��Vz�,�M���ʁ���(��Q�T㸘.�I9>���f �;�f|�`t��������������x♙
�ۘ%@~)���.��(��
�Ƶ�|;Aq, �׀�M�bK��-HȜ�O&HSZ>w��)�[�zH�W��A��
W��V(ԛ �5JQ�fZ1��8�1�qW�˘�r�=�} �[��_ b�Q����2����Ρ���P�n�sjb�}!]�8/���88��L���P�.6Y����XؗRQ�|�E��:�8����?<.�n��F?m�Տ��;�Z��X�xQ��&�#a�G�rZ��،xh${"4r��(��"�.C
������yq�m��(l;�����}B`�!a�XM�Tn΁��Vކf����qv~��ӛ�hQR�>��"�^�?�/�� �!Z�h?�� T��[W�P�ٰ������L���3G��˂�B���X2����b�?�W~bhu�,�]/(t��V| -
�a�����(^�<�f3/!���T'�H����є R��h%G� mp�@�o�! `? ��D0��t���Dd6�Qy?0^����;�Tߌ(0t{�^�,�2��yL� �B�,�Ѭ/��"u���]��,�m(N|��X�Pne���D,?�bK�S�d�H+JCvU�w�">�A�E�N�����~��΁�BfH-�cR�*]�
k�r�8�&(R\&h-�t�|r_ץs���n�˝f��(���U�Jb�Hj�-��P�Yr�N�
CQCM�+�u�C��c�*ĕY]ڴ�+�g�ZK -2�X�n �|���06� H����"��!��@]V�@���_<ZJ 8�� ���+y�p��� ��H�d�0\ݟC��x�
Z�3����ȸ��y F}h���M
݈i"�snD�(b��wx��ej���}��t����I=v�i���p�q��T�7��֮w� ����k6�j���d���,T�T,��2�cW��pw���o.� �z���;�2�^�'����{�>��a]@�x��_m�޷_��㥺����P�^����4F12V2\�6
�J�麘��Ffqq�����w��oi�]8�W�ʚ`,d � 1
#��|�>H��f����Y���Im;z?2�BT����fho �8�T>* �dz?zBS�T2�2�ô�F�\�����5��~0��@���3�Z[t[ж�^����t�bnY�.��hF�E4銯Ģ���tSR��Ȇ%W�q�i��дp�9[�8d���AϭĦJs��w�nFy����r��[���H���2`f(�}[�:g�TI�B�nk�x!e,��n1 ��x���Y4K{���J�=iK!���w��u�ÛǕ��} �F����͍P�<š��[�2kh�-��g��h�^_p�3& �t�^&�����dg� oH~�-lp}ϯQO�+a�KT%�5 ���,�j5�m���~V�d�a8�?�f�IDu�������ckX���z�H��ST�+����W�^D6��r�n =2ԉǑ ��B����@�֝�G�6���T ��i��V�]�CA�z�%)��#ᤞ�Y $@���U�p��BG�2��8�:�D� /�ԙ��Q�����?q��Sh%���_������[�4-�9��K��qg؍�S����~h��O��*��%����|�!�6�W�>���(hk��Mz��v�;�� ���w�/���~��t��b(K7��F_�S�[8�A� � �X�|J���8Zi�\�c������W/@K�Z�����7v'��Ө�0��nB2�Y���
��Y��ލ�����^�Z'GNq�Pa�‹����y.<a���!�s�
�k�-�3��$ID�j%�D�PSl�A���Id�� ��b|[,-�xm���wT��[���7jNXۭ�Y�v���qb����6HƖ��h�=�l�l��SXg����a��d�!4 �!Ć���ɥP��H�~_-��X �(�֟a���� ΍����@�E�Š���nW�� 칆��4�2bn_��Ҽ��WM_6�����;�ǣ�D��^8TڍD-�٫�sp���, ͻ̩E�ͥ��7�J�+/׋�'���H��w���}v���s��Z�Q])ֶ��|e�����������|�� d���8�f��6���h��e�^+�y=��GK����wzw���ug�/�p��G��a�<����BT�1qBr.��SE������C����C��B�UOj­8r��H�0`h�{���טr�]_��?:�M��d��\R����e�T�2���r�IW�2p\�F�&a��D%%�#1QNpb�m�l��# {$g'�4�yr��x�u"P@�e��f�=ʾ֬&[R(��M�Ƈ�W-F���U�頝S�̅ ��_��u�����SJ��юn�4dCg�I*�x
�w�@�v���@�3�*Ťr]{����:�Ӊ9�M���ybO�AĞ~6H���l��#M���<A֙�#G�'�J����B�C��L‹R�M&��9µ!TZͣ���iS
�j�)q�Wܰ�ߊ��6��ݻ����o�VTsY�p��ʳż��ˋ�K�&c�T�$y�ң/�#+��� 9o)�D�f��OOr��1�D U���L���sf-��ا�!��H�=ǘ@����'��K��*J<�v��=e���Z���~�[ړMp���t�aZƲ��"&�D/j*�'��P&�x
d��W ��,��o���� �`Z��j�O�R�����ș�J� ���8��Rw�l ��u�� }T��K�|+ls�!�� ^UY�L�,��*n�5
!��~��I����-Z���ɒ1��w�H�H�L�KO�:)ɺ0���#��-�j?�$B݊(���/5T��=?��8��}I�ؙ�g��Zc,���6V�F�賉@����L>3���k��e���V�,�m�B%{ĄC�e�=$�5�!�GE &O�"�eV�b=q@+�9�i���\�KJ���Q�#� �Ӂ�6��ܠoh�di��s�c1���k
���~g��?"����Ș�JI�8��%��Z�H�Q��h���tC+�W��
�?�����lț}1�fBG��ҟ�3}��2�~��޲E�(�&:uFۙM6;���U�u�?���Q��%�7����3��U<z��SzS���q�4�ȱ�N&�|�g�����C�h���d�ˏ|>���Z|����o�� 4�X&h2��J��=�#5�)�/��}��q���p���pZb��j��?N��#:����re[������~��<,��������Z�6V@���V‘Tԥ�~�W2�W+���o��?�dnj�dtH�ӓ2&�JIt��[��* rS^7���P���c�]����nƄU�"��^��c��B��d
�~A0�R֍Ua'�,���a����׈�?I�%"��M�&���#�o�od��� �dX;�IC����d":��o�P��\Q�@AJ��������z,��iFʛ�j(ҵ0�n1�ųTL<���\(�q���4�օ>k�VD}P���� 7O� �F���{��#hK/��_=<!uw���m�`觑 �B.2��?�~�D6YE�`ɀ�J�?�>f�P�\��Gs����ѡ �1�o��y��]ܙ��+�v�����G���G��=�=���f�8��[�M�^?�PrQ<����8s���e�f/�����FK� �A4Lou!n�q�=����n!#�_���5����Y���=|��y(|]�� {��U`ߺ@K#t�P�
4h ����5L���M2��&]�^QO����?�#Ń��Ѽ���#�Xn�,�5�KƏ~�S8Dݿ���#��}@E{��"\;}y�����������m��۾� liH����_p�|�J���u&�M;9EݾE�^���~#2�/��� ��d��?�8-Чȱ��p��!7�� ��w��VN&�ΏȊd��QLy��Q�:O/6$����#m�E^��ũC�%ۃ��h�/�"�[^�V7X)����j��E"z�����rN�b �̋#��0��֏�W�ˏ8�&�:Py����5����}c�ˋ�H��*"��z�"BbOB|?_��Ɲ!Q8�u�{?� Ru�z��4���.Ya+�,�� )i�z8Ð��Υ ��p�J�,��S��rD��;#5/KjbFq����U���V$Sǜ~8�:����h��A��ÁqDɏ�c%��~ʧ��k�G���d��Kt���ae��3S#0�sҟ�F�Ugwz��DB��NX��ƫ�A�����m�[�� h�D����˟hX������At����}�s�pBC$��*��,���H��+�"I|�o���z���۰��"g��ې��b�=�g��e:2�?�9e�#���������<|��������ocz�W,�j'�\N�tMM|�?;?��w�2'����w��������u��5� ^���q���og�wǧ����jx2��o����6�mx�7�C�8\��ɭ �o&��f{���cq���$Y�k�7�AW�e��E�����l�]|A
܉(�+�U:;���� �Z�'�͒��U��6S�[��_E�53e�C�U���e���ϗ�'���@�O��E6�
��N2���o������O�� _$�����eU��ço�������z�����O7T��`s����|Dʑt�O�(�~7�t���[�A[��zu�ѽ�%ۉs+Q����U6420*� ���k������4�# �K¢�:٣&3n{��Y��!����[m���SrGs[�mF�_>#XfW���.�mӨ���4�UQ�`���a�yA�:����A���MДmV��J��&[�xN=�݀�1\#ս3 ~t�ع���D\x�R�U�D3F�?G�D^���y���"��W Kٽ�(�ɓ™�Ƣ4Z��Xċ>Z�s��
F�Sb og����Q����C!5�).̈6KH�1.�4�����f�-_ԍY c�Ӏ5zn��F9�ɾI.�k��f��u���G����4W�?��.�5�A���? Dt)6k��½�5�!1m�̘� ����m�Q���6 ��=���s8�c��JA�|��B�`�beV��p��'���09��w�
����]+�����&
���c�3�C6C
༕� "V�
>8������[&�e��_�khI,�I|L�\�lװ ��5 �����<E{nd<��������.l�b�V̸H>}�ո����sp�I�z�����B�g�l�a��,���˔��X8,7Q��Z��N��2�Q�9��Q�8���mVu�-��
h���ζ�������K�ܫٿ?)�J�������4�I��d�"�sP���D�I���MH1
��4C�,�Zw|�P�/M<~��1A���gϹ @��/��������dA��W3`��������~�cݲW�����@k;|sǦi�������H������)"�
;�y���T�����O츙J�������#�ev�_w�v��ö�VО��C�_���8�>�U Jλ�ME�YZ�2�Q��&�N�C�w�X�̕�C�.&[sUd����5�m�ۂ�%@i8s�����+h�I4���$����"���&o>"�� gĀ��Z�� ^-�Yi�@�(V����n=柷l����F�U�HӞ��,�_Y&覾@�.��y�1}Z[��?`��ƝH����p��u����*�R��1
��)�LN�C���:?f̀t��t���i�C�̗X#R�p�YB4C>�If�� �x���1���D�L* ��~��� ?I��Q��MV�]|?�%U
�!V)��K��bzJ���C��"Ӣ�<�����&Jrz��  ������ə��k��;��OW�ˉ������������1�,�B D@E�`�A�z�W7�py9Gh��fX������i(��R�%�a���
�����bX�
� 4���hS��\
�9>!kA��s�qp"t��=[���R���`�=��p�XrcJ��5������U�����ņ����e�:�]�S�{ �ܶK82i*�:��$��$J,O�+S�VP�٦ U��z��m�ȨNx�Yw�B1����8,�rNde�h��v#�pv�LK?�S�ݿ?y��p�bN�4� ���0�V�Zv��D�H�M��I�$�k���M\ܵ�� y�U�o4�n��F���i�T�j�#:me�Q���Xޠѵ� ����"��W��b��{�$�ӝ�w�RN���˜�ձsܛmV��h�~�K`�rI�C#��X(t��2�w�ޚ:#I�d]�X��M�z�jU2�V�|��:��3G���+�heV�q��$nk�b��G��W-\_���Ԃ�
��I-.�ѯ�M 6�V
m�
.���i�Q��+�v�I��7�h�?�D�!���g7̂��9,�]�J��P�����<�U�t�pQ��R����|M?)8�m����7$6�߰�]���
�_�0�d ⮮Sxq\]s� �v7�:Dsg�gSr��+ƹ��y�b�*X˜��껳�ʼn�a`α�ሢ�His�,�qo��䫴��m+ҧ:N�a�ϓ���M�� z��$9u.�o��X��<g�x���ؐ�M6���V�È����G�)R:h*��NΤ��5����S1���ft�4v�|���?o^�h�n�g���y�����J�C:_&3��U�Ɉ�Q��s*)EB��s����{)YҌjg1�`�2up4��OW��,���Xx�qt�]Xb7|����4��� �C� -�y�� �6�9\��6E ʴڱ4J�-so%��lnO Bч�K{h���(tB�(�h�'��$E(g%�y�����h�>oD�0yA��P!��������C���h؈avD
����o�PF�廉��l��w��t���JD4|��[+ ��
���'�o��?����S��N`NeފNyB����;c�O�b��ZR]����X�aDT�Ŏ�Hn@)z���|Էk����xlkM�+i���C,��J�=�Tu�QJ%=� q8c3��tI݌]zq?��LW?����`*��ﺆ��H9o!}�:Iz[�(�?� F(�[��b����d��������=g;���4�'�e�d}n��t�R����&#��h��$H&c,�A�(���;��@�ko�h]"z���PF=2�;Fv����4/J�Ap@]�%�?h�Ft�
B��;�V�F�� �O��r�����z�o\C�����lk�JA#�&>%c�ƈ���[��&&�0~�
W����_f��זD<���A�5��L��Y���#B�O��g���,�t2X�0��V.�D�|�ܬ[�2b�Tq�?Sը��rE?GE��?`[
��M�(%��<�f��7�/��2A F�����ϰ`D(-l�
aYLp$+�J�9�c$8s�����P��a����Q�,�fT��'����r��9[�G~����E1;^�����������[�Sh�GE^�CQ�;3 d�iLk�\b<�G���)m�f�kQ��s��Ia>)��<-��SI��O901*N���#I���S�Z]cO�4���u�5N�5� �HΊ���+��39������mٙ*�XiX<�A� Q��vǡ�ԉ��G=��]����Y�Q��5Op~���Q�Xz?��g�b�p6n��[u�GI�w�.?c�Z�+����{�́�O(���L����^�e@n�q���C`as4�X%�����]~Cr�!;w"ϧC�j��w�<ұ�F�T�94^�<F+°FӤχ�Di?: =i!|��r������\��e���x��H8�9���P�p!%����������ZO���jA�#��c
@�\�DC�ʩ��d�B���Ьzm'qs�X�4�\��hB1�3�7=0A?M-Բj�R��s�a�4��Nc��T���&��Q��qr|i���ay�\�Qo�+ʷ�S�F'Q+2��vo�L\_�wZ0-*�zK.Q8�I����…v>2f�wM<�������G�#���ipg�8��X�/C/���)�vzpV3<�M�O���!{����ԛ�5���
�@���=o&v]���,�I��¾ 9��?n��6y�0��F\�E\[�Y9ZIM�T}9�?""R`:5���N=s��t�m�ֿ;�( c) m�TяܽQ�a?�,H�����"���.��^t}�Q����H&���qz�&�'�!+G��0w������%\����[`.�cѥ�8�����Vhm��/(�7;��3<�D�k-��*$2Ja�ƭ�Wf��ExX�G�)0�A����(=ʞ�����s�t��0݆��J[fH���%�Q� ���[��w�g��+�I�\���u�r��R/�1�1�d��!�b����:���sL@_P���WH�V��m��҃�]9Z�W? ���@{|�9V���,�����50��܉������C�!W��T_F��
�����z���?s���n9s
S7�`�6���?a�7]�Y� ؁��d�3�Ћ���z��r �߫GL�-z6*6|Cƺ���>��>'t�kK�����qU�=kxH#������
�WZ��m�����K�o��ʶ��R��%T�:�Q�M��(�!����<���/Ee���OnX��J�Uܲo!:�Be��Ձ*�3�u���DB+
{)x�2��H,Fp�@[�$��I|�޹�k�wʡ�B��Gz�2�]󁯳��/ G4í�=���#���4n�@�^v�-�gC��YG�C-
�w��[���&��g�Rׂ�;�����P�a|��HܪA����÷k�տ��z�+�OH蝽���I��В�9g�,��H|I�E�cD��Z.ͥ^�;�[o� om70��VyK����f�ٮ�ʺ{�7�����k�-����j
0F�I����W�$��O�K�
P���3��DN�M_���X�=�p�_��.��0mN���FM� � �EE�|�6������P�cݰYVPS��_>���b�03B�k�A)f6&�@��3R~��"~�����3�9���f�F�&(�q`[��]�-���3���jmPS��Y��
+�����8�xE��t
/�0cҚ~���0�-�?��Q��������u�éoa�S��Y1�%��z��ޭo��=��EA$'np�����{��y��t�n���ד�ٓo؁�u�Z~�D���RC��e����(�'K0�OP2DP\�Xp����X�^IDV�����_�0-�cha<�x��,����ؠ�;�º��>�'q���?���FS+�wv�dʼnx.��C�>�|&���&�d�Y$�DǑ���cn��,c�����;{1�[�vw{�A���k��(�n.�u�Z�CL1l���j�q�<�y(G!:�?�|����%d�+q�v�����nh��� ���Q��U�}I�0�K��J!���z{N)��A&��k!��5\6J���!��f�_��Ӽ���Q�Z�5D<�������#�u� �EX�6@؋��/�T��Ӻ���E�N^�@�D�~����y�1 c�2�%��NX�S1VwD\��8R?wt0�I��<{�]��.�*?J����M��ƀ���VZ/;-Ą �C��ޞ�-H y����
�9
���Z�qD:F�Yn�)|���I6�L�"P{�H{�='�rD۞������*�C�Ξ�n�şPD O8D���Э�ۯN4f3�\��dO馔��C�&FϪ�2�h��'+ _�(�84!g�ȪtH�9����z�<�\�mjj��Hn���ǩn:��x~�s���)�L*�눯@��c/��ù�2`���e����;�U��`��!H��8�����9"Έf�)�0��>1���/���-1�ڝ@���&�pG���J�_0�gc8F蚷�� �z,�j�i��`J�C,��Z���mV��P�g%��H~�pJO�օhL�;�–ݎ�i�R}�0�"�!lim+�=d�:�'���A A̮��ۆ�=u�Y����R8Ř�4�����5JN��{Q/j�J�J8;��.�����_ǘ%���&�N�a�cS ���*��c��QL�lT�hl۰t��J6ƀ��?b�%�ƨ3�h
����D��S�hM��־!{�"p{�`g�(yrDŽ�bu~�g���٩QG�/���i�;�i�U�* J*�vKMGkM�J��sh� ���0-�o������d�~y���S�o�ܶA琂�xɪI>C�zc�ϑ�j�H6Q����a���
%%k߆0����Gz�6M�[T,Gr�Y��?�3G�x��t(�/C0�A2cէ}oį���B�:�Y-���3�ƶ+5��h`���6 ���}�>F \�������PI(��F�Ĝ�W����ac�
a��9X7�p�F'F��S�!�đi\��6� �Hڄf5���-��N2@/�(��1� K���$��,<h<g�Gz�0iH}I:���@��/4�)1��wD�Xeyⳏ�45�Dw�aD�c��b��_�� �F���d�v���*����!�Ρ���+���J}nS�;��1c'VQ���_��$b)i49ewV2A|�B�Pf;�����ކ0cCI+2���S�E���+�}����zNWT�֜q,��(k�9�y�����J*�r�A�cĆ�H�T�)��=�ԣ�vB52�X� ����Q|��i�=vg�|�3��D�[��.%����k!F�@q�cfIL<1��1Y����q㡄;��#�U�����Q��N��U�fh Q9>ag�����$
gU�3��Ġ���Ç��P�) C�pД0��[2k%�t�+؀\��k#"�Ļ;�*jڛ���Y���
�R� N�iľ5��&�IX�^�(��̘|)�>Ü�Ə�+�%n旉�^�$}6 �
��)h�)��q�c�n��J���~@���9JQ5��֦�D�3�㠰 g�����PD`�$9�[3�m}-�%އ�ZpE���+>��Á���e �<��#xB�@�;@�<�Tй�� 藺����}�>K>4�\Hr ��1���h$Vy���`#Uyӱ"��6�����_�q���>L�1�7C]-� �0�%Q6�́ � ����9� ��-F�!���jW���1A �;9b��W| �*_&EL<+6MѸ~V���8�6���g�#����o�K�%s�@�ч9���tqt8�2޻�J�2��
f@��6�����=�����MJ�e���vw�{�!�6W�{DN��o=}�e?��NP[���=���T�N�=���D7����z_ǩU�S�5�-��ȡN\F��B�׬7��կˎ*g����"�Y��Vk�`j,����@<�t4��)$�^o��Ϯ"����+�jgD���Q;:�,��Y���"�/�~2���7�s&OA�R��y�uO�?%%�n ��Q 7�������SZ: �m�;��G����k0���Jv��K�3��Ď�o�D�1�q�S�bfW���1�MG����t�Y]Y(.8���朴2�R�D�6��������3�f�:����a6��F�E�=�[�Ҙ����%�΂�͜D��~5'$���+�6�{wZ0�A+Ω��On�H�8g���N+��TX�gi��1���<��1&~%(�"��r���$1IA�
�?�����{���Nz'���U��o'�9#שPAāJ������~��a{@E&����Ai4��6c�v�3�\F�|ݓd>�dN�6�aS�A� 4a9�
�Ȋ>�����rː�zo�zO��k@)t--��ǶE��q\
.ڵANL|9
q�������^�s��`X �=��@ q�QS,D��QVRɐ�\>�K]�xNMŲ��=�~���������}��-�����U�
��F
<�0���^M�%��}T���c����`��IBW�倢i���^��{�.�[�gzD\s��u��4��8�*��Ǫ��8���_v�+�U��?��J\XZv���2��]7c�9E����k��-!n��ij���'���k<aB�p@�\��T���͔"� H�g��l�/0k� _|X7���1�B�p��ڊ��V��{��o6l@0Zg�Pr�l�Z,�tj&ۣՑ�,��2��)p�� �N� ��������$RGU�,����zS��x���%�{M�`��V_g�]ӎ�r����fe(��ٓ�@�TX��<[�ݜp��z�-�8n�Ʒ 9�l�_k����z���_��H������7G�ۦ#�"`��wK�gV��?�����Ќ:�pS�.BoGLˎ1*t�ˈL=J�mL�4�N�֫c���A[�y��ŋw���Śv'$6���r<�]7����u��,�����j���h�bA/�5o[�Q�iԅ�5 MalіɅ�P��i
��hs4���S�F�рJ ֭��DA4�-���������r��0��vkZ�諌]�F��H��#��]� c�g�������J<^>Y�Q� R��.]0^��Nǻ�D�G�<�|�Wk�UWm�oL����%��������ވ��6���!Eo�*�������o���:�ҥax���.�L'��PĐ�F������� @�[����dʠg �܋������o� �0d,���mi�!U��Ζyi�K[`zW _�(PmM�a"����Gk �!�F�\�G3V\U��q8 [R�ж �Xov�,$Wz�"���i���g2w F�]�~���MM�PBܥ�5��涌��cG���Z�h��f�~ML''�#�`6��&��_� �f�M��Ӈ6��=A�p��;��� )/��B#6J}�H�3��v����z��j�V��cj[dGb�↻kwFF� �C�ځH��YI������?��G�z� ���l#���i��T�}�::�\��~�7�"EEg�zZ�`8k�$���o��%|{���o��:-���.;ƏH������ ԃ�������;��Gp�t�r���բpTˀ��?|�?��3P��}r�^�p v�ѿ�Z� /��5�3���Qa����0:;����gzP�.����,F~�<��{�f����ȫ5��<g���yǃdg��b�Iu�2x�F>� �~6E�6�P��!�"&9��Ӟ��b�4�]ň���r^�����~����rr� �)
k��B}��`E�?O��������+ N��qĴR����bH�~��k1���m4O�\�KX����<]��u�F�1��ޱ����)D�y�=jNL�A�VPt�����e��M�㴛:-N(�K�A#e���]�8��K^����ԧ(�ZǢ#q��y �gO@_T[��1B�HR���2�`�g��1Z`�Qu��
����\���D�с�x)��g��ˍ.���=O�͚�*ޡ
�L(r�lN�%,�G�<�Ys ��]��c�����]�H���X� 7ct�B����kM�E�Q̂�#S����.�����Zpˀ���[��I���)���aD���u���^,j;�2�ݐ"E��ph�n�
��� ���>�(Ʌ9:/�@�2B�
��^�Sk@^��3qY�#_��Zl �3���bJ���iv]$�.(�2����כ5^5�R������}C�9)�
)�pf��4ѴڡL5���m���>מ ��(j46������L����������m��m ���L~G$�S�Fj"�z阜E�-JT}�k��&Z����k��1Dw�J�X�jIZu
M^o���o ��%x��L��E�SJ�G��e|�7��� ��d � C2��[�jP"5rm�RF�,G�� �@�iR ��j�sdf��I6���J���.��@,jѷPl�|Ff�j5!��Э/s�:u �b,� R���/�v�8:w��Λ���Fp~��.�W�]n��c
��\/�Z�/����zǔ��cԪd3K
�oD
aJ�"NI���0ZH*L�iO�a-ƋD �K"��A���<hj#��s�����%>�`�<�
j��ψ.���l~�fY��҅5A:�U[�W�޿�Z\��.������T��~p�9�)�&�}B�HlL�OI�=��Mz<^$��|����s�H,`܆1i�F��z�a-� �߇���p�ߡ&o�n����������w�o�=y����w/^�}��>���?=�����m)�U����dV��|���6��#�@�����ѽP���)�i�
M�\a�rb��R
���z��)�(%V`�B�Mf�����حP;
&1hQ^CfN��60�:����3�^�҆��'��{?Up�3:������ɮ쉝q�Qm��s�Ѐ��5#]b��8�A��X9��IGU1��
`�i'�� k"X��'��.��䖷�}{��f��i�k$Y-�u
�� "Aˈ.�� ��q��gO�~���f���R�\#3��֕����Ä���n�;����VB��%ֱ]E�J�9�߼e�5LyS�i[̈́�!%��\��JۧĠ����oo�BR�_����g�����u=$XK���v0��0N�gbϓE�!(��l�8�<�j���I����N4�ӨA~��c&���P(�$ͥ��>�xI�R��\l����I5H!U�kGLb�1!`d�m�p]�� �� �+�D����+�$F���ߟ��J�[޹6�u�������= $� �Dѣ�[w��b���s>+i;��cb��*VvA�ؽn[K-摞� ]�c��WĖДA�@��C3�S���D���_�:��u�Q�[YF��N�䢑��[�8�{��m���k�����
e^};�� � �Fb`�|﫨��L,����{"l�������q�B4G{{$�=��t
H�&Ba�1ȫ����8a�r�(���^+�6!6�|�n�y�bԨ?ڈ
�9�$khX⥤�i�\�e����`)�`+9X� ����M��%������A�Y.����������"��i�����?{'�*��X&�]~\_��j̥��
5p�e�:�xr��E],�;����?�{d*����Xt/��{�����:���
c��(6d ��&�1�ߗ�C����ƻ�S`�[����JCn��Gӑ�D���C>�瞠�&K��c�V΁*�����V� �P\��+(��qQ�#��4�KI���I`g�� ��]��*�z���|)�Ѕ<�z�ҡE�u(��-:�8\w���iY� /�S����r:�+��*F���ME�"4��!Q�w�mp�_�?�2��|HPһ���p�����r�#)r��:O3#%u+#@!�G��8������;R��v lm�)%�J�hإ�㩞*�+�f���d`�?�t� H�ѯhO6SYl���[�?zQ�c�
�+Is���}z�����s�t��dU����;w�"Ac�;�)��jd3"�&=ĔM�=���NSTk��� �1��e,�͒���h<�ߵ⍇3��$l�^�'���\_Ѥ���k�9n."W�c�21���o/#�����9���C#y~�1�sݠ��&��5����d��Q ��@��
�����B�[r�&�4�����+gF��H�ϖ Z���8-�GW#9���ȼ�Y<��{��!�!�� M֛�:R��̰H���<���0b9@ԡ��/�P��!����
#Sj���3ʆI�X��Rtx3�Ԁ��-�"W�M��+���������j)]~5��OJ6�{����]��N��$�V��� �}�v��[3��Ů�Ԟ�h�=�p6�G>R������d|�&��t�ǦqIэ[�.�\��H��39w��� ����?��;�����
o�pNJ� �S� 5��\��;p�E_��4�XF��ف���.���3�έR !"�E~7�Jr�^[L��r���_�pw��Sc��U��=�E63����Dې7rC"�c �b���1�e^q(�<�#�;d������3og���Ao�,����B���|s!�R��5L1��:����}"�`�z��}�
�jLî�����Q;�=�]����sв�#���,�~ �Ɖة���`�^�����.*3�I�9�5��ip����,��
c�m�� Q�L��.`K�r
�1�:�&�PU�'�Uu���F�i�
��p��H��g%c�珲@TNϵ��O�����I��@ �5�̩��+���� [�%o�pU%a�'7'HWׁ(�,%���o�Ύ�9&���8��f�v��G
�"K!l
��C\��iIh���(X7{����0�Z�]��y`!��[�d�ک^�U�$���T'�!ً\��r�J�R_�ɮ�2���0���Zp��H��>]ˍ�*�!��6����|9~��8�x$ ����H���u��X��-�/���Mh���%��?p5��%I�����B4-�'w�1�dQ3��5��BȨ�@�م/�%&�o�hOz4��HҸ�eRG+x�r�Ng�s�$�ƚ_Y��:��=�}���0� "]̯(\��c��4!�>1�w$ԙ��Eo�]@;��Q�P�7����u�y��������8�\��l�����z�o�×�Y �Z�����-�[X%W ��y��W(�A�@I�,�
,1vJ�%�͆�e�µ
��80<���R4ۣ
5�i-M�,w�qT�<2�+E$����Բ;9�(8�}X�u/`vL���Br1Y�֪/�.���K Gm�ߤzK�I!����&i���+�����!���'�L~��s��Wz�
-#ɼ�.n8&�k�����$�.��r�i E�1�Q �NI��C�� �m��mĝ��
�Th�3wqD]O;P
󎦒��i�&ڶ�f��f�̗fH1w
]!��j�Р�'�Q%����5d��#c�b�m��m��.�߆�k�alR�����p�G���g�[ k�I����A��
���4
�m�|�!�8�"�h-����ԭ �R����z/�LQ��ꇯڴ [�4��V-ts5Q
�w�'���-z!���B
���@��C��Y�҆T3^X����ʋ�BI������"�i�15ϓ�%;�t6#N���lԀ���G���p�D&�>�V�O�w=
�Që��*HW�;��J���&���z���WIW& ��.�^P��#_˿l����k�;T&�,���ڠ�������w΢؊
-��]� �"*T��`�7iD2P+Z�T`��ym��ᑙ�l}
7hT�<45\>+&��"A���e:�F�����I�;�c����(V��;5�P�y�@W�C�zM�PfI�Q�)zyb�\�(��uZ����˗��'䁏
qM����~�st��W$Ը����d5���%M�����V9_g�jP{����>���KKd-��;M�e�%��e�������B����q�"��J늳@�#��
��J�b���H:4�(����-ܾ���i�3�+W>�̵&ʞ�h�|H�~��HL�H�>�˫2�<�s|��چ�ޭy�p��A�/��$@*�wr9<�0�� ���p���ֹ<���:W�#��R8���S��%���`G|+t:�O�\i���"^ӄK{�2 ��7�N���(o5�n�<h/��fIMH��D&4��c4v�<��>G�)B]����_�xw��� !�_�I u�����W� mSB}�O���!�6^r���3���p��t
#�?@�J�� _��B���ZK P��/};�ׇ^�J����qd0Y��=ȁ�� ���FI��e4B�d����N�8W��zI�G��Z��a�0�]۷R,�1o���g�k%6���Z}�h�Y,�P]Y�#?qyܺ l�p��="�)�]��ҡ
�*ﱘ#�M.���7:��˙���C�wm6<�p讹qM��\0��fI�^X�k�[t�/�W]�F�j`T�-�*�5j�^*DB aB?�NI�����k�"��^؁��e�آ�0^�ToD�)m[�aJ��7�R3�����eUB��$�}M�,�JR �`�3�$~�ہ���j�%�1f�����{�;'��H��L�QmԱ�}�
���p'��m�^�wA�.��Ƙ�5�.ͳ)Z�@*?��y-r.?�3��ɻ��G���R�c�� WWkv���-)#,6�VLu�n� F��ξdЌ��~x�2�����V�������|�q:����x%.^�R [j\-Ñ�����!� #[d�C����- RV�:X �At�p ���l
:L���g+��o��z�N]����'�h�V�V�.�h��
�4�[�:O��J��ޞ�T~ˡ���fd��%�r�C]WkC��f�jזN��g-n���1,�8��I�mpM�(,_����Mկ��5�;D9��)�a�|�cJg�(��(ų(��2��%�����������jāQ7*�f��U�"l-��"����n�������f��p aR|C�����<�c`��Jtq�xA��}G���PLR^�\�$B��/$��
�C�f<j.,��$��U3�41���'B��{��?hZX
�O���Z㒚���&~Ex��5:��Ph``}1��Bͣ�7�s]����D���Ԇ�N�n���8z/2���L������72�b:)ѯ`/G���5�F={��6;d��"6���:�.�.�ϭDވ1lPf���J�8�l�G�i�/�o�j��S2�����M��f����KW�-�5�<u��@�䁲�g�83�!�֕�S� �gF�xg%ɨ1M �Y� �BN��w�$������C�v%ebO
u�27*����1�8U6z�m��ɽ��|uԾ�&�%��7_��U)?"D���X&O�z��f&s�}}��D��*n�U3K7�`�Is��|�j�T`A����gy� G��C���iʂ�����>G5"h���GW�tɢX�|�weT��W/� zKb!$�ІTV�O��|��B9��iTv3QMי LM����bFW
�P2�JR�7�8���V�ڐmpL�qñC4Cu[�K�ɩ٨�����!�/c"�`����O&d�_�j7�n��JW��B<X?A��/)Y!�� y@�z�� �1���ĝ6�khϖ�dl+���@G��c�L��õB�1�����f�#�v
\�)�����:koym\W��
O�X��tU.:��������Y��D_B���z�/SE�⛤і�%�4��
}�t�9�v� �fɿt|�C9������ˑ���]�1C�,�9���05D��29�LD�V��%��t�����`�^/uK�Ԅ�AN�/f@(6�]g�!?7�f��P�+9
��ãp������YvC(����k5�9ǒf�����N�B�7��|�(���TҁD�ٔң�/7+�ٛ+qS�q
��JfDqP/����>����H� *)s���7���Fh2��y;��yc�ں��@�Q�o�0:����w ��_�2��C���
)�X4ͦ��,���؎d�ْUFU���hT'<�F�76x��X{:�`j@�@2���=�ꓩ���{����!�h�
���vl�5��fN����x����D�E������,����� �F���
��4C'b.�d�~[dz]�c�S/
jk�J�GJ�I{�K��i@�K���Du��\QM1����u�B8 �z��P<�/��� sH ѧ������[���G�T�3�Ϡ=C����|}�������gmږ��#8��a�������7!��`���>h{������0s��ưR�,-��2A,������p�;�hrN����g '��X7�*ߕZ�� #��Ĉ�:�L�Թ�?�K>��4I#,I��=�5 �!���q�P`�)�:�W�a+�m�q�]�~A�'�'�D+�7�ku�=aނ�ݪ�ڵ/��r�5r�L��x���2�r�Zg� �.�+���S�s���0r���3P ��7SLEG��ףP"
+h
G�В5<�k�.B��C�!;Ns`��w���g�:դ0��ECPM�<I�M�Q��#�Fa����6v�l�go�,Y�tzh��(Ew}�%�3��B I�����%b��3��e :ŦIXjE��a��
c
�^Z�Y�*�9�v��A�-R��ݚyJ�gEEҽ��Iq�`jĮ"E/����S��p��9�2���}<��_�)
��x>ߩ����9�~ѱPs�_N�����j-��=��c����[-ҽ�}���W�#��w0z��C�9�E(�8�M�9�Z�8�8Ґ)������ox��=�=Ϛ��Hֽ� �js�rPq�2B���+{�!�/�(�og
5s�Ϯ?.�ղ��8
�|paq��Ţ�����p���=�c�{����U� %d��֘
 � _�/�}٨ UC-[��ϧOH)��`�"���2�B9��T� r"u�I�����������I��B�b�N��.J�i�TL�8@ :СI�X:_�],i���=rDYSF����Š���RqjSVBl��X�R�,B��:���礒� ���s4�=��2�`�����fx$rt��������?؏�rYP� ڇ�V��K8�?��ut�����n�s���W�<�(�V�E�p�T?`b.�K�ƿF�q9�T)o��j�������_�К;(�x�qUF�%�G�W�W����oš�2������
E��`��/�08Hbj̕su�7����:X���hūO��Q=���c���A�<7X�����EFT94��ߖ���E�|��"qe
!���эjQ���/r� ��}N����7G�ԏ�>0�f�#�5 ��g+L�������8ڠ��|
����ZSӟ��}ǡ�,�R����LC&�Z}�W�Z��,XW��ʠTfHI�`Tc��Sr�� Ć:��א똥�X�I��Zyd�ո9]�*�C�^h��16�K-)(@�s�y�J֖�)u#[RQKQ��+/�l���>���̗�*a����<�b,e���s��� :u���2��~�=��1����PŒD�h]w<�7�&�d��R:��$�`�2ֆ���v�No�%������R�S���4K���Q��i�b����Zz�J�]���\ <w��#��Üe�f�(}����U!�<��0.�)����K�q7vC�-v@dd��F�x���7Z����qA�����%/˞�6;�.�ɒ�y@z�Q�`5��~c�&�si�(CӦ���(H5L6��C�o�,��d)����&L`r��坈q�+��@��yT�T���oC=��D��G�_P��s8�G�+tl/0T�
��y[��h �u�\�6�U��D��Vvԙ:�H8i��'���Ma�#��� ���#ю����&��E���8#+Y�%JȬ ��
�^��oq��6Q��;.j�y1�l�v�F��8j;9@�l�M��`�A�F�5����\�
�H� ���`'��� 7 6�Vpɀ��;��!���U�n��@)3�\��@#%Q9���ę������[«�G&�n8ޖ3�N#����Mʪ�L
+C�ǜ0U8����B�L��/������\���
T#ܪZ�8 $]c�hFL�b4'\��;!�V G�Q�U�P'�u�6�������^c��l]���I�S/xD �� G�s�-W����fc=}+��Fui"�c��le����{Bc�8Z���P��D�+�ŠT���1�4��^},��!��4N}e�ŵm1>3�
��8Q!�D~���߲0�>���ӄb��In�wB�>��fYR�Hj�?���ⅼ�q$����FϬim?jя��V��AD�'�5�E�X�$Z��D�;A�� �T{RC�SOD��B� ��uz����� &f<� �2G@�����L���t�����͵D�� ���7Řd�lGj Be���E�?g�:nT�qx]X�]JoN��}�7��
�W��CFġ6��6�w�0H��hx�`|�p(�n�x���yrJL�Y;�<?�ۏ)�Y����k5%c��?X�h�cb
IF1��$�O�!�4y����OX9-�����"&\*'��p��sJ����pz�[��$�0"�ph��R��Ԍ�#�" ��" ��>�~��І[c/-nͷ��<a>���)�����v�7w�=?|/@�
���P��0��`��MF6��[D�J�$z�8����tB�c��)ˣ�1u�B[�����)\Ei5
���?巌O��8���0i�hZ9m{�R��Y��^�������0N� ܟ��zÁG
*P�Ey�A*�
�� #/
���pn�)Y2} ���0�
��g��ֶ��װ~��D��į��n.e&��|5#d_A�*R���e~ă�~� �R�e�����X��S⢇�c��
�ٷ!
��K����||D{3DZ����q&�(��
P\J�RP�Cp̥�ź g� o�@��5'�<^�^�����C�p)L(�#�4�#���P��8�OCwc������؜�G�����/^4#L�i�
�;C(��:Q)�V�:�N��]'�/iQ8�/�2��b^BT�p�Ԓ�������i
�2I%N-�-���1�ۦ��n#�Q�PF�/��&�'�~�Ï"?G%���B�:�f~�/���|+���P��C}�$]�1����a+8e�<�^e��R�g�f f'/8�"&��~]]���,�=�ѣŗ3P��2�<�g
�Z�v�!�ʣ<�/�)�9(��-��!u���0���ce�u"j���JxX
���>����d������(�c��O�s&k����5��gD���}kw�F��g�W��l��)Jr�ġ��q��x6~��L�G���HPB  ZR'��{�U��v��{&"�z޺u��k�de��'�=�W�y��s��^V�*˛��_To�^�US��8Th����V�ĕ�XÏ*�Ȋ$�/~�㷟^M�o|�m�K��À�����=]����*ue�߸�:]l����v]Q6���*���tIu�R�T7��L�"i�I��e�$on6��VX�-�"uI^���f�/G�?n>}�]�������������᭡;���m@�;`�n�b�l�"]�u��D�.Ӣ
��Ə`Lη�˚��������s�R���OI�u:ثRc�d�a0��8M���[�K���H~O�u6X��i�wi톫<i��э�M��X��FI�c��$��_|��w�ն`�bۏ����.�ЧZ0��'�{��L�� �{(�r���۴��b��!SOm X�??Pq#l��g���S�t���s�� [�jP���3-j��2T7�h�Е��C�P���禓���;���d2�¢�
)D����]ӼL�оBs��U>q��Jրf������@6�K���]lC�o�1����&�M~U/3h�]�ES�p���W��\����mZ7��N`�����Rw3�h۝�iq�\ƽ���q��&4� 4���� o������
�`�� ����j4tC�t���>wG��*u�-R*4�g.�-*u4�� ,���N��U�^eղ��_-^(–?�6V�W]�y�QS��q-��_ֹ4�#�� ��x^@��*8���% ��:^z7�RM���AE�E\)�8
jX��|���0L���?��J�e��\� �̆�������a Clw�`���<�a�aFl�p�<~3t봹,��*c����hT3Fx�sa憗�:껙n�f���ie�.�c�I�m���o)>GW�4Y\�o5�,�rkS}�v�6-'�5��8�� 6
��
��Nާ�3$s[\����,��r���O��� ����]<
V���@�2��6V'-t���v��q��=�%`�A�͛ 3��?@�����|��Ř^
� @?|V��2B��HF�K���
��m@���2 /n�W/�j��5�1��&��K���j����T IQ[ _X�M��殸8���`.8]��ȓ:n�ui 5v3��SbQ`��H%ôW[@d���W���7��p�ѡ�4���s@�K��bNMHq���h�x<�����=�V���!�p�4����PщNk�"�.�K�������Y������2 �n�����^�EG׊
� N�u9qB_a��h���� l�pS�@��Z�
����O��Y��D�01��h�ts}��s†�
��r�5t��$�Tg�D�(�j�}90�+�;�Q�="�
�6���sFzg���RC�7>ּ��-��V��o=�qA�+��vά
���� դ���a1���� ��?^�x��%^�O��^���uY�N<y�#6�*O���k�9����1�ƒJl�9�1�r�@�LU ���*� le��h⮪ ���#Nw�'�ۍ��g�� �������'@ڐ���������/a$�e�GM���eZm.�f��{�za�{�SG�P����ڦf�s��h9J����C��ߗUٔ�2��[��K�� 㡍�.�����9�Q����L�d�3�����������F���mS������=jbS��)�V�n���X���[�u�N�-캣����1+�o�U��dm�l���*�ex�"k
4�Uy\%9��M�,3�
B����DS��|�u��)��5��z��������_4�=d7�����>�[8���_��m5����ߓ���*
�7��#H' Mt��A�p�ph$��K��з�����t��o�~��b���o� x�R����B��?�I�DJ�d �r[-ҷt�,g�����Y��p�92-��E98O��4-����q�U�o��eNʐER(�M����&#�1kJD�_"3ƚ$�0A�>��%�>����&Yd�u��A@�F��@@�lP���y��)l�
u7(�y��[�ӰD��Wʥ�xM���'�?Sʳ��'�o�%��
�j���Գ� �k� �K�#$�՗�6_���V�̸�M�%�'�%���W���X�}K �!���H!=�dfU`���xԧ�ij�0�X�"L;�U SP|�E��W��p�o��2TXDG���������U��|t@�n��(������ �r��i���9��wp<�^\�6�V��F��#��^=%NR���D��8�����X��P'B2��r�"�T���No&���T��le����n��m����>��|����R~��TZ�aU����\��-A�`= ̆ƴ��U˾)ݻ��BN��Y�ZH�$j� �,b��VY���J�6~.A�Qu�'�$U1n��Y���t�������N�5� k'{�r�����W�R�#m�f�Bc[
�2��Q�6�}��4���$�WM=z� ��2EM{"3�q��
�:<��8�0�v��CDu ����)v��%���u� �J������A��: F�rx|������&����t�yċ�ʑG��~
A�-al@Q�eu3 ����6��(���������摶�6"�
N�K8��kl
�\�����7!�Ҵ�\[��?�|�]��z%@��1�%��<�
Ӭ��BJV�P��;C��$y���ˊ��a.��Z:)���=��5u�� Xiּ����Y҉ó;�J6��,�K��9�G��L����*�&u:;�ޞ��ک�>��gX=��-�eO�o�F-�> ���e�)_�49��ZX�qi� �_Ť׀�O\�7���������;��;=��W�Y��lXݺrE�.������؅B�� �b�t��,�`X5^��p����C���߻����y�.�Lb����0��¥��Sn���,F!ZT�S8󃐵��X����-���4�����
��%|�u��
`_H0ۭ����fШ ��k�>��k�)���G��DBD L���ٱ�`R����mx7���*e���#f��ݔz���gAw�������A��zl��M|8�N��=�^b��r���+L<�y�HPk�{�gx����Qͧ5_�pH,��gu1�fEA�m�#��FW��#ogW������$Ҹ͉��Z<q5H���>}�a���2ެ���Z��8�Azvc���0?:tֵ�߉��l���p�1��k#�sJ��h���seO�;��<�9(��O�A��}�����.����.��1�)rCQ����]$�9�-� *�@ޅ�ҏ�8/���箨��k1�mK`8����(m��Þ};��p�{n`������:v������(P�����ͬo0[ � z*��)L�x
@��\mAd��)������pԀ%GGh�?����H=#~}tW�I\�����^g����!,9|xy���=�vBhWX9�K:�ctj����tS!�J���֣��I��� ǖ\�m�L-� Ρ��9u�4��<���s���I.>w)����?�5`��/e��c�br4��Zw�U��_� ���
�Za���[�Mi�#���� ���k��gn�[ ߽qho�Ho�����d�|��̨��R%@f��UU������&_�R.������, ��tt ��T�Z��Wk�}�[K|{ͨ��E+�i�,#��(���=L�V1��"����o������F�#.LH���m�:$3�'Ka�t>*��cA��O͚ˎ�<q��X�͡��;�Ko� �l7r��VyI�����B���ʺz$7sK�\�:�<F���U`L�T��BĆ�!�B����!�VCZ��_��$��;r�k�j=�Ƕ�a�#�|s���i�p��?j�O� �/�(�X�[h�2�t�T=�@$�b�UԴ���C�P�_P��;��(u<Nn�e H S�@���3r~��~Z%Y�yg���,O�\z��aq�#߂u�N~r��g⡛�Ɛ>�R�23;0B1dlm�5N���f��˳ V�_-�3��{XNE]D���L�����ᴗ�-)y�����h '� 0��/�������r��j�AdX.�bս�k:G_|s��og����`K�۔m�Z� G��Vy-��s]^��%�؍�y�Kq4��0C�����l�_H��l76�B8�I��c�c:�����XN'��ik�g$+��ί��@�F���=#{~ {��
ꎳ9�m�V?�����x��I�Qe�����$��˲nf$d�^$�������#nX-Ra��j�$�?��hKC"$?n����wbc�͛N�Cw� P�2wz�ܡ2�۾���b�<�y.�f3��w���ݯ����e#�|;�q}�9���D�vTbJd�k;�l��P�O�Pj����)%"�_Y�47���cSc�w����1��p>�)o��qZF��G��V�D 1�d��a�FJ3xF����Nף,P ��N�ה��x��
M��(6��~�7� 24���k���l�
��ʈ��4�XO�TY=uA�~�ibu�@]T�G���C~čQ�<���t�����Mr�wEz�38)i��0�0ѹ~�6�s�=�ч1�<CE��\�7"�H���(�<E��U��Q�wD�6Z���/M�d;�Sq��]"巑�W0Q�1�f�o����Rt����޻3cwT��+�ew)yK�J
Ʀm��Mu#l6���V= ���
A܈��&E��{N8�x��ޜ��� <MMMY���_�8�E'�� /�b�"�#���D|��đ��5�nNއ:4s^6@�_��#c�
n�{> H�,'�"��7������ �F��Z�!VD�pNa�?s��~T3:捻� ���Y[�f�(wO9��6�m��Asz6�cD�y�D�}�m�\[˺SZ>���I��h����a�k�z5~Vf�ģ�g)�tw�DgZ��g��W<N���s����������}�d�ʢN���(,�P@�(�8�94�i�Ͳ�����@��9ř����Gg%;ow��n�:�Cr �!���2ꛇ{���1?�e��Y�
��$\�e*��`���0�Q,شe�ص`�$���E� P�� ZR�mf
M���v�ut�G��o�(^�h��>6�Y4J��=��{"#�$�,�`�������Ӥwbӂ�M)2�'�'`�B@U���C��䌈i�|�6:��~,�%��u�݇h�ha�= �'�u^�f�O�����S��:(�O�Mɶ)�%��)��v>/��x�u��1��ȹN(d9������9z�C�C�}����:�=��F����ȃz�YppP͑�@7��A_41]XU���E�1V�Z�}��Ƅ7�jB��ՍR��^V�&��&�k$8�Z���l���p�B�F��:[��[]�]��z}�*��)�Zr��[`���2��c�]��k�Dk�P�~��,<�<g�Gz�0kH}TIz��=@��4�9�P��[�[����8X��
�-w�8R�S�����7 ������o�0\��`�eP���:]f�!�α���k���Jcn��Z���� V�;�c�?�>I�4r��r������H��U���A�M>�;JZ��9W'��/:}�_I�蓬�9M�"QԜ ,i��[�9�y�����J*�r!@z`ԆHHÊ��a�H����(Z��� �،��<:�qJ�]�2�a�M�G��`�Ż��������v|^ ֙1��i�e��LLbpB^�1���x(��x��bU奂�s���=Ԭ�,y�l �k����wG�;Ò�3���9�4(�U��N�����A�h�H\\�q2�4�)rk%Z��m�x�����5"KB��@�6<�v-FW��s���A)]F;�4bߚFd�%���RToSyLJR{�3�)j�Ć�_���6��^�V�I_.#�B�oT\[��8{��NZ� ���1�Z��U}[m�N�c�Р� ��$�x��"�K5��.��,�gM�<�%�G�ZtD���#>O��w��@U�!����z�tbQnn4@��$*a�ppQȟ��0��a
���n0����}g�Ɂ$��{gl\��"�b�-�x3�*�������~
�Ak�0�ġ� me�
�������#�l�EDӜ�����јJPc��M���@� T��h0�� V���*!�����,D�⑞��`I�L�ogg����o_՜K�
���D��<:5{klI�ͧ���7G�:�p�̀6}��.�Y���R"-{
HU�8���!��J�!q�H���N� �sgW��Rz��]��������O��E�=��7If���o�xK��y�щ�H�\����r�=5�R ��qN��\�z L`�^ѧ�!B��RZo���'�H�"�
ƴ�p��:jϧpy�Z��J�+��IN��Qd��3E
ږ��@�5��L�� ��X����$��U��?�8��Bٞ����8 
�p����`�^�~9C�a���Sf"�m��1e�#v#�*�����h6��/��%���$� c|:ߞ�U�E�� XZ뇚��!G� ��q�G��6��F�Y����������
)��bg3����߇�3R��ӕi���-KV|PCk��b�%q)����ĝ5t(�����Ҩ9c:�}ڐs�$0��Y�2_�0��;�s�"ކ����}�|�0\���h>��������������ϟ
��
D��D�����:v�Td�1H<�F�;`'0�x��1��e�)7P���>]��$�;�Ѱo�v⁀.,���3���1���� �
6��P"��Ix(.*���c
8�Rr�y)���&91��4ŁWN�R�{N�U�i%@ (j���@M���@cX�$C�I�0���� ���ud�{Z�BUm
���B"}��-����oUڏ� N
<�8�n��Q��E^�n��}2�p,mEfK�0��-MW������ 1��8�x�#����%nk-��B��H
������auU�NQ�ǞV)�:�o�K��\�Y�d�9C��NXk��=)nڅ$���z$���k�aC�Npa��lT���ϔ2� J���\�k���yǗ��-X�iLd�&�m�����U�{Ɵ��?6l7@4Z��@�����ޝ@��������0���}ʹ���D���m>VޑL=�U!J��V:�'�M�F�;�A��(� �B�-����}Ӟ���+
��Yή��$!�.��GϞiw'�b�ey�ۍ��BCN- `�\Z�����C���lx��s�f �t�[�� �n�����`�'kt����$��҃m��=�eZc�
@��ʑ���(fQ3]��>��TD{�q�6v��u��]m1��˨p�2l��Q��4~݈��B�ia�(GG����Ń�oeɨ��A=k��4%�03�>���k������)Y��t�xM��y�5d��]���EـjI6l��!���g��t��}}� �(����ݚ��
U}��F��H�Q ��]�$cbgMr�|bhT#/,�(��ؾ�}2^R�%�ƻ�E� G�=t!����j�6�7��NB���WKk�O�suBo��l�Y����7�E�\��@K��Ǜ�xx�ljfnH��eޘN:-���#!��Ů������ H�K��N<�%�$�~ ��_\��cI���͛�� ��y��[ZH�c�eY���޶��1 d�aq�iue�35�4���CB�\�!g3V\U��q: [R�жL�y�h��X�A*q����r�XFNh���݁XIq�U��@v5 J ��ה���2���;J��7ɡ��u
�[j:١���9��$��f©B�b� �M�r�P�$� ����)F*�,�Д�R^f�R'd���(6�ݩǶV�U8���ݑx����ە��)J�0�vvtV��$~������Ȏ�(G#<Ѕ�\~i�O�EV��xO Up]�u�ۋ��Dt#�24�QxC� �N�p0�pMa%w�;����w���ޘ�p�0�?%+D�_΃�Nv��
(���w�?����(��+�����s-"�_|s��� �c8
ؼ��79 ��p�w�� ��"��I�> l�]R&o�
�̖�1؃>^�Ѓ�vI���1�� �G�ߞ��?�-�ވ�������7���Bž�<�2x���~J?]�!
}|*\D�A�:���%��b�TK��y��FB���2�ߞ��S�l�G��D�(*D2��@}���@ԟex^����}���$'��x��R��ĭbJ�~�?�(�RfQ��l��(�+��Cu��Ys3n1s�xct�.�����F�q���ܤU~3�s�zA�!F#�����;7Z$��:-J����Ik�A#u���]�8h������J��D�c��,��/e �O߃���ZY�>B�)�ޱ�d�9ٽ�%��CcTeh�g��#(���ct�'^Kc��h�r�ˠ��ȓz�!��W�A�0��ۤS�ȣT�Ь9��>�a�1r�����Cd�e�l����)�A!y�0�^�E8P̢�g3V� dh���'����2`�@��^~��R�dv�g���l�pDt�A�ⲵ"��ڏ9R�)���p�\�U�� �<!��-N�R�}�kd�A!GIZ/5`�4����@�$����\�K��eR��O��iv�.�M�K��ʔ���h�J�����7c��;)�
+Ør�4մ��NL5���mw��>՞I��(f4v���ȿ�Lڏ���_���WGž�s[�^u��"��ɡ��蟣�^:&��[�����w�s�Dx~;x�7}`��MH�d�/�&�:����7&�"7P�_N����;t���G~�.���m����/���=l L�D�o��P���oc�1�g=}O��N��@��1;wEn֎�X^�1�fW�u'wE���Q���⓯�35k�"h �X�ȃ��G,t��j3&H��*>�ӭ�L �u��ф�B6��� V��v_s3�k��z�x�|�
��ȯ��[�����U�XZn�#Vh�ܸ*�H�b|�9��
��o|-��� �C�� ���2�����DyIL"&�HiCZ1�3�K~a,���Y�����&I���K�j߇7��HJ��eS}�
T$�I(���2
l|ċ�� �"�3}� ;�2T�0����4߬���]Q��@f�6�%o���bZ������0]�Ef��[����]�;:�{t||�v����ǯ^�x����7o�׃�??���Dzb��:}������Ɂm�! ���B��q���c��6�c>wwcM�r�(q"�66t�s�}��I�Kju�O�L
� ���4��
Q�>��7����B�t�ĨE
x��9����|�_vFO5{miZ������^/h/�OC;|�&��&v
X�F�
8�*�L�!"!Q��f��b�y@���r����4br���*��.8�H��k�O�O[{�@�������9�?�� d�Gp���+!�H.γ���lO{�=�+8����2�ܠ0��7����!„�挾8>�{��q�y Ec�\��!;�����wΰE)[g���Q5�T�2s��+��N��* �gND\�� i�M���N���&�@�������p7��o�',���e�>(��t�8��>�Z���InSK4�0jf�Y�4���̢a� �PN\I�K��}N�(Ҩ!���������j�A�����8cF����,.1\m� ��}�W8sw���Đz���w�9����N)Zއ6߹��W��M���9�k�$8$�,zTu���D�����#����Z��~���w��}R-���R�{d`3Ȗ�E���#5eԵ&P���L��N��6{b��^��]q�B��b�=�hdUl��:^��{�λy���݁�����k�s�S|�⒭����<M�PE�E�⑍��!a�8m4h���h��.L��ݾM���L�Bb��D� 6y��_'�*S���k�HڧĦч��֜��Fu��VL� u0YS{�s�2�wr��a�͍b)�`';ت ��������*E��G��8=�&\fm�XVW��˫ e<@���u#�,��gt֔y�P���.A�yȥ��-p��{�^<�ތ�ˏNn����G�*���6X���G������٭񗘣 �ԀU�%�X8���Oe����"�KjBX9%f[��K�4�*q4���4Hy(G�2���S @���t��w��a�
�j���>B�qE%�m\���4��R�������3G�֏®�q�\?UOe>L�B�.=J��"�ܺ#����%��g���S�)M�������:ؿ��ꃴzې�����xH�ŝ`����<Ly>�S��n��k\��}��\��Ve�aSf�Q���� ��"#�L|p\?
c������G?�6��r�j�hص����*�+*�|���(~�*��c��H���ڈ�?�[�?�zP�c�
�+�J8���Ch����;��-�`n�&��P@ܹE :{�
M��W3�CH5�!��4��#���"C��vy�H�൱L����9��Q����o�V��`I1�D�Që�Z����+�T}}s�1�] r�یaV�#���X�EhS}�<g�2���~c��u�����<��2 h mE�霵X t��R��%,/�(����i2OcK�)F
93��1{&h�c|<8� ��br5�-�N���� �)^P{{~xc(�ajBs��D�K�̰J�DTB�M�Ln��#�����Ѽ�n����'Sj���3�
��b��j��-�S�[#7D���"~�6?�s��K��R:�Z�{�m�1�������v�t\�c��cs]�JﭛY���PVMjOy4���4�G>V��%����t|N/������q���BC"��N��3w�鏠����?��;-����CŷB�c%�DϩPt5��\�=��\��3�o,#p���hkA"P{j�y(�0".����]I>�k�K1�^����f�]��Wc��5���Ev3��g�F۰7rB"�c �bo��10�9�?�{�4�S�;�������m�.�rLD�I���Wx?�:ż��� Q
���a�1��1�=N�!fl������ǤS$��0���(����.����>�Y�)aB������#�ڭ�=�j�tPֳ�ge&5�
��f<>��ם��4���|p�u`ޥ_��vd,7��; �#iRUe{ҵ����u�NSo����G���V2q����V�*���U��S� =��}��:S���%s����7<�����7j����0�᳏m'EH_ף(_YJ�1����=sr�:�I()�ȯ&��QE@!b
�W@C�Ĵ$�V\`��,�r:��^doX�$��g��D�v�eS>.��[;��n(@����P9U%Y����t��$9_��C�-��Pd�~�m��I�� ���.�.c�|��)q�b�HD�������M��X��-�/����L�M L� ��
?�5�Ώ5I�W|V3���P���|�%��a�?4���QCi>s��A�?�?��֣3r"I�>�I����e��O��8�~e�]�p��{��(SiQ�D�X]S�8Jn٦�*iBX}f��H�3k���NⳀV~��1��'4a�U���3�v\����J >�r�"���C�� ��!�S_�ge�Z��Ų��o a�]%|�H�)�_��'�5e��1wJ�%�͆u��5��\����J)zۣ*5�i-M�,g�ܵ�B�J���t�4��w��
wTUr3�ă=�>���'�����i��@��(Q[�7��s��0��QS��H�C�J;o��r��
����/=���J���3�"�₣c�� �);q�gp׍�MK)S�q�J1u�Tڠ{0E�`}E��Jq�F�
55���C�0����{G3�夃i�$ڵ���3�xJ3��3��sF�bhT��䨒U}`��{�1J�"6�ٶz����"�-`�9���A(�Ikz������|и,b?���F��\���žM���T�w(/zK��c��Tb������)���~��Ϻ��O��jq���RH�{��Ȗ�b3
�*��Q�Ld
8���K2ڐif€�a�i;�J���4𑴫���1�Z�-J<N���{��.ٻ̖K�4����H[V�D�x>���������"�i��~�d9Zt�m0)�����ᤘln *�l_���*ו `�E� �>�$�
/{�*2�V���I#���ŭ5�۷i��}$��U�
;Z�18��3-EL����o҈�|@�h�Z�yW�������2ѧx��-�C�1lx���s�)z&^eKh�����e��c4����G��0�1h�����s�z����u�&�U��wQD!��%���0"�N��|�9q��|��"��!�)^
���c�N������W��[��s�R��6�A�U��
��5i=��~�ϐ�����j-��;͊<+҃���y��� Ġ�u�@��-eR%��,���2�B�Cnũ��u:�
M0J�98( ���i�zj�̒Ɨ/��Z�eOf����< ���������vy5���:cΏ���t���.�#6����T�Hu�V�G<c���5!��n.^Q]:_�� �HZ�
�*K<�#��ʔ1bI�z�9��
CO�ۓ�/��x�k�lhµ=uY�ЛN'�HL��bwK���g��^H��d&2������ii�r�zS�
�����xv��� 1�_�K u����G�}Z��,�8��a�1�CVl��V�}af��'��YE-�
F�D��A1:�2'��'j����7��v��=��O�S~��`�
�s�˓@��=pi�����rr�����N�8W��zM�g��Z��q�0�}۷r,�1Jo���g;�e6w��V}\h9Y=.���'a(���w؃�${Ĥ�%wY�K�&|k��b��7w����� &�/t&���������CW͏k�����λ%Mxa{��ݢ�P]\�f�/���{0'6�wj��� *$� ��~���L��f��N_s/�^�Y�-; &*��M��C��-+�J�O7�Z3k����aS �$�}-�-�JR �`�3+$~�ۉ������ @'��Ƚ���Y��?�+L�狨5j��_t��� ��nh�j4]Т�'�1���w���V�I U�`ވ�+L�̦`��.f��/�~��q�⇤�k5;U�ǖ�V��*�6T?�3RO|g�3h��f=� Y6�(k^Lk�OE�dW���|��6���o#.&^�Q [�=Ñ������!�8�[��C�o��;R7�&�� 6�9&k'a����&I�1���wbJ�ΠmK�եDz"��*`�p�LZ�_�`h��b�g8[դ�O���v*�eS���Bod�%�p�M�~�jC��d�fמN��g#a��9,]���%�6�&R�/`
r���������u��02>��3��H��T��Y��L]N�ӒƂ
�{\���.�&�I`ԍ��Y�qݩK L���J�cn@��3��`Ϙ�v�rN$MJ��:,a<'�����a�!� ?�pv �$�!�A�U�; O1�B��}a`���͌[ͧ%��$@ ��Z��'��[�$H�_t�5�M K��)R�xk\Q�*�H�_]i�q���-;�X���!�Pw��~�RW4��#��<���3����#�����f4no'���Fb�]\'%��ŝ��P͡Q����}��E���MK��N�X���6�o�6���jIs�QQw�#�4+��
�C��~NW
�я k{��ټ�&��\hy@Y7�S/KODJ���|f�3����o]]?1�Ual��wV����p�-K��*���x����h�yYb�ӡ\��SS��U�U�$��N�|U6F��Ȟɽ�w|�ܾ�&&�L�㛏�IHͪ�1
��a.�'�#1o��9�
�r&����Z�t���u!ݔ;�-Z�K���Q9+�9S�l�r�,2V����T�9jAw\<?�RgH�"���+@P�.���-����CR�֟:���� @����T�q $���3����7ͧł�:��fܗ��?���WZkG��9q0�
��z�ۺ�\"^O-H�N����/q�8
1aF����}2!��G��t�OV��{-$�T:��b��U�x�P@$��w��:�'��w��[ڽ%6��$.,��v���= )�r��g�Sb�������H�_�F6|81���[������I��5z]��N/�i��85���Kx�8Y��e�H^|si��č��_]�E���TKh��p��_%�P�</��l��H vѡĘ�W������+�:*X�<K&�^k�Ē����^�� �8Ѯ��eoZ���N��ހPm5o��"B~j\ݻBbE$CrE?�Đ�Bad�*����8PF9s��j�}�%��
%�v �,Ť���
�[pأ��
SYR�ͦt=
�"p�"���)�W ����jdD� ��Y�#n�����d ��2i�|+ ��o��&�_��G]�7��m;�
�K%��F��9��!�Ղ�k3^&!�B���Qae��f�"�.�_Ɋ�YF�-ye4
G��Eu��������[O'��-��
d{������"��4��&m����2GL;6�
��zT3�y4Š>^�e�Y��.���wi�d��~F퓲x�1_��D�e���o�d����~l�ՋB�:�R���r���J&eP�R�~"�A=~'W5 �`��xq���!DJ=9�ʫb&h’2C�闍�@������w�Q$����Sh�0�b�� __l��3K5�Y��%�};��>̞w���'�M,'����E������$�\%\ycD)���
��P� V����Wp���lr^�?�g�$��0�*�ؕV�� 3�|L�u8������K�Z�6I��$� � L�o�iF/B7T��D�G��4n�m�"^�+�/��I����=wH���߉  �T�Ǯ}])g>P#'����%�)�%[m�_��lQf�ק��O{ya��mzfd@n�o���<N1��'�D V�":�$�'k�c7*7\1��*�!|D�(A�ܢ�/�:�u�s���xA=Jt���7%��q��-rd�.���}��Q�dmF�ۡ�����u(�8s~.t)���'6f|qlq�P�aA��4�K���b��z���YôW�yV��~�}a�f�4�#"�fD�YU�t/aaR)���P�l�u�P�u��#^��yΤ�Ĩ���������1���:�#��ø����!t���˫���舎���;��0��Gŭ��ё*m�#�!��8��st������"և;�y%`N�7�|�jʔ(��|��7>Eٟ��g���J7�x#�j+orPu�
B���+�!_bU�%�Δj��\��u٬����Y������XY*���n���6�8��ޣ�[�^��Pb�6aK���� ��2ԗ�
2�1Գ���r���8� &)BuK�!Ө����uO�W��Oz
-���$7���]�W
���� ~
|���0
���1�A>4�IBBK��%-�,#=�!;�5e�?�q'�|��H]ĩM��4�s�K��K9��x���G/��IB'�������@��$�Q���H�r���W�p�����rI�g0ifZ��?��{���
�����k7���g//���Ze-�E���s�Y����Ԑ����j�x�wWS*��ȯ���@0�X����y ��U�Ց�)���&��k�+��B��5�n�����r�5���:қ��mW,w�hţw@k���� c80[m��/�o�(��E����PJ��~[v��JP���C@��2B��'��գ]˟�p@�H��D��ŏ~�9��ύ>r�f�#�5 e8f/L��b`|^emT�j>�B5H����� ����#�Y��⦬�X��^��U�V�> �+ѭ2��9�K�`T�4u��<��1�
F��!�1k����>��� p�ys�*��C�^���9�� E-)(H1��~�F����Ζ�M�Sg��&�b �M_���眜�e�mRv�>��k�R�>Xp<'{,Lܩ8ݿ-#;��c�I�Ư��
%�H�����e���O���ӹ�A�
�Sm�����tz��(�����Η�>� z�@X��Z�O��\���S5���Z_s&p���7c�h@��C�ݢ���s?"�
���؇1
!�h��&u�X*���Glq"˸�Ahoʆ�ۂ��F���6.�U�6�3Xnl��R�,9�G���Ȕ
D����U����-�M��{��(�q�y�����h����&����[ ���Ӝ��c�������ІFs���w�/��d��9<�#Y�
:�����y{�_7���;�!N���J`lb�w|��
�Ng�N���If�b3&��Oj��(H��4�j��NVI�9 #�g`% �Q#@ne@tw�� R���N>���Y>��P#8/�%�6h�m� ����t\�v`ؤ���5� ndW�8�v�-,��0��T{a��Vµg�Y�Y����9#�g{��;��j��ɦ�f��
]�����0*����;�l�p��an�q���v����Q~�9/�jR�tg��2||����92�el�q�����������.��4­����@�1v�O�3�� Wm�NH��#Qs�{�3�YfE���ƶ<��C�X�M��{l��i <"�?!j����9�uW����fg=}+��Gue2�c���e�����Oc�y^���P���O�~�jP*;�G�(9E0G��t�O#�7_{qkYĽ��Z%g&?�@��Y�ED��_YJ9ʌ�$��+!��ʊ"�~"���~ec����q ,����F�li��j�'�uk���Q��M�1:6��Vcb��a�k�f��RC�%~8�"46-w#pz�w3���!M����(�;���'f�F��÷�on�'5&I�D7��1ɓَ�8���#�PA~�qjީ����(���������>+��C�x��0���(��y��I�n���;�st|G�ݠ��
���)q�g����O?��&�YB��Ռ�Y��z./�b
��b�^� O�&�k2(���˫�9�rV/�5j�g�E�p��^�D�=�K�~������ユ "���#4t�Z)��g��3�^��ZN(h�~�s��0��������,'3�<%�?��p����}�Ïߋ] 0� dn��f[����Q���2�~���������ޣj[ �HE�.J���}e���M��e�4Z����2=E���n�I�5@��E���� �n��{��_۫��<�2���[�
�-�@�eP�5�DW m)%9yQvτs�]͒����S�^rQ�Qhm_�| ��@@�+u�8���Pf�|�G3b�50���"u̾��s`��W��W��{���6���-%tqуg����-���! �t�z�)3�����f4���1���L@Q\�5���"��$��XI��uA�X���~M0'�<��h<uo(�9ݡH�&�-`�QL�ޑADC (moR����1�L�P�i ��~�����z���/��k�*�;C,_*��� �V�:r�0'�N 2_P�&_�ʘ�������������=�MSȕ�U��BX\��}�֔��/d=ud���m�U*���%���s4" ��d�Sl���*�H!ͧ��;]ʄ~���� 0� ���,m�
N�?O�WTV�� ��2���+�s/��~}]ϣ� ,�=�ӣ&ŗ=P� �l�3�^�E �H���,Vy� =%Ҡ�?�N�2�;��p:��2^:Q5 WA�J\����< wC�.�h�ġT�">��}�D�xg��!s2��N������}kw�F��g�W��lBZ%9N�P���u�s;c;������HPDL ZRb������������X�������
s��vv&e�>����͉���r������980V�ōi晙�M�4_PK��̪*���l�ۡS���C�A��zUuF�·c_$����*3���έ ����&3b�te��fn�UVM�:��w�M��[ ��92�:���������p� ���5�s�D�Ctu�F��%L���4���������h�t��J��"��&/.�"��,��,�Г��)��f0YW��q�������1�L�Ҁo�Y�}]���u�*�wzZbMlGԼ6EY����IJ�V���ɉ���[��T���2g�;ᙴ��� �U��B0���a�����(ء1��,{gRXe��/=�f���p%֞����9x��Ç�U�N���
�l��dfV��)񡌾Js����q�WB~� �j���Q�Ҩ\7�uS�t��4˕����^-�f@��︁��0�I��(L�IZ� �W�`�t2�V�;/��ST�QiT��v�� �oh�VΊ��Xj���hW���EVL��z�sS��R�Bd��:�KT�UْӰؗ$����,�i�b��u�5�B�}�5�lFn�Zz��n��O�����s�����o� .H��son{ѿ�ϭ�a��c3���
m̐�C��L�h6=K�_�EV�&���:�2�. k��.� �(�+p��U֬��]�Z�G�>�7󪼪���u��^
8Z�B�Mu� ����]�h�׿L����M�V�<�~"S ��ԓ�(��5�g�m�{�[�$�X�=�^'�X��j
�c$Evݘ�a���ï�vt�����w]�`���!r�{�V�\L��]��wP�g�����у������uY@ N��9��|��������k�������fT�W�u�f�8���Ec��5�luO���ׯ �Հր��ŧ��3�������
d�0ۚF�2Z�+jER~`�ʮWĐ%��-e`��=b��f�c/[�P�`���� ��
�[7ņQBЪe����L��5�?ɖ�z��5/���ʘ�9~���?}�����n��NLY��y�.^+A�����JwjH����cI,zU�M�����M�YC ��/<XW �M���<�yR�#�D�,���0�V�t�=+~��a���B��&<0>��<��[�v#���!QYΌ` ��n*"�l�݁�a4φ�b�>Y.������٠�� fy/\�_]]��z,� !�%Y���Š��j��H ����� �" ȍ�~��p�T�*�y���l�h= �I2�n�Lb�KU�[4��
�o��7���5� ^�*[fˋ D�Lɮɨ��$�I��u]N���b4��B��k���k^?�<�j44��a�1��q�c찀Ci�+Z���,�bU��hD_����.����XM^k�F�Sa�\M������@41�/�Xf�C�|���
0X�E���8��{'֊�p�2�Շ::����v'I�����.����b���d]�gĮ,~�ד*_5���d�j(�w��]��-I�f���q���h��AL"�ѫ�f�/h��&gũ�y�3�n-�kLtV�e���d��n�$8=�fώioN��L�����S!�h����z�@���<�Z��V �Q��Jo�A{L�������
��[��౵F^Cn13��ݲ�-f���%u[��2S� �f��M�_�@��j�i����
x+��7�cD�Y fS^[���k ��"YȊw�n�պ�>6��|б=�m��ئy���ł��b�.�#�&�.���:�O;@ ׆�vq],_��dfٔyph��q��.a}B;�����n���}�������.�N\�z�s�$��n~Oߧ�$1�~��<�,;�_��7}B� �Z��?�.��n5��8���
j������rQ^��'�����@F��3׭����$����ɖ@D�+�*��DT�"�PpRÂ��=��\qv�Ă�uu�����K�ך
��|�L@O����C2�-���6�¦J �̪ g��>��M-�
�Ȩr$�5�h`�\c�)��3���G�e",�<K���儅�����\f͓EƂ��͛���PF;�Gg��Qk��v�
f�3ޣuVLCfz�xi��m%`�ք�
�SLLS�c��7������C�<�ùm���]'�����8 *h㺚X'���M������R���
�(Zƒ �~��7��&�ejUP)�\�|P��e�"�*,�����e��r�Z� ~�&�f�a+L�;��貺1��aq�gO��ߙI�^,�Я��*'oݔ�$��;К� %�Y�!0���bj';��g$;��p�7u�h���a;�CtwÕQ�,K�����$B��Hȱ�!���{��`���=��#�O��gk��&yE��=,)��;s��YH,7�*�ɖ����Kɞ!�I��� �����,o�������ҝ��a������B�AD�o�c�l�+���i�;��"G�<��ʽu�b�z^9�%a��ŷw��I�V(h�>�^-]r=s�x��l ��&�X���� �eZ�c�I����������ȪZ�l􀀼�~{y�;����YBply,�>/�58�i��n����X���θ�yH(P�wl��Z?�j"����T��!"jR���&i�Ӵ��--��0�
���R��o?=��iV�d�@I QC��8�6|%ԧ�G%��S}U��͛�e�t��S`��JeS2 �0����@ˑ�d�пglH������ ��|�77Ö1'�7�s+CC�1n
�H�BF\U�*�7�s����Pb�yL_�ߛ�$o�i-J'�L��F숀�%8�v0����N�:v�{�!�Xd���t�c���n�k�d��h>UD�=�Ocqo���M
�c�9َ�}�˼��"���y��]��dT�ex�Ǽ���-��pj4q�X{6�;C��e�$9O�ڊ�*Y�&���w+�wd_�@*��SW�� �\26���G2ư��'�N�
c�Xv*�O�" ��o�C��pӆ,���\qJ^EM:C#P�K�a@U}�=�aRK�9�3���B!�����^�[+bcR��EJ��B
tsVH�=���(��% ���a-�8�a��t��@�52�U̲ŕ�Ǿ�K���u��]ָ�?�5��0q����/�� 2h��nV�j���!HU
�{��o��)G��vL BcD�ɡƆ3�����M�n�{E�\��t[��S�|??uM����\���:�o�@��J ?Q}�t5Vg���R^Z��
�ɯ��x}��$�<c)�� �9*N[�����[�n��@t���}e�l��+|2�D�b��~���qV���0SD<�߀�l�_������3���uzeV�?���|��[n���̐=�ܤD�F� �/q4~��
D�fվU;d-�!\�G��.�1�fW�mN��-,��&X�t��c�Q�V-�L�n��~��Q�Զ2��$� ���*�`�V���;�h9�\�̮^��;?�i��k��� ���+r-�����N��H��[�[K��XB��Ȫ��r��Z�7�Js������v5�i�0&����%r�-�@I��E��6� 2'hH��%ž��X峤 E���V��;&�l~��X9���J����V�=�a�UA���'���K��+�zO6�P�O' &g?��p�Dū�E� �"q�ߔ�cO}�9����`�-V��b��(/Hb�X ��<�L�h5_<"�VDط���[����"�7~{x}������������o��z����/߼}�?�=���]1eX;}B�W$X�H�Ar���I��Aի�%�
A�2
J�)�r��H��rX:$���]�
����}�������p���fYV�&�8�U�����Y��~�
�VΆ�Aܙfl~�Μ������_ጞ!��5��Q�����t�'��eZ�^nk��pMvuM�)� �=v#[;v��X ���gkj�ˬy�X���E#�=ʕ�� ڪ
�6! 0��V�M���z�-lSc�� �ӎ^r辸�÷���i���5RD 9:Ex�
�b��"/R�x\q�����`9 � �[n��f�Uc��H1Yd �Ȯ<:�w����U E�s�>���ջu}��3lIʖ� ee�� kIR�d���V�>�H�|�9^�,(b������;�I��{�zh:D���m�����@Ku�p���9��<}���z6�b$�%fޤʉ,�^�4m�� ��̏T8�c1�hB��d�O�\��a�#^e X����e�^.�� �z��b�:g6���nW�%�+Ѵů������wx�8���o�8���ᘜ�e֐�^k!^m�����G�y�^���^�$� �O‘�nA�n�E(�[8��^y����m��ְ��ս��l��Q�� ��:��"��md�����
v������V�o��a�b���n(B�C�_s����%�����r���>.��r{���IK�aw z�b^C�s���$
��Ț%n�
�Ŗ�L�"��##ɼ
O���[����L�9�歫�pb��8�{.�Ǭ�8@�6��AA��o�p2i�2���y��I������E��Űh� GkMlNh���Й2�}X�]��u��m0T�5X�[��VM�H�ck��e{9~=L��1�ގ&�n54ȹ�������31�JSg�y���op:n���E��$�Շ9���/�U�^"�]�W��������~p��w><�0p���oWh�g���Y�����~�OL?�s�bU��2���:��,��<BZ�K��.=��f*���A�ms���c��������{y��-�SZa� ��\]:�"UD�%���Z���*�V"L�*�q�&�.9��pG�����@{ڄܙC}C��8�������T� 2Ny0v���D~xvW�̍���oΣ��I]�X�����G�{��NTi_���Z1*} ��
ȫ�JP���� `@+�L{B��|�g���h�k,s&��),�?���#�ʼ���n�&���7 ��I*!|2f豚%Ȕ#�M6Wj���PBtETh�n��vW�\Q��i*10>?�J���):��&Gm�(�h�?����#���� t��+�K���>݀�]פ ���bt�|�޹� ���xP���\��!��$�X+�T�d�#}��]�!�
&$�D��� �EyeU�������ѷ�0��`���nD�#�k�)����oŤ��77�����iO8,��hy?�N{1�T_�/���m�z? ���-�[�WΙ�\Ҁ`�͸6��Ԕ@Y'&;'E�HQX}{5� �@!aS ,�L�"�R�`����~,\ۋ��nq�s<������R�wr�O8��Hء���K5��%�&d�,R
y�$����r�ah��!�l�0ۏ��E� �U�y��7^��ޔ-5r��5�!�h���q;Y�zM�e`�)+�V�ޭ5�ǁ�����h{PV$ń}�8ݗ�Z��a�٦��<U�XH��A���sNf��;;'S��a�;W]�1>$���"+.�W; �������>�0�F~�Ꮏ�
�δ�����“���
����fy΍d
�8��ޱ y�N^H�4q���3�I>�|�6$�R�Y��Q��Qr�9(�*�z�x�OC[Q�a���E�.9�
��@�e8p}ږlk���'�X,J�)������Q
�G �b����(��'c۟���f>"���!n�"P�^�t�V5���`a�W$>�
��s�ih������d����8���!Z��Gw�����j��a�ht���(b���\����>�X�sB���uo��#v�P�� i50����rψ�$7�+Y>>����M�C[Pa�C��hs%��W=B�m�r�>ۂ�O)H[���d��O�K�r��ـGر�O��c�*���6���Q%<�Z¾JpHO*}��� ��
$��ׂ���q(/�&/���B��n�?��,C���E��0�X����c���C�xFn5������P7E�˳!ȕ��֊�"�����΢q���Z�/��Lⴼ0Q�\�S�,��I1�&�ک.v�d/�B!����
�\Ȕ)8v
� ��w&#{˾�G�9��._��Im*� ���6�@��b�/>% �Z�x;J|��^-қLұ��������Ӄ��J%+�$��
���n�Ǒ�F�`"�e�R�w��M�h�'�9��Z��1�w�3WI �n��Ǜ�Ȅm���Y&{ЊڸL���)S� ˯��.m:��-#v�ԩ�$��D��]�8@4�����`H���u�m��i�^�ގ=�q���/|8��8����HYo���@E����F<��!_��~H�o��Cym
�V��i����bXk�2�%z�T��Z҉�#R�ĚP��NiC�.��ͤ�\3(���A�9/B/e��c�6�aA���Ϊ NLKyz�B���@v;�mǻ�*�D��N�����b�vA���ŞGZ���ߴ{aO�q�����ĚA2ͣ��+�yK=�#C�/���Ly��s�?ԣ��
���.� �sz����DtY׍;���M=AaTV�̋� ӭ$��ʤ�k������1
P��@����F}o;V������4���-e@{� 1����)�Na��N�:����-�~�-a�� cx��6�Ͷ:iG淉�1��Uv;^�Gܚ�}�����������H @:N���4l,vm���H�ɖ�Eg�Ѻ���� sv�6T)���y/z��!��G]م�c���s�x��='��y�Al4����A�$�5��G^�9ié�D�!���Z_L���U�>
,�V<��c��c�<O�.ٙ��){�g|l�k^���d�.M���g�Ш�g��z@��%W��T��Rv�,)����'Z�'��~ S}�'s��I]�^�̑���Î���߂�D�0M\�qk!���� ��s��m��������b5Q4���R��@.��C�=j���o����_��_� 4jE6��F�Jp��<Ce��U>% Pc3���d��c6<��r>8��}�c��`@�M�CC��'��$���,%^,��.>Q8A�;<�o<Fd�V��e�VI>{�'�Hzj����o���>�
������͞.
����L�ͷ�rP�x;�GI��o������1�y
��_1h^,�"ۿX�$ՠ���iB���I�I^"���b�?"�r��bl���9���H���E�۫iv:z���Ƶ�5s�-{:�E�>[x4� }4�c�u����&C/2;c�1���7�=�"M *���ܜHu�V��c�q��rkB<��dE�ҹ2��E޺t��,������)c�ң��` �
}'�ۓ��U^���JW<�:Ժ��mț�A"L�[�Z��������7[�Ֆ�^g�B���>�-}�ϱ�q����VocGT;t��A|�#�䡔�0��FQ٧�Lg�1�~`t���X�ȭ��j���2�3mC�0��#�o
�@��Q�),>��Vg�A\��-�a �V�[;ž�gsU(� W�H@m��o�k3Bpr0� �N�8W�p�foGn��^v� ��plk����z k:�0�A���e���c�U�:^�Hw�{T�����U�
�c�챑��z0[Wi
?Lޣ�3��UC�j���R�|�C9�����]W
��v�^cW-�{��28^؞�-M�n�%T���\`m]@�����8�ѣ��RAd�%D��g�d:%�9V#9p��-vL�e�i�m���T6�C�)! I���`5 4�7�J��@J��Ė��VInA  ��O
�h� S�+�x��tl�~�{�bV����
���&6ubpo�����e������������$(��{�]r5Ϻ����c��+�s�ɟ�W��x����K:�.�����յ�����T �u��9T�j��7�� -2<X�B�M&=�Z3L�gF
W�|���h�A��I\\��� m(�t�������*�&�-����{��-��l#|�9�9ǵ�_� ������`v f��S�}z�\��M9��'�aRD�Wn�"6���׭6��4��g;ӿuS�j�B]���o)�����C�^��i׎AU�����c�8d��4��G�7�\E� ��^�Ğ��l
��9��)�0N>̂bJW��� pS�ϢV0u��JK��{\���!�I��c��ڸ��HKKF���J�C`O7�5�mo'H�m+��L����:�O�O%��b=���0P�� ѕᇊ��n��𝤂�t=58�� 9��^$���͌���%�+IH@��� Y�Go��2���kmo��i����i���� ����5ˑ����Fq�Axcc�pThs���Y���#����<-t�
�m\#CFt3����*-N<��y��I�������P���C�6Ϟ���E>���R�N��+��6o�6�Y��^sD���7�#�4+�7lu�{���a��"�������]�K-G�� ���҉zɉu�����< ��\[W�O�Ѭr���H22�Y`m�2E*�� kC�=��9Ʉ����}�d����p�i�κ�6@��?F���wp"l���2�p�[g����L�W|�jN�լ��cCAC�e��z��mq2���9�aN�8
���n�Ô�MJ7�jkT`�gco�����rS�n�r�Nr ������slF���}����bu���U"�讨^^A��D#�p�!Uj�eQ���'��d�Ee�@6�Y�S�~��i��k �w-�Gx\���0źې;qpǍ�2)W78����%�%���ʄRTz��}=��ih�+(��Rj�� �_D��n[��/��z�A��:����RDq�!�Hҏ6� �ٱ{��0u:P>�0�[�� �$qc��v���3!�R�Kz�5cr%F��� ޏ�5H3�dÏ� ��z*�qC��|�zl���h��I�8��?�ذ����/��c]�^|�
)�{���6��y�����+7����UZ ���:��
������h_Ϙ�*+Ȝ����6B��er&��z��&Z� >z�k�9��D�_���y�
�O� ���B�����Y�����k�[!q R(9�N?��ǔ�F3 �H��-Pa�@��z�}����
I��Y��|9�࿂#��0���!("�<��E���q�)�W)�3�׿�$�2���t&Z����]|E_��qK��B�X���26N@s�/�۱��7��m�*�k+�Ӗ @�;���W�y�7��2�7*�Q.6���HѼ�,���W�b;��g�UM#'U5�:�6��&�
L�����X �bG�2>{���\�'.p��&u�]E#Af�h�W@q�`N'�}�x��
�f1�0��߽���A�Y�������C����Ǽ�!bi 3ھ[��)+����y�������-��FW:���/��c���YrU3���/���[���gA����+���c�_��r/��p/ް��^����0v���(�$߭�}�n������t�B����#���9���&�|��Z��mvV��W�%����&p��^OX:,C�I�ϊ�1F����mr.����g�'%���c"�Q�gWZ@�_���c���#�)a����I})g3�&)1��\<���$zK3z��qC��=ݣ�
�m�&.���/�����}���w�ju���� N�:�>�>)�` Ǯ���%ڔ��dm\]�%�Sl�̶�O �i{}���!t�f�@n뷠�
y{aFo���&�"
GҸ�5ޱ+�7\ �nk�#|�r�pR������������V��(u,����}�b�yF����f;%�u�7:,B��m�<4�p��S_�!�_@��s;�7�ɸ��]9a��8) �P��2��yã�X#�W�yalu�]Ǡ�%��?"q`�-�A*���X�6�ӫFB*�m�u��}����x���w�m��J��{yb���ިS� �|~P�A�x�7�qT�IPsQ^��w���ZkR�w����>nf��ڠ�C��G������a���?��/�x��;o� ���U���+S���� �}c-*�$�~�b��� �HA��K9�p�u�fEp^�
��%VUYB;�U3���üY.�_�Q���|CcJ�ܝ�fj�hc��^�I�=�t���1��e�M�r*� _�_������������r����e�K�n�qdA9�Vwb\H��ɏ �Ey�~�nQ>kP�®��)�W�Z�TK�8@��Ьz���d�h�+4�@��WSF�S�����--�l�8�TJ(��/�Dչ|g �8���O������FS=�WD#T��^�? |$>�r��ѫD.�@~�094d����\ڇ�V����އ���|K������ �b��</ �b�x.��!>�E��/�+�����M��E���Jq�(jGM~����Ls�eFH����da�Z�]O���=�a��>BO�2�]��*���-���a`��룣�>�m��v���P%�D�D=>��q��Z_�o���<�~�EPyI�����Cs������a"IgŀQ��ȄZv���Ei���$��?�k��x�Pp�O�$H�G��"{Ե&T�C�”�/!��u�Q�0����Z3��c=��D�G*�򀊫��c'&���o��U�gE\'�� �2��0���ѱ�|�ܘIƆ=�*����}F}�i�Q�`�ޛ�wT��8T�ŵ�r��ziYK*S \�G�_K���4�� [�&�h�����b�&d��=��9�u�X7��F�f��H� ?X�yN�XH̙C���������I�`ϯ�զ&���u���/��BD��\<���Y.R�G&=�:.�^���Mk��Η�}� ����쩽k�|����D��m=�I�]��B\<w`�-��#���fS~�ڹqV����j\�!�y��L�pb�=Vc7>�%EX�
�=��$��+�����K� \n�i~!d���b��c�\|���"#nQÝ��XEѤؗa��t%�{;��6J6�߃�wx[��
-���D7>`r����#2�g��@p$�i R�gN�=,-j�����"֤��I>�$��B���0�6o��k��nw�i}�T)���}#:������X��v��٥�X�r����W�=��(�g��Q^����
�q
A�g|�JI�@D��
J��f�"VQޭ��A>DK���m�\��T�6���Gk%��́���'��m�1�6���0e������L��=cg�Em5\c8�'Dyc���e���jCF�̄�ƪ��D�Drrwˎ ��W�m����0������v�Q��2r�Y�Ԥ��]� ���O僩����r�f�_�9
㽷�|p}��K?J�T[=�"����m�������ʝpX�ã�[�m��m2[,|o�7��AN۟���� N���b�����?5���{��}�5����b=�T�au���v%��~g�=e��Ζ�>�ch/��1�j�aPn;�81cj�r
�>�H�lğ�E��
�ŭe ��8+����y��G|� f�
4�O��eA������r��`�E�U?rZ:��J�x��4w\����x��oɴvo5��������p��;�ԑtl�G�Z�4�;ƙ�i�=��ߧk&�ߧ&��m�tz�o3������U�p�y�`�I0� �N��A����븉�$� Ds���J�Ӡ T܍*B����S']->�.�'�>�>����
�w���C|)��Cï(o�yW��F�������nP<r���ysJK�%;�Sy�'�X•%\����\̒��G�3��ЏQ�����Ilb�� �y�����s�X9�'������.�ッK�(���������?�x��w��� d�ڗ��c�s[���Qa��^F/P�g�=��Ć���w~o[�y"~�H�3����P4��sA?~�@�Y(��%��� c��Hܬ ��ԳE|�B�7�~���o��'E�;��;4X`@��HEi.KH�z�Z���F��pm�f����T��<��q�_�I�5@i���yG_!�fߍ��W޶W]^��*�~���=Z\��ߠ(k�D�Z��\��װ;#\ nF�������P��x�I"����.آ��;/@O�t{:��,��PT38�� �LE�-̾\�d<��_� ���}��Kk��^ )�=��1�6�
��
"/�[��\��c��Oԛ1y]�L��3AM�"Kq9����r�LG��]|�R�7�/��\�'t G�
_z��PdYJ�'���LJ�8!b����iA�Qw8�L*�����[p�.��xP4#|<������|j��0r|[]����������%E��˟2��⻄H�ȸ ɲ��/Ǘ
��2��8C�K��+�ٷu�����G��b��8l��2��~Y�Uy�$���J�:���UVq@Z���v��PƏ�c�] �r|��
�,�U ��Z?C<6��u�J������q]_��q)V�=pѣ�_�@]
e�Y��|�j�A�E�#*��b��'���4�����c`��' G�0Q&K��f�*�����_��X�)���P�K��ub�U�Ȏ96�zQ#��l�!s��_�o𧻓���=ks�F���_1��6�A�����hU~n\���ع$��m��PD  ��D���9��u�������~<��e����,�l�dZխ����{�qtd��禭L�7��&��������eE1�f��ϴ��,�r^Xsi�\O�A'�iU�6��5m��������}2���;1�M �T�hl��n�Œ�P����it���c���{l�_���~p��fq���IL��l�j� ���m{��
�v����I[]]��fY�����v���*7+�S����zq��!�]\�������̪��{�]�p<�����G�φ��C3FP����~�؍���>44CV�� �����hm�(]��]d��u��:�7֖�)1|4�� G5���ub��bc�V�v[��)�6!
��.�&��V��=6u�s�uV�8"��v6�{�Y}e[��@�٦�`�_H�?�4������W��+X"�'{||J|A�����Z"5^<���ǵA+7~q��̯����.�5���jj� Z0���� ׷C<!9?Y�dKGcV�֛�Z@^^���!i���3��׿rGϞM�sm�;��a�[�fku�2�)��w[W~�u�����[�.�zֶl y[�w���Y�i,�6�lӘ��(��i��:�
x�Э!(M���v��x��
�T�j���Wkؙ�C�)B����#�l[�U"l���u@{�N��{�ʝ[������4����Aj��M��y���n�����GM��������#Pp�5�I �๩p��*?oA���X�-,��4hBL�50K�9��n��(��� ӯ��$���n@��L�.�t�P���x�B¦�+ly�s�2'-u=G�!`@�� ��J��`�����\�1t���S8�p�CQ�Q���!
0���`'�7t�������.�9lo��Z��57� ���R.���B`L���=����X�@�xq���?�AsD�S=��b�98;:� �n2:)��
a=5r#3�-��'��,nX�����
��X��<"���� �C�m7uɄ �t9@�4�-��@�� ���6����
�(�h�Q�@���z�z��ec������:���Q�J^Z��>1�Di�qd���hIpI�v'%uB�Q��W�����l�*�I�C:
UԬ*
�S�sNf����4��,k���=k��w X���j�hz8�)��V���S�c�1���T���\H��-�-
���peG���¦F*�I�S'��7�r��w�22^^���u����Y�l�BD�ګ��Q��ra�9*���=<���8͊����k���Y��ْ����t��i[�8`�Aʵ���E:3���swg �a
���=���_����WY^��?3�g�2�32���@!PA�|#j�0�M��2��g>�I�fi��+s�J��j�,���3�_�16����/���,�[�Z����<����Q�3�
�.�����lqJ�и������:{](�L��Ej,���ʼB��w?�)P>����M\�C[P`ÊCPT�D�������8 Uqmw ��4���?�HV���8�p(WycG4��0p|$I8��co[�#��}x����<o�D�*1�fmg`���X���@��:��ˬx�OByvy�'
�^�C0y�8)C���E�53�'��h�ɖ: �Ҋ�n��VWEH!n
��gC$W@[+��Ft K���q����z�,E�t��iyf�b��zU�� ��vN*�2�@���K
H�D"xqf9��e҅�1jBm�
�!�o>�k�8���� E�|�h�F|�O�'0���$k֬��]1�T30;5�/���PL�
��;f]��O�Hw�#����0��6x)B����P4S ��$E�̨�X�݅O�%6���6�7=����.p�'��Q�2���LI\
��ß7/�Q��A�o����,�#9g�E�Xܦ 
����/� /�O����:�.^Ԛĺ�v~�G�Cám�N��7��D�:�<��+ e�E}aДH���ꂍ[<��2�h�"ˋ�q�ȯ���t�殯�ÿ�Us��-1%rUbI'f��2!� :�2<�1$�����̚�k ��F��s^�^��5��&v]pf:ʃ�R����3��N�;
�w��uv7�܃�>�_�h��V?T������y�zԄ���ጭ�>
�m� $�<
�P�2\7����2��Hcnt�9/�S���Ѓ�N �����M�?����.��5�5���~��~YAag�.5`$�L�
���n�֟�b?�@�`��(�evm9�V����f�
�}�X)��29�{8�i�][�m���|o��@��
tT/�FI���ʮ> ؎�{��1z��6v�68ϝ��.q�!�% ~�x�"��џv����/(�"oGC3;�E9B&��8=�jӐ��w���"g;����M�,�E�8t�2D)��׮�)��:s�=���/��s΀�}�����s��
/��y�Ql4����A�$�=H�<k�wKJ�Pj&aŠFH�|��V}1Ih�#EW��ab�b+z<�7!��3Y�`�d����iИ����wk��-o��w��z[Ra���?4��5b��{@��#W��SAJ�႓���
���-��
����ݷh��kDŽ�Rw�n����S?�7�DU�|'�d�Qh�jƭ����3� 5z�D����>��lj�Y+�XL&z��Ȍv.@�N�dEtD�̼k�������e��U�Ai'��EԘ6|V��D���ղ=������Dl���1�i�|d�<t�u f&�p[��T�Az�F�$�iJ�/V����`A��ɣ��c�i�O7@H�$_����g�#%Ë�=�=:m�
5�M�����V�\�Ti��N���ʁ��kJ:�?w~cf|s��]K|�I���K{8-*�j�����N�J@[fF�t�U�񀤥�G �h���)�&%H[�F>���zF�ʲ��/+��g� ��
{m �f6��u-�T�>t�k2Ι���׀)3M|H��z]���]�"������S�i�-��9�8`��l�F����;�[�:�$#y�<���B�pE�է��g�9'b�0t⸻�fY�凟�lM nB��.ؖ�ٚ$��Y�ݎ?o�<����v������lCX�p����>��h5E\ ����m��jG��?�Od&�n$��4��FV���M�2���a`t��K�ˍ�ܪ�c&���9���]ˆ��ľ(�BǦ@S(>���z$��J_���͡*_�}�r�3�qW[ԃT}�e�R���2� �S N��)�>�A�
y;����M�g�ù�b��2�W��S����;NKg<n�hV�� W��ԣ��v�y�.péw��H�] �1�IS�a��9�옎Q
�Xj��t'������q�Cw��5��/ā۲��s��Z�4A�^%T��J�-�Z��{8'N�o�����T(2��}��L� 3'b$N���΃�� �ٕ�����8�õ�BP���~��� X�{N% : �싊s�
�L'�<�,t?6m"%&Dm��3��~�ks1+���gs����f���F7�J��\��E"~
�t�������?���\ @�*.D����#�Z�\~�l>�.�x��X�t�]*x��16l��M�� {
��&Ίiա
Ķ���d�Y���S�r�xD��f��}+a�p�/Gtp\���#��=N�ɎniK��#�T�l#KCV94oQ%�>�w�i�:"F�Br�p$�k�yA ����D�z�z�����3���@tm� =���t���,Zt� �l2��<�nՔ�����B~ˡܗ���4�}ߓ� �n[�?�f Ӯ=���
\�܉��Kd�Ż�0��%�`�D��B�i+��� �
�����@�ؗ��Q�aS��D� z���`�0M�h�%����1���Bo���F�h8�C�[ak����|��>^����߮RNO���Z �ӱ:�/0�!�������2���������E �g��캢�������2 ���{�1�L�aƣF^<� v���kfHm⥭��&�7��װch-Ӳ����I��
�p�9��Dĩ��;��S\` ��s�g�
m��o���p�'�y>��A�����5�e�� J7��0�������w)���lx�7��"�����y���ϱء�g�x���:�-q,p"�R+�F�b����x��3�U G4[�1mfuU�����]�,F`��&����?����ҩ�O��#TX�y�|�D��D��˰83O��!��5�� A�(��V[Iƌ�
��N�H�uram�@�j��A&L���Y�&�JO�t���J�N�X
'�G�����?%G"���x��������G$I���Us��j�A3���P����\����H���d&��sJ%”Tq���n��T�mJ��jKT�2�~�g���U��j��r���F��͈`9.ꏡ�RE�8��w��e�K;��9t�&֐
��P&8��#�rh�vQ��HF5��3�����L��G�ZW���qד@?��\W�)֭���k�-�� t���cѴM��S rQ���.{�eH�+(f��Qj��'
���j"�Z���Vv��rÁ��;����RDq�!�H<:# �1<��B;w����C�gKr2!�$�,��-�C;"����kƐ�8�_�X0�S���\�
N�Xg��i��"A�$,��V�kEla���; '����H!���j� ����)���+$$���/n��_\^O(h��ps���WK1�K����������P��aUV�9�����B��29�LB�a~{� �>j����x�;.b�м�� ��^�� �xq0mm��U����+��y�- J������ӘR��cơ�3�ݐ�,���αg��n�@�D��N�r�/�VT2���$�1
�@�"*A*�]+�՛�+q�5(m�^3�dF�KzKg&��y�sծ�/�+R��QOY�@�nZ����h��~iݎuu�@��n��p�tQ�O�� @K���O,AA��_���Qd�^�x�0�.D�ب�2,E�rVl��'�b;��VKUm�7U%�:a�ȝ˹Za� �gO����N�yE�i�9^p���I�o�<�1�X� 2CF;�Q�8j���h�>| ,AUC��%�=8��=���?�X�sl����
�Ǽ�K���h}���sR�K��.��3+�OՖx��,*������7C�K�ng�Qf�6p,W��y���P<�nʉ� {h ѫ�����{���K�T�5��^`J��^޾ٴ�k�j���{|'"�}�<߾����ob?��~��/~��i�?x` q�* e�R�`�� � �П�� ΀��L�xٳÓbD�5�d��J������17�/S�u���gA��Z,$�$Ĉ{R�e�&�;�4�PA��x:���
fۺ]\lW�_Yի���4�%�!�JG΀;"�z�2�|�ӪN톍gz#�Y�jOr�J��x Zb���s��Յ+��b�revU}*<���!��wC��(���oA7
y�zaoO��$�"�dq%k|b��7�0����W����'x��~�}e�����N��X�Xb;0O���G�{F!D���6vJ��fotYY�tyhz�,E���u�a��/���Յ�J�)ƽ8��
������$3,AQ'�c�:�.��ُ��al�h;��A[��?"q`�-�Q*���Z�tG &� ��
Wc�W%]`���b�`��s�#wTbD��3s�E�F�Ҙ_����:��� eH� "�8�YT7���cR�
�����9K4�a���c
�>E����ߜ�_R>
]�o_��p�ԅ��p���:�<>��ɔ��y�B�o�E��$<�2����Q|��a �r�p�:B�2��싆���3u]U���S3�j~���]�ώ�(�
��o�,B)����D
m�y�K?���*A %v��v�
FS�o�W }�� WC+[�߯f/()���'/1ܒ��i ��O����А���f�8�n�o���1��/Z�[!�A�*�#��I�A;��ϫ���%�Ǟ!�BCz�(c%L5K�'�#����Ti�8�J�����㮢�}un�~.�3NG<�=�$t����6����#� �
����U�#�E����~H����:N�
X.K��L�
\[�ȧ�ާ�|g��}��|aFz���o�Uiǃ(�E�peۧp!��g��?��
q9��(o��a*Ł��t� |}�d�����p�a�#UҠ�#ܫNӱ)��x$5�#� G�����uveav�>
��scd6���1����6�J�T�R��8Gm�_��`W����ԇ�QdA�%�C�<���CtT|Ȕ�� �B��Ա��K�_W� ɥ��\�W�S��3h�gA>*�f�#�5�2s&�~11>m0b�#�"�Z�`Lk}*�w��|�2+����<vbªo}�_��xP�
Z�u�bT�p��硪�����K�K� �gz�o
��9��\�٧����~7g��"���n�76�e-�(L1r��{�I�
���&�)���+���͊���o=��5gӦ*6������"�e)�K��� ��p�'�cv96�0�'��|�{�H��u�}C_�O��ӵx$am�R&=�:�zD�b[�k�]u�؟��[��[{ֺ}
Z�ry!�^{����u�,����Q��Y�0��ҋ��}�Y3�;�q
ct�<��R����R܍���_@daw<��RN<WD�B[� \n�k�`�xn ��5Y*>�LOG��:D�p7��v�5)�˰�:4} �����Vɦ�{h�_Ɩx$�B ��2���O�����#�2�-�X`p$xԂ԰
����7��G���/�b��9��#_�:�,���
36�}毙D��I��ʹ�3�M���uX3���v��2��'���MX`�E.��I~xU8��YW �]�����1�!��.X �
�PYA���T�"���x8�'������j�Ӫ����ٷ�#Gg',\A8�6�#�#��Fv��t!w��?
S�X�lF�h'Lw�΄�D���X0c8�'Dy����U����@��L��_�
�K�QOLN��8q�q���K���G���bv��9���2r�Y�آ��FQ�q�.���|z��Y��Ԍ��w��x�m \ވ�2�R# U�G\����/G���C�� ��N(���Q�E�H�8C�dV,�h�7v�AO����C:%��܌� <��?�� uG��9�]�>X���b=m��wXᤊ�՝�*��}$�9�>q�4� C��ݞ�X�������1��>N���铭�S"VH��
�ŝm ��8+���\�<�_��of� 4�On�eA�$�䝐r����ei�o)-���O�,^J���+0���4z�Lk�Q3�J�[o%��O�դ��#�������6��:��!�ʙ���n�%�F����������~D���0/�< ���t8H��fp=_�Ə$�
D�IwØT�b�
��QE�0���g[C� �n�R˹ϿOT���B�'‰�!�(��C��.�<:<��a�"i� 𫣯��<���`��]n��7��D����WS�~l�%TYB�jN�,�@=ST-�g`ΫԼ��O�!�1ц5ny���?��7�M������l�u39:��r3��ѯ����B<��߾�A��:䨔c�K-�Ȭh��(#P�;���}b���G����2� ��Yz^��q�� Yso�3�q�T��Z<bW$����M $n7%�X��"��BC_��_�5��W/�v�5��`��/G*+sU��nVX+s�Q%/8�&�$n��O���)���h�XZ9�k�˄���.c�mw��e��@Aܟ�NzñG�+0�E_P�=N���UA2b����3��g�ۑ���'�E�:�}�rt��6�a}���J���C�>P�l��Y5#g߂AkEia�UQM�x���
I�T�P��?s�6��Ő�BUi�|�ܬ��Qp�m(B���Tn���#֛y���&��t�Y�������Op,d�}��.c]��M��WDs��c��ƩyO=��Y�‚�8���w�ѫ��ެ�O�;d��)����w�-O�f��'*������J{�w�\>W: �>��)ݟBKJ_Q�ӗp� +�Y���
�K���7�q|� @�U�8_� �on_Uޭ�MC(w٤��`��x�&[X�����u5�$���Z��"���@��}l��o��e�<4GC��)��N��6��K�� �*��������'��'
7�K�<�X���*zԏ��h*� (����ӫ�a�ET�U���g��il�ϩ �c �w7U�!��2�: 5�UA������I9���p�2u�D�['�j�1��^>�x?��Ɔ�u�v@f���<ks7���_��6d<I��|T�*��qU����lJ��̀���3��:���/���孺��L�F���WMԧ��=��4:7u7o�F��hQW�nG�0Y��X���Zw7�]�V��s����ï]�zҘ��U�h�h�e^�V�����kӎef{����~������nC����m��@�N���}�o��Hم��!�Z����M���J_�_���ʝ�cѬ5���s���������J�\_�r�z��Q�F�z�ڽ�\]5�W>�����̀�<H��m��X�p��I��T��<���^iھnךO�E[5��Wk�p'�������_=����i�_}�nAB��_+8�2S����N�9�L}�e*h�v(��I=�9���J�7����ֽu�=T�-.mU@��$� ��ިQ�Ae�9Bd�b�#�p�-kdR�����j��i��n��^k�GA���˟Y���H�N)y��`�vJ��Pi �-�LW_�������@����yх�A��ضf`�����T2���ۉyM��F���e�A��qh,�x�pR�tMao�-!w�
�v묈��A`T���][h�֑R@Zt={��#G�u[�Z���Wb����~1B���B�W�~�8��3�[/�|��=JɧW
c։ȁ?��[Q�N���U�����z��0�ۺ�4���0�����P� l ^͂��`�S���=�fS�-��m3����~Q��F���S7&*茈��왣X=��4� �-G"��g���KK��>���
�� ��_?B�Θf�p�4����zy�;�^(��G��������N-��`���?�ȹ
�� E)3�_���+ݫ3�����VW�8<@ �_ϋu�ǐBa�nc��tW��W�T`��2�ٗ�><�G^���T\��W���U�d,[�)����m���V�8S'w�!��@����|}�6r4T�C��(����;b{�J�O�e�4n2'�}��Q�X�V�>j��q�0:���2\tO�um� r=���KxKv-n�)�j+%ǜ(�v�l �e������L�����
�$4���njq���qǦ�/$E�����d��U������%��&A�QԦZ�uo����7���{�\��Y�cc
�*8�ˢ��(
Ƚ:� x�/4�D�XAcM�l�\������\ E��ct\E'�*DH�䲶4��zk!����IWTF��0
z�O,C�3���R�"fx&�3t��/�����7r<�*( $�55m�!ߘT�P�|�c!�dv ���I�y�d(S�\{���gt[[�x�����Z$
dH���ᰨ�>'^�N˔(!�8Y�a�L�B�USHU����B��w���Gz<�#w������� �f{�<����E�$O�3�ܑ�ޥ5�}��̉F|�w���$!�v�$��rx�7�������V�x��+ ���%(�P��E������J=�',-V��ڂ���D]mM����mٙ�yO����g7�e
w{�>�
��C�{�><}!�<�|$/�s_KgR%g�l��"Jk�i���'�xP���/��9�w���ʮ�����9H>��r��b����8��Kc]���;���e]4�\��mݕ�R+uY��繚�B�Sjd�P]�SR��ݳ>۟p�G,�A���8�����3?J�6C���t���������n�`P��`D8�_��錁u��L�9ݛ;�-],�0�I���D$s }�(̪(k�����d#��
@��؟�T��1�5�SǾ�wqW���0r�% �k]!�p����'G�����(
�0I��}^)��p6 R�����w�R�N(熴VHB��E�yL�aV<�Ĝ�H�9P@�Z�(�}��L}%��8%ܘ��^]j��<rv��9�t�uG}�u�;�x )�Ch/��4�f�K]�@&gA���s�V�6���&���q���Й������elaRt��R1cۢu�K��v Q�/����«� '~�V�Z��_��h%��Q��`؟��K�Iz��Q��ߊuT��ף\��gX#��[7�'��+�J��C����,i�EK0��-��q)$,&����`��Q�;׮\��p��fd�B���]m������:�}�ԝ
���3�`�j���ɧd����!��]5�> �
�:1\��z�� ��D�G���h׭ۼ׶��x sݮ��a#�9���<|xx�r��e�*�q��2PV�(�V;G��C�ȓ$�B��4���4F��K-���I*��E�����b�όV����=��¢�~��0}dE,��g�
����qq�Iy��ÛE
EA�����Xxo�����۫�;7�� uV>'��I��-����u�a��xA���L�+$OEW�`z��ʰ�۲YW�Wl����N�� �2��'�
�)�E�\�=�S���Cn�C�����8[;A+(����>�^aM�%p!�(>~�C*>�+�d��vD�I�>jt�Yr��>�c�^�����������g�jPu�M{ 1_B�XC~�@��h7�*��A<)~�Z\�֮�>w����7r���p��>t���u}��}F��\FBRa`��@A��lک� W� ��?V~�J?���w?)�
Nc���EI�\�����u�NsU���B�+������<����o�:�p�[���Awo;o��A2��D�iZJJl���#3tE������x���[�����QI1��Z��0�hw��}����b~�>'Qp���E�3�K7I��B"OZ�=@�$s�i&*��
�>��� ޶
A|oW�_k�e���Ҵ�=�!�JG>�;��z�7J���tv�����$�h�������</�4���N�}`�*e��W,/��G{����z 3�@Ʒ̵<N�3��Ӵ"V��v]R+��ruÆ5�.���;�ˢ_g�^}M�߼�#��tЅ� �9�~�ۍy��G�<Ð�h�������������B˷����a"���i�g�>|��<� 5RyR-
� ���\���BU��o�+'��G(Ya �+B����O�n��w�.���*�s qx6D�Q$"b65*E!ǭ"ٞ�8p�`��Es������.�H�N1
:����&C]�'g���dF��T_�� �z�s� }Ȑ!�踩٘�T}|L��B�}H�A��Gc�"}{|욶O0�=�~�'�#E�Ǣ�\8Or�g��+c碯W]�y�*M�4b�.��Q�ߓ��,K�:���-��+��p�М[�����h��>]�u�`t>������T7.�e3��Q��� `��aL��K:軍����w��H�C_%ꡤ%;ᠨ`b�
�5}��/?*�]�1�pB��)�ӥ�j���vK
��ǦĬR�Rwi0^�k��ws�����
��Ni��r�c�R�.Pr�t�Cu�̔ĪS�-2�W�H��d| c�?N��w���!�Vp
'a%�<羫D���ȳ�P���W�<���g�_ҕ�;���1m_ԭ� � ����_D5Ң��擧o��@bO�[�ٱ��e�7�������O��'��F}r�N}���~�n� �o�Փ���EB���Z��) �-�[\^7]���~�2��A�@~�Z"�"����-S�r�J
B~�� ��r����t�•�VVe���ҿ�: �C����ͭ��]k���6J�*�[9�z� ##SH��O��>�L�U�D�
��A��8"S -S�:�$^, � h�7�������I%�K*�_�O< >9��Ϣk��IИ}���@�h¯0��3��#�����)�GƼ&Է�C�=�6�/�ꈋ+c봈� y��fG���~p�/�ם��+sXo\VGD^�#������к$�N
ac�>#��>�k�<"p���>��\�
]�;qz��MR�|�TKE)����w|ɺ�p���!ňv���=lєk V� ��\\ZӬ{�O��y}�^*�lw]q3� �:��g*Pv1QS�'D�fTjDD�����<�6��v�R+z��]:w�@$HP�쵁q�ғ�!�#q��
�ց��"<��l1K� �ډϡ�g�|�wй���
fvpI�ܣ�M4(Gd��6(M ,�3Ū�Y�XM�0J���U���O�*b ��.7�'�<1|9_<<�Hno��N��p�1���� h[L�hm��X�i��9�@�
i���"GR���4�.����Jm=ٔz���4O|P�!_dbLI}
ui��b����X`s$����c����tf1 a�z��Kֳ[����Q-�:�.@*�yU,�D��J�4!�o��Ż�e�@�\�+�aV���~�fQ����T�3ؔ��!R����1aDA0�mQP�wż�jp���� ֭����=+0A��ᝁX\��(o��(�������B��UP�
��ߓq $����dSc>�=A|O6rb<��@ �1�1��FY$��*���اp�D���ç=1�[FwƗ�j���})Y2�STQ(�,j���t5^N�aq����>�y�xM��(�b��a������b��C�Ww�EyʗtQ��*����J�fԧ��C�1�jp���e�\�0V�z�w )��v$����!�� /ܝP[kGE]�����g�̎�������+��*5ʒv�� 1�8Sc�+��� ��!p�=}!?�裳
4?�s�"|On��@�N��~��{F�O}.Mk��P���=u�{l��p&y��R
�D��8a}���$ �������X����,lq��<S�I����Y4!����������I�ɒ�����m����Z:�/��e�B����@�,pdi��oZw���I��ݯ�2E�S�Ӥ��|_w0����b���y�Ȼ�M�h D�I�>=�������3O �<��x/�<��5��:<�Ծ]��m�\5�龜mLz�S=�����`g[K�.,�u)��������������!9�k����������g��=:zx|�������M��*�S�D�o�_�K�~��e����{�5=f) ������ ,!�L��i�'ш;�h�����x�3�ǖ��b�~�1.�~e�GGWPQ�/�����?�x��x����+���g|舻R^�/�3�}�Sp���KX6���]n��8t�wuee��\'��<'�?bs��
9ro�3�鸼�_ע�]� ������Xܯ[zc)�-�\Z[�����o}��ҋ��=" ���s�֨+���.��̦���P૚A��@ו��Z�
�SL;@|� |ZY�߱���vk\���P�<9I�/� \ox�h��0��'sJ��
����� ��$�1nw�"C��|�� xw/ �䧵�psvs���9�6
|�棠̉��C3j�5$�Z\�{�}՘KH������S. ԥ����6��K1��Z���3�4�I���Ѕ�0���f `0i>~��fDDm-��i�G�(�%���~)�Ԏ��;"���c]i�IĖ�sz��|Or������K�@u G� ��wt!�~Zkͦh����9�'��h���7H-o��*0M������K{��jy��D8��{���/��SHbKח�C>i^�O���K0p���} �Si.��J*�����U��P|��Y��E<A�6W��b��s��0��3�x�$����g��5�9*��5�*�R�����=,u���#�;�D,xd��hWaTm�� �X�X���u�����D�3���@���@��a�@ I����V���>uT��v��%�9��H�p�~M��g�ۘ�C�_�����,Yň^{]J�9͢x&�F�]z���U�J��Su�?9w0�Ɓ�'bl0E���isE���+�Z
$"��ج�p�\E$aY���ϴ�!��a��������k,',UĚ�ׯ�}tw�)���^�z���Z�?�T���x��/��dtpp3���M�:��i����*�
SM��=��K�kB���kz=�ტ��� �å���T�~���ԘV|o��v� �b��V��s��넿y.O����?'DR��JMo)t�B���n
$mgj���~f���H(�G��ղde�oQ�*��/�M�WI���s��|�.&L�#q�t�
H�I��u�9�ᣣ�XR �)ӥު�r�b'���h�e�Bl`�:�U�%�'jm:���'ޒV)��$D��uYdZ�����^���\�]�t@�V���P-�����Q�mp�V���>��+ӹ C����UW^�] g)���Fef[���4v�foۙ�m�lЃ`��;e*��{6�h˷3]�7����D�'V/ l�3�#��?oF�g�~�+ݤ@b�6�h�:��F�`�B�����"EY�Vk]}{�Aa���>׿y�a����[tʹ��g�+��z�-���+`���&w�"1�k�]Z�bZP'��r����U
$�4F�$7���z��ڷE��;ݨ��S���8:�xZF,� �]h��Y��� �{o x����u��T����+�s5ަͺ������\��yQ��I�")tdCۭ]i}b�4+�k�/� S �42����ݘ����E���z�hGb|�a׶,r��쪅����әL�R��
|��7f�.���蓦Wi���{%�,#%+�ٗ}Oj7mQ��_�G̔KY�_���1u�R�V�9͑�=x[k�ϔN[P�̹�( L�,1pN�=�{%����T�&�m���㙺P^"�Ԭ�#��\���n�Nm����|���U�lA��0��0��������Ǟ��6��(
pyߐ�,��!�!R� �� �٩_C�����W��ĬV���ZXaĐ(���^�e�-��hR��K��^�n�<�r;A�Bѫ�/;�~�i�iY�W�R��GT+�{�e��������7T���{� 톃\p�=�D�����d�0�Ds�_���]b ��q9{�e��l/ Z�/�$=��%��[�����`��;���1� δYU�[�d00��B��;N�5�H�
H������Og6W8�z\{�ߙ|��i]%:�6�U��"�P���������%��Տf�!*��Pm̥ '�a!x��0L�Rt� L��FC}CUm���i �D~�.�7��-d�ܪ��@'��J6X�"�vGG��� ��aD�,�KI���_EfB�fV���|%��G�N���xp�`��,�x����� *���= � �Qӡ-��Ku�a4CM��^���o�(̞.�!C�H�#�iK�[����)���v�o0�g�8��l�[�/�� #�<���Hک��'�%��dm����<�Ǖap�WuH?�UQRf�p�f�8�R��,]7��Ď,��֭r�Ъ����sj������i���<���tqi��?7ݶ�~2/yW���<"R!�a�� ԋ�������G�H�3tuJ�wa
Zvp�AS��$��K�D_�a�+�ǘJ:�~�d�A3�\B�STP�������'V�Prd�)K��4 /��
`�Pp�T ���[�9�rcTc� �h���@��g&#Q��h�����Bz�$�I�甄x���|�
�a�HB�B
 E�/ҷPg����g<U^���*��@s�^���\[ds�Ң���.�F��$}�? z�M�:�'O_Á�^��I+�\6ºM
V���'%x���V_��_�V��44.���6��S"��"%�u�ĀB.}J�L�C,��m��bV���l�8�z}�d�Tz�QN�L��Q*I0��j0t�VR+8\I��J;�+� ��@YR�k���Xdέ����ݵ�N\mC����`���0��(p5�d�AP��@i���9P�H���{0o�a9D�Š�j�� � DB<�
�ƶ�kh6�Kt���I-� j�Ϫ'�W�K<�h���I;�
:� �i���1���Lh�����hux�)��Ʋ&�7\C��m�\ rOD�k�q��Ȋ����&�g�DܢUѴ��e)x3P5'rR�.��A5pm�IFX����� `��.���R'��F��N��T���o$�16&�1��KkZ(F1qO_�~CƴG��X���D{@�s��Y���<�C���֔}�Ǩ�xjU\q���GQ=n��z2N��౸#|�<eS��:�O4��’Zm�(��ֹ���Mw�h�^��N�,/�HР.8j�ࠤ'�C�G��l˃�����Ġ5���3���골'\
0#<o�1N�IQX8[r�����E�q��q�����~�Y�2�7�\G�)i[پ
ҕ�I��X�Gm��
AJV�p���<��/��UH��&�E.w�/Y,����ԏ��N�*.=�D��!�f{�ș�2��
MP��Q&kR��
�T�_ĕx��
��b&��h�s�K��ǜ�R<��Ñ�S�%�'�#3M�U C�n������j��"�|���&X���n�T��+�""�mb�����kR�Ms��8��M ���6��ʁ`��` ���LM�çBƄ�Z<Cy��Ҧ��A�!���aQ��J<P�Nb\�ݙ�%�����&� �3/��<*�*M}�@o�G*��&aO�d��|D{��#��]���!�������T�\F�Hjȱ+��R�%�+{B�o9qx2�M��w�sH�������R�nS@��ī�r��� �ͧ�����k�G�s@��w#����1^��)�S�� �x�O�lu�1y|5��{��)�nc��2#��8�a���}���os���Y���愗�N�XkOG�f��\�� Ò�R�W�}���M��@����8�*N�G�jB ����3S|jr���k��}��@#!~T����M-��jb‹Q��D���Ҵ&h �l>8P�~�Ǡ+���*Ĕ�8��>�D?�u�4�*$��
��j�
c�����,���~a�T���,����zG�GT��71Nք<� ��*�|O��3���/�72&w�Jd�#O�o�i��j�{��3&p1�B�W��.��><�dr� ��F��x�Cѕo��c!�,H�����$ǰ'�R����=G�{���Y�vp���0����fr��j�I��Z���cL �����O��@:9�4��ie��M��[K-�. �$7r���6�����
N���a{�������{�H@ +��������|OF�G� ]澜R�n�_��a.1�q%6��%��i����,)� =U��3(s����It�/�Z��x�_^�@��H�o��~�0n��n��:��/������?�q��������b��O��_�g<#�Kp���[Xv6/�}a��؟�;��}�s�����l��p�r��=�����H�{���BP۹��
D�����3<�Һ=���>z���������C#F��2jm0R�[|+�K���_]遮+�镤��Xv��i��J|����,��ko��Z�j�'����p����
g��3/,����Y#�Vň���� �}�o�,�>Sz��f�?J@����>��Ӱ����F���C0$e.̧��Ѳ������t|��\B��ODF;�N���)5~����N/��$���/����{$��o�� ؜��m@�d����͈��mA1�HAQ#[qE
���t��wD �Ta�J8��ؖdNo�X.�i����>ڝc)0Td�p����хH[��1�Z�K+�D��A8u�\
�ju����I�ͽ�0�$��^m�'o &���ʉp@Xw�1,C� II�����b(&� ҳ ������%L֤q8��U7*������c ^�>S]oM�"��6Q��b��Ӧ+�x6`�Gc.�I�M#�&����
HsV��@Z R� ��=Z:]��w�j�� �<=�]EPE+�g��r]’F�l��׭%z���
�A�Qq���%�$�g`�9�-Gt���T�����_�1n�o�Pcvlw;ӼMF�E�N�����k`gK���,�gb�j�ҥ'ھ:Q�U���9Q7 ��L'��8�?��t�-���Yms��,��5�IȄ>*q��Ԩ�%�����4�ч�H�>�N����8IUi&3���ž<� �ܔ� lu=��Ҫv��&�|�n�hLU�����������9|g638�@����hSUj��n��\������;_|��ff[���)�5�w6����Q��3�4ʵM}68� �#R� MF?�p~,����jv�Y,�rL���<���b^��$���В�h:�����6
���Bm�Pj[��V�S%�|{�˥
��#��umG���E{��%�6x��l��_:X�7
��_�����:h�BK�B���jкy
�iLÜϫ����w����+x#�襮�
��+S�����6�,� K垛�.u�|�����Gh�!����U9����g�]O0��I~�ui�l�y�2��U�d��߁|��t9)�8y����3�0���e�|�~�p � ,�EZ���}<D�Lޟd(�
�V��د!��q�jH)yC��+��я�TD��
��A/�)1p������ �M=b{x���
e*�����k�*�w�B����O��fc�Y��Oƽ���-�e�`����G��'r�s���U?T&wQTa�H�g�f~TeHi�]�u��̤m��r)zC����Y���P�C�)NV��/�ɔXqc��e4X�����!E;r`^�E"�B7QU׏�����:9� �U�Y�;]�����`JM!yɀ�Y��T�(8lT�d7j�BW(�ƃ�� `"n�
�� }P�"�����LG,�WBJ���)�<��UѢ���N��;�sk�֩!9���з�RXZ�I�~�4�n4�[g���@������a6��Xʨ;�H4�+�7���VX����|^�K!ޥS=���6�4��)y]&�6���=_0�¡�|��� ���H��PN�M��t��;�C�a�~��IS� �$�;�������)�h�C�J���~���󰕡e�_�}0�/=Г7�C�VU�Q� X� w��{�h-V�{���G�{��#M�Wb���hK����a$�Ij�� z֐���TR�˔��8��Pou�n����R h��q�wz��m\�Ai�xz=���#z��F��W ��3c���$��|Y�F���(L�P#6�����X۰��|�Ut��n����f������.���0�� xq��]��nJ�L�f=��f�]a��Γ�r��f�UjƏ��$�(DfQU
��|�7��C�sK��@]{�U;B��h1i`�[�=����!P�^-��<+˞Q�UiJ��=�et{��3E���.ݪ�{O���}��2�����\��&�Ԥ��6z����n�s�a%�۞T��$�*p����ho�����]2�S<q)خ4��Q�k���=��[W��m�6^�^K�>��Q�`5�:Ԃ/u'C�3�o_ �a�N�x��nX+�2�
���b5��� o�M�d�;~vbSҵ�"Up^.����_�bY�KQa��g�k������щ:/
E��>9h��7�q0�!��d9.���q�xq#���O`���\�fLN�g��'�䮞��V���VthЃ�O������u��^�y��з�''�5zx4fZo��P�i��DA1X�z�� �/���Z�K���.�L�H�\w�:��tm�(.�#����<}��(��ߘ@6Пy[�k����5�&�)�X�xS�,I ]ת����OL��X:��_�ʧ���q��7�ޓj ĘM" S��q�E��Y5�τ�L�4{�6yI� ��:�iz�at%V��!��n����ӫ[, �N����"���Sc�^�P��|�\��쎒��-�8\Z��j��uͣ��A1T�4%���$� �͍�T^���D1��kЃ��5� .�Jq�"�C�_Y�|�����wa�1��ۛ<�b>�pG�^X�wӧ�oO�����p� �iU�];��x_���4s�~҉M`�r�oT��-=�������2�� lK����y���Q����;9�_�ްxz�l���<J\9����t�e;�
��~����!�ӿ~���֔��C��*�X`��fh��d)���l����F�q�Z|�U֟�J�dA��SI�k:P*�Ẩ�_G4Y�b�nP�t�d]<���Į�q��M���K+�~\Ÿ�<}�����W�O�r�&&�8h�a�����ڮq>�m��|�.���2w+l�n}�<��} ��|0!�[?�+�9�=X�����u�����2���і{QAo^�
��g��F2#=��
���p�x���$�z�Xf�W*Г��j�K������E@�Yg�d?)�Ҙ��4Sd�bC�<������c�`�Y[F�̓�+5}�9���
%� �p���%�Mْ
d�XPh
K��y�
8���Qe%%���<
�G���5B����1{,?G 8ʉ$
�5�,(��lsz���h������ ���t� G2����A�nT�� �k�y��ϪG�M�*sց�;�V��u��
M��R[G/oh&��2؉e �G��8)c�' J1�aLZ ҋ
1v��9�%������Wd�DQW�y�7N$t. ��z�6�%9�#mϼƴ��c�W z0��1s�#����_5#1o�V5� -U��Q�/����gX~]@��
-�&)teٞ���P��d��퐥B�F�U<7��>/�l� g����$��`!��3^��[
�E兩�.��c�K%�}|t��=���ۚ�S6H�P&��O;�R3��R�+D�3�0��[�uםM���c���P1�n<��M ���i����X[���~�~űR��R���h!,��m
�mc;M��>�ȡ85�p�+ ��{�ex��u�/9s�߹R�t:�,��w su���(�/� ��Bi|*g�E��{Uk�%Tk�k�B�s��7��^ݥ����j�p ��
��t�N��!G��:���لZ�m��;$�����z��.�JmAَ�T>��@5���:jy�z�4���*�P;�y4��תP��L5��m�N�l� "d�6�:�Rt�/k@���[�T�û]���9���L��q�����pu݋`%��r` C|y��#Pa��\��,nb���Eu�4�g��rd�H0{���3��ϲ�Bn���Mm�>N8�` 8���w"�7�.<@��vJЈ��+(���|�z� \$;���]O�U=�Ǩ�������N7.?��Ci*
�1������7(7${s|��!��z
3T0��&O���H�� �y��"
�t�� P��g:��~Wk����UUW����;J��itF���Ç�|�ި��E"7Kz�x�6ޜ�>pQj�U��%ʙ5,�.�xKY��6��R���U�l� *�4����*n���ٌ6�5l5V���A�Ŏ�� �(p��ua�λ�E�$�����Wj���V����O�(�b�><�N:�5R�!�i ~g)m� �m$������a�W�ȓ�������S����i#2'����l)‰��d=��O��o�o��o��L�6U��ג�m�.�B
�A7���f*1���u�����o�@.0�����>P����&�)�(z��
�X���ٖX��½4�2���5���J�w&}��@���D��������,v���М ۫<lj��l� G����ݕX�E͐�mkI�j"N���`�sj{1���`<8�S�p���d�6����4�o����a�f�2Vm�M�/҈[��R
)�����G�~7�UZ����L��`m��� 5Z��bRwr��3��8Ygm��#�I�0r�=�&!¤�����7�B�,�.����Kև��v4���u
j��_��z�64�dK`����u'�x�g�a��=�\��ƍ͢�)���Tĵ���f*�ޟ^�`���Y�=:��$�!��j�ܚP6�4s����Ƚ�I\�����є�}��β��C���6c�lW��K��>)�珵�cd�t��P���������s)�pG
er_����s�&��J}���-� :U�E�Cc��:&<���c���WO�zJs�ϟ,�r�L������kluj�S΃:�^��`B:��KJ\���q#�����8�� !�?v�^����<���y��r1
~4���~��tXRz�e"ƫp��I�$�O���(�3z��p�8X
/ =i= 3��?i�H��J�/�2�ۻ��޴�m��0� eY�2�)���B�c+��ŷ����y��ez���F�5��?ᣜ]O/%��$��g/����2���
] ��m�`�|z
4Y��=�!zDJ�a�3{t���7G�H���L���1�=
.�E
oJ�K/E�L�G2P����q���� ���b�g�;���)����#Y+
S��{�hФ�Jo��)�0q��-N,�z'��2~)��'�/����T`� 1���"�eImJӱ��YzQ��a�} }(|�w��$��O�Y����xU����>�n����n��jJb^���3Ei�S��Ѵ�7��:<���6�{$*j�#)��\'�5��������B�Z��U���e{�w�`UA�ȨS�5�� ��d���n+� �֔Q��٢2��Q�\���}���$���5�򌊫��N�,ۭbF�P�K��6�x�� �������]��}U�h���u쩧�<6�æn$����Vێ�6}��b���
r���֋E$� �h�6�}�%�b*�I��H��=CR��î��̙�3J�]��;�+���leGsz:�L�q��6�|��H������B|Q�Z���[�-}����R�� &�h���=�RxIJki�j��<>�S�orj�lM�=���A�:�S���?{�4�(�}����,"e9udF���^�^=#-:������q:� l#�J�5�C�}�,J�=�\Ӝ� *!�A��M����[��Np9+��k�I92��Qm�q��Q��O1����tKWG�"\Nw��/�;a�l��bբ���C�h�^���4R.)�g�!��P�leL+��h�3�Dݫ3�!��5�"cH��)eQ)�%#ۊ)�_N�J�[M)_Q�ҹ�F�cn���T���Cƕ)#�DՈ(a���`��x�*����b������?�c��NɶB���ZYz��!_��ʬh}#jaUN���PZ9�*��EӶ{�O[I�Ј��7RҦ� +?��A�G��~�+���9$��7n�X��o�UQ�n���7�0���'?D��f�[S�ڏ�kH�sCY�*�6�� ���!��*=
VqJ ��a;����1r s��I �*��V��Қ�� ����p�M];���1�S9�I��F����
r~t�kP�{
i��#����t�㚾~|��e�߯�,.„�������jCkc��\'Pέؑ7T�{R�8��+ᛢ��(��te�j�>� gƿ$��m$���L�l��ϫ_�O��?Lp�1�J�*�c{|�`��
��|hr,�@��,�%?��p��ֈT�4�%�٠�W������
���]+� ;P����a�-<��I�<�=��q�?����q2�"n�mݚ�hɬ�c�L�a;I����78F� I8\���� �L�s��x�� ������G�7+��Ca�
��*W�ÊS$�����c�� @�jk0��� ��|�����md�w)R%�1�zG����6�T��f+4~}�!e:��
1�z��F����y|��Z���-h
]^
< �����J�%�!�^�")&���>r��E����f1��f��楦6>"J��3zי�1Ρ���g)bb�8Q�[Bs8X����֍M� ��l�-�I���UH0��#?�����UwP����S����5,m,��LZ�XYŞhG��m�煉 V�\��w1�h����"9�g���N�{���ynt�*�Ő6��;�ǡS���c�m�����;*}��҅��
_ z��i��p���,���͛��� ͠D'�1��筀�����`��_��M�� ���TMo�0 =׿��"� �ޡ(�u�e=��V� �t�NSINb ��#%'N�b �Ė����'��c �!v�L=x�.����)!��Zة"Ak�`bU\��c����W�e^�@�}US3>�"hO�.�=8�#�*�!����Զ���W�Sl���p�n�\}H���8#�Uv@�����5��
���WW�#�L; �u��H’����y��['Eh�ky�(��%3�ӷ�X��)��8n��$J�}�
Vp]���/��!����$8�t��S�E��^��qp=�p�_��)��?~�/3���P@���mm�V�~B��q
����
L���1�}(^#�����=�� BA�%��ț6X�}��,0s�rM"aB��p6VO�JG��F�Ⴗ|Ґ @��QX�][c�1}�4���uY�*���9;��d��(�z�Nm��a8�v�i&#�O�JOT��!E���� +�7�x�X�w\�9�Ȕ\�uJ���5�X#hrB���ɢ�\y������nAΛ����e��ӆCf(�
|��&f���>rcOC��������,�� �� ҷ���S=��4n�Tj%0_i�^+��s*�ÙZ�j%�<)��R�7[>�z�EJ��e�: �X�����C,�xJ��������^��q��fh�*
��;(+cڗ~��\ R�xK�}$�Z���v���=�cvj��7�nG�wU0�2�h>�[�ڢ��-����K/ߎ�Z���br8,���y�q`ɇ`��ͅ�L����r�ز�B�JW��U��n�0���S |l�P �!h���EoE4���R\�?���ޥD'���Dqf��](L�Bȃ�P�ct�!C�GC��z���������*S��(JZ0�+!M���Նg4%X���n���o���+��8$���_Uvq��
�j4}�{B��z|��KYʫ��F2�O���I���Vg��P���P�,��y[��jAI���N��8��ҚȓHޭ�IG7�͡�I�*�
��K�>�__`��܈��KH�R�n��A"����B��E����)j%0��p"4#����u�Bk���r�F�K��}>�U[��+pe\�H�H��\������v�ya�-:e�0t$i� N���� ?��g��G<و�j��[�+�g�;���� m�m?������w3��}'�{�e"����� ;[�������.��v߬�v�چc�uww��_G�}��K2�\bh(O����ݺ�v� S0<׃U���G��U��n�0 D��+0�<�ڡs�A����L��\�(���w��ǻ��A�H�����Dq'��ц��Q�o�����3��&���ۙ�gE����"�H6�\
#\��ۀ�)l�r
��g�ꦒ1[� Y1��[�蓊<��^��=��H��{��1s�5~t�D���'�#�B����d��Y�p�����۟o�c��Fu��`�����_�"B�<E٫���9�՘��K'q:o���E�a���MQPSSHIM��K�K�M��
,M-�T�T����k((e��t�cu�J��K2��4���RKJ�� ڬj4��j��j55�3�R��A�
/* parser generated by jison 0.4.13 */
/*
Returns a Parser object of the following structure:
Parser: {
yy: {}
}
Parser.prototype: {
yy: {},
trace: function(),
symbols_: {associative list: name ==> number},
terminals_: {associative list: number ==> name},
productions_: [...],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
table: [...],
defaultActions: {...},
parseError: function(str, hash),
parse: function(input),
lexer: {
EOF: 1,
parseError: function(str, hash),
setInput: function(input),
input: function(),
unput: function(str),
more: function(),
less: function(n),
pastInput: function(),
upcomingInput: function(),
showPosition: function(),
test_match: function(regex_match_array, rule_index),
next: function(),
lex: function(),
begin: function(condition),
popState: function(),
_currentRules: function(),
topState: function(),
pushState: function(condition),
options: {
ranges: boolean (optional: true ==> token location info will include a .range[] member)
flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
},
performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
rules: [...],
conditions: {associative list: name ==> set},
}
}
token location info (@$, _$, etc.): {
first_line: n,
last_line: n,
first_column: n,
last_column: n,
range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
}
the parseError function receives a 'hash' object with these members for lexer and parser errors: {
text: (matched text)
token: (the produced terminal token, if any)
line: (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
loc: (yylloc)
expected: (string describing the set of expected tokens)
recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}
*/
var parser = (function(){
var parser = {trace: function trace() { },
yy: {},
symbols_: {"error":2,"expressions":3,"e":4,"EQUALS":5,"EOF":6,"value":7,"MINUS":8,"NUMBER":9,"FREE":10,"PLUS":11,"MUL":12,"DIV":13,"POW":14,"PAREN_OPEN":15,"PAREN_CLOSE":16,"HEADING":17,"$accept":0,"$end":1},
terminals_: {2:"error",5:"EQUALS",6:"EOF",8:"MINUS",9:"NUMBER",10:"FREE",11:"PLUS",12:"MUL",13:"DIV",14:"POW",15:"PAREN_OPEN",16:"PAREN_CLOSE",17:"HEADING"},
productions_: [0,[3,4],[3,2],[3,1],[7,2],[7,1],[7,1],[4,3],[4,3],[4,3],[4,3],[4,3],[4,2],[4,3],[4,1],[4,1]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
/* this == yyval */
var $0 = $$.length - 1;
switch (yystate) {
case 1:return new Cruncher.Equation($$[$0-3], $$[$0-1]);
break;
case 2:return $$[$0-1];
break;
case 3:return null;
break;
case 4:this.$ = $$[$0].neg();
break;
case 5:this.$ = new Cruncher.Value(Number($$[$0].replace(/,/g, '')));
break;
case 6:this.$ = new Cruncher.Value(null);
break;
case 7:this.$ = $$[$0-2].op('PLUS', $$[$0]);
break;
case 8:this.$ = $$[$0-2].op('MINUS', $$[$0]);
break;
case 9:this.$ = $$[$0-2].op('MUL', $$[$0]);
break;
case 10:this.$ = $$[$0-2].op('DIV', $$[$0]);
break;
case 11:this.$ = $$[$0-2].op('POW', $$[$0]);
break;
case 12:this.$ = $$[$0].op('MUL', new Cruncher.Expression(new Cruncher.Value(-1)));
break;
case 13:this.$ = $$[$0-1];
break;
case 14:this.$ = new Cruncher.Expression($$[$0].setLocation(_$[$0].first_column, _$[$0].last_column));
break;
case 15:this.$ = null;
break;
}
},
table: [{3:1,4:2,6:[1,3],7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{1:[3]},{5:[1,10],6:[1,11],8:[1,13],11:[1,12],12:[1,14],13:[1,15],14:[1,16]},{1:[2,3]},{4:17,7:18,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{4:19,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{5:[2,14],6:[2,14],8:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],16:[2,14]},{5:[2,15],6:[2,15],8:[2,15],11:[2,15],12:[2,15],13:[2,15],14:[2,15],16:[2,15]},{5:[2,5],6:[2,5],8:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],16:[2,5]},{5:[2,6],6:[2,6],8:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],16:[2,6]},{4:20,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{1:[2,2]},{4:21,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{4:22,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{4:23,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{4:24,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{4:25,7:6,8:[1,4],9:[1,8],10:[1,9],15:[1,5],17:[1,7]},{5:[2,12],6:[2,12],8:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],16:[2,12]},{5:[2,4],6:[2,4],8:[2,4],11:[2,4],12:[2,4],13:[2,4],14:[2,4],16:[2,4]},{8:[1,13],11:[1,12],12:[1,14],13:[1,15],14:[1,16],16:[1,26]},{6:[1,27],8:[1,13],11:[1,12],12:[1,14],13:[1,15],14:[1,16]},{5:[2,7],6:[2,7],8:[2,7],11:[2,7],12:[1,14],13:[1,15],14:[1,16],16:���ko�F����1B��b����,_�C
H� Nq$ՠ��ņ"u$eG���������d���H�ܝ�kggf����系����d��E�����p(��d
�@��ZO���ZϠ%�ILgә�t&1�qL�q*�3�g8���B68*j�T�T�,lЧ�
%��D7T��
�P�rt�%�*t�ݩDw�Н*t�
ݩBw�Н":>ev7�: �L�Y�f^�E^��o4U�͢�su6IY��eY��`��iN�t�U]F�*�V��['��t���l^ܰ2�ʘßz�Vq]&s�s��4p��bTY�9�
�k$hGRe��f[�w�$eP�l��WFAU'�/�4
7�)�ftd�j$ZL��!
v��}����Ç,�Y^�〞X~�ۂ�T>z�����=���?��Ṣ/)�+��,��x�dY�5�k {(�&Z2���q��wȪ`���$���6���q9H�8�Q�+}ֻ
+��+���/A�
���9j6a�owR�R0D#4��l�UH��Fve�_�ʜ[lȤ������|��+�;Y�|I�r��!=�[Mڞ���ol^�׬�Pu���� ���/6(�0ש��Bc�W��x<F�� ?W�7����fh��h��:u�����4�����B���~�WK����<B���+
9X����Ȫ� ���Eĝj��ޖ�>ޘ*�����B<�(jp � ���G�I2�x�΅�8� ˾n@�l�_q�J�لu�e�.k&�8�>�Y�A�2����l�p:��z�h��mX�� �� �O*׎is �?�����k!=� �ָ�<��f>��� R%^�V����nz`���������.i8w��iq����M��K�7)hgb�:�4�
d�N�\��W{�^/8
<��������(BŶ�*n?U��l����t�� �Ag� ��P��G�7"��i�8p��4K\㾌�J�iŽ�#�(�.��Kđ��04�� ��.�?�c�K���@���a�����EVM1A/����Ѵ�Sk 93Q �2�uͬ�z�����uǎ!:��g���VA"l/�c}�ǥ�Ǫ�ʦ�i��+
�������)�d� ��/�P��fſ�TD ���n`��x*�*Ř5���1&#�{ٵ�.�r��<eu��~4�u�� P0tj��n4C9hl��5��罂���� �P�*葹�����Mj��])*=p������c�^�}Q�͙���
m���:>>��[ݙ��)L�9�U��ʫ�%_�M����1�l�b��k�r� b6Z�-�e�w*ڝ�A/4�S.q���2-����n�;6�Lp^��,n�]��%�0
g�r�s��"ۮ��'��s�$����tO��댋�gh#�}�a�&�A0���3g�l����o�J��<����&ۅ�T�a�{�B�Y��-�H=���!n�}S��=��E>Oj�FT���QG�<���Ԫ�'O� 2�f �:�UJ�A!�E�?F��EUynZ�y��BPv�9& �����n�o��K��励@d���Jn�8���d���]V����sӧ���I5��v���7��s�<�Y���ݫ]�[Z�1l|� Š��f\��ʊC��f |�t 6��^ƼWT��
cn����^����B�&&`���T����s��s)��Ⱥ`âYU$_R7H�~�[���T���+���~Q%�"��%�̚i�5M]�ԃ%� (7n�<��-(�����޻��}z��}o�R"J�����zy���70��y�Q��y�3f�Ŕ��fDoA��[.A��t�RR�[a: �j�fU�@�ȁ�9_�zY�Ś̊�Qjِ]�#�hv4��'��XW3`GG�>f�nn ><�h�1Z��(, �W*< _���4��4�ǏO���zhB�BȢu�lm)�ЁZֺ5��1�O�
l/&–��=�=n�w I�V��6�V���L',� �}��>�O]h��� i��M����(�����dimꑴ��ڌ޵������^����zb�;�&����c!3�Z�3�����௱�V>
��A��L�yg��{1X�-�X����.}|�"1X|�O�;��,�V�=����-�Ҝ�I���=���˥�<�4�ډ9MAbAZ���{��������)ױ����
�\��-��$���7��d�+�����Y�5+M�s�B+� ��N��,t<���A��<ؙ'��@.� ��B���E�5�ps��)��Z�Q3�2"�V��X)m�Bh%5!�m� TKq���7��roMD� ֌hNX�k��T�b�A΀�
�q�f�dwJ���-�9jWa�%��տk���o;�$��޽��k
���՝N��8�\lA�9g;`�����`اc%�[TC�2�#d(�Q�VVۤ"���@�؏�� ���WT��n�S �^��y�{׽�I�����P��?��r���g) 2�NƪJ3��Y ��>F�H.�
�u���d�k��b��0�4f1��q�C�[%�d 髜�Ȏ@�����Ǻ�S�x���h�'4q��=:i�a���Ѡ� X�O���un�v3/�hbx�p����D� �s-��a/�\��F4��7k�'R^��ዎ̷�B�ӭ^��BC�TF��%��p-��e*<�|�-K�h��N��V�G+Sԏ�)��Z8d�t4� �/:'~:�=������0TMǝ�iޅ_sl��5d�n\�����o�_��../`� -
�Pަ3nHt�%�hBS�|�/����{ �
�0�0��_n7�b��
p[%7 �_t��ޚ�t����f�����0TI�
G�����<,&5^���V�ǟ;� �s޶�6��Ѵ��J���[`��zzØ���3�����@�����‹&��Q��q����W�����;�r��@gn�������*�s'XWt�UƵ"�L�Im�k�U%܅��f_z𐴱e��Y����@��@S�f��N^��O�� ������#t��[��#�C�ꠜ�V��7�X���x ��3y��+�:ϑQ�nOPe�竡I����g)������3�9Ϥ�دJc�an���cM|^L3��G#t� o�^:��A�U@E����-O��SLEF�O\!.OxC �̇a��� �9W|��� X�0��{�̩��
[uH���u��vѪ���۳y���������� ��w�"�jk���~Mm>��I�G���OO8R���G�� ��G.���!���R((NU�/)3���ة���R:�_��3�� ң#�>ɤ�M��@=�c��Og��5)U!�5>� �}`ٯm+��=��[��-1����<�� =0KP��`��4�E�C˕X�p�>-�}�p�nH���K���r����4�>��$��w�����v��m�#!��%��F�oW)��+�^w������_���pA�,��q(l�̙�nJ{�P<7��?2Lj�am�ϣu#�γ��5$ض�l�\V�+»>[d�%�T�U�W��tT�C�_�{�}��\O�%��:O�-�
�o���([�t:BX%�TW=��e�:�C,��9^׽vP%�w"��n�/8P5����;�E�o2�JEmP�<�6��v��u����1TPNu�
{�Um�T�bC�ܔ�&-�U��,�6�K��YX�;���+���[�`�eb]?6��&<t��}�Ľ�"EE�D�m�����{ �K\v��x�t@�#�j$h�\���/B��<0%���*�C�g<��#:�&]qժ�b�x��K�����\�t��WT#��&]`�"7�x:��Z�1F���&I3�٩�%!{�����A ����*�ǃ��D^>d�L�C�ډ�J�m�/K�U���>��^�v �k�����2@r��&���+M�����F�� �Z�~cu��-z5ha�?��� ��$/���%�����2�.�)��$�y�fX��R<���ϟ//>��� �� ��?����/��y�(����tv0| �wDh(��9yT_ҍE�6O�
����#�b��UQ����
�D쩄=3��������F�3�‘��\���/d� ��L�M��<1�j�$h؈��9�����(�R��H��|y�q09�5|=�����O"jO�U��n���ّ���jM�g�x5c?%?M���K٘>V��:V]j��W�
U�/[
I�N�i8��[gQ�q�`��/��u��.
�Qt=��FϢ�ы�,B�0�߂�?��M�y���)w�X,���w�$ş����-n6� bL-����u+"O���]烸-?n��\�� ��o(08�]��NG����k������6\��n�V���1���A��`��q���Z�s�cY�&���wEjg���X���x�B�6/��"��������x�3H����X��a�<��#̎z��޿տ�u�>ZŐ���Χ��{�-�ȟ�r�[V=<jO?�����P
m`?��.�A��%}Q������ZHǔ=�� ES���̫c�v!9��\&�XC�*Pu�.��� ��g��F���mo�6���ıFo�E��nk�eE?�@��+���vŦm5�䉒S_��~�C��d'��pZ[�C�yCH�IcV^����dc��2�_O�W��lU��)�"
�C������,IP�ي�>�j��g���it�0� ��L���~�o�Ȩ?L���>�����Y63��5�
@�\',��b���2ɳ(�n�}��
=���%�R�����w<�h��3���ޝ�9"@�;��Ļ��)��,���<.��X�~ߕh���| lxpqAzU��K�t��ɸ�eUd�8�O�x�[αv ѱ4��`��yDP��ș�`C,,۵���I���nkLĚm�ցЌ"_T\�r��2���i+�=<� R������2.ф��*��𖾟��� @켍��u�UA��fh3J�M+�/��6��k��<��Yьp܂\������iJ��at��]\�,�P4�`Ye��A��1���y����(�t�q��ˢȋ��&�X��"$똭u��*.L,Ⰵ���l��P����coQ�7(8��6���ђ�
*( ƵI���<��
�����(_�a��>�&7yA�g��
( a|d�g8���k��TTx4x:��%�&.�k������
��"A���:��~����oz3�4�s�L
W�䘌Bϔ xCs�G9�2#L���Z�o���qPC� ��p8��A��%���4%�?�UXǪ
e$�5#(���eY��VB�K�tTѼ�t4=� ]�s��\�+Љ��s1ΰ��>Ri�9n� (Fp\@���xZL��ߦY?z4X�M��m��#fKK)��b��*�8ƺ��7^�
[L_{�cܨ�(�dm�FU��ɲ�T'� C�(�l��)sM�*K��k[�0tsA��*G�M�Ҕ#�b m�3��A�#�"V]��QS����ɝ^ �W��9$.Ooj�}n���U:H}���l��w��҅w6�q
G�?dC�
���#w
-�(Ͷ�}'��ь�:wߓ�1��[�B��;9��� Ȧ�zȱ����;}��9Q[L��N
1̬a��rdlmۊ7=��-ѯ�B���Қ���q��Q��!���Z����4��qQ$�!��10"M�{��P��l�HR�W�d ����Q-a�L����ވ�d�A2����+.���R
�Z�ӹ���ϰTxk�4�/.�]�/}��y�BN�`��x��W��:�L�mi�#v�F^r��7sM�\��S�Sz��{C�$�(B���zMz�D�c�}����y��8�����A`�QM��
��yC��
y������K j��4�I�n߼�Y"���S�ڍI��i��b�*M=ս���"V���Gu�c�
�$��h#�,�����R�4� � B��1��d��P�H .�{�^S(7{e��'��d-$y.���@�ǜ���@��qЉ�n���r���l�EQo��������ӳa?*(����`��[XPm��U�����]���q�%A?��fu�od��}g�Sm�����9tb��3b���LC�TJJ����-���yZ{���*
�hg�n��t����*}3��+�E�X!�E�}Γ,��v]ýk�a�:@�u�Y����S�� �q���kԛ�z���K�����0��䰠�IU�up�K�1�^�d <������J�0�0��_V�C�đ�ԲxG��E������#��/��Y�Wƞ-�s�4Tq�JGճ�����Q��m]}���!’�o�@BO4G�B�d+E�0�m���0os]Thc�\s�x�6֒6�h��~Ї��Ɲ4�[c_�K����j�ʍ���=���)9~��؉���+��:�ZB�\lXk�]-�Bz]s�<�O��bGը�ٟ(h^�٥�S׹5���s`�����0�"�V"����VwP�h���o���a<R����T�F����{������Ѝ"� ��������3c��}&��Y�5&~�A>�y��ϋi*��H��`��;�>�X�/"�*Re��s��Th4�����;H%}����9�X9
�s�x��z$�}�e��Z��q�:]4d_�)Y7�t��*�9t{5��i�g8�4
�L��űc[�Dp�寯ڤ���*a�j<�|zґ�n����\��}H�I�x��٬��R���]V+��ė�2���pP/%��%��|�$VJ�G��?I��MD\�#|���?��/��P�&`��Aзo��ZX�َ}�a�����}I����/=S��3t�T6
}!�l��P'�]�>7�����wC���.��>�1�t]IV�×�����E������i!2!���u+�o~�Ny��Rĺ���Uq�B�"�h�"�6�SO#�����:��*�L�7��Ѻ����c�x g�c�-��1�-�k��5�]M��������vT�C@_�{���_�'��a��ʒׯ
�o��&+[C:����W�Dvxp�]���X���u��`GE�m!]�..���� �Ty'^d*) �&euR��˗�����]%Z��?
��n[i/�F�@9�6��#��%y�ҽ ����\�P��>���vɩq�R^�ٹ� ����u��������������d�$�m+��_��_�ä�sI$MG��1����V���i�,�5�=K�����v9��LdsF&lҭ�Zu�]<���\?��8�s��XA��J#�z�,�L��6޷�@��{����$�+���1 9b��:n��u_���8�����L����������\5����:�ul� ��.{_��h����K�{�I=�1�YN�{��
.��a]|������lL�ƒѻuR���~����~>�wy����2�7�Xi�olY�����/~���� �?����r��� ���u\�/��5�;uj��G��#®�����ʒ���V�Lm1$�h�E�
�y~m�>��ό�'����������3c�G5��*ǟ����$���sb�&L�F
~0'����^^}7\�퀎p6&�����8:?�B�{2e݇��?��9��k2<}6��a3�6~;�������5��NՐZ<��~�W_�jP�4e�`��Sga�qɠ��/��v9M]@2�g���I�}�C�c�4|�`p�����p�dv�l�V �rw�͒[��y��$w���>���f���P�)�zǧe���<��~��~W_�.�2ǿ� ��y�m����G��əxt:��?�������+ ��m^�%y�0����l7(��w�D�Κ��X_�}.�ZV� ^�!�
Udc�sl���6x�B�m�o6y�����//j���P��IV\yJ�4_������N8�pv�#�^�y��"��(���)՝ON�ױ�*�H_�堷d=|�/^%)}��恚�B<�� .� p���t�r�T����c�^|�@�hB�@�O�2�O�9�T�Dgk I�v��k�;��F)���4���Zmo�8��?q��[K�"�黽� Z @�+6]
;
�v�ȔV���Z���!E��K���g��D���p�n�(���59!�ũ�6I�(X�9/.�4)7�L��sH�s@�d�.s��x��x�h ��zd�`�+,�L�f�~�W��Ҭ�Sƃ<dk�=����,(�1�� �O�/h�(@2��Ŭ��i�A�c�V�oE�R�&�E�3A"w���F��ה�(L�$�<ݐ0B�}��)'����%A�$dKfeKN₤�01,�8�4��U��qM��d�H�b�%� ��x�„�
v�Fsx
���eB�*�q:�� ��eeKS�&��1�M�qs���<¯�2Y�+
���|�����W=���~F7E.������D-��M8m,2,da���<Osw��~��P��+:�� !�\0�R�x�g��i �e@�lA����� �3öw���l��Ļm�ќ�!v�1A��,�P�7X��c�c\�z~C_a(pՔ ~{dfS��$iO��Sbio��<#gw{c�C���Qy�^謌!��I(�F��V���)bE��8�@�Y�-c�%ᖓ0�!��: �0���Zz|ۆ2N�� Iz��6� �(������E��}{X��!��Z��"_��7r4A0��sb����h�9A�т��>x��e� �=�+�}���7��YI�j�$��������B&�|G�C��ׅ��^�N�č��M#™f|��0$u����0�e�*�ѦbDQ��t�o\3O��- ���Pt
+ M�ޑ�<�.�P�"8_Ә���A;��w���]4�`���㗁e�q�_K�ӷ����H�c)�c2�|�‚�.�T#.s�ץ 1�P-��7��Ӥi��)Qz�C��ev_-��Pmyx �O�fs�}b@6��
��^�v���,�l�� 'os��e���ܬú6�3�lյԘh-�uBKF��&�qbM �&Q3(j��E��tdR�����ՊS%�|i�Bmjm$��&vI��iOB�.����=X�c��z����G�p�Y�,��#��Y���u-��Q
��:�E��6�5ă;rO��|�N~,�<�=�������;���������}�ړ�45�J����4�`�VH��tfpm�yb�x�V_�&�L��O��#��ί��
@o�R������jP+�O�3_GQ��ڿ�җ�Xa�����
�j�Vжц�V�I ��4J.��
x�f[��d]����ͩ8�l:��|�^D����߅X�.3B������S�N����v6CԪ�ڬaZ-��vDG]��(��R����z��2�;G �]����o.@I�}�iH-�2`�./Խ@ݲn�d��n�u7���گ���D}i�j
798��F�������}�|���h�ԇOO��Q�t��o���u �)݃�l���Y{VО�Y����Nwљ��w4[ t1��g���\����-���
4���<��o|q�8��S5�Y��T�Ǐ��q���<#���P6�f-� �;�~�K��0��lj�|����w�; .��+\�� ?�0d~I]�kc�����'�$�d������}2���!�����,��������x ݶ�r\��鲌�(��.
�.�eaD;.�mk�c�]k԰�#+�V ލv�x��𦽃�}ב츍0l+M{"scE%fDg~����H������]���,�@�������>��š���~*�����M�{����C��倣��^Z�]��P��6
��V;�?��i�]�!Dȋ�i2,u�Ix���J�}�,�����"�`�sEױq�'^]Mպ�n����Am�TY��-����iɓ�T��ɸZu���s$��T#��_�����q �w����OS�4�ܵϽ��a�j�����k[�>�IB\��âHXIM{��X�Um�F��U�v�P�0?�=�F���>����O|�烳g��N�
�\:���V�����U5]����`�\}/�MQH��A%�+M�>�%�
�$�J�S�RB��?H�����u^q�(q�^+E�&G�֏��8C����ý�I�N��=�����
-7W��t%m�
���B��J�ÙX�b�[�u���9 SU�M�wx��.�D���m7/�v�o�����6��P�\�pC�+��[��|y����O(��X��3�zs�&f��J�^�4
���i����S��b|2=!�&Ό�'%� N��,�#�bL`�u��1D6��M����}m
?�~���[�/��G��K=����_Yï5��V���3{b�'l�&� ^�Z���3m^�}�V�9#��d>���L���co�����\���������"X��܇���J�����4RO�zH/^|�O�~��S-җ_� w����!�5.L��Nҟ�G�S�������_��� N�ɑ?y�O�]���EI��S�,فUfNeI�`(�oQ��� ՜N��bZ��T�'^����r6�.�b��Ռ�7��Vˏ+>Z,�Ԑ��q�a Ljr�g�T45���Ժˡ8p%���9dR�Ŭ�d���"鉏�D��1/���6���ϲ����tή���ƽ^�+v���(�lR����q��;iц���.��J$����?PO��@�/���ٻ7C��w�9��j
w��]�E��i�G�_eew��C��=\��z�e���28a������ɠ,V��וul��/Wn�`��8��NW�W��yI*mb��U��T����o ���~�g�]'���X[s۶~��(�I+2f()qnR]O��$i�N2���)HbM�,@:�I���.@�/�s�Ɩ���b/� b}�a����|��|�B��֖غ-v8$�mK)��J7A�RH=��V���RF�;Db�Z�z���X�fF)[�y���<��KA��$��;�ڳ�)����g�c�!�r7C�"�!�R���-�W�h�a��4Rr���Ќ]�BG��a3*@�L�|�T�sG��t���ǂy��Ѷ�
�Ӛ&jC��Rrr����|7��ޜ�� ��M�E�B
S��$,�v�
y�4�L��Q�{֡Z1:��*b���T�(0��N�ɲ� ��_�s���l��i�j=��&�JI�Y39��c�􌆀$�ůvQK=�_�S\��'�Y��j�u��Z\�`ٻ%���M�ڰ~�5�s������SOe6�u�m����2�5�|����cDa��`���z�ٚ~��/�w!ּ �j[���������i�r�m��Us6�y����6�PPT�Q%�94QzC9�6n/��SNܛ��k�O �]���̯�����q~֬V�J �$�)"�"�,���(w=���C�;JV����H�䊒��&� ~�u�>k=I=��#}� �UU*�)�� m�)�2ʭ{m��/#���۾l>����ya�3Ĭȴ�p+��I9�g��d��g]FaI���D�32��\@�y���� S�Q�9e�_Htk�c6] �����fj�#��I�>�dMԹ )R�\}��eㄗI5J�f�ʡ?*��c����u����0k��<�H��j"���U`ŻV��� �Ǫ �� D��k�jV�Z���Է~�a���?$u����BW̊���P�����K���o���"�����.��6Q�a۫��k�p�$�麈�)*�.
�N��eaD���}KP�-j-��-���Rp�ix�^��~�(v\F�U�=;so�J�����{G��D���c����8����7��\�ڥu�,䂾�<����CQ��*;i2���m��|
�7�a���@%�t�p���S���TȎ������Q��}ϓ��V$I��q���5C�{���0'�P�t9���d��p���ޡ��m4v-�-W�?��h�]7!�$��ѯ��4}'90���
�)��\L����u��6fU��k��.v���xM�ꩲ4�Kf���i!��r��ٸ�t�耞K��ԔV� ��v�v
����
��n�Y��+���øu}ҡ�HB��5����B �%;l�d�T�tGP���"�蹺z���;�O^��#ѥ�.�K���/9��Ň�O��
�Z:���Q�A��4Y�Ӆ| ��1����x��}�����1��k���Ǽ�7a��W u�VIh�k���������J@5@�;�Z%r�352g��%������{�D�&$h�-����u�0Z�� ��F�^Բ�* L�+���3��Ŧ[�u �����Me[6%���zw1%f���찇�������7i���d��=��XI,P���������>�5b������͙f��
�`�:pjB>��ҏ� �l
%}2="�:�j-�O
��<Y�O��1�I���v6��uS���}e�O���4��E~n|b�_�S��R�_Z�WF|b�^���fL �6hR����0�6��&���]E����6%���|�Lz#_�� 1x8�:X�h�/f4?~�~��~X\��3=X<2��=6$3y�Ō\3���2��B,܅��.}��d����ҧ�O�'�S���?�_�/�W���ğ<�'�K�()��`�/K���SFR�4���[��<P�}�y��>J�~�Sv��j���V��;O�C��f��Y���~V�1&`s�I�Ǒ�-(����"�T^j��u�Cy�* �-K9TRC�,Y����I���f|I��u�=�F�r�� � nή"��d� _�ku�0fumQ�ߧ���.�1���5 s�I�W�� I���on�0<����ɐ��x�fX;� p��n5�;��.��DZ��+��7b�P=��qB/,r
+��� � pm�OE�y9(՗ѱc�~\� BPjI��y�t��\��𕨊I=��v��)ߑO<O�� ��{���X_s�8��8���qH�6��7}Hg2��2M���8F�#�,; ���o%Y��
i������j�����*�lAx0e�����Y;��>LQ��0����e�E ���e��N&t�K�d��r�ɒ��CO��Y�2���U�v�Ε[o0ז�ic.���Dy�b�}D�+��X�\!N@�Ӈ�?�� �t�-���W�O;i����2ʕ�c���x��.�K%�^ʡ?J��θ0�WP�o�$a��Я��8�i` ���,��<�
��,��I�qڴ�C��"�<�0�L@����Yjy1�Y�ZFT?)����}���G��.�>i@�b����BA�3F0�q��`�we���2�W��Q��>�_�-�]6o7v= 4�!�qQ���x������H�`���l�G����y A��0��sh�e]�V�a�� ,����w�l���b�H`ke�%3�VV��h���3r{&�V���k�
V�e���jm:��g}�(j�Ҫt���)K��'�H�(�*$&p̴�^a�j%����W;@_i�#6���$��� �<_��KƉ�%��"V����������f��e�Moʵ�8����TT�}d�0C���p9��,��E��[�Z�S:C����$BU��Ŏ�/�Dn��Ѻ�C�$����"-!�e�3`"7��d��!}�I�=׹�sBK��k��.J�
�J,���~���%r�$����<^)��6g�&�s%J#5�/�Q6�,��}ԵCH����*�MwYb������aD�j�I�t��}8Ί$���N E%54=�c
W%�3W�ӄ�!�y�ɳݠ�
bޤ�9�c5�����a������çV]KC'�y��58
BZ�ta:���f"��{2�J�R��>��keS�/�އ$oc�d����*����� ��[�#nǫ���WjdH�? ���h�"�7{�#��fKФ�kSOK�i������žW�Δ�jL�+���3��Ŧ[յ��wmS1����$8 ���2;������]���j�� ���H2��O"DŽ =������×ka�#z��
�_�
4��pl`۪C,�B�g�W��}����w{��#Ie�QNI���K�Ш� X�`iJ ��x��6e����E>n&���7����Т�3�#�~��'�Ԉwm�KL�mF�0l��%om��w�~l������9";X
������K�����o�l�~o��4�7�4�쟎��_�.‹ѭ~���k�t���
�,}3O�y��Siҷ�#O�:���%C����{jI�Z`����#�������'���b����#�{<�[�FqΡ)�z��%k@��H�6
@y���sp��=�<ST�����-&O�{Z �7�֝�l��?�(}�Bm�|P�1&��L���#[P�&��$��R���ؘ��;m�WI�DŽ�PI�̂�&��4�0.mFp���dq�� �u�*�ȟ L���*�oN6��ѺT� �j��r��w��.���'�k� �!AܸX������W���ޓ���^}<�t֮�T8Gy������.�E��,O#�_��۞��@�L?�_�h�V�!0)4\8���k�|�ʳ�I�P_�cc�~\�!(� /Ἇc\�^ |%�0���jW�����$���'�����Oo=���WmO�8��?qވ�&`҆wR�N|ؕ�vZ��-Ȥn�#�svR����7v�� p��`ό����l��=��O.i,F��C(�/Y��
Pec�5��B�� ���:h�G�����u�x�<B<O�ue�8�����pQ���m����;N��$�r���hB�x NH��D!R�t�
s��l<)�)�H�NZ{��"�!���ReQ.%�h��f3���R���$�:_N�u�T�X��A� ��Ks5�lL߰<Ƥ���|瑎_�`���Z.�$l57�x��/Y���OEjB��N��U2+J��r7�耟m�H�����W�ZI3�|���>
�-�����ƍ労֮��[?�m���:�b��Ԕ_�#��"E3�<fpu���
Y��KIy���Ci����5q
F
�~�����A�b���{���FJ�����{yuy{y��]���I>�z�F9"1>�/��Q>�c����)���j{1�W�PR5+��� ���DŽ:��HT�6�����N�q@Lï_0k#��/3����5Â���T���*'9�uV)���]�~�[����#4U ��R�EaQ�њ�o�M\�R�צ�
n)zbs���z�MJ%1�0�#d#.�l�ś��l��w�T���N&�!I”����nn/~��l͕ww���ҩmG=3x&��>�ј@?[QYGx�<JJ�څ<���H=�T���nn�Y��n�fz`]� )�lx���U�����&>�,>���5��
xP��Z�aM~V��j�sk�K_`rTW�VQO(\@pRW�zW�G^�-���܁;b,B����g�E;~�u��������U������?�=��]���c��T�ޮ]5�վ�ý{���ʯV���{���|���%�u�����&��!>����|���9A����8<�c��8���e2�s@���H��|�|�D**���;��յQ�rn�/O�{�k� mԝ�l�RP�ڥ��x��cS�g����q�c N�j$�;g��O�j��l �[w�0naA_R!a�V,t��*H��eJVq]W�+z#�AW_�Uy�� H�&3�a��)��� w����XL&�����܃3��D
�'-��?�F(�� #��S����g [���z��Kc饂v�;���2/�����\�D.c]_������� �����x�YU
�!(9.�A@�U~�y6<sK�%:u��?^ ��&O��O6���^"�´�dV�*��*a1��}C���>�
��uU[O�8~ϟ�3;M��
�[� i��}@mAn��^R'k;�Y��}Nnn҅J���;>���q15���l kK,���t*�%�0�� e@C�� "�a�X̸����fx]2T3�*�
�W��x�gl\��,
�*B��%"l��T�G$��@הGt1K��}�T��W�8…7ӆ�!���3��)|�"&��|��A�ңS��� z�N̉�_CA�����GbҐX���k��ۛ������ӈS�X”-�pL�JR����@
�Fޢ��8�6Y��)nj</�W�]�K�wjl��=��QKw�u|�[�'��8�)��H�D!V�E�L&*b����8YF����u�g\,�]��0�"��8��������C^�������aM ,��u�t>��/
)�g/���/��d�eP�~�=��<��Kh�'7\+8��\OL���e,%Ǔ
K�b�����j�����>k��&�I �0�i ����|e��v�;M�m�7D� '�y�0���}#�f�Pik��)N�F�'�K�n��h����Ӟ�������ޘ��[z;��?��1>4V���
d����˭�]IOc5v�n�uB,s��n�B�f=�X$�� 9%}rF���$W�G�'� �O�ߟ��0Je;�2e[Te`UJc�r�� ��I��Ú3�ꮠ����U�2�{��J����[�:Ke�A�Z>���{5PY�e�6��F�S.|����1���:��3Tl��oҞG^fEyI��*�wm»�� i#B�}=��5ŗG�$ʜ"�eS���p+�E3Z�V��G�@��5�����r`�O�sO��#�E��������9*{��|�����x�p;�U�p���d/���Nũ ��*���\u\o����}&B�P ��H
�����#`�z~iW�+u�ڗ_N�Q��&�������*{���k�ISV�n�Z{*�!Æ�b�Oi����m�QO�0���'v�q�II[���&�T�!�mOM�B��Gjg�ӵ����$�!h}hn�w}}|��u���$p��*� xO�d�F�r�����>��׮=�����.��肁�]0���>J�� _i �l��->x쉪 2�y�}I�^r�qS�S���gѳ�'W��Ϯ�(�o�>�O�쏩-�SW�mu�$�8}trUh�7K��LQֻ.��s���r�����������O�~s&_��1�!� |���_�X�1�8�x��>eyQI�!~�DE:��g�,ȖT�‰WfB5L-[U,�=�C����� ��n����:��F����]I4h�M�X�|j�8 ��qR����
P=��@����S*�$+��2��0d[r��ǎڦAQi�6�x����od�]���87k�K��e�C��!�՚0%� �ƭ3��O��z��/�M�H��m�uG�0�V�?���� Q��Q�Sf�$���4�/z����:BۯoGN��Ȗ*ph�7��+���3)�`%�0�o�������ȡ2S/2.�YA�d�a�+��f�I��}{A톺Q���&��R?����fw���mk���X�=�v��dAs�6�׮;����mQ�j�0��+69D2 ����(�(=���NUdI�#MZ���m9MBt�������:���6�� �`�)2�>X
�OP�ӼȲL�@�Ѡ���Wa�Z ��Z(��f�x0�zw���7K3��IF#��$�����H�A�^h4��4y��ƍ�G:@ �vT�����.�y�R7�V��%�4�q��O��ޗ��N�����;J����y/��� ���I�p��Kt��Ax�LD��܂����~)eJjGrf�Wk!���Jz� ��T�6\���| �_�OS���e�C��a�P���U�7�8���"?H�L�c���q�=sR��KG�k���=��n�0 ��}
�I��m�qHH��N�C�:%R�dv�`���@��`>˟�J�ͺ�O+M-���+���K���
�kdVx�Qn&0��U�OT#T@��,��E�u��ﮖ�(�x��y�ugQ���s��E��c1�'���-x���&F��yq�ր����@���!�U��4�a#`��S�������5+�P�Q�WWŝ�1~����$�-��SPSS(J-,�,J��M��S���U��O)�I�T��RPH�(�/*)Kj�'��%����d&�j
// ┌────────────────────────────────────────────────────────────────────┐ \\
// │ Raphaël 2.1.0 - JavaScript Vector Library │ \\
// ├────────────────────────────────────────────────────────────────────┤ \\
// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\
// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\
// ├────────────────────────────────────────────────────────────────────┤ \\
// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
// └────────────────────────────────────────────────────────────────────┘ \\
(function(n){var e,t,r="0.4.2",f="hasOwnProperty",i=/[\.\/]/,o="*",u=function(){},l=function(n,e){return n-e},s={n:{}},p=function(n,r){n+="";var f,i=t,o=Array.prototype.slice.call(arguments,2),u=p.listeners(n),s=0,a=[],c={},h=[],d=e;e=n,t=0;for(var g=0,v=u.length;v>g;g++)"zIndex"in u[g]&&(a.push(u[g].zIndex),0>u[g].zIndex&&(c[u[g].zIndex]=u[g]));for(a.sort(l);0>a[s];)if(f=c[a[s++]],h.push(f.apply(r,o)),t)return t=i,h;for(g=0;v>g;g++)if(f=u[g],"zIndex"in f)if(f.zIndex==a[s]){if(h.push(f.apply(r,o)),t)break;do if(s++,f=c[a[s]],f&&h.push(f.apply(r,o)),t)break;while(f)}else c[f.zIndex]=f;else if(h.push(f.apply(r,o)),t)break;return t=i,e=d,h.length?h:null};p._events=s,p.listeners=function(n){var e,t,r,f,u,l,p,a,c=n.split(i),h=s,d=[h],g=[];for(f=0,u=c.length;u>f;f++){for(a=[],l=0,p=d.length;p>l;l++)for(h=d[l].n,t=[h[c[f]],h[o]],r=2;r--;)e=t[r],e&&(a.push(e),g=g.concat(e.f||[]));d=a}return g},p.on=function(n,e){if(n+="","function"!=typeof e)return function(){};for(var t=n.split(i),r=s,f=0,o=t.length;o>f;f++)r=r.n,r=r.hasOwnProperty(t[f])&&r[t[f]]||(r[t[f]]={n:{}});for(r.f=r.f||[],f=0,o=r.f.length;o>f;f++)if(r.f[f]==e)return u;return r.f.push(e),function(n){+n==+n&&(e.zIndex=+n)}},p.f=function(n){var e=[].slice.call(arguments,1);return function(){p.apply(null,[n,null].concat(e).concat([].slice.call(arguments,0)))}},p.stop=function(){t=1},p.nt=function(n){return n?RegExp("(?:\\.|\\/|^)"+n+"(?:\\.|\\/|$)").test(e):e},p.nts=function(){return e.split(i)},p.off=p.unbind=function(n,e){if(!n)return p._events=s={n:{}},void 0;var t,r,u,l,a,c,h,d=n.split(i),g=[s];for(l=0,a=d.length;a>l;l++)for(c=0;g.length>c;c+=u.length-2){if(u=[c,1],t=g[c].n,d[l]!=o)t[d[l]]&&u.push(t[d[l]]);else for(r in t)t[f](r)&&u.push(t[r]);g.splice.apply(g,u)}for(l=0,a=g.length;a>l;l++)for(t=g[l];t.n;){if(e){if(t.f){for(c=0,h=t.f.length;h>c;c++)if(t.f[c]==e){t.f.splice(c,1);break}!t.f.length&&delete t.f}for(r in t.n)if(t.n[f](r)&&t.n[r].f){var v=t.n[r].f;for(c=0,h=v.length;h>c;c++)if(v[c]==e){v.splice(c,1);break}!v.length&&delete t.n[r].f}}else{delete t.f;for(r in t.n)t.n[f](r)&&t.n[r].f&&delete t.n[r].f}t=t.n}},p.once=function(n,e){var t=function(){return p.unbind(n,t),e.apply(this,arguments)};return p.on(n,t)},p.version=r,p.toString=function(){return"You are running Eve "+r},"undefined"!=typeof module&&module.exports?module.exports=p:"undefined"!=typeof define?define("eve",[],function(){return p}):n.eve=p})(this);(function(t,e){"function"==typeof define&&define.amd?define("raphael",["eve"],e):t.Raphael=e(t.eve)})(this,function(t){function e(n){if(e.is(n,"function"))return y?n():t.on("raphael.DOMload",n);if(e.is(n,W))return e._engine.create[T](e,n.splice(0,3+e.is(n[0],G))).add(n);var r=Array.prototype.slice.call(arguments,0);if(e.is(r[r.length-1],"function")){var i=r.pop();return y?i.call(e._engine.create[T](e,r)):t.on("raphael.DOMload",function(){i.call(e._engine.create[T](e,r))})}return e._engine.create[T](e,arguments)}function n(t){if(Object(t)!==t)return t;var e=new t.constructor;for(var r in t)t[B](r)&&(e[r]=n(t[r]));return e}function r(t,e){for(var n=0,r=t.length;r>n;n++)if(t[n]===e)return t.push(t.splice(n,1)[0])}function i(t,e,n){function i(){var a=Array.prototype.slice.call(arguments,0),s=a.join("␀"),o=i.cache=i.cache||{},u=i.count=i.count||[];return o[B](s)?(r(u,s),n?n(o[s]):o[s]):(u.length>=1e3&&delete o[u.shift()],u.push(s),o[s]=t[T](e,a),n?n(o[s]):o[s])}return i}function a(){return this.hex}function s(t,e){for(var n=[],r=0,i=t.length;i-2*!e>r;r+=2){var a=[{x:+t[r-2],y:+t[r-1]},{x:+t[r],y:+t[r+1]},{x:+t[r+2],y:+t[r+3]},{x:+t[r+4],y:+t[r+5]}];e?r?i-4==r?a[3]={x:+t[0],y:+t[1]}:i-2==r&&(a[2]={x:+t[0],y:+t[1]},a[3]={x:+t[2],y:+t[3]}):a[0]={x:+t[i-2],y:+t[i-1]}:i-4==r?a[3]=a[2]:r||(a[0]={x:+t[r],y:+t[r+1]}),n.push(["C",(-a[0].x+6*a[1].x+a[2].x)/6,(-a[0].y+6*a[1].y+a[2].y)/6,(a[1].x+6*a[2].x-a[3].x)/6,(a[1].y+6*a[2].y-a[3].y)/6,a[2].x,a[2].y])}return n}function o(t,e,n,r,i){var a=-3*e+9*n-9*r+3*i,s=t*a+6*e-12*n+6*r;return t*s-3*e+3*n}function u(t,e,n,r,i,a,s,u,l){null==l&&(l=1),l=l>1?1:0>l?0:l;for(var h=l/2,c=12,f=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],p=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],d=0,g=0;c>g;g++){var x=h*f[g]+h,v=o(x,t,n,i,s),m=o(x,e,r,a,u),y=v*v+m*m;d+=p[g]*D.sqrt(y)}return h*d}function l(t,e,n,r,i,a,s,o,l){if(!(0>l||l>u(t,e,n,r,i,a,s,o))){var h,c=1,f=c/2,p=c-f,d=.01;for(h=u(t,e,n,r,i,a,s,o,p);V(h-l)>d;)f/=2,p+=(l>h?1:-1)*f,h=u(t,e,n,r,i,a,s,o,p);return p}}function h(t,e,n,r,i,a,s,o){if(!(z(t,n)<O(i,s)||O(t,n)>z(i,s)||z(e,r)<O(a,o)||O(e,r)>z(a,o))){var u=(t*r-e*n)*(i-s)-(t-n)*(i*o-a*s),l=(t*r-e*n)*(a-o)-(e-r)*(i*o-a*s),h=(t-n)*(a-o)-(e-r)*(i-s);if(h){var c=u/h,f=l/h,p=+c.toFixed(2),d=+f.toFixed(2);if(!(+O(t,n).toFixed(2)>p||p>+z(t,n).toFixed(2)||+O(i,s).toFixed(2)>p||p>+z(i,s).toFixed(2)||+O(e,r).toFixed(2)>d||d>+z(e,r).toFixed(2)||+O(a,o).toFixed(2)>d||d>+z(a,o).toFixed(2)))return{x:c,y:f}}}}function c(t,n,r){var i=e.bezierBBox(t),a=e.bezierBBox(n);if(!e.isBBoxIntersect(i,a))return r?0:[];for(var s=u.apply(0,t),o=u.apply(0,n),l=~~(s/5),c=~~(o/5),f=[],p=[],d={},g=r?0:[],x=0;l+1>x;x++){var v=e.findDotsAtSegment.apply(e,t.concat(x/l));f.push({x:v.x,y:v.y,t:x/l})}for(x=0;c+1>x;x++)v=e.findDotsAtSegment.apply(e,n.concat(x/c)),p.push({x:v.x,y:v.y,t:x/c});for(x=0;l>x;x++)for(var m=0;c>m;m++){var y=f[x],b=f[x+1],_=p[m],w=p[m+1],k=.001>V(b.x-y.x)?"y":"x",B=.001>V(w.x-_.x)?"y":"x",S=h(y.x,y.y,b.x,b.y,_.x,_.y,w.x,w.y);if(S){if(d[S.x.toFixed(4)]==S.y.toFixed(4))continue;d[S.x.toFixed(4)]=S.y.toFixed(4);var C=y.t+V((S[k]-y[k])/(b[k]-y[k]))*(b.t-y.t),F=_.t+V((S[B]-_[B])/(w[B]-_[B]))*(w.t-_.t);C>=0&&1>=C&&F>=0&&1>=F&&(r?g++:g.push({x:S.x,y:S.y,t1:C,t2:F}))}}return g}function f(t,n,r){t=e._path2curve(t),n=e._path2curve(n);for(var i,a,s,o,u,l,h,f,p,d,g=r?0:[],x=0,v=t.length;v>x;x++){var m=t[x];if("M"==m[0])i=u=m[1],a=l=m[2];else{"C"==m[0]?(p=[i,a].concat(m.slice(1)),i=p[6],a=p[7]):(p=[i,a,i,a,u,l,u,l],i=u,a=l);for(var y=0,b=n.length;b>y;y++){var _=n[y];if("M"==_[0])s=h=_[1],o=f=_[2];else{"C"==_[0]?(d=[s,o].concat(_.slice(1)),s=d[6],o=d[7]):(d=[s,o,s,o,h,f,h,f],s=h,o=f);var w=c(p,d,r);if(r)g+=w;else{for(var k=0,B=w.length;B>k;k++)w[k].segment1=x,w[k].segment2=y,w[k].bez1=p,w[k].bez2=d;g=g.concat(w)}}}}}return g}function p(t,e,n,r,i,a){null!=t?(this.a=+t,this.b=+e,this.c=+n,this.d=+r,this.e=+i,this.f=+a):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function d(){return this.x+E+this.y+E+this.width+" × "+this.height}function g(t,e,n,r,i,a){function s(t){return((c*t+h)*t+l)*t}function o(t,e){var n=u(t,e);return((d*n+p)*n+f)*n}function u(t,e){var n,r,i,a,o,u;for(i=t,u=0;8>u;u++){if(a=s(i)-t,e>V(a))return i;if(o=(3*c*i+2*h)*i+l,1e-6>V(o))break;i-=a/o}if(n=0,r=1,i=t,n>i)return n;if(i>r)return r;for(;r>n;){if(a=s(i),e>V(a-t))return i;t>a?n=i:r=i,i=(r-n)/2+n}return i}var l=3*e,h=3*(r-e)-l,c=1-l-h,f=3*n,p=3*(i-n)-f,d=1-f-p;return o(t,1/(200*a))}function x(t,e){var n=[],r={};if(this.ms=e,this.times=1,t){for(var i in t)t[B](i)&&(r[J(i)]=t[i],n.push(J(i)));n.sort(he)}this.anim=r,this.top=n[n.length-1],this.percents=n}function v(n,r,i,a,s,o){i=J(i);var u,l,h,c,f,d,x=n.ms,v={},m={},y={};if(a)for(w=0,k=on.length;k>w;w++){var b=on[w];if(b.el.id==r.id&&b.anim==n){b.percent!=i?(on.splice(w,1),h=1):l=b,r.attr(b.totalOrigin);break}}else a=+m;for(var w=0,k=n.percents.length;k>w;w++){if(n.percents[w]==i||n.percents[w]>a*n.top){i=n.percents[w],f=n.percents[w-1]||0,x=x/n.top*(i-f),c=n.percents[w+1],u=n.anim[i];break}a&&r.attr(n.anim[n.percents[w]])}if(u){if(l)l.initstatus=a,l.start=new Date-l.ms*a;else{for(var S in u)if(u[B](S)&&(ne[B](S)||r.paper.customAttributes[B](S)))switch(v[S]=r.attr(S),null==v[S]&&(v[S]=ee[S]),m[S]=u[S],ne[S]){case G:y[S]=(m[S]-v[S])/x;break;case"colour":v[S]=e.getRGB(v[S]);var C=e.getRGB(m[S]);y[S]={r:(C.r-v[S].r)/x,g:(C.g-v[S].g)/x,b:(C.b-v[S].b)/x};break;case"path":var F=Re(v[S],m[S]),T=F[1];for(v[S]=F[0],y[S]=[],w=0,k=v[S].length;k>w;w++){y[S][w]=[0];for(var A=1,P=v[S][w].length;P>A;A++)y[S][w][A]=(T[w][A]-v[S][w][A])/x}break;case"transform":var E=r._,R=Oe(E[S],m[S]);if(R)for(v[S]=R.from,m[S]=R.to,y[S]=[],y[S].real=!0,w=0,k=v[S].length;k>w;w++)for(y[S][w]=[v[S][w][0]],A=1,P=v[S][w].length;P>A;A++)y[S][w][A]=(m[S][w][A]-v[S][w][A])/x;else{var q=r.matrix||new p,j={_:{transform:E.transform},getBBox:function(){return r.getBBox(1)}};v[S]=[q.a,q.b,q.c,q.d,q.e,q.f],De(j,m[S]),m[S]=j._.transform,y[S]=[(j.matrix.a-q.a)/x,(j.matrix.b-q.b)/x,(j.matrix.c-q.c)/x,(j.matrix.d-q.d)/x,(j.matrix.e-q.e)/x,(j.matrix.f-q.f)/x]}break;case"csv":var D=M(u[S])[I](_),z=M(v[S])[I](_);if("clip-rect"==S)for(v[S]=z,y[S]=[],w=z.length;w--;)y[S][w]=(D[w]-v[S][w])/x;m[S]=D;break;default:for(D=[][L](u[S]),z=[][L](v[S]),y[S]=[],w=r.paper.customAttributes[S].length;w--;)y[S][w]=((D[w]||0)-(z[w]||0))/x}var O=u.easing,V=e.easing_formulas[O];if(!V)if(V=M(O).match(Z),V&&5==V.length){var X=V;V=function(t){return g(t,+X[1],+X[2],+X[3],+X[4],x)}}else V=fe;if(d=u.start||n.start||+new Date,b={anim:n,percent:i,timestamp:d,start:d+(n.del||0),status:0,initstatus:a||0,stop:!1,ms:x,easing:V,from:v,diff:y,to:m,el:r,callback:u.callback,prev:f,next:c,repeat:o||n.times,origin:r.attr(),totalOrigin:s},on.push(b),a&&!l&&!h&&(b.stop=!0,b.start=new Date-x*a,1==on.length))return ln();h&&(b.start=new Date-b.ms*a),1==on.length&&un(ln)}t("raphael.anim.start."+r.id,r,n)}}function m(t){for(var e=0;on.length>e;e++)on[e].el.paper==t&&on.splice(e--,1)}e.version="2.1.0",e.eve=t;var y,b,_=/[, ]+/,w={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},k=/\{(\d+)\}/g,B="hasOwnProperty",S={doc:document,win:window},C={was:Object.prototype[B].call(S.win,"Raphael"),is:S.win.Raphael},F=function(){this.ca=this.customAttributes={}},T="apply",L="concat",A="createTouch"in S.doc,P="",E=" ",M=String,I="split",R="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[I](E),q={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},j=M.prototype.toLowerCase,D=Math,z=D.max,O=D.min,V=D.abs,X=D.pow,Y=D.PI,G="number",N="string",W="array",$=Object.prototype.toString,H=(e._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),U={NaN:1,Infinity:1,"-Infinity":1},Z=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Q=D.round,J=parseFloat,K=parseInt,te=M.prototype.toUpperCase,ee=e._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},ne=e._availableAnimAttrs={blur:G,"clip-rect":"csv",cx:G,cy:G,fill:"colour","fill-opacity":G,"font-size":G,height:G,opacity:G,path:"path",r:G,rx:G,ry:G,stroke:"colour","stroke-opacity":G,"stroke-width":G,transform:"transform",width:G,x:G,y:G},re=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,ie={hs:1,rg:1},ae=/,?([achlmqrstvxz]),?/gi,se=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,oe=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ue=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,le=(e._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),he=function(t,e){return J(t)-J(e)},ce=function(){},fe=function(t){return t},pe=e._rectPath=function(t,e,n,r,i){return i?[["M",t+i,e],["l",n-2*i,0],["a",i,i,0,0,1,i,i],["l",0,r-2*i],["a",i,i,0,0,1,-i,i],["l",2*i-n,0],["a",i,i,0,0,1,-i,-i],["l",0,2*i-r],["a",i,i,0,0,1,i,-i],["z"]]:[["M",t,e],["l",n,0],["l",0,r],["l",-n,0],["z"]]},de=function(t,e,n,r){return null==r&&(r=n),[["M",t,e],["m",0,-r],["a",n,r,0,1,1,0,2*r],["a",n,r,0,1,1,0,-2*r],["z"]]},ge=e._getPath={path:function(t){return t.attr("path")},circle:function(t){var e=t.attrs;return de(e.cx,e.cy,e.r)},ellipse:function(t){var e=t.attrs;return de(e.cx,e.cy,e.rx,e.ry)},rect:function(t){var e=t.attrs;return pe(e.x,e.y,e.width,e.height,e.r)},image:function(t){var e=t.attrs;return pe(e.x,e.y,e.width,e.height)},text:function(t){var e=t._getBBox();return pe(e.x,e.y,e.width,e.height)},set:function(t){var e=t._getBBox();return pe(e.x,e.y,e.width,e.height)}},xe=e.mapPath=function(t,e){if(!e)return t;var n,r,i,a,s,o,u;for(t=Re(t),i=0,s=t.length;s>i;i++)for(u=t[i],a=1,o=u.length;o>a;a+=2)n=e.x(u[a],u[a+1]),r=e.y(u[a],u[a+1]),u[a]=n,u[a+1]=r;return t};if(e._g=S,e.type=S.win.SVGAngle||S.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==e.type){var ve,me=S.doc.createElement("div");if(me.innerHTML='<v:shape adj="1"/>',ve=me.firstChild,ve.style.behavior="url(#default#VML)",!ve||"object"!=typeof ve.adj)return e.type=P;me=null}e.svg=!(e.vml="VML"==e.type),e._Paper=F,e.fn=b=F.prototype=e.prototype,e._id=0,e._oid=0,e.is=function(t,e){return e=j.call(e),"finite"==e?!U[B](+t):"array"==e?t instanceof Array:"null"==e&&null===t||e==typeof t&&null!==t||"object"==e&&t===Object(t)||"array"==e&&Array.isArray&&Array.isArray(t)||$.call(t).slice(8,-1).toLowerCase()==e},e.angle=function(t,n,r,i,a,s){if(null==a){var o=t-r,u=n-i;return o||u?(180+180*D.atan2(-u,-o)/Y+360)%360:0}return e.angle(t,n,a,s)-e.angle(r,i,a,s)},e.rad=function(t){return t%360*Y/180},e.deg=function(t){return 180*t/Y%360},e.snapTo=function(t,n,r){if(r=e.is(r,"finite")?r:10,e.is(t,W)){for(var i=t.length;i--;)if(r>=V(t[i]-n))return t[i]}else{t=+t;var a=n%t;if(r>a)return n-a;if(a>t-r)return n-a+t}return n},e.createUUID=function(t,e){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(t,e).toUpperCase()}}(/[xy]/g,function(t){var e=0|16*D.random(),n="x"==t?e:8|3&e;return n.toString(16)}),e.setWindow=function(n){t("raphael.setWindow",e,S.win,n),S.win=n,S.doc=S.win.document,e._engine.initWin&&e._engine.initWin(S.win)};var ye=function(t){if(e.vml){var n,r=/^\s+|\s+$/g;try{var a=new ActiveXObject("htmlfile");a.write("<body>"),a.close(),n=a.body}catch(s){n=createPopup().document.body}var o=n.createTextRange();ye=i(function(t){try{n.style.color=M(t).replace(r,P);var e=o.queryCommandValue("ForeColor");return e=(255&e)<<16|65280&e|(16711680&e)>>>16,"#"+("000000"+e.toString(16)).slice(-6)}catch(i){return"none"}})}else{var u=S.doc.createElement("i");u.title="Raphaël Colour Picker",u.style.display="none",S.doc.body.appendChild(u),ye=i(function(t){return u.style.color=t,S.doc.defaultView.getComputedStyle(u,P).getPropertyValue("color")})}return ye(t)},be=function(){return"hsb("+[this.h,this.s,this.b]+")"},_e=function(){return"hsl("+[this.h,this.s,this.l]+")"},we=function(){return this.hex},ke=function(t,n,r){if(null==n&&e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t&&(r=t.b,n=t.g,t=t.r),null==n&&e.is(t,N)){var i=e.getRGB(t);t=i.r,n=i.g,r=i.b}return(t>1||n>1||r>1)&&(t/=255,n/=255,r/=255),[t,n,r]},Be=function(t,n,r,i){t*=255,n*=255,r*=255;var a={r:t,g:n,b:r,hex:e.rgb(t,n,r),toString:we};return e.is(i,"finite")&&(a.opacity=i),a};e.color=function(t){var n;return e.is(t,"object")&&"h"in t&&"s"in t&&"b"in t?(n=e.hsb2rgb(t),t.r=n.r,t.g=n.g,t.b=n.b,t.hex=n.hex):e.is(t,"object")&&"h"in t&&"s"in t&&"l"in t?(n=e.hsl2rgb(t),t.r=n.r,t.g=n.g,t.b=n.b,t.hex=n.hex):(e.is(t,"string")&&(t=e.getRGB(t)),e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t?(n=e.rgb2hsl(t),t.h=n.h,t.s=n.s,t.l=n.l,n=e.rgb2hsb(t),t.v=n.b):(t={hex:"none"},t.r=t.g=t.b=t.h=t.s=t.v=t.l=-1)),t.toString=we,t},e.hsb2rgb=function(t,e,n,r){this.is(t,"object")&&"h"in t&&"s"in t&&"b"in t&&(n=t.b,e=t.s,t=t.h,r=t.o),t*=360;var i,a,s,o,u;return t=t%360/60,u=n*e,o=u*(1-V(t%2-1)),i=a=s=n-u,t=~~t,i+=[u,o,0,0,o,u][t],a+=[o,u,u,o,0,0][t],s+=[0,0,o,u,u,o][t],Be(i,a,s,r)},e.hsl2rgb=function(t,e,n,r){this.is(t,"object")&&"h"in t&&"s"in t&&"l"in t&&(n=t.l,e=t.s,t=t.h),(t>1||e>1||n>1)&&(t/=360,e/=100,n/=100),t*=360;var i,a,s,o,u;return t=t%360/60,u=2*e*(.5>n?n:1-n),o=u*(1-V(t%2-1)),i=a=s=n-u/2,t=~~t,i+=[u,o,0,0,o,u][t],a+=[o,u,u,o,0,0][t],s+=[0,0,o,u,u,o][t],Be(i,a,s,r)},e.rgb2hsb=function(t,e,n){n=ke(t,e,n),t=n[0],e=n[1],n=n[2];var r,i,a,s;return a=z(t,e,n),s=a-O(t,e,n),r=0==s?null:a==t?(e-n)/s:a==e?(n-t)/s+2:(t-e)/s+4,r=60*((r+360)%6)/360,i=0==s?0:s/a,{h:r,s:i,b:a,toString:be}},e.rgb2hsl=function(t,e,n){n=ke(t,e,n),t=n[0],e=n[1],n=n[2];var r,i,a,s,o,u;return s=z(t,e,n),o=O(t,e,n),u=s-o,r=0==u?null:s==t?(e-n)/u:s==e?(n-t)/u+2:(t-e)/u+4,r=60*((r+360)%6)/360,a=(s+o)/2,i=0==u?0:.5>a?u/(2*a):u/(2-2*a),{h:r,s:i,l:a,toString:_e}},e._path2string=function(){return this.join(",").replace(ae,"$1")},e._preload=function(t,e){var n=S.doc.createElement("img");n.style.cssText="position:absolute;left:-9999em;top:-9999em",n.onload=function(){e.call(this),this.onload=null,S.doc.body.removeChild(this)},n.onerror=function(){S.doc.body.removeChild(this)},S.doc.body.appendChild(n),n.src=t},e.getRGB=i(function(t){if(!t||(t=M(t)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:a};if("none"==t)return{r:-1,g:-1,b:-1,hex:"none",toString:a};!(ie[B](t.toLowerCase().substring(0,2))||"#"==t.charAt())&&(t=ye(t));var n,r,i,s,o,u,l=t.match(H);return l?(l[2]&&(i=K(l[2].substring(5),16),r=K(l[2].substring(3,5),16),n=K(l[2].substring(1,3),16)),l[3]&&(i=K((o=l[3].charAt(3))+o,16),r=K((o=l[3].charAt(2))+o,16),n=K((o=l[3].charAt(1))+o,16)),l[4]&&(u=l[4][I](re),n=J(u[0]),"%"==u[0].slice(-1)&&(n*=2.55),r=J(u[1]),"%"==u[1].slice(-1)&&(r*=2.55),i=J(u[2]),"%"==u[2].slice(-1)&&(i*=2.55),"rgba"==l[1].toLowerCase().slice(0,4)&&(s=J(u[3])),u[3]&&"%"==u[3].slice(-1)&&(s/=100)),l[5]?(u=l[5][I](re),n=J(u[0]),"%"==u[0].slice(-1)&&(n*=2.55),r=J(u[1]),"%"==u[1].slice(-1)&&(r*=2.55),i=J(u[2]),"%"==u[2].slice(-1)&&(i*=2.55),("deg"==u[0].slice(-3)||"°"==u[0].slice(-1))&&(n/=360),"hsba"==l[1].toLowerCase().slice(0,4)&&(s=J(u[3])),u[3]&&"%"==u[3].slice(-1)&&(s/=100),e.hsb2rgb(n,r,i,s)):l[6]?(u=l[6][I](re),n=J(u[0]),"%"==u[0].slice(-1)&&(n*=2.55),r=J(u[1]),"%"==u[1].slice(-1)&&(r*=2.55),i=J(u[2]),"%"==u[2].slice(-1)&&(i*=2.55),("deg"==u[0].slice(-3)||"°"==u[0].slice(-1))&&(n/=360),"hsla"==l[1].toLowerCase().slice(0,4)&&(s=J(u[3])),u[3]&&"%"==u[3].slice(-1)&&(s/=100),e.hsl2rgb(n,r,i,s)):(l={r:n,g:r,b:i,toString:a},l.hex="#"+(16777216|i|r<<8|n<<16).toString(16).slice(1),e.is(s,"finite")&&(l.opacity=s),l)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:a}},e),e.hsb=i(function(t,n,r){return e.hsb2rgb(t,n,r).hex}),e.hsl=i(function(t,n,r){return e.hsl2rgb(t,n,r).hex}),e.rgb=i(function(t,e,n){return"#"+(16777216|n|e<<8|t<<16).toString(16).slice(1)}),e.getColor=function(t){var e=this.getColor.start=this.getColor.start||{h:0,s:1,b:t||.75},n=this.hsb2rgb(e.h,e.s,e.b);return e.h+=.075,e.h>1&&(e.h=0,e.s-=.2,0>=e.s&&(this.getColor.start={h:0,s:1,b:e.b})),n.hex},e.getColor.reset=function(){delete this.start},e.parsePathString=function(t){if(!t)return null;var n=Se(t);if(n.arr)return Fe(n.arr);var r={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},i=[];return e.is(t,W)&&e.is(t[0],W)&&(i=Fe(t)),i.length||M(t).replace(se,function(t,e,n){var a=[],s=e.toLowerCase();if(n.replace(ue,function(t,e){e&&a.push(+e)}),"m"==s&&a.length>2&&(i.push([e][L](a.splice(0,2))),s="l",e="m"==e?"l":"L"),"r"==s)i.push([e][L](a));else for(;a.length>=r[s]&&(i.push([e][L](a.splice(0,r[s]))),r[s]););}),i.toString=e._path2string,n.arr=Fe(i),i},e.parseTransformString=i(function(t){if(!t)return null;var n=[];return e.is(t,W)&&e.is(t[0],W)&&(n=Fe(t)),n.length||M(t).replace(oe,function(t,e,r){var i=[];j.call(e),r.replace(ue,function(t,e){e&&i.push(+e)}),n.push([e][L](i))}),n.toString=e._path2string,n});var Se=function(t){var e=Se.ps=Se.ps||{};return e[t]?e[t].sleep=100:e[t]={sleep:100},setTimeout(function(){for(var n in e)e[B](n)&&n!=t&&(e[n].sleep--,!e[n].sleep&&delete e[n])}),e[t]};e.findDotsAtSegment=function(t,e,n,r,i,a,s,o,u){var l=1-u,h=X(l,3),c=X(l,2),f=u*u,p=f*u,d=h*t+3*c*u*n+3*l*u*u*i+p*s,g=h*e+3*c*u*r+3*l*u*u*a+p*o,x=t+2*u*(n-t)+f*(i-2*n+t),v=e+2*u*(r-e)+f*(a-2*r+e),m=n+2*u*(i-n)+f*(s-2*i+n),y=r+2*u*(a-r)+f*(o-2*a+r),b=l*t+u*n,_=l*e+u*r,w=l*i+u*s,k=l*a+u*o,B=90-180*D.atan2(x-m,v-y)/Y;return(x>m||y>v)&&(B+=180),{x:d,y:g,m:{x:x,y:v},n:{x:m,y:y},start:{x:b,y:_},end:{x:w,y:k},alpha:B}},e.bezierBBox=function(t,n,r,i,a,s,o,u){e.is(t,"array")||(t=[t,n,r,i,a,s,o,u]);var l=Ie.apply(null,t);return{x:l.min.x,y:l.min.y,x2:l.max.x,y2:l.max.y,width:l.max.x-l.min.x,height:l.max.y-l.min.y}},e.isPointInsideBBox=function(t,e,n){return e>=t.x&&t.x2>=e&&n>=t.y&&t.y2>=n},e.isBBoxIntersect=function(t,n){var r=e.isPointInsideBBox;return r(n,t.x,t.y)||r(n,t.x2,t.y)||r(n,t.x,t.y2)||r(n,t.x2,t.y2)||r(t,n.x,n.y)||r(t,n.x2,n.y)||r(t,n.x,n.y2)||r(t,n.x2,n.y2)||(t.x<n.x2&&t.x>n.x||n.x<t.x2&&n.x>t.x)&&(t.y<n.y2&&t.y>n.y||n.y<t.y2&&n.y>t.y)},e.pathIntersection=function(t,e){return f(t,e)},e.pathIntersectionNumber=function(t,e){return f(t,e,1)},e.isPointInsidePath=function(t,n,r){var i=e.pathBBox(t);return e.isPointInsideBBox(i,n,r)&&1==f(t,[["M",n,r],["H",i.x2+10]],1)%2},e._removedFactory=function(e){return function(){t("raphael.log",null,"Raphaël: you are calling to method “"+e+"” of removed object",e)}};var Ce=e.pathBBox=function(t){var e=Se(t);if(e.bbox)return n(e.bbox);if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0};t=Re(t);for(var r,i=0,a=0,s=[],o=[],u=0,l=t.length;l>u;u++)if(r=t[u],"M"==r[0])i=r[1],a=r[2],s.push(i),o.push(a);else{var h=Ie(i,a,r[1],r[2],r[3],r[4],r[5],r[6]);s=s[L](h.min.x,h.max.x),o=o[L](h.min.y,h.max.y),i=r[5],a=r[6]}var c=O[T](0,s),f=O[T](0,o),p=z[T](0,s),d=z[T](0,o),g=p-c,x=d-f,v={x:c,y:f,x2:p,y2:d,width:g,height:x,cx:c+g/2,cy:f+x/2};return e.bbox=n(v),v},Fe=function(t){var r=n(t);return r.toString=e._path2string,r},Te=e._pathToRelative=function(t){var n=Se(t);if(n.rel)return Fe(n.rel);e.is(t,W)&&e.is(t&&t[0],W)||(t=e.parsePathString(t));var r=[],i=0,a=0,s=0,o=0,u=0;"M"==t[0][0]&&(i=t[0][1],a=t[0][2],s=i,o=a,u++,r.push(["M",i,a]));for(var l=u,h=t.length;h>l;l++){var c=r[l]=[],f=t[l];if(f[0]!=j.call(f[0]))switch(c[0]=j.call(f[0]),c[0]){case"a":c[1]=f[1],c[2]=f[2],c[3]=f[3],c[4]=f[4],c[5]=f[5],c[6]=+(f[6]-i).toFixed(3),c[7]=+(f[7]-a).toFixed(3);break;case"v":c[1]=+(f[1]-a).toFixed(3);break;case"m":s=f[1],o=f[2];default:for(var p=1,d=f.length;d>p;p++)c[p]=+(f[p]-(p%2?i:a)).toFixed(3)}else{c=r[l]=[],"m"==f[0]&&(s=f[1]+i,o=f[2]+a);for(var g=0,x=f.length;x>g;g++)r[l][g]=f[g]}var v=r[l].length;switch(r[l][0]){case"z":i=s,a=o;break;case"h":i+=+r[l][v-1];break;case"v":a+=+r[l][v-1];break;default:i+=+r[l][v-2],a+=+r[l][v-1]}}return r.toString=e._path2string,n.rel=Fe(r),r},Le=e._pathToAbsolute=function(t){var n=Se(t);if(n.abs)return Fe(n.abs);if(e.is(t,W)&&e.is(t&&t[0],W)||(t=e.parsePathString(t)),!t||!t.length)return[["M",0,0]];var r=[],i=0,a=0,o=0,u=0,l=0;"M"==t[0][0]&&(i=+t[0][1],a=+t[0][2],o=i,u=a,l++,r[0]=["M",i,a]);for(var h,c,f=3==t.length&&"M"==t[0][0]&&"R"==t[1][0].toUpperCase()&&"Z"==t[2][0].toUpperCase(),p=l,d=t.length;d>p;p++){if(r.push(h=[]),c=t[p],c[0]!=te.call(c[0]))switch(h[0]=te.call(c[0]),h[0]){case"A":h[1]=c[1],h[2]=c[2],h[3]=c[3],h[4]=c[4],h[5]=c[5],h[6]=+(c[6]+i),h[7]=+(c[7]+a);break;case"V":h[1]=+c[1]+a;break;case"H":h[1]=+c[1]+i;break;case"R":for(var g=[i,a][L](c.slice(1)),x=2,v=g.length;v>x;x++)g[x]=+g[x]+i,g[++x]=+g[x]+a;r.pop(),r=r[L](s(g,f));break;case"M":o=+c[1]+i,u=+c[2]+a;default:for(x=1,v=c.length;v>x;x++)h[x]=+c[x]+(x%2?i:a)}else if("R"==c[0])g=[i,a][L](c.slice(1)),r.pop(),r=r[L](s(g,f)),h=["R"][L](c.slice(-2));else for(var m=0,y=c.length;y>m;m++)h[m]=c[m];switch(h[0]){case"Z":i=o,a=u;break;case"H":i=h[1];break;case"V":a=h[1];break;case"M":o=h[h.length-2],u=h[h.length-1];default:i=h[h.length-2],a=h[h.length-1]}}return r.toString=e._path2string,n.abs=Fe(r),r},Ae=function(t,e,n,r){return[t,e,n,r,n,r]},Pe=function(t,e,n,r,i,a){var s=1/3,o=2/3;return[s*t+o*n,s*e+o*r,s*i+o*n,s*a+o*r,i,a]},Ee=function(t,e,n,r,a,s,o,u,l,h){var c,f=120*Y/180,p=Y/180*(+a||0),d=[],g=i(function(t,e,n){var r=t*D.cos(n)-e*D.sin(n),i=t*D.sin(n)+e*D.cos(n);return{x:r,y:i}});if(h)B=h[0],S=h[1],w=h[2],k=h[3];else{c=g(t,e,-p),t=c.x,e=c.y,c=g(u,l,-p),u=c.x,l=c.y;var x=(D.cos(Y/180*a),D.sin(Y/180*a),(t-u)/2),v=(e-l)/2,m=x*x/(n*n)+v*v/(r*r);m>1&&(m=D.sqrt(m),n=m*n,r=m*r);var y=n*n,b=r*r,_=(s==o?-1:1)*D.sqrt(V((y*b-y*v*v-b*x*x)/(y*v*v+b*x*x))),w=_*n*v/r+(t+u)/2,k=_*-r*x/n+(e+l)/2,B=D.asin(((e-k)/r).toFixed(9)),S=D.asin(((l-k)/r).toFixed(9));B=w>t?Y-B:B,S=w>u?Y-S:S,0>B&&(B=2*Y+B),0>S&&(S=2*Y+S),o&&B>S&&(B-=2*Y),!o&&S>B&&(S-=2*Y)}var C=S-B;if(V(C)>f){var F=S,T=u,A=l;S=B+f*(o&&S>B?1:-1),u=w+n*D.cos(S),l=k+r*D.sin(S),d=Ee(u,l,n,r,a,0,o,T,A,[S,F,w,k])}C=S-B;var P=D.cos(B),E=D.sin(B),M=D.cos(S),R=D.sin(S),q=D.tan(C/4),j=4/3*n*q,z=4/3*r*q,O=[t,e],X=[t+j*E,e-z*P],G=[u+j*R,l-z*M],N=[u,l];if(X[0]=2*O[0]-X[0],X[1]=2*O[1]-X[1],h)return[X,G,N][L](d);d=[X,G,N][L](d).join()[I](",");for(var W=[],$=0,H=d.length;H>$;$++)W[$]=$%2?g(d[$-1],d[$],p).y:g(d[$],d[$+1],p).x;return W},Me=function(t,e,n,r,i,a,s,o,u){var l=1-u;return{x:X(l,3)*t+3*X(l,2)*u*n+3*l*u*u*i+X(u,3)*s,y:X(l,3)*e+3*X(l,2)*u*r+3*l*u*u*a+X(u,3)*o}},Ie=i(function(t,e,n,r,i,a,s,o){var u,l=i-2*n+t-(s-2*i+n),h=2*(n-t)-2*(i-n),c=t-n,f=(-h+D.sqrt(h*h-4*l*c))/2/l,p=(-h-D.sqrt(h*h-4*l*c))/2/l,d=[e,o],g=[t,s];return V(f)>"1e12"&&(f=.5),V(p)>"1e12"&&(p=.5),f>0&&1>f&&(u=Me(t,e,n,r,i,a,s,o,f),g.push(u.x),d.push(u.y)),p>0&&1>p&&(u=Me(t,e,n,r,i,a,s,o,p),g.push(u.x),d.push(u.y)),l=a-2*r+e-(o-2*a+r),h=2*(r-e)-2*(a-r),c=e-r,f=(-h+D.sqrt(h*h-4*l*c))/2/l,p=(-h-D.sqrt(h*h-4*l*c))/2/l,V(f)>"1e12"&&(f=.5),V(p)>"1e12"&&(p=.5),f>0&&1>f&&(u=Me(t,e,n,r,i,a,s,o,f),g.push(u.x),d.push(u.y)),p>0&&1>p&&(u=Me(t,e,n,r,i,a,s,o,p),g.push(u.x),d.push(u.y)),{min:{x:O[T](0,g),y:O[T](0,d)},max:{x:z[T](0,g),y:z[T](0,d)}}}),Re=e._path2curve=i(function(t,e){var n=!e&&Se(t);if(!e&&n.curve)return Fe(n.curve);for(var r=Le(t),i=e&&Le(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},s={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},o=(function(t,e){var n,r;if(!t)return["C",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in{T:1,Q:1})&&(e.qx=e.qy=null),t[0]){case"M":e.X=t[1],e.Y=t[2];break;case"A":t=["C"][L](Ee[T](0,[e.x,e.y][L](t.slice(1))));break;case"S":n=e.x+(e.x-(e.bx||e.x)),r=e.y+(e.y-(e.by||e.y)),t=["C",n,r][L](t.slice(1));break;case"T":e.qx=e.x+(e.x-(e.qx||e.x)),e.qy=e.y+(e.y-(e.qy||e.y)),t=["C"][L](Pe(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case"Q":e.qx=t[1],e.qy=t[2],t=["C"][L](Pe(e.x,e.y,t[1],t[2],t[3],t[4]));break;case"L":t=["C"][L](Ae(e.x,e.y,t[1],t[2]));break;case"H":t=["C"][L](Ae(e.x,e.y,t[1],e.y));break;case"V":t=["C"][L](Ae(e.x,e.y,e.x,t[1]));break;case"Z":t=["C"][L](Ae(e.x,e.y,e.X,e.Y))}return t}),u=function(t,e){if(t[e].length>7){t[e].shift();for(var n=t[e];n.length;)t.splice(e++,0,["C"][L](n.splice(0,6)));t.splice(e,1),c=z(r.length,i&&i.length||0)}},l=function(t,e,n,a,s){t&&e&&"M"==t[s][0]&&"M"!=e[s][0]&&(e.splice(s,0,["M",a.x,a.y]),n.bx=0,n.by=0,n.x=t[s][1],n.y=t[s][2],c=z(r.length,i&&i.length||0))},h=0,c=z(r.length,i&&i.length||0);c>h;h++){r[h]=o(r[h],a),u(r,h),i&&(i[h]=o(i[h],s)),i&&u(i,h),l(r,i,a,s,h),l(i,r,s,a,h);var f=r[h],p=i&&i[h],d=f.length,g=i&&p.length;a.x=f[d-2],a.y=f[d-1],a.bx=J(f[d-4])||a.x,a.by=J(f[d-3])||a.y,s.bx=i&&(J(p[g-4])||s.x),s.by=i&&(J(p[g-3])||s.y),s.x=i&&p[g-2],s.y=i&&p[g-1]}return i||(n.curve=Fe(r)),i?[r,i]:r},null,Fe),qe=(e._parseDots=i(function(t){for(var n=[],r=0,i=t.length;i>r;r++){var a={},s=t[r].match(/^([^:]*):?([\d\.]*)/);if(a.color=e.getRGB(s[1]),a.color.error)return null;a.color=a.color.hex,s[2]&&(a.offset=s[2]+"%"),n.push(a)}for(r=1,i=n.length-1;i>r;r++)if(!n[r].offset){for(var o=J(n[r-1].offset||0),u=0,l=r+1;i>l;l++)if(n[l].offset){u=n[l].offset;break}u||(u=100,l=i),u=J(u);for(var h=(u-o)/(l-r+1);l>r;r++)o+=h,n[r].offset=o+"%"}return n}),e._tear=function(t,e){t==e.top&&(e.top=t.prev),t==e.bottom&&(e.bottom=t.next),t.next&&(t.next.prev=t.prev),t.prev&&(t.prev.next=t.next)}),je=(e._tofront=function(t,e){e.top!==t&&(qe(t,e),t.next=null,t.prev=e.top,e.top.next=t,e.top=t)},e._toback=function(t,e){e.bottom!==t&&(qe(t,e),t.next=e.bottom,t.prev=null,e.bottom.prev=t,e.bottom=t)},e._insertafter=function(t,e,n){qe(t,n),e==n.top&&(n.top=t),e.next&&(e.next.prev=t),t.next=e.next,t.prev=e,e.next=t},e._insertbefore=function(t,e,n){qe(t,n),e==n.bottom&&(n.bottom=t),e.prev&&(e.prev.next=t),t.prev=e.prev,e.prev=t,t.next=e},e.toMatrix=function(t,e){var n=Ce(t),r={_:{transform:P},getBBox:function(){return n}};return De(r,e),r.matrix}),De=(e.transformPath=function(t,e){return xe(t,je(t,e))},e._extractTransform=function(t,n){if(null==n)return t._.transform;n=M(n).replace(/\.{3}|\u2026/g,t._.transform||P);var r=e.parseTransformString(n),i=0,a=0,s=0,o=1,u=1,l=t._,h=new p;if(l.transform=r||[],r)for(var c=0,f=r.length;f>c;c++){var d,g,x,v,m,y=r[c],b=y.length,_=M(y[0]).toLowerCase(),w=y[0]!=_,k=w?h.invert():0;"t"==_&&3==b?w?(d=k.x(0,0),g=k.y(0,0),x=k.x(y[1],y[2]),v=k.y(y[1],y[2]),h.translate(x-d,v-g)):h.translate(y[1],y[2]):"r"==_?2==b?(m=m||t.getBBox(1),h.rotate(y[1],m.x+m.width/2,m.y+m.height/2),i+=y[1]):4==b&&(w?(x=k.x(y[2],y[3]),v=k.y(y[2],y[3]),h.rotate(y[1],x,v)):h.rotate(y[1],y[2],y[3]),i+=y[1]):"s"==_?2==b||3==b?(m=m||t.getBBox(1),h.scale(y[1],y[b-1],m.x+m.width/2,m.y+m.height/2),o*=y[1],u*=y[b-1]):5==b&&(w?(x=k.x(y[3],y[4]),v=k.y(y[3],y[4]),h.scale(y[1],y[2],x,v)):h.scale(y[1],y[2],y[3],y[4]),o*=y[1],u*=y[2]):"m"==_&&7==b&&h.add(y[1],y[2],y[3],y[4],y[5],y[6]),l.dirtyT=1,t.matrix=h}t.matrix=h,l.sx=o,l.sy=u,l.deg=i,l.dx=a=h.e,l.dy=s=h.f,1==o&&1==u&&!i&&l.bbox?(l.bbox.x+=+a,l.bbox.y+=+s):l.dirtyT=1}),ze=function(t){var e=t[0];switch(e.toLowerCase()){case"t":return[e,0,0];case"m":return[e,1,0,0,1,0,0];case"r":return 4==t.length?[e,0,t[2],t[3]]:[e,0];case"s":return 5==t.length?[e,1,1,t[3],t[4]]:3==t.length?[e,1,1]:[e,1]}},Oe=e._equaliseTransform=function(t,n){n=M(n).replace(/\.{3}|\u2026/g,t),t=e.parseTransformString(t)||[],n=e.parseTransformString(n)||[];for(var r,i,a,s,o=z(t.length,n.length),u=[],l=[],h=0;o>h;h++){if(a=t[h]||ze(n[h]),s=n[h]||ze(a),a[0]!=s[0]||"r"==a[0].toLowerCase()&&(a[2]!=s[2]||a[3]!=s[3])||"s"==a[0].toLowerCase()&&(a[3]!=s[3]||a[4]!=s[4]))return;for(u[h]=[],l[h]=[],r=0,i=z(a.length,s.length);i>r;r++)r in a&&(u[h][r]=a[r]),r in s&&(l[h][r]=s[r])}return{from:u,to:l}};e._getContainer=function(t,n,r,i){var a;return a=null!=i||e.is(t,"object")?t:S.doc.getElementById(t),null!=a?a.tagName?null==n?{container:a,width:a.style.pixelWidth||a.offsetWidth,height:a.style.pixelHeight||a.offsetHeight}:{container:a,width:n,height:r}:{container:1,x:t,y:n,width:r,height:i}:void 0},e.pathToRelative=Te,e._engine={},e.path2curve=Re,e.matrix=function(t,e,n,r,i,a){return new p(t,e,n,r,i,a)},function(t){function n(t){return t[0]*t[0]+t[1]*t[1]}function r(t){var e=D.sqrt(n(t));t[0]&&(t[0]/=e),t[1]&&(t[1]/=e)}t.add=function(t,e,n,r,i,a){var s,o,u,l,h=[[],[],[]],c=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],f=[[t,n,i],[e,r,a],[0,0,1]];for(t&&t instanceof p&&(f=[[t.a,t.c,t.e],[t.b,t.d,t.f],[0,0,1]]),s=0;3>s;s++)for(o=0;3>o;o++){for(l=0,u=0;3>u;u++)l+=c[s][u]*f[u][o];h[s][o]=l}this.a=h[0][0],this.b=h[1][0],this.c=h[0][1],this.d=h[1][1],this.e=h[0][2],this.f=h[1][2]},t.invert=function(){var t=this,e=t.a*t.d-t.b*t.c;return new p(t.d/e,-t.b/e,-t.c/e,t.a/e,(t.c*t.f-t.d*t.e)/e,(t.b*t.e-t.a*t.f)/e)},t.clone=function(){return new p(this.a,this.b,this.c,this.d,this.e,this.f)},t.translate=function(t,e){this.add(1,0,0,1,t,e)},t.scale=function(t,e,n,r){null==e&&(e=t),(n||r)&&this.add(1,0,0,1,n,r),this.add(t,0,0,e,0,0),(n||r)&&this.add(1,0,0,1,-n,-r)},t.rotate=function(t,n,r){t=e.rad(t),n=n||0,r=r||0;var i=+D.cos(t).toFixed(9),a=+D.sin(t).toFixed(9);this.add(i,a,-a,i,n,r),this.add(1,0,0,1,-n,-r)},t.x=function(t,e){return t*this.a+e*this.c+this.e},t.y=function(t,e){return t*this.b+e*this.d+this.f},t.get=function(t){return+this[M.fromCharCode(97+t)].toFixed(4)},t.toString=function(){return e.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},t.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},t.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},t.split=function(){var t={};t.dx=this.e,t.dy=this.f;var i=[[this.a,this.c],[this.b,this.d]];t.scalex=D.sqrt(n(i[0])),r(i[0]),t.shear=i[0][0]*i[1][0]+i[0][1]*i[1][1],i[1]=[i[1][0]-i[0][0]*t.shear,i[1][1]-i[0][1]*t.shear],t.scaley=D.sqrt(n(i[1])),r(i[1]),t.shear/=t.scaley;var a=-i[0][1],s=i[1][1];return 0>s?(t.rotate=e.deg(D.acos(s)),0>a&&(t.rotate=360-t.rotate)):t.rotate=e.deg(D.asin(a)),t.isSimple=!(+t.shear.toFixed(9)||t.scalex.toFixed(9)!=t.scaley.toFixed(9)&&t.rotate),t.isSuperSimple=!+t.shear.toFixed(9)&&t.scalex.toFixed(9)==t.scaley.toFixed(9)&&!t.rotate,t.noRotation=!+t.shear.toFixed(9)&&!t.rotate,t
},t.toTransformString=function(t){var e=t||this[I]();return e.isSimple?(e.scalex=+e.scalex.toFixed(4),e.scaley=+e.scaley.toFixed(4),e.rotate=+e.rotate.toFixed(4),(e.dx||e.dy?"t"+[e.dx,e.dy]:P)+(1!=e.scalex||1!=e.scaley?"s"+[e.scalex,e.scaley,0,0]:P)+(e.rotate?"r"+[e.rotate,0,0]:P)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(p.prototype);var Ve=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);b.safari="Apple Computer, Inc."==navigator.vendor&&(Ve&&4>Ve[1]||"iP"==navigator.platform.slice(0,2))||"Google Inc."==navigator.vendor&&Ve&&8>Ve[1]?function(){var t=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){t.remove()})}:ce;for(var Xe=function(){this.returnValue=!1},Ye=function(){return this.originalEvent.preventDefault()},Ge=function(){this.cancelBubble=!0},Ne=function(){return this.originalEvent.stopPropagation()},We=function(){return S.doc.addEventListener?function(t,e,n,r){var i=A&&q[e]?q[e]:e,a=function(i){var a=S.doc.documentElement.scrollTop||S.doc.body.scrollTop,s=S.doc.documentElement.scrollLeft||S.doc.body.scrollLeft,o=i.clientX+s,u=i.clientY+a;if(A&&q[B](e))for(var l=0,h=i.targetTouches&&i.targetTouches.length;h>l;l++)if(i.targetTouches[l].target==t){var c=i;i=i.targetTouches[l],i.originalEvent=c,i.preventDefault=Ye,i.stopPropagation=Ne;break}return n.call(r,i,o,u)};return t.addEventListener(i,a,!1),function(){return t.removeEventListener(i,a,!1),!0}}:S.doc.attachEvent?function(t,e,n,r){var i=function(t){t=t||S.win.event;var e=S.doc.documentElement.scrollTop||S.doc.body.scrollTop,i=S.doc.documentElement.scrollLeft||S.doc.body.scrollLeft,a=t.clientX+i,s=t.clientY+e;return t.preventDefault=t.preventDefault||Xe,t.stopPropagation=t.stopPropagation||Ge,n.call(r,t,a,s)};t.attachEvent("on"+e,i);var a=function(){return t.detachEvent("on"+e,i),!0};return a}:void 0}(),$e=[],He=function(e){for(var n,r=e.clientX,i=e.clientY,a=S.doc.documentElement.scrollTop||S.doc.body.scrollTop,s=S.doc.documentElement.scrollLeft||S.doc.body.scrollLeft,o=$e.length;o--;){if(n=$e[o],A){for(var u,l=e.touches.length;l--;)if(u=e.touches[l],u.identifier==n.el._drag.id){r=u.clientX,i=u.clientY,(e.originalEvent?e.originalEvent:e).preventDefault();break}}else e.preventDefault();var h,c=n.el.node,f=c.nextSibling,p=c.parentNode,d=c.style.display;S.win.opera&&p.removeChild(c),c.style.display="none",h=n.el.paper.getElementByPoint(r,i),c.style.display=d,S.win.opera&&(f?p.insertBefore(c,f):p.appendChild(c)),h&&t("raphael.drag.over."+n.el.id,n.el,h),r+=s,i+=a,t("raphael.drag.move."+n.el.id,n.move_scope||n.el,r-n.el._drag.x,i-n.el._drag.y,r,i,e)}},Ue=function(n){e.unmousemove(He).unmouseup(Ue);for(var r,i=$e.length;i--;)r=$e[i],r.el._drag={},t("raphael.drag.end."+r.el.id,r.end_scope||r.start_scope||r.move_scope||r.el,n);$e=[]},Ze=e.el={},Qe=R.length;Qe--;)(function(t){e[t]=Ze[t]=function(n,r){return e.is(n,"function")&&(this.events=this.events||[],this.events.push({name:t,f:n,unbind:We(this.shape||this.node||S.doc,t,n,r||this)})),this},e["un"+t]=Ze["un"+t]=function(e){for(var n=this.events||[],r=n.length;r--;)if(n[r].name==t&&n[r].f==e)return n[r].unbind(),n.splice(r,1),!n.length&&delete this.events,this;return this}})(R[Qe]);Ze.data=function(n,r){var i=le[this.id]=le[this.id]||{};if(1==arguments.length){if(e.is(n,"object")){for(var a in n)n[B](a)&&this.data(a,n[a]);return this}return t("raphael.data.get."+this.id,this,i[n],n),i[n]}return i[n]=r,t("raphael.data.set."+this.id,this,r,n),this},Ze.removeData=function(t){return null==t?le[this.id]={}:le[this.id]&&delete le[this.id][t],this},Ze.getData=function(){return n(le[this.id]||{})},Ze.hover=function(t,e,n,r){return this.mouseover(t,n).mouseout(e,r||n)},Ze.unhover=function(t,e){return this.unmouseover(t).unmouseout(e)};var Je=[];Ze.drag=function(n,r,i,a,s,o){function u(u){(u.originalEvent||u).preventDefault();var l=S.doc.documentElement.scrollTop||S.doc.body.scrollTop,h=S.doc.documentElement.scrollLeft||S.doc.body.scrollLeft;this._drag.x=u.clientX+h,this._drag.y=u.clientY+l,this._drag.id=u.identifier,!$e.length&&e.mousemove(He).mouseup(Ue),$e.push({el:this,move_scope:a,start_scope:s,end_scope:o}),r&&t.on("raphael.drag.start."+this.id,r),n&&t.on("raphael.drag.move."+this.id,n),i&&t.on("raphael.drag.end."+this.id,i),t("raphael.drag.start."+this.id,s||a||this,u.clientX+h,u.clientY+l,u)}return this._drag={},Je.push({el:this,start:u}),this.mousedown(u),this},Ze.onDragOver=function(e){e?t.on("raphael.drag.over."+this.id,e):t.unbind("raphael.drag.over."+this.id)},Ze.undrag=function(){for(var n=Je.length;n--;)Je[n].el==this&&(this.unmousedown(Je[n].start),Je.splice(n,1),t.unbind("raphael.drag.*."+this.id));!Je.length&&e.unmousemove(He).unmouseup(Ue),$e=[]},b.circle=function(t,n,r){var i=e._engine.circle(this,t||0,n||0,r||0);return this.__set__&&this.__set__.push(i),i},b.rect=function(t,n,r,i,a){var s=e._engine.rect(this,t||0,n||0,r||0,i||0,a||0);return this.__set__&&this.__set__.push(s),s},b.ellipse=function(t,n,r,i){var a=e._engine.ellipse(this,t||0,n||0,r||0,i||0);return this.__set__&&this.__set__.push(a),a},b.path=function(t){t&&!e.is(t,N)&&!e.is(t[0],W)&&(t+=P);var n=e._engine.path(e.format[T](e,arguments),this);return this.__set__&&this.__set__.push(n),n},b.image=function(t,n,r,i,a){var s=e._engine.image(this,t||"about:blank",n||0,r||0,i||0,a||0);return this.__set__&&this.__set__.push(s),s},b.text=function(t,n,r){var i=e._engine.text(this,t||0,n||0,M(r));return this.__set__&&this.__set__.push(i),i},b.set=function(t){!e.is(t,"array")&&(t=Array.prototype.splice.call(arguments,0,arguments.length));var n=new cn(t);return this.__set__&&this.__set__.push(n),n.paper=this,n.type="set",n},b.setStart=function(t){this.__set__=t||this.set()},b.setFinish=function(){var t=this.__set__;return delete this.__set__,t},b.setSize=function(t,n){return e._engine.setSize.call(this,t,n)},b.setViewBox=function(t,n,r,i,a){return e._engine.setViewBox.call(this,t,n,r,i,a)},b.top=b.bottom=null,b.raphael=e;var Ke=function(t){var e=t.getBoundingClientRect(),n=t.ownerDocument,r=n.body,i=n.documentElement,a=i.clientTop||r.clientTop||0,s=i.clientLeft||r.clientLeft||0,o=e.top+(S.win.pageYOffset||i.scrollTop||r.scrollTop)-a,u=e.left+(S.win.pageXOffset||i.scrollLeft||r.scrollLeft)-s;return{y:o,x:u}};b.getElementByPoint=function(t,e){var n=this,r=n.canvas,i=S.doc.elementFromPoint(t,e);if(S.win.opera&&"svg"==i.tagName){var a=Ke(r),s=r.createSVGRect();s.x=t-a.x,s.y=e-a.y,s.width=s.height=1;var o=r.getIntersectionList(s,null);o.length&&(i=o[o.length-1])}if(!i)return null;for(;i.parentNode&&i!=r.parentNode&&!i.raphael;)i=i.parentNode;return i==n.canvas.parentNode&&(i=r),i=i&&i.raphael?n.getById(i.raphaelid):null},b.getElementsByBBox=function(t){var n=this.set();return this.forEach(function(r){e.isBBoxIntersect(r.getBBox(),t)&&n.push(r)}),n},b.getById=function(t){for(var e=this.bottom;e;){if(e.id==t)return e;e=e.next}return null},b.forEach=function(t,e){for(var n=this.bottom;n;){if(t.call(e,n)===!1)return this;n=n.next}return this},b.getElementsByPoint=function(t,e){var n=this.set();return this.forEach(function(r){r.isPointInside(t,e)&&n.push(r)}),n},Ze.isPointInside=function(t,n){var r=this.realPath=this.realPath||ge[this.type](this);return e.isPointInsidePath(r,t,n)},Ze.getBBox=function(t){if(this.removed)return{};var e=this._;return t?((e.dirty||!e.bboxwt)&&(this.realPath=ge[this.type](this),e.bboxwt=Ce(this.realPath),e.bboxwt.toString=d,e.dirty=0),e.bboxwt):(���}�v㸱���L��DK�qgB���t���vwg������%1�H
IYR[�g?c��3�O��l=�$ۓ̽w3i ċ@�P��h�0L��z��������M��ёmŇ�$��4���~>�2���eKT��8�QF��}��#����e`W�s멟�Შ���d�c9j R�P�t-g#���(�9�ǃ<Lb�yG�
��>:i���� �GQ��OrI�3��P�����R�q:�-���dA~sstd>��y6�sG�4�q�,ʱ�4+��%e��ʈ`4��ÆFȇE8�'����X��-�a7�1YY�&wA��-*8bF����+�����
�Tj�v�D2����˩���2WE�
3I���E�����V�emD K@�=9�C�ԅ��#|YY��z2tT%^�.��_���Fxd�݉����5NȰN������r=0@�����]��Y1��%4��0�����Yi2��Ւ�?�.`p{
[� >��ҷ�2�/��XC�Ob�ƦĦ�
�,H��L���L�8��<�x��N�Ə<6pK�@/|��DL��y0�J�Aw^��\��WI��ʯ��4�󭎢]�N ��.�VdR Ȗ�v��k]�E��H�#��3 C�7ĉ�x�O:��ag��f.�ް/�K�4�^��d�1���"���~'��+F2�mz�b�y���?g��e��FtR�������r?��9yV"l�1hȞua5&��]
�ZAjJ�SJcj�h(
:��rP����R�;��)��A<�'�]�c軈�6NFF� r� ���$q��`s:�a��~�������q���J��l�C�~7�]��H�n6 G����F ;L^ݝyqw��xL����iS�~3���*n�@��mh�R������� ���~��NƱ�����U�rS�{5�E*c�|�H�m͗�D��=�oP��������J��l��A��MÕ���Gu�S�F�d%]J�ɰ�vo��xq\2������'����Q�����#��S��^w5�ߣ�d�oh�{'gȝ?��H�t��|@z�����][�v���j��g����~�%V�K�3q(l�'m���̯���4����^|���N7`�?�?���α�:O�Ͷ�F��������W�� Y�=�x���n7�89N �݈[p�m�cd0�V���B�9ΏA�k����8���<��̛���l��F��=;!.��a�ͽ��S�l��s��4�Λn�Og�����'� ���� ؞@�O����3����
���<�2�1��)=�8t��6�7����b�*>uO+�~�5��e���/�P�M'�ׂoc��= �M'����/T9�����sU㼬�m\��F��p������wym�|]�UkGK�IJD4� ���_�A���C��oS�תt�ޅ�w�֙&���<�>�Sn�0�:��iS�=�2�M"�e�X6�`q�HK��N+1�<��(D`�P&q/�w�#�ni}�#H��<Հ*��{2d-�2���~��# �Q�L�y����F Ƅ ہ cï���h@��|%�xa���k'��q�>�z��[gip��@���u��\А��4[�aypP�Ú���@�͢p2X� ����>l�Mvr2w��rX�(N�8(��/�i)#�W�vӃ� �3����SVp惉�i�yN|���1����x~<�D����Z(��S �X��ֶ�Il����nZ�pSP
˂qY0�ܖ���D&�❆�X�k���K{�b6+Ho%u�d���Ug����V}��"H��R6��m���D�[��tn�6���y��.�Ǐ���P�8_�:m��dl��f�����@pb���J}�Y#�?p�w;��pn4����z=kj�;4�;����S���|�Μ~cbGvO��Q8k�����9�/:�f�C.�l�U�p��y�{8�+h�{�'�adV}�X�us�K�W m���<� �/���i3�_�of��A/׀ P���7��嶕� ����7B��Z
n�q6��
�b&xw:��}���k�O�Sl'�jY�&�*�f�K�k9GG�;����!���,��P���R�JP%
f�������2g��!M9#$(�3�{Y��-H��pƐ�t��S�cG���J"�����e�b�J,*�#h��
�F�T��!?։��l7�Ak�GE������6����h�Q n��@����Y�y-�TZ^��� �� ~ kB��֙N'$D#J�g`��Q�˖�`HTe@,ĭdt�즞~Q��Cϝ{{�
�6X���L�H�Ds�LΣN�80����{)c�V�D �;�0i��JS�"J���eB�D�D ���(FPe��2�8^���[�P����F,�]&�����������Q0Y*}1����R�ssؤ�Rt0)�3����-������z
�I����_��(�e� h�r���h,�^�yjE46��Cj���0�}�p�N�k�Py��(?���8��3��"HN ȝ\�����2�D���E@�["A��EКw׆��ϲ�
+�gM�$�3��C����b��<Ė�j���
��a~}��������j*����a�g=�{;����|�фOcT��rFQ ���P꼚�@���Q��rBjc,&V�#qLJ,�YѸc�pN��RG���Iϴ��A�s��3Hq�}�"�J�A8�a��D���~U��Qg�X��ڂ�<]ؒ�А�Hb�^�*��Fĝ� C��<�C=��: �30��uJo1� �l�,ۈ��Ū s嶁���|���2}�C��FY@�����2��N}����������Ԓ��pʵ(�-��������(������:T owK�xS-D��R>L����>������������AB���#�A\�9�q��4��GO }��<BZ@,�;���2/w]� ��y/����;H���A������g [5@�i0�rD���,�v�Bg��a 1��˒�uF1m�]�>��„R���9��:�B��,��H?�'f�cz��=��oN�j��� �����"������)a�ͦ:� \.���?�Ԉ��e���9�B�J̔�{V�H��1��t
�n#W�[��-@�<��Ǐ��,���_��3JKT�RU�2T�!e����F����U�@�L�v���;:"Y$?::���R[�)�G
���3#.i_�C�!M�@7(���k3z�u/0�-!jQ���� ����P5�%��m!Q���T~�[��M��6NG�t$)���S�X�v��La�����h�j����e8!uC��TF���[UYR���u�Y#���$7�P]��<��00/���LOik��943 rA�ܕ���^6��J�A4���^c5�U� �����y
N��E��/~>*q+q�1d�m�6���
�0��}�3/�ͤi#ؐ�8j��3z�DnK��>[1V�ٜ�����ә�q�Q>��^y.Om�ن*l�b"&�{�/�_�� ݳV��8�
8��
��z�8�_�N�;y����q��q�/
��tq[�8,fn�e�z��tr�5�%�Ө�
t�"�����]Qy� O�R2����d��t�z�gNǸ�*��eq.V^ ��^,V�^*�x%:�}{i3�(zW1��k%Â��G:;6QNz+�%�(���`���{�%����E(^κ��)�X��b�i�?D֙@�H���[mG��-F*y�� ��m�u��0wG� (q5�̲LV슼�]l��-E��M2HmHR�입m�#F+�<�NI�ש���S6�Ǵ��@v��VP�n剧�/f�D!��ݏ<�9^n4��`j��������*1'����X��4�9t���sC�
�G�q�PB�k@�b"�}қF�e���O�b[�y�<��%�ua��g}���s�Գ"K�{��ڀ��^C��6���
�`�_�#t���ç��Jl�E�PC���c�8I�>�"E^Q<�Q�?z_�Z�6��ޟ �>R��ʄ䗭�m�Ɗ/���z��s�9?���7˙m�___g�d8�~��^g��w��&B�#�ņ���;��B�\���_Jk�/H%�n�A�C�y(��[�͆<��ƩVr��<xϥߋ�bn���4�(V��,_E���U�Um0��C����7��3 Xۋ��X�C&a_[�p8�����?� ����l3�����=���ot���7�݁}�d���b�A� �NA��K�_��/�bp��+���*_z����
�c9���7gh䳄A�c~�߰�[? �@Ò2��
��0������:b
MV2*�_Χ��2��ch�-�p�f�l�qy=u+(������~ #�7���Τ!]��]�ס�p��;:�?\0v`������7����{�T+.���цѳ@-����Y�%���P� ̷���9� ;n��o�1�2��e�mɨ��0��wd��
m��pX�J��4�W��kE�
6C�_*C�y� ����0�pk�l��ܫ����ݬ���� @M����lQ]'��tC�*.v�m����Ӌ�Ď'O ;��NTU��d�k4�~�#�A�����G#PeMQ�����
i�o8� E�<���(���n���]y݃����׶����\[\t}z�w�k��q�и~��-�B�(�T�A{�g��Z)�`H�B>Y��8�
�D2�b�k�$��D(m����ͽh�����GǙv5�bd��8S��Q�������� w�g�+�Ac�;>-����R�TK=`L,�P��0���0>a2�X�WW9hN׸� ş��5����>\F�?��
C�l�GB�����C�+��;{;�Z�)�JJߪ$�xBX�BZ�d:� ��.ġ50ō=L��þ���C��/v4��T�`R�[�^IP4Q�t:vuqw �0��3+�u�鰋�Da�=����6M
��]<��5��=P���}X���K�B �%w�C3?͂�0�������-��`�/�����z뻳dL��'��Tv���u`��/�g���b�p/�$�����?�,�#�Yh�s%�;Ϻ<���8u���s��ϲpP/9xញ��j
C��C��P���a���@�j ^��A[@Ã��%�ރ ���¿���ڂ�o��P�$ˣ�1���d 1M��d��,I���ꇯ����48H�1����֎���}�f����k�PG �İ�b�$�P�s���,���|7��r�a�t�12�� ���=f�����a����]���%l.q�Z��؅m�`����(������S`�'�����5�q8N){�O���I@�@7�`��-L˱
vo@�1��E���'�T PXݰz�r�����|�5P~�r�#����lj.�W���4�Õ�� !woR�2~t3�_$/��*�x�kY&��W�� �*F�~f`�����=s����5#��ܞq��==x�pI�����YTs���<:r�匪�
? �1h��űĀ�XH�d�}r�_7�� �?=)' �)Vcct�T6c{
����{�N�;��.��� y�?�Z�ca\>��ԉ�ى}�;���/�ty�t0�X�����9���nA��M|���������E��Ai& \U�oh)+GK�����"CyBY�:�����Pu�n,d�z������x��@��`��.&a4��*��/4���K{Ұ�V�x�^�1_+Wbi���$X���h���h��6�ò�!��
Q38�T+���~>i��9��a ��ާ��π�y���܁l{!Z��8��܁l���_�GU2�9���������M�H{w]��j���,�#�Q���,nR8K�F#�Kq~i���id��jDh�Xx �A��Ҧz��6�����*_�U��⹽�,P��p�s � ����xP��y�
��tD���l�d�w�cFmcZ��(��*�����P�����DD@؈�ɻd������{�jZD]
*�w-X�4Y�X0ɘI�T��O&n��W���m:�g� ���M[�N�4x!^˳�
��*�Q�F��Z��-�MU;~Bf�����@!�$E�[H��4لqA���ȌA!K�}jfG 0N��Z7����St��WJ���w
y*.��k�3\�Ծ\���5vyS�"ބcb�x@����䴨����%0��F�u��]>��
*�GG��vn����K?�Cq�^���> �(�E���_{��|�QBo)��R��y(�o���e�SjҴ �jG�}cѸk\t���+�;�]�
Ϟm�%��.�x��w8���E_]�B����p瓸���_9�ˮ=��O��(�^�>��������A�:Ͼ�4 � ^�J��7|�����;��H�=˟� ����'o�??{'��7��Kz L��� T�����Q�g�VOԀ���-�51�Y� �u`�I�~�����5Q� �u��3m��6ցr��B����ee>�y���\"�_!��}}�&�������9:b€�Ӂ���:�
�Ƿ�_��������U���-�?���X���SND��Q�*��/5�yE��sA:>�ܡTʘ�Tů�cE��udn��}���f��U-���� ������ Xd/j٬�@A�"�? nj��h��0�5ۣ#���{b�BN����2
�ݥ��% ��e�$�D�]��\|�
V�8�E}&q�����٥��נ)�C�f�����9"PNJ��z/p� �6��.g
�h<�<��j��bL~�I��K��r�P���/�g#�27(l�k򶗂�R=����� $T�
�ږ���d/�/s�$@�֦̽Wo��84��3�Y�%W��J�HzI_�T#;��i��5�αO�I>��ل�t��to�38�0%3u�2עST�N#t�%=�>���D�Ug;KZ�p8�����t/���#r
}y���a��F�+j�d"�c������"H˱�z�.����� �
�� �(�i? �<���ޢ�d�@�oݜ�]u�, `QP ^Uu�_��#��r�ѯ�rؽ�>�@Ym+q��Tw�81o�x;jEu��y��"�W���x�P\^6��Ed��b�74�UL�5���9����c� WC �RF���Na�������A�פ{��VEf��q1��#KEW�L�p:�ѐ5Wg6���W6r�+4>�#�~�����j�����H ѯ+kyEVt����_c�s�h���G����9�+r�W�������������_n+z����k�w�k������|::����v�{`2'��l�|ߪ* ���w#br|�O>%�n�$�i2[�-����ei\���W
�����Ṧ#P�{V���;5� g�>���@�o�F�h�(�0i--1����n����xN"����IEc����K�K�_� *�4���jI�z�p�6~t�����*�o��;�U9�Oj���hR+=�N��6g�R�Z=9�տ4�5��.a_���"]yc�S��mEONA]�©? ������NjD��D��-�k�\�ډ�#@.�C@U�!x4Y����
?�v�Z�#v�)�m�v�Ao�wg���p; g�$7�U�J-<d`�r� e�� ��۫��{G��y .����zd��������
��j�=�(x�}�W3����a�-���3����l]QS/��l1���C'�����o�l�.�.��ڄIs���ź5x ���J�9=��qͣ}/_?��U�+�L�M���]e3��X�}��
X�wn������t�[�� ��U�R��h��,�r����%>A�ǟ��T��b���^Zg��v��lj�VW����^?��{NJ�lOQ?�>}ǓYyd[>p��p�9���҅�]��CE����},">�s*m�D����~Q[s��=�Ӆ�]�DX����-~���SH�gP�آ��~g�OTb��z�����R�&
��i�N����-�'�����I�����ۄ�0G���:q�=CQT��
����'�\��󿸧�n��5n�#�f
x{�:`� �c��U�{1���7��=,�SB<E!�
덎E��A2`,�,��h�ڰfK��H��Ծn��N�Ӄܸo�a����� S�e�
�ݦиC$�l.�A�8mĝl����v�`�9,4
:&�\��� �\}bY�2�vkڀT�^$�@c.��i����v��
�?����"��`j��0�l�K�����~4*cµ����j�EE*p�I���1��8IEE3���ɉ�`�p��*�d1�3"��W>�g�Y��LP&ʳ��g�]&�������Xz���P�4C�>|�ס d|��N*�'�vȗ�M��4@�F�b4�Q}�3걳��<�nqvk��5A9,��n���j���r
�q/3�`���1VZ��)��{��F����I��{:&{-�6od��RN~�Z2@�{eMu�<-I��I@pj���i����T�oUm��ܸKW��2��,�dwI�7���,�Ȗ �fxg< � �Q|E0
����0uo�<O��u��V���?2�?�����,ƸP)��܆�p�q��TH�����W�?%H�)@4�
��M@�K�N������ܓS�T&'1E<xM�J�I����Ѯ�Oe6���q &���S��8�:V;K�]��1��F���n@@sL����)قLe�IC����W�|���@<'�з��srZ1.�{� \���۽0mA�������[
����>�^�M@Mr��v�~8
)�Q1j������z��4ܼ_�@�
J4=~�Y����__a3�'�B���� 9JD6�}�xso1V�,�+� ���Ս� e��{M7������Ai��6��"3|4�"���0(�A,Msm��uP�j!].�����A/tjS�d+ms]�WS�Tq��Fi��kw�B��v\nj�
��I8 ��/MPΌU�����!���R꟱S'��ڿ޽�57�����s\=��v��^D�.��qV�k�z�����14�`�h�R��M��=-_�
x��Pwg�=��;����ag3��`� !I$��6ت��&��o}d�+غ�7� ��qA��T[RF)4�`���vT�t�P9n:y�z�ƅ\����
�_~����tmQ�{�&?ǫ�?����:�4�����Z�[٩�y�7F�`��}#.w�mF!�`;>�)�8E�2ÃԵN�E�)+Q5-ݰxiH��IVY%}�C12�����ZD����A���3®�%c°L�l��S��;8�w���/�[$��i�&AM�M֠J[!�Ҿ���}�*Ro��9-��v7��
���P�~Q��sL�s���
������D�̆rD� ����v����!)�uL��g�.2�����$�V=�
*V�rV~7�t��}���1���t�ɥ�U��'=���@�>b�.z}-��$���*�zbf�1Nn� qpcXoܗC�S�݅r.1���mZ��}����l��|?�M�l�t�XkG.�q0$\��<�� �W�5={&,���Ƨ�K����|��qP�Q<H���3�����������ą#�٥�K v�tǝ�$����*?��:��!����a_��p�n�4E����O#N�;�9���֬˩�;�鹶�S|Ƥ�Aޖ�{F��B������:��-i�fI�5'א����y��~�����+�I�"�y���,~܇��Cu���щ� ��Bm쾒�0�
�&�.S�����;����c&���i
��I���0Q��c9MH\����6�Q�T�R��K0Uw�D�从tB�F鄢 ���ð��� �`��"�b��X#'�!�z9-���%�@�����1K=����x��@fL ����ʘ(�7����çK����G���)��`����
L� ��sԧK0C}���$}��'���v���s ��X��s�H�j.�9��j��m���c�P��4��������-���V"D24�3�,xA��<��z���yX][J��x�uk��uԣ�.�~<��9besqeA���)�F�yD�
�U����i���B���#GhD�^V�Ĭ��J �Gu���r)K1Qv�<RY�`�oR�o��`���Хd��n��f_Y%S�C��%^^Ź�R�cKq(���C_�Z �9�k]"��� SЊ�dq�-8l�ꇯ��$?�����Ћ�G�]�'�>���d��up�*�1,
F� �Ǘ@��ڧ�•�����P�gB�{mW[��b9���{�O�0��]�f�g�IÚ%YH<�W抝(�pR�M퀰 ��nVEq%v� Wuk�D���7�AD����dZ�k��R�Ѫ/������|$I3U��CJ!4�\e���E
�I~�Ɂ�z�5-��\��V'���`Ķ����Bٝ\�PE˚��x-zE��?���Y���&R���.j î5
Ш�Z^�����M�U���:�. ����cD��E�{V력��ōQ�|�W� @����/�1�z=j�{��/؏�&'���a�>�:��;]��G� ���7�E���M�&���B5LY,��a�/(�U|��h�Ҝ8
����/��M& YA|���v���L���\�KOu ;�`����f�h�׎rw��v���tx��C8n��-��f���8��%�_��=Q&>��W��Im�*X��r��"*�/���� �u��@Ps�6���q=K�� b:FABʋ�0�g]�[�<<X����A�o�/ln)���=��1ʶ��}]m�I��~���z�b�[��'�\�z��<�f�:3�̜�Y�V��Eן��+�
O�>���+��_�>���n1�N/�gc��w� ���{��O����f`�����N璻�@����a�H��t�
�Ah�-��k��~���rѽ i�%����`�
�.)��;��w�����<4��zx� RhJ���-��7b)O�� �~�;�k��N�c�d�{y�p}����k����hv��'�n���:k°�b*�I-�7Zel ���?F��V��_�Z�F>�UP'�%�CJq,@�"}2����w[�!џ����0�`�5�
�����ͮC����j��9�2<9a�P̪�N`T��:ej���V4!�?��|nh����byD�{ZU02>::ŋ;��2l�{�e.r0c�� �8���[
��5�M��lX������_L�W���=GD?x�U����С�-���Tj�1d���?uF�]Ԑ���F}`���f�k �������t[9�̀�^Tu����/̍��b�T� �{�w��twi��|����+JW
�Xn<*�l�r��w�HG�P���o��j$*0��<Ɲ���'���$E ��,T�e�{V��$���dd/�Ƭ����D��$>~18.����[� �hC �ʕ;\���
oe�:U6hQD�<UOdgje����Пk,���� ��KD|ܼ������ӑf�m�&Ng*�GGS�9T�� $�<�����)ᭌGGL]MXhR�C N�x�'z,���%��y��q�
��6f�7�?u6Յ�4h��_Ij�Y����:���:x�Gx8
� `�����~m���-�2���O�N�Gu�D�����A`�N�a82)��̈Bߛ����?����T��L�*q�3,HDu8��ڈ{M���#>t�=��~�V_�x�#�2##S))r��L���?��(.m�+�@wT��� ���7:l$�%Xʑ�\�#w�������|fi�5�ũ������Z���R~J�)�SMG�F�OD������a}hD)��R��j�+c�T��9d�>�K�i��"�[ҋ�O%C���Yu�C�<~�&JH~�|r��JI�CE���e��:Kٝ��>)�b��v����y`G�r�fGУ����z�t�M4�;��S5��v A�\~@wB����&U�<�+����N��<b�� �K����Dh���׀�g����3��<K۹�Lr0u��
D @y�]�����?x���2VEFg�����ڰ{Z�2��)�{��P�� b�o���H�|�|���2��s/H��~ ���B׺�g�59�k����q���5�o�~��\b����v���gط��w�!~SeW=��r����N
޲�t �
S�-���m�_��ȕ���oK�gi��o]>�z��?&��L���9����g���p��"��%�s�A̱��Φ
���,�-���!������t�O�N���,s�":N�ξ���gr��g/j�� �G돍z��~�ť�G��X�_tr:
h^����7�Y�����b�d��ˍ�9(v�=>�Z)c�΀��F��U
0n�`G5̦�ɳ!N���Ň2���k"�)��t`<P�����}�̢���v��w�p�A����Î�갯�B�h�ǽҬ�V���|���>"�8�����(�A��MpB�)�e�9ʗ�ra_�����.>S$z�u3!.��S4�5���
h��@��ϻ\���<|4���x�U��#��[�������o�B�I"����4:�XҪ_\T~qW�¶ [��l���G�_���H 6��� ��k���u�te�p�K5�a1 ����>juɓ��̮����O�2<�>�f�l����os�Ҫ+�n�6�򏅷m��~%m�1���F{�>u0Z���]�ݚqRw�����_�� �Tpů|�y ce���jP���þT�ވtOJ���m���?����B���A[��D�ב�=�ee�MSvQ��b�{�$�r;����Y��)���@x?�x�u��E4�� ����ѫ���g���&������Ύ���+ņܮ��w�6��k9��C����e�*�v��GG�s�cu �f!�냁˻V��c2��w�"[� �V��^��؁��/� - �e�]��k�"/�8�־J�T�I�>� Ə�㓱���E)S�Inq���\��39c�Y�
%�G ZFڹ~��e���CW(�j�����G^�)����u��,�{��HhL
��i���]��+m�� *>!C���n���n����E��ʿ���\v׻v���N��J��O��X���
TPkGJ�m��cS����- �sl
����E)x�
��V��C{T�v���g'�vK�K����oX�X�r<��[~�"�o>]�ƹU��9� �m>���V��D?��_Vr�c���mzn�o����2 ���"Bf�Z��tV��x�"�߻)£�{ҟ��o`����
�5$����E?�� ����2
�zr*�7[qgŗIj�)���T�����
j����НN`N�mĆ�����
F.R�B�..*8 *�+��檉����o�o��������+��o���Y�X�#
m���[(}�B��jj[Ϻor�(��B���v ��ǓJ�_:�|���gȝ4�^t����/�W��6{[�aܝ>{}2o����:� j�}��U���?��F&-�O����gx���"}�� ���P��8�j�zv��0�)���)PQ�;�D�ǯ�Q��j��O���c�;���D���<P�
A�x���~.�!�q�y%��OK+!�}�>��|�c�����*��8ͩ^��Q�`�;
�I2Ԓx�$�PRg�B���M�L����qj��ԕ:��qg �i����������u��[�ȊX�_o9U��j�
F���kk��"&<��{�d0�$�e׏�C��O�Shh�;��@�[2�֫U�ڧj5��^�lՍ"��^����� ��?���N(C�͎�{�<;���Q8v�~�/"����7��o*A���GevBP�{���YBR�`cۨ+ܜh��������.�o�a5��vN%x��W UubrF���'��Ë��z~�:} L�>��z��G�nOi���{�ϴ*�h�%K��V7� �RNE>�wv�0���v����Ǫ��G�LJ�u a �`����;l��b#�Q�f��ʮm��ϛ]o;�(JI�8���%�z}8�]��!$�A� ��
���Ƥr;U�� B� �ҍrJs ��=J*�Zu&����q���=��� y�����1JmC]/c�X��
C|b�1�����(��ډS�(Q����4w3�=�v�ovF�x����T�<f���V��Pi�)��V��� 1�$؊Z?7jE�X�
ì�Q�WD���0 M1��8 {�c�d+�
}��\E|����ī�UC*��6pÛ]A:�_��돗��C�-1� ѧ�UYjrD���#�G\�����#V;�Z(��7
��<ꨈ@V8�gFox���
{{��r�߅���v8����"�1_��:�Xq�Ϝ��2��b���E����0&?��!��jq"�6��Xf臲K#z���.��ڡӏ6���]��Xo��$<��&!��a��a�ab}�� ��P����0 q��� ��J9��"$l�=���}5��{0:��{�� ��1��������H�c �|��|1BT���1(z���yH�t��f�Ј|�#��̌@�9�������ސ�kf<���a��ē 7�a�h���(4�J�a_bf�%փ��A�7�޲/������@6�:�-�u�Gjǎ�8��cV `�fW���A���� ���H�:���c<"��ݞ�+��q Yn_8��
*�19-�9$rUB �7yqpfp�����n�A���ϊ5`bG���ϝ����� @����qN�g�L�v���Y�C�{ñ
��Ʈ��62vd��Y� "�^x�հU�>���♢�[�7�Ԋ�uN≼n�8�]��lު��A6� ��W�(Q`��'� ko��ou�R��I}p=%ߓ� (*��<n:9 !l���f�Ȑ�{}HQ@�!PA4����i6w��2��kZ���~����@P�OD�?Aaq���|�N����D����K��J�p��c�b�?ɉ����ܟ!��Ō�!�����xR�q��� ��_I�F�F���qBQ��<�z�à�&d�Y�M� �����߸�Pxe��U Ĩ���aw0
�%�:m����4��D�ohLq-��+�'j��9x��O,��eT���//���
4�*\,��h�Y����l~~�s@���a�2� cD�y�f<����G0z�tjT�h���H�~d�MA��=@�_����_sL�~_ۑa�[E�z`m������Z�`Z�Bx�Ɏ��m���-�S7�!__���&�Mu��!$
i+���"�)L�HaR!�t��Q_�"� hȱmk� �@��
�G��| =9�#f�\��;�H� ��4"�N/(�8�'�~e�Ѻv+�t5#�C�}�E�Gdk�3gB<™��x�h� �k�؞iQ���mT�OsB6��GC�O2H'
�٣3¢eX6 ��0J��z@��L�o˱�BM�p���&vy�N_5�秼���}."�wl�?��o�'��`$�y�-B�������$���#MiO��vNNO�����c<cH!ބ4�GN-�,ux���et�#���
X3t��
��ږ�n� )1�r]�ұj�
�]��q���v�G��ɀ��;�O<b��$������WN��~��䂉&�G�ԅ��~�|��Go�C�Y�d����Za0# ������^6�S?kN�+ms�L=,wĻ]~�A���/؛�x����$���?:�2��3��n(���=>W�o�e6�@g��E;�Yt#�JXQ�(+��>�[A��ծ�*�X��V����d�c}<�j1!CI�"Q���G��+��0�JR���&:x;*x�� 2��&�&oj/��?��.��m��{��>��jlp�u����`J��:=����:��@m0�ڿ��<��;��ȃ��J��N��c�O���k_m`�u���1��;[�`:H�=E���h
��S �cQP�f �K^.>�M�&=�;�c0���H4ѣ�h"\�ݡc8�? ���4�S�����&�T�cU��u���ķ(;Bw<����������h�a���e5(�g|��
@~Ơ�:e_�>�W���A1��s�'�����}�z�8�����i7iA��L��Q����I����L�t:�h��"%�C�j������^��ac����� A���3ٹ�ٶ@ �BU�PU��"�K� �ϲ�:^u�3?�f�Ha���v��[/�]m�E%Sk4����E��ԉ&�t���98؟��ss�g{/e�^L� �Ӱx��0)N�?�q���ॻ�3�z������*|:���~�l6q)o,��F"I��
V*�>�\(���u�R�G�Yչ{��6c��\����j]��
�g�٨�ʍ���e2.�4� �ĹD��r�١����:̞�yh;��b%��E��C+/��sؽ��bf�no��%|y���$�"����@�rY^o3l�GI8��j�] �=���H�2t�0��A���|��d���~{|���}�����M`5č-��,������5�����������/e��P `�D.ݼXǡ{��eG�z�]%�Yab
4�$.��G�
��>Д�G��O�8N�"J��ߝJ��uT�gv e9�s3�հ.�efy�����\f��y@M�,�X���C]�3�`�á/a>�$˷���[��W�<�/<��Z��|ʍ�<̊�f��b��k�_,�$`ڇ�Ky�џ�28�t����F@��s{!�|�^�J\�~�:MO�$�������D}��e����
�,�f�"����#�ʇ��-ts��32hk���Fѯ�G�n�b?K\
7_9�31�G)?+�un_88�_�w�`#[��S\ ly�ös�9>��ԍ؟c�߿���+�\ܬ��Ȁ�� �v,�GbF�Ye��8����#��"�� �䵶Sx ���@P<k���7V��X�����]�o���LMO�������'���N������qh���~�������9���� ��ۅ�w-p��RX`�fc,���H` H���F ��I�bŠ���'�y㴀�����1.� ʀO�E%�`��OI%`f#]��=a�J<譲P�S�_�� |Y�s6�����;Y9�j ��%�2vW<�����2�]��ڱKC��R�lE��_�L�����V��[��a����^�9?xR�jRk�Ԛ�YӤ�zRk��m�j�f��wV�jV���c��e+o*��7�8;Fo-��0^4���A��.M���kB߳��?��nouq� ڎdn�6�9B�֎�*�rquy}��4=��JG��)n�����}kH����s�JrARů��Dq�����G��O��߾$y�ܐP�c�`x�U���$�)J����P��O�"�
R�|�u���b��DE�o?�޶V��}�X�8��%<�;�ԯB��cƩ�ؽjc^_�b�n:����o�̬zA�����Th3
[K�&�ܟ�Yd�⇒�^����.���is��n��$��OQ߀�z��@)� ��lW[��0��ת2��h��@,O
���HC�Q� �N���#�]����j�m�`";����XUR���G}#_����w�:��J@|+����R|���7�P���� �=�������ήU��#���;��  @=~
}���-K��&��pO�v�쭥}���<��a�&��Y$�����h$��3(GjQc6�o��N��Ժx[o�X����;^|�a|�?)�G�^�j�8&ςWL��f�/A8���I�Eq��L}��!�\���?���a��-���`?&l6���S@攐8�+Y'������W��,�}B��!l�Qa�˸�� ���9hL��E6,J��X�����d`�
>u]<Tf�& �e��n���iY�>;ރPg^��:Y����T[T���)D�Q`��e�=O�d�E�*�� ��$~�9ןeժ*=��z^Z/Rm�X��c�$�N"�\p�ߟ����i:_�Ԁ�a.���.vx����b��/�L�^�7�&5��.>I�~��'���6�4��D ��_קl��>b�6�����we'
/�NǙ�NT� ;.p���Զ����������YM(�ª�;�"��/F@�i�� ��rƂa���I��@�4A]�R��5�����ս
��0hM,w��ӥ2A
qz��@ﻒ9�`���3U���c�/J�\ �ՠ��Oʏ]��촢�P�
�J�`� IK����b懱�� j ��"ũS�b%7r'�l�h��R5�=FۆL�q�U��Ɍ��eU����p˅�)M=E�
6�����WD� l�Z+�3�2-�tPil (�W2������� 5sG��2�CM�F������E�)nty.��q��Y��4M0���- �U��s��}�����O�|�S�T�Ȍ�`"��z���`���y�h$$��)=�4&�2ij���z@�FڂI�<셺�8".�V wo�h�
u�
ذEe�yj�X % 'GDT:��UP���>)#��G�����3hJ�v���:> ��al��/�~c�h��z�
\��_��!mA�|��������ֿ&B�O�Gm� ��B?���-�1�;,��R�ER�?~��5޼?�@�Z4=_<y�B��k裮q��*�l���b��^������-�V��U�fL~ c�����9�^ӯ���_A͸xW*CǦ��]>���ҍ�+���h�X�A
��|��oDZ��Q�jS�o�5O-2���y���91Z�@^P6�7
sQ"�XdD�,
2�4�o�ȩR��|93�tІ�V�?c�����9�14�nN�;�#'u#?c8��W��_\�byq�\]�p5���y����2������4u�VGIT��Չ!d놩X�z��(B?cB �D��6�p���Ik�f�V<x�#��V��^�JH�F��+����K'{�����⹏�v
[�í:0� ��
.�V�K�$e��F���,| ���f3(��Mh�\�e�1Y���l@������͔{D�ЎB����Ե�]RG�&��$�K_㒷�S��>�q��?2y�?�d�AmGa�=��T}`0eu��Ddp�&[Ѧ>Q�jF�<�+3Gar�
����4�&��.
�ބ��b�a)�R�/�zb J���Ǐ��%h��̇ˑH�h�:�M���<�����K8��s'�٫���+ro��9��w�'��Q��b�
��(g�1k�&s4H����fR=:&� $�$�C�fշ��_�v�j�Q�}�(�8q��{��b�����o.Jķ��ѻi:ac,��.ܻT��R��y����,��p���30H��XY�d�� ���†ӑ �O)w�yԉ����38�7��N����D���p1���ߚhU�#T�}j�5�(� N�~2N�������Z>�]B�.���Ss�hQ܇H�j��O�����}tcHR�K@�]�t ŎQ.��_y2�T��@�a3l!���0� �T��2��yt�$8��Ǣ���x�������|�����YWS�o��s�5���I@^V�;�Do�t �Vz�NK�\�"�
���4�O���2�#?9E�#��JnҰ�HZ�#q���U��W=<�����be�=Bʎ+��.�3 ��� �W��%� �
Yk��K�Tͥ�z��i" I�~�(N������H[c-lU�C/M:E�I'b��+�N$�R���v3^y���Ld^"v�u6�WF �qZ$5�#|s�p�>�9X��܎��@�H�rc����%n�/q#���g�l�~��{�S5E&��TO05'�nhZ樭K0C}�s�$}�d�&���[Vis��DwM$W�0�\|�uu��s�k��VK� J� <Q�4�}��B�(@���w���m��K�X�W �P��� �����ד�Lcuc)�6�>��:��먡�!�~2��;�5�����ʂ~��v�X]�4�;�@c� \q
xj_rXt��ÄFH���m�Ģ���gM�Q�#�[.�)&�a�;:+,�K���U^��W��ൟ��Twk=��2�*I�p ��/��‡n��'�l����ޒ����#��+�o��>�e �Pb�Q.�gp*����g��a[�?��W������ݝ]u��¹H-����I �D6��k���Vi�� ��-����}�>���>��1��(��������#��y���5+��wtt}}�^?r�lzt tt��u�'v�(��x�%gk���d_�+�pRx I�6u�2�#�Y���e��޾��;ޝ_�����yf^Afu�fYkE��!\?ܒ��43E�>�A�Pd��88?�I���a�/jz"%���V'��{6ؽl��{N�l��0��UO� u��򭑒�IλG�fM�j�hƊ<�E�etb�Ct��VgQ��c�s>�'��]:�-a��Vc6�Y��ޞ:0Ӈ;���a�6�֗t �� �KP�3���Q��!L�x�~p08��ۇ��:S���.벘���S�ɭn���;|�3���l9
LY.��~4*9Nyc�N(d����&�
=�2��Ec�9��0y���v@�W �ș��Tf@� ���f���~��Ca�m`�`���!7ʝȁ7�B3Q�u\M��/��=Q;>���4���q�h��e�@�
�-@�L��Ѧ��AXs�k���'=��Y��.�� ���y� }Е������먘��E���?c� �b��uZ���
�����[�ھ.0�7*dՄkunQbs�~�b�] ��m��n�y�f3�f���~4^��>w����㧞���d�nd��R7ْݥ��mO��36�y��
mÛmtP�o�_g`���� �;������ ��ߖ��^k$�����G���>�lgƜ�r�j��X3?}�h'�yRy�E�,�ǩ_���{���.�K tٙ�+rؙG  ]��C�����P��:G��i��������Q����O�����Y4��<����n����7g��Z��g��O=kl��y��?����PرcϺ���߈�<���x�e��{�w*:G�H\�#
���>A�OΨ� ݮ���{2����w쩘�]ZG����@9�����Q�����?�z�BސWp'�%�C�t⸆��g�R������#$�����j�H��6P���7v�����n��%�24�1J`V���Am }�JힶuBC8��֜톦�h�+�i]�����/b�v��u�C�޳^���`*�b��l�./�U�;Ѧ:�lX������+�>_̚W7���=GL?h٪O����Q��$����������d0������t8�{�/���KXH����K��
�[�}Z? F��}�nT9ư��
��=��#n8��+�C���]S���z�Qu�Z�=���*]C�Ӿ%��D�YM�]هM ;s%/�B���Q�8i�,@W�C�,M���dl��΢�W���D4�ڽ��av��{��)���)�h`gɵ����g��2��*;�(��8SO{�gj���/L0�k*i�b,���
�H�Wby{�sF���s9n���9������l\dsG��h3�),��,�A&�ը1w5c�I N�0@���F�����9�������� <������/ ��Ŀ�
rf�����t��]�71��4̓����O��/�4+�@�s���1���`����K�So�˖I�����BR�),�Ϸ���J�vL�����2��
tdwj��oD gk�y���-;�h 2dV9E�r�j2�Ge�j:��BP���^��*�?O������d�@€��5ך����Ͷ:�i2U��Y���1��0�*ʫ�Ver5w�6ˡ��8Pk$��V>2n�26*�!E�6����c�'ێ��g��l�t'����d+y1d���Kw�/'���6v�XZc���O*�Nǩa��X]�^ӻczyLogT�Q}F��S]G�
&4NL�Lh��ƙ`x�J�#�����I���{�B�s�������C:�����hɡ[ ���1$?c=@S����&
N�6*J]��N��OG�:Gp�5a����Aꡢ��+��D3�l�G�f�܎2W�1�/���I�K��[|a�d���^���%�7Td"4m��)�'�����y����g�;We ��Oe H���"�Z��Qź�����8>� ?��m�
�l7���#�����A
�m�i��Z�t����NU�ѵOI�Ag�*L����кxh4�4;\����2p�lx<���ك;g�GT��k�#��_`���oa���ơS�8FW�p��/�R��#�+\ <6Ly��d��G��K��T�>c?�d���jK<w����O�X`k�}c;���k��n�Gn(�"���& �&l򋳩����j�-���a��"�h�2��Ӫ��U��^L�t�-$?S�(&L�yS�����*�w�w�f-�~#�e��5���_ r ��^}���/����V��f�x�����n���4��g�heJ7���=��t5F�0�t�����'1�o����2�N��{"����ll<�+��1l�2�M�p��w�����yT�Y�O[+���î6JI��wj��'��G�F�98x��b
�O��| �-l���!S��XsT,#�¾���ta�.>��j_7�R?:�k��X�oPA�+�>~n -�չycly)��b�GU�=�p��1�o��U4I,�7���t���U��x`��]��؂j��-#^��F�p]��l�
5<�No���8/C5f�J�#('�4
���ї"y�`B�@�i3=��~�-#��n6�oH�1�VA0�!��S��>o���X��v��Ҷ;�����oo�̖��zk�j�f��̓dj���(&.~_���#�c+?�M���/;^��A���Dw�v.~�ݶ�>��|
�l$m��g�Ʉ~���_vq�v���M��������*�v�kb=��S�F�3�?�t�}��k�4��^��ѫ������G�p���o�ڑ�
+&�@�S�/��Vo��G9�C�u|��D�?:�ǃ��c�c�p�f#|��A�m+Hݱ�k�۲�Q���U4�S�Y�}� <H gY�M�X����?N����j�,22[;�g0�� o0?���բ,e�9-,NUV���f%�c�2Ku�"��I��t��1s�e G��ʺF%�o�x���%pk��ɇak�� 6?#�19�k��*6���s�֮����u�"u' �/d�����
*�*�{�)��'�'�Sp���'4�#g0�����~ ����N�Z;�Vk��Z�l��0ϩ�x6۫7*�sj(��V�ٓ��{{����=a�{bZi��_��bm��h4���Nj$�^�;{ �s��s�P­�o�����\��ϵ�O V��2{ R���e�IpG��Oc�x
�������i����?���9z �@�
6�5$����~A� �~D�L� ��V�Y�e�hJW�yo���1}�<��h|���tk:��@�Q�&�xs��������
���
s���j��pJ�w�7m~������Aw��
�:b�b��(�QV?��J[Uj�u��6����=���9��XF���\�>�ptl��0y�ϐ隣���1Z��mv�����8r��y���ܹ ��/lX�Ri�*���_;hSE��w�3i�����[( �Fh����!�u�U-���EQӼSRW�
�ɷVk��T��g
�������vƥ�����'�Q��e�
�ݲH��C;{�~�⽃W&3�F���4(��8}�)?�ԅ?Gp�Q�i��-B�Y4���)�d7B��(��B�}A���l-%�X��?�E��z��56���c����=�Ÿ��ԯ�ѩ�U0����,
�&�+Mh��*��c���Ti\c
Gb
�i%u����t0��4NG�l�"�.��:�=рx�E���p2��-dzz��Y�A������P��;J�� �x�K �ҷ�#������)Oh3�;L���{��5�U������.�o���t���{��F���K$��T�?��r�ܴ�ؑu���U��"����ݿ ��3N"��H"�L<�%x�-�����w�ѽ�H̘$�u���@��:Ä#߅�u�n��/�/�`
Z� �`��~�}�ɽy����<�� �r��������Hi���{0������B�V��6�^kO9���?8|È
4��x�5��wu��L�V��62�.2������6��w���dG����C/��g��z��TqJ��D�ߪK���}���<�/bXI%�\�6�׊�9U������U�)g�zJw
��j*PZf����a�����S�<�� p(c3J�@�˙(V���B�O�؈� ڇ(��٩S�(U�ꮾrw3�=�~��Z3U<,Dv_*w3��r+�@��4$TRY+�Zj��sle�H��"�+k���Ȥ�;�X$U����x���1P����4+t��'��,�f��TAy�h��gmI:�ߛ��돗眤C�- � ���*����-�Ғ�#�Ry$L周�I#�G�USy$F*�&)"�������=,{��тj����6*��x7+8����As�v��b�����r��f��M����4�<��!��y"�7��\f��jH#{���/��:��w�H=��_jK.�g[i��VTK����4 ��4 IK��D��pA&-i�:�ܕ&!���i2)g_/C�vރ��{��=��LǃX�=��'�=�4�T�l�t;�7k�s č���� X�@�f��-=����%����@����o�?��,�{�,���ς@ ]�w႖,�;� ;� �TjY����1+�g=��� ���p5�S��ldЁ͠,�����H��(�G<a8�F���'�N2��,K�q�;R4�8C��ep�b�ݎ흿~^C�ەN`��������R�j)�xAp��‡Ns�]L����~P�-��YL�*<t��?@�ߑ�@��/�"��t� "���� �QiD�@1����<��4��vl��E�
c�^h���* ����������2�w�Պ��\D��~�q<��J�z�[g$
�<$�#^]�jD�ꑔs d,���l~�kԑ=4�ؘC���(F*��<n)!쎇�f�Ȉ��#(QB�� :���RO�4����e�)`kֈ��q����DP OD�;A�q�vv���f8&?Q�j��G��L�t,C�b�9sW2��JkX���%�'O/�I���b�� %):�I���Du�g��i�@�]L��Qf]�t|��/�7)�7� �ؾ�g�0�@�i�rhOFa�D��ўȉ�'!x����/���H� �5�PD�<tg��{�mU�g-x��ԋ+Ё� ��ᣅn�j�K��A�E.�""�%CBİ,C���U���I*��nשI�A�S����7C�P��QY�O��Q#0�=�cÍ�N�������L��ifaü�[p���p��
[�0u a��&3��˄"��D����ψ�R���Ff��E��
�-V��X!�T�_�"�" kȹm��H�@��
�Ga�| =9�#g�R��;�H� ��2�._Sjq.Ϡ��^�w�V��zE�����ň'%f��dF<����xyg� #j�Ğ�Q���mֲO�pB1��GGrL2h'�٣+��ͨz-R���(���aǂ���9�V�����ߑo�-���j�<��_�9��"b}W�~�Ki������fXV�0����Ύ"1{bF��+�Y����ȼ���m �/�P���i$��%P�����F�?c��!ހu3AFUo�.ֶbt DIEA�뺖�U�W�/�DH��l[�u��#H�<(c⑪�g!��~�]ƀy7����/Ʌ3�*J3�B� �o~>{�`��l}�:+�������d F ɣ��|< �~ޝ�P��8�{�mq�a���/8�'��w{�$y���9�*����a(��l����m�&��%�Wˮb�V��$*�e��ۧ|+��nK��ugj�z��X�:��ݡ3r�48%[Q2LI4L�BS���
�j�������:Iɚ�m7��0eS?|t���~�dʶ���]�Sܫ!wEQw��_8�Xj]^U�\�z>�@}0�:�z�2�&;��(���*��A�*b��� �u�6����{QB_���V"��oO�oa^�=h$˱(��Ja�;M��R����e3�I��CKx f�ٝ�&�3M��Ҟ:��Q�c 2j9*G8���Z);�w�K}�V
�-��ߢ����/?F]ɑ��ʅ�x�~���Y=)���3� �`R�3]�φ_�I1�pR��fy�Uy���\���F�~��t�vY�������B��@���p�r�V�%S��mڞ���ϰ��o�O�߭��n s��V�W�[��OխJ�'�D�R,�Kq�W��.�Bzl"b����W� �e��2�O��w�]�p�i�B:ޖ��;�̢D�a$�X�i��y�&n��,��/ي��ut ��~$�Av|lC~�\�d��yC��D\���˽�y!�V��ǯ��@�p=�L���'I��,��{1p���zΖ~�^
n;g+�gZ�XP@�0�>Ci
BF P���iR@V ���i�W�$����f�|�`��1�2ߵ�~�Ԁ�3�Z�:�"��e�?E,��)�y 
df� j@ffiK�)@2�` Xfa���D�`v��l�B��P�K <1�,���"��-���4�ۢS?yI�O^�K�̥�:Lx�O!�F��p ��ՠ4�3���O%�zQ�R|�<��y��TMv�$���8�h2�5E�4�i�0��2���"V#�)��i=��vf]
�]O���"�؜t�� 5�G�����ͦ�1�X������2�ϲ먪���>QX���{2��]F��^�}P�~� 4�ڥ�fI]��V���z~G������I�b�rV,D�{� 5�� K��W,��������FS�Hz�\�W�R��u^��c�l���yk���w q��H-��9�srBN��j0m�d�XZJxBl,�}�v��γ���w�X��6ԟ1���A���"N��3����۽����n���uOAG]�k�sy�~��c��e/i����2�"B� ���7��48�y�a�.�(��g�$
��t�n,�,����'{�"��K�,WuϤ%`4�=1M���\o w:���%��< ��=i�;@�t���IN�A��%������.�c��1�D똝hU��-/s��Κ3${PjĐ��r��VR��&]�QYkl�;#��\٭-֤�XDX� ,�љ�"�Y�G��9C �M�8�<?sM��$o�y�ZM= ���Z��Ӯ:nO������ڀ�("�'��x��?`���I������|���ь��9L����ם���Y`<�3��^7s)fn���'��׼_�_R��} �rXg�v2x9GGѸ�8K��)��ÄB��z�88�^�\���`}��`Y"�����6���F��LP�6 �p�B3�
��Z_������#0��?t�7��O��h�nGjH_�גiMC�+�њ���@ע�*Q���hQ˫� �RTK@�k��iN]! ��Z�C������}Q��4��E�
8�:�C��,$�K_���<J���K ��׹����U��[�i����1��0\p�l��uC�4Ӄ�f{�Ұ��Uc:� �!\��O�׈ͽ��jEjHoE��=��1w�0�
�.��L����< �<�kWx��V1���Y^6���~��@M�%����
�wG/�56Y�&{���э��Xeq�F�؈v mg�m�� ���m�AĬ����, �ć"��ىpƨ ����B_p���*J&���Elaq�A��*y&SȨ|
��_`!'3�zLY&�i�C����c9'�$��?��
��(a1�ͤC�v�@8tG�5nw���BcS��@^�h2���O���A�o �<
e��S�aKs؄;���s��{<p����:�7H�-�B Ŋ
Υ�>R���x������cg��*x�ug��];��/��`"�E��޸��lͻ���?�۬�a�؂ߤu����jզ��h>}R?.�i��^����ˀ�Yv�(#`�߲+�VʞE�1�(�}��vww�?d���HHm�6_�w��0��1ĕ#"���iX@�y��QxT �oˠц��T��8��bMŽp4F��$i����+!���*���]$�liݠ������l?��s ?k��=�&�0��1��z(����n��'XH��m+�g���tHHf�T���Tɪ{�w�a�n{�)���1H�>��x �#����Vq�)�%Oms�w��)���<p��t��������� 2=z,��D�=�w �{�i K��raDk��c
�nG0�6������r������*�ݲ{����2�A XöR�|Z� |�ni� 7�jVe�+s�/��_t%Q�Կ���"�#�2��`bK�q ��TN2��bw嵗�ؽ��T�������'���@�3�[���h1`o��?Y���Yo�(�cNfm5)�wG�Xk��"��N�z�by�3CHeŘG'���t.Y��h�ix���&� ���[� fO��p��p��� P �� ��Ǡ$�z�)���2Ũ�M1U�c �2��c!�N&�caǂ���Y��FNb6*���(�pؐ� oۜ�ſ�s�f�u � �y��u+�pk��,��������e*��=��0�JfȾ�L[��?��&�ق�o�"I(�����4z��/�� ��K+Ѭ���l (\�C� ���!� I@�H/D���A�EX� 1�
Ȑyf���ˠE�;���u�.��8
�;�-�Xz�&8��EJ=� `�����
/����t a�0ʯ��|�P�&3S(��� Ve��o��x�&�]�x��a1
ڎ�e�a��Q�$ƵDc����ݭ��\����fs��,D�a
& ���7J�vИإ�:�S�����Bk
�>)���e'%����j�ꆪr�jK�.U�T�R����tU�T��v���X�3����B��T%�*!�t���� Rc/&EqA�e:Z������TG$Pͦ�3� `&����<p���J�\�)=��X� �&EeA���SAn�(B>K�3An� �� ��TȯD�
`Z��4��c�>qzț��S=)�޻�������\=��&p��=��V�/3[��RS�#k�tf�3���Ȑ ��1f�@�}���?<�ɭY�Y��2 ����>oa����fO�K@��z��e�0��K��A���m�5t��S����w&��P׽�y�A �����߮R�6��Rg@N�<Ѳ��٩!��ƣZ�ز�B��w����]��NǼM��>;��[*��N���R��uK->G��͎�i� l�� �!�hv
�:5\�x\��\�� ���~{��vNR���}X�>�j�{�띮������-K�zX&f�Gm�=��g6OGufX74v���
���?z�&�7�*W- ����'(��QS��-}E�j֞�*�`/V��h��
p�*9�L�E��qY��J��:߶w�X���/���?F�:��F�~
���Q���VV��G�̫�^�����+����Z�g�y���\M�Ju��K�l�g�i'y�%�X+��Ŀ�eB��lL���\���L�dX��*�o��0�6������$��"8���r!��C�н�7����Sd��fm��ď��@��g��ψW!��ğ���?���P�}5�H�*������u)��h݈70�m�+�a)@}� 5�߉�鸱O��~z���NJ���]?�-y�1��b��Z�F���DМ\E�I�?L��޽t���᳊W}��`���YCl!�} �EP�8
&�j��T7%�R���4����K'<�2n�mE���3�,1�yNcz���s�2pLJ �I� �}��tD��*U����H:G5L��˻��ar^�bS����~T�ۣ@&�I$4/S�Jd��2o�Z������w��twʹ��ͩK��r��n��A����x�f�P�&.]���ѧ(O�X��m��3}����T��Dt���ٯ�ڎ���_�S,�2Sic:}L
�΄�������Y��C��~Z��jM�Y%�Ox�X@��A�]�����o�t��zç�?X\����7�(<f�h+_@Go��C����}�F��X7���>M������(�ӽ6ء�O}-Q������?�'��3���-�AU�����&�Q��PkM�(�������\y��C��̙��e
0��
�܁�6��:�j���+~�t�E��)��_��ю_Ϸi��:�o!�QA�b�� ���[��4eU�@���H�[/E���"k�0tg�F3ƃ��Wb4u�T�X�|��f����h���A���
c��Eݯ�-�-��=��^��+Z+��k$n�����
��o''ޙ{ơ�w�ጿ6���T��S��N���Y]��ͯj��Y]��ͯjT�符x��z1r�
mw������gZ�=6���_Ni�b]��i� ���y�����cν��y�oP㯾�
�Z��N���F�ۄ��v!�@*���X&��Vڽ��%+���k���p�k_>:_+���>ю
e�cH����Y�i_�7�+�F��)8��Jg#��֠@���{ c�����o��EkڌEs6@)��W����Gtr�֙qR�`>�Xc~Y}�X}��ϰ����������v��j�m��X+�j�E��mͮ(�� ew��1X��m#粣��� ��;�e"����ѫ�i}3OmL~�
�!ԍt��L�4(�� �A �঑���
G�햽��4,�����;�})wM��?��W��˦��9w��-��C�Д�€XAE�tT�� ~g���)�#��K�SP����T��c�+:�mv��SW����6��@��>��E�S��?=q��6��6�̹�FO��[�P�9�}������ ��� i�eNA��є� .x'"��({<!�{@C��z�Tm��L����ꑋVX/�0G~��6߄�]
�ݜ�q99�i ߅����j��фB� PA�t�4�`�o2k�X�1�a1��-4\ݙ
gXL�h66� �uxUK�TL5H�[*����v�x�8�oZN�`vn��3��Z�xI���4
��;�KߔQeC��O�RZhs�;Lf��=o�תS溧�u
��[��v�"��\��eO�q޵�7荵7M�n��iBTF4�)O�I�]�R��ԅ^sS��
Gͭ�)�̥�蓹�1�q������3��`�ek�LV���G��� �+�":h>�F&(�����i�\��r�ю5��~B�r�`�q���,E�����'�3 ��##DcA>� ����޴���h�5�����3���W�o� Z���]�i��
������N����*���Z�0!�$.���ݷ�����mq�;�Byw�������
ia^:3h���-�g.��V��� �X9֩�{qe=���/�?�[�1j��v:�
�ѧ�2v�jR=�X�v����M!o7v�w���[rs�-���;���b�ˎ��S�O�ss����Ƴ�bc&���mT�Ӈ*�j�Lu�v��j$��Y��ҙAW�$M��p�8�]�t.��.�a�4��t`��m��qLl�L���L(6��������(�$�ԫP��@uV_����=�~��^IC &�M�jϦ�R�rč;ƐW��H������t�B�t���`ol-�DLl���댾3-C1�jzS�c��q��=�6Wn�֨I��N�x!B��ȫGab��K��Z�����Dn0vF��"��:��M�v�_\� �[�x�׳=��/W���y�"�J G�����:<G����-���9�I�S3�I��"Tù��zPR�%��3.&;�Sy���g��Yb$,09r���$�A�0�
bA��]R$�ϣ����8�#�ν:�o��fװl-��W�zk���w_��5��z;�^
�R��
��z�M��:��Nyd�u������"���$�� BA���5$+�߁ �{gJ6�|�
�b"\�p�o�_$_�� ���h��lN�񕺡�4Ӻ3�}�R*`�*5�^���'+��_갎Km�=P��¹r�����nb���0;Ls�
Ҧ�Z��(0��N�5�2�3ۭh:�1�;:��2��*'�*��N���eɶ|D7�� �:z���ؒ�y����c&�ik6t�fV���ˊK��l�P��<�V��N<�a�H���1KGr�e�g5���@��F��G�J���� �H�;�tQ��޿�� ;5�N�,�#�C�[Kj4��{(�ۆ�����+w����F.ū�nʔ]��A
͒[z"��k����k����VτP���j�S_X擶S-v}�d9�h�������,2n@.�~�-m��7iL�^d3���ka���E
s!@�d�)�D̊��y�,�*���h5�3�xۥ���b0;���n��ζ#�<vW�c�Օ1�D��ڣ���:�Z���X��K���B<R#&����)u|����� ���yF�;4���QeP5�M�!������,J/0�=@j��n���u{3@�a�K ��r����qh�B��,��yc��/s��7د|�t��t��� ���������^��/��6����M#'/�=�|Yѕ/�$�B�3��Kc#��� �;��(���j\0[�G�a�`�t)�]F+������K�H�{���J�"�d�V��j��u�y[��n�KU�׸[W{4�~}Py�5M-�:�&�ȁ�عI������7��6Ř��ӛ9���uG����ẇ�RB�;�л|ʃ��P�h�9a�N����8;xsZ�w
���ʩ=S��X��Mk�Ky@�Ff8��!���������� C�'�V���㴣0�Z:�W�b�5��+.Y��Ah�Ɍ�W?9�!f\�6����W�$%'��#��+������}Ɓ��Ѓ o�� ������M�����k�*ѫ�v�-�ÏQԮD4�c=�3�D������>RcJv���&�� " "�����C�hn~6.ϣ��N.#����
>Z��m�,����k^�"E �!Q�P�W�����q�K�=���]���
�:55�O�~Sh��,������w.&��{n\s�m��������QK��c}
��CsQ�\[W����N2#}|��O��0 m���=a�Զ$���
�H�Xa��
�+T[�C}��Y`J,0�,P1���>�L�z�!� m��
=�1>�H�͆���w�M!�a"2���2<G��[�wmژ��nB|#N�~�#����!�B3�)ARg��'_���ZSb��Ѹ˩��h�>�Db�ԏ6�w����I�6!*kFU��8
+Gi��.�~%~{����ā��ཉC7�k��v�<��Ysl����Y���/x
E��~7s�.�PT�JyѥK��n��w�z�@t�;� �uO��yŝ���$ҋ”{;�q�rPGG����N8݅�:�H�6U�9Xۻ��J*
r|�w�V�B����&�(�e[�n�󘤡�<,��U�� :
����y���\�s.�<��R9�Ú�́�W��?�����>��
�-�Ff�=RKB��H��<�¹XYga��v�t1�|�=>t�Y�����Z�o�R���n�η�������¶t3��~x|��~g
1���o�_E�����R{Z%*QQ��h��{+��>��
&��O�4���yj����U��r��q$�؊�aF���+J���+i������(oӹNR�&$��Md격/n��|R�C2�d�2Hn:e�6)�#o�E���'�.�
/AՐ���P�)�F�ޯ� o��#�`�]%��%msc[�zC�ۻ��C��>�Ջ�8�{fH�{`�7Zh�*X�p��G=�b����
���n�ڹl�N�39p=�^���%���/��4+�����Q�kd4�|�ጃ×�JY���\�<t����Ф�OQ<����1v��%od����0�䨧��y�Q�����m@~�G1�m�=}�w<��Q?��5 ��P���Z s۶��+6���DKΦ��Tē4i�;y�MZ'U4��$&4���-U����|HN��ܵgD<���>™,���Zfe�d�F�^�k���?����/��.F�1;D���_�����\���8��r��GGiX� ����4�&i�[����g�4���ww^�g4���3}�T�����;67B|�ʷ��Z���/ë�^������l.…P���<���(T�:���ϓ4�/hV�������?��ciK�+�TzCZ�l�z�$_��`���") �G��,:�k��Wt��� H-�Ls�z��2�h�l܀"�S�Q9O�0�N Y^&q9g��s����xleZȃ�0��\��p���'�re�W�(�4�=�+��H��pI���r�g2M�E��,R�a���\�ǥ�9o���/� ^Mu���i8S"N@~��*b��-8�Qk7_�()�^�@�f���)���tԆw�ww�A�Soh�[�{;Ϋ��S�����A �p����!��<Cc��`�b��Y�dG��+��j�W�*��q$t�� ������������U��h��T�k��KG�{K"㍍
���(ք�E>*��|��R� >��4���<��[#�����W�~�:�������J��^��*�[�g���kʽ�
���}p��ÿw�sR�K�/��wM�!~��?������]_[��|���A��tov���V��c�~<:�?���f'�zՐ��8���X��T����iI�h�Z&���_����@_P��dY�����y�T���+�X�X
��<�/��kҨ!��`\��ץ��*��c^X���n��wm���=<@��E3c��H�l������z
P��4R��KUÐˑ�����rto�xo#CӴP���-��(o�|�Y�%.�
#�݈"�K�qR,R�汖��� ��s���د�=�ʣ#����}�������qp����*8 �3��L��(� v���=G�;�I���b ~�
|��a$�1�҈�n=Bc��Z�y�7��j�G&�����W�gR����Y�z|��+��� �B�s�<I6�*o�$ˤ:��9�D� 䎤��ɌyG_}�z��#���_���57Q��4���)&!���ߧ�l���p^�ַ��:TD���a*�epr���5��I^��5��|a�ޢk��;|����¢��w�~YG
zK7���\A|�z�۲M�nN��c1��x�������&0Ч���GX�avf��i.؏���/kr�5��~�=�o�;6�����ߏ~���І�G?�M`�F�'
V�?�()>n�ۄ$@(tE��I�D!�tB�J����G�M׀�� ��{De��d=�<95��,P�/�C��I��Yb9˴��9"�,�����䈏Rр��v���*:�L�"��P��*����m�Z�r��&���\䷰��>L���s��‡9C Y�� h���A2������qr�$S�F�r��;�GCz ^��W ��S��������i��}eJ��Ӈ�S��?T��ڭ���O�}�(|Hp���1W���r;�&%4�8~��� ��Ox+�s�6O��{���w��x)^�X�)�|�)/��O��)h�aԄӔ�a��d�!�a�kbM3�)V� �kY���E⅍�"X2StM�hsv���R�)�� ʴ�h�z4ΠL�h6�� ��Ų���6�O�����.W���yΦ:��������X�x ����M`�H�I�Tog�G˂{�K�TU�Cy��^�Rehs��l�� {�zU���^w|��[Dm��L�`k9�߲�M-�dR��r�����p%s!Sb��Hbby�ĝN�K�������+��lMM�e�LFW%+^ڂ��+�)��
2�p�X!�+���W����#g�K�����;T�'��آ��΍L��+rL�j0|� ���]6ct�|� ��t���e����=���eTBH_�^�� t��:�8Z:-1ۭ��eJX�kZ�W7��E����ڜ!��:#��H >��q�����R��+4�kDUC�~�%��l��p�`{�~y�;�Ny���y���+�o\���":��������0B\(}2����(oa�*�bK�?ʯ��&�I��+Dz]D�?��R���MMn�E�-}2�]2|���N���yt؈�7�-;�{����;�㹵�[ҿP��P�w/^'׋��.����°2�A}C��Yڝ�0B�d9+�S�3�*7����!H��s��$����f���P�� @Rf�Qv��\a�b�
kb��T2����)*:)?j嶀Z�M Z����g�wV�r���=�����
C�!��4p�� ,O�$���[�Y���{3]:���bo�2�Lf�Ze��qzb�-C 7���P��3�ר�u�vr�mk�1<�oT�l�I�.d!"������BSb��%Zm��Hw�U
M��Qe���i�����$��!����$_�\�6��f7v{�7�W��U� hwZw$�������XG*=��%�@?Ӷ�5 j�i_^���tU���J����@��=�q���g�Y8adL���5z�X
�ߠpa%���ʻ�HD�'q��N��w�'뼓J�S�j�b����g�뉮,��'kK�f;ج&�蘉�@x��� �`k��δ�3Mh�v� mM�\+����0Ŭ�-�;���M������Օ�l��r��X�6��� �����l����ؠI{���_�zJ��DZs`au�m�����uK�����%0G&r������v�Q�c�����g��b�#�&-MF�L;����%_�8W�Fg�+4�CӄA]�C'���H�Hִ�q��U玢�������a0Y,SY��8�U���UQ�m+��K خgM�@o[q>�� t,�ڹf+VlwUd)���dN�v��{� ��L��Y���(�|��\�iy֠�4�
G>�P�1��ɲ��j �>"�ǔW�F$�����]DZf�����|Dy�x��Ccst�GRsl��U���F�߆<�T�"ש�bh�
h4قȓ8��X7�|�QIw"T���D�E�ZNkA���W+�VSL�u�0����^��� �B�c �p��d\�b�Q����%ӵ1R���Ez+��!8��ScE�mn���&�h5�3�ۅ>Ё2��*Zw~d�ؑ�{l�X�`LQ�J������״6��]Ӫ�Ҳ��5�D��2����q��}�+�g����&�(5r�uB�r�
�$+�*�HpA��{�zb��� ��H#�3�?�R���n?�!�ʏ�Ae�E�\r$�c:��xR��:�������m��
��?����L+h��r��
B����������6����|�.ۼ#UU�\�j��ɵ�� ,�Y5��0�Iu�p� 1�C��⬙���%scx�v
3���"Yɔ�u|JF�H�;^�aĵP�����Mo�X�t��D�
��_�R��!��w����H#��g�;��!]]Sh��I� 6*�7tt�5t����(7�����f���L���󐔨l��ܱ��x_�z=o;,u���K�)�=�t�h���bX��4�ooš��1�л�(o��� {ĪZ���#@.h�* ��&��_���%���9�9SבaT�~� �l(N'
sn�c�PJ÷|��bi��5����(�p�g���f�y`8��W�$G��-챴��}��<5^U�o�j���  %� ����b@������R�,jW���6�j Y�(�V��z�� |%�De#����Y|2�O����%B�s�Sfq1S*Y �A$�&����yM0�q"��,s=��j��&sz8����o~H��%�!�°�0dZ�V�����-w�������NM@�O��v�i���l���U�y���Y���>�S}Pף��-��4�N��h^�P���0��-����#���#z���ݝG���Mfb�/3�I�&��N�$JTі���5��)��La�2��Huhn�� ��F�j��Z���t?KЗ֌����d�`��|����S�pP_�.���t�;r-$b�LB�ʷ�_��(?��,BR���|�!��!��y��!�V����1�S�I�/�rTHs�߾�1G�����a3 1jd�EpN��)��pz@���C��r
I52��%a�gL��;�:���W���nd{����Lk3�h�����A�X�`�O[���6x�gg�j�ذ��U��”5H���~r2g�ɲ��PΗ'�Q|~�����8'2v�?�������-e�tƠо��L�iuvg��R��b��ӷ?|�]I7`]���� �k�g���+�B$�%� �� ���z�χ
��%�%Զ9\� ���y�$�=��+ �����sI����_�)(����c�D��M��]�|e/�������_���1+@�@Y�QGG�&L F��@�A���(��I��"���(�P���P�|q�Z��{��ld��D�(}���#�n#����s�iV�i�i��/t��/�rÆ��x`�˂f��mf��t��=L�����c�}5���Rǡ��tBL�n�Ҋѫ����WA9W���3zR�{`�A5�A��Sz��o'Ȣ� J, ���7;��]��ɍgB��E\T>�z���S�=܃�:�qt!`��ݎ���d�iB��$�������1�'���G�o[�쓨S���
;n�sW�1)�tY�!=�t��zX拪��TïzC���@o0����?$��zE��n�ڿ��=�VohN����v.8��=y$�^e����a����(�9$�=��3`(L�q�����`�ı�<ؤ$`}�ՙ_j���]/8ׯ��0����&�p��A�����8�8S�47e�^��Y.GP���5i�'lYNzV]��MI��;�B�Ga��u��C8���Kd����6��^ ���
#J��~��c^64��O�C.p�>w�`@��w���g�� }�R��'��,xF�GG�/\�1�s|���3��imR{��x�JwTJ ��k�7�/=9���2���Ymo�8�+��J5����'4�.��-�b��0Z�"^eR��Į��~3�^m��������3Ù!�􆊀�\T�2��0�iV��%}C8��^d>�5ߨ���Z� ���'뢸�ƍ��7AX��0~
�Â�{����>��7��* Җ�W���96�J�(�*���i�LO�P�U[Ĝ�p;e��HM~u
�Y��z��}n����]�
mv���n:4��*Sz�7�]C�(�0�/����ebe�"WH�Y����5��`%z"9J�~�N��|�����A
6OͰvOy��g������*aű%�C[���'̖~���޲�� `������asM��­`�V���:kj͇h=Չ�4�݊0��>�֘"�s�àg=�YE�/0\5DX���)"��H���t1$�սT)+�+8��َzRI��������.-��5|�
[�����m�8u���-o0��p:w���kyE,Ѯ�qܺ�+{Ȝ���`dG[�wP2ͥy �`o[KVr��U���5#Gm!�&E�r�͕?���k!S�Ӭ�/�g��M�d���w�3m��^d��#
��rQ�=���*��
,[��D;"���|�e>��?�|E��&�R�+��&M�
`n���%F��σ
;rI/��uf��9�D<)P����t�`������"�rg[.ي�٪?���f�N./�}�
3Q8�h?������ٟHz|D�<t�("l׫��� ��5�y�x�A1h�` Ǹ�������
#���V�Ì��E\L���ղX��+��\� 8ӫȢ�xRWFm^@�X׆�қHp���a�3y��(غ�/�uZ�d�ō�Բg�:��a�\^�Pʴf;d �W�6
�؃��� ��+c�t�~��J�G�^��Z��'� �@ݟ��,��?���t����S��a�ঢ়γ�d|�\���mᇊKG�s���~F�ʲ�9'�\���n%����(6v�lqs��=��Zږ�����P��o�$�W{�Ӵq�Kf�Н �&���Q�d�&Q�w���a�:�Za�\��]��e���*/,b$�Ψ >���[�|�Q�k�s�2�+c��e��Q� ����r��G��(�`����ld��9�/2�^���*G{�+@Ϡ�a�M���w�dc�ᔠ�wb]��o�S�y:7�N'K����p��~��n����yO�Sw;��G| ���Ǻã�{�
u-���w��n�� *`G��%� `1�
7����v�9i�P1-���[h�K��F��������"�5�z�36L� �`4�����C�����=ºIA��*��9i��(�:�6&$k򣫖#�����ȃ �$�IU�c�X#QJ�������n[��4�b(�䏓�<8^T��#� �]}����|>���I�NNXWH=�{P������R
^P�u��0����AChr�[��g��u��JBb�����)Å�KhX Y���C ��k�{���01��;!:;�}����X����#��-դ?Ai�,�P��<�P{5���<�4>-%
zS��G�!^^���n�Ww�w��Xl�(>����l]?��+�ƺ[�Y�u0�O�'�.�Do#0�]$p+BJ�N���6'v��1���
i���HU_YL���D#9� !� Ć��'+��]2�oM�4�R��% ����h�W��߀+�nw���[��~��k�Y��N� |�5���P�1Hk uc �C�CE�c3�{�H6���&�����0�y����5�g�#���{<����XXu-�,��IF' ���Y�����Ab3���8�]0
{���@�ͅ�$��'��sR���W�> ��%�/���~����`��t_X�.���>#]��}�x޸ u�
Չ+T#W��������&� �N����d�C��Bl&�2�q�n���F��-�+N��TB��˻�Qۂ&֖����#]t��/��$p�i9?n(�ሕs�٩#�:f�̧v�8Ý q=���Cn�e|�� �,Vk�0!qǨI �S� �8�S�8[0:�N�����At3E?M� �?�z��ě���>����A��[|g��ӵ/��m�|n����kK�G;c�d��\9����S�l@������UN�U�G `H��
|ͯɟ�g
i�Q?�A9�����W?����AC{=�2���]�v�..�j��.���t�8Iw�L��%7��%Kr�,HIoA^�^phh�[~"����t�.N%UI��;�<�� ���A���.��P?l
�xk���tT��� .��.�O�y����_@�
�*!������Q�E:i@sT%9߰j��V���,Q���z��K � :��/��M|��$)X٧�����p��,�牲����� �,���w��( ;�}h����0O��o��:��7p� ����� ��VI�]{�p }��c�ꌛAi ���;|��Ёɵz���n�(k�I�He&��e
�Ί�����X�����Xth/ǜ���s���#1ʺ�D�_��F�_�q
αMU�t�x�k��ud皠�nD�0�M ��3�O��\���V2�M��ieb�( z�TO�֕*j���g&����&6���%X5��h�{
�n�g�3�"�>�vE���r}|G�s��<v����F��yy����� �|�;��̈����
&0\w y��
��"M���'��,(�7~G�Z���(����)jj�Vm�]�z-]^��č_s 2�űG�)H�d
X����Qx�JH���8��G����@�8�&�
'���7�iڼ�?�V���Os+8�F�O^7�)�_Q�1�y�F��+瘭��I��r�����ܐ��7���o�����ҭ��x���/���ś���Y~Y�s�'.�s��D�$�B�K�>�����ւ� �/������XQo�8�+�
x��V����J��"�>$��Zlw-Q�4(ʱ���� )ɒ��p�6I���� �Y��[�*VЊW�pe?c�����B����� �=�8��_�7Q�:ў\�BU������ʬ�*���p[5r� _�5ϯ���<δ���3�
�6�ld<9�w<�\=�r:���8��/b!�z��'�=���І����X%���j�U�~X�(��2<�����8&›��21;����_f|�B�C߭�z�S++����JN5%�Hp��d�"fvF��_y<�ZS��9i�P1YM�I��p%6\�����$����y�k4 �V,�y
h�,�
��n�_mF3��̀�nQ%���a���\r�GG���@ĘPH�-XґpU |Qj�=@@�U�W&���&�� � 8ע�F�i�兩���?�>�,EwW&�Ҋܮ�x���f�>��~��و��nW���������'�r�!Da�dL�Y5h9�̝��?�a|P�X+z6��� ��D�аa�B��a�g�����#�gO��pB ����PG���;��$��io�!2�Z[p���A�Y�pT�O�+�x,- ,cC+�t�hx��B��}�\J������������a# @�������1��9�?�7����B�`d�mN�mb��$��D�#���2a2y���Q'xT�G5x�Ã�ߨrX������@I�P}b��;�-7:X��
a�`�n�K2h9�*h?r{-�������?�%���=gW&s!�7�!� ��A�`��``.�6*R��;[@��vR���Y��>��fm��x��|�lb)��������w@�=�7 ��J2���GÀ��#=ޑڎ�����qW/ �q������@L~U�z}
��'�KPK������}�n���b���&�ik��O�D �g gR���F.���)�) @��Bu#�%0k%Љ�)�� ���LH����o&�2��)
ro</��������z^���D��X�� k��t޵Khk�Ep������!�^��S!.:f�§�B\�I�B\����Pۼ ��#��x��y-�$�5�As� 9a��cgA�����n�8,q���7��� ��i�s��xX ��Qo�����(�^n{�f;ݗ+Ggn��\���|����Uɸ���8����n��wܴE e=� n�U(.J�.�C��4�/@�hy!H�^�k�qJ�r
����r^�^�Kd��)�q\6Uu�v������ٗR���M2�$�&SC��I�d{?���eexH,H�!��8��h����|��2��\��r��ATr�ը�)��᠘�.�RrnCHy��Z��Y/e@�/�Zh��F��r^�Z�w��D��lwgP�B�VPFVn�x<�-��~7�9���/Y5]���Jv��e��#r3�����$�0���;�i�IVA����S��g�qp~p/��f)l�&���wjl��=�!�<Bԩ�_'8�@w<@6�$��4�ܟ���9�»��3�(�y�X���f��@���6Exf"[�<�6F�0g��FJ�Q�k�C������/�����嘳\�_�
�Q���&��:�$.����%�c[�Vt�z�4)��;i�����9�����~+Gan[1�]���퉍�4@e �= [TZ֖��6��|�Z���+�jȫ�,��)ЀwS>��J�)��A�p1���7�y[��q�@�O�� ᧹��=m���,�Ξ����Y��)�w��7�0�� �)�I���9)E�s�&���)5WaG�B���,X��� zz�Vm�5O��� JL�'�+3|͕�����Pԩ��M�����{��Oc9i�3ӟq�-�s�(Qn�Pp>}���7.7�#��M�����i0�}���%�\hk��g7t����� ��B���_�,��voJ��kC'f#ዒ?��=
Z���D��ѕ{!q�������mȣ�7Zr6�I������xA��5l�D���m�
o�^������uPH�$\H ���7��/�{�{��Q���!e����VKo�6�+k؈Y�,'��R� �`E�����"�%�ڇ���������y8�|�f8� �b��Է�F���h~�0�ڽ�8w� �<_�&7�N�_-��j�+o��$�%$�;k����sdP���R*��I����wH�6+��������J���޺8��ǰ�;dM�*Q7��k�+�P���
�=n��"�����n4hv\����Q���Q�P~5,�x9Qנ���TET=U(ʐ�7�M�����""�;l �,���Y92{l_�����&VhW��
�RɅ؁�
̗�ν4:f�}%�����YB� O��E��Bbp���<�'��PfQaQa�O��c2Ε�9���(��,~-~J��6��n>����i���>
�Ss�.�ܹ?4�6�L3A�} ��u%@Yw8����x��K�a�U��"��#��n�N]$O+�O�1�2�9�L��T���|e�KUK����S��{�_��&��%�A�(���#��q3ݻ�d��}�K���}����BA�:C,�s�W�H��<V����COk{����\�������`�Džɛ5h�a�[�BU]U>��(�����v�V��Tb#�M����Q���� ������b-��j��kO����Dvސ�����[�en�3�_�f��}�.&��� @���=xK��/^�r%�����/��� �����I_���Zit�,�x��c����I�Ps�U���^��c:�݂��-Q����O„�m�����������X���@i�~��,�K}e�vvn���d�F3m��4�.�����vtD�'vb��o�~Ӣ ����Bn0Wج�Ip��� �i�~={����Û_^cs욎F�o:�<�5i|LzlM������x6���Wa>����Qa��B�+���� “1Hj�dHO*VΨ�C�����7��u�M=�5V5��4�֘+�QPHﲻWz������f�·W�*8N�XI�r��'���uv�
�j%���m��2��l�kA /7������=��(���l���l�Jh�=IRvƹ}�D�L�:�8��b2�+�ݰ�s2�Ehj�RZ�[�,� ��)D���'�Llq�X����� זּƛ�s�{l�dZ��ݠ��r?@���Ǘ� ^t�������,�i�32�}Lӈ��2ޛu7�Bzt�Ԕ- k,����3x��Z`B�gS ^�0t&4��Fm3���G
�k��dI8HL9���!�����Ƚ��h����$���%&��1�]�qN��EtG����A�.��n�k�?�ܱ�N~H�0pq��k�wd�M���p�X���?��rZ ���TM��6 �+f�Fc8���6��H��f�â= �bӱPY2$�k&������� �4�����H��wɱ36H���U �
��� ���r]�� K*�e��|��_.�ٯ`��B���_�M)������ʃB���V��M��^�d���,*J���{sJs��vׁ������� 4y-�m�’y�5�B�u��S����sl�;$+��O���OɌ�X�I�v��/�
'-R�����H�U��U�e����W����zϸh��� ��
�(����t��g�=��Y�'��|���{�F�Ғ5�AjJ� {�څd��`54� 9��:��K���f�/��i�yME�,OrF��+�������Q~V���Ht.�؞Bm�3;��@��÷���D��v��Z�m���J[2 ��a<W�,�0��`돭6u:2R�f:��;E�"p>r��P��5��W��奬u��:�,����Y��P��ɫ0�BH��$��ۃo�;��k�LX��XJ�ӹPW��(6Ql%�"v�<*��L��M�b��Y�}���ӛ��{��Bj��n����<��Uo��E���z��ᩧ�P�63�Cʼ�[f�g[M�'�� Mr���e�I�c��ܕ9���.o\�7�o�4��
�8D������;c�V�CG�_�5&�]�zE
�Ϯ�Pn4�)��֦�0K�M��<��d%�2*qMr�z������B�O)�"J�Β;��tM� 8s�D�_D�����֓���^��8#���P��ȝG�4����JUm:�{Bx���D����=q�����Έ2��}Q�j�0��T�"����F���a���BXT{ I�&!N���dǩ euf4�{o�t�BKJc�̊N�*�E�ѐ�N1��=0Q�l
Fz��m�P�'���b�ͳ:p�Xr+
/1���9��������P�� Г�>��-h\N��p�:t��gu&�1�Z���I��������?�ɿ{��Z��`m��8�M&>e��&�_�L�����Uv�|���d�-�i�ۗ��A�޸�X�������^5&��Ҹ�_�O��6��\��y"Pc�����~v ��O������
:���fFYh�FD�N�OW�2n5B䰅�b3%S*+����zJ�O�͋��c�A�Yz�@Gtw�C�A7�8�n�̱��/���n3g|���>v$�>�k�*U�����T�&�ֺ��m–v�{�s,@ bW���FQ�v��M����0E%uQ(a֕0���9? 2<�9
i�OA���h���%��9��@�=O5�͏h��U�y'՝5�(��ڽ�\��z���������|}P��������Ɠ��Ή
�F��Ieb�z�o������ ���bO�Duu��)!�NK�Bsú��c^��"B��|>��K��\�odu�����J�7���~Wm7�hȠj��N�Pp�!;I��ZԲDWL�>�'"_���TS������M+�K.����(Ѭ.J-)-�S� iV�%)��&������[CU�dd����&&gh��M�.��K,(ȩ�(�Iլլ�ը��������r�
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment