Skip to content

Instantly share code, notes, and snippets.

@Fil
Created August 22, 2017 09:27
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 Fil/d2591739eeb2079bac599b4658cfa950 to your computer and use it in GitHub Desktop.
Save Fil/d2591739eeb2079bac599b4658cfa950 to your computer and use it in GitHub Desktop.
Icosahedron Chamberlin [UNLISTED]
license: mit
// https://d3js.org/d3-geo-projection/ Version 2.2.0. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-geo'), require('d3-array')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-geo', 'd3-array'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3));
}(this, (function (exports,d3Geo,d3Array) { 'use strict';
var abs = Math.abs;
var atan = Math.atan;
var atan2 = Math.atan2;
var cos = Math.cos;
var exp = Math.exp;
var floor = Math.floor;
var log = Math.log;
var max = Math.max;
var min = Math.min;
var pow = Math.pow;
var round = Math.round;
var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };
var sin = Math.sin;
var tan = Math.tan;
var epsilon = 1e-6;
var epsilon2 = 1e-12;
var pi = Math.PI;
var halfPi = pi / 2;
var quarterPi = pi / 4;
var sqrt1_2 = Math.SQRT1_2;
var sqrt2 = sqrt(2);
var sqrtPi = sqrt(pi);
var tau = pi * 2;
var degrees = 180 / pi;
var radians = pi / 180;
function sinci(x) {
return x ? x / Math.sin(x) : 1;
}
function asin(x) {
return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);
}
function acos(x) {
return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
}
function sqrt(x) {
return x > 0 ? Math.sqrt(x) : 0;
}
function tanh(x) {
x = exp(2 * x);
return (x - 1) / (x + 1);
}
function sinh(x) {
return (exp(x) - exp(-x)) / 2;
}
function cosh(x) {
return (exp(x) + exp(-x)) / 2;
}
function arsinh(x) {
return log(x + sqrt(x * x + 1));
}
function arcosh(x) {
return log(x + sqrt(x * x - 1));
}
function airyRaw(beta) {
var tanBeta_2 = tan(beta / 2),
b = 2 * log(cos(beta / 2)) / (tanBeta_2 * tanBeta_2);
function forward(x, y) {
var cosx = cos(x),
cosy = cos(y),
siny = sin(y),
cosz = cosy * cosx,
k = -((1 - cosz ? log((1 + cosz) / 2) / (1 - cosz) : -0.5) + b / (1 + cosz));
return [k * cosy * sin(x), k * siny];
}
forward.invert = function(x, y) {
var r = sqrt(x * x + y * y),
z = -beta / 2,
i = 50, delta;
if (!r) return [0, 0];
do {
var z_2 = z / 2,
cosz_2 = cos(z_2),
sinz_2 = sin(z_2),
tanz_2 = tan(z_2),
lnsecz_2 = log(1 / cosz_2);
z -= delta = (2 / tanz_2 * lnsecz_2 - b * tanz_2 - r) / (-lnsecz_2 / (sinz_2 * sinz_2) + 1 - b / (2 * cosz_2 * cosz_2));
} while (abs(delta) > epsilon && --i > 0);
var sinz = sin(z);
return [atan2(x * sinz, r * cos(z)), asin(y * sinz / r)];
};
return forward;
}
var airy = function() {
var beta = halfPi,
m = d3Geo.geoProjectionMutator(airyRaw),
p = m(beta);
p.radius = function(_) {
return arguments.length ? m(beta = _ * radians) : beta * degrees;
};
return p
.scale(179.976)
.clipAngle(147);
};
function aitoffRaw(x, y) {
var cosy = cos(y), sincia = sinci(acos(cosy * cos(x /= 2)));
return [2 * cosy * sin(x) * sincia, sin(y) * sincia];
}
// Abort if [x, y] is not within an ellipse centered at [0, 0] with
// semi-major axis pi and semi-minor axis pi/2.
aitoffRaw.invert = function(x, y) {
if (x * x + 4 * y * y > pi * pi + epsilon) return;
var x1 = x, y1 = y, i = 25;
do {
var sinx = sin(x1),
sinx_2 = sin(x1 / 2),
cosx_2 = cos(x1 / 2),
siny = sin(y1),
cosy = cos(y1),
sin_2y = sin(2 * y1),
sin2y = siny * siny,
cos2y = cosy * cosy,
sin2x_2 = sinx_2 * sinx_2,
c = 1 - cos2y * cosx_2 * cosx_2,
e = c ? acos(cosy * cosx_2) * sqrt(f = 1 / c) : f = 0,
f,
fx = 2 * e * cosy * sinx_2 - x,
fy = e * siny - y,
dxdx = f * (cos2y * sin2x_2 + e * cosy * cosx_2 * sin2y),
dxdy = f * (0.5 * sinx * sin_2y - e * 2 * siny * sinx_2),
dydx = f * 0.25 * (sin_2y * sinx_2 - e * siny * cos2y * sinx),
dydy = f * (sin2y * cosx_2 + e * sin2x_2 * cosy),
z = dxdy * dydx - dydy * dxdx;
if (!z) break;
var dx = (fy * dxdy - fx * dydy) / z,
dy = (fx * dydx - fy * dxdx) / z;
x1 -= dx, y1 -= dy;
} while ((abs(dx) > epsilon || abs(dy) > epsilon) && --i > 0);
return [x1, y1];
};
var aitoff = function() {
return d3Geo.geoProjection(aitoffRaw)
.scale(152.63);
};
function armadilloRaw(phi0) {
var sinPhi0 = sin(phi0),
cosPhi0 = cos(phi0),
sPhi0 = phi0 >= 0 ? 1 : -1,
tanPhi0 = tan(sPhi0 * phi0),
k = (1 + sinPhi0 - cosPhi0) / 2;
function forward(lambda, phi) {
var cosPhi = cos(phi),
cosLambda = cos(lambda /= 2);
return [
(1 + cosPhi) * sin(lambda),
(sPhi0 * phi > -atan2(cosLambda, tanPhi0) - 1e-3 ? 0 : -sPhi0 * 10) + k + sin(phi) * cosPhi0 - (1 + cosPhi) * sinPhi0 * cosLambda // TODO D3 core should allow null or [NaN, NaN] to be returned.
];
}
forward.invert = function(x, y) {
var lambda = 0,
phi = 0,
i = 50;
do {
var cosLambda = cos(lambda),
sinLambda = sin(lambda),
cosPhi = cos(phi),
sinPhi = sin(phi),
A = 1 + cosPhi,
fx = A * sinLambda - x,
fy = k + sinPhi * cosPhi0 - A * sinPhi0 * cosLambda - y,
dxdLambda = A * cosLambda / 2,
dxdPhi = -sinLambda * sinPhi,
dydLambda = sinPhi0 * A * sinLambda / 2,
dydPhi = cosPhi0 * cosPhi + sinPhi0 * cosLambda * sinPhi,
denominator = dxdPhi * dydLambda - dydPhi * dxdLambda,
dLambda = (fy * dxdPhi - fx * dydPhi) / denominator / 2,
dPhi = (fx * dydLambda - fy * dxdLambda) / denominator;
lambda -= dLambda, phi -= dPhi;
} while ((abs(dLambda) > epsilon || abs(dPhi) > epsilon) && --i > 0);
return sPhi0 * phi > -atan2(cos(lambda), tanPhi0) - 1e-3 ? [lambda * 2, phi] : null;
};
return forward;
}
var armadillo = function() {
var phi0 = 20 * radians,
sPhi0 = phi0 >= 0 ? 1 : -1,
tanPhi0 = tan(sPhi0 * phi0),
m = d3Geo.geoProjectionMutator(armadilloRaw),
p = m(phi0),
stream_ = p.stream;
p.parallel = function(_) {
if (!arguments.length) return phi0 * degrees;
tanPhi0 = tan((sPhi0 = (phi0 = _ * radians) >= 0 ? 1 : -1) * phi0);
return m(phi0);
};
p.stream = function(stream) {
var rotate = p.rotate(),
rotateStream = stream_(stream),
sphereStream = (p.rotate([0, 0]), stream_(stream));
p.rotate(rotate);
rotateStream.sphere = function() {
sphereStream.polygonStart(), sphereStream.lineStart();
for (var lambda = sPhi0 * -180; sPhi0 * lambda < 180; lambda += sPhi0 * 90) sphereStream.point(lambda, sPhi0 * 90);
while (sPhi0 * (lambda -= phi0) >= -180) { // TODO precision?
sphereStream.point(lambda, sPhi0 * -atan2(cos(lambda * radians / 2), tanPhi0) * degrees);
}
sphereStream.lineEnd(), sphereStream.polygonEnd();
};
return rotateStream;
};
return p
.scale(218.695)
.center([0, 28.0974]);
};
function augustRaw(lambda, phi) {
var tanPhi = tan(phi / 2),
k = sqrt(1 - tanPhi * tanPhi),
c = 1 + k * cos(lambda /= 2),
x = sin(lambda) * k / c,
y = tanPhi / c,
x2 = x * x,
y2 = y * y;
return [
4 / 3 * x * (3 + x2 - 3 * y2),
4 / 3 * y * (3 + 3 * x2 - y2)
];
}
augustRaw.invert = function(x, y) {
x *= 3 / 8, y *= 3 / 8;
if (!x && abs(y) > 1) return null;
var x2 = x * x,
y2 = y * y,
s = 1 + x2 + y2,
sin3Eta = sqrt((s - sqrt(s * s - 4 * y * y)) / 2),
eta = asin(sin3Eta) / 3,
xi = sin3Eta ? arcosh(abs(y / sin3Eta)) / 3 : arsinh(abs(x)) / 3,
cosEta = cos(eta),
coshXi = cosh(xi),
d = coshXi * coshXi - cosEta * cosEta;
return [
sign(x) * 2 * atan2(sinh(xi) * cosEta, 0.25 - d),
sign(y) * 2 * atan2(coshXi * sin(eta), 0.25 + d)
];
};
var august = function() {
return d3Geo.geoProjection(augustRaw)
.scale(66.1603);
};
var sqrt8 = sqrt(8);
var phi0 = log(1 + sqrt2);
function bakerRaw(lambda, phi) {
var phi0 = abs(phi);
return phi0 < quarterPi
? [lambda, log(tan(quarterPi + phi / 2))]
: [lambda * cos(phi0) * (2 * sqrt2 - 1 / sin(phi0)), sign(phi) * (2 * sqrt2 * (phi0 - quarterPi) - log(tan(phi0 / 2)))];
}
bakerRaw.invert = function(x, y) {
if ((y0 = abs(y)) < phi0) return [x, 2 * atan(exp(y)) - halfPi];
var phi = quarterPi, i = 25, delta, y0;
do {
var cosPhi_2 = cos(phi / 2), tanPhi_2 = tan(phi / 2);
phi -= delta = (sqrt8 * (phi - quarterPi) - log(tanPhi_2) - y0) / (sqrt8 - cosPhi_2 * cosPhi_2 / (2 * tanPhi_2));
} while (abs(delta) > epsilon2 && --i > 0);
return [x / (cos(phi) * (sqrt8 - 1 / sin(phi))), sign(y) * phi];
};
var baker = function() {
return d3Geo.geoProjection(bakerRaw)
.scale(112.314);
};
function berghausRaw(lobes) {
var k = 2 * pi / lobes;
function forward(lambda, phi) {
var p = d3Geo.geoAzimuthalEquidistantRaw(lambda, phi);
if (abs(lambda) > halfPi) { // back hemisphere
var theta = atan2(p[1], p[0]),
r = sqrt(p[0] * p[0] + p[1] * p[1]),
theta0 = k * round((theta - halfPi) / k) + halfPi,
alpha = atan2(sin(theta -= theta0), 2 - cos(theta)); // angle relative to lobe end
theta = theta0 + asin(pi / r * sin(alpha)) - alpha;
p[0] = r * cos(theta);
p[1] = r * sin(theta);
}
return p;
}
forward.invert = function(x, y) {
var r = sqrt(x * x + y * y);
if (r > halfPi) {
var theta = atan2(y, x),
theta0 = k * round((theta - halfPi) / k) + halfPi,
s = theta > theta0 ? -1 : 1,
A = r * cos(theta0 - theta),
cotAlpha = 1 / tan(s * acos((A - pi) / sqrt(pi * (pi - 2 * A) + r * r)));
theta = theta0 + 2 * atan((cotAlpha + s * sqrt(cotAlpha * cotAlpha - 3)) / 3);
x = r * cos(theta), y = r * sin(theta);
}
return d3Geo.geoAzimuthalEquidistantRaw.invert(x, y);
};
return forward;
}
var berghaus = function() {
var lobes = 5,
m = d3Geo.geoProjectionMutator(berghausRaw),
p = m(lobes),
projectionStream = p.stream,
epsilon$$1 = 1e-2,
cr = -cos(epsilon$$1 * radians),
sr = sin(epsilon$$1 * radians);
p.lobes = function(_) {
return arguments.length ? m(lobes = +_) : lobes;
};
p.stream = function(stream) {
var rotate = p.rotate(),
rotateStream = projectionStream(stream),
sphereStream = (p.rotate([0, 0]), projectionStream(stream));
p.rotate(rotate);
rotateStream.sphere = function() {
sphereStream.polygonStart(), sphereStream.lineStart();
for (var i = 0, delta = 360 / lobes, delta0 = 2 * pi / lobes, phi = 90 - 180 / lobes, phi0 = halfPi; i < lobes; ++i, phi -= delta, phi0 -= delta0) {
sphereStream.point(atan2(sr * cos(phi0), cr) * degrees, asin(sr * sin(phi0)) * degrees);
if (phi < -90) {
sphereStream.point(-90, -180 - phi - epsilon$$1);
sphereStream.point(-90, -180 - phi + epsilon$$1);
} else {
sphereStream.point(90, phi + epsilon$$1);
sphereStream.point(90, phi - epsilon$$1);
}
}
sphereStream.lineEnd(), sphereStream.polygonEnd();
};
return rotateStream;
};
return p
.scale(87.8076)
.center([0, 17.1875])
.clipAngle(180 - 1e-3);
};
function mollweideBromleyTheta(cp, phi) {
var cpsinPhi = cp * sin(phi), i = 30, delta;
do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));
while (abs(delta) > epsilon && --i > 0);
return phi / 2;
}
function mollweideBromleyRaw(cx, cy, cp) {
function forward(lambda, phi) {
return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];
}
forward.invert = function(x, y) {
return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];
};
return forward;
}
var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);
var mollweide = function() {
return d3Geo.geoProjection(mollweideRaw)
.scale(169.529);
};
var k = 2.00276;
var w = 1.11072;
function boggsRaw(lambda, phi) {
var theta = mollweideBromleyTheta(pi, phi);
return [k * lambda / (1 / cos(phi) + w / cos(theta)), (phi + sqrt2 * sin(theta)) / k];
}
boggsRaw.invert = function(x, y) {
var ky = k * y, theta = y < 0 ? -quarterPi : quarterPi, i = 25, delta, phi;
do {
phi = ky - sqrt2 * sin(theta);
theta -= delta = (sin(2 * theta) + 2 * theta - pi * sin(phi)) / (2 * cos(2 * theta) + 2 + pi * cos(phi) * sqrt2 * cos(theta));
} while (abs(delta) > epsilon && --i > 0);
phi = ky - sqrt2 * sin(theta);
return [x * (1 / cos(phi) + w / cos(theta)) / k, phi];
};
var boggs = function() {
return d3Geo.geoProjection(boggsRaw)
.scale(160.857);
};
var parallel1 = function(projectAt) {
var phi0 = 0,
m = d3Geo.geoProjectionMutator(projectAt),
p = m(phi0);
p.parallel = function(_) {
return arguments.length ? m(phi0 = _ * radians) : phi0 * degrees;
};
return p;
};
function sinusoidalRaw(lambda, phi) {
return [lambda * cos(phi), phi];
}
sinusoidalRaw.invert = function(x, y) {
return [x / cos(y), y];
};
var sinusoidal = function() {
return d3Geo.geoProjection(sinusoidalRaw)
.scale(152.63);
};
function bonneRaw(phi0) {
if (!phi0) return sinusoidalRaw;
var cotPhi0 = 1 / tan(phi0);
function forward(lambda, phi) {
var rho = cotPhi0 + phi0 - phi,
e = rho ? lambda * cos(phi) / rho : rho;
return [rho * sin(e), cotPhi0 - rho * cos(e)];
}
forward.invert = function(x, y) {
var rho = sqrt(x * x + (y = cotPhi0 - y) * y),
phi = cotPhi0 + phi0 - rho;
return [rho / cos(phi) * atan2(x, y), phi];
};
return forward;
}
var bonne = function() {
return parallel1(bonneRaw)
.scale(123.082)
.center([0, 26.1441])
.parallel(45);
};
function bottomleyRaw(sinPsi) {
function forward(lambda, phi) {
var rho = halfPi - phi,
eta = rho ? lambda * sinPsi * sin(rho) / rho : rho;
return [rho * sin(eta) / sinPsi, halfPi - rho * cos(eta)];
}
forward.invert = function(x, y) {
var x1 = x * sinPsi,
y1 = halfPi - y,
rho = sqrt(x1 * x1 + y1 * y1),
eta = atan2(x1, y1);
return [(rho ? rho / sin(rho) : 1) * eta / sinPsi, halfPi - rho];
};
return forward;
}
var bottomley = function() {
var sinPsi = 0.5,
m = d3Geo.geoProjectionMutator(bottomleyRaw),
p = m(sinPsi);
p.fraction = function(_) {
return arguments.length ? m(sinPsi = +_) : sinPsi;
};
return p
.scale(158.837);
};
var bromleyRaw = mollweideBromleyRaw(1, 4 / pi, pi);
var bromley = function() {
return d3Geo.geoProjection(bromleyRaw)
.scale(152.63);
};
// Azimuthal distance.
function distance(dPhi, c1, s1, c2, s2, dLambda) {
var cosdLambda = cos(dLambda), r;
if (abs(dPhi) > 1 || abs(dLambda) > 1) {
r = acos(s1 * s2 + c1 * c2 * cosdLambda);
} else {
var sindPhi = sin(dPhi / 2), sindLambda = sin(dLambda / 2);
r = 2 * asin(sqrt(sindPhi * sindPhi + c1 * c2 * sindLambda * sindLambda));
}
return abs(r) > epsilon ? [r, atan2(c2 * sin(dLambda), c1 * s2 - s1 * c2 * cosdLambda)] : [0, 0];
}
// Angle opposite a, and contained between sides of lengths b and c.
function angle(b, c, a) {
return acos((b * b + c * c - a * a) / (2 * b * c));
}
// Normalize longitude.
function longitude(lambda) {
return lambda - 2 * pi * floor((lambda + pi) / (2 * pi));
}
function chamberlinRaw(p0, p1, p2) {
var points = [
[p0[0], p0[1], sin(p0[1]), cos(p0[1])],
[p1[0], p1[1], sin(p1[1]), cos(p1[1])],
[p2[0], p2[1], sin(p2[1]), cos(p2[1])]
];
for (var a = points[2], b, i = 0; i < 3; ++i, a = b) {
b = points[i];
a.v = distance(b[1] - a[1], a[3], a[2], b[3], b[2], b[0] - a[0]);
a.point = [0, 0];
}
var beta0 = angle(points[0].v[0], points[2].v[0], points[1].v[0]),
beta1 = angle(points[0].v[0], points[1].v[0], points[2].v[0]),
beta2 = pi - beta0;
points[2].point[1] = 0;
points[0].point[0] = -(points[1].point[0] = points[0].v[0] / 2);
var mean = [
points[2].point[0] = points[0].point[0] + points[2].v[0] * cos(beta0),
2 * (points[0].point[1] = points[1].point[1] = points[2].v[0] * sin(beta0))
];
function forward(lambda, phi) {
var sinPhi = sin(phi),
cosPhi = cos(phi),
v = new Array(3), i;
// Compute distance and azimuth from control points.
for (i = 0; i < 3; ++i) {
var p = points[i];
v[i] = distance(phi - p[1], p[3], p[2], cosPhi, sinPhi, lambda - p[0]);
if (!v[i][0]) return p.point;
v[i][1] = longitude(v[i][1] - p.v[1]);
}
// Arithmetic mean of interception points.
var point = mean.slice();
for (i = 0; i < 3; ++i) {
var j = i == 2 ? 0 : i + 1;
var a = angle(points[i].v[0], v[i][0], v[j][0]);
if (v[i][1] < 0) a = -a;
if (!i) {
point[0] += v[i][0] * cos(a);
point[1] -= v[i][0] * sin(a);
} else if (i == 1) {
a = beta1 - a;
point[0] -= v[i][0] * cos(a);
point[1] -= v[i][0] * sin(a);
} else {
a = beta2 - a;
point[0] += v[i][0] * cos(a);
point[1] += v[i][0] * sin(a);
}
}
point[0] /= 3, point[1] /= 3;
return point;
}
return forward;
}
function pointRadians(p) {
return p[0] *= radians, p[1] *= radians, p;
}
function chamberlinAfrica() {
return chamberlin([0, 22], [45, 22], [22.5, -22])
.scale(380)
.center([22.5, 2]);
}
function chamberlin(p0, p1, p2) { // TODO order matters!
var c = d3Geo.geoCentroid({type: "MultiPoint", coordinates: [p0, p1, p2]}),
R = [-c[0], -c[1]],
r = d3Geo.geoRotation(R),
p = d3Geo.geoProjection(chamberlinRaw(pointRadians(r(p0)), pointRadians(r(p1)), pointRadians(r(p2)))).rotate(R),
center = p.center;
delete p.rotate;
p.center = function(_) {
return arguments.length ? center(r(_)) : r.invert(center());
};
return p
.clipAngle(90);
}
function collignonRaw(lambda, phi) {
var alpha = sqrt(1 - sin(phi));
return [(2 / sqrtPi) * lambda * alpha, sqrtPi * (1 - alpha)];
}
collignonRaw.invert = function(x, y) {
var lambda = (lambda = y / sqrtPi - 1) * lambda;
return [lambda > 0 ? x * sqrt(pi / lambda) / 2 : 0, asin(1 - lambda)];
};
var collignon = function() {
return d3Geo.geoProjection(collignonRaw)
.scale(95.6464)
.center([0, 30]);
};
function craigRaw(phi0) {
var tanPhi0 = tan(phi0);
function forward(lambda, phi) {
return [lambda, (lambda ? lambda / sin(lambda) : 1) * (sin(phi) * cos(lambda) - tanPhi0 * cos(phi))];
}
forward.invert = tanPhi0 ? function(x, y) {
if (x) y *= sin(x) / x;
var cosLambda = cos(x);
return [x, 2 * atan2(sqrt(cosLambda * cosLambda + tanPhi0 * tanPhi0 - y * y) - cosLambda, tanPhi0 - y)];
} : function(x, y) {
return [x, asin(x ? y * tan(x) / x : y)];
};
return forward;
}
var craig = function() {
return parallel1(craigRaw)
.scale(249.828)
.clipAngle(90);
};
var sqrt3 = sqrt(3);
function crasterRaw(lambda, phi) {
return [sqrt3 * lambda * (2 * cos(2 * phi / 3) - 1) / sqrtPi, sqrt3 * sqrtPi * sin(phi / 3)];
}
crasterRaw.invert = function(x, y) {
var phi = 3 * asin(y / (sqrt3 * sqrtPi));
return [sqrtPi * x / (sqrt3 * (2 * cos(2 * phi / 3) - 1)), phi];
};
var craster = function() {
return d3Geo.geoProjection(crasterRaw)
.scale(156.19);
};
function cylindricalEqualAreaRaw(phi0) {
var cosPhi0 = cos(phi0);
function forward(lambda, phi) {
return [lambda * cosPhi0, sin(phi) / cosPhi0];
}
forward.invert = function(x, y) {
return [x / cosPhi0, asin(y * cosPhi0)];
};
return forward;
}
var cylindricalEqualArea = function() {
return parallel1(cylindricalEqualAreaRaw)
.parallel(38.58) // acos(sqrt(width / height / pi)) * radians
.scale(195.044); // width / (sqrt(width / height / pi) * 2 * pi)
};
function cylindricalStereographicRaw(phi0) {
var cosPhi0 = cos(phi0);
function forward(lambda, phi) {
return [lambda * cosPhi0, (1 + cosPhi0) * tan(phi / 2)];
}
forward.invert = function(x, y) {
return [x / cosPhi0, atan(y / (1 + cosPhi0)) * 2];
};
return forward;
}
var cylindricalStereographic = function() {
return parallel1(cylindricalStereographicRaw)
.scale(124.75);
};
function eckert1Raw(lambda, phi) {
var alpha = sqrt(8 / (3 * pi));
return [
alpha * lambda * (1 - abs(phi) / pi),
alpha * phi
];
}
eckert1Raw.invert = function(x, y) {
var alpha = sqrt(8 / (3 * pi)),
phi = y / alpha;
return [
x / (alpha * (1 - abs(phi) / pi)),
phi
];
};
var eckert1 = function() {
return d3Geo.geoProjection(eckert1Raw)
.scale(165.664);
};
function eckert2Raw(lambda, phi) {
var alpha = sqrt(4 - 3 * sin(abs(phi)));
return [
2 / sqrt(6 * pi) * lambda * alpha,
sign(phi) * sqrt(2 * pi / 3) * (2 - alpha)
];
}
eckert2Raw.invert = function(x, y) {
var alpha = 2 - abs(y) / sqrt(2 * pi / 3);
return [
x * sqrt(6 * pi) / (2 * alpha),
sign(y) * asin((4 - alpha * alpha) / 3)
];
};
var eckert2 = function() {
return d3Geo.geoProjection(eckert2Raw)
.scale(165.664);
};
function eckert3Raw(lambda, phi) {
var k = sqrt(pi * (4 + pi));
return [
2 / k * lambda * (1 + sqrt(1 - 4 * phi * phi / (pi * pi))),
4 / k * phi
];
}
eckert3Raw.invert = function(x, y) {
var k = sqrt(pi * (4 + pi)) / 2;
return [
x * k / (1 + sqrt(1 - y * y * (4 + pi) / (4 * pi))),
y * k / 2
];
};
var eckert3 = function() {
return d3Geo.geoProjection(eckert3Raw)
.scale(180.739);
};
function eckert4Raw(lambda, phi) {
var k = (2 + halfPi) * sin(phi);
phi /= 2;
for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; i++) {
var cosPhi = cos(phi);
phi -= delta = (phi + sin(phi) * (cosPhi + 2) - k) / (2 * cosPhi * (1 + cosPhi));
}
return [
2 / sqrt(pi * (4 + pi)) * lambda * (1 + cos(phi)),
2 * sqrt(pi / (4 + pi)) * sin(phi)
];
}
eckert4Raw.invert = function(x, y) {
var A = y * sqrt((4 + pi) / pi) / 2,
k = asin(A),
c = cos(k);
return [
x / (2 / sqrt(pi * (4 + pi)) * (1 + c)),
asin((k + A * (c + 2)) / (2 + halfPi))
];
};
var eckert4 = function() {
return d3Geo.geoProjection(eckert4Raw)
.scale(180.739);
};
function eckert5Raw(lambda, phi) {
return [
lambda * (1 + cos(phi)) / sqrt(2 + pi),
2 * phi / sqrt(2 + pi)
];
}
eckert5Raw.invert = function(x, y) {
var k = sqrt(2 + pi),
phi = y * k / 2;
return [
k * x / (1 + cos(phi)),
phi
];
};
var eckert5 = function() {
return d3Geo.geoProjection(eckert5Raw)
.scale(173.044);
};
function eckert6Raw(lambda, phi) {
var k = (1 + halfPi) * sin(phi);
for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; i++) {
phi -= delta = (phi + sin(phi) - k) / (1 + cos(phi));
}
k = sqrt(2 + pi);
return [
lambda * (1 + cos(phi)) / k,
2 * phi / k
];
}
eckert6Raw.invert = function(x, y) {
var j = 1 + halfPi,
k = sqrt(j / 2);
return [
x * 2 * k / (1 + cos(y *= k)),
asin((y + sin(y)) / j)
];
};
var eckert6 = function() {
return d3Geo.geoProjection(eckert6Raw)
.scale(173.044);
};
var eisenlohrK = 3 + 2 * sqrt2;
function eisenlohrRaw(lambda, phi) {
var s0 = sin(lambda /= 2),
c0 = cos(lambda),
k = sqrt(cos(phi)),
c1 = cos(phi /= 2),
t = sin(phi) / (c1 + sqrt2 * c0 * k),
c = sqrt(2 / (1 + t * t)),
v = sqrt((sqrt2 * c1 + (c0 + s0) * k) / (sqrt2 * c1 + (c0 - s0) * k));
return [
eisenlohrK * (c * (v - 1 / v) - 2 * log(v)),
eisenlohrK * (c * t * (v + 1 / v) - 2 * atan(t))
];
}
eisenlohrRaw.invert = function(x, y) {
if (!(p = augustRaw.invert(x / 1.2, y * 1.065))) return null;
var lambda = p[0], phi = p[1], i = 20, p;
x /= eisenlohrK, y /= eisenlohrK;
do {
var _0 = lambda / 2,
_1 = phi / 2,
s0 = sin(_0),
c0 = cos(_0),
s1 = sin(_1),
c1 = cos(_1),
cos1 = cos(phi),
k = sqrt(cos1),
t = s1 / (c1 + sqrt2 * c0 * k),
t2 = t * t,
c = sqrt(2 / (1 + t2)),
v0 = (sqrt2 * c1 + (c0 + s0) * k),
v1 = (sqrt2 * c1 + (c0 - s0) * k),
v2 = v0 / v1,
v = sqrt(v2),
vm1v = v - 1 / v,
vp1v = v + 1 / v,
fx = c * vm1v - 2 * log(v) - x,
fy = c * t * vp1v - 2 * atan(t) - y,
deltatDeltaLambda = s1 && sqrt1_2 * k * s0 * t2 / s1,
deltatDeltaPhi = (sqrt2 * c0 * c1 + k) / (2 * (c1 + sqrt2 * c0 * k) * (c1 + sqrt2 * c0 * k) * k),
deltacDeltat = -0.5 * t * c * c * c,
deltacDeltaLambda = deltacDeltat * deltatDeltaLambda,
deltacDeltaPhi = deltacDeltat * deltatDeltaPhi,
A = (A = 2 * c1 + sqrt2 * k * (c0 - s0)) * A * v,
deltavDeltaLambda = (sqrt2 * c0 * c1 * k + cos1) / A,
deltavDeltaPhi = -(sqrt2 * s0 * s1) / (k * A),
deltaxDeltaLambda = vm1v * deltacDeltaLambda - 2 * deltavDeltaLambda / v + c * (deltavDeltaLambda + deltavDeltaLambda / v2),
deltaxDeltaPhi = vm1v * deltacDeltaPhi - 2 * deltavDeltaPhi / v + c * (deltavDeltaPhi + deltavDeltaPhi / v2),
deltayDeltaLambda = t * vp1v * deltacDeltaLambda - 2 * deltatDeltaLambda / (1 + t2) + c * vp1v * deltatDeltaLambda + c * t * (deltavDeltaLambda - deltavDeltaLambda / v2),
deltayDeltaPhi = t * vp1v * deltacDeltaPhi - 2 * deltatDeltaPhi / (1 + t2) + c * vp1v * deltatDeltaPhi + c * t * (deltavDeltaPhi - deltavDeltaPhi / v2),
denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda;
if (!denominator) break;
var deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator,
deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;
lambda -= deltaLambda;
phi = max(-halfPi, min(halfPi, phi - deltaPhi));
} while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);
return abs(abs(phi) - halfPi) < epsilon ? [0, phi] : i && [lambda, phi];
};
var eisenlohr = function() {
return d3Geo.geoProjection(eisenlohrRaw)
.scale(62.5271);
};
var faheyK = cos(35 * radians);
function faheyRaw(lambda, phi) {
var t = tan(phi / 2);
return [lambda * faheyK * sqrt(1 - t * t), (1 + faheyK) * t];
}
faheyRaw.invert = function(x, y) {
var t = y / (1 + faheyK);
return [x && x / (faheyK * sqrt(1 - t * t)), 2 * atan(t)];
};
var fahey = function() {
return d3Geo.geoProjection(faheyRaw)
.scale(137.152);
};
function foucautRaw(lambda, phi) {
var k = phi / 2, cosk = cos(k);
return [ 2 * lambda / sqrtPi * cos(phi) * cosk * cosk, sqrtPi * tan(k)];
}
foucautRaw.invert = function(x, y) {
var k = atan(y / sqrtPi), cosk = cos(k), phi = 2 * k;
return [x * sqrtPi / 2 / (cos(phi) * cosk * cosk), phi];
};
var foucaut = function() {
return d3Geo.geoProjection(foucautRaw)
.scale(135.264);
};
function gilbertForward(point) {
return [point[0] / 2, asin(tan(point[1] / 2 * radians)) * degrees];
}
function gilbertInvert(point) {
return [point[0] * 2, 2 * atan(sin(point[1] * radians)) * degrees];
}
var gilbert = function(projectionType) {
if (projectionType == null) projectionType = d3Geo.geoOrthographic;
var projection = projectionType(),
equirectangular = d3Geo.geoEquirectangular().scale(degrees).precision(0).clipAngle(null).translate([0, 0]); // antimeridian cutting
function gilbert(point) {
return projection(gilbertForward(point));
}
if (projection.invert) gilbert.invert = function(point) {
return gilbertInvert(projection.invert(point));
};
gilbert.stream = function(stream) {
var s1 = projection.stream(stream), s0 = equirectangular.stream({
point: function(lambda, phi) { s1.point(lambda / 2, asin(tan(-phi / 2 * radians)) * degrees); },
lineStart: function() { s1.lineStart(); },
lineEnd: function() { s1.lineEnd(); },
polygonStart: function() { s1.polygonStart(); },
polygonEnd: function() { s1.polygonEnd(); }
});
s0.sphere = s1.sphere;
return s0;
};
function property(name) {
gilbert[name] = function(_) {
return arguments.length ? (projection[name](_), gilbert) : projection[name]();
};
}
gilbert.rotate = function(_) {
return arguments.length ? (equirectangular.rotate(_), gilbert) : equirectangular.rotate();
};
gilbert.center = function(_) {
return arguments.length ? (projection.center(gilbertForward(_)), gilbert) : gilbertInvert(projection.center());
};
property("clipAngle");
property("clipExtent");
property("scale");
property("translate");
property("precision");
return gilbert
.scale(249.5);
};
function gingeryRaw(rho, n) {
var k = 2 * pi / n,
rho2 = rho * rho;
function forward(lambda, phi) {
var p = d3Geo.geoAzimuthalEquidistantRaw(lambda, phi),
x = p[0],
y = p[1],
r2 = x * x + y * y;
if (r2 > rho2) {
var r = sqrt(r2),
theta = atan2(y, x),
theta0 = k * round(theta / k),
alpha = theta - theta0,
rhoCosAlpha = rho * cos(alpha),
k_ = (rho * sin(alpha) - alpha * sin(rhoCosAlpha)) / (halfPi - rhoCosAlpha),
s_ = gingeryLength(alpha, k_),
e = (pi - rho) / gingeryIntegrate(s_, rhoCosAlpha, pi);
x = r;
var i = 50, delta;
do {
x -= delta = (rho + gingeryIntegrate(s_, rhoCosAlpha, x) * e - r) / (s_(x) * e);
} while (abs(delta) > epsilon && --i > 0);
y = alpha * sin(x);
if (x < halfPi) y -= k_ * (x - halfPi);
var s = sin(theta0),
c = cos(theta0);
p[0] = x * c - y * s;
p[1] = x * s + y * c;
}
return p;
}
forward.invert = function(x, y) {
var r2 = x * x + y * y;
if (r2 > rho2) {
var r = sqrt(r2),
theta = atan2(y, x),
theta0 = k * round(theta / k),
dTheta = theta - theta0;
x = r * cos(dTheta);
y = r * sin(dTheta);
var x_halfPi = x - halfPi,
sinx = sin(x),
alpha = y / sinx,
delta = x < halfPi ? Infinity : 0,
i = 10;
while (true) {
var rhosinAlpha = rho * sin(alpha),
rhoCosAlpha = rho * cos(alpha),
sinRhoCosAlpha = sin(rhoCosAlpha),
halfPi_RhoCosAlpha = halfPi - rhoCosAlpha,
k_ = (rhosinAlpha - alpha * sinRhoCosAlpha) / halfPi_RhoCosAlpha,
s_ = gingeryLength(alpha, k_);
if (abs(delta) < epsilon2 || !--i) break;
alpha -= delta = (alpha * sinx - k_ * x_halfPi - y) / (
sinx - x_halfPi * 2 * (
halfPi_RhoCosAlpha * (rhoCosAlpha + alpha * rhosinAlpha * cos(rhoCosAlpha) - sinRhoCosAlpha) -
rhosinAlpha * (rhosinAlpha - alpha * sinRhoCosAlpha)
) / (halfPi_RhoCosAlpha * halfPi_RhoCosAlpha));
}
r = rho + gingeryIntegrate(s_, rhoCosAlpha, x) * (pi - rho) / gingeryIntegrate(s_, rhoCosAlpha, pi);
theta = theta0 + alpha;
x = r * cos(theta);
y = r * sin(theta);
}
return d3Geo.geoAzimuthalEquidistantRaw.invert(x, y);
};
return forward;
}
function gingeryLength(alpha, k) {
return function(x) {
var y_ = alpha * cos(x);
if (x < halfPi) y_ -= k;
return sqrt(1 + y_ * y_);
};
}
// Numerical integration: trapezoidal rule.
function gingeryIntegrate(f, a, b) {
var n = 50,
h = (b - a) / n,
s = f(a) + f(b);
for (var i = 1, x = a; i < n; ++i) s += 2 * f(x += h);
return s * 0.5 * h;
}
var gingery = function() {
var n = 6,
rho = 30 * radians,
cRho = cos(rho),
sRho = sin(rho),
m = d3Geo.geoProjectionMutator(gingeryRaw),
p = m(rho, n),
stream_ = p.stream,
epsilon$$1 = 1e-2,
cr = -cos(epsilon$$1 * radians),
sr = sin(epsilon$$1 * radians);
p.radius = function(_) {
if (!arguments.length) return rho * degrees;
cRho = cos(rho = _ * radians);
sRho = sin(rho);
return m(rho, n);
};
p.lobes = function(_) {
if (!arguments.length) return n;
return m(rho, n = +_);
};
p.stream = function(stream) {
var rotate = p.rotate(),
rotateStream = stream_(stream),
sphereStream = (p.rotate([0, 0]), stream_(stream));
p.rotate(rotate);
rotateStream.sphere = function() {
sphereStream.polygonStart(), sphereStream.lineStart();
for (var i = 0, delta = 2 * pi / n, phi = 0; i < n; ++i, phi -= delta) {
sphereStream.point(atan2(sr * cos(phi), cr) * degrees, asin(sr * sin(phi)) * degrees);
sphereStream.point(atan2(sRho * cos(phi - delta / 2), cRho) * degrees, asin(sRho * sin(phi - delta / 2)) * degrees);
}
sphereStream.lineEnd(), sphereStream.polygonEnd();
};
return rotateStream;
};
return p
.rotate([90, -40])
.scale(91.7095)
.clipAngle(180 - 1e-3);
};
var ginzburgPolyconicRaw = function(a, b, c, d, e, f, g, h) {
if (arguments.length < 8) h = 0;
function forward(lambda, phi) {
if (!phi) return [a * lambda / pi, 0];
var phi2 = phi * phi,
xB = a + phi2 * (b + phi2 * (c + phi2 * d)),
yB = phi * (e - 1 + phi2 * (f - h + phi2 * g)),
m = (xB * xB + yB * yB) / (2 * yB),
alpha = lambda * asin(xB / m) / pi;
return [m * sin(alpha), phi * (1 + phi2 * h) + m * (1 - cos(alpha))];
}
forward.invert = function(x, y) {
var lambda = pi * x / a,
phi = y,
deltaLambda, deltaPhi, i = 50;
do {
var phi2 = phi * phi,
xB = a + phi2 * (b + phi2 * (c + phi2 * d)),
yB = phi * (e - 1 + phi2 * (f - h + phi2 * g)),
p = xB * xB + yB * yB,
q = 2 * yB,
m = p / q,
m2 = m * m,
dAlphadLambda = asin(xB / m) / pi,
alpha = lambda * dAlphadLambda,
xB2 = xB * xB,
dxBdPhi = (2 * b + phi2 * (4 * c + phi2 * 6 * d)) * phi,
dyBdPhi = e + phi2 * (3 * f + phi2 * 5 * g),
dpdPhi = 2 * (xB * dxBdPhi + yB * (dyBdPhi - 1)),
dqdPhi = 2 * (dyBdPhi - 1),
dmdPhi = (dpdPhi * q - p * dqdPhi) / (q * q),
cosAlpha = cos(alpha),
sinAlpha = sin(alpha),
mcosAlpha = m * cosAlpha,
msinAlpha = m * sinAlpha,
dAlphadPhi = ((lambda / pi) * (1 / sqrt(1 - xB2 / m2)) * (dxBdPhi * m - xB * dmdPhi)) / m2,
fx = msinAlpha - x,
fy = phi * (1 + phi2 * h) + m - mcosAlpha - y,
deltaxDeltaPhi = dmdPhi * sinAlpha + mcosAlpha * dAlphadPhi,
deltaxDeltaLambda = mcosAlpha * dAlphadLambda,
deltayDeltaPhi = 1 + dmdPhi - (dmdPhi * cosAlpha - msinAlpha * dAlphadPhi),
deltayDeltaLambda = msinAlpha * dAlphadLambda,
denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda;
if (!denominator) break;
lambda -= deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator;
phi -= deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;
} while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);
return [lambda, phi];
};
return forward;
};
var ginzburg4Raw = ginzburgPolyconicRaw(2.8284, -1.6988, 0.75432, -0.18071, 1.76003, -0.38914, 0.042555);
var ginzburg4 = function() {
return d3Geo.geoProjection(ginzburg4Raw)
.scale(149.995);
};
var ginzburg5Raw = ginzburgPolyconicRaw(2.583819, -0.835827, 0.170354, -0.038094, 1.543313, -0.411435,0.082742);
var ginzburg5 = function() {
return d3Geo.geoProjection(ginzburg5Raw)
.scale(153.93);
};
var ginzburg6Raw = ginzburgPolyconicRaw(5 / 6 * pi, -0.62636, -0.0344, 0, 1.3493, -0.05524, 0, 0.045);
var ginzburg6 = function() {
return d3Geo.geoProjection(ginzburg6Raw)
.scale(130.945);
};
function ginzburg8Raw(lambda, phi) {
var lambda2 = lambda * lambda,
phi2 = phi * phi;
return [
lambda * (1 - 0.162388 * phi2) * (0.87 - 0.000952426 * lambda2 * lambda2),
phi * (1 + phi2 / 12)
];
}
ginzburg8Raw.invert = function(x, y) {
var lambda = x,
phi = y,
i = 50, delta;
do {
var phi2 = phi * phi;
phi -= delta = (phi * (1 + phi2 / 12) - y) / (1 + phi2 / 4);
} while (abs(delta) > epsilon && --i > 0);
i = 50;
x /= 1 -0.162388 * phi2;
do {
var lambda4 = (lambda4 = lambda * lambda) * lambda4;
lambda -= delta = (lambda * (0.87 - 0.000952426 * lambda4) - x) / (0.87 - 0.00476213 * lambda4);
} while (abs(delta) > epsilon && --i > 0);
return [lambda, phi];
};
var ginzburg8 = function() {
return d3Geo.geoProjection(ginzburg8Raw)
.scale(131.747);
};
var ginzburg9Raw = ginzburgPolyconicRaw(2.6516, -0.76534, 0.19123, -0.047094, 1.36289, -0.13965,0.031762);
var ginzburg9 = function() {
return d3Geo.geoProjection(ginzburg9Raw)
.scale(131.087);
};
var squareRaw = function(project) {
var dx = project(halfPi, 0)[0] - project(-halfPi, 0)[0];
function projectSquare(lambda, phi) {
var s = lambda > 0 ? -0.5 : 0.5,
point = project(lambda + s * pi, phi);
point[0] -= s * dx;
return point;
}
if (project.invert) projectSquare.invert = function(x, y) {
var s = x > 0 ? -0.5 : 0.5,
location = project.invert(x + s * dx, y),
lambda = location[0] - s * pi;
if (lambda < -pi) lambda += 2 * pi;
else if (lambda > pi) lambda -= 2 * pi;
location[0] = lambda;
return location;
};
return projectSquare;
};
function gringortenRaw(lambda, phi) {
var sLambda = sign(lambda),
sPhi = sign(phi),
cosPhi = cos(phi),
x = cos(lambda) * cosPhi,
y = sin(lambda) * cosPhi,
z = sin(sPhi * phi);
lambda = abs(atan2(y, z));
phi = asin(x);
if (abs(lambda - halfPi) > epsilon) lambda %= halfPi;
var point = gringortenHexadecant(lambda > pi / 4 ? halfPi - lambda : lambda, phi);
if (lambda > pi / 4) z = point[0], point[0] = -point[1], point[1] = -z;
return (point[0] *= sLambda, point[1] *= -sPhi, point);
}
gringortenRaw.invert = function(x, y) {
if (abs(x) > 1) x = sign(x) * 2 - x;
if (abs(y) > 1) y = sign(y) * 2 - y;
var sx = sign(x),
sy = sign(y),
x0 = -sx * x,
y0 = -sy * y,
t = y0 / x0 < 1,
p = gringortenHexadecantInvert(t ? y0 : x0, t ? x0 : y0),
lambda = p[0],
phi = p[1],
cosPhi = cos(phi);
if (t) lambda = -halfPi - lambda;
return [sx * (atan2(sin(lambda) * cosPhi, -sin(phi)) + pi), sy * asin(cos(lambda) * cosPhi)];
};
function gringortenHexadecant(lambda, phi) {
if (phi === halfPi) return [0, 0];
var sinPhi = sin(phi),
r = sinPhi * sinPhi,
r2 = r * r,
j = 1 + r2,
k = 1 + 3 * r2,
q = 1 - r2,
z = asin(1 / sqrt(j)),
v = q + r * j * z,
p2 = (1 - sinPhi) / v,
p = sqrt(p2),
a2 = p2 * j,
a = sqrt(a2),
h = p * q,
x,
i;
if (lambda === 0) return [0, -(h + r * a)];
var cosPhi = cos(phi),
secPhi = 1 / cosPhi,
drdPhi = 2 * sinPhi * cosPhi,
dvdPhi = (-3 * r + z * k) * drdPhi,
dp2dPhi = (-v * cosPhi - (1 - sinPhi) * dvdPhi) / (v * v),
dpdPhi = (0.5 * dp2dPhi) / p,
dhdPhi = q * dpdPhi - 2 * r * p * drdPhi,
dra2dPhi = r * j * dp2dPhi + p2 * k * drdPhi,
mu = -secPhi * drdPhi,
nu = -secPhi * dra2dPhi,
zeta = -2 * secPhi * dhdPhi,
lambda1 = 4 * lambda / pi,
delta;
// Slower but accurate bisection method.
if (lambda > 0.222 * pi || phi < pi / 4 && lambda > 0.175 * pi) {
x = (h + r * sqrt(a2 * (1 + r2) - h * h)) / (1 + r2);
if (lambda > pi / 4) return [x, x];
var x1 = x, x0 = 0.5 * x;
x = 0.5 * (x0 + x1), i = 50;
do {
var g = sqrt(a2 - x * x),
f = (x * (zeta + mu * g) + nu * asin(x / a)) - lambda1;
if (!f) break;
if (f < 0) x0 = x;
else x1 = x;
x = 0.5 * (x0 + x1);
} while (abs(x1 - x0) > epsilon && --i > 0);
}
// Newton-Raphson.
else {
x = epsilon, i = 25;
do {
var x2 = x * x,
g2 = sqrt(a2 - x2),
zetaMug = zeta + mu * g2,
f2 = x * zetaMug + nu * asin(x / a) - lambda1,
df = zetaMug + (nu - mu * x2) / g2;
x -= delta = g2 ? f2 / df : 0;
} while (abs(delta) > epsilon && --i > 0);
}
return [x, -h - r * sqrt(a2 - x * x)];
}
function gringortenHexadecantInvert(x, y) {
var x0 = 0,
x1 = 1,
r = 0.5,
i = 50;
while (true) {
var r2 = r * r,
sinPhi = sqrt(r),
z = asin(1 / sqrt(1 + r2)),
v = (1 - r2) + r * (1 + r2) * z,
p2 = (1 - sinPhi) / v,
p = sqrt(p2),
a2 = p2 * (1 + r2),
h = p * (1 - r2),
g2 = a2 - x * x,
g = sqrt(g2),
y0 = y + h + r * g;
if (abs(x1 - x0) < epsilon2 || --i === 0 || y0 === 0) break;
if (y0 > 0) x0 = r;
else x1 = r;
r = 0.5 * (x0 + x1);
}
if (!i) return null;
var phi = asin(sinPhi),
cosPhi = cos(phi),
secPhi = 1 / cosPhi,
drdPhi = 2 * sinPhi * cosPhi,
dvdPhi = (-3 * r + z * (1 + 3 * r2)) * drdPhi,
dp2dPhi = (-v * cosPhi - (1 - sinPhi) * dvdPhi) / (v * v),
dpdPhi = 0.5 * dp2dPhi / p,
dhdPhi = (1 - r2) * dpdPhi - 2 * r * p * drdPhi,
zeta = -2 * secPhi * dhdPhi,
mu = -secPhi * drdPhi,
nu = -secPhi * (r * (1 + r2) * dp2dPhi + p2 * (1 + 3 * r2) * drdPhi);
return [pi / 4 * (x * (zeta + mu * g) + nu * asin(x / sqrt(a2))), phi];
}
var gringorten = function() {
return d3Geo.geoProjection(squareRaw(gringortenRaw))
.scale(239.75);
};
// Returns [sn, cn, dn](u + iv|m).
function ellipticJi(u, v, m) {
var a, b, c;
if (!u) {
b = ellipticJ(v, 1 - m);
return [
[0, b[0] / b[1]],
[1 / b[1], 0],
[b[2] / b[1], 0]
];
}
a = ellipticJ(u, m);
if (!v) return [[a[0], 0], [a[1], 0], [a[2], 0]];
b = ellipticJ(v, 1 - m);
c = b[1] * b[1] + m * a[0] * a[0] * b[0] * b[0];
return [
[a[0] * b[2] / c, a[1] * a[2] * b[0] * b[1] / c],
[a[1] * b[1] / c, -a[0] * a[2] * b[0] * b[2] / c],
[a[2] * b[1] * b[2] / c, -m * a[0] * a[1] * b[0] / c]
];
}
// Returns [sn, cn, dn, ph](u|m).
function ellipticJ(u, m) {
var ai, b, phi, t, twon;
if (m < epsilon) {
t = sin(u);
b = cos(u);
ai = m * (u - t * b) / 4;
return [
t - ai * b,
b + ai * t,
1 - m * t * t / 2,
u - ai
];
}
if (m >= 1 - epsilon) {
ai = (1 - m) / 4;
b = cosh(u);
t = tanh(u);
phi = 1 / b;
twon = b * sinh(u);
return [
t + ai * (twon - u) / (b * b),
phi - ai * t * phi * (twon - u),
phi + ai * t * phi * (twon + u),
2 * atan(exp(u)) - halfPi + ai * (twon - u) / b
];
}
var a = [1, 0, 0, 0, 0, 0, 0, 0, 0],
c = [sqrt(m), 0, 0, 0, 0, 0, 0, 0, 0],
i = 0;
b = sqrt(1 - m);
twon = 1;
while (abs(c[i] / a[i]) > epsilon && i < 8) {
ai = a[i++];
c[i] = (ai - b) / 2;
a[i] = (ai + b) / 2;
b = sqrt(ai * b);
twon *= 2;
}
phi = twon * a[i] * u;
do {
t = c[i] * sin(b = phi) / a[i];
phi = (asin(t) + phi) / 2;
} while (--i);
return [sin(phi), t = cos(phi), t / cos(phi - b), phi];
}
// Calculate F(phi+iPsi|m).
// See Abramowitz and Stegun, 17.4.11.
function ellipticFi(phi, psi, m) {
var r = abs(phi),
i = abs(psi),
sinhPsi = sinh(i);
if (r) {
var cscPhi = 1 / sin(r),
cotPhi2 = 1 / (tan(r) * tan(r)),
b = -(cotPhi2 + m * (sinhPsi * sinhPsi * cscPhi * cscPhi) - 1 + m),
c = (m - 1) * cotPhi2,
cotLambda2 = (-b + sqrt(b * b - 4 * c)) / 2;
return [
ellipticF(atan(1 / sqrt(cotLambda2)), m) * sign(phi),
ellipticF(atan(sqrt((cotLambda2 / cotPhi2 - 1) / m)), 1 - m) * sign(psi)
];
}
return [
0,
ellipticF(atan(sinhPsi), 1 - m) * sign(psi)
];
}
// Calculate F(phi|m) where m = k² = sin²α.
// See Abramowitz and Stegun, 17.6.7.
function ellipticF(phi, m) {
if (!m) return phi;
if (m === 1) return log(tan(phi / 2 + quarterPi));
var a = 1,
b = sqrt(1 - m),
c = sqrt(m);
for (var i = 0; abs(c) > epsilon; i++) {
if (phi % pi) {
var dPhi = atan(b * tan(phi) / a);
if (dPhi < 0) dPhi += pi;
phi += dPhi + ~~(phi / pi) * pi;
} else phi += phi;
c = (a + b) / 2;
b = sqrt(a * b);
c = ((a = c) - b) / 2;
}
return phi / (pow(2, i) * a);
}
function guyouRaw(lambda, phi) {
var k_ = (sqrt2 - 1) / (sqrt2 + 1),
k = sqrt(1 - k_ * k_),
K = ellipticF(halfPi, k * k),
f = -1,
psi = log(tan(pi / 4 + abs(phi) / 2)),
r = exp(f * psi) / sqrt(k_),
at = guyouComplexAtan(r * cos(f * lambda), r * sin(f * lambda)),
t = ellipticFi(at[0], at[1], k * k);
return [-t[1], (phi >= 0 ? 1 : -1) * (0.5 * K - t[0])];
}
function guyouComplexAtan(x, y) {
var x2 = x * x,
y_1 = y + 1,
t = 1 - x2 - y * y;
return [
0.5 * ((x >= 0 ? halfPi : -halfPi) - atan2(t, 2 * x)),
-0.25 * log(t * t + 4 * x2) +0.5 * log(y_1 * y_1 + x2)
];
}
function guyouComplexDivide(a, b) {
var denominator = b[0] * b[0] + b[1] * b[1];
return [
(a[0] * b[0] + a[1] * b[1]) / denominator,
(a[1] * b[0] - a[0] * b[1]) / denominator
];
}
guyouRaw.invert = function(x, y) {
var k_ = (sqrt2 - 1) / (sqrt2 + 1),
k = sqrt(1 - k_ * k_),
K = ellipticF(halfPi, k * k),
f = -1,
j = ellipticJi(0.5 * K - y, -x, k * k),
tn = guyouComplexDivide(j[0], j[1]),
lambda = atan2(tn[1], tn[0]) / f;
return [
lambda,
2 * atan(exp(0.5 / f * log(k_ * tn[0] * tn[0] + k_ * tn[1] * tn[1]))) - halfPi
];
};
var guyou = function() {
return d3Geo.geoProjection(squareRaw(guyouRaw))
.scale(151.496);
};
function hammerRaw(A, B) {
if (arguments.length < 2) B = A;
if (B === 1) return d3Geo.geoAzimuthalEqualAreaRaw;
if (B === Infinity) return hammerQuarticAuthalicRaw;
function forward(lambda, phi) {
var coordinates = d3Geo.geoAzimuthalEqualAreaRaw(lambda / B, phi);
coordinates[0] *= A;
return coordinates;
}
forward.invert = function(x, y) {
var coordinates = d3Geo.geoAzimuthalEqualAreaRaw.invert(x / A, y);
coordinates[0] *= B;
return coordinates;
};
return forward;
}
function hammerQuarticAuthalicRaw(lambda, phi) {
return [
lambda * cos(phi) / cos(phi /= 2),
2 * sin(phi)
];
}
hammerQuarticAuthalicRaw.invert = function(x, y) {
var phi = 2 * asin(y / 2);
return [
x * cos(phi / 2) / cos(phi),
phi
];
};
var hammer = function() {
var B = 2,
m = d3Geo.geoProjectionMutator(hammerRaw),
p = m(B);
p.coefficient = function(_) {
if (!arguments.length) return B;
return m(B = +_);
};
return p
.scale(169.529);
};
function hammerRetroazimuthalRaw(phi0) {
var sinPhi0 = sin(phi0),
cosPhi0 = cos(phi0),
rotate = hammerRetroazimuthalRotation(phi0);
rotate.invert = hammerRetroazimuthalRotation(-phi0);
function forward(lambda, phi) {
var p = rotate(lambda, phi);
lambda = p[0], phi = p[1];
var sinPhi = sin(phi),
cosPhi = cos(phi),
cosLambda = cos(lambda),
z = acos(sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosLambda),
sinz = sin(z),
K = abs(sinz) > epsilon ? z / sinz : 1;
return [
K * cosPhi0 * sin(lambda),
(abs(lambda) > halfPi ? K : -K) // rotate for back hemisphere
* (sinPhi0 * cosPhi - cosPhi0 * sinPhi * cosLambda)
];
}
forward.invert = function(x, y) {
var rho = sqrt(x * x + y * y),
sinz = -sin(rho),
cosz = cos(rho),
a = rho * cosz,
b = -y * sinz,
c = rho * sinPhi0,
d = sqrt(a * a + b * b - c * c),
phi = atan2(a * c + b * d, b * c - a * d),
lambda = (rho > halfPi ? -1 : 1) * atan2(x * sinz, rho * cos(phi) * cosz + y * sin(phi) * sinz);
return rotate.invert(lambda, phi);
};
return forward;
}
// Latitudinal rotation by phi0.
// Temporary hack until D3 supports arbitrary small-circle clipping origins.
function hammerRetroazimuthalRotation(phi0) {
var sinPhi0 = sin(phi0),
cosPhi0 = cos(phi0);
return function(lambda, phi) {
var cosPhi = cos(phi),
x = cos(lambda) * cosPhi,
y = sin(lambda) * cosPhi,
z = sin(phi);
return [
atan2(y, x * cosPhi0 - z * sinPhi0),
asin(z * cosPhi0 + x * sinPhi0)
];
};
}
var hammerRetroazimuthal = function() {
var phi0 = 0,
m = d3Geo.geoProjectionMutator(hammerRetroazimuthalRaw),
p = m(phi0),
rotate_ = p.rotate,
stream_ = p.stream,
circle = d3Geo.geoCircle();
p.parallel = function(_) {
if (!arguments.length) return phi0 * degrees;
var r = p.rotate();
return m(phi0 = _ * radians).rotate(r);
};
// Temporary hack; see hammerRetroazimuthalRotation.
p.rotate = function(_) {
if (!arguments.length) return (_ = rotate_.call(p), _[1] += phi0 * degrees, _);
rotate_.call(p, [_[0], _[1] - phi0 * degrees]);
circle.center([-_[0], -_[1]]);
return p;
};
p.stream = function(stream) {
stream = stream_(stream);
stream.sphere = function() {
stream.polygonStart();
var epsilon$$1 = 1e-2,
ring = circle.radius(90 - epsilon$$1)().coordinates[0],
n = ring.length - 1,
i = -1,
p;
stream.lineStart();
while (++i < n) stream.point((p = ring[i])[0], p[1]);
stream.lineEnd();
ring = circle.radius(90 + epsilon$$1)().coordinates[0];
n = ring.length - 1;
stream.lineStart();
while (--i >= 0) stream.point((p = ring[i])[0], p[1]);
stream.lineEnd();
stream.polygonEnd();
};
return stream;
};
return p
.scale(79.4187)
.parallel(45)
.clipAngle(180 - 1e-3);
};
var healpixParallel = 41 + 48 / 36 + 37 / 3600;
var healpixLambert = cylindricalEqualAreaRaw(0);
function healpixRaw(H) {
var phi0 = healpixParallel * radians,
dx = collignonRaw(pi, phi0)[0] - collignonRaw(-pi, phi0)[0],
y0 = healpixLambert(0, phi0)[1],
y1 = collignonRaw(0, phi0)[1],
dy1 = sqrtPi - y1,
k = tau / H,
w = 4 / tau,
h = y0 + (dy1 * dy1 * 4) / tau;
function forward(lambda, phi) {
var point,
phi2 = abs(phi);
if (phi2 > phi0) {
var i = min(H - 1, max(0, floor((lambda + pi) / k)));
lambda += pi * (H - 1) / H - i * k;
point = collignonRaw(lambda, phi2);
point[0] = point[0] * tau / dx - tau * (H - 1) / (2 * H) + i * tau / H;
point[1] = y0 + (point[1] - y1) * 4 * dy1 / tau;
if (phi < 0) point[1] = -point[1];
} else {
point = healpixLambert(lambda, phi);
}
point[0] *= w, point[1] /= h;
return point;
}
forward.invert = function(x, y) {
x /= w, y *= h;
var y2 = abs(y);
if (y2 > y0) {
var i = min(H - 1, max(0, floor((x + pi) / k)));
x = (x + pi * (H - 1) / H - i * k) * dx / tau;
var point = collignonRaw.invert(x, 0.25 * (y2 - y0) * tau / dy1 + y1);
point[0] -= pi * (H - 1) / H - i * k;
if (y < 0) point[1] = -point[1];
return point;
}
return healpixLambert.invert(x, y);
};
return forward;
}
function sphere(step) {
return {
type: "Polygon",
coordinates: [
d3Array.range(-180, 180 + step / 2, step).map(function(x, i) { return [x, i & 1 ? 90 - 1e-6 : healpixParallel]; })
.concat(d3Array.range(180, -180 - step / 2, -step).map(function(x, i) { return [x, i & 1 ? -90 + 1e-6 : -healpixParallel]; }))
]
};
}
var healpix = function() {
var H = 4,
m = d3Geo.geoProjectionMutator(healpixRaw),
p = m(H),
stream_ = p.stream;
p.lobes = function(_) {
return arguments.length ? m(H = +_) : H;
};
p.stream = function(stream) {
var rotate = p.rotate(),
rotateStream = stream_(stream),
sphereStream = (p.rotate([0, 0]), stream_(stream));
p.rotate(rotate);
rotateStream.sphere = function() { d3Geo.geoStream(sphere(180 / H), sphereStream); };
return rotateStream;
};
return p
.scale(239.75);
};
function hillRaw(K) {
var L = 1 + K,
sinBt = sin(1 / L),
Bt = asin(sinBt),
A = 2 * sqrt(pi / (B = pi + 4 * Bt * L)),
B,
rho0 = 0.5 * A * (L + sqrt(K * (2 + K))),
K2 = K * K,
L2 = L * L;
function forward(lambda, phi) {
var t = 1 - sin(phi),
rho,
omega;
if (t && t < 2) {
var theta = halfPi - phi, i = 25, delta;
do {
var sinTheta = sin(theta),
cosTheta = cos(theta),
Bt_Bt1 = Bt + atan2(sinTheta, L - cosTheta),
C = 1 + L2 - 2 * L * cosTheta;
theta -= delta = (theta - K2 * Bt - L * sinTheta + C * Bt_Bt1 -0.5 * t * B) / (2 * L * sinTheta * Bt_Bt1);
} while (abs(delta) > epsilon2 && --i > 0);
rho = A * sqrt(C);
omega = lambda * Bt_Bt1 / pi;
} else {
rho = A * (K + t);
omega = lambda * Bt / pi;
}
return [
rho * sin(omega),
rho0 - rho * cos(omega)
];
}
forward.invert = function(x, y) {
var rho2 = x * x + (y -= rho0) * y,
cosTheta = (1 + L2 - rho2 / (A * A)) / (2 * L),
theta = acos(cosTheta),
sinTheta = sin(theta),
Bt_Bt1 = Bt + atan2(sinTheta, L - cosTheta);
return [
asin(x / sqrt(rho2)) * pi / Bt_Bt1,
asin(1 - 2 * (theta - K2 * Bt - L * sinTheta + (1 + L2 - 2 * L * cosTheta) * Bt_Bt1) / B)
];
};
return forward;
}
var hill = function() {
var K = 1,
m = d3Geo.geoProjectionMutator(hillRaw),
p = m(K);
p.ratio = function(_) {
return arguments.length ? m(K = +_) : K;
};
return p
.scale(167.774)
.center([0, 18.67]);
};
var sinuMollweidePhi = 0.7109889596207567;
var sinuMollweideY = 0.0528035274542;
function sinuMollweideRaw(lambda, phi) {
return phi > -sinuMollweidePhi
? (lambda = mollweideRaw(lambda, phi), lambda[1] += sinuMollweideY, lambda)
: sinusoidalRaw(lambda, phi);
}
sinuMollweideRaw.invert = function(x, y) {
return y > -sinuMollweidePhi
? mollweideRaw.invert(x, y - sinuMollweideY)
: sinusoidalRaw.invert(x, y);
};
var sinuMollweide = function() {
return d3Geo.geoProjection(sinuMollweideRaw)
.rotate([-20, -55])
.scale(164.263)
.center([0, -5.4036]);
};
function homolosineRaw(lambda, phi) {
return abs(phi) > sinuMollweidePhi
? (lambda = mollweideRaw(lambda, phi), lambda[1] -= phi > 0 ? sinuMollweideY : -sinuMollweideY, lambda)
: sinusoidalRaw(lambda, phi);
}
homolosineRaw.invert = function(x, y) {
return abs(y) > sinuMollweidePhi
? mollweideRaw.invert(x, y + (y > 0 ? sinuMollweideY : -sinuMollweideY))
: sinusoidalRaw.invert(x, y);
};
var homolosine = function() {
return d3Geo.geoProjection(homolosineRaw)
.scale(152.63);
};
function pointEqual(a, b) {
return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;
}
function interpolateLine(coordinates, m) {
var i = -1,
n = coordinates.length,
p0 = coordinates[0],
p1,
dx,
dy,
resampled = [];
while (++i < n) {
p1 = coordinates[i];
dx = (p1[0] - p0[0]) / m;
dy = (p1[1] - p0[1]) / m;
for (var j = 0; j < m; ++j) resampled.push([p0[0] + j * dx, p0[1] + j * dy]);
p0 = p1;
}
resampled.push(p1);
return resampled;
}
function interpolateSphere(lobes) {
var coordinates = [],
lobe,
lambda0, phi0, phi1,
lambda2, phi2,
i, n = lobes[0].length;
// Northern Hemisphere
for (i = 0; i < n; ++i) {
lobe = lobes[0][i];
lambda0 = lobe[0][0], phi0 = lobe[0][1], phi1 = lobe[1][1];
lambda2 = lobe[2][0], phi2 = lobe[2][1];
coordinates.push(interpolateLine([
[lambda0 + epsilon, phi0 + epsilon],
[lambda0 + epsilon, phi1 - epsilon],
[lambda2 - epsilon, phi1 - epsilon],
[lambda2 - epsilon, phi2 + epsilon]
], 30));
}
// Southern Hemisphere
for (i = lobes[1].length - 1; i >= 0; --i) {
lobe = lobes[1][i];
lambda0 = lobe[0][0], phi0 = lobe[0][1], phi1 = lobe[1][1];
lambda2 = lobe[2][0], phi2 = lobe[2][1];
coordinates.push(interpolateLine([
[lambda2 - epsilon, phi2 - epsilon],
[lambda2 - epsilon, phi1 + epsilon],
[lambda0 + epsilon, phi1 + epsilon],
[lambda0 + epsilon, phi0 - epsilon]
], 30));
}
return {
type: "Polygon",
coordinates: [d3Array.merge(coordinates)]
};
}
var interrupt = function(project, lobes) {
var sphere, bounds;
function forward(lambda, phi) {
var sign$$1 = phi < 0 ? -1 : +1, lobe = lobes[+(phi < 0)];
for (var i = 0, n = lobe.length - 1; i < n && lambda > lobe[i][2][0]; ++i);
var p = project(lambda - lobe[i][1][0], phi);
p[0] += project(lobe[i][1][0], sign$$1 * phi > sign$$1 * lobe[i][0][1] ? lobe[i][0][1] : phi)[0];
return p;
}
// Assumes mutually exclusive bounding boxes for lobes.
if (project.invert) forward.invert = function(x, y) {
var bound = bounds[+(y < 0)], lobe = lobes[+(y < 0)];
for (var i = 0, n = bound.length; i < n; ++i) {
var b = bound[i];
if (b[0][0] <= x && x < b[1][0] && b[0][1] <= y && y < b[1][1]) {
var p = project.invert(x - project(lobe[i][1][0], 0)[0], y);
p[0] += lobe[i][1][0];
return pointEqual(forward(p[0], p[1]), [x, y]) ? p : null;
}
}
};
var p = d3Geo.geoProjection(forward),
stream_ = p.stream;
p.stream = function(stream) {
var rotate = p.rotate(),
rotateStream = stream_(stream),
sphereStream = (p.rotate([0, 0]), stream_(stream));
p.rotate(rotate);
rotateStream.sphere = function() { d3Geo.geoStream(sphere, sphereStream); };
return rotateStream;
};
p.lobes = function(_) {
if (!arguments.length) return lobes.map(function(lobe) {
return lobe.map(function(l) {
return [
[l[0][0] * degrees, l[0][1] * degrees],
[l[1][0] * degrees, l[1][1] * degrees],
[l[2][0] * degrees, l[2][1] * degrees]
];
});
});
sphere = interpolateSphere(_);
lobes = _.map(function(lobe) {
return lobe.map(function(l) {
return [
[l[0][0] * radians, l[0][1] * radians],
[l[1][0] * radians, l[1][1] * radians],
[l[2][0] * radians, l[2][1] * radians]
];
});
});
bounds = lobes.map(function(lobe) {
return lobe.map(function(l) {
var x0 = project(l[0][0], l[0][1])[0],
x1 = project(l[2][0], l[2][1])[0],
y0 = project(l[1][0], l[0][1])[1],
y1 = project(l[1][0], l[1][1])[1],
t;
if (y0 > y1) t = y0, y0 = y1, y1 = t;
return [[x0, y0], [x1, y1]];
});
});
return p;
};
if (lobes != null) p.lobes(lobes);
return p;
};
var lobes = [[ // northern hemisphere
[[-180, 0], [-100, 90], [ -40, 0]],
[[ -40, 0], [ 30, 90], [ 180, 0]]
], [ // southern hemisphere
[[-180, 0], [-160, -90], [-100, 0]],
[[-100, 0], [ -60, -90], [ -20, 0]],
[[ -20, 0], [ 20, -90], [ 80, 0]],
[[ 80, 0], [ 140, -90], [ 180, 0]]
]];
var boggs$1 = function() {
return interrupt(boggsRaw, lobes)
.scale(160.857);
};
var lobes$1 = [[ // northern hemisphere
[[-180, 0], [-100, 90], [ -40, 0]],
[[ -40, 0], [ 30, 90], [ 180, 0]]
], [ // southern hemisphere
[[-180, 0], [-160, -90], [-100, 0]],
[[-100, 0], [ -60, -90], [ -20, 0]],
[[ -20, 0], [ 20, -90], [ 80, 0]],
[[ 80, 0], [ 140, -90], [ 180, 0]]
]];
var homolosine$1 = function() {
return interrupt(homolosineRaw, lobes$1)
.scale(152.63);
};
var lobes$2 = [[ // northern hemisphere
[[-180, 0], [-100, 90], [ -40, 0]],
[[ -40, 0], [ 30, 90], [ 180, 0]]
], [ // southern hemisphere
[[-180, 0], [-160, -90], [-100, 0]],
[[-100, 0], [ -60, -90], [ -20, 0]],
[[ -20, 0], [ 20, -90], [ 80, 0]],
[[ 80, 0], [ 140, -90], [ 180, 0]]
]];
var mollweide$1 = function() {
return interrupt(mollweideRaw, lobes$2)
.scale(169.529);
};
var lobes$3 = [[ // northern hemisphere
[[-180, 0], [ -90, 90], [ 0, 0]],
[[ 0, 0], [ 90, 90], [ 180, 0]]
], [ // southern hemisphere
[[-180, 0], [ -90, -90], [ 0, 0]],
[[ 0, 0], [ 90, -90], [ 180, 0]]
]];
var mollweideHemispheres = function() {
return interrupt(mollweideRaw, lobes$3)
.scale(169.529)
.rotate([20, 0]);
};
var lobes$4 = [[ // northern hemisphere
[[-180, 35], [ -30, 90], [ 0, 35]],
[[ 0, 35], [ 30, 90], [ 180, 35]]
], [ // southern hemisphere
[[-180, -10], [-102, -90], [ -65, -10]],
[[ -65, -10], [ 5, -90], [ 77, -10]],
[[ 77, -10], [ 103, -90], [ 180, -10]]
]];
var sinuMollweide$1 = function() {
return interrupt(sinuMollweideRaw, lobes$4)
.rotate([-20, -55])
.scale(164.263)
.center([0, -5.4036]);
};
var lobes$5 = [[ // northern hemisphere
[[-180, 0], [-110, 90], [ -40, 0]],
[[ -40, 0], [ 0, 90], [ 40, 0]],
[[ 40, 0], [ 110, 90], [ 180, 0]]
], [ // southern hemisphere
[[-180, 0], [-110, -90], [ -40, 0]],
[[ -40, 0], [ 0, -90], [ 40, 0]],
[[ 40, 0], [ 110, -90], [ 180, 0]]
]];
var sinusoidal$1 = function() {
return interrupt(sinusoidalRaw, lobes$5)
.scale(152.63)
.rotate([-20, 0]);
};
function kavrayskiy7Raw(lambda, phi) {
return [3 / tau * lambda * sqrt(pi * pi / 3 - phi * phi), phi];
}
kavrayskiy7Raw.invert = function(x, y) {
return [tau / 3 * x / sqrt(pi * pi / 3 - y * y), y];
};
var kavrayskiy7 = function() {
return d3Geo.geoProjection(kavrayskiy7Raw)
.scale(158.837);
};
function lagrangeRaw(n) {
function forward(lambda, phi) {
if (abs(abs(phi) - halfPi) < epsilon) return [0, phi < 0 ? -2 : 2];
var sinPhi = sin(phi),
v = pow((1 + sinPhi) / (1 - sinPhi), n / 2),
c = 0.5 * (v + 1 / v) + cos(lambda *= n);
return [
2 * sin(lambda) / c,
(v - 1 / v) / c
];
}
forward.invert = function(x, y) {
var y0 = abs(y);
if (abs(y0 - 2) < epsilon) return x ? null : [0, sign(y) * halfPi];
if (y0 > 2) return null;
x /= 2, y /= 2;
var x2 = x * x,
y2 = y * y,
t = 2 * y / (1 + x2 + y2); // tanh(nPhi)
t = pow((1 + t) / (1 - t), 1 / n);
return [
atan2(2 * x, 1 - x2 - y2) / n,
asin((t - 1) / (t + 1))
];
};
return forward;
}
var lagrange = function() {
var n = 0.5,
m = d3Geo.geoProjectionMutator(lagrangeRaw),
p = m(n);
p.spacing = function(_) {
return arguments.length ? m(n = +_) : n;
};
return p
.scale(124.75);
};
var pi_sqrt2 = pi / sqrt2;
function larriveeRaw(lambda, phi) {
return [
lambda * (1 + sqrt(cos(phi))) / 2,
phi / (cos(phi / 2) * cos(lambda / 6))
];
}
larriveeRaw.invert = function(x, y) {
var x0 = abs(x),
y0 = abs(y),
lambda = epsilon,
phi = halfPi;
if (y0 < pi_sqrt2) phi *= y0 / pi_sqrt2;
else lambda += 6 * acos(pi_sqrt2 / y0);
for (var i = 0; i < 25; i++) {
var sinPhi = sin(phi),
sqrtcosPhi = sqrt(cos(phi)),
sinPhi_2 = sin(phi / 2),
cosPhi_2 = cos(phi / 2),
sinLambda_6 = sin(lambda / 6),
cosLambda_6 = cos(lambda / 6),
f0 = 0.5 * lambda * (1 + sqrtcosPhi) - x0,
f1 = phi / (cosPhi_2 * cosLambda_6) - y0,
df0dPhi = sqrtcosPhi ? -0.25 * lambda * sinPhi / sqrtcosPhi : 0,
df0dLambda = 0.5 * (1 + sqrtcosPhi),
df1dPhi = (1 +0.5 * phi * sinPhi_2 / cosPhi_2) / (cosPhi_2 * cosLambda_6),
df1dLambda = (phi / cosPhi_2) * (sinLambda_6 / 6) / (cosLambda_6 * cosLambda_6),
denom = df0dPhi * df1dLambda - df1dPhi * df0dLambda,
dPhi = (f0 * df1dLambda - f1 * df0dLambda) / denom,
dLambda = (f1 * df0dPhi - f0 * df1dPhi) / denom;
phi -= dPhi;
lambda -= dLambda;
if (abs(dPhi) < epsilon && abs(dLambda) < epsilon) break;
}
return [x < 0 ? -lambda : lambda, y < 0 ? -phi : phi];
};
var larrivee = function() {
return d3Geo.geoProjection(larriveeRaw)
.scale(97.2672);
};
function laskowskiRaw(lambda, phi) {
var lambda2 = lambda * lambda, phi2 = phi * phi;
return [
lambda * (0.975534 + phi2 * (-0.119161 + lambda2 * -0.0143059 + phi2 * -0.0547009)),
phi * (1.00384 + lambda2 * (0.0802894 + phi2 * -0.02855 + lambda2 * 0.000199025) + phi2 * (0.0998909 + phi2 * -0.0491032))
];
}
laskowskiRaw.invert = function(x, y) {
var lambda = sign(x) * pi,
phi = y / 2,
i = 50;
do {
var lambda2 = lambda * lambda,
phi2 = phi * phi,
lambdaPhi = lambda * phi,
fx = lambda * (0.975534 + phi2 * (-0.119161 + lambda2 * -0.0143059 + phi2 * -0.0547009)) - x,
fy = phi * (1.00384 + lambda2 * (0.0802894 + phi2 * -0.02855 + lambda2 * 0.000199025) + phi2 * (0.0998909 + phi2 * -0.0491032)) - y,
deltaxDeltaLambda = 0.975534 - phi2 * (0.119161 + 3 * lambda2 * 0.0143059 + phi2 * 0.0547009),
deltaxDeltaPhi = -lambdaPhi * (2 * 0.119161 + 4 * 0.0547009 * phi2 + 2 * 0.0143059 * lambda2),
deltayDeltaLambda = lambdaPhi * (2 * 0.0802894 + 4 * 0.000199025 * lambda2 + 2 * -0.02855 * phi2),
deltayDeltaPhi = 1.00384 + lambda2 * (0.0802894 + 0.000199025 * lambda2) + phi2 * (3 * (0.0998909 - 0.02855 * lambda2) - 5 * 0.0491032 * phi2),
denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda,
deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator,
deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;
lambda -= deltaLambda, phi -= deltaPhi;
} while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);
return i && [lambda, phi];
};
var laskowski = function() {
return d3Geo.geoProjection(laskowskiRaw)
.scale(139.98);
};
function littrowRaw(lambda, phi) {
return [
sin(lambda) / cos(phi),
tan(phi) * cos(lambda)
];
}
littrowRaw.invert = function(x, y) {
var x2 = x * x,
y2 = y * y,
y2_1 = y2 + 1,
cosPhi = x
? sqrt1_2 * sqrt((y2_1 - sqrt(x2 * x2 + 2 * x2 * (y2 - 1) + y2_1 * y2_1)) / x2 + 1)
: 1 / sqrt(y2_1);
return [
asin(x * cosPhi),
sign(y) * acos(cosPhi)
];
};
var littrow = function() {
return d3Geo.geoProjection(littrowRaw)
.scale(144.049)
.clipAngle(90 - 1e-3);
};
function loximuthalRaw(phi0) {
var cosPhi0 = cos(phi0),
tanPhi0 = tan(quarterPi + phi0 / 2);
function forward(lambda, phi) {
var y = phi - phi0,
x = abs(y) < epsilon ? lambda * cosPhi0
: abs(x = quarterPi + phi / 2) < epsilon || abs(abs(x) - halfPi) < epsilon
? 0 : lambda * y / log(tan(x) / tanPhi0);
return [x, y];
}
forward.invert = function(x, y) {
var lambda,
phi = y + phi0;
return [
abs(y) < epsilon ? x / cosPhi0
: (abs(lambda = quarterPi + phi / 2) < epsilon || abs(abs(lambda) - halfPi) < epsilon) ? 0
: x * log(tan(lambda) / tanPhi0) / y,
phi
];
};
return forward;
}
var loximuthal = function() {
return parallel1(loximuthalRaw)
.parallel(40)
.scale(158.837);
};
function millerRaw(lambda, phi) {
return [lambda, 1.25 * log(tan(quarterPi + 0.4 * phi))];
}
millerRaw.invert = function(x, y) {
return [x, 2.5 * atan(exp(0.8 * y)) - 0.625 * pi];
};
var miller = function() {
return d3Geo.geoProjection(millerRaw)
.scale(108.318);
};
function modifiedStereographicRaw(C) {
var m = C.length - 1;
function forward(lambda, phi) {
var cosPhi = cos(phi),
k = 2 / (1 + cosPhi * cos(lambda)),
zr = k * cosPhi * sin(lambda),
zi = k * sin(phi),
i = m,
w = C[i],
ar = w[0],
ai = w[1],
t;
while (--i >= 0) {
w = C[i];
ar = w[0] + zr * (t = ar) - zi * ai;
ai = w[1] + zr * ai + zi * t;
}
ar = zr * (t = ar) - zi * ai;
ai = zr * ai + zi * t;
return [ar, ai];
}
forward.invert = function(x, y) {
var i = 20,
zr = x,
zi = y;
do {
var j = m,
w = C[j],
ar = w[0],
ai = w[1],
br = 0,
bi = 0,
t;
while (--j >= 0) {
w = C[j];
br = ar + zr * (t = br) - zi * bi;
bi = ai + zr * bi + zi * t;
ar = w[0] + zr * (t = ar) - zi * ai;
ai = w[1] + zr * ai + zi * t;
}
br = ar + zr * (t = br) - zi * bi;
bi = ai + zr * bi + zi * t;
ar = zr * (t = ar) - zi * ai - x;
ai = zr * ai + zi * t - y;
var denominator = br * br + bi * bi, deltar, deltai;
zr -= deltar = (ar * br + ai * bi) / denominator;
zi -= deltai = (ai * br - ar * bi) / denominator;
} while (abs(deltar) + abs(deltai) > epsilon * epsilon && --i > 0);
if (i) {
var rho = sqrt(zr * zr + zi * zi),
c = 2 * atan(rho * 0.5),
sinc = sin(c);
return [atan2(zr * sinc, rho * cos(c)), rho ? asin(zi * sinc / rho) : 0];
}
};
return forward;
}
var alaska = [[0.9972523, 0], [0.0052513, -0.0041175], [0.0074606, 0.0048125], [-0.0153783, -0.1968253], [0.0636871, -0.1408027], [0.3660976, -0.2937382]];
var gs48 = [[0.98879, 0], [0, 0], [-0.050909, 0], [0, 0], [0.075528, 0]];
var gs50 = [[0.9842990, 0], [0.0211642, 0.0037608], [-0.1036018, -0.0575102], [-0.0329095, -0.0320119], [0.0499471, 0.1223335], [0.0260460, 0.0899805], [0.0007388, -0.1435792], [0.0075848, -0.1334108], [-0.0216473, 0.0776645], [-0.0225161, 0.0853673]];
var miller$1 = [[0.9245, 0], [0, 0], [0.01943, 0]];
var lee = [[0.721316, 0], [0, 0], [-0.00881625, -0.00617325]];
function modifiedStereographicAlaska() {
return modifiedStereographic(alaska, [152, -64])
.scale(1500)
.center([-160.908, 62.4864])
.clipAngle(25);
}
function modifiedStereographicGs48() {
return modifiedStereographic(gs48, [95, -38])
.scale(1000)
.clipAngle(55)
.center([-96.5563, 38.8675]);
}
function modifiedStereographicGs50() {
return modifiedStereographic(gs50, [120, -45])
.scale(359.513)
.clipAngle(55)
.center([-117.474, 53.0628]);
}
function modifiedStereographicMiller() {
return modifiedStereographic(miller$1, [-20, -18])
.scale(209.091)
.center([20, 16.7214])
.clipAngle(82);
}
function modifiedStereographicLee() {
return modifiedStereographic(lee, [165, 10])
.scale(250)
.clipAngle(130)
.center([-165, -10]);
}
function modifiedStereographic(coefficients, rotate) {
var p = d3Geo.geoProjection(modifiedStereographicRaw(coefficients)).rotate(rotate).clipAngle(90),
r = d3Geo.geoRotation(rotate),
center = p.center;
delete p.rotate;
p.center = function(_) {
return arguments.length ? center(r(_)) : r.invert(center());
};
return p;
}
var sqrt6 = sqrt(6);
var sqrt7 = sqrt(7);
function mtFlatPolarParabolicRaw(lambda, phi) {
var theta = asin(7 * sin(phi) / (3 * sqrt6));
return [
sqrt6 * lambda * (2 * cos(2 * theta / 3) - 1) / sqrt7,
9 * sin(theta / 3) / sqrt7
];
}
mtFlatPolarParabolicRaw.invert = function(x, y) {
var theta = 3 * asin(y * sqrt7 / 9);
return [
x * sqrt7 / (sqrt6 * (2 * cos(2 * theta / 3) - 1)),
asin(sin(theta) * 3 * sqrt6 / 7)
];
};
var mtFlatPolarParabolic = function() {
return d3Geo.geoProjection(mtFlatPolarParabolicRaw)
.scale(164.859);
};
function mtFlatPolarQuarticRaw(lambda, phi) {
var k = (1 + sqrt1_2) * sin(phi),
theta = phi;
for (var i = 0, delta; i < 25; i++) {
theta -= delta = (sin(theta / 2) + sin(theta) - k) / (0.5 * cos(theta / 2) + cos(theta));
if (abs(delta) < epsilon) break;
}
return [
lambda * (1 + 2 * cos(theta) / cos(theta / 2)) / (3 * sqrt2),
2 * sqrt(3) * sin(theta / 2) / sqrt(2 + sqrt2)
];
}
mtFlatPolarQuarticRaw.invert = function(x, y) {
var sinTheta_2 = y * sqrt(2 + sqrt2) / (2 * sqrt(3)),
theta = 2 * asin(sinTheta_2);
return [
3 * sqrt2 * x / (1 + 2 * cos(theta) / cos(theta / 2)),
asin((sinTheta_2 + sin(theta)) / (1 + sqrt1_2))
];
};
var mtFlatPolarQuartic = function() {
return d3Geo.geoProjection(mtFlatPolarQuarticRaw)
.scale(188.209);
};
function mtFlatPolarSinusoidalRaw(lambda, phi) {
var A = sqrt(6 / (4 + pi)),
k = (1 + pi / 4) * sin(phi),
theta = phi / 2;
for (var i = 0, delta; i < 25; i++) {
theta -= delta = (theta / 2 + sin(theta) - k) / (0.5 + cos(theta));
if (abs(delta) < epsilon) break;
}
return [
A * (0.5 + cos(theta)) * lambda / 1.5,
A * theta
];
}
mtFlatPolarSinusoidalRaw.invert = function(x, y) {
var A = sqrt(6 / (4 + pi)),
theta = y / A;
if (abs(abs(theta) - halfPi) < epsilon) theta = theta < 0 ? -halfPi : halfPi;
return [
1.5 * x / (A * (0.5 + cos(theta))),
asin((theta / 2 + sin(theta)) / (1 + pi / 4))
];
};
var mtFlatPolarSinusoidal = function() {
return d3Geo.geoProjection(mtFlatPolarSinusoidalRaw)
.scale(166.518);
};
function naturalEarthRaw(lambda, phi) {
var phi2 = phi * phi, phi4 = phi2 * phi2;
return [
lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),
phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))
];
}
naturalEarthRaw.invert = function(x, y) {
var phi = y, i = 25, delta;
do {
var phi2 = phi * phi, phi4 = phi2 * phi2;
phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /
(1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));
} while (abs(delta) > epsilon && --i > 0);
return [
x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),
phi
];
};
var naturalEarth = function() {
return d3Geo.geoProjection(naturalEarthRaw)
.scale(175.295);
};
function naturalEarth2Raw(lambda, phi) {
var phi2 = phi * phi, phi4 = phi2 * phi2, phi6 = phi2 * phi4;
return [
lambda * (0.84719 - 0.13063 * phi2 + phi6 * phi6 * (-0.04515 + 0.05494 * phi2 - 0.02326 * phi4 + 0.00331 * phi6)),
phi * (1.01183 + phi4 * phi4 * (-0.02625 + 0.01926 * phi2 - 0.00396 * phi4))
];
}
naturalEarth2Raw.invert = function(x, y) {
var phi = y, i = 25, delta, phi2, phi4, phi6;
do {
phi2 = phi * phi; phi4 = phi2 * phi2;
phi -= delta = ((phi * (1.01183 + phi4 * phi4 * (-0.02625 + 0.01926 * phi2 - 0.00396 * phi4))) - y) /
(1.01183 + phi4 * phi4 * ((9 * -0.02625) + (11 * 0.01926) * phi2 + (13 * -0.00396) * phi4));
} while (abs(delta) > epsilon2 && --i > 0);
phi2 = phi * phi; phi4 = phi2 * phi2; phi6 = phi2 * phi4;
return [
x / (0.84719 - 0.13063 * phi2 + phi6 * phi6 * (-0.04515 + 0.05494 * phi2 - 0.02326 * phi4 + 0.00331 * phi6)),
phi
];
};
var naturalEarth2 = function() {
return d3Geo.geoProjection(naturalEarth2Raw)
.scale(175.295);
};
function nellHammerRaw(lambda, phi) {
return [
lambda * (1 + cos(phi)) / 2,
2 * (phi - tan(phi / 2))
];
}
nellHammerRaw.invert = function(x, y) {
var p = y / 2;
for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; ++i) {
var c = cos(y / 2);
y -= delta = (y - tan(y / 2) - p) / (1 - 0.5 / (c * c));
}
return [
2 * x / (1 + cos(y)),
y
];
};
var nellHammer = function() {
return d3Geo.geoProjection(nellHammerRaw)
.scale(152.63);
};
// Based on Java implementation by Bojan Savric.
// https://github.com/OSUCartography/JMapProjLib/blob/master/src/com/jhlabs/map/proj/PattersonProjection.java
var pattersonK1 = 1.0148;
var pattersonK2 = 0.23185;
var pattersonK3 = -0.14499;
var pattersonK4 = 0.02406;
var pattersonC1 = pattersonK1;
var pattersonC2 = 5 * pattersonK2;
var pattersonC3 = 7 * pattersonK3;
var pattersonC4 = 9 * pattersonK4;
var pattersonYmax = 1.790857183;
function pattersonRaw(lambda, phi) {
var phi2 = phi * phi;
return [
lambda,
phi * (pattersonK1 + phi2 * phi2 * (pattersonK2 + phi2 * (pattersonK3 + pattersonK4 * phi2)))
];
}
pattersonRaw.invert = function(x, y) {
if (y > pattersonYmax) y = pattersonYmax;
else if (y < -pattersonYmax) y = -pattersonYmax;
var yc = y, delta;
do { // Newton-Raphson
var y2 = yc * yc;
yc -= delta = ((yc * (pattersonK1 + y2 * y2 * (pattersonK2 + y2 * (pattersonK3 + pattersonK4 * y2)))) - y) / (pattersonC1 + y2 * y2 * (pattersonC2 + y2 * (pattersonC3 + pattersonC4 * y2)));
} while (abs(delta) > epsilon);
return [x, yc];
};
var patterson = function() {
return d3Geo.geoProjection(pattersonRaw)
.scale(139.319);
};
function polyconicRaw(lambda, phi) {
if (abs(phi) < epsilon) return [lambda, 0];
var tanPhi = tan(phi),
k = lambda * sin(phi);
return [
sin(k) / tanPhi,
phi + (1 - cos(k)) / tanPhi
];
}
polyconicRaw.invert = function(x, y) {
if (abs(y) < epsilon) return [x, 0];
var k = x * x + y * y,
phi = y * 0.5,
i = 10, delta;
do {
var tanPhi = tan(phi),
secPhi = 1 / cos(phi),
j = k - 2 * y * phi + phi * phi;
phi -= delta = (tanPhi * j + 2 * (phi - y)) / (2 + j * secPhi * secPhi + 2 * (phi - y) * tanPhi);
} while (abs(delta) > epsilon && --i > 0);
tanPhi = tan(phi);
return [
(abs(y) < abs(phi + 1 / tanPhi) ? asin(x * tanPhi) : sign(x) * (acos(abs(x * tanPhi)) + halfPi)) / sin(phi),
phi
];
};
var polyconic = function() {
return d3Geo.geoProjection(polyconicRaw)
.scale(103.74);
};
// Note: 6-element arrays are used to denote the 3x3 affine transform matrix:
// [a, b, c,
// d, e, f,
// 0, 0, 1] - this redundant row is left out.
// Transform matrix for [a0, a1] -> [b0, b1].
var matrix = function(a, b) {
var u = subtract(a[1], a[0]),
v = subtract(b[1], b[0]),
phi = angle$1(u, v),
s = length(u) / length(v);
return multiply([
1, 0, a[0][0],
0, 1, a[0][1]
], multiply([
s, 0, 0,
0, s, 0
], multiply([
cos(phi), sin(phi), 0,
-sin(phi), cos(phi), 0
], [
1, 0, -b[0][0],
0, 1, -b[0][1]
])));
};
// Inverts a transform matrix.
function inverse(m) {
var k = 1 / (m[0] * m[4] - m[1] * m[3]);
return [
k * m[4], -k * m[1], k * (m[1] * m[5] - m[2] * m[4]),
-k * m[3], k * m[0], k * (m[2] * m[3] - m[0] * m[5])
];
}
// Multiplies two 3x2 matrices.
function multiply(a, b) {
return [
a[0] * b[0] + a[1] * b[3],
a[0] * b[1] + a[1] * b[4],
a[0] * b[2] + a[1] * b[5] + a[2],
a[3] * b[0] + a[4] * b[3],
a[3] * b[1] + a[4] * b[4],
a[3] * b[2] + a[4] * b[5] + a[5]
];
}
// Subtracts 2D vectors.
function subtract(a, b) {
return [a[0] - b[0], a[1] - b[1]];
}
// Magnitude of a 2D vector.
function length(v) {
return sqrt(v[0] * v[0] + v[1] * v[1]);
}
// Angle between two 2D vectors.
function angle$1(a, b) {
return atan2(a[0] * b[1] - a[1] * b[0], a[0] * b[0] + a[1] * b[1]);
}
// Creates a polyhedral projection.
// * root: a spanning tree of polygon faces. Nodes are automatically
// augmented with a transform matrix.
// * face: a function that returns the appropriate node for a given {lambda, phi}
// point (radians).
// * r: rotation angle for final polyhedral net. Defaults to -pi / 6 (for
// butterflies).
var polyhedral = function(root, face, r) {
r = r == null ? -pi / 6 : r; // TODO automate
recurse(root, {transform: [
cos(r), sin(r), 0,
-sin(r), cos(r), 0
]});
function recurse(node, parent) {
node.edges = faceEdges(node.face);
// Find shared edge.
if (parent.face) {
var shared = node.shared = sharedEdge(node.face, parent.face),
m = matrix(shared.map(parent.project), shared.map(node.project));
node.transform = parent.transform ? multiply(parent.transform, m) : m;
// Replace shared edge in parent edges array.
var edges = parent.edges;
for (var i = 0, n = edges.length; i < n; ++i) {
if (pointEqual$1(shared[0], edges[i][1]) && pointEqual$1(shared[1], edges[i][0])) edges[i] = node;
if (pointEqual$1(shared[0], edges[i][0]) && pointEqual$1(shared[1], edges[i][1])) edges[i] = node;
}
edges = node.edges;
for (i = 0, n = edges.length; i < n; ++i) {
if (pointEqual$1(shared[0], edges[i][0]) && pointEqual$1(shared[1], edges[i][1])) edges[i] = parent;
if (pointEqual$1(shared[0], edges[i][1]) && pointEqual$1(shared[1], edges[i][0])) edges[i] = parent;
}
} else {
node.transform = parent.transform;
}
if (node.children) {
node.children.forEach(function(child) {
recurse(child, node);
});
}
return node;
}
function forward(lambda, phi) {
var node = face(lambda, phi),
point = node.project([lambda * degrees, phi * degrees]),
t;
if (t = node.transform) {
return [
t[0] * point[0] + t[1] * point[1] + t[2],
-(t[3] * point[0] + t[4] * point[1] + t[5])
];
}
point[1] = -point[1];
return point;
}
// Naive inverse! A faster solution would use bounding boxes, or even a
// polygonal quadtree.
if (hasInverse(root)) forward.invert = function(x, y) {
var coordinates = faceInvert(root, [x, -y]);
return coordinates && (coordinates[0] *= radians, coordinates[1] *= radians, coordinates);
};
function faceInvert(node, coordinates) {
var invert = node.project.invert,
t = node.transform,
point = coordinates;
if (t) {
t = inverse(t);
point = [
t[0] * point[0] + t[1] * point[1] + t[2],
(t[3] * point[0] + t[4] * point[1] + t[5])
];
}
if (invert && node === faceDegrees(p = invert(point))) return p;
var p,
children = node.children;
for (var i = 0, n = children && children.length; i < n; ++i) {
if (p = faceInvert(children[i], coordinates)) return p;
}
}
function faceDegrees(coordinates) {
return face(coordinates[0] * radians, coordinates[1] * radians);
}
var proj = d3Geo.geoProjection(forward),
stream_ = proj.stream;
// run around the mesh of faces and stream all vertices in order to create the clip polygon
var polygon = [];
outline({point: function(lambda, phi) { polygon.push([lambda, phi]); }}, root);
polygon.push(polygon[0]);
proj.clipPolygon([polygon]);
proj.stream = function(stream) {
var rotate = proj.rotate(),
angle = proj.clipAngle(),
clipPolygon = proj.clipPolygon(),
precision = proj.precision(),
rotateStream = stream_(stream),
sphereStream = (proj.rotate([0, 0]).clipPolygon([]).clipAngle(sign(angle) * 180).precision(1), stream_(stream));
proj.rotate(rotate).clipAngle(angle).precision(precision);
if (clipPolygon) proj.clipPolygon(clipPolygon);
rotateStream.sphere = function() {
sphereStream.polygonStart();
sphereStream.lineStart();
outline(sphereStream, root);
sphereStream.lineEnd();
sphereStream.polygonEnd();
};
return rotateStream;
};
return proj;
};
function outline(stream, node, parent) {
var point,
edges = node.edges,
n = edges.length,
edge,
multiPoint = {type: "MultiPoint", coordinates: node.face},
notPoles = node.face.filter(function(d) { return abs(d[1]) !== 90; }),
b = d3Geo.geoBounds({type: "MultiPoint", coordinates: notPoles}),
inside = false,
j = -1,
dx = b[1][0] - b[0][0];
// TODO
var c = dx === 180 || dx === 360
? [(b[0][0] + b[1][0]) / 2, (b[0][1] + b[1][1]) / 2]
: d3Geo.geoCentroid(multiPoint);
// First find the shared edge…
if (parent) while (++j < n) {
if (edges[j] === parent) break;
}
++j;
for (var i = 0; i < n; ++i) {
edge = edges[(i + j) % n];
if (Array.isArray(edge)) {
if (!inside) {
stream.point((point = d3Geo.geoInterpolate(edge[0], c)(epsilon))[0], point[1]);
inside = true;
}
stream.point((point = d3Geo.geoInterpolate(edge[1], c)(epsilon))[0], point[1]);
} else {
inside = false;
if (edge !== parent) outline(stream, edge, node);
}
}
}
// Tests equality of two spherical points.
function pointEqual$1(a, b) {
return a && b && a[0] === b[0] && a[1] === b[1];
}
// Finds a shared edge given two clockwise polygons.
function sharedEdge(a, b) {
var x, y, n = a.length, found = null;
for (var i = 0; i < n; ++i) {
x = a[i];
for (var j = b.length; --j >= 0;) {
y = b[j];
if (x[0] === y[0] && x[1] === y[1]) {
if (found) return [found, x];
found = x;
}
}
}
}
// Converts an array of n face vertices to an array of n + 1 edges.
function faceEdges(face) {
var n = face.length,
edges = [];
for (var a = face[n - 1], i = 0; i < n; ++i) edges.push([a, a = face[i]]);
return edges;
}
function hasInverse(node) {
return node.project.invert || node.children && node.children.some(hasInverse);
}
// TODO generate on-the-fly to avoid external modification.
var octahedron = [
[0, 90],
[-90, 0], [0, 0], [90, 0], [180, 0],
[0, -90]
];
var octahedron$1 = [
[0, 2, 1],
[0, 3, 2],
[5, 1, 2],
[5, 2, 3],
[0, 1, 4],
[0, 4, 3],
[5, 4, 1],
[5, 3, 4]
].map(function(face) {
return face.map(function(i) {
return octahedron[i];
});
});
var butterfly = function(faceProjection) {
faceProjection = faceProjection || function(face) {
var c = d3Geo.geoCentroid({type: "MultiPoint", coordinates: face});
return d3Geo.geoGnomonic().scale(1).translate([0, 0]).rotate([-c[0], -c[1]]);
};
var faces = octahedron$1.map(function(face) {
return {face: face, project: faceProjection(face)};
});
[-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(d, i) {
var node = faces[d];
node && (node.children || (node.children = [])).push(faces[i]);
});
return polyhedral(faces[0], function(lambda, phi) {
return faces[lambda < -pi / 2 ? phi < 0 ? 6 : 4
: lambda < 0 ? phi < 0 ? 2 : 0
: lambda < pi / 2 ? phi < 0 ? 3 : 1
: phi < 0 ? 7 : 5];
})
.scale(101.858)
.center([0, 45]);
};
var kx = 2 / sqrt(3);
function collignonK(a, b) {
var p = collignonRaw(a, b);
return [p[0] * kx, p[1]];
}
collignonK.invert = function(x,y) {
return collignonRaw.invert(x / kx, y);
};
var collignon$1 = function(faceProjection) {
faceProjection = faceProjection || function(face) {
var c = d3Geo.geoCentroid({type: "MultiPoint", coordinates: face});
return d3Geo.geoProjection(collignonK).translate([0, 0]).scale(1).rotate(c[1] > 0 ? [-c[0], 0] : [180 - c[0], 180]);
};
var faces = octahedron$1.map(function(face) {
return {face: face, project: faceProjection(face)};
});
[-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(d, i) {
var node = faces[d];
node && (node.children || (node.children = [])).push(faces[i]);
});
return polyhedral(faces[0], function(lambda, phi) {
return faces[lambda < -pi / 2 ? phi < 0 ? 6 : 4
: lambda < 0 ? phi < 0 ? 2 : 0
: lambda < pi / 2 ? phi < 0 ? 3 : 1
: phi < 0 ? 7 : 5];
})
.scale(121.906)
.center([0, 48.5904]);
};
var waterman = function(faceProjection) {
faceProjection = faceProjection || function(face) {
var c = face.length === 6 ? d3Geo.geoCentroid({type: "MultiPoint", coordinates: face}) : face[0];
return d3Geo.geoGnomonic().scale(1).translate([0, 0]).rotate([-c[0], -c[1]]);
};
var w5 = octahedron$1.map(function(face) {
var xyz = face.map(cartesian),
n = xyz.length,
a = xyz[n - 1],
b,
hexagon = [];
for (var i = 0; i < n; ++i) {
b = xyz[i];
hexagon.push(spherical([
a[0] * 0.9486832980505138 + b[0] * 0.31622776601683794,
a[1] * 0.9486832980505138 + b[1] * 0.31622776601683794,
a[2] * 0.9486832980505138 + b[2] * 0.31622776601683794
]), spherical([
b[0] * 0.9486832980505138 + a[0] * 0.31622776601683794,
b[1] * 0.9486832980505138 + a[1] * 0.31622776601683794,
b[2] * 0.9486832980505138 + a[2] * 0.31622776601683794
]));
a = b;
}
return hexagon;
});
var cornerNormals = [];
var parents = [-1, 0, 0, 1, 0, 1, 4, 5];
w5.forEach(function(hexagon, j) {
var face = octahedron$1[j],
n = face.length,
normals = cornerNormals[j] = [];
for (var i = 0; i < n; ++i) {
w5.push([
face[i],
hexagon[(i * 2 + 2) % (2 * n)],
hexagon[(i * 2 + 1) % (2 * n)]
]);
parents.push(j);
normals.push(cross(
cartesian(hexagon[(i * 2 + 2) % (2 * n)]),
cartesian(hexagon[(i * 2 + 1) % (2 * n)])
));
}
});
var faces = w5.map(function(face) {
return {
project: faceProjection(face),
face: face
};
});
parents.forEach(function(d, i) {
var parent = faces[d];
parent && (parent.children || (parent.children = [])).push(faces[i]);
});
function face(lambda, phi) {
var cosphi = cos(phi),
p = [cosphi * cos(lambda), cosphi * sin(lambda), sin(phi)];
var hexagon = lambda < -pi / 2 ? phi < 0 ? 6 : 4
: lambda < 0 ? phi < 0 ? 2 : 0
: lambda < pi / 2 ? phi < 0 ? 3 : 1
: phi < 0 ? 7 : 5;
var n = cornerNormals[hexagon];
return faces[dot(n[0], p) < 0 ? 8 + 3 * hexagon
: dot(n[1], p) < 0 ? 8 + 3 * hexagon + 1
: dot(n[2], p) < 0 ? 8 + 3 * hexagon + 2
: hexagon];
}
return polyhedral(faces[0], face)
.scale(110.625)
.center([0,45]);
};
function dot(a, b) {
for (var i = 0, n = a.length, s = 0; i < n; ++i) s += a[i] * b[i];
return s;
}
function cross(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]
];
}
// Converts 3D Cartesian to spherical coordinates (degrees).
function spherical(cartesian) {
return [
atan2(cartesian[1], cartesian[0]) * degrees,
asin(max(-1, min(1, cartesian[2]))) * degrees
];
}
// Converts spherical coordinates (degrees) to 3D Cartesian.
function cartesian(coordinates) {
var lambda = coordinates[0] * radians,
phi = coordinates[1] * radians,
cosphi = cos(phi);
return [
cosphi * cos(lambda),
cosphi * sin(lambda),
sin(phi)
];
}
var noop = function() {};
var clockwise = function(ring) {
if ((n = ring.length) < 4) return false;
var i = 0,
n,
area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];
while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];
return area <= 0;
};
var contains = function(ring, point) {
var x = point[0],
y = point[1],
contains = false;
for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {
var pi = ring[i], xi = pi[0], yi = pi[1],
pj = ring[j], xj = pj[0], yj = pj[1];
if (((yi > y) ^ (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)) contains = !contains;
}
return contains;
};
var index = function(object, projection) {
var stream = projection.stream, project;
if (!stream) throw new Error("invalid projection");
switch (object && object.type) {
case "Feature": project = projectFeature; break;
case "FeatureCollection": project = projectFeatureCollection; break;
default: project = projectGeometry; break;
}
return project(object, stream);
};
function projectFeatureCollection(o, stream) {
return {
type: "FeatureCollection",
features: o.features.map(function(f) {
return projectFeature(f, stream);
})
};
}
function projectFeature(o, stream) {
return {
type: "Feature",
id: o.id,
properties: o.properties,
geometry: projectGeometry(o.geometry, stream)
};
}
function projectGeometryCollection(o, stream) {
return {
type: "GeometryCollection",
geometries: o.geometries.map(function(o) {
return projectGeometry(o, stream);
})
};
}
function projectGeometry(o, stream) {
if (!o) return null;
if (o.type === "GeometryCollection") return projectGeometryCollection(o, stream);
var sink;
switch (o.type) {
case "Point": sink = sinkPoint; break;
case "MultiPoint": sink = sinkPoint; break;
case "LineString": sink = sinkLine; break;
case "MultiLineString": sink = sinkLine; break;
case "Polygon": sink = sinkPolygon; break;
case "MultiPolygon": sink = sinkPolygon; break;
case "Sphere": sink = sinkPolygon; break;
default: return null;
}
d3Geo.geoStream(o, stream(sink));
return sink.result();
}
var points = [];
var lines = [];
var sinkPoint = {
point: function(x, y) {
points.push([x, y]);
},
result: function() {
var result = !points.length ? null
: points.length < 2 ? {type: "Point", coordinates: points[0]}
: {type: "MultiPoint", coordinates: points};
points = [];
return result;
}
};
var sinkLine = {
lineStart: noop,
point: function(x, y) {
points.push([x, y]);
},
lineEnd: function() {
if (points.length) lines.push(points), points = [];
},
result: function() {
var result = !lines.length ? null
: lines.length < 2 ? {type: "LineString", coordinates: lines[0]}
: {type: "MultiLineString", coordinates: lines};
lines = [];
return result;
}
};
var sinkPolygon = {
polygonStart: noop,
lineStart: noop,
point: function(x, y) {
points.push([x, y]);
},
lineEnd: function() {
var n = points.length;
if (n) {
do points.push(points[0].slice()); while (++n < 4);
lines.push(points), points = [];
}
},
polygonEnd: noop,
result: function() {
if (!lines.length) return null;
var polygons = [],
holes = [];
// https://github.com/d3/d3/issues/1558
lines.forEach(function(ring) {
if (clockwise(ring)) polygons.push([ring]);
else holes.push(ring);
});
holes.forEach(function(hole) {
var point = hole[0];
polygons.some(function(polygon) {
if (contains(polygon[0], point)) {
polygon.push(hole);
return true;
}
}) || polygons.push([hole]);
});
lines = [];
return !polygons.length ? null
: polygons.length > 1 ? {type: "MultiPolygon", coordinates: polygons}
: {type: "Polygon", coordinates: polygons[0]};
}
};
var quincuncial = function(project) {
var dx = project(halfPi, 0)[0] - project(-halfPi, 0)[0];
function projectQuincuncial(lambda, phi) {
var t = abs(lambda) < halfPi,
p = project(t ? lambda : lambda > 0 ? lambda - pi : lambda + pi, phi),
x = (p[0] - p[1]) * sqrt1_2,
y = (p[0] + p[1]) * sqrt1_2;
if (t) return [x, y];
var d = dx * sqrt1_2,
s = x > 0 ^ y > 0 ? -1 : 1;
return [s * x - sign(y) * d, s * y - sign(x) * d];
}
if (project.invert) projectQuincuncial.invert = function(x0, y0) {
var x = (x0 + y0) * sqrt1_2,
y = (y0 - x0) * sqrt1_2,
t = abs(x) < 0.5 * dx && abs(y) < 0.5 * dx;
if (!t) {
var d = dx * sqrt1_2,
s = x > 0 ^ y > 0 ? -1 : 1,
x1 = -s * x0 + (y > 0 ? 1 : -1) * d,
y1 = -s * y0 + (x > 0 ? 1 : -1) * d;
x = (-x1 - y1) * sqrt1_2;
y = (x1 - y1) * sqrt1_2;
}
var p = project.invert(x, y);
if (!t) p[0] += x > 0 ? pi : -pi;
return p;
};
return d3Geo.geoProjection(projectQuincuncial)
.rotate([-90, -90, 45])
.clipAngle(180 - 1e-3);
};
var gringorten$1 = function() {
return quincuncial(gringortenRaw)
.scale(176.423);
};
var peirce = function() {
return quincuncial(guyouRaw)
.scale(111.48);
};
var quantize = function(input, digits) {
if (!(0 <= (digits = +digits) && digits <= 20)) throw new Error("invalid digits");
function quantizePoint(input) {
var n = input.length, i = 2, output = new Array(n);
output[0] = +input[0].toFixed(digits);
output[1] = +input[1].toFixed(digits);
while (i < n) output[i] = input[i], ++i;
return output;
}
function quantizePoints(input) {
return input.map(quantizePoint);
}
function quantizePolygon(input) {
return input.map(quantizePoints);
}
function quantizeGeometry(input) {
if (input == null) return input;
var output;
switch (input.type) {
case "GeometryCollection": output = {type: "GeometryCollection", geometries: input.geometries.map(quantizeGeometry)}; break;
case "Point": output = {type: "Point", coordinates: quantizePoint(input.coordinates)}; break;
case "MultiPoint": case "LineString": output = {type: input.type, coordinates: quantizePoints(input.coordinates)}; break;
case "MultiLineString": case "Polygon": output = {type: input.type, coordinates: quantizePolygon(input.coordinates)}; break;
case "MultiPolygon": output = {type: "MultiPolygon", coordinates: input.coordinates.map(quantizePolygon)}; break;
default: return input;
}
if (input.bbox != null) output.bbox = input.bbox;
return output;
}
function quantizeFeature(input) {
var output = {type: "Feature", properties: input.properties, geometry: quantizeGeometry(input.geometry)};
if (input.id != null) output.id = input.id;
if (input.bbox != null) output.bbox = input.bbox;
return output;
}
if (input != null) switch (input.type) {
case "Feature": return quantizeFeature(input);
case "FeatureCollection": {
var output = {type: "FeatureCollection", features: input.features.map(quantizeFeature)};
if (input.bbox != null) output.bbox = input.bbox;
return output;
}
default: return quantizeGeometry(input);
}
return input;
};
function rectangularPolyconicRaw(phi0) {
var sinPhi0 = sin(phi0);
function forward(lambda, phi) {
var A = sinPhi0 ? tan(lambda * sinPhi0 / 2) / sinPhi0 : lambda / 2;
if (!phi) return [2 * A, -phi0];
var E = 2 * atan(A * sin(phi)),
cotPhi = 1 / tan(phi);
return [
sin(E) * cotPhi,
phi + (1 - cos(E)) * cotPhi - phi0
];
}
// TODO return null for points outside outline.
forward.invert = function(x, y) {
if (abs(y += phi0) < epsilon) return [sinPhi0 ? 2 * atan(sinPhi0 * x / 2) / sinPhi0 : x, 0];
var k = x * x + y * y,
phi = 0,
i = 10, delta;
do {
var tanPhi = tan(phi),
secPhi = 1 / cos(phi),
j = k - 2 * y * phi + phi * phi;
phi -= delta = (tanPhi * j + 2 * (phi - y)) / (2 + j * secPhi * secPhi + 2 * (phi - y) * tanPhi);
} while (abs(delta) > epsilon && --i > 0);
var E = x * (tanPhi = tan(phi)),
A = tan(abs(y) < abs(phi + 1 / tanPhi) ? asin(E) * 0.5 : acos(E) * 0.5 + pi / 4) / sin(phi);
return [
sinPhi0 ? 2 * atan(sinPhi0 * A) / sinPhi0 : 2 * A,
phi
];
};
return forward;
}
var rectangularPolyconic = function() {
return parallel1(rectangularPolyconicRaw)
.scale(131.215);
};
var K = [
[0.9986, -0.062],
[1.0000, 0.0000],
[0.9986, 0.0620],
[0.9954, 0.1240],
[0.9900, 0.1860],
[0.9822, 0.2480],
[0.9730, 0.3100],
[0.9600, 0.3720],
[0.9427, 0.4340],
[0.9216, 0.4958],
[0.8962, 0.5571],
[0.8679, 0.6176],
[0.8350, 0.6769],
[0.7986, 0.7346],
[0.7597, 0.7903],
[0.7186, 0.8435],
[0.6732, 0.8936],
[0.6213, 0.9394],
[0.5722, 0.9761],
[0.5322, 1.0000]
];
K.forEach(function(d) {
d[1] *= 1.0144;
});
function robinsonRaw(lambda, phi) {
var i = min(18, abs(phi) * 36 / pi),
i0 = floor(i),
di = i - i0,
ax = (k = K[i0])[0],
ay = k[1],
bx = (k = K[++i0])[0],
by = k[1],
cx = (k = K[min(19, ++i0)])[0],
cy = k[1],
k;
return [
lambda * (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),
(phi > 0 ? halfPi : -halfPi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2)
];
}
robinsonRaw.invert = function(x, y) {
var yy = y / halfPi,
phi = yy * 90,
i = min(18, abs(phi / 5)),
i0 = max(0, floor(i));
do {
var ay = K[i0][1],
by = K[i0 + 1][1],
cy = K[min(19, i0 + 2)][1],
u = cy - ay,
v = cy - 2 * by + ay,
t = 2 * (abs(yy) - by) / u,
c = v / u,
di = t * (1 - c * t * (1 - 2 * c * t));
if (di >= 0 || i0 === 1) {
phi = (y >= 0 ? 5 : -5) * (di + i);
var j = 50, delta;
do {
i = min(18, abs(phi) / 5);
i0 = floor(i);
di = i - i0;
ay = K[i0][1];
by = K[i0 + 1][1];
cy = K[min(19, i0 + 2)][1];
phi -= (delta = (y >= 0 ? halfPi : -halfPi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2) - y) * degrees;
} while (abs(delta) > epsilon2 && --j > 0);
break;
}
} while (--i0 >= 0);
var ax = K[i0][0],
bx = K[i0 + 1][0],
cx = K[min(19, i0 + 2)][0];
return [
x / (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),
phi * radians
];
};
var robinson = function() {
return d3Geo.geoProjection(robinsonRaw)
.scale(152.63);
};
function satelliteVerticalRaw(P) {
function forward(lambda, phi) {
var cosPhi = cos(phi),
k = (P - 1) / (P - cosPhi * cos(lambda));
return [
k * cosPhi * sin(lambda),
k * sin(phi)
];
}
forward.invert = function(x, y) {
var rho2 = x * x + y * y,
rho = sqrt(rho2),
sinc = (P - sqrt(1 - rho2 * (P + 1) / (P - 1))) / ((P - 1) / rho + rho / (P - 1));
return [
atan2(x * sinc, rho * sqrt(1 - sinc * sinc)),
rho ? asin(y * sinc / rho) : 0
];
};
return forward;
}
function satelliteRaw(P, omega) {
var vertical = satelliteVerticalRaw(P);
if (!omega) return vertical;
var cosOmega = cos(omega),
sinOmega = sin(omega);
function forward(lambda, phi) {
var coordinates = vertical(lambda, phi),
y = coordinates[1],
A = y * sinOmega / (P - 1) + cosOmega;
return [
coordinates[0] * cosOmega / A,
y / A
];
}
forward.invert = function(x, y) {
var k = (P - 1) / (P - 1 - y * sinOmega);
return vertical.invert(k * x, k * y * cosOmega);
};
return forward;
}
var satellite = function() {
var distance = 2,
omega = 0,
m = d3Geo.geoProjectionMutator(satelliteRaw),
p = m(distance, omega);
// As a multiple of radius.
p.distance = function(_) {
if (!arguments.length) return distance;
return m(distance = +_, omega);
};
p.tilt = function(_) {
if (!arguments.length) return omega * degrees;
return m(distance, omega = _ * radians);
};
return p
.scale(432.147)
.clipAngle(acos(1 / distance) * degrees - 1e-6);
};
var epsilon$1 = 1e-4;
var epsilonInverse = 1e4;
var x0 = -180;
var x0e = x0 + epsilon$1;
var x1 = 180;
var x1e = x1 - epsilon$1;
var y0 = -90;
var y0e = y0 + epsilon$1;
var y1 = 90;
var y1e = y1 - epsilon$1;
function nonempty(coordinates) {
return coordinates.length > 0;
}
function quantize$1(x) {
return Math.floor(x * epsilonInverse) / epsilonInverse;
}
function normalizePoint(y) {
return y === y0 || y === y1 ? [0, y] : [x0, quantize$1(y)]; // pole or antimeridian?
}
function clampPoint(p) {
var x = p[0], y = p[1], clamped = false;
if (x <= x0e) x = x0, clamped = true;
else if (x >= x1e) x = x1, clamped = true;
if (y <= y0e) y = y0, clamped = true;
else if (y >= y1e) y = y1, clamped = true;
return clamped ? [x, y] : p;
}
function clampPoints(points) {
return points.map(clampPoint);
}
// For each ring, detect where it crosses the antimeridian or pole.
function extractFragments(rings, polygon, fragments) {
for (var j = 0, m = rings.length; j < m; ++j) {
var ring = rings[j].slice();
// By default, assume that this ring doesn’t need any stitching.
fragments.push({index: -1, polygon: polygon, ring: ring});
for (var i = 0, n = ring.length; i < n; ++i) {
var point = ring[i],
x = point[0],
y = point[1];
// If this is an antimeridian or polar point…
if (x <= x0e || x >= x1e || y <= y0e || y >= y1e) {
ring[i] = clampPoint(point);
// Advance through any antimeridian or polar points…
for (var k = i + 1; k < n; ++k) {
var pointk = ring[k],
xk = pointk[0],
yk = pointk[1];
if (xk > x0e && xk < x1e && yk > y0e && yk < y1e) break;
}
// If this was just a single antimeridian or polar point,
// we don’t need to cut this ring into a fragment;
// we can just leave it as-is.
if (k === i + 1) continue;
// Otherwise, if this is not the first point in the ring,
// cut the current fragment so that it ends at the current point.
// The current point is also normalized for later joining.
if (i) {
var fragmentBefore = {index: -1, polygon: polygon, ring: ring.slice(0, i + 1)};
fragmentBefore.ring[fragmentBefore.ring.length - 1] = normalizePoint(y);
fragments[fragments.length - 1] = fragmentBefore;
}
// If the ring started with an antimeridian fragment,
// we can ignore that fragment entirely.
else fragments.pop();
// If the remainder of the ring is an antimeridian fragment,
// move on to the next ring.
if (k >= n) break;
// Otherwise, add the remaining ring fragment and continue.
fragments.push({index: -1, polygon: polygon, ring: ring = ring.slice(k - 1)});
ring[0] = normalizePoint(ring[0][1]);
i = -1;
n = ring.length;
}
}
}
}
// Now stitch the fragments back together into rings.
function stitchFragments(fragments) {
var i, n = fragments.length;
// To connect the fragments start-to-end, create a simple index by end.
var fragmentByStart = {},
fragmentByEnd = {},
fragment,
start,
startFragment,
end,
endFragment;
// For each fragment…
for (i = 0; i < n; ++i) {
fragment = fragments[i];
start = fragment.ring[0];
end = fragment.ring[fragment.ring.length - 1];
// If this fragment is closed, add it as a standalone ring.
if (start[0] === end[0] && start[1] === end[1]) {
fragment.polygon.push(fragment.ring);
fragments[i] = null;
continue;
}
fragment.index = i;
fragmentByStart[start] = fragmentByEnd[end] = fragment;
}
// For each open fragment…
for (i = 0; i < n; ++i) {
fragment = fragments[i];
if (fragment) {
start = fragment.ring[0];
end = fragment.ring[fragment.ring.length - 1];
startFragment = fragmentByEnd[start];
endFragment = fragmentByStart[end];
delete fragmentByStart[start];
delete fragmentByEnd[end];
// If this fragment is closed, add it as a standalone ring.
if (start[0] === end[0] && start[1] === end[1]) {
fragment.polygon.push(fragment.ring);
continue;
}
if (startFragment) {
delete fragmentByEnd[start];
delete fragmentByStart[startFragment.ring[0]];
startFragment.ring.pop(); // drop the shared coordinate
fragments[startFragment.index] = null;
fragment = {index: -1, polygon: startFragment.polygon, ring: startFragment.ring.concat(fragment.ring)};
if (startFragment === endFragment) {
// Connect both ends to this single fragment to create a ring.
fragment.polygon.push(fragment.ring);
} else {
fragment.index = n++;
fragments.push(fragmentByStart[fragment.ring[0]] = fragmentByEnd[fragment.ring[fragment.ring.length - 1]] = fragment);
}
} else if (endFragment) {
delete fragmentByStart[end];
delete fragmentByEnd[endFragment.ring[endFragment.ring.length - 1]];
fragment.ring.pop(); // drop the shared coordinate
fragment = {index: n++, polygon: endFragment.polygon, ring: fragment.ring.concat(endFragment.ring)};
fragments[endFragment.index] = null;
fragments.push(fragmentByStart[fragment.ring[0]] = fragmentByEnd[fragment.ring[fragment.ring.length - 1]] = fragment);
} else {
fragment.ring.push(fragment.ring[0]); // close ring
fragment.polygon.push(fragment.ring);
}
}
}
}
function stitchFeature(input) {
var output = {type: "Feature", geometry: stitchGeometry(input.geometry)};
if (input.id != null) output.id = input.id;
if (input.bbox != null) output.bbox = input.bbox;
if (input.properties != null) output.properties = input.properties;
return output;
}
function stitchGeometry(input) {
if (input == null) return input;
var output, fragments, i, n;
switch (input.type) {
case "GeometryCollection": output = {type: "GeometryCollection", geometries: input.geometries.map(stitchGeometry)}; break;
case "Point": output = {type: "Point", coordinates: clampPoint(input.coordinates)}; break;
case "MultiPoint": case "LineString": output = {type: input.type, coordinates: clampPoints(input.coordinates)}; break;
case "MultiLineString": output = {type: "MultiLineString", coordinates: input.coordinates.map(clampPoints)}; break;
case "Polygon": {
var polygon = [];
extractFragments(input.coordinates, polygon, fragments = []);
stitchFragments(fragments);
output = {type: "Polygon", coordinates: polygon};
break;
}
case "MultiPolygon": {
fragments = [], i = -1, n = input.coordinates.length;
var polygons = new Array(n);
while (++i < n) extractFragments(input.coordinates[i], polygons[i] = [], fragments);
stitchFragments(fragments);
output = {type: "MultiPolygon", coordinates: polygons.filter(nonempty)};
break;
}
default: return input;
}
if (input.bbox != null) output.bbox = input.bbox;
return output;
}
var stitch = function(input) {
if (input == null) return input;
switch (input.type) {
case "Feature": return stitchFeature(input);
case "FeatureCollection": {
var output = {type: "FeatureCollection", features: input.features.map(stitchFeature)};
if (input.bbox != null) output.bbox = input.bbox;
return output;
}
default: return stitchGeometry(input);
}
};
function timesRaw(lambda, phi) {
var t = tan(phi / 2),
s = sin(quarterPi * t);
return [
lambda * (0.74482 - 0.34588 * s * s),
1.70711 * t
];
}
timesRaw.invert = function(x, y) {
var t = y / 1.70711,
s = sin(quarterPi * t);
return [
x / (0.74482 - 0.34588 * s * s),
2 * atan(t)
];
};
var times = function() {
return d3Geo.geoProjection(timesRaw)
.scale(146.153);
};
// Compute the origin as the midpoint of the two reference points.
// Rotate one of the reference points by the origin.
// Apply the spherical law of sines to compute gamma rotation.
var twoPoint = function(raw, p0, p1) {
var i = d3Geo.geoInterpolate(p0, p1),
o = i(0.5),
a = d3Geo.geoRotation([-o[0], -o[1]])(p0),
b = i.distance / 2,
y = -asin(sin(a[1] * radians) / sin(b)),
R = [-o[0], -o[1], -(a[0] > 0 ? pi - y : y) * degrees],
p = d3Geo.geoProjection(raw(b)).rotate(R),
r = d3Geo.geoRotation(R),
center = p.center;
delete p.rotate;
p.center = function(_) {
return arguments.length ? center(r(_)) : r.invert(center());
};
return p
.clipAngle(90);
};
function twoPointAzimuthalRaw(d) {
var cosd = cos(d);
function forward(lambda, phi) {
var coordinates = d3Geo.geoGnomonicRaw(lambda, phi);
coordinates[0] *= cosd;
return coordinates;
}
forward.invert = function(x, y) {
return d3Geo.geoGnomonicRaw.invert(x / cosd, y);
};
return forward;
}
function twoPointAzimuthalUsa() {
return twoPointAzimuthal([-158, 21.5], [-77, 39])
.clipAngle(60)
.scale(400);
}
function twoPointAzimuthal(p0, p1) {
return twoPoint(twoPointAzimuthalRaw, p0, p1);
}
// TODO clip to ellipse
function twoPointEquidistantRaw(z0) {
if (!(z0 *= 2)) return d3Geo.geoAzimuthalEquidistantRaw;
var lambdaa = -z0 / 2,
lambdab = -lambdaa,
z02 = z0 * z0,
tanLambda0 = tan(lambdab),
S = 0.5 / sin(lambdab);
function forward(lambda, phi) {
var za = acos(cos(phi) * cos(lambda - lambdaa)),
zb = acos(cos(phi) * cos(lambda - lambdab)),
ys = phi < 0 ? -1 : 1;
za *= za, zb *= zb;
return [
(za - zb) / (2 * z0),
ys * sqrt(4 * z02 * zb - (z02 - za + zb) * (z02 - za + zb)) / (2 * z0)
];
}
forward.invert = function(x, y) {
var y2 = y * y,
cosza = cos(sqrt(y2 + (t = x + lambdaa) * t)),
coszb = cos(sqrt(y2 + (t = x + lambdab) * t)),
t,
d;
return [
atan2(d = cosza - coszb, t = (cosza + coszb) * tanLambda0),
(y < 0 ? -1 : 1) * acos(sqrt(t * t + d * d) * S)
];
};
return forward;
}
function twoPointEquidistantUsa() {
return twoPointEquidistant([-158, 21.5], [-77, 39])
.clipAngle(130)
.scale(122.571);
}
function twoPointEquidistant(p0, p1) {
return twoPoint(twoPointEquidistantRaw, p0, p1);
}
function vanDerGrintenRaw(lambda, phi) {
if (abs(phi) < epsilon) return [lambda, 0];
var sinTheta = abs(phi / halfPi),
theta = asin(sinTheta);
if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, sign(phi) * pi * tan(theta / 2)];
var cosTheta = cos(theta),
A = abs(pi / lambda - lambda / pi) / 2,
A2 = A * A,
G = cosTheta / (sinTheta + cosTheta - 1),
P = G * (2 / sinTheta - 1),
P2 = P * P,
P2_A2 = P2 + A2,
G_P2 = G - P2,
Q = A2 + G;
return [
sign(lambda) * pi * (A * G_P2 + sqrt(A2 * G_P2 * G_P2 - P2_A2 * (G * G - P2))) / P2_A2,
sign(phi) * pi * (P * Q - A * sqrt((A2 + 1) * P2_A2 - Q * Q)) / P2_A2
];
}
vanDerGrintenRaw.invert = function(x, y) {
if (abs(y) < epsilon) return [x, 0];
if (abs(x) < epsilon) return [0, halfPi * sin(2 * atan(y / pi))];
var x2 = (x /= pi) * x,
y2 = (y /= pi) * y,
x2_y2 = x2 + y2,
z = x2_y2 * x2_y2,
c1 = -abs(y) * (1 + x2_y2),
c2 = c1 - 2 * y2 + x2,
c3 = -2 * c1 + 1 + 2 * y2 + z,
d = y2 / c3 + (2 * c2 * c2 * c2 / (c3 * c3 * c3) - 9 * c1 * c2 / (c3 * c3)) / 27,
a1 = (c1 - c2 * c2 / (3 * c3)) / c3,
m1 = 2 * sqrt(-a1 / 3),
theta1 = acos(3 * d / (a1 * m1)) / 3;
return [
pi * (x2_y2 - 1 + sqrt(1 + 2 * (x2 - y2) + z)) / (2 * x),
sign(y) * pi * (-m1 * cos(theta1 + pi / 3) - c2 / (3 * c3))
];
};
var vanDerGrinten = function() {
return d3Geo.geoProjection(vanDerGrintenRaw)
.scale(79.4183);
};
function vanDerGrinten2Raw(lambda, phi) {
if (abs(phi) < epsilon) return [lambda, 0];
var sinTheta = abs(phi / halfPi),
theta = asin(sinTheta);
if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, sign(phi) * pi * tan(theta / 2)];
var cosTheta = cos(theta),
A = abs(pi / lambda - lambda / pi) / 2,
A2 = A * A,
x1 = cosTheta * (sqrt(1 + A2) - A * cosTheta) / (1 + A2 * sinTheta * sinTheta);
return [
sign(lambda) * pi * x1,
sign(phi) * pi * sqrt(1 - x1 * (2 * A + x1))
];
}
vanDerGrinten2Raw.invert = function(x, y) {
if (!x) return [0, halfPi * sin(2 * atan(y / pi))];
var x1 = abs(x / pi),
A = (1 - x1 * x1 - (y /= pi) * y) / (2 * x1),
A2 = A * A,
B = sqrt(A2 + 1);
return [
sign(x) * pi * (B - A),
sign(y) * halfPi * sin(2 * atan2(sqrt((1 - 2 * A * x1) * (A + B) - x1), sqrt(B + A + x1)))
];
};
var vanDerGrinten2 = function() {
return d3Geo.geoProjection(vanDerGrinten2Raw)
.scale(79.4183);
};
function vanDerGrinten3Raw(lambda, phi) {
if (abs(phi) < epsilon) return [lambda, 0];
var sinTheta = phi / halfPi,
theta = asin(sinTheta);
if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, pi * tan(theta / 2)];
var A = (pi / lambda - lambda / pi) / 2,
y1 = sinTheta / (1 + cos(theta));
return [
pi * (sign(lambda) * sqrt(A * A + 1 - y1 * y1) - A),
pi * y1
];
}
vanDerGrinten3Raw.invert = function(x, y) {
if (!y) return [x, 0];
var y1 = y / pi,
A = (pi * pi * (1 - y1 * y1) - x * x) / (2 * pi * x);
return [
x ? pi * (sign(x) * sqrt(A * A + 1) - A) : 0,
halfPi * sin(2 * atan(y1))
];
};
var vanDerGrinten3 = function() {
return d3Geo.geoProjection(vanDerGrinten3Raw)
.scale(79.4183);
};
function vanDerGrinten4Raw(lambda, phi) {
if (!phi) return [lambda, 0];
var phi0 = abs(phi);
if (!lambda || phi0 === halfPi) return [0, phi];
var B = phi0 / halfPi,
B2 = B * B,
C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)),
C2 = C * C,
BC = B * C,
B_C2 = B2 + C2 + 2 * BC,
B_3C = B + 3 * C,
lambda0 = lambda / halfPi,
lambda1 = lambda0 + 1 / lambda0,
D = sign(abs(lambda) - halfPi) * sqrt(lambda1 * lambda1 - 4),
D2 = D * D,
F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + 12 * BC * C2 + 4 * C2 * C2),
x1 = (D * (B_C2 + C2 - 1) + 2 * sqrt(F)) / (4 * B_C2 + D2);
return [
sign(lambda) * halfPi * x1,
sign(phi) * halfPi * sqrt(1 + D * abs(x1) - x1 * x1)
];
}
vanDerGrinten4Raw.invert = function(x, y) {
var delta;
if (!x || !y) return [x, y];
y /= pi;
var x1 = sign(x) * x / halfPi,
D = (x1 * x1 - 1 + 4 * y * y) / abs(x1),
D2 = D * D,
B = 2 * y,
i = 50;
do {
var B2 = B * B,
C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)),
C_ = (3 * B - B2 * B - 10) / (2 * B2 * B),
C2 = C * C,
BC = B * C,
B_C = B + C,
B_C2 = B_C * B_C,
B_3C = B + 3 * C,
F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + C2 * (12 * BC + 4 * C2)),
F_ = -2 * B_C * (4 * BC * C2 + (1 - 4 * B2 + 3 * B2 * B2) * (1 + C_) + C2 * (-6 + 14 * B2 - D2 + (-8 + 8 * B2 - 2 * D2) * C_) + BC * (-8 + 12 * B2 + (-10 + 10 * B2 - D2) * C_)),
sqrtF = sqrt(F),
f = D * (B_C2 + C2 - 1) + 2 * sqrtF - x1 * (4 * B_C2 + D2),
f_ = D * (2 * C * C_ + 2 * B_C * (1 + C_)) + F_ / sqrtF - 8 * B_C * (D * (-1 + C2 + B_C2) + 2 * sqrtF) * (1 + C_) / (D2 + 4 * B_C2);
B -= delta = f / f_;
} while (delta > epsilon && --i > 0);
return [
sign(x) * (sqrt(D * D + 4) + D) * pi / 4,
halfPi * B
];
};
var vanDerGrinten4 = function() {
return d3Geo.geoProjection(vanDerGrinten4Raw)
.scale(127.16);
};
var A = 4 * pi + 3 * sqrt(3);
var B = 2 * sqrt(2 * pi * sqrt(3) / A);
var wagner4Raw = mollweideBromleyRaw(B * sqrt(3) / pi, B, A / 6);
var wagner4 = function() {
return d3Geo.geoProjection(wagner4Raw)
.scale(176.84);
};
function wagner6Raw(lambda, phi) {
return [lambda * sqrt(1 - 3 * phi * phi / (pi * pi)), phi];
}
wagner6Raw.invert = function(x, y) {
return [x / sqrt(1 - 3 * y * y / (pi * pi)), y];
};
var wagner6 = function() {
return d3Geo.geoProjection(wagner6Raw)
.scale(152.63);
};
function wagner7Raw(lambda, phi) {
var s = 0.90631 * sin(phi),
c0 = sqrt(1 - s * s),
c1 = sqrt(2 / (1 + c0 * cos(lambda /= 3)));
return [
2.66723 * c0 * c1 * sin(lambda),
1.24104 * s * c1
];
}
wagner7Raw.invert = function(x, y) {
var t1 = x / 2.66723,
t2 = y / 1.24104,
p = sqrt(t1 * t1 + t2 * t2),
c = 2 * asin(p / 2);
return [
3 * atan2(x * tan(c), 2.66723 * p),
p && asin(y * sin(c) / (1.24104 * 0.90631 * p))
];
};
var wagner7 = function() {
return d3Geo.geoProjection(wagner7Raw)
.scale(172.632);
};
function wiechelRaw(lambda, phi) {
var cosPhi = cos(phi),
sinPhi = cos(lambda) * cosPhi,
sin1_Phi = 1 - sinPhi,
cosLambda = cos(lambda = atan2(sin(lambda) * cosPhi, -sin(phi))),
sinLambda = sin(lambda);
cosPhi = sqrt(1 - sinPhi * sinPhi);
return [
sinLambda * cosPhi - cosLambda * sin1_Phi,
-cosLambda * cosPhi - sinLambda * sin1_Phi
];
}
wiechelRaw.invert = function(x, y) {
var w = (x * x + y * y) / -2,
k = sqrt(-w * (2 + w)),
b = y * w + x * k,
a = x * w - y * k,
D = sqrt(a * a + b * b);
return [
atan2(k * b, D * (1 + w)),
D ? -asin(k * a / D) : 0
];
};
var wiechel = function() {
return d3Geo.geoProjection(wiechelRaw)
.rotate([0, -90, 45])
.scale(124.75)
.clipAngle(180 - 1e-3);
};
function winkel3Raw(lambda, phi) {
var coordinates = aitoffRaw(lambda, phi);
return [
(coordinates[0] + lambda / halfPi) / 2,
(coordinates[1] + phi) / 2
];
}
winkel3Raw.invert = function(x, y) {
var lambda = x, phi = y, i = 25;
do {
var cosphi = cos(phi),
sinphi = sin(phi),
sin_2phi = sin(2 * phi),
sin2phi = sinphi * sinphi,
cos2phi = cosphi * cosphi,
sinlambda = sin(lambda),
coslambda_2 = cos(lambda / 2),
sinlambda_2 = sin(lambda / 2),
sin2lambda_2 = sinlambda_2 * sinlambda_2,
C = 1 - cos2phi * coslambda_2 * coslambda_2,
E = C ? acos(cosphi * coslambda_2) * sqrt(F = 1 / C) : F = 0,
F,
fx = 0.5 * (2 * E * cosphi * sinlambda_2 + lambda / halfPi) - x,
fy = 0.5 * (E * sinphi + phi) - y,
dxdlambda = 0.5 * F * (cos2phi * sin2lambda_2 + E * cosphi * coslambda_2 * sin2phi) + 0.5 / halfPi,
dxdphi = F * (sinlambda * sin_2phi / 4 - E * sinphi * sinlambda_2),
dydlambda = 0.125 * F * (sin_2phi * sinlambda_2 - E * sinphi * cos2phi * sinlambda),
dydphi = 0.5 * F * (sin2phi * coslambda_2 + E * sin2lambda_2 * cosphi) + 0.5,
denominator = dxdphi * dydlambda - dydphi * dxdlambda,
dlambda = (fy * dxdphi - fx * dydphi) / denominator,
dphi = (fx * dydlambda - fy * dxdlambda) / denominator;
lambda -= dlambda, phi -= dphi;
} while ((abs(dlambda) > epsilon || abs(dphi) > epsilon) && --i > 0);
return [lambda, phi];
};
var winkel3 = function() {
return d3Geo.geoProjection(winkel3Raw)
.scale(158.837);
};
exports.geoAiry = airy;
exports.geoAiryRaw = airyRaw;
exports.geoAitoff = aitoff;
exports.geoAitoffRaw = aitoffRaw;
exports.geoArmadillo = armadillo;
exports.geoArmadilloRaw = armadilloRaw;
exports.geoAugust = august;
exports.geoAugustRaw = augustRaw;
exports.geoBaker = baker;
exports.geoBakerRaw = bakerRaw;
exports.geoBerghaus = berghaus;
exports.geoBerghausRaw = berghausRaw;
exports.geoBoggs = boggs;
exports.geoBoggsRaw = boggsRaw;
exports.geoBonne = bonne;
exports.geoBonneRaw = bonneRaw;
exports.geoBottomley = bottomley;
exports.geoBottomleyRaw = bottomleyRaw;
exports.geoBromley = bromley;
exports.geoBromleyRaw = bromleyRaw;
exports.geoChamberlin = chamberlin;
exports.geoChamberlinRaw = chamberlinRaw;
exports.geoChamberlinAfrica = chamberlinAfrica;
exports.geoCollignon = collignon;
exports.geoCollignonRaw = collignonRaw;
exports.geoCraig = craig;
exports.geoCraigRaw = craigRaw;
exports.geoCraster = craster;
exports.geoCrasterRaw = crasterRaw;
exports.geoCylindricalEqualArea = cylindricalEqualArea;
exports.geoCylindricalEqualAreaRaw = cylindricalEqualAreaRaw;
exports.geoCylindricalStereographic = cylindricalStereographic;
exports.geoCylindricalStereographicRaw = cylindricalStereographicRaw;
exports.geoEckert1 = eckert1;
exports.geoEckert1Raw = eckert1Raw;
exports.geoEckert2 = eckert2;
exports.geoEckert2Raw = eckert2Raw;
exports.geoEckert3 = eckert3;
exports.geoEckert3Raw = eckert3Raw;
exports.geoEckert4 = eckert4;
exports.geoEckert4Raw = eckert4Raw;
exports.geoEckert5 = eckert5;
exports.geoEckert5Raw = eckert5Raw;
exports.geoEckert6 = eckert6;
exports.geoEckert6Raw = eckert6Raw;
exports.geoEisenlohr = eisenlohr;
exports.geoEisenlohrRaw = eisenlohrRaw;
exports.geoFahey = fahey;
exports.geoFaheyRaw = faheyRaw;
exports.geoFoucaut = foucaut;
exports.geoFoucautRaw = foucautRaw;
exports.geoGilbert = gilbert;
exports.geoGingery = gingery;
exports.geoGingeryRaw = gingeryRaw;
exports.geoGinzburg4 = ginzburg4;
exports.geoGinzburg4Raw = ginzburg4Raw;
exports.geoGinzburg5 = ginzburg5;
exports.geoGinzburg5Raw = ginzburg5Raw;
exports.geoGinzburg6 = ginzburg6;
exports.geoGinzburg6Raw = ginzburg6Raw;
exports.geoGinzburg8 = ginzburg8;
exports.geoGinzburg8Raw = ginzburg8Raw;
exports.geoGinzburg9 = ginzburg9;
exports.geoGinzburg9Raw = ginzburg9Raw;
exports.geoGringorten = gringorten;
exports.geoGringortenRaw = gringortenRaw;
exports.geoGuyou = guyou;
exports.geoGuyouRaw = guyouRaw;
exports.geoHammer = hammer;
exports.geoHammerRaw = hammerRaw;
exports.geoHammerRetroazimuthal = hammerRetroazimuthal;
exports.geoHammerRetroazimuthalRaw = hammerRetroazimuthalRaw;
exports.geoHealpix = healpix;
exports.geoHealpixRaw = healpixRaw;
exports.geoHill = hill;
exports.geoHillRaw = hillRaw;
exports.geoHomolosine = homolosine;
exports.geoHomolosineRaw = homolosineRaw;
exports.geoInterrupt = interrupt;
exports.geoInterruptedBoggs = boggs$1;
exports.geoInterruptedHomolosine = homolosine$1;
exports.geoInterruptedMollweide = mollweide$1;
exports.geoInterruptedMollweideHemispheres = mollweideHemispheres;
exports.geoInterruptedSinuMollweide = sinuMollweide$1;
exports.geoInterruptedSinusoidal = sinusoidal$1;
exports.geoKavrayskiy7 = kavrayskiy7;
exports.geoKavrayskiy7Raw = kavrayskiy7Raw;
exports.geoLagrange = lagrange;
exports.geoLagrangeRaw = lagrangeRaw;
exports.geoLarrivee = larrivee;
exports.geoLarriveeRaw = larriveeRaw;
exports.geoLaskowski = laskowski;
exports.geoLaskowskiRaw = laskowskiRaw;
exports.geoLittrow = littrow;
exports.geoLittrowRaw = littrowRaw;
exports.geoLoximuthal = loximuthal;
exports.geoLoximuthalRaw = loximuthalRaw;
exports.geoMiller = miller;
exports.geoMillerRaw = millerRaw;
exports.geoModifiedStereographic = modifiedStereographic;
exports.geoModifiedStereographicRaw = modifiedStereographicRaw;
exports.geoModifiedStereographicAlaska = modifiedStereographicAlaska;
exports.geoModifiedStereographicGs48 = modifiedStereographicGs48;
exports.geoModifiedStereographicGs50 = modifiedStereographicGs50;
exports.geoModifiedStereographicMiller = modifiedStereographicMiller;
exports.geoModifiedStereographicLee = modifiedStereographicLee;
exports.geoMollweide = mollweide;
exports.geoMollweideRaw = mollweideRaw;
exports.geoMtFlatPolarParabolic = mtFlatPolarParabolic;
exports.geoMtFlatPolarParabolicRaw = mtFlatPolarParabolicRaw;
exports.geoMtFlatPolarQuartic = mtFlatPolarQuartic;
exports.geoMtFlatPolarQuarticRaw = mtFlatPolarQuarticRaw;
exports.geoMtFlatPolarSinusoidal = mtFlatPolarSinusoidal;
exports.geoMtFlatPolarSinusoidalRaw = mtFlatPolarSinusoidalRaw;
exports.geoNaturalEarth = naturalEarth;
exports.geoNaturalEarthRaw = naturalEarthRaw;
exports.geoNaturalEarth2 = naturalEarth2;
exports.geoNaturalEarth2Raw = naturalEarth2Raw;
exports.geoNellHammer = nellHammer;
exports.geoNellHammerRaw = nellHammerRaw;
exports.geoPatterson = patterson;
exports.geoPattersonRaw = pattersonRaw;
exports.geoPolyconic = polyconic;
exports.geoPolyconicRaw = polyconicRaw;
exports.geoPolyhedral = polyhedral;
exports.geoPolyhedralButterfly = butterfly;
exports.geoPolyhedralCollignon = collignon$1;
exports.geoPolyhedralWaterman = waterman;
exports.geoProject = index;
exports.geoGringortenQuincuncial = gringorten$1;
exports.geoPeirceQuincuncial = peirce;
exports.geoPierceQuincuncial = peirce;
exports.geoQuantize = quantize;
exports.geoQuincuncial = quincuncial;
exports.geoRectangularPolyconic = rectangularPolyconic;
exports.geoRectangularPolyconicRaw = rectangularPolyconicRaw;
exports.geoRobinson = robinson;
exports.geoRobinsonRaw = robinsonRaw;
exports.geoSatellite = satellite;
exports.geoSatelliteRaw = satelliteRaw;
exports.geoSinuMollweide = sinuMollweide;
exports.geoSinuMollweideRaw = sinuMollweideRaw;
exports.geoSinusoidal = sinusoidal;
exports.geoSinusoidalRaw = sinusoidalRaw;
exports.geoStitch = stitch;
exports.geoTimes = times;
exports.geoTimesRaw = timesRaw;
exports.geoTwoPointAzimuthal = twoPointAzimuthal;
exports.geoTwoPointAzimuthalRaw = twoPointAzimuthalRaw;
exports.geoTwoPointAzimuthalUsa = twoPointAzimuthalUsa;
exports.geoTwoPointEquidistant = twoPointEquidistant;
exports.geoTwoPointEquidistantRaw = twoPointEquidistantRaw;
exports.geoTwoPointEquidistantUsa = twoPointEquidistantUsa;
exports.geoVanDerGrinten = vanDerGrinten;
exports.geoVanDerGrintenRaw = vanDerGrintenRaw;
exports.geoVanDerGrinten2 = vanDerGrinten2;
exports.geoVanDerGrinten2Raw = vanDerGrinten2Raw;
exports.geoVanDerGrinten3 = vanDerGrinten3;
exports.geoVanDerGrinten3Raw = vanDerGrinten3Raw;
exports.geoVanDerGrinten4 = vanDerGrinten4;
exports.geoVanDerGrinten4Raw = vanDerGrinten4Raw;
exports.geoWagner4 = wagner4;
exports.geoWagner4Raw = wagner4Raw;
exports.geoWagner6 = wagner6;
exports.geoWagner6Raw = wagner6Raw;
exports.geoWagner7 = wagner7;
exports.geoWagner7Raw = wagner7Raw;
exports.geoWiechel = wiechel;
exports.geoWiechelRaw = wiechelRaw;
exports.geoWinkel3 = winkel3;
exports.geoWinkel3Raw = winkel3Raw;
Object.defineProperty(exports, '__esModule', { value: true });
})));
// https://d3js.org/d3-geo/ Version 1.6.4. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3));
}(this, function (exports,d3Array) { 'use strict';
// Adds floating point numbers with twice the normal precision.
// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
// 305–363 (1997).
// Code adapted from GeographicLib by Charles F. F. Karney,
// http://geographiclib.sourceforge.net/
function adder() {
return new Adder;
}
function Adder() {
this.reset();
}
Adder.prototype = {
constructor: Adder,
reset: function() {
this.s = // rounded value
this.t = 0; // exact error
},
add: function(y) {
add(temp, y, this.t);
add(this, temp.s, this.s);
if (this.s) this.t += temp.t;
else this.s = temp.t;
},
valueOf: function() {
return this.s;
}
};
var temp = new Adder;
function add(adder, a, b) {
var x = adder.s = a + b,
bv = x - a,
av = x - bv;
adder.t = (a - av) + (b - bv);
}
var epsilon = 1e-6;
var epsilon2 = 1e-12;
var pi = Math.PI;
var halfPi = pi / 2;
var quarterPi = pi / 4;
var tau = pi * 2;
var degrees = 180 / pi;
var radians = pi / 180;
var abs = Math.abs;
var atan = Math.atan;
var atan2 = Math.atan2;
var cos = Math.cos;
var ceil = Math.ceil;
var exp = Math.exp;
var log = Math.log;
var pow = Math.pow;
var sin = Math.sin;
var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };
var sqrt = Math.sqrt;
var tan = Math.tan;
function acos(x) {
return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
}
function asin(x) {
return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);
}
function haversin(x) {
return (x = sin(x / 2)) * x;
}
function noop() {}
function streamGeometry(geometry, stream) {
if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {
streamGeometryType[geometry.type](geometry, stream);
}
}
var streamObjectType = {
Feature: function(object, stream) {
streamGeometry(object.geometry, stream);
},
FeatureCollection: function(object, stream) {
var features = object.features, i = -1, n = features.length;
while (++i < n) streamGeometry(features[i].geometry, stream);
}
};
var streamGeometryType = {
Sphere: function(object, stream) {
stream.sphere();
},
Point: function(object, stream) {
object = object.coordinates;
stream.point(object[0], object[1], object[2]);
},
MultiPoint: function(object, stream) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);
},
LineString: function(object, stream) {
streamLine(object.coordinates, stream, 0);
},
MultiLineString: function(object, stream) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) streamLine(coordinates[i], stream, 0);
},
Polygon: function(object, stream) {
streamPolygon(object.coordinates, stream);
},
MultiPolygon: function(object, stream) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) streamPolygon(coordinates[i], stream);
},
GeometryCollection: function(object, stream) {
var geometries = object.geometries, i = -1, n = geometries.length;
while (++i < n) streamGeometry(geometries[i], stream);
}
};
function streamLine(coordinates, stream, closed) {
var i = -1, n = coordinates.length - closed, coordinate;
stream.lineStart();
while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);
stream.lineEnd();
}
function streamPolygon(coordinates, stream) {
var i = -1, n = coordinates.length;
stream.polygonStart();
while (++i < n) streamLine(coordinates[i], stream, 1);
stream.polygonEnd();
}
function geoStream(object, stream) {
if (object && streamObjectType.hasOwnProperty(object.type)) {
streamObjectType[object.type](object, stream);
} else {
streamGeometry(object, stream);
}
}
var areaRingSum = adder();
var areaSum = adder();
var lambda00;
var phi00;
var lambda0;
var cosPhi0;
var sinPhi0;
var areaStream = {
point: noop,
lineStart: noop,
lineEnd: noop,
polygonStart: function() {
areaRingSum.reset();
areaStream.lineStart = areaRingStart;
areaStream.lineEnd = areaRingEnd;
},
polygonEnd: function() {
var areaRing = +areaRingSum;
areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);
this.lineStart = this.lineEnd = this.point = noop;
},
sphere: function() {
areaSum.add(tau);
}
};
function areaRingStart() {
areaStream.point = areaPointFirst;
}
function areaRingEnd() {
areaPoint(lambda00, phi00);
}
function areaPointFirst(lambda, phi) {
areaStream.point = areaPoint;
lambda00 = lambda, phi00 = phi;
lambda *= radians, phi *= radians;
lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);
}
function areaPoint(lambda, phi) {
lambda *= radians, phi *= radians;
phi = phi / 2 + quarterPi; // half the angular distance from south pole
// Spherical excess E for a spherical triangle with vertices: south pole,
// previous point, current point. Uses a formula derived from Cagnoli’s
// theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
var dLambda = lambda - lambda0,
sdLambda = dLambda >= 0 ? 1 : -1,
adLambda = sdLambda * dLambda,
cosPhi = cos(phi),
sinPhi = sin(phi),
k = sinPhi0 * sinPhi,
u = cosPhi0 * cosPhi + k * cos(adLambda),
v = k * sdLambda * sin(adLambda);
areaRingSum.add(atan2(v, u));
// Advance the previous points.
lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;
}
function area(object) {
areaSum.reset();
geoStream(object, areaStream);
return areaSum * 2;
}
function spherical(cartesian) {
return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];
}
function cartesian(spherical) {
var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);
return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];
}
function cartesianDot(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
function 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]];
}
// TODO return a
function cartesianAddInPlace(a, b) {
a[0] += b[0], a[1] += b[1], a[2] += b[2];
}
function cartesianScale(vector, k) {
return [vector[0] * k, vector[1] * k, vector[2] * k];
}
// TODO return d
function cartesianNormalizeInPlace(d) {
var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
d[0] /= l, d[1] /= l, d[2] /= l;
}
function cartesianEqual(a, b) {
var dx = b[0] - a[0],
dy = b[1] - a[1],
dz = b[2] - a[2];
return dx * dx + dy * dy + dz * dz < epsilon2 * epsilon2;
}
var lambda0$1;
var phi0;
var lambda1;
var phi1;
var lambda2;
var lambda00$1;
var phi00$1;
var p0;
var deltaSum = adder();
var ranges;
var range$1;
var boundsStream = {
point: boundsPoint,
lineStart: boundsLineStart,
lineEnd: boundsLineEnd,
polygonStart: function() {
boundsStream.point = boundsRingPoint;
boundsStream.lineStart = boundsRingStart;
boundsStream.lineEnd = boundsRingEnd;
deltaSum.reset();
areaStream.polygonStart();
},
polygonEnd: function() {
areaStream.polygonEnd();
boundsStream.point = boundsPoint;
boundsStream.lineStart = boundsLineStart;
boundsStream.lineEnd = boundsLineEnd;
if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90);
else if (deltaSum > epsilon) phi1 = 90;
else if (deltaSum < -epsilon) phi0 = -90;
range$1[0] = lambda0$1, range$1[1] = lambda1;
}
};
function boundsPoint(lambda, phi) {
ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]);
if (phi < phi0) phi0 = phi;
if (phi > phi1) phi1 = phi;
}
function linePoint(lambda, phi) {
var p = cartesian([lambda * radians, phi * radians]);
if (p0) {
var normal = cartesianCross(p0, p),
equatorial = [normal[1], -normal[0], 0],
inflection = cartesianCross(equatorial, normal);
cartesianNormalizeInPlace(inflection);
inflection = spherical(inflection);
var delta = lambda - lambda2,
sign = delta > 0 ? 1 : -1,
lambdai = inflection[0] * degrees * sign,
phii,
antimeridian = abs(delta) > 180;
if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
phii = inflection[1] * degrees;
if (phii > phi1) phi1 = phii;
} else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
phii = -inflection[1] * degrees;
if (phii < phi0) phi0 = phii;
} else {
if (phi < phi0) phi0 = phi;
if (phi > phi1) phi1 = phi;
}
if (antimeridian) {
if (lambda < lambda2) {
if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;
} else {
if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;
}
} else {
if (lambda1 >= lambda0$1) {
if (lambda < lambda0$1) lambda0$1 = lambda;
if (lambda > lambda1) lambda1 = lambda;
} else {
if (lambda > lambda2) {
if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;
} else {
if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;
}
}
}
} else {
ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]);
}
if (phi < phi0) phi0 = phi;
if (phi > phi1) phi1 = phi;
p0 = p, lambda2 = lambda;
}
function boundsLineStart() {
boundsStream.point = linePoint;
}
function boundsLineEnd() {
range$1[0] = lambda0$1, range$1[1] = lambda1;
boundsStream.point = boundsPoint;
p0 = null;
}
function boundsRingPoint(lambda, phi) {
if (p0) {
var delta = lambda - lambda2;
deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);
} else {
lambda00$1 = lambda, phi00$1 = phi;
}
areaStream.point(lambda, phi);
linePoint(lambda, phi);
}
function boundsRingStart() {
areaStream.lineStart();
}
function boundsRingEnd() {
boundsRingPoint(lambda00$1, phi00$1);
areaStream.lineEnd();
if (abs(deltaSum) > epsilon) lambda0$1 = -(lambda1 = 180);
range$1[0] = lambda0$1, range$1[1] = lambda1;
p0 = null;
}
// Finds the left-right distance between two longitudes.
// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want
// the distance between ±180° to be 360°.
function angle(lambda0, lambda1) {
return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;
}
function rangeCompare(a, b) {
return a[0] - b[0];
}
function rangeContains(range, x) {
return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
}
function bounds(feature) {
var i, n, a, b, merged, deltaMax, delta;
phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity);
ranges = [];
geoStream(feature, boundsStream);
// First, sort ranges by their minimum longitudes.
if (n = ranges.length) {
ranges.sort(rangeCompare);
// Then, merge any ranges that overlap.
for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {
b = ranges[i];
if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {
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);
}
}
// Finally, find the largest gap between the merged ranges.
// The final bounding box will be the inverse of this gap.
for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {
b = merged[i];
if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1];
}
}
ranges = range$1 = null;
return lambda0$1 === Infinity || phi0 === Infinity
? [[NaN, NaN], [NaN, NaN]]
: [[lambda0$1, phi0], [lambda1, phi1]];
}
var W0;
var W1;
var X0;
var Y0;
var Z0;
var X1;
var Y1;
var Z1;
var X2;
var Y2;
var Z2;
var lambda00$2;
var phi00$2;
var x0;
var y0;
var z0;
// previous point
var centroidStream = {
sphere: noop,
point: centroidPoint,
lineStart: centroidLineStart,
lineEnd: centroidLineEnd,
polygonStart: function() {
centroidStream.lineStart = centroidRingStart;
centroidStream.lineEnd = centroidRingEnd;
},
polygonEnd: function() {
centroidStream.lineStart = centroidLineStart;
centroidStream.lineEnd = centroidLineEnd;
}
};
// Arithmetic mean of Cartesian vectors.
function centroidPoint(lambda, phi) {
lambda *= radians, phi *= radians;
var cosPhi = cos(phi);
centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));
}
function centroidPointCartesian(x, y, z) {
++W0;
X0 += (x - X0) / W0;
Y0 += (y - Y0) / W0;
Z0 += (z - Z0) / W0;
}
function centroidLineStart() {
centroidStream.point = centroidLinePointFirst;
}
function centroidLinePointFirst(lambda, phi) {
lambda *= radians, phi *= radians;
var cosPhi = cos(phi);
x0 = cosPhi * cos(lambda);
y0 = cosPhi * sin(lambda);
z0 = sin(phi);
centroidStream.point = centroidLinePoint;
centroidPointCartesian(x0, y0, z0);
}
function centroidLinePoint(lambda, phi) {
lambda *= radians, phi *= radians;
var cosPhi = cos(phi),
x = cosPhi * cos(lambda),
y = cosPhi * sin(lambda),
z = sin(phi),
w = atan2(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);
W1 += w;
X1 += w * (x0 + (x0 = x));
Y1 += w * (y0 + (y0 = y));
Z1 += w * (z0 + (z0 = z));
centroidPointCartesian(x0, y0, z0);
}
function centroidLineEnd() {
centroidStream.point = centroidPoint;
}
// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
// J. Applied Mechanics 42, 239 (1975).
function centroidRingStart() {
centroidStream.point = centroidRingPointFirst;
}
function centroidRingEnd() {
centroidRingPoint(lambda00$2, phi00$2);
centroidStream.point = centroidPoint;
}
function centroidRingPointFirst(lambda, phi) {
lambda00$2 = lambda, phi00$2 = phi;
lambda *= radians, phi *= radians;
centroidStream.point = centroidRingPoint;
var cosPhi = cos(phi);
x0 = cosPhi * cos(lambda);
y0 = cosPhi * sin(lambda);
z0 = sin(phi);
centroidPointCartesian(x0, y0, z0);
}
function centroidRingPoint(lambda, phi) {
lambda *= radians, phi *= radians;
var cosPhi = cos(phi),
x = cosPhi * cos(lambda),
y = cosPhi * sin(lambda),
z = sin(phi),
cx = y0 * z - z0 * y,
cy = z0 * x - x0 * z,
cz = x0 * y - y0 * x,
m = sqrt(cx * cx + cy * cy + cz * cz),
w = asin(m), // line weight = angle
v = m && -w / m; // area weight multiplier
X2 += v * cx;
Y2 += v * cy;
Z2 += v * cz;
W1 += w;
X1 += w * (x0 + (x0 = x));
Y1 += w * (y0 + (y0 = y));
Z1 += w * (z0 + (z0 = z));
centroidPointCartesian(x0, y0, z0);
}
function centroid(object) {
W0 = W1 =
X0 = Y0 = Z0 =
X1 = Y1 = Z1 =
X2 = Y2 = Z2 = 0;
geoStream(object, centroidStream);
var x = X2,
y = Y2,
z = Z2,
m = x * x + y * y + z * z;
// If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.
if (m < epsilon2) {
x = X1, y = Y1, z = Z1;
// If the feature has zero length, fall back to arithmetic mean of point vectors.
if (W1 < epsilon) x = X0, y = Y0, z = Z0;
m = x * x + y * y + z * z;
// If the feature still has an undefined ccentroid, then return.
if (m < epsilon2) return [NaN, NaN];
}
return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];
}
function constant(x) {
return function() {
return x;
};
}
function 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 rotationIdentity(lambda, phi) {
return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];
}
rotationIdentity.invert = rotationIdentity;
function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {
return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))
: rotationLambda(deltaLambda))
: (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)
: rotationIdentity);
}
function forwardRotationLambda(deltaLambda) {
return function(lambda, phi) {
return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];
};
}
function rotationLambda(deltaLambda) {
var rotation = forwardRotationLambda(deltaLambda);
rotation.invert = forwardRotationLambda(-deltaLambda);
return rotation;
}
function rotationPhiGamma(deltaPhi, deltaGamma) {
var cosDeltaPhi = cos(deltaPhi),
sinDeltaPhi = sin(deltaPhi),
cosDeltaGamma = cos(deltaGamma),
sinDeltaGamma = sin(deltaGamma);
function rotation(lambda, phi) {
var cosPhi = cos(phi),
x = cos(lambda) * cosPhi,
y = sin(lambda) * cosPhi,
z = sin(phi),
k = z * cosDeltaPhi + x * sinDeltaPhi;
return [
atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),
asin(k * cosDeltaGamma + y * sinDeltaGamma)
];
}
rotation.invert = function(lambda, phi) {
var cosPhi = cos(phi),
x = cos(lambda) * cosPhi,
y = sin(lambda) * cosPhi,
z = sin(phi),
k = z * cosDeltaGamma - y * sinDeltaGamma;
return [
atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),
asin(k * cosDeltaPhi - x * sinDeltaPhi)
];
};
return rotation;
}
function rotation(rotate) {
rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);
function forward(coordinates) {
coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);
return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;
}
forward.invert = function(coordinates) {
coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);
return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;
};
return forward;
}
// Generates a circle centered at [0°, 0°], with a given radius and precision.
function circleStream(stream, radius, delta, direction, t0, t1) {
if (!delta) return;
var cosRadius = cos(radius),
sinRadius = sin(radius),
step = direction * delta;
if (t0 == null) {
t0 = radius + direction * tau;
t1 = radius - step / 2;
} else {
t0 = circleRadius(cosRadius, t0);
t1 = circleRadius(cosRadius, t1);
if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;
}
for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {
point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);
stream.point(point[0], point[1]);
}
}
// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].
function circleRadius(cosRadius, point) {
point = cartesian(point), point[0] -= cosRadius;
cartesianNormalizeInPlace(point);
var radius = acos(-point[1]);
return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;
}
function circle() {
var center = constant([0, 0]),
radius = constant(90),
precision = constant(6),
ring,
rotate,
stream = {point: point};
function point(x, y) {
ring.push(x = rotate(x, y));
x[0] *= degrees, x[1] *= degrees;
}
function circle() {
var c = center.apply(this, arguments),
r = radius.apply(this, arguments) * radians,
p = precision.apply(this, arguments) * radians;
ring = [];
rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;
circleStream(stream, r, p, 1);
c = {type: "Polygon", coordinates: [ring]};
ring = rotate = null;
return c;
}
circle.center = function(_) {
return arguments.length ? (center = typeof _ === "function" ? _ : constant([+_[0], +_[1]]), circle) : center;
};
circle.radius = function(_) {
return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), circle) : radius;
};
circle.precision = function(_) {
return arguments.length ? (precision = typeof _ === "function" ? _ : constant(+_), circle) : precision;
};
return circle;
}
function clipBuffer() {
var lines = [],
line;
return {
point: function(x, y, i, t) {
var point = [x, y];
// when called by clipPolygon, store index and t
if (arguments.length > 2) { point.index = i; point.t = t; }
line.push(point);
},
lineStart: function() {
lines.push(line = []);
},
lineEnd: noop,
rejoin: function() {
if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
},
result: function() {
var result = lines;
lines = [];
line = null;
return result;
}
};
}
function clipLine(a, b, x0, y0, x1, y1) {
var ax = a[0],
ay = a[1],
bx = b[0],
by = b[1],
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) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;
if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;
return true;
}
function pointEqual(a, b) {
return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;
}
function Intersection(point, points, other, entry) {
this.x = point;
this.z = points;
this.o = other; // another intersection
this.e = entry; // is an entry?
this.v = false; // visited
this.n = this.p = null; // next & previous
}
// A generalized polygon clipping algorithm: given a polygon that has been cut
// into its visible line segments, and rejoins the segments by interpolating
// along the clip edge.
function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) {
var subject = [],
clip = [],
i,
n;
segments.forEach(function(segment) {
if ((n = segment.length - 1) <= 0) return;
var n, p0 = segment[0], p1 = segment[n], x;
// If the first and last points of a segment are coincident, then treat as a
// closed ring. TODO if all rings are closed, then the winding order of the
// exterior ring should be checked.
if (pointEqual(p0, p1)) {
stream.lineStart();
for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);
stream.lineEnd();
return;
}
subject.push(x = new Intersection(p0, segment, null, true));
clip.push(x.o = new Intersection(p0, null, x, false));
subject.push(x = new Intersection(p1, segment, null, false));
clip.push(x.o = new Intersection(p1, null, x, true));
});
if (!subject.length) return;
clip.sort(compareIntersection);
link(subject);
link(clip);
for (i = 0, n = clip.length; i < n; ++i) {
clip[i].e = startInside = !startInside;
}
var start = subject[0],
points,
point;
while (1) {
// Find first unvisited intersection.
var current = start,
isSubject = true;
while (current.v) if ((current = current.n) === start) return;
points = current.z;
stream.lineStart();
do {
current.v = current.o.v = true;
if (current.e) {
if (isSubject) {
for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);
} else {
interpolate(current.x, current.n.x, 1, stream);
}
current = current.n;
} else {
if (isSubject) {
points = current.p.z;
for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);
} else {
interpolate(current.x, current.p.x, -1, stream);
}
current = current.p;
}
current = current.o;
points = current.z;
isSubject = !isSubject;
} while (!current.v);
stream.lineEnd();
}
}
function link(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;
}
var clipMax = 1e9;
var clipMin = -clipMax;
// TODO Use d3-polygon’s polygonContains here for the ring check?
// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?
function clipExtent(x0, y0, x1, y1) {
function visible(x, y) {
return x0 <= x && x <= x1 && y0 <= y && y <= y1;
}
function interpolate(from, to, direction, stream) {
var a = 0, a1 = 0;
if (from == null
|| (a = corner(from, direction)) !== (a1 = corner(to, direction))
|| comparePoint(from, to) < 0 ^ direction > 0) {
do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
while ((a = (a + direction + 4) % 4) !== a1);
} else {
stream.point(to[0], to[1]);
}
}
function corner(p, direction) {
return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3
: abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1
: abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0
: direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon
}
function compareIntersection(a, b) {
return comparePoint(a.x, b.x);
}
function comparePoint(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];
}
return function(stream) {
var activeStream = stream,
bufferStream = clipBuffer(),
segments,
polygon,
ring,
x__, y__, v__, // first point
x_, y_, v_, // previous point
first,
clean;
var clipStream = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: polygonStart,
polygonEnd: polygonEnd
};
function point(x, y) {
if (visible(x, y)) activeStream.point(x, y);
}
function polygonInside() {
var winding = 0;
for (var i = 0, n = polygon.length; i < n; ++i) {
for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {
a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];
if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }
else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }
}
}
return winding;
}
// Buffer geometry within a polygon and then clip it en masse.
function polygonStart() {
activeStream = bufferStream, segments = [], polygon = [], clean = true;
}
function polygonEnd() {
var startInside = polygonInside(),
cleanInside = clean && startInside,
visible = (segments = d3Array.merge(segments)).length;
if (cleanInside || visible) {
stream.polygonStart();
if (cleanInside) {
stream.lineStart();
interpolate(null, null, 1, stream);
stream.lineEnd();
}
if (visible) {
clipRejoin(segments, compareIntersection, startInside, interpolate, stream);
}
stream.polygonEnd();
}
activeStream = stream, segments = polygon = ring = null;
}
function lineStart() {
clipStream.point = linePoint;
if (polygon) polygon.push(ring = []);
first = true;
v_ = false;
x_ = y_ = NaN;
}
// TODO rather than special-case polygons, simply handle them separately.
// Ideally, coincident intersection points should be jittered to avoid
// clipping issues.
function lineEnd() {
if (segments) {
linePoint(x__, y__);
if (v__ && v_) bufferStream.rejoin();
segments.push(bufferStream.result());
}
clipStream.point = point;
if (v_) activeStream.lineEnd();
}
function linePoint(x, y) {
var v = visible(x, y);
if (polygon) ring.push([x, y]);
if (first) {
x__ = x, y__ = y, v__ = v;
first = false;
if (v) {
activeStream.lineStart();
activeStream.point(x, y);
}
} else {
if (v && v_) activeStream.point(x, y);
else {
var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],
b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];
if (clipLine(a, b, x0, y0, x1, y1)) {
if (!v_) {
activeStream.lineStart();
activeStream.point(a[0], a[1]);
}
activeStream.point(b[0], b[1]);
if (!v) activeStream.lineEnd();
clean = false;
} else if (v) {
activeStream.lineStart();
activeStream.point(x, y);
clean = false;
}
}
}
x_ = x, y_ = y, v_ = v;
}
return clipStream;
};
}
function extent() {
var x0 = 0,
y0 = 0,
x1 = 960,
y1 = 500,
cache,
cacheStream,
clip;
return clip = {
stream: function(stream) {
return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);
},
extent: function(_) {
return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];
}
};
}
var sum = adder();
function polygonContains(polygon, point) {
var lambda = point[0],
phi = point[1],
normal = [sin(lambda), -cos(lambda), 0],
angle = 0,
winding = 0;
sum.reset();
for (var i = 0, n = polygon.length; i < n; ++i) {
if (!(m = (ring = polygon[i]).length)) continue;
var ring,
m,
point0 = ring[m - 1],
lambda0 = point0[0],
phi0 = point0[1] / 2 + quarterPi,
sinPhi0 = sin(phi0),
cosPhi0 = cos(phi0);
for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
var point1 = ring[j],
lambda1 = point1[0],
phi1 = point1[1] / 2 + quarterPi,
sinPhi1 = sin(phi1),
cosPhi1 = cos(phi1),
delta = lambda1 - lambda0,
sign = delta >= 0 ? 1 : -1,
absDelta = sign * delta,
antimeridian = absDelta > pi,
k = sinPhi0 * sinPhi1;
sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));
angle += antimeridian ? delta + sign * tau : delta;
// Are the longitudes either side of the point’s meridian (lambda),
// and are the latitudes smaller than the parallel (phi)?
if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {
var arc = cartesianCross(cartesian(point0), cartesian(point1));
cartesianNormalizeInPlace(arc);
var intersection = cartesianCross(normal, arc);
cartesianNormalizeInPlace(intersection);
var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);
if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {
winding += antimeridian ^ delta >= 0 ? 1 : -1;
}
}
}
}
// First, determine whether the South pole is inside or outside:
//
// It is inside if:
// * the polygon winds around it in a clockwise direction.
// * the polygon does not (cumulatively) wind around it, but has a negative
// (counter-clockwise) area.
//
// Second, count the (signed) number of times a segment crosses a lambda
// from the point to the South pole. If it is zero, then the point is the
// same side as the South pole.
return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);
}
var lengthSum = adder();
var lambda0$2;
var sinPhi0$1;
var cosPhi0$1;
var lengthStream = {
sphere: noop,
point: noop,
lineStart: lengthLineStart,
lineEnd: noop,
polygonStart: noop,
polygonEnd: noop
};
function lengthLineStart() {
lengthStream.point = lengthPointFirst;
lengthStream.lineEnd = lengthLineEnd;
}
function lengthLineEnd() {
lengthStream.point = lengthStream.lineEnd = noop;
}
function lengthPointFirst(lambda, phi) {
lambda *= radians, phi *= radians;
lambda0$2 = lambda, sinPhi0$1 = sin(phi), cosPhi0$1 = cos(phi);
lengthStream.point = lengthPoint;
}
function lengthPoint(lambda, phi) {
lambda *= radians, phi *= radians;
var sinPhi = sin(phi),
cosPhi = cos(phi),
delta = abs(lambda - lambda0$2),
cosDelta = cos(delta),
sinDelta = sin(delta),
x = cosPhi * sinDelta,
y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta,
z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta;
lengthSum.add(atan2(sqrt(x * x + y * y), z));
lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi;
}
function length(object) {
lengthSum.reset();
geoStream(object, lengthStream);
return +lengthSum;
}
var coordinates = [null, null];
var object = {type: "LineString", coordinates: coordinates};
function distance(a, b) {
coordinates[0] = a;
coordinates[1] = b;
return length(object);
}
var containsObjectType = {
Feature: function(object, point) {
return containsGeometry(object.geometry, point);
},
FeatureCollection: function(object, point) {
var features = object.features, i = -1, n = features.length;
while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;
return false;
}
};
var containsGeometryType = {
Sphere: function() {
return true;
},
Point: function(object, point) {
return containsPoint(object.coordinates, point);
},
MultiPoint: function(object, point) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) if (containsPoint(coordinates[i], point)) return true;
return false;
},
LineString: function(object, point) {
return containsLine(object.coordinates, point);
},
MultiLineString: function(object, point) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) if (containsLine(coordinates[i], point)) return true;
return false;
},
Polygon: function(object, point) {
return containsPolygon(object.coordinates, point);
},
MultiPolygon: function(object, point) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) if (containsPolygon(coordinates[i], point)) return true;
return false;
},
GeometryCollection: function(object, point) {
var geometries = object.geometries, i = -1, n = geometries.length;
while (++i < n) if (containsGeometry(geometries[i], point)) return true;
return false;
}
};
function containsGeometry(geometry, point) {
return geometry && containsGeometryType.hasOwnProperty(geometry.type)
? containsGeometryType[geometry.type](geometry, point)
: false;
}
function containsPoint(coordinates, point) {
return distance(coordinates, point) === 0;
}
function containsLine(coordinates, point) {
var ab = distance(coordinates[0], coordinates[1]),
ao = distance(coordinates[0], point),
ob = distance(point, coordinates[1]);
return ao + ob <= ab + epsilon;
}
function containsPolygon(coordinates, point) {
return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));
}
function ringRadians(ring) {
return ring = ring.map(pointRadians), ring.pop(), ring;
}
function pointRadians(point) {
return [point[0] * radians, point[1] * radians];
}
function contains(object, point) {
return (object && containsObjectType.hasOwnProperty(object.type)
? containsObjectType[object.type]
: containsGeometry)(object, point);
}
function graticuleX(y0, y1, dy) {
var y = d3Array.range(y0, y1 - epsilon, dy).concat(y1);
return function(x) { return y.map(function(y) { return [x, y]; }); };
}
function graticuleY(x0, x1, dx) {
var x = d3Array.range(x0, x1 - epsilon, dx).concat(x1);
return function(y) { return x.map(function(x) { return [x, y]; }); };
}
function graticule() {
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 d3Array.range(ceil(X0 / DX) * DX, X1, DX).map(X)
.concat(d3Array.range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))
.concat(d3Array.range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))
.concat(d3Array.range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).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.extentMinor();
return graticule.extentMajor(_).extentMinor(_);
};
graticule.extentMajor = 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.extentMinor = 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.stepMinor();
return graticule.stepMajor(_).stepMinor(_);
};
graticule.stepMajor = function(_) {
if (!arguments.length) return [DX, DY];
DX = +_[0], DY = +_[1];
return graticule;
};
graticule.stepMinor = function(_) {
if (!arguments.length) return [dx, dy];
dx = +_[0], dy = +_[1];
return graticule;
};
graticule.precision = function(_) {
if (!arguments.length) return precision;
precision = +_;
x = graticuleX(y0, y1, 90);
y = graticuleY(x0, x1, precision);
X = graticuleX(Y0, Y1, 90);
Y = graticuleY(X0, X1, precision);
return graticule;
};
return graticule
.extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])
.extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);
}
function graticule10() {
return graticule()();
}
function interpolate(a, b) {
var x0 = a[0] * radians,
y0 = a[1] * radians,
x1 = b[0] * radians,
y1 = b[1] * radians,
cy0 = cos(y0),
sy0 = sin(y0),
cy1 = cos(y1),
sy1 = sin(y1),
kx0 = cy0 * cos(x0),
ky0 = cy0 * sin(x0),
kx1 = cy1 * cos(x1),
ky1 = cy1 * sin(x1),
d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),
k = sin(d);
var interpolate = d ? function(t) {
var B = sin(t *= d) / k,
A = sin(d - t) / k,
x = A * kx0 + B * kx1,
y = A * ky0 + B * ky1,
z = A * sy0 + B * sy1;
return [
atan2(y, x) * degrees,
atan2(z, sqrt(x * x + y * y)) * degrees
];
} : function() {
return [x0 * degrees, y0 * degrees];
};
interpolate.distance = d;
return interpolate;
}
function identity(x) {
return x;
}
var areaSum$1 = adder();
var areaRingSum$1 = adder();
var x00;
var y00;
var x0$1;
var y0$1;
var areaStream$1 = {
point: noop,
lineStart: noop,
lineEnd: noop,
polygonStart: function() {
areaStream$1.lineStart = areaRingStart$1;
areaStream$1.lineEnd = areaRingEnd$1;
},
polygonEnd: function() {
areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop;
areaSum$1.add(abs(areaRingSum$1));
areaRingSum$1.reset();
},
result: function() {
var area = areaSum$1 / 2;
areaSum$1.reset();
return area;
}
};
function areaRingStart$1() {
areaStream$1.point = areaPointFirst$1;
}
function areaPointFirst$1(x, y) {
areaStream$1.point = areaPoint$1;
x00 = x0$1 = x, y00 = y0$1 = y;
}
function areaPoint$1(x, y) {
areaRingSum$1.add(y0$1 * x - x0$1 * y);
x0$1 = x, y0$1 = y;
}
function areaRingEnd$1() {
areaPoint$1(x00, y00);
}
var x0$2 = Infinity;
var y0$2 = x0$2;
var x1 = -x0$2;
var y1 = x1;
var boundsStream$1 = {
point: boundsPoint$1,
lineStart: noop,
lineEnd: noop,
polygonStart: noop,
polygonEnd: noop,
result: function() {
var bounds = [[x0$2, y0$2], [x1, y1]];
x1 = y1 = -(y0$2 = x0$2 = Infinity);
return bounds;
}
};
function boundsPoint$1(x, y) {
if (x < x0$2) x0$2 = x;
if (x > x1) x1 = x;
if (y < y0$2) y0$2 = y;
if (y > y1) y1 = y;
}
var X0$1 = 0;
var Y0$1 = 0;
var Z0$1 = 0;
var X1$1 = 0;
var Y1$1 = 0;
var Z1$1 = 0;
var X2$1 = 0;
var Y2$1 = 0;
var Z2$1 = 0;
var x00$1;
var y00$1;
var x0$3;
var y0$3;
var centroidStream$1 = {
point: centroidPoint$1,
lineStart: centroidLineStart$1,
lineEnd: centroidLineEnd$1,
polygonStart: function() {
centroidStream$1.lineStart = centroidRingStart$1;
centroidStream$1.lineEnd = centroidRingEnd$1;
},
polygonEnd: function() {
centroidStream$1.point = centroidPoint$1;
centroidStream$1.lineStart = centroidLineStart$1;
centroidStream$1.lineEnd = centroidLineEnd$1;
},
result: function() {
var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1]
: Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1]
: Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1]
: [NaN, NaN];
X0$1 = Y0$1 = Z0$1 =
X1$1 = Y1$1 = Z1$1 =
X2$1 = Y2$1 = Z2$1 = 0;
return centroid;
}
};
function centroidPoint$1(x, y) {
X0$1 += x;
Y0$1 += y;
++Z0$1;
}
function centroidLineStart$1() {
centroidStream$1.point = centroidPointFirstLine;
}
function centroidPointFirstLine(x, y) {
centroidStream$1.point = centroidPointLine;
centroidPoint$1(x0$3 = x, y0$3 = y);
}
function centroidPointLine(x, y) {
var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy);
X1$1 += z * (x0$3 + x) / 2;
Y1$1 += z * (y0$3 + y) / 2;
Z1$1 += z;
centroidPoint$1(x0$3 = x, y0$3 = y);
}
function centroidLineEnd$1() {
centroidStream$1.point = centroidPoint$1;
}
function centroidRingStart$1() {
centroidStream$1.point = centroidPointFirstRing;
}
function centroidRingEnd$1() {
centroidPointRing(x00$1, y00$1);
}
function centroidPointFirstRing(x, y) {
centroidStream$1.point = centroidPointRing;
centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y);
}
function centroidPointRing(x, y) {
var dx = x - x0$3,
dy = y - y0$3,
z = sqrt(dx * dx + dy * dy);
X1$1 += z * (x0$3 + x) / 2;
Y1$1 += z * (y0$3 + y) / 2;
Z1$1 += z;
z = y0$3 * x - x0$3 * y;
X2$1 += z * (x0$3 + x);
Y2$1 += z * (y0$3 + y);
Z2$1 += z * 3;
centroidPoint$1(x0$3 = x, y0$3 = y);
}
function PathContext(context) {
this._context = context;
}
PathContext.prototype = {
_radius: 4.5,
pointRadius: function(_) {
return this._radius = _, this;
},
polygonStart: function() {
this._line = 0;
},
polygonEnd: function() {
this._line = NaN;
},
lineStart: function() {
this._point = 0;
},
lineEnd: function() {
if (this._line === 0) this._context.closePath();
this._point = NaN;
},
point: function(x, y) {
switch (this._point) {
case 0: {
this._context.moveTo(x, y);
this._point = 1;
break;
}
case 1: {
this._context.lineTo(x, y);
break;
}
default: {
this._context.moveTo(x + this._radius, y);
this._context.arc(x, y, this._radius, 0, tau);
break;
}
}
},
result: noop
};
var lengthSum$1 = adder();
var lengthRing;
var x00$2;
var y00$2;
var x0$4;
var y0$4;
var lengthStream$1 = {
point: noop,
lineStart: function() {
lengthStream$1.point = lengthPointFirst$1;
},
lineEnd: function() {
if (lengthRing) lengthPoint$1(x00$2, y00$2);
lengthStream$1.point = noop;
},
polygonStart: function() {
lengthRing = true;
},
polygonEnd: function() {
lengthRing = null;
},
result: function() {
var length = +lengthSum$1;
lengthSum$1.reset();
return length;
}
};
function lengthPointFirst$1(x, y) {
lengthStream$1.point = lengthPoint$1;
x00$2 = x0$4 = x, y00$2 = y0$4 = y;
}
function lengthPoint$1(x, y) {
x0$4 -= x, y0$4 -= y;
lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4));
x0$4 = x, y0$4 = y;
}
function PathString() {
this._string = [];
}
PathString.prototype = {
_radius: 4.5,
_circle: circle$1(4.5),
pointRadius: function(_) {
if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;
return this;
},
polygonStart: function() {
this._line = 0;
},
polygonEnd: function() {
this._line = NaN;
},
lineStart: function() {
this._point = 0;
},
lineEnd: function() {
if (this._line === 0) this._string.push("Z");
this._point = NaN;
},
point: function(x, y) {
switch (this._point) {
case 0: {
this._string.push("M", x, ",", y);
this._point = 1;
break;
}
case 1: {
this._string.push("L", x, ",", y);
break;
}
default: {
if (this._circle == null) this._circle = circle$1(this._radius);
this._string.push("M", x, ",", y, this._circle);
break;
}
}
},
result: function() {
if (this._string.length) {
var result = this._string.join("");
this._string = [];
return result;
} else {
return null;
}
}
};
function circle$1(radius) {
return "m0," + radius
+ "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
+ "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
+ "z";
}
function index(projection, context) {
var pointRadius = 4.5,
projectionStream,
contextStream;
function path(object) {
if (object) {
if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
geoStream(object, projectionStream(contextStream));
}
return contextStream.result();
}
path.area = function(object) {
geoStream(object, projectionStream(areaStream$1));
return areaStream$1.result();
};
path.measure = function(object) {
geoStream(object, projectionStream(lengthStream$1));
return lengthStream$1.result();
};
path.bounds = function(object) {
geoStream(object, projectionStream(boundsStream$1));
return boundsStream$1.result();
};
path.centroid = function(object) {
geoStream(object, projectionStream(centroidStream$1));
return centroidStream$1.result();
};
path.projection = function(_) {
return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;
};
path.context = function(_) {
if (!arguments.length) return context;
contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);
if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
return path;
};
path.pointRadius = function(_) {
if (!arguments.length) return pointRadius;
pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
return path;
};
return path.projection(projection).context(context);
}
function clip(pointVisible, clipLine, interpolate, start, sort) {
if (typeof sort === "undefined") sort = compareIntersection;
return function(rotate, sink) {
var line = clipLine(sink),
rotatedStart = rotate.invert(start[0], start[1]),
ringBuffer = clipBuffer(),
ringSink = clipLine(ringBuffer),
polygonStarted = false,
polygon,
segments,
ring;
var clip = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
clip.point = pointRing;
clip.lineStart = ringStart;
clip.lineEnd = ringEnd;
segments = [];
polygon = [];
},
polygonEnd: function() {
clip.point = point;
clip.lineStart = lineStart;
clip.lineEnd = lineEnd;
segments = d3Array.merge(segments);
var startInside = polygonContains(polygon, rotatedStart);
if (segments.length) {
if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
clipRejoin(segments, sort, startInside, interpolate, sink);
} else if (startInside) {
if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
sink.lineStart();
interpolate(null, null, 1, sink);
sink.lineEnd();
}
if (polygonStarted) sink.polygonEnd(), polygonStarted = false;
segments = polygon = null;
},
sphere: function() {
sink.polygonStart();
sink.lineStart();
interpolate(null, null, 1, sink);
sink.lineEnd();
sink.polygonEnd();
}
};
function point(lambda, phi) {
var point = rotate(lambda, phi);
if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);
}
function pointLine(lambda, phi) {
var point = rotate(lambda, phi);
line.point(point[0], point[1]);
}
function lineStart() {
clip.point = pointLine;
line.lineStart();
}
function lineEnd() {
clip.point = point;
line.lineEnd();
}
function pointRing(lambda, phi, close) {
ring.push([lambda, phi]);
var point = rotate(lambda, phi);
ringSink.point(point[0], point[1], close);
}
function ringStart() {
ringSink.lineStart();
ring = [];
}
function ringEnd() {
pointRing(ring[0][0], ring[0][1], true);
ringSink.lineEnd();
var clean = ringSink.clean(),
ringSegments = ringBuffer.result(),
i, n = ringSegments.length, m,
segment,
point;
ring.pop();
polygon.push(ring);
ring = null;
if (!n) return;
// No intersections.
if (clean & 1) {
segment = ringSegments[0];
if ((m = segment.length - 1) > 0) {
if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
sink.lineStart();
for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);
sink.lineEnd();
}
return;
}
// Rejoin connected segments.
// TODO reuse ringBuffer.rejoin()?
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
segments.push(ringSegments.filter(validSegment));
}
return clip;
};
}
function validSegment(segment) {
return segment.length > 1;
}
// Intersections are sorted along the clip edge. For both antimeridian cutting
// and circle clipping, the same comparison is used.
function compareIntersection(a, b) {
return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])
- ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);
}
function clipAntimeridian() {
// Takes a line and cuts into visible segments. Return values: 0 - there were
// intersections or the line was empty; 1 - no intersections; 2 - there were
// intersections, and the first and last segments should be rejoined.
function clipLine(stream) {
var lambda0 = NaN,
phi0 = NaN,
sign0 = NaN,
clean; // no intersections
return {
lineStart: function() {
stream.lineStart();
clean = 1;
},
point: function(lambda1, phi1) {
var sign1 = lambda1 > 0 ? pi : -pi,
delta = abs(lambda1 - lambda0);
if (abs(delta - pi) < epsilon) { // line crosses a pole
stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);
stream.point(sign0, phi0);
stream.lineEnd();
stream.lineStart();
stream.point(sign1, phi0);
stream.point(lambda1, phi0);
clean = 0;
} else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian
if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies
if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;
phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);
stream.point(sign0, phi0);
stream.lineEnd();
stream.lineStart();
stream.point(sign1, phi0);
clean = 0;
}
stream.point(lambda0 = lambda1, phi0 = phi1);
sign0 = sign1;
},
lineEnd: function() {
stream.lineEnd();
lambda0 = phi0 = NaN;
},
clean: function() {
return 2 - clean; // if intersections, rejoin first and last segments
}
};
}
function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {
var cosPhi0,
cosPhi1,
sinLambda0Lambda1 = sin(lambda0 - lambda1);
return abs(sinLambda0Lambda1) > epsilon
? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)
- sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))
/ (cosPhi0 * cosPhi1 * sinLambda0Lambda1))
: (phi0 + phi1) / 2;
}
function interpolate(from, to, direction, stream) {
var phi;
if (from == null) {
phi = direction * halfPi;
stream.point(-pi, phi);
stream.point(0, phi);
stream.point(pi, phi);
stream.point(pi, 0);
stream.point(pi, -phi);
stream.point(0, -phi);
stream.point(-pi, -phi);
stream.point(-pi, 0);
stream.point(-pi, phi);
} else if (abs(from[0] - to[0]) > epsilon) {
var lambda = from[0] < to[0] ? pi : -pi;
phi = direction * lambda / 2;
stream.point(-lambda, phi);
stream.point(0, phi);
stream.point(lambda, phi);
} else {
stream.point(to[0], to[1]);
}
}
function visible() {
return true;
}
return clip(visible, clipLine, interpolate, [-pi, -halfPi]);
}
function clipCircle(radius, delta) {
var cr = cos(radius),
smallRadius = cr > 0,
notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case
function interpolate(from, to, direction, stream) {
circleStream(stream, radius, delta, direction, from, to);
}
function visible(lambda, phi) {
return cos(lambda) * cos(phi) > cr;
}
// Takes a line and cuts into visible segments. Return values used for polygon
// clipping: 0 - there were intersections or the line was empty; 1 - no
// intersections 2 - there were intersections, and the first and last segments
// should be rejoined.
function clipLine(stream) {
var point0, // previous point
c0, // code for previous point
v0, // visibility of previous point
v00, // visibility of first point
clean; // no intersections
return {
lineStart: function() {
v00 = v0 = false;
clean = 1;
},
point: function(lambda, phi) {
var point1 = [lambda, phi],
point2,
v = visible(lambda, phi),
c = smallRadius
? v ? 0 : code(lambda, phi)
: v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;
if (!point0 && (v00 = v0 = v)) stream.lineStart();
// Handle degeneracies.
// TODO ignore if not clipping polygons.
if (v !== v0) {
point2 = intersect(point0, point1);
if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {
point1[0] += epsilon;
point1[1] += epsilon;
v = visible(point1[0], point1[1]);
}
}
if (v !== v0) {
clean = 0;
if (v) {
// outside going in
stream.lineStart();
point2 = intersect(point1, point0);
stream.point(point2[0], point2[1]);
} else {
// inside going out
point2 = intersect(point0, point1);
stream.point(point2[0], point2[1]);
stream.lineEnd();
}
point0 = point2;
} else if (notHemisphere && point0 && smallRadius ^ v) {
var t;
// If the codes for two points are different, or are both zero,
// and there this segment intersects with the small circle.
if (!(c & c0) && (t = intersect(point1, point0, true))) {
clean = 0;
if (smallRadius) {
stream.lineStart();
stream.point(t[0][0], t[0][1]);
stream.point(t[1][0], t[1][1]);
stream.lineEnd();
} else {
stream.point(t[1][0], t[1][1]);
stream.lineEnd();
stream.lineStart();
stream.point(t[0][0], t[0][1]);
}
}
}
if (v && (!point0 || !pointEqual(point0, point1))) {
stream.point(point1[0], point1[1]);
}
point0 = point1, v0 = v, c0 = c;
},
lineEnd: function() {
if (v0) stream.lineEnd();
point0 = null;
},
// Rejoin first and last segments if there were intersections and the first
// and last points were visible.
clean: function() {
return clean | ((v00 && v0) << 1);
}
};
}
// Intersects the great circle between a and b with the clip circle.
function intersect(a, b, two) {
var pa = cartesian(a),
pb = cartesian(b);
// We have two planes, n1.p = d1 and n2.p = d2.
// Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
var n1 = [1, 0, 0], // normal
n2 = cartesianCross(pa, pb),
n2n2 = cartesianDot(n2, n2),
n1n2 = n2[0], // cartesianDot(n1, n2),
determinant = n2n2 - n1n2 * n1n2;
// Two polar points.
if (!determinant) return !two && a;
var c1 = cr * n2n2 / determinant,
c2 = -cr * n1n2 / determinant,
n1xn2 = cartesianCross(n1, n2),
A = cartesianScale(n1, c1),
B = cartesianScale(n2, c2);
cartesianAddInPlace(A, B);
// Solve |p(t)|^2 = 1.
var u = n1xn2,
w = cartesianDot(A, u),
uu = cartesianDot(u, u),
t2 = w * w - uu * (cartesianDot(A, A) - 1);
if (t2 < 0) return;
var t = sqrt(t2),
q = cartesianScale(u, (-w - t) / uu);
cartesianAddInPlace(q, A);
q = spherical(q);
if (!two) return q;
// Two intersection points.
var lambda0 = a[0],
lambda1 = b[0],
phi0 = a[1],
phi1 = b[1],
z;
if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;
var delta = lambda1 - lambda0,
polar = abs(delta - pi) < epsilon,
meridian = polar || delta < epsilon;
if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;
// Check that the first point is between a and b.
if (meridian
? polar
? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)
: phi0 <= q[1] && q[1] <= phi1
: delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {
var q1 = cartesianScale(u, (-w + t) / uu);
cartesianAddInPlace(q1, A);
return [q, spherical(q1)];
}
}
// Generates a 4-bit vector representing the location of a point relative to
// the small circle's bounding box.
function code(lambda, phi) {
var r = smallRadius ? radius : pi - radius,
code = 0;
if (lambda < -r) code |= 1; // left
else if (lambda > r) code |= 2; // right
if (phi < -r) code |= 4; // below
else if (phi > r) code |= 8; // above
return code;
}
return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);
}
/*
* clipNone generates a clip function which doesn't clip
* but complies with the preclip API by applying the rotation
*
*/
function clipNone() {
return function(rotate, stream) {
var _stream = {
point: function(x,y) {
var r = rotate(x,y);
return stream.point(r[0],r[1]);
},
lineStart: stream.lineStart,
lineEnd: stream.lineEnd,
polygonStart: stream.polygonStart,
polygonEnd: stream.polygonEnd,
sphere: stream.sphere
};
return _stream;
}
}
/*
import {halfPi, pi} from "../math";
function sphere(stream) {
return function() {
var phi = 1 * halfPi;
stream.lineStart();
stream.point(-pi, phi);
stream.point(0, phi);
stream.point(pi, phi);
stream.point(pi, 0);
stream.point(pi, -phi);
stream.point(0, -phi);
stream.point(-pi, -phi);
stream.point(-pi, 0);
stream.point(-pi, phi);
stream.lineEnd();
}
}
*/
function intersectSegment(from, to) {
this.from = from, this.to = to;
this.normal = cartesianCross(from, to);
this.fromNormal = cartesianCross(this.normal, from);
this.toNormal = cartesianCross(this.normal, to);
}
// >> here a and b are segments processed by intersectSegment
function intersect(a, b) {
var axb = cartesianCross(a.normal, b.normal);
cartesianNormalizeInPlace(axb);
var a0 = cartesianDot(axb, a.fromNormal),
a1 = cartesianDot(axb, a.toNormal),
b0 = cartesianDot(axb, b.fromNormal),
b1 = cartesianDot(axb, b.toNormal);
if (a0 > -epsilon2 && a1 < epsilon2 && b0 > -epsilon2 && b1 < epsilon2) return axb;
if (a0 < epsilon2 && a1 > -epsilon2 && b0 < epsilon2 && b1 > -epsilon2) {
axb[0] = -axb[0], axb[1] = -axb[1], axb[2] = -axb[2];
return axb;
}
}
function intersectPointOnLine(p, a) {
var a0 = cartesianDot(p, a.fromNormal),
a1 = cartesianDot(p, a.toNormal);
p = cartesianDot(p, a.normal);
return abs(p) < epsilon2 && (a0 > -epsilon2 && a1 < epsilon2 || a0 < epsilon2 && a1 > -epsilon2);
}
var intersectCoincident = {};
// todo: publicly expose d3.geoIntersect(segment0, segment1) ??
// cf. https://github.com/d3/d3/commit/3dbdf87974dc2588c29db0533a8500ccddb25daa#diff-65daf69cea7d039d72c1eca7c13326b0
// clipPolygon
function clipPolygon (polygon) {
var segments = [];
polygon = polygon.map(function(ring) {
var c, c0;
ring = ring.map(function(point, i) {
c = cartesian(point = [point[0] * radians, point[1] * radians]);
if (i) segments.push(new intersectSegment(c0, c));
c0 = c;
return point;
});
ring.pop();
return ring;
});
function visible(lambda, phi) {
return polygonContains(polygon, [lambda, phi]);
}
function clipLine(stream) {
var point0,
lambda00,
phi00,
v00,
v0,
clean;
return {
lineStart: function() {
point0 = null;
clean = 1;
},
point: function(lambda, phi, close) {
if (close) lambda = lambda00, phi = phi00;
var point = cartesian([lambda, phi]),
v = v0,
intersection,
i, j, s, t;
if (point0) {
var segment = new intersectSegment(point0, point),
intersections = [];
for (i = 0, j = 100; i < segments.length && j > 0; ++i) {
s = segments[i];
intersection = intersect(segment, s);
if (intersection) {
if (intersection === intersectCoincident ||
cartesianEqual(intersection, point0) || cartesianEqual(intersection, point) ||
cartesianEqual(intersection, s.from) || cartesianEqual(intersection, s.to)) {
t = 1e-4;
lambda = (lambda + 3 * pi + (Math.random() < .5 ? t : -t)) % (2 * pi) - pi;
phi = Math.min(pi / 2 - 1e-4, Math.max(1e-4 - pi / 2, phi + (Math.random() < .5 ? t : -t)));
segment = new intersectSegment(point0, point = cartesian([lambda, phi]));
i = -1, --j;
intersections.length = 0;
continue;
}
var sph = spherical(intersection);
intersection.distance = clipPolygonDistance(point0, intersection);
intersection.index = i;
intersection.t = clipPolygonDistance(s.from, intersection);
intersection[0] = sph[0], intersection[1] = sph[1], intersection.pop();
intersections.push(intersection);
}
}
if (intersections.length) {
clean = 0;
intersections.sort(function(a, b) { return a.distance - b.distance; });
for (i = 0; i < intersections.length; ++i) {
intersection = intersections[i];
if (v = !v) {
stream.lineStart();
stream.point(intersection[0], intersection[1], intersection.index, intersection.t);
} else {
stream.point(intersection[0], intersection[1], intersection.index, intersection.t);
stream.lineEnd();
}
}
}
if (v) stream.point(lambda, phi);
} else {
for (i = 0, j = 100; i < segments.length && j > 0; ++i) {
s = segments[i];
if (intersectPointOnLine(point, s)) {
t = 1e-4;
lambda = (lambda + 3 * pi + (Math.random() < .5 ? t : -t)) % (2 * pi) - pi;
phi = Math.min(pi / 2 - 1e-4, Math.max(1e-4 - pi / 2, phi + (Math.random() < .5 ? t : -t)));
point = cartesian([lambda, phi]);
i = -1, --j;
}
}
if (v00 = v = visible(lambda00 = lambda, phi00 = phi)) stream.lineStart(), stream.point(lambda, phi);
}
point0 = point, v0 = v;
},
lineEnd: function() {
if (v0) stream.lineEnd();
},
// Rejoin first and last segments if there were intersections and the first
// and last points were visible.
clean: function() {
return clean | ((v00 && v0) << 1);
}
};
}
function interpolate(from, to, direction, stream) {
if (from == null) {
var n = polygon.length;
polygon.forEach(function(ring, i) {
ring.forEach(function(point) { stream.point(point[0], point[1]); });
if (i < n - 1) stream.lineEnd(), stream.lineStart();
});
} else if (from.index !== to.index && from.index != null && to.index != null) {
for (var i = from.index; i !== to.index; i = (i + direction + segments.length) % segments.length) {
var segment = segments[i],
point = spherical(direction > 0 ? segment.to : segment.from);
stream.point(point[0], point[1]);
}
}
}
return clip(visible, clipLine, interpolate, polygon[0][0], clipPolygonSort);
}
function clipPolygonSort(a, b) {
a = a.x, b = b.x;
return a.index - b.index || a.t - b.t;
}
// Geodesic coordinates for two 3D points.
function clipPolygonDistance(a, b) {
var axb = cartesianCross(a, b);
return atan2(sqrt(cartesianDot(axb, axb)), cartesianDot(a, b));
}
function transform(methods) {
return {
stream: transformer(methods)
};
}
function transformer(methods) {
return function(stream) {
var s = new TransformStream;
for (var key in methods) s[key] = methods[key];
s.stream = stream;
return s;
};
}
function TransformStream() {}
TransformStream.prototype = {
constructor: TransformStream,
point: function(x, y) { this.stream.point(x, y); },
sphere: function() { this.stream.sphere(); },
lineStart: function() { this.stream.lineStart(); },
lineEnd: function() { this.stream.lineEnd(); },
polygonStart: function() { this.stream.polygonStart(); },
polygonEnd: function() { this.stream.polygonEnd(); }
};
function fitExtent(projection, extent, object) {
var w = extent[1][0] - extent[0][0],
h = extent[1][1] - extent[0][1],
clip = projection.clipExtent && projection.clipExtent();
projection
.scale(150)
.translate([0, 0]);
if (clip != null) projection.clipExtent(null);
geoStream(object, projection.stream(boundsStream$1));
var b = boundsStream$1.result(),
k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),
x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,
y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;
if (clip != null) projection.clipExtent(clip);
return projection
.scale(k * 150)
.translate([x, y]);
}
function fitSize(projection, size, object) {
return fitExtent(projection, [[0, 0], size], object);
}
var maxDepth = 16;
var cosMinDistance = cos(30 * radians);
// cos(minimum angular distance)
function resample(project, delta2) {
return +delta2 ? resample$1(project, delta2) : resampleNone(project);
}
function resampleNone(project) {
return transformer({
point: function(x, y) {
x = project(x, y);
this.stream.point(x[0], x[1]);
}
});
}
function resample$1(project, delta2) {
function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {
var dx = x1 - x0,
dy = y1 - y0,
d2 = dx * dx + dy * dy;
if (d2 > 4 * delta2 && depth--) {
var a = a0 + a1,
b = b0 + b1,
c = c0 + c1,
m = sqrt(a * a + b * b + c * c),
phi2 = asin(c /= m),
lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),
p = project(lambda2, phi2),
x2 = p[0],
y2 = p[1],
dx2 = x2 - x0,
dy2 = y2 - y0,
dz = dy * dx2 - dx * dy2;
if (dz * dz / d2 > delta2 // perpendicular projected distance
|| abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end
|| a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);
stream.point(x2, y2);
resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);
}
}
}
return function(stream) {
var lambda00, x00, y00, a00, b00, c00, // first point
lambda0, x0, y0, a0, b0, c0; // previous point
var resampleStream = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },
polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }
};
function point(x, y) {
x = project(x, y);
stream.point(x[0], x[1]);
}
function lineStart() {
x0 = NaN;
resampleStream.point = linePoint;
stream.lineStart();
}
function linePoint(lambda, phi) {
var c = cartesian([lambda, phi]), p = project(lambda, phi);
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
stream.point(x0, y0);
}
function lineEnd() {
resampleStream.point = point;
stream.lineEnd();
}
function ringStart() {
lineStart();
resampleStream.point = ringPoint;
resampleStream.lineEnd = ringEnd;
}
function ringPoint(lambda, phi) {
linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
resampleStream.point = linePoint;
}
function ringEnd() {
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);
resampleStream.lineEnd = lineEnd;
lineEnd();
}
return resampleStream;
};
}
var transformRadians = transformer({
point: function(x, y) {
this.stream.point(x * radians, y * radians);
}
});
function projection(project) {
return projectionMutator(function() { return project; })();
}
function projectionMutator(projectAt) {
var project,
k = 150, // scale
x = 480, y = 250, // translate
dx, dy, lambda = 0, phi = 0, // center
deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate
preclip = clipAntimeridian(), // default clip
theta = null, // clip angle
polygon = null, // clip polygon
x0 = null, y0, x1, y1, postclip = identity, // clip extent
delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision
cache,
cacheStream;
function projection(point) {
point = projectRotate(point[0] * radians, point[1] * radians);
return [point[0] * k + dx, dy - point[1] * k];
}
function invert(point) {
point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);
return point && [point[0] * degrees, point[1] * degrees];
}
function projectTransform(x, y) {
return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];
}
projection.stream = function(stream) {
return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));
};
// spherical clipping (preclip)
// clip(a) :
// - if a is null, return the current clipAngle or Polygon
// - if a is an array: clipPolygon
// - if a is a number (theta):
// - if theta > 0 clips at angle theta
// - if theta === 0 use clipAntimeridian()
// - if theta < 0 use clipNone
projection.clipAngle = function(_) {
if (!arguments.length) return theta ? theta * degrees : null;
theta = +_ * radians;
if (!theta) return theta = null, preclip = clipAntimeridian(), reset();
if (theta < 0) return preclip = clipNone(), reset();
return preclip = clipCircle(theta, 6 * radians), reset();
};
projection.clipPolygon = function(_) {
return arguments.length ? (preclip = _.length ? clipPolygon(polygon = _) : (polygon = null, clipNone()), reset()) : polygon;
};
// planar clipping (postclip)
projection.clipExtent = function(_) {
return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
};
projection.scale = function(_) {
return arguments.length ? (k = +_, recenter()) : k;
};
projection.translate = function(_) {
return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];
};
projection.center = function(_) {
return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];
};
projection.rotate = function(_) {
return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];
};
projection.precision = function(_) {
return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);
};
projection.fitExtent = function(extent, object) {
return fitExtent(projection, extent, object);
};
projection.fitSize = function(size, object) {
return fitSize(projection, size, object);
};
function recenter() {
projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);
var center = project(lambda, phi);
dx = x - center[0] * k;
dy = y + center[1] * k;
return reset();
}
function reset() {
cache = cacheStream = null;
return projection;
}
return function() {
project = projectAt.apply(this, arguments);
projection.invert = project.invert && invert;
return recenter();
};
}
function conicProjection(projectAt) {
var phi0 = 0,
phi1 = pi / 3,
m = projectionMutator(projectAt),
p = m(phi0, phi1);
p.parallels = function(_) {
return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];
};
return p;
}
function cylindricalEqualAreaRaw(phi0) {
var cosPhi0 = cos(phi0);
function forward(lambda, phi) {
return [lambda * cosPhi0, sin(phi) / cosPhi0];
}
forward.invert = function(x, y) {
return [x / cosPhi0, asin(y * cosPhi0)];
};
return forward;
}
function conicEqualAreaRaw(y0, y1) {
var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;
// Are the parallels symmetrical around the Equator?
if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);
var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;
function project(x, y) {
var r = sqrt(c - 2 * n * sin(y)) / n;
return [r * sin(x *= n), r0 - r * cos(x)];
}
project.invert = function(x, y) {
var r0y = r0 - y;
return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
};
return project;
}
function conicEqualArea() {
return conicProjection(conicEqualAreaRaw)
.scale(155.424)
.center([0, 33.6442]);
}
function albers() {
return conicEqualArea()
.parallels([29.5, 45.5])
.scale(1070)
.translate([480, 250])
.rotate([96, 0])
.center([-0.6, 38.7]);
}
// The projections must have mutually exclusive clip regions on the sphere,
// as this will avoid emitting interleaving lines and polygons.
function multiplex(streams) {
var n = streams.length;
return {
point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },
sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },
lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },
lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },
polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },
polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }
};
}
// A composite projection for the United States, configured by default for
// 960×500. The projection also works quite well at 960×600 if you change the
// scale to 1285 and adjust the translate accordingly. The set of standard
// parallels for each region comes from USGS, which is published here:
// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
function albersUsa() {
var cache,
cacheStream,
lower48 = albers(), lower48Point,
alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338
hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007
point, pointStream = {point: function(x, y) { point = [x, y]; }};
function albersUsa(coordinates) {
var x = coordinates[0], y = coordinates[1];
return point = null,
(lower48Point.point(x, y), point)
|| (alaskaPoint.point(x, y), point)
|| (hawaiiPoint.point(x, y), 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 >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska
: y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii
: lower48).invert(coordinates);
};
albersUsa.stream = function(stream) {
return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);
};
albersUsa.precision = function(_) {
if (!arguments.length) return lower48.precision();
lower48.precision(_), alaska.precision(_), hawaii.precision(_);
return reset();
};
albersUsa.scale = function(_) {
if (!arguments.length) return lower48.scale();
lower48.scale(_), alaska.scale(_ * 0.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 - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])
.stream(pointStream);
alaskaPoint = alaska
.translate([x - 0.307 * k, y + 0.201 * k])
.clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])
.stream(pointStream);
hawaiiPoint = hawaii
.translate([x - 0.205 * k, y + 0.212 * k])
.clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])
.stream(pointStream);
return reset();
};
albersUsa.fitExtent = function(extent, object) {
return fitExtent(albersUsa, extent, object);
};
albersUsa.fitSize = function(size, object) {
return fitSize(albersUsa, size, object);
};
function reset() {
cache = cacheStream = null;
return albersUsa;
}
return albersUsa.scale(1070);
}
function azimuthalRaw(scale) {
return function(x, y) {
var cx = cos(x),
cy = cos(y),
k = scale(cx * cy);
return [
k * cy * sin(x),
k * sin(y)
];
}
}
function azimuthalInvert(angle) {
return function(x, y) {
var z = sqrt(x * x + y * y),
c = angle(z),
sc = sin(c),
cc = cos(c);
return [
atan2(x * sc, z * cc),
asin(z && y * sc / z)
];
}
}
var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {
return sqrt(2 / (1 + cxcy));
});
azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {
return 2 * asin(z / 2);
});
function azimuthalEqualArea() {
return projection(azimuthalEqualAreaRaw)
.scale(124.75)
.clipAngle(180 - 1e-3);
}
var azimuthalEquidistantRaw = azimuthalRaw(function(c) {
return (c = acos(c)) && c / sin(c);
});
azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {
return z;
});
function azimuthalEquidistant() {
return projection(azimuthalEquidistantRaw)
.scale(79.4188)
.clipAngle(180 - 1e-3);
}
function mercatorRaw(lambda, phi) {
return [lambda, log(tan((halfPi + phi) / 2))];
}
mercatorRaw.invert = function(x, y) {
return [x, 2 * atan(exp(y)) - halfPi];
};
function mercator() {
return mercatorProjection(mercatorRaw)
.scale(961 / tau);
}
function mercatorProjection(project) {
var m = projection(project),
center = m.center,
scale = m.scale,
translate = m.translate,
clipExtent = m.clipExtent,
x0 = null, y0, x1, y1; // clip extent
m.scale = function(_) {
return arguments.length ? (scale(_), reclip()) : scale();
};
m.translate = function(_) {
return arguments.length ? (translate(_), reclip()) : translate();
};
m.center = function(_) {
return arguments.length ? (center(_), reclip()) : center();
};
m.clipExtent = function(_) {
return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];
};
function reclip() {
var k = pi * scale(),
t = m(rotation(m.rotate()).invert([0, 0]));
return clipExtent(x0 == null
? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw
? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]
: [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);
}
return reclip();
}
function tany(y) {
return tan((halfPi + y) / 2);
}
function conicConformalRaw(y0, y1) {
var cy0 = cos(y0),
n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),
f = cy0 * pow(tany(y0), n) / n;
if (!n) return mercatorRaw;
function project(x, y) {
if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }
else { if (y > halfPi - epsilon) y = halfPi - epsilon; }
var r = f / pow(tany(y), n);
return [r * sin(n * x), f - r * cos(n * x)];
}
project.invert = function(x, y) {
var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);
return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];
};
return project;
}
function conicConformal() {
return conicProjection(conicConformalRaw)
.scale(109.5)
.parallels([30, 30]);
}
function equirectangularRaw(lambda, phi) {
return [lambda, phi];
}
equirectangularRaw.invert = equirectangularRaw;
function equirectangular() {
return projection(equirectangularRaw)
.scale(152.63);
}
function conicEquidistantRaw(y0, y1) {
var cy0 = cos(y0),
n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),
g = cy0 / n + y0;
if (abs(n) < epsilon) return equirectangularRaw;
function project(x, y) {
var gy = g - y, nx = n * x;
return [gy * sin(nx), g - gy * cos(nx)];
}
project.invert = function(x, y) {
var gy = g - y;
return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];
};
return project;
}
function conicEquidistant() {
return conicProjection(conicEquidistantRaw)
.scale(131.154)
.center([0, 13.9389]);
}
function gnomonicRaw(x, y) {
var cy = cos(y), k = cos(x) * cy;
return [cy * sin(x) / k, sin(y) / k];
}
gnomonicRaw.invert = azimuthalInvert(atan);
function gnomonic() {
return projection(gnomonicRaw)
.scale(144.049)
.clipAngle(60);
}
function scaleTranslate(kx, ky, tx, ty) {
return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({
point: function(x, y) {
this.stream.point(x * kx + tx, y * ky + ty);
}
});
}
function identity$1() {
var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect
x0 = null, y0, x1, y1, clip = identity, // clip extent
cache,
cacheStream,
projection;
function reset() {
cache = cacheStream = null;
return projection;
}
return projection = {
stream: function(stream) {
return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));
},
clipExtent: function(_) {
return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
},
scale: function(_) {
return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;
},
translate: function(_) {
return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
},
reflectX: function(_) {
return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
},
reflectY: function(_) {
return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
},
fitExtent: function(extent, object) {
return fitExtent(projection, extent, object);
},
fitSize: function(size, object) {
return fitSize(projection, size, object);
}
};
}
function orthographicRaw(x, y) {
return [cos(y) * sin(x), sin(y)];
}
orthographicRaw.invert = azimuthalInvert(asin);
function orthographic() {
return projection(orthographicRaw)
.scale(249.5)
.clipAngle(90 + epsilon);
}
function stereographicRaw(x, y) {
var cy = cos(y), k = 1 + cos(x) * cy;
return [cy * sin(x) / k, sin(y) / k];
}
stereographicRaw.invert = azimuthalInvert(function(z) {
return 2 * atan(z);
});
function stereographic() {
return projection(stereographicRaw)
.scale(250)
.clipAngle(142);
}
function transverseMercatorRaw(lambda, phi) {
return [log(tan((halfPi + phi) / 2)), -lambda];
}
transverseMercatorRaw.invert = function(x, y) {
return [-y, 2 * atan(exp(x)) - halfPi];
};
function transverseMercator() {
var m = mercatorProjection(transverseMercatorRaw),
center = m.center,
rotate = m.rotate;
m.center = function(_) {
return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);
};
m.rotate = function(_) {
return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);
};
return rotate([0, 0, 90])
.scale(159.155);
}
exports.geoArea = area;
exports.geoBounds = bounds;
exports.geoCentroid = centroid;
exports.geoCircle = circle;
exports.geoClipExtent = extent;
exports.geoContains = contains;
exports.geoDistance = distance;
exports.geoGraticule = graticule;
exports.geoGraticule10 = graticule10;
exports.geoInterpolate = interpolate;
exports.geoLength = length;
exports.geoPath = index;
exports.geoAlbers = albers;
exports.geoAlbersUsa = albersUsa;
exports.geoAzimuthalEqualArea = azimuthalEqualArea;
exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw;
exports.geoAzimuthalEquidistant = azimuthalEquidistant;
exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw;
exports.geoConicConformal = conicConformal;
exports.geoConicConformalRaw = conicConformalRaw;
exports.geoConicEqualArea = conicEqualArea;
exports.geoConicEqualAreaRaw = conicEqualAreaRaw;
exports.geoConicEquidistant = conicEquidistant;
exports.geoConicEquidistantRaw = conicEquidistantRaw;
exports.geoEquirectangular = equirectangular;
exports.geoEquirectangularRaw = equirectangularRaw;
exports.geoGnomonic = gnomonic;
exports.geoGnomonicRaw = gnomonicRaw;
exports.geoIdentity = identity$1;
exports.geoProjection = projection;
exports.geoProjectionMutator = projectionMutator;
exports.geoMercator = mercator;
exports.geoMercatorRaw = mercatorRaw;
exports.geoOrthographic = orthographic;
exports.geoOrthographicRaw = orthographicRaw;
exports.geoStereographic = stereographic;
exports.geoStereographicRaw = stereographicRaw;
exports.geoTransverseMercator = transverseMercator;
exports.geoTransverseMercatorRaw = transverseMercatorRaw;
exports.geoRotation = rotation;
exports.geoStream = geoStream;
exports.geoTransform = transform;
Object.defineProperty(exports, '__esModule', { value: true });
}));
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="map.css">
<title>Earth in an Icosahedron</title>
</head>
<body>
<div id="map"></div>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/topojson.v2.min.js"></script>
<script src="d3-geo.js"></script>
<script src="d3-geo-projection.js"></script>
<script src="versor.js"></script>
<script src="map.js"></script>
body {
background: #fff;
}
#top {
width: 960px;
height: 100px;
margin: 0 auto;
position: relative;
}
#heading {
position: absolute;
top: 30px;
left: 350px;
width: 420px;
}
#heading h1 {
font-size: 3.5em;
margin: 0;
}
/*#mapinacube {
margin: -120px 0 -100px -200px;
float: left;
}
*/
h2 {
clear: left;
}
.author a, .meta a {
color: #000;
}
.author, .meta {
color: #666;
font-style: italic;
font-size: small;
}
.globe {
cursor: move;
}
.background {
stroke: none;
fill: #ccf;
}
.outline {
stroke: #000;
stroke-width: 1px;
fill: none;
}
.graticule {
stroke: #000;
stroke-width: .25px;
stroke-opacity: .5;
fill: none;
}
.land {
stroke: #000;
stroke-width: .5px;
fill: #9f9;
}
.boundary {
stroke: #000;
stroke-width: .5px;
stroke-opacity: .7;
fill: none;
}
.face {
stroke: #000;
stroke-width: .5px;
stroke-dasharray: 8,3;
fill: none;
}
.vertex {
fill: #000;
}
// imports
var atan = Math.atan,
abs = Math.abs,
ε = 1e-6,
π = Math.PI,
degrees = 180 / π,
θ = atan(0.5) * degrees;
// manually rotate/guessed from JvW article
var r = [-85.76422660821149, -47.20427493656335, -83.97741129030045];
var d3Geo = d3,
polyhedral = d3.geoPolyhedral;
var width = 900,
height = 400,
margin = 5,
rotate = [0, 0, 0];
// construction inspired by
// https://en.wikipedia.org/wiki/Regular_icosahedron#Spherical_coordinates
var vertices = [
[0, 90],
[0, -90]
].concat(d3.range(10).map(function(i) {
// var φ = i * 36;
var φ = ((i * 36) + 180) % 360 - 180;
return [φ, i & 1 ? θ : -θ];
}));
var polyhedron = [
[ 0, 3, 11],
[ 0, 5, 3],
[ 0, 7, 5],
[ 0, 9, 7],
[ 0, 11, 9], // North
[ 2, 11, 3],
[ 3, 4, 2],
[ 4, 3, 5],
[ 5, 6, 4],
[ 6, 5, 7],
[ 7, 8, 6],
[ 8, 7, 9],
[ 9, 10, 8],
[10, 9, 11],
[11, 2, 10], // Equator
[ 1, 2, 4],
[ 1, 4, 6],
[ 1, 6, 8],
[ 1, 8, 10],
[ 1, 10, 2] // South
].map(function(face) {
return face.map(function(i) {
return vertices[i];
});
});
// add centroid
polyhedron.forEach(function(face) {
face.centroid = d3Geo.geoCentroid({type: "MultiPoint", coordinates: face});
});
var jvw_icosahedron = function(faceProjection) {
faceProjection = faceProjection || function(face) {
console.log(face, d3Geo.geoChamberlin(...face))
var c = d3Geo.geoCentroid({type: "MultiPoint", coordinates: face});
return d3Geo.geoChamberlin(...face).scale(1).translate([0, 0])
//.rotate([-c[0], -c[1]]);
};
var faces = polyhedron.map(function(face) {
var polygon = face.slice();
polygon.push(polygon[0]);
return {
face: face,
contains: function(lambda, phi) {
return d3Geo.geoContains({ type: "Polygon", coordinates: [ polygon ] },
[lambda * degrees, phi * degrees]);
},
project: faceProjection(face)
};
});
// Connect each face to a parent face.
[
// N
-1, // 0
0, // 1
9, // 2
2, // 3
0, // 4
// Eq
0, // 5
5, // 6
6, // 7
7, // 8
8, // 9
9, // 10
10, // 11
11, // 12
4, // 13
5, // 14
// S
6, // 15
8, // 16
18, // 17
19, // 18
14, // 19
].forEach(function (d, i) {
var node = faces[d];
node && (node.children || (node.children = [])).push(faces[i]);
});
function face(λ, φ) {
for (var i = 0; i < faces.length; i++) {
if (faces[i].contains(λ, φ)) return faces[i];
}
}
// Polyhedral projection
var proj = polyhedral(
faces[0], // the root face
face, // a function that return a face give coords
2 // rotation of the root face in the projected (pixel) space
)
.rotate(rotate)
.clipAngle(-1) // call clipNone, see https://github.com/d3/d3-geo/pull/108#issuecomment-323798937
.fitExtent(
[
[margin, margin],
[width - margin, height - margin]
],
{type:"Sphere"}
);
proj.faces = faces;
return proj;
}
d3.geoPolyhedralJakvanWijIcosahedron = jvw_icosahedron;
// map in an icosahedron.
var projection = d3.geoPolyhedralJakvanWijIcosahedron();
//var projection = d3.geoPolyhedralWaterman(), r = [1e-13,0.01];
var path = d3.geoPath().projection(projection);
var graticule = d3.geoGraticule();
var svg = d3.select("#map").append("svg")
.attr("width", width)
.attr("height", height);
svg.append("path")
.datum({type: "Sphere"})
.attr("class", "background")
.attr("d", path);
svg.append("path")
.datum(graticule)
.attr("class", "graticule")
.attr("d", path);
svg.append("path")
.datum({type: "Sphere"})
.attr("class", "outline")
.attr("d", path);
// src1 does not work with rotation [0,0], but is ok with [1e-13,0]
// src2 does not work with rotation [0,0], but is ok with [1e-13,0.01]
// src3 is happy with rotation [0,0]
var src1 = "https://unpkg.com/world-atlas/world/110m.json",
src2 = "https://unpkg.com/world-atlas/world/50m.json",
src3 = "world-110m.json",
src = src3;
// r = [0,0];
// r = [1e-13,0];
// r = [1e-13,0.01];
d3.json(src, function(error, world) {
var land = topojson.feature(world, world.objects.land);
svg
.insert("path", ".graticule")
.datum(land)
.attr("class", "land")
.attr("d", path);
});
var render = function() {
svg.selectAll('path').attr('d', path);
};
console.log(projection.clipAngle(), projection.clipPolygon())
projection.rotate(r) && render()
d3.select(self.frameElement).style("height", height + "px");
�PNG

IHDR�l4��(iCCPiccX��YTK����@r�C�9��8�$Q�ar΂�Y$�� `AAy��`DP��������� ���v��ٚ���ܺu뫪[�����I
F1�`fHpus'�F��G(��Q�vvV)���Y�!�Hy*�a�����ɇE�C��O9���&�GF��G��q��x���A�T�o �n`�-�����`�`c��H�H?�7�b�~��p��9�' Q=�`]�?��nDG&$$l�"X��v��æ��$���5��BeL�����������C���#�6ƌ�[uP���C��Po[3#�n�Ϧ�~�c�s[�e��`|HƖF����`+�"7�"�(��h��6�� sض�� ��ڶ��O!��e�(��:��D#���+���e�'�;6�����
r��n�6����Nd��g/�F�:l���!Q��ˑI�}q"X?���|�-�J�r�����bl��������#�e���Xx�ݶ>\F 6sؚg�!*��w�'ш�m��>�da���m�� �V��A.oA@�L� �m���@$� �-���e�&�;��A����f-�"�_�[wY�Y��"|Dp����F[!w}�RBk�5�#0��k�5ƚcM��x���� ��%� ����{ ��|� `�c1#���|ش���'�P俘�5A��n���9�[-��VE�u�w4;�ȢU�������"�2������w��9�m9���6 �?+c�G��V��1G>���ߚp
���=�:��-�~���<�æ'���a�[b'෎B�”����;i�A��z�hJ|�Ɔ0
���M0@"2�@ %����؈�[�c�a3nC���!�����-�Tв��e�c�V��]frLd� �q���� .���2&%���>0�87��̺?AXǁ}� 8�@�ŠT�jp \-�:�=����5��`̂�`� ��X .H��!%H҅L +�r�� ?(���A��4(*�*��
t ��A�Kh���A+(E�bE��P�( ���ڍ�CE�PGP'Q��JT�Չz�D���Q�0�iavX��5`#�v�}�Hx?�
�Õ�e� Y��</��h4-���9z'���@�G������ft7�)z=�^��1�i���q��a�0�0���&�d�c�c�Xv�8Vٛn�@l"6{[���`ǰ�8� '�����H�h�1\�w �7�[����R�2�r�
�:D�Ou��&�� �UjFjQj-j[j�ԙ�g�ۨS�S��0ш���8���)��Ls�� �<--��&�=m��B�ڻ����t�tRtFt��b�N�]��{I7������xw|4�$���D�B/GO���O�/�o�B����A�����!�!����1� #5��#�q?c �5�猋L,L�L�L!L�L��1M2�ŘM�}��0W1�fc�Y�Y�X�,�Yβ�agŲ��YY�X/���β1���9�ų���`a���؉����Wه�W8�8 8('8.s<����é�I�L���\�"p�pq��j��FsKq�s�q�q���a���!��\�yŋ��u�M��}Ȼ���g��W�w�o���_�?�?��&�����@�@��-�O6�!�PH�&�
� �V� �
� �:$T/4,L#�!�+�+�%<+" b-�O�V�(�����h�h��1q1��b-b���D��Z�7x =��J�g�XI � �Ӓ�R()U)����(i5����2M�P�J��t�������r�rVr��Z�ȋȻ˟��_SPUV8��Z�Y�B�b��7%)%�R��3e���r�r�򜊴
E�L�*����q�.�_j�j�j�զ�EԽ�K՟k�j�i�k���hj&k^�\�Rӊֺ��U[V;H������gw���t*tFt �^�gtG��Hz�z����}���OH�|1T0�4l2�a�e�d�a ����0��4)6yk*d�gZk:k�j�h�a�1�4?e���G$k���Iݖt���Ŗﭤ�"�ڬQ��9�olDmBmZl�-�6�v�N�.®�kog_b��A�a�C�#��Nj�ߝ �2�^����˙�y�s��c�l�Wy�$�n�nn��8wg���&y�Tw�5�[|w��{�ܞ��7�0�!�i��x�x]��I�%U���ޥ޳d#ry�G�'�g��CɦL���f�N�����M����������� ���\B�r-�94(�;�?,>l \:�X�H�VD^�l�e��((jwTk4+��0F"�h�h�nlI�R�s\c<S|h�ýR{O�H0M8��N$'v��wp�h�AR�~h����d��#���T�9t��!�Cه�n;�w�����fGk���<������tJ@J� �E'�R}R�)���L'���P�(�X?�{�/S-�, ��5tJ�Tu6SvB�X�uNs.!75w!oO޽|��������B���"�������Ń%�%����'J��9��L��r9_yZ�ʙ�3/*�*�+�*�U�U�:��=�q��<����.�^�v��Q����{1�US;U�������˲�+����@CLç+^W��Z^�j�h����_�M,M��P�������V�ցk׺ڴۚ���/\�^r��F�M��Gn��J����1���9ֵ���m��Ϻ����X޹�c�s�נ��]����iݻv_�~���U6=R}�ԧ���X�qk�f�����O��t>5~����������Ρ�w=y��b�e�˹W��V_x�y�:�8����m�;�w�#j#7F�G�w|�z�<6�!����#��'&j&�&�O�N���4>>�:s�3���/_���������\�����y�� * ]�v�o��|_���ĵT���ܻ�2�����䯶5˵7�!���H���\(__�]� ����o�_��6���a�]BQ��Sh
s������gh&i��f�xՙ<�O�t�.��r$qvpS�yS�� ` ;���[D��~t��RҜ�#2e�rr�����N);��� ���R'��iTj����z�]�c���Ό�u�S�A�
F��t&�d�t�l��q�����6[��v@9�u�ug:IW+�`���v=���s݋�$�C���E����;�_p%�/h.�;�4,.�6b$�=�*�`lc�P�L�ȳO=�yBrŁG�+ >Zsl2��j�}Zp��� '{2�N�e+���=�ך?Y�]�\"]Z\�*'�i��W���87~A�:����;��u�~�s4�_�s�dco�ٶ��u�M���:�ƾ�'o�����r����Ξ;���>������ ���->����hr��3�A�!�����/�_&�r~�������m�΍d�ƼwS�����x���ѓVS��>ML��T}>����,~��\۷����E��?L���=V�V����չ6������PJ�;���%{,+��C@mI#O�CG�g�gb 0*3Y2����6��s0pp�r�t�N���4-���=D�E�Ŭ�u%d%>J�KJ}�.�1���=-G���/S�PXT�P�QZV>�⠲�Z�f��U�@C_cR3KKSkD;e�Ҏ�:�ueuG�*�# � � �����LL]��͹�W��,�,/XeX��x�Z�iڋ;p8���fv�8�<p�D΁���w�{ݓ�H�뽗��s�r�7�/��t����K��H����$�M�d�b :�5N4^e�~�U��>ߤ�����9�p���#�GN�<Q�:�N��s2"�*k0����W���`���X�ĩ4�tYYO�\�@�]�ѳ���p�I�x��q��e�zˆ�+�W�7~oi�i�l-���6r}C�&�V`GJ繮��/�?ݙ��}w�ս��}zv<j����b�ف�Oz��>[�?'�Px������7^�ocߥ�ԍ��_� 6��1m�s��'�i�_Ef����.�~O^b_nX%�Y��\6$Ϛ���9�?j>��C7`�0�/\���=�2�$:�-� ��*�*���-�+;�#�3� �3� ����B�`�P����k�hQ�h���X����[�0I �%%$� �/�/��D�^�H^B�Y�Dᩢ���eF�r���6�o�B�V�S4ؐ8!�ٮE��&kݑ�C���+�ۨg����`�!�� �c9�)��3Q�q��� )�)��@k�Y�f�$;3{��ǃNN�;Īs�K�k���;����]���=w�a�3�u�T�L����(�r�����?@�HAPR09��&�_����]�?vw�v<[����%6԰�1�������&��<�z�1%�DFꅴ��O2�N~����rj5{9g1w.�W�\!�(���d�4o�yy�Ҋ��og�9�/�0\#tѿ�Rݷ�j��:�b-��jj�o��V������>wJu�ޮ��a�ջy�����⏢��+T<�}vfH������S��F,�l?~��5{�vEjc��~��(X5�I���c=U�H�I Cvx�4J'@�0���j��D)��d���l�0(@r�����h aHr���L���&P8�8r�����n�Š�'��d��ВhotzÏ����
bS�s8O�#*=�&jY�j$7����m����G�Sӗ1(0t2�3�c
fZb>���R�*���f�6��8�8U9�qEssp�����������'�-�N�D ^rG��o�D�ʊN�ՈI�I|���
����������{"��@T�)�(W�PaW�WPkP��մҒ��h��h��� �3��ҟ5�1l5j0�19kzƬԼ�X`�g�c�e�a�j{���AG~�Y���g����\��T��=�wq�����C�')xk�C|.S����T�ƅ(�:�ņ�D\��z=���>A/�* �?9����C?�$��:��Z���1�Yv*)'9��`�د�c9㙕��c�Ǫ�/�\����b����~-��Ѝ�[]� ݊={��>�~���z��3���_�GDߗ��O�M�MA��|�X��.�$����a �?`@X� P����Dp
T��|�� q���C�P;���@!q&Պz��:p(\?G3���i�G��:V[�c��Pa�N �r ��Mڝ�?�J��� {y�����YdY^�����M�p9~r6pQ�y�yN�������O�"0�
 y K
/�t���W�����.U %c++#G#7)ߣp^񘒿����*��ڊ��ư����Wu.�V��d��1�1� �r���_��5�������}�����m�����nW�[��^��
w�z����k�E�q��m���h|!�y&\9bOd:�|���?�w:Qy߾��d���Fq:z��J�͉Ki��qo3Ͳ�frN�a� ~�/A��,#���(��uN��Lu�Ō:�e��+�O�2[�Z��N_w��~�Mg���wl{����O>��w������`�s����Q~�.w�b ���1h�ʘf�I���5p����|�� �Q������K|������@�
H��<���!
t��A�(nd�CPŨ{�X�����Ђh?�U �8b��F�{8g��aja�4�ҴSt���� < ?_2u17�\d�ckb���s�[�ǚ7�/�?Z �-#+/�(zH,U�P��m�7ҋ��r�
�1JY�u*}���<��1Z��ou�u��N������T��2g%:X�X>���m��8�;�:}r�q�u����ѽ[ӳ�K��C��ɧ��Y�W,Y��L�����b�v�����7�{&a}�O�@��ۇ�?=J9���{b&M'=;c*�$�l6.'$w(ߠ����8�d�tX����#�#guϝ>�VM�驕�˽�V�0tո��I�9�s-������nu|���d���m�o��壤�b����=������ԫ�� áoGF�F��1�`�t�J��>�lf��/��������-;7�0�u����b�w��m?t~�.)/]^Z�]��ĭ��Z��������/�_�k�k��ޮ뮗o���������y��>/.�_��V����B��:�����<k�3��l�ņ��?��@�ߓ���� cHRMz&�����u0�`:�p��Q<bKGD�������tIME� 6 @��CzTXtRaw profile type icch���i�ݸ���s���r8���@G�i;mWt��e^]�"�g U��v��O�:�OX���|�u�t��So�-��[�ї^F���vu���1{�������ϡ�������?�ۏ�T�i��9)�=��?�]B͵�T���|���j��z�/V~~�0�o������SkD����y@v�� �۰�__�������v}�6����L����LBh�����B�������m���v���m��ϓ.������ !n&�T�:o_��S��?����������ŷ����3�W�U�l���q������!B�[�}(���ko1���ޘ��몖W�_ �y�fc��3�1�����:&(<���O�[%��'�|�o�4q5�������<��J��}�"E��/O~@���G����H�ib_ �7G����оJ�ӣ�Iϒ����U��Rҟ �:r͟ � L\� R�}�iܙ;F��~��_O��~����s�PN���Pl�����1[��i�?��m(ŧ������ �텏�A !�oON�+�����P�Tf������N�[x��'�`�㏞~ܫ�N��=�I�����>���k�ؕ�>�a��#�?y�n��1�/�LB���+_y��.��a�� k��V��UyL�T���}�^��������\�ܧ� ������~�[ (~�t߿����ѹOC��?��Y�Է;�V���d��Kw�?�$譟F���.��֭����s2rt����d �{ay%��Glǟ1�=���'�z��y��빱�3����d�����^N�7��*W�� 1��go�7V������q��y�Q���3�k|yǟ �X?/O�s:�Ix/�d�fK=OމɁߦ�s��_���?��-�~k�+��0���ڍ���{<�_��/�i���7�I3(���'e~ϣ߆�z��O�q����ўk�2��:w܏/���9��^�%Y��������+w$oá�'#|�(�2�O�{�@i��������f�)�!�>RZ��2��B+qG؅�������ˏ�˿t9Zy��u����!��0���e>�^-��4���]�M/W�gh���J)�j�v�O���$��L���d���;[Is]Nz�%e�!Ń�
v �Xb��r'�: HS 40h@C��3�gE ��H2O¡�8��=q�Y/�H���tı��5�C��p��A��� F��4����}q"���@�@�C�zL�n�<a9@~��@I�3����`4j��K2������Fl;�&p,��/�CR��q�X��/
���8idU���x���I"ъפ'����dQ��Z�!�S����Ĥ�v)l>>O��&'�|��pÕ���m0ۂ���n~ V��P����8�`�m&F���t5�2�eb�4�v1��Toa2J����tH����HĨL��6
z�#����Q�^v�aTf��Rj[��8�ń{0-3S) �W17��E)+�)�j���^��m��n�Z;�@ڬc�`�Nu�f�`v�w>�>����M��I�A��n0���d-F#!G�����y����� kҳIJL�4)�I
L&h�y���y�G ���U�_�%0�����7�_��Fgn�f�
�l���߳��m2w���?��d���.<d��|��x\��|���c� T�G�i����K]o���rCMYm�ʖ�ۼ]U7Q���T���b �o�8Mw*��_����a�=B��sJ]�� P���L!��B����:r� 1�1��]�Bi��)<�V�ub���g���
��g�+�u�R�ɗc�G�u��-ԅ�;����r����p��H�Ь���� ��e�3�i����� �4�
���E�#Yf�.LB3[�n 7�$�t<���b��=Yg!)v�w[a��w����PƧ �F`�á�j�D�%&w�pI�{G0f�� H�`��e��t��R�O�EҜ�4�:�
쌙��@n���;N��8���X�4rL;F�`i1�s�1�󙪮X��T��lk�?.�E� ��q��#��UF�l��Ğ,vR�O:r2�uN�>�q"h�z��Y� 86@$ƕ*�<��B2"
�vqWt ����a9��xx��%Y�M�t o��� (��F��P���-�ߤzϢ��<��?�h1�o�|�c��9qeJ�sj�Pg)1e��f��qS>=�����p���S������Nu�TZn(�16
��P�E�p��;�S�9�Ic1r�hf��)�b��UI�9Ӻ� E�Г͐�M�٘��D�&�aca�za$��� XX�I&�3�������% +=7Yz�Lբcȅ��ʝ��G�����}��@*�L����\c�J@�2�1�[[�c��r):�H� ��%�'�� :���,|���ԟ��j�k�H����d��/"�֛I��+3��wv �`�Pv��(��D*��%6�T�
���B��� r7fyQe���@7��V����
����(%h�tR��S�^e2��N����99��E��ิI���������z9{� c��]��0x(@}le!�h 6�f��Q��4�]�I��d�&��1�Z�����I�"�Z�=��y��k���R�z���:hh�Y�)S:C74B��'��o3��Ꞇt��7�a!��E�U�&��� LG�A���ܐ�a��D`~��IGP��@Pdh֢�ky3M� ʽ��U��Zo �V�_ �z[��g�pA�\��ɮ�mQHkC�-R��PCM�����LnvQY��$�$E��z��"��-� �S����zϗb�2�HэZl�Ϙ�a s������������e�{v��þl�]A ���p�1�����-A�C�:��?܂� ��О*W� ��ASu��:)�F��)C�w���t�@���苎�T��1l�}�CR��kڀ��mm2 �޸�-�1�5��xy{��ܠ�
�s��}�h0e���r
��2yR�LrƑfwҫ�!���`�d f���>�2e�����(���"p��:� (��&=�z*2�,�B��p � �o�>�y!u:�䐰�yF��XI�ݢ7�6�}�3���fPz�Uh���,�=��:H[��i�äF�"��9IQ��/��I:xd?p�K^��l�����$�G:���6���
�o��A��Vݴ��>�� ��tk�F�q3�/d[ڌ�:�����|C���=��RN=�8���+�x�͊fޙ�3m9���Ņ�>�_��Qa�}�ǐ6q6Х_��؝��)��Yt2]��B#�f۔!8���&xqI(�6��?�'�:/� �,� �^t�=Z���]&��g!]��X@/3� ! À$��Z���Z�Ǫ& ��1���:�5� h���_��I�t8�P#7/�g�����K�f?��c>? �9x�@����)�&��^1�������������9wɆGm�6�W�5h�G1��b��̀��Y��y�p=�}�x�_O-���{�,~&5���Y� �5�m�0�ݴ"GBK����YW������`C]�+Qe�G܃�/�.��Ft��"�8�U�@~�cT���i���;�|�:�0�a�)���]Z)9D�&���J\�1̓��#��6(�WB~Ԋ�R̈�<x���J�<��)�{�<���Q��h�]f���z���-T?hR�]ʆv5�\v�Wmt�%-�:� ����D�TH�颺�B��=8x81�{�PB��i[�h�Z!C�>�q��0�"�O�b�}���� ut�X����l�x �9��b���^Xe!㡇�eC�"�܌��$q8�eʄ'��>��
�k��!���4"��Z��B�!] ��)Յ�_ "R�o� m��w8���x-�&b�\s�q���"B����xxX�l_�����~<��8E3�Ջ$��iwF��*W�����Ѣ�|�8����ٮ�!^�h(�{�6P�A�dx`��~�$9n��]���+! �>Q}�ï�O�_R�<"Mۓ��A�ˠJ����f���|G-� ��a�1I�=��"�����5�] R!~���ÒK<�S9�N�e�W�!'v_�� "xs�s�*���y�U�N�QJq�A�BP� ;[cͲ8 udPbhd"..-B��m8B\�Œ$ ��@�� ��"ꋓXm��>c��J�Ó�ǴBO% m�]�]��X��o6�y�!\��2R�A� w�$G���Z��Z��� 0�FI��#���*���d�$?���{0w��%k�(�0A>��a
:" w�qXkL�b���q�b^/�B�x�=6�Щ��y���#ʷ�H��{o�.�&5$5��u���m0b�1�L۠r�]� ��C;">�u@�c��J�:_��Z%��< � �E�`J�!�أ @.<�P3�� ���T-���4&5��,P6K�&V���@���R��R����`sT�\d�[� �� �`!�Ӿp��|Cj���Q�7��#��P��V�( ��1nj"��T�P�ނ`�A�]�g��X.OZ!2f�E�V��Tt2�g�P��i�Z�J��K�%��Jvk�N��x�U�rr��@�x����69E�tD=y�h����Cm\T��k5�;O�S�<�.���+���M�.
ۺ���~��Q��1S�%xLqC"�t��\���<�<T�� U�m C� S����H�1��"J���z^+���k\���[f��QM[�@���A��w.8�^&�� l��h�nK���Y�!I+t#8P��:���Ф�#&��S�U���fFN�e�$��xnTȐ�N0N�'2)�,��,NsjZt�ȋ��<o*�[�\!-O�g���1K$4�]��7��".O��g��.f�=K�
�\���. U���lALv���\2� �7:m���S�F- ���A6( �f�W� 4
��w`>|?��a��� @�Rk$v�'�4�ڸ0=�@ �� ��P�16�/$�)� �G�h�j��v ��'�e� 6„ѦA�2�6G��d!��9�� �3��1?���s�E�4 %H�ɤ�:PT�`��L�b�����it�\R� c��π�d� ���<`�:d(�m�l��<zpZd��U�`�l�Q�!��h��4��s���FwP�'�+'�l���^����!t
8�_h��f����jz��T"i���ޢ��]��>o���d�9�}Ƨ��8@���h�\��!#c��*� �=R*�^v�Vi�lÃ�~�w���!/y�6.'���&�FZ=����&|�osz3�?X"��O��Tq*��ݽ�nͣo���AGh�3!��rp�&��BX�����g^� H���~� _�M)~/>C6 ���CJ ���}D�Xd�����f�
�%A+ȥD5s��D#�i�V�a��m��V3B�<����Câq)":�ml Tya�y��I�bA}�)%�ipx�h��� ��פ^�+N��h:�ƛ�qA ���8�m;!U��n 㑀1��FZ-��5AK�3c9���8��TP��;�S�s����q��Od�(z&�"@�L�eӋ#@��D̛p�L힂����n��T:p@�<˰dB��lA��izA�RVrr��z]�R��D�p ��:��\��7�mPz ����>��6<z�Cĝ�H���L5W��!���7g����U�Ў�}�$�UZ"r�TKM E��b�.t���� �(W�O�@]T.�@f���y��;��$��fGw`�a;�y�����J���.�W�r�]�+i��;��mh{� j�66����N4P��
�&�>�]�g�5��� ����
��5$T<5�P�JЊ."��ࡒ`���=�$��E䕏�8�"���G��b��w�:��6JMD���*��5!7�@W��x���\��z�FB�{P��g��ٴ��!�qA��T>����.yѰS-�6A;&8����Z(c4�Ah-�3�\��H�����$D$U��,��3�XH<���E��GFl�iLt"Y �h%R�J7�ٓ�H7�kiO`�&H#Խh�q �L(f�86~AS� (�� �pd�����I^R1��D�*���y-��2�z�]X���.X���R�z�݀E���ͦ��������]�Z��rf�`�E8&D���B�A��|l�ʠ�1m��ْf%з{�$�1U���ܺ
G��kTH�Q�e�5>;Ԋo� �S{��*�y\�3SR�x!�1(bh�- �s�G�`�MU_2 Gԡ
�ך">i&�G��M- x`�r�Ram ���Ƅ����Ƴv���M�&wɘ��)��a��(����O�� +1՚3���>6H>� ��򴻄�v��L�.�q�]#�6]���@�w i�DӲ�QU��6��T��}�J�U=�R��4����!z4up��"Q�~�n�������������c�>�,�n��RK�rC�B_�v��V��_�������T}�/d��{
�I;R�p�`;�ek[�y�jR�PtY$�.�9nm a��p�,�jL��q�]��d`w����)p�H�a��`j恢 "��&��� �V�0T[k_���{9��Ѵڑ7(O�oF���AGh��Wl׋��uQ�����3V��g
��$�ם�R� ��ޠ\��$&[B�+<�oz�Na1���)�a�U�Wֈz#8�Q��.�%1f"�m�����BX������#YK��'u���]�b�����U��G�e�j�� �:��<��wJ0�cͮ�3`��Lhob)���!���<� ��JwY�Z�Co��wj�o1P�B�Å�[6���dS5!#��M;���v��[e�}�}
t�����
E� �Z�(�/�t�r��
dpx���"x'��岋f�#�q��k�Hh���4-]�loV�YQ�St�6����'�����TX�ٴW���F�2&��}ڦ1�3�����p���W�� �B���&��W7����9t=?����=l޳�aZB��y� �ʟwB��T��7�i�^�2��wD^���j��~��Cd�����IDATx���g�e�y� ��7ץ��U�B�wh:���H��%��{Z���i����ٍ������vcc&F�-��[)� ��(T\9�˪ʪ4����{���Jwof� ��@�ʼ��{��>��7R�e}��G}��G}���'���裏>�裏>�裏_-�EA}��G}��G}|��/
�裏>�裏>����~Q�G}��G}��G�p�>�裏>�裏>����_��G}��G}���'����>�裏>�裏>>��}��G}��G}�� G�(裏>�裏>�裏O8�_� �: �c<�C�e$I��/˲%�s��gYV��/�V:��r?�:�4Mɲ EQ~)��I���)��"Iү�>�M��,�P�_�����o�=�ʾ�k�q �+����1�a`Ư�T��#�2|�'M�_���9�i��y��\�,#�cEA��ef���u]_�������"��r{۶��'}�� >>Oɏ1>������lٲUU�/��/����� J�(6�i��(J�zſ�^��0��l2888Z;���b9,�ٚ��\�)�e����zP�s�$Ȳ���,a2>>�a�X�Ȳ����e� .p��8��($I�$I]��z�s�g0MS�8F�uΜ9����߿q
k9���cY�9y�$q�o߾�*�2�����R|&�,C����8w��$q��q$Ib�޽�i��k�gӰҽ+^��>��_�"����A���ZDE��_�%SSS躾��e��E�A�$�8��ŋ c�v٠)���?��k�,˸�����޽{��닾�+=��z��r��,��t�������V�e�&֢Y�}�$$I��i�~,�G�$�v�ME���O[�q���_��qx���������{ۮ�'������`d���/�$��a&���[l"�(B�tEE�e���ٜfp�CӴ�4�I�I�Pm�kDGH����ȲR^�x�(�R��8��EY۠΅��EQH�&4��dLM���e�$�ɲ���+�QIBU5Ο;����8m5�����H� A��=D7
Q�EX�&e1b�}���ǵ5���,��>ʲ̱c���0��$I��(Z�S��#�ei��� À$��uU��������OA`�z���6�����s� I�y晧��j|�S�bpppÎ�ǵ�N��3����~�{��6m_��M��4M�ee��y}�$�(
9�4��M���$��$�Q5��=+zEG�c����/��}�A`�h -�'Y��ωU�P�bS.��x����w\�e��&�w�(�������) 4MC�����`��Υ �1Qbf�l�t�<gϾ���y��Gh46�-���~Q�
>�+��ɮ]�q�-�R�6ʍ��4 �#dY�0�5��
�$���Z�]x�� M����o��&+I�7?i�qbYղ�X�sb^l�UUC��BTll�^TE'8��:����� ݝ(�i�f�<ðټ�}-NJ��w�4�\|��y�y>v�mB%��{��9Ku�N�ɸW�h���;:!�7�btt3�n��)̣�b��B�(�8�ݞeffð�7ⁱ{�]�q���x����]�$F�tt�\�ݔؾ�V�,epp�8�p��Y�0�?��=ENL�������!�B�$�V�2���_�```��6*��M��p�KClDB�0���bdd���Q4mc?�}\;�pa�������Vn��A�Ƿ��Ɋ��j� �2�io��Ť b�� l�F�R+7�q���EQ�uU��8�p�&qb֢�$�8d��;�0�EkHQ�k�,��s+���C����z{6I�D��s7CC��Q6x�T��"ML�Ʋ*����SG1i �,˰�
��,W�̠i:����n���C�(X����/q�������[o}]W�z�)����F� ��dx�Oz�bhr�:���$1��a��*C��q��Y��}�>4U,�K��� ��$I�^o��z����T,Bb1�Qy�Q��H��z}M�ب���G�� i�a���]b��j�FQJ�=C�eT� c�k����s|p���)��݇���I�p�]���b�N��w�l�1mM2�M��قiT��*v�\�I$ $I�n���…�XV�;�a����/γ�{��dY�V�}�p�����/c�Ul�Z�w��0� ��!/��U+'iI>��#(������K8�G����������a��LN�㥗~�g?�0�>�y�����k �f��_�c�N�G��y�g0 u��p����% âZ�o�z8Ya�n�`�5L�*��e��e�f������P0M�ݞE���A�V�>�q��DQ�O �r�h ���,w�0��x� A�S�2<<.���A�붱�*���3 ���{�۶7�x}|��/
V���?����1>���n{0_T��$�XV�w�}�(
��ڲ���e��!���ԔX�$,��G�����4g'����OE!_{�36����X�-ʲ,�d�T*u�.�҂���:�YTUDzl4m��u;4�3 ��lo��*�#�Uv��8����ne���te�4�u�t:M��������$I��s�q��l�����^G��H� �� C̜�! �(c-�d���� �cF��1y�"7칋*���t#ܽ,���J�n� ���oYv$I�� �@���S� 0 kݔ������Λ���x?I���՚AUU4M�izٝ�$Q�����(�Ȳ�o��T?��u��#IRZ�i�}�5Μ9���or��7o�k�q��СC��'Op�=_`��}y�;eN��Y���^�����֭^QЄ��Y�0��닎�ib �w󉱕�ʊS�b]����Ȳ�]���H�D����:�����(i��e+.&�n!I
i��8�|���b�`p��y^}��4���������Z��}�1�~Q� �$�?��6|�k_[�#�2�UA�4\�C�=�mW� �J��˗'PU���+�l��i�N�9�;G^穗�C�h�o����_��ؿ�N>}�7ٱm���`�"�8�B�l����x�C���4�x�����7U*� �Q��#��:%uJ� T5C�u|�-7ɶ]�0�5' }��g``Ӭt� B��&�0~��>5N�<
2��u̺����3�Y1���N�$C5T��.&߿��g3��Ej�A�o߃,+ 6��C'|:�YEapp���%I���}ӴW�<�M3H� ��w�e]7J^��j�i��;9�x� ,� ռ��� -���� ސM|!�[����k�,K\�t��^{�o|�8pp�^��k ������ ���q����Ȳ���e ��'d�5`i�>�"
�_����6fT*�e�#�
�i��FY��撴�€��������$a&Q��4��ۮ� $��h����.����l����wrW��j<�uټ��3��4�����ݻ�c��ǯ'���%�w�39��������o�����TǶk���㴈"�Z~s):�-*�z�?\�-�$I��$���e�� ���ʦ6!+2S'f8�g/�>�pǍ�c|t;�"344����eW�Ƨ�����.܂��(j�y���� |�Z���"�bB�m�r�*�V�7�0�q�a����/��~9�1�ջ;��?q����l�aUlR�rÐ%t[G�%�V��HXU9/����^S�m�p��i~���˟b��ۚw�OU��;�c(��@�����+6�.�Uِ�L�t�8*���@|v��s'�j�&$���U.B�m�eYʋ��,Ks�����Z���k���y�}ϛ�k_� v�ر����s�=�ѣ'x����s�~4�ȵ]a�����9-/�5b�-��#�c�4�ul�׊��4�6' ��yQ�c6-�,# }$ 4�W��Q� �U'MZ��|�ܻ��j�+W&+�����|bP��6�H����嗟`߾~�~ ]�k �X?�E��������7��n�;>�e�K҆�����HR1n�OA�1���X��M�$T* L���,RF,�l�y��C��(�BcS�4����)O?ũ�3f�J�d��7���f�+6I36���Mc$��BY���b#��I�9׹1I�� � ��h�(�JIm C�(
q�V��PUeՅ8 |��z�+��{���:���s�%IB�U"-"tC$YB3����]�`�mTM�Ru�S��p����^J��ۯ��[�����Z.M�O�f�$ ���Z����~NM2z����8�K�m�9�w+�sP��$�{u�p�-�l���FX*.����G���W���d��ݿ�|�>~��e�Ν��_"�4}���v�,|�X%��\G���<�|��(y�6��j(�؄�Ww���� ���(
�p��C!M|�E׭�ɍ����"��UE�M�P4���x��}�"^�Dz�XV�,�$I4ф����,]�D����~D��p�}��� }l�E�Uh6���‹LLL��w�s��]�!x�
���A� �N�,K���n#��ۅI� N#Z�$�;�l�8!�B4C��߀V;A�x�N�&���K��Nh\&��p�: n�Ҫ8�.�7�k�&�F�R�`����@Ȳ����8N�Vk]7���N����Vk��Qt���# �4�9����4M�tD'^P�V��H�QF�s�α��q�,�̇,�U����*���ᚑ!!1�s�V�:5�̩I&[�p.�L�O#�0:�����%�Fc���(�1�����R�~�ݿ��9�f=���D%It �(t!]x�=P�4 ˪"�E���^��$E!��v�� ќ���L
$ .^�̉�0͌o|��X���m}\���O��s箰o߃��yq,>��I���"�0ȵ4a���ƶ�6��m�y.���4}�����d�H�p*�H��0���掛E��[�eY*H���Nyij���XQTLo���E�?�-4��@���)��7�D�1�������x�����g>�!���>�_,‰'��~���o� MS�,vR%���N�7t�(
�}U��Ql/�y�l�2[��<v��*i�8��&)��ڍ�+$Q�.g;Y�!�2�r����m��&�%�#����op����6������z]3��(S!.�rg�Y��?[�f����n�U҆�C�9.8�B�,�'�=����/D���&x�fw�C�3�|t��5�k�۴���������r-�L��r5tC�`t�0���7���7/�ѳ�y��?a߾���4E�Lo����q��;<�TUò*�� ���>u]7p������
{B�/�<EA`YռChEa���ݡJ�dd���#?�)��f��<���|�$���g������},B��LNN�=C���{�}t�sG|G�$Z�`l�0Ȼ�N�����,K��*����12�y���Lk�h\A�4���F�Њf������Z�4�p�v���Vk�� ��ΛI��@�K��� � �^-Qaf�2/��#4-���a���v���_�Å x�ŗ8u������-[v����:����q�漤b�z}EQ{��2\�8���"�|TCAFUƬ���J� �Z���D �Q��h
fդ6\#K3$yn�k���⻗x�ؓ�8�cg�0�ocۦ}��0�_�N~� ����Ngð�%�*x���.�W��}7�
�f�.a�b��a�1����k+j?���v8q�G/?Ǯ�F1j��x��A�DA��Q�Ǣ��ST]E��^$����a���p�]�0E����y���8u�0�[6��S���T�
���gN���)�
Ws�A<��E�9�iZ�x�Z�ﭔo���ד\L
�?�Nj>��)SSx���sg���k�W�ǵ�f��w��d��-�<��m�Wu�+��ĺ%��E���z�;(
���h�T*� ��)��m��u��05u1�]��} �Qz�FcM3�|��a���4���_?͟ONn_���O�ry�J��sVB%�={��^�!��{�͞={��^���|�yx뭷y��ԧ������r3�E�qZ�?I�پ}ߚ?E���g99y��{h�Z��%YB5T1pCf�͒D [P4�,$YBB*;��Mu��ɶ۷�E�_����3��1ff����{Mӱ�
b$��Z��iFN_�h�gK;�^;"��L�"��UFpԋ����{�Z���mW�£� ����q��o=�;?�~�Lc[ EWW�\�։��鏦1��S �����}*�+Y��,��.(9I��=�\��)&ߚ��?�|���Ȧ����M֟��?˅�\؉j���
g(���Fc��f�n�B+�"18��k=��+PȲ�4M��]H�X�6�(z�~�{l����Ga�֭����EHӔӧO��g<��?��������3&4kU �Ʋ�H�f�tZd�X=/\�(
���(9˪�y�μ@p?�h���N� ����s/[�QE�4|ߣ�i�(k���(���{�'�!U��d:��cY�U)�"C�ñc�x����}�f>��ϲiӦ {?���EA�ӧ?��W_�q"����7QK!�#*�z.��r���͂�������Tn����.�`C*I�� +2�!�_�(&�#4k��n��ddȊ�Y����XH�ſ.`�K<��_��១�F480B�:���رu?##[�����k����^8�XV��E��"I2�-l�� Y�rq��<�q���%�(D�tFV-
����e^~�q�F�и_e�������>�$%bB/$�BTK��Э��z�G�x�dUA��ҴLj�b�� �8����y��*i�i�� ����^P�Z���`KsnsH
�BgR��\a-l:�\$ ��:�*i�������N
?��g���ˏ�o|�/|������%111��?���N������c�4+�, �� �b���z�2�n7�F����h�$I�!k��(
��2\,�œ��b��|s�}�.I|�#�c��F�*)�[ *bz�UL��y��8m\�M��X�Wʧ;6�床tũ��1��w�y�Ç����Ž;�kJ�~Q���'���wOp�-1:��0 ���ۻeYV�Abxx�����Y,�Vi/���L]�����d�=~v����P���x�5y@�����j�����)��086H6��V<��{�,Tl�4�
W���̶Z\tN�5�Eǝ%h���x ;��gttK�PT$1�6.-�tA�a��K�p�RU��h6�p�V.�c��U8E�LM]��w~������d���Q�t7!�D1�� ��&)��#+2�,�$y�F^q�� ��놹�K�8w��#�����[o(ii�n��v�s�Fl���%�RX�����˽oY&:t���!��}a�D�AB�$�ڸl�%����L��^�1����vFFF��z}\������~���z�G�v�Y���@�C�ln�Vht4M+��h��P�(
���4X��B�Ҝ2�q �������b��X�)�$�� ��.���.~'F׍��YEӣ���yq�!M���%Ea���=���be�7�,8_���1��gr�#v��ӟ~�oX��/��� �2&&&x���Ȳ*?�54Mx� �����Ր��H����X�]:���H2� �R�*,L��� >�|��>�1BB���R�Y�8�1jf�$��N
�$C�4dU^�
'���#��-r22:3m�>�B9���#.�;�R�䇗8u�0�/�˽�~�-�v�g��Jr1������B.S07rbSt���!CQ�X�}N���W�s�g9����U�߳��`uE������$J@�а�,��zDnt�Mi�+R��[�}3�����W.L22��Zm �N+���حw�NEe@������j��w砢��)��1)C��rX�p��Gl�z ߏ8s�C~����oq� 7��d���q��1^x��D���?M��� 1uβt�&K��/�E�:P�����(��k�u���QhG�wu�BѲ,˳W�EN<��Q�6Jg� �r+V� /G+ %?�����
�J�V���)�\��R� �(�k*�J�R����� �8�ܝYV8t�ET��[��]�����}�B��/
<��;���'q�]�e۶]$I��j8N�$ ��z� ?��WJ����@�1q�qe��~5�4��鷐6��ߺ�4 Z[TG��(��5`vB7 c����� ��K^ü�A�e�m�,��=�l�E8H|gj'g�8���_�� ��_b�PՁ2�en,��i�붘���֭��܅Y ���4mG�c��6YVYD�$h5�9r�E޸�#n����F5Ԯ �4�B^�C�T*T]-n.zUǙr�����c�����s;/]f�=�Oh�5̷�f�%�M��m�����^ҭ�_1Z_��$6"j��m���b%*IRޑ�+TӉ�% I���x��'����166��s��ZDƋ/��ѣ'��7�9u��E2}��ʢ o�i9=t�6�$��V�0'�OszR�m���a�q�&Ȳ�e�X��&sŁ� �u�N@�����j�� �VOS��!Ir�F$ BZ���[c����B��:��,�4m$I*ݙdY�ܹ�;�67߼���r?礏_>�EAE�<y�������ۿ�=�<R�_ q��v�t������B���<�Ӭ�� �̂7_�}�;�Z3T��E��,�4K�4���oc�];���$QB�TG�XukMH�$􊎬ɄN�7�Wt���ja N�0ƙrPt{�^ԭ� U����ݺ��w���=��Ž�ח�����0 s��JtK$FF6������p���̳��s��8���,���yf����[{�n���k����1���^�.�y�f� aS�E����4���tMc����%}���^���@!�K!�+�GD�p���5k>
����]�h���HȲJ�&b%:_l,��������ei��Q�"-rT~��G��_����h�6���x��Wy�ͷ��ƹ�/to��#��rJ� �P-t��"��izi� BO &��9�a���j��Z�\%TU�Z��5ɥ�i�9@sŁxݤ� u�_[ �,lţ(�՚EQj�������,�i35u�,�0 �Zm�,�x�ٿaǎa���/����m[�`|�?]�f��}�����㦛�c``��
^�A�"^ΉOJ����V�x��2�i��X$I�H9|z���aȹs'�j^`�5�����Ci�yi,h%����-܉$Y"�c�@�� �@Y��>�2���fiե=�%YB�tTSe�N�� ��}t��ߴ]7�p1�L�p9�Rrq�ƍF�d�fs�8����T�9��*���$�C: 1ݼ�Lx��F�z�>��(�PMUܳ%��$��:i��1�'�| �LJ�m]�ҥ ��n�7-��x -@e��N& Q�m\�C�6Pz� ��s�4�4ik-
�}�����qH�k*
�2a[+銟���f�Qn�EQ��j�2;{��'H�D�$��+ܔTU�m�rs���o01q������P�nl�_�~���������ߣR�mJ tjQ� ��R��r}��_��F8N���m��/<��c�n�kǷ�\� ��g�n7�=[�<�G�E����r�㔡������" ���Xu]gj��a�b��11q�o�1x�� ��>�X�آ��}�9³Ͼ���9p��E?S�%�--�Ȳ�N���V�H��KMA�9Ͳ4���r���d��-�gY��� ��j�hʲ�UI�PuU�\Q�m��PMuɍk�eD~D�d5�^�Sh�oc��W��ؙC��nFU�R0&�2A��n�C]7�VQՍ� �iF����S�
�TU-Ƕa�a6ape�<��B���>eiF�JGpf-]LhVpőe����9E�F����N�;���8�?�h�y.���<^�!b�!��bze���^�� ^/�B�HL��.&�N3����\w�"5)���(6�EgT�YF��y!,S�M�^+�BD��d�׸, �EQ ��+�����3���#FGG�� },BǼ��?~�͛r������49)/��g�-�J�=,��� �C|����4M��h��7_@-��r��"#�����~A��N��Z�%mH"�qZ�Te5��n��1�Z��➞�ēO�����]w݉mo�%l},�OlQp���|�g�����Q���^���!�|</+}����q�{��?��o�W?��T"�\<AlV���c����:��
��!u�G-+rI
����v�����@��N�5��V��H`VM�|�:>����ۯ�}�>�mݛJ6==�㴐�"w�̥0�Y=G����)�JY����Ӵ�)�-t�<-
��������w�UC%���0�]Һ�ؖ[6q��&O�,|�s=��ϕ�4K��Y�~��1s�¹��R�]E�QU�(���Tִ.GD�3Y׃UQ4�$΅��H�$��DO�d�N�ei���(�\:)�vۮ-�8]��-
����3g�e��Q~�����%1==͟�ɟ`�#�u�g�����p��C]t���{�K�O���$i.��r���,�kJ�a�^��\�?[��aH�3K�=K��T���B���h>��I�eb�,K�rYVr�C�h�+��� Z��g$I4�S|���LL�����f߾}뺞>���Ȣ MS�y�0/��_���h���\\� *��������~�8f�����\�Û*k�bʲ��89o9�[��j���yH"��� �f̉X��n�Mk���p'�+z�N4߹�:ZEQ��l832F����7>��w�cxh3�>0�C�4M$iI�p��n䛱�<�ㆸ���Ъ�BO������9�a��[��g"����Ԧ����fjB���"�LW��2*� M�
��4�����,���U����a�`�Ut]�P�N�+6:A��ݲ�Q$IFU�����H^�Y)���$�r]DD�5��(��I�v�֢͍$Q~�
*S7TA�m���ݻ7���~G��%�.����Ͽ�o����X�ٳ4DWY��_X���󩚪�T���,�|�#I�2�@<�����LLI�8�V�# )��W ?�>v�M�(:�5I��:�aX��Z<#撐;�K�ƘfeEg���I�Oes���}� N��+ǽ������ާ"��K�'����k��⋯0:���o�J�ֵ �aXT*u@�ݞ)�G�|�Q�6���6�E��$��i"!�<�Ɲ��My��8SY���z�AES��V�"���W� "/"�[(ZwA����=��|x+��E�8(�.I���Mbpp���1$Iff�J���}� <�!MS�����NK�E�����p�i��Nƫ�ZE��(��Y3N\�����&tBaa�%� ��h��y�㺝E� I��t�,�/O��Zu��!����'Z��������*&dI�����/��ج8N �"�˗'I��� �088���(��CC�T*�ܣ}i�G�O`��z��z�ȫ�:u�;�|�3k�}\�8w��W�}�=��7ߋe���Slڋ�vh+�cb* �,����p2�mZ�\�=o����BX�6b�QН �b˖��j$IL���]��5Nź"�Ҳ�_�$tWq�lN��^OfA��TUe˖]��s�����Wx��W����v?���_>q��4My��'x�c|�[��J��f�%�"e0M ��=�}j��5 &�:�$��i2XE�<�0DQUB'$K3a/j�3�V�PMIt"�鑥��:��wMg��j��e�?���׆J�� �T�=i�>�a�DQH�=�eU��D$R \��a�e��[�iʥK��H��cF�ě�0�BO��}a�*+2F��YP@Q̪�;�z!���k��@�³���a�X��繥N�Ok��n�'� ���yk-�EȚZ��(�J����<�'-�Q,�J��HT���
r7(:��h�uA��q���g���;o��;���8}|�033ë���;��?��� ;w^�u3�jA�mM)I�n����JcޟKH���ɥ{��t:MdY�e躵�9IeX�չ�9W���c۵Rk�i:��)'�I��ݭMY&�M=�axx|�i��u��q��Vn�����%TUcxx���*
>�2/��W�����z cm�t}��+>qE���?���gٶ��{M#̹ͺ��V���k���x�?�,+$iL�&\�����#D~�Q5Ь��"d AjO����Ck*22Me`�c��������dxp35{���1�Ja�X�EU�exK/N�H�Hݵ�jO�3Y�(Nx�������1�&���I����<k�8bmI�0�Q�� kbb�"�̬�]�[5��} &�?�S/��^a�����m��������z&ZB�`.�f�bߞ.7 K��;}dȲ��~��+P��]��P�� A *lI{�/>'9��-1� �V��G_�ټ��>�M��߿�c�qm��w��g?{����e�ֽ�ړ����Ę��!ͧ�Hӌ,K��@e��I)��S
��Xd�0�����0?�8MS�8����D�h&�g�a��'��rI��k1��li���f]�� I���)Wo&�NIS�8N;oF��֡B�Nn�]]�l����7�\����z}C��>�X ��� �2fgg��w�K��<��ר��k��@U^˭G;(�B�>� qQU��]c|p'GΞ�̛g� ]t�Wq�Y $E<��!�R��j�ǒ%�Ɩ:�?�����?;���*�4���q����7b�z�~HX��8����א;=����� �����)@��h1� ����8e�z���C(���N�����^�PT�$L����h���j���۔�a\��M>B�e��B}�ɑ���Ko�������-�Q�R����//jk>OY��u�wr���ą�xX�E����X$`��b:0�I�Da�1�����GQ�F;�e8s��>�}��6n��,�Z���څ����� ����mW֠%���lC����� Q���M�NX�0�^G�x�ܮ3�]���ɣ�$��C�Mt}c�ނ"(֟��usz'�4��uN�S��@ӴE���'��a�h#��RE���uD�f�U��fsMөׇ�I�7�|�f���{S? ��_:>1EA���k:t�;��*7�xϺ
��s��i�Y顬������8w���=�>��;���a6ݰi5*g��J�{N��7�Qu�� ��4N�,Mt»�oed��߽�K^b�� ��?�܇Gi�9M�xlۉ�[��T+u����7�䯦)䩳"IY.�8]�8��4������Qs��1^y�'�?�`�]��U��Y�1�&I�̉�M�g�uS�7� �U�j�nD��,?������)û����N}����b(4��V=!��s_�w�:��3�i�>���3��`I>�w1M;wJ�4��_]p�o����8�僸WtC�$h��?~���c��������XO?�4o�}��{o���o[�D ��{��I�R(6�";�;�C�3EZ�iV�)m�W�,�Ձ�8S�8&D.��/}��E��n~�&��F���3
Ii��@֓k�B�!;��C��ea�q��9y^�1�|Sfg�y����s��=�؆��}�� >1E���4��e׮۸�;��]_�3�y �nۮ�N,>�vۮakcZ��0V6�䩤IJ��nm/W�&2�6��,�,dU� ��$J���g�F%�7��;��)L�����.���W�����12��q���F�3Mfvv���e��."+
�jI�Pd���(�C����fs�����Zo��Nl����,I2g���~
׵�} ֠E���2\!��m�塨
���S�q��LM�����W��3��,�}���&)F����߻��O�go_�iu���/b�ˮ�"�4�%ͺ�����Q�zQP���$*�#�8$�B<�AU5FF6��q��^ .�R�صֻ�Ph�T7V����_�ĉ���������>!�2:�O>�$�.��җ�Z�=s�m�m�%唹��Hg���� �-��؋�EXzv:�LL��Zm`�u�$ΧR��- ��E���uG+-,��7� �J;Qa����fn���;��Z����<lj�5N"6m�Vh��&���{�o��w��Yn���u��}��+>E��� �?�'O�����?r����y��V��� Hɝ����ZEnA�!�tfI�J�m�fukc�N�R�m7o�K%��ޘ�Q�����a��FQxȚ(���n �Rׯ���^ES�L ���?Jcs�ٳM.����׸(�{�G�>���(�*�!���0y�<jMft|EW���%��$����r�Γx�K��N�����N����,�93ʼnK����f�]TF�e7ʊ�1͋MF�)�[�,�4I�;>���s�qӾ�?gjC�=�*����q����\��i6�YAr��b��@�z�(��< x�{/��8$ ��VQ�O�R�VI�I��^17)�(��r=bR���`j�2���$��y����7}��>�D���_����b``�����Y1����罠��M���5Ŕ�H(_oHyڷEGl޼YV�m��B����\܃4�*=Q�E�'&a��� ����I6�I�B|m��:��bb�Y[��*C�՚�'� _��g����}�>�X >E�ٳg���~����{��A:�a�`Yv� S��9�R��z�TQ��ʚ;/�4�u[x���M��'��K�k����c�Mt���~4K3*�4c��X�eʊL�G%�H��Zo�IZ&��֜u����#*z]��dzd÷� �1��[H*����N�4F�dM�ܵ��������Ѩ�r�������p� �>x����F�*����Lu��ak@c���u��Xi��!�"��� �3�P��E�����D �`i��y!d�W���?MӨW�EhmcA�]���a�B��@��y���b�^|W���4��� !R�&a8�����H: ��Y��.�\��¿�W_}�8��3�y�ݻwm� L��H��s����l�r;?�uF��(�ˉp� ���@UUK�Ϋ53��Y�[���Դ x�4s�/��H�T��YRlEq��$��m��.}�Y~��N�)�K�,h>A��j�0=}�mۮ� ���j�x�XV�4��}Ӵ�04�r�2�����ux�~v�رa�A}�k�(���������Y{�˹#�ea`�֒I��A��x���B[G!@���2a���kX�*1� 1M[�6g:W�(�����D~$8�( z�I�q�Yf�\�|$4]�0C)$�"���5`��%6qe�A(hG�x(����1�yh�8{$|�IB�E�W����$&�"�0&�S�nr�z�"o��4Y�r�����%��0 x���8+��qo�Yա:��t1�H�n.{�Y�t�0����N� ���[�Fk,��+�g�!���UTE���K��32T]E6$��Y��-\||�A�Ue�BY�0s:��w�����^A1X�'t3"LL��{ߜ��"9�)dk���.!:Jӄ�����3��3�7��ͮ���d������O�y�����]{�2a�[���4��9�ӕH�s�_AcV�J馓eY9)�(�̏�J��,G���L�}��ȋ�$���ۙ�嵆�O��Ek7E&H@�=[�',�s�B�LS�'�"�2M3\�A�D0c/{���A�3K� ��f
B�UP�dY����<�������t�M�4�>~e��f/��<O=�,���)v�>�i���(�ʽ��0XM ,˄qѭX� ,8��|d������>��y�(ۮ1[��F�È+'�0�k������i��ۢ��M�5�"���7�+!#+E��$�5=䎌��K�E~���� mAAp�k^-��̅�2�#+2������N�@¥C����Y6o����yz���Sg����/3�Ɲ߸����,�ϝ�Rb�,�����©j���2S@��u�E,s��=�S�Y�fR��YڪnPf�+���)�,ɯT��"�|�����)���߉�(4�9;�����\UU�"%�T�z�H9�'! �%-�y�⦋⢸W!/��w�i�;���]�gM���kI�p�� ~���{�̍7ޝo��� +_0ʮ�H��NzD�M�\& ��V��#�A{�.�I��*��(ͬ�sP5���_�y4q�`AcYn)��'StY�L��y�K��؀Dd���8�m���Ѽ�Ǣ`�4�lT�����&�j=�%�ı�/�0ȸr���
�����~�����]T}��tQp���{�N������o�����˲L�R�u��7Ŷ�+n"� Z��(`hh|E�@�|�(*���qZ9���z�v��]��Mb���Q�����*�������ilm��f�!~��fE_�0H�8�n6��Ϩ ���N@'I�$L�ܜf4�q� TM-ŪC5�a���o��sn?��$qD��x^����;�]0�w�4���cP�eDAD�R��Pe� ����[�m���oYۘNO�f�� cB/D34� �+}u{، �n�UU��Iѱ�_0W�FQH�XV��3�;m�^@h��g``�J�V�lt��#*<ȓ5=��8�������5���j��JS����K/�����>﷏eq��y~�ӧ���p��f��m�fϤb�lf��Ej�(<������eU0�JN5R��j$�kl7k�d�]�0��|G��:��:TEU�X�M����:%�4E�� ����.p���b��i#Iq��n�7�Yaw�`˯.o��T*5*�z鄧(*�J=a�x���8����lٲe�7��>ցk�(��̅ �<��Wټyג���$���0��tR*��2�� �ss�5��\MөV�n�N��aXX������2�^t��9�lݴ�{���p���zh;C[�D��-³
w�b,���Ҭ �2�&�գ�J�be@�/ b����)���W�*Bw��5A��` X��?�=I�����/q:-n��A��.q��;��%���Ζ��\�V<V�t�#��i�h�&�\���a��/p�B/D� �@�0�&�#(K���gPB�i:H���{�奿�U�y�~B� �8�qZy�pT��Y� ���-��z�MPz.
������=�K�TU����ȳ����A�|�]�v�������{�����{�����k�hAa��6KQ����Y)u�+r���4��(
�n�����rȲ������Nh� TUDz�Px�w�4ðI����߈�,B�D�\�JUŦ=I�� �0�� �0�u�$IB�6��������9y�(����o~�J���L}l<�ɢ IΜ9�~�}dy�O�k+
}%I�,�Y�ib��4��~��]TU/ �n�(*�]-���8*��W�8)����r��I V��j�������w��m�{x���*�l��I,��ł&!G1ΌC���䵦"� �Ԡ� qf��4F�� K\.��k{��P�4DSPTUW��f�~l G�}�3�E�+���f]�-:֨�*k$��$!Q90��Ңj���
]pf��5�v!I�-����,Y�K'�� Wu�
݀̕hh���L�
�1�W���+*;ii� I��a1�wJ�po�-�MI�Yf�Y��S�������aK��}�?������;w�\���qm�رy��'�����;?C�6��LA���b� l��2��/TA�I1 +�Z/��=C��� �Fq� T����:%dYG�UTU�)U!�N�fs
E�ٴi׆<Km8+�� �D^�ȥ���}���_ ���J����WU%����;�.��_�^������[\�EA����?"T��^6oޱꢬ(r�E/����8bv�
�,��t8w u���8� �Ia;:=} ˪�A(W#�D�w�� O>�&O����&]�E�'�B�0�o�bs����� �u�X�H�E2�AL�r�f`Ԍ ]�$!b!޶��$YB��#U�{`7�"��1��{��Q�R���xm�� ��f��T$@gYF�F�n�n�HJo�^L@�8�S[0e)Ҏ��2EWP��3#� �s\�:�I,�@3 k��\�+����P���٥?yA�)F��b/{sE�QU�N�òRT�7'Q(�~�=;��G�-�,˜?���{���Gy��G��=�㓃'�x�7�<§?�M6mھn��i*ɦ�!�ʂ���/���;���2� �$y�DA���Iɝ�v�A�Q��m�+��:Y�ǂNX����$��y�NyJ�8�7s��e��Kz�0��c��+3�-�`��J{ӫ��E����G9�n��_���6�����zq�qs��)�z���p��w������v�,�����Vk��ikAaa*6-.����Df��,܊L�Zv�QD�o޼�M�vpf�]{�,M��q�UMXTNAA' �2Au "�5P1���
I��K}�*��(R uݔ�,V�d`Ԍ�)��:\�G���������!!-)j^
I,(CY�a��E�K^�,�[z�
�$���� '�k{�.Ԛs��|U��)��uy!�i̚�6 �N�F�\n���Rڊ�WZ"&IZ��v�����,ω��m�0q�֚�b㢒ei~,�^h@����e=o�=L�Q�C�^��ɷ��?�n���~PYK��w�孷cYc<���usM���!��Q�}���?עPP��o!^��.����0���h���Ȇ݃4���mVZu���At�UU��D��ZRd��q��h��k7�*lA�����]x��c!�/���=���S�|��.hɵe=��'?�� W��7���6�����zp�SSS���?"�U��m۶E����*��Sk��!#˺ �I�1�9��9��a�46����$I�x� �m����� dF&��U�3�Z�+�'�2Ց�]�^��i�~4�}��������"�@]��˲�8� ݜc_Y~Ql�#IB��ۺHhVV�6,�U�-?�~e �j�I�@��ҵ%a�3�8C;��m�@]� ��<7��1����)#�>Rgh�ouȲd����� �/�mE����;DQ�iZ�vm-`�El�����(w4�m�&IJy.q��d�)��|���)t#���i�ɓ�x�װ,�򗿌m�=]K�d���_������\N�ۤ�E����x&󾋅��8�$I�i_��fz���P� EA)X^��Q�<v��]� (��fP� ,�3����n�k���YH�&A���h9����S�h����]%̧�*A��1�]�0[���_�ٳ�8r�y��?�m��uݟ>��H\sE�ٳ������/|�ر�z��i�P�ɲ���9\�all�ƈP�ZM�q�\�r�4M���jC����X?��-&Z'K+,���w<�T�e��'.y�� A�٠��莇NXRmdEt�CW8"%��6�v��$�o���*ҕ��n�ak�8�$J0�&���x�� ��\�ܫ�:��f��kzxM�$L��%�uQ�xM�T��V��`H����N�HJNߺ
���",��a�+Z*����G�9P��W�v�ӍxQ�M�8$�4 �ע@|?M F��� �UUI��,K�$���W�4�w��t �ğ{�o����;��/�Xaq��~��g9x�Q���4���v��X`� V�0�uRNaU0M��+�Jn�+謪���z&���=]C�E�,{�מ�I����_)o^h�ޮ�36��n��Th���^\Sr�X��� A�N3~��j����z%I05u����.��{'<��Fc]���>6�TQ�����Zm�n��Fch�\�b1�u�&I�w!6�/���
-�}ݻ��C�x}x�M�R� �H�����{І�Uo��|����1~��i�:�6'��%��[�w��$%h��d�%"wESJ�A膸M��5�"/������E��v�����^Z�ơ����̲�؏�Z9e�� �R����b�D ��Ba޽)���M�% E^IA�I�<���I6m�I�6Pvߺ-�eY�4-������[Ya �y�6�����MH� �Rn
�"��4+�i���"A!��ǎ�ԩ#�{����/����X����]���s�-�S�4�`ì3��UP�֩��DQ��I� \�t�&(Ų�@�K��j�E!���Q���� ���x��w�y.��E����k���:躎�[%�G4���'I�<�x�� ���8P�}���K4�"XM��\}������7������;7�x�ܣ>��8\3O�$Ix�g���{��|��TDQ�$�mQ^��iQ��H���ب���l�}ۮa�5�,��n�^̫t% ��}��N0|k��{6��\W+�"�)����*6�MOt�kƲ�b]��0!�#��S3 �eUFS��ӄ$��щ
��$J���:��k�$ID^D�F��UC��G~D�G��Sf�rP #3=Q � ��Rd��G�/�1�f)����/��0��>���ʂ�1
b� AS�{�4\X�6�i����^�¢+���8�z���E�rw��)@�9ԅز�8N+O����w�T�9YA��R�St��LӔW^y�͛<���}��>���8��ƛ:t�/|����yZm�y4�aaQ�~dYJ�e\l��tM#I�R�\t� Z����y�`��T<�DZ����dz$ID�����j���H.mU�?���DA�X�U�� ��5I�j06�E�p�v���K͂��ٳ�8t���vn�� ����>��E��)
�=��o��G���Ϡ�z)��6O�@G4�S�_�R�4�r����\
a0;{UըV먪^Z��㤥��R�W!�����z���Wg����t�( �� pf�e7���$K$qR��di��F8�8� ;!i�bT �XrbQ��ȲL��a\s9��4N �Pv꺝�TCn@��l���?h�F� 7&�Y���z �RY��f�l.(�
��z��5S#�#�XL �x�ȸ3�T�Xml�&E$�f�a��:ȲB�RCUuL������Z6#‹[؜����^�$Z�sJ�p-6"i��y��L�"�g�$Y�b����k\U�r�"&us� �Zp�� �����}���{ݟ�>�MLLL���� cc{ط�6j�*�V�g�JHr�FY�剺ޢ�B���E�p�O�r���1a�B5�G)���k��� �p0�sZNVR�V{��-(I��4(E�"��G���ސ�G���}H� ��<!��s�r��t<�}�5ffN����[����c��k_ π��˗������&�4��i��n9^�f3�� ���j��r�P���i�y��
�"���:��m+_.�UzM/�e�J���2�^���gy�O0|k��}�T�+º2w�I㴴�,���M��-_Y�n�]���4�?�–�����+��Y���4��%݉"OdH��]�7dB��
f�$��h9tD�@g���f9=������3I�H�I���c ���j���4�:L�?�2Ug�ޛP乩H�_����e٥߿�%�g-Q���E�\X�������?\p ����C��� �mW��Zm�Zm�����b~
���<��������>﷏%�!G���7���?1:�� �p8�I�:��"����n��c�]�!I��$I���Nc"(ML=�ɩ3�?OAcjS�֗LD^����e&�a�E���%\�C�>@@� zm�RX��Wf麘pFQ���E��w^��ɷٷ�:��^t�{�l}���k_�i�[o��o�E���| Eq���u;T�ʪNI���CCcy�|٫�:�&��ZP,�zξ�$1����5uTu�i���)ȶ�?o����E��x�;���kl�k3;���оA����)465�ت��=h8��%�H����,�H�8�Q4e_~%Ȋ�^�Qt���sw"K+�[tB���i���+xM��G/b،^7��Ay�<�!��M��2\��7d"B;��ZXgT �?{���7 ���sa�8������B��Xԍ�D;�y�h��s�����z*� �D�$R�fg/�ib�Q���v}ݮp�}`E�т�I��8q�o��4����/<xpCޟ>�=���+��g?�������;�T*��-<�)�����(�DE�wO�ŐPeEA�՘���u�JE4���Q���}�4��u�4�(����dT�����r�6����pB��v�YR�D֊�V�z��'֗Fcۮ��(J�k��O���W�$If���M9G}�����}Q�1���_�(��}�#�2eP��dY�����忌�� ��̢�`�u�Zm�y��Y���a�h�v5��c�i��L���� \���ݎ�T��t`��i���شi'W�&x���h�<ɱW�Q�Ea����e=Y�1�&�.(5j�YϹ�'�/�1��=`��ȏ�&ASDF"#@�� sIZ� ��u�RD������r�,KH�����6�8����^���-�=�n��=�(J��!H���e/;EA�o��5uUU�u;��\f||���,�r]@H�\�|>/�w�i:#��x�r)�VD"q�չ+
|��{���O��׾ʭ�������$\��g?�)���6��_�?�T����4�uy��GGyʷ�!!h��0�5�Eò�\�# 2������V̟��Pxc�8λ��ߦ��J�N�RϧA�G�is��n�3Mcff&�$��ѭK�^a$��;/��s��y������-~����x�ŗ8~�#n����tӽW%�N��Y�mc��%E���$1�j#.��-�Ƞ�$��n{E���S�v�v���n�膊�`6[Y�p��c�����(�1ff&���������߼iUqaq)!R����fj��?%$7�o �Y1{�,<h>5ȝ�"?u���U����&s�
[�q�����@!�ݐ�p��L�n�Sª�3oS<���3}���M� ��n7���L�:��� ��gP׍����]70M �M���T�$��$��w\�^ʝR ,��]����C�w=�*DM�`ff�Ç_�…c����غu놽7}\[x��g�裋�|�ؽ��nv�S}���.>�"�wc�i��^�s�+\�d���/S���K��+&ޅݱ�i �.x^�v{�Zm����Z3$I4�d@� 4� I�K���
���ZY�.U�S���Ng����?s�����/���G�J�Z�������g��wq��]�j������#&�*ł��4�/x7|��5%I�󲜢P�m$3�0$�y�eJ�)��c�}�ic�q��psU$�ʲBc`�j�ζm���9��ZX��rm�)6�E�>K3A�ɻ�i���V��o�׹nˊ�fk C4�L9X �.hL�$��$L܀$L�, �b��":�)Ȩ���z�}屢ES0k�� ݐ� 犱 ���U�&�!�t=�BAW��ji�׭�a�y����H$
+�� %%'��+�4#kh�V�"��� =y%�B��M�,QUx���8}�0w�q3XWzy�&�4�ʕ+��'?��e{�k(�B�$���埽��<C�'��-���1���]}Xvc���Ȉ���麾 X"�8<��/]�� ����0F�7�(4S���|z��)鹠Z�� q��"���Iq �\�V)˂���O�(w�}{�������E�뺼��a������?fǎ}���?+���{\$�.�R�
�n�]
���q�f��Ks֣��润F�\���eYɅ�^>�L4
f���>�Uc`h��U#�b]Y2�v)Bՠ��� �r�5�%��3"�/�֡�)�cdI�Qӂ�CtA}�����ZA'�
�ڰgYF��
j����p$�$i�Ӗ��#�>&a��Z�qF�XVӜ ���s.:jz� ��j.����?� ��-��=�S�I"�D �*�s.CjYPdY
tK���0b��03��������������Xq����p��E�칟ݻo�����^�ٜ&M,�J�$�ζ �M�6�޴(��;%����"I 9�����Z�3 Q-�| �9��� �0ۮ�kEaF�i�Y) ����k��A�Ą��'��9j�TU+�>qqN3^�q�$/���?�>�<�z���������E�ѣG�����[ny���o�R�WL/�$ ˪.p/�4=/Ll��&Φ��T� �]::��BZPG�|@�6���~�b��q�N�L��� ���ff.�h aY6�V��2����{,�2f�,�3��/��Pt����z�$B�,cx簠��!^� ��14�8���YV�����Y�%�Y������!���pu�NGF��kzn=�2�:f��й����%���i�i��_t� �"\t�D�{��������I�ۮR�Z�6*s=%�C��AU�w ���\�i��/?�����&���u�}\�����?�![��Ľ�>���e�_�\�t�z}��F���\:���� 6�>��lP恠�V*��`˾�$��",�Xd:���0 �,�d��Q��P8�a@�Dh��&Dz��O� �C7���U�0l�8̳N��APw! =,�^�h�e������/�lN����K��ٳ�_}�b�kY4�M^z�%^|�U�����12��*-��m�H����1�j=���&�(*�J� Jɲ ˪"�r��ڦ՚��.Ӌ�B� ��X��y���/2 ���7U�RDE!�� �JY���aF�1A�YCZ�%tKؘ:�SǦ�m�F׶�ݢ3+f�h� Zi�bT�u��hI��������o�xm�nlf����A�D�X��bW��@ug]�|���q�E�m�*�����G/q�����4y�ӿ�f^��.7J�{����=��A�ۡ՚%M�aFG��(JW]��=��RO��y����=~���w�(_�җ�|����1==��?��l�����o͓�2OC����[��uJν�h%mf~�J��"0�X7}h~�_�ͱQ�e�ju��s,�ATU+�ąmh�㴹|yEQ�V��}RK��ЛMjac��:�U-���$bj92�y�}�,Ù3��O�o}��;wnؽ_$~-���_~���z�{��[����!6�BU� 䛒�q+E)�þ��U�(�Ʋ�ˎf�g8�$-w�0��mc��}4���]�#���9�U��)���$QBffk+ $ IV�.8���hʆ�����,Q�Tʉ����1�W��o�C��k�ܧIJ�BSL9�,��Sr%C��$p����uS�̹�������qT]Ŭ��d� �a�^�d�!�K%T��h����ű��L�@�5���Ț7Ea05u���Q���3"U��q��i�eٌ�m�3������.�()���(�:�W��!.�"���g��mK����߿M���k.\���������"[Ѹ��b"m,��O��<h/�?��7_P��6Ȣ`PKn�f��(���DWnu(��k����_w�upARU�$I��ijݞ-|��W�zbR�6� ��sQU4�)ga�0;;��JJr��<�|��gOs��˨j�W��FGG7�~���/�vE��K�x��g�������ݞ�Ӆ?�GGT*5LS�����Vt)(��a�� �`Y�1Mۮ��(?�.�����i�כ�q���9s�}�k�زe7㛄J�\l���Y._��a� o.Ǥ�!������� �AXwf��'��>����\kE
TEW��1-Pd[)�y�=��X��ueiF� Q��j�bbs�,�����O{"_t덊�Y3W�I��n�"�!� :f�;jV�e��ǤI*hJU�"�V�F��L;���(���iSPxo뺙w�:��!�o��F"�[�s$��r�ԭ>�&:N+������.(
����ŋg�����}�s<��}�oK��ŋ<�� D��m�=�䄺���^�׬��BC#>�Y�]����t)O���m��V��♴.A�Ҽc=��b�]� �L�$��b*�CC *������ސVk��^]OQ%&�J9�G��R�\4L4�@�ez��'_�_|��۷�ה>~m�kW<��S;v��[�}��\���b�m��:���,��� �쥼ExT�~�v{˪��˝�$�G����� �][�b���+�=u�s�s��6n��>v�8�i�������,+��4��&I�!���l��H��-]p�%�I.��L�~�|�,˄3��<s�D�b�,ɒY+\�,}U��,�ȏ�6����iĒ$��`7ף,Q��(�"OmUG�]k$YH�C��������;��v[���jjyS2�
dvH�=��c�5�⩪N�1</ų��_Q(x�S����y�AA��P-G] K�B ��S�$)�W�׉S�qq� ��2y���s�}����},��_~��� ��1�o߇���tlA��N7�pZl|%i��"&q����#Q@��n� -+D����Drכ]q�]��Q�/Q����"�2\�]N[%�\�Y"�o!iEA9A4D����>�����з8� �ڜ_��e(hcQ21q���ߢ�����w0���
�6EA��LO��ӟ>�� s�ݏ�n7�V+r� ;�0 �� �0�u�4ͨT�Z3���$���G�$|�E��D�e�8"��e�Qdm��b�7��b����0���}�&_?�c�?d�� ���}YVߖOB�2������Σ e(��&[�� �^�i-6�F�c�@�^� ��D���b
~�j稙��8q���*/��/��Y��z�P I��[>��Da� M���A��PeY��r�U��,�Y���8��#R�kc������ �ʈ��sw�u����[ �Qy|�%�D惢� �.�HdI"�,��߽���(�N�%͢��S� E1A{鵟���?����g ��������X�O�楗^�…����+�vmQA l�=@@,���S���QU0���Z4������O�y�`e�&�(����Y��l�E���)%}f� 5!
v���2G��l�t���/à�7-&�a/���TcC�#•ȣ��5T�
��K�=ˏ����e��ϳk׮u��>~���)
�����i6���8p�v��`��e7q��?�Y�3
��EQTj�F�Eɑk- �8��i�(*��;���#MS*��"
Q�&\�2��?V�a�N�����ۆ�z�6�����7��Tk :�&iS��N )�/�$� �Tw[�����D�H���%y"�Ҡ-<���!��.n_��a,¶��-�
W�8� ;!n�-)AW�c�E���X k]�E��` X�0pńİ��^n \~j暳MA�u�4#� (L�4#�B"7B�%� .{�22��>3�=��6�Y! dY���.:6 ���l^AU��.ԶkT*����"P�u�8�*T���<� ���M�������4M�-�6�S1L�|��������G�>�|�9s��|��[r�Y8�嵢x.��ׇͩ�4o0��%�蔋} '����߷�����j��z��Q��,��/�ya��G��)*�FNS$��t�AX I��iF���E��$I\�<�[o=˃��c�=�!����_&~m����I������n�7�|?��a�:�V+u'���}a�X�Ql4�{�C�#R{ h�$p]'FIT�#h��/�r���2Qq>�vf
?�`B\l�%I��Ȩ�����؛lއ��x^�Zm0Qɀ�e���-.\��֦Q��|��4+]z��^�] Y�KG��\�n��+ r#_��"�^˅@W�˄��K����QtDA��)�r�Q�T�,��M�%|��ASX���k�h�Ui�#p��0�ҌىY��5��X�p��i����r�=�ö�8N;/ �F`M�A����B�9ͮ]7P� �]�Bt�t]at]��N���$I���b�$8ܙ���� |%#����7�H��X���ǵ�4My��x��Ѵ>��o��T,6�ںӇ�&>�� �<���[gg�.G|����$I ��y�]��z�|�F6�ԡ4�"e}5� �O)mV�*fzz�Vk�juMv���"�H���\Yy�<��8p�<�CCCr���㗉_��`rr������{���y����+9w0�q��a�,KT*�2u)��Y�;N�j��C�@X��p�Zy����y�+��E&�,�lڼ��+[i^>I�J��pm���!��<����1�z}pQ&B��Ͳ��+��U&���``�`��;MRړm���n��m��gG�-1[>��.ˉ��Xp�3��k@a�Y'c�֜��3�憆�Ɋ,�:�D�p�8趎Q3�](r J�$tA;(mbu[_�6�2f��`8 v�� MEp���}�� �pCb�8��j���4}���R(DzA�H�X�~��+x�ݘHRA��'�2���r�2��m������G}\��2�����H�u׃4�eC2�$)7��u
!ZA)�/ q���眹���B���i�z��$>���6��(8�k��Δ�w�mi��YL�EH[w:����돌�i�[V�$I�Vbj��Y���q�}��8�������>'N�С��������?��{�G�
l���/I�p��a��o��{�ތ�J�ڲlTU���b���e)�aQ��0����Ea`�6I����n�8�|ё�VX��`�(X���}'ﲈ�f����̩�E�NF�nil�y3���������@UDb��?/��a3>���
L~xI����~�{N�h��u`��>|15(��x�=G�d�-�$HJ��zQt� !����:3���Ebq���LEUP �4N�Z�BO�� ��V ��H�犃7�� V�¬�]]S&4�QF��N)��c�A.�'+.�(>��\<�)y�CCc��n-Œ�l*
�`A��Kz��`k�0�[��B�y��wn���7��޽{��\�㓃(�8z�o��6[����Z6 3˲�~:�*={%��jZ���:���h�D^Ӵ��J�W�0̲�]�" KT���tZ��-\�Y �-�c��F���$c�D�^�W�t�25�WdY�N,��i4�0͹)��@��1"֮l��p�$�PU���̋/���;Ǹ�۩���'}�����Ix��^|��̀�o� ��# �"8�qZ8N�(
�c��h��nu�< l>����|��W��"�ꢪ�]���$I���n>ݐ���֑��\�`��1�;�TG� &Y����O��~FNj[l�]r\��|��n~�K��d��aF����u#h�
6����G~�5`��(7�S��*B�;i�V
�C/$c4CӅ �$K�?�'�̜���������\ MS�8)uB�+�2��q��L���L;ȪLcs�,~V�'HȚ
�C���y^��`�U�(,9�K]�,��K�4m4M+��s����,� q��.�]�Z��iF��Y��P\R�9�y��'����C���o�ַ6�������4���_���x�=�����RA`�U���E�=S�n����(t�#�^Tۮ��B��`s��9���0K��-��!�ac�VO���]R�$p}��0{��!i���"y:�������s��;��`Y�m �҈�>z���_���?dǎ�裏_>�E�+��›o�����K�_�f�Q2:��ju`M�"W M3��G����K�`⨌w�����|^�WД�(���]{�$�WO]�ß��߄Y5��H��� I���z��S3��Ngә��wǗڲ���$�m�w���L9�?9����5!^���Q�$d�V,�����0 ��� E�@El�'@����%/� ���5��X��XH��l}(K��U��TǪ�mk�f5cC��e���d����,�.�.MSB/`v�4� �^�� ����?$���t:M�������>�/_ Ib6m�Q~~�ϐ�y*����]粌�k��
Q7T ��}7�0,�g���Ô,+6�/O���a۶>���122�����kqs��I~�'�������s� �D�o#�o������`�����"�;AQ����ܐ�!.��5OZ�&�FjI��eiE��n!�wq)�^/��' �z���>UXd y�S�5
-����0 �DjY������Ǐ��Os�u�y��X�5��ǯ
����wx�א�
=��<!r��_�� a�ñ�M�$��&E�6P��(�T�{[�Y�V��� �7�����K�nBV̈́ӌ8f�D�t��u����[|�ӷ������e�u7,��d�~�g0�
o�|��/Lҹ��Ⱦaj���A��&[D~���uw�%IB���=��a9~����#�BGh�w ����7}A/����ndЙ��F���
P�jJ!�/��V}}NGeZ�GVd� ��Uk��O��Cg\�9ϻg_c���T*5���?�ma�����1زe7���:%���Q!G�u+O ���&�K���C7(RL�Lؙ��ՠijt$2 � ������� ����&��,���������3|�S��0�q�������������������V��"�p�)�e}%1��(�C 9��@t�t�/�%";!ZP�K�L�3K�Z/�k���
a�a"h�2,\��Ü�@͛�i���8m +S���ϋc�g �3~�'^����� ������W��uQ���~���;�#��}�ՁW�[���zlxxS�I�i>�n�y�z!� �\�jV�e�0 i�� ����yAЋS�T�< ^�mW���n��4OO2s�"��,����ۂ�j*� ���1/��7�x�S�ܱ�*:�U������l���ü�7?�ʭW���u mB��4��Q5�nnXW���I���i_i3�sXmHk�I]q�}�$Ũh�FF��Ȅ�(��8��v��$2��4IKaq�ZE����x-�g�Uy�<}�=�ƨ�;K���Eׂ����L�����O1�� �N\�3�Ʊ~�⟠�r)��M !�Ͼ�_1ެ����M�R��S,!4�V���"�NL׬�{��iծ��E�@�Cxe*��X�e8N�h��s�t�tZ1M�FcUձ�
SS��O���;J�;�s�,\�p���ۿ��'������7��B���!^Ɗߕn�$IN��7���J �J�Ib�����e"98M��HH��O�����R�S� w+`��!��P�4X_�&# ��:T_�Xd�k.hS��cf�=
����r���٢�e����C���;n㮻�ZU��Gw|,�!.>���`l�:��� ���t@���q��xE'3I���v�$i͖�0�N�eb$Y,���M�Zm�ُ�pl����9X����V�sn�G?���5ft�0���mrai��6 ��}��[�����9q[��,���*��7R����{���Gl��cdON�����̍M_,h(��P�!!��I"��'�5C+'R:z!I��}4K�:ix�B �D.�fh�}Q8���+ ����4���v���aT�ҎTR%�����qg]�0���uf:��;\9:��[>K�����w Rߜ��2�w��O��3ul�׏<���\wݍe���Z�R�H�"���ЭsW��nϒ$K;�21�s�e9O'o!IJN}��uc���-R����8E�s�o����o�g��k ��.���֭7p���a�֢5�j$I��v0���}
]�蜯���<7��gӌ�+�@U��O�t�0%X�~��rc��Q� AiU*�����ksI��
qpA�\N��-M0.�޽:@�O��MqiV"BM�R (�
Q�� ��e_��c lE��>~U�X�v�?�������_dxx��s�i��tEQ��j�b(6^"��J�=C�(���bX@�U,��qb��/�(��(:��kVBaW*2:x^Ӭ06��|��q��m jc�%�f�,%t#F�P#�$]�����㛶��Ʒ��1̡�O���S\�=�U���4��6�m j5RVy
vs��w��n�!Q�z*
��R��0&�T]]�V�h
�b
��&)���C7����A&lZ�+*
�Pi�@�EH�B��Ȋ�=d��
ES0*���������]a��{f���q�캉˝3 �V��� n"�U����Ȟ!N�|�W�_o����l�Ac`8��cwV$��K�ҝ�F1Ɨ$�t�PU%�0deg2I���3/�TX���U�\=)�r���=�"����w�Ju]��>�Mt:�|�-:����Gض�����̲,�|��v�v�Y��Z���r�$�ٜ����u;�( ��h ��2q,�E4���6gb!�<�]˭��r3.��q��I�"� q\P��|㭔p���4]�s!���ݜ#��N�QGa/;:����a�i��H�t���;�뮻�~�}��1�Ǯ(��������9����s��ǔ��A��jM��cc[J~~�b�Q����2E����/|�5͠�<�[�պw M3�m �m�X�4�����{���3���o���L�7�1;ȭw<̮]{�W0�(>������IDAT�j�'��g޼�����Mbl��z�8���Ju���G�n�����H51����aTD'|M��{�E�^�����K�J�T���'>F&hF���kz�7�W�p�T"��I
U�da�Caq��y��2����R����\�I��o�P����o�*���ԫI�v��wlax�))r�UL�"O����N&g�i�,���0L�( �<L���bðJ�,�$IJ�DDQD�5E�$T*�� ��F�e�<�m���'|��[\������Z��0�>>x��y督4�9x�.�$��nD*6�s�����h��'�B����q��9���u.�gP,��3�Q2�������S� ��EY,��EJ��{T*��½G�J�O|��2�9M�rr�(�U���k�r�;�+����u��ZE�ið�ðHӔ�� ��ҏ��}|����[��q��cW\�p�?������ws�-�S�U Ca[X�vF0 � 2�E�@�ml��������}���M�'{���\ Mӱ,�6{��Glټ�מx�&�o�1�ua�����
8��#� �Z�'����nc||���*�N�˹����1N<����O�ٚp�Е��]�fD�����B
�fjH����.F�X�QD�3�� X��=���5�B���Xx��܀4Nili`�Fwv��T��N�������^�?�^ѻ�U(�\'��r�8:AvYe���0�x᝟�n���Gw3|�В����|����:'�8w�$�j-w�m�/Ċ&Y��y.�J���B|_�|�8� C�(
1 �ZmM�����"�L����4�e�x�g8u���z3��{O?���%�!�7��<�� Ð8v�ν\
OUU�y�J.xOs��ҵ��J((:�=�@4�^|�ǜ^e�*ûFڧ''_��o1"���>�O�6��YXpW������)�(n��E��$ �ӗp��J}^��(ٸ�uHP �2Tq�(���Y�q8r�ff&�����)A�>VEA��᭷�⥗^�����l�v��y.A���`��s��F! .܉�*��MN�e��39߿J�� M�<���$��^+�CEett+���潟��.� ��-憠7��{�ٶ*�@ 1VŮ狱�eTضy'�l��cO����%�4e��!v=���=�] ��4#�di&���$��RUBQa�d%��c$aR�~� '+R�ͺI�G%�h9���Z�Һ.��Hz��m�!{�)�:SAK���n�#�҈ØsG�s�� n��ﺝ��iZ��~~��Ę���.�BB/D����������3�� �7��FC��zAQ�{��'i��F�&DQ�����0�eS�4���Gѝ��`����y������?a��O_��ڃ��<���\�8� 7|�[o}���,��ە�%o]��4#\L�Z5p5H�۳DQH�6��Ϥi����x �v�}�߃�� ��i�ĥ�W8�̫�>;�g��-��uߣ��_��д���zJ�C��r^(��3�4+�v-3Là�-(
���A_z"X���*m���-�~C��ٜ⩧�����[n�y��飏�>VE��~ȓO>�޽w�c�~��Y:�&��`�h(��Pw<g9� X�C�͂Ql��0Ȼ��r!+��D�@cU��� F�–Ѷ+4C��3Xf�������[j465lJ�(ś�j׺�$����$�FˎJ�1$�qNq�<{� �p�Oҹ�i�D�EQ��Q D���/o�) ~�$KH�$2:�%& ��E#?"
DN�n뽉�$���Y���~�G�tTs�+y�� �Z��S��p3�� A���{�E�Q:W���,#�+ w�-C{0 ��S�i�STF�GU�S�4N�LwD�������`�G��b��A�tl��n~N�_x��e �RH��i�j͔Ԡ$Iʬ��S���(
\�M����9(ď���Q4��w��-�����$�\�Ÿ��`t� ���)*��w���L�� %˒��*�"Z������(Z�k��Bh�X�r5�&��M��m�fy��A����-Tk 5`2�Iq�ɳ4�W������q��e�˂T�� ZN�� M3�,)�C"c$��^�aXe~��������^��C.��a``I��e������%x��ϲk׮u��>����cS��-^�u�;�7��Ϩ���Xt
Ԝ�3�X� ��$ð����A�k+Z��a ���r" �ς��bb`��5E���nI!RU ]7p���ws��)��C���;�d��� 5+F�ݴm�c%I�;*��(��Cchp���߇��Ҕ�g��ʱ���2�ۆV�G��*��fjKv��CV�r�]����:�I��P2I��5���G���I*lTӔ� ��΃l�h�ZL ��Zp�d�Uҧz(��E�)f��;l�rq�4�|He�2 �9�2Pΰ�1UM%C$�^��n��,~v���(T��ҟ���ta�yN��|l�,��vr���y����������Y��8��&I���%�~�{�߿��~�70͍���q���l��/s�� =t7;v�#I>g$IFQ�%x�i��jiGZlPE���9���v��O����a���ݒ$�������w���˖��~�|HȰ�6[o߂;rf�=��۱+;ּQ.�i�,��a�EQ��}q ��9�r<�&�qH��e�sa�*IrY�罖k.
�����>x�_�!����8x� ��1L�>����cS���˼��댌l������D�&]��[��l�gKk�店Q�8M�(¶���b~�$�� H8N+�lV�m*�� A��^)�,:���`�U��+3x��`��{�m�;OU� t���U)"�2����8�Y�D�VUUt]tp���8��;|T?Mc���.�9.��"?¬�<�n7�m&�%�H3����I��� .@�A���B����}��d k�Bӵug*Ȋ\0��K�Z� $$�(½bL r��=4��?q�f0��FJ*V���AL�D^�ݰK�Tq]�eQ�Yabt�sG?$�||ߛ�����2�a�����Wp��(�ݞE�UG+�
�$"|�(Xu�!��D�A�Vl.\��С癙9�w|��o���Xǎ}����7<��W��;1 mA�՘��(bݮׇCU�2-wΑG��)�<ϞS)'i��6��<=wẖ$)�'N�����4?d�WF?0�aK�M))(��L>:���P� ��
K�(
s��zﺠ��i�O��߹���I�s��/���N��e����9 T�gs�&��W,צ��+����Z�����/4��ބ>����cQ�q��O?�ɓ��7� �U�����u۹Èֳ&�@����A�嶥 ��
~��;$I�iZXVeY�R��*�D�|�X�Z�%�Q<\��i��f|!H�Gع}?���������mf�;n�͙)�?L�d``pI]A�����[����^څثV��:���Mм"³��7�E�V�e���hv�锪�"�ew��b�n?Y*��N�Y574SA5Tl�Ɲvi]l!��;l�� I\�fh4�7�ȨW���Nӄ��̾pp�Sl�ۮ36����8��;��7�*~K;��a��Z��QD�f�o��&��?{��G~�y������w@��b��eTR���iI�Ҵ���ٙٻލ��ۻ��ۍ�ۈ{yo66.&..�w溧5ӒZ^%S*Dzd�h��A��K�y/�� �A8M�J�V0�"�|���y����~_C[[O�I��.�$aY���K�5�D�����;���cQ��a��:��{�u������$ʊ����(o��=^z�>�>��>u��w����k|������,�p�
��'̭��R:EB��Yw���@&�M�sb�,�8���'��pS=Ŷ/�ӱ��X�A�!FQ'lm���[�(��v$��Q�8sE�ڣ��=Td�,��0?�8��Iw���I*���{x�CE ��5N�����H�1�@�8�>���Wy��g�֭��4�� �C��{Q�!?���ys�Gy��{!�� �|M����� �)��AB�<':L7,��Q*�f�?��m��e��iD�s��)>�\j�����{���]gӡ^$d�8�ڜb��vl=HKK�}�/2��L���I����\��{edj�?��=_�S�)/��t�.���ڪ
����rF������� �>�J#��ɑ�"��TK%
#����)u5Z.�X�
/��S �1��eY�f����_e��m�>�,�\ E���Ȏ��w��W�=
#o������8���2u�N���\KC�{�'���g����$���� j�٤5)�Z1 ��*�^ԣ٬E��LPRW�f��P�`ll��'���|��/�}��uy�6��É'8v�C>�ߧ��Yfن b���8 ^�{.-��tB�z��я¬`�׫���q��Z�6ˉK?g��*;��ms��פXL'�]E}� ��|��r����7��;� ���b*�O/�6��լ�s�6u"SU�b�]7�Y�Y��H`���b斺Iݯߐ-�x��ܹɇ�F���G�������(�����q����w�r�<��W��� ��5(�Z����B�er9a��v��L݄���I��27h������:�܃G�i��:h��i�\�:;�x��/p}�<#�Gih%ך#Wʱ��V���E}�%I�>x�pga3��eY������A�����dNj:�Jn�? Ac��f��ߵ�4dEF7�x8Mv����܆� !8�ˆ\%��+��H@V=5��Q jT�I�qS�n�%�ctK_�fc��k4��l5���m/P,�b0���w��O~����P�.ҵ� EK}�^B" �nNs��(���T��s�a
fK��Ko���-�F��'D�,&pql�ϗ���_�y6��+�F��i�!��p���{��|�/�m�� q����u�{�}�͘�~���劫⟋���r���RX�XP�4M��=�n�ﻌ��`"F�p0K�at|UAVe�g��$!e���aL���m7���ˉ������c:Q�<�}�(���o%a��n�)h Ĵ&|$IL�A|/�Ԍ~,�a���{��C� �M�3'�4\�ر�����stww��5���!��(�m�_��5fg]|�͛��ץIG���ö��]��UӴh4j��Lf�.�nb�i��ʠ(
��K�\dYY�����>�2d=t�ǐ�ط�I��Snܾ@��(���X�f���sW�]{����y� |��u�H�L�Բ"^x��d�ߴ�]��q����ӎ��3��0q�p��k�.xݓ�4���'�DQDk+�"��z�z�f�ɀ�`��?p��� F~���y(��>I�D��'R�5S[��IH^��qF~=���?�9��{�r�<���q�#g/:��~( �2��1~i�o��������ghoo#�DA*Id��F�N��>�&�:�8Nۮ�|9��+ ��ᅕsx��l�v�$�Y�㘛7or�� t=�嗿H�RY���>]��/�ŋ������ͫ�� ����� ð��nQ���B͝���(�hE��Da$L&��� ��"+�H�]�����al:��p�6o��G(����=
 �Dӓ�X�D���~��@�f������ЂW���xQ�v��1�n�s �r����dRe{����a�i:��79}�-�zj/_�����7����{+
�(�ƍ�����Ç_��>��J��9S*��:�&@^upX�[�$�jU�U*����jw�/��m7�Ж������g���'+��`�1 e>���3z���5׏�b&?Eî2|�4�=�֭{����</٘�a�VU�tvnb϶'9��_�T]����� 2�ya���u`AL�eB?$p]YS�~>� ™u@�8�f��Y���Q�R����v�2�;�С*�GQD}��]����|k�royA��("�wk\y�:��>n� ����c������K�PWƫy�M9/gS ��1�����P�;���G8��iZ�ZS|^��1���Z:�p��}� �~Ӵp�&��ȴBK��u��4 � )���Ɓﻼ�֏�r�8/��E�o߶����}�㘻w���"�e��RB�Y��'JD�k{��L `�g+&f�zs�JǖV��IF�~HD���;
#Qt+�s��|��֑��R��;�9q�g��1�+��R��J7�!�t�*g �t/&��e�AuDJZk��,���ݫ�k̜;��o ��4� B�:ů�, �|�q6mڴ�������`||�7�|��� ��ܲ`3r?�B���/�tl��n, }4M[v����ڟZV�f��X�J�p�٬S�����I.W\��Rj����˳���}�\�����mNM���:AP�N��b˲���dYEӅ�~�E�0�Y�J��H^f��J����=e4S�m*�fhh����k��Da�g{Ⱥ�2����qE�^���6\�0��Ny���f�I3�lt�7}���r�g�Pd��h�|���/n�{WwV�A���,��ޤq1��׿̖-;�ټG��B(+D�O�6C��a�:H��=)�NO1��,�~��J>_EעE��h{"���� B�RN���8QR(Thm�d�;�a�p�t���R�o*l\�C�>ƭ[W9~��������7
� ,�f��_��_�l�>�}}���̇����?�Z֡8�mٽ!
Cffǹ=u���Bջ�����H�Y��5=�VM�Wt5��nn��_<�����~�-Ge�f,�Ю�RT����BGG�.�ݢ葓{���S��UM��EjS*��]���"��t��D�q3>~�S���O��[:th}��6�oE��˗�я^��g�Agg�C���1�\"�j.��_ q''M3�����E&��X����|�z}ۮ��Z���ރiZ��VM��
�����֦ۨ ��V��A��\,!�ڞ�c7h�U:�vbMr��3�TǪ�:K����`��!K��Y4� �P����f��B�V����Tq��I��Q�ܺ�]�E0�C4q�7}/@5��Pz�cWƸ����1��M=۱5���u&�'��T���,s��g�s�ƕ�o����׳�h��_D�QK6�e���8�ɯ�9�����*9<��G�ʅ_\$8�㑶/p�����C�����f� ����}�F����ez�fJ��7\cE� Y��u1a���|�,���?����嗿Dww��?g��!����������z�Ç_X��>�F �shk[;�\�� ����sti�}OAp�0��$Id�h1�,Q�JۋX�8���B��QL߁^$YFQz�6�Y����y�GC��,?�"G�*�\!�Ik����� �c]��IP��X��O����ܹ3�;����[8z�� -�~'��R ��;��*G�|�J�}Y�as���TUO�C���p4i6kXV�B��mV���y���
(�[����e�Ŗ$�f�I��t MI϶�4�z�8��%��ƪE�s�%]�q��XГ��B{Et�h��� cf��
��ܜ�X-'����5<7X`]�������k���j�Kґ$I�OQ�k��� EV����u! �r�Y�w}T]��{��pm���m��wד n޸�GCS�x�*^�c��v#��g&i����W��;+\��x����]4�t+�T�.^�����)���UYLD�Q�x�;:�b�!�9��u�z}6s�H'`�R% �{�����cM3��Z ʠ�2��sJR����EΜy�^8�+���Ql`QLMM��}���=���4--��ޔ�q�aX������(
A193…;���T�b�2`Ҝ�XVdC�
%R�#!>N��(�� �!!�;�5���I��~���o�߱S�6�X\�/���D4���9���8K?^��>��}������7l۶m]��� �C��KQ���oq��q�%���QUe��[E��,4�uT������4yY�Q�$��b™��&����Le�~Yґ�m�8�M�Զ��t�K�׳��45TU����0�,�J'�/��և�Fs�F1eT]�,������|�3�qmWt���}|Y��M1OC��=�L� �A$�U�,-?Yє,9p�UW1
F65�������Yf��p�"/��]�N��c�l�ζ�tu�"ɠ�3�(w?����=;�bA����v~����s���}��F:g�*�Sc跋r�KbKl��K׮N&&l��;������p�����(�5�`zz"+� �2�UX@)�Bc#,�=�I���~��ڂ0 �}oQ��, [�7��;���<���BX��r��Y^{�u���Ξ=���gO�.k��o߲�h�B�n3>u��2��*�1�m�n��C����Hp�7_���fѢ���r_����;#|r���!1�a�K��$)Md�?�y�9=�����6���i��žI�����gعs3O=�$�Ri����~�(�~�:}t� 0x�/�������1�黮�������҈%5�0��B1���A�����狫^��fAЛ
�rB��q�F橾ސ$)�}�e)���pb�c�L��:[�����
�����s]��!�5��~m,�w|[��Pt$�AW4!8v�Ǡ��b`�9���hKn��w9P4C"r��z!�* ��$�?fF��g\7\�!�։���ÎGٶ��J�|N��C(�����͙�~�S�?A�`?�<�����166��[�� �/%��r[�vG`jy:�An�.,I̓�����!���=ӗnp��Ivo}�\>��0~�\'���Ci�2���b�B�������XV�id��a���ٹ�(��>�×8w�}������Ï��}��O=�����k���"������xa���mc��Y��C�,395�ŋ���w��3 ��v[��2���l��k���QL��6�[hL5���Mf�I���DSt��vR*�g�I ���4���b�eQL��F!���ŵ��j�iN�|�z}����)]]]k>�6�ۂ��E��|���el��3�|����UG�$tݜ'|T��~b�0L�$�X'�c��!��%��D����uڣ(�u�"�cY��
�ݤ٬e|���D�ۮ�i��� ����䭝>%�X_�VƦ�%��b � dI���F�XQW�|W�H��n-��Y��dT���s��E1x ��P5u�A
Y��&N 8�� D�N��+u&>����͖�� <����^FGo��օe�n��1����y����+W���pp�3�ǩ�o�����<�%{�P)w�۳Ӝ��F1��������_]�1��>�)�T��Es�Iy��dm�ӧ�n�t����qѴ��TDZ�<���v' E����By^���[�(A����=�H��F�;��#�0:z����!���<��Sttt������ar���|��)���B�PY6m�AQQ�u=Om0����<�^z��O������"�|Z8,&F^��I�$���RW��/�(u���(��>$T|zí���f� ��H�9�#��oqݼ$3 "�T�Um�E��XD�c2p���\��1۶��/|aݴ��o��Ap��^}�紵����?��� �L.I~��r� ��g U���
��x�E'M<�ch4�(��$b!�@I��J{��(��g�$��( D�,q������J4U�����aQ�G%�bdYB�"�v���e��͙&V�B7u1�^����m�T�*+��Ɋ�Y4 ���Ҙn������ �>%�ꬢ��K"+±��85��T��ˣ�=1�q��m-Gxbߋtw@,<�{z��Żc��0�0-�x��<�̗1 ��t��q�y�'��f�qwv��}�08�����8�f����M���о� �4�Ξb(�ES5� f�Gx���0n�B �aS�'p�*ь��_�߱k�D��yl���=��vb;M� �cI��A9��NV<�� ���!�9O�p��%������?188���s�^�8q�w���|��}��DUU|�Kh/�$X�.����rm�Q�R����7q/����y�Q��2�k�R�PLQ�幣-yVQL�Tz*8�#�|x��pޑ�����֖�y�̢c���A�e_��!l��QeE���]��^�4 :\�6mÀ�'ߤ�3�7��� m�~��(�m���������=���Dk��E����f[F��L?�+�eWU Ӵ��0�=���u�,B]!�=M�!MVq�ʖt><ϡ^��umZ[��I��E-�]'�Br�ªo\B���p�L��{��W�T����vk.q�痟>��Vh+�ӕ�Ӥ�JB�;>��-��-Q�u��Eހ����$IbZ�Ӆ���7�on�G�@g�&�y#��� ##7��ɝ�k���_|�Oؾ� �e�׷�Gy�w/O�t�ܼ� �U�=����/{��O����w9?q���Mr��}�Y���_�Ж��Yx�>^�&�StbJr�[�N!I���LL��0L::z)*ܹ=��kq��%"/�_������P*`Z{^�g`,kZ���fI��ϟ��ٷ9t�O<��%����_��s�x��?G��d�+:��,'_UU3���bj�e6����4��m78{�m�-3lz�' [�yC$y��G1�/2a��C>$3~i���(�/~�#���T.ER�q���-4���Z<�i&�`"(,���8����Ds���i�榓s µ���Ï?~�������<���i�������qN�>�{�}ȳ��!�?���FnMI��n�(u��F�nK�B��y����i�@�Q�q�@MSPĸ����XfEj�V�̲�'eY���pN�$�\�����8 W�e�R�5�b�;N*��cQ<DQD>_\�t�u�&<4]Gф^`��$��uY8���O// �w}?�ݢ�z�SId ȹD��[S��#�"��(��1}W�{�5GlMr{�2���&�/P��>��L�s���U�^z��2Ih8��:��$��eR(�ٹ�M��d�׆���'��+vo{���\�z� wߣ�v��NJ��(����ӑ% �TEnB"�uDq�<q�t�F���#���8y�MN�y����b�?��U���Ɨ�� �ѱ�F���p{aAms];��,���>A�#�
�Z���� W���������� ���GǼ��\�p���]<���D8�Ga��0�J�� 45��LJa��V�5�o��I��ی8�i��(��W��DZA �:���x�/�RV�BS5�]���_��JK��G����YjE<i��uGIxg�\���j�!}� A@������"
�0 �����7)�~a�c>������g?�k6o���]� � l� �Y����1~��R,��s�tw�Q��b�MT�XuJ��er��z�����: B �"�K� �A¦3��l�����1�ܒ�)YV��
4�5<�M(K��O�-Ad4��w �X��R��fS\�F��-�+������D�Fzh_Q�,��^����Ŝ�Ҭ��fy�T,��)��5=��Mܚ�U�0����Ms����4:wv�!��?�*��ݔ˭K��(� �sv�z/t���c�!:;6���-�6m�=<y�eF&��v���9�_�9��Ӵ��p��i�“l�l7��� K���Y$P'���ҵ1�P�ħ_=����q��5N_y�1������y��]�>��V��|�k�g1�<--�˚��I��L��Z�("�,�B��F�劜:u��7ϱu�&�y*�&����1��������x���ϿLKK�iV�f�a"��.�(�(�xJ�{�^�M& *a�&�42Vz� ����W���Ӳ����l��|Dak��֦Qe.FZN�<��}�o��q�\�@2��1 ø?�'��R��%�C��늯m���#�� 8'x�3���A^P4ı��6�6��gv�6��c���k�~��o+~�E����?���;�׾��_ h�����7��lZ 8�M�H�L�܆Oq�H�Eؒ�u�S�G�x��E���t�׭�@UuY� h6k��pa��I��ҏ���m9 4�2;և-�{�A������b�0 K=�݆�9��q �� �,��bi��X�t[1JC!���BU�$q.k�����tSБt�֞VJ�EF{�x�� ����n�eT��$�׻�����~�u3�z?���]HT�3DQD��B��Fw�&
f+�� �o�Ǖ맰�M��٣ѻ�G��iL��i�M�8����wEo��Cƃ!�w�C��(Z-L7G��Cz�c�b�����0,vk�S,Vz�T5��� ��<�Eҫ��}&'Gi6�|��/hk3��?������]��?~�S�����`߾�M�N�)��,-�_=�D�Ad����1r�b�v7��rJ�6�R�9_
�����\�����RwyU��U��1.�Q�h�ȅ��h��S�U(��1M�`t~�;�{����齘{]��r���H&�l�poa0����BZ0ܼy�����9r� � r�ܚ��6�ۊ�xQp��)~�_�ۻ��P*�������um4MG���KEM��333I�:Eg�D�(�h�� cٛ�A�{
ض�@��Ht�f��m7�u�R�偛�^tUDz����U��ʒ��0 ��� ����e% ��i4j@�K_�TW�(
�|۩� gQLeE�����]��(6��<׉��EW�����^���t��X�
/�sI�>�X�uI�4C˲""|;�9i#�*���Q,����������op������=���l� Q�lV�\EUi�U��G�M3o�۶���i$$�Yܨ�ZP0Lsٛ
Y��#�t���0S��c��m ��(4�Y�z�'|��[��W�B�m�b{�G�t?'��c��>��ط,K_a-�g�F�m�������w � �t� �cr�6/��4/��º�g6�����8��?�-��9p��i.��?_���"�r~0�¬e��L�I�t �n�f��9JM:M־Q353���y�"��&ͩ�ʪ�CQ6�xxS`)DaD��(bHB�4������C��ɦ|e�;���E�F�PΜ����67�����0���)J
UUi6�:u�����_��˖-[V}�6���v�F�� x���y��g���F�X�/tK��8�(�A���]7��ݲ�]�0�Hضk�¼(�J��B��'Y��$ }��R��^�F6-l�N�QK܃��nZA�g>�B)�P��yɲ�h7d��q/6E!�F- ��5������VL�Qu!�u�.v����yѡv.�!¿Tm�ߎ^�#tC4C����x��[w��`�7�x�0֦MOL84�ȏ<��U�>�ak�!�;7cZ9��Y���,i�^��$I�����\�r�ju�\�H�\�~��W�A2b��mB��LL�Q�l�v䃏ɝ��t��_#I�0K&#��ϖx�?�o�N���#]LO�ќ���l ���D4&�ԋu�k��wҦv#�
�� �x؏����X3�b���ON�)͹"�n`A��Ǟ=�|�3ϯ��e�LOO���q��%�����]�֖_��c_���PȺ�b#�R��3 �縉� �m�A.'>��37�.�۩�sx ����7��˲�"Ƿ!��,�e��HHIS(&��Q�Dࢗd�t��N�bOi�Y��y����z��9JX
g�~�����o��Ν;�VQ�l`��F����~��篱s�c��yM[�Wð��S-K�����8�|)ۊt���u:}h4��SIn�vq�a%��qfg�(+��n������v�������T�SA@�Բ&{QY��Ζ����g�sNC�F�f�J�ܞd;�iE�:���Q~e�І���Ԕp�.��#)Qa��%��V�(�hN5A�b��Q�TCEVD���4��G��B$����D��r����~ȥ�.3t�:�[�с����az�PU�\��eX��i��{*:7�<f�A�e�W?�ߨNΐo)���6�ly��Rw�|KEUh��L_�2~�J^��P���ݫ�n���i��N�B�K�O`� �}��A�W$G;�W8y�5 ��r��G��c~� ���蔪jb���ՖB�h4j(���4q��)+I«��iT�3|��8�,O?�5<��o� |j0<<����#v�z���]Yy�H'X����:�"�i�E��2 (rv�zm�Zu����r�և�AO�œCy�����)������J>�q�Q ����dS��ELө21u���-���� L�X ?|]XDx���;��¼����Ru��q�y秄a�?��?���m]��6�ۊ�HQ�1�����G?dl�����?'�/ݷ�N�������ͥ��x�d��\��l���#J����F�i&��/@BPe#G�s��DY��l�G@�tL3��4�͐�j����6��ܚ�Y�5���w];)D�
�(Z����O�}$YF�U�U
�Mn8q���i��G�`�"?��h���8�1�~5IVe4E�yM�� ��X�!?$�9�7Ȏy��5��4�����u�n{���^dYt�t�L��A � �ʦC���g��4�����0}_��(�H�G�ݢ�[!bʛK�FG��aR�m�Б'Jn�˺NQ�Ss���i�����k��&�yx3�Met��z��G'��'<����{%���CʛJ�83��]��X��(bZ��;.U�b�`vv���,�P��̤�b�������f��A��ݓl6�������رc�?����1��=�u�WI��F����{�Tl,�i�o]���R��H.� ���Ԧ]�\���7��B��L���n#��ˊ�$KY�R�ƩSP��_��L#5~��(�P:b�������+*
��f}:@�xy�|��A��…��y�O<q��۷m�m�w��� �"�;�ŋC��dϞ��I�� {�|��qk���G�M,+O�Ҟ����#
ϳ� ������/JL3�����Bo�gaK3 \צ٬��z��b9�֯O�J�/I��Ķ�������<�u��dr#AF8�&yY^T�\(��f��>�^�C5�u��d��E=�8M*��WtEn@� ����N�A�[w���P�����-������ċ/108� � �p�Pp�BL�������- ob���6��}=��&δ�4e�L�ܾz���5��A6�kW7��z!��#��y=�Z�Q�g{85!�Wt��kLK
���b����b���˔�v:Z6a;5�+%&�5i 6�Ѳ�R��a���X���6��4�5��
�b˂|I����\9�mO�� J__���'�T�w�����f�փtw&9-�~�u�YRG&�b�z��5���1Gߥ�ݠ���Ť�������&���͙)Z�lE��LcJ�HN�sI�(��_ ��PX �k����ġ�'(�"��A�e��T�>v�����uY�M]��m�z�dl����ߍ��֭������K�_� m`���a�������]|�3_�0�%C����&֛6�kcYy��֌6�<�a�*fn=���h���gg'���B�D�PF�$��鬣��>Ʀ�#�"fg'�}�B�B�Բ��n�vpJB]��&��&Ϸ���$A�{����O�h��0�8���J_����DA�SwP]=�g��\ab��b�8g,�, Y֨N�!bQ0�+T�HL<�C�U�w��|8A���-������������\�v ]3QT��w��t�$�=[h�tG�b �nr}�"CW�Qk�ݱ8���|��^�����u���s��U̼�^M�w�x����ۋU�p�N�ɒPTDa�g{�M��0�&FYE�U4�@�e����*�YIUq��?ew�3�xLWG�G��7:y�ѣl؋����XV!+p�E,`� �m7�զ���B]o����8��?�5��� >��iiiY���>E�������16�����ub/i��� =�d�?����}�
_�5C�l�B[��J��"(E�G��V@5��G�����3� "��'�SNE.p�*��Q�o���2u�Y-��DV��OL��)� �1��C$�,w(!�}�-�CjQ����������I���/�|e��i�mƺ�j��^�57o���_fϞ�M9�eA�b�)��6,+O�Ԃ,�+���AxYRd.�<fE��G�Q�P(/����4�5EY�M{j�����߸͢��
ej�Y��FQU=)DQq �\����� /p�X RJO
�k#/\=���u�����7�r+�G%M7���L_^ ��"Wd4W�kx4g�X �df��� �d���2z|�n��>Ϯ�)[���m�y��_����e������w���uw�s��{y����� ��s��I�У�c3m�nvo}��G;)[��İ8$?Ka���C���Co|ĦG�ٹ:u��L�\9w�� A���%^��'o��9�%̼�{��>m����;3Xe�rO�h���h��⃑��j3L��\={�J[+�7�T�d�� �p]Y�hW�j�����R ��eay���\ILL�������𿧭��7����o'�(�?�##3<�����ٜ�ݭ�8"�,]w1�:�6'�� e�ͳ��I����'Z�y��E1^0�s�Q4Y�E�z��Ƒ��G�(� �s<�P�KջU*�*H�+�"& �����FAD��Ky�JP�&�mL��C��Ą?��C��� �e-QS�N��_��|�0�����v>��o;ֽ(����?��o�m�l�~E� x����늀�4�0����Z�L>���EU���#=��Ezo�QcX� �/ޗ! �D�8��m�)*k޼ ��aP.�R*��#���I�cH�N6޽���1h�A[����uB���1�ͺ[w��:�%q������ x=�C�4���2/�k>�VB""®61
&����m��UZ�W�4�%�bd��>Q�[zv3����a��1��y�-������UN��5?����Zm�G=O._@3 FGn��u��g��>��g���-<�e�'O��<G1_���K���du���-4Sǭ{��ё[\>��Ok��p�#/4����HmaS�P*��Jz^����M�:ؽ� �����s��.ҘjP�Z`ۋ����I��V�Qcך�ܚ��'c\��!���
�>�u�<�Y@!�+R���86�<W@�v#�7�\����I�)��Kx��>��uff��|���� ���C�ܼy���G�f?�=���9�^S�(�f޿��㘳g>�ӿ�������?P�6��}m1d�p�W�-�R�8�!��~�s
���!�}EU��B����(�ԭ�^ȊL��Lۡ*7NB�l;�{�Ϳ(� ӴXM�0�p��h�Ǔe����7����6�}����5��6�i��������1fg������=p_XL��0|L8��M���kY�Ex� ��F�x�<�K�?= �L�yt�]lčFl�R�S��_9b\�ar�.���� ���:Tp��5Y�.�艎!��L���`�?'I7��2rjcS7����hK!�o����) ]~�͸l�(�B��^H����δ��Z�a�4(v�Q ��X��+�To5��ًd�(9���E���, ������s�D<��$�%���ջU�����آ>�c�?G��N�ʋ��B{1|�"?��_2=;΋���|�%4M�G�ȫ��7b9�����!�ջ5r�@Q5�)��׎s��0V!�o5p��n�S�ȇ4�&�{v��a�S��:�����C��6�����N�8U�8���,�DaL���:[&W(��=�g�&�o��ԙ`��C\���H�Ħ'{�� fG�x5��_�K�N�o�0�fv�F�PL�B&�cg���]�qlt]$�k��m�dYB� �P��r*7o��̙wim��o}s#�x���}~���y*�<�8��}��N&6됐�PN����m��I�$�#��5Z�)w�����0_XQ�"i�HH�$��("c1),�H�D��8�!M�� �dUVd�k K9C4Bd��eY���I� ��n���qn��a`|m흙~�^�_:&I,ٜ[��"� �{�k��!�×x����O�����O��w��o1ֵ(8q�����y��ϲe�LS_P�a@��~�d&bZ��i6k��$�-� HDf� ����q�,���7�/`�%��E������J������\l�A�
��˺Zi1�N�D�^bcH�Ea�Zf�q�m�3�aǜ8EV�YE�[1A3�O|��8"�#$��%���*���u������̺�n6��d�hJ��/����SH�Kh�D�n�4�F��O^�021D� ��g�M�%'� ;��\�U#ז#
B|'bb ���ns�$���(�hL7�.קPg+ ���@�`��{]!�ul���/}��ߴ���@�.bG��/���Q�Е�ms�;:���vT]��Ƿ8=u� ޥ����}�������ҁ�iL��Ӷ���*���A�̂� �L����]���d�d�YZF+�D�M�{m2ݼˠ��C�^��M4Mf|b���ޢ~9�P,���sǾɝ�Ô{K�zm�ۈ����Q�����O����xŸ\I�o��r�1躞�����ϱc?!fy��ټy��7��A\�v�_�������>�\� A�n� Ǫ�� �755���uJ;L��?<@0������U]8�)�F��H�af��(�BG����AS�Ss2jS�ٺq�ģ�Y��K���?�3vm}]1���R�2�� �mM��}������ݻw8u�-J%��G����k]�e��`݊���Q���]�͟��W)��թ��٬%#OEQ�4���z�? ���C�w! 32Qc�� �K�f �������Ő��f.�4�$���A�y"�-�c�������p�\��p�S{��q!��F6=��B��UȾqF�2 �͛w�9݇���N��m��d�����;UA#��om�>['�B��z@c���nt��h��)Ym�Iq�2��V$�4��#;������g�|��S̾=A��z�L��G����&Gǐ7y��ŷ=fGg��X��m]X-&�:w�s:�.���<��s�g���P�[(���
}��������
-���~��6��݅4$q�B��)l1��l?�^܅�3��׍Y6��9M��L�@ F^���iF��BKOK�o�����ّY� �N��,l���,Q�,sU����u� Jeq�0���.����<�e��f8}��Z����ޙ�6Z� l��ShSe��{*� �����umzz6g��Ŧ��"����Q��筷�� /<��>��5��7�����?���p]��{��ۻ�j���h�>a��^�H�Joܸ���Yzi�� di�eD���Z��uL�E�˂5A"��G*f�5Y��Q����QLc�!\�MB&h��I�$����; �ۜ��ԆǑl���>����;��;��|��s�U'�Ҩ� ߏ�|�4�.�ϟ��?f``p��e��`݊�_��5.]���/� ��(��p0��#�`vv�r��b�%�����;YV0�<�� ����(����<���Y��1ͦ�2h�����s����x�F��|�\�H�T~��i�Q��լ�Y��*��mfg' ������ے;�(۶�����ɤ����x�6���{�AHm����Qj��o�0u[�O�q�[����8#QM�`���:��X<v�s�t f��n��ډ��Y�Zjo'�2>��}�1]�����?�V,�m��o�c����7 �eb? �K�\�����(�"QoLӳ��S�k_'��QU(��l�K.W�Z�N(0s��(���^z��� ��Pٱ� Z�?�����+g������ヒ^V���V(�L���m� � � �5�>���P��8�>MF/���TI��{�\��s݄�7�8dak��,�R _x�h=��k����?��ȇ�tj�vf����um<��>��4��0bt�?�?����%�8p�dpp����q��0?���x�?��o+��Ea�V����U�M
�C�$ Ӣ�[�,k�|��� �ZHH�nHs�I���l'�T�e����B� {�� ���JC(MY�S�;�K��6��O3~m�zt�3�ExC��G�́�GQdq_I��q��^R�,M5�e�|�<�|�.��Η��� � l`���1CCC��ƛ�6|� �Q�|�K�EB3��3���Kz�K��$��������R$�
�UH���l�\.�f"Ǖ"�G�劙���.]���!�f����<�B顝,Ac ¢0(/�uX�(�^�B��a�}ޢ���Bs�ϗ!�p�}�W&�m�ih_��'!ќjp��coWyl�xb_������[ǹ���������ctu�c�y�%�R��Ŋ���e:e�}/ cA�2 �r����-���JRdj�No�fv�z<IԱ�.*�
��g.�����Mr��a�ȹ Pb��ϕ�\gO�����$�~\�I�6�i�݇��l��Np����M�B�L�T���`S�vL�dzv���
]%�(ٵT4�d�����Su0
Ɗ��q�T쪍fjTz+†��@���y�~����3zv���<--�x����%��*��u�~f�筷�G9�D�R 9�i�ڔ��D�̌#I
��8��N鋆
���>�}��z�ё�����#G������� \�p�W_��b'�=KKKG��1�� �
��0 �$yq�J,`��Vq�� �P��Ś�ڂeEFϋDvIY���TB�3�"�d
=B"jN� Q�QS6�$� ��"��<������&y�Ϳ�w\vly�b���v��^a9�CE��'�d|�
�'ߢX\��6�5B%I�?�!����=O.W�V�%<�8B� Ct�t҇}�eYƲ���U\Wl��*KG�����=��
�Jǒ���W�M�0�gZ\�3Q%aN"�8�+��]I8A�YǶ�@aE��x|�T��a&�ɃS���&W�z}]7ؽ�q����V݇>��x4f�(��`�>��"�R�g�3�(uyɍ�r� ��1S�w<��9J�܎���H���)(���C���qΝ;�dD K�F���J�vzz�1M��|FF��3v���I��hk�!�"j�ir'�L��Ѭ51
������6\f��0��4��!�����7��:�,��N�I�
w� q���w�F�Q�Z�tH�x�������B��w3mӽ��Z�]���јi���Z �����k�^�g{Y���ӳ�g{�
�`�1#gF��oO��ds��� ������V]78|�t���p����h��G?�늜���M3�,Yɽ�Y��?͝���3�ٻ�_|��� w� ܏8�9v�m^}�W|���UթV���f��n�A2M����j�+�Ϛ\)���ɩ1N�}�i�BW�C7�q������ � ��௕�3��� ��� �� �+(Y!)���5��*�F��{��ս `����J�cJr��In޼��-����^X��d�4aM�� �r�
ǎ��e��k�!l�IG��v�4c��� ����$d�&6f�C
��:F.�A��J,R�s�xWU���E�]�^��6H�a�(˷�K������B`Q��=�\Rr�(
�劘f~Y���0�q�����s��E�ɻK_�@� 9�Z���u ���(���x�o�0���#�՘��3��aj�0�Cw�s�-���h��v�C�1��ө�V�M��1]���ct�k�l����v3�2�g���L��0��4'�~v�����l�G1%f���Ԙb{y��阌��K��.��Q�3s�A���s��>[�e��0�{۶�����$��^�����j�F���VI��j0u�ͱ �^G!T*[����SQ���uW���M�>��|�M��d��C�sY��sz����>~�g� ���<�<۶X�ZPX�ZI�R�Wx��g OU�T:������qQ,�$�D�L�F���:��´�j���3�d��Lğ�W�޽{�'�z�:�={�S�>�P������<A��q,�Ԃ@z�O��SK���� �1S
YY�j��� ��aT������r/
��ThG�\��sIY[�8N���"u��� I��D$�t‘��)BJ5*�|��!����W|\�1::��9�I��������?�j�$I&L���=��֫�� ��ॗ�E[[;��ǚV�z�����wp�;�S*��(
��O��&[>$L3�m7p];�^ RΡ�:��,�T*m�ېm7�� �"�UUð�"���x����Pp����J�I:��"�x$\��%iO�bnB �VR��I�h4j躁?U�A���Rn����>v���0-����Y����s��GD;l�)d$�8�m��ޝ%�q��� �?Kk��B���C-��[�:=C��z���I�Vʽ&v�a��3� ���&k�j��M:��bx�8��M̊F����7� �u��Oߦs{'���~J���ر�@�7�0 �<7)`5�����_2� ����ѽ�Mא�(��Qt��������g�����l�� XE =�� ���Җ��n�Sw�m�bGQ�A��FA��f�=}�E�(�,�Y�$�/�lƉx_²r<v�9����̄8o���|�C����fR�KXV!{�w����}�^�����ںT����(����'LL4��W� 6mچ,K4�L�/�
ad4A1-^X�_�F�������z�PP�.�^���M.]:�٫��:'��l m�Z�mi#�X�)��b�Ͻ�B�_�T��0FA�DgΉ>�{؍qc�,��Y\}s��O`_��oj�vf���^�u��O ��g���qL�Q��3W�����'\��1/��,�>���/�6�)ƪ��8��s�?���8z���y UՓ�-5��������tb�Ey�>��V���&�rҝԒ�u�0�K�]����"�j3��ɤ DUu�嶄>�����DZi6k���E��0 p]��E�r[F�Z��NB$I�^�"55��\�.�1���=��B���fGg��G�vs��sH����kg��G��)R.���71�tl�`�K{z���S4�*��"���SA��3M��T)tDh��6\Z7�<`L|���I������̧;��$)����l��6��E�����x~�ju:)�����������tu ���O�6��4h��J�5O�bӡʘE��]��<q E�<������;N"FV�1<�é;DA�Q0P��� ���p�jh}`��������'�-
3�u�>�]��4�>C[k���( ��mׅ���133�m7��X���놡?o�f1��4C�.c4u��O�E>�_�ge�NDQ��̇��\���O���ka$S�\���'��A���<'�)��%*��,��������5϶����!�f.p���Եq����c�h��Pg�8� �����G�Xq��t6 )[g�m&��xI�`�,�<=Hmk�я�p��uvP�t$�({]�AA<ж���?��U��P(�g�(��q355Ə~��r��>��)��|6���V]\�~��|�{�����>���ΌG<���V��@؉
J�ҋ�|޲�9(��$��_L3�D�+���加�B=<|�B�L[[7�\Y��v���Cl�4����s�%&&�(*�|1�/�M;!'���>��[��1�q2����VX"����rFKQeYZ\ϐ�����������f�Xl�5#IFʸ�f�DՄ���"�`���,�,�YG��|���/!a�-�ې�h��٭�n��ܥ���I6oރa� ]���5�}����<�FƯC������7!a����Ql��Q��P���&�,e��n�Ş���� ��X�(�(�Pͥ ��L��?�ȩo�E�t�6���.��?��/���������%?��f��z}V�5#�~p/�Ld�lֳB�ܹ�\�z�C����菰��S7���z���~���'^DU�hn2��j��J�\p�%Eh��L�9��(
����$� ��8�Z��0��٥+�x��Q�;��/{i܋��Ќ�m��(`I3d-��T���5�^b�,�l=ߒ���*K� T�U,F�3�z�'�/�V��&��?� ��d��D+�Z�}?�@��os��)���� O<���<� l�S�U}�}��ĉ�|�{?��g�F��lB�8�������(F�N�U�",�٬3>>�8�2�ν�޴�$( i�h�T�8�:�J-�Ue*�Z/�h����~�!^1QU�|���.�Q� KT����t7Sr9?B臂_�Y1Ph+p��8����M۳[����J{��ܒ��[:V�"W�a�͌G�B��p䙛>gi�f�$_ɣ*^ã1����%-�?�w|$$̂��omg�+{0���w��\9���(���K����?}�/�e���z��`L���$K�'�L^�d��$7N\�v댜��_���;�����@�PM��T]<7�&\�M��X�������p��].�u��s�l)��=ߤ_ݏ7��Q�y����K%45�W�g>TU�h~SSc�a@>_z��-�A������S�o���� J��c�{h6����\�p���s�����^� l����:�(J���E�̑���K�J���%�*���Cq���z��4ʣT��)� "0�7-�v�eU^3u(=^')��p�Ɋ�u87 KU�m�ƕ7��|�����?�+��d4����׃��QM��@e�Ð���~���e߾�h�ڧ����j��?���;N{�fv�~,�WU �w�}o�~� N2�:N����e��&hL�i=0$)���m7�$9ծ^p���˶��ĕ&�u�y֙�Y���H=N��A 8��b]�u�ѐ$�|!Ggy3��n&.�Ѳ����� +2͙&�W�7w������;wn0Z���Y�{wϒ��:hq�6��Q4(BU���+�����/?M�y�x�(�%Ypd%!f���C���ą��ۻ�����#�\k�o��#e�i�̙���x{M�� �s)���ͦ���E�����z������J��j�H�����glܺK�� �"�\ ��ߺ���c�:�N��e���,��_���E����ڇ6�ӽb�Vg<�i�?��i�)-C�$��ޒ���s��1��,.|����� ���/��v�*����7�7��oc׮��V>��e8�_��d�;��#w���7���JT�h���� ���<rt��:Q5Q�#� oeY�I���kIκ񊦬Y@/!tAi�z��?@ѕ5��G�J��"){ �<���; _���>N�К&��1��I0==˅ ��_��������6���(p���z�+Wn����W��td ������4PU5�_�I*�,h\�w{S%�6�̅@׍DL+�K��F����W��қR �\N,}_ǶE@���_�NE��0<�ejj I��\��!�Y����A��q�Ϋ�Fk�RL�� p��8qS%oU0L� ��ܹ�]�HOo��Ζ��~�w�݀�����BKB����N�� <Q������H��r���xh�9���#��ߋ����5._���Z��u����A���� c��^R���fjh��������w�XV�+wNs��_S�TD\�MQ�TC%
�88
�I�߉D7d�\�v{�~��4�k�����Q�Am�ɝ�`�xALG������ �}�l��� "�e�v�i�ӤV�I��Z P#��X��M3�ׇ����l���K/�DGG���i7�[DZ9}�,�|r�?����M���{�@��uM{�+���6�7.�ڛ�� �l߻��ݽ�;����c�]����>aD�G�%����z�N�a�Dq���YL���ץ��i֚��! �L�""T]e��\s�s��I�W�h�˾]GV�I��� 6�TU����<��G=�AE����'N|�ɓ����y��#Is�x1�3��g�p� ��������*3�LN�%�+��ҹ�EEU��"���ql�����|Tۮ'a9�$�V����D��m7��:�����V�8�PU�FcUUiii_q2��Z[[pvs��w��2C�֤�V��^�w|��fh��R�U��G��O����(�*ȻQ�6\]Y�.�������4&�ˆfj(���ܵ�� ,x���N��6&wLs������4�v�q��_�3�r�cO�8�� +
�h��x���^rV�BK�+����KU̢A��Z��w��u=��o� �$�,�$�= C�q��W�ܵ��N����1��&�|��[vѬ��� �m��؂ݬsf�M�K�����L��GC
�o�۾�(��J��0�m�i$yK'�Jx�Ý;C\���G��Gy�7������N��{��>{�a׮G)�Y�FG���=����9��.�S��V����O.�,߻�4�ȟ+O42@�ٳ6����dzI��'u��\w�8S ���C�M0��;^�q��Dx����K��y�&#���Q.��۹�X�(I���}t�f������j�����HB�6�� ,+Z=�0�G?�1�j̋/~�{��rPCUu|���}�I��4[�i~�A��ُa���� Cx����4����(��}�NɊ�n�S=D�Yˎ�^�A4�5<ϣ�ws�8$�!��,'[]�(�=���q�Ȓ��+�ܘe�^z��lڴ=�qK�D��J��*�2W�(�p�^�#ߖ_�����Q�)z!�-҂%U·}tK_25XR$�NoG��g�6]�Xh�v��ܙ�e[ �5����>^�,H��}+��͏�Ѻ�0��֦P%���~���!#�黯(Y qӜnҘj�:؊n�f�Swh�61 ��$7�(
�Oֹs���
���O�3�|/#�'i�6NIh�Lb�Ibzj�2���Gw�=�q�o��ˏ�����|���EM�L$ ������\$ FGo��{?����?�D�ֽ� ,D�V�ر�y�w����7--�qAΘ�VFZq,��]hy�]�������K��Q��M�J��� �rFWL-EeUFQ���L/0oI�o�������2�Q�*�}�嘘�}}�9n�}��>���u��òr�z M3��^s�v��O��ѣGx�G6֔ l`X�j�y���CC7����G]<%�L��'.y���,KLM�111���
r���9��C�e�M!V[
Q�h�&�)+�{[gG�$t]�:��1'�M[-������$aR(�(+�4M�V�Y�����"hk���_!7�I�M,A�L^��������$�A8}�N�kwO��6Vqe�����(b��Z$bd�P0KB �ջU�3M³��_L��)��c�7���������y��!��]X+��ѵY6�*9� �1#&��Q(T�9�����7��f�������!I���)����d�^S��0�w|&oL2um����ܶ�ȁ���� |��@��&�m��):a��Tr-�&8��O�����]�g��u���;/�X�5 �G�$��������u�"��}�m۶��ޮ�-DZc�8{�
G�~���EH��}��TU]���,���8�|@T�y�O�1�T?2+8�|�l�%����r���J�\K�|k�l�[��}Q�7�TG��'�4g�Y�H� �4$l]���`���ݛ;ns���.n� �2��
���F=��������,��HPh��Z:�#fg'y��o#Iu��o`+cl`��X��^�������4;y�g�匌�9)��q������k�bN�>���86Q�i��(�C�˾��Q�8N#qPY�2 ���؝���*$��o�dYɦ��EID�+G^�hԈ"Q��,+ �)�Ѩ�ϓЩ�bǠ�*�b+�n_���+���cv<B�Ђ�4��DѰ�:�e��.c��esV�("pA����2ޖ$q�FG���fi"���3�|
�$KXE �-� ��2��[کl*�Ȣ;Gq�_0����(*���0�D_� I�*6�"�F'��i�Z������kq���X+�HɤƐ dE�w|�3Mn�w���o��Zxf� �-���M�=&-�-�*9|�C*�ж�B<�s��;�c13�-�E��m��S�P�.3;\g��Y���9��y*�6��DX�I� � �w
5 �\9����x��#l۶U]/��>-�㘱�1^�ufg=��O� r��=Ӏ�0 3�c���/I!j�{z7G�)u�̱����� � q,֍t�?����Q R�4c!f���D� +�N�\I^'=�M@ �N5[���1W�n0Z�{j�R����o~�q��ޫ�fȑ#ϰs���y����un4|��� ���_f��}�K�CeYA�u��O���.�up�t��4�J�#�e�S�A����&��.���qD�^' �y���eӣTU%�+�hTq]YVVl����̨Y�����H��^�&�&i�:��@د:��ö����H��$~}��)�i�v
�2�,��(u���MER��y� ���� U[{U"����r�8W�� � s,Ru՘s*J��tWh�i�Q����Iؑ�ġ��
�BU�DQ��(��,K<z�y޻<�ԕ��f�*�E;�iG/�E��b?#�2�j !�6]�|r���gxl�a��a�9/�Tj��T��U� :��ӹ����3wf�&*!J#
T�w���4��[:zQg\�d������_����0$K�;K=��0>>Ņ � �*�A.�:� |�!IR2�ap�[��$��SM�:��!�/�`�:Ɂ}G���+^/���V�z��J_�P׼Q������C��T󅾙�9��q����o� A膙A:��?�XJ@�:$������$�*�*;���|��ɻ�+�%��(��V�c|�6o��#�y�0_�җ� �� �.bY;ڡ�!����ȁϲoߓ���S��2c��U|�[Qq�(
���,��$�+��2��m�q]�̭��Oj�j dYF� �H��T�S�I�P^g_J�R�8N3�W--3$&N��x�(V�Ñv_���7��"�F-{��|�NL��:q10��'�����:{���IkK�B E� �uP�ؕ�>�� �iE^Қ/
�;�B����GK!p�Y�ﯨ⏪��A�و�7޴0H]>b�v� �!7fn�0q~�m����
�a,64a���:t���g��װ�t�<�#g,����&����YXzڤ�uCA�ktv�q�����EQZZ+l�9��� �q�`R�)e��}����R����]�V�)t2��i�t����n����:w��ӗ=���B�^��8�lB&I|�+�ܹ�c�=���7n��Q111���+���}���N����ܾ}�W��crz���A,��b�8�f��؍;����oo��DW��>�w|�����KV�Q���Ҳ� W=�\!����M拙��7cd]^�5v>��a�FQ����$����.y�DQD�:ʼn���fx��'غu�=� l�w -
��������������_�׷e�)A
M��0 �}wَ8)70u�$�����ߔ���>��d%�<33�8N�(�׎���>ײ�6M�(
p]ۮ���)� ��i4��jӴ�t�����?/���Q�Dj��9�1x����Ȳ��OSkNs��-�B��Y�2"E$ߚ�E�%���85�8������ȯ[wqk��i��ŝ�kz�'��.�+��Y4�-�Ain���®t 1^:�PT=�G1�g&�<w��0t�8�z}�Z}�f����-��{���>��V�/Mг��8�1��*2B?�:Z%ג[ڶ4U��RBjS0L�f��,�QU���o�^w��dEW(��̑���"+��,AVd4SL)tS�wO/wvO���<��+�l֓ǖ�<�>��R�+�|c��S7�B����?���M�y����,�����0 0 �x�īܘ:Ϧ�m�^�Z�� v�Þ�& �u���ԡ�X��в�Ȉ�ɵ���8�(��PX9��e"fE�D��b��h �)}�k9���ܔ��јȏ��R�%,R*�>���ca���n]��w������رA��V���O�:���3����[�H��@�M�������O�)�ኢd���yUU�0,��it�H:��cT�*0==F��r��nt�vw �8�� D�t�Q*ք����D��$IY���45
�����pɵ�|1;�G<ώ�� �
�By޹@�T'1{T
�V��o����[wQ -��1sJي�,l,Wy�#�J���X�,.p��M����J�J�g{h����_� !�G^��,�LO2�I�F�G6=A���KO�ko|�7���8v�12�%�n���`�s{ȷ��{��E�pF��("\m���>��͉1�9�#5_`��*�6tà�g'�,��{�&���w��b[I�5Eō�7��I���9�0
�s'�2�|>����5�4���� �y秘f���?�Ν;7��7�(&&&����k���=q�&1��=# 4��s�fo�hT��-��w/�<y $�)5�R{~n��F�:ES����#�q����,MIr��)��L���R�T���F.��3s{�rw���˼�aU瘘CDa�ЎF�'�U�RGǂ�GEl(��͛W8y� LS��_��Ӛ_� l�wK�pGFFx������+H����}>D7���,��~���s2�"Y���n>p1�$M����s���Z�-}_��EHXn�(B�i�!�z5gϿQ� ��P�,$I��_�Ej�ĸ�C�Yò
(������"9ZmŬH]��B!9����v �<�2��TTEE� al�D~�3� ��%h/�:TN[��R��� ��\)�d�Z�%T]�!I�A��?�����d���YK0;2˥�_g�|�}ϰ�sGV�I�lB�%�V8��\�|��;�|� --h���
���p��u�0��QX��RLL��6$Yb� >��Sl�ƶ-���օaX��o�G����i�Su
�E���6͵�0�F�K6r��;>Q��uB/BU �B�1oB� �0�֭������/=��?���)����(��� 4����G��꿯A�+�CYV�h���u'��~rV~śoY�+��s��k�kӾ}�Z^��RH'o�v��8� ���e���o^���nfiq'z bPu��$ ]�=�ٓeI�sPJ� ˙�(����22��1yu�vy3�� ��~FkK�ջ��ܢ���ޝO1�i;,*Ӹr� �N�������7a��� ��`��śo�ə3�ص�I���gt��B�E���H:(��E:����=ʲE]g_����F5+ �ځ�w� �)+IR���UA�Ԥf��eݯ4 Y� L3���.�3M��c���������b
t/WW$L?�w#��7�RE7�ԇ[�Ռv�o���5<��.Ds땰 � ����2G�)�WQ�I��j�h���s�ɵ_ޢ����/�y�L��65�,:cA�c������]-l9�O��LH(\J Q��A����K}tK�cW;jN�z�s���a���
�a��j�vle�q��X����y��3�u��y#;'��i�5�ޭ�I�
D��E �9s�r����e```]^� |�E�O����;��&[��EU����w�ӰÀѻ7ٽ� 6�ҹ*�P����� .��t�ROq�S������Ѫ������YV���Y6QTEL"1M J��@LB/���4�9�,$�+Y����5�A�YB®�����^�J~��`�#L+-Ԭi�6�#i�pg���E>_DQ���K\��1��K/�H>�_���~��hQ�1�;��o���G���-�AUut]t� �BU�$}2��j5��+�tr+�����V�}U]�va������
�$,M�[��<-q�h�� �=�A���P*uMA�� �Q�"��ZQ����,g!Z/�u�ȧ�L��~�os�|I�PM�LD� {�ƭ�ȚL�G��K
�A��9�A�Q0��`-Y��U�T�}���5��k�n3}�J|��3_�����" -$pl���\?{��íl��Vr� wԒ"�}� �j�K�l>eA�t�BW�O^����G�e�n���m]䫭� qǺ��3i�Ҿ(u"- $Iž������q�8�P$��ܺu�S���W���Ï��u�����ü�����8<��g�T�����s�S�ҵ�\��1�y��{�BQ�e�\�V�e�1��ҹ��\� e���tE_?A����zX�Fa$���p
�����G��(�+��9�DM�!��(����JB®:�_gjh�-f�S}��6�e��^�m�fn�2v�
'��259����`�9�y�U��o��+_���ð`X#]�\����U���-[v�j� ��m7�<0k��+6¥RK��_��W�4��H�]����IDAT�=�E"����ݠ�gӴ2ZOz��n�����d#����\$I��=��R�q_� 2Y���K��3Y��r���8���5�uY��^����(�:��Er�� �T��5E8���Sw�����j栱�)q�O�-y���^OE�(�9��2sk��1�{U��ߠ��I�{O�qD�n0|�3�q����n�㓿}��=��{�/h}G���o��5=ܺK�bS���_v��T'�\}�:�V��%z��f�f�N��B�����w�~�6fIG
d*�eQ<) C3��P�h���r�d�ܹ�ɓo �>/��Yz{{W}�7����o��ɓ�x��?�\nb�|J9 À��1. ������+�t����ֱ�Ǎ㘑�a&�#�=���E��W���C��I�ba��:\��o�<YJ����{��95{��4W�kzȚ�i��;�I�D$G�y���(�J��6:wwb��b�ͭ��\}�o��?R)���q�����y�W6
� l`p�
Eccc|�����[���'_\Ӧ4�T������&�q:--B��FW]7�}�0��<�>���E�f �s��
��v.�.�B`Q����¿]�5�5��
--h��"��r+�/�h���D�l�����l�A�T*�h��b�^C!Wf��gx����f ��*����ű��(u�P 1=���p�!����2�^�s�9��>!h�"ג#h���WT��
Q%nZ�ggkS�� �������t�g�~���}��d�mA7���RE�?�`�芰������B�o��1[:��e�#t��S�MS(T�e���q�8Ϯ�Qܠ����\�p���f���J_eщ�Y4 �Bl�zc���9�2\�� �|��'ߢ��s��}�N�={�>8N�<�� ����O��v@a�v��N�ɛ��Cy��và�m�JK�*��1��2>y�գe{q]�}�P�����8���������!� �J~�TMI��T1P 5�ċ5O$�# C�8U'���&gBfUS�=�K�^a�ҵ�NF�`�}j��sg��������W?O�RY��j�]�}�ۙ�������:���/�i�P�0��OH�:E{{�r�� �kO��#!Iel�A���֒���l����bZ��(s)���j���j�DQ�� ��zt�l�'�+$��P��{R;��$�(-�v3�x6�u�Z���s�w�i��4M��ϧ��M����2�x�+w?��a�/ܢ@���}�,#iRf��!�b��H��fi x��wq�_�ER�o�Y��z uؐe�|[���¶2�=[p�&�S�8n�щ�\��!�&��uvVvQ��p��FE��Q@3��Ab%�*fIL$Y�2Ҡ����I11������w�s���s`��<�����҉��t I
�n�o�Q��,g����)��J�R�o��(
zA'2<����kUJ����� /��ҥ ���/i����'?�)w�Vy���K��1Q�QBA�p]�;��x��s��{��>��B!߆��M����-��
j[���]>z��/����gs�&���n��8�{���:V$Ҍ�I嚑�[% Y]yC��d%�q�\z�fhH�D
qs&t"�(�ܔ��PH5g)MRB��Y$����ϝ�/��?�_����H���/
����˿�_��u�����?$��L�DQD����rS/�P�� ��a�,ZLE���h���Hy�9�3a!��ں��D��.�� "|L_��R�}o^菶���(�ܗTUC��n>����������#���E�)� ���,�����'u����\v�4O� ��� �.���IL7�����.�#Q�� �y ����]�om[�)�"�>VO���4���ՙ)�O�q��)<���+����D'Ů<�=�͟^�����J.ZNGA���(�1� �C��%DݩC�M�"�t��TTSe� &F75�w���RR�Gm�Ɣ2��g�bjrT�|"����������� A�s��/���`�g6c��7Pt�R��P�Nc欌(���?�?�KJ%�����&"����2R���Y"^�$d�0^����D�� I �1E|�c�%��=�b�rH����������Z9�4e)��,���{}�{�L����=�����Np���y��*�H-�+
b\�f����a6}��R_��M�߻C�h6k�3OB�I�Ѳ,''�I4w�M��w>f���<�P,c�,4S[zN��#I���K�Oj����K��f^�i�ciFB�L�Rk��5-�P$��Q���Sz^��F>��� ���w������<?}6�v�k?�ܵ���{�ߒ�e}V\��c>������eu�m��7w-�k�`��������P*�Vx��M,(
�0D�4y� �z ���5?�,KX�r
q\#����'�J�*D���~^�$��V.��K�! C�>�� p[.t�˸X���e �\�$t}�k�8gϞr �^bӵ�9a@B��L��� }AJy�ݐ%YB7ttCgzd�˯_azxò�� ܐ�SS�S��Q����_��� ��m[Z���(
"|�'ߚG�4�BH�������NpG���+Q9��ށ^̂���)���O�p��z���=S���-�X�\eE�R�݆K��q,�����!�v;����#[��� F_�q�⻌yW0�&ZA��M��-}���eS�.^?���!���|jw��"+��"ҕ�i�vf�P*��e�TU�̙҅_|��Q��?EqB���IS���V��SIS��u�ɋ�l8H���b7����M���R����=5HH�w�&�b���y�F���AP��1�S�p���"��0z~��T���� �FӴ;��O���$�9\�d��g.�^U�y6Ţ!$1IJ�d�m����'>G{{��N/%$i��I1S�;t?��֗7ќi2��m��,L1}�Q$
*YI�ib�$I(����8����Ȼ�����VYų��k��3.���A���3�j>\O������W#JB�fn%�p5H^OE����OL RMB*l���06�颙<��������(�~�W�4%Y������D� M�ozL�`3������N[�Hh�(Lh�K�l�a��ϡx1Qd�����s�_�� %k{H��<��ĞD���$�VI��L�6��ɑ#Gy��#�����w �EQؿ?����}^���g��o����kצy��/b���Ҝ$I8Q���z.��p��R��t�`ft��r��a���o5���M��D��BE�B�j� G����d.\<����Js�)�ס(�C��Jf�DU4��v!I��0���g��2F�ĩ;4�^@מv�<�������@��]���k� ѱ��V���
�o�3�>���E;�a4�=F>� <�g�w�(u���8��~/�7g��$W�S��E��=��89�(��u�؇j���
q���9_�ڟ��~��m�y�R �r�x]�\�m7Ðr�I����?q3w��� � ����bWm��M&�M�ѿ��?�����=G׳��FQL�Q��=���y7�<�z}� �4�\����A@�Q �/�i�C���1%/����n�*$����p��\���ǿøu��_ߍ�f����L�����1���?Dzr�1a���m��~�&�Ҏ#UU]
�H�����j3�r �ʊ���<6Ɔa&�Ҵ����8��ȷ(�-&ά��L�ޢ֜����|�0/�,$�¬@�� i����!?�q�Y����D~�k7��+���c��l�S�uQfm��uLB�셍��~t)�9�a].D댣���YVy�K�����M�PT53���K�k�h9���r�"�
�t i6k���8�G�XV> }�u�ɴ�� �$�ժ��Ckk�Ciӎ��8 �J�L����ς��}�鉠d��j3�ݺ�>\{(I�l6�<a����6��(��;�g�������)�
ׯ_�o���;��mm�8p`�o���o"�>������'��;|���J��˃4g���j���i�Gh��}j�������\�� ��[�����i�F�g~�Ï���鄁O�LN�b�bQni�1��kzж�k�
�ӎ]DD��D���5�ROpI��ky���o��'�K��2[�n�(ٵ��j�o[~��$K�E��Ac��M%ҎgE4&�\��0wߜ[��p��O����E�"�.�Ͼ���>�ǿ�{(��$:
c&kw�ךf���QR.�-j�;��D�呤��/�&4b,�v�Fݛ�1!#E���k��W@��T��d�|k���;ԪӴ��-8�i��a.p�6��R+��p�� \צP(��_*� ���Ħ�Ŷ��G.WJR̅m���tu�3:zUӰ������{����gp&y��}�g>���P@y�����x�����˽�q�B�1x�HE��N�)B �/�`PA-)r�������ٞ���io�ڔ���w�O�z��L�
e"x7]�
P���>�kٝ;Ɂ}�cY�u�)~���d�`�]̦)�k��v��*�a\�B�2��m%f�>A ��e�IW��•�����U�g�*S(r�w�����KȒ��}Dzc�Y"N��Dom���qn4>�9�Ĭt�;�s�ot�;+�©���;H��dU~(~iW_Q� ���� �v(�ڤ ���o�,e&�� '�*鬮.����K��s{��V\/q�$����6��w��27w�Z��r�w���Q��L�05���IT�|�EU�;�8�H�9Q��v�aH��N���>.��"�$����b?GQH>_�ѽ!���h���?�0,��q'�U���A^x�7������?~��{�b��'[�y�GE���qA�{���Jo�>�y�k��E~�b4���1^j�u;���0�_~����u�wN��8�Ʈ]ػ�C��DQD������x�K���̅��:s����)�6A��'��C}�N�DO� �d)��oI�2hO� �4,:�Q�b\�>�� L�t�$��7�&���p?D�u S�����~D|�&����6��"�����)����>��W��X��ъ�^wۏ���` 7���nP,Vq��q�)7E���]*I��\��}��s���gW)�\n]��QS���V���(�4� ���*0 EL��D�l�>N���?J��fn�&Q144��w�+:�q�ϗ/y�g��ry��^
R��4�㡙��}�����t�cz��q�|�0@"Y��\$���p]�� ��^Bx�t�ח�<�b�B�܃m���a)���O��}�B�a����&y�����odCb�y[�����n7)ZU^��-��eL�B5T|��,���W�D]���xS��b�63D��O�0�>a T|֓z�0�"�bdW��wH�/͸�{�BF�1���/�Q��`U@�q�t� ���|��K ��vb��Qa�++��'�{�2��N:� &j�"�N�EQQ�SջA�Rۻ��( "dY�n#�*�=�!=��$�4g�h�$)9>*�����u�����
�L�bb�0O=�U�y�#&&&x饗��s>o�(x;�0 ��?�S���c/������_�d�f3o�E˩�yy7z.)�FJ*�*�(��ܦ��0Q;ĉ/R���q U���|�+�>�Թ_@�C)APr ,1y`��`��e`���W/
"��y}�7��2~�1U𻾀�t�\�͒yn���� �EU�;t��݀�����G���?Q���2���8�h�Y�]P�(�!^���=�G5���K`MB��;(2����v���(ں{�v�D�j�m'6�Ɍ���娷�PU��-w���,+�)Z�%�)Y�6L Q��04�(/�:��~*�q'��>�c�e˲6���n��t;,��0�M�� �wo#/�\�sk�
c#������U�ٿ�$C}��jF���8Nð(qJɿ)4(| ƶ ���aX�f���p���\��f� �1�7�9��ev �X���0u�"�o�ǵ�i���O]��f��y�'C��������b�ӟ�07�Ŭx)�$�w�N2�`���˲���kB a �q���H��(
��������u�C4er`�S�"�"e<�V��m����u�L�_�~q�kL�x٤�0,l�@C����=Eّ���)f�N�I%�%I�����k��8S�~�qƭؙp��q�v��EݮP4��?��������DĄã�ib�%��*���������^{��G�R�T���>?�(x;
�u��S�={����.��g���<~�K��.� ��Ot���w}��/h��-���b��#�.c�t<��P�iԻ�9����J��&=�h5 �K*�+a�L $��D3[�׌��E� ��� C�}����a[o$IR��4bb!A��Ի�a�&�^WA�F�\����1zC*�J�O�m����ȒDu���(u��T�k�_g��(��q�#IB&5����/�(��t��- �"!�3�v!�g�1�|�b�HPC�=|���%f�2�_`Y�A��0:��B2�1�v]�A7�����8��=���4�n��;�i��^BU��u�����o�o� �v����p����btWj3y��h$h-��q��M�8�y�W���+�����=˞���`��q���B�8���|]���OxB1&�2��\.O��J:��ce�zh�NJ�4 �YQ�1s��x5�aG��( ��6 �8 � X���5H���]�Di��Y2��_��GQ�q�֫�Da�� �@���`?an�f.���& )I7�%~�H��aH���u=�Ѡx���� �:.���n�ޞ!
 ���D�0��)��n���q:�f���H��m�n7PU �.`�6��g�����<��?dY:Q�y�y���jZ)wg��S;Q*J�Vܧ� �"uwc�T-2%1����F��J `�c-���l��n7�,�={�12r���������~��>�����G�������������9��r�d��#�`;�<��*��_�pe�l��47 �T�N]��� �>�%��tR��8͍�s��~���5��c�-$$�ͮP���>���h)�7�J�q�{>���pbV��gԌv=U 53i�#�(�wE�G��L��~�-�2��nǥv��U���@�f �а�����7���4=�{2����V4E�(ɋax�Kh���A����4��xs2)Id�9��Lϧ4��U�(�+BU�a���B�Pػ�v�&�������ޙ(>��N0�1�S\�~�N����L�&_(nZF���^=��k�AZ�B��<�O~����Ϳ���Lm��jqJa��.Q2��+�^kR�?��� .]��V�ʧ3��)�H�J���4�P �s2��NB$�aցK�NTUòr�P�눂;)<fO�陫�*Ϝ�Ǟ��X�̲_G3TXgx��c����A.��k�E��^�����B���ś;��,�̖S�(ZS͉�(��eGL�6���@��H�I� �XV��?��D4#'@��ͽ9p�����<�E�j*���n�S�^��i�w�Cû��%tݣ�n�+ �v9V�\�@���y��^ʮ��|�b����R�,�0q���i�]��8^��r�.E��MDe��.I�Io�Q2)���'U � �V����)AM�3��F��n� �3����I��3ZH�rE�������O����x�(���_�����Gq�h�Z|��������/�kFG��lh}Dh�N��ʯ��m +rF��.$I`�����Q��9��ˢv��g�=~03�J}�S�$UA�+趞���n�M+4CC5T��.��+�Wh���ya�/O�!���22��^�;V, }!�g�ؘ��ѭwQu�6�~�_�����)��U��Ŷ'�[�IpL��1�4��oA$ᵽ�Q:;�a��yx�GFȊ�礆�ql&<!��H;V�n �0�����qBX �����{!���7���X�.��5�[�0ɂv��Q�c�9w�}޿�
Q_���[\�r�/=�{<��˛��2df6־���(�歋||��D�) �>�i�A}�ar7K(�Bu�*O��{�aL���v�t�S��|L<�� ���{�ޞ'9~���F��78K ���iZt����v�sb�(�T>��O�&��������y.��>�� �av�������9z�9�j#̟��l�8~�0
v��(���`|���[�����>�gg���Ǟ��_��I�,��zu3b쪍��B:W�2�}��!����������� +2�"e-�5��D �-�{�Oy(��,��J�����8T��+�x���g������y�+h��t�� v�z��7U�L�N>_��n�鴲�|���qڀD.��V��2!�e�\.��t���1�)A��mE�q�rRL���3Һ�`��z��%�B~5�K�z���݋L��08�Pp�uc��K�7�w�<ӌ8t�.�O^�'?� ������� �|^�QQ�(�gΜ�W^�'����!,�ܱ��Vq��Ө�����h]]%�+�j)�f��U���W�׹0�>}�G�=v�陫0�2z���'�3�' s�![��UHw�(BOH�uV;\~�
�% �[cu����?����������w@�j ��R �hbX���q�\h
yӒ0MR4����n�+�/��Y�f�$!ѭwqf��*Z�~��v���!�@�T ���^gdp)o��] �=̂������!�������+�j"�h�(
i��l���ue�q�j5Q�FcEQ�ΑD��z���t��q�� �]�:��#���`�H� �)*���?��_��l�]�NR=���x������f�� �� �,Ӵ�]���[��0���/�_^���L����;�q�r�����R�#��S(��� ��S_a���{��X��E6`�������7������ �m8WdYA� Z�:���ַ@t�=\w ���F"��e��[^� q��#�����n�(p��%^{��Y��@Qǐ5�v��ԥ+�\l0��=�vqǐ�(�=�G���3���a� F�#k2�r��ɷ�� RΏ��k<*�~N �҂�w� �D~ק���t�H� �t�]�(��, EW.|(1 {X��ni =֏�c������V�el;��8N�Fc%��7���!�qB)��\E��RcY6�����u�����w* �����鸮��� �T��yk���E��y�& }�(H�wߗb�E��{�Mq]!A���yKqL�i�[t�-����/0;{�?��?�_�ڣ�`�xT<�;���
o����]���E�����oy�ȑC��}��?��|������~5]c�W'���2g���i�x��ǟ\�w���7`��+��ے���u�|����~�t������8���o�����
}'��U��|����Q&lB��3���,��s����������S�� �BVd�5TeT]%pܶ���h��f
s�� =�#�b���U�DB�M�zG#Q��_��Ĉ�Q0���ψ���ɯ ��>�\���%3�Y$g�C�l6W�c��#���>Ą���DH(������aG-+�����ψ��k����>��b�� ��5�3&���u._��K�N�(*���' &�$�[��.��+�<��jB��v����꿳����, }@���
@q����u��9�z���_{�?DSu�]�-�ʎ�*��
n��,�\y�2���`�n��W8�������/1o#�(����>��$�EQ��� �P� T������F��0={�������=Ӡ�6�����~�=�G9�� ,˾'�X��)zQ<��0����P�x��)_ڠتQ��8����b9Q¿ � �)D�0K땑�b�v���ߠ��C��MI���ۆ��p�/[b2y�BC���+Ir&��8]Z�U,+W2��B��,� `yy�w���B��~�����ΐQ�ts{���)��` �'o�����$�ҶI|:%HI���������N�m㺮 o����)�X����w��H��V[V���"q100����p�Ƨ��G?�����ju���y�GE���c���;�:u��񣌎�}h��|��6�,��s�o�a��w���S�,l��T_���u]��
s\���~t�"�4��MIr��;�HHH�aDg����Á��8~�9*�^[� ���[��O� O�b����X����� Z���k8�Z4�TvU�L�0�m�b2��3i�t�U��*������p:�0SOڎ��!����`�����d �Ұb��x4�d(���,��_��ҕe|ǣ6Y���*�Y�`n�E�tQ��B]'�cZ�U<�M�?1�"�xt��@*E� gZVUU2r^�:A�K��#:�A�%�:)�UG�L�0N�nWH��%
U%g�YYZ��ͳx��w��w1<2Acu�OϽť��ZXU�ڀIϡ
�j����׸ue��3����q��mVVl�I�����"�>B�u9:�%kfI|�������x ����vCj�ANy�}����:��#�2�!��,��:�; �=[�ߒ�i��tZ�?��A��c!�*=q_��4�(b��>a�? tC�,õg9�]�A��� W>���:ض��=G��}]���=,\d[��iZUCV�)&�&j��3��4q[wM��C���+�WH�$��L�(r�'�L6w)�"I2H�L�Y�A&m������1^�˜�e��M�{ ����� )�'(��P<��$Y8�J ̧C��f���ۖ^#) X����3B�� �t��L��N׆�(h��7w���&��qfJE1a�R��'��N&��]�>� � �_E����U�����H}fv2��~&|��{�(�ZDQtO���P"�\���}ǹ~�9���5{�L�����������G�e�q���
���������;�0��Dvl�(�<q����e�ޤq�(��F7<LR���l����,}��ߕp�U>��G�=��DN��cG�!%)�ֵr�s��9��YN�{���>��%�'�׮����%�[�>���8cc�(�4[wZ��3;q�_\��,_Y�����2�bܖ�� X����+^����i�p}"��9 B��.ȧ�-��h�&pŎ/� +J�
cO�0�� �$oP^� �։�1�#ܡ;+$�@�Ĵ��d�n$a%yH i��͓�[�+Y�߲��X� I�]ʜA�D�M��"��Ym��v�t�A���feyS�c�%4,rv�F8υ�u)R�>{���}�9@���T�S�]u�~e��p�АU��ES{l���ˬ�̲�<O_�aP(����*�n]���)�/����@�`N@���2T�C���Ns��e��&�����"�f�Қ#΅����E?h1�j��� ��}�g_�&�fl�l�ZR���}AI@��p�Xgn͛�dӞN�I��miJw/!��s\�J��H^; L:��0?? RL�6@β�m�c����W0jb
�P܇ ����Y��HH���aR� η}I���th-�p�=tˠ�h��
���Q0Prz�H�k��{ ��3���,�����j���.��0f�x>�~�b�����nd$_���dj4�=)<��i�Ţ�,���9�d�~Z�8mTU����H��D�T�V�-��t����_5j����^��L3�4�,�D!L���,'��5Bs�=�;H����3���O.��q�!��?sb���e�b�J���q:�v����?�c�z������e�:ǣ��Qla���K��3:z������̓ϗ�5�yI_������#՚����� �����%������[���G3���QҘir�iZ�#z�}(�ʕ�r��{H��ID��M>S�����j#�X�o�,�i�ġ1l�H�7^���~+��/gRp��7��M��<J�*�*tg�Q��#�����
�.���v\��G��˟(������ao�i��S3o��
�FW@
���e����_�����q�vX��L�^$�C:��fR����*�N����v���]S�8;�mu�=�D��Z5��`v���|̹��ӑ�� �#�n���$X��u�� t[e�a*_)R������9��r�ӷ(���� v=��޺�Q��;̮��X��)u�
�E�x�K��j ���p���b�͌�9pp��� �\�E̮\�����$,���� *'l��8���EV/�����F�[嬀�$!)�u�b��[��0�,�Z�?�Ҭ%��e�(�h����;�"�$���l��4�e��ʬެ;2
�07���A���W���� v(��`�6�1��~�U�Qd��Q��^�̛_�5,��ۻ��,����(��:>��Mf�Z�u�'�����F˫TF*(y sP�����y Y�0�F6��p-l#z I��Q�;? �B��mN��LO�;0�ً���������?�޿���#\wB��F>_�q�8Κj������f����1V�ĴZa“bdž���bV&�zw���-�Jf�U���_ڬ�}���E�Rt�-+��t(���E& -,+�=��{�H��4V�iU�B�q��4��0 � ��Ҧ���6�|�I����g�(%js:�v�8��T���w�c�~�]&''������<+��QQ�(��N�����7�rǎ=G�����,���0� �,:��&n�O����t��8�\�3��p����>�!�2���7� /�����3z�#|��/�� TGzY^�����aq�r�(�*[h�v]�YR��"�B%!�
��ﻬ��S*U��KY�)�c:aZs���\�r�������.T �7��l��##�o����S�=�)��U���(�7�U�
'n�͠��Za��*�b�]��C臘���
::��+��\�|�B�\C�� ;a��9SK�T۩aD d��R��E��>�!Ο�4\b����N�Q�K�Z������!�c���J�%��m���U��k�0���\M�2�阾�J��(�R�v�N��
@�P��+�5��=ʙ�q�x�N�C�GXk Ǟ�WV%*���jK��%�k��2�C�cU�$ߛG�z&z�^Xٷ���~�����������L����Ӽ���%�<����y��x5X�r��X<�R�v�Aܾ�h�DQ�x �]Kk�K�(
y��WXVo����q�Ǘ0�P(i4:ܘ>Ǎ�'ȞF�i�S�; ��o��������`:Zb��*ս%�}q߃���� �hLB���tV:����(������_"�fqx�K��/ �2� 3 G!da��J�������� `�=;Jy�$+z"۬*9 i!�N~*���#�B��<\�gO��K�9u�,.M�R�$���!d*E2���D��vq�����˔ĄA����bG�$r��v=��H��N
Ӵq�nV$l{��0����G& n���}]��gr�؛�������f�r�._�B$I��m� �3��(�h6�gI�bB��� ބ�'��%�$[wt�C�G��z�w�)k�$A��H�����_���W�����[>|�={�����QQ�(6E����� �'�|���HTH$*�4�H��8s=L�:aw&p�8S1�����P�����ۥ��g�oq���7ާ8Td����6�߸���N�<I�؇�����yv�4L��#?��<Z��=��hG��!��7�������=L���jp��ܜ��O�����DǣZ��o�?� Wi��q�]&'Q)�P��YqoИo0G���9�o/�ɕs��&��M�$K�.��vQt�b_QL\6�UBF��h�^i�3�# B������Zg��&��M��\��Ef�[��gv1<<��!gV��i]$��o�I���n��E�# ��=���4�,�X�o�����6\�9�G�h��������:���]�߁0q�LzvQ��#�2�|I�"�D�P�r[�X"�BB?@
#4CEɩ���WVd�3r`�Z�jeO_a��F(��L�3�P8�G��*}�{�~g��~���sG����a�]=������{� /�𝌘x�T�A#UNQU=ガ/��8��\�G?��|���=��{� q���\�q�Zy�����a�uk�F�̽�L/���Z��lѲ�v�)p�����v}t]��CQd�F����ܘ9��s�3�0Gm�Fmw��qoi�x?!k��@z!�ޚǞa��$'��T�!�R�����vF!�'h; �n]���y�0��34�%
�r �'W�1r:qDF*FB��x�)`L)��aDń��{(�8���4o����u��p�Ä���*�Z��,+ɤ���oۛ�/q,���vF2�]O_Q,+O��J�J�;�q�E�-�2�maA�?G׍Dta5I�݌�`���, C;������|Sa��?K[�9!M�Eb/oZ9ᯘ������
��LL���y-h���.������(� �.��$�Ν�p�<�R���%�}�[|�������QQ�ģ��Ql�(��v�����_�ĉ���̤{ ,�Sh�*ed_�m��X�_�s���cuuQ$��&�N�t~����r���1y����/rt� �ɥK�q}� �@��d���37B�b�:���S�*&&W�8������E��;��%��.�� �.���˧�?p)*��W�,�-L��������~��'X�\ŋf�,w2rp
��H��Z���@�h
���4�L�P��炬�}�1��:7?�����jQ?ئ��@��J�|1�m�w}����k"�V�
�0�祫�,�j���o�kpQ, ��?@vV���:�&����k�Y+;��a�a�TF����%�c���3ѓ�7uV���]��s$F(��]Q�9=+~�,b���:�o���=���TM& I�%�h%!$�ZBu��u:��K�aېѭ�a�,���S�W��
n�E��4�w��rB�>5sC3������Wx����·?��^�rȆ��Ǘ�`qi��G�e|��v�\�p�dF�S#��A�D��~BƔ���|�����!I�b�?���\����E�N���̧��a�kT |�c�|�c�����d� �wi5,�.��:�a�3B+��ۇ�X�U�r?c�EJ�%t����q�;>qoY��Ӳ����ɛ�����x����KX3�L>���
Ų��,��u�HH*DT���;���j{�K7>ƿ�&� f�:~����{{��97�8 �#$�� }��$K�v�FW��X��P,��ɡ����p��s3S�2��l�j-�J���ep�0 �� \(�����V�i:Q�#�Z��M�yyGbir��|��p[�= ���P�/���Joґ�3��`1 �Y�%-2����X�>^��͑6���J���B�+��)�2��h�H�D�XM��w�?Q�<�����ψ()\4�H���n�i��S_���3|��iΜ9Á>��f���G�!x��7h4<z���Q����d#�`�#�����ie8������^<����w�y�j�}�#���Ӈ$I\��s��c}��X����М{-
��š� �}Z�-��%�#P���Yx�í�W�� (yD}����c �9��w<.��iUE7 ���+�ACO�N�A�ıx}��B�h�h�PU��n��)Y����r�g���c���E���-��۴� �B��oB��QYꮬ�$������DA��1x걯Q������j��$F2U4�p��h�~��E'O$��+�=�!K�2�G�=Pc����*���m�\���P�)�(���]�롨�b��,u�v��3���opb�$���n4M%���j�Y]]�R�G���uq�.�+�\�z�hcV ��$toY�x��9g��g���L�
�����a��F34?�d*�}E|{/ӧg�=?E��g��LjՈ���>y�m�0��oU�Q�t�O$��/.��8zz1 �@���)dZ[�ܣ�8fii/p9q��z�+���O���+x��x���9�x\�y�x����о� ���w���]��%V�)�=0g�����DU�-B��A�:�?�5m��S���^��/�I��J{��r�}���OJ4��7�^#-�7�o� �n����E���r����z�|�N�K�
���vŦR�B�Z��
4Z����b�3 ׈��N������v����R4�(���;�BB?��Eř{|
E�S�]��d&��� �BFfen}<��ܻxA�ѡ}T*�m��R��8neϠ���8����Q(�QUe�5�>��qL���qڙ�םCLR�/��6��%d� �E�\5M+�H�.���ݮ�%T3}�4����ۼ�7�ﻉ?��M|���m��t2P.g'���&�mK�8��b��}=�@8B{��9˫��΅J]o�ǎ=�;�� �gƿ�W�
Ӽ7��_�xT<�,�8��>�?�%���?a|��LB�]�볓em�7q��QUq+��4� �/a��V���~��04� ���Y �)�3=1�9)�N|��5�нJ��Ą��G�V���J�AH}��S�����6R�B��*��W�R�0�:�=5nˬ�.r��9�3�u �fg�h��6^ף8P���b��� �wjЭw�>F��.ۄA�����;�񚳪fjX% ��LJ��ۧ�L��K���9����DMUp[.n��mC� �@ �D�RCU5t�$��L?�=��CU5|�M�{nI )�T3 A��7q
\�K������_�9���ů<Ͼ��E��l��E������i:��%F���v��\�����vi-�X��B{�GߛC7� IG�� 6�ח��(���G�]���y.���u@�8T��y9rl�dr�|��a+ǭ_,0��CaҢw_f�����m��0���<�֮;$:�s�昽~�K�O���0����� }������躁�98~��ο���<�<M�(�b�;�i��鴱�5�OJ?��q�-|�b�X���� ��U�}�[=�˫�8� �������2���_@�T������ /~�R�r��ں�Da�"��N@��*�6f�
ENH�Fx��Y����U�~;LQB#��`�/��;zm�ty��_.��9���#�y;�/qLF��.��I�C�ѱI`R,?�X\����YN�� ��}{XY\��H/���Ȩ�����
Hq(`@��#+BU5Tq���$���_ř��� �(���Z���q�_���O.q��2O=�� �Ƿ� �2��v��A�dE�r��udEI��^�P2�ma�(�݌�{��eӴq�N�/�2��v���v2N^��������K'?���ֱ��x�X�wIw8?�DI�tHN��ӥT�b&�+`[b�� y���.dS\YL0�s/&&A"M���f�v�>�R��s9v�Y�^=�/�
��;Wٷo�ϛ_���n���W�\�W�z���/��]��� ��^f�;�87&�‰aW�X���g����w��Fq��y��"Z%$�#ܖ�u�U�],H��3�{-caF��Jx'����ۇY4�rk]!���w��=����1�z���9�À�l����zh�H��e!SE�T1^g��(�A�� �� �8���w|�أ��ep�09��^&0L���1��*՗���&W�j�`�^n3��qV٤?�����i� ~��ew���u��"Rܬ�vH�����8{g�E�>�FL���g��˵�O蝨��� (j"����9=�,�{�y��B������¶��8�񺞘��>�O� ��}��-�#�%$ VW<����t��oS�����A욽�b�4X��W0|��ş_F���$s����E����{^��,�tc��S����:Fw�����}���a�y��cZ9��~�ʻcz�
mc ���ot�9w���A^8����F�m�=n:�H����(�KX����E!�<�u�z��I"���b�5;h����I�y��x��$G���k�^FF&QU-�G��5����ȩK���E8M��ss�o9x�$ڷ�^<��J��f1�*'~������8!e���D�&�S��ؕ[+�.y ˇx��&o�o똋��0rh��#�Ն�S�����3��WXX��hZ\���� �4���
�f��'z��W#W�PM5�I���5"tS�?cM�(���x��ZU4��h���_?ť��;L���]`q2��0�ZZ��^_�Z��4,f�s��)rf��'�H�ֻ��!5LKa/ %�蝏�a��w�,�A�J���h�,
t'�����-e0"�����b�����N0�T�U����0
M�]�4s�2����v���I�\#�/%MB-�����_� ��t����,{�~P1�Ұ��
�=�<KK������������(}T<�,�|�M��S^z�������8�l��0b����p��y �w�;K~B��G��n@�!ȝ�U1B?�N{��1�m��Bo��hYU�g}�JL�j3����N4Y��D��P�SDF0Ip��*Y�3#�^���l��2=�mC�t�;�_@�n�J��q�4.�z����h����~��d��U��R�@5׎G���Z\{�g�3*b�Y8��T7�e��'~�RA�4�Hb� ����@��F<k�N�P�$j�jQh�kIu�7��!���Ʈ��/������2���A��}����:��B�i+�wŸm7�t��"&sO���/S�l� M�.++�t:M�����K\��o~���e�ُ�c�S���*q.F�댿� EU�:�W��8O��~Q��yqZ =�O���@�U����O�q��v=>J۟罟���/ �C��Ϟ����pW}�q����G{�}{O`��-KY�J��_�ɲ���~�����8�)Wz�uc��i35u�����;�chd�Aw7�簲��ﻙ�i� V�� ��wQ��8ǹk�qu�c�����͛H�Ğ��x��ר��� F� ��&em��[7x��O��?9L���5��X(�< �2��U�� �8f�� so�����{�N�г%�.,K���B�dd &vfp`�v�I�,S�U b/p�|��y�� f�^b�9�=ip�k���V�R�����_�AjI��*`[�0mL9Sw\'YM�X�Rꧯo8qr��ݦ�"Y,��S7.q��[\wO��0b|�Az{�/
�}�6FD�K���{���u�����w8��7�A����4�0�\.�2_{v����פ��P��CҶE�xn����ɨQȘ�v1K�u�J�U �(dii�8#��4s� �w Qx4��dʐϜ�o��i��x�8�س�������㥗^�Z�~naD���G��3g��Ï1�*�>� 4�X� ����F����y�����+Y�È��%N�:���TF{����:9�H��uV;ġH����F�M
�{َ��a�J��s�.����=
FQ'7dz�B:t�kS YN�����+�ؖ(P�� �����o[ao�(q��u��fB�$Ib����7<6��֢1?��|̂w����)�-��f𩥫K,���]�Pg�89��� n�^$��鯎���I*��,�SUM��}7ݦ�Z$�A����F>jѦU��J�a2u�"�Z���8��ÔJ��+��tZB_�mN������r�+�]�0"WI4���PLV_�=��3s��,���K�� m�ڑv�<ϥP(a�!��Xe�5�߷��Wưk�A�R�T��i:�]�,dS � �bz�V���(���\s%Y��_����N|��$��u�� ��u"9�����@�O�P�+ #�W�g֘�W��%ss7yc�K���Q��=��P8a��,��8��� .\:M�.�wS,V�u�v��r}��A����f��&�VS(ZJ�Lag���:%�8�6]�E:�)�#�q�H���5�^;�J}���C� �g�o�C�ڃ��)�}X�M�{��K�3|v�m���G�e��]}DD��xl��O��mR�1 �
p[����:˧:� �>�@��&K��#��̀2��4� ����� B�>
����e�}�[󗘹q��;E��MiW�" �iү�0` �8 B��M�Ŭ ����Y�Z��Z#�S�:17n^dyy��� � ���V�0���,-�ry�#N_}Ԉ�{�B!_�1��4����* mW��+��C��9m��-݁eYJ^#���U�zQ�M���kr�[a�$��j���?# ����<L� �.��`�n�Fc�z}���a4�������N�R��\�hغ`I!_��'�" �dϞ�LL<�O~�3FFF9t���>��,��0 ������7y��o�׷� �(rB z8��* DQ� S�U�qLzxF �X�PtBdEF3D"��F�\�� ,o��* B�C:U�I�0�� j<�T5T�����LX��Q�f�[���(�u7JYB��'�!9힅aHԍ�Y�WY���U8
"̢yW�%�P{j�= n�r���7 ����ԉÈ�әuY8�L�;J��C����Iv1=}�N�I�P��w(9>�q�}l��(��&�S9�v9D��$�XTѕ�k'^�pJ � �9���tg�88���'�k��������w���u=1M�B?�m �D�?@���\�Eht�z���}�� ����J��B�;�4�lJ��4Ǚ��r�?M����� }����e��1�*cM� P�d���4
�1ю�H11VAL������Q��>���4���q�{'(���"
�ھ*jQ�J|�sgI��:{'��{�0y��L#���q� V?��mq��g��:�`�%�ey��]8��}<��7۵�%o���5�
8��)�� �'|�,;��D��"TS־���0 ��C�$�Һ{�(:��6s 7Ym.�u<ra�/��;��L��RB�������2���b7^;��?����88�]�3��N��;�(N ��Q_X�k�ou���Hcv���8��}�e��C�����L����?�ʊ�'aR �"LBVT@�̙@�>����$WO3��9�}������T��y"-B�T!i��^�#�0���� �[4G$YB6,���̙3��:g�ޢ�]b�y� x���q�z |?��DRnY����"�pi4���đ�(���tH��� ���q�ΖR�� �M���ϗ�)�X�-<Rb��PU��fӵ͟/�ނ @�RIJ�a�O
�����(#F�����g��|~{�bEQ)�(����\&O��4�2k�JE��/B!��w( +��E_�0���?�/���������.l���A�5�GE��<�0�… ���T��y≗7���t����*�kU9�%�q�q��H�h����9zJ"��LA�̕r�F�5�C"?" Ba��р'- ,�������;�l�F��,����7��)�$IH�*z� UG�y�^H�FB�PS$��d���$V�Jt�������-��3�f ;�/Z�[{ؿ�$��>L+G�܃����w� �t�����N��55�i6W CUUH/M��vۙSq��$�Q"}��M6v�|����)�a���D��1^[t�uKߘ4�k�Y�,AQ2i��Эwq�.��.�[ "?�<R�;��V�n�q�<�U�r�Xl��7�v�Xմ�!��
��3V�י�7���7(�ɕs��8�3�����t�,��%���̪8�0[��$��{$���g'{rL���y����xI�/���0�cq�r�3�J{v���Y�{�Q����P]�<ڝ&��9w��/���5�;V���b����3�\�
'��L�j3�(1�z��y�����ط�a⏒v*u}kL�Z�?N�äXH��!A&�L��N�Iβ����a��;���M:�:==��J=�'`��`���pr��x�s��e��F����tu���0!��8>��B�.��/�� 6�F�b��/2�g7}}�ض� �M�������Z�֕�X0���.��_8�`�8�g�t��v���r���L�d*e��(���<�*�{�����"��&���)�F5�o�c��z��J�R_̵�j���q�8U�jA)��� �Lrp�s��y�j�o���ݏejR6�v#�M�}<��u�*5�u��Y]]��Lf��P1�m��v��ı�u�<���3��VEAZ�a@.��b�>R��;��T�ٲl*�^|��DER���x Œ�����v)��; M3�t�t�m*�^�}����/x����������~]�QQ�9�z����Q,��S_�Z�m����
X��a���> ��%������&��A^ׁW�!�T`��A��`�PHF���� ��M�6G ����Z�N��� �rg����8I�K%1zO�`�_��ٟ\�,���W��7Ym�P�a��� ��R�ciiM3��@l�H�u�J�5�����ƝN ҎU*S��]S���
EbR����:�x��A������zrT$�����������
���eW�̳I� $I"p���
�~~�� ;W�0,�z�'v=������D3J��8-���m���髬,-��S=��͏���{�4A���I6Ʊ��e�_��P�2�`{Q ��m���ŃDzn ��}qm1�ȎM !!f���W2��8ӟ�����'���/29q�\.JL۩���7���Qz� ?��ij��Ur�Q���E��@_u˲�R!�Zjө{D�!� A�3���ɕ�m��[�W�*����N��
+�-�����|�[����6Qn�,��-3ϋO���8o�C��NS?P\�8�<B�(Π@wj0đ7��8��++�f;h�EpKŎ�(�5���d��*��� q����P������E�ٵ|7xi�X� %^����:m�f.���� t��+��/a��̋!m�X ���#$���''� ��\H���{��^d����}y�G� ?�/��f��LG 6�J��g�}�c{^�V�O��6�����?UU��
4�+t�@$ˍ�j"��#��';!ۜ��q]�tlY�q���U6A�Ĺo[��%�]�*�7�����e˽�����d딃�>�]�0r���C���a�XVa�vFQD�+���L��-�M�_�sh���͗���|�������<��3wU��u�GE��8��̙3���?�;��O9v��;�H�LO޴ J�Pw'ƀ���::�]�o�LGa���p�.�����;uV�Z��,ى�d�����x���̯ip��Χ��$aWl��q��]I<US1�pD^j�����z��޵��T �*�-y|v�����180���H���t�y�
�ab��-I_k��u���|����v�����:�R�?Y�\\�>'r�r2ʆv��'����� ��(� �(�2h����(��(�0 �&I�4)�����+,\�G��84~�g��w"g�����X��"�c #�i�ŀ :ƀ,�ȲʓO~�����%o�X���+��7�2Rx���Ĩ���L�L�$E"_��݇�#���;��Q(�lٴ-�N�����~
��<W_��݋�������8 ��Ӕ���xa?���*�]Kח���kH�6���� �w"��s�K}��ÿ�_ x����eM6�A"%��,�(�F�X�l�Q.��hg�eᴋ�i��"q��6D D"�&}�� V'���E���ˡ�F�4�E��Y��w}j㵭�~��C{��ҕ%�VD�j@禇�������T�}h���׎�7� ��v��V7�� YV����39x��SW���7q�:��ej�I:p��(�d�0��Ƴ�ֻ�.$�ua�6��#'�3r���,,]�{U�ٓn6!P?�m�J��r��R;��n� ���
;$hKI�Z��\����B����i��p�=3�c�0���N( ���(��{ꏒ���םdIS��V��A$M���n&&���[��NL� #�M�R(Z�ݠ�i'��ζEȶ6Ӵ0��}��Z���)ط�8CC��={�W^y��}�k�+C�GE��8fgg�˿�&&N�o� l;w������e�ߝ" Z�U�J�bީ�&'�d�u����� IRY�8Q���_�� x� ��I��|��B�}��3�(���bW���:��,# ���p���ޖ'�J���m28~�n�T=^��O0�<O��*���"ad6��/�� #� r��:�i��4�$��e�S�hT|�O�*a ����I77%��uo�w���V��t�u�O[���Q�5�������V�› 1^SMu���z�[̞�ŭ� �o4�L�>B�\˜|S2��v:���e*����o����>"
#Jf/�b���&�cE���"�*���u\�@�i���.S�v�_�4ZK-tS��ca��"�t��CD����pB?��N+ �^���#_˓��h/v�� GV�P {)�*R�]C�b�]oq�t�njEO0���= F�t[mn^�����ā�2>r8qS�I��0E�=��t��k��;�1���h�I��fqfÌY������L��0���u�/��c��GV>��������nv?��鏧9����rv�<����U[t����E� ��;�/ �&9�{kw��^�V�X����&�ڝD�ɵ�p��j���˝O< ���ر/0<<A'h0�x���nr��
�^�������R�db9�KM䝓b���fɛn��%;�q�F߉ݨ�鳯36xӴ7426�7kZI>�,���
�\1����HN���BL���a�M�[�����y'l���I���P�~.˲J�dcy�z�M�6K�FQ�M#n_n�"���q�H�n#��8����F56A6�}��4���� A+q�Σ��}��ct:-fg��,����?�ɿ����x���^��Y�w9��h�[|��G|��'���`׮}w}�ܫ�ٝ"��
"靫p�� y3��;}%IB��_��%9$��H��J�H�Ҏi
C
�<�q�f�di_!�V����<��K`R��`�$&M�ү� 2r��)bʡ*��4gZ(��=�,���v��c�
Y���1M;��o'8�����!��.��$��  |�k��r��'����=O�ϗ7��a-��u��0K��(��h�+ya��U�C#$Uހߎc5���27�4� J�.F� Y�T�0t�j��3�D�o ��|����|x�5�����"�RH�X�{���g4o�1�#c<�}��evv�3ޥ�-Q>�#�c!+
��d���:oK���ԣ0���vzN�JW��rs�hb�-�X� V�q�:����v���p��pL��(��*�7ޟ�3��1K7�5z�S~��O2�7�$�Y�kF��2ӺHo��$>#QEI��ۅ,C�Lݼʭ�����= �gw�(Zs�c ��r��|v�]fa4w��N~�ё=���ȝ�� q C��1t���å맹��wY�P�5ߢu�g`lK6��t��9b�L�ҵ%��_FZ��G���}���SB�ul�@�P^'�,o ᧟��F2�����D�i����$Q��P����8 �������koq�WA$�( �i/�Y���
�{{D�����ɾ��� ;�So ����l���k�b�e��lى�j_
�c��<atfYv��n��}�z} Y�)�H��LH�/f ��qڙ���:���S%K��6)) ��h�7���<嘬������$X��Tl��?��}/�T�.촑�;X[����GQT\��ﻬ�.eŊ�A1U��:�K��n�.�Q(�9x� ._>���«���׾��ύD飢�sgϞ��?�%���8�8���A�m�X� <�AP���*��/+�EUu��ض�Ȑn�Nq��H,Se�ZK��(�\FC?�8
iQ�Ig5F(
i����|���� �O�2�2US7�X��O��zf�c���)iU��wqr�� ��ɜ m�H.W |���/������^`a �ۍ�R^�
���y>��5�,����O1<<�f�$I��\��Oqʲ��j���2Ci�@�D/f�$��l;����3��G^�[��]w>�A sT]E�t��Kwޥ�g�C_a��I|�M:Z>��f&j�|��8�Ej�2���҇-
�&w��Z��hPw��.��3?�{���cOS*������yS}~�A�j�s9���Q�ݭ�
}a���
F`�BEU6xlu��n���_�etSO�V��d���^!gȭX�|�㇞�T.�C�D�K5�}��˿���Yf���w8sC�.�� �N�+�>�Թ_pc�<�b11s��HȨ�FO�=�Eeqa��?{�Ks���S�7U���?`�����r�woMS�����3y����:5K�� ��=�g7�b��"a8K���eSM�ˣ��2:��J��.��4�|ّ�3�D�q%6��% �ܭ���d#��EV[��� I"s�5M뾕���jZ&Vn���!dY�s��t�e�sp�白8�ҙ��>bG�4��,�(�� j�&�E��]�(�P q��9�^���e��=���}�V�1i��(
�N����0'Դ��b
��4q�.�R�b���(Ķ�[v�S�"�u�����߀�4c��t�Q�#-��4�M��ؕ_;DS&=w6�6���Z�'bU�Q��ɺ$�$\����;fb[T��^�i6W����=Y��~��0 ���0L
 Ӵ��L�|�eZ�E��O��#G�{���Ŵ�QQ�9� x����������}��߳FNb����DJr�Y��!]���H�C+��� Q��S�m��Q,�*ׅ,�Ȇ I3�*[k&d~���Ea$�7��%y�xXg�u�G^[��[%k�:M�R�>#odΡ)AY�UO��]�I��2��[�)�|;_$|Z�zB��3 l�F�j5D'ײ7��5M�4s ޾�<���q:DaD��0J���[�O��<�nbۅl���w)|HUž����ҭST/�ZJ�2���P�I\P�i{Ȋ�a:�Q�</@�iȒ�� �fdt��>�{<v�%�YYYD� t�IJr��_w�
����\���+���]��h/�G.zQ�0b���"��
���7\��a�oL0rl��peG���Bє�04��:r1k��D�*%����E�ȀR�fiTǪ覎Q06�?��)$h�5�) �G8r�yw%Xx5�m~��j�UJV��}�H�>v�NL�;�f��];���`՞��?G�Y��髼}�Ğ�&Y��<G<�aX\��1���X{c|i���y���79x�ql;�c9�4���K �����ϓ����=�a�L�9��8?O�̟_�6�˱�/rt�s��� �1��$�_��WI
U IJɶ�:��'�$ � �w�}m(���8—�R��ed�WrL=��x9�۸^������'r��U�Fn���s3Ԟ�����@>;_U]ͼ^GH��(�#3BV%���� L�&���� A�][a���ɸH�����*���P�d�ԣ�ժ�]*���$�M���.�i������ ���a�U�RxMzNݾ���J�(6��8SwK'=i x\[��}�O���N�(���gA����U;�R�����F�B�(p���&Sb��iY�E�� �r�v��][��������[oS�T�T*t�������a���|�ѧLL���0 s�c�u
$)�NS�4� ����Y���k�wҏ�p��A��%Ex��DJVt%CY��Y���mt�$#J���8 )�<�AJw�,ES�L�n��3 �*=�Oi�Li��s+&g���$I��\�q:��zx��a�e9) �L~3�Tg[(G�����ӯ��1�`���*��Y9�tEBBf|�@���B#���`�8]�ڷ�+� �T�$?p�R��76��P���P�~��t��#o��t�O�p�<�d�q&�=����D�Hfaa���a,��4-ڭ&Wo��|0���~�ίҺ�Q� ��o")1�V%'���(K�.��R(�*��;�+��]C16L/2e���n5�_��˚ �GiF��و��' <��&��
��A6�zϊ�D�)�b"?��y�����/o��8�cO����� ���IǠj*=�!����ʅ3�,^ea��|im�[�,���M>9�& \����%*�e$Y�[�rc�՛u���r��Ox���° F���6zQ���a��N>�aX�O�O��D�uT���)����ǩ��So. ����v��](��IgZF���$�0�vS,VM�5�U���K���C N�j<���
�`M�7�(ݞޭXX�<�R��! (B���o���1r���Uf;�p�q���:��<D�Xφ�UV�G���L�G1'k���_}�vL�f���^��[h��ϕ����ٷy��ˌ�L�{N
�|��"�d���NxH>_ʄR�f�."IR�Q��-����9\���i��c��Y��x�:2�"��99fa�����)S*�g��z�A19�д�0�0��l����:x��mvDN=Z�:�BE(���
�b�� �a$�� K�)������s(��i�ٵk?/��=�������x�'�y��j<*
>G�1�n������Z�����^�4�ut�D�u$����0 ���V�F�t:-����S������^����hmߵLDI��Fw�_Q�����R�r��'�Q��t���b(��M
)M�%:x��������� 3ܺ�<��jIk#I�0
��V�D�Zu�0����|i�U�����S��$��6�C�a%�3mE��=n-\fj�<q���eϋ{Y���ܩ��,�0>�� 2y�v� ����b��y.���nP�=�j���,�UAz�$�(�pZ�nR��-��Y41 �_�֫��
O�
�U$ ��:��cpp�n��<�,\�����1�l��t<�ò:�ޯO �2cO�S.�z�Ig)byq?פ�Ǣw���#���g�S�ob�Mz'z�Us(�SB��T�>���QLuW ���:Bi+��5֤u5K�:Z�ܼ�{pl ]'��p�#��� ��Q�P�/�*�&�ö�^ �\����M�_�@��fn�&�fI�H�6&(� W������(��Q.b���B�Tr���}�N���pf����ט~g{e��?�]N�x˴� ��>�_�ȯ�pM�����:�{L�5� ۈ��[
�[[��$Vq�N�����8�d=���S��$�~ʐ��:?��5�|�U~���@�%4-��ܫ<v�%&'s��ǜ��!#�������B_a�%�x��PuQ~@y�����(Js��\��
�~�S>��6c���Lݺĕ��� !K�����猌���� q�B����4+XV���im RU-�[�R�[�oE���J]�ׇ�븮�8��� ��i�l�d��^�&�a��a�'!e*�����qĄ8�+P� l:GS��:w������sp;�����i���1�\ƭ�v[t:m��ۑ�y�#�UQbV�}k��k��(�b���y����������o144����C=��]�GE��(� �����pa�C����=Gv|A B��@,�ۖ�,+��s|��k\�?�ٽ����Љ������� ����baY"�[;��ӲW$!��"�&��p ����9�?澜�C?D��-I��������P��b�F��"��\]�Ԭ�I�R�u;t��D��J�
�_ ���n2>r�'���JXEŔ�~�͋=�!�\�N���h����t[���O����(7�:��z���UsH�;��v���ҲB!%����5C��lѾ�S�s��(�"�R���
x���v�ze�k��H.v�P������7wE!={���J�\aej��w�9����,^�ɭRΡ[:��Zl ����+7W��KxS��S��0�U�ވ�` �S��ƛ��4�ٹ��R/a��/W� �����N
���+!e�̇X=:�N}��.04�Ow�VE�� ����02,Ⱦ���v���Ӣ4�V��2S�M� fif��~��R/O=�"�<�uJ��I��KۻӪԼR��Flz�AT����Ϲ�P��^�/.�Z��$e2�[�)A���hb�W�O?��L����Ϸ���"�d�����B��Uf�6��(�z3t�g�?�Hmo�\�FA&��t/�?h��]��n��C�U�"� ��&��|ˢ�O�vWPVr�:���o����"�9$I@}�_?�m)�j �`�KU5,+O��J�x�-a9����V��WP���@z���.��EQ�cp�B��� dPm[� 3(��G�_' F�&��2����s��_�I�����,��
��?��=�Q*U)���� �id07A��|]FQ�N1h�������g�6ð�,;+>u�����&���-T)5���Qn(ַ3�3M;9�=L�```�=�2��� �������흝���ƣ��sQ1;;�_��_������i�X�T��ܤx�=84'�jKh� ���"�ō��\i�O�o�����Բx[��D�"��m��v1q������)�3�Φ ��JY7[JH��|�|�̤,ŁwV;��(�{~& y/�������O΢,��E�zG1�a1�1u�|�D��G�P� A��jeY���d�T B<�lZ��<��|��Ϙ������mV�Wh^q(VGq�.�|)�����FQ����]Ŝ���#� �Щ���a�NQ�c����,eS��Ȱ�$Ko�;�%ǁ�1��*A�!�⁠�z6�/�kܘ���k�25I�4mB7Ī��~i��g$��|�����'���g�]8IAFH(��G{���@c�ɵ�O�]�e�zS��6ڬ��p��O�.�R��)���Ӈ��ܺ6G��&?��*�.x�O�n-�{��QBtT ��R���$�2�Lc�ET�7��T1���'�T 5I@TU� �XA�����j?HH�.�2q�թUVoֹ��u��Գ:�}���>w�L�4I�λ���i���R�Y����� �(�$mtN��%��B)Ml�H��:u$9#F�J8��A��eX!�_/� ��+Uʕ*�N������t�ٷ/�2u���,^^�o����vV:b��71
�`-q�E���'��l����B�C�՘��_�T�mK4TǑ׹��
��T\)�a�Ħ�m'Ӡ�)Y���yNB(�3�T �q:�<�����h����"����惏^%�b>;�����>D�\"r�t��/Q��шG}z�O.;��]!Wʣ�&�C
e�v�Zu����m ��n'���MF��m�)T�����uMӱ,�fs%��\x�E��{�t$L�-T���f]7h���Ϛf������7y���x�������[<*
>'�n��կ� N�x������I��$IE��C��8\��)�v�R�ʹ�7�=���8��"�]�L �>�t��ZY�,�h��@IRJ6��r�vS�����>)R-�� h-�P!1�v��0^��K�����H�f��2��2�*́:��*q �n���M��|����31v�޾�Lo�\l IkJ@�--n�6�ӡX�26��+7?�ʅ�y��\�'��
_x�{��類/'�n֩������S�1�������P����Q{��� �a ���ȂP��2�X�6Pt!{�Y�0��"��C�?5N��3�\$�]~��`�Kg�c�:��ri-��$�b�9.Q3u�:�+]��:�����
����x��Ks�IwΣu�aٮӞ����'�ɉ#Xf�N�͵��tNw��<E��}��4v��r}��n?œ1}G+Ȳ����4+�c��sU��o
���J�nqӭ;������<����k9����.�f ?�Qeq�ؼ~q �n��Khf���N��u�?���O�3{jEU��u�ǟ�}}�wUb�S|���84�%��ΪA��y�|+���}����s�D4���EQ38J�a�OI�rr]��r� u{� �G��ܤ��Y�&S*2s�w��� ���������l��7�8�>�7� 6G1N��L�@h����f�̳|����79�[�Q5�Ѝ��EJc��JUY"���h�A���q,䳻]��|~a����E��r�>0M�8μ�n{S d�ǂ �EQ�"�h�����t��<�J/�ae�1AR*�q��E~u��j���+乩�F$���1�Չ2�=ez&'��c��,���s��QU��e��m$W�� p|�<�ܷ2���&|\���� h��J�4+H��Ib�� $k#�n�f�ok�H����Ĩ� �r�A�R8�(���22����:�.�����}��?�g����K�znգ����������2�=��H� v�,j�X�Dݢ�8���$I�#�Z��̻��՛��)�_�g�1r5�(�C�/m\�f$f]�g�2�l+���u<4�ޱ��$eJB�"�(�e!�i�q���F5��WS�59����u$b)�w���G9��-�8���Mg����� >������U���]ƴD=��7vA�+�n7�v[D�0�I])���s����������j��I{�ڋ��SO~%sqM u�0" ���k]���,�r��?��M$&=�IDAT���_�6^�6^�c -� dM�,'�0�Cn��b[ψ��p��똭c����`q��0 8w�#.M}D<�p�ɕrXe��k˜�����]�vs��9s �ȥh�v ��ڏ1g�]�c��9.��:�b����,R.����cl�~�(��X��=��*��Ξ6���ɍ��|v� ��ivM�%_)�Zn�4������'�C|[��=�yx�ggЃ<#���z�oY��]�K��q�y�je@�sJ�$x�4
�2�|�n��FJ��:>�����
G{^景U�e���Qv�$��?A�~L���A�(��w
�y��r�.�N�J����i�g�kE�`\�\�6��xݤ!̺���$-UUOT�� �Za���u��EP,�9q�Eb)��ȉ�/Ӻ1íS��~fI������6܃cb&^�����?���?:���aV�V���-z� ��� ��~��gҡ��Q.��(J��v���a�W�5 �x��Wx����6 ��v���ڭM����u�쵭�*�\�B��͋��HZ�e ��p��>��T�8��ϑﵱky
=y|7`��v-�]� ߗ�<���K�?)�[:�m�6S��//�џ��oLE_��oQ*U��C���y�D:��^J��.'�Aa|��4G��ZX�d����٨OU5��BF�Z�^��~��w?���&###\�������A�����k�`i��w��Ev�y)VtM~�F��� y�Fc��aY~Fܲ��W��$���h������ ��w0��x�ۇ�Չ*�)g�� �ʬY����� <� 5�� �!��/�����X��m1±�i9�U1掣8#0�
6a�"1�#mI ES�zĠk:��BvL.\���ű<Ȱ��Af?8���*���Zfuui]�R�Y���BBvՍ"�$���i6V贛8�]��9��<��or���Ȓ�=p����ʓ�j��j<������)�?a��2Ł���45J�%��Es�Ik�%����0�&���"1���,wY8�̮�Iv��#��o��I׳�i�j5(�Σ엱�6��"�,s鵫,��b��c���o�7� ��� -G_��ZA��./1f
��a�(}��P�$��aa�6��$D\ð0M���q�.���•�X�{~s�]�b�l@t<u[ϦQJ�7����}P�>1��з�����\�O}Y�7/p~�m�>�3��K�=F�����{v��4��]Z�az�*��k0�8����&�����i'���O����EQ�;&";�TC~;>���a�\ I��ڐ$���rL %�{%��~�[#@�f]� �:�V���d�ǩ����wڮr���O~����q:].μύ�N�Z����&�5Y��5h]����SM�(
V����S�ڽ�|���� �����i�jՑ$�%��$e�n����W��pk�c��6w)D(�����I�TU5VW�h����%zz��&�p�o�Za
)�oӷ��ީ�qy�Cv}���ž�!xH�"a�l�jN�&�Y����`)��%NE����㴗Z\}��?y�09y� �� ���Tg���(��7�<�n�H
��z( �.$�.�"��
[.W@׍��5����Z �U���x景��?��������?%�{��ſk�(��������;|�|�L��ޠO��y�:���~�aJS|)��,6�{ˎV���A��G�λ����dzV�m�0Q �� /i�"$�qX �H�aN���")�;3KUW�IR�]]�H��*en��a�*�q�fjbY2�Kr:*W"�8�lT�B�s��SoOc��o�� ��+�*�2������˧0�.\~��W�x��o3:�'�2H�2��[d�Y'���>��������/i���V�9��)
��mG%SFQ���a���?�•S,���x��?����*��v��P 4�J���ZS�T)�3Ӳtrx1ZIf�� ��
�*p�b�� %�԰�µ������AQ/d�� �,N��^�~����_�w����s>��:Z~�v�A_�(}�]|��w�`�-~�G��\r�<�b5��L_E��V�6}���c���ɘ�G���K��˒Y��.{�Ȉ>�@�Uq�<�aI��Ur�A�Fc��b���ZVhE��ce����43�4�ξ��_� &F�0<<ɞ=GX^���nPt��i9L}t���� ��O���F��ϗ2xC�e���)�+
R�H�z��CR��ЉR�I�
��}��e ��r �dj@��n��� l�H�ڷN����\¶K�n�J��r��ȍ�%�ԉ���d�ѓ#,O���~��E�7�b�a?���s���v��$A���x�&��\��I��oP�$��ch6WY^\`��,�zk�3B\sDQ��3���ۥ�X�u;�\ �.$I/ı��i�y����z(�( >��\\y�����~f<�pQ2�Tmo= 1�"BW������V'@34����B����3�{�\�����L�ն�,�N13w������~#;S�3��&�E{��MZ|-.N��̓ϗ2��Tn�~#�?ፈg�ɓ/��x���������Ç���0�~ţ���<fffx���v%�{���x3��= � ���]tl��%����=�h��b��w��y��j}���� ��4\�$7=�oǖ*Q���8K�ү8J(�����Ґ�R�M�s��.k7��E�X��'�Ћw��|hݾ��?s���M�AV@]�O�d�(�­�f�4�eN_��W>��Þ�c(�F_m�N��Ҳ���1]��pe�4Ã�Ex�n� ��sUU�$!����eZ�U��g|l?�R/�v39�6��M\(��ݲ��{�_�Im_��G�"k2��"���\i�pe�(��ur��|f��>��eD�(�Y0�xi�37�p��'��}]72s�4y2 �(
Y^���<4��թUN��)���K���;���,�f��2�j1;w�[3W(ʌ ����)K�-}��7M�e��zc�f� �n��C�Tk�^<�� ���>8�(Q�
���!(x�Wpm'�s\&�o��j=���q����s��)ڹynt>���ܺx���E�M3�oxm��R2�y���db��*g&yQ�i�CH��:����;0�� p��� �2 �߾�S��5Ln�I�ȲA�g���,'�ƭ�C�J����M���PӲr�v���X��e��SDqH����b�`���]���-��v�%�9��iL>AO� ��E1�#d[=�͔����� ?��<q�e��h�t�-k�����-z�Ti�v[� �N���;��b�P.�f��۞�E�Zu�0̔zRA� 𙚺D#�g������^�M׉��0��\*Sx��}�3G8��H�De�B��&ߟc��
+�o����L�*i�K}�}m>�q�*��s��b�,�2�i�Ȕ,=����$*YdE�Ð�M�q�O aӴٵ��~�?���188�kG:~T�G����?��wO����b��c躶m�e�ߋ.�Fɨ�ܱ��V��c:��E� ʕ4M�UU�1Qr�(XBB�T��/�:u5�Ӥ_��g�sf��Q8� �Q��f,�W���!}߶�_����e��� �v���_�����F��O�}�����0x�ɯ�w���_S�������]�ă.�.H�^N��\�n���L�a�,������t����PU �La۝�k�0� șz)LF �,��K�_⣿�Y�)���V(�i-�h.4��X;YBϋ���ԅ�R���%n޼���x�0���q K�`Eh���h���:ݳ������!��3F�A���'�dai��>���~�P�C�(�����ϗ�i��a�v��P$ EV�?Hm��p�
79 � z(�jSFk��}���t��hEu�oaX���='̊��$�(v�܎���3ɕl��Ig����Vgə�ᒀ"Q�m�U��;Ʈ�}(�L�$�)q�J����@$�⺚ dYITߴZ�0 ��衒#s�| ��H�'� )��ת�%�;>A��
A��曰V%� ����R���\��\EQ4�en-^d��4�o�“5F��08���Yfb� �
)4ֲr躎ﻙνp֕7\��Wխϛ �YZ���]��;������ᛪ�XV�N�I��B�$��R����7��x��JJ��-O47��'����1IJ������~�3b��'���0lcM�/^�0�æ�6�OO��13g�:=E}v)� �%�gf�H�_en��=Éo���ûC�Rhg�L���ö�XV������^�͘8N�0N2ʼnPU����<��o��k�K/�H�VC��W����(�5�8��q�?���,.v�O���@��G�g=)j Bt�%t��lD:8����A܅:������w��K�DQp��B�v3\_(�QL���i�`8$�����$i#d)�]Fb]� ���ź�o I�4�|��{�F��E�˱�v�>�(\8��yϞ�&�oX|z�,��~}�r��C��"�/%zҭ�L��\*��4�(�{v�Ԥ��D����^��/r�o��ky�|o�[��2��̚����cLr�0b�rX���]���
��J}�Ω�<���E� ��/���4�.d#g�u�v�,���/q�+�{l?�#�\=}��w����{�+=�w�np��Ԫ��|�3���ʛ�� nݼB_�'���� Eˮ����0��Zeez��v϶�Q�a���
�E1��zЩ�$I�E�B���������j��o�?�Lȕ�&�i�f� �S�Nҭ/cWl��b�����3a�8��=7Kg����aaZ�:=�{�| ���O&Dɵ/?N�h����A�����v�����>�� N�r����:Y��4�RM %qO�n�6�4=3�Z�*��]p�N�|����aϞ#�@��5�d�^��`�431Ϋ����i�BH���n7�刎�`qyô��K �c3�]׍d����C�6��C�DZ�N�15+̄��E���a�E�J�^G�%L�DJ�Q�i-5ꔒg}*���D3
#��'�,�5 �����9���9�)8 ��r��d������/�����j��/�w-R�c���y���ϗ3 ��� �ؑ1�v��r�|�M��L� OP,Q�J��,�w�}��������r�С�v-�/���_���?��?�qT����R� <�ѱx����`��E]�ͅ �X]]"|��Ӊ븧���P)޷�b���qG>�L+�"
�F���R�)�[��h��tY� �����T� �|��9/�֊&$DSR���!-2��u����E�h�������$�����k�ee�ֲ�%Z `0��rg���]�I#iG���wv����hƳ�����n�n���Y#�@7Zk�U]�*++�
�����#"3�*3#g,���UfF�����~�+v�%���g?e� ���9q�A,�N��\R)mSU����Rf�_�u<>��:��a��;hZ�p�^v����<���#�y�E����}}���֜��/yq���y�̗�X9~�gBy(Z���9u� �W�x�;0�����*-�u{������>�%�2�,�j��3q�'�?���i2�ip�ڻ��o�\��'��tK'$�oz8�&��2�����Lݹ̅�o��gy���lߓ,-���ŗ1�c��1���� ����uU%�#���n ;+@�����_�����ў3���&Nε�v�F7��i���d�z�N�] ���U<&&c���rm�:L�`�r��P-�����Q�Y���U��_[�Z��ih�& �-��8w�P+��*^ã2Wa��*��<��� ����j�Q��:w��e���� ΅�4�뾕!9d�a>)]�7%���X�0�Z]M1�rHX�i
�����O� ��0�4Q��Ɩ�Q�P+u�ж٭Ҵ$�R��F�i�� ��M����|���8�=�O=�M������X�T�F���f'�M�42�kkN���B�� ��d�5⍷~œs�ѧ����^� ��ڊ�q�n��>������K
��L)������Ss��(����dQu�޽�,}x����g���O�w�(C��;��'O�*A�yH�%����� q -+C�ܻc^��W�;dBoY��<�\��&e�L��/~�w��?��8z��gI�g�{���ŋy��<���_�+l+C,P�ƔJ5�#)�p%�V�XY����U>���� +�Y�B�Q�X V�sn��� J{
]�&�����٪�Kgd����r� ?��V�2y���(�|BQE�f���ᛚ�%����m�'E��J�����(y]S��$HH��ۋ���8�Dz��� �3�?p���^�PT,K�4-�{#����*�v�5w���B��t���w�\�g��[�.39q�NP*���%o�H���@����O12�O�g*��F�L�Wf��s��7��{�G���<�����k�5{YZ�XnS��q��9:� ��'��S @e���� ��Y��U�_�c���Eq�����,����k�;�C������6������.Ӭչ:�.����,^\f�*�'9{�)F��%�=k�ˆ�oj�3s7��z� ���iEU�m�@�n��nX�>��o��7__��Xm��Ur��o/���yOW'����� 3���}RoTQP��+��F^�H���9���\~�t Bŧ�����aʣ��J�eUI��/͓ ��>�a��n�8�f�����j~�v��b�j?�~��7sCQu�dh�$�v�GQ���ny-%����ԾMM�Sզ�m��%!_��"� $ ���$+㚦�N�����PɩVWRk>��v�&��I;�r����'�d�Rp�%����_��� ϔF� ��dr�s�w���FU��Ɠ�k�ilP|�P"�s�‚H��Z�nI��K���7?�1�&�0 �H�����c��j��H#M�6R�q���/�M�EJ���o��9�C�O�T��؉1�e���U��a�
3�>��k�{���ѣ�=�8���0 =�8N�z�Jd2����u@ �$,fgo�����(
? /�! �B!GZD���/MD�wF���=y�Q^}�G��·9�&=�P�7�/��,)��p4�M����i%>Ko�`Wn�xk�N���G<��snv�7�y/[#3�S--�<p���!�,���P�L��+eQ��裡ln��w� %��=6�(
h�5�Ԅ� �r"��(����i�f]�BVm$�IQZ$S��0�&���I��<�F�|Z��y�Oޣ~!�z���� �g�6���%�Or��3��������Sb�����I�B���;���Q�����\�0 AhS�ޞ!����T����k-J�����%��RdTU�T��s}fnβ:��a� a��,�*��PZ�Cϔi.�U���8|�,7n^���ul3���e�W�7Ja$O�/�x ��9?�;�y��!�'˔G3 F3t>y�#^x��Dn�R8���1f.��Y�9z�q<� ����麙b���<H��]��ܛ�?>L�?�J��6n�lw�"�oV���?�(��E��M�`o�GdW@&����0�m�9��NV����vhK
�{�XEg��)ډ�n���.vЙ(iA"��s��S��LM]��X������r��QLc�e�t�C�g�,�%g�H����ꢋ �U>݌�m���a*>��i�KU5���$��&�i�~����|.%��t�L�"��u���0�] Sw�iZ��f��2���04C�b1���F5M�9��PA��r�q �|9#�4-�8����O�u���qF��U�ި�6�XvM�i6���K�VA�u��P!˙˕��v�& 8�+`Y��;}�Os��35u�w�{��.��x���������tT���Z�)��-���b��&�r^�W��L!��@�1V�b��q��clr}Y�{-Vn��|y��oͰ��G�=��Cg�J8�:A��T!j�1s�H��(�07�Kt�y���0�D�H�H��R��(%����A�R��/|�����������'Ob���$����YR����<�O?���_~��� �9��ݑ�EX�{�Gˊ"3p��k�,���N����192L��q�>Ly����x����I)�K$�$P����1�c��B��@��0t��QI:��DQ$\������8DAD@��,�ы��-��`���T<7&j��ED �!P����0�k�];�@�X�> Q �l����^��ŹY���*��^���R��L�P�k_��=v���2==�[�H��fn�Q��G�k �5���(��(�P�a�LJS����K>�!?�����ܺ�)K�;�����\��Um��1�3�1��yd��S���&_*Ģ��{>9����]��� �%��ÃL�Ͱ6]E 5.��%�Z���8v�Az{�c$]������5]��3��]�أPTp�n����;���7���$��4IN� ����WG/�qU�4SfOV�J��K���O�����! �4���fx�����y��s���=�,/0d^���+83� �.tnO�4�� >}�Q��t|� � Ch������z�e��8�QRy�MQ°u�55�P��*���Q�k/~V;�׎��ɵ�;�;-��`y��x�ҵ�y����gn "d�D�0�Àf��������_7Q��S��v���.� �b6 �u!�9������X����>��e�+�?��g���<]!?��C>�J� d��9��R>I��շA�YK ,+����~�g�v�/�} ��� ��H�O��(�:�6�0���<
#_ ��} }���1v��C����g��(��.T!R;1ƞS{X�^��7���*W�[��P�$�|�ޞ!z{����f����-����V8��J���F?�Y���&z� IԎ�%Q�S�>Nj/��O>�̛o��O<�YR����SSS����%�� 'N<B_�p*���h)!���>��2h1ss��p�m��?%V��?<Bi���"�EO�W{%���a*���Ír�;<e��w��uߡ(��/�8�l�`�)f0,#�L��x�-��0q�.��t]g�䇲<����U��{)iV����~� �,q��~���=������h�J._d�g���qk.Q
yZ;�����*���XV�'�� ���o&-ୟ.I�I��U$�(��] ���7����Da,�IPx���\��E��+���c,|��ҍU�bH� y�?�*Y��ݣT�7��78x�8�P+o�IfF�5\��.*LOM�*UJ����� �d��9*S5�w��e�䣿���$�YkHi�f������יY����(�^�O����U��f��r�0ij#�oo�*�\�n�[�7�z�İzs o�b��D�x{n�L�0��r�<� �SLO�Om�������8���D]��{`�l.��;�0J]v�sM]�|���n�q%�� P��mIF����� l�YzeHhIgG��y?��~�eW�e�����f��(*�cؙss�mYEU �Y�/z� ��4��]71 = 5E[��m>���ӤP(oxMӤ{���4�g��ee�u�=#G�r�]��Y��?~�atp������[L�9�a� g���jbҥ�<�-��abY7�_��+/a�����EG�!�ZRrp܂ڦ�C��v�(���>Q�N�����P(�[BC��$!p�.�a�-Q�E��<��� SȾ�>
_/0{p����ŷ>!�i?G�er�8�iR,��3�UU�&��I�M�����$F�`ulo3�[��T�W��,��ޥP�dl�y�o��K�����N��\.�J'�%��� .��>������ቴB��h�n�l�u������C�sX�/P�9�ϡ���*X�2AǶ�~��gb̜ٵ҉t�m�Y��|d�'U~�'���� X^U� ���fjh�x(�~Hm�F�Zw&D]�����˔��4��Tgj�>W' ��MϹ,w޿�w��-~�[�;����i�� s���y \���}#�8x������YYY@׍��e�0�!��0uz{��B������4\J�-(`l��8��2f�d�C{q*��3��"�ܹL�X�4X�P3��U� 7n3=4My�L�X/չ*���adp���*u����t;O�'O��edb����~H}�����]>��:�P*�S�� +����x^�(��f��έ�ˬ3 �ʷA���ና��KA���b���ϥ�]ǩ�i��k�T�,-�&���̍��QG��,�y� �&�:�a��Y����{�/���=p~�J��.*�J�D��M#��h����i�ud� �Y����z}�;wn&���)Xb��9�$c��w��R��J����
~�,�}O���u���AA8N��h6W�: V�f�ޫ��]Eq���|Z���r�Q�}{�0=� KͲ�2O=[a~�2Z���7�7{�;}�G�
����l�`��'�h�����������^&�5�Vfp�
{ύ&]j%�'������veR`d��P�;"q33f:��)�fj��m�%���G1v�n�0s&��2��:(B&�w}�}y���S �a�������7ޡRY��s_��o�E&��(����������[��&=��5/�=U��`۹ �(�s�>ǝ;�x�?��W_�駟"����}��%��w�y������?���Q(�P���K�tp�f���N��ŗ�v.������7t���y3M6�1�)�eբۡ�
�m�ʱ��,u� @�F�6��;��FaD���{&*ɩ�t����}i7����� ��������4+M�8��ZxM���E�=E�~�(���\H[⪪�z����>rzӲ r�@�0lr�Ҏ�� p�2�V6c6��q�P�S_;M�'G�����q��K����~D�D/w>��4^�8X�(�~���KxA�Α�륑�e��a�8�?~�K?�B}�a<w�˟~���u��<�ѻ��R𛾨��
�� ��2�������ʑ����o���� �'����%,+C�Y��2�FU�c�F+���yP�����¨� FTe�d7�M��h�:^�Ç�l �ny�b���0 ���AnN�,]�c���T��m�����Ku�|��q���� �MqȞ��hTҠ��!�&�T[g )�4T������8�81ɲQU����6��2I|{��$��(@L�ђ n���n�V]�>_�QU�6�]KZ��$��� �(�����4 C��d����� �J8�<���hM( ����;�8�0�\|�"����7�w��8�i,5��5��|��:��ţ�<�(���M��0L2�lB���ϗ�u�4���F���:��/1�v c@a��p˧���F��,���_$��#�5�ǰ�.A ���5�t-�Hʛ>n�EA�.٢��v�$��w|+ ����3��d1l�}��e��T�\y�:�*���d``�@��ӠV[�^�����N��[������i"�Z�ZCU���ܼy�o�;�9s泤������s���[��{������G��t!�f�*h���ܾu�S�pk�S��1���LP+agmTb����"p��M�و�Ӗf�CA,��w�F���Vp�ڧ�DMӵM;�F�`���(���yk���˄Q��7�O��y��bg�V��t�{XZ���#����R% U�8��,KhK[�M�����P�,'��'?-N���l 9�G�2�p����!չ��C�
��k�^���V���7��L)�W ��#?�c����E[��<���\``y%��~柯Ut�����_�"3����F�o�PJ*m��`��LP)p�,^�Λ�����"�����*?�/��K���0֤<�#��̿�EUҖ��$ؚ�&Ż1TU<�X�IL�e�9bW�2[K_sj7_���[.�̇8s�I������I�W!e�����<Ͻ�qY;`�k�K`�&�\1��� �!NaHR�U��z���B�=H�&�u�����0�2ӊ����IK�~5%��u�{�ey���X(?u?%ls�{%!m��:D�AF���0L=���8M,+�3n����$e[VM5�Wjܾu�/NQ���ﱽ|z?^ӣr�ʕg�����1u� �wx�/b۶�&�Ѩ�l��d�X��mg���ip���,�oa�) �dY�Ֆ�+D\]t|W@���M�kQ�A"�yr���l { �� 9ٜ�Aj�#�8��a�-�MP?��B�$�ٞ�u�p`�)ڧ��ZhP(��v褠A�~!��&\$q?i��0�={��_�O�����/�—��Ezzz��˿��YR���x��7���K��Nr���)n���Y�WSayy�[�/ӌ�\^~����OV���0��ْxP�Ą۬�w+A�n'� �p7
M�=��DA�j��>�N���J��[ܧb_��#�{
\�*FnH~$z���5��.����|�1����ee�d2�ѓ�4�rFF�� y� ��$������%I�z� ���S|����?�7����}��C�:��*��g���s�� f'�죱X��z�:U�+6�b7��{����l
���S,�!��� ���w����AJ�%JC����_�6)��(���~s�+W^ea�:So|��d�9"B^|���<�C�`���{z�|����8��DC(]I'�.�>q ő���n^��o��
����� S��qsUtIT]��Tg�b���(��x�r��r�RyD���F@JW����"�&ƈ�u����}>Ne=�IM�Z����[���h�]����:��Մ`k �w�g������u���B6[��y��!���0�V�ՙ�m�h�SYh鍰��"�[u�0����Mj�U�_���1s�����$=c= `�3{ȍ/���,o\��l�#���*I�'J�*�K���N�l.�$t:��V��/?š'�ǂ�Xi�͵��(��^��1X�� ��� MHc7T��Y����yMUS1�&�it<�X�Ӂ+�ކm�\�>�� pj�ub�D��%C�'&zQGroV[�����6���y4u��0M�����<��ؿ����{��3&&�x���ve>�M�ϒ�_��1�Z�����a��~��:��-.� �;� ���y��c�Q����a��$�b��hGs�o�%>��c� �!�/Q��(� �t1R��0n��l����t���^�'�:^k֚��JXy����G� ����;*mRQ����vr�H�>�䟾#�l�=�`d�qvVF��J�*�=�U
�^~��o���^�S���˔' ��A���Cs��[�(����q��A�T�/,`�YL�&�x�.07w��7�Zu�e�:C�J��`91˗*���R.t��=$ �4P�|�dvhou�w~��L���8ž"�ވC���Ё����5N���n�Xy��0L��nG� ��5�ξ���~��G���������'NCG� 4�Y��D��ˉ�16��j%�c�nu,���Z�7Z�� ��}�׹RR�8�)G�l6�~N&f�*XR�Qz�H����ӽz�($�%�TSjO.��{�s��Y�8N3%o�s��&��8�n�SS1�k�������u]��Х���4����7���-
}�}������~�/M����W��=�!c�88[V&�����x뽟b�M�{��� �s��k|��ej�Ubb� �efVx ���v �PQ��XUUܺ��1R(Q������������H��@��6��D�(p�geB�)g�-�f�I}�N�?�ދ11Kח��O/rp�,��c���I�fP�,�Υ�Db.)iA׻��-r{�
Sw.���DOq��?�-L�N�o������?���'�~�]�;N�T��{���gI����<��_~� .s��S�?�Dj�nVE���)
Lݾ������x��^? ۛ�.����u�()�Ѱ ��=�S��MUU�]P1RT�Ќ#I�V������,�󥄬l$fRqK�2%�)��n8U$,�����"��f�����qN�~�k�}��{젒MS$�U����~$H2���0��!a12:ɯ}�?�T��ҵ� T�,S����B\W���~���/P(Q-1�;̍;�Pk�`�,�0��Wo��*Wo�K�L�&5{Y�Z�\ĝ��X9B�e�\/g~���Ʊs���ae-&�M�0rf��Of��4ȍ��ϝ�4Z�vBI�;k��p��]��V�ږ�нFE��K�ga��ۼ���y�o��7�����F�l����̍� ��E3�s��۷��c���[ڶ ��+Oy��I��.�i���~��ݹ�~��b�6��NU���+ΓPpi}�q��H�T�Ij��<K�$��68��d�O>_Jp�;7��SR������ K�]5�����2HS���#�`pp���u�nqc�#2���W����k���(���e��97���ޢZ[�Ѩa�&��C��V�+\��>o\�!��:�3�F���F8��,/��ޅ�3��4��;=֒#N֍� �B:W�D�Ь4i�6�/� ���������_��Q�5�� ���YE0Y��'
w�r&%g�|ǧ2[�.����4+ �,�܎����==���.�(*�e'
S-[���狉��v>��������+?� �L������c~��(044���7�|���1���ou5�㳤�W|8�÷��z{�s���^��7����͡����/s��ǿp�Lo���U�0�R��dFؚ��������\`�����E��w��-r����y)�n`��Yk�XjxA*��~����:/���TE8׮4�̜ep�Y.�r���۬V����×���LL� ��~�����2�f� ��;*���
w�&��E&
�*'8�4�i'���LN�Ѭ���?���wp����X��v������==��,�#��� F8�������3k�3ZF���>f߾Fm����D�O�/Kv0Cy��iB�6�D�������kxXY+���=�B������݂���F~$Cx*d��;���2���d2y��,��T���"Љ�A`X�i�k�� �w{��۠�ww8���΃��fܝ"��4h4jې�l�8M���t��aW6�O��ډ��I� �iG�k/�%��vߕ��’��=:N+Қ�%�zR�E ��c"����]�8���_|�w���~޽��!�������S�j��[U��U�0p�� ��Wf�L�%��Q(�09q��+G��4+�\��*��sh�inY����g��(=c=���C�LI}3g�)g܀�Z��B����-�q��UkwD85G�e� ��Q��]ܺ+�]�J%�S�'M![�P_�S(�nݣ�&ֻ(��u.Yc�-!��&aX�u�;���� ��8H��E Ƈ�q�7ȥ�Q����=��?�G<��s<��# �JI�~��
�J��O�3��W�җ�Ɂ';`��%�;�=hC�0�:���sw�C#k�U�n��XO��wI2R� m�m�R}E:��僎�[l��?� �C?��T'
"���1Z��U�V�]�t�m8U�):"�Q�IK��Ҟ�� ��$"�3�L
�XH�j��*��*�5�/*�F� p}�{���쫲<s���K M��3����<����U�A�:��� H�nZ�,+�if��\b��i�$��[X����:�mQ.����b|���
��o��c"%�����?O.[�ٗ��y�ǽ��U-ch&(=�eJ����rs����D�$�>���*�Q'�P��P��8�; ��+}�**f�DU���n�;N��H��^�n�;q,��N�!S�t�M?ۓ��p��ҫ��}��=c�!��w�0����)
��<���x���)���O�(����(�:3å+�gb?ܫ{ ��n80��[���/�n���TwP��Lא�vYj�[_�\�����v�$�a�:���$�I� ꊄ�D�So���}lm��ӏ��t6UZ5�) �"(m]-MDb'�)�[,�q���\��&W^y�h����+
��KD��r'���L��f�F��B&S��-:�l�n����^�ܸ��=O���t�-�O��s~�|~��<g�q���L ;o�T�f�P���4]#�C��CF�OJ�ʑ��B�4;�J(�w����1�-�h�4�L��;+T�k��)��f [.l
wl3Q��!e���88A��1��+G�I#Ó����N��P(c�V�,�������}���w����������'����,)��n����a߾�:t�l�$�Z��N����s����V�������ޣ�'���Q��cYw_L�I��Co�
�� $�CB�����M�o��U>�|�ǩ:���a�Z���u���$8WT%�PSu5%qv�_i%6i�����5
��C�6D����8כ$���j*�j##Z���m�
���+� �et&�d��}{{ �����9�V��Q�&�K1�4C,+��jDi�M�;�_˔l��/��q�̸���'�z�`�0 �5u����̯La��?�U���ﳺ�������
��q���eb�0˕Y�S�j���0�{���^{��q�:J�rt�C�8���MV�)���Su���s~�%���
n��w|̬�1�;
��Ax�D���l���W
� �Cyƞ��+���0xe��n_��#�}���}�Bu�6PU|�T֘����w�t��a��3� ��H��9�9�W��+iE�{'�]9�T���� �9n�t+��&��FW�r�V�iuG����hm�o��P@/�t;]c�ġ�E����v��D�5Dx�]�م���a�(e[e��0�T"��܋/�@
/31����:##���{�ٷob�&O=�9n/Ja���3q.^C�v�5�0LT����S����e��q^�� ��{�R�e՜桯��w����d��^υR�4ĿD�۩84+��;%����L����� �5,C�qn��A��!5|' 0�U�T|ף^XX���g˲�tME�&�?I
d���;�r7�����C-����^J�>L3COo?��퀨��5M�駿�_���?�O?����]� �M�ϒ�_ѱ����o����w��W�+��̸X<��^!��z�FFX���}'�t�ۯ\cu�%���y���~���� 51Q�����r�\_�LI��� ) ��FU;6&i�P�`$;L�kR�T�m}p���EQ�n��3S6�uwO06����g溫ԩ��:-+(�Jw����-�J {N�I_kV����a�[�{�y��"�G��M�M�Q� Ð��9��3�7�Z�DeF�+��UT��q{��D,��Ώ1 �<\���4���?�5������c��5u�����G>��>�����t�=z�=TWW�� ���y��&YX�b��Aӫ����;L�'å`E��9o���QjH�5=|�O第��I�f �&s7
#�b��r�m��V�%?�j*��c����%.�qJ��z-���K�]��ە���֨�kw���_�T��P,���j�
s��L�] {L��ѷ�]Ո���Y��)��3t�@_za�V"`Yv�/�] � �r)���m�]�0lu[wKZ���e��v6��l�����}%j#>K���� 1++��rE ��󼴫��n�Z� ;�a��{�WJ����
/H�4)����F�f�N_������'�ZyL�b�c����h����~����h��-�hVQ�N�R�W����^_cmu������ d�>nO]������<?�i�w�ħ]wM�0��gtK�w���Z��\��;�Xy��`+/<�d�^�i�pZ_/o,����&Eb����m�;���~.]��;�����a����^���/S�Jz`t�Т��@I�IM��k�o.W"�+�͊�u7�8��{'8t�/�t�����?����Wƻ೤�Wt���[���/���d߾cX��N�5[�(N�\q�lx}�qN�^����i�����ɣ�1s����»�L�ߣY����m��Z��U1� S�M�{��й~z�����Е0;��g(䯯�n6$aVQ���u�������.�v�#��WT��=T]ȼm���!aW��[zq\�4<��w����+\����k��'~�\����*Z�k�|r� .�~�(80t����Q*�����[X[C,�a�u�3!�X(�9r�����/�C�,.�ǎ���/�)d�d�A�Zu���=�O��7H!�ò7�řWɟ��y�]z�;s78��9�<V"[�n�6q,=�H,~��iE$ai8�B.�N�1���^�UUU��V����i���~j�Zt�W�1Y�y![녩,馫D�S��j�� � �����QA>�y�A��7����n}Ȃ�)̫��Tg�T�˔�:5�������2Z{B �Ĺ����r���o�D�)�0w�4K�ݚz� �L�Ի��.�y+jB��/�uIv�e�ijB���x�=�<��9��ݦ�w(U�i/<ȿ��LL�'_av��l5q��\:)g2��[�����@�����{��o��f����GQc��KFd�Y�^5���@����4-4����{����oq�ǎ����w129���O�Xd��{^��.�VD��,���pu��ӂR��l��02Bѭ=��0� H���eJ̌I}����(�9��!ܺ���?buu���}���:ߖ��jkib,�de�ƶ��h���֜jF���ׇ���������~�#�������_ n�gI������套^�������G>_J���c8}�O�=��!_�:�� P�����wx�ڏ�MX�J>&r"*� �|:ǹc����G�3ž��[�╷�VTF�p��y����Y�t��D��`�� z!^��y������ֈw��6��p"�m]�Nw�KBu�1���57Ն�F~����V\A�U���������q�.��q���Q_�y�ܗ�)&Ք ~�r�÷��G8�J�D�X��F�BO��US!��y�ٍ�J�QO��s�?�m^y�<���P5��W�f�2E���� �S� ��W����B��̡��0�3Av�f�T� ����5��ǫ\��&_�O�D��ټ�(�%P>]m�(�9b��뽎3�LJ�8F�� D3�۫� '�q"gۖ���r�!��:!n��m��/��)������Z�2yWU��x��g��8rh���|+�¡'%ɐ�p���<O��$���m���z��0��d���G��߳�s����Z��՝B��q��q�[L�R�ۜ�g@�+���ۭ$��fmg?Tt]m�؎SR�������N���R�8�r!d�R�.�Բ�������~G�Q�P(cYYE�٬��}��7�w/� ��,��$��d4Cô-r�Q����p�r����Sw��EM�?�?�;�=���r��g8��������Ӂ�� �M0xp��[KT�xu/�g{��f��$� |��o
h�a���: �Mu�*$R�!q(��TUl?nߓ�v>G����������052k]c�9����E(��E02��S�>Ǖ+o����������x���|��
�g�}��?�ƙ3O`&��r��\�HFQ��q�Y���Y�,�1��M]7�Ԗ�k\c��� ���X�s�)V�Wx졯���/02�C7�6������m&m`�X���p���N��< Mn��J;Q N����DCQt[2�z�n�Z�� �T�@`>��l˨j'�I��0��j3�N���X�4r}9�y��y��m^���g�w�ޞ���Q��pi�m�1���'�2ٻ������1$nX��N[����)����:˅Kor��i��;��a�>�Le���)&��̉'��71 ���Y��=s?n�Wv��[��9�{G��e��i�H��6Z��������D�6�n���:2=J+H���{�B���S���7Al�`������I��T��̚�9�M��L-}�n��g�t�r#hfBh�BjR(Ϸ�BD̼5���9u�-%���aY�$��6��7�FuW����y�1��{q���z}- �7��o�8[��W�SJ5M+�pm$<w*$IN�py�"���4� ����${ݩ�)��o�L�B��*��q̭[��t�=��Ӝ}� �FK�=�;�ߙ!�8���KX�<O?��T�+�n���;�A�� �1s3�TVV�s��`��-��Q�!=��
fƤ�_`��~ӧo�#���"�,��j���jj�H�+�p�t�J!�ެ�1�-��5|�#�٬�����ɹӴU,���y"Q�I`w����E����&&���_����q�̩ϒ����(��~�:���*�^�g�2�N�c�qL;THi��n�kK
4M�4l"o.R:�#�|�?]#���C��ԁ�18�'���dP*�RC c:t� ��|ʇ�����*ǾtLH�)�ݺ#\ ����h���+�"C0�.�������vi�M����N �4(�mڤ2,�ġ/�F�H}4CT�uSG��VP�� $���Z�>0µ��y��O����S��.����+>�i���q����N.W�Q�_B��� �++ �rEr�����~��g����N2:��%�6E%�;���Ra~q
��`��qz{ȍ�m�^#�7u��M]�\��������vm��H�*��}iڶ�N~F&��)�
$�p=�=�g���ܦ���H��H*ܺ�n�h�֙��Þ�y�>���BIB�����6]A[�qd�C���+ɸݸ �RU����)`�/����hT��ؕ=����0q�$���>@���R���S��T$�������-�~�I��
�(��u��<�;:��#L
0���jW����E��Yš����\Q-����E7����>�|�����Q��O�_���E��3u�~���L���،|�y�Ȉ�%�8]���!�������W �t �P7<��(��Te��<+wV���Đ�b�&Z=����E-!\������s�<�v���t����z��aB��É��� �+�����^>�ݎ�5�ϒ�_��1�gƵk�9s��<x� ��������8�O���u��ˡ�s�4���E3 a����iN}<!RE�vsbo~��e�&�3{{���o�0��ȹAT�U� �T�Y鮸+�:mK�2P��c��.��Q���v$�DW���3�Z���7`��8 �TM] E
89!)�!�n�����1����?% B��g�p�MB�Û��g�92� �� y|'笥�yA!�% H�(PY���ͷ�3�����+�Ne�#v��m\ץZ_�8Xb�\��� ���{�5���������_���{�?؏n�[�+�t)۫�m�����]7�Ͷ'ݼU]mU�ן��<<h�C9�$Mvd�JV ;�n�ӡ(Z��ϊ��M_p�Z *��J���K�Al=/ ��N(O{�D����l��+��ˬ�;w_�����8�:���vK�DraYv�u�����gw;9��t�
��͈�Q%a?�Ȫ�P@
;�Q�L��D�@UO_�<� �SyR�OKKK\���h����#�#L�$�����1!��Y��������r��G������� �*��2��������@>�vRA�L�����UjK5QLh�D�5Y7�6���T�+L�>���p�=ԥ��v9�ԓ��8x��}#�_����Խ�7�����ޅ��$�o�i
CC�|�˿����/���o��."v|����(��s�?���d2�;� �y3�m���Q����JeΟ��f�k&n��{h��G�E��,n��W���=Moa����s����U)�-��pDlSA�j$m�� �B�4=�;Ҳ<>�oG�q}u6�"tS�q�ŐJ21�p �DJUSSXP�go�S@�Ӽ�YѦU�8���*Zy����~.��/\��2���!�f���?0��� CC{vT5�U^��m�-�z�JO� �\!1Qj��2Ϛ�ȍ��,{z�<��9b+G�8Hoa����|p��>�O`��(��|k��J�|_� ��1�J���C���.+�w#�GA�{�l���L��
pJv��.W����"x73f��m��8�On��R�D�[��v��ʅG�Q"�jm P�i2��J�����r*}+�I�E>m���.���W�DQ���[H�a���]�5I���휵_��$�W��`�ň��H��,I��r�M'�Y�,�0����Mӓ
�HR�֖q�&�\�0���<���~����3��e����4RJ��8� �;o u1��x��|��N�j*�)1rz���92����H��6;rd��T�HQ�%���z'�6�-mV�Z�^a�yV����d�� o�`Ϟ�:x�|�t׵�^�Z�`<���3(Jw����^G��4=��3��������䡇��ٳ;߉���YR�+2�����?�c2�>�����̙�֩ �k�E0 �{w�E`Z6�� ��k-r�es��<ðG�n�r����!|:�g_����H����-E�� 2� �� 8\O�������3Qi�Y���~��(���r{�|o��p1�MM���n���J5�)\��iY�]ʀLUU�|�0�{��0ǭ�X�^�q��g؇�6���(�6�۶3�"I�,�[�>(
�����"�f�����"q�ϕ�t�S��j�MTǤ��i1h�1pn�ӟ�� ug���#����Y���\��o��y��?�i�� �=
�����#p�N5�����6R+����pk���k�1N�Aє���65%5�� 8^���<H�
yɓB������r���ts����oX���S�����6RH�]:�Fc��$�`O���ܒ�T۠$j�zǸnU�S����������{�5���������+�!A�m;u�o�Nq�<�(
�C�8�v��$� �[�+Λ�%�' �F-�8��೰0��![45�n���W��k�S��<Zp�6ҿa薐���>� �|k��B��}��N�`�+�I�P7X{+g�� NU��Ia���Q��DR�T*f�YzY�x��x�Oo��2��;H�X"�p0�;DqI�_U��
&����n��m�s�\��������CN�:�K�[�YR�+0�(�ڵk���!���G�>�͇^�d� �4�H?��ւulg�� ���~����'L��6����.�F��)�
|H�y�d��,��ۉ�|X���@“H�Z5]C�t�hgK ���mv]�.t�'Ke�B�9�7��h
���)�d�
C�5���x��3<��7��˩���,/�100��l�$A�h��lu�HI���L���� ����F>_���L����9���y�엸=}�Ks�S��!����y�?z��B���%.=w����aߓ{���5��<Eve��ӓ�>mS- ��3��~�ܩ����l�2�;fd ᐼ �[�FB“D����#w�� �\U��U��� �|��ߣX�C�i������ג/C�4zzڞg����x'YUBLD�(>����1M;��" ��z���W�m���� ض|
�/��v$is7Z�"�
�ގ���v�LF(�tS v]�0 �4�.��x.E��y�Z�h���d2�DУ٬�� ��<�J3���O�S��1(���m3���O(�u�#��5;\�bb�M�4+M@(�I��H� �-�-)RU! R��{�duz����0�ɇLr��[���S;��$֣�l`Y6��H0l4���U>/ڕ�8s� >��]>��c^y�}��M�9�㳤�W`ܼy�g��)CC9~�!���mt H���V��n@Ei�(l��J���8���3+�������;��Ar=�T�h�#�Z߭�v �UQ=߮�X����Xn`���ީVUU4[ki�+-�o���� m�(��~�(����8k�+x�*��mt@�$G�2�,���w���=��%�D��0Ln߾��j��oى�}���6�U��V�TV��K�����J�����vӰ8z�A���qL�%c�����gx��G�߲���.q��kT�4k //Ѭ8T��L�1��D�Ɗcr�g��X�;xQ�J�$�+�j 5B?$S̤�e���ױͅ~�ڎ�Jڑ2,#��u;�d@��~^@s�I��f/��^Q9T~���O��X��M�>b�!XV&M`�GˡT&�J Z?�'��S(�� L�lG�/�v��7�mR��%θ�Ģ�$��=��.%�.��dr-?��a#���D��i�6Ԯ���������v+��� _�VBE�ia��T��4m�N!�/�fPH�cҢL*^��>�H��TC��ޛR1���n�)9zezEt�41G4CK�TU����4qx�99ۓ�0�����ȃ�\{��>��k�>���S�B(���v�CU5L�N��-�q�;w�ײQ����c�]�����V-����a;� ��2�w���<���]]����YR�K><�㭷�⥗^����g�T�-'��&��n�fy#9N3���.vs�ރ ��\u��^a���'F�Ip�ʐA�nq
��n�4�oWJ �֓}}��8F���WUZ���۾w��Ă�%bwvh�)۹���JFQj�&�"5C�~TP���c�`�{��nkh��eg��� ���F�j�F��7m��k/UU# }Z��x���ss���������Dr�����ŹT���ɧ���W�bY��ȑ^�όSi0i� �����X�eOq��WVju�<1J~�@�Ǡ8TL4�Ҟ��З�y��s@�'�0D�ZYE���^��� h7��/tt@��J n]���er����*�8�ؖ$ۇԬ�����j��[?�A6[ �+$���.ǰ�4f������9d�Zi��G�}E�(1�єl="�BVV� q��)A�zպ�Jv�ޖr�a������I� �����ӝt(�ʕv�[!��ʞ��ahı��X�c��QӦ�3��n&o�E��YX���a�TBI��6��m�� yn�v�eQ#p�-�IZ[1�.���+ ��,=�xk>�n�⧯� 3��9z��zG:�ߛ'_�45j���������u\Î�!�'��=�v.Ӊ1?����K�|�-|�<�ݥ��.�ϒ�_�q��E^{�M ùsO����%�ք�V�#������ ��FQ��O���%�#!��`��;���CQ�� �ô궞�!^�C7�TvQ&��
�5Ct���n������A�@�� ��=lcJFN��|�0�q�adK����g��pyQ$?�4*u�>��S�4,TU�q�4���V[�RY! Cz{���u6$�8��v
�0�q�,.���.�\1�7M ]7p�&���qA�ee0M�j���6�3���_ ���Ù�9M}� ���{�|����K�;��r�{(��P5��H�}ɸ����Z*kl��-eļM� �/ )�c��w�����¨��J �W���?�n���p7dª*�7��fbF�{ۻ�}�������Q�#X��v�E�����Lbb@�K�!�������s��Ƶhj6�S'{�𫪚��*�pE����(���:��u�Tͮ�,lr�6�g�b���Rr��!H��.`�Iο��{H�뵵e�^�C��B� �M�����|GH��nq;ԯ#��=+�uU:A�u��ph�F�(T���% ?�NG�&wt��ly����5<2�6�S�o~���XX�ͩC�34�]76T��3����xT���*�������}~�q.W$��Dn��Cw/ d9
�,g�>���U���W r��/�D�gI�/񈢈^�9W��������v���;�*��a�d2� -���F�� _5��O.1rv��D��H��PqG���^+��F�����Ąˇ��K�T���pk.������^D1n�ũ:)<����
n�M�[9�(��� �]E<��wV��8�*�?'+S+<��� �� �!�f��U+a̋����A�͗0 �0���B����i������\��"�yR �@k�5��n���ۇ�� �/ƶ� �7�e�4� �����
�ɱc,��s��w��|��'������4}��'Y]^`�z�L|a���}dʙ�+^%���`���>��^;/H!FR�E�_*yu�)�]�(�~N%$�@�گ�T�������_%���t|�L6��B�$���PBE��s�k{gAH��H���z�$�B����ϗ�nJ�:�2!;ɛA(�?���V���Y_�*NJ��c�Y�'�?W���q�ee6Q}j�Jm�������6�<oC��SAj�����8��H��Oo�zJ±a�h���8\��-������b �?&p�TVx���j*�.ƌ�����[�R �Α %�d�Z���bIQK�Դ�%�^�� ��8+^��Qv¢u����l"՝ο�g���*MP�z�K�_����;S7x���`��� �*c��.�DK�~2�<�ozݷ"`f"-�1���=0>~��g������_��/1::J.�������%��#�c^}�U>��#z{�y�/��掃yi����)�x��"��?��{᧸?�Y9�<Ύ�Ix��Ht��q���a ��L�$��:WD�ެ����-h�Ġ��2+�������ܶdI7���)d��q��J�D~����0�]uKC���WU�2�=��)i%�4�`o�4ٸH�/ϾN��1P�����\��O_��粺������#I5���땕��F�Ygii���%E�X�#�/'�Y�f�8��0�Ɂ��4�׫��J���SO~��K{x�ҳ|�ъ1��.� �ո�|�&��4�?@yO�� h�6���:?��4
"��,Fv�I�h��k��Qj5��Ym�jj�d�����\q��˥��x��lOv��Hm ms�����U�� zk�9�ؗ8t�̶ Qb3д]8���ѨR(�va{ң`w@���8nU4;�w(E��MI�\��i�m^$m��X*���=��O!ߟ�d�"����`�@q=ԣ��!#�f����x�V�Dno3Ȕ��g�x�ꪀ[��de�s{�k$�)����}����7n^� k4�D=M��G������N�?/�t뷧*8U!G�J�
��P��7����Jv�����X�Y#ۓM���ւ#�s�&���Ӭ4�V-�ŇH�Ŷ�����"�WZ�Kaj~�n ������"��'\��E���ĩS�mX?�w��9�݂|���v��A��y�� ���U �mq��I�~�7y������G���5�ϒ�_ҡ(
����X[�x�/��l��ږ�X��_��-I�MF���S�=�f��� ,\Xb���+�
JJd �%TROZ�۴��T28VM=1��*'�j��g}7��{k���v| ���w|��#�ڊ��s�.~Ct���4���rX�Q�=YB?��� S��>^]T}����5�,��N�y�=�0L��aYvB�4��F��<�5*�e�榘��M.'�יL��Ԭ�Ji#k�L�|?�Ѩ������1 ���=I��@)JF�ΝQT#��a�f�_6�d���98Nð8t� ��p{�2�B��o�aia�O.��t���f�s~ 3g�U|�* � Khs�.��'J*�Qa*�=��;�v�d!6b4KK�|5SK�8)�5�2bz�����-UU�LM$;�@1��L� �rO+(8�&K7VX�������U\��Y2�����y���osx�YL���sQx�l�Lz�s���v3V�!�R2dv�NG;�>�|�@�=�����iz�\u���R8j�l;CE�vv��7~~}�"l�s){0 �c�kW�Z�- [j�n���d�yt�ܢ0��s[r9�s�:s��57�9��Ir#��WoQ�u����oa����X;�G��V컮�q�jm��6�[
ϛ0 13�X�"����
��yG���]H�F,�v�&[�b孖HA��[���'��5ES0s&�'�^����s{��t��� ��RGNQ�'�+l�z�!���þ�a~�������y��ٿ?��^���,)�%�����op�� ���'N<��H[i������(
�l[wS�4M�z�S*����W��0��k.F[e��!ŝ�.q�z�5�N@膂�����������}�� ����(��j��V�"�Bl��U �HeC����`z �0�6����[��3oR[��<��U*��ad����N��X&�|2�~ঁ�H4�0�u�߳�v�(
�,���A4M�q���D±�V u�H5Qt]��p�&���l6�u=� �f �� !�H�V��� ���u��:�n��kC��'�AQT��bdp/�����@L���-�a�}�'חo�}!�'�,^���|!�g��I���w�ܙ$Ւ���/� JI�iG!iŷWe@�!� ��J^�Hj��<[�/H�{�C
��*s.��a�h�f�9ʁr?����tm�މ��8�(�'Nb�۔ �{��Ix�To���n$��.$,Qm�����x���Ú��?d��M� �y�(J
0�9+���Qb�i��uv�4��L�σz]3l;�%ӷ{��A ��B�"�/1<8�ޱc\�|���y� =0�%�,ScU>�v�_�`�&~�O��;de��A�'�n�s�a`����өJ�n�ū{n��nƃR�r�u��dwGUR�`y���==4n�,,ܡ��Ii�zKo�݈}�Ŏ:�d:���<�;�|�ѣ�����o7�gI�/ᘟ����N6;��ӏR*����o�Ue���n�{'�ݬ[2Y €B��Z,][f��P$J�����z��`+�C1:~����|H�3�O:�^C�0�������`ſ� 0��C�H(*H�Bc��:�Dΰ 삽=��|��"`l�6��v�N��\O���y�z�+7ާ'3Ho� ��������$M��&
���!#����4��J���i���8��u�z} P���� ��S* 'n%y]Dz2�n�f�N.WH�B���Lh�8_�)x�#^7L�b�������w�ǫ(�.�������dj��n�薞����A���v39�%���#b,mSZ�U�N���H�K�ԎV~��DZ����N ug��0;�ʛ��^�.V���«c����0::���~��.s����s��cIQb��PLB6�δ�}{��{7cA��|���D���^�|�NYȭ��nC�G-������b^I�B���VnGv(5M��w��g�@O�E�9��6p�1*k�|R�FV�y(�$� GyI
q_���ʄ E��0 tccѫ}�l��P�k���!�����M�v�m;����(܈���CG�8T`U_�ͷ£������M��@��@k�v�`���>�U��/�9/���=�9z{{w 6���YR�K6��:��>���&����9��G vEm0& �Ē���W6�OIu��� �_�� ��}P��tl#Gs����?%S�� -��8�[J,I��Y�X�u|�A��51m�Ȗ���H
���
F��xhK���X��0N���8d
r}��l��!����8�f����mh��N{ܙ�ʭ�$�\���r�F�y��DׅQ���j��I�U��M�fpp�\�H�����lB�pPhA�aXd�y��^�0�X���2I砎���f��v�0 ��A6�CQT2�,���hT��kig��)���\�uXX�棋��+|�?y�_9���<H��aF�UyG,�~�'�"����-z�駪Q�*� -{M/���ۓ2��{�4j;�8c|ק��L�$a�C�}�� 3� 9Q�5�\�w�LN5�bxՀ�Wf���pj�s<|�K�f+�Go�P�Q�Na&N �v�L�A=��!U�v� @U ��E���ee��{u���>��4 ���J��iF���f��ϲ2h�p��,��N�o�1��9��� ��:/���7=�F@D���}E��c��sw�VQE�|=l�[�e�ː
}a�)g0l#�쭇��mJI�;����\�d��ܡ kCY�7~���~���L�>r��׍8���1�i�ʽ$xo*��cr�7o^�������������YR�K6�_������<�Է8t���U�D�4��{�]TE0%�z�<L�8z�R�Y����q�hTYY�G�-z{�ds�^�>\�R�2Ǿv��@!�4H��n$��[�'����)WH+�Ҷ���f�ĭ���{�Ѧh#+/�+`*R5�̙�f{) ��(�DogDaD�x �ȏ�m� ����Z��1# ,�$���Q�����O�����{�ߒ��S|��(d��(�"��*qS(��4�NFg==��rQ�v)F�Ѩv���U���0�T �u��vM#M$�*�a�2t�Db��p:��UU#�� �R�Il��t?��G1s[�����M�@�C/���L��F�ؕ9%;F�B�зtK�Ҩ�FlIL@�u��1l��薞�aN�V
��n
C�������~nJ��\��h^�Q��|��79��T�@QH�0����Ο_�x�t�TI���5�<�z} Ӵ��|�۔d���9�,C��)7��v�?r;�1���O�N.�J�Z�m���#��T��J����8��Z#���%��%n�&�#�ͶRX����B/��(��e���}GF�P���5���W�K���N�|��Q�Ss��ԉ���bM(����J� 9� H���M������NR$*tw���1�8��G��sϭ��}��}�k���_h�೤��h,--��k�q��e�����I>_�u�v��6��X�f�g럏Sӎ8��<�s�}��mM���˅����:������V)J<����3���>OcnF�03�;�����N��(�ͼ�%�v{^��1��S�秉��*�-���6TU�8fmf-5��!�໾ �&ɀ��!TV�JP_��Xm�-g�t�X�!�>��O�.1}�2�f���={��5��Kx��K��S��r`�IΜ�\�H$��H �D׍$єx= �[�
�P$� щp����&�z�BA�0�i�4�j4j4U�($���rhT+�L�^�w��p�dS_���[��("Tu�(�,t���5�Ȣ�40l�2Ь�'t@
Yڑ�����q�iҩ�J��ޛ#�!]��(u`m�Nh�6�é.z9GWגּt}�ُ�o���"G{��὘�Fu��f7\�� ��v�O�z�I*������(���L&�uWw�w��kڷ�k�R�����Ļ���ܮ����q��]7 /1 �EQ�s�:���2�g�T$��o I�UM�2[�����{>��i�5�?@q�H�T�d��+.聨�^+��K���j��m�Sm�c�����R����r��K�[|��[zz��{�Mc爵H@=�K|kB� �G�3ڑ �1�����AN�|�W_��{����ۿM��3Y���%�D������_�ر�ݗ>�DUf����o������/�������|�%|_3�߄m�z�J��t���Y]��h�ƁPϩW+�̄���([+��a���P]+k�ʽ+1ٺ�o_Vq�5Q�����A+�j����I��76�3�D���۽F�`B��b������� �Eg͡:/�YuS$&f�d�3c�8�!�^g��Do� ����<._������ �b���1��p]�_.MŤC�iډ�tЖ��(�F .���D�Ѩb�`�iF�i$$e]7�dr��U\���dS7e]7�dr8N�m&�A. �s*���e=�4Z$ۓ>5��1lck$�d��U]�zv�&S̤|��@��覾%� h-��. ���5=�����8�J��Kx@Z��Z� {�^ ��Ӭ4��2ǭצ)�C䙤l qt�!�z��z����3���o���AU7�Z�4�5<�I��3��Tw��*�Ŝ�n{�R��Qy���Ӵ�D��0>�n��v/�n�5��XC`iл\a
�Z?�G��ԨV���y�����\cqu�#_�K~0��1Dp��*EQ�3�Xm���\��ױ�IB�py�w���o�0��8Ǿz���!D�o}�`�C�}��E���z�qS A�W�u�x�E��J*ɪB�B��GD�BOn�#�ϥ�=v�<��a��W88N=E.�9�*V������>M3��;�o�V]78y�Q��n��������:ujW�p;�%�$cii�7�x���:�o�6��ٔ����ʽ�f���0�F1٬�NH��N ����w��,*�i�����j��o�GUEG�Z]���U�.3S��u�g��a̼�-�E�)�F�i�65Bv�)Y�2� ^�ë{�AU�i��Ԧ���������Xm��u����HX� ��L܍�(
fƤ���Ys�,��P1M�����*��+����&�R�Je����jw�0Xun���/��
���z���,ta���
ڭ�[*!$8p5��Eh��麮��ʈ�iaڗ��IDAT�a��(J6}�
9;�m�y. ����ѠR[���1rn�d ~
Z�A�]�-}C�|�!����ɔ�:�XX�C�f�iZ�����T`�ҡm#��o�齸N�}����aL��!ɜ������:ʲMya?�G��8��,����'?�~B97���<��S���:m�rv�(K��#ݹ�æW"��H�C�T��Z���c�*ֻC�|�.��8��
�N ��j��'���������~�{,����|��@S���͍���7��1�'( �j���Б��8f`�)<�}We<E��ק�����JU���&��\
��S �ES��������x��J(d��qUM���<�(�Z&�(��O� V�.r�Ak�h/n���HN�/�F�/I�v?�N�< ath6kI!�n�&�/z�;"o��^(�Q144ʱc���� /�������]�;�|O����g�}�O>�¡Cp�ੴU��樂�:s��D j�Vlt�xl�#�Z���:~o9vY���-��Viq#�T�+\��!����5C��"�>HϞ�Iѭ ���p�*����!��6��S�!3+�4��o;�l�GEȯ����jZe�c�PN�� L��u��$�(���m�s �4]��T��w�����z�����蛆Ioy�e��r���>��eV�W��ӿ������@>�ôR/]ylNpTd{XŽ��i�[ ��Z�P�d��ٌ#d��lz�J��qꉗAH�� BVW�F���Cdˢumآ��5=�&O���R��빌� ����j�a�E~����L �N�\9G$�rf�滄<ݍT}��&��)ib�>N�e��5���9���P�aum�;7��pm� 7�@1!&bz�:�F-�̩�]��N��Ÿ��{�/�(f�y��9�s/�v;dAf7r��ƶ$9Rp'"$���}����t�|߄ȁ��o�9��Q�\We�Yt[�{�|�nz{�/sM<wr�"�|���:x�Cí`�����E7Eg15+�ȫ[:�R�Ш.T��vL��dʂ|��/�W�}č7ަ8r��_9.��ԍA���!
nCH�����B��m�*B�'������$:dK8���𛾀k&�s���r�md���>Z����������Z׋�������v�ʿ�j�I��N�;��V�a}�ac�!c;�m���<̯����g?�Ǐehh��-�,)��8�Y[[���GT**���W]�8�� ,��a�
F���h��\L�8�L&Oxd����>�����>�ft��������<�z��� �<u�����ސASD�s��!-෥�І��d^Y�Bl�E[�R�y���Ǎ�]��-�Z���\k�"x�2����w� ī{�u�� 6~��m��L�� Z4� Fޗ* ���ʱ�ϡV��s�7x�֏���~�?�T�!��C��Kҡ������/�a���L���Q����^���� O��J�QGӌ�*�����<�[SWX^�C�T斦�V+A�|��*XY �6Ģ����0v��E��!ՈM�.� qR��6҅�w�C���ٺv
D�P�J��vi�� ���u;��$��݀�|�;�a��9���;� zJ|:�67߸�j}_o�d#�P��S�������D*qA `g�f-� �6-���iVb�[�p �(c�ؾR��� ��'r���Aj���n\��*��x�w{�B��IηwMd`/ֿBA��0�Яo�6�����}�����K>_�P����\36-��mA���"��o��=�8^��_�����tE��%�CES0,Ctu����K��h�57�:)(��O}��� O��
T/�3i�=g���ݴ0��i#�+ 4Sf����*��a�T�>N�t�6K��,���������yx[{(ψ� ��n���;�ζ3x^o*�~.�a�n^�9՞,�y#�RDw��u
�{쫼����˯099ɡC�vva��%���.����[�U�Γϗ�VWQU5�������i)4��������[K�Xd������n�q��dﶫP��f�O/���^�.֑�c���;��]�BQ��H<�v�PU�T(ד��)��8�}J򥢉��T2j�{�J%@#c`%N�2}�3h��%�h��P�dJ�}��s��[]��Of���J<Uez�
�����%���������g������7��84y����'�~#� �E:Lp���K���Q����4�u�0��� �x��&�C :�z�R�'ݦ�B�V���wx��gq��C��R<aQ)n�$-p+g���H�j.~�d�MHò�~_��d�r��sqZ)t�.N��K�켍j�^Bx�jS\�އN���]���s� R����2�sG�Mx�͟��P>��>�a0�am%f�������S�?G�ܟ��F���"�+�<�V%OV��t1� �8h�0�s�F�ĶB])�+&����f�p7�K�y�C�QK�-;w��cۓ�����`^J!7��T�BU�6mz�`�NN'N\$�q,�UU�4�T�&���5���[y~k�F�x��t�Z�E��;W��WY��ď�������)�ύ�B�٦�@,霪��k4V�Y��P�SB��;�L�u���q��<�
�j�+��e^�W�R(���{�c_9F��������5<��Ea@(�՗�i'ܰ�z�,zi������&%�(�=
܀�j#�x��Xc�A�>������0 i4j��}[��ݻjvh�vj��Qn�Ӏ����Y��y��L��O�S<� ���S&&�|���m�aȭ[���w����O��ߠ\�#�DФ���$�BuC��Z�r���<�UUM�E]�k&z�=��(P�W�VV�LA���}��� �r��o��s�Hy�ܽn{RA� mWԂ@T<4SKI���I����֨t�Xp��S�v�w3g�Xn��{��ֹV�.T ݐ޽�" 1��f �-[�`��09�r?��Cu�
���G��1se��߿���̓��Zu�g�GT���aM�)�9q�2V�L&O�ؓ`@E'u��]����L�-�(I�� �0�v�F���4ۺ$p�85U�esx~�G�λ����6�X����g���lo3ww��~����i��Om��n�鹓s�kx�ːߚ����Ek��uKOO���Xi��
�r6�s]�DU�ʊ��N�C������4N�|��� ��o��kK/b������.1��,��A�O�� Μ|�������.�)���T�[B�ļXϥj�y��ls�V�֭KDQL.WL+�� ��@�' o�ؔ8f����%��aQ�;���ݍ�Ġ(BJ8�-!�; ��]7�k������E0Ķ:1��(��̶de������mJn���8NU�w��!�YA��}/�Xq�}�(
�3}�;3� �qg"VoV::@�7��
�/�}�G�T�&���WEW��bfMTD�G> �.��^���}�ri�b��G�֍�\��C���;�!N���o��8�}ś�|��Q(bmB?�*?J�R�T��TV����*Z�Yf�Xi�� ������V���!�7�:U��j��D��kͯ�]�N�;'%��ӝ!�ɥ~���駿ōx���裏8y�d�sp;㳤�8VWW��% -�{��Ƀ������n������SH7�[��]��*�|�}G Sw.�����gajߪ�ձ�Ō�8�� $"��
��4���(�v��Ե6
#AT��~�V�� �j �ki��=Ȓ���U}����Mk��SH��1��ˈ�(�дCY:���*��O� d{�DgcFf����-���Y]^�ٻ�����X���ǡ^���9��4�R��,lYF�I�ζE#1��� �>A��� -: �K��b�o6jܾ}������k\���Zv��z�84�ȱtS�k
e���ͽPĂf�&���`�.:-����R��3c��B9,�B/��F��9UG$�����^�Q�kom?Q����e�=�1� �*��
�^��]�ޜ#�����GY�t��'�����Ig�3���M��f��`�s�D�7|7�ΠRJ�f��ԷB��G .���
8�c�[�����vcS������:�m���b{a��:*�7-^�F1�Zm �i`�6�|�����D�n#�[%��NJ�J1�{���:Iէ���]Ӵq�:����%] ���ezʃ�Mi��+UVO�Q����/p�@ӵԠ3�B�f����==�ͬR[���M��C�;�4��о?��(z�u�2�����w�ߨ�rgeC��#��Z#}���n��0.K!����n �G#Q�k3?Tt ���'�_�Jo�!��������w�g��JW�N���GQ�ʿʄ��{S~��ޟ΂�Bn�Х� '�Z���
<�ȯ����w��o9z��ߨ��gI�/h�a��˗�я~�O|�#G�&���{��nwl���$��m))k�^Ap{�2��~�c'�25{�ᣃ���0���Z,\[H���PTEHnj�ۋ�)
#��m�-O��� ��F�56�Ej�x�ˇݖ�-��W��{"H Q�)��RL��5��8�4R����?#I�ٞ,vA`�ͬ��59>����p� �|d3o.P�5ϵ;2�3I.[J��S�aP��Ub`���!(�E��cY�koY6��H ��ݸ����F���˕f��X�OSܟ��;5F��M�����
n�n��[:�ޜ��>^�K�_S�n����;!eM � �?@�5B=L�C���V��xuO�g�w�Ȥ׭����8����k�-��iuz�98pk@!�F,�T緾�k�;��\&}扠r�~�TT�{^��{i��6t� �bo2�������/��-TU5�>5R? I�ìWLj�]�d�!�;��t�;�խ��FQ ��h$�䰙��n8N#!e���X�V������z<�� _��A��a�mA��{�L��4����2ڻa�;��w+ ܻ�(�f��O��6��\Y�6[G9�>�x*)��UU(�i�vk 5��7_�b�f'�S�x`�Q����۱�IF�'q��}�����,\\d��`�\�眈bܺKm�����|�"��0N�?�n�#�܆��fd�
kBvT���������L)Ñ/�ڏnqi�-��;F6[@S�������N_���+��+
����n��Y��;_?�i.\x���~� .r���\b�YR� �n��~N�r��3 ��$��w+)�
,o�s�d�jopOy�0J@����4���<�j*�:��ͥ�n� �E�l���%! ^���@35���Vf����L�5�x���ԁ�]��!f�$W̉���6\�Ku��Mu����6]z+k����|�zi��x֗�n@i����mP*��:{??����x�ſd��<��o���C�C۰s��h�+����{i�$�Y@�����,���13��PLPm��!������0r|D(��]���jʡD��>�H�T̜�n�xu��b��j��H)%�w�E1^�K���ZB0SB��f=���zJ�'s�@1�ck ������t$����裃T�jD^���j��H�1�j�G����"O��M�{�l6���.E!�z �����%+;R�~�.�Z;�� 4�( ��V[�٬Q(�QU�P- ZAl;�U9��JG a���n�3�0jKv6��v��z� ��n�Je%�W�m޸-��ҿ� �]�N��P(� @�ne�m�K�����Lo�Cܞ�l��*%�+"��8 $�4��R*�u<�����G({iU�gѣQo� ��51sf�,��(5�,� ��O��S*����Y��BhV��-�S�!IR�R���'��s�^�Ji�6�>��E ��`����ͬ�3փ���s���\k����PI��xxM��j�&T��-�uƩ:dz2�v ��1���B� �����9�8���%�I���Q
���l6��N�㔋$:�st�"���WOO/�<�E^y�ʷ��m��?�o�����K�8>K
~A�>�?}�/|�w(��6�d�-��_'q�!��o��4-�<�U�z�D{�}�m���c,�7��p��s�XY�%_�(i�o��p�SR�UQ����<��ʮ KŠ�3cR(�ՙ�X[�WUII�v��R�"+4^���m�-e[�E���S(ܹ"��ڹ�8'
�r��r�a��]|�'ۓM���,F֠�ܠ�� �#2�L
��L��dž���-f�nuO����Iư���T� �(� J�w{�ρ�T,�f��ʟ��?A;�p�o��4.�)�� T�>�]C����dq�ܚK�[6�S5U��� �#r�R�]��QQ[���>-� -':P�#�w|j�5 Kt*TCM+t���t#���杢� ��Q[��Xm�6�FԈQk6�[Eg����=�m�ػ�(ar����rE�Ұl�-���u�$�����0`Ug�L�'�ʛf2�T�MT�ݴ�%��)��"�v ��cyy>�VK;��l��
��k��z���e�-�V[K*�!�I�LBd�w}����ki�oYl;����*���/�/���*��n�����ڶ��!�Ɩ��$��ϗ8�P�������B�L���L�۞ඤ�axh/��
7^�M`���q�}���>
"��C腘9;g�2����5N�{��=�5�槨7�;�`bZ��]R�T����YX��͟_aϹ=��+��J��\����G���6\7���$����n��a��Aӵ�⚦��8��j7޸���^#�e2����}Ӳ� #���8���!f�����"�l�8�Sb���m�SD
�RW����cԓ5q�|�"8y�1fg���?���?�0�L����YR� �1o��6��=�E���]HYI�Lg�CR��]��47?ų��=���?�y�G�m�?ð�dri�|��g�0��
?�����d�C�dK�41�x�n �1q��.����D�P��~�o�u� 0�&��8��O�[�d�k�pv��ړ&��k
�q�4�-��]
U��+�E�`f��|�u��bEU��S��f#
#ܪK���N�/ҐM�TB?�2_A7t2� �
��yԆǝ�ט�<������6��L
�$P���đ������W*+\��>��c�H?zFoI��:n���wW���XE �&*[Qa���Q Ι�����[ `�XY��U��2$o��P�� �i�;�Ɗ ��.�d{�BUN�R�VB�7\��!y/RI3Z�񽆆��E���:3o-�˔�+�21|�b���A�D��� �c)v:��rw���ݚ�I��)���f3e��6u]�4�D}H`�ӽ�KU�������(��ϗ�I������ I�$x8JJ�^�_�@Rk3�T���K���0 q�f�-0�>��!!?鎔�y�,��V�`�6��]�$e�����0L� ���:-��6*ʮH�^�Ѩu$a�c����CUUff�x��X��*��&�p)v�(X�'�D�BWh�u�*{�"��300�!IjmP��NQo���[����E����E?p�fׄ�Pޢ8\$E�2�"������ ��#��V^@�:��j"�` Rr����EJÝ�U� x���͖د>�Й��>�xʍ�LF��c'p>qI�v(��ʉR߁v���Q�W �pWˤj��@l�y�c�fm>�������9�۷�����,)����|��e�|�w����?��ƍ��>)h�-l��U��� \��Fv�����L�w&�2�'��?�%��u}�z����,f�~k��}=�J�4�c;u �A���*�*x wU�$M����.��TMm)�$ �����̪�2TEŰ �6<l}c5?�Y+�����'*�~_�UW��6��Q%Je.ݺ�e��^Xwٙ�0 ��� 8�ZD;�ԝ�-��Y[��7����#(��`�C��U���ji��k++ |��+,,���G����A̤C%iȥ����\�z����X�l_6�ј�H�̬��DK5Ի�k5]�̙x A����%�2�K�q"�'�� pj���0�-�T|�g��2�W+�~{���e�){�;�̢���7�3~b\(i"�m7΋��{ �"��P3
��8�S¿�k�\o��bb>��GL�z����'�>C6W�\ꧯ<����������/:X1ds��o��dt1�'��J�ĸw;Z�W�� �MCW��$`S��l�K5-�n�?�E��K����q�1����MЕ���>;?^��w�%N��;U Z�S1�*�e</]Eё����ҷw��"�rS�YY�s]�3~�s��an�:n���7������x�(Nђ�TT�8���>0��+WY][DSu*���>�����')� �͙��d�p�[�����a�=9�, C�kM Zm��ڙbF�j�;���2&>���\�0}ޥ]"M$S���7M |�' �a��t����y���9q�Q���}���� �6�B��Ђ�Ei�����v�Z��q��]�� ukW��lD��s����-����G�y�]��ZT���,)�Q�����^z�����o��$��^�t�N� |mĖ�*,//���W�R{����p5+���Z�_��d���w������e��e��3�z��,ƨ��.UT�%��UY�6�`i�$���R���x�49���s$J���- 4�1��x���fjh]Bb�4���V�B�Z ����dH��v�'uKXǧ��H��ұJ�k�#��>�#x���!i�| ��
Vt%pjK5�+��`�E̯\�WY��2�p��/��7�a�p9��^���տ���O�C�o~�`��R��z5 ��0dai���M���/0�����E+:9^]׉31Q]�UU�J�� r�H�>(`f�M���iDQ�j��`���✆AH܌1b=�Ph|1����R�ԙ~��/^�9���BK���5� �[��6�B�WS���$�:
Z�Y���G���(
������ ��4�����7��0 L�T嫫���{��L�c�!e���]�KI�U��`�Fh�����`lH���� 9�ۮ������w��%������{�so&�"�g�!<�j o�{����I�����Da��g��<��'_�&O?����a�^�V["��=�|�Ŵ��܎$^4C,+�e� ��_ �O��ؚ�I��ՇN�Ϳo$��4�湹}Y�<.U�zp⥦��JӜx���E�t�i��R�럟(��y���xo/�7! .�S"Yl��.�R^���D���AJS����(����(�?�ș?�@d�䇳b2CrLK47<�Kxic�����o0q�
7o_��]�z� �M�QM
C�K��0�R�������Ҝoa�� ���R ��t1IL��y ����E�D7b�oV(z-�L���זp$�Kz1��J�?AD� ��k�(-���=�ٽ?�������ƅ��h��Z�aBL��#i�(ᅲ�1q$�Ƞ��'5�r� ��������c��{y�����7���ƨ�j���ϩT|~�׿A�Խ!\�$���«`+�izR�v�㸜��>����a���0��C.W\����`��|�Yò������� |~�-�T��w>'(�>>Ln<b�s�IeS�hRQ��*��IB�;a��ɌSwXK
���L�T!�`1e��;�V��D9����Ɩ��L*�H�$�� �e6[ tF�;Ks�Ie�B��w��@U�,W�4St�W�~i6#�SJ˙z�Ŋ��г���C��O��5n�y���~v�8�t`E�]�m|�C�u_�R��ժ��p�� ��:�\7���l֩����ul�������"%JT�:���^�a�]��ZY�h!�4V�Bi*bd�b\�$�ԅɘ��1������E�3!y
��N���Zd�ӄ>h�(PݺKs�En0��2���MN���/Ϡ�;N�д}�J��C;8���=�H�0Y!$�ʛm���b[.�.�j��ʧ��?�C!��tHm�ι\ c�y����ɯ���,d:�c6��R2/�3��]F��Z�-'c Qخ�˥]�E�9����bĘ��N�������� �gyQ��ݐ�A�q�Zm�t:��k��%�b��A��&�|�F�0 �I�(�2�L�4v��х/���7��o&0�"���w�+k�8Q! B�3u<ۣ8\�4RBM���2�p�R��G��¶���O�1����������:CC�Q��b��l ��a�mR���V��i:B���$�T>����(ٸ���醞p؂z@� �cM�p�&XFX�����CN��V�F̧�T�Z)�FQT2�,����^҄L�sy/H~����ۯ�+�b�҉��&e��t6�s��� �t:�W�������Ɂ���O�J��M�8gϞejj�cǾ�c���nA ��:��Z{����΢��=Ο��K�> 52��qn�w �Z����A��ۗh� ��,����jp��i��F���������zO8�ݽ�푡�.��Nf�h��(�,�:t����N��� �&P M#Ȕ!y�m.�x� ��b��Bs˄h��$�v�NuE/\#e$f/Q E�K�r��
�.�{W�Kh���\�݁P(bdD'�m �ˮ�3z��WΒ�������������[��V��&]�^��*{vỿ��{��=�e #���]���Ě��{���w) H�Sɂ#%Z��aD�H8�j��8�d�(�-�h��� <��ifL��Y� �޹{̟���.VYô,&>����~��-&>�C��?�K�+dz�&��j��5�9^ P|np��|��܇=�̫��115�72LMϣ�����n��!�vv�-g�s����E$�G����%����B�鋳\y�S����#C{YX�M���`LB��ۻ�
�S��D��Qv�BQ��ݼ}FcR�h����і�ݎ�ΒD�M5̶��u�J��ۖ�Q���y^B�4�B�D6[H&�ݤR��E�U�9�9��,�y.�k�y��$;v����9G�� �����ؑg8s�><�3��S�St�tq�]� R��}����G��� �f�N.]²,���)��1'¥Ѩ�l
n��+�F����ZT��(��(���� � �0R����mM^8qcO�U쪍]��,!�
�O�T)�Zf��L�x-�o��'�u�2�4];��ë8^�f���;�RiL3�����!�6%$�@��D�ZN�����hT� 9!��N[��[��v�U ͥτ�:t����W����?�9���7���������T*���=��Np�ė��7��!���%K>�V�(���r8�ç���w�~�f��*w������9D�4D �m;��_�����w��1q�&f����d�Lz��(��J �5V"[�&P�(&�}��A���EtC'ۓM:�xq 7D�o��?�b��}�!$2��p�+�,B�g���KJ��3k�B_��`Atoխ��H��K���P���NU!B$�����?��HG�B�+tS_Q�_�3%A|%� �0�4҅��ŵ˟3��uRJ���!,5��[��G���Em�A��dtp��B?}�� 􏒉!�|I�K�6�yg���Ņ����NQp�:��nS�,?��&��̭��R�}�A�
� W�o�>W�w|2E��ީr��\`,�8y#M������W�|�*J`q�t�|���BϥP=4H�vfhU���e�y�H���<��$c��gǣ�tb�P�Q"*�9f�'p�ԙ:}�ӵKt=�a��]z������8x�PM�И��g��<f��kzL�w����b�}��#i�|�ry0�:x��m ��z�@:���$��\G-g)�z�>$����[.��
��}��mw��fDQ�m7QU�T*�M�r�,�S[�SȎ|����,�l���4c�4��ƌF�LFOH�������:�����q�ʢ�N�H���땄�b+u�#|�EUu=� {v�w~�GgJ��,��^b�G�����wȇ���e\�d 0x`���E._��o�(
�d
�I�rEl�A&�O&�A�h��g��R����9� ���mq�T]MT�$�R&�%�%���Sd���R�ٷ�D�;p�sd�*����Ӯ���Pl*�i�u<ϥV[�?q�_��l���b���Z;�=Q� �r��L&���;�qJB�:��N�i�U�KI�\����2�_����_���+��Ƴ�>K6���)���E�_C��5>��cΜ��o������~��*x��e�+��P�.pe�S̃����p��izܽ��{$vB� �������Mz�����q���4f���zM�1���Q�ʹp[�� ԧ�I}�"�.��IF�I~R �Q��8�r��������
����Q�2|���v��'8
�F�++��t��n�Yr�H\u�=�c����fjd��%I����6]�0Z� ����BjE�q���S|��uP!�M1��݌<9�f��͐��b��$�� �^��S
7�f�*U�|z���Y�z��d�٤�v]�Je�TJc��~��7�]\��u�ᓃIw�s<! �,�D�Um �'MY�}XQR����6]슝(8e�2@���oq����N����wa� �J}x�� �aP��s���s�}�Y,3C�UG�4r��f��Z�R�\dd�nN��5x���!J��i��Aoi�����N����\�q��k��XX�ޠZ��5�E��.̢�Tp���~-b���݀�c���� ,��+�dl� zda�&垁�]���l���{�y���1��1Q�'R�
�&[,�֖���i\�=�?�M1u��IA�[�6mqۧ Y���%�aN(� �l�^A�i�&�'��m7���²R����K���[���V�H�DMӨV��/��-�>=O�,TUK`I���n��CF��%.��tV�� b�FY��p��3�� Q(vS�w��dx����/p�ȗ8y�ETM�\��u��X����(d�,ˣ�8ǵ����k�:FQ�IҴ�1qj�P���Zbe�dPT%�q�Mr$ ��rN���x���p`o.4i.4�$�$:�
**�.��̏βx��Hy���~t�(˽Z �G�Ds�E�MR���6�ϧ^��09+�艼q��0�'1 Z-�U�/���}�����ؾ(��}���gb�~�ӟ����_ ��aQ��7n��?���ػ�Q�� ���ߍ"qcz��as��C,��iQ�ո7y�[s� ������r�i�G<G_�(VJaa���_p��� <Yf�2��L������8}C�r���n�z�B���J; ��$�*0�r �\O� ��u��J��#/?R��� yy�Ӈa ��7�ݸ��(2�zJO��?x���bC:w�Dk�F���1�İx׍�A臂 ��������a
��
�9R�r%.�<_�G��r)44�ȧ���()��M�?Ǟ�02&�a�8��b}�+�.��% ?ry����Eו���*�O��ts��'|��/Y�^�<^�0�'ߟ��
��^�K���*&;G���:����5RV�R�ڠ{~/O=�-v���J�K:��#ô�.o��!��9�G�`�L�G�B�#�(�B:���ѧ)vw32��g��6�R�*�)|��}3L���t1� �Sfj���;�W&I/.��B��26����iT���2��8�b�As'�T��@HW�������lj(�LlDu"�?��K
! *� ��$M���I�Q�Ng0Ms� k�4�ێN� ׵�Lf���n��XV*.޶ �wF;�l�����&>
�99K)GI�$Q�ϖ�V罤�f\�v*�,-�:%2ɔ��ʮ�m���&� A�XV.�*��X*`��<��`f�q�y.����}L�"��%]�ѝ���/L���]���
���
�3v����������ѨǤV-�nY��"9 C&�or�އ�|���(��Pfs�pM������Z8u'���&�a�pѦ� EQt�0������p76Ӧ�EB5�6����nRy��Ю/��q�z� Y� �i��� N����l�t:Knm�/��=��B����F����0�e����e�u�0����r��݇2L���g�ɫ�V��?�3N�|����m�*�xX���q���4�O_������R�wŅ|��r�B�y�/uMSY��r���ܭ^�����'��i�x�S�7xz�7ٹc?��3LM5�~��|�cf�<��}x�!�]�CcO������AUu\�fr��7?f�2IfԢ���LWf]<�n�B���̭��Ih��-��e���Ъ�Ķ7x=$T*�u|TCt�e�%Є�U�4݈�H�E�S3k�Ͳ���� �D3?�FK�V����Y}�!^SpV꺃XL|�'��ܟ�G$��Q�bt���1rr�Tw
�4H3����-���S��n������MqO��tc��X%D'�+q��q���KN|��G����^�}��ҽh���eX�+!CA��|��C�n���Ƭ(e���"��>N<��;�u��g>��R�cv����W���Y��ʓ'����G�D����s���SYr�"a��_w���C�H�{�n2=�������^R�i�����c��Y�eVk����y� Qw��J ��Mr���-�(�s�x�і
E�j$�lk;B��l���\�涧��8��� /�̖����S�4�C~�D�1�„p.����"�7����+�h{�l��UU�0,R� ��a^B�^�O��T٥��˿_Q�D�Ѩ�(*�t6V%� /6��.��|_� ����SU ׅ��Q~�o��1T(���Cp�R���(�L�P袯�0I3����jH.��I����9��yV^xDDB�B5q�� . d��!��a���c��]��:7���u�S�c/����Z�����$Q�0t�0��9�j�T���S�CJt����C�����SI�=˒���=��.��yv��%`nB�H�*k�$���=���G���嗿|�_���P(��xX��㭷���7�����9p�8�tf��z,#�مb�" F����%��ަ�h��#��F��gL�@�������o���?dz�&{�Ew���^j���ű�op��'Q�|��ꘗL>>�*�U!RzE'PQ�M��-ǹՐ��V�%�K�1%@�~���>F�6R���xM/Ѯ�te�3+�L�����*�6��D�x1K�r��J���B��dB�6]j35ѕ-�1����¬&��`�<B_?R�s��$��T��Xǵɔ2��[�ݑ3cR,��/�a��9.�� E���QB?dhp�������u���BB'L��Ԓ����n 8Ms�)&&���TĊ�x�o�s��i��̉^N<�e��-��Je�j��r�'�?OөR��ɗJ�^v�؏e��4׵����qZ��b�V�9W7�<v ���j#�{���R��qlF�,N�Ǖ���dQ\��ݵ��+��#l31���&��N����y�}F�M�C.�v`���0�4�dJ�]������53�*[�-��m��wk�X�-:�^r��I��� ��0:����W�qP5)L$ښ���b|_®�9�D �0̸N��O+��b����b��h�\��a�o��8��Q(t/Y{Ą�N>��1�.��-����Ɉ�TR�,�F�l���?��0BL^�
i�%�Z�T���ͬ��WK#H�HI�TE���^��`�m*�����tg7�K����5���y��w9t�X3µ�;%��0Lv�z�0Èf����A��ѭ�$�l����f�i�i��<L�,;���4�V��m���֖z_��4>~�'^�����x�����z��+���_\�?�O�����F����#Z�U ��[�7��+.��%wDc��̬Im���W��c>A��~���[4�3���2X����� ��c�ɮ���%4MǶ�Mw4�L!�����!��� %�Q$:�QA~��^Q� �?آ�X{Â���^�u_�� �e�Ů�B�>c��e�J�|o�V�%H�i#�u[+�@�$���X����E���ʥ܀�+�� ¬j�"'��L���V5��=�� W$�J_����V�w3m�*���5O��.�G&.���?�~d���rmj�û����x�¿c�o��Hq������_0vj #c`��-7L�L)�c8�HW���'�9�0�YiR��1�� �e�=��x�_�T�ITFl�I6����(
;F���o'���a�鎤Z��g�өz}M.��\�? W�Xf�l&�8�n% ?^��u��J��H7X��mKF�Z�N�j5q���Z���K��-+�������.���X�(�p�&��"����(&����Զ02�����$ߝEa�Ygqq׵I�A]b�%A��^K
Ҳ��yG<h߀n����D/�A�a�N�(�l�;�wI>_dz�.��CC�H�s�1\g��G�������K��^L �H�6��(
�vu����ZH�<���^���3�~��з�?Y;%\�k xe��^�̴�4�T]]��O�T��$���:š���#�����3��f��Ԛ�91���\�@:-:���+�D7?�!��I˃�<>�G�f �r%4MK\����qZA�����b,�
��㏿�_���_�%�b����-��2�����ν{ <��s��u`]MڕBQڮ�"��K����YHwJ�.:7w�k��0W�B��"�����&"�6]C���,�̖ncO1�D���پ ��:��5L��h�8�}�x^��
��$0l�<��|~ø����n6|G$���m���c�e�i�!<������;��U�� ��I�S�[,N,�5ҵj��WbB���m���Ԇ��B7�J����k�K0􅚐��ɱ,�(�hUZxM��Ѯ�//H�#����#"�ʙ,L,�6]��3��J.d�W��4����6�� �� �N��1���[���9f.�q��=^�G/г�g�k����A���!��3{y��M�;i���I��ǎ�^�|���� �>_$�B��B&�[35M��_����N�����:�,b�Z�/"���i��ō'���Ƹ�t|�7|�x�\�'p���O��H&�G׍R$rʮ�`�M]]b(��m���)�Ր۔|��j� ��"��l�V��L��߾P��Z�VyY;q��ɐ�o" �f �Ri2�|�����y�'X��鮰�a%�AssS�AWW_Bn��7~_��kc�M�H���)I�!� ����+��r�T*��3R�4�-$���"2ͥ�6|H��'q- �n���F�C�f��ɩ�Ti�_pb�RES�1�f'JD��w��(
�{� M��,�Bf�z� wX�] � ]7bҵ���/�E@���*�iaY��U5QU �4�{��j�l��϶eM�?Dz�j��گ�'��(L�*�,�(H���پG��F�@� ����o�������G�LMM����⥗~˺�Cs_�/6�d_Ȋ��g����6�܎|�5����7o]��Dw�?�'�o%�FDN�Ʃ4�ISEO��J[(��;{��/j<?�M��r|� ;f�kSY�g�>�����?bг��26 �� A`
�p{<v�X��I� #e��F%���������l��[:f�8͖KJO���"�����Ro�!((��5S#[��v�n�
�2����;~be�R���v��v�� y�T}o��p�,̌����w~��Շ�z| #e���q��"��Lџch`��r?5ξ�6�4D ��Ctu9�:s��˳�zs+Oy@��ˆ��SL��d���ܮ1��{�')���Ov�@Oy���a�w ��X$�J<JeV��s�Z�,!4B:P�(��y[o]`W[-�i�*?B�guu��F���o�С��� ��8�'��K���P���sc�L�dSt����ES�w<��jՅ������CI��v]����<w[<
:C׍�T��ܾ6r=��lq\Q����I�Tb(��lo�!�hz���P�ӭ�0��Q%� ���Ϣ��l�:@�IW_�e�Ri��,�ۊa%-,+��y�G�)���Dm)�@짔u��:�n��Lz�BC��$����[�����Z~�+�-](�j���.ʉ�v�x � Q$�TpST%�03fR`���V�z��~��:�p�nr�b�`�
�XE)}�a��X�w��佧i�.���!݌������B&F,�!����o�G:Wwޏ"gӖx`�)���T9 9Q��?�������}����>�â�W����k�q��<'O>�޽�q��h���.�7����R���eaNj>IwBQ�$�_��!NJ7n]���7��_��S����MȮ��R�ݤZo��aR~����~�� ��3���5
��?M*Ֆ���55N�}���E��ç����&BEt�CW8��% ��PPH�S� wۯ�Lh=�z�1N�H����*�u��V�� �m ╙i�$�m��dy�S��ۿ�5g[M�h.4�1O�_Q-qX^�k"�Z��>A�\&��W�]+kb�-'���Y��J�d��x4g�q�wy鱿���ϐN����AXW�&��;) �05�֭�ʬ�`��`W����߽��20-M��*���ɯ��Շ����A&����j�i�1���p�Z��$����%e�R�4A&�q�o�4=q��;�~�!���%��E��ؘ���V��m|_�u��:�,�t���B�(B[]� ��l�9UGԥS� i���ҡr��G�!��r
��w����V̝ ;�ڍ-Y�i��ijK��ړ�
�XsK.�J,s��j�����I�In�O�qA@ƒ�d�4�*��}��'��&ɭ��H'�f�OFR��K����=2�<�T�����$w r*��+M
ھ!�>��0�iV����qZNҤ����bޕ�w@\��K�S�5[L�c�0�vU����i|/^�3mP�չ��-�>h���#�'��CQ<:N�V����1�L�y4<O�/d��R����)T��x
�!��&��'�qQhmτQNW���߶�Q���\y 獵g���2����E�����۲���_ALOO��v�:ơC'q� �u�4%�]H�E��AKH*rT�. Ê ��c��u���9��}78�7S,%�X��>μK��M�y �e׉��Kc�AF���2�<��o$�2 :E�np�·�j~� 坛'��M�n�…w#x�5���۴Ɛ�&$�SŔ�֯ ��@��7?�Ui!ٮ�x�Ņ�fhXykM�Е" B����&�Pu��d� ܦK}�N��K�7]\Á1�CV/�B1MX�S ����{>v�!h������c�b|�Q��]�¹��2v�F�`aq�����~����n077��g��V�,��w3tl(q״r�wz��ǽϦ�/ ����8���k�
u��7���&Z+O�p��劘����z*�&�Jǝ-?�]��blj��&��#4�����V��a��w� ����j5u�U�R�D�45�}-�ڑ�-,��NS�2��P�vq�$���^@���� NogD���WU5�=� Wg#K�(�<Z�z��ʩMԱvX���R�6)��*��P�Wb�܃ߗ"���1�݈����1���;�B W@H���S�����K�?�s��bI^�1�If&�����K�{�Y�٬'arU\�!. %m�.�T؞�t��6D�=鐒���bj�6ZRE�gH�QM���2�1%�$SaE��S 3m��d�����te�4<4��g{�|�6�w����ɓ_��ܳ��*xV\�p]�jl&�F �n�Je7�,� �JcY��}�8�c&��D�t��|��m%���M��6s/�k�9aE��3�|�>����|��/166��}}XlsLOO��˯��P�'S(t377�a����I��R���ޡ͒W�}oC��ޞ�̏���1��8���� �� �ޫ0u��̀�m��^��w���ڻ� �!��6�r�x�_cϮ�+.�Qa���wwS8�Myg���Y�\z�2NݡwO/�\J�"�hX$?����E�'^vn��m�I�$S���6�抪`���ٮ� �Kʍn�?$���b�lwv� ���I��[�g�4҅4z�*�Z��P@�Vگ�|M��܊���<�0{c�3y������o��<��w�*�b;M��}�/νME��o�%�3�0t�Ï<ŷ��w���ҵO9=�:�x�=��#WΉԍ0���B �`x����)������/�-�ٍ��+q�\�٬ǝ�0�"����P��]I����u�ɿ�*�n��8
��x�4Ur�bb���
\tZ�d�ފa��=!�����m��� h�BnQ��X�EY"!�>/Z�"��rⱒ��zW����>r[�>Pb��z�~;�oC��X�V�����\��+DI�Sy�Ĥ����b>����r���%��4�$ߝ�|�r��("1l���a���ԣ��&A�c�)�������N��<�ju�(
�f���]+ҩZ&��?w]�H��`��˟)�:f;M&��� G�J&�&�|�_��V5a�i�l�c넊*mE"���Z���#]L'9EUHҸ-�K�_b�Yƻ��k_�}�J=+�_�������ܜ(Js��\ၞ)X�Je�}�F����X�(�L�r?�(�th�!�oi������~�ӧ��������.��=h<,
�9n߾�����;���R,v'�ߥ� m��b`yl��z׋(����ǟ���A�q����0PH����Mu�J�^�ʕ&ͳ
��Q�����f>��
�(�9���Ǝ�߻�>��������gԛ���#�[@E#dc�yI������U�)�ۧ�ޱ@ס,��F�2֖$E%O!�M
��s<���B9k�*��n�8�o7�i�b��l���4C�0P��f#!�'}�'כ�ʬ��VE䰦�L���; d��X�xD_��(QcZ�-'c�����j�s2""�;�����y���n�.L��0���u���\����?���O�}��yb�%���q=�T�Nߩ��TmX���.�\*�ޞ�x�f�9���s �b�w�@o�ZK��L&O�Yc~~�b�{E���s�}�� |�);i�&L�dWԥ٬Q�-&ch��c&&J� A2v�tV4�:H�k��B�2+�+B�Hr.:5�@�\���Qg� �82���ۅ��Cv ��7�Q\/���fc+C��0IJ�04]OwLV���^����� �} M1A˒ϗU� $S)u��F���K�i�0�T��Z��rb&&!�)D��[���a�z]�^��i:�������Vc�� �sb�~�}��g\�6׹~�3���;�%ӝ�C�s�%�BR��ky��~G#HU���M}�N�h�B꾵AQ�0b��<���gO���Qj�U꺉m�h4ci���_D��f�&��;�g�^�&�Q)�����U���}VU����:w�^�7�ॗ����1��`>,
�1�ܹ��o�K�x���ߑT�K�>��n�ضPS•u�U�&w管�s����]eT��)0we��Ok�;3�Ҵxt�K�~�{4�{�A)�����f �P�BS:�v4 .^<�;���{��`מ!��� '�**N����3L�^�P� t �P����%��^��,�cYֆ �����xa'� >�F�#/]�?�m”��,��ǘ���]M��ف����ܗ16�Z��l��%Z�+�</a�hP���<��,FZǮ�b;YAf�E�n�Kܘ���� ���H���u ۝K
�(���Ų�3e�::D���K�g��L��,�tz�(�o���9r�I� �K��B�uN�ѷ�/�[鶒F�f����B�٫3�����\��;i�1x3�#JIp�VKIH�K s�!;W[ň�@E���٭V�R��i�b�A��7i��1)O&�m���Y�㳸8G>_ڲf�pi��N)� ���ĉ�,�y�N���U�%"�\׏��a"M)%e�$fI�.C4�O����#�22�OH�6tJ�zRX��jm/ 6��b!�]�!���B�Υ� 9�����tEA�JeH�����
;EӴp]�ju�R�'�>��qQg$^�w���2�<�i��������KQIܖ�˲�
`�W��@pe��wUQYX����P��M�'�x�8M��P�p$��F[�V�9 ��i-� �\o���H�R����˿��sMe|�qv��a��;��r��aQ,��u�V���[�Vh6k��2�<����Df/�L1M+���&���J�vR�����݇�{�"������â� Eo��K^}��<��݇i�l����t��x�ϝ;W9�=�}{���R�����Or���c4 �W�����NP�z�9x���݌��_t�¾;N�zs?�����4�BjCE��B�f�x��&�k?Gǟ�������K92�"�3���MR��E�����fhm��0J8��(��mJ%?# Ϛ� ���NGD��W[���a�W[Z/�@@�<�CO���y�0���)B�(J�N���d����v�Ʈ��n5�P���ν[s4Zz����I����4��_���: �*v :�a���~*&>��fi�xzD@���I�L����l5���r���/8~�
�nLӌ�x�q}�G=E�ޤV[��gMSP�ڽ�NO���1��O5���tM�j�bdd,R%���B�a��C�>@�����>�L�H�c���ms�8�V[�ql������%D$o*]]}�f*��{^[�( #T��u���v�xi�/ο�2oV�q��> �}�:4Gt�dG{��Ҟ�@�{��\��Aw]'������'�γT�ai򼱤S��}����6侇�9l���8vb���,~O�ym>[�h��c�
OrJ$�Y�NZ�u#1�z�X
wd�f���/ˉ�rh�F"�H|*���ޒ�0R�K�o&�A"&"aC�n�hT�V�׫��ٸPC�c����E��~˓UI��TRh�Lܽ���y���.��� �a�>�M��k�"���F���_Jr~@�;���hUZ8 UW�Z.��*�*ME����٥?Γ��R�L�Q�ժ�Rɫ��0��j)�rf� \������%nZmxI��uYpI�P�߁4��L�Wz7��0�<l��Xg4�uv����³���_p��y�?�e=�2�â`�������{LMUy�o�.�[߮|e2�Ǻ�M>�0ť�����1�㱄D��ӗf��WWqo�8q��ݏ��
�b��� dSiP�_G�Y�mA�T>������x1�is��8f����@�p��<q
�4p=ѯ�)�o�Q>��3μ�:��
��qdc�K�H��Nّ�0�%f.����?�|*�L[)TM[95�L1CdnCA'Y�$F35RY1zu�.թjb(c��N�(jC�HR�M�0$p}���EԧT����C�[
�������#�p�\�N����� m�٘�,dn���b��S�-�W"�e��27ߙ��k�w��=T��/}Wt�D��$t#j�T/�(w�X� ��"�c�� ����B7�d�g7g�����s҅4ٞ� �۞0[�C�P��R��{{y�?L����-,/G�%h}bZ�n��*�k��:�k�a%
�0XV���e!dH[�$���I�(>�VIiK�j���$�Rq"���Tf&~ �ܾ�H�6��YI��4�T$� ���k,���I�N'�F9%Ttm%��ot_�*�Ih�$K�m7i�� tJ^K����-��
)�!t�f�$&����JGR��M�
�JS*���K �d+���'�J���*I��yQ]]�M�¨�����ģ!����a�'0$�n�y�\q�y��5p��;�mNAۡWQ`~~���+D�}��%��$�yU�4��!Z��A,�a�lj35MI�I�Q ��T!�]�i.6��0ŵ7nP��$�<Z7F�������3�J�^����L�D%�۲�|*�2�R�L�l��B�Mr�B���)k��N�y�݊���hLNV�73$�!�-l�١ ׵)�z9|� .\�����R.�ٷo�m�aQ� �!?��O�{w�/�7)��6�m�ڮƾpk�"��5��^RE����L���u��`/�|�o�w��V�z�B��CWW�7׍(�J16z�W���LD�)���u�����>��'N���m�hV�l>�iX�� �O���)�ot���aѣ�u�Z���j��S��Мo��`d1JӵD-(!Q%M�v7d�+���t)-�`����p�¡8�Oaf��#eP�+`�lm��V���Z��&
�NBX����]u�O5h�uiM��&=,7ώ�v�|���]�R���z7o]�̭7�}���S��q�;� ��_�mx�|��y���=_�kWW�>���W���$w~9�X �wOo���-AR6��J��?��s7�7�î�q�+��2>~�T:�j� I��k���=�p�^n~t��_f׳�T���,�ѧ����Ku�Js�ɹ��'ߗ����E<ǣ2��+��1�x���=������L��{���ԢP�m1��f�m.1����Fё��e��ɄVv�e� t�[�6����I(�����h\BQ���E�G��m�G/H� ΐ�w%I�$����a�u�����[۾m9���I��#"ȿ� �EK�~�*��B�D'�d+�#��$ӂ��U��JO:��%�����S&hB��J:��$��)��T�ܹA>_��w�l�w���CҢ٬�b_�S�0�t:��ID.&�A�_��I%�tz��J�E.� o��h6�M~�I�g"�-�WU�1����t�tc�,̬X���ax��͏nr���,F��29�{�.09y�je�|� �0)�h4j4�u�0$�n�(l����4�\>q��+5�X�v�n�8�X��Z7'�Qh��� ��<���8M �;H'���� 4��&�� �#]���g��/�/<��)����`���۽�uF�={�w�}]����_�6�%� %�-���� �h���?~���d�rF7O�&c���J��5�p#~��Ʋ����ן��x���U�&��R޽����\x�"�{{8v��x\�?��\�����v�>�#c'�)1�c��@L�������Ke��AIu�d��[��2��"۝%�O ���ѭ[þ��J �����)��R=��9XQ�s��+Ԧj85��@#}���fd�.��K�dP�{��ߺK4e�k�;3;�*�c�gQ�0t�X}��]]7�3v�ry��[LN��r� o�M��n�Sw���=���<��\/�a��2���F�;�@�b>�C��1tc _D�U��ݏ�X|˧?���Ǿ���C�A���Y�z���F�
�[���������.#�>��3��~�f4ϵ�.q�ǗX�\�P,�j��3f��p������y�N�ic��ln�����$7�u���P,v�Jm�Lhg�k�(�k&ɉ���(F�\�&��d� ׭R�-�l6��J��[y����[W�Fo��]n�Q�rj%�(�UYb�i�}hd�^v [�z�]��)��(*�f5N��N��4>��Hv�%�J��ӝӉ�Q�x��m��@29�w^b�ъ�.�.��B�8���a��R�>�s�i�f-��Y�����E���&�_����a@�Q����㰲[���,�� j�ń���?���,Վ�j�p���*��" �Li�����hF�5�0�(��� h�5PT��`�ұ��ʩ���wN�����U���/|�}{���.|���Nr����X28�+�I���)����2�,�\�����IIYDZ�׫1�+������A"[,��~F�8�e�0 3����K�UO�GjPREn{�Q◢�:�L�c|�o��CC��<yr��}Xl1� �O���� �>�,�Rϯ��FJee29EVƢj~�?F��5����������U�-׶���,fl�!ҙ@„�����T*����<q�׸���ޙ±m�D�����e��,�^�Jfj��c_bhh-��t�&�c��*7>����U��77��Yi�;�z=Y�TES���.��I���!&�J�U�^B��C�f�I���@�7��%U���J�)�"3]ܦ+���TLAI� (��l%3�\o��X�h�+��g�q��n\��|2�\�U[�"�,����t�R���Y�ҝ�������ap�^�ʣb€\����0���`��}�߳��2}m
3k1{y�01R��-�E|��ߢ�{��C䲙��N�"�k����4q]�:;{�����������|{vAUU��2�/����n��r<;�"#û�T�Y����{׹��=N�67��8
�?F!_�4SIr,HWvF�Ƚ#p�!����JL�$_b�B�w���F���p-!gJ���"�(���c��K� yu�� ÐJe��­���0VhIo�t��u9NkE�T繒ǫim=�6��F�����&�ʟɄE���D"�ӄ�3^~�UU$��l���$% )]{�>kG*���O!r�!̿�ċC:!K�|G��/����u[1&�4�#�\H}�)V:m�ϗ����Z]L Y�H�i�0�`Y�5��m�7�쪪���$�b9n,( tj-�YTv�\Q�ެ2?7MvQe�� ]�]4�,�^�^t�1 T�\�|o3#�J���ynz��t��&���v���ʝ�ޝc�:��}O�{� �R�4��B{�g�Z�&���f �L�j5�<�|�������dj\�W�d��O(�y�#��p�ґX��5Y���v#����߿�C�`s��w�Z%�~�R���~�w��?����:D&���V[�u9s� �|�9G�|��G���|���!B�sW�C-�Q�Zː���� ���,%˾����JK����f�a��w"��s�·ܳ��>钅Su��!�kM�tM����g�;vAXv�r��BΧ���w��-���`q/�&�;��VZ��N-�N�j�(��������8B�4�<[H�m�?@B|�Px�is]C2Enͺ�cW��[�������-�� �߀u?�/"�4T��3O���.L+���r��/�(E�0����ر��D����=B<�#C�>I.��n޸�l��}i���� n��k�t��bU��קi�u�A/�S��>��i���b%�kl6k�r�D���٬'F4R�_�q>r��}ǰ�4��"5)����R�;H�<������e�u�JĞ�G���Iˮ��8��IL��a+��<HȂ\$S�����J��[]H��9k�d2�-⾥2��� T!��&v��9I�&a,���8��ɷ2Y����cn{ wηk1���'"���M�-S'Z�dO�a�N����J~.�� x���}Q�w~���v�!�!��b՘�mO�[��f-�Έf���5��c�{E�ad"^(l�KGv��\Ȋ���"�e��g+�-��a�R��� $�Y�� ��ZN�u �� ��0���6�άZH�I�>�! �q`�)�ܽ�ſ�F~(��h834uҦ�L}G��QP�3� YR]��ጎ^˓��Q=���ű[4?����{�u�}�'9��y�ƈ��Q�@>_��m�릡��H�a,.Ρ�
�laC&eb�$�4�{��A*Qn
CQ��v���’�j3!ߋ�i�y.��D>�B
��� ��v��ӱa� �I�ux���=�?����/�˛��â` 1==͟������9x�$����j �`A7���INf�B����/N��5P��f5�g�r��먃B�X4� ������dIlz��VU(�DUT��}�⻓�=�Yo.�hv1��ωC����G� �͆xQ)*���½����I���֭K�)z��t�f��l9�(۬����I������@��/�6TDm�@��"Sʐ� ��F�tS��Y !Bp(BOt܍��j �� f�;�W���*�1з���4mm�^�E���1��z�!��!��O�U���i�*gɟT��5�����wur�"�T�T����Ǹ8�!��]Fv���/��<�!&Rm�V[H:@a��^-�I#*�4���w��w��c׎}Dض�c7������-�����(�9~�yt ��e�f��H�7 Q���f�N:�#�-$8~�n$ ~���DF����XN��;DQH&���S�wYV
�o�uPU�o�K�G�B�<�|~u����z�l[W\*mD�u��oG�sr;2�X.Dž�$w� �Ht�=4����7%�FD[�nA Hîk�h��`I ']��וC�M�@X���5ʶ"��LVL3u��p �_�.�pB�feU2�3�A6[H&vk��|�H�@:�%��DZXl�.�Bת�9��,w9�w�l:�{����7����)����{���6U���+���U�2� YV�����=�cG�L��+���w�q�x���8M�k�S��HWWo�nh4���Z�N�@�U�^_$��nj%ρ��� ���9*ERYH(p� /��ܱ>DQD&$y�����a����QbF��$B4�������� /��2'N��Pظ�â���}._��+������Ɏ��}7�ƷAv�#ڸа�ߠ^�p���#C���n��_�A��0*Jǽ��X��xA�ә8T6�E�$Ņa@._������ܽweQA� �]i��B�Ύ_�q�Z<z�Y��A>;��^}���1����(��ԅ �tϒ���<?J|\Q �Ni�m�>�r�V�E��$<��~8 ���v ��$gm&��A��nZ���P�)e���Z !ݻ�X|l����}�f���Gy��oP�����d��U_�R�O&HA�L�L6K��ȕ�_�G.�n~�l�
��Z���e��IS{y�;��#� �B�bp`'�����K&S��T����cC �|�+^ �d�<�0 1 3�,�ס-gj&��9���VQp���,}=#����\QD���Z�D�z3Ϗ�{4�u�E�<�@md��qZ��c�-Xtx7�=��B�4r���}�X�'����k ;�#a<�!<�Ht�i��6V�}� � ��v�id�!����A�$Ga��l��������nh�cu<�1o����@�)��u{�C�^M`Z�B�� o+E:���+�ma���؇0y�D��K +] �����fO7��$e-�¥�+H�Ev�A$��t.Vjr����RY�1��.IJ��pO޷a�wP(u���_CU��}�'^����S_�ʕ��� �Q(ts�������s���x�O/<��<��*'�
��(��L.1��jӍ���ry�V���h���\�q;�i�b5�zLP��u�b�w[� y��}���Ț:N3�l�uÌ���u�!�sˋ��ǟ���O�p�u�|�M^z� K�>,
0Ν;Ǐ~�
�<r�Gy�|>����F-�#�\��^H�X'�2�<���è�;�'q�E7�uFےx#��%f/�+��/��&�oğ��)|ߋ_^)FG�%r~�*n;�.u^����΃ �������FG��*o~R��˯1zlt]h͊�K�j9-ж�{(C3�6���*�*�<��ҥ��?lez!!L�%ŏ�:�!""]L3��>��q�ͫ������ ?��������w��|aʼn�늄p�ï�{��˟��t=�#,9tȓ��-�~���/�]�vB�u�����u3�vK\m%�����l�a�ѱP�d��=�\�v����p�&%k`�LL��~A��H� 1i WUy�R�G���`SS�t�~ٸ��m�@��A�������P43��J�A��<7��4�f��@���Ui+�Hs��� �U�
��CB�d���!�?R9j3!:�6�k^LԶ��J
I��l�v��˩eM� �i�F:�I�Zk%�Q$��t]�ѨQ�̑�w ��PN<ꨪF6�߰��ж����*������Ɯ㴨� Èt:�@�D�%�7��"��R�U��Rpo<O��d2y2�|,��~'�����ܤPz�� Da�7�y��+1L�DQ�V .E:-��E%s��(�*��K�����T� �r�p}��37;;���4�L�\��m1��$�.��M&"R@���X�-��i[��h� n���9z�Yfg'��?��>��â�W�f�w�y���~�?���3��C1)�f�� I6�}?��@�����&.�$�1�[w[�w�����p�ɖ��NN�{�O�����%�=m�˶�'�D5#�/J ����r���m�Q"�Γ˖�d����8ͻ�L����p��o��.����#t�׀!=�5BAO��5��`��O8��H�㷼�?��[�ZDQ��/�\9�j��^Hu�*�c���K���+"ן�ΙK|v�}Zn��ǖL��;��tg��DS������E������UTC��ؤ6W���)f��24������G �g)ƶC ����v�Ħ�eA���!��6_|��_�%������<r�Ç�"�ɭYh�/��x�S6����� �ݗxH,�a� |BB�b�N6�4��$$���d쾝fh��oh���_�]^�N�`׵��+�yY�4�W�y.��"�����(���0�Z�;@��ۿ}٤�<� iOo0䩐�`�V\�.;��>vb��0��Y dJAi�c��8��Z1&
�t�¥�f�.�3e&Ў���*1�ץѨ��J �iaVLn���ö[��A
�ʬQ�F1��$�+�JP.����H���1�Q�dZ�-++�;*���&׋w�P���"j7b�J� VND�ܪtx�m5A�{�ѨQ�.�J � ��"��R�t���86�P gj�F�{Pd���� ]�,UtRT4����N�bj,��$ m��$FW*������Z�����|����_���K/}�bq���â���?��O�22r�}�� a����m.�%� ���9�]>�15��&�Y�ώ��+�v|_V* L�^�̭��}JnO
k�I�=ǥ��|��ԩ�/��t����V��/p�wc��v��Y̭\��%��v����O�?�8؏��6��+���{��j��v�<�C�tL_��A���q�.��[� $�[�8F��ˮ�(jL>6uܖ������+a���Su&����m�v�1����2�[�!F F\F��d�~o`��_�K�h������0|t��E�H �u�ޢ��4�}�%�Έ��CU��!w�/q�y]5�W>ɱ�/0�7��#��[V*�QL��kG�,,L���bϚ P�����n���HIF�P�9��I����.ȋ�9����(�h����|��`&#��$!���m�}�c��H@�����!����N�mi���헥M�U��Voﶥĵ��H��0�bu/���B͸�)�ݶ[23;����)�4���f�������$H�|*XV� �Va�%��)�%�]*�?�|
>�H�%E�7��SL�D�%���2���0�V�躹"��0�D
6�ɳR�*�F���4�,�da�l
n�x����1_@�:s
�L�ZJ ������͑�" j�E4M#�퉏M���L3�B=����p�6�`�u#. �x��Şz\d--Pe�V4WV�7�����}�r��c���G�����G]w���(���j�����͵�ַ�^�����5��!� ;FK��Gm�Bm�u���(}�#K�F��2�/~�ř��&�z<Ey�L�h7�5�K7��{� �j��j"w���٩�!�YQ��Ep�ǯ�]"�U�2R�O�Q.��"FZg����K�^@臨��W�(�h�Z�����S�Q,�;~b��>^�#pQ8d�K{��
��q���3��P]�m��M��kfL��qL�w|�o�s���h�(�Wb|�1t�~YLi�#�P:���Ϩh�y|���."�%�����覧o��I����F0��_��s&�+�+�%��Ο7�-��:�T�-��#{Oqj��ݱoÉ��ep�s�w���)�¦̔�"�!���y^����w�4#!��#$�/� ۃ�iK��P���Ng�D\�$l� m��94MK �d"):�>�'u����]B�*��V��K�7�#�v�0[��q��E��|n,G�9
]������j^R�ɂArp�xKeT�D^$�[[[��a��� �l�T*�eY�0�P��X[n4M.W�TQ�ynL�U7�|�� ���#���(6�J�iZ�ә��Z���$���B>o�-[�7�����L`��߻K?kbYa��oē�P�E!�b���G]7�f�4��D�2~��P�\G)�k%�!����qS:1�iaۭX>�X���>�,k �Y�%�'0!)#/��le~S@o�0'N|�w�}��>����a���k��â`Eo����_��?ǎ=E��EDQ@��|{_�m\�*�]�� ���v�gO�0�\� �;��B�3sw�Y�������n�w�H��>s B7�1�@�52�<�����+�����ҿ i�01�J��$;����_|��������Į�
�s��(–=��~�WD�i:��`�;?^d��4��vq��'��Q�\�����Ѓ���5E��.��S�
h�F�L�ϵ��~�-M/w��2m����0w���o�s#"�dqE,�$�.W����W�g��
�w�%���+�8Q���o�N�=\Ĵ�%��� ��IDAT@˹�̜�F�ta����;N+1{Z�S�;y����'L4ϑSz8y�%�z�Je6V�)Pt��"�a�훔$��&]]}�ӛ��s&;|�t&ޮ�t�d�.&mQ\�o�yW�%���tvK�e��p]'�0��,�����\�M`WRnPB=�F_~ A���Mz�hů�(H�3�L寒��R�Ɗ�� ����zrM%�_`�S N�y]a#���T*� ��������d2�� �u�+�e ���=%�+�D�ZO$�ן.�K���Ds@��ʊ�|v���j!}J�u�R�H���QߊG�p]"�
��<Ş�D�w�<����q������Z�JB�DBO��t6qDv���$�b#��(�b���m\�L~F��D.���0����_[�J�a��u�/}�7��/�bxx���k��O��?�'�����=�g���N���F�%���X�QK�b��)�d'P�Tf�&y����e`�r����H�\�����G��.�{��uӷ��\oEU�����f~b�����+j`�˖�ԫ� EQ��p���֌���<�-�i��a� n^������ӿ�� Vd�m?�o��> �+|�?~�KG�.w?���ܝ�Fc�A��g�D(dK��Pm��bF8u�����0�Ye�4�F�s��Ҫ�)�T��0�忺Et-G��^+d���o14����d��k�X�v( �N~��?`��x� S6��0w�J탈G��bߞc��K_����߀;h�\��-�
)'���V��"T,.�������\��מ��M�b'�
�tn�ɥT!*dђ$F*�42��}��J�k�J�ÞF�ʝ;W)�N黭t��(�q�Dq�JABZ٥V[Hd���C3EGWB*����m )\�����Nˎ�vM
�R�K6���w��sۊ1�� =�yW�m��Degnn�n��6j"^�Je7�ӗ�(��w7M��4J�= ��Q,v��5} ���BNΤQ^��m5�V�f�'�K_� �G�� ���.�Rip��V��Z�� o���}oMiP�. b8R�h_-TUp!n޼�iZtu���X�I�$�mrּ�d�&�7���p� ��dx\v��&�t�LfsS��ϡ�Q� �߶����9�b�i���k��7�~��hZ��������I���h𓟼��\�'�c|��}���e�u�+�c�j�&&Q1�x��p�t)M�V��_A��t�4 �T&�٭3�L����XY ���RS�̘�m��in^���o^�o|�Î���*���0�ڼk�J��z�]�drd2y�⻴ޯٳ������Q@7t�D��AI�
��R���):�|7C����d9s���;��Pp�sV�@�N��D��̌��I�Sw�`I¿�u\
US�MA�v��>����M
�!
�>�2籫!�Qv�X�(p��C�w�{D�Y�L���QQ i;e�ݚc�Z���>�8�R,-�|�Q���:g^i;Wo$ �H�(��&�A@�E�fv�җ�ݻ�IgA�l6���o���J� � ƆI�޶[I1#�����S�T�RYv���"�VP�6��Aa5A :��\i���}�3����6] ���%y�qZ��ޣѨ��;��=���JX�z]� ���iT��E�T��
�$���,�D�$��L&�X���R��6�e3�����ö[��t���Z�B�@S;`�|i.WL&!��ǂ
�f=. V^��/�0�Z�0����戺���ZH�ѵ�
9�]�oB���sy�f�-�ݤpYm*��^r��#�͛�h�B�%�f [*;+�
B�V�&��^�\�lV4x]W�4�Rq*�cm����@J ��b�˜���s5)��r�VU�r�����6W�~ʫ�����;g�o}Xl0������_0:��?�e�K��傱V'c9�J�$�u��HMl9ʓJ@��R���� ��Gq����;�V'��k�� &z�!��̴A��&]lw�X�%
ŋ�4Z"Օb�w����q�&aȆ^��%`��?Q&�J�������~z��\����[�>�{ӄ�0 ��ʯO`S:���SPh���/y�|�ri�\��`�-4�@QU\�I�Yaz� �����{X���yEa��6EA���FNFE���`��ޕ��>j�ZW�{�C)��r������ �H{�*�O��@̀�ѐ�������>�yã�������[��&���"��_ ��<D�G>UI��{w��k�=�'0y/�f*q��� ^HΥ�<����X�<�S�;B������ I9N����4�D�S*�5�uTU�1�fLV[$T�Z��֓c� �wx0l�8Վ񼁮�w�p�Đ�ib��D�M�ޜ��(��.�����w4mM��M�H�S1A]c�y��_E�(��� �AU�
"����P)J��x��
z�];ϋȠ�(�r��'�(�|�+In7{��Z-;&A[�f��:8H
��E�ufx���mib1Q٘#t*�s#Չ�:�J22Ms��*��A�~>�(��X�gU�U*e���D%H8/���� âX�I|�|�#���dH�M뺁m7b%%�t:��k]7���T
�"���s�@�4�D���ݘ/bYVr<�5>�V[L�t�7��i�$&I������xK��ǥi/���������?�駟flll�w�â`1==�+�����*���S �fe�sI� �ȅ?�����QB�8�N�����Z��A�x�F�FD�7Ea0On4�r#H�� ��Rm23w��WG��D&�Q ��%:��|e�ʝ�Y�����������u��j�!�J(���$1�`l�0��T�ܤ2R�0P�N_NIo�^A���,ޮИmQΑ�ceL�SU&���P� �bP�W�V04�ݻSo,21}��p0�5�E E{��=���Y���̘��6PPPu���:�j�R��[T2w(�Z��HY�̺$&���ھǂ �޽,�g���V��,�Y�v�gX;ĉ���߳�NLk�U�P'K� ���H �X|�ϥ� �0<<B,%;J\��^����T(�I�f�NE��P�Г�߹s E�R�71%ڎp]7�oX��8׊� H0�A�'�-U�"�j�:Ql�����D��AC�;�Y�A:���%��u�����8y�5#!�&D�[��E��K���8B�tA�%��N"����h�[� ����G�:O.W�����_[>VH^V�u ˲:Iw�V��Y߂��j���Y�^��<�|)&��ζl�I A�M��`j�O�4�5��ྑ��6 ���M�����y%V�I�?�(yT2!����^c��#���+yV� �(�ĺ�8��ߔ��Z�-�Je�"}��I���j �e�묪*��dj�6�R�l!����]p�YKߌ��q�Q�^��&�(*�ۊ� '��mďi�=(���hC����qZ,.ΐ˕x�l&�mKσ�(�v#i4�PҒn�@����Q:]&�jr�����}�����S|Xl >��s��O���O+� �W,
�(ug;aA �K%yW���n��H˛LL�D�WT�F��1���];��9�Ro�|�����_�-2�0�50s��"A��0�J�`��KW�þ�d�~���]
�k�'9~$�4[�KS�F,a�N��?B:��ۯr� �|A%כ/� V6vj\��A�D,�X�����ގX�ߠ�C��"A��[�G\�s���y���<�����r�~�ߣ<�Mn �����$�AH��i�T.��o\�HA!�BZ��{-�>h��'*�\������b���Q�u�m
q]ER�Ί�}a2;{�:��,�J�� �L��c��IN��&���-I��;ձ3�F��\����<��� :��X슗����1que����H�G�YK�QJ(͍��ϛo��V��ɓ/r��c�6-Dg;Y��>_O-I"D��&I�$�U.��m�}��1JX�V���v��8���Å?�qf�k^�d�ອ�ۖ8m�kW��HN�v��J�� �G�I�43s��_�#\�A>_�r�-��Ѩ��l�p��*��Q233I_��l>񭉷��ڭ�:�ِ�������޽�(��u�-{*�⫩�t��J^�F�R�����ٿ�(�R7z���yv�K��#e@�ʂ/���S&�һ��� ��P�ք�I ���.2%SǵLUU�Z]�ҥ/�O�X��i�e�ͤX��>��%���F����� �9t豤�$`MV�˦���:�Z�DVԉ�_`rr�]����VBBZ �m�'� b���0D�>��(��ض��o��?�G����(X'�޽˧�~F�j���ߢ��/Nn�ŕ����yN��Q��G>��V�|�W�VG��~�ΐ�6��cۭ��Ӭ�Y��8N�!粄�E��3���n�����*J���vg�^j���[����\�����������x�o��V}Y��Q�����ν��,���A�C{p���w�;�#O���.Tv�� ^�"� v�l]��M��s23�<u��\�� 37h.��;T�Ŀ�(�>��B����g���`���L��TN@�4L�M®#m��X<�;`e-}�EE~@s����9fޭ��c�Yf›ԍY�i#S�X�Zm!� ����,{��{�~��JWwý�D�*�߸��?�NN���S�t�z�)dQ�1��6|hEU��v]/���"�#^\�%JG���yN2�2��i��B�$����x�W�z�4��b߾G��-Hr둵I�|��Vx81LC���{�Ɲl?6 �n^V*�4bx����䢩�KR�$
Bf�LL��$,JU���1%�W2)����{I�(‡�g?��/��C�ؽ��!w�Dn�9��DA`:�������f�ˊ���!�D��o!����ev�*R,.-Jd���2�N�*�3��=e
��}ǿrd����7+m�y�}?)��y�������:[����n$ߵ���J�a۽���K>�.����U���}���r~^E���ULDS�K�K4+�&��-����P���f�]�
�z���AIak�Q�����Rϩ<CCiJ�Ҫ��aQ�N���|��^|�wE�5|?��Z�U���B��I>_�0҉���(�JaB��6���%܃L�@�4����]q�s�6�=��w)F^��r�~���,��(��"!�0���Ktj�F��+��G����u^��/��K=+vW5͈����٩���1�`��~���'�~�=��{ңk�k݄Y� �� ����ٕ_�X`�E�K*����=��΃������P�U��p��H����9w�S��Y~�׾��������M�3DS��
�>�BK[d�W��ur�NS��b��ޜb�����5*����~��c��Y%��15K5��3��-Ҧ��kbYi��w��HƾR3y%�ˈ���@�i0��]Rӽ|�@W�����d3�u��Ql�(X.I�ѐ*(�P��NÈ��W!;uҽ�43�x�%�y��v�4��&����ؽ{Um01q��g?�СS�2�Y-D7W�} 62u�ɖ��5�sq�U< ��4C�"a;B�.Y
��%P�-�*�Q骬�N�&�T۹]v.��Z�ikW
��=��J�A�ߤn�ݻ�y�����G�_��K��e���9I[��۞���
��6�:�8N��_��Yh�F?/��������,� xp(�J����:����mS�ݝ������;��7�rƖeu�\[��z���<��&n����)�}�}�$9�\�q��(X#�^��|���<��7c-p�+o0�0I�31vW��2 �K2��Ł�ތj�UKYr��m�K/_�X�����CE�n��8Cj���ٝV@�U��E�AZtà8\�����{�o��W<q� ��������v�$�.�
�-���݄�W���ofn^a��A�v���)'�A;�NU��W �TEE��ޮ�L~6��g-Ɗ��u�}]#�rETU��'���s�=���T��sq�ݻv���k �O��O��`��Q ]�8~�;�Wx��ō�M��9��U�QUT�ipm1%�[Bvщ�L}�c����E۵�n�q�WQn�9��,Gƞ�2�B�����O�Ɏ�{y����be�B�������S$�:��<���
�g*���k�Z�]�'�2���k� �$�)��:���l��\�>���໨K <�L-+M�Q��},+��R�$E����K�DzR ɷZ]�Νk���_���|�[_��W���?����4�RDض�^ݼ��,�����؀*`qq�F��K��Ⱥ�C�Q���������4�_�xŗJnA��:H�/��`vv)ˉ!�vp*�~�$N�C����k|�����?�s�=�޽��~���xc�xX�/��2W��c߾S
]�v��\"���l�.T�� � @[ߟ6�.�p#Ks�Ʃ-r��q�����.��Q�j(��K覞$�W�6]���aKr2��\)G���5����x�tȡ�S��؇i�q��V9�p��щ��;&�ܺ��c����ӭ�4?��ʹ��G�Xe �RIR� �H�0�24����)I>�&�N2�q�a� ;���u���1tCI 0;v����ǗN���7gX����������~�F���#���W�����<qj�{vp��ܸ� �?� ��4���Ң�0qn��Ks�ݜ�m��z���dq~����>2�
в[4fT'�T�7)2@��a���s��'�.�1�0�佛,(h]P�3�� Q��X]J�9��g�`�8-j�Ř�@wi���}t�8�㤐��6�9��(�XC��n��I��+ݛ���� �U�y*�J�(���Ks-\�HlW%���y.w�\��^fp���Ǐr������_�;Ο���O�N���aѹ�^� ����j�� �D9Ir����퍿�$O%�ﻭN�I��Ir� E1���B���jDR������<�f��m7)�br�����s��[���066��s�0��x��E�
�!�����z��ǟ#�İGt��_�j�aX4�u,�g�Oq6[X<U����U2�rr����`{M̼A�7wY*D�'��+)ڄ���J��2��s��1�ǝ/�w�Q��,�&�a��)�T�b��N ��, D�� 5�X�СS�i���/�x�#�;.n٣�a�jt�.at
�̴��phη����b@�'���3�A �RG_�*;v�K��N(��C6�����L������������M*��~��w��?���O�0,j�&gn���ĸl<ۣ2�H���4�\|�2�/<�EE�c�I��0{���-="ӝ��{D����M�};�:�aמS�x|?]]���x�˕�ckUJ�%4K�<ҩL� -=�B�]t���B ����ak��I��Q.��7L��H���>s�Q���ƓP������o�`0Ž&Z�ҌL��`�%�c�B`yiL��7/p������{��%�Ns���|�����Q(t�{�Ad�ِ�Q�O^�\��I6[H�E�t�VMJF�����������ߎ��k��-�NR�i
����޸ذB��u���i��!u�% T�/��+�|�cJ�/��%r��v]·�0��X3+D�V�_���mÉO0:��>�խ�E7_ʢm'W�*����h�F���f�� �X�a)N�^�05�*3�F�̥�5����ʠ�¯�5�3US:>Hd����/�|���G�ر��?�)�n�ȁ�1�T�d��s��ؐ ׹1Q3��f��15s�Zs�w����b�����(-����4W&>e~f��;u�r�/��Lf.�r�g���MŒCiw��]d�y���z{�PTuծm������or��Y~��C���dx��8~��ϿGw� ������W��4�9���q�ۇ���� ���S-2]i4K�6Y#�18��E��~���J�2(
�� ����.2��0sW�К2{��s��}�\���<�D�i5{��sS�-L��(��M,3�b"ک�"�i�\��h4�4���p(����T������e3�2iԵ9̰��x���Ą}1h6�ɔK(}��S+�Hr���p�� ._����<_����J^ccc|�_�?�����=��b�B�;QN�h�$��i��n���UՓmGQ>QZ�
u ÌaUR�b�����n�8�X�h��0E�0Pܞ"# �d:,e�6x���]WH�9F��X���"\����X>1��_�ug��?��5�G��xc��aQ�,|�����|��������'_��57��z���i���m���0�Z <ߥQ�3q�:�������PE���=�=���+�Y#m$�CQ�*Q%����w|"���(�T.Ҹ����h!o|�|q�m^z��'յc�{��q����ur�0 ��K(
LM������U=���aMZ7=&�����ٷ��|=�A��9H�Q��w��+��ɓ/���,��~N�
7n]`��t����=Lo�к�lU��� Μy�����O��ۛ�<�N��;�7�������>g��L���F<<���,�-����Cԉ#��h�*�F�m'��nx��;�/���:���e�2I��O=[ed|/�݃�RY4U_b+/p�R�-2{w���v�>B*�!�έ��.4����He�B��|���^b8���4�r?���iڒ.{g'���8N[[��W�VQ�4@�,.�$��P��jCN�s���C�[hܧӹM��.\����3������%�ɑ#G���������3ġC�'�LǾkTR�L����&ς���}�3�Q"�N��/tܭ�?�"��"���i�DZ���zJ������~R�0��.�(��AP��CV�f��"��ډ��hxD�9�>׮}��}C|��HS��x�#�bjj�����s�Q�}����M/0��R(t�8� ,m|�Z�ݐ|��g���zmO�t&s߾j(�\�����~r7���\h���2�X�nB-���H�*3���9���v���н��[�ܡ��XI��S�4O��&���އ�����8y�+�<�UFG�aYF��뢢@e�¥K��t�x�Coy�HQ��38��l�( �Ut�4^}�O9w�]ң�r����RT���ʛ��y�"�x��,0I�Y��?��e0 ��R,�cR��9���'Hgr��a�J�</���x�������5����λ��������q�� Ν}�C�Nq����~v�[#d�Y��N�^���c/0�;F�:G�^ASU��񔪝�[���'�\=&1�3�x*%>ӹ��c`�2��_��f��3�}��{'���j��&����8j5�/�&����O6�GU�8a�.�F�l��pQ��T�Y#�J'�DIW^N�q �|�QKH���]U�XN�[K3��Na� l[h�[V:1�i�+�ߗH�?�J�&� E�/����7�0>��g�}�tzi�����?�����_�W\��)��=�@���J2}0�� ��Q��l�h{�b�Ab����Ԏ�YMm'Ë#�}r�����^찺u-{����e{�.�]׉�]J5#��Hz@H�u�n�hTGe�GUU����(T#^��)u���W4z�a<�_e<,
:¶m>��s~��7����Oط��U姤�:����?WI�sx�m�~�f�w�f�?�%��nS��(�����ǩ�_�Ҙ!�䘟�&�#2F��{w��|���Y��EFO���4n}x��:��A�)Q}{���M�����k7���c�"�+�(��;�S�M�x����?f�6A�N�w���S�����f�z��ً��ᙟ�-�V�Ў]��if�NQ�7����P�X���� ��p���H���&~����u*�s�(�� \$��u)�8���+\y��A�/tQ(���F1��Ν�ƍ/x�=�:u�lv�ꓢ�J���w��������́G癓����w1���te����/�F7tFv�R��277���*����X*a�l%�[�|���.� #<ץV]d�z�j��VѢ��O*���^ܾw�Џ���X�u�E����d���h8 �(�}$x~Qd�d>���L�Ո��T<Av�F�("q�l��K�/��w*�IjEQp]�T*�D=g�5����c؞�+�$N8�:��g��q������S.�oh���<�� �\��ŋ�����¶�D���}|�Tf'����Dg;Cj� �Ԫ���*���rߥё�4�e!�\������+$c�+��e]�s�Ӛ��Q�$�躄� A�/�f��p2��a�.��}���-���8u�Զ^LJ�0���H<,
:�ʕ+���[��=<x�b1_¤��8.s����M�h
-���F�I)�ˎ� �L.��r[�l6'�L�Bww?�;c�oV��Q|������E ;��s��f�\��7/�&��Q��2�Z@���}�I�����,�������W��xo>⩧�ٷwW�
��]�~N{ ����>�34*5
�v��Z��¥O�<��ɛܘ�v5�g� ��J�i��\�p�މz��Igr�v ��O���(��<Q$\\��0v�No���%R��wE%��BF,�i'�`}#h'ߍF�?|�fs�?�������U���=z�K�~���L>�a�FH�Ni� _���4pŰ��T&I$��GU�$�����-��os��E&'o0??EU�f�n*UnM��� ���1T�~W_��-�?�����1�+�a,F�A���,�4��f�����I&�siE�'bz܅���3Dv�����@ |{�Q�l �Z��� �� 39y��'��3O��y�0����m��?���79|��Xӊ������K�`Y��.���X�ڄ�\�p6r�2��lC:
��M����d��I��l��9]�mZ�u�m�BzOl��v�Y�J�ߤ+��:�j I��8-ff������3�SO=��K�0����I<,
��}��>��/��ȯ�����.s�V����+|~�M.���`aG5�����ph�)~�w�1f��86�݌�0�� I��Zx�C�m�z6��ZQQJ Z�4�B)�Y�����#�{�ܻ{� ��g�������9��û)��d 9��E�7m�]y�݃�N�,�<�4�?~��0 �B����A��y�_��_���LMݦ�X��/�ӧ�f����f�@�4�n���ݏ���M�Y'��� ����>��R�6Tbl�����������DQ�lw�I���sr�����ˋ/��n����259��=���ѣ�/ډ���
=E�#��
A�Je�d�1��NH�a�NG�����t"��'�o��ٿ���'x�CϾ2O;�^R���ʙ&V&E!'ȭ�I��r뺾���w�E�J�'��υ�{ww?�l�Z���=+~��ÐI�Fr��do�E��, �������"���}�÷��mQ����G=�ѣGx���y⦅��K���걎~�T*M�_��e* _"�������F"�Bl��q�7���ke�Z�ِ!D��yn �1:`5Z���H�.���0�6Wd���Yd>�9��ҥb���ډ�>77ř3�s��������&��a<������8��}>��S��Q{�XeB�L����ٳ�ѵWX�ޤ�[e�;{( �q�/�s��kLWn19}������J�UǶ�^�����W�����+�v��s�ϣ�^�w�(�ިB�Jg�4����X}Eef��7gy�w���{M��\��K/�.�9kjwS��'��N�|�Ȟ=���"�-���}��w/�+C'����͵ݡ�O����ɔRL|z��O���4V*�q�v�l�I����ߪ�,�٬2�0Q��/�==)���l(aطo���y���Fȳ��iFO�$�!���k�`�0F._"��&�U�)�C�L�iR�-E�T&�����;\��!N�,�$S�b�,�����a�������}���_�k/��RW�Ġ�f����˅��ƒ)����$��7�#���lc�'�F�ܦ(��Ɗߢ@�������r�3�������~zC��կ�ȭ[�x�Ϳ�羽콡�iz"�>��"���v3q\n��l\v�ÈZm1�ex;��Q�uu��$�0�7uh4��qaI����ϕ�yE!�͐r�ۡd亢�/!g��*I�L�T*�����9�&���79~�8�Tj�_�0��x��8~�s�� ����ò�D@E�������f�Bӯ�9����#�A�ttC���a�D? ���ٟ��� �;L.W������W
a���>��^z��1q��>�����c,_D%�|jj�����0=;�����: ��������u�'��|�si��E�b�������UK�Z�ЧXtc?�f���|��GQ�Zkw��a�����"�+����w�����A�J_9�{;��b7A�jFѺ �F# ���[k��
ׯ_�/^���Y�8{�c�������3K�v����SO��>~tKO��%�$E�*������0M���yB�Ѩ��^F� �i6�|��/�50o���� 7������l��D-�Rܝc���`'��� C��BJzn4D��=����0��f��$D����������y��'9r�Ȇ�g||���z�+Wn�_�/��]
��2���"�N�ϗ(��u�i�j��4=N�S[�-�PU�L&s:�v�����#���� �K���In[�he�fai��W�i�l����m7��ޖwM�Ť�E*��0,8{�n߾��_��صk��}��x�al2�W_A�o��͛���q�C�N&��������k�o���p���3��~�$�����ugI=>J*7���u޹��4�9�H�h����y2 �b�L&�g��1f�� �8��$�uǵ���F���o�s��(6���h����������w�]g�� ���>�M�` �$Ao���說����eZ;�� i��ژ�X�cW�Pό���Z����2�b�]E$Ax�=. �޼����;�d&�ґ��0 03�=������3���IV�z�� �
E�I�G8��&@�@Tų�d��o�a���FW�l/
:k�?F6��D��^<�[���h��i6
�l�p�X$E4\A��
�S(���TAp�Ulۺ�Ϫ��r����a��լ[�n\�Ά��{�9�}�'~�xm��9M�"}�����$UQO(���S�9U�H�f DZ)r��� M�W��.��]t\�B����3W1�f)l��I����|j��H!���#�E��a�z쫯�za���qL
d�O��5��
�~#h
��¿�}��Ή,CooǏ羚����gΜ�q���ի9w�<?��e��e�b�}:&]7H$RA�m�f�D������ic.��mi����.�EPW�L��*��~���)k(�8j���\.HAv�� 4)N�M�g�iZ�4L�=u]�i�K���$N�:�� x��M���L�P��2�(c<�F7������O~��Q֬�J,ö��=�-��~�k��D[4¡(-�̤ye�p��"��A�U*g�(=X����:v�9�ό�ET�4�ѽc|�-^ #�����ѱJ�m~��ێq��jD���� ��$�H4�pl�i
�{��c��Á��o�n��T7�u� '8f�a`��#�w����2QG<Z�$I|��m��N{�9k���V�̣?����V5�RY[C�"E(aI������C�~��Wxo_�����x"I2^C�X� ��Sϲ|��q��a,]����<�|�(Q���A���`����T#��ߵ��bزĪj.��T*P(����șϨ\G�/P�ldɼP ��3�3�j>���%K ��0���{
��=�5�}NJ�I�د됝��ާ����@�d�8m\w�NU�Ž{�eݺ���.�������7��or��������f�[��'���O��K5���MJ�R0�,s��O�S'���O"3��`�7�'��3�6}���#&�}I���J"mZP��E�T@QTtݘR�8�Bh�ib�z�F7Ǐ�F����˷XՖQFe|��F7�|�={�r�� x�eZZ�8�����Oە�t.P�*��� (�F�&��>�!��⠇uf��AS���ߝ����J�a�D"c�b� �X�����B�$�"=�����B�ܥ#�>�w�5
�� ��$V��*�&��U����2�z �&�۹9����d�&B��=�ˍOG�����~JjZ�i�s����j:����McQĈT��Ѝ0�ێ�v�,zL��q���H�xx4����=�ޓ?�6�B�NE��똃6�:Y�j=�ׯ���bܯ�y套���Oh�v�[ƽ�n�,R�Zo"rwn��=��c!/]5�嫧9~�3f>�DC���\#�dյ $╤R5�6�y]mL�D8Wqo�%/#@G��z���8�����F���n
������BQn �$�p��!��k���? �n��: ��G?�����45ͥ��vD!����B`E<����p8���=̢'��<w(eDНa�!���ٸc��v��V�w3.P�m'��$�H���$H&�1��������.D��T�q�do)�ٳ�Cnܸ���KY�lٔ�^e�Q�D��n
����կ~�ҥ�hњ�`7�}ƙ��䫺�]��ec H �c�Dࢨ
K�q�$�/eQz �h�PH��Cˇ,K�v�+]g�|�$�ZVcHQ�n\%���(MP[9���!���p��i�H�i�݃T4$8��f,e�\���%jk�D��]�u]PU���:�_���n_����ad[%6ˠ��c�#C*:���9Kynd� �.���F���}'�,yn3S�X*|�M,�/(F3ZV���>T��?�̞={B���*�f�����6S��]%�/X��'������FQd���G-�|�S�h�
���z�]u*���n+�`�D�^UU?��s�����w�X�S(��u}L??��N��;�I�=�@4j��⋩���?�{�\�|��z�ŋO8�����^x�7��-ǎ�����3��������D�����f͞p���
�F�B��]7�l!÷%�$�L-~^eY�0BF�+�K��vQ,����c �~~���c���˲���ې��)�d����gٻ�}��t�}��q ��(��2�(|c����v������{6mn���m�k7��N�0�&j��"��OKP5���ͤG)p��a�*� � )e���@_�o�����#�;@����y�D"��j,�����9XN���mWOq#t������/�Q9����CT��4����]�+��wF�.D# �>�]���<��)�
�+Ek�� (oc���<'�@�"ۿ�ŋװq��Lo��S!��h4F�P7��NP�Pȷ5�;�'���v��^{�%K�L�DUU~��p��Ev�>����$�I"�8��'.rtu]����P(zka.AOo'��P[��ᄒ�������T-�S5����}t^i�C�L,Q�a��4�ž �����$GG��R0<����?)v��w���j0]�������O�BU�y��2�D�h4�K/}���z�C�>e֬���4�^�1�]�� ��p8�Y��4 �
�����3�G�?�(��^��䮳� pI&kPU�H$��%r���@�=���^�q��o�.��ԧB��!�Q*���_���6md��冠�2ʸ/��m
Ξ=��~�˗?LS�l"��b��`?����=���1*g�Ѝ��Bw��(4��G*us��#ht֬~�&���+��(+���S���S\�����p��݈0mz ��2f�#�:UU�LՑLTq��E���o�3�Q�1N4�a�Z:2�7;��]�"_O�}���%J���v�q��ĩ}"!9� O2#��U�[�3p���z�p��.����q�e�`��C����R������@��a�OBX.
���6�^>ĥK�8vh7 5 ~���J�&���h�-[6�����;~���;��а�����vP]�@mb�����̤��ۆ ������H,�� �S���}t�\A�n�X��%�\�����"���0{�"@"�ː˵Lj�*�4-���{��V]����8b�1<���p�"ј�㯣$ϡi��! E�<"g��M���ðټ�Af͚9i����<��S�۷���s��Q��i$zq�X,9�c�^�^mD@^&#�w,�$OT�ɾ����p`�i>��{���i`a���������v��OD"1�*uһ�o�b1h$I���o���x��x��� Ae�q���tuu�g�>n����s����u�����ۿ�+�g�ؠS��#�PC�F��H�s)q���b��ETT��TWQ�%�T*Q,�DbH�x�
q��-�_xUU6�a�3ȊB8�p%K�,��d�J샦)dK:n�q��<fe?�u �W�^kbU��\�8˧��{iH΢"YE�MS2��ΜG��w��=G��Bi?�EP3c&��2p��t�F�d
�%
d�(3Z���<�x<�i�5Q�O��Sm��>�]OL�DQJt��&��a�%N���e�{�}��k�����={֔݃7n���3����ĉ����S9��X}3�'<_��^�7�����M�����9ҍ���G�K��4���"�pH�T��r��nfEV��e#�f�����b��i*^ؓp-���}��N��h$f�+�~r�x�&�w���[c�����ߗ��
z�EG�ev�~�5k���s/LI�+�2555<�Ѓ��׿���`��ŀ�f�ug��I��4�[@�=�n�|>K�T���`� � �j����(S"�u�\n�P(�� ��@���q'�_���PU� ;����7)�xV���|�8W�B�u0��L?��Hee�u�V3mڴ�y�2�(��)�7�)ؾ};�w��u=�f- �����3;8p�=��2�[גlJN���
���gv���$��b��uo�T<���Q V�D�5���#�U <���������H�/��}��i�Q���v�\<��T���t��<��\ʼ9+��4��kW�|�4�kQ���,eh�j��r���[9�.�tr�ʧ��KTU���_���9�y�]����� �X��Qtr,]��Y�KI%j���u�o�������ڷ�,���k�e�9vr�=�TFi�?A��E;���+y�'����J�X�r� U�9�Օ�'_ \B��8��d �G.w�����R��- ��&�׻QgƘcL#٘$ӓ���mp.��G�2s�4Mƶ 8�µH��B�b1��j�J�m���� m�����%Vh��3��S0��WF��H
yv�zE)�z�rf̘>���e��;���ҥ���M �)4M�T;��+��4M�4K�XYP�5�ϟ�S��
�4�k��M|],�hn����,P�
�@��m��ܵDc�7 "�oj���WU5��ҥS������˗����*��2ʘ,�qMAOO�~�]]Y^z�EE�P(�������O�1gK ��؄_�uD�c�6���*MK��_r��>'�d��Uط ��3Fݦ{�eY!KP(d�7o)]�6�t���Ճ,k�8�
9�37Ъd��V-}� k�"��p$�C�_$������'?����#'>#�eAx�-�ٖ�P(e��"���-:Xy�dc�� u����I1��<��������Ghh���&N�ܺ�]�s�
�ag>oݧ�X����S,
Zҕ�3���I]u-R�C�n*#�<��ì[�n��DX�h�������*�Tb�+ܸ:�����T��[G�&V��(�BjZ
#�/m����q��5�k*��MͳQ�+K�"D"q
Ao�g`�I�I$�p]7Ȥ�sn�/r �q�C���Y���҇��?���m���k���6�=�(˖-������f˖�~������y��RW�8UM%J%�SQQI8ö-
19��Q5���ӝ�5sŢX)״�[2�E~4ӔD��@���o�f�b�@��GQTl[L͒�j`H�=Y�͆��u�#Gv I�x�1���誕QFeL �QM�eY��7���'�ڵ���8 ˲8vl7��E�m��~M5V��p���fޤ�+aLdUF kD*#���*.�u���E�ҳ�>}.~�0�����Y$IbZ�\��X͵���d�F*�iMsx��HGW�ك̛��px$o��^$i�gf�(
�}=t ^`�ѷ�%���R��%������|�P=?E�Ϋ�f��K��2��ʪ:V�y�މ��eY�^w�Ǿ_��A�/B��a �����8�H18�G(��~�ϒ��KE9��^z��<��C���FGmm->��~�7�?zE1h^�D��*b7tB��_��d'˾���5��������(�$$��܎�t}�f������cX��eų�t��. �������"���M��W��!��;���|�<�ǂ�Ї�������u��?���0�7?���A֮]K[�e�����0m�\R���_HS�n "��HDZ) �f�|>�� ����_��N�ۙ,���P(:�����=�����襧�MӼ��OP���]���7��8}� �����^!�LN�+��2ʘ(��_��}�w�ˀeY���������ql�Çwp��G���4��&R�*Z�@R�n�h�l��E��b0�BQ-���4��Aߍz{���}���N�$+��dWu.G"%����p��b�$+�ma����T7B^EQ�E+�J���0�D��]!��
&fM[LU��T��ڪf*S57�8��4�����S�,��Jf�V�v�,���h�MӉF����<fDZ'H��E�
3K6;�$E ���8�~�@U�W�$I��#N}� Z�[�K5���Zr�ޫ��q��/l%;S�J��{PW�´�9X�.��<n�u����*��uJH�so/G^?F���Ŷ,dU"ۓ�§��ճz��L�>̉�b�W�X�#Ib�
����G둆Q��W���pW���)CTkt��;@��M��go�ۦ���2<$ͲL��<�t�R�c�v���?����u��}aTB.���N{{;s�.���z���`��� �$�������e�K6�ɡ��y�"��=𯇸��eG=W����|+�b�@$e"���Ѹ��1Z�ss]�B!���5��׻X�I.7���D�q/��="������T*U�QF��1��B��o~��/^ RY��S׉��ˊ�,�&VCBBVdo ��cD ����]��*XXEK����h
����)�}-�Q���Bc '����8�}�8x�C,�&YYES�l*� 46κ��Ml��r�)������)V� ώ�uK�����Zl�P�w۱��aEQ����Z���v&���n�I��Ec,��۴(8�
0�%��h ��BQ2�4�YW�2܍�d�JE2�4���X2�^��:̡I�/
�2�����Sbl�"YQE4����5�>���U֭_���dG"6o��c�<���A*�2�2��$�W �9w� ]牟i��N�и
$���\*]!Z��z��f��}�ٳǟ�+,omO �V�A�t�
eA���r���Z\z{��F���������8~�5��6D9a�-��O�i�C9 �� �\ ��u-�mq��.^<Jss-[�l��W�̙���������9s���F���ev��J��o����7:7-p/�m�R)O���E�T*����$�M(��%�T�"9ȲB2Y�Y��(��m �bQ4��W7q�n��~&�O�۱����x�����+7e�Q�}�oDS`�&�Ν����(
�%Q��]KM�%^�D�*�9��U~��ƶ�Q�v�M�$~ƱUA ��.
���$QQWA��ɥ0Xd�J�V;fѤ#�sn�A��9<���H�����������0���Q����9/�h�_C8���EʅB���{h��� �t($RPS�Zt]/�y�ypD��r�F$o�����7�G���ſ/����!�!q��T*�8V��)A�Pr��v���nC(��+�����u�s�R[_��?F}}�zoJ�Dee%?���˿�/d�i��]I,g�� M�T��kW�3;��d����
��A.���j�,r7H���4/c�����q� M��6�� �ZE�`z�-šʲ�K��_[��G�s+�n�lN�hF~�4�~���^�M��{ï������q�K��������W�0"�X��iN�{M6+s��n�����k/����Ӡ"��V�d��N��AC� V�X�iN~ۮ�R(�QU ]��%�O-���a�6<d��N��'Ǖ�};�v͆���e?YL ��a8�H��8&�KN�?o�[�/��A8�ŋ'�r��f�}aT�2�(����7�)����w�ò�f4���%��:�B�X�(�]�?I��#:��X�v,Y�ĉ��c9X% �`��.jH% ��w1� B1[Ĉ�̪�fV537O�6m���I��!�ٗ�1c>3��'�� �tFk���5ϒ���V8B)�������������(���?����r��A������P�W@��'��`�%J����J֌>d�ƶ�/�D�o{��/vF�}Ȣ�²�,ZeA�H&�ު^�p䎅�XỬH�L�X�ԩ\�t���444�oc�,ˬ_��m�>dϞS<� 7>�,˘&�mY�ܖ%#�/O�d�:Z[�y�E"�����R�u����yM�AE������|%S,f�f�8^^��ݐ=�]���0�J� ,�q|m��/���}�OA�, Y���C�q�`j������$s�и^S`c���d[Èx��������;w���TW�<��cNq�,��0���2����Ǐ�fΜ��P�zm]�U�A㳔�!g�!�O�lv���^O� �8b�||��7��,�'��%�X���͋ ��>�M4��@��ODC!�%�L��yp����S]������z��]Fe��E���;w����}6lx���U��0���T+ q�4@5�b�l���*��E�(IJ"�Gt��6.݁$I���!#+r�$���tuz��?�+j�3Y��I/Z��B�|-Y����� ����Z�_��be��죺��*��֦�[��.�gv0��2U���շb����ǹ�o�+s��kW��U|��HS�`u��pq]aOiY"A���T�&����Bz@O�ϭ?�/2AC15 ���b�g����=TT�y��H$&/��x� :;��쳷X��!O|�F�_�.��zx��n`�8��O��ɎFF�h4Nuu}��ɲ:,��ƲJ�%l�XD׍�%M3<Ai�PH�LS�/~Zr&3�����+���T��p� �����28�C(�q
� �*~�0�^0�B}��н'��e�w�TU�y��o�ǿ4:�a�_����8u�0;v��͛��[iB��S�D�5�p@�:>�����������Y�����j���M�D�_Ϳ[�!I��,�@̣J( ��Y/7���J��^,�c.�`��m���ƒ>8%�]Fe��E�k�?~��?��x���F�]>M��A� I��'IZX��-b�,����7��^ kȊ�$����
�,��q�mh�F�1��������;����b��X8o-n~cԕ��T-� �a�%���G{>c��uT�jG9@�l3����O�P�udM����O?��?�[��u��46�:Ss��o�g��t?�����Ux>犧{�D��@A%�F���DYQ@NM:�_ض�����\�{��.�Hd��/�/_ΩS���������f��'�Dbwh
O��L�cݿ^�z�o�c/&C�Q�ɐ�M�&n�4�ϐ�e��0�ax���:!hMJ���/�9E Ġ�Y(dbW�~�&ˢ��u�W���^�ojFB�K�<��K�N��ëyꩧ�t~���������پ�--Z�a� ��㾆>�]L{RFdҴ�d�&�XE0��)[��@p= #44w�^6��X̓HT2��9䲤�c����M�*!�Q/=�v\��J����1�۷��M�V�~�zB��[��QFe|��Z����/~�s�y�c�x�,X���OQ
�I̊`�G���-3o2�>@)_B�b!����Pԉ��
8�hdU8�x��X2F8&V�rn��4��L'��#?���~�Hh��x�EB ܢľ}�����d2u��z��mg)r��6SY��������ߐ����Aog7��`~�Z�RM���r�T�r���Њ��&�F(XUSա���f��:d�X�� ���>r3|jʾ}q��v.������H�K/�dY&
�������ʕ�H$o��B+#RZՀ�3^�)�~S�i�k
�{���{�>�E��\�w��G��cݣ���=�/����m�P(B,� (>�{F�oq�i� �?����TUG׵�ݝ�(°��� ���<�̓���|���N���ho�Ε+�Ѵ��s<*W�,cK��}��Bv*�S�էeYD��`*3d ��-?/����F-z��07�ULzR��8��b�W�[L���.�fYB[188��Sؽ���������Oɹ-��2��"�:t�c�N�ճbŃ$IZ��p��S�|��ͳ�U��2�u�-�ha�6�㢇u�UV$B��'�IA˴p3.Q=:$��F�r+*����S�W9�s��GC� �,^O82rEOQ���������ܹc�J�fqT�e<aڴ9$�������45̦���ի��T?��WO�/娫m�e�TU�X�{����0�nt�~���q]������4�'�V�=Y����`?۶��DBᡇ$�JMɶ'�Y�f��ؾ};nG�����g! ;�v��Xń�^��4�A�6�Ub���`Y�1�b���Ӄ�bq���J��w]n����aN9ƈm�����k�Z�~��\�3g��y�'�|�e˖M�Ot]�������>�;Z[דLV��B!O�T�C�(v� V��X,�ͦ��m��>���
����hu@4u�E��Wq/�?�����i�����p8�� &��a ʾ]k>�QQQ���G9xpK�,`�ҥ_�Ume�Q�T�k������o��+��c/QQQ �̟����A.�;���9fn�N�2�$Kؖ�m�HHh!�Ts�R��k{��)Z8��q1� qE��DÂ�-���Nn����9s�H��Em�MM�y�� WPS�8���q�sQ"����W;�2�~�M�ij�{d�i�O�G$'�zB���(d���C|x*�_��s�>Y�$ID"q��ܸ-,G�2�rN��Ù3����$����x�b}�>��ub�˖mD����G�O�my|g}�S !��à�Wp ]_;(:���n ��7|�7�������嗢yC��Θ�`I���6�}��̚�Ċ+�t���X�p!K�,�7����Ox�H$��ŀne�v���7~~a-�"�R�X,9)�����vM5����[>G�T*z�����L.7���=��n�`AmR�d!t%���ڵK\�~���5�����2�(��/_˦��,<Ȏ��Դ�5k��#��<���zv���7��b�E���DSQB�jX �,�da�L���fhS�ha���T( :����bD [��<@�Ǘ쾥(I��'�TY��@@���r��aZ�|�_���sG�]��x��Lf��L?�}7H$*I�j��\�V;�Q�y��ɲ���-�&��7!¥Ȟ������>z���Z�/�����㧞z��_�S�PYYK"�"��D��i���D[^��Ӂ}[�����}��ƾ�A؏��w��<�����m���O�p�ڱb��Z[��{���ˉǗy��P�
�\���S�dY��w�P(J,���i8|�!�q�L�Q� 7�bYfH��e�4���nb��hbX>���ϲ,���,45�A��eQU��Gw�o߇TU�X�r�=�'�QFeL_���KD>���?�%MM�l�� �1r�IU5Zm�'�G*:[h��N��@�*6�!P4Q(��rSFY�$ I�@���1�$�*Z \ʲb��47�u��_��,�|�q��3 P2�"��QHī1B���9~|/'O�C�CTW7�LV���PU��U@��~�d���}���_�f9s� /���ģ�>:�}�*h��ܹs��?�}}ioo��i6��S*��A{{=�j��.E�'T�
����_'@�c��4,�ll��,���9y�s��[����U+�'��"�8r�s����qB�����x<��j�9���� ���X������(��x����S��GH$*I&E���@/}}�d�i�3����`HT���&S�&&���=�y��݆����/��h4:E�QFe����k�d2v���ٳX�h����T*28�O&ӏ�j��ne���H9M����z�M2EUDc0E+J>dE.mӾcq+!���m���(�f������M�_4��0����`?��7覯��� �R�t�ɒqmC3���������T<gi���x 1]�M�
�O�������ٻ�]}�A�-[v_����q^z�%b1�ӧ����F(%M IJ0��fӤӽ��}�JE���5�\��t��U�}O M��� �кcn*���8p�::����K˯�̙3��{�Ç�q��q��Y��oM� ��D����Ktt\��D!D�EΟ?�O��������[��W��nL`@�UU �N��ө�iDQ4��<}}ݤ��A�0�[��1 �O���i�D�q���g��M�X�bJ��(��2�,|��C���������ƅ̛��H� �-`�� ��w��4�h4ά�K�ܿ��R�#E��"��*V�±$yb^��u]���Ґn�R'!a�6���>�tQ U��� ��i����d��TU� { �m�!;�K��X0o%s��-�hh�ə =���1T�˝�I�j����D���)ɾ0y��4 �v�U���’==}�8��������/�:�Y�illd��M���'��������m�(�V�U�m�� b��A[��5�x��ڶI$w�䯺
J��D�C�q~�&O����$��g���7γz�2.\8�+�S�X,�SO=Ɏ�s��f�\HCC󈅃!����>��#H�h��ٴ��{nAw��˲��t�4��3nt�s���t�\"����oyAc��i:�^Ŷm��*t=���X��M �@7!,h5o�y���4M
�܄��n�}�;�}���1o^�?��-�2�(������m���r:t������3R�Eګ�����3P��dԪxW�R�/!#�� � I k2��`�,V�L����XE�+�..F� V�\�4�No�7ӎ!G=!q��{����#��PQQ�����P&���[[�Q]�@&7����q��%uԴVp��Z5U��������<Ll<9�iH ˲�H����ɓ�8}z˗��t���jJ0�>�(gΜ�ԩ}\�r��jѼ�Ba�Q1}YV����Ċ�dC ��.7�y�1�IpO&C�����u]zzz9xp;ɤ�K/�|�5 (7�g���G��>��~Ϸ��'�=.�WUU�"��� �M��T�����󴵝�����o�53g-��v:�H�d�vR�ֶm��l�<�S��C�,�g�[ ( �oeD���$X��Mۦ�����b��G?�T�c�҇Y�p�t��(��2�8�O�I`߾}���o1{v+uuӼ�(���D"�!9C��D4G����Gv0���h���XVdM��-����s�P4=�cL�y��2�YTM!^G��8���C�?����LV.}��3[� �0ɤ�iL&�=��[1�����x�����O5�,z��k��ّ��車Y*MJ��S�,˜���q�J��t��f �8���ᥗ��}�>m�46m��ի��w~�3���g��+�����B��V�f�Kփ�8�%c��c�(�y��'B)2�H�=���/Xg�<!��v�t;��m���c9�g�}�O?�Α#��q���O��_���c��:��B!HAF��U^H+2\�x�߿���U���Ж� ��\�~Mә1c�\7�c��V�N�yBL-�M A��� ?'C���,�Mɤ@X�z�]�硇6�q�/�(��2ʘ|m����>��>�l?���|����r����EQ�7o99{��W?��GhX�H��:�(�eEFVd272�!՘��&ɒ���"V��e�N`�j[6F\g���&Z%?���� ��]c��_��� 72�H�8����70��� ?��_py�(J�!���"*��P��@�V9iop�[�����,+��N2Y5�����'o����7�t���r�w8֯_Ϲs��˿��,]����Wy�������P(d��U!,���D�CX�p� �&��[������L��*O�W��x�}(rl��kV����?<�����;��o�����G���K��Kq�m[�����D���yB�"�b�\nM3��^8���z\����ß0k�B�����lf���:�-ۈ�8��[U5b�$����˲�-E" o� d����-�1M1-��C����峜>��������7o�x��(��2�8����8����9}��6=�ҥ��U���G5U!���4���mg�I_�0s�tUq]!V � ��' �q�te���"�؎X�R�@ϠE4"� (�B�]A�J���F��^�|��|6KUe�p���Y�ͤ��tn�ck��y�S�Q�p�����������%���2���3F��;A�%TUS�r7�z�A��R�d,J�"��]���_�h�(��������u�ֲ{�>��}����$��N�;�HAx��$)@���nP*�����<� TU t'w���u',��)��$�uFmRe��~>��Mb1� �e
�'�|���+����Y��f-D��R4�BWT�a�o
3���=���v�,��g��ȲLooo��?��0��?�G"��x��gm
^�5�c�,;2��w�G���'a��ySb�*�N�N]��ӦLO`�&�f08��޽����ߓ��2�(�����_��������m�(U^{��TWד�<�zg��B}�t¡(�� }��:���N�u�T W�~�r&�ئ�]��L 3o���7-�� �$&�,���'*+��n�D�BQ��a�я�����RW�L���D��M�ǀ��*�*�x%K�o�Ltb���V��E*U075���ضI�T�&r�D�g ��ċAI�n��_�t����X���(�J��g���H$T֭[�z�/^��K/}�?���@k�&���1���� ��H��u#(���(�"��.�|&(�}
p�u��z�yUՉQ�D1~o܇Ͻ�Ֆ�q��� ���_��+�b�ʕ�P�0>$ V�Z����پ� ��cz`H ��"4�N��'��U�<A� mm���~��WҺh-����w�H$���Lf�;�f ]{J���T[��?��._���:�n���<VX����ik;NE��#�l�o�j�(��2&��ES����s�Z7s�nbΜy�J`!��^Ǧ����D"E2�B��P0q-���?���b�&ESP �l6��J����: �u�M�t ?�u]$Y%���3F�����\�? �PE���0׳ ^�Q��BQTO�;���86g��z�%,ˤ�~&�g�2k��ҦIux͕���Ϧ���� ����K.� ҏ'�5��Zd2��B\���GC� 7�<��t�w�<��<�ȣ_�BD��n�:f�l����il�ɂ����~x��$�D� dY!��Q���P��u� �R_�����q��q�xDAΔ >� �uo�(
tuup��N �fӦ�455ݓ}�(�-[�O\���g\�x� V���B�L&M"�DŽG�ڴ�nUS��և�Ì����T*`�%�񱅕� ~��m[� x���E�Y$Oi��.�UU����ǶmR,�ٿ�N�����?��ٳ���2�(����+� �8���TU��f�#A���:�Y�u]���]V�g� b|�a�S���u�<L����y�(��c;�%Q��΅�u\\ϕ�6���c9(��SE��DR�4�!�up�5��u�d��D�
f6, �y�3C�'I`��~�g��"=�ǚ��JU=��P�:pI!�]��'�C<^�$ G�b�0Eɟ�Bn\�`Q�;A��S>L�D��Dz��
;i�~�Dw� ���ٴi=3gΜ��R�J���?�>��?�wN��9�7�3�i"���;I�&�� aY�t &�m��P���.��:",o�������oD&�!Á�M�e�^P�~��2o޼)��|Y���b��u��އ����T��-�G׍q7c��?�`ɒ�,Z��b1O7�t/�h�,yAe���Ͱ,+���(a<p�R��eY��-J��'��a��79�=SY�}��k�v�g�@UK<��3e �2�(�+��tS000��o�E&c�v�ZfϞ����J��c8<�d�y�W�w�*W�^�zF5��`D pE�� ,]��w�C�*ZXE �h"!�*F�@�U$EL�獯p,�v��l��
M�M���u�ٴ.܀�(�ʹ� ��˒Ls�f4ͧ�����ڵ ��p��9 BF UW����B�x�[���oU�4K�)�{ƻ���kk��$IA���hD�q4-4��^���*۷�����={����^!��u�V�}�=Ν;���sY�|Ӹ6_|,��- ������+Ѽ ���B�����u?�7�������:�������K^�5> w�(�� ߷�W/p��.l;ˋ/�@ee�]�/�����ҋ����;.\�)�R5�6��p8� ��F6��X,`!�v&�+���J|���OX�j�(4IQ/�͢X B>�A���K����n�ݻ�'qy��W���/��QF_y|�����N~����n��̛���� �ӳ�S0g�R2N/������3��2-�Qʗ�JV�Bd��h
&�e�d]!����Jx&ݦ��(f�H�D(>���$K��A*VKuu�֡z�>Z 4T��+d�•ض����
�D�qjg������E~��dK뷙Ӳ c���d�s}EA?�Y~�CE�e���A����i�aY �B�lV���,�p����hT������
* ���_�?����Ν�b�x�1 ��;N�B��(� ��PSc.�h�6�fO���BCŘ��EQ<]��Dͣ����͈m(
8�����|���&�O�%�'���[��e�Z9v�34-ĢE������|�3�p8F,V��
9O��(gw/��b� O����&��U��r�P(�.�(D
����4K�;w��Gw��Ky�� Ae���W�)�v���!�p����i�ō�w������������\3����\:����"��n֥0(V��-�����+�EH��:��ZH��؏�O?N3�T@��������I$�ƈ�cB�Wr�u��VI$%9��������T��iKp���~��Ԅ8�R0��m���8��nY�k��ȁ[�p�R��c}ᬣ{�F�zE����p��g��� 46621_���$�v�Zv������ٻ�cV����� >_[�A)�������u�PŔ>"D�X��P@�P�'�!]]׼�DL����PM3��U��C��)�Q q�X��&�X�]R��S����L2��z%��K�Nq��>�xꩧ����������^�.�g��b,X9eI���m
E���,���y��<��y+�:���|�{.�!�NI�-&�"�[�o'���U���6�,A3������N��e���3mZ57n ��Se�Q����dS�8�����7ǖ-�0}�<TU��).5��H��W:��:P��gv�R�N�q���4�k�A�&
VY�fA��8jN�^d��1�N�FI�DuE J�4(��d2i �!=$*�|��P���4�UR��QM(�t������r:�H<pr]�I�#�����!�4�f�ȲL4�x<v)���
�pj��tᕟ˥Q�T ��?.���ţ��&x��G����B4vQ}�Q�^���7�+--�$�ww=q]'� ��D�� (\b�U4r� h�*�} ��^�v��懠�"~hb����ɿ���W:݋�i^"�� ��`EWp�  �O}��p0�o~"�������i�������K=i��ʚ5kX�h.mm�={��k�}�eف6E\'�=�iF �z˳4��b���x��5�h���1Q̇oqaR <v=hdM��wz9yr.��^`���_�E,��2���l
.\������dlV��J<>�g��B8E�$�ż'*�JY�Ҩ��T6�_���GbZ�peY�}���2 $�UZ��w��s��-p����zrTϫB i�S!Ԩ€�Ņ�'���G�Cd��Z��9�"��Z�yԹ���`�Gt��t�n�?}�T��X,>��f������K �V�&I�p4("F+�f�)�m4���캔J&}��L;/��,���_9����b�
:��]Bt�b�"��m� }��i�<
�����+�����fs8�����\c,(��H$�m�A�(V�o��z��ܺ�!W)
0��mɛ�I�=g{"u���OĶ�@p+�
�헹r�$�7/g������N ���W_�'?�9;w�Â���*&�>����@����Uռ���hE�ԧ �F�;��
:Z(�TC �M�����=�X�bIA�[8�4E�p��u>��u��kY�v UU� O,��2ʸ��k
�a���9s�o}�I�j<���?�e�f�4��%L��,+�iY��ރH�B�**
"n�@4Ȋ,�K�;g 8�C��N:w��s|�s�5ݤaU5��Q�v�^8Ě�[Q%��;�K��g0ۇ��D#qdY�������S�&�*�%IB�\��L:�����X�+����!=��m ����@F�tSQQI.�V ����Ι낪�D�d��<�q����>�)K�L��'���������<��f�\���_��yӧϹ��Ř��&&E�( r����FU&㡥�S(UUI$&&���|#�?�%--�<�����u5'�aÆ :t��_�#G>g͚G0 c…�X5/�(b�n�e�{S!����� �a�"Oz�!�2���d)S���.��7�~�4�����̙3��QFe�_�J5��r����ه��y���=��ײ,��4��z�7� ���;LhF�*�:���C�QH5�(f� &' �d��Pbt��c9\�v�U���[H����v��ퟞ'�g�ҵHHH�B�TD�������hR�7���8��!�b�h]US��˴�m�%�#Iz�.��g��I� }�z�;W:��(@��,#�j�ٓ����D���P*ٶ�W̝���O?C"���E�ϰp�"�}�i���p��.��Tը��^T4i��k˲�NT *� L�y�>���)�
\�z�O?}��/� �V��Թ�_�a�.]�¶m���um�:<^1p ۶ ��qن�T�pX%�b�bѥ����Ϋ��5��S��8�M8CӴ)��2�;w�}��c���Y�����Io��2�(�~�W�)�$�7�|��~��럺#]‡���')��Z����L�?*F��`e�ej�N���1I�"�m���sq=�O��c� ��r�öl���P�ո��3P,�����Mz�ÈP[�3��7�W Ǣ�4��|z旄�:���4�h"�4P4Q(���E3mQ���n�����R[ۄaD�� �����}���f������/l�9骪P(�9}� �N��?�=�Ф^�~ƌ�y��G9p�}��[���@�t���kM�ܽ�gF�@x��$�L�c�ǝ��:]]�ص��l޼��+W��=C㫄ŋ�y�&�K����5k��"9��a1]��d<Ѷ<���7u��IJL�����ɤ)r�d��k���(,lOC65��L&ˁ�9}z������n�TFe�_���4M>���ihX�����@S�p8���Un۶��' CX�I�L(Q���\q5������t\˝�i����s�VF&��Ӷ�2I��T�UI��� �c��}uA����EӈG+!�j��7�$�cT��W8�Ca�ı���)!��j"�8��uض�a���#��W�"h۶������Ţ�3�B
���l��k�ϟΊ� ��Nq��"�J���s����'���8���[׶mc�%"����y�"d����� {\�'���yh�41Hd�iΞ=B[�1�տ���=�e��ϡiK���q�>��L�6����5b�'���H,}O�,�8��@���`8���<�e鮯�8n`�:^c��AQ�ر�\�|�ŋ�bŊ��aAe�Q�h��e�/��'���X�d#UU�1���B�[˥ӽ�r�AC�i�P�H$N,� ��S�@��2����K�fh�+�S�:ۼU���P(�;oR�E<��q���lኊ������ 5LܭA� W4и�EV(eJ�y�$�]Wx����B(%�KjG�IDATO�LV�HT��./�;��PЌ�[�d'�B$����".���c<���̙��-�@�� �q�z.^<����rs�?d7d�9�֢�k�D!�G㣞L5��Ns��ZZ��z�*"��=۟/ <���d�]�8�����1v� #�R]7���'_tn�%b�
B�(�h�H$���0�H��%��R,����CL �]�d�O�K:�f߾m�������e�QFw�W�)(��>}�O?�ɜ9��7o�<��&��"�ϒ�e(�D��,��bI***�D���v��ʃeZ(����H���ʘs����BVdp�2�ۓ�(d \$��fF���ۮ��BN!0鳙�MM-��a��ٞ,ŌH�Ut#f����cD r}Y��?Wճp���nP1���۰������� ��{��,Z4�5k֐H|�y�����ϣi��I߈����~���!V�����¾�`��A.W�ԩ��7x����{נ|Y��'�x��?d�ޏ(r���}��qD�X��h9�] ���,��9A��b:�h���*����R(d�f)s�g�h�+�oN���w�r8|x]]Y�d?�p9���2����+�\�t�_��7��nd�����Q�+�`*P(�B����lv?yuڴ9TTT��1�K�rڮ��'{#�aD=�DE��+ ����H����i�i ���A.��D�zC��irp���X�p���d2 ���y��Ϋ�3���"�%b�1��I�MI��0zTG�U$YdȊBUM=3g.����;�"<�,��T�_���S�Py�|�c�vs��n^~����@EQ�3g[�n�u3l����j�c=��"nSf�%1��x�CҔn݇�{�q���-[–-[�1t�D"����=��=����/00�K.� �F�i�f(rA��d!2 ��[٭���0�D�D"���(� ��� P*F43�g`(&ONz�D�^�O>y���z��/��QFe�c��MA&�a߾�|��gl����-#V��զ\n�����nx�r�D"EEE�H"H��u#; T�;��`�Ϡ)K�JG�DA�(
ZH��)�h���qm7� ���s��ɱa�S$���6��b6�f`������oP(d�mE�H$*���N�Xd���]�ay-� �$KCN.^���`lK'N���M4��_S��ep��,N�1�C�C�>���[�<�ҥK��Z��!�2O?� ��I>��u:;�O�*֙����9Y�?)�&���ݬ� ?$룏~��x���0�ɉݿJP���&��y ñc{�������a�.B�"�{"Q9��p$�;�BEE�m�F�}���p�x<E,V�,Kd�i��{��1�"�R!��h�Y�A�v�G>�ǚ5�Y�|ŗv��(��2��{��ѣG��=,X���3�����+��_�8�Z�Ops�!V;����N�������m�Gh��������$�4b�S
eKY�Q551��(f���
O���%��Ǭ(
�n�Ty�eY�ߝX��D2IE�HeEVq�uE��� ��]��Y�"K�0����Y�7��<5�)��d�i������W��i����� �8���>z�g��C��m"�Ҥ��|m
�}h���58������;����>��a������Nh[_e��w��.^����{X�b ��Mh��eY����g �h,E��M�x�7���a�ک��&� i���>��(�Pd�v� \��~��ٴi9�W�*ӆ�(���=��```�]�v�������?�i:�L6����Y"9SG�4�(��A�C��Y,��$�99���38�!���L���%������h
�i���Ϧ��MW� ��g�(�u��� ��R��5��:�*����*�h�
�V�H4����x"I8%�c煻����R\ٖ���ID*Q-� I�=7��� y��!8�b?'Jk�t��������z�b�/_~�)��6m���?��oX�x��-Ah�a��U~�����N��g����]>U�^$K;�KOO'����\9�Gy�5%���F֬Y�ի�s�ۼ���E�)�J�,Kv-K��u]O<�t�� Ļ}����� 19iöm{�b��0 L������s
���9yr7��f˖M̚5�K�Be�QF_>����?fϞ$u46� \�D����ao�sdx�����/aY�e�q������)ZĶ��<�D�O3�%U�۹m�}3�Zmw<=��`�,̂I~ ��*ȪL)W�Xȓ/tr����3 àT*r�� ,��j���_"���i� 2]Y�=Y�-�Ls������@{5��jj�M0� �x�ږ‘؈s),,��m�&E#�Ūb���F���tt\fǎ�c��i<��s�؆����M�6��߿î]�q�3TV�bے'�W�M���!�w��S�eY�c�����~�e�E@Q����]�ޥ��
k׾¢E���}������v����Ɗ[�5k�>Tl
9��,��z�p8�i�A��D�8�� �B��'���a��JU�nY�a EZ��c��E��������駟���uR�YFe��U�}����o��[._���g������3�F��D�P�*Q(do�R�.2*�@��C9�u�Q��Ӵ��Xu,��˪�U���h�ס�-a�6�"c��
4���ZX؝j!�y�#^���o����� ���ZB8mD”� M+U��K]���V�����y�����*�F�����C�=Kjv5-5�,��%��@�J;�r���[[
y4� ������\(L��$I�� ����k�N��o��/_>�}�������^z�?���/3g.���UՑ$�E�dҀpy�eY��o� Ҩa���;z��:����um/��˟\�|��_�?x��o�lٲ/���7L�6�u�ֲ}��������ӧ�ƶ�� �"I�׸;�yl��Y�� ]J�p8F8�tx!�M
D"qB��g�P�X̑Ng�4��g�39���'�p��v��gy���'�����R�QFe|)�/��!�dJl����=F>��0ž�����#}�b��4K\�r� ���J.����z�:w��Oͧnv�"���*x)�>���lls�블r%U!� cD d��T��`R +C�Z5s�������� ���X.zLC �H��w6]g�8���O��Z��E[�={1��$�S@�W9��sn,�!��(��H�HH�z�\�{���Z̛ΝD$��������g��M����f.7����y�M�X�|R��uAee%?�0��g�`���,Y��vG4s��5�� �-�䀷�*��\$~��Q&J�M�?)��4g�� ���q�S�P]]� /��̙3��+q�c�̙�]�����tw���8+ ��w��x&� =:ZHh��!�6�y4M���w�u-��
�~���:���5•M4a���{P��ܹc�J}���k444|�'�e�Q�7 �]S�.�������ߨ�_�ƍO�'q�{)��ē4]t����!�.�J\[�d R���څ5�/�%^s��XWq,1@�+�E����/�2JDAVdB��?[�Ve�p4EUpO���b��Ř�� )���˥��<�E�MUv6n~�� ��mFV�$k�?��ʄ�g�wҶ�2 �/2�)� t��A�\�EϮ%�H�r�5͠X�O�@X$G�`-Y������J���qzz:ؿ�#�a��{�y��M���UEmm-/����?��9����5���ߐ�.�`S��>%Khn$���t/}}7hh�.4,Â�������v�Q�&vlB� cm 4 Ν;������1mڴ{}y�477��3Os��9�Nee�f�����@�C��X��5-䅄 �UZ�����qJ��R�x<�L�Y"��C��+q/+�]����}� �5��0�1���� �<����/����>Ю�2�(c8 �N���˹,X������|>3%Ũ��JE
��e�:}p G7��
S�0E˃�H�HME�d �h�آ���尊zT'�VY�G����dYF�����b�6�lY�G#'�,�s ���i?�E�� Z��ى��Z��9-K�Fc��u�e�T�U��?o��.:����~.�L��KflaZ�t]a�*~
����ؓr�p]��7����6;H+����K�پ�׼�“,Y����M�x��M������8ǩSY�`�-}�$�(2���G���ս[�q��w�6���!t~ڱ�c/��L�^��.�]�<:ƞ�{��UΞ=@4*���O�����o�i���������_�'�����0�����)�?��b�~��E.�EU��XQn 7��}{S"1Q�V��m{����EAU�;�ei����i�L�i0�4�;ަT�桇6���x�/Oe�QƗ���)p]������o�~�Ӵ��EU%,K�
y�K���H�H�/d��@���]::��k^�zE�y��%5#)~�(��#� ��[% -���(�U%��r�w(h���JV�t��w��@�3�^Īŏ0�r��$� �3�X%L����ql5��_ �����S��˦��BU�QS�E�qDZ'eO�Id�i@\c��DNP���D������\�zU-���OR]]=���kY��������?�ٯ��7�>}�g�8��f��${Ag���&1��xj��F 6_�*�$n0�(��TA�CضE&3����e��af�0��P����ww�>J���s��>�=���y�чiii)[KބH$–-����~ƹs�={3g.��JD��ۢ�W��*&y/��¶MTU��-�#�2��ДhJ�M�E�Ƀ|��%�0bd?����I�EN����Kg��c堲2�(㛇��)hoogǎϹ~���� Ӱ��"%��<�6�pUU1�p��J��@����S M��Z�q
�����_S� Y��$#B���}���g�+˜Es���(?+ɒ;�\����2g1��$7k����u��\�~�^�bTz���9�0�j�f?H]]�m�Q�dJ�"P"��F���xl��t����4M���NO��ql/A�<̵ wb8�����'y���1s��r�wlݺ��;w��G�8s���EӴ17֮�O���HQ�Q3>L�O�v��NPF�jr������x*����ǑH<h��?��������p�1��� �P����7�q��vjkU�}��2?�6��b��?�g?��w�Gmm3�X�P(z�s&�dB�0�
 ��'
{ �xo��HLN$�Puҋ;bJaz͇����F۶��������HDa�� e�Ye���}�9r�?���[_���~����or^.��*b�H�|��h�H9N���x�8�N�O[�1��Uk��u\��.4��x��HC����$IȊ,R�G;@WL,�&ۓ��h;΀B��i$�գ�?�P�s��.���GY�#���������.d�ZB}�����r�J���_���� ���86���%��P
;�� �ի�9|x�R��˼�;AUUy�zz���_��Ҋ��/�MLmܻ6��6����@������q,������o �,�$�&��Eoo�T�ຒG%�Q9�
9�}�����x��Ghl,�AnU�x��ٹs'��رݬ_������W����|>Ll��n5y��sRKa�,18�ˮ]��'�lذ�K;�e�QF��ܹs�ڵ�Rx��g=q���eY&� ��x���>�rz{;�f�TU��8s��ο�����˩hJJ�P55� ��b��7q�P,�jL��J�h
�,�>���9��y���JQJ=6[W�J���Q9����m�\�z� }Q�Z'}=�=���}�d����6���b�FZ
�s�2�F@Lc�`���<W%X�����6�$ر�w(J�'�x�T*uO�-�JX�v-ׯ�������],[��h46�ڶ���ӹ�)=C��$uV� ")W�! �F�%�w��,�)q]'H#��B� 2|ʙK�T�ҥS���/�� O<�Ľ� �5$I4u�?�(��î]���O�K7�UU�ɺ��7ik;�i��;w��(3����S�&E���v>��w,_������T�2�(����)�裏8r�4�W?Juu�-B5I�0�0���
��Z� ���X�7b���hB@�k:��î�2��TϮFA8��%�L k8�3%�dA��ъ�"�Wz0 Ww_�<�1-����#ש̚�ȣd�fs���X\�8I&���E�H*d��ZOG�%�BQ�]lc��;V�x��sI}�xZDQTG�����MӐ��ݑ_%�%�T���wŹt��O`��<���` �u��K��r�b>��̘1����y��+�V@����� |�ԭ {���o�M�naçN�R"���e᠑��U�(r���>�g7�z�J**�7��b��5?~���~;�}Fk�z ��TV��uoB�%��i%�ɪ]�����:1�EI�\���Ӈؿ����,\���?�e�QF� �yS�.mmm<xUM�n��u�4�Kյ[D�Z$D�v��� }u�5���p�H$.�X(1��5�H8���7��O�(��+�i�w�y��2FO5�Wкp��f KBP츷� y::�8�q���� ��S�h])6mx���/���ɡS�З�d���^S0T� ?��Ydp��,E�����QU����{��_UU#�-�(�m ?xk۶�I$֭[[�O��SO=Ο�ٟs��a��b�w3��?q� D�7�ۂ|����#æ\W��b��%�GJ��헸p�?��k,Y�������(7n���K���_��8����S
o!(w����> ������4c���XP*�i��W���ĉ�45U�n�Z�ėz��(��2�'�� ���ӟ� %֮}����;*�H�s�(a�j�P3dai6�ŠN���A�
C+ϖe
{�|�ޞ.�v�X�'�U�$\[�a��Nb[H���c;\��A��DKM��8��=͌���u]4w�/��tt]�F�
sf�$}9K�NK�*�g3k�����AB�N__�Pě8��ޟ��aW�U"��EׅϽO� w*�TU �}����l::.s��^y�9֬Y3�� D$aٲelذ�={�!K�f̓w�=�\��MçS5ݹ�� p��%v�~���*6lXOUU�{r�fX�p!�7�����WΞ=LEE%����� �9D4�@�e��H�7(�
����4�>��g�녕� ����!.L��Mw�y�����d�<M*��2�ٸ�M�i��?��������f�#�<x�?���E�f.�!|UA) �X��Pm��mtF�)r����2H!�q�q��!��p*dL�� \�x�aQ�&�n|UQo��=\BF���iԙ�\=r�����GX�A�m�!\"ِ$=�Îo�y�D���,�:6�h�P�X��S*���N��}�}���+Ғ��Wx���1w�,6l�@MM����7���w��?�S�΂+�F�w�۶=�d�O���?���9ǁK�Nr��g����(O�&�0X�b%/���v����f-Z1����K��F��^Lj�F�y1��}AH�ȹ�y�m�Lf�b�@8C�� �K�Ǐ����C47���#�����/��2ʸ����|i~��_2c�RV�z�Dbh�F�&�b�l6M:�C__�l�\n�b1����bI��j**���5ꍣ�����~F���
���e�+3nm��+h! ES&���^�8��Y��j��1t�{X��vSd0=@�w�#�:J��4��,���"��a0�O.����"�l�4KD�Q��*Ν?����ŋ'yZ` ;���>JA���5|�K%�3g�mۯx��'������̛7�g�y���+�ݻ�� ���1M��ɓ�܎�'�p��^N��Œ%�X�~�x|�[/��W^�ڵ�=���ޞq��]�!� &D��S$u=D,Vؔ��z��o�8�.�x]M���$���4/��<���iHe�QF_ܳ� ��s��a>��sV�z���WP(�����n2�J�B�<G��*��SD"qTU�0���d()��O/Y�2I��(�ضM}�4Z��!]���?~Nߕ�q�dYFR��I'
\����\�����9�oI��;����\��J��������s\?z�Y�Ki���ln�b��$)4VϡB��æ�����>z�;ik;ŕkg�t��K�$$���/����6o��p��IN��ɺu�X�by�Л"�����˞=���~��U8LI�΁�5'_dN@�Pd����r�(/��*++�����CQfΜ�֭��p�'O�g<L�u<10�B���|| �a��"D" #�e� �{πbp��4�P(2!ꐟ��o�v����d�"֭[W6,(��2��6W�\᭷~O$RCc�ltݠP��r�R��BQ���p$p�)�
������~�<�?��3�t�l���tݸJ4� j$(���d��X!y ��*�Da;����;��(53g�
*��#�~��0M��� :U&�&� �M��g(��Q��4M̒ɒ�v�45�`b�.�2{z+3kZ���ɲ��l��:��5.�"���n�0a������gj�۶=��!��Y�����s���1 �~�o2$I�����+�b�}����w����SE�݁�RSp3��MO�%�ϟ�ڵkˁv�D8楗^BUK?�����1��(��żpv�����&�b�@k��g���ϴB`b0���u!��㷿����'x䑭D��{}��(��2� �MA�T�ȑ#��w����1�D
�,)����{d���X�{�Fw8������~��k'�<p���H_����B���F�5��>�=>�xm<�+�,˴DV�8�Y��bM� ж�*�C�v�*j��)l���q�@\틀��@Qd$I t�P�T��i�[xd�K��,!20 �{m� �����9�.��~�tL�5�&ai�T$����R,�=Z��u����5"�^�N���#̘����� �)�c�=FGG��}���[��i��p����O��� �?�R��u�d��7in���W_.zSUUimmeժ���}�ݻ��駿����,�X,1n �,+��O���X�{ J��X�$�A�!��q��~�_?ͷ��',_��^��2�(�����)ؿ?�~���ƹ�]����I�����uX�9&���՛\l;���~A��F��$����^���zL�D��%��R�\)V�����A���w��m{_�}Y�.�s��Nz�xb���l�x�����Cx���/�ܧ��l�(�
ӛ泴g �u�G���k۰`�R,�Dg�e�n�^o#�ɱ�u#��<�2�0��\�H���bD?�XU5�E��{?D׋���'�e��ܹsY�n-��dǎ���c/SQ�&�w�m�<J�d��BD.I�$�\d E+��=���WO���bÆ ���~����p��y����3 ��B�$A�P ��"�2��OxED��a��,�7���u{NrbA�RKc\����l��k�~�I6l�8)��2�(����t���8l߾�ÇO�裯���Z�2�US�"K�� ����x�����O�G �\�t�T"�3���&y1�z���7���DÒ"!)��E�.ئ�U��
�l��`�\�����_�&z���<��̞Պ��=�ί�����Z��***�Œ��1�_����gMә6m�o�u5ͷ��s�7g9���������~��f�t�&�-ۄ� ��I����d϶rj(D⺚ضŞ=r��%Z[�iӦ�`��l�R~x#}�K���G4خ+i��,�,I'/4@5ȇ���k��nݺ{q*�֘7o�6m"����_P,����G�l��g"� 3�ǓX�&,���9�d��{8vl7�/����-��QFe܄/}R�m�6Ο��ܹ+X�`e�:3Ȳ�%y�w�m\D�#�2W]'\�3{�L� 1�T�c'w�+a��Zx(�����w��P�iQ#6wvؑZp,�h �#D��8�-8ե\ ENE�"���A.�^��V1g�Rdϯ[Uut=t� ��A�$tMGUR�s����w����<��E4� O��u���b+I"LN�MΖ��8�ͻ���ٳ+ٺ�� ����CSS#�6m��O?g���0� M�6��}3�>M���݇����!�
���<� �l7[��̢E���9��b˖-\�x�_���b���L�>w�"��9&���Đ��7���u]��D`]*�jLOo�%
a�QmJU.]:šC�x��G�1c�le�QF_W|i���8����_��LF�g^ �M�RN ҍ�&
v]z�����w��߸@�RI�I YXk��f�^���\x���r3�(�����8�-�Ѷ;T�.Vɢ�-b�6�:D#�$ I����d EM�m��^�cg��\f/ZA����0�p�K`�'� ?�Z�;�3U�iӚ�"?G(&�H�&��Ŷ-r����dL�x��{{��p��5��5����:�c/ctH��ܹsy�٧�/��'TU5y� ��K צ�1�׽Lݤ@8"]�r��>�7���uq�������kW�駟�w�TTTQ]]�5���U��o!cj��i��f������RPUU51͒g_]��4�^_������'��8��I&�����QFe�w�Қ˲��\�x�ŋa�����(۶�|���� !#��U[���"�U d���JZ�/!���gP���:f5/���c�^�!Q�$���� �j
����5\��u\$Yؑʲ��Z��0T!>���@���@B�T*�w��+�;�����˘>}.��Pؒ$I8�Xy��� ���ۮ}�6eY�:vu]���*5U�Dc�;�˲L�TDΓ�������x睿a��լ_�>D�1����`�և�ۿ�N��ǜ9�̜9�AQ~6Y �Φ��(�2}}78{� �\'O?�?R__/O��˗���_�g?{�9s��H�PU5���iR(-�a���u���O<o�+�躁�A��i��m˲J�a��߿���#�_��� ���2�(��Q�4�����ů�ZZV�nݣ(��d�H?��u]B��:4����C<S7X)���w��9���8ض��"��$�,�R��˟]���N�5:J�@^�vYF�F�*DuK5ZXE����r%�y��q���_�l���=\�v�X�-ϿHc��[�oI��m�L�CVPA���Z�4m�]?�G����>ే^e���Dn�7�����(�d��4.�ڵ�l���̙3gJ����!Iuu�����7�x�={>����u��3���A:a�<q�yH N~��H����?��'�|� ��1�q'�����c[y���9|�3jj�1���#��P*�Dbh�:i�����z濆�j�l� �k����%�� ]/�� ��Ye�QF_e|)MAoo/|�!.��ꫯ2oޒI6�[�.�b�i�86��ſ��^���X�w����&�кh= �D��c��m��f�N_���ap�Ih64-k$y��b�6��� sA5�n\�A�>*zg�d�������5��=Ą��ee_����3���w���-d�p�*jjn{��I�4
��\�|�S������e�ܹ��������_��O?����hh�Ec� ��ۃ\��"¦nՏܩY��_�M�𴯯�>a`�2���/��b��4~#�L&���^�?}�S��0cF 0���� ��S���:�/�����
E��L&�;�����b޼�S�yZFe��u—�������o0{�*f!ˌ�)^�́"�l�l6�i�Pճ<��$9����d� �žxR��y�KnN=~����(�뿅�X�v�t�����8���_�k4W�q�L� ��j���n�m�@��D�?GT�dv�
/�HSC ��!ꋩ�"1xh�*�e�8���kå��9p�#l�����)Ӛ��ՊRp��Fc|�o�!I��~�c�vaY�|�{�QWW7e�]��!I�a��O��_���?f޼���zDZ=
�E�� �ڢ�w�,�p8�w����nj< Y�ط�c ˳�>CSSSٙ�KB4��㣏>���̘1��s�b�%� �Ц�缢(��5��J Yz�L��O?�?����~���QFe�_xS����Ν��fMyd UUuT|�q� ��/���q���M1p�DU5t���7�, k��_�CXkZ���~���,+�*��I��b=�TR0� �ꢻx�B>K1W��'I�űw@!E3 +�.�hn�ì鋨�l�0�;p�}��k
�o�FnSQ����b�Ě�[Y��bъ14o.�U"���㇦��ßs��q}�a�M�V.��dlٲ�3gβm�^.\8��Y ��)�������J�g�$j�,�'��p�}�74���v=��ny۶�z�G�~�ܹ�|�;�)ӆ�DȲLMM �<�$?��/پ�M�O�G��(<�ϴ��5MC��qmS��X,�k׻45U�a�:������+��2ʸ��7�w��w>��u#55��H7�܂V�s���:��ᫌC���GcPq�p8�a�������A2_���W�A�쀢�44� �aK������ �)I��{Po(X�E,�b^�r¡8�h���ZBaa�y�]�X@�� �9� �-�x��&���b�UR[9�h$�$�}�$I�leoR3��`��9�����8uj/ɤ�s�}���$�I֯_ǩS�ض�W�����}5A >�+Ò� ؁f�oJ��wK
�`b0��޴�i�O[Z�e�,��;�A�m֬YU.��|�A>��3N�<ΡC�Q_?����)���m3H0�т$A�hr��Y�����^z� 6��SVFe�q�� m
:::ؽ{/W�v���!I����Ba$I��+
~a5'��9�:L�D&30b�q�+T����Xຢ���z���fd J%�t��P8*4���*���m��5$I�V_�
��P�MA�����#��y:�7,�V���� ������P(dy�_�����'�����K�.e��s��_�g�]�@2YC(��}�7砡�[�3\��[���?�¿�{\�>�FS ��\ץ��2�m���7��������$ITVV��O���+�~�'<�ī�bIt=��M�&
�xtϱ���2��t�o߇D"<���LUFe�1|aM��8����\�����O��8�|>G(��)�Q�𱺛���b1�e��zhR�&���k�9�A��m��gp\�D�Y�x𓪪D"�)����7X7o������c�LV�~M{怪�
b�xؙ���NJ��XlzN!E���������kx�Ǧ�X�?�k֬eÆ�|��oI��hiY0�{؟�)
�O� B�0���o ���Х�fA8Έ�ѶM$I�ƍv�{��b�ׯcڴi��t}����[8u�$��?�%K��g�4a ��*��l?� 5�-t,�hb���;T������{}��(��2��BTW��p���}�]r9��[�K,��� ]���p^�П�ȲL8�&�#��J%r�A
�ܤ8��M���&-���b��eD���C$gN�RR��1��F��E@P�L�D��#�������.��~��<��&��"�r��d�b���477O��1>L�6�Gy�}�>�ĉ�d��I5�>%P�R����o �(!B��H�X,A,�$O�LVQUUO*UK>�e��Y�����ˉ���a���Bssg�@U5b��@�;88�i��L�O��Ş�P�dΝ;������l�Lee�>Ue�QF_ |!M�mۼ�ƛ�v��+��n���iz��3����d�i:��TH��ԇ�b��d*�ƦY$��R,Q~���b��]��p톿�[*I�{����lv�K!+�Ѩ(�"�8�P�P(�\�~�ݻ��嗿�SO==e�X����Y�j%[�n��ٽ�={u3E_[p����&a�M��4��JG�e����K���O��T^���q�F�������y�3gS(��*��El6�fpp�b�0��@>XzV�.���׮��?����Ye�Q�80�M�i�8u�;v�d���[�(���P�<5�_HL����jh��fN|;B/���d{���-S���䐫\h;ε�s�������~>�#�$� ��P��M��i…�_� ����1B�0�ax+�2��]�����5<���e:�}���z~������ȑ�����v��gM�2�/q���<���^{�ŋO��e�C*�⡇dŊ������mD"*�P�P(�i \
�,���]��% J�"�R��y��T�����\�v��sg��3ϔ���(��2Ɓ)o
����o��u�,X�������gȵd�M��*o�)Y�w]'�:LŢ���0�E�S�=�GQ �l6������Fe�.x=1(Q(�����Y
���Z�T*b۶wB����8�D�h4x���}�ū$A>or��QN��ͫ���̙3���ʘh�ƚ5�Y�p.ׯ��(^���p�����.^<��s�������D���)c��$�����^���C �eɛ&��^R������Ҋ��;�&al��Y�m�5�a���/PUUU?,��2������˼�X�3g.�
�%�EB�b����m��
����#���{~ݓ?N�}*��$cY&�� �� /��F�u�5�c��u�f1h������~�a�E���>��"��&O�H����G�[��=����[�>D*���c+c��./��<���޽��MLo��&r��J{�n�q����O4�ק����Y�j+W.���<����A"�"O"Ir�S,�oIC�C.�P�3���m[�={�S��2kV#�<��^��2�(�����)8u�o��;��f�d�R��a�W��P�d h N�rm�����4ݣ�L�*���xƿ �8�d�����(
��Wس����ɓ��Cׄ�"�� ¦ #D"QIUUUD���k�����Cc�vǎ����c�����b�)9�eL-$IbŊ��^��B��O>y �,���SE&�8��ѣ��x��f5����k���/�a��+/�N_f׮��岷���jD� R�jTU'�����|>P�4-4����|��/Y�|?�p�>)��2ʘ�̒Զmv���������G���ڦ����p"����S/%I�0C�D�}*��>T���L����#�ö-L�D�X������O�^�����'%�M{��,�H"�z}��Îp��L����=|��u����Uϳv��L�>���� �������u� ��������H%*gY9Qɲ��$K.���P�]=�X���w�?3�����w��ؙ] �{�`���]�]��lI������e%�7�|��/I��H�6�@�%��=�*������C=x��Z����LQ`���\�x��3��j�*,� ��Q��k�p��9~����ŋ�`�}�����.A���'����&�^x^��a����3���s���Sl��G֭��]�{\Hn�Nk������]�0Rx��iZ}���(q����;�x�8�7�7��� ��B��Ҡ���c�ރ�1��S磪:��R]��a����~У����������{�K{�m,+�ﻵ�������I���F<9�T�H�� )�����3��q������ż�ӯ��O>Y��}���<���Y����4 �>����� �t�Ķ�\�q����r�S\��5c�N"��j��������{8N9i�jrgx<W����J�dӦ?�����ԩSY������{�ǬZ�����> ���)���d<���ȑ]��^��ֳdɒ�� �>⺢�7o�o�3[���9s������㸻�����C�
mm7q�
�B�t]��3H����oز�X�p6���%��[@!���A
��2}�.\祗�ƲҸ�ME=ZW�v%�_}r}�O�j���DݾN�k���y���7���!�vw�M�B\I�(��S��������0=����K�k1^�3��{���xW@�t #U���<j�����UU�߸�a�;z:�
�}NJϑ�2���p��; A�Ef�`%�� 8vlׯ���g�|��{!��4�%K���+�x�w�0a&��>=�������֭o�����3&�|�
I1{L̘1� �p��I������L&ýU��j�Nk�M@! C*���f��臫(��Q���ܼy����%̄bDQĞ={8x���p,x����}�Z}R���մ��ϫ_G�{����S0M�0 I��XVU������ǝ�K�\���G&�'�"
��zEQ�)�J�}2p�Nj�V[���8�"J�N�|� ����2ag.�i�(V�lf�̥}z����!���s�AAGG+}�s�͛ɫ�n�.2��q�Ʋ~�Z~�_p��v�of�������U��S��P*� �S�����o�9s�P_��+Vr��5�m�=��d̘����(
�\]�s\�ql�&��0M+�0������Þ=�t�,X ?S�bضͻ��Um`͚P(4��ʆ�6��ٿ��ݿST�O������Z]����3����x@GI��=��/v�Ƕ�1y1�g,ㅵo3j� �PS�)�}�?�b��ѣ�9{�o��߱lٲA�7�4f�~�����3f*#G�~��T�f�}B6�?�]������c��Rs�:u*k�<ǖ-��{�Ǥ�9�y�݂0 ��z�� ��w������pɸ�q�gs�Td��m\�x����#�Ba�/]!k�>T�T���8w�"�'�c޼@ׄ�����>���Q�_s��xq���($��e|�p� �T�T*�'�!p��h���KQ��J�H�\�5Vs��5�b�Թ,^���^�o3z2�w!TUGUU|��q��Z���%�֭bΜ9z14���7cYp��N�����Y����o;��o�����\�t���-Ǝ;ԗ-”)�ٴ�����\�v����?���4S��FMӰ�4�|=�t�0 )ۓ����v}BG�e^~�%�O�.��B1@
:;;����{��&3k�R�����u��:4P����zmky`�R1��1�"5E���R��\Ik>�Jcƀ'-k�ƴi���ʟ�v�hn�DS��{���WuE�D�
�n��ȑ���_c�� L�4iP^O|�TUeԨ����\�~�={>�A��SS��q:���X��Y&M�t�|r�hkjj�����А����\�p���A`��d� ��P�(*���J��d��QQ,�s��I�m����;��H҆�b<�J�X,�{�.^����+?~z�Ae���}UUm
$�>쥪Z�mm h�iӱ�t�_pCӠ���۷o �4cEQ5j �g.`����f*�+08����$�S���Bs]��g��w�G,_��Y���� �1EQx��hnƹs�8w��=�mV'�+J߂���op�� �孷ޒ��ǘ�iL�4��7p��Vv������б�s\\l���^UU1�T2G&���������…s�6m� �B���Cǎ�?�9s�b��d��}�����=�����z�������ܲ�'V��%6z^q'��,�:�:�;�������`� �!������c`Ǽ�(�u�(����ɓ�(���?�>�|~�^L|�TUe̘1�[�M����km�]o��>�cLJܺu�E�0w�\�%x̥R)6lx��8qb�.����+���� �-$sbz?V�3^E� �̡C_�x�֯a�/S!�ܾ}�;v�k�>V������}�B�������/���w�}�?_��I�������m�\Ea���CQQ,����O�t���q��:u`�S����j���
��d�)
�a��_~�G._>ʺuk�5k���>!֭[��ɣپ��\�r��z X����߃�jW�]�>`��,���a�/O UU9r$��cR)��?�~����*~c��ǸaA;_~���|�R�O�>ԗ)�O��
v��ɞ=�X��Mƌ���!3a�8*�R��2p��;�u����\�a�W��Ʃ���l��X׍���@��Ǔ�ut=�Pu��[f����z�\�}�1ç��3K��i|���>E���|��֭kl��<���� � �]��ŋ����?�Xl�%0��(������m���ß��(<��Jf̐�ޓB�46o����#8p� Μ9B�(
x�C�D���TUhk��������W1w�ܡ�<!�x��{�z��e�m�Ƶk��X�
A���F��N��I�RJ��9��K���l��a� þ���K�ƮL�R��=����[��q��Gڷ��ܯ�t+�g��5UUK�p|'CU�~_��B���G>�؍\�p�q ϰb�+45�FQ�����5�7L��@�uض�wd�*�֭a�ĉ�`%m--Ky�طo+�N�R�t��=pFA�Sr��E~�ۿa޼�Z��o�ߥ:�t�g�]��1 |��/�}U�u �x�˃RJ5 �\�̞=1|x�=����桾4!�x�������ٳW�9��q����_}�R�o�s��l�'G��%A�zG�Q�����ۙĭI #�c�Ym���Vns���V������L�L[I!_wW�l�up�
���9]�S�.
��� |���\s�2cl Kg�̔�s����x%%�����y>��>p�hTg ,@���W��c��Y�n1�6�&�(��2�<fΜ���0r�8�N���A��*���Uŭjo�w�� �gٲiA��Z�l.\�g?��N`���T*��B]݃�EAġC;ٶ������Ô)S�g�B �>ar��5�m��T���k_'��%A�׆���gQ��S��0�TtM7���>���瞳
����}|��0L�0"�Z�n��gv�]�3}�t҅4�w_e׻dXn��TU����O<�)�~?)���~����k�il��eo0cʢ���}���
/��F�%<�!k�1kf �t��H-��M׵ٳ�S4�aѢ�7nP_C<:F���o������'��˰a#H��I��CxDQ�A����Ν;�W_}̏~�6�����ߒ��a��,a�ν|��/�d���uI��*\�p��'��J����z
iX ����AA�R��wߥ��aѢ�L�<�-H�XV�|��4�qQ "������z�G5I�Q�}�r��(R�u�0 jC�܉�Thnn$S�A�U��z�S_李0��#�k9�Q�n�(Z�������~/�U � #�3u �fڤ���E�ܙt3��D?�"l���S���?�\�y�BS�u�7f���ϵ��j0Z�vp��e����/3k֬A=�x���y�}v%���oؿ�3����?���9�nE����;*Q7�t�,~��y��� >|�/G|��L�¦M/�?����ٳ��x����S"}?`ϞO(���/��/9r��!ķ�OAAE\�~����̟�r�K�o/E�8�R;��M��/F���t��j�ˮ�ǩ$NJ�׭���R0���
J:b��Ѹe���y|��\�����ۣ�����U_��s�Z[+t���U�0L��\��14����o�w膉����ضM��`E�q8s���������2u�l�<��a3��k���yB�e����.�g��1b/��"&L�c�GW:���?~����N�:@K���$�2��ymIw���ٿ�����?~������ �-+
,^���K�o�'45�f����]Eg��ȑ����7�a�B|[��j�~�:���o��Ü9�1bL?��UU����4�Vo���j�PoGҒ�zD�t?�42�\��NIj ����KƖ������D�Bf�Ť��(]9��K{�g�1mڼ�OvȍW���]7jy�q��U렪jmW��F����)�k������d39"�zs�A���h�AS�h�MZ�Kk��3��HiL3u�� ��q*d��A�2}��av���W!�S�0 �,Y’% 9}�
��Β%뒹$�J��u�؛��ٳG9s�`<�$i�#G��G?z��/�F����� j;�w��Fl��+�y�_\/���[�����}�9̻����^� �N�������<�vml��ee��=����A�.��0<IM�vQ�ɤI�Pt����pa�a�g�0��ILyagw��?$��1j��t�L&Od�����AWzT*%�("����UP� (����CHd��S��ޞF��ݻݿ�{���}V��Ƒ���-F�G!�%���}��C � �A&�ip�� N��˸q#y�U
�W<�E!����k��������g�Y�s+L3Uk�E�a�g�g��u���71b�P_����R)�ϟ�ҥ����9���K��:��u]N�:�� �x���{n�P��B<���y���l��%�aΜ��7�) ����{��}�&S�5����.�UUc��ٴL����X�Gp�ӯ�4Z�Yۄ;�&�/|̑S;)W:�f ���P�'��#�-�N�H��XV�T*M*ea)L3�\͑�_?��DT'#{���Uǝ���m��TJT*EJ�J�N��"�r�J��mW�m�qp]7i���Z�VS� ��i�)&O�I6�M��t�ݽ(J| #�\�����ؾ��\9Λo����f��}�,\���sg��y���?�u�Z\�w�_}�k�N3e�8֭[;�u-�і����O~�e��� mmmw�P(�:�������e˖����.EB!�}w
� `׮���s� ��a���D/ �T�H��Ơ�t���F��p߅����X��e�C������Q���,��s�p|�>��mL?�#�ԾWQ4M�nN��T���2�N]7�}�J�izR$\ ���]��ҭMhWAu�T*e<���+ɠ�����=����=�]�Ya�O5ظ��|��={��'��ؘ��_�0���M�x�ŗ�}�Ȗ-�bĈq�� ��x���{�ȑu���466�i��,]��O?��/�8����x��WQU��L�q\.^<���;�����d�<T&�߶��d��݄a�� W�i:�碪Zm![���f�s�<EQu� ��E���E���l�����
)#ͤu�b�N�f��_���0�i7q���������%�E�0M�[.����F�NK])J]���qu�RM�R�v�Q/�z�r���k�|�x碄�d������ ��z��֭�a�� ����l6;h�x�̙3�k׾�O�p��NF�h&��& lΞ=�޽���gɠ2�z���l��k-ZK6�UU�t� [��˲eKhii�TD!���7(x��9s��=�} ��qʔJqRUU�4]�k��`!V}*>�i$�S�
�R'���Zx|/Qf*Ŵ���o�����Np��|uu?�i�� �.~�I����Z�Cw�
�r��{?��]̜��� ב�ޫWv�ch���
�]������wVRU�T*C]]cm���5F��D�ҋ��wWW��s$"\7�
cY�Z���XՀ����\�x��ɓ8y�+6mZˋ/�(�Snڴ�l���}�>��?˨Q� Chk��g���իW�l�2,��SCh����8q�S�~����r���<�R�#Gv�w�'����0q�ġ>U!�x*��a��ݻ9~�4�GOe���� ���'�>��&�-4ME��@�R)Ԟpw�t<P���J��K�������� u�F̔�W�>���� 3��6e>����í����Sؼ��0����+ߜ��l��[�nߤ���R�󮠠Z].�ڃ4���k�ZLw���5�!�z^oױ�����n_����`�u2�|�;L���Ek��5M�um�ly�)S�Y��E�
���ٰ���b�櫓q4�t�c��r��a����_1{��>M1�TUeɒŜ8q�?��o�9s1 yN�<��3{Y�j9�f=#��B|Gz
��"�w���X�<��=���B߀ j����1���=��o�(j�� �� U�~(=��է܆a�k�X��2� ������|s�&M�W>�fp���!n_��ȯƒ�3��)Ν=�� ���\�}����0u�<���[(V[�^ e� ����u�|o��, #2�\����{��Q (E�\.r�� Z[/���ܹ��+��ӧOc���l��)#G�g��f������a޼9��避�x�M�8�իW��g[8|x;����o�����b!���8�áC�ؿ�0˖�άY-�N.�.쫪ūq�!�.%�/Q�O5߾���S�{�����������(�0�MO�Q����1#�71�ٙ���|u�=L5E�D����b{&Λ¬)+x��1u�<4������b��T���yX�L��Q��_�A��{�P߾��:�i��7ٲ�]�͛%y���t:������[?����
ø}�k��/�%���C}z����g���6�e�9s�(���̙SX�t�P��B<U�
�]�����?2}z �=G.��S ��@2]7�4 �)��4
��b�)|��֪���=�0��$����Q�tkE�pu
QuuuL?����3lf�1� �i�p�����Z���9��'Q�4Kg�eڸ��i�̨Q��Ǐ��f��ևa��%�|�;)J�PA��@gg�#Gv������?0v��A??���u�ɓ'�q�&~���hkkc�ڕ,Y�Dv DMMMl��?���ر�S6o���͛{��B�����e8���?���o&N|�ϓ�� Ð�7�Q_߈i�j�BW'�j�z���a��$ )J���0���I�I���oyF0m�|^t�o��Ea3y��a���(
�����>���)�Y4-ӧ�G7�Zۼ{��xg$���_hq���/��{�0�;v��o��cʔI̘1]z�.��������/��Ri��6J͉����455�l�Rn߾���cX�x�P��B<uz�t�)S��p�BΟ?Ɣ)s�4iZ��CR�UWU���wv���4�04{tƉ��w2�n<�+�-P.wE���'�e#�Y��7� �)0k�2|��[���������2�k_�`Za��haℙ4֏�J��=�C�d�)L������k��9�˝��7�� �֭V�߇e������L��R��Ç�/�忠R�0k֬���=�r9�������Mƌi��B��R��@Q&N�ȏ�#�����dذ1�= ��������j���Ɗ��ZrV�j!sWK�8��0L*�j�J�\�U��(b�j�B׹u{]
�z��]�k�|����8q �^�Ƒ6^��=�[C]}��ۂ9����? \5]J�����F!�u��+M�}��Q,^�ֳ|�rY�{R�9s� �i�G��iL�:��S���!�S뮕f6�e������N���ӧ�2s�~2��W��w�B�T�"�/��ҋR�4Q%�G��@D�M��~��]��3�T*Ͳ�/�s����>y���4,"�>@�U�` jS��p���"��q��Q>_��i} zBn޼ž}��Ԕ�?���ΠB!�C����uuu��'?���_�����< ��Ԟ�߯����L��h�़t����J�_*��GI[T����:}XQ�Z��j��5�0�q*����ȝ)�}�03J2L�?iIa�b�]�(�sp]'Y|^MA��ò�}:n�������uV�^üy��|�B!���5(�u� 6�}����������I�, ��0R�`�Y'P�U���n�(���l#�-�(�j����Y�#�%�����k�BصN>��`�et� �-�`�fN_BG�m��c�3}.�Vp]�R��L�|��������Rm[���� �R)�e˻,_>�5k� ��!�B��u�DuM�x���\�~�]�>`ɒ5(��ﻔ���02�0������ �Į�0 �-`Y�빸�{髪��뵞�ռ�0�p]ǩ$s�x�CFd3�"\׮�T0���OQ4L�"�� JZMu�a�� *���$����
mm�l��k�y�+�3mڴA='!�B1t��liY�ɓ����?�ر�̚�B:�Kf A�!ȶ��v����8��ܠ 着v&2M ��{[Þ��Q̬(
���0���X�mW���Vj)H���8).f�:�Zk�:P��JR��*
��*��^�(��:>�0� N��� �'��`��.�B��oP��fY�lǎ���[ƌ�Bs�8 � ��6]C��ad�����V+�'�`�p��!���g�
�:J-�Z�q:�#��j�~mY$DI���v�ݧ/W��x�s�����8��Mҳ8�ͩs�u��&�bܘ)=޸�.σh\�v��Gw���s�=��ѣ�� !�B�G��R�O�Κ5���g��3gRW7�l6KQ{b�JY@����l' <�EU�x���݂��.@�y�ݺ�٨���iDA�<����d�j�P�`�:�9�������8NU�~�J����Uk3�]�[�Wx�ԙ�l~�����H�R�8����}�S������r��N�����)S��.�B!��AA:�f�…l��2;w��a�F1{v��&�t�a�FPW׈�*��� ɲk�: �D��Z�����-��d(�5�B������ý���,T�W�O�\��"T*��������_�Y�/��k���M,+Mܸy�km�0Tl�������L�:�u� ��ߊ.����@���u���v�B!�#�O���ͼ������k�Θ1���k�9 L�sોcM3��x'!���ҍl�B=
��Fw?I��!�R'�|���Ɠ��~u��vF=2wt=� �d�躁ee���j��8��G]� �J���!m�.�[+rVT�ݡ�X���\{�t:K.W���"�}7I�z�.���޽���y���ur�܀�B!�x��)(0 �I�&�� k9}�G��b���_E����滵+U��}��8��0R�� j-C=�"TUOv�$H�E�iZ�V�~����wJ׺�����ǝ��(Lҕ�>�a\��Q?���Uz���q���������q��Avx�t&��g�{PS���t�(�ĉ#�>}��cG�a�t}p� !�B�GC��g2�y� ��С�|��7=�>��>��]���w� ���4���d29,+K*��4Sh�^˥�TJ����T*e\�Nv�O���<��ߣs�@��v����v7�[��I*e�NgH��붬Lr�V�S�
��Q.q�
�J�R�C7���
�MY@���ٯ���z�v=}�&��A����a�'���pY�zMMMRK �B��sP��:�g�f������g׮�{,F�O����5 �..��:n*�&�͓�Փ��j����6�r���Vl���ص߁�CÐ �'�[��iB.Q�3��z�]� �a&מ#��#�o ��'��GQTTUO�-DZ��`wV�q�*W�~�m�q]�v�ݒ�~��w�u3 �z?�j؅ '9sf?s�LaժU�?B!�����|�W_}���/�g�G�Z��l���*����a}��]��z�� ��E!A$;������I���ݮbe�OO��(^�GQD*�`�B<8��{���cM�1M�l6O>_��c����\G�X�L��6Z[o��ٚ\��c�B�>�zO�0�u��=�_<��v����;�NǪU�hll��B!���~3g�d��\��~�S^~���r9��N*�"�\�������z<G����L&���A��:��%���Q
�4����ϋ����σT[����Ϲ��:t����C|��c����������R��"��]���T����b�8x���.���߳�@Q�qlΜ9¶m������ ,��S!�B<�j�r�JN�>�O�_�1c!'�$�BR� �l~�s��Bd�T�)�)I��I�r@xx��m�� �F��TO:�t/.��T<Q��ي���ә+N��(��f��(�V�H��~X��jFhZDE���_�3��M���͛W1b,��� ���K�����<{��Ϛ5�X�`�lvP�K!�B��y��`ܸq�X��m۶��W�����F� ��:�O�2ͷ*^��=��<{E�P�(2�#�����T��W�ֵ�+u&��c�?��z���T��4B�zo�ڽ.!9�Z�&�juq ظӑ�ڸn�B��t:._���Tؿ� Ο?̿�7���'�z�B!ģ��]�͛��o�����?��0�i���&�]����9���T ���l�'����#�0�'�am�ﻵ���}4�E�tJ��0���|�� #5�V����jKև�q�/��LKvq��ruXV�(����AR���*'N����L�>�%K�N�|�B!ģ�W�MM�y��PU�s�E0r�8TUK���ǩ�y�Cu �������"��"�zhUU1��L�Ba�BC��織˝tv�R.k3|߫�������V�;Ь��"=�>��z_� �VC�֊����
�a���_%�:�я��0��!�B!��-
������ř3�x��A&����T�B�MTUM�^E;�M�R"�-<�9����Z@�����A<a�T�@��i՝ �L�5���s���TJ�����JU[���?(�U�k�d�v�(�س�S�];�ܹ�Y�|�B!�O��\��3;v���ك�8q����EJ2��IJ2�B�R�P�������-~}�GU��C���](w-��0J��籬t�[����M�R����4��%˃3�R)���ưa#~��1˔J����w]A�8>���45����& �B!�2�QQU��Ç�q���o�����T��V�ʒ��I�,�(�\.��v�R��sk���J��\K{����V\��4�E��"�JcYY
�a44 �4SI �
���ߢ\�Lv®�EQ`�րۑ�a|���X�r��nF���d�y����w'\v��E��Ҳ�ٳg�}B!���7֏��5kְg�N�8�ɓ��4i���(6 �4k������:Y����O�F��=�$�g��<A�5���$�1�f�s��y�zϋ����I����{DQ\���҇�ӕ���t1�^/DI���];-ar����X�l�֭��LB!���2��ъ��������il�����_�J�.��(^���E.W�PF*�"�ƶ˵�r�T�8��T;�XV�Vx���u?ǸX��6Y8T\l�B��Q���6�� ��N����(^����PX�pܝ�B����C_��q��˗0c��A{m!�B���7���Ν��=����p]�y���bY
�a���B������)���B�]�zS͝�v
�Mӱ� �| é�������m���l�Xl�R)�Nm1ޟ�v]�0 0��
\����Õ+�ع����f�̙;h�+�B!/N�J�ӬX��'���g�`Ĉ�47�#�����[%��[e�5l�LggQb���B��~Ws�[[��NgI�vJ�R;WÈSr
�TUMR�\J�|�O
�S����a�b�!k�!�"::n'�WϝU�k�.s���v�6md����B!���3hA�ܹs���_����Ǐ�%��'���9׾�!GU�ڢ�0RDQ��9�v M���M3գ.�~�݆��1���W��E��Z��0L�A�>{^'QD��71 #i˪����\TU�V��yq;�.�'O�����ٸ�e����5�B!��iP��T*��ٳX�`6_}�1�FM`�܅�nߏ>�RA��eH�3I�o����yn�������z[�Wێ�RL�pQ���8N��n>J��$#��܁0��I�qa5�k���7;�m���#�"<��0��JݯWQ�…��:��\N��W_%�� �?!�B��������z�z뇴�^���}�����ÿ���J��u�ʐ�Ց��1 �(
��y�J��m��<�G���1��Ƕ+I� e�C�<�M��������@�)}6�#���w
EQ ?9�x0ۭ[�p�2Q�����|�(�p]�6�����0b���q��i�~S�L��:�B!��e�W��t����͛ͩS{ill��g_���A��{��F�А� ��5�aԂ��T���}<�y�)TUIz�+���T�f ����j�i�d�uL����CS��H�,J�r�ȭ[W �ᘦE���]���E�WZQ�S&��1?! C.^<�޽3iR�6m�w]!�B<�}��4M�|�JW����������ߊ�]���5)(���*�n����N.W���T*E��nP,v$�B�s ���} ~���?��cU��T*M&�e���45��0L|ߣ������tv�b�%|��s'�8u(6EA�������G6�aë�5j�j�B!���[
TUe��٬Z�� �`۶�֞��K�XQ,+ӧ�{� ���F�L&G>_O6[�\�����ܼyE�*d~XQզ,4�'>�ߏg'XV�ʒ�(������ ����tv�Q����i��~ƃ�����΄���\�x� N�l�bV�^=��B!�O�o%�\QR��6�ƥK���b���45�"��`f���?�v]�T*n=����J-����� ��v<������*4nڿ��j}����#���°Z��}��) �j�rP���Pj-L��
�4[V�VO��P,����a޼��\�,�����[/�B!C��NA�̙3Y�x>�Ra�����E\צR)�86A�!�S��=,+=�EQk�B3��l��$�j�.Q.���5��y�q� L��g!(��
B׻f/tu R�u=�ې#�+�Ng�z 5���k���N��"�r'��%AB�3R.;�;w���w��/3o� *B!�]���3+W>˕+߰m���{�L&�뺵��q1qD�I���M�-�; �|��l�@��L����.L�LZ��^��!�J�6s`��C�-K-+���f�gEQ0 3�?�$��NHn�Mk<IZ����{ .]:���2f�pV�XNCðo��B!���ou�`ʔ)<��Z��C���.uuM�����h����A�eezt����֤�i|LUհ�4��0��I�2���ի_s�浤�׻����*���vmga�����J���I�4�:�Ba��Md2��~����6���l���8��w�y����A��B!����4�?~<���F~��?0e�\F��0M�J����/�J�1 #���+F�w5������s,K�MG�w\*�x�X\�`���(B�4r�:R��v �AA�a��j�Z (��m*����q4��mݿ� N�����3Y�l�\n��W!�B�d��w
���x�(L��΅ �1 ]�� é�kDQJ�:;[q�
Q>T��(DZk����AEE�t2�<�t�L&G&�C�u\ש=m/�;q�
�A��x}��~���xnB�cFQ�a����0 پ�n�8�[o�ICCà��B!�x�|'A��iL�0��_~���w�g�g�~D����/���Dab�eJ�Nl�& �~AP*u$�J�>=Տw��ee�]���g��ɍ��IAOM~�������gN@�ԉ�=j2��E{�e�̙�ҥK-B!�O��l�h����LN�����OP.wEq�]ױ,�l�@:�CU�Z���b< ��N�mg<��ƪ���ǃ�
�2�<�J)�Bw����{�a��{��qw�|�a���E�v�0 0��p���6[����G��o��ddP�B!���wh�Fss3��� ���O���}G& �xQ�(
��"��xi��m�)۱�r����A��T(0Mk@���O:�eԨ� ��W*%:;ے����' �6q���d���p���;7阦�a������۹|����b��e��f
!�B�'�w�O�(
���c�4�o�V�_���j����u�l6O�0�T*��T��M���k�0 ��
�������=�MZ�f0 �l6O}}�|��R.�hk�I�؎��Dѽw�(��� ۮ h���t�V��i�O>�+W.���ep^H!�B<���$�l6˪U�2m�Xv�x� ��@�g�躁ee��갬 A�S,���ي�:DQ�L�T*ݯ���)����l� �'�f**VG:�K��u���=@�(��� �5x]�<�AU5LӢ���}��Q��fݺ�̜9��z+�B!�bH*O�/_���+9{��N�R���<^���u6i#Q�)�:��
�k�!�ln�S�!�%�Tʺk~��(�� >�LR(m��J�b��R���ɀ�EQ�v�m��k��~�H�4._>�֭�ĪU˘5k�18)JB!������)�SCCK�,f۶/ٺ�W ��ر����_U�i�a
�sp��(�������
�S��vm���:�����V����¾�%�>��ԂU�<9�a�SO�nkk�ԩ}�� 6lx��Ço�B!�x� Y�� &��k�r��v.^<���}&AWA�E>_O6������mW��jg��[y�a��J�z��|�y��Rir�:��,+C���ܸq5�X��A�����za��0Ӵػw+'N���W^a���f��[!�B<݆d�����e˖�`�\����\��9s<��h�r��L�V��8eL3�e��4�_;Qa�� �L&��i�T_�4T5]KrUU(�;��rmj��Wϯ�qp���q�� v�����˼��!�� �%�B!�dC:ͪ�����~�#G>g��O�T��8J�mWPU�l�@&�'��'����.��mx^���\�\a@i>���A���SW�H��@*���nS������ݒx*��b����G�ȦM�3�y�
��B!ēoH��4Y�`>-- �q�,��?kٸ���q*�Db�6�ز2�΁E��J�tv��8q��{-��(� %�� �i ��H>��$����@|~�dP���y�m���b�e���}onjw <���ҥ��߿���G���Kq�B!��!
E�P(���L���������<�j���j�٣�$��9,+�����m�)��8�}ׄ��b�R)Ea҂t`�.�-+����2��t�MIU5�0��\.�T�8�ݓ��(4�(D�t������ϒ% innʷT!�B<��4(�80hiiaƌ�|���"i�y����C&/��%�nEq�o>_G&�CQ'^t�v��ZtGQ��c�e4M������y��])=���u�t:�Mסi��a�e*�R�nթMNø�Q�m<��e��|��~;�B!�ch�
��~�z�]��֭�b��g��������S����T
]�zoq�"�L�y��DQT+PV�w�u�\�]��6�u�Z�Ba��QQ ��0 2����6�J�(
��j����|���hj*�r�
Ǝ;�B!�x� �NA�… Y�|)��mv���R��{��� ��4�l6�ϢZ]7�d
��5���p]���V��nR������%�0 �}7�b��G$� d2y�ꆑ�7��*�r��W/p��.]:ç��� ^d�����{$�B!�L�LP�(
�-d������r�ƕ����:�8�&��b�>���Z]�Y�����T��֭k��cQ ���Xl�T�$ �~�c���u#)NΒNg��
|��%���̙�Y�l)��þ��H!�B<���`���]�QT���m\�r� {|����J��M:�p�\�B�tL3E&�GQl�L�ԁm�}�q��9��� P�x�CU5t���٣�;w�w�y�q����B!�BT=25�a0k�l6lx��?~�l����_�0Lt=�.d�e<�M�lpZoA��d29,+��:��ynR�������8|TU%�ɑ���<��r8�W��fԨz֭[+�ʄB!Ā<R;Æ �?�>��7�<��k�.R*ub�%*�x�p:���~���^�ִ�tR1���E>�@.W��jɮA;�]��=�(�o��(
�TJ(���!�����������c�.��c���w�!�B�'�#h�Ƙ1c��D�t��'����TJ\�x�s1MkP
�������u�\��Ba�ia�::nS*u���=��!mm�P�L �9�a@GG+|���G�2e/����Hm�!�B���#��i�z�-T�e��ϸz�<�n`Yi J� ؃2X,���NgH�{��(�R����� ��S,���ъ�:=v �(��=R)�T*=(�����]���=T�aƌ!�B�A�H��0b�֮]�a�l��;�0`ذ
qk�J�D�؁��q��m��uӴ��ڴ:5ٲ2�b+I*R*��8�(J���XV]7�Tϵ\�����8N�ׯeժUC��!�B�'�#Tmܸ�y�fp��._>G*�!���ur]�r��m� ��_���s�����󠲸��U+JVU-��\�T�X��8���3E� ��^���>���?ë��ʘ1c��B!�O�G:(3f K��0lX��;?H�w�0R�r2�aP����RR���A�c�e�(J�
��VD(��$ד��QU�R�����v������S��h�ر�\�p��_�ԩS��B!�O�G:(hiia���|���~���(]��Ba�T�.��њ��<80�<�s�����z�o�&�|=�l���6��m��dǿ��IDAT%|߿o�������<���3���#���e!�B!�1
���X�| ��/~õk�z�O��� �|�T�J����\�;N׵1������
aE!�t�1c&�N��<���V��v<���Q�~�*����[���?�1���C�~!�B�'�#L�6�7��>{�|���_a�N�^U�� ��9��,��R*uR*u��:�:C��\,+��� �s����$��2���& CJ�N�Ŷ$X �T�lp��.._>š5��4i�tB!���
��<--K�0a4Ǐ���O�[� ]�I��E����G�R�R)>���!�a`)`�AAE����C*��o���JY���Z'� �Tʔ�E�& �Wq��U�N&o���i�[!�B!�@�EP����?�gF{�%��r��t��8���aY� �MC�ND�u�L��� ��������J�ѵp����Ri��B�5I�u��8��繽Q۷�O{�e�,Y�ܹse�@!�B|+����,^x�ƍɹs9zt�}�^Q��֠�V�|��e��TU��x�ꬃl�@��p��1M�|��\�Mӱ�2�b;�]���Z DE�J����&4�q�ơ��B!�� ���m��=L��/~ߧ��4�t:�m�Y�r������"|��q*�h}��L&O�0 Ӵp���VJ����R)��?%�7X��Y�M�6�w]!�B<���@Q�.]���shk�®]���}�v�������hj�iZ�˝tv�bۥ>�6�����~E]7���HQ�I�n`Y����&��oq��!~��̢E�y�ٕC}ۅB!��
2� k֬fܸ&~�ۿ�����3⚂2�]&��w ���n�y.���T*%�0�SG��(�����iƅ�C�4R���!�+P*u�o�F��cٲiA*�B!�u�]P0w�ZZp���;��J�Do����S&L�BU5L�$��aYE��:Nܙ�/�0 |L�"�J������(E�ڵ ?��?��?a���C}��B!�S�
L3�ҥ�x��ٲ埸z�|��a���a� )�/7�
����il���W(��q�
A<p
�繸�C:�y�]��T.]:ˡC_b�!6�LSS�P�j!�B�x,���S���m�…#=����[w�8���9��?j/� ���Ng��0 �J�H�؆���5�w*��O*�����ȑ]\�t���mr��P�b!�B�xl�UU�0a<7n��᭜9s�j�(�p]�r��(����/�E�u�f�P�������2����@4h��c8}z?�G祗^"�N�-B!�O��6(�����7� �J=��+W����.���j}�I�(
��a��d
q�0 )�:)�����a�6����ա��3y˖�`�߰a�K455 Z�!�B!ă<�+O�0�1c˗�p��1��j+�����G*�Uu"�a��6��B�\�um�BI�>(P��`���\�|�)SƱz�꡾�B!��)�X/����ϫ9���7oR.QU-Y��m�Xo�M��d�R) �s(�im��tJ�Z��"(������c�x�hhh�A�B!���>(PU��ӧ��s�E%�����Xl�u��]�t2�<�|����7);��q������E�f�r� *B!�߽�>(�z�?~8�������A������hn�D6��T�Xl����
4 n߾�g���u�V�dI �Tj�o�B!�x
=1AAss3+W.gʔq�߿�.3X��Q��.�PW7���F,+M�tt�R��5YQ����c��r��Q6o~�g�yf�o�B!�xJ=1A���+ؼy#��o�…�8������S�}*��n`&�ibY��$c�u(��ضݧ�Ȇ�ϟd߾�Y�`s��y��!�B!�
�γϮ ����O�q�
�6�c�a��x��e�QU-�R�bY��z #��T*El�|ߔ"E���2'N죭�o��&�Ba�o�B!�x�=QA��#�я�����;w���<���l �D�M�;��.Gy��z4M�R)Q*u�ya�z̽{����X�x�/�]!�B1�����������3jT#�o�ԩ�][E�c���Lᮀ�;]���

�tt�R*u��^���E>���T*���o`��P�2!�B�{����a���fΜ��֭�#�u��:DQ�i�0 �A((����d�y��AP,�S.w�!a�����S,[��̙3���$�B!�=�A��k<��*�O�č�8vlO�������q�t:������(�A:�%�΢�:����~�˗ϲc�L�6�W^y�4��V !�B�d������믿A>���ǿ�\.�y�@�6T��]4MC���⣪*��&�ΓJ��TJ���1 Y֭[˜9s��6 !�B<�AA����1e�XN��éS����( ��s��k�P�ЯE�i�T�)�w��:V�X�:XC�B!��'ze�J�x���ii�����tt�>�{�0�q*�a�iZ�KН�­[�طo+��~�:&O�4ԷF!�B��':(hiia����?��{?������ZE�0 ��2�����~}]��O�s��ټy#&L�["�B!DO|P��:s��b���l��.\8�� xw}mT*%l��a�h���U����s��N2���z���!�B��477�y��(�np��anܸ��T�<���9����XVM3�Tp?a�}��<��W_��� ��B!�x�<AA:�a���,]��ӧ�q�̑ڮ��DQ��{x������7�i}lVtO�.����ݤ�!6��aȠ2!�B��y*��l6�[o��͛�9u�E��mT*%��"a�Ng�3��l��+
�7�|��#GJ�!!�B�HzjV��a0s� ^|�E:;��gϧ�rL3�͛Whm� �-+<|ސ�ă�Ν;ʾ}ۘ2e,�6m���3!�B!�kOMP�N���� ��m��@k� L�B�t|�ö+x�3��PUp]��?��&�d���顾t!�B!��
�N�ʢE�Q�2;v���9d29��a�)*�2�]"��~[Q�\�9}�g�`��,^�d�/Y!�B��x#������q�6��G�N�Gs�D
�a�aXkIE��B��>��hܼy��[ŤIchiY"-H�B!�#��)�x�`��DQ�]�>�u] C�0L���nR.�T���Gԇ6D��r�� ���͛72~����T!�B!�
�yf&7�Ğ=��~�6�@�42�<�l�s)�p�`��p��^�������,Y��|>?ԗ)�B!�=�A��ѣY�v5�F c��O�|�չb��b��\�fP�)����3(�+���1'O����ߢ��i�/Q!�B�>yj�UU�8q"�6�ʎ���AϿ7M�L&�i��}�b��6�;M���s��9/�ǂ�1Ms�/Q!�B�>yj��\.����( N���ŋ��s��a���Y #��{�˝8N�0 Q�����Vv���BA�O��'d�١�4!�B!��
TUe������)�}�;>�u�_E���t�t:�%\�& #��g��mܸq�Y���ҲD� !�B���S���͛ij�r��Ξ=B�];�(
��E�0 ]�k݉��N>��]fϞ̺u��r�B!�跧>(P˲x��1"�g��K����_Qt� �-���im��g��
�icŊ�̝;w�/G!�B�~{ꃂ�իW�`�Ο?�ѣ{p瞁��iXV�R���>�+W.a�����N!�B���Ul�P(�t�Ə�G��r��{��5 ��nq��AL3����0v�ء�!�B!��̚� ��=�ٳ��p�����[p�������}o�<� �a �� !�B�P$(�P���e �/������w�ׯ_�С���]���7���0ԧ.�B!�C���cǎ�?�>{�~���;(��=U��{?���"o��&#G��Z!�B�X���,�b���<��Z.\8ȱc{Ѵ��(�ܹS>���� o���e �) !�B1 ��������?����ꫭܾ݊�ĝ�>���(J��+�3r�HT&�B!{�B�u.\�̙Ӹ~�4|A�\�|���w1k�d֭[;ԧ)�B!Ġ���>^{m�Fؽ�#�^=����Æ�X�b��c���B!��ǢE�X�d!��M~�����WV�^΢E���ԄB!�4<�ʕ�2k�$>���̛7��K[6l�P��B!��F�x�M�4��^z�r��W^���ɓ����B!�TJE�P�ģ����+W�0i�$L���B!�bPIP �B!�SNj
�B!�x�IP �B!�SN�!�B!�r!�B񔓠@!�B���B!�B<���3Yr�s3G%tEXtdate:create2017-08-20T11:54:32+02:00IG%tEXtdate:modify2017-08-20T11:54:32+02:008\��IEND�B`�
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment