TMI-101, 102 & 103: Now better handles broken data (throws IIOException) and better detects bogus Adobe markers.

This commit is contained in:
Harald Kuhr 2015-03-02 10:24:21 +01:00
parent d8f5293f94
commit 1f99040927
5 changed files with 267 additions and 27 deletions

View File

@ -319,6 +319,19 @@ public class JPEGImageReader extends ImageReaderBase {
ICC_Profile profile = getEmbeddedICCProfile(false); ICC_Profile profile = getEmbeddedICCProfile(false);
AdobeDCTSegment adobeDCT = getAdobeDCT(); AdobeDCTSegment adobeDCT = getAdobeDCT();
SOFSegment sof = getSOF(); SOFSegment sof = getSOF();
if (adobeDCT != null && (adobeDCT.getTransform() == AdobeDCTSegment.YCC && sof.componentsInFrame() != 3 ||
adobeDCT.getTransform() == AdobeDCTSegment.YCCK && sof.componentsInFrame() != 4)) {
processWarningOccurred(String.format(
"Invalid Adobe App14 marker. Indicates %s data, but SOF%d has %d color components. " +
"Ignoring Adobe App14 marker.",
adobeDCT.getTransform() == AdobeDCTSegment.YCCK ? "YCCK/CMYK" : "YCC/RGB",
sof.marker & 0xf, sof.componentsInFrame()
));
adobeDCT = null;
}
JPEGColorSpace sourceCSType = getSourceCSType(getJFIF(), adobeDCT, sof); JPEGColorSpace sourceCSType = getSourceCSType(getJFIF(), adobeDCT, sof);
// We need to apply ICC profile unless the profile is sRGB/default gray (whatever that is) // We need to apply ICC profile unless the profile is sRGB/default gray (whatever that is)
@ -335,7 +348,7 @@ public class JPEGImageReader extends ImageReaderBase {
} }
// TODO: Possible to optimize slightly, to avoid readAsRaster for non-CMyK and other good types? // TODO: Possible to optimize slightly, to avoid readAsRaster for non-CMyK and other good types?
return readImageAsRasterAndReplaceColorProfile(imageIndex, param, sof, sourceCSType, adobeDCT, ensureDisplayProfile(profile)); return readImageAsRasterAndReplaceColorProfile(imageIndex, param, sof, sourceCSType, ensureDisplayProfile(profile));
} }
if (DEBUG) { if (DEBUG) {
@ -345,7 +358,7 @@ public class JPEGImageReader extends ImageReaderBase {
return delegate.read(imageIndex, param); return delegate.read(imageIndex, param);
} }
private BufferedImage readImageAsRasterAndReplaceColorProfile(int imageIndex, ImageReadParam param, SOFSegment startOfFrame, JPEGColorSpace csType, AdobeDCTSegment adobeDCT, ICC_Profile profile) throws IOException { private BufferedImage readImageAsRasterAndReplaceColorProfile(int imageIndex, ImageReadParam param, SOFSegment startOfFrame, JPEGColorSpace csType, ICC_Profile profile) throws IOException {
int origWidth = getWidth(imageIndex); int origWidth = getWidth(imageIndex);
int origHeight = getHeight(imageIndex); int origHeight = getHeight(imageIndex);
@ -366,27 +379,16 @@ public class JPEGImageReader extends ImageReaderBase {
else if (intendedCS != null) { else if (intendedCS != null) {
// Handle inconsistencies // Handle inconsistencies
if (startOfFrame.componentsInFrame() != intendedCS.getNumComponents()) { if (startOfFrame.componentsInFrame() != intendedCS.getNumComponents()) {
if (startOfFrame.componentsInFrame() < 4 && (csType == JPEGColorSpace.CMYK || csType == JPEGColorSpace.YCCK)) { // If ICC profile number of components and startOfFrame does not match, ignore ICC profile
processWarningOccurred(String.format( processWarningOccurred(String.format(
"Invalid Adobe App14 marker. Indicates YCCK/CMYK data, but SOF%d has %d color components. " + "Embedded ICC color profile is incompatible with image data. " +
"Ignoring Adobe App14 marker, assuming YCbCr/RGB data.", "Profile indicates %d components, but SOF%d has %d color components. " +
startOfFrame.marker & 0xf, startOfFrame.componentsInFrame() "Ignoring ICC profile, assuming source color space %s.",
)); intendedCS.getNumComponents(), startOfFrame.marker & 0xf, startOfFrame.componentsInFrame(), csType
));
csType = JPEGColorSpace.YCbCr; if (csType == JPEGColorSpace.CMYK && image.getColorModel().getColorSpace().getType() != ColorSpace.TYPE_CMYK) {
} convert = new ColorConvertOp(ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), image.getColorModel().getColorSpace(), null);
else {
// If ICC profile number of components and startOfFrame does not match, ignore ICC profile
processWarningOccurred(String.format(
"Embedded ICC color profile is incompatible with image data. " +
"Profile indicates %d components, but SOF%d has %d color components. " +
"Ignoring ICC profile, assuming source color space %s.",
intendedCS.getNumComponents(), startOfFrame.marker & 0xf, startOfFrame.componentsInFrame(), csType
));
if (csType == JPEGColorSpace.CMYK && image.getColorModel().getColorSpace().getType() != ColorSpace.TYPE_CMYK) {
convert = new ColorConvertOp(ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), image.getColorModel().getColorSpace(), null);
}
} }
} }
// NOTE: Avoid using CCOp if same color space, as it's more compatible that way // NOTE: Avoid using CCOp if same color space, as it's more compatible that way
@ -510,6 +512,10 @@ public class JPEGImageReader extends ImageReaderBase {
} }
static JPEGColorSpace getSourceCSType(JFIFSegment jfif, AdobeDCTSegment adobeDCT, final SOFSegment startOfFrame) throws IIOException { static JPEGColorSpace getSourceCSType(JFIFSegment jfif, AdobeDCTSegment adobeDCT, final SOFSegment startOfFrame) throws IIOException {
if (startOfFrame == null) {
throw new IIOException("No SOF segment in stream");
}
/* /*
ADAPTED from http://download.oracle.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html: ADAPTED from http://download.oracle.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html:
@ -554,9 +560,15 @@ public class JPEGImageReader extends ImageReaderBase {
switch (adobeDCT.getTransform()) { switch (adobeDCT.getTransform()) {
case AdobeDCTSegment.YCC: case AdobeDCTSegment.YCC:
// TODO: Verify that startOfFrame has 3 components, otherwise issue warning and ignore adobeDCT // TODO: Verify that startOfFrame has 3 components, otherwise issue warning and ignore adobeDCT
if (startOfFrame.components.length != 3) {
break;
}
return JPEGColorSpace.YCbCr; return JPEGColorSpace.YCbCr;
case AdobeDCTSegment.YCCK: case AdobeDCTSegment.YCCK:
// TODO: Verify that startOfFrame has 4 components, otherwise issue warning and ignore adobeDCT // TODO: Verify that startOfFrame has 4 components, otherwise issue warning and ignore adobeDCT
if (startOfFrame.components.length != 4) {
break;
}
return JPEGColorSpace.YCCK; return JPEGColorSpace.YCCK;
case AdobeDCTSegment.Unknown: case AdobeDCTSegment.Unknown:
if (startOfFrame.components.length == 1) { if (startOfFrame.components.length == 1) {
@ -1052,7 +1064,19 @@ public class JPEGImageReader extends ImageReaderBase {
@Override @Override
public IIOMetadata getImageMetadata(int imageIndex) throws IOException { public IIOMetadata getImageMetadata(int imageIndex) throws IOException {
IIOMetadata imageMetadata = delegate.getImageMetadata(imageIndex); // TMI-101: As we catch the IndexOutOfBoundsException below, we need to make sure that we don't catch the
// IndexOutOfBoundsException that should be thrown, if (imageIndex < 0 || imageIndex > numImages).
checkBounds(imageIndex);
IIOMetadata imageMetadata;
try {
imageMetadata = delegate.getImageMetadata(imageIndex);
}
catch (IndexOutOfBoundsException knownIssue) {
// TMI-101: com.sun.imageio.plugins.jpeg.JPEGBuffer doesn't do proper sanity check of input data.
throw new IIOException("Corrupt JPEG data: Bad segment offset/length", knownIssue);
}
if (imageMetadata != null && Arrays.asList(imageMetadata.getMetadataFormatNames()).contains(JPEGImage10MetadataCleaner.JAVAX_IMAGEIO_JPEG_IMAGE_1_0)) { if (imageMetadata != null && Arrays.asList(imageMetadata.getMetadataFormatNames()).contains(JPEGImage10MetadataCleaner.JAVAX_IMAGEIO_JPEG_IMAGE_1_0)) {
if (metadataCleaner == null) { if (metadataCleaner == null) {
@ -1369,9 +1393,16 @@ public class JPEGImageReader extends ImageReaderBase {
// int sub = 4; // int sub = 4;
// param.setSourceSubsampling(sub, sub, 0, 0); // param.setSourceSubsampling(sub, sub, 0, 0);
// } // }
BufferedImage image = reader.getImageTypes(0).next().createBufferedImage(reader.getWidth(0), reader.getHeight(0));
param.setDestination(image);
// long start = System.currentTimeMillis(); // long start = System.currentTimeMillis();
BufferedImage image = reader.read(0, param); try {
image = reader.read(0, param);
}
catch (IOException e) {
e.printStackTrace();
}
// System.err.println("Read time: " + (System.currentTimeMillis() - start) + " ms"); // System.err.println("Read time: " + (System.currentTimeMillis() - start) + " ms");
// System.err.println("image: " + image); // System.err.println("image: " + image);
@ -1380,8 +1411,6 @@ public class JPEGImageReader extends ImageReaderBase {
int maxW = 1280; int maxW = 1280;
int maxH = 800; int maxH = 800;
// int maxW = 400;
// int maxH = 400;
if (image.getWidth() > maxW || image.getHeight() > maxH) { if (image.getWidth() > maxW || image.getHeight() > maxH) {
// start = System.currentTimeMillis(); // start = System.currentTimeMillis();
float aspect = reader.getAspectRatio(0); float aspect = reader.getAspectRatio(0);

View File

@ -94,6 +94,16 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase<JPEGImageRe
// More test data in specific tests below // More test data in specific tests below
} }
protected List<TestData> getBrokenTestData() {
return Arrays.asList(
new TestData(getClassLoaderResource("/jpeg/broken-bogus-segment-length.jpg"), new Dimension(467, 612)),
new TestData(getClassLoaderResource("/jpeg/broken-adobe-marker-bad-length.jpg"), new Dimension(1800, 1200)),
new TestData(getClassLoaderResource("/jpeg/broken-invalid-adobe-ycc-gray.jpg"), new Dimension(11, 440))
);
// More test data in specific tests below
}
@Override @Override
protected ImageReaderSpi createProvider() { protected ImageReaderSpi createProvider() {
return SPI; return SPI;
@ -396,7 +406,120 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase<JPEGImageRe
assertEquals(384, image.getHeight()); assertEquals(384, image.getHeight());
reader.dispose(); reader.dispose();
} }
@Test
public void testBrokenRead() throws IOException {
JPEGImageReader reader = createReader();
try {
for (TestData broken : getBrokenTestData()) {
reader.setInput(ImageIO.createImageInputStream(broken.getInput()));
try {
reader.read(0);
}
catch (IIOException expected) {
assertNotNull(expected.getMessage());
}
}
}
finally {
reader.dispose();
}
}
@Test
public void testBrokenGetDimensions() throws IOException {
JPEGImageReader reader = createReader();
try {
for (TestData broken : getBrokenTestData()) {
reader.setInput(ImageIO.createImageInputStream(broken.getInput()));
Dimension exptectedSize = broken.getDimension(0);
try {
assertEquals(exptectedSize.width, reader.getWidth(0));
assertEquals(exptectedSize.height, reader.getHeight(0));
}
catch (IIOException expected) {
assertNotNull(expected.getMessage());
}
}
}
finally {
reader.dispose();
}
}
@Test
public void testBrokenGetImageMetadata() throws IOException {
JPEGImageReader reader = createReader();
try {
for (TestData broken : getBrokenTestData()) {
reader.setInput(ImageIO.createImageInputStream(broken.getInput()));
try {
reader.getImageMetadata(0);
}
catch (IIOException expected) {
assertNotNull(expected.getMessage());
}
}
}
finally {
reader.dispose();
}
}
@Test(expected = IndexOutOfBoundsException.class)
public void testGetImageMetadataOutOfBounds() throws IOException {
JPEGImageReader reader = createReader();
try {
// Any sample should do here
reader.setInput(ImageIO.createImageInputStream(getClassLoaderResource("/jpeg/gray-sample.jpg")));
reader.getImageMetadata(-1);
}
finally {
reader.dispose();
}
}
@Test(expected = IIOException.class)
public void testBrokenBogusSegmentLengthReadWithDestination() throws IOException {
JPEGImageReader reader = createReader();
try {
reader.setInput(ImageIO.createImageInputStream(getClassLoaderResource("/jpeg/broken-bogus-segment-length.jpg")));
assertEquals(467, reader.getWidth(0));
assertEquals(612, reader.getHeight(0));
ImageTypeSpecifier type = reader.getImageTypes(0).next();
BufferedImage image = type.createBufferedImage(reader.getWidth(0), reader.getHeight(0));
ImageReadParam param = reader.getDefaultReadParam();
param.setDestination(image);
try {
reader.read(0, param);
}
catch (IOException e) {
// Even if we get an exception here, the image should contain 10-15% of the image
assertEquals(0xffffffff, image.getRGB(0, 0)); // white area
assertEquals(0xff0000ff, image.getRGB(67, 22)); // blue area
assertEquals(0xffff00ff, image.getRGB(83, 22)); // purple area
throw e;
}
}
finally {
reader.dispose();
}
}
@Test @Test
public void testHasThumbnailNoIFD1() throws IOException { public void testHasThumbnailNoIFD1() throws IOException {

View File

@ -0,0 +1,88 @@
ÿØÿî Adobe d€ ÿÛ „   

     #"""#'''''''''' 
   !! !!''''''''''ÿÀ &å" ÿÄ¢   
   
 s !1AQa"q<>2¡±B#ÁRÑá3bð$rñ%C4S¢²csÂ5D'“£³6TdtÃÒâ
„”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêú m !1AQa"q<>2¡±ðÁÑá#BRbrñ3$4CS%¢c²ÂsÒ5âDƒT“
&6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ   ? âµZoŒ,ÄËeuß"ãp0DS=p¸¡ÅS5¸-Ôâ©!# ã;ïƒ âM1B¡϶,ˆ Ëà m˜£aŠU8ñÅ ”)Àà–Û Jb©ô"§lNiÂôÀ<C3B4>ÉEÛ‰ Å^­å™SYò}͈þòŠƒÀŠg!ÔU­o$‰¶*Äd¯È~jƒF½hn~(.ìpëÎþL†êÓ:AC çUþ9Ÿ8Œ°ÛøªQþ·ñE¤îØûžwo~ð<><41>ìßT½¼” $V=93n>ìâs™#s؃Lèzåàò¿´Mûë±õû§Ëlƒè ‘Œ±Ï`ú2—0C×õ*ÇÌ6Æh(d"¥?¦F´+Y|»ª½<C2AA>À?R»¬n@NÙò·<C3B2>ÞEi?êP\éÞc· <20>·lùË$%ŒŸT%¿"ñÌ MX—ˆ¤nISÚ‡"ÐÎCvïÌmê¹"·º”øÓ쟻8*ËÂCpi”fá”s;ëÖÊ=bôï&êe%U'¸Î<C2B8>¯Bš†ƒê0©N‡ØŒâX¸ãv½ÅsºZ®hr»±Z<C2B1>ò̬‡ly<ÃXþ(¾pó^…˨ñÂdm·9=óq6¤bIf  nIÃÝòòÎ(ÄÚ¼¥M*`ˆoöGÔs[C-Ž¢Üyk#ŒpDqÈs€÷òes1øâ£A¿oØ9Ý-4ï-ißZl²ûrÄì>æ^?†:ç̶P7 {AÄuøB}¦bú¹Õ8y{RQ,¸±÷ '•59ER&o§õ‡Ùmä'Ùÿ î¶ÞdÒZÝdyDlFñž£èâ<7F>´õ~ž-OÕâó_ÏH€N¯¿ ?KÂfò^³«ÛÈ£Ý
žRÔä4X˜Ÿ`Nz=G¸<Vu¯ù_üJ˜1ÚMã=z¸ÆË8êsKû½L%îˆ?¥óœžMÕcZ´.>jGðÂË<C382>ú
òŒšg§¤·¯C\<5C>k66«W¹<57><C2B9>mƒqïJ6HˬÕa<C395>¥<19>ÎÇÚùá­']¸»(E ûJFuÙôÝ2¿©'±R?Ž—H±}š!óÊF<ÇÉ¢>ÐÆêX<C3AA>À¼ÑWlŽ™1¹òÕ«bøNË Ý[=@ä¾8Æ`òsôý­¥Í·îÈX<C388>ôÁ¶ö<C2B6>ÍNh­<68>H ´8e» ›°`ØP:p#n˜
{1H½&UÂëèZ•¥ tßlMÐ`‰Ã°$ņء¥ QAÀ…\ƒ\R¸-Z„ÑOA­çlUÒŽùGâÀ«*±ÅÕûb­ŸlgÃE,ô!à(µ!ã ûb<C3BB>ʇ³;⨲¥p;€7Æúã<C3BA>04žÇDß4Ž;`5”“¾g”ôÅ*r=[;ã]¾,µ5Å\+\YV¸W bª¼E3ezƒŽlU,å<>SˆãÔÓD¥1E  ÏÃ/™ÅQÜÆØ¼rñß ¯µ1Tî;¥¦ç©A†¸-f¢ÓMRAËlŒ„o„KpF Šèž¸ªlÒé€ï. ]± .ˆÀ²Ì[SH¯PhAÎãùsxú§/ìårì«ÈkÓo㜠žG;/äÙ?W¿ýôÙ“¦&²€ |AkŸ0~3×aú¾©4gj9ýy'üÌV6¾]¸ ˜šÁH>ÍGjá<07>[޵qþ±É”¯ ó~<7E>qä½EÀ¼ˆ´‰\ïϼU?ÍJŽL¸ùqn>H¢{˜ÒA *Ù׿.õ§3F$zšŽùÆ5++Í*ö[ØÌSÂÅYXS¦I<«­Ki2p­AtÓ$KCîµÉQ|€æ_KùÔ]iwüEVxD€ÿ ”½^y¦ÿ D»µ¹wàyNzËä—–<n£g<C2A3>Çiãá\ ªiI/w< è»új*Hù.ù1,y=]Õ»V\Ñㄇ/ƒÉ<§åÍbædY”ŠC²<43>³·hñM¦@¿X<C2BF>3ºŽŸyÈyÆÞÞ<C39E>ÚY•<59>>RBP âù½ÞàްPr ³W¾bKU#*`êGiá‰2c9ÈDˆ<44>r}tÚÔ91<39>n<EFBFBD>@[}üjáœkŠª<C5A0>œ÷YŽÖ玧bõW4š>áüi†Ú_šmÖÙ!»ä®€/?´ ;åFfRõ=/¹¯¾4ã”B ïŽRe´ lº¶±¼¹·I=Èûò?wæÛdÚ/îßÄ ól ýôEkЩ ý0Xï6s×i¤x%!!æ.?sWžMŠgf¶¹1¡èŒ G· pµü…v(o¾K-/à¾<C3A0>Ô<EFBFBD>ªÄˆÁøô8(Ói¤8 6—óNÌóI¿ÒÀkTí*î1k?8\D1´rqÛâS_ÀŒ3ó&¢ 4 ïÉÈ5éÛ#údZm¥ÁâÜJðú2<<3C>W¿“­óŽ,<>!ÅÒúÝt ßÎD<C38E>õˆ+âÈ<C388>þ¸8ëú=Ü|e`ê’)þ„c ²Ò®¡Y"·‰‘†Ä «"^eÒZÎp¶ŽÈ®9 ðÞ…k†ä9¹sÉ«Å)d†XKk"ùòåHýLiRV®¢¿Èv¯ÈÓ ™xô5?HÐo.¢Y.[PÝÏË n4-ã.$&ƒ¾ èï$Û<>=>iñfŽ1óôúG¼Çq¤(qIB«à no$<24>û=ʸHCF8š<>4KA?Tx¯\zZBã÷, ³ÐýØ;õmÎÇðÅÄHAVâã}<7D>LNQæìtÚíVÐîˆÐÃ8>+<2B>ÿ ºœÐþÌž?<eÅ»õê<rè̤Òkñj"(Ժı۠ß
ní)Ó%O Uy9'1<>4H)‡W;a\°š×B©#›œ¾íŠGN*­7Z`Øãf ¦-kÃ(mÖ•CÅnÊS=8ÐŒuªU:Ò§¶Îôc‡w´ ŒŽÜÈâ« ×7©^¸ƒŒ©ÅQ!…s;`R™FJâªW7*b<órÅUæ ˆ˜6øª"¦™±>B™±T>^YCo,ªeUP66»ã+—\Uà”zázµ1t<31>ŒUàxؾ.\P½ªN6A¶)É:ânàŒU
½I Î÷ä =<»åK<C3A5>Zàqt*•ðês¬¾ŒÉ ߉™èMâ/7yêñšMlœJ®Ûv;f^˜ yÊ"^QþÖ¹óã^÷…yQ†­<ácÓ
»žÎâ;g1Í Œ»F
ÖìeÓµ ­äÆ•Å4]çU¹H£B܈ ¹')Ï) ²‘؃ý‹,<2C>Ç<EFBFBD>ŠG`ŒÐÚþhhFï€ÌºrZŸX<C5B8>z·» :òŸ<C3B2>-tØóU@Î!‡úÿ Ó¼«å m•€k¶v½U|~xs¬Ú]]X¼6;JÔiU®ùV\¼|&¨<>½:Ìù'f¨F;ú»¬w¢á½·XÓ<58>Ee@´ ð˜5eG×9ãyg\U? ßˆqŠYkzp¶·àð_…ƒˆ÷ʸ·­÷ïpáÚ3<C39A>Q†X<E280A0> %ÒþÆ]}¢i·Õi¡^gö×fûÆDï|¡t²ÒÎ@ñÕÏ>{oÕ¬¡Œ<󪎴¨Àñë¶7s{w.ç 
æê1hòÆc“µ$oïHÉÓˆ [Áë/‡ï¯ðÈF±eªéLÌ…¹'÷ˆGãòÎÇ4ñÚÂÓLx¢Šr-5áóæÎeXÆæwܪøíãჄЏåþLŽ.?w½ç#WÖœ%¼,î>ÐQ†ƒË^aaq$/Åv
¿ÈgO°Òìô¸6Y©»€µ<C2B5>BÝ)ene$nà<6E>‡ý‰Ã_̘1™÷ÓñUôHt•¾²>´¨ÑBGÆoî;Qó ¿Ââ4é˾FõÍgZ<67>©=»ÔšŽdÓ
m Þët¾ÔX¥¸?
<EFBFBD>|½°Ý ä*Ë… Y¸81ÈÆò°fOÃ<4F>GéÚuÖ¬åÐñŽ¿ÏZ}8>ïË3Á©o/®Ë»''ýŽçÚîÃKT´Z! ðƾM¨ë·%<25>·>š ýð v <0C>!̧&-&pä&yÞ“¸?wÍ-²Õ®t²h~
üHÝ+ƒ.|ánÀb‡ýç,q4àˆÀ¾Ó§ÃËýa¸ÂÑ,kO °Æ2«иøõ Àå˜<C3A5>p÷òLÎ/s2Á´f4ýØ }ç RâHLR¿*õ'­0"ÎÞOZ*‡;ÿ -Ö5<35>2P«eaU&¸ñN2ŽÜ<C5BD>~†U=FA<46>O9FüR«ïOd ]± †Eâè­;T½Ô<C2BD>ƒbæ´Á"ßPIƒz¼»îVU-äNÑò g±HÂs”z^ÿ bÛ<62>5€ñ>¦]Mwhô ŠdÇ_YÅrŸÜwÆ3è[´Ú®”qÄ÷óJtíQ§$Zö®E$±(*yFz£tþÌ*µŽÖÕèFþ' VDqU;a£`#>Aœxb`9Úù I£õ`ÿ d½Á þH FøuÌÄüÐÐ÷ð#ß½‚;´<C692>Êÿ L²/bîû?µ„„qçØòïc⸢¸*â3;SaEË]ÝÚ
H”
Ó<12>¶/#Óá8<1C>ZŒU7´<37>5…׎G-æEpÖ+¥ ¾)VšvWÛ¦ZÎ
ï…×
B”®*¾òNDÓ ec\$¢½pÌ ¨ÅP®)ˆ1Å]±¾*Ñ9Yy±V³W6lUºæÊx«uÚ™³fÅW<>òÀÌN*°ãN8åb«lqTÅ\1êq˜àqTLrÓ7 ˜“Š£R{æi 02¿l¶lU¶rs·þI$ÊþvbPG@½·9ÃUYØ"Š“¶z3òëO/”}Gøf¼4½ þÜ¿ ŽIó-9§ÕžV~ê¾V¼ó7™n Ö4cɺ($ä£J²Ñ|¥(…¹KxÇ ]£¢<C2A3>Gykap0¥%â4<6F>‰¦ËolèZhQÙÅ*Ê 9<>šg$Ìù_+î:l‡&k1Ê8¡.D\cå]þiU¿˜MýÊÛY[³ŽîO£ÄõÉ«*¨­ ~#×#¯y¥ù~<02>(õ[~ ö˜ûœa¨ÜKgõËÅVUðNÄ× º|¤ ¹òW˜ëLgŽWä¯'ÏFO…½÷Â/0Yý~Ù-íT<ÈâŒiP:Ÿ
ºÕÞ³}õKI= p y«?”8·±[8 6`! <20>ïSVñoÄΘÎ0ÀÜLïrGH<47>ÒÙùN£ê—nñ§Â¿S†¢çBÑ<42>…hãaÕSw?>­<>o7§šly¼rI,Gv™9qùPl3¾¥©K0I¤rkÒ§ ˜é°í/1˜Ý™ž)ü¿k×õ¯0þ<30>S°+ ûE¾ÑÁ¾W»±HM¿Ù¹$¯íxSä0ƒBòÕÍÕL÷A ý9øQ‰ÞYÞi3ÖBj»£<C2BB>#껫¹×œ™ñæ©<><1D>­¨÷wy=IT¹û#r}°<>üÏ¥‡1ó$ŽÁzü°ºËÌÉqŠíCFGqÔý
îÓB»`ËÊ:õ¥ãøäÀ'é¢äæ×Ø£ç m+÷×ú5äEf)2ªË_ÀŒjê6±F#µâ¨‚Šª:FšÆÚŠÞ踔ãjF[ V.@Šp²vŽQ.Xî¹ÇŸÎËw×{£)55댔´®i"U£òͽoc\ #…ÜÐ ÉÊç30G×ÈwN¹Jɳv}å+¿ÔÛM” #/}0e•Ñ»ˆˆ=0ÖÓd¤Qš†ïþg R4‰B
ª( è2rß«“ÃŽ8Dzÿ ¾<>>+û`;ëÎ6SÈÔ`ºœ¬ïa¢”$%Dr!N<63>b‰B¢ì Å3WÌ=\ŠîM<C3AE>ÉB^ÞIfUøòˆì}Ž>;ˆ/b"6ë۸ř#™
° <0C>ÔaLº{Ù?¯lIJî;Œ˜£·"ߌc”xO¢cè}ê÷6Kéе[±Âد$µ“Ó~ž8p¤Ïbj{á6©°Ø®ã'âäéÏ8²ogäS%¸õ0 Ž£"ÐjÍÀÛá…®ª$`ìš<1C>³Ã²3R¶.È6=pžO„Päš)ÒUàÛ©Œ Õàú¼„<C2BC>ðž™d%{;^ËÖqÄiòýq±èN—áéŽ,k\Bg©ß&íœ$>8¨¹jR¸ÉLa£dž½ñ=;àF<C3A0>œacŠ¢šrO\M¤Ä9f®*¹š¸ÊæÊÅ]—•›vlÙ±VÆ8 hÅR˜«\sb”ÍŠ¹‡†Q]±Í”tÅT÷Ë \q׸ªÑséŠôßf®*¢Â™YlwÊÅW˜ŒªÓ1jâ­c…XÐu8ÚáÆ<C3A1>¦µíÊ>pBÚóeŽ,rÉ3´E§~TÐYVêðIMiÜû ì6³J­of´ê Aöa„tQî|rIk|!Féwíe+ÎÀÈJñ Ÿ‘ÈÃ'¢¹Ù÷ŸhÏ. Ï!1‰ mÒ(íjé-õdx<64>Z%PÞÄi÷`[Ÿ2^ÊJ,<2C>ØSíáýNîòkÞÎK4žvâØ½Y;±þYÈH <20>C[ÓFL“yÌYDóó,‡JÒe½o/÷UåFÝžŸÃ$:²É.™<p hµãì:Ó!ߤîÂúk+*vPiƒm5Éb<C389>¢œ”©ß}þu /i|ú¶`Ôá†9b1”|H)ó6BÆò[<1B>4[°Ú†¿Ã&vZå½Ü`òâß´§·Ó<C2B7>*Ôš˜àÄt9Î…^MZ}^\#¼O8— O¨[ ey
Œ<EFBFBD>ëºf‡ysíšzs† PšoÓÍ8<C38D>KÈÛbV×à3<C3A0>DñÂg¶Ãâ[²ësd‰<64>ˆX翚¤jkc¬„ñ&ª1MGZ¶½€Å$F£ì½FÇÇ#W7ÐÛ¡f5§a-G]žæB±ô ïŒxˆØVÌ´˜µYááD<C3A1>Œv:^©©Ï¦_Ÿª¸
7ã[ù¶2 ž"§¹Sýqm3G³Ú9î“ÔAÈ«€=69´M)Å ²<>#øà2<C3A0>" Ž­™3h ²âœåIœvºø­Ìzs<7A>ïŠû08ºëV,*.Sé48O,iïR…ãö£ñ]?”¤ÜÁp€`GêÂ&:NCâÕ]3ýìñÿ X_Ü\y<>NˆÞú‡ÁF]Hë2{`V>¦½~œ<>M êqÌ#x˜ò!U†êkî2c£i?¢à!˜4<CB9C>OP<4F>·È2¡½ñ¨Á¢ÓbÅ“ÄÉ/§{ý“+khí£
¿Iñ8ö;æ©Æ’ ©Êå0@ {Ý9²I&Éo6j~eŠÕÌ6ª%<25>lXýò¦Ò®î/-„÷øiµF—"zLÐÄ3N<1—+æ~i57³»0Î*•ëìza²:J<>ÐòVèp&¥§¥ü$ÆUûü¶F´íNçOº6³Ê)ì}²T$6æá§Ž£²c¨÷ŽðÉdv²~G{v;ÿ pZºH¡<48>†SÜb$WnŽ:d<ê×zMÓĨ 8ž”ÄGÞƒI=H<>†Ù!Ðÿ ýlà*¨  }kÈAë„Ñy­\|iCíŽmx¿ÙS„B@¦:V9Ù‰‰R<52>Ež‰º±ë‡Vj ¹ø°7éE'“­ ´×<U³Ÿ&¶xÄGð<47>ém~®E iÓß"^@@ûiú°KÞ¤¢ âuˆQÆÍßà $n\<RÉ G!±8õ°éÁ<C3A9>Š<EFBFBD>©€%}òI­Ø¿Y‡ìž£Ã"òÔeàØz½.¢9ñ Ž|ˆî*LÄœms•\.C‰ÊÍvlÙ±WfÍ—LU¬ÙtÍLUÔÍLx.˜ªÊc†Ç1 b®å\تö>˜&¹‰ËN¸ª²-zã¸S2WR*q27Á-@1oЍ2q¼i)<29>+Ѝ•‹'Àâ«­ iåX׹Γ¢éñØÚ«RŒG\ŠyvÈ4ž»<C5BE>…r\÷aUcNBNÁç{g<²LiñŸL~¯z=%M6¡=ñej<p‰o¹Üè ©Á×Wž•³HÉO„e`<18>C¥žžBQ<42>}H†êìÁOrO†êcŽ c¶äñíÉï¥FiØŠž˜lþµë\|jªíÚ¹!Œ ÎîÓfCN\ד„Xˆä|“½2 FíÅíôŒÕ:ôv6÷X·´øGÄÝ_k Ëû½‡`:d}ÅÕÅ´ŠÜIëCJxá³rù#<1E>ê'âgÇ<08>¡¨w2³¨1µW? Éñ|<7C>é…Òj³'IË ]ݱøì6¦2¹8DCv h“¹ºG]j—R­É+ôÄöiˆ/Ä}ÎøLÿ f½Ž6f +ò¸¤!@ß.«çÔgªÌhsXG÷($û òsì0âöŒT;ä«g.x£ RÇ ŠÙžC}­(: Sô•¸L<7F>¹ [©QIµ–[ Kõ'å•ðéâDäeB"ÙÛ^(éÓ·ñFÛß…ÃS<C383>k<EFBFBD>ŠÖæéÀŒ…^ìÆŸÛƒ€uq 3Â;ÓÓ{l:È.«­Qƒ)ðß
¿@ÀÈD·3ûKAýpžêÏVÒ˜É3Ä?m7Ûü¡Û" þE†=6 §ƒj—N1@û‹+T‰KÈh£©ÈΫ®´õµ´û'béÂ[Ífötôå|4òͬDµíÍ(¿ÝòññÉ;¹Ðìøéq<C3A9>F¢¦côÄr'¢#Kòà%n¯¾bù«nf1-QP(×Ôm<C394>¸ θ¬l¬6£〓v\Ù³d˜ÉœÝ@&9uæ9cå{v¯†!¢Fo¯Zæˆ.ÿ N_i}Õ[‡¢ýÊý“<C3BD>ì=Z4q¿Ú9 El7sãåå< rLQ÷uÝ3<C39D>Ò¡vðÕ4Ùï¦åU†Í‡"ò&;¾ü]5(TR¾;b,r 'O.<p¹y¤Ze¨{–⣶­–Ÿ ñ uÿ ´ ]sª"׉©ÇÔy³™ÕêesQØ#®íìÝHT ûdfêµ—’¯cµõÄÆ‰_£*\H‡šš{Œ<>ÙÎÓcžS<>ƒÌj÷Ì(á¤S™c¿lŒ«ðja<6A><61>ÝÓêt¢¸¢<Óˆä­û«þ"ú½“ZLŸ ܘÛfPHï€<Áh&´,¢­ßGlc*.6UájDyFf¤:_BÁÎV8Š×£k6l¼U¬Ù³b®Ç<C2AE><C387>ª)8«@e¦,<10><>+Ьt¦<
ªb­Í\Q†$Ûb­W6VlUT!®*™{ Ä⫆Ù|é‰3Ó¦$X×E ˜ ð:¾øº8lUqL±®,€bª…ŽØªŠÁ·LÆÚ½°XZ z Hø <C3B8>“{ŵœj6-¹Åä•AÛsD‰òÿ Jìñ<C3AC>XtÊ^`ÇŽvyÊE¨ŸŒÏ/ŽÃ凷JJÀÈ ùdb[ž"ƒ½Óžø˜Ût´RÌ9˜ù†]¨iºV ,rSgOâ2%=©±™ã²Ã¾'õ©Wì±ûð3ÎÎõcZáŒHÚíËÒi3b)œ?šz{ py
œÚŒŽž<C5BD>˜VkÛ-d©ÉžŸ¨<>6ä«,µ8Ô5ë‰È 2Ðü8¶<08>‡Þ3L@qkrø·C±® ¾²ú­ 5¨}8´Œ„Æ3Î[„µ<E2809E>Å` .øÞ'§·†-çÕ/0ƒ*Ö^Ì:œÇ.+\kf'à#½8Šâ†¬i†vú€P(vÈɲÖY|.Mf7¦kÿ 3@pÂ)Õº÷È<²B¿Ç&°àõürërödÉ<fKy¢i×õb<C3B5>$?¶›}ã"z<>½Õ„æÐÀ}+B0Ê {‡Ú4ÅŸY¶½dF!ª1ê1ažœjôò©ÄåÆ#ü>b×èº8Š1uz;
¤mÐ{œ1¸£-#j7ìÐÐaί!%A¦¾¥-~Ö<$AÒê3ä9fw<‡@;‘·-­|Qˆäãâ?ˆÂ)于B²rVî Aû NEjÖƒÛÝ­ž¤²qYPu?µ’¹‡+s§ŸL1áë(<28>ïÜÅcsП£ÞP¯÷5ÂÛTE@G€Àë©\áø9|s˜â†(<28>æ¢æâ1ñòQ5Ä¡+@Näá£Ü ¢*ûÔnÀ¾Œ¤øck<63>%Â~<19>µ2M­”@F ·w=q/QÑ<51>Þ¸Y$ìýN&à§:[õH“#½” ç÷¦ž8èØ1Ó çÈåŽ.ŽÒÇ ÚöL­u„€NØv$[»w^¼”þApHv8wb<77> ¡« ]>®8Ǫ Æ@°{¨Ìs:Ðâ8yæ ?Bè¸ nÓ-ýÓåqC êÜÔË9†×S52éŽT'iWD•Æ,d`ˆÁb­²Pb.¤`$ ð4<C3B0>\UI‰Æ×1leqUäâg/(â­S6_lت ŒÕãÓ|Ucœes¡Š®Œâ@cÔŠ£âaMðTtꬄm¸ª:W
6;â)1ä)ã<>ZRNhž²(÷ÅŒ¹s'<27>ü·ùÙ'ŽKvŒŸˆn1Ó
Eú˜PìCœ©ÐbÆ'åÂoíR”îqX¤†¸ÉkŒl´œ /!¸&ª»õ>øœŒÒ
Sn‰£Ëf¢¹ZQñítöp:YÜHi>¸¿è}C<>/Aéò8vY ú¤.K…sÄâ¾Ã IП<C390>J<4A>Šà×rL`45Åg`<35>duË0?P*2-Âý[Þ§ËlL}ºxâ†7F"àƒ\-®<E28098>U<1A>1ˆÜ~˜>ÎT”pq¾k4;¡ú0_BÕã<C395>3<EFBFBD> ¯52ðñ¨ÜøcGò“ÆÃÅCšÞ£l e(Dðñú¡d”¹ð€Æ OL{ÄTãƒ²Ž S ` À˜ŠW4POцVËm4`|(7ûÎ õß1Fíá‰kÉ6":_#Õ‰ÀîÄš ³Ë)6`Ol[cßH¡°(fÚ»Ó+ë2 <0A>ÄÚf}»e¤%<25>cÐcïjáy@µŽÌ£|loÃs×ñüUìqlW ä­Õ` Á³Çl± ë!<1B><EFBFBD>8òéšg„p×0:¶^§lz°k“¹ÌW””ðÅá;wÓ R¸k\5i<>jpŽLñADG°­pÎÂჅ®*ø*Ö« #quŒ£.©®¯iõ»"Ôýä_«!L¥XƒÛ: £!º0*~<>}F/NêE‰Æ˜Oï0Kø}CãÍFV;, ±Ü9pZGJJÃR»SR¥
†Ú»œ^87ÅŠ”ªâalà î$$Ó åª ²—®>A¾'ÓVâ)‰6X'¸ªžlwÊ™±TYmˆ={à°¸UðÅP§,f#, Uz{â¼q4÷Å+Š­"ƒÈå“ÛНã£4~c®)j¾¥Â'‰3 FDôM¼0·Štùa4Õ pæíx¬h:"<22>÷ï„÷ FT&“Ÿ¾Ô|H­qJí<4A>É;!²Ñ'~˜ehÖVà™aYnUý]0l2@å&D#IÕ¾ $š <04>z*Š “ØÝÁ*qæµð9‰ŠGQÔæ[‰ÕXŒ‰<C592>¸ŽÍ¬Dð×&o©i6wñ1
¢JlÃ9Ég+)‡6ú½ÂÑY‰a$)¨Ã¸ i×¾1¸ó6ÇJsèeÃ\xÏØÃb¸x<C2B8>ˆÃ{]B"(øÿ J݉Q¶JiÐäènc‡Q ï¨eKyl *Dza2Ï*ôlwÖ¤ÁÃæ×!<21>ô̦„’ùR\ûáY¸“Çiºœ<-Ÿ—\R6SDœr­qf½zQFÂÄ8ß ”Tb@c“ q¸™Ž0Í7†+ÇÛð¨Ü`ø"â9@!<21>Ó¯UǦ  üJ3IÀöÀ¯8vf!ŽCxÒ8ÞÀÃuÄ«š¯LbðÅíÔ<C3AD>Ž4áB ˜ßÍ:õ‡e Øf[Vs°Ãm/áæûS!ÇÍŸ @2ÜŽIQ¨8 <—~Øa=¬}@û°)„ÐñSØÇ<&E0è1HÁmÛŽÖVr@í$ 1+šxà6"Ê‹ ¶25 r=pd­P¯€Ì-€ÀãŒ±á«æ<C3A6>roÍH£G·L7³dr^3öôŽôŽ ×¬­Zbºl-#o¾´)ÔŠŸ ‰.». Â\d¡mÔ§úND5b ì§ß%óJ°Fó¶ÁAærq/­3¹îrPçngeDœ¹2tªø¨ß2æ¦Zœ±Ý"" 8co"+…hqtzwÅS£2\ -߆i«ßi+Š¢nF¸G[lM·ÅTÛs+¾*¤S|UËÕÅV*ãCS<17>×¾*³ÑÍŽõ“Ô§lØ«\Ç|BMñçlM<6C>qU;ã‚å•®<)ªÂ(6Æò¦(Ã8«e«ŽøÁ<C3B8>«DàÝ9ßF=ð\1ÐÅ/“ç€ò-:“X2èQrŠK3xíôaÉ_Pá½Ô•棨'õá Ü‹¬:m æz)9Û)§êk‰rNÙ'j#b<>D±Üã•‹ ñÁwÅG§dÑ@Æcø=0@‡Ò^N1`gù“Ñ ¸ÁV÷@~sjÿ káùe4P~Ë<>§J3<>ø„ÝnẌ€WÇ
îô¥jºûc•û-Š,ò¨ã\yrqáŽX‰P=
\tð:µ1§OÚªØ.^D׫ •—:3ÈEñ –Ò'¾$Apʼn#ºTt tdO42špÚÑ@+…EpM¤Þ²3Dʹ§!¡NªOÑ<4F>åo)âOô®) ,«šK4&½2·V%H”O}©=ˆ¥PÔ`Y-™{aA,e<7F>Ë --šái$`Ó¸Û ÒËVq 2
ŠÄ‡<C384> ÉCèHí°¦
‡C†%äÔø Ãö¶¶z%Ö0ü ‘¿Ë ý´_Žåmi²£IO·ã™µkf 8áN<C3A1>†D“Ð:¼“É’\P<>#Ÿà4špqR:â£ÁÔ¨úr¤ÔÆLRb)Œ·Ô}ABßê0zšÿ ÂH$<•?FDŠ cAb¹ð©<>O]ñ¦U¦Øî<C398>,ŸÄIAsÈ»u8Ã,·,I軜•·Frê”ê;qŒ|Î'kl_¨ÁM žbì>C `·Xã.Ä(Î6åK8ÇŒ@sý%Öi¬M,„*ާÝyŠÉ  âp¿\ÕEúµ¹øGR;äq«Œ/räi;4eˆr<>-¼Ó-KY÷à_…;…C®^6»äÀ®Nã(bˆ†1¯V8ÁÄ•üqdp0³s€¸ÐÕÛ.F®1'mª3Ç•c°ãD´l~Œ"2<<3C>?¶ÉbdöËnJh„v8Þ¸ªeTãé\°•8ªÔ'©¦Øá1Aتz×6 ôwÍŠ¬lH<6C>ðC®8««Lz°ÄŽ]qUÏCÓeÅ+RTPbo×yx¾Zá5p^uõ[¤“µwÀy<16>L ðdŒy˜šdº§îÑ™~Ñ&¸D&5ßï××<C397>fMÑ÷? %hAjd­ÑJ#n[å®(Ü#ë”fŽ”Âæ¨0#qŽŽä.Î1üã~ùFÙdèF>öDƪb°ÜZñ­>, ywËá]ð;Àcï<63>Ž2ç|hsa ļK2÷¨RF5®XI|pÒ+u¨Æ½”‰½:aâgùœwÃa‰!ý¬YmîHä»ÓÃ+ƒ/lUUW¢s5qáø© †O†A_ž/¶—¯ÂqKIöÅp#¡ªjü”cøÙ3k0~Ã1 mŒcz`1w2lqâw˜npÑLqå‰Þ@<40>rÆ@N$Ñ‘¸ÅÈÊ=0·ºÚõ¢4n˜ukwÀ
Ôøde·c-Ë!­vÀbÓŸM €žG½šÚۤǘdóYÙÆ˜/ü£s_£"k¨Ê¶â(Iý¦Å¬ZÏ©;Õ»(Üåf=î<>6ŠfåF<E28099>Ú nSè幓â/é§eP?_\»‰ÄH^F4ɩ—ÔÝÜ$a>ä}£ý0A¸Y…OÒ0SIÓÈeè9¡_SmâqV¤ñ<E280B9>¨ˆöÉ7ž ¸#ÃI|Ñ´UxØ<78>í‰Áræ@Ý~#Í
ŒA4÷â¤
0ÅÈŽLfN¯•¦QKÍAÅ9cŒµ·e÷íგ§Æh0]P‰5¸òAzÒÈxB´ÌqOE†Äòsö<73>ðÅÞöÆÚ¡œ)ûÏá…Óë°¯Ãl•?ÌßÓýa ¹?»Ä@ïý©¤ƒ©ÂmRDCk ßöŽùr;ÍfôB<C3B4><42>™X<E284A2>ë‚ÿ åWkš<6B>û~å’:õ>‡Nr. (õÙÊÐé µY½B«—58ø­n.$1'Àgs²ü¢Ñì_V¼Š6iIþf~]ùeLÁ…Ô©ÐlFeGM²3òˆý%ßñžê÷¼b!ë×ßXKvãò8]så<73>bÒ¦[v {ë·¿<C2B7>[\l-ã[UÛ€QLgù«åÍNjV1Û øež3· ÿ 6~¯8<E28099>Øð'·<>ƒFÁ¼)†:~…©ß8H`c_c<5F>èÙþ[j4¿æ" »G±®#qç¿&h
SJ´G~˵Di  ðÌùHø•ã=ãïa±¨F%<25>LkâÛ “ÚþNiöÔkûØ<C398>A`Ur/¯~mkƒ¶scì…Ø ˆÜùÃ\¹'Ô¹mýÎK<C38E>6¸GÊ1â?4Q=çÞií)å iƒý*ñd#¯_×<5F>Tü³…ˆ“Jü=ó6¥{9¬“1úr½Y‰T{äN¦ÎÈ~QOîg×ÿ *ôÝ^¾òôË*Ëý¡ôg Ö|»¨h³´W10
iZaç—¼ï«ès¡IXƧ¥s­[ë¾SóÅ<C3B3>MX%½Õ 2€7>ã$D2ú¿¤®>ñÕcååÑó²ŠâÊžÛ¯(´ËÕ2iqËQUU;Ÿ£9¦¹å=OC¸h牸ƒÖ™<C396>-9¢`Dë˜å/“.>ñL}T×|¨Ôå¬ Mßú³ñß(d†økíôO.9±J Áßaƒ^!ˆ´“”+<}±œiŠ´¸êeR™E銴Ƙå±®0œUØ¥´fYs‰`Ý,®Ç_O&%à Ht²¹¾¯ vËû ó8 7"NÔ…n[çü02še]V<18>ˆHsç↸˜[Äàù78Ñ9 \èO†!é¸èr¹Ì˜<Cã—õ`pÚ|xu¤,lò}¬1¶¶%kLuµ¢Ö§ bUQÄ ‰.§T>˜$ÓúñŸ„<C5B8>†T7ò)ã/Ä=ðâkupv»^<1B>ˆ¤aË àœE÷¢xÇ"sNøÄ<C3B8>"n(ãã€íç15ì÷ÁÓ@³ÇÉ:फ़1 pÎÌO#ܽÚÁ…A ®"ÇÒÜbOm*·|^rv8yunŒ!ˆq †^D žݳC 0Õí(Ë¿Ð0¬¹õ*¸A¶üy¼@xyª<>­1# SÇWÜæ™TR¸ÚR$"RïF〦+¦Æ¸ƒ[µza¶c06 ªR.xÐbY£5©Ã8,ùšuÕŠ¤dœl1üÆ!.v—Ç2ô&¸¸Ôgm™É^žø$GQ„€Ù,X¹˜<C2B9>k± `zÔø†¦ ÿ Ù<>ýÑÿ Ó#rÆW¦Ó-žfÈ?2ÉŸÌpþÄ#é?Ù<>ßÌS¶È~Cúá 2èqá ŽƒMà¿y¿½3“Y¼“¬­òŸ«[ë†ý¶ûðF˜% ¾ˆø/Híñá<>­¡Œz`À 0ëOqNuäÊ~þ89<38>9[‰«™„==<3D>ò¯@XÜßRîe
lV5ßþï<>¼áæ¯3i"H#ž©SBv?†
ü¹ÕÏ(Ñ<>€#þdéAÑäQ±ç›,8£'†@6,:¶à‡×>fºð­SÍšÝì­ë\5{îp[Ë™«êJÍ^µ8+T·1\0÷Âíó<ò‰ÊF<>åÉʈ`6½wÇV<C387>1™‰Ê+Û¤R+=«ˆ™<1D>Y‰>øÓ›$g"(ÈŸyZ
NÙ«S‰ŒQäU^1ƒ¢—lFÞ0i\51N˜ª­À¦hýxw‰ŠŸl30Õq&ˆ×¦#q$$U¢´Ÿ3ë:eÂH“±
zTçXÒüç¡ùžÕlüÁÄMAËéñÎ7éoÓ[++m·<6D>Ëã¨?å=UÊCií¼º=/Xü²Še7ºqÞ‰Ô|ÆC.¼½¨ZËèI&<26>0ÓEó­¦`<60>¸ŽÕÉ”_˜PI;û(æ¸O²å{ûå§ÃɾÒóú%ñFãËí;ÿ <6A>Ö¾®Ü§C'?ò³/~² ŸW¡ÇîÍ<C3AE>/æÃ»êün·/?“ÄŸ58«î1-ÁÌ&kxåÁ8·Šã({bª2EL ÊkƒŸ¦ø€'¡ŠãÁ^<5E>q)˜ª†±“Ó¹<C393>½ñ ´4`|(<28>â‰<C3A2>x!”߯)=AÑ”0û©…¬ä5'Õ²<C395>úìTœ*O,¬:­)ØÀÿ ß-—(å¾SHTÒ˜¤ Å¤<C385>~ÑÆÛ%"U!a^SÓ0yF<0F>#8æHFØÛÌDmÀ„Šñ“í ¥ݺâ-fŽ*¸ìöqÙ‰lœî%4KØå‡¦+,BUùá,°=wûK•@' 4gÁáÔñéEݳDÕ펲¼ôƒýœ:žÙfJaÍŒ1 m„Ø·áÏ<C3A1>4<<¦Št`I—šPûŒ ñ4B n0•ìÖ¬·NàáìRAvœ<76>Š÷Î6XäÀwõC¡c·X™¨Õ§†)žÍB˜zÖÈ7¦"êæÃlÒcÃŒ ÍºD¸OzÌÌBtÃÉ#wøiŒ]/Ô7 3ÁžÏCe ŠY£=ðj^íI´IÙÄ_Eœ~ÎAr§K“™òn-F×ìïZå¨6_ U´¹×ªœu¾™+°ü¬ È$ ó6•¼<07>Á TdŠ)ÞÝÂóÚÇê,"²
Šô'ás°í<C2B0>D1@Ê•øhy±É­€àÝѮ佬CŠÓMeÄôÉzX,‘ò]ü0ÍMœ}9'h*»òb†
˜ðöK@•à7´uýœ—°Ç«„ºÒ^±Ó(í‹-¬Œv\<0E>) ° Ä•ɨÆò
­Øéâ:Jz׳± ¦+u•¹jÐÓámÔgÕO,ü,{Ùª ·•µsm«¥¬;³¸<51>«ÍV©É•Ÿ<>pÏÊÝ9µo1%ʪµjs»ÙëV···št¤Ô_j
Ú™HÇëxÆÏ¹Ý`‡1Œž@æ3iÒÃrç‰ ‘£ùèß7yÜ»ÉUNàŽùÉu¯)ÏbYЏc÷˜ÈºÜ6F\>™0—ZbtÁ—”b­Ô`p»æâ<E2809A>F_
¦˜¼KS<4B> ¾,€
SV<>á4Ã;g$€0ps ᥔi\U3 w  màR¦.ð/lU)ÞØå· ôÃ^Ûe1NÛb¨xª†<C2AA>°VÇ®!ð“×Ò«|SŸÑ}ayõÍŠ±YF"ԦؼãT¸¡r¹˜Ú1;eÔ`„QƸª
àr(pÂF¡ ©Zâ«FØÉ 8âã&¸¥ëC<C3AB>³ HŒU g¶?h|IóœëÅ·W§ÜµµÂ¸é]òCwÈdû2
<EFBFBD>Ÿ|®BªÏPOðäÜ{ú c5éÝŠÐeªqq¥N³0$$wK¢yU·­0CÂòK
½qëq
í<EFBFBD>¦YI<P†èXžhMqƒc•XTíí<C3AD>kr78]sx¡¿w°ÇŽY<C5BD>ÑÂ{ú'æŒ@Ø<mÊ#€mµ0¿háœZ¤ @[ïÆ‹\ñê1 $|Â*B€ýqv<71>dŠà'/C £ÛÝ<C39B> <20>q?†pŸÔ6=ÝP×Z6ê(p!<21>ìk/*S¥0íœIº>šÓëÞ5F6Ï¢uÃ<75>úz„¶°®xN´ÿ (azRŽHA n˜ê×<C3AA>5c¨ùaÛ£l±iòoŠ|¸òdËw†ää 0ž)u&øj~d QôË©þ)d'4œ J²å ynÝΰÇà·͉[jWÇ©ñ/q ÒBˆr8%4±]— ¥“K˜ߙ扆KyÔTnp\6¨»<C2A8>O|žSاc5'bÙ{‹®Ë!uŽF<C5BD>ØœiS+95(Û÷kpSäµ'éä1msȺ¦Ÿ7˜t
è=[«
mOÚxHéþ¯Ýá„HðÃ%¤lB8 ê:¦ çFü¶œK –ïñ+£)SÜÓ3±FÓïÎïw]šqæÃàÑcÖÍîOn·0¯ ]ÔŽP,ƒ®HuÈ!ÑõéôÉþœúÒuøu¯Ëáòk:T×v7|ï#^qÀPp:¯.F‡Ã*ɦÉU\zH~§ i5',¯ð“d½w<ñ!§m±æ¦à0ú¬°†D*èJ²°¡ue}S(·çÜÙª@¥²×áZ`¤·UÜá<C39C>†ž÷·QÙÀUe<55>Ðs4Ç+Í6RùVSáY$vŽ¥kìX ˜ÇE~A1†|±â„%(Ý_š[us¤%ÞŠ<41><C3A3>KPúc¿ÁZSÕ¥¾s½°À1š2Ÿq„7ÕÞv~€a&As?ì^÷ùM§®—¢^kŠpŒñ'ÄŠd^Óͯo¬ÝMÏíJHÉ·—Íùqt©±P+OÎ1t¼—s^G6È1q,q\Uî·Òžb»U†r$ µ|æ­ÛR±úÕ²Ž,+AØçÑuG¶•±Û;o•|Ùm-°¶º`êÀ ÁÂ(fÃñ ¿á“Ä<ÁåÛˆ&rÆ™ "j8¦z¿Vò¾<C3B2>«ÀÓZQª*W¾q<C2BE>5y>KYªl+ÛcÇœ ŽáæÂ”ß,œZâÒH« KŽÙ<C5BD>8˜
Ý`&¸¼[°…)@hÃ"”úÕ 8Yk!Øa”U'|U6¶bS9 rÀò@0KJ¥1V¹òÀ“c˜Ç϶*‡QS\Ò_
qÛ7Õ<37>kŠ¥¾<C2A5>å ý1Ë<31>¶lU„\U†Ø ¹W5'ku­H
…ÅhsqQˆÈÁwª¼üp¾cLQ¥'®"渪ƒ18à*1¥wÛŠ2Ø¥K<C2A5>sN X(w¿¤¼qT §‡:eò2}VãìþËx4í<>•;`"Ú³áŽhpËn ÷L`(A4*z0èqÓGûª©ß íµKqÄükàpÆ Z ÈŠXÂrÚ«¶@ĺŒºmF3f<B=Gw¹.‘š´Äž£¾ ¾„Á%:×u>ÇÇ®!ÍÂD¢$*”Ù©ˆ°-‚Ä$ŒaŽ<61>²VßÄrAúdwÇ/1½pAQŒã\m³Š×%Ì©Ðà˜õY”Püð' µ<>}ñÙ®XñKêˆ)”z¢·ÛZ÷Šäq—è8J-IÞ˜õµ»dH\yG‡í ¾Þ.ô>ø·ÕCvÈÅÍ Ó‘¦}Qà¦äý9GU—K<E28094>N±ÈèZ*îqÆ3Ða*k<><6B>ÄH8&=R'?o‰iµy*7(©ñÅ#‰Óâð¹uþ|FïYXÐ*nͰÈðŸËæáŸ2áýi€ðNÞø´#â¯a€,ÞIâzá¬P•?v2Ûde¨à‚¸<³1í˽{мUåAË!Þc½[xL*hÍ×
ü·«5<EFBFBD>Ò5{æ~‹”á-¸<>ßdb<64>Ç,Çn*Ü<1E>ùŧ•Ôô­JÜ|FËQìy<C3AC>øI,îåeHœìEÁZq²ó<1D>Íx=kJúF'åÛeÑõ_A‡ƒ3 ±ª.ÜýB]_Ì%¶´ºàF<04>ØlOÏ9ußcލñ ë_™vH²H7qžyÔ £jæ>|äÔ<>Òáäìí6lÇ&HïåµûÓ{6^ZêÞ†§<13>Κoæ_—€IÄ”íVÛõçš0ûËþiÔt •í¤* Ô€p`Ê ‘᯦]ÞGÉÌŽc<>8€;/Ì^KÕt)Ýe…¸w¦F÷SB(GlôGüï£ùÚÜišÚ'®ËÅg T˜>B¹Ðnžâånß°èFO& w€©s¡¼d;âÈK¿—ã8ü©Ö-uM&/NB™Škû]³ùÏB—BÕæ<C395><C3A6>…äi…W׿Ðu(îP<C3AE>…Fwmó+Fõáâº'Ä»U¨?^NãžR®/èÌu÷4AÛ§/0ð¸)B0ëMÖç¶`Uˆ¦Ö´‰t{ù,åꄌ
¶Ù<EFBFBD>™0LÇ»˜èÈ<C3A8>!okò<6B><C3B2>]]GûÎOµk=sLk¸<6B>s§ÄëÏ8é7ŠÀô9Ý|<7C>­Å5¸·<C2B8>¾H9•"'Äs FÇ„¼_ÍzKZÜ¿ÃMÎDŠÒµÏCy×Ê^°yÑy+nÎ'¬i2YÊÀ­)Ï<E28098>ÅˆË È…‰á<% e±ð§Ä1Á7ßD€°¦`6&±<>ŽF´ ÷ÀVÊB<C38A>°zì1J.ß®ô<>ÀVÌ+†±(plUGêõÇöÛaŠ©*T.eøzãÊ :b¨?¼¯lØ;êý©¾lU„´`tÄ¥*3<ê®äW®([+•8IsMÈW3â•å±¼«<C2BC>ãA\ # Àè‡B<>Jâ«<11>R\P¡-L
È0\´±U*¾%êq[Àâ²l0#uÅH±]ìšxÅͼw ½Eæ0¿<30>®ãaŠh·èµœü °'¶ ¹¶ô÷ìz0èFVv4éîX2K »ý'¼ UkòÆÈ b¬xì1Éaɰ2£ÄM B{ezg Þ˜Œƒ¸Ãm£P
Ò8匃SÖmñâ^˜Ú¡h‰"€z÷Á¾ŒJ*vÂôW<C3B4>ìâ73ËГLÇ,“ôÊ<C3B4>D;ĬB§ÌÜ›rpk\]*ãrF¥v±<76>f<EFBFBD><18>±JoŽCC<43>²3<5Í
<EFBFBD>N):%c'LJ“?¶]Ë<>UžâãQ3çÐòe:\`ÇϵK|©¦Újº²ÛÝ·ÀªXF?i©ðƒí^¹‡Rú¥‰”öØaÿ åeôÚŸ™RHPÛ žŸÉ<>™rˆ'äâi42˪ñ2Dpàõî ÖK=rxeäh2-­O¿7¥Wó P|G¦s°s+9áËÄ6$ñ§¦ÇoMò—œIâÜ·3²Þúz…½—˜,Eb¹E”ñìHø‡ßžRI]zì_“þxe”ySS¬¶÷ýT<C3BD>ø·òý9`Î$A¤9ÿ HuG mÑê·ö<C2B7>yÀ(5VŒ½öÎ+æß'IlîÊoÛ;LÙIõÍ=ýH ¯Ãür¯,íuËvVP³Óâ_·ÄE}P=;<3B>A>D>M»³ÙʰÀÔΩç_,¥‹¹ œÆX¸9_˜úœ8}2e ^ǘVÓon,.Rh©tÏCŸÌŸ—O$ÇÔžöŽæ„gœ•sºþRjjm΃9þù
¨?ÍÛ%§™á#ù„H{¿‰f7÷ì𻨌W2'ò±ÎÓù#žá‰!#b+ìsÿ 8èRišä°q g }ù×¼™jž[òUÎ¥ ã$©Á ë¸ß'f2ËÝ*Œ|ø·A•ˆùn~$óÌæo0\µhþ¼"‰‰Ûj×F÷Pšv5,Çõâ1.cj%ye] |™Gé <09>´œiN¹+е™l¥B<18>\‰[\5€PƒÁ˜ã4w‰æQ±æ÷ý^µÕí¥Ñ¢€žÇ#sòj•y£Z©Ü0ÈN<C388>«Ëg:jo<6A>ŸL¸MoFh\ò<>-V¿Žeá‘’Ó.a‡Õé<ÃæMKO6“²J
ÕÎ<EFBFBD>çM
H®$eZ
œ€IÄÔ¦SªÅDdˆÚI„º‰´´Á±¨ë„ÖìÕ â ÌFÄBÈPaÅr &UaµžÀU7@:cŒ*wÆDãl]™iPqJ è•FÙr°ÜàF˜.õÅ <09> ¾º8Ò¹±W—É1•À­%qIØÖ¸ª§©]±­¾4cÂ×r×Á<Ec¦ø>Ñ aŠ«%µm¢q¦ UR¢¸Ò«]±T9ޏÓQˆÎÀ)ÅRù¶8ƒ0*ihNø¥®*ºG <0A>Øe—Æ“\Uhb¦ ÐŒ“hׯÂsñ£cØäf˜µ´Ïo2L†Œ¦¸b"d8¹^þæ<C3BE>Fž9¡Âv#xž ³MsËz†‡$-yô®œ3.èþ>Ø=Å3®yRêÓÎÞU“K¼ç<> Æ[~ƒ|æwÖ gw-ªÈ9FiÄŸãŽlÆIæçäy:½F3Š®ÌO#çÜP|+üN7Ñì>œ¶ïà>ñŠ­»oðôùeÌ"X}±U‡ò<>úm‰Ür€ E+ÓaâñÊÐ(÷Àr N .[Bp·@˜ïiL<69>ÐãíRaƒŸUÇÖÖÊ5õ…ú{ m¾Z; ùT+PŒL ðmükE=Ñ…TàšbËâˆ?Q(M†<04>É”Uwa\Jà~ðb± 'ï0œòÒZ½<5A>ðÉ<C3B0>ä•?MžD
—Ó@©¨ Î¡ùA凰<E280A1>µ»š¢ ªûž¹—¤²K§ ɳCË$Û-çÿ š€ÿ ˆ§¯ó’Ï>ëk:ÜÓÀ(G¸9é?½>@<0F>9ðú\£&¿•ñWÍóñË1?ê#7ðÈX;äûòé>¯kæ \ÿ Ç­ˆ§ü©iüm<C3BC>Â.cÜS.LóÊzÖ[gz­x°;ŠgD¹<44>Rxuoîe¡ t¸Ï1h·ímt¬zç¢<™©®«¦9­Æ©ó—.Xò;I€»á?Ïúxž•EC
<EFBFBD>§8§mé\0§|õ·mõ<6D>5•‡Ä•Sž}óE<C3B3>¡tûw99G<39>NGX¢ê~ö(«“ïÊïXy…i<E280A6>Jrkùq©E¦ë°É(¨,:æ&›ûÏ|HûÏ—Ä2?ÍÇCæ%
!…ióÉ]ïúGå¬gùkú†þkhÌÚŒ:¤d´W]Omð÷S#Oü¹†3±§îš>œgÎ5𵀺RVùœZ6U8œ¦²1ñ'½s[/¨ûËpä™G*-)ƒâŸáÂhÁ;àøZ´"”ʈ<>5zgMò_™>¬é6Ý7Îa¨ÁwÆÖ`Êԡ̽>@AÅ>G“\ÁúƒÝõý
rÓë6ª añØç(Ö<—< Ç<> öÉ&ƒç¦· >Ãn¹>·¸´ó<>Š%ãPG|ºçˆT‡;Ñ´·Î2Øi
B1h‰-óV%µÃñS×!SÈКŽQ¨ÃGŽÒ{™B]4_­Ä† d`OÈÖ¸ikrùŠÍ’, ¸Ù.¨(×óßL$œ²õÂÉ®Î_®B€®°ÅWýd×®l QÇß6*Å^½1;à†¥1"qU=<3D>ǧ\N»âˆ1TR @ÁvôäSLZ'£W'¾  Hp<Rc™˜
â—K!M뀦¹¨¦:wf_!5Å
RµMqØ£œH⫎•\UR¹cs‰W\Uï?“±z:UõÇòÂ߈¦rÿ 1NÏ­\¸$|gõçSü¡nZ ŸñK~¬äÞcVM^çj|g¯Ï3³ÿ w?ó>TÔ $¿4¼¸8¬z…Èý³<C3BD>£PÝpTq(ß0()ÁˆóÇ%5;±ÕއQõ§qñ)ü0P|±<>â11 SÑiå8O|v!<X÷‰ÃhqU¶#¨üF%Ô‘š9SßLFÎFG€÷¸3ìÌ·éÊó§³Ü[Z!28$tQMOQk¹¹ ”t”ó<Ÿi‰À‡<08>9Z]pž99÷ôæi¦ÙÜêz$·0¡qf9ÉAR££©Â‚$d¯ò¯_ŠÊù´ë Úä¥CÑÇæk:\ºn©u`õ¬2iAø_äËCgÆ"!(ò”Ùm91 R4v'ÝÕ-SCŠI)œŽÝ 1¤Šß„“9­2˜ÄÊB1Ü“MÉëâ‘è§<>¼¦5Åîë÷vì=Iì’NNSÌšdú—ø_F¢ÅµÃ+òŠ‚~üˆü·ªþíçßmºíÎEä]hXyÎÎúéɉ¤1ÈOò¿Ã(Dc€„·õÇ»‹¿ô; >/9ŸT<C5B8>™c7<63>ºÝÎí —θ<C38E>¦rWçMMÌwÖ®*­!&
ÈùM¶ÌL§!ç÷¹@ìahs¢~_¯«åß5Ããfîu9ÏÜS:'“Ð|‡æ}LìeT¶Cþ±©ýYfë÷Ò>L 8=)<29>`6³F9wǹ£$ÞU½hîPW¡vŽBFX¥È<C2A5>˜äêOÝG¡§½Å¸ÝÅ]GŽp<C5BD>:i3¬îÅO|ì~\¾—ôwª¦¼@${c5½3NÖôù®Ñ8ÉøÖ›|ÆY xfP<66>¸“V8¨Žo¦<E28093>£j6Ø"Âv·<76>&SB¤6ó=ˆ·ºp¢€„P‡f¢¬z ÅÉ<03>(à÷†@Üwø¾†Ò&¶ó¯•Ùˆk»1Ér\&üÉÔc²òõއtŒrç+ò×I¿Ñ¬$Ö®Ó<>Hn‡Û |áåË?8é<38>©é.  ¬‘ºÿ ffò•rÇtrHr,9<>Æà>f ”ªÄâ÷vRZ\½¼Ÿi dŽƒ|ÖJ&21—1Í´Ü*ÀÀlzà„~-€IâqU—mð*cõ<63>3Þ»àŸõ¼*A}$r ö®uO#ù<>ƒm³Œ 6ë¾ µÔ§µ`ÊÄS2ðf‰S±äK Dß_O]Xižb€É+
•ñùg5ó'e<E28098><65>Ý…\óĶÅCÈ~üêÚOšôý^%†ïÔS—|¾²bÞ>¸1¸ËžÅóõî<C3B5>qhä2L <OCž€×¼<C397>k}\Z êwÛøç!×ôS¦ÌÀ¯C•Ï< ËÒÂA1Ú\<5C>0ËQ¾*G.˜7.9`<60>¶m]éµvÄ包ÁˆÂ•ÀóA¦*€á¾lSÖ´ÍŠ±/ž$Ø[GwÅ sb©¸Åâ§s„9±Vaj<12>qg ã<>œØ¡”MƇŽÉ×
sb”sâGfÅUÎlC6*®1ë×l {gäüúäw$[Û¬©ûãÉñï^L;`/Ìè4ª»é÷Jd&¯WØøW<C3B8>3<EFBFBD><66>úMÿ ©‹âÿ }_e4õÿ ;§èO<C3A8>
õÛ§LfÍ{k(p)¹ÄO.Ý2;O¾*ôÄ宿Å(é+\KfÅSm%¯þ#d¥æ 8¨4¯ßž‰Ñ®}}1aó<61>Ìc<1E>˼ 8^ÇŠ3IÇèÏ0f̼_Üÿ <20>×ýçF^Ã˯/‹Ô<å ¼8Ðn>³Nꬻ³ òúÛËòjˆúýèŠ`AºHj|*<14>Ç9~l˜þüý7ÁÓëý\N.š½Uàóÿ 'Š} ù©s®¶<C2AE>YÙpÑÂÒUã*G<>WðÎ!m_Y=?ï94ëZáNl†~X¹õåïÿ uÞçGøžÃù†UôíM@õŸ«º«pݳ¨Ý}òðS®G3eZ<65>ï> ‡$ânë“í+ÿ %>±^Ÿ\<>ÜÙÊsaÓó—õHYt÷£°ß@¯ÖÖž#õäk6'÷ÑYý%õ¿”iú!ù¾ûàÝ·¾YE âjç§¶xï6_“ü§¼1<C2BC>ðûžµçX´ñu!jvâßÓy"×Ë2jQ<6A>^ùa¶Rÿ À©̳eŸÅW_çÿ ›Ñ‡¿áñ}+çû<C3A7>oô*Å¡YÑ QgG<67>r¡¹~WùBú¯­:ÝÄÆÐ£z®ÄP-74®yû6?ä¥Î¨ÿ Wã׉?Ä?/'£yÝ,“]¸úœEäz?Xs/aüÙ‡©þôû‡ÝÕœ>”íÓqŒ¬žO(f1 `åá…™±Tæ2þ¡-N˜EO¡7!‡¤ É~<7E>.¾®¾„Þ<12>Ös™fÍŽø<C3B8>ã\-9>¥õß“¦×YG×­Ùb§ÅVR)ô6F¿0#ÒùÈVaË}¨ßÓ<Ó› ?¿<¹/ŠŸ£õ³Ù9+ä¾=?^Zëör0sy.\ú6Ç<36>zdf~;®ßF8Wö…3˜æÊÒõ ©9~lUÿÙ

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B