From 2d4417778ebbb518f835b089af0c69f3dc7764d5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:16:52 +0000 Subject: [PATCH 01/15] Initial plan From 831063543b2a2c155b6f52af514860c11f2e2200 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:24:24 +0000 Subject: [PATCH 02/15] Add addCustomMarker API for registering custom SVG markers Co-authored-by: gatopeich <7722268+gatopeich@users.noreply.github.com> --- src/components/drawing/index.js | 68 ++++++++++++++++- src/core.js | 6 ++ test/jasmine/tests/drawing_test.js | 111 ++++++++++++++++++++++++++++ test/jasmine/tests/plot_api_test.js | 7 ++ 4 files changed, 190 insertions(+), 2 deletions(-) diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 38e8686d102..6d687af1a00 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -366,10 +366,72 @@ Object.keys(SYMBOLDEFS).forEach(function (k) { } }); -var MAXSYMBOL = drawing.symbolNames.length; // add a dot in the middle of the symbol var DOTPATH = 'M0,0.5L0.5,0L0,-0.5L-0.5,0Z'; +/** + * Add a custom marker symbol + * + * @param {string} name: the name of the new marker symbol + * @param {function} drawFunc: a function(r, angle, standoff) that returns an SVG path string + * @param {object} opts: optional configuration object + * - backoff {number}: backoff distance for this symbol (default: 0) + * - needLine {boolean}: whether this symbol needs a line (default: false) + * - noDot {boolean}: whether to skip creating -dot variants (default: false) + * - noFill {boolean}: whether this symbol should not be filled (default: false) + * + * @return {number}: the symbol number assigned to the new marker, or existing number if already registered + */ +drawing.addCustomMarker = function(name, drawFunc, opts) { + opts = opts || {}; + + // Check if marker already exists + var existingIndex = drawing.symbolNames.indexOf(name); + if(existingIndex >= 0) { + return existingIndex; + } + + // Get the next available symbol number + var n = drawing.symbolNames.length; + + // Add to symbolList (base and -open variants) + drawing.symbolList.push( + n, + String(n), + name, + n + 100, + String(n + 100), + name + '-open' + ); + + // Register the symbol + drawing.symbolNames[n] = name; + drawing.symbolFuncs[n] = drawFunc; + drawing.symbolBackOffs[n] = opts.backoff || 0; + + if(opts.needLine) { + drawing.symbolNeedLines[n] = true; + } + if(opts.noDot) { + drawing.symbolNoDot[n] = true; + } else { + // Add -dot and -open-dot variants + drawing.symbolList.push( + n + 200, + String(n + 200), + name + '-dot', + n + 300, + String(n + 300), + name + '-open-dot' + ); + } + if(opts.noFill) { + drawing.symbolNoFill[n] = true; + } + + return n; +}; + drawing.symbolNumber = function (v) { if (isNumeric(v)) { v = +v; @@ -389,7 +451,9 @@ drawing.symbolNumber = function (v) { } } - return v % 100 >= MAXSYMBOL || v >= 400 ? 0 : Math.floor(Math.max(v, 0)); + // Use dynamic length instead of MAXSYMBOL constant + var maxSymbol = drawing.symbolNames.length; + return v % 100 >= maxSymbol || v >= 400 ? 0 : Math.floor(Math.max(v, 0)); }; function makePointPath(symbolNumber, r, t, s) { diff --git a/src/core.js b/src/core.js index 99d86862ef6..716b1211d35 100644 --- a/src/core.js +++ b/src/core.js @@ -81,3 +81,9 @@ exports.Fx = { }; exports.Snapshot = require('./snapshot'); exports.PlotSchema = require('./plot_api/plot_schema'); + +// expose Drawing methods for custom marker registration +var Drawing = require('./components/drawing'); +exports.Drawing = { + addCustomMarker: Drawing.addCustomMarker +}; diff --git a/test/jasmine/tests/drawing_test.js b/test/jasmine/tests/drawing_test.js index def7497704b..4c5b7ed9adc 100644 --- a/test/jasmine/tests/drawing_test.js +++ b/test/jasmine/tests/drawing_test.js @@ -573,4 +573,115 @@ describe('gradients', function() { done(); }, done.fail); }); + + describe('addCustomMarker', function() { + it('should register a new custom marker symbol', function() { + var initialLength = Drawing.symbolNames.length; + + var customFunc = function(r) { + return 'M' + r + ',0L0,' + r + 'L-' + r + ',0L0,-' + r + 'Z'; + }; + + var symbolNumber = Drawing.addCustomMarker('my-custom-marker', customFunc); + + expect(symbolNumber).toBe(initialLength); + expect(Drawing.symbolNames[symbolNumber]).toBe('my-custom-marker'); + expect(Drawing.symbolFuncs[symbolNumber]).toBe(customFunc); + expect(Drawing.symbolNames.length).toBe(initialLength + 1); + }); + + it('should return existing symbol number if marker already registered', function() { + var customFunc = function(r) { + return 'M' + r + ',0L0,' + r + 'L-' + r + ',0L0,-' + r + 'Z'; + }; + + var firstAdd = Drawing.addCustomMarker('my-marker-2', customFunc); + var secondAdd = Drawing.addCustomMarker('my-marker-2', customFunc); + + expect(firstAdd).toBe(secondAdd); + }); + + it('should add marker to symbolList with variants', function() { + var initialListLength = Drawing.symbolList.length; + var customFunc = function(r) { + return 'M0,0L' + r + ',0'; + }; + + var symbolNumber = Drawing.addCustomMarker('my-marker-3', customFunc); + + // Should add 6 entries: n, String(n), name, n+100, String(n+100), name-open + // Plus 6 more for dot variants if noDot is not set + expect(Drawing.symbolList.length).toBeGreaterThan(initialListLength); + expect(Drawing.symbolList).toContain('my-marker-3'); + expect(Drawing.symbolList).toContain('my-marker-3-open'); + expect(Drawing.symbolList).toContain('my-marker-3-dot'); + expect(Drawing.symbolList).toContain('my-marker-3-open-dot'); + }); + + it('should respect noDot option', function() { + var customFunc = function(r) { + return 'M0,0L' + r + ',0'; + }; + + Drawing.addCustomMarker('my-marker-4', customFunc, {noDot: true}); + + expect(Drawing.symbolList).toContain('my-marker-4'); + expect(Drawing.symbolList).toContain('my-marker-4-open'); + expect(Drawing.symbolList).not.toContain('my-marker-4-dot'); + expect(Drawing.symbolList).not.toContain('my-marker-4-open-dot'); + }); + + it('should allow using custom marker in scatter plot', function(done) { + var customFunc = function(r) { + return 'M' + r + ',0L0,' + r + 'L-' + r + ',0L0,-' + r + 'Z'; + }; + + Drawing.addCustomMarker('my-scatter-marker', customFunc); + + Plotly.newPlot(gd, [{ + type: 'scatter', + x: [1, 2, 3], + y: [2, 3, 4], + mode: 'markers', + marker: { + symbol: 'my-scatter-marker', + size: 12 + } + }]) + .then(function() { + var points = d3Select(gd).selectAll('.point'); + expect(points.size()).toBe(3); + + var firstPoint = points.node(); + var path = firstPoint.getAttribute('d'); + expect(path).toContain('M'); + expect(path).toContain('L'); + }) + .then(done, done.fail); + }); + + it('should work with marker symbol variants', function(done) { + var customFunc = function(r) { + return 'M' + r + ',0L0,' + r + 'L-' + r + ',0L0,-' + r + 'Z'; + }; + + Drawing.addCustomMarker('my-variant-marker', customFunc); + + Plotly.newPlot(gd, [{ + type: 'scatter', + x: [1, 2, 3], + y: [2, 3, 4], + mode: 'markers', + marker: { + symbol: ['my-variant-marker', 'my-variant-marker-open', 'my-variant-marker-dot'], + size: 12 + } + }]) + .then(function() { + var points = d3Select(gd).selectAll('.point'); + expect(points.size()).toBe(3); + }) + .then(done, done.fail); + }); + }); }); diff --git a/test/jasmine/tests/plot_api_test.js b/test/jasmine/tests/plot_api_test.js index d962aab7e1b..5fc8dd0b124 100644 --- a/test/jasmine/tests/plot_api_test.js +++ b/test/jasmine/tests/plot_api_test.js @@ -31,6 +31,13 @@ describe('Test plot api', function () { }); }); + describe('Plotly.Drawing', function () { + it('should expose addCustomMarker method', function () { + expect(typeof Plotly.Drawing).toBe('object'); + expect(typeof Plotly.Drawing.addCustomMarker).toBe('function'); + }); + }); + describe('Plotly.newPlot', function () { var gd; From 343dd6c830aa996b4449f972b066ee0df543d7ed Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:25:35 +0000 Subject: [PATCH 03/15] Add demo file for custom marker feature Co-authored-by: gatopeich <7722268+gatopeich@users.noreply.github.com> --- devtools/custom_marker_demo.html | 225 +++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 devtools/custom_marker_demo.html diff --git a/devtools/custom_marker_demo.html b/devtools/custom_marker_demo.html new file mode 100644 index 00000000000..56a30896473 --- /dev/null +++ b/devtools/custom_marker_demo.html @@ -0,0 +1,225 @@ + + +
+ +Plotly.Drawing.addCustomMarker(name, drawFunc, opts)
+ // Define a custom heart-shaped marker
+function heartMarker(r, angle, standoff) {
+ var x = r * 0.6;
+ var y = r * 0.8;
+ return 'M0,' + (-y/2) +
+ 'C' + (-x) + ',' + (-y) + ' ' + (-x*2) + ',' + (-y/3) + ' ' + (-x*2) + ',0' +
+ 'C' + (-x*2) + ',' + (y/2) + ' 0,' + (y) + ' 0,' + (y*1.5) +
+ 'C0,' + (y) + ' ' + (x*2) + ',' + (y/2) + ' ' + (x*2) + ',0' +
+ 'C' + (x*2) + ',' + (-y/3) + ' ' + (x) + ',' + (-y) + ' 0,' + (-y/2) + 'Z';
+}
+
+// Define a custom star marker
+function star5Marker(r, angle, standoff) {
+ var points = 5;
+ var outerRadius = r;
+ var innerRadius = r * 0.4;
+ var path = 'M';
+
+ for (var i = 0; i < points * 2; i++) {
+ var radius = i % 2 === 0 ? outerRadius : innerRadius;
+ var ang = (i * Math.PI) / points - Math.PI / 2;
+ var x = radius * Math.cos(ang);
+ var y = radius * Math.sin(ang);
+ path += (i === 0 ? '' : 'L') + x.toFixed(2) + ',' + y.toFixed(2);
+ }
+ path += 'Z';
+ return path;
+}
+
+// Register the custom markers
+Plotly.Drawing.addCustomMarker('heart', heartMarker);
+Plotly.Drawing.addCustomMarker('star5', star5Marker);
+
+// Use them in a plot
+Plotly.newPlot('plot1', [{
+ x: [1, 2, 3, 4, 5],
+ y: [2, 3, 4, 3, 2],
+ mode: 'markers',
+ marker: {
+ symbol: ['heart', 'star5', 'heart-open', 'star5-open', 'heart-dot'],
+ size: 20,
+ color: ['red', 'gold', 'pink', 'orange', 'crimson']
+ }
+}]);
+ Plotly.Drawing.addCustomMarker(name, drawFunc, opts) + +Parameters: + - name (string): The name of the new marker symbol + - drawFunc (function): A function(r, angle, standoff) that returns an SVG path string + - opts (object, optional): Configuration options + - backoff (number): Backoff distance for this symbol (default: 0) + - needLine (boolean): Whether this symbol needs a line (default: false) + - noDot (boolean): Whether to skip creating -dot variants (default: false) + - noFill (boolean): Whether this symbol should not be filled (default: false) + +Returns: + - (number): The symbol number assigned to the new marker + +Marker Variants: + Automatically creates these variants (unless noDot is true): + - 'name' : Base marker (filled) + - 'name-open' : Open marker (outline only) + - 'name-dot' : Marker with dot in center + - 'name-open-dot' : Open marker with dot in center+
function(r)function(r, customdata)
+ Custom marker functions with data-driven symbols: sun, cloud, and wind arrows.
+ +marker.symbol to create custom shapes.function(r) — r is marker radiusfunction(r, customdata) — access per-point data
+ Define functions returning SVG path strings. Mix with built-in symbols.
+ +
+// Heart shape
+function heart(r) {
+ var x = r * 0.6, y = r * 0.8;
+ return 'M0,' + (-y/2) +
+ 'C' + (-x) + ',' + (-y) + ' ' + (-x*2) + ',' + (-y/3) + ' ' + (-x*2) + ',0' +
+ 'C' + (-x*2) + ',' + (y/2) + ' 0,' + y + ' 0,' + (y*1.5) +
+ 'C0,' + y + ' ' + (x*2) + ',' + (y/2) + ' ' + (x*2) + ',0' +
+ 'C' + (x*2) + ',' + (-y/3) + ' ' + x + ',' + (-y) + ' 0,' + (-y/2) + 'Z';
+}
+
+// 5-point star
+function star(r) {
+ var path = 'M';
+ for (var i = 0; i < 10; i++) {
+ var rad = i % 2 === 0 ? r : r * 0.4;
+ var ang = i * Math.PI / 5 - Math.PI / 2;
+ path += (i ? 'L' : '') + (rad * Math.cos(ang)).toFixed(2) + ',' + (rad * Math.sin(ang)).toFixed(2);
+ }
+ return path + 'Z';
+}
+
+Plotly.newPlot('plot1', [{
+ x: [1, 2, 3, 4, 5],
+ y: [2, 3, 4, 3, 2],
+ mode: 'markers+lines',
+ marker: {
+ symbol: [heart, star, 'circle', star, heart], // mix functions and strings
+ size: 25,
+ color: ['red', 'gold', 'blue', 'gold', 'red']
+ }
+}]);
+
+
+ Access customdata[i] to vary shape per point.
+function shapeByData(r, customdata) {
+ if (customdata === 'star') {
+ // Star shape
+ var path = 'M';
+ for (var i = 0; i < 10; i++) {
+ var rad = i % 2 === 0 ? r : r * 0.4;
+ var ang = i * Math.PI / 5 - Math.PI / 2;
+ path += (i ? 'L' : '') + (rad * Math.cos(ang)).toFixed(2) + ',' + (rad * Math.sin(ang)).toFixed(2);
+ }
+ return path + 'Z';
+ }
+ if (customdata === 'big') {
+ r *= 1.4; // Larger diamond
+ }
+ // Default: diamond
+ return 'M' + r + ',0L0,' + r + 'L-' + r + ',0L0,-' + r + 'Z';
+}
+
+Plotly.newPlot('plot2', [{
+ x: [1, 2, 3, 4],
+ y: [1, 1, 1, 1],
+ customdata: ['normal', 'big', 'star', 'normal'],
+ mode: 'markers',
+ marker: { symbol: shapeByData, size: 25, color: '#10b981' }
+}]);
+
+
+ Complex example: sun, cloud, and wind barbs based on weather data.
+ +
+function weatherMarker(r, data) {
+ if (data.type === 'sunny') {
+ // Sun: circle with rays
+ var cr = r * 0.5, path = 'M' + cr + ',0A' + cr + ',' + cr + ' 0 1,1 -' + cr + ',0A' + cr + ',' + cr + ' 0 1,1 ' + cr + ',0';
+ for (var i = 0; i < 8; i++) {
+ var ang = i * Math.PI / 4;
+ path += 'M' + ((cr+2) * Math.cos(ang)).toFixed(1) + ',' + ((cr+2) * Math.sin(ang)).toFixed(1) +
+ 'L' + ((cr+r*0.4) * Math.cos(ang)).toFixed(1) + ',' + ((cr+r*0.4) * Math.sin(ang)).toFixed(1);
+ }
+ return path;
+ }
+ if (data.type === 'cloudy') {
+ return 'M-8,3 A6,6 0 1,1 -2,-4 A7,7 0 1,1 8,-2 A5,5 0 1,1 10,3 Z';
+ }
+ if (data.type === 'wind') {
+ // Wind barb: staff + barbs based on speed
+ var path = 'M0,' + r + 'L0,-' + r, y = -r;
+ for (var i = 0; i < Math.min(data.speed, 3); i++) {
+ path += 'M0,' + y + 'L' + (r*0.6) + ',' + (y + r*0.3);
+ y += r * 0.3;
+ }
+ return path;
+ }
+ return 'M' + r + ',0A' + r + ',' + r + ' 0 1,0 -' + r + ',0A' + r + ',' + r + ' 0 1,0 ' + r + ',0';
+}
+
+var locations = [
+ { name: 'Seattle', lon: -122, lat: 47, weather: { type: 'cloudy' } },
+ { name: 'SF', lon: -122, lat: 38, weather: { type: 'sunny' } },
+ { name: 'Denver', lon: -105, lat: 40, weather: { type: 'sunny' } },
+ { name: 'Chicago', lon: -88, lat: 42, weather: { type: 'cloudy' } },
+ { name: 'NYC', lon: -74, lat: 41, weather: { type: 'cloudy' } },
+ { name: 'Miami', lon: -80, lat: 26, weather: { type: 'sunny' } },
+ // Wind arrows (jet stream)
+ { lon: -115, lat: 46, weather: { type: 'wind', direction: 100, speed: 3 } },
+ { lon: -100, lat: 42, weather: { type: 'wind', direction: 120, speed: 2 } },
+ { lon: -85, lat: 36, weather: { type: 'wind', direction: 150, speed: 1 } }
+];
+
+Plotly.newPlot('plot3', [{
+ x: locations.map(l => l.lon),
+ y: locations.map(l => l.lat),
+ customdata: locations.map(l => l.weather),
+ text: locations.map(l => l.name || ''),
+ mode: 'markers+text',
+ textposition: 'bottom center',
+ marker: {
+ symbol: weatherMarker,
+ size: 30,
+ color: locations.map(l => ({ sunny: '#FFD700', cloudy: '#708090', wind: '#4169E1' }[l.weather.type])),
+ angle: locations.map(l => l.weather.direction || 0)
+ }
+}], { xaxis: { range: [-130, -70] }, yaxis: { range: [20, 52], scaleanchor: 'x' } });
+
+
+
+
From 2c1110b79a60774ec325cffc29a6ff9dbe184721 Mon Sep 17 00:00:00 2001
From: gatopeich >eQs04aHH1x-8A8R0T5Y91{qX zdBdJ$Gf>*Zi^2sQLOa*VUE8*XA5ADI#iPDmqS#hs@`;qv)Lw_q-LT_DS+u7nnYF|x zS$1U=Zmdk{Bw+Uv@%6^^&eetXQ(Svc*ss|HQL9}8-(H_vgpHdVdU`^2v^K1SWi3wn zbTi?U^Iw9wUL|O_Cwe;i6XiW)|hRC+p3Zk$~IqdWYwiYBiL=?)7bmOV@}~&f)W5sTWw}s`Ar7EWuBQkWw^iXmMp%b3o@UgxSJ5J#UX $VZEt%f6{|VhOzWYC XY2v c9v z+Ykwrs)q;9hf?D9SC@4lVDl|HxES~KyKk;%mR~8F+gM-ax9sFuoaxglxIfbT w=i1x1c z1$MbTN>GS$h#7$Y&n7&>_LJI+X5aC~XH2|An*mWqbTC#+m08H{?#Y PXz4wkvzrni|F~A11K$t~RZ##mRH@j2y%KEWvZ`p30%`t0{ =SWj-WevNB`38=q^e9W4H$o{r>0ar?-Vw z67oyhdfA1x|CH@ l3Y82|0wG{2PPuuqM|NNP_qZE|o%C;%v=eHf4ZJ+t)5p0a` zJqu1^w||nE`0cgjpM^gwkE!HZc3rJHL{Cpxoa&gW=E#scG;ECC_UU-%L+}h6$9F%s z|JL0o%l=}GYkr3ngE=)0@~;d(7b7|^n%hrz9+2I((mOnr&*Sl-du)#CNN!8c4-Xu< zVBqzZ-y$B; T t zMYQe{TK_#3<^0|EoO1qMeZ4{jo$cS0LJSh&3RBSN_C$E|(DHP4gB^KVBgeW=6H;?i zsz$aQoVSTcmzgHWkbL*PU!^<3^U?d!g`MRP@slx6S(Mb(Lq#{14F$93;=`?*p<)oB zyo@vbITdgK79pi_=#@Tvd(p_xj{!T`o#k i#=RMJ@5=g>u9JHTM}oC_r%Nr;3nbO_To x4qFtb%#vdYKG>z}tR!w$+) z$k8jK*Q~Z}9Y$qOr>IwsMTf&sWZfC!ZJvu4m1IM>?1%Ir!l7Q`Y62?hP^5QhT6vP( z7tF1Y AmB z0@d!d`%o{x)#eqBdrKI(^BC=d`veB8W?UrBrEp%v1ugpP>uGBn30kV>$1lHM`#oR8 z F#b2LO2wsf65g|0$ zm7P#tUcT1M_}_rb5l{WkPbM;}SZL*j|E+ArT|}NNwy_-RwlZ-J@WJVEnVwv$TLY!8 z{12D!jx Bk+|7UUnxD31wPHbR~wnzfvz=h9a1(6$YD zD`+#r^{eWHyD53POUQMFm}Oj-9LOx3EEjf>(f)Q j+-qnfH71NkcXnm 2mX0&;0P)64 z1{^h8C6kbIfb<1$4iXijL}!j(sDVVr?UGlxxv|>Ua7@tJZtNKguA6%)*rSpA8Q*r+ zXIbGRWeFgsq6}p*fJFABZk5%gS+$?vD|9+ds-|U?T-bE-tRqC12Y1pPzr>?T!|9XF zEl;|}tCp_K^?^gDka$$kI+Y+BV*dNr$jnHqxTMRs;;~2< O$h;jx-R^%M(A<)?|en$7F%ysM+oO_?l9ZEHKR7C z;y+M|?_7hLqs=oGb|v3|qzTmp5BUlXcSJ8u2*X;MMz$o913o>bv7aqjDm1z>|Kr Z0= zE{-4Hf317_ab7!r_ty_;fCLRCn80I#T 7KY%H}RfW&o91P2{-KZ-?@G=*Gp4P*Y0B0%D)>E-ekfZ?#t}o aur-gK6yB|$-9PUj1G_jG?rQS}>+vHmJ3ak#uJ zzXbKc{hnH(FvuGrOG)P&g4hS j9vJK?^T8LkKgSb{OM>tIA%irVv$J2elwvmynw z8vMM?BiA`B1)@rb&fUZe9Y!b#PfxgY)-A}6tJl(=QEn)G@4CL&vH0DeTT(5G-y#@F zAeT$nI#d@v_l<{r_iM14P)cYo3)_v~ZNlY3O;pGkv746Fa=DxvGI^cF>5D5t*x(Ba zsY7bIPDX_fMUU`pL4*@3gGw}BfcQh|X6Az;gdGd54qF!7T=i%Yy-(bKS~i$73Bt0? ziupixXXz7i>7A7H2Yy&XBv`7PXS2JW(z7eygp#7eua(}~AMrgmq<0K}Y{C6^+g1ie zrG9(1zr^~tg3C7|;R+U=odw;$hKKRcTknSq??=AAJgsVD8P;IlmOKIQ#($%a65o?i zZhWBoA|WzEeRE}sdnv~po^S}qFi*KV=iXR^qj_!Uh0I`)97gq??8Z{RoUWJT?-n)w z-3Kq{wgzG&j^=ePL!&-S)+HLqE~pP`Wa#3Smf)PR+w>Q6o!M5*@hb;V#(2{cg54W) z7ebEYU=L5@>TXS+medNU= >%D8^;0H4(#R0 zFgCO7gH|>b$83r(;D7P?Z!L5&=h3wucfY-2eT#F+bz#gla6tne5_X(PHHmbRgtOP0 ztdg?u Ge8Q$xQ62=~;42T#0a7hTedyoSBw*(0RpE3`+od7Z6Us zF%bbYj;R-os`Ka96j7-47^!310Gr1N>cHcdzZ-XU)e5;}5?PHbH}P6ejFAjVSO7}L zuk<}h?_L$N m9)!#BnW+LS`47g~I~y!|J#jcP_k&55>_veYginFI;aX?faxX`LHW zxqGUis4hSvp8%BY@F~Xis+pGT7wo{p`2b7lTRr}z#&vJGcxr>#UhB=UP{imRF{9d= z)zNcN9@x`{F6zfG-Tg@I2+8|ijV%M4(idvi+}?QayJSl9nit)S1cA?u NaASaNY6jjWT@x9p5t;dmmqq` z;`54iOcXXD+iBi7fLU0z0k`zd Nc9Y}b-V)4?q% z!%P|zN};cL-(Q%4vYhzPk?Gi$|A~rorl9@J;xe77KCDhOeObCXBfJ!j<>-!=Kc?d} z@+PZp#_C%W0(%WPR8#M|ENY-k^|HD*JR*&xNRBBM6=VV8hzO1~#!$ebk<7oqsrB|I zPOIJyK^pn@Vref3J4}zK+Ze%)Tl=!m(pa%Ybmv%973L=Fr}9eLXfoQdC9 )+A9$}>K2NIo*XNlEFvwcCEh%l_new~ z>pS2$dwNl!P)`4Lu=!5icF_`<`?%A(o#o&E075GK+cW<2KheA>C)BoN@t^OJx=u;u zH8F0?tGo^F{U=C<@3-s!C(pvD&|0o5c9*oTo(xJnNnhH$x-t=WmO@{splR>6l|#>= z5aJB*uY 4e$%$m>8pTCJu)6BVl zatInUKGQ~wRd2pxidu#$07(SLB _1U1rEla9vrrM{yg#Q1%f)>v!fI>1mMM$CrN&TaOMRcoBY)T1^PI z+LOIZtsnG1^9@(xw|)lZD%GPS=nY82fUBcgW3NAt-Y?3|F7udXzrzW0F7*$1qzBYn zg|<@d#!-oF;iUA`1Iv0;5Hk&wi)Nm68mnyZSMg8Ii<1SLmIX~6dhR;V_82S-LQW%0 zcV!oa`G~E}Jr;79P6VJ)ft5DDq91USzc(Z|$Gq)+%<1h%W6mG{f>K;de*}mI#~!xB z?8;x$-YRWr0E` W6W&<& z6(%XhO3uXALCAq@;mWQQ=d+4wNk5R+SrvjX8jvK;xzNm;oWv|7oVD7L=z$PRx(ei} zDeoRD=|=c12tk_Vy2mQ4QFyla*5&&@8bdD_@ Co37^gY$FdCqC0j4pS zrw%ym@N1^r1*avS-OWBs65O*j9b#S>cw(r%+8aPZskKTO{12!ebiq)PaVu8uOJ>g< zbBPpj;sf$Fk0joauA@@|u(inXw9ECZyG_Ad>ud83eO2KSPxktTREk$Y7`*Y|so1}d z?%z7q^YE)`Iz-5whBMRxA|k!JyJ|kHcNtTZuKlXX)Ky3No00kmEs%}^+KD5Qq$%}q z`FsEw_A|X2Naq(WuU=?p*81-{fcAHfMq~OLQKEfTDQLY3=ynT%fxkaeodi#^j#_$m z*;Z05=i^V%U2I)GYh~_e6fJ%y>}b7Eq+aW=8+B{rYa`{hCGvo#^(Xd1cbU68?&p_7 zGqP$NwxhN8vT3Z`uV}fo>U!aLDGU#N@A-!p02)S;@m^i~HkGD$UXyy|u!}}P+ 2`(fbKG-AFbN=*i}~wd^)E z1BRZC#$1~ZCDgcz;0rmpA(9Te^+}A}&qKp5I|W$ndh_qicy}uG1G!zT`+(#aE@0kr z4X`&lVw_7Wx0bb-Jd##&W&p6t9$H#k#@rDnOPM74aG^;y1<~Je!lP^g6|LmC4+PgW zjp>>JZ(7DeSBcclm0Ys8O^0=Fex@eTbf}@GiDB#dc;(|CQpA)rbRLY!O-(F`?v|Z> zyk9iYpu(?!QFnE+jeNcrdhpfm#e%WOTkuPIrS_i?O?B*ds;UzgarzbK5|Xv__T}m8 zlQTuLfr}NEJ}r&7tyvXi rQPu_RV^i|`-&WkM($Z=(7BvU z*UU+V)+riTf&63UE|x$3lJxG$j(6_V=k8SPcqHax7RZFIBxPBdhk>A@Ub7H)N1Z{n zTei@Z!qUZ~lh_to@ydes0z}UH+JY_BJx 3+Bz9-sF zpO&UYSs4W%I4zk!*ytxOWzqQ|29aIz`kiG#OUk3&H`SJsaQ%cUpROilx$N8*R(f Jw!y4FbxY&3$97@b_qV z-)G~K(KxS2kH+pSny*S0l;V1KlD73BTecYaEhkygUp#o?DoJDYcP`o3GP3 1ZTjR++o&%7A)g|Zx){URe7?6kj@nX} mA)M7!ilrYVs6?JPxq<7K?J2Y_y^V2G_;*w0!EpH2rX!I>3qGgW~RZl zR5Ul}G@qaDcTDTdgf@P1VWK5jyC7?(c>YG$Jq2k{DZ-vWMpXrl=Jnzi&=I9zrQc8o z6xfbA3`H+`GI@Rb{^QJ+k6b&4re|9xi*4pym)$sU-YrM@%Tk-xn(aN!?WzV>3Gn=< zmJm&md)-R5m7?WtkxET?TC!O7lR7;gga z#(iGKa6YqF?3I$|wv=Qke#+~PGE-$Q+#-X_3*T7_nN#Qo_bPQ&Dn%ZgFz(!Ycv~+q zhXNJ rHV+)D824==j&i>Ug$%K|IEXQrPW{Lu&EeE5_(u z2l{JdohZdqSQxlemY)ZeM2DQaMYr`kauGhhv#+sR@9 gCMC4HZ=unV09VSuKf&7dXa >}QI)~!< z$HL#unSGnHSMW!i8zdpAI)}2QC}$E5zvNw5k$t`;5 6fa08{ zSEdU9n_$BjEwFVZw2ykax=V+Ld?^*67$Ouf`s(n5Ct=d0{@%$mwePSCD{|Yu)5qOk z_M%9$(oej;?L`S%b;oU?;#*5yUFflz%294BNqZPL6T7laraWm_ZbH+&2m 0^# zyr$#f2!5WTQWiMYv62DJAWnQ2FZ~;fcY{ml$v);}*Hv b zYw_#p=gT9~7|a4~tW5x@#9e)JoElkYoWBEK8UuMV1>}WN9gps9d-u?j_hs{Bm{My} zXUAF0-i;EeNx$7ti*+I3y&06^zYKJ|Dx|8~7JNLEP{E62-k;RJxKrF>DZ4?m1y(!O z1aYmXLRGv83QJqkt#d}Tp-t580zDZZG-nxI0m58YK2k)(>DP}Y=&OP*+Zuxw(AFmW zw|D}MsjuGtxt8OwZ0R;->#Bgpr4LV6FzSIb$4W9r40ccK@TQgF7oP)v&az7K8Lg09 zF#Jq56a16aGG@$0e*bvwJQ`-w`&fUmI)pm|AX?$m%5uC5&-9go+0xZs2|hq#AzWj1 z;c8$pP=sbm8z)OhOOLP_ib)e(1s fL2Ozq3<$#Vid%?bNi%9x3~9PQOwvro++M>t7roUWn0$8^iaCN -#oV6W22vW&S6 zr`I~3Pyzn573f;~YRki|3#FlK-J7a$Hb%1mF(!Z6b?s->8$kT>VHYdpO>%NMF~D`k z%oI*>seq#JJoY`?mMo8!QW_k;VYbfrQ|&ZH?iKeq{i{8wG>OZ5WJkiK^*5Y;?^`)i zfZ1}A%#<-P9*s|q*+`9#c{Jv}bb;>wy}eae1DLG}M#QmvL|^UPAErQ*+E1nB0qS(h zobe)Am}XPZ9zKs=FZzoeFPc7QotZYS>$<2S_?aikNXoTfgvzVblvUC3^AkF2QWsdD zCV vYpotaC;mLeyf9Zuz~a zWkpP;M ==U7eLSYN*%bt3G!s?Ge1A2&5d;(ztwVD?tIp3 z*q ++8=qefo{rpwVaLt+mz@PYcknd(rSuBDOjeB2Sgg^iUNH zS-^5n=Z2(!gAy?QNY+W(9as!;9$E(iwEB%kLg3l6b 6omVXNP9c%t?2U%sl zykCVl@0I%utZVn|P_&MZM`MFRa@wXQ2v>|V8se6pZr`~R7tEzIS^gR1QJuqR=ip;G z=}7L~YBcDya%0L<$D6LQbT`Kx-Wt8AS0BGgG VKW+p{%dZ^fd$& z-5e8qOyjO8K`YPNd<*OskZ64L8JM1lrt2pHu91NVn*cm{ucyUH2CNu;y54^s=x0q& zND|9HStS8)V%{9*>oD6-VqxGQqcwbsX!OM?hCpEhhv=!UC&8-Va_F{G>FH@?$vS;K z@I15w*1Jwp#6;Pgt=j@aUIhJBSA9E9VdP{kELXYGq0*jSOO~ogp()GIKCm^j8SH*= z4Baiwb%s+%*W8}g?;en|>uXY$z4=XPIN`g4czU4DbF3{st0pO3%j HJb3|+bWUHUh*`|+%u#AG z|1^W`*cN3+D5t>Ly0YF=EMUf Y0aje#I2W+>ReT}(Plj(QiaCgO9y?sC$+jD1ugiW*uUbza z6gR55H9kB%^uRy1UM+37_0<=n)PXZW?e0VCJiAdPd3#jr4pV!*x+uloqh5XMlsaxy zXzRQGk7vYF*GIl-uMa-;{DGJprTA>xBNbi(tP(G$9D9dywFaMh$-h5m0NF7~X^E{* zhwtLB#!gb7=z;IzI=@HK%ALxK>&)H|_O bS(=9W>4Pgy+hQjRGI; (uHVkaQj`HU-l(|*tQ!s}Gq)>*ZO#g*$COi} zvQ-YNqCAx119g %n{x2{kjW+?#gl ztwp-x{AeBXjL(77y|a _eqxgxPANcJrFh-f1v9w)LE$fvhduhr%{a4V0BRFO0`L7hRFk zDRO87pM*;BgL_YfAI#leobE!%QYo}cLnQ8~=)-)#4zXZ!D)^XgH_>bk+!iFkWbk9B zK(0Y7C 90WK&<<0*hIuJ-mibXKl0`pRPjdAZJgqT%8!h62C# zE4p#36L>;(P%e(>9DmrJ-HGb&-{OfvrIl&im!;Q~3d^F(S|SGg3*o@O#i?U-XuQrT zM8Zn0^MS`A;F#dddsa!T$ioRj$iZtHpw8NT|FRnlpOtL@4#VSbL?kCfI?DjWRf503 zd1vHk2{t^$;R20!$arQbqg*0g_&3v-xJB+$r^+J?3=?&Va+6ilCd !*egpQ0_DriJ zI7=2*rZT1g UeY2MgpR6!Z@0 zz_r!QYu@~ExoIeC8Rq~YR0zJFTWcShwr)<+jlZB8+mrx>e)SsVJqHXNGMm71rQgO% z>XrC~NP%sK%=0iU9I{5LrJ25|;7y{&{an68Y6DfvCo$e83|X$won)2lf-Yu4eLT0; z1mem7J7PvLINlW7$0;7}ZR#2R23o%wl1e8?pMUH*;#R#*V-Z|bpupa?v+t2@B6AXX z8iVRD3&s&=FhXe$k`dFu zZLD?Xhna8ZqLe`&c)uSE?|pS##20mbCS6M5PD|hhDhzu-P0L_c<+i!*h}A9bTo3Nd z4DFCl)D7X%SpWv8h{-+DVD)_Wv+Lnkj^q^sw}MQHK!?IK^@7?x=Ux(3Nnzjf*fr>?qs%i=ihd* zA>$ EF!enF{4>7-@p2F z{|QyV(tWR@p~Bm((o|~a^2W~{QV R00_6+Gg<|4*`k8v_kyJQooA=w1GbRE?X+# zIdb)4NLL>8Smm)gbB^-ku1G&bOau*Lo5kTHrhi-nPT-K!S-9P~SDbb|9lTBIRh$@0 zAZwt5n{_(}N K#X=>Us-ep4Wmyt)Tla0nlIFil+)2$MrbC;u2zU-iuO=XpMC@|EDUUG z-GAHG@a*VIPEwk}*M%IpMj}|j$Q@Irg;K?vu5;bgW!LE$I32x>>&IiRQBDY9ddu9) zEcbufNwY5>{TXZ*zup0zcrPYuT`lX5G>zp@KiI4Lrq9#zgPmbCc#0^%dFg|ZgjIY5 zw#n?Ik9UCB`oe3i;MPN4ospgb^Rq~PTj&H5m{fisJSj;1Si7TEDG`1gVh)7XFa->7 zH#D;DG=YJnR}LQ@V -yR{6M9N^)q&A&ISoT7?ly!jjq ztI+e_Z%BB92qo_B3|T$TBxsAR+9OE`VU4vaF8x-OsiZ@bvY9&uHu{c>x%IC1 q z28Ka;a#7^Huxd#I5aMM#*I$8RhQHnSaH7+CbFY_2qgddEC2J_alOielq-Adv>Cd zB-rfFqvEDKct+_yY|d|jTho8zoA_rS%@J`Cya=zu2?$A&S3Le)Y$Flk{u5Tvv?5rB zShB)-iP-p=OtZkLXkMnJ!;zb(UppdpNXR&QmzADGLl$9oTlR=t0x027cM1nHfahq6 zsR0a4a?A7hfcK>2dgyBtPfwwLevMad-BpScL&S;D&>f8f_hzs6B-vy&Z@6o}EvSy5 z6}_~ay`cbHXkhru(3^PEO##w?6f9YBWj3ocsT+X Wvx`-gShe z%HXjYRRZ6p0V#a6%~x3*6M*pY!0o6ZHRke7j@%Fv==}Po)i?w`w@r3(YAZ-{VniOy zMbnZkb1fgbc%Qv`-1fJg0<%_st1)k71mvRz)hG|10MX*Tw129aXFjFLDMA}BA@SBm zHYm4Igfh*-!?0&1t&2*Z{5FnKleViJ-xz>O-PH%+YT@I~{n|urlZ$V^AEs*d!b2|t z7N~>)x7E73eG6VrxzEQ=KNorbh?=%A6MUhwn#B(?SL<#a1Sv$)3K<+|kr&jtvjpmN z%|>=J@I!6j6e
e9{P70L93tR)UD% 9KMN_qeC{mkTu)%Y z%GlS)xa4~xK9mO%;u5WB*4(azvznfaCXq}kg6D|@iDP`GgXFnq8k~vQ>leU(e7 g}?fY-MA `X}rBM{gRQU6|r eonTw_CM^A< zLjE<)gXe*k?r~B?efl-vq6LdBbH$S#1fm9n860=T3~-~Pca?2!xCpv5ZpbE6+3gy7 z |jJ MVZQS+z7jPEtgRXz;|1Lt;rj#Ry(u8cqrEQlH1w?W}I`YH ZZ z%dU&a90)i+mP!q;BunFuoH0GYbqG-SQ!X!M6&uR(XuD7kp7XV$I#5*3aj_%kC`t47 zfL`+`t0yxhh5l{V*DcQH!2+^bdzs72D=eGUgzw$sZ2`IbXRIU4@m!~<3Dko&V0LFH zi$f`fwlzcyN-)*&mE;@Tm -dvz6FFZA}~P+{ob&6sgDn;V-P9fh;bW)>Q9E}ZoF#* zw|-ykCqz&NxRrs(E8x*igh7aYM@}F9-KfVtq!9uNRpPbBfuFMcw*NU-973}sB1tul z+Ov#Nnnr-e?F^NdryzN8Ps|Z?_mQl>DeTffpOtMX)k6V-NA%urT_=z$VC)YB$BD%b zy$*lw(j$G~_skB$xj4Yw@##;70*8Kr+xjM8SVY!Hbe!$yI#0B9TVGUzu_9Uf$=07G zk10eRd+>PVf3tk+!4r1ZQ#8PXr?I>=PXRw(#AJe0pCtLgK?bv7!A}$X6#94HxfaMI z?t*1J?oIer7x&>==`)|g|Ni|h!^9?N`T S%V7VlojU9@Qc;1Hu&`V;N$%; z4JN=y)qOA?bRzp~s7&7x+JN)gDppx0nzDR@PMA%v{hiPeC%MOEVexM(I1-J#HLG7< zP6><@O=99;oNRFIIW93#>}}tWv#B`4d6`K1sw=O)5w`C-%k#6zsz2`IZpIRH*JpNG z;fkx)`*VyfRM?cxG8kTckk7LGgRZQ((veh@VHGdqEyHHhe%#q~l&4I$;i#-XMa;TZ z)+Y3q>ofGkU9f?Yq(yJo!1(v4AcMVNr>?&y?f&pogy?~HGjME?K=itgHy!@^r{4)W z`ItNQ{oknU@5LF+fuq`?{4M2(Acna9XAqW->EfBfPYBrnbxsu!&moa^m}(hc$?Y9a zRE+JlEU)lqL>z=GbD#J3S(XD(K9> 47{RnUklsXVIgv@@3gG<#^A$)9?Q+SG|S>P|z+_3p|F_qy^Td z4NBz+T#pT?zt*aQ&~>~SztGSI-pM3zQlE$6f)&6mh;*g#^+BI~N5Oyu0fuUx3HJ+X zIjWU4RHfVvES^+Pd#StO@FeBc6(&BSks95y`THA@m(%u8%bE_Ck|uR#1?tp)%Ri#f zZ|Ej1EI!fG{yHw3bnBN)PO7@Beswf`&!%$MT8P=gep|cgg>PpvBHDMBXPY!kf^yM; zs7@eA(sS!-BWw_i^e+H2a2~{(ES`1fi4nVp3a};DZ8oi8B51fCt5;e)Q!vJYTN#ga zp05+^L(IzEq?Q7hUSWpDEtfBYdO|go1em(BuDvhI$iGMunJrkC)kUGWe`E6#cWzl< zZqMP>IQuA>vGulSMiLtB?0NVHd(uhJuP8?d%{h;seID5gUokk~_jWCFRWYJ(gbT=D zwjEUl=`3f92bz}ips=w{PU8<`eA)0hZnXUMz2V9vXmyXmsL4#}s&$8TVvy_sG(%mO zLZ40kwVkC8ujj}pD~&v2<(~-QelKn5)I7n#XgdFiHhX`Xh{mRayj}rMzsCou`iIUx zRs@_!Q=~;RH7|7~^jkTbHQ6zXIMvpv7N?o-#E~bCFrv@elZY&6uuN5xl70h#z2vvP zy2JrYIoFqLoY3mxR02p2`2%_`B>q1d%OosRKD$ct592!L;FbXJt4EOr-qhveU?NI* z32f+X^lI8MAT1TSpJtHc(j-bD1AtHWF+VKKph%I!AK~e~BPfRtwG_I6%*%;u4z4+w zk+dhicn&(e_Tb6y@7KoWP hft3 DbV^=G;<-DBXtGNHT{) z@H=PsHo+N@sh&_R=cFYOO7ZzlsDre5*m3^?5vZPI11nw%T*YM9#yjwj<%DCG0jDS4 z{`9D+YIv6ycge!5`#-)81vZ3UkU%affU5y?5=AXLy {UbhdmGr~EzaOY2F)e!9_l;8kr!!EQ;v?TD`jo-{O_bs{A*}g0Hm2{>- zMQ=6kg4!u3&@}B3KF~^RI##zw=|@sR IU!(tRHumXex_4scW)?$zUSyC@ygH>0%xf$vZ+Xh-(d18 z<<7TP)!~8}TDwPJ{;XuYHPkitF_o9}#Qo#{ W)J@xj#EV&ORL@*9;HE> zK`Al48d(#MRR#)M$}iq&3>7F@ST-@-jT**x`+p#PHmmWO=`YcGeOCTHcWb19-f%k@ z-<@~q*Y0SX1i4KUW5(S~&a&d3WRU58C4Lgdc_h9Ie3_)8&>!zR^v6sPr+oV} t$y< zEwCE{Fg@NYs#OKfGN)6C|8f)#9>8FJXrMx2V6wa?h5uC@=H1WLa&^PZ0n1&3o2p!` zlQ^wbDF1~kSsZ+JKc8k!RxrYKA(!HQyX*AzRqb1`ROU2sTTHc0*~R@f{`1Q!`{5C_ zslXJQJNwJsS@$2mG)Uf&$!(($Aw*!*eej7SZ0h3NS?UQD5pJ|;>wP9pyC2I#%&@<8 z@$nq^cJIpm)U~bS7aeHuh{EHK+%<@T3G08%bf3iDz3WeGT6$i(CU6#}hZR@SVw9QC zGS!$QOG7q=-DQe#i%($XpmCm3Whfx!_8fnVrA3U>Apf+iufs(0tF{TS-}2o8tDqJA zFIc&vHbqM_C6}m7m7B#_a?=lF27+SeuB%Z7HR0WsmHE7=VRF|EK=!I{o&NdYO>L*Q$WR@EO>khjJQ#ee&+)rdY9ZX{ z(Gijur^(80_N7_j6{#g!j-Q`fPlD;9m)Y-j`()kX;$7~%5lmjM5UYTEgpdlEVEN!d z{^|<2LJGOi?_l&y>qgb&o!U@En2UI>`~4g%#SlpBGi2u4SFHX;@z@Sq@bi0Da>C^( zcQ%D-JAJ9VC}IivNUJzbIrg556YIQkwUL|I75o6QCQ*%VZdm~E+)ewsn*Ysx20B~^ zdRp->Ht1aVZ zb>LD2hcYLbhZIBLyc$x)W#UlS>F`VU z-V0Zeg%%FGoXFfvwVP~}1_SIf(OmO3b`5s}-73l|U`?y`{7niSd9 z2-)+clXCn&!Sx-l>l%Y~_{XQ%kZVa+#L`KIf1vgLfA-Hki)xP}Jw5>R*f4L-nMWqK zffy=;*%ckUsoo+?RTXhPNClBeFXK&WB?|Srf}!y>3bnIZb{NTDH>q n%-_!lbIFr#;2X{8{hM(D zK{~L9{XEQ!1X@>#IukW~E`*$ve^wEEIO2lglkiXDY=|quKxYTAC>Vdb%QsY*501&MFIU$>yYhz;8&!7J{O!(sXUzo5u*SaXq+hgw4 zuPT?Htt{y7=A;L7cfOz81|U_^LFho@LQXKbc$R~wVK#S zrkDnomX_<6Ti WxGpU9N(N*EHAO>ES-S66I5Y@sN~fLS8BMxCJ~NQhn4>a z`zh5DST`^MqtCXR6ak!9t5yDI2%vpVzi^-|r+-~gaPlnAgj7)Q@k z7o-b5^Fv?A3mbk%|M~glT(092B434&W{mtYzc>G zC|gRo(+(mn{<}gmfWAp`8U#Nq!H3pmRFR9p2ka4?C5YQXVpmV&Pw~t**Eo5I7r|Py z4jt1>1L7(Jx2z%m(Sd`p0ETU~Sk*5**jRJQlacP7e^n@$Tk)vwl*qmBUbII)mzTc} zIU=9j@E?`QlXwUnXz`JG-vv);@1thlGFy}?=V bwWY}z@@-Vzt_KXybtYKOGoT c>`i86msmIVfV7?)+_AWIbg@?)4&L_AXK= z0DDx&vcP%at-AYel*GDqv)Dh_C=4H@D~b8iIA7gsG+vQSoiuNmcsDoQy}YlK!56-A zZfWMxzpvt;yJt%kK}-}Z0*mfF-^}3dhs)-kxN}%)ud{Dh^OR$}gV@Ng!aT3ZF{d?z z3o0N
oGs`~2 zNbPmuso7Apx3{&iemrqE`cW)&grC9 K-fNm+uQXRwGJz2x#nI?-r zqCW707}-uK&igfZvpmwPSdVqg7gb;jAtRCAVu$({K2QN_K0dkUO`%Y@DgFot=ib-l zn{>3F%elW{j_J7tTzqQMye8%@^J_(oft^rBw&|G2R+Mh1%h|(5huZu-b^>u20BoVn zi6P8vAV_Ha^uIRAhI*g%O98iGE7D*qyd0R#ttJf=K!DhF{Uq%};^KOd)RSAr?_S)1 z-DsHz*kAdfWFN}V;VkE{_lHI@2T_bB=|{s`S$%yb;?nZanT*ad{c|M+cJYA`qG5OX zZl=6=1@r48zhO=V8UF+K&Q&Br5!sgR9<={R7Y1`~@4;YLCFB5M>bgAil *xtjIe>PKy~>P~l?AH$YdY$h3k$xDlgHr3m%jZ|@|tugD@%rh!8Q!7OG%AIpBDbL z7m)K`A$LE?_zZtzkW$4TnKx(p%uVIZaKsoTt170cQmh+Re$jmNE$hr$)l^?RV2sHU zy)p;)S mIj@yoy1Z&lu{( hDN-0w{oe;CI(`s8W z*CuO{MDF9O8m>+*R-8D0%J8gxLA) KJ+hx_D$xG5m7A+qyGc7Iu?i86mL?Ens0 2FCS)2#bwAXgUx1P2D=sYj#Uer rye}~1Gp8q^JYTh z_SEy{nVcB7NEOb;87z%gd_+;G-L*r$t^*RYU9nqD-CjOWV0?Ogh@An4X}nm1_P#2= zxL%|e `2hwFfey9(kWT#TlGUVq`J{rtHpn~i(79KPWSB45{WZmEKY$wuyPM7 z%G~a$?uv1t0CO+lU0C*nxA9V9Lvf~`ko%2{oCh}>u%SnBk3Y<}1<*T<5=C`O)UVl& z-kL2WEiQz-wws)0DrqY$QYCfAIl8aQyi`mmnX=nq!77N+&M|)j<0!WF pBsILZ_5WMpw*n(7H__IltyCe=sRma-$LNJ@8 zfIE3NOA1`hNDT6RvpYwh_n_6N0cesst|>hkdSZ-6!HL(lPKKMd%%Oa6z2Jm-f?|px zC~s-I=#J)l*nuPm?&C;gm=bEg1j5eJ3HC-K7XmmrK8G0z#0~^RYbyb{Jqg1@S+yiR zCHkhGCjR%~92jCfRqFBXUHeXPi5fjg_7)80A>U-g$B&*njW)Zk`)_qFipzt_(mEq` zbn^KCWqIh?U^?S9$1?HNfip6dd-abx-%`Vg+N7p)X{wIU2H*76rsgB%QFBdCX{O{v zYR#o<24%o}Me$gn@zLeQpz(IAv(Z=%bJ-W*gB`G3_gQfjy>hPp-TlSY_NnNCDYwSL zl1)>&@JMI!6kE6J+D#=Ly6T@lc6li(DsmBf3TzW(g3iYj%@lG7X=ew*We%FaQZ*rC zbb#5f0L3_djUuKF1!JrU5aeT(<~1)7x&+*T&B&dX!AlE4Kvl2-eF9g9Nj|EAQ*%^j z;8CSl_XolaY- e2Q*h(gect_~icJ{X^B?)XD9?&nc*|}|kC3T#-UxG5hI%K)ofZMNrwoRSuJxlR zVg{sd_1< Ofnj^JiU0S{Of;o4KWW254q;HJ_uN6?}$_BIJtvL3_6Y8aa)0J~c_Xbrb{ zaNV8{a+)742y=s+FEba4y*|kXH)hIzh$Qjn0~en6B{5+yTqQ{IH07Rhumbq*4nCKq zLy(JYuF-O(?S=c*0t(=Yw3%6i_dxE6gDJ`1Ze`#C`2YC&%djZ-?++A~5QcO_K$@XT zltw9ODUogoNkM6(rBzBg1(Z-)QV@`kMv*S*5Ge^k8sS-^d;j ECiq1O%bNU+FDz>?oc@7Rj;n9`RRNHD=k{4;f-$D_Ag6{LC*3#ks^2b2R~5PT z-kNWo_d7kz{UM_`(elA=^ew=caeyKapfeiRAKGt93D5Yr{KDrzD@6Ve;+# R;c9lRc9dgARk=(fYU+iD>H~=b| z6ST^5zll5~DFzv@{FwQT&jegTS^NX~W`67JA?T`zj*ia8>WG)~3b< Jynjma4|T&K%g~=714an z;6l?ad6MjI6ivgnH48`Tv{)qS1XSv!*1dF~MwC|!28A0%JbAHE4WI2$US^^LXHax( zMi35>G>FT!>wu9lgF7Hh>lg$}lH0c(2*|IfQ9c7sSjh9s^`L0t+I$HGqy`RzLN+`( z<*@$LEoUX`eA}x-j6YCqbFzYoBp9xdHw>Dw`k~P4>Rv+@2{9mwpLEX&Uw?-B=0ZYC zTbx0yG_`#!dpJEdrYBdrqtE HI5R`KGP*MiHJakPt?SIoVrtV>1D z-2ARu)!e>NVPaZZQA0J&(saEy0uN6;w&g_F|BSq}fvqtL@S5ILHRnbY3W2~(WQs=O z(ikI{+4LVrRT$z+Ek9`Gr|*4%kj_%C#8G>1@cq34LFtEP5JmJuj~;^anV@t}L{Y3D zaf|SlHreBz3fcq>z1mq2SV=-ZF`RPS f0u?zPP_BGV(pHktun|qoJ)nI8EH% zWPbudwQl@;X!4)GAL#$@k68umV3aF!t?_iVCZ4o;ks^|>BKoF8gDGwE#>Fp=3#wPz z*Y$D?9v^+%QBcKbe~=pa{@A^k5phe%o4A7bt<1OG@Pcb2C>0f@*1#6SnE2R;ldmqE z+cAya_);Eo&F2@t#g>|qGjxSP)&O =z4!tyUqp_uSEV0PGNL zjdXyz)ORr`oeJG^I1cqeuPQ4mn_O@8Vg1cfXS%2`+)(GOcm^mgs@#i`{SFI;^l(1T zU^F)P>C2b&=mv~+A$p%ubpONDe^CM)*C8lOS^8ib(@aNyAY=wS7R5A^bIL3@ORKKbjN~2&rY}SM^R5Nf(3LO^?qv zT|-f~yU~Ps`Z;|3K8QO!JS~_Z+hr8OW80##>wZKP{GAVBN6ry$fAMyLEXUeq4Xb#{ z&|&< m=(jx>pKiKfZKm8ag($|!0T*VVN?~LR}D5~;^B&u$~ z*&71k#HO=N0SXEVYW>yBLKM8pw_aFa9W!6#1MiV`Z )h(k30%DzA?)Ge8~ V_Po=OL?>(J$-}IO8JSdM zu#OaW 5m4CGW-+W&wm~uau z9ykT^i8DI<69T@S)?@6@I?#_5s7Terb!?d4LM3SXOHGntBBvK6pu?QGsSa4V+qJba z&B)*-(To|rg|zM0_x{^j=#3ue&vX$P*cY?x oUR$n&Iu|ux1 z$a8Sme2T!6RwCvLtkN#jDLBlM3y(LtuntaNwQUgrD_RYunCI772vW@C*d`|hKe4V_ zDu EZGfgq1Z7^S0(Z5ZnCUmG AV2h_EJeLw?&CDsrbD-v+rC|dm5r&|? U9vml< GN@@^1dcZvG?w(wj8+zm6k*Iyrn!n%dK6j z=O_!`7PP&v`=(vD-f7Z)41yU$VMWsyhoN!e@-<^ElDw1Wnsmwz(ny1#s!B3!?0_o_ zj`o+4ZUV}8udiGEyT!Sr6#VrX>mLxHo~HHldl~CpOT{N9?9NIP#X{-3M=$Y@5TTXf zYTz+XP*>PiGvQ?LRm9wT$RULmxoAJF1)~i4&E^5M|HrO|hs=p7jkF?@s+nQNOl3ht zTB|ILU3+KDV0YQ;y=4Nb5{J&}fR`Zj9Y!0Ulq5oWU7S&s8KHOtqTai5;cHztV}BN{ z30rkjU 7azt6UkaWiGVy!mqm1%? zyuKb8ZY_J?jWd(SKU^^J1*GoU=I=~aSagxRE^QJjx;qV08JR5$9fY(}UBw1U`HG`T zqL~LUy3FByZM}hn*Zypke_nqs6AC*sce9jWbcq~0lUITnp{-*UeYIc&>q`oDCT{c6 zdlp#e*B?Aw{~C(Tu=apYDg9b I1Jaz{+=Iz;#!H|gg5#%+98CS~B;Ko aA5aT_-5OrgDxHso}3 zg<}NT8FGOxm=bTb)j2ZKu#$vnN=FNROkY^LIQ`xU3)J$Jb~9oQKTq08h$Qk)S$p*e zNe2TXdnhA5^pC#dAxjCO!@xb{#4P>qSo47V2&C6chUmjKeYaY}L|?)rdy|gL&$;PB zKq&O 2KPvhZ#&U^bM-r1ObT1(GXC&>5!yH9*dVB! zA3q_ pN{;@js3JHp7{!`#<}6x zZ3{OR=f?DlHnk72q~DrUxReasO+-3Im&Crl(e>rOV|X?ZU0) ^2*Gl;t zA+h#D)=lHk7w!vMqAsJWNqI%>-)Z*lK5H$)T8mB-N&Jc0Ro0PvYJ2-4GMVW3>dV`M zZy*2sw5(Pmf$8(RbaOsP;?p D`IOrcd6tFXRsa&n?I^2c{m2N8s5>qh4b;cG{G>xB|^Ub_Xcax{Q94Q{>j zL@^*9KIt(N7U^6$1q4xR@2;L61?2zFm99+GnJXijAyN8#eCNF>8j{Sv*ZUZ4KypP> zSLCD35e`}?-bs^-DO+_++ERHZ-xinnaVjpSk`Qdn7QUa#7&mX8FC4>?JKmc^nY1;; z#ZUiF{YHy~ n!ojIG(ho^{VstGp7{B)<>UXzau>C $Y(E((*Vr*W zul0+iD01?JRngP&VcRIp>a4Q8ZZlHC&$(;ngAVz=l^^pd?$Qh5C&{&8MwyO$B)U4G zUMxBVA?WRp#>4}bHkQcu&}+7~wV|VI)N|%Grs{aXAt@)RW>5wxxnZ)*E6rZ_LD?f; z@3o7hqk9gsL9(D1XIIY({=8M?Vd_-N{p8bqqP7)PtamKfnS*=sI3!TSZpxx=sIzgW zA~!SEE(fZ)99tEZWYvU>c}o|y(Y2~bFU18L>}&rZdN=Wlts!i$O38<8eLb{W;orN` zQ4`&`3`V* Rvof(WUTlz3%4)#R%fODRSyNv`wLQmsO;Z8Fk27IRQZn@}nkP z^NEIF_fZw8%sw&J5<&bZ$vuD66|wEy)jGYNlV!~vMV}95I;mv_iG`NscR%C1#fTeH zkkic+fAb6rdA(QWL{9ZoSLXRE h&ypL68EjZd(AlGE& ztk?n(6n4c0aI{2Wp2s%@Dd94J9q*7eZ|bj4z5O^fnK$oh=WxeD9=7Q06e4ZnyezGo z31Kj5Xma{1dZ#lyPey*`P_rNEO4K%41eQV5mg&yT-<5IJ8*?q8C0X@E `Y5aQEA)00Sd~$1NS4QRJ z;gwTs>gOi64WGX0VIot{mvmB@s2e{wD0 l9yRm@C;6j?8h6UpyVal8UBzcKJ zY}hJVd-?+?46w3DfmwZSA&}iBJn5Qhb(`9a;>_z)szC;SmaG&?6MOzGMn@u+NQmdY z00Tm>+M()*Gu7}}HtRQf1oon%)+XiN3o;W+04c`GEeY(WKjf3jFJD62QodaOMc*Dp z9|cq?3PA4rZ&SFek<`@T;Le ~D4zX!&jWu@dSjl$oV0Ti3aL#KwMF3=P zM52@5Q|L?35e5Z`yJ(f!kZ-^NXHVNiY=5h688*v(rvIuaurpw1o<}KOnm~4j4X!V( z1;HsI#m39Qf;V$=SXaP6F}oD?EuNW~B{$FR+VI1t{cC>Od^uirdgYv9OIQ8%k4LE` zs7Fe<5@{y_Fu%H_d}u!=HVSK{V>%pAymLYBEW{)i zp`yewpj#JK{QI<^Wsv6DBP2>D=ZElL^I4p&; zxpzMoO(z#!hZkwJKm;|F7GHK(R~Hx|h0xTBEipRp-veTM<26-9fl-V_K~2C8DLVOl z7l2xO4%|!OOo>V3bEx~wK%>O2`! VLvQ0HD@i8E;NyHf>~Es4=FB^(ja zTjsvb^;0!2xR9CO0{Xh2z;sK p}4NO ze)9YGPw+w(#NsD#YBvLUp?%vrQJbd a~~6<-PlzeI?RFcj&%x<0=#)3Tj?LD^-mWEkh^)tBvWT`n-^u8L`3XyYd| z$7@MPzN()oy8L*mQMKz)YOQ?WmTR}=1M!{e<`m})lWN*$NrRS13EldTu1DYB=BuW( zeZP!2z|B-oNk#N(Bl!196e~)Y5m>)Z%Dyc>+V%WBpKvjwx-|7>v2#GIjRq&?%^ybh zc6Uq*2OsWA3QafV8C#u!st|#JfuUDwijk~62Ew1k>pLz=&j#4VKPi|!wtCPlX)!Vf zSZ4%;h4}|B02bAkB}YJQy%; EJEGYj!v7=lF`dTF@>sI zEo W)K+I?Vj^ScGFYRuL^gox-3A=cj0%+OUm*#cnS~{Q zg=T(XK|6g9&@lZ5%69HH-7+HKThlBJVNCrA4N&I)MTbhz-A2i{{nFJDo!mOtX~y@i zYa$9`Wj)j8ZJ!pJUdN3+`o1MY;8CV3dg8W0v1bw?V8j(ucrK&3zgbPRueSqtrqY|z zp(G>Fhrx`sMBMlTpR?uX=ZAi4Iif42`)~V6vPXJV`0c~_1aDXIyL12k_9Fi6bLkp_ zxoRfSb0#-iEJ=d9 #yxCH!SFt;dVeAR%$^ zt!wG$TEOmg5;vSLpS5naov`pc?zrbR6K841nB{mM`{=ys_ftWfz*5(Y=4Jigcs>n> z!jsA$qKFgdZrPafSkaC}e;vBgaN0Na(@E0*c~REwAJ=6yu^D`EVjqd^+=TE$bZ1NW zjcUpJTj#|G6IHhpSSiH41dP4c-#tZ0Yc3LkS~CD3J*6)1)ra6W?aUAtg;im>o$BPs z=u58YtF{`SLx)AP+rEwW%R0Hf(;FTA^g6X1`e~Mjses)Gg2g~FCiue=;E}gLcGFk& z&@jRC07gie!aTG4j%5b{NRzgEd1)hRK4iI4+*tqDi)NsKm5hd#t41%2Roy>3M`arS zRN{;k+A|ibN;{>tW7;oB;E7EjcGXY{b1vmrQN+Ag&uNpaPC$F CymbTimwuVhdT8HdUVjxs?S=;p1x!)92N>`fQVP4oH` zwlUL454Nx-U>O6za7_TAiE7TGczAf9x~#0sAOVN)&LLR7A|X(Ki&EpX=ZEyCU!+&` z)D)v^M_N}#rbn)SUHKkPGg1Wwf_m%qF2{zUIfA^tJ~i!IPagp?q>{`dRsZV-qzZ&3 zULYW70Wd&oDivUNbD%~!?GiN%nEN=&lq*=v(-xNP=1Mo%ObmWD(tyDJOv}v)J@Ss( zpTmuX_0N)&K|V9OFsWc@H_otdJzEoCqJVO3^Rd-J3n2xsKpx*?r*)H$&u+42n%daA zhTDYo3Vl((y__5I@R(%!F8_J=4YpT4r?(upkIoZ59Ft3+>$67caFafNGN=7>;rZ*; zhSauCbN$V)c`f$~y5A&z_xeqeply|X&8Kv!xzRNGdz5Gr g9HoI@n1C-H`a{fdN?&+Dn;eCOsxlOf!WMaXW#3mhxFZ81vY#s(Wqt2`joV;3aO9 z{Z@f+Mxn~?NB&`$Z<^4WHw|~NA&fXO7`9yU?LJx91n-2PGLla+wv}Za6qMR_Z|G%@ z!R4N?sRj5$VaBDq)-C>a7x?swHzhYpMKM+Pw0}tWt^5ztB@hG)G4(5c?+XQ;bo=^N zb{5&)J?HwfOqGl*1r^oi-Gdj&?lu*%$2pPrcQN4%4~ZMSmZjI@<8fLx(s?NsE6HBY z{8L84dvbT>cl_>=B$DZcLOR$}b9sZwW$uC`adGM*4raqMb%nVF5-RW;#cqe=HabV@ zZhj}fz4hFDs>4`S9g4Xmp8Gfb(DS-i63e{H8mdmh6hCH0T3k|6686J#=&iAiYk!tp z!89r|IMm5v1H|Q8LypjK4!c=h(s&zh!JsHJvfoz}I#^s^>{LGZ8wQ3HirgqlY1x!| z@Suosj*khU7+)d8X0jJeVR1VRh8X2tz6Tl!>| ?$Q~O9UR~lK1{m3QAYFL+dxcWvQ$SlP? z7Juf(-%($R3Cq)Zb^Xoy-G|Fz`#ln+bk_G=zdo(3rn(vQ6?c>xA$`-tq_p9vjO%R9 zwVS1~MDK#;{z-sxHFwFNqO-GJ_SFN|g$FDlpCUe9)uuM@40}l`Wn=q5JF4%dLIw65 zgnHs0VH2V(qURv+PP^$+FF%YNQTxm%hpvJoHP%56skzGRWlo8G#8H%FznWV1vKe(% zbKPS)duE{8!9?aPp8xd)*_kJHXu760ky5IYD%^`ns*@kJq-d^l4>S$xMS8qzjp6f! zdQmCan~vor^UI40Xa56Ah@ksE+C93P&aiG`oy+z&7&(PlHH*s6W8ZTPZ=e8bF$cvm zxM$z*FDIv0qITAD6rwL+xaMWyq*o)(kKMY`L&&gX;$A-Z#VeJ0jzZiRBHLTM_?ZwK zpFej?QdJ-nDYnm(t^ Ko;IlV(R7 Z1v-wJo#OWQU+U#s@uHTjj3#<3+*hxvDr(E!y4B*L zV)!b-`%fR+NgCi%=bx9IA_Q7%H1JhNvsh>$i`0<#6=G2AB)Er@m@`6IvZHWbi$e=v z^HGU_>CWQ{;{&%dksxXOYXIePUA_` lHV9bZ}r144rgI>?Pg^8 zq3hRs^hN1UmJcSLtlcdTYA*J6FFl%>deW;`@%#6?!ES40`MV1|KT~2noK`&QHuH-c z@a>{C_u{N6IC;?=T7FoxfQmyqW$@3RKNVC}bq2D(f1-?TVp{2xP#ja=NZ&nC5J;^h zCne3{I|V&J_P5zD@0dO+=pTS?Cx07JlnFtTB{v1!yHJ(KOiK;4wN1KCCZ!hN|JxX* z#L&tw9y(HBK6kFA6*6;Q8SA*bb%%w(w>a)gIZH(uf6_Ta%Y?n)9INP!{X?2Z6*Js zhxuY~H=gte%Et=|al!MY1DCrV1nTc<|02mo;~QO>K%jk!;zNa(uLwYWmF(7O&>!z` z0VwzYBjz2OH*a~>l&={Y TOY&aNA14L%V+-BeM_k~SC|38?;ZGIxt73}?3%QG zBImzNw8wcgR@)|2XB7hv^lk-J zQ1SanwHc)NC<^! czc-$tt)x?F)nD$BrE(ixz=rc)rAoY90tMF{ zp`PY1bxsAUUi;6iQbtiKv}X4@7(ASQR!cgnhWj9u*#JBWd3WmZd?3y}CGztQvE3Pr z1G`@FX4>~I8iZ?%^CeryK>Y_IVPkkR0NhX?9sih4x=CHNTJj+##!Ww3b%o|={U?-q za87@mmO?xmTt}H!^cBaYZ-6V>97Ll9ZwVI*Y9FnKfdP{%r3hjY8CY56ElJ8ph$;y5 z4SB@%txE`-L5VX5O}-L&__eR>_1g7bZrW?|h~_I|n$CrA0$Du&(=6h~K24dKmFGsI zVOBRj>GHB72%dazXS=iKn olN-m;on-6oh_99{37gmt=N<=du9@fX_XhWiS9xDO5v?(Nr@dlc#2@F{nyvZM@V zMqKvI-nkLj@
q20l*B>aQwNOEH0IW^6N zNIJ(_OEY3;e%~8bZ%_g)O{$>}&LygeJ(dU~VJ0HDtfxUTgU#?IiP=mw4kK)&2woZV zPWKFdYNsKpLS#Zq?lGthsQinfBC+{oBoWQs$k;U@rdjsfiSKxx3z6S&erv3e9i7LQ z${V(ZPqV%raeZoh;?ke*;vw{xV-RzXL?5*dw2OsMu2P0b@360^DtXj~>q{f|-X1b@ zlCuY(8qX2xpDqNwE*rw&$Ge@EtQQslye{M7w@34Z*C`zdo?J3%!;H=e{qGs+1)`bX zSIiF|{8>u3<6>TDv6>wk9rAuqyDBAPhd8Oidhd(d6!hRu@$LS#?@X%IqYrDY=)pHK zdM4SeKl@GovT75a4BWxk(Z$r#J_(f`@QG68#zt=@FjxK- n$BLfL{>E yr+PY! a&wqQLA}NC3n$XaoGVU@i rnol^ORydP^a{xY`W4`~lEC2Hz6Vc!!3%erq3nVgkf_03> zD-Ib<95TAsGk7VuUHtF><22um+4tljz05`>F@{rZaf`CSAO7Ez0MlvI-~4j`siFO& z3UBmYeiB+T-^4xlRgnGZFqTa^O3e320Af~xAOnDbhX)BRUl}7KnhekHlyX$yKcfam zysWe|CWHrtOZXnKll-jPY-j;Rawr6XW l~u&A3rz(J zewJaXU<7uYKROQ$w$=DZCecZd|0}h^Cw(GP9-wEJ!zP9aeZ_XbFkgr0xKH>e04Mf= zx&dYbD&CzaHN%1l5CN>WQ}eo;FPr#W?3U<$dGjVntNr1#Wcr<*>dY;aw?o%J=oN=$ z-LKm}9r%Ys_~)C>LcTA`m2BIX=dI|CDdSRFTPW3RU30lXdXRf(MZLkpELg}#u$D(S zBQa8SACS*7NT51_XaptW0-OG<<*~BtFuL4IQkFOD9ArqOKRPBEY?BuPNdLpPmC6es z378$m9NMCRZ5SkS?Y-v?D~Oq&K%vb9ly8bLKV7R4J-Wm1--31>l58ZQADCNP3x_G= zrr=_F77?Mf23l|$bQV_DQrn-}uM{uf^DY0Kx`(yH+zuqL$0ok3HYiO;)2yC#=$boN zg)N}TiOD^=XZ7xEgH^;1$Y>%2VVMU-@ugrfdfxwU(jY_3wjSmITtKHVcD6!HHHkz0 zE;;zspP)mNr#f6lAPia!$_m%@aWV;^k%yHOlSKlgfjnHxH@+KF`;v92$a{f) XHp1-d6EWP_nPxZ==j`gEuUI@{@cAJs?6CetKKB@$ z+D#CCNXF24S;9xL)r%j@Mw&ScisFw|Zxo=%hbrDtxB4`8u#GnM+l; 5lv +iurq_o3&y?SXmsIu0MEjld()N>{N{Wtub^}*vcE)Z=`z+h=*T>CU zr?OGctgb&^r+M?k*z(MmQA#1J4|7mNs*{CA%tNg!Vp~NUQbfoQ?X&rCCsS{J*m;h> zk%gWmdHyaDtq3WE_G+a(6%*AiF~0j7Xal!jYoiym(oJU*BzF2RlhbBo5z W9iH|3h>qCz$Md0IWyu6ck{UX|tzZyrP4URb7 zmlf+!my@D(3zpkdU5fQFjsn9SkeU#BaNywzZUDiXkel*J=Nm!Eul8pLfS%?P%9xu! zq>IgArYN~v_lA!azG4Jg;&i1I{_7R|#;RO08cOis{d;?VAUKD9eKYX-K7Hp3d!9f& z8~(+GEJip>(OnL^q1vjTd96_B+I-6{e}AdPumJYl#O>OJ!P^y1B1e4A*p@BJY{&P; z!tem9X-_J~H640lLP!}bUMSo#b&Ln(oDNXgxH8nP?cR2|bH?+&J~O9eC$w%<{QJcp zr&^DnPh`LP;qT}8=C@rs%0dTKaRw%XoFNqX6}?wlmq8cxy2tz^jU-DzDGKbJ+P?oW z2t_?k%ru_zpA@tiHJj3gVLw?jJUqM(Zz}Nuiu-@wlp*>}89o|6zcvJKD$vr-O98%d zt@tA*MC8cQ!i!XG3hdHHnaOU5v1M0&suO^2bgzX|2|dWO$f3}-f55!QE({Z5jpX)1 zo=D{NwipP)5Ee4@WUdx&;GN`QAZ`r5wJM~?8P#hIP_q=WE6WA;4ZVY;1&VS0@O~{( zlHhngkR83Xy;Gyr6Qv*0-cHzsX2(HcrF8G}m;%!IG~!k62hLC_D@kHXK5T&J+JHNf zBH8^SJX2|ZGv^)pg%M-&S_i~Yi(88)zJ+zE9OG;t%6-83xS@dp%DxX}_b} f z>GV{5__0U!TfIlFxX rn78bs@N1rd}KuZ2f=n7cYFCLq{T3rQX-i*xtggRcWWy-n8; z&?tqaEo@Zu>pD#a=ls1N|D24Dy66jNG~Ff0)9&NSBdp{!5jg-)@v9euZUmwP=%z;R zBx!dh@k!k8;{43EV#!@G>$+nJH~3C`C27}32u#q9@fL^;EZVtMqt-x^C6G{7Cc$9B zgHC^a5~W`qox^BH#8((alI_LhIa=#xr#;#?Bxp_r!J&QG6Z5ts108w1csq5^ZXw zvWHve034o<`x|%Vd?0z>xVQyg*7o98v;$hgiktzj1%`4##@^<%xLaiFn?L)C;U8h7 z$EM*205&IFiVryB$?p1myCXnY5>|g%^_9n4OxP_NB$;i_-#Z*|g@HSK^mYJg@*u^! z$yF ^L-+}^;%S?zNRGRGL z`q~G<+6e`H*V;qO&}-hw#kWFx(K9Ke{DbKhMLB2-ddJMMl$>K#%(ZH!*-hjEV}J_k z1@P4Fy*$SNOvqq|?IJjGafn(`LUUaK$v067XK}%eMM(}{IgTsl=D%CfslQ1k?O!7v z$OJn60b+?GDHA|SuPaD;zgx+oQp_YZ6c6(aa@J)V&GLgzEUeP1Y89&7;c(rNCJS01 z)x8U-URHuYrC{??xX_(T{Fk3F&CH#clx$H90g8-}mlvHQ=uyr|+o9E@%w%I8Uj-c}ESv zkkqgAiR+HMB*)j}(eJka-Y@8W8*RkT(Nii$@C7*@6ueBxvGH=@l ;@qp3q6*57u#^GUK{nrcN>jN7&xkWWMty|=9^bx% zHw`>+^Vo_GS(GmqCL17w4zjYdhbwO1^zY^VjN97Y&N+N3!!i$FdcnF#zlQ|J=eeg) zHdW~KK}1EBNP?_~1plcI6jh&+UcGFU7#y{zCUYFYd0lxe)E$TQNpSEijQx`bM0!|1 zW_QB#YPKKaUy|cbVT{IL ?A{AfrY;_+a zUT*4idnKFg*JrRY;?3(JwhA=;6ghbjNzD%=NT^-kL`IfpFe87x!&20Xu4K}0{vqaj zTatt&ew9YttMbzjzgy( 0!H**bNI=J$3@Ws8zw z;%aU!66o&a&HXlAv;V9T4^46$k17}cu}T#4;SDNBq%wh7!tbwH;@$t6C8Fcg0#7n; zT%`4*R_yBP`GOj{i6J2&>8SUF uA+x6gFMuNf^Iy6ae zQU5gzjpAevUuC~Sy9JK)LObR&@Si<>v_8%e8$C)vN n){3e&T9h kfy zuqbY?{H_933^0IH>n{Jrz`kAY=s7|oIV2V90@eZUs)d5KtZ++R{p17JT73sAkkPz% zTT2WpXJLSm@-FACKyzGR*z(N9>H=?2J{-6OM0P{b2k7btn~v5%K6&tK29H@F ? zD}&wF )W#AKRQq}mphn=b)e zX|=YdTbpDWEW(;I+{%&PzJZ4_p_QhQ8uBMG&xm+fhYvR~8jpSS+m}5`SP+^T{@I`X z4{Vg@c0W8qgCBR^%@>vu&%NI(LF1KWpqdKN+)TZbW${*;;@#snM-x lAZ< zXhVCKfP;VhwXL}pmlpnM!(*tE+p8zY3nHX*t&yuQG37|UW3vZ2Sirx$VVCtH`i~@- z+Bcz_91uX2na2?6{6tdzR8{a&Mt}|Bvn&xMkcep~a#!GWfFt%3=Q5r&j>^x7_T%MC zyaX|gI~`Q!rcC_Qo*RYg**LIXLLj{(Cx89zW)wz(82> x<9pzKCp r;D!FGX^&KIdk)+3!E^)s1I^l<`;M(at##qSe5g4e2 z1V-(Kh_cpYblI;Z5B}yX=5LT kuA5);$pr}Q4J_?`fR~<#^E=c`y7!Z_0ohU_| za7yJ`Kz8sx4aooVDqf&p#fwK1U3O%-6J7p>JZZ>aa{q5(tOksT$kEM({a3~ee*3JS zvj%T#Jf{pkk5Af3Do7I8eQN&giXslLRMW&oo?FQ65K tg_w~Sm_^y6Ss$yOn+pxnh~Fv;TOirGmPb$`2068tafD7fWi zY>4g{a_0+eOqG2UVXZ2VV 4)#Pl*D@5u^ z(se4iL5V@<=)v^ X2uIC+M MIKCVMZ#@SYReTo1 t`M?Ck3u_VWk#ieRNGRVyPB-`(TGD9{ zR|48H2A1SlYwJii-$==670eitb%BgV58^@Uiu3x eGAh?F`_3yBWn>>ICgsK8?#kg&JP5*kW7fbtr&k?!EzyPg1 zcJ1`|<70D1#vz;4ADZ2K1JOztJ3I?rI4q0oANus_FUfqMY-Z_IzHeqFs$uT|N7#Ml zk|Np}?(q(^S<5v%U&JRCo)67EJ6sU47_`zrR=CYaGxnE_*PjTNpU#-$_NdfC$Pt)R zZlFc$poeiGUn4Bfs40tyH;*Q>lNcP};@YbCh0TCf2a#}L5F*~wN7iA{lu$;Pf1^o} zefvkdGp+zhfL0>P?7j+e_1HA!DflC^;r3i*f@iUR{d2@Wn2k|5z|n8pX0mTx&NcL& zfZA_wPxeda6hay+LLz?`AIt4*m$|%8O0`=4rDRGX>J -KIr|Cjg$ci`fo#;QCjvf1wf$7s4VUkE z27>MA>{%3yXN+-XUb=Vh-q7clfZC!QrawG+^9Iq3mi$Cm(1TF_HY(OMCygAh3#=YP zB_<|{mUvRh_)9f+C5O~sl FPo$Sx8IdKbZ+O%=@itLnkmtW;FTITkYHkyI@|*3g$usEj)=?v1HEBMBBy@~cL9 z%)WXP5gOw0Uqd4!wfjGuq?O- Uo zZ)h_^--L5FZ@T7b(Yu9dOWsrByE;|-94xQRixa$01VQHSAhZ!iQ2lmc^!FN_f%kt# zl(xecy1btIN|PU`bH`KabQ)zX1%;MMH>H`aX!V|2JYE_|sd<$6>!<4?PM&ejm1z^v zFZsu;4PlydRX#lCCLv)A%=o^O0*JnCZM(YHK|TpEY){p42J$G)U|QdJdy~zhL}YN| z$u kM)cupzC#9pX?6 z(jLb?DLVd0^&nn>6#Z8xE|$ilDt)nqYj(CT&Ysu{rxabv<-pFo^s(vzJ3K=nGTUrO zXyf$WYW`yPtigpE;PP4fdEb^M?oUIq!_9N=NxT;r0{ccga9@fYiai!DrMs2Y^U5=2 zH7~glyM0rS&}9@KC{}8sy4jsCE{+TKSB}I-$aAx X|dL0sCN}6|k&V@<~ s)Xgw%8pdA^5VjgWBq~zV~P6cPb#4jZ8l{ zKAJCX@12D;+Fzpcf)KBHWYLbv+mr`C_`9^8+B1WXCym0HcSF1od!xgd8Sm{v7 ~0M;l7a%Ss{Z<4^av{TS-ZwsVJSE?H;Liw``k9T_;)|zVd&nC-|X< zE(%5%S=YJcn{;v~<}q?Ihe6)(P|%{MhCwrT;>MukA-hC_zeGi!?&W|DzQOl{Uur3V zxRHU|ZO9MYRnH+b5F7Z^4v?<|UywLxIyVJWSW~yO((|4d!WWi$U+T)5y1G`@Cg}%v zi&%WQI3lxP{nvb^7x|avE_B#QrAFU+I@WEvKX-Pe_Md%cf4O;)`8D(0i<^GBg4k$( zq10)Bo|mhrEjf1*gVb25g*IvL-E$RtCBmkBMP|BJM60mQmoM>oM()$TCk+)}Iuo1} zURlXpZroZE7~|XNMLYJIcSxl>J`rv0j+{pjeX>eKbtiC>x)485TNt^fe?EbLw4>Lr zSj$frq^f`X9O>ZaaDj#Tr2B@j-fH32l{>M0H}#%L-`b35_a(b^&E)9ve~j2MnqvK3 z8lN%15KWeA*yKuxrrL2vuk73A52h~$Oy*&Y@b`~$xyn7f6e&6dEtVXZZPg(<`&~Yy z$-@@ExdmY$^PoIz0nC~3MLmq@`PQ9siQAx($49=VA4aT5SzZDXfebFDR+wF-Eo26; z*VM99Og=v52*Vagd0)YxF&sSOwT;9PR-G>X#(%W{7Zp^86vJ6t2^8KyL#F1^E3e~A z78_6`(|P6N`{Vu6r4y%L`Csu(><@_)yEvfn6p7N3Opt!fV_E%NEgL)-NwJKtALQoS zF(dAD7`2b^`xSb#FCDr~1bE!Ii! >`z6|95 zw@|NR19U@+S?H>SUB2o{5Vm&<)Evj=wn=owZnf)tdDL$6fSRHuP4cXwEdm>^cU}k) zflWa@m<~pkfmNy*Qlx^RH(JP!lHjwzJcZ}YY0d)~&i<1SQ-HSniFt0%!XuQ0zDbg? z3`_~DF3^8!UNqfX2hZ?DDyr3dW!EpYJ?ofR&ugt7xKnDQWeM>h)?fJ`=eRQB7F}wd zUf&Ux&=H`_7Q=O2)F7!a@|#wTIw(~Sj*jNH*KL5x7%V*{sllK9O2tk14(qp%&(`g_ zq@R1M9G#a*thUD&+PIi>t9~TE ${$DD9;`9)AAyXK&UsOG2@y;0Q1T~P*( z8~R`30yn#ZKY&Q>!f3Cg>&e5G6a65brco11#R2qg%6@o;2WGl0LV9GDCgNhnHB2h7 zA=c@w-2V4^LSoZ|!v23QJNo$;e6f4ZV^Dm-W5zF8PX{aFghbZybeBj7Grl5)NO^l` zd-?_d)?77eN 2ZQSo@dubsqxasCLCAjc8OS~IYtwu-6e;-PAPi!@;5QnOCA@aiu)>OHetuqy z9*S}ejd~CPHbXh)2tC^HDFBPNU{E_u^Sz(Y_5xI*a4*QcTcQE+ZlN1{g+$|DI8 {G0gl>~$P=2`vaDDK>|_VLd83&q#!TW#LXs!b|>cpBU)>ob&f z;jw5X22>PTP*HePI#NbViO?6B*{o98(Kmd3Pu(zf@`91|c-S@^N;$K`{`AiOKPy2y zL8r<+Em%$BJ&WeY0YxPfX<(JH*_CHIA?5IE-x81KBk3aa;>EgK*|QK zvccdC8JIpyxKsy@V7c8c|62ulTa7evAEU%xJe>ZZKWvjkwbtV+U@7pA2WMXffQtPI z{_2#nV%6%2D}6+4oY E+#FG-9LmYm{28B$*QQ1_Dh#)H8($-=f@%`s8F=M zqlrsjzI^FiwbJxb%#(zHfgx-eQuAWXo`I01P~{__y@kDc+0o_UXxdQojyPm@f1{IX zT0x|VxZ$%X#j7nmhB0 g@tNC$z(M3lh*|M+zM>Ji;!5A@xbtbwkk zq~NC_Nv!M~AREK(QP* K7ZSEs_- T6t(Bj1w8o z%z&qe;~o=ip?^N3+T(NpSN!pI7u)Iydf)(rqsXN98hb91xzS~N;V*T0uTTTO^nZdd z&p*6Js~N%qTBNbo5AXl*9*29*|3B8=11hSl+ZLvZR1`?gu|#qZ5D|%zvj_@E5G5l~ z1SAM3g&4>|qLM{Gf+PVYS)vFcStKVF1O${EMc+Dh_jmi=|Gn{t@sHtf(9%ksefC~^ z&AH~9t6rvF@$Q+Zsz}2&HO4ngR+V3w|fHjzOdDD~y eRXhYHxNZq ;&G0T7gyiOZ*?S-^m <8WiD7t2*{6hfNP7M0^I+9s!)T0P=9X+4)%e?=7!NP)7`J z)Md>m-**&$D7!5aFv ;#=9WbXM<2LWEk ziA^otfZDj&*c ;$2^xt2ajkxc>>BKkp-baW`__C=(H2)OcCcm+)Pt+gwJY~ zpDT!bd)eog5pU87za?{i=T`YU$LZrrogbB}wx^y?s?BrMqFv)>bFAL@x=La@bA9@) zod1m^c&7lxqUuN=flL&oW9Z4-9C;sA=X>(*KRNM{#VD(KGk=#kwM)0ZQT#0+@62jo zRdftKQN^O#PSpYr&zi3rQzv$i_Pr|e*qQ%qjAZ0d^){4(-4R~l)t_GWfoRTezHYu< z-C4|!wb>qbE~)9~C0Wn=DsZp^9`uqWF}JVQN#Knn;Y;5J!5POfjP7R`_(1{_56`{- zOqmZhpv0=}4`h OCclOf|S%C2pv5&u&{N$PB9}&0n_wiYwuy|(` zy?eDTAGAJZ7iel~3Jae-j1dnE$dCCa*NSIGl%f%!zW-Y(%3L_+G|w6I2oi->+0#Fi zLobO~wAbG*;7!h4@>QTCV$-Ab3L@FDa|N}3@mB)~X2#9Ifgm$3qH2N5>RL< )o z$NKDqznEcNSFhZbmb3gstaZf0&F)b_eCVZk!^nZ*j3wU&Hm_sWuo+gINDQx#KF!{6 zB5}8BpbfA6^p()?=KNLM^AmpJ&5 j^9&Ciq!`y!?_Mf*qy^8GJ zRjZ|XQusIJmrlosAw=+-S-8g!UtM^{S~>oln$~#W@rU?V9}cUaWg8F2SEs2U((R`z zIAMyD^(4=O-ZMRF_??FQY#QKj$5ViAYZCA4YELG~ q zc)||`f#Bmu8vroNnw-_ZeQ7zu3B-eHU#eUZI6JS7JHCETV8hW`5(!P2r7olkUf5=^ zG|E9N9-I$*T|MQsnp3T{-gp(s&$9jyq;ya)vC4axz>HB-I$^S(vmr#h*Eqs=tM{S* zrNQrZB+zsj2The+V6UkKewv7FQt8Dec0`#e(+}2TVW6qtJp @ulR?dDoAw^U3;*-jDe%}@zh22N7^hII zXu-wG;cq=yN=KqYOU MSWb=&Amw31 za18QW3JzJ%H +=ZQx0y*mzTrZ1c}G{nuD9NQr@XXakj73>DQIn6JX< z(spCX18O2~Aki`gi$l%-=nM2PYC*Te4=B*=NPR2DGg{C u{j2hHchapev#pk`djy4GP_6hN?7XKAt2X02i^54-KfwAB@o> z6(0V2HkSmP3Bx)Ht;4uBKIf^j2S9gEJo4QMK>Ci{V9%*lxdqtr4` z=>Xn&)URG9GF7?&JY%GdYCWUj=2gEUtYS{bWt`T)M|dD(_ds(RvX2%>QOYySq+)oz zmPx#v9%>2BX~8NP`8 x1+jRsw#I69Y)A4Btinf;$HW`<=`R*|H!$*2xGiA)<&Mu<|3Z1+e8! z2C0@GG9L6UWaE!u8cPn9@V?N6=M}ApHF`GULWJa!5Y%m8P~pAE$QEEB%lBZ)9oY@& z=%xZGD!2)&0$UE116FGnAxr=>#MJA9H(Xt1;C@8JJ#cI%v!37nP-Z;LDGy93z|7N` zRtB`}o8K2HXM#1fnb%(av@&48XlQHOgG9>4*S$G-*Cd8gzUkMmUmXbtz>pw5BS_CP z%_EqMMAJ2PL5XIND3_5Ya}k_Re1A-GH9y(E^8LXou3%JZEj59VQ3!^bmUW&nND0qM zt`LO4Uw{A9PV7r;IWd|1yfp9-TnwLozru&ziN#z6C_kU$q*%)kOFt2@1u=*n0!;
r&1o=9gA;=TVAohInX-8rYrqtrw0CQMxfXYi1 zYc1R6vnrQ!#ZGH_cFUs?V-O%piZLyqY5xKhMZLj0Z?CgJv%az6CV+TJ;O&C}RlAVM zobS06(zoi=6$|4+H|e7i>i8Brt);mM7Zf@UDhx4hclr4EYyghTe<+NLL<>A=zxVU( zW4$Lu7rOU9p1)*DQe-u{P)69i? $D}Ty+_2q&-n|WT-$ouXaErZR5Z^dXobb2 z%u^*UnT6we1Qgw7L42XhWqJKhI+(a)zq|gCjRzWXfKNW}7lV(M(*B;(5T=x-Dlc+K zKLT%p$9$ZE;6Yb)#Dc-lfVM&w4JFJ$jKkm*0MEzY4)xDV_fAQrkR5D%I0M7DX=bx~ zkMUx3{iNNzdUI4U7z_a^XiwV%lIRz61}fv*l^dz2cBXF~A42A!hVgBFxd45vAEBDw z{$n57j0@3HE&%`bg%f^}pth0CwLL0P_W;o!jUD|H9y}L(-59kR4D~T;4J|II-Bo(D z>}Pl-72*XioUfL&@@z0TBVS34k}rkJrwtN#>10;^zU@A3p2K{6ZzS)%xXv9t5Ccwj zV8~<=q_uqP!2w7<&92EBSW92TzwrCVp~>r~tov|II{^aC-eFn+!;GSK!^GUTwN72^ zEBuK6*sCJ{=1vIv_j$E{Onh)$G`=na%?yJmx1PZ|2~^wpv1;uf-{C`cEx-J4FNgzP zP~Xs{RO5D>)EQ|GiWX#kjIfC0x&&y&qq`*)%U3RFg{e!>^!WXehJP?AlS%ad`mJIC z9%tQpZ+UhEqLG_ORPV43Um~9)5nDMz8X?7?=8%08+7bAw_pv@plIZ#F4_T}haa?rm za4M>$VNPjs!ue{a)2}b{eFDDj@lRUzcLcDbW&rebV&??Z`5W(|?gH6yZaaZ9pGugR zL0o1}%tWqFpF( 0g=%SbwH`4N1||A@#X(hVv^7RwtS|LuU6BMNUJs?o90Qi(GM%c4d?JXePOnA<8cA zTF!tQ(a&;e6}A-OAiSJ(=*$dxXw3qVVjn&0-rB96=AYb>PdT(Kvd<+DWV1)e=PNP@ zA0|ROO!05{rdL#Lx(#r06s&S&m_wvTGsv4yKeTX2eFYJgGTLwXO%~jnZ>nbdb>r6r zg$ACUOX)T^;srh(nxj%@g9)K1A@IGw6T>!Zxcd+c+aJI1e40fL?yS~*uO720toqiT z{_B)#z58I{lz%jat{GuT-%D^D?5BNeuU-bD3fs$IOhs~dZWrhk+{u&Xn# cgXUkA U6;-?H$dL&InoCl-iMT5Z 7yzgwI2qyLJi zTUi2QuGpi>1l-Kez+ZX)k(_J18$rk=K4aZ!Xk;&-)j30(c;N_JTePXYcl`E!6X%>G z5zbCb&|X9b=R{Av(NTl8%1~&LRe5{d=bJ+P&EGfTcM2}qKIuDUyY>0c!~vD!V#&V* z3~>&$mXXEJ7)TTu5CNgjC7DVQK(&>JTm-<}5VB`mLs^QJ@|#2#IdZIgb%c7KvsGLb z_u8iJ-4f2xk+SIz$Wb|L(~g;bABX3VB2Y@83eTVyfAuCr99(oFb;~ido{mv1P+jUJ zea=8rYGKQhqo3T@wOq~>T23SBCFynfR7GIZ)8F1qMD(c;OUSR3ZGQ&Iam9DW%#F*F zUO4{%*8}#lTc0P_?FD!qYb}_p^B;QbAHC?>Yw=ZI%xQ7K&3XR3JG_2=l@imEl((va zfo<}fNv+4Ob+MlIS!P9bvgk)A6-u$EZc@YQJaAIqVbfJ^rq#K^hq1S_qpDI)+CAL2 z(?TgxRN(vd1$AQK(aNZOd=$C$v1e`6Km>lR1=lGE+(>>$KM_5ii5vK$_s&=^?rhk= zL>GkY_X4}J&~SI{#-|riXXp90qq_#!?sSk-jUP)ncA?VlHm_>Yb(`Wr_8;#{sX5x} zHiMlNx8V>M`>;hMZETK$q#Co-v^{yQPBJP!{F8I`0{TLrz-$dEMN* zrMq2&-rVfoR9|Ovpdd{IAx6MfVWWgTgVE^uD-aESW*u8hc_Y6+>z`DW4 hZbyY$Tg3N-pMi)duwzd%OET2Ogo~}0YfGpOl9(oQI&YP8< z>~$tuSq&oG_rSX!CM53Gn>B8YQxXb~T)TO`7|W?d6@0)TIrBJL3X368-b1q $9n-Q(DQ5%d}zVzX^tqxo^{8 zir721xAtjnZF};i z2vCUoz*XlIPxKf6zy9_VW@)JZ>g2 zJyRpXIFY9G)G*liM0HCh&G4mbJqc(^2*m}ehV??=|LZW{gu}eyBL^fIuN~x-$#(}h zhVM9+L8~2GSbdtYu7!@1e!tF7N!sZA+%%jG7IjVrQxnUYYyqu-NrzR_ZhYsJD&Cw( z+ND5mArNE#vv3pJVFW{SlmEF>seS6f27^O}I5L&wMkaRSI`_SwEW^8n)VOOu;s|aB zJVaVy4ofrz6fJj7Upwe};KbE_=mAm9H}up^Qocf>gG*#sCNiz2b+1zg 1m-f=S3or7NLt zqSQmZU-F1FBuNe&muwc?&})u;FrqFJQf-#Sp>o;4t^iJ-WgXWOmwO3DJ-0To!Y>~8 zFpk%_u^ J>Yie^0(Je&A7~oGJUpwQe!F*Dycgg04WKdA@NjUeyAy z@d*pJnDpyNl)VHmCP1S4nUJ{NCaIH)qXQr4SoFX{0fATA+GFeeL&Og0L?ZWn7Y9#| zF&JiMJ|;Q*a*C=#%%UpaEsSXbeL6iKH*JC7UW@%FPd) }^pCt>&I91a` z>kQ9sG)Um*-3aT%_*+5vrkhGc^Mz~#!X(YF?r5CDX@c%4B9 tHSr!4&iEOh*$2t1;bL{O|Jri`-7Je2QW)^>Q zHFCY%E$B846M8heBC5_m1I(s;Tw5#WT;knp#|=KNPruJXEQB=g-i0}=1{%#&ZXXI_ zuG2YuV_)Re($+3{p!jvPQkj~f2~SL3ET*EBz75u_bXmcDwJ TUK6(4d=0_R>WOK3-ot5AJ ^?)$@T zlZ`LFO^vhN!5i_Bu q0es@HeR!i55m!PWoVnYc00@y-rNO|A9ZhuSC?zscQa$y|+pna+xRT$93ZN zEw<-27YRjmA3R$W9)*rb`+oUg&XQme4n83KE!Vt@zBH5A)P5Kv9V2GWltJN=Q!n z!(N9rKK6C6jep9VnYM|M Q*N ktPeF9;CqfOBE zvik!*%#SJ3STQvH4~v%x-r8Sb3#Q3w8G3?j6_{U}ldGm;L<_%{GRe~zO$YD1{QfS% zwq3P~f=Mc;NQi7hcCM6F#e%LC<0K{ilrl0h(t@rNPg-4cFHcAnm4LJGW+!7!15dQV zNLw^Raml_}cGfRfp6uiW4#TFxl?CZ56G5;0@|7uDj%D#;9mo2H!`o?ZA0@RNSx)hg zy56fwzI-Fkb)R}2MjD$>#ep5< NHcq_Jo1XZix?Uc=%w5krXTK`#!Oai@n#()K4z znLWgn>X?`@bTH@hQq79{UW}z^w~)Te>8(>Uw_(bq(Y<$nYt8SZ1Tjg<0g3xXI~yBn z7rGpr$u_RS%s7?)DQ+N@UV)dPCUP)nvz2J|ol5jQwbt|TVMh5Gr8u#%(WY7jro%#_ z#E_6!E|3bf`m(Z9#1sAbr9wm^gdq-XEx^;+^l`CDNLZeuy{ 6 z_4M6{ !lmgG88Q-Wke$a8(@>Et2-?_Rn5}- zSahZ3gNn (Pv^#TO*r>o&nq6K-<^}f zbX#gw{>Y)Tv}E4rC|Qoafi6I=$-p_%{umG4P!gR#zj(umNNvOUMCe~T^p#1tF^2DX z+m+5g6~V+QO-|}Pdlva-|A#%Hil6Xl0#A7q_4y0_g-@tdIZ9J=mf%VsUe)h)AV2-E zXW|uDnXfXbq^gI81qVI+@aXz*m{GUZ(jb@0?KDbCJpN$mg%D;!DsJFn0uCcumHbkg z%_CHc%frRo_We7Z)2J^`3rQlQ@Vj5|jUJmDWXa>qq`8S2Nq1jaYFg_FVKyJXi4|fe zwY4~E_c`=Aqe^&g!FzSpqJ>&EN{Ru0H18Kj(Mxh4?z13oFF-RitXH((_#{n~XNYbg zEDM9ZrvGVYS`p0(1u+YmfY)8gJ-AX~C#>4?2$e^0f&fNzvMIy){>bDn!5WLpFT9S^ zV^RnYPKC-;-{QJ`u*j>TYR+=F=ah5VXSp?bL5H%lf_W>)?>VWOYh9@2OfJ)Qq&$0w zg*5k$m?RlJMh+$C)&x!hgUp0RWQ_@;XvXl139&7K=Dv&i^6;7DDtV6?`?kGBzt%#( zP{5B=hi