Skip to content

Instantly share code, notes, and snippets.

@almsuarez
Last active February 26, 2018 22:29
Show Gist options
  • Save almsuarez/fa9502b0087b829ef4d97e5d6d5ccfde to your computer and use it in GitHub Desktop.
Save almsuarez/fa9502b0087b829ef4d97e5d6d5ccfde to your computer and use it in GitHub Desktop.
Forcelayout v6
license: gpl-3.0
height: 600

D3 v4 forcelayout example with dropdown filters.

forked from mbostock's block: Force Dragging I

forked from almsuarez's block: Force Layout v4 with Filters

forked from almsuarez's block: Force Layout v4 with Filters v2

forked from almsuarez's block: (d3v4) Force Layout w highlights

forked from almsuarez's block: (d3v4) Force Layout w complex nodes

forked from almsuarez's block: (d3v4) Force Layout w curved connections

forked from almsuarez's block: (d3v4) Force Layout w update buttons

forked from almsuarez's block: Forcelayout v5

forked from almsuarez's block: Forcelayout v5

{
"nodes" : [
{"T":["Ba","Ar"],"Q":["sp","sp"],"id":0},
{"T":["As","Zy","Gy"],"Q":["sp","fu","la"],"id":1},
{"T":["Ch"],"Q":["nu","ni","tr"],"id":2},{"T":["An","Gy"],"Q":["fu","va","ec","cl","la","pl"],"id":3},{"T":["As","Gl","An"],"Q":["sp","fu","va","cl","la"],"id":4},{"T":["Ba","Ar"],"Q":["me","fu","ec","sp","sp"],"id":5},{"T":["As","Li","Br","An","Gy"],"Q":["sp","fu","va","sp","la"],"id":6},{"T":["Pr","Cy","Ch"],"Q":["nu","sp","fu","va","pl"],"id":7},{"T":["Ba","Ar"],"Q":["sp","fu","va","di","ge"],"id":8},{"T":["Ar","Os","Am"],"Q":["sp","va","ec","ec","cl","tr","la"],"id":9},{"T":["Vi","Cn"],"Q":["sp","fu","di","sp","ge"],"id":10},{"T":["An"],"Q":["sp","ni","fu","va","cl","di","tr"],"id":11},{"T":["Ar","Ch"],"Q":["me","nu","sp","va","sp"],"id":12},{"T":["Vi","Ar","Pr"],"Q":["sp","fu","sp"],"id":13},{"T":["An","Gy"],"Q":["sp","ni","va","cl","tr","la","sp","na"],"id":14},{"T":["Ba","Am"],"Q":["sp","fu","sp","di","ge"],"id":15},{"T":["Vi","Ar","Ba","Cy","Ch","Ch"],"Q":["nu","sp","fu","va","di"],"id":16},{"T":["An","Gy"],"Q":["sp","di"],"id":17},{"T":["An","Ar"],"Q":["sp","sp","tr","ad"],"id":18},{"T":["Ch","Ar"],"Q":["ni","fu","va","cl","sp","la"],"id":19}
],
"links" : [
{"source":0.0,"target":5.0,"T":"Ba"},{"source":5.0,"target":5.0,"T":"Ba"},{"source":5.0,"target":5.0,"T":"Ba"},{"source":5.0,"target":5.0,"T":"Ba"},{"source":8.0,"target":15.0,"T":"Ba"},{"source":8.0,"target":16.0,"T":"Ba"},{"source":15.0,"target":5.0,"T":"Ba"},{"source":1.0,"target":3.0,"T":"Gy"},{"source":1.0,"target":6.0,"T":"Gy"},{"source":1.0,"target":14.0,"T":"Gy"},{"source":1.0,"target":17.0,"T":"Gy"},{"source":3.0,"target":6.0,"T":"Gy"},{"source":3.0,"target":14.0,"T":"Gy"},{"source":3.0,"target":17.0,"T":"Gy"},{"source":6.0,"target":14.0,"T":"Gy"},{"source":6.0,"target":17.0,"T":"Gy"},{"source":14.0,"target":17.0,"T":"Gy"},{"source":7.0,"target":13.0,"T":"Pr"},{"source":0,"target":5.0,"T":"Ch"},{"source":2.0,"target":12.0,"T":"Ch"},{"source":2.0,"target":12.0,"T":"Ch"},
{"source":0.0,"target":5.0,"T":"Ba"},{"source":0.0,"target":5.0,"T":"Gy"},{"source":0.0,"target":5.0,"T":"Br"}
]
}
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.link {
stroke-width: 2px;
pointer-events: all;
}
.node circle {
pointer-events: all;
stroke: #777;
stroke-width: 1px;
}
path {
fill: none;
stroke-width: 2;
}
div.tooltip {
position: absolute;
background-color: white;
max-width; 200px;
height: auto;
padding: 1px;
border-style: solid;
border-radius: 4px;
border-width: 1px;
box-shadow: 3px 3px 10px rgba(0, 0, 0, .5);
pointer-events: none;
}
</style>
<body>
<div id="option">
<input name="updateButton"
type="button"
value="Update"
onclick="updateData()" />
</div>
<br>
<div id="option">
<input name="resetButton"
type="button"
value="Reset"
onclick="resetData()" />
</div>
</body>
<svg width="940" height="700"></svg>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-legend/2.24.0/d3-legend.min.js"></script>
<script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js"></script>
<script>
var colorScale = d3.schemeCategory20
var color = d3.scaleOrdinal(colorScale).domain(['Am',
'An',
'Ar',
'As',
'Ba',
'Br',
'Ch',
'Cn',
'Cy',
'Gl',
'Gy',
'Li',
'Os',
'Pr',
'Vi',
'Zy']);
var tooltip = d3.select("body")
.append("div")
.attr("class", "tooltip")
.style("opacity", 0);
var graph = {
nodes: [
{"T":["Ba","Ar"],"Q":["sp","sp"],"id":0},
{"T":["As","Zy","Gy"],"Q":["sp","fu","la"],"id":1},
{"T":["Ch"],"Q":["nu","ni","tr"],"id":2},{"T":["An","Gy"],"Q":["fu","va","ec","cl","la","pl"],"id":3},{"T":["As","Gl","An"],"Q":["sp","fu","va","cl","la"],"id":4},{"T":["Ba","Ar"],"Q":["me","fu","ec","sp","sp"],"id":5},{"T":["As","Li","Br","An","Gy"],"Q":["sp","fu","va","sp","la"],"id":6},{"T":["Pr","Cy","Ch"],"Q":["nu","sp","fu","va","pl"],"id":7},{"T":["Ba","Ar"],"Q":["sp","fu","va","di","ge"],"id":8},{"T":["Ar","Os","Am"],"Q":["sp","va","ec","ec","cl","tr","la"],"id":9},{"T":["Vi","Cn"],"Q":["sp","fu","di","sp","ge"],"id":10},{"T":["An"],"Q":["sp","ni","fu","va","cl","di","tr"],"id":11},{"T":["Ar","Ch"],"Q":["me","nu","sp","va","sp"],"id":12},{"T":["Vi","Ar","Pr"],"Q":["sp","fu","sp"],"id":13},{"T":["An","Gy"],"Q":["sp","ni","va","cl","tr","la","sp","na"],"id":14},{"T":["Ba","Am"],"Q":["sp","fu","sp","di","ge"],"id":15},{"T":["Vi","Ar","Ba","Cy","Ch","Ch"],"Q":["nu","sp","fu","va","di"],"id":16},{"T":["An","Gy"],"Q":["sp","di"],"id":17},{"T":["An","Ar"],"Q":["sp","sp","tr","ad"],"id":18},{"T":["Ch","Ar"],"Q":["ni","fu","va","cl","sp","la"],"id":19}
],
links : [
{"source":0.0,"target":5.0,"T":"Ba"},{"source":8.0,"target":15.0,"T":"Ba"},{"source":8.0,"target":16.0,"T":"Ba"},{"source":15.0,"target":5.0,"T":"Ba"},{"source":1.0,"target":3.0,"T":"Gy"},{"source":1.0,"target":6.0,"T":"Gy"},{"source":1.0,"target":14.0,"T":"Gy"},{"source":1.0,"target":17.0,"T":"Gy"},{"source":3.0,"target":6.0,"T":"Gy"},{"source":3.0,"target":14.0,"T":"Gy"},{"source":3.0,"target":17.0,"T":"Gy"},{"source":6.0,"target":14.0,"T":"Gy"},{"source":6.0,"target":17.0,"T":"Gy"},{"source":14.0,"target":17.0,"T":"Gy"},{"source":7.0,"target":13.0,"T":"Pr"},{"source":0,"target":5.0,"T":"Ch"},{"source":2.0,"target":12.0,"T":"Ch"},{"source":2.0,"target":12.0,"T":"Br"},
{"source":0.0,"target":5.0,"T":"Ba"},{"source":0.0,"target":5.0,"T":"Gy"},{"source":0.0,"target":5.0,"T":"Br"}
]
}
var currNodes = graph.nodes
var currLinks = graph.links
// Generate Statitics on links
_.each(currLinks, function(link) {
// find other links with same target+source or source+target
var same = _.where(currLinks, {
'source': link.source,
'target': link.target
});
var sameAlt = _.where(currLinks, {
'source': link.target,
'target': link.source
});
var sameAll = same.concat(sameAlt);
_.each(sameAll, function(s, i) {
s.sameIndex = (i + 1);
s.sameTotal = sameAll.length;
s.sameTotalHalf = (s.sameTotal / 2);
s.sameUneven = ((s.sameTotal % 2) !== 0);
s.sameMiddleLink = ((s.sameUneven === true) &&
(Math.ceil(s.sameTotalHalf) === s.sameIndex));
s.sameLowerHalf = (s.sameIndex <= s.sameTotalHalf);
s.sameArcDirection = s.sameLowerHalf ? 0 : 1;
s.sameIndexCorrected = s.sameLowerHalf ? s.sameIndex : (s.sameIndex - Math.ceil(s.sameTotalHalf));
});
});
var maxSame = _.chain(currLinks)
.sortBy(function(x) {
return x.sameTotal;
})
.last()
.value().sameTotal;
_.each(currLinks, function(link) {
link.maxSameHalf = Math.round(maxSame / 2);
});
const svg = d3.select('svg'),
width = +svg.attr('width'),
height = +svg.attr('height');
// const width = 960;
// const height = 700;
var simulation = d3.forceSimulation(currNodes)
//.force('link', d3.forceLink().id(d => d.id))
.force("charge", d3.forceManyBody().strength(-1000))
.force("link", d3.forceLink(currLinks).distance(200))
.force('center', d3.forceCenter(width / 2, height / 2))
//.force('collide', d3.forceCollide(25))
.force("x", d3.forceX())
.force("y", d3.forceY())
.alphaTarget(1)
.on('tick', ticked);
var R = 8;
var g = svg.append("g")
//.attr("transform", "translate(" + width / 2 + "," + height/ 2 + ")")
link = g.append("g").selectAll(".link"),
node = g.append("g").selectAll(".node");
//simulation.force('link')
//.links(currLinks);
restart();
//Draw links colored by T
// link = g.selectAll('.link')
link.data(currLinks)
.enter().append('path')
.attr('stroke', function(d){return color(d.T);});
//Add mouseover events to links
link.attr('class', 'link')
.on('mouseover.fade', linkFade(0.1))
.on('mouseover.tooltip', function(d) {
tooltip.transition()
.duration(300)
.style("opacity", .8);
tooltip.html("Source:"+ d.source.id +
"<p/>Target:" + d.target.id +
"<p/>T:" + d.T)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY + 10) + "px");
})
.on("mouseout.tooltip", function() {
tooltip.transition()
.duration(100)
.style("opacity", 0);
})
.on('mouseout.fade', linkFade(1))
.on("mousemove", function() {
tooltip.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY + 10) + "px");
});
// Add Dragging Behavior to nodes
var node = g.selectAll('.node')
.data(currNodes)
.enter().append('g')
.attr('class', 'node')
.call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended));;
// Draw nodes
node.append('circle')
.attr('r', R)
.attr("fill", function(d) { return "#CCC";})
.on('mouseover.tooltip', function(d) {
tooltip.transition()
.duration(300)
.style("opacity", .8);
tooltip.html("Project:" + d.id + "<p/>T:" + d.T + "<p/>Q:" + d.Q)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY + 10) + "px");
})
.on('mouseover.fade', fade(0.1))
.on("mouseout.tooltip", function() {
tooltip.transition()
.duration(100)
.style("opacity", 0);
})
.on('mouseout.fade', fade(1))
.on("mousemove", function() {
tooltip.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY + 10) + "px");
})
.on('dblclick',releasenode)
console.log(currLinks.length)
// d3.interval(function (){
// updateData();
// restart();
// console.log(currLinks.length)
// }, 4000, d3.now());
// d3.interval(function() {
// resetData();
// restart();
// }, 4000, d3.now()+2000);
var temp;
function updateData(){
//temp = currNodes.pop();
currNodes.push({"id": 30})
currLinks.push({"source":0.0,"target":30,"T":"Gl"})
restart()
}
function resetData(){
currNodes = graph.nodes
currLinks = graph.links
//currLinks = graph.links
//currLinks.push(temp)
restart()
}
function restart(){
// Generate Statitics on links
_.each(currLinks, function(link) {
// find other links with same target+source or source+target
var same = _.where(currLinks, {
'source': link.source,
'target': link.target
});
var sameAlt = _.where(currLinks, {
'source': link.target,
'target': link.source
});
var sameAll = same.concat(sameAlt);
_.each(sameAll, function(s, i) {
s.sameIndex = (i + 1);
s.sameTotal = sameAll.length;
s.sameTotalHalf = (s.sameTotal / 2);
s.sameUneven = ((s.sameTotal % 2) !== 0);
s.sameMiddleLink = ((s.sameUneven === true) &&
(Math.ceil(s.sameTotalHalf) === s.sameIndex));
s.sameLowerHalf = (s.sameIndex <= s.sameTotalHalf);
s.sameArcDirection = s.sameLowerHalf ? 0 : 1;
s.sameIndexCorrected = s.sameLowerHalf ? s.sameIndex : (s.sameIndex - Math.ceil(s.sameTotalHalf));
});
});
maxSame = _.chain(currLinks)
.sortBy(function(x) {
return x.sameTotal;
})
.last()
.value().sameTotal;
_.each(currLinks, function(link) {
link.maxSameHalf = Math.round(maxSame / 2);
});
node = node.data(currNodes, function(d) {return d.id});
node.exit().transition()
.attr("r",0)
.remove();
node.enter().append("circle")
.call(function(node) { node.transition().attr("r", R);})
.merge(node);
link = link.data(currLinks, function(d) {return d.source.id + "-" + d.target.id;});
link.exit().transition()
.attr("stroke-opacity", 0)
//.attrTween("d", linkArc)
.remove();
// .attrTween("x1", function(d) { return function() { return d.source.x; }; })
// .attrTween("x2", function(d) { return function() { return d.target.x; }; })
// .attrTween("y1", function(d) { return function() { return d.source.y; }; })
// .attrTween("y2", function(d) { return function() { return d.target.y; }; })
link = link.enter().append('path')
.call(function(link) {link.transition().attr("stroke-opacity", 1);})
.call(function(link) {link.transition().attr("d", linkArc)})
.call(function(link) {link.transition().attr('stroke', function(d){return color(d.T);})})
.merge(link);
// copied to here from "Modifying a Force Layout with buttons"
simulation.nodes(currNodes);
simulation.force("link").links(currLinks);
simulation.alpha(1).restart();
}
function ticked() {
// link
// .attr('x1', d => d.source.x)
// .attr('y1', d => d.source.y)
// .attr('x2', d => d.target.x)
// .attr('y2', d => d.target.y);
link.attr("d", linkArc)
node.attr('transform', d => `translate(${d.x},${d.y})`);
//node.attr("cx", function(d) { return d.x; })
//.attr("cy", function(d) { return d.y; })
}
function dragstarted(d) {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x;
d.fy = d.y;
}
function dragged(d) {
d.fx = d3.event.x;
d.fy = d3.event.y;
}
function dragended(d) {
if (!d3.event.active) simulation.alphaTarget(0);
//d.fx = null;
//d.fy = null;
}
function releasenode(d) {
d.fx = null;
d.fy = null;
}
function linkArc(d) {
var dx = (d.target.x - d.source.x),
dy = (d.target.y - d.source.y),
dr = Math.sqrt(dx * dx + dy * dy),
unevenCorrection = (d.sameUneven ? 0 : 0.5);
// curvature term defines how tight the arcs are (lower number = tigher curve)
var curvature = 2,
arc = (1.0/curvature)*((dr * d.maxSameHalf) / (d.sameIndexCorrected - unevenCorrection));
//console.log(d.maxSameHalf)
//d.maxSameHalf always showing zero...
if (d.sameMiddleLink) {
arc = 0;
}
return "M" + d.source.x + "," + d.source.y + "A" + arc + "," + arc + " 0 0," + d.sameArcDirection + " " + d.target.x + "," + d.target.y;
}
const linkedByIndex = {};
currLinks.forEach(d => {
linkedByIndex[`${d.source.index},${d.target.index}`] = 1;
});
function isConnected(a, b) {
return linkedByIndex[`${a.index},${b.index}`] || linkedByIndex[`${b.index},${a.index}`] || a.index === b.index;
}
//Fade rules for hovering over nodes
function fade(opacity) {
return d => {
node.style('stroke-opacity', function (o) {
const thisOpacity = isConnected(d, o) ? 1 : opacity;
this.setAttribute('fill-opacity', thisOpacity);
return thisOpacity;
});
link.style('stroke-opacity', o => (o.source === d || o.target === d ? 1 : opacity));
};
}
//Specific Fade Rules for Link Hover Instances
function linkFade(opacity) {
return d => {
node.style('stroke-opacity', function(o){
const thisOpacity = isConnected(d.source, o) && isConnected(d.target, o)? 1 : opacity;
this.setAttribute('fill-opacity', thisOpacity);
return thisOpacity;
});
link.style('stroke-opacity', o => (o.source === d.source && o.target === d.target ? 1 : opacity));
}
}
//Legend Details
var sequentialScale = d3.scaleOrdinal(colorScale)
.domain(['Am',
'An',
'Ar',
'As',
'Ba',
'Br',
'Ch',
'Cn',
'Cy',
'Gl',
'Gy',
'Li',
'Os',
'Pr',
'Vi',
'Zy']);
svg.append("g")
.attr("class", "legendSequential")
.attr("transform", "translate("+(width-140)+","+(height-400)+")");
var legendSequential = d3.legendColor()
.shapeWidth(30)
.cells(11)
.orient("vertical")
.title("Link legend:")
.titleWidth(100)
.scale(sequentialScale)
svg.select(".legendSequential")
.call(legendSequential);
</script>
�PNG

IHDR�����
�iCCPICC ProfileH���T���̤Z � �#��k(ҫ��@%�@P�+�
���,E\�"kAD��(v� ���.l�� ������;��w�w����o��{��\a ���lQ��'#6.��� ��@���z��T3׿��mt4���S�����<7)��r"7����)4�s��l.��]�-���(+��Q.�b�4���i��>&2� �(l���w4�����: ʖ._��-ʮ�6:��22�N�!�����o5�5�l�������,a:{����[��9tР���ç�C׬6mi����Cf�ϝ�i�S��Q3���a.�;p��iQ3��>��fEΰhi��� }~��~K�IY>3���e�pnJd� ����pVZD��/i^$���,�cF�lo��\�)���=�J��&y�H�(�xa����0=t��t?i>+'B�l6��f8�:['T�>��p���O�+�T�B��d3<�S��` 8f kK+{����'}K�~� ���\f;�h�7�c�p�)���9�7�v���^�X�3���� H@(� t�0��8w�@�q`1���D`Xփ|Pv�=��A-8N�p\��u� � ����Ax�
� H ҇L!k� �B>P�A @bh�*���R���~�NC��Pt�F�7�g�)�"��sa&�‘�"�g¹p� .�+�p3|���<����m�a"^H�$#"d R�#�H҆t!7 ����ah����Da8�L��VL)�ӌ���� b�0߰T�:��eac�<�2l>�[�m�^�`���q8g�s����p��������F\;�7����*xS� >��g�����G�����a�G��E�&�� �B1����0B� ���N�"�����XEl#� 'H�$C� )��JZO*!5�.��ޒ�d�#9��'�#������ɟ(
�e!EL�F���S�Q�R�T�;5��M�F��^�>�~���XȰd�2ke�d�e�e^�e�e=d���˞��!�R�(g �%ǖ[#W&wZ�ܸ<M�J>D>C~�������

>
\�<��
�hM��E��6Ҫh�hÊ8ECE�b�b��1��1%%[�h��JeJg�$t�n@g�����'���h��4g˜�9�s>(�)�+')(7*(Va������TiQy��Q5Q S]�z@���K5E5g5�Z�� ��갺�z��J�������~B�}5^j�5�5S5wk��բi�j�vk��z�Pbx0�%�NƘ�����X�B�G{B�P'Jg�N��#]�.S7Yw�n��^��*�z���D}�~��^�.��1� Z �*� s � Q�܌2�*�n㌙�i���{M`;��2�����)�t�i����L`Vivǜb�a�c^o>hA���`�b�j�����;�v��fig�nYe��J�*�j�U��kk�u��-����Z�V�׶��I�l�����6�u�}�w��7؏:�9$8�;�a*2C�[�W����k�8~r�w�v:�����s���g� �%ͫ�7���v�p��2\\�Jܴ��n�nO�uݹ���#��G=^yZz�<�<?x9y��j�F��� �{||�|J}����|�}����V���c��w��ai�8�:�X�C���@J`D`i�� � QP[0�+��|����-! ��+�Q�ahf�/a��а����V�»"hK"�D����� �(J�-�0�.�C�wLQ�$vn����q�q���x||t|u���{ /�[����"�E�]]��8}��%�K�KN&`b�$|a��+�㉬���1�g/�ם��;��T�4��\�������MqK)Ny����_���L���V�6��ޘA�H�8-P� :�j.]��Oh*�J2�2�d��E�YP֢��lE��t���?�s\s�r>.�^vr��r���&+������i%f%ge�*�U�W ��X]�Z���c��ڼ�����ծ'�O[��� E�m��ؖ���.o����e�E�w69o:�����g�͖}[�p �Z~���z�G�K~�ܖ��g���;p;;n�t�Y[$_�[4�+xW�n�����,�s�ض��^�^�^IIPI�>�};�})M)(�,k,W/�R�a?w�� 5�|��n�_Es�Ae�a���O����~b�TW�Z]X��FP#� ���s��;�~d{=\/�=��h�1�c� � ���������~�}"�D�I�ɆS��ʛhM�P�汖�Ik\k���m�mM�X�RsF�L�Y���ϑ�坛<�{~�]�����Pǒ�c/�� ��x��e���<��_q�r����ט�Z��_o��n���צ���7Z{{������w�p����[�[���ݎ�}���;��ܻ���{}?��ău� �=*~����7��%����ރ�O"�<� ��=��/�yO�O�G�F�Y?;3�;��|����/�������ѫS���=;6�Z�z��ַ*ok�پ��>��ć��*k?1?u}��<2�� �K�W�m��=�̘��E��VANN�M �8�;�@�����M����O���B�K�;Q�B=�4�Q���)K�`i�CY�6�ӵ(���~��|�� ����ɉ���_��f�О9�ŧ�C�P�c��[s �W��"L�BOY�iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<exif:PixelXDimension>960</exif:PixelXDimension>
<exif:PixelYDimension>500</exif:PixelYDimension>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
��2c�IDAT��yBZi���w .!K���젳���;����w��yRPqBAqep��}�L�)Mu�.1�z�G I�a $I2,�$I�%�$ɰ�$�@�$�H�dXI� K I�a $I2,�$I�%�$ɰ�$�@�$�H�dXI� K I�a $I2,�$I�%�$ɰ�$�@�$�H�dXI� K I�a $I2,�$I�%�$ɰ�$�@�$�H�dXI� K I�a $I2,�$I�%�$ɰ�$�@�$�H�dXI� K I�a $I2,��� )~�RD��Ho�G����7!�ޒ/B7��� �ޒb��A �%�b���� ��(>55�A��h0)F���}����6��f����5����߃@2���s�2�3�r�[T'L
�d��A �g1b�X���Պ�
��C��H�3%F�x�,TNP wW����|#q�[w���u5��߁@2����L�p/���,� m���a� �$�M!�Ÿ�Z�V��p�Ѵ��ș�� ��7 �����z�:��_r�bCt���.eW����>�d@k����X�-�jFI�{ ̷T����Ho�@2��`9���YT���� w�h�h̷Ho�@2el�)�P79��]���k�2�h��Ho�@2��*�3W81L�9�0�L�m���'���܉��R�T�U4�q�L{sJ��<G�j"�m�h�ѥ�����h��$ ���]�mHsB���׭�l�n9��{n��^����*#�U�`"m4���s����
�_�ۨ�� Gy��|;�%��e'�j�R�U��7�I!��g`f-�jw ��M �Q�Xܧ@.q���)'|5)t �U͌|#u��I ��6Ѭ�ǸW#S��3��D�co3)F�Ho�@2�!�/=�Ǯе#��!��3�bd��������Sb�HF�Q��9�+����F=s���ⴚ*WPѝ�Ho�@2�нGuޮ�~��X�ꉦ�>�B��h3��� ��B��.�%� bJ� +�bq�����y hG�w�� �}_+8�ES�u��,�d��H�����4�\@|�!���[�!\[���1�߀@2�)1R� \+]:a�_�Ձ�v�s'��.�d����.D"$�H�ژ�v,�8M�9�(C�7K ſ&���;|��‘��RF�n�KDwVJ��,7Ho�@2�z�V�<�����ڝAW3y�����4#�����H�R�Aպ��� ,*g.4�d@ɠ�m����ݧHo�@2e���4k�P2Y.�~*�C���\�z�.���#�Y�`v����e��6m0��5����扴�%���Ho�@2����|��Ƨ��ϰ�H{�����@3��:_?z��f $ñ� � ��>�:#}W8�Rͣ��$���,�d8��B���3�Y-70�rEsi'���f $��v�L�{�i�ţM��reCs$]Gz��9m����w
��9�|���N��&қ%� ��z/t����N��OI�Z_����f $#*�r�g�+B��ȹ�߃p��*����Ho�@2$�L�M�.��[�8�Waf�ZU���"қ%� ��w���u�E�$����8�*t�Z��HƴTp1�U,=t+%��
w&T� 6��,�dP��4����1�� 6�K5�ܙ��Fz��A�x�7������͍�����TN<�L!�YɨV��>��P*�|{�P��A Z�Ho�@2�� ]4��25�`��f
j8�"�Yɰ.;I4��.�X��l�/�_[��J�BHo�@2����*��{�[Әo�tGv �>�7K X|?t��ViA��A� ܧ<&��n�7K ص�֌&o�h�^��:�\8�S�� $�HFV����(UX�\�ZX_+���j�-�X�3�jŽd8�В;�
� ��zz��mBk�� ����@2�dhC��*K�&T/�|�\�AT�[~nJ���F [3���2]ӷm��]���k-��v��}#q$�H7�� �r� �B��� ��H���y��M����$�3߮���ǎc(W�L`>���;��B��p�ѵ���<a�ǀ��N��i�
t��wB�]$�H����z {�=Vl�pP1��#T�6��� H ����BnnMy�}�Sn�J�@���$�H�w����c���f�:p������c�=E2"��,�3� �f��UX-b_��e��6?��� ���u�󜾽B��Q��w���n�3 U*H�$�ނ��nH�n�&�f2f؊fP��D;
�;� I � ���2��rX���]m�rAT�~�y�� I � �>�-�~�yLn�^$�aB�����Q�� �@z�>�n��W�4��f,H|�;V�<�A�1�dH�X^����g?m�����w�j�<�r��)W� I ��c�)�U����릻�%���9�ut�M$CHoř �W����Ȟu;堙�<�ad��dH��X+@��j�{�
k�sk��؝��sF��H�$�ގ�!7����ߘu�zb`���O+�q�q�dH�����^�e*y���N" �c�y�Q��$cHo�fgCikҞ�M�!]�n�'�ϸw�D2&���$� �q%��f�r�jN<<���W�A$cHoɭPBaO8Z &�%����B|�;�dL�M���m z_޾���W6��>���1 ��%Մ���/�.`�����V�ni ɘ�� ��=EU�i���x ��dL��I�9��q�f~����s�3�H�$�ޚt�$��� �<8.���
���I �9��8�(xNx���9�1 �7g���6��x�{�#
�A �7(.F&�yN�G�y�dP� ������#v�C��� J �E�B����*�-�x�5�dP��?}�j�
j��=W�Z�T����fɠ�˙;�������p?���]7��*e$�H/&.t���ʭ�� ������A ��Q��y�fҖb��W������"�@z1�b$�k�]N�y5�j�+|� �G�#$�H/fJ��*���T<�,-����7����H%�^LwBh&ye�ɥ੦��W��e�dP��� !&�l�*�Q�y#_�n���y…ɨ�K*�j@9t�+�٢vGk�T�c��� �A$�Hcp��b��J��R��ItK�ҚF2*�4�cט��[�x1����I�9$�H��4�3f'� S�T��E���<�RF2*�4&w���raI���HUe���o �@�uO����c��{���g$w��J �ωo�q�W�y�� e�g����J �S1v��l��]��5��
�q�!�@�K��9���=�O(C$�Hc6�f\�
��>!�y΅ɰҸ�mm�$ЃB��3�$�HcwYd<2-�b�3�hM#�@z��3�a�J\�|�[Y$�H����`  ���Ϩ�� K ����!/��FwB��<#_E2,��JZ�./α��B��$w� K ���y^�EҾ ��~�-� �w� K �� g�Tv�T��h}s<�u�dX���y)MGv�U���(ͧ�y�d�C2,���×���x�X�@+�1�-Ŗx¥ɸ����k����}T=��
L~0�%�3U��@2.���2����Ut���Ľ��J�:����^ɸҫk�� �"�t�6�U�8�0z�:u'���Vɸ�뻍����mF�a; -p�-�4�]~���d\�W����T�ܫ������+X� ��3�W��K ��5�{�@nȽ���z$'^�i��-���H�%�~��-���L��7�4�#6�v �!�A�5�H��d\�W�on��X3��.z�n~��B� �9
��x�}�d\�ב��v�-�@q���y�� pk���n�LwH�%�~!5{��Đ{W��l�q���|�RMn�0��O�ͥ��ү�2\�?�yR��:a���_ݙ)���n֊�9۞㫞��ү�8���Ih&��1�5���,��5xN�tR]��^���/�����T#E�����v�F�,Taov�,U�e� L �rr3�{���)���ji� �8
3-X\!��ny��үgWi��#_x�����L J��ogn v�lM��d`�4���o(��8��y��?��0���V�-�T�6/��;!�ۑ^�@�%U]=��G���!�%����y�.T�[� p‹��8��H��3�
�_�Ż���@b��xz@~��,�9���y�K�4!t�^�@�U�"W�[�|W���8��,��1�݆/B5�刑�H/C ��ڶ:����v��A�|��zCU'�j��н�刑I��!�~a�9��鎯Ν�ѩr�*S�ۨ�u��Ob�Nj��)��!�~eۖC���6_9.x�r�j' �'P][�L��8/�6!T�H/C ��n�E�Dc�{3�<���QP9.P�,��$Fz�������]�"�~q��~j�0���Sn�u4�����u�&��=/&u���ү��Y秒;hZ�<�ҖESO=?��$*ۄ�]���j"�,���[H��� � O;s��ZP�h�����x1� �&� `ϴ��n,�\g<m�S�%����//�RFzi��Y��؃��8�h6�+;��:4�,�y!��H/N ����&'?��l9�x��<ˋ<����\:PM�Й��vضuy�I��'�~]� �����-�K�^�g�'� �"�1�ns�� ����pF����$t��,�.xZ���v��(��"*���J.��Q�zgn�qH��I1½#�O�ey��܍݉Un ]��̷�%�j�f��H��I1��l�'�6\<o+��]����nL ��'��_�v�4���A�&�nǴǏVJ��xVu��&��
*�����i�󂿔w�4��:;���� <���E��Zb���@U^F߯,�B������Hc"�~a� !&l��7��޺���V`��Y�%ZӌxN�/�+;8.Y+�Y�:�M�qH��.�\{��*#��U����xNi�s'#�5T�P�Cs������*���W6��\:� ���b��{s�h���P�%�v�F����a7�&�ᯱ\F����S���Tk�ݪ+u��к�n����9�-H�3�n,p�D��_��)�%�rHc$�^WR�>�S�%�5����4��(�<'<cnJ-�Njp��*��ZM~�v��(�_�5�4N�u}�8?5��W݌�|ԭmn,|U\��]أ?)�x��j'I��<FW]�vB+�����~�y�7�[��#%_��:a��؇>�D�;T־�����Hz��ҙ i�ҫ���I~���C�P��)�8�yZ��J�|b�*�\䞭�=�)��;Ҙ ��%F>���3�Ii�:g�{�*0DS���1#��QY��+��w��b�B3���&��Ȏ�=�{dz��<��4���iا�Թ��4�芑��P ���9v��;���G7������s�3��Z�gL��Н 6}�m�B��/��x�� �;���� Tbe� �N�Z\��,v�4v�U� �/[���(����=�{�S�<��ڿ��9�I�KT6����w���0^^���Gs ��H��(Ĉ��r��tc�_��gn��n1�#���I�4����[ ��B/@쐯��|e�������
�+:s�n���.��~��߹�f���y����$�[�� Q���v ~��2[YT��SSEn����be�5��3T�|��7��໳��)����F�B|�#���� wf4���\:���s���'��#'����e�^�@z=� �;�� xN`�|�CE�+�s�7�S4C��� ]��O���Y+zN���Σ0� Bg��7�-�S{�H�C ���1p�F�<g�nCk<v��4�V{|S�����
��ӯ(<�܉� fA��N�{y�bd��-������^�@z-3���r��UX_@UL�E�+�s��>!����~�7[�!K�
t�Ese �9
�b=G�$.F>04�͍��ȹ��W2��f��j/L�P��z���f�ۢ!t�xh��
Xw���^�c����2512k�ُ���^�@z�2:��-� Q]�7x��.Sb��:q��Ұ��0:O�s��Gս��Lt� �,����/�^�@zw+�C�f�~]~�]��7z|#q~�9{,�x� �Λadۼ���@���]�^��fZ���}��#��,�N�wv�,���Qm\��u�\��77WJ��x�cSl.�ǵʔ)����^h��Z3��ӌ�6Ch֎��{�����ٯ����^�@��������\�v����ɩ:�n���S���f��V� �=���_��=ly�� \�Qm��|לEsmu3�[q��P]:�7�:5Tgn�;��oIo#�&�4^��nnκ�M��b~.���;r¤PMĹf�p�Z̈́��R����>�D��y%��L ��ΟЈ���g�t"�+t��JhM�ပ��"��*���C�\q �U ��#u�vO0�\X�n� .��/B��֢f�{�X;�EW�'������~�r�"��k�9
� �|�BL���y4��4�ip�ф<%��s�,7<��<5���Z-!�.�4^�b�G: ج���"��u�)1�X��uns�vٞ�q��g���F5(�R{|<�3���MkE4 ��54�:�����҃N�(����ƄP� yV=�s�q{�� ���$t��zpsq�m�5]�6Sb$�nn�i޼xG�s�Z6ݡkN;�g趲@�͔��rM���Ac�<�@t�^�;ӥ����|��<k/�s> �d� ���N�D�j� ߔ+0%F�l��h'=�ja���w^q'hLw�RB3%F���2�eϏj'�j�����B!��[tG!�#�aȓ��c�I��&�Ƭ��L��F�bͶ��ᛣ�'��_�����R�G)�ٟ�zPX��͔�CaեLC`��Ɣ�7�޸�!���3�����Z1��v��� ����Lj.��_���++kՍ�zcgw��9� N�.�nn�Azi�u�8��cg|�<���N�Kfͺk6V@�\�+��ݬ��[/��*�{��6Q� t (�f}�����P�ϴ���;���Mw�ח�g'��q�p���ܮmm�++�r���Ϧg�3�X$�{=.��b>dR��^�@z�; ��sՕ9��|.�b�.�Y.JJ��B� �����v�CG9ŹKKh~�w*Y%����-؞C�=�\%w��^�ro�ݥ��OB7���<oR� �4��
{�r?Լs}t�XRl�C4ǖ � �� y,o����
������P� �����.�[sx����3��ʑq+=:��I����=�u�g�{����+X.�IzP5��.�Z6�;K�Z�`=5;D״,�i7?p���-A4�/mC'­��;eϚ� �_O���X��3��hB!+p�� �}�s����^�&bH/M ��v�tŇf'8���j� lzg�����2�r��8S<��I�k�����6���Z�e)��{���2�\m�(��5�=.��f����]X�2u�q�qo�������Ezq� 4��@��P"��2�F�b� �L_1W��!t�l�ȅ�B�W� �i�3>���?����s�-0���T�kQ[v͙�f3 �)`3q]���6�Aa����u�qH�!�b��4�G��6��K7|�gsm��.�G�1�$w�u���ŽhMz��#�*3[�2��ƹpc���E�?�+�'ĹU�޿��mgj<�Z�I�Y�6�����A ���
���jf���v�:?�K-���y.r������ُ��:��5�i (�O��B;rf���u�`�S]�`A ,�C��k[�M���P�=�����2<�8h��li�khM�c4E�2�m���,W��幣�^A�o>��n�peĒQrL�@n 6Mn�.��>��{ش�����D��r$�^��6Дu.{ �;|��� ���.xO��A �� \�� }�0\u�w�ݔ-�7k�h}4��5���⡵�/���l��f;�J+�UT� ����fW�Љ��^Es\��k�Rdr��L��� �G�D��C7V��H�"xLcU�4��5((� ��� zj�䊌��et�$�l���r��{@_1ϝ�|��j�y=m쮆�\f
��9���Q�U�t�at�D�\8ω��p���>�Ɛ�B ��z����f����[�Y�&���,{:hvm=~�5wy ��^]v ��&��u8g�Vo�4O/خ�,u| `6�2�Jf�h*�9 S;
A��F�G{��!?Z+ ��@zM�9؉���:��|ޱ~a���ix�u��68
����psM|��T�;�]�+�y��� �� �8uߙ�����ET�67V4�LxY\��1��V8����Hc!�^Eq��T��e��T�\��2���rV��غ}M~���<:"]G����,T_hG�ez�b�g��z��*0�K��3-F�� T�5`e���l_�=]� ��_i,�k�"4_h�󧌔��������uѼ�#��,�����)��ʲ�D�GU��:1����G>S�D�+;[�Ys�k�j�и΁�U��� x#{<��<�֌4��n���fd�B�++�;��wP]x�x̴�w�[�!��U\�|�BǤ�2+��lj��X+ޙ��r͹�nX)Y�Q%wX)A�~�w۾���D��C ��)1���ɉɏZ�TL��K�ޡ�fxd`��Ma�TՍ�12�D��&���A��%x��@��T�1t�3F��R� P!�)���^͓���x�W�Q�ĩo����м�Uk�����眇j&�xٞCc�
b��,T�[���]���9��OˮT��6�w��b��t� K�^��teO��l i<�+�,F���F\�+2W�h �O�X���y ��N]�<4�����M� C>�{4[�>TJµtΞM�e1z��Z�ITk�)��ZLo�鄩�s�̷��ȝ�S�.�x�W�}'4﹝5��O���+�� ����l8��|�g��J��7�W��-T3�У�A1Y�[[@-�ْ3�$�X��s����@'����bi]|%�t ��f�_�sCiL�k(�BL�P�/���4v12��<��-D΀M�%�7��q��E����!�b58��
��!���5h
)���vxh3�VX+��Y���Z�+��qiL���j|�[;��Cjb� ��`�7�㛎{��w���4���ҕ �J �r�΃���=8s3� )��zM�ûw{<(sh.��Cḫ��7�V���<Ҙ�_��֌rʔм ���5�#�Y �T��Mܻp;�i�.�{J��6���T�h��&)gTY�>!T=i��(��8T��[��Ο��D���8��ߋ����Z¾p�#��D��z�E`=x�7i7�R�j8��j����3p��� �9A�����0����}䱹:�9�3���r����υ���D �B�<p��VNxh/;�ew��=��%9��;�S7,Uh�V脁%+7�!p\�z�ƊjB����-�xn�ܔL^`?����s��(C�1H����)U�B3({��+8�G��wY���Re�;w`�@i���&�u�y�aH�مR�C��g���N*����p�A��-+��|�'����I�Ҹ�_�]3c����t��m�Lw�W���JdȽK����jp��P%n⼀�#z�On������j���3)t���G�otf6=?��}��<�nN�r��� ��T�"��@�5�K>O�MkNI���q��`�*����{ �;Ӊ���:<��M��;���K�������ɧ���lg<��%bd�N*p)f�?��V�|#=��PE���:Y�Y�o�a=a_8�ޜ��H�܄X�{Y7��V� �&s���ߛ߀�c>��&%����H��?���qQϹ���r���N������zf��n5�̇L��8O�t��E ��n��,���r=�]:᫓�{ �]*u�R�{�$��`� �5��݀��vũ>��8�>��a��������S���ϒX^�ت���?�����/.܅��H���o��E ��<�R,y��W�;�9����#�*�P�k��is+��(F���'��ێʉ���� �pQ��v�C� �'���������M�>�il��V����: ��:�.�5t���0���F9CU�x4f��+�l�N� �;t���%�{�;�ig@��0�W!6!T�zw���C������PMvYI��zil�1\n%��sh���#WE�
�}{��4�sq�N���̖�rK���PM��,�P-U�m�.MG����3����?�5���[�\��\?"{���[ Uݹp�c�5��H�њw��a{ږ]4U��"�-kͼU��܉o�i�g�M�����gզ���Dw�"o�3[��N�47sAK��-����h�P���x$v�46�P�����Wհ�<@3\2-���MpM`8��P������w�o�\� ��s���tFL��[�����h��StC��<C�1O5��C��q�fݒy��7Hc#���|cZIn]�T���K4+��5���-��Xׁxj ��c?�P��9`%5Men��H�o�kp������g�p��2�g�IG��Z�+����~ɹ�z�lrf��<Gw���Չi|� w���r�h���Q���� ,6`���N4B�m���{�]�fV��9˰bN�@;X�{�mb��Y���s�� �t8Y)��/��/\8`�UVf���B�{�i���,��$��,�� �{ie����ȝ��{Ϸ �L��v9������2�$��t��r��]�����T�1���%\l���qA=횃`,�L� �A� 6�T==X�)��#��hMii|�q���-��[Ӷ|�rgN8�,̧�� *��ҲyzOY1�at-��N�B-�n'c����6��F�bM�f�; ��Ԡ�6/�r&L3�es��ݰ����3i[d���0��}��H�vӘ��*KaOyu�\��}�u
�.��j��z���}}�G��&�㺖T��k`'\������y��D��)S��H�3��\��;!&�w�2�Lw�K~���o����$�;(x|��7�vIß<�J��u��1kn$\���� ��P]��fv��V�gS*��� �q��ښl�vº�֓��+�,
�'(8Q�+�N����%�eϹ��H ����mz�� w�ӝ�)������s�-�ʝ��,v�i��Ы]�en��m��V��mt�>�B��l�F����)��
�T�������f��t!�,#��@z#�j)S0����E��!�ž _~em1g�[��3�@�ԝ�:,�����uk�/���4g�W�S���"��j,��q���� �I1Rg-�:
k|�)\�sˋ� �x�n2������w�����Xt�dm.�ޠ�^tͧL�MX��[���Քӓ�-��Єn?����I�:���J1g +N�I�2)Fz�Lsh:�7o����;۰+3�ką.����� Q yQ�J��g"���
ũ�/}Ys��zJ *�a%Rܹ�;��좺9W�w��K"�)V�b��/�n��gK���$t�R��Ϸ�k�H2�+v_$�[\���Fn�B7����}�����.6���\�I��m3������Ⱞu��Z��b�i��+ W��0[�V2[F�٣��!MŁ����oQu'��3,/��g.4�����r!3�-�s&�� H�3)T�ݤ��]�&i[�Jh!�ܚ=9���X.�R��b19����By}���_���<4f���Q�(�
DžiNC��������qI� ' ]�� �;׼� �&��fJ�xq�����5�b���L*�X�'���_\�lt�)���9usm��3�jÔ-�Q͛;~V�G�,W�`�}_�m��6g��������ؼ���u��Ã�������N��خݢ�n����,/W�ʋ��b������r�L:=7;�J&g��x,��á`0�������r:�v��b6��{]ދ(�7������������׏��b�T,�TJ�%J�[Ds��R���˨����Nv*)�9��/�S�:� ���!�0�46��‘H4�'�3�djvvn���>������by��������^�nlnn����F��������?88lw:G����͵�Ņ��t4�q�Mvw :��/�nl��� F8S�'�mZ�x��s���"�2��uV
�/���0������hՕ��MW.l�$��[��&�������ؼ�I�ҟ��=�w}�k��7V��h�m7Y��P<�-,�m5���|�� �G�;^���M���,7�7�f|:BS���G� emk�s{�ܦ�
�*�y��ŀ�u:7�.V|�5�+��Hcc�)��Q�>�������N��\��NG�.�bu�#�s��j}��{zy�s.g-�d��'����2*�E=ZM��V��b�d��'_�,�q���E���p8��Εj4���"\�GL�7���� ���p��� tJi,���kB�'M�Ȧ�!��l�{��d&����h�{g���V\���0��n��~��bN��(�����Jڧ8�����T�����U�6�������q$��t������G<���g����aVI�+�h^��Hc3����I1[�����-�7��b�/c�%��#T��x�<7]\&��7�F9�(��x�f��\�+�l�s/�A��q�<mj�� V�w��<���_@n�Tf�I�̚�[C4�MT���x�_äн�q��)���=�<Ht[0�J�K��mg:8������`�� ` �0Ɉ�{ fqd�g��1TAg�J�O�ڣ3%e�1]%��>�a2<?o7�uJ8�j<��0"��t\�͖I�X�/{�+:f7!�q�n0��U�, :�3H�D �t�G�����2ph3ŀ�ş '���v �%�����ʙY�Z4ί�g4z�+��0!zF hѸ}�^3��G��@�LX������f>LOSKG\i#�����{D���^��J:�#jQ��Mό>ٙ��h�P����z�NJA��}!���J��
�/A��g�x���y*q��脲�1]e/p�_Cz-��C���Z4*�<][g���:��S���`c�\UP⋖C���2�ʂ�o�z*���gtd}�\����ñz������]� �bFz5���u+��%]��@�%�W�G�M��W���&i�b<Tqҧ�Уj��?bB��T���զ�ŗq1��G���_��u��|l8�#������j��v<�Q������SWt��|��%����smd��po@FW⁙,]3Y�]�"]���4�7it�u&DO��*T
�f�Qqdbt����^�@z��,*�
׎��=���D�]u+�)����nsυ��B��M������wl�?q�ۋ�V��|ˆ���N �%n��,.j.�J���Ho־OQ��܈9�'�\�s�K��y�C�ٯ��,�����T�Z(�:6�D�(OU���v�RZ��xXw��^�@z��:�c�[��E�"�%�:*��(�όٙ�"y��s�h/���6]�]�[\�W�U}��k�+�]�$��-\�Lz��$�ޢ�C���q�"\1q-���M�ٲ3��G��:����_���\:EG�@W|����Tzv�[#��#�vŨR���֝M���l�5 �7�0�R�e���
SQn����z���u5�@��-NUu:��7,v�
a�v}tm̱1�Rq����}h�[���6�j21"��@z]�m�X6jL��T��z�-���BOÒJá К�Xw�8�-pM祫��Giӱ�D��Z�[��%F��i��קM�Z�L����U ��dۣRB�;*�w<��� g����:,,��y% �j�۠kɴG�LֿC��DW�HG�@��*���k��=��e�^�c\�!�*��fT��G����ղ6ǝT��U���wj �^�� �#@sI�N&�|�����9�֢t�ija�õ�\V�8*�i�}H�J � Wk�6q�C�`�"�mrgo{U�X����ۥaRi�-t(�r�� �vS �o�q����L���M��f�q��U�Wy`L� �*����Ujo��2���y��T��x�����9�X��",/� ��2�+Wj�&��֡��U��pma �� �:|=�^�@��5tZ���U�1����7�s�[�_�s��53��NG�ف�]�i���@G&NW|�������;r��"9�4��3GeLt�V�^�@���7Z%t�S �љk�V��O�v��\6��������=/p��GN��<�9pb�kg
���� :�u����2�X�17�<SG�?��O�u ��Q"AO9�hm� Pү�a8�#'ŀ��s�����e/]�E:
!:l%П{�e�:���6+ ����/�J> �q0��w45����"�~?�!��e�^��1��������� �#n��[�j�{���(���,=I{�u,���_�3t�
��{86C> �3�j��z�[Ճ&�+H����Lһ�@k�-���Lo���b��Ŏ�"9z�v��t�l\�:“@�N�Z���쥫���p�ጲ���IĶE߅.s"�2���=����L����[����)��W�K-�5�M��47V�i�ڠ�a��z���̯ܦn��7���Zp� �ߎ�a���}]���V�v�ڹG���
7�u���p���Ƒf��tY�J�R�g>�k��r��4�q�:��=L�Dא^�@��\1*z��dX���'L'l��0��ל� 8rr��gr.�\�G�����X�L�����)z4�{���D�Z�GKci� ��I%���I�|੫����u��f��+��y茎�Yn-,�u���q��pMi���3:v\^��G�Mo�5�m���P��l��V؜Eze���8�&T�D�H�'��X��y*��1$��/Q�+���1�s�]�"}�8%U�.e���6}�z���G%�V�Oբneg
� ��DiZ��������cu�<\x pj�=�:���3!���}���H����@�>� e��Xf�e��Nѥ���Xp��pO,%?U;�+H��ZB��������3�a >`5ΝO�k �\rOb�|83��ӳ= ڲe�St�$�a<��m��&��Rs�nV��^�@��k��m+�|ݎq��=:���ʉ�Ϝ[x�T��Uuг�gr�������B�%?����¥�;�] ����H�c�a��/h��N��l3���؇�0w|��#'�<P�г�g�Aב�bn��NǾ�[�%w��R�?ߜmj���÷ �c��%����S&_�m���\��`c�c$8���|zv2�O�M���|��|������Hh�Ust���q�Q����3u����1x��^�@���N��'��� <����bML;�zw8��w��� s6����y\�~ȳzF_&NOSw��ކ�c�j
}Հ{7�6gө������:Z* T@z]�U�|>��g��=��`��g<g\�U��W�*MnxGD�XO9Ȅ͆2�k�@�k K�9����\��Q
�,�N�8ۋ�� ��]ߙ��ȵ ]5� �.��|�B�Q=�.Y<�m��k\�%�sθ��a�YX+�q#���h��9k#�&(�smn���@s����3�3�>�͚�tm_Q�rl�Z8OW1,'�^�@z=��5Rź�`��X�T�$7oO�Y�q��[�]F����[�����}��/�,җ�����.��db�kp.c�M�M��Z�^5�[���гr��%�^�^��Ҧ���8T�#&Sd�U�2*�&(��>9�ZM�=�ٍ���Jv~���@Y��Y���9�o����iX�pj4n���0��ܲ���3���H�K �� �7�P��t�e;X ���H�hQ��#ׯVy��e]_�1�:��lj�ň��Lɭ�,F�'�}�}%G��X밤8�I�$���0X�ѳ1G�o�ِ^�@z=z���a�,{t�"<p���܉�]nj�9�y"hl5���e�j ����6�ͤO�5h����I_-�� =�2��� ˦=n�.X��ͥ��Z��N���u ��S]#^V6���Q�s�w�}�r��}����=�1CK���K�����
�&�h�G�s[i�Q�U���1]�Q�1V��į8r���7
!���ļ���*}-]�K�W%�^�nD1��e3�:�SW\;������C� �=�0�2Y摸]��6��#��ޙd�kU�쾀WePTj�� E�G����� �׼e�X�EG�ʵ��.k�U �ה���gyQV��qd\���6�g6j<�� r#�;<����Ѳ�d�՝�Š֮U4�
��g�j P_�q5���n%=�t�����v���=~�/9�!�W�OW��WO�е�<���Z{4�SU��,��GtLy`]Y�Y�<��֎��z�5��=ۚuz+5��6 l����+��'ȍ���H/H�'��Gi���=:N��; ��'Yj2�>��V�KO`�{�J��}�s"9n�f�K�D�85�x�\��ӥ��h�^�xʍ� �+��LJ�"��j*����g^�kIvj����<+�]掿D�t�k')�tZ}���g�Z�Z �U��+z�T5Zgҷɍ}��Ȃ^�����e�V��������"��j\�\���������h4ә#�jüɝ���]E�i露�V���i��ـb��h�蘠e�e��-�7}�����Z.V��r�tBW!��h�7��ۛ���`��Gz�@z-���ҟ3HN٬dB�W��%��m��r+���!�Cǁv��+��lͧ�)�l����fa�ܫ=`c��rk�]5g��9�֕���I�qyZ;(�ח��a��f�(z����/�f��TD�'� �W�Rqg��S'ǔ�+��C�LU��s=�����=m1���(��!�KO�4�OWuQ�Fq��S�e1f3D�'���A�����*w�vzh_����t|v���U����'������%��ҋ�+��rOb�����Xع��&��ԋܗ\��Y��g���f�vx^5m�$�e��c)d�W�kS;����܌��j^��9nmM�s����v�S�X^����I���Nop&�Z��*5�[|]rLtL �L ���I�4�qZ�:�n� =1�%/j*AP��� ��[��T�j8�I�=U����ִ���,Z�M�f���i�E�8�.�c�b6���N��V�Jm���Bsɥ�|i�z��y������y�j���9c1��*s�]Us��5�:X��u�d��/��T� T��� ���F�
�+�V���u#hO��e�\2.� 0i7i�Yo ��R��[�B����jҫXN�H:u�:m��f�Smгd?�e�{�����>ud������λvJ_>�5u .5p�ԍ&U ���J�8�θ��^�� L�����'8� G ��s=���)��:���i�u�Z`%W|��a�˖�-�K��RIjB���w�Ez\Gt[@��Kx"�)  (���=��%v�1��7��'ȇ��#�^Cp�[Ť[�vFz�����B�_ �s#�K�H:I��~�{�ـ*Th������,=�nL�\���+y��]�J�k^ѣ���S�Vk\j��\�'�e��#�^A1@�I~ޮ ,е� ���� #�R����W`��4��yu�%���� ������K[�*qz�1K��F��юY�ى�LAS��L���u�4��
g@m#b6�׫�����qNϖRb���� k͛ vN����z+nc��`�v���i72�a�[��I)-�~_ �͗P���Fн'Q�֝ڧck��R! I �mr�'>���t����r�<p9����4C�O�Js�j����l<'1":>Ю-ڭ�C�u�=3rό{kڐ���
7vm�=��94�%\e<�:K �=���7?noiH�W�2":���*��*Wb���ζ!1�9U]����){�����0��s�D���U�jS}�=��"ֺ#�6,�*n%���rxU7��4���ֹ�&�[sf����G-'��$�~�܈���p���,�����C�@i����'st��yNU�}�E^�.��&s��b h��X�p��fFUP�UQݬ��<���p���U��
?$PD�@�>�>�Cr8�%aB���c|�t̨c5z��<'.��yI,s��>cl*o���^3���ѓ�u�i�j7�V����j�>�9��ɝ����HCH�����ӡj�Լ���� �T��$�^sx��P�x���� 6�`=�=������Y��� td"���oU�)+�m�_�RC+n����q����2ߥaA�@�>�>0���:]�o�!\�O�����h�[�q��It�V��7�=�� � ��S|��� cP�qf`ҬU�.+��#'pq��׎����Z�o�� K ��Q�5Z�#'���CW�q^v����u�{����<�]�?!�x�����uf�NQ(Ͳץ����G���i��d(ұ��U��*�nr�U�Z��ۗ|��u�a �_!>*���
���K�4=��b���S�+<��uY^d9�'�֩r �j��+U�t&`i� !��h���o���y�x=�����4,��KT��zk�Z��� ��i�*�Q�1������f� �a�ǜG�䜯 ���疪��}��m���vP6pyy�f����0��Z{�'�S.]h�\j��&�~�+5E]U:�I%բ��Ͽq�׮���P�W�-<Q��_�Z�Ʃ�[�(`k��4��3���:��2'�"cb�* x�����%�(���^��C�@���y��Ҭ�q�.3���g��u��<�/��Y����j��n��/�k�.� 0���9dEٙ"m��70�Q����łv����S��j��K���&�~���{.ӗ@cְưD�8��D�Ƌ��|E��}�C���t������Q=O� 9� EMC�J帚�j�='=�Fh�Y�y�N�n�-4y���44�� �����+Րe�ቾQ�����&/*{�
��}�f�:|����GY�݄%�EE��-ulS�pd�G������͐֝��� �� �_gi�[G�8p���o����.t����y�
-'�k�j�O�}�$> M�҂����� ��|�h�A�H��}O�������1O�mH�H�̙�[1g�^w�o�A�|b��S K���ij"9sV�Sr@V�M��2h]����cԳ�.���)�(N�t���m[�|��֜�+��~�@�e�%�mk3Pt{�|�ܨ��_�@��e����䉆�>��'�\��a��TTF�~�X���6�w�#9:b�bSiq߆v���g�*�r�;��7H��v���`�I�8�;����o�1@&�0T-��3�R����ʸbDG�x4���3*W"`U�en����u����ȇ7�T^RN: ��9�O�cih�W�]Г�m�i U�1�0 ����^�+�����BS�7�`-
%�:$T[�6�I�Ubك :�a\t��ъ��,�;�gL��/H�H�Hb���#ƚa����<b�|���j �k2P�NזҢ�\���2o(���2 ����+��N�Y��E�p�4��eG� FE�8ҰүQ��wT���3~Hb�A�G ų� ��<c1MGM}DǼzƠ��WJ*{ʫ9�t�2��y�ǐ�ـ��B���/�=�T�����a �_óu�)%����L1H��pE���,[�%K��i���IK#d����K�b�5R5��ۀ�2]�����G�!���q�a ޏ6���/5^E+�iT�n�Z*��N$�S��<���0 ��R���ݴ7�SZ}c�R��* ��*D!��� 8\�J3!�x,g��x�'�3�4,�;�Qt����|�@F3�[�����cb�؟�k��ؘ+��Mٻ��ҧ,��ר;#�oh��!�f�� j]ɝ�����VUK��2&:Ƒ�&x?��g�_�>.:>Bд���0Q����y��N�XS��Y��[�6%>���wT� �xd��
�C Σ�yJm�m7�³D�?B��]g��/��?��ix����K�KM�� N�QE�h�G��Qѥg8���N��#�U��\5+����E�b5����c�*�aήs�6ʎp�5�� z�� r1g-"�T��c\���**�F��� F��b�������Lz}SS�@p:Gff���X<�\H����������f6���������������Q�Z���'�gm�E�(?L/z�xlB�2�\�G�%^�\���go�i��R��:���m���)��pA����t�6�'K���*'t��� �D��cB�U��n]]6/���NO��z�Z9:<8��+��J���B>��nn��e2�+�K����B2�E���fg"�Ph:�O�|�I���t:�6��l6O}������#㢏��<�\�e�+e��%��e�F���+m��.wh�j� U����j��f.tti.l�l �4��#;"�>��\����Q~ظ���ȸ��1�7�# ����뵈'�T�b�ʙ!;���)��Z�)��B�1K�9����9�[yζe�����݈�C�_�4gR)L����� ��c�D�é[���`(�Wtm��-����I���/`SNv4U�5�E�H_8���ak���i���M!������'�/Q^p�t���fm\t|��UFD�8�eGD�g�s��>�a}�8>�g�I'��Z�V����K�� �7A�ТerV���</�� � �G,yU&�e�Z��!���'��B�Wx�;*��?�J[�{�!���u�U~�Y�0ͥ&�2=�õ}J�}�8Li2�]�Z���Z1S�� �QY��m6�7sLGN�]�6�<Yo���^��mr+�gH�g�����]w�WL���M��ZLEk��}�� ���a:�+N��]�%��W}}Zg�9ա�%]�S�%'��ݘ�������E�>�Z�(��4��M�L['�̥���#�^�O�a�q�B�W��*H?F }��l�h �����6��C
�� ��׊�6*���epd5`i��h��HEk�D�'�s ��B���[e/_�㈜!������s��¬ٱxč�)k*���v�e��� ���/)�?�Ȩz�,�����tc2��3���yA�o#}?��-.�cv}x-���N����o@K�Z����}�K�=����SYu�cv ���.g��Vp���sl�7��dyɪ����Ұ�;I�&��]�i…+�9�z�'������gn����;*��X�ԛ��Y�U�V7g�*��5s���Uv|~u�Vs�dɇy�yċ��M��$����8�L--:̱]Zӻ�t�K$�� %����e�Ќ7�5�l4n7�W�3.���՛l+*U,4ku�T�)���,-���E��"�wH/:\�RM.�5��9� ��t$V8��;ZNұ�;4c
�-�_� �٬U����SS�.զjƖ�245�Nf���<T�3�z�s���WU3A�+�Ӻ̅�S�<�j����cs"9~GGu���۹&��Z�u:�S�zWhjZQ��6�F�ڤV gڈ��j���-�H.�0��� �o&������&��6���wԕ�k������`�teg�(3s*G@��^��&�V�ۧ� �ɨɠ)P�G:��c���e�o"}#�4�in�l�˟����c�SZ{Hׅ����IL����;�m�tlϸ�ӂ�b�/(IšW�q����2(Ec(3�ǚ�{�`�]���M!}����V�f�l�y�{��` gb.D���~G������R�u��s�#zc�����`�����A�ʪ�ح@���!F�����!���o!x��<rUJ8u�k5�";�
l��%˖y���=�Z�7�= �ÎR2��V�8�J����F�b�T9����AeG���jc�->�=���U�T@�����a���k�G�_9���2���n�ca�zL���>��H/�>�NTue��MQ�!\�(�^���8��Z<ciҶ�>��g�'J~�vr���%x��|]z�`ɧx��t$m��>_��VQ�����\�;�}|e�gaiOo���0�)�+�n�ΐ�)./VPr����$�;�NU��#x׾������6]�9�g��WUm�=u�k;St����|�O��0$�>��� �(If��~U���[Ѱ���>MG�Ɉ�c�p�o�c��! C�}}U��:� *��s^���R�W\;6�q���f\t���|�ϩݛ��n*kU�Y|7JحbɼG������~���Al5�E�o#�L𮍋��e�~�ȋ���;�-�����*��q�ˌ��
l��YQ�u�4�� ���ƨ����/U*S���*IeDt�U���۬*�H/�k�D��'���CH:�[�n9����}U�Y�ӚƘR]�ڬ�r�P���V�8��2"�Mp�R��@�c�W�`�C�(�����ا�3�ZeDt�)M�4ơy��i��tM��G��f�R��Qˆ1oL�����]c��}� ٘���"��jH� ޷�#:Z '�:��7��Nѵ3ş�m�O��M��+ hU�y� ��#0w������)��S#E��f����`�w�dھq�5�1w
!zl5�H�Q!F�\��_%�Ug��,�\9&D�6̺$VH$0�̯3�g�o%�Ƒ�_{q���bx1�)�(�T��l��G*�=��A�A�x �Z��eB��8ųh��[�95�L����1���Sk+��f��{� ��"��T�i���&D�(z��j�rЬ�M��E�h�ʬ��Sr�K@η5=��@�f�Ѩ���4��]h���q�dmJ�]�M�'�Hy���Ҡ'���4.�,̚vjmr�B�|��)�3"��Bhi�jK%B~Gv���}��m>���
WH����b4-:M��Ѯn��;��"=��PD_��������g��!��y���6�ZZcLdC� ��&9�/G�'�6�����d9�d�� �3Ωɹx�7��]��=���
}s��>��Q��)E�������t\�*�t]j�W܆�_�E��O��>q�!��w���]I�s�<�9K_���]#^j��m2.�l��R��20R_Еgk^m� �3��c�O�=����]}>�Ì�Iü�Cn��K��*��k�?Y�� �|}9!�����R�<S�3Q[hu�P�;:<eL�1@S���T6�� E߮��š嘇.t\����;7�<�e�,zF�c��&6L�s�;[�5U2>�O:� �1��$�m�]C�O�.xE��,��`�� g\sT��m�p��ܴ�#��3�-���೹|�t���=c �����q�{�ÿ�c$�7�R���1o�k��te/K �<M������4]��dw�P���nM�� ����e��[�w"������F��6�<W<6�� �9<�Q�Nòoܻ��ʙQZ�0z�����a�s���9�C��e�w�tM����&�Mw�'21n,-��+��4P n+V9]ŻUm���P�r+�������T-~��9��'�kC����'v��q��=0��W1�V!������96�l��N'��7\%�t�yV��Y2����@9�60?�S'&nE�x2���.�یK�Z�b�B�@���&��f>�e�0?�,�@�4�e 4�� ���F����ji�sTm�Օ�+:��A�BSKߥ�a$��1��$�S��"�f9f��Eއ��Hn9I�=��:�:����m<�Iȇ�9�\2��~PҺǻ'�kN���2H$ǭ�Iމ��*�Xw'�=VL��3�y��,(6��:434�?�19��H��=;��f�A���<⽘[S�H:
3�� h'���(nk������bxg~XN���&�Iy.dk�;�0�F�:U�6�T�.p�V`Ѵw�:U�({�����>~\�y�{&��KLLL���f���{ g������ԮE+L� � 1��ԎV���+3|��?��� �{&D�g���p�J�wd�erTt��m�"]����K{'��3H&�V�?��*ǻ%��$D�H���u����[Pf��H�k ױ����2��^�'h�L�y�ҵ�4�E���E�exW�׎����׹uh>��qt�c��C[�ط&y�Rߊ� �7� �e�91�.�.�@nDt�T�.GN~��6�@�j��g��c�� �Mo��L��яy� z>�}6g�9.����?�c�rHGN��x���}�ޙO�k����3�w�e�Iv�i��Dݱ@߿#B�/O5�<�>�}����pQ��^OGC^�����{M��,�vygR�Z�F������S�+�xg|��#���O���s=�|7�?��T�ɻ"x襁/�y�t�;�}�hs�N���n'&~�-�*���K�k�,���qޝ��GtcB����?Q�v��!x�*�4CX��������O�N��<�m� �;�&11�IG�!��x(�»������_bz��)�l�Nޣ��c4�>�85�Щ��4���]U��;�=c Gs�C���u���:t�x�Є�K0 �!��~�}?ٚ&ϟO�}}>���g�[��'��x��� ޡϢ/�˖xd;�� �m�- ���PeTt}�e�A3#�
�~�eC�?��=�� !>TxQ��ckQ�_c���<8�&x���8CPxB�B�Er���s K����l5K.#�"����'[���S �g�y�̀��|=��lǾ�&����%���~�q��ϗ�d�# �gdgx�ȉ�ˌ�>~���?�@���S�2�/�A��KT�s�y�@M-OH�NN�|��P6������<e�#�B���5���_g�S|_�!� �](#�m�T�E�'� i����}��REz�>����Z�G��!FHo]N�M�GHO��<�]cHo�O��GHO���g��Cz㲢o�?�@�gb|l|���O���}=z��θ�� ��Cz�*���t+!�|<�=�5�����?q����7���!F�H�oE ��,�&x*���[C�~/�O�鑤�A �]�H�!����+��!Io�@��7K Iқ%�$��H��f $Iz��$�YI��,�$Io�@��7K Iқ%�$��H��f $Iz��$�YI��,�$Io�@��7K Iқ%�$��H��f $Iz��$�YI��,�$Io�@��7K Iқ%�$��H��f $Iz��$�YI��,�$Io�@��7K Iқ%�$��H��f $Iz��$�YI��,�$Io�@��7K Iқ%�$��H��f $Iz��$�YI��,�$Io�@��7K Iқ%�$��H��f $Iz��$�Y��3�e�IEND�B`�
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment