From b42a090f3285a48d0a289ee9273581df77cfcc7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 23 Feb 2018 13:47:06 +0100 Subject: [PATCH] Support for modifying string/bytes fields. --- blender_asset_tracer/blendfile/__init__.py | 35 ++++++++++-- blender_asset_tracer/blendfile/dna.py | 53 +++++++++++-------- blender_asset_tracer/blendfile/dna_io.py | 21 ++++++-- blender_asset_tracer/blendfile/exceptions.py | 13 +++++ tests/abstract_test.py | 15 ++++++ tests/blendfiles/linked_cube.blend | Bin 0 -> 479508 bytes tests/test_blendfile_loading.py | 17 +----- tests/test_blendfile_modification.py | 34 ++++++++++++ 8 files changed, 143 insertions(+), 45 deletions(-) create mode 100644 tests/abstract_test.py create mode 100644 tests/blendfiles/linked_cube.blend create mode 100644 tests/test_blendfile_modification.py diff --git a/blender_asset_tracer/blendfile/__init__.py b/blender_asset_tracer/blendfile/__init__.py index 962b98c..00456c8 100644 --- a/blender_asset_tracer/blendfile/__init__.py +++ b/blender_asset_tracer/blendfile/__init__.py @@ -63,6 +63,7 @@ class BlendFile: :param mode: see mode description of pathlib.Path.open() """ self.filepath = path + self._is_modified = False fileobj = path.open(mode, buffering=FILE_BUFFER_SIZE) magic = fileobj.read(len(BLENDFILE_MAGIC)) @@ -136,6 +137,15 @@ class BlendFile: def __exit__(self, exctype, excvalue, traceback): self.close() + @property + def is_modified(self) -> bool: + return self._is_modified + + def mark_modified(self): + """Recompess the file when it is closed.""" + self.log.debug('Marking %s as modified', self.raw_filepath) + self._is_modified = True + def find_blocks_from_code(self, code: bytes) -> typing.List['BlendFileBlock']: assert isinstance(code, bytes) return self.code_index[code] @@ -151,10 +161,27 @@ class BlendFile: def close(self): """Close the blend file. - Writes the blend file to disk if it was changed. + Recompresses the blend file if it was compressed and changed. """ - if self.fileobj: - self.fileobj.close() + if not self.fileobj: + return + + if self._is_modified and self.is_compressed: + log.debug("recompressing modified blend file %s", self.raw_filepath) + self.fileobj.seek(os.SEEK_SET, 0) + + with gzip.open(self.filepath, 'wb') as gzfile: + while True: + data = self.fileobj.read(FILE_BUFFER_SIZE) + if not data: + break + gzfile.write(data) + log.debug("compressing to %s finished", self.filepath) + + # Close the file object after recompressing, as it may be a temporary + # file that'll disappear as soon as we close it. + self.fileobj.close() + self._is_modified = False def ensure_subtype_smaller(self, sdna_index_curr, sdna_index_next): # never refine to a smaller type @@ -443,8 +470,8 @@ class BlendFileBlock: def set(self, path: dna.FieldPath, value): # TODO(Sybren): port to BAT dna_struct = self.bfile.structs[self.sdna_index] + self.bfile.mark_modified() self.bfile.fileobj.seek(self.file_offset, os.SEEK_SET) - self.bfile.is_modified = True return dna_struct.field_set(self.bfile.header, self.bfile.fileobj, path, value) def get_pointer( diff --git a/blender_asset_tracer/blendfile/dna.py b/blender_asset_tracer/blendfile/dna.py index 42070b7..aca2f01 100644 --- a/blender_asset_tracer/blendfile/dna.py +++ b/blender_asset_tracer/blendfile/dna.py @@ -213,17 +213,17 @@ class Struct: dna_type = field.dna_type dna_name = field.name - types = file_header.endian + endian = file_header.endian # Some special cases (pointers, strings/bytes) if dna_name.is_pointer: - return types.read_pointer(fileobj, file_header.pointer_size) + return endian.read_pointer(fileobj, file_header.pointer_size) if dna_type.dna_type_id == b'char': if field.size == 1: # Single char, assume it's bitflag or int value, and not a string/bytes data... - return types.read_char(fileobj) + return endian.read_char(fileobj) if null_terminated or (null_terminated is None and as_str): - data = types.read_bytes0(fileobj, dna_name.array_size) + data = endian.read_bytes0(fileobj, dna_name.array_size) else: data = fileobj.read(dna_name.array_size) @@ -232,10 +232,10 @@ class Struct: return data simple_readers = { - b'int': types.read_int, - b'short': types.read_short, - b'uint64_t': types.read_ulong, - b'float': types.read_float, + b'int': endian.read_int, + b'short': endian.read_short, + b'uint64_t': endian.read_ulong, + b'float': endian.read_float, } try: simple_reader = simple_readers[dna_type.dna_type_id] @@ -255,22 +255,33 @@ class Struct: return [simple_reader(fileobj) for _ in range(dna_name.array_size)] return simple_reader(fileobj) - def field_set(self, header, handle, path, value): + def field_set(self, + file_header: header.BlendFileHeader, + fileobj: typing.BinaryIO, + path: bytes, + value: typing.Any): + """Write a value to the blend file. + + Assumes the file pointer of `fileobj` is seek()ed to the start of the + struct on disk (e.g. the start of the BlendFileBlock containing the + data). + """ assert (type(path) == bytes) - field = self.field_from_path(header, handle, path) - if field is None: - raise KeyError("%r not found in %r" % - (path, [f.dna_name.name_only for f in self.fields])) + field, offset = self.field_from_path(file_header.pointer_size, path) dna_type = field.dna_type - dna_name = field.dna_name + dna_name = field.name + endian = file_header.endian - if dna_type.dna_type_id == b'char': - if type(value) is str: - return DNA_IO.write_string(handle, value, dna_name.array_size) - else: - return DNA_IO.write_bytes(handle, value, dna_name.array_size) + if dna_type.dna_type_id != b'char': + msg = "Setting type %r is not supported for %s.%s" % ( + dna_type, self.dna_type_id.decode(), dna_name.name_full.decode()) + raise exceptions.NoWriterImplemented(msg, dna_name, dna_type) + + fileobj.seek(offset, os.SEEK_CUR) + + if isinstance(value, str): + return endian.write_string(fileobj, value, dna_name.array_size) else: - raise NotImplementedError("Setting %r is not yet supported for %r" % - (dna_type, dna_name), dna_name, dna_type) + return endian.write_bytes(fileobj, value, dna_name.array_size) diff --git a/blender_asset_tracer/blendfile/dna_io.py b/blender_asset_tracer/blendfile/dna_io.py index 5b5c56c..b51b1dc 100644 --- a/blender_asset_tracer/blendfile/dna_io.py +++ b/blender_asset_tracer/blendfile/dna_io.py @@ -61,20 +61,33 @@ class EndianIO: raise ValueError('unsupported pointer size %d' % pointer_size) @classmethod - def write_string(cls, fileobj: typing.BinaryIO, astring: str, fieldlen: int): + def write_string(cls, fileobj: typing.BinaryIO, astring: str, fieldlen: int) -> int: + """Write a (truncated) string as UTF-8. + + The string will always be written 0-terminated. + + :returns: the number of bytes written. + """ assert isinstance(astring, str) # TODO: truncate the string on a UTF-8 character boundary to avoid creating invalid UTF-8. - cls.write_bytes(fileobj, astring.encode('utf-8'), fieldlen) + encoded = astring.encode('utf-8')[:fieldlen-1] + b'\0' + return fileobj.write(encoded) @classmethod - def write_bytes(cls, fileobj: typing.BinaryIO, data: bytes, fieldlen: int): + def write_bytes(cls, fileobj: typing.BinaryIO, data: bytes, fieldlen: int) -> int: + """Write (truncated) bytes. + + When len(data) < fieldlen, a terminating b'\0' will be appended. + + :returns: the number of bytes written. + """ assert isinstance(data, (bytes, bytearray)) if len(data) >= fieldlen: to_write = data[0:fieldlen] else: to_write = data + b'\0' - fileobj.write(to_write) + return fileobj.write(to_write) @classmethod def read_bytes0(cls, fileobj, length): diff --git a/blender_asset_tracer/blendfile/exceptions.py b/blender_asset_tracer/blendfile/exceptions.py index e23e566..15b06cb 100644 --- a/blender_asset_tracer/blendfile/exceptions.py +++ b/blender_asset_tracer/blendfile/exceptions.py @@ -54,6 +54,19 @@ class NoReaderImplemented(NotImplementedError): self.dna_type = dna_type +class NoWriterImplemented(NotImplementedError): + """Raised when writing a property of a non-implemented type. + + :type dna_name: blender_asset_tracer.blendfile.dna.Name + :type dna_type: blender_asset_tracer.blendfile.dna.Struct + """ + + def __init__(self, message: str, dna_name, dna_type): + super().__init__(message) + self.dna_name = dna_name + self.dna_type = dna_type + + class SegmentationFault(Exception): """Raised when a pointer to a non-existant datablock was dereferenced.""" diff --git a/tests/abstract_test.py b/tests/abstract_test.py new file mode 100644 index 0000000..c45241f --- /dev/null +++ b/tests/abstract_test.py @@ -0,0 +1,15 @@ +import pathlib +import unittest + + +class AbstractBlendFileTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.blendfiles = pathlib.Path(__file__).with_name('blendfiles') + + def setUp(self): + self.bf = None + + def tearDown(self): + if self.bf: + self.bf.close() diff --git a/tests/blendfiles/linked_cube.blend b/tests/blendfiles/linked_cube.blend new file mode 100644 index 0000000000000000000000000000000000000000..77a0b28b00229a10674ee45a5ad2c6e08fb0bb22 GIT binary patch literal 479508 zcmeFa3!EHPnfG6FNz!r`K?5QT;6hX&$TcF#%w!U1C4`s+46KluBok(2k_j_|1lQdR z$fZRTMa6ItB3_8P?xLc`1(Fc(wO7!;x+>9i-^E?m&Bt{Yye)ZA$^Sfce!pK`raCh{ zJxL}|1)b_|_jyj8dd{hDRo7Hk&zv)R?yTAKPkh%YXTE8^ds+;Fpk;9T{(oBIp17$F zkLTTd!P3r^o%Z4=r-ic@EG)Ph3s0YS(WSBa2VH&ka8rB!$a9d7fqV?)V;~;``54H@ zKt2ZYF_4ded<^7cARhzy7|6#!J_hnJkdJ|U4CG@V9|QRq$j3lF2J$hGkAZv)-&4J?XO^39|9d9y<7uhwt}%S%+y8j#nO)zOeEZ+^IUeszXm<_dBj5hVdvA?x z`||C7Z1Wi$)7;!VYt5Q9@y9VOEiGfbn6a#`-Brd%zWvvbS?l{7FDkuo*(=Z45r1@D z(7&Vq=KEgAdi?d{-+Q6XO*JgGme73ruO)l2SoZymuUWj~vO{NA^_Vp{I2fyHcRy`+ z3*;l;{zsAhc;D}3{hx3Dqv-E=i0}KGUa)@Wqw7`YRki*9<@F!h6t8nPKW}%-<0Iex zt4zKf=iPW@)b}<9`VO04RsZ+D?~^Ed>5f8#|rY1`k+`rlTkJ@&}A zf6GXf(@h`z`-K0i-Tv)(aSt5>=G%XjeVtW2-T&`-^`ff$zX$u@R;NAo$hUvXNR?B% z|7{;o?PtI}bPSkp|5f&NR`Idu|2=pN*zVSek9_;j>fm8sTYl5WH}SI{=hbfi-R>OW z9ym{&Z~w#e?MUACp8?wwp8={p2e1c^0ovU<@{w=EI~yC&@}kdJ)(A8i)*&bWO0-#hzl zEL+{~D&r&H{>L)2%({v$lVZfqd@!>cyT1Zu|K> z@?f5eJQw*G$j3lF2J$hGkAZv)vmj3ud-720_c<_Wl2~CI}|F zUn8?0Bx`DFI;B21pl+gjZd2*Gi#slL?-x$?^WdPMez3^}V!CSO6)StMUP%n5cJ;34 zoZ5fQlD^KBQ?KsryP|(p$I{NJOFC9eUDDIJa#?5Ji5>m@odYKh^tspjrVe!W5A^%D zmUs7b_D}8UUU^05vc*fUTGDw^7@?~3CwT_)42<&(y#4$jSmi`gIOBrQ8^48DhHLiQ z&wqRO%JVxSkqj4*@&5JhHFMa`rsB=>!**4gH|#8UC+{`6_v-Q3NwHzyDu3&;8_l=H zfAn*5shoU$+nZi?la)))xqw-%3tLZi$>4hau0lVweC79RtR8xv@%>BtIy-CXjkANn zNf$I)f7AsNg8yll5I#Ey3t&GL-n=ASUoJO2XMb#a;eW$+a$dOX^C5G-ZPCk?*m|sg zyPp@qoUea+M_7K*zxjE3IbFA(9gd6i>z2oYdy(&d(LHC|t?Ys}H`Wi0_K)9Ay>Df* zrUh*amUgb}3Dq8T%SRmW4$DV+DqVVNVm;TNa7S34 z^K|(%`~DodT$U@WJtM5Ybh%&7>)vtTbbEZ~$tT@o&h%4HJ#~i7@4Vx%a6Y-dDY)c7 z+j3so)63lIAAuCCdQ}i?cFzYN@=ozD4>li$_ig5i1UyEYa;$?%?qLJ<|GUHe_5}P6{Y?hp%2~DV9@??WhV#wgwNb7SXQMuin&?o;nV$i!aQoP#rlV} zFJ0#Zcc5D5{-Zy74}R}iVdKKGK`?b-#j2@zp3m|O99uG$RQhPQvKPY*rb$PzNc?O~k)CcwU$;GA}ZVKw^`4J{6 zGm2*|h$+tXpZ5zF_&KZcOZ4vW`ddrPVDs|Ne!=B*usJ#-lH8A0N?%Kb^H)LL6^Zjb#n<`sXqD=z{`KfQK|Hqd zalnMY&IR3h#~pV5XU0Dt_?G77%a_~nLyJ2nu>g zdp!u6!bhDuw=g02se695o7;ItOf7ESV#hTWXJeaZ9#{{`4VgXmha(=f@|@gxndA68 zKA+p`PTtip&FWm+e0A5&*)Fz&?dodw z>%sO~yOv(F)cwVD*R>^HGuy>>uwBeA+iNlXUA+T~S9YwZWdm7M$!BPkjUjtjyR1*+ z<-_si{*25vvyE&sstC9)Q7+w|o%`Ok%TsFYn&KM4bME)M=ULkXU$glG!6$>l!Cw#0 z>4xj&jtY3L{hNp{1`9&hugARf%P9%>n=kAaV-KC>JF0zEl123UQW#F zgL!r`Jz9L?-JQcEw_lmyj>b+2_afSpxcu02@?eUCQ8L?7jCp);hP}%58-67QoA-I@ z*t31P=fnN2^|{}#Zg%^`XIqOuf4BSGZ{r|3HfgI58tSzazeFyRt+KiOnPDW8{YBtd z_jvM~*Vz8N*`6QzcW-eS|#_XpYOQa+B?CPZ^tS&x4c=% zmJMH?Zm<3Gf&b_pZ)vgZ(v7l!+uw+vl9+ z%U7)GyqvGpHedf{|Cy9?)<(yKo^UVn{hhVzUERw%ds#t^^RBaeyNXkipZyO;y=)iD zv0YQ%lq_%Sv9#A+vV7LNdY0DMrmS%0iSMypYzN!5?M&Y;wl{3oidAPV?dt1Y(ZT4k zn^$TV+rf6NKf||+?X?!H>gXHj9_a2}S;KjWLS6FsIK5_e%w!MCm(Anlt?kx^CDT?< zb5F-)V!v>Gx&B?J`}JpDY}x%+ExB?`7Mf9sZNKq}?P5FFt|_PacCo$It`(h&`#M&- zYYlh7bWo~Jwu|jxySANzag4lKyRKZ;y?l8peylJ&`w**)?P5FFt|HpS_FB8H=)9(T z<-p<b zyVwr3>tx@LY_EOB>0W&0@{Xkgy?yZt#_0L2TTTx@ce6UR3+-UL%2P4EkT=WMlEwY* zn*~(#%ew}aB;v;ktp51KcCj67SLt=WU2Lz# zx!v-zrM3RqE57j9^GfYvJJ>EB7qYz;x4ff&;KWt^S9I@!K~||oVNjvWVD zwc)g5%@9u}_AxAH^SHPCIrAX+)s$DZY{TaZ&bb|sXSl$u^_tVYvU5S_=r;oM`@ZhM zy6r$XD&)-_R*10!%?T1}zV6o|IKzcftkG@f^zQuFgKVvwt-E1e@%|&p1 z`b>3vaTN2#^G6Z1lMrk7Yu)?22F5#&gap&oH+}E;AvN$eb-%K451Fq z<}3(D)xb49wH@MfOsV1#J+bz;v>>**-W^EVb9?ypF3(I<({jW){HqyXXZa{6d?%Wt z{^*6h_}R3-dL;Z?F6TC8y4?DZFR9S)3p!S;a$k`i^%Sn zPJX}te&nCsYnJcwEuO7R*0f;$sk53c>h8R{>71*2da_Ck|JwDg$Z&mIINo1RR>pN@ z+c97LvbThPTPx#ww$i-p>(2E3bu}mbX!mHew|+)>to!SNy#{tW8Aird>reG;`}o%kL4K0e6v2r z1;PJquOSqpEuc$JKS^2=M=P)<=Ni!`r2|Wp5+-|c)edw*30~+ z+s}BGXZ+-;KA!b5KD{1{XL-hN#du`BYITD+;LFy`leEd7 z@3GjjtB3PwpYJZaXlQiT-s}@xJL&N7;p2w;m-)&nXWORrNOV2N;aSDT&1>wJ68eGt zQhW#c7yTSIc<{?@!C=?pQR4?&$c^qr_jT-W`XqL89|YU=C^m85$M^lK`nTCVYuU%f zpgXEQ*ug|s<9)7&?qi^eR(`V8y=CJ#J=Fyh-K!H^8?1kV;NCI+bd_FWZOndQKd@g4 zm-&8Se}zl2ehDslj7w~8y|(4>BR$9ai&6K*eGh;1(|EkXM|j(@wwhUg(^@io>-Zo1FU!f$lj z(|R!92Xf~7#SQ0ZdpRU{cVmNlut?>(IgB35-d=1wX>|Yj?PW{ls>a1T>=*U}`-P2T zf04)Yd}sY)d*^uDJ^Mb2zrLrR7w-1=qp*G{xfYY3bPe;Zy~W0FV*1UalUfolIQZbi z!A(J64?peugE<@R*{o;2KjYLdeP`o_d)^k-bI#S>&9}bwoEgWS@Qv{O`xajO@Mn+i zY<~UpU(7&gI6L|Wy^p&3nl0X99&qLCjniCRA9V2+WBd(QuhsPi#LrkftM$~?U)=HF&%JGvYs03iE?Luj=mkHRanI@Bur|#2@PjKJ{#@hlntxjS z#YWeLuuWF)(O>9kb!})p{@G14-ZOAvbNeIbxaEK2!3oc{Zv5OI{$cu$U$)h?w{+?^ zS6#K`%ir7D`m=i`Z28YW-n;o<&gh%@n&*D>=vn{LF!Qj+bzvK<9ag7JwdSMN_3^EE z>HYhglisI3;M$M$HS523%s8`o+CMzK@xPz==*EU$|7xR+4c2qo=dL-6&pG$k%#!T8 zYSHuLvuJE2Ur&;4pX=QQ$>aL(xVQcGnJkwkE934dGi2T4W75Yowc7WMxG%Ff+h1i* zY%}NCrN-h_-wuCFYIiFsO#Y~=cE6d{et)j{-Lon$=OFi)VUiu>@3x7T(7RlQ_weCP z!1`~UYXv|5@$(=X#?OiT9Ldkcl|J8Eob7-9)h)ozY)qOo=sp|y5fLA2>+kZP*EugP z^~a@!&Wz7T4Eh3}2gA>DRv9@~amG{bPe=B7FlgMz-D&6W@R3nj z#!K;hrQf!iY{YY@cutoZKg@n%Kd@ieLiSh4Pd|fxS?{(RH$DB|#_oCJ%w9K!_&Gd$ zFXNw;l{65RH3#_bW4i6reLuqYOI^_GHoTEf{}1Ch9pOKx+pE531}FJ5wCQr=g{@y& zTw}Psea}4~Ngj5ZVpj*xKl6Mu&p(&$_2-{?UfLB+Obh0>uIygXVON|5C!KuqsJ=RK zy{mD!btvMz+_nk+eDem(w;kZQ_%@thy~xiKjdUYr~%l*iM#X+*-u3z9=p_-)+ldImUG%j`c-x4~IjN%VRml zO+y^(W89ia$vBo{Tmf;ck8wd@TYXELSf7t_ z-)F2(#<3jZRwIt}MRCb|vK-@zh+}<>b5}qn^2u_Hn~XTt$G8XTlW{D^IQoF~F|KXm z;m-I`K3R@&EXVrDYbHf;_V*2X#tyG-1xoM^%X525Z;v)^ES}{VzrE4-BkSe%Q7N9~ z89!|wAJ2NZovt#IKk&b71#;-*@>)np=OfRP6S)TD_#Is(;r~ShA zvpnOsBcAn^v3#yadigBR_$mAP{ITA(h-W*}@hs2yMTlp;+>R@?pXC`}LOknbJlm08 zKFc$H1L9flv|;kk@{Hexc-BiVFpufwvpnM`?}zb=dKh0Re=N`VBH~#u7FQ4TZzZLPUm!7M%{jfaa3;X;0v0lbk%0J69ej4Ig zFXOo$>GrccgdRGsVKbB|wTEw$ndbiT@S)TD_#Is(;vmNR7vpnOsBcAn6M*G)d zJ4nZ~JmaU}c#-uozEb{Kp7Dzi&w9CEspKD)XM73qte5d!72418jNgEG*2{RVM|%BP zp7Gld&w82nO5>O18PEDzFZ++7 zosY2BY~tUi$JhCY^tV-fTgS`4ww<@Q#&CNZtMd``2Yo?*l;ID0g~uKAKRr6+c+7o% z>hWX3<*=KGQ7FYih5&U^XI z_JPDr;RqSL*TuT)TR0E@Cgjhbr$5MipY>qg z?B*@kxzmjJdwt_XSL1zkZ*Y%P$qZz_*jrikTTSt>G{@hIKQDaHkNfgnJHOsE9y1ot ztzQmuE#~rVK-mfuZ{2x2W?r~(;RSOSES|S;vAa9iKy~zHKxMO(pDS?#44V zo?e@JJqwv9jgx>t0r?63A4)V0RX8r4#hEAiGH9V-XAJ9@f1`m4GczSj6wx6~6`t6pqkE#@On_D6MIdu0V0 z5~VyaPs|JRRQ#yVlk%5}jn;ETul;dk@sggas@eEzjSs)4(7CMX{BY?_Gpk#=UzxLz zCnL*Kqkma*U^ru*m>1@$^fCAe<0>9w&!hG1@9J1q)ldqnsx^MWsFs>si(_JWvUixL ztiL2OPs|JRRK6X4!njH@ zm?!3ic`B@hpD?bHOGxCYw|~Iy8oIQzzY0ag@-(XWc`mAHUbRb2uElTv>^;s`Ii9lq zhRZxLFU(W%4)_VZ&S_GUMZMbnzFAYN^S!n1VdrnS430?>(m{=81V>p7^;y z`AY>xd0NtOMKxkVJ+;Qq9Mw{jD{)YT@s$3qq(w1L%nS3x8kIl3fO)i@%iRzB^;i9U z(OTor8P!sgE3y4gk)Ptn1@@ij^u#>ze9HG-0e5&l>_q1cTX38fh`#reY~YR)gJ50q zrI0L7_BzjR@qAZlfj?i)^I-ftEC1eAsPOkot8^xItnYQt4?NJW6!4i(obP(-gz)>D z1BUWJ=VZ3h=c=*YAzI)>K8i32i(L+UH>O1N()GXMedAsHX-=2l(`^0nv}**nw;#LbBk^H$=ZrnQ2GuQp4c3o-qtEEK;zI8?dXMMv z`S(ozeUs<)xpbZfeZ(d2um<rm(KLRgUosHN}SK{ug-6b<91ZYjQ>5h zo3S{b{|Q%@ozKTS({I(E&$p8tmap`**PhQuKd@i8UhFT=x4T^aehc3V0{3^8!B0MB ze3BbK_5&s6uSM7pPsE&lDY+}?iR+BAYRWS)B)2dh(c6Uuir?6P~d$Ma};KFGC> z%RAn^Y40C^$M?_zccpl+jq|6?dAT4`xowS3K#nQ4fjJ^as3dlUn%2wn#a{_@0Z-RX~!Wq zxEK8W5pHX^*xiA{rugx6>92i$I4=))F8@`Ow=k%}Ki2L+S1se{wbHvX;s@WAJboTr zmgEY{;L9Jze!&0z*kWyegL&ru=C+2z1A7cV#q)JfMsZ(DbUZz>S~DuzO)s%u*bnTN z;%f9S`q?++X-x z;qH&n^i{h*Lh&mP{qge~pZMWxXFPuO43~rUQ`>s3+Vb@$x3+fOJz>iapSySSf6eHd z`Q{gX^ynvk-Z1mb!nziIK4Y>*dw&Gx!|snz%lfb#FSYrE-yG=rA~}upHS5Fl{Sj2r#y%;_jY;L;YO*5Y9KDN2%=lc)Yu2|N*8QvcO$M-MU`y&)S zCw*Gy+ z|2){^4gu=xAE@8vj>v6_e;zE}gX=mtUxVY)>oY#j#Vf~i?yrl8r*e@k)Z|tw})8g!w z*tTMiO8w%`we5YMJJ=8G7p^_~D+msHGzhM9+sC@i?$P4kf45_My{XmM&db~OV%vkw ze~fX<*NyqU{l0Ga8@u-R$a!t&y5iyF|5h13Z482^>THycWU_5_XZ@0{Da|8U#_lX* z+l$?In)|7LatlW~ciId$H22D>@So}5WaetPHOg2i%a2_h$GCQv9LrDqJUD9@%XzvF ztR3sz0(iW_m%s6iMg;GZR;8m&PmGO7{V)?o$-8pVu_uAtZ^aJ~){5~AN zpr3s=p6UD>KYl4Xe);3*;vuv2@r$wf_`;0si=WT!noa-r(|ULOQVuSvF9)+S%MV#x zc)V1?I8MK7HN}r#Jf};IALjPLeqg_pu)Sq&H{+-IY6*{DD)q}=d;EfaV83vM*%oePj=%y zn|K_;;|?B&_;;h@lgaqII{%)|`#JD>E|%x@FRymTApY;_XV*Q39*iG{lt1M6OPm)! z;JI*X#&HBIkIm^-#&P@2j$fWS4*87j|5|k2YOLO@r*FXke3iX9_-Pkwe^QO%5MfwIyGR=gV@Ip1fD>JPNmhk)EAN*R*?>{lb1=zi{d7FYt4Nl$ZL1DCjTB)tUG_B#jRO8wfV6B_{_!| zo;)r**S@28R`b#Ach8u8)@wHTdN;rE{%M`f_dNgaGmNiz^xGSMzwf4vm(-v3s2wX> z{0lC|z4aA)|5dK8qg?!_U5v5SYju4B@hdx@Y5Dk!?`@vDHa?gx6{`!7voBOl$;FtgR)(ww5y8VmO-`TLny*BGB&DR{d<(UcfGe24S z(W9q5b?@f&uYbkN`SFzAE`ATwXTol z?4>x}yWin0>GdAzYc`I){+)B1Uv}Gb8<&6W!i~M}{#!S;{kbWtv;KEyrT!lEY-{%4 zqx}6j*baX`?7`*-p8dj%e>-{Wj33@IF&xu;KR!2au6K&({_v&t_b59Y3Gde(M1PO+ z$Hsfd-=lcHUEW_;_uG9A$2k>#_ie%aHupokz5VVt-rbMTT|TN??p`0}E!mHMjY#lf-h;b=Zs@H#;r#j>to!SNy#{tW87B6vA!tIKjZRPj&a2g`TVjz z#s$Hf-Jy2$dv7eqxYdYbeT-W(DH+Fdj9ZU5*2lQhCiaI<*-n;Y+*ZV~KE|z?l#F9J z#uYG*SRdm~o0x1T%Q0>m;#eQ!f?#8Kpv!i$9OJqW$NCs|+QeiW%Q0>(;#eQ!_G?JS zu^i*dh+}2b>CvpnNhBcAng{VT<@Jmc3Rp7pZ*mEu{R@mmqkdfEO; z>(BCxFMJffLOpDM0ppb8lIzd%jGu;h*2{KJs}RrfjPF7`>*aDQ#j`x)*CL+vGQO+A z@>!noWyG^yF1J!V%QJpE;#u!x>^Ig{SU$@$ehT)-te0`+3h^w@_(h0kz1)5(#j`x) zONeK^9DkMKS)TD55YKvkkWC zaeoKSZ^!4$k5}i90^&GM%USVH-<9;oV0hl#wQgkocqZ( z-|KQ}le9TG?||B5Y~Qb35R&;~xcfVtSGO=MJN!TF7t6klEJr2!f`xV zzdY^Q$L;Q=c7F%@jD9O!jPpeB9KFWl{7RoUI4%ZUF3)oNmd3{O>b{lrecMNHKRC|s z!12*t)%mT2IBrM9%=lZd-N0ux`R#u1wL#3s$ZtouTv@)-6aB`0+1}ze_5=Hc>&5;G zdGJp6{lRM==X)>gxU=ogJGw(Y!>#anSn2y4dz>vH*a$YJR#+_&>~)Ox?= zTI0v!e$792_aU~i^7;{EmU&WMkf-9Oe4doQR9(^i-S*!5HBUyK?n|wkjg$1mJTWgE zPo+=$JSl&vz$j09@BNzXeyBE{ew$i19)reTW}cWA=BfM{pC{!n9^{@!dD^@0*KEh2 zXSwy^F{!O)mMEDg=7o7G-0$1@$^f~y6`Afw`c^cjQmTQe4tNS%)<;k6T z7&0+W%nS2W{yhAIag`2?t>>ujw_I!dSlzEVD^FSHgqSDhg?TFcE&POWRXI<4@BNzp z$K79-$J(}j-0tk!|MbK>F)z$h@r&>i##K5l8V{qp-*T<-V{yOcdC1dssg>K={hFB< z=Be~|@Ds*Ws;ZdB_wM^OXKi;oyALt*!aSA#9)7~Os+_02_kPV+yYciU9DLjH6Supp zYv8%vF)z$h;Y;un##K5`ZPzUA>Fl2${@RQE+DyN@seDfrKj%VV;U#hMzF5(xK_~yu7n_Mdv_g-!AB)c|#n^bV_2YPYMS5i&Gf&J5^HkaZKVe*@L;ZT%p3Ys2JBr_# zsWpBqKDV4uAy4shEL?BqiFsk3%HM#WFs@jh^YnPA_Gq)#_%ZoikP3OSzlo+N=81V> zo(d1aPZ(F}xaf07=gOtM)&CGyt?{!*wbbNVoL1rZ$?jE}o|q@*g?TFC?-|NpDlk1B z{PEMsk7sI)AB*FsKUEk{2c*{3ka=QWm?suh{`dms=get6fA-wA3r73Pk2S~lbhw{U zT-w{@KN6%`H!}SFAG432UYQZjJeBZw;P1OKS$}UxhjQPLetmD@=zE^Y7N6VX?=zfy z)sLrj?nVAxo`0t=UgG~w&%fXE`b%DqS?RjU{oP6UQ*lDjev6^5?s#{Fyw7~%`@5gP zbw`*NKH<6W>FWMY&p7@)xO`7W{NR7$5D9;$-~5&&r<0Q6H_+{^k61Lq9y6$E_uwP2+(7)(szwGgQUu^3a zdpzJ8YU4OP)ddH*SNFdAVzVFEFU9+Ozp%gjdPeubHXcv+#b&?Qw)OYEv59}{f)6|1 z`|gX)eqg`QgX}NAlI}j(n|mIQR@iZ{;W6V+xyOUKvnKTK+w^PzJdacy{H?)ifc9edlC z9@fhMa@}-RXV%K^fg7+2fY5vlY_vpR~i|)U_`PqFx zru!;PeDZ`-u6p++y05|k?>=MGw_f!%-B-bK_R^f}dg}Bv^4FgJyEinS_rYT~Ejr?c zjbHf2`#1hDc3S;wv+Ix#I_R{C?+NcKSx9^@rSy0HIJAWOahC4Kap~XsdAz=? z=ltBkIPR~DpUa5f{J!Mpzrp{L?_EM=|d@c65!%q(ee;84BlsDq<82_8$kBY6S z{SBVC*Pc5Zh`$I>g7_4Tf*wk5U3&m84)t32FnT<8ay9H*~ zJn~oXc6qXGt~i1ajwj}Yv?%!XGeeM;#KZ%LESy6GCRXssiyK!du=C8K>cJ7+TxBkPVStm^X@s`7H zJYd#rx0A4A0s9*~k27Xr$H9GxarC}@CbY-%=h)-dZ`&|^pQm2Y;{P@s_NZ&_B@-^K zpFN?NwIQ&9vH8WW{z}IoR#U8Ku(EMv$06~U-TB=5Wv%NMelGh@w{Y_&Kc7`(+mxtuy|+#a73D?jrOjkG;)~O=Htw^UZHN>G4fh{8!uhzj`FR4<6@*UmhC% z&NJr=x;mD1_RV#B`-Od-oq;{7nxcJF^lWDpSbuf70&LGO-SezSwr>J1Ryl1-?_;mK z@$$B}_xANH+t~t!d5_z1@d3ZTk#}wu$$FsNudcPe0@8a-Y9BAM*J- zaQB6%{=PDmzBkSL$}qQk%Y9|o5A2unS8)7?{tCNe@W!?vxajflx%;Qiab3&dA@A>2 z_!z8oSHfg0?Y5bnzwbZiIY&mH^Ny+OuHWB1qB?f=>}Xg2SKK4(d(&2v|9h;j;o0Ew ztljd?s^6{eaeHAuuwP1F_5H&B@{Rhi>zDGDsDX|LfAW}dykEYI{72>dGs~Mz72fy# zlKA|6Ox;)N?BU~v`*&yc`&y#E$37c$jj-0?mbz=+XTPu?*e}Je`+i}6`KA8=9>aZ8 zHa`JgHFG4byA>|%tYGt%p|?V|e%ag?@*0=(54ndOoAUSW*$+HUG`8L2 zzh)Z5A2-@})ck$R?DzF9oA`9YWfPysEFZQ&|FB=|g{=CmCKYy1W=}Xh!SVOT!*lBw zJK4nJLi>Ca-@tkN$m0U_9~xgcWnssqYev5&4eqZ9Hd#9kabJjIeRj^#+OeSHU7bxc zd&2J_HMxuKt2_)FwqaAd-1l{+_FuEa-JW4;|I)thRdyrh6PNe)o!H?{0rU^_PaU?7 zyg;6TJOeM?3|zHxpnIUFbJ?G0nc)0`e-Kd@ieM)sHILAQO_Wb^lK3I^+1+^@iI z3^w0yV}00ZKR2FjN?zsdUmJ^mcecIkm%6t6hH-jrIrCusvgmcue(K-c8zaz$bBvn~ zYO#NZOv_@gB)^-N{!7`jtyc8TJMM7TYX^bF+4Fe3y`E2b2J#H#8OSq`XCTi&o`F0A zc?R+f&p@7mJOg2@!eKdWs{GOtt%aQz&q?asgrO2Vt9{_(po>?fcdt& zJeP4#%<^Uaw-VBeFPxnGUP4`XrD$@gbwTv2d+XMGVA@?5Mzz@Ws7(&pju+f>i!P#F z?rG-4IF@7FYQ(X=D0pt8J!c%tF>XELSRdooOiISF9OJekj`c-x{u!6Ya*Qi{+~=3| zF)j#Bw6ChDoh-+=X^3Nej9W7)8OL&r>p~psW88XouL_&kPL^ZbTEwwFU)tS+WkPa! zEXTMq;#gl4x5?eZqE5?WImT^A9P4A;nn}qxmSfx$j9b>nxFGP~hUWUQ9OD)tj`cBa z{e)y3%Q24I3+rPXzwyrHu^i)Aj`fiTC;D&7Tig`)BDcdG?zxSJZD=RUbDXBf9phP^ z@ssaJZr_Ygk0ZvjJmZUqXT4l*0sX~xF`nfazZ&tZm&>gb&+?34k9gKQ8Qa~o3d?7C z#&1PD>*aP=DW2sSU$_(7E9znUyDBW7@vN8YT`8XB8Q+C?*2{LUt+0HSXZ%{k zvtBN@QasBuzKnR*%l4NmET82Wza8+QmNXDxr7 zE6n{qzc*QWM{@tq<1Z64?ATEs6h8e_c>J;U zZeM?4+m!J8ljUo1eDq#Fw|e5!w8H;}aoZ;Ox#fM(iIQ>rzELSFzU9eTzOF{x!-n_f zBFC3B^tr8%O-=UC;OAUj_FGAq5Bc7tzc<&>?*3dyTlo=8@qDF=TP^k-8@Ce;r+-b| z8@ssvvK#HVuCVmlFh889>#3H@gKNY3ifca^&PN*0eqlebUl`B+^2~l%@B5|czkNRq zUOTJX<$Mr%-`9l@rWyl2{ejop*>t59FoGA?js{SjgEU4L(E zd(HREzfO2VgYCCDmG1ZbLf+GJ>z5YS2yS=ZbI+~4-2U9t%n2#Ze9vBFe;04?+b#RM za8t&1yzXnhf8G5qeTD3Qa>d1jZzQ(E@ZNZVySJ3xE6>fxXgjpAae{lKC%-jEy`J6< z)8+RxvtQT`?3Z%M_Y3d|Yid4h{BSHzuA>* zxz2s=i0+YhN?l9+tKEY&?0o)4SO1glk>vraDSnT2o#lEY)6VMmwM6&G zduDIBM;`it{ZhQe_Y3H((K=?`0x4QmuuZdVI|gCU4t_<&-B>b ziLHS>hM#O(HBUa#kiEV5TB3X8J=1vV@Rjbt65L+c59}8nOX3g0z_8ylXFK0Ey z`I*M;BeY{YYWF?2ezAMx@%SNqk31e{a6hB|LlX;U*LIIQe`lE3J@QZ=?~ymBd*u~P z%lmp)G|lN=($_KaA5R`(3KRFpySlgUivCp{OFO47=~yu}yyI1;yH{R+f9Jr71AXrG zzNrJ9cH6x0t>x~HeeP*TfA`YG_T1khYw86{-r2cyAiuNT2sNbVHgJ^AX$A+Ks=Xy&=`Oi?C7e0v3 zRJZy$>*KtLbG+*(CeQUUj-LU_S@DA(ZS(cuoYLTbC7BDUF#j<=`!?D8gEzQXJJ*Z( zkk4jzkG!Yqjt(CcDvZ6%eBI-6W%)`^R#SufG>#?&SJoY#C{p+=&h<9nTrcK{LZg84 z_4r%Yjeb7TD)`xq{lI=9(Ydm}yLV+(zq=LXX>{?kMzz%B+Sj|^ z{j%{iQHk++N(cZU%oFp%JeB_p4`5s+mk-yHf)zFHe`M%(ce1x}~1j zTJ>TR4Vv%r=o~0XLWyFX_3e znvJj4_yrv+R=Hc6H=Q3Y-TeYXRZI7)aTfAqWO?F#g>zrZ|I0ivFU(Uh!0{8tRXoO? zN9)<|ezB{np%hkCYrOqVSoKRyuEjC2JlQ+Uk2~ZXGBHog3-eT}^LbMKQjyVmx}Uam zzizRjW93qR6o(hdVPt0HOtV;X4 z{sE^7E^5T{C{Lq{KfiOJV_C;Q$A}l0QScWoPn)%`v+d6B=~A~_49^yVDt6Sh#)rpGRV3$DupmW53L##Fa+;Dj#UR=8QA)gW(Pxb=$clP(~^u+PRyf9Ctec>mJt8`p?J$t$@ z?{bF+9Rpn>`c7KqK6C+3BDDjWbmVO+&R!l&u=bblOQkuI|{t~K8MlwMWK z%WBK#pZ9*6m3lLICfC2oJTWiKQ}ICf3F9hN)et{b`{^Z}r)uNJ;&aOfktePj{q$0G(AxB62Y(Q)SJ;%AR) zsmTQV-g$hpJARs?V<`W*WuIiRkT{;07v`yW2>gU`l@3jh2Y>uD^5dCWfzOr?!jR=FDEOINE%w{NPe+ z{8)T$`7yRTri15I_T>w)IrGH4Fi(Za@Ds*W>A7L@RON;@Bu`bwkHvPkp+cUbZ;UAB)c| zzk$c24?zC7;J_$7dd564FU(WnHSiP0Rq2Ic@>Jyqk0E)gGJY&RxBSzP{hiNK`j^iv zSCmkG-RM8J`2FRmexYQay7N1)_ULj8hbLC@m8&74&yl%)YwX;L7;zoZRQLJeA)E_X-X}#E8ta9NT zT&&X5aZP7m|KfDnk#OuVZzRR5F2nWX`f&ZGZ1U^J^=8GX^>e4PJKZ-fMz?NO=k8iR zt`FC*fa|}w-dw-)TNlor|CZJ{)_E&B2Ksw?N569Jub(@1*ZOgNxPDw8t~dF@x7eEX zbi2PPU(tDu`@_Iu>ps3)-Q3pCA~>%udSs>Pb6&^#eHS*8obt2d$d)qxO4b;Z2SxPW^~@%rQRJvn%93SNI4t2($J7k(^r zFCKWH-L1!GKD^HOzw2)b?}6}>6a4j*n3q0`=!nG{pG$^q+>?mf2^ZT_7npPU{9O|1@W zvTK6f&(N=*fR6XC4)d?oZ+*BdqnyCeS^cM&~Lx?ek+}ILFg;a3m@}dE8m{&w?#*Lzioi$=r_i3JIaoq zjA1icD$YazF{AGpOQ8eE|{E^&M1wC(+!p*`TW0ZOyM`*xhdPS0dpmrkbm^(#`rEZc@%N8(7LM~#srQdc)pu0bnrQh) zxxa}d-WkOzbeI(Q+!y84^Q!{Q+z~vSa zOY!OyUzg%rQha-gKcC_UQ@k<7d?LpFR*e0v82ei>_P1i}Z^hW(im|^HV}C2g{#K0rtr+`T zG4{7&>~F=`--@xn6=Q!Z#{O1}{jC`LTQT;xV(f3l*x!n=zZGMDE5`m-jQy<``&%*g zw_@yX#n|79vA-2#e=ElRR{X})_&p`Xr>6L{6rY~rGg5qJil?RcO({Mr#cxjW*(si$ z;u$G!PH{_$TT?tU#ce5`mEze6rVq=v_}^wA^S2tr_)P~gf73zydVd~5#PEw4 zei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`) z;TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc> z7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crA zh~XD8{33>5#PEw4ei6ejV)zB0pXC=Z{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc> z7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crA zh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ zix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejI3Fj! zh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ zix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crAh~XD8{33>5#PEw4e!=;D`9%!Bh~XD8{33>5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb z48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5 z#PAFLUMRna;TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-% zG5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ z5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs z7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ!Sx67ix_?p!!Kg^MGU`);TJLd zB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97M zFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8 z{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p z!!Kg^MGU`);TK%bB)^E^7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH z_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-I zhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ej zV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_^v^^x+67=97MFJkyb z48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5 z#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^ zMGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKi zU&Qc>7=97MFJkyb48Mrs7hG>Gzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ zix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=FR`H{=&F z{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p z!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-% zG5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ z5yLNH_(crAh~XD8{33>5#PEw4ei6ej_&%8YB8FeY@QWCJ5yLNH_(crAh~XD8{33>5 z#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^ zMGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKi zU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH z_yylDm0!g0ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4 zei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`) z;TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc> z7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU_@>%X5azlh-%G5jKiU&Qc>7=97M zFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8 z{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p z!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-% zG5jKiU&Qc>7=C#^5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb z48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLOIpN@^b@P0C4_(crA zh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ zix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crAh~XD8{33>5aDOiOMGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8 z{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p z!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-% zG5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@C)wu zC%=f{7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5 z#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^ zMGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKi zU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_^v{X^v!G5jKiU&Qc>7=97MFJkyb48Mrs z7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4 zei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`) z;TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc> z7=97MFSsAE{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-I zhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ej zV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLd zB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)zC3H5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ zix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crA;P(>b7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH z_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-I zhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ej zV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!P*#75POBzlh-% zG5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ z5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs z7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4 zei6ejV)#W2zlh-%G5jKiU&QbWe$PpM5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2 zzlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY z@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb z48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{DR+y zlV8N}ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ej zV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLd zB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=97M zFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU{-_a@~RG5jKiU&Qc>7=97MFJkyb48Mrs z7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4 zei6ejV)#W2zlh-%G5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`) z;TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc> z7=97MFZ%u3I{*CuG5jKiU&Qc>7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`) z;TJLdB8FeY@QWCJ5yLNH_(crAh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc> z7=97MFJkyb48Mrs7cu-IhF`?+ix_?p!!Kg^MGU`);TJLdB8FeY@QWCJ5yLNH_(crA zh~XD8{33>5#PEw4ei6ejV)#W2zlh-%G5jKiU&Qc>7=96Zzwq~JZS>jqk0SPdiP-xk zV(*uTy!oC1UTFh`nDT_U+^E=dyhf`}Rfb+ZVBKU&OwB5&QNPmK17(LOQSCr10kXrCDE6Qg}%v`>uw{R{v5!E7IYZ}_MH{j2xUzhd;S z82u|o|BBJSV)U;V{VPWM@O#Hn`}ljz z%wNRlUzJDyiqXGf^sgBGD@Ol{(Z6EfKK>pw+ZVCVU&OwB5&QNV$33o-6TFJ70b5BHPS`?&wB824)wDRx!?xi1B%bTzdcfME`St zulMgwzF)%rjPG;*MJ`V9`!{kK{w5dCPQFiH>-~!^O|+-*i$j+r#w+~5@&%0F*V+qi zgcrX4_u=>^w?7oI8RUBpC;8+Qx1@O9BgyjfQuQ5_djA2uul7Bej2}$DKiO}O)?RDh zD!f0dbz$o|_geX~JHqv8bO(cWJjkhl*SCNCi{blQZ};;q@RYTlS>ERNPY8nLZhk_e ztE+DPgl{$Y8h7jng2MmQ-(-0%e$w|3=cTotOZP_o7O!*KvCG5$T7R^kTe}BcwTzp9 zb{Fr=iobo9ud8vUpMN#Q@g)s?ZtG)Hll{|vn~N>CY90(W2jL@dM^+6Djlq76`vmJJ z934I^VEBpox-p}u)nt2wdc3!y@$f{c!nN|fs7w}KT9Gp{v%VU^2EH^;V? z_8mKRe96tP)0@ZWS^5d{q`V+c>M!(P>A;=msdvdcJC_cmYp=}dJXIS%ds%lCOB>n_ z%hS^@_&hDq+kQyfI7v^;6Z69H#B$7E@hdyeQ&)HYKyTkQ3>$Wy&QrDV#VVJVZjj|^ z3-ZMG8esvSExzjKmZy2{DYx%BjHhI&AXsQySNg>&*p@Ts>ZWJu-SQ{ko5X(6yj$E7 zRd0NA=;63`pF)93-hD;ZzzBj&?;cY3L~uxU`KTFqX5PKYJ?_jXZ?)_jObm`e*?WVn zc;;ti?hoGv?_yqhtv`~lkA2F$@E|JxQG_@JsAAB z;ZyFxB9-TMEN2fJzgfo({_H|y;LjTPdg9}u_+Ee9P5-+T+}m#>vv7RboF|llvj?-D}}#3BRt--ekr-}NPg0_-M97@ z8^5V(=xZOCIJn7uZgCGk?fZi{8|~SG|M<@I>wdOv~FLHI= z?&9m-yELrN>TPm$DZYGR>+8-wU~~7ge{Qk(e>&yo(@*-+3md0>bjc=HcGH}5-{1W3 z+-s-*`=-xZ8>auZvFG6#Ppxi#?u)A5QSlex?HXmpG=DLzTK)#~bK^{sd*{u}i{wDu!^?YND{G;jIFV;f)fPY-Tf^qZG&dhX}F%H_QW{OZl$ zAAIzYi|Vdv?w(iLWcAx|S$wi{71`5Z^E>XYn{mseuI4L0KSARpUDmeG^{!5y-}sIz zkXl4KBxEad>Zzw@)SF)Srq=H~IcJ8Gl;Z4jZuZ1j&a+F6#jDnSd)ThB&iz}M{2}*j zznQj8edoz1rw75i-T9MB(?P*L!6d(ntW;!-U$4iR6_?BDciwT>4DR9=%yn*cE5h@R ze|F2Y_2PNQ`1#3rlNQWBw_`T9Oo|f=ktn7{XAV);pB_M{Ydos#OUb=p4s?ra^={L7u@qOKWLZ3%!zSDlw;g# zFzbtg&kWDLFplLIw;pkcMIWE{&et_yLjk8wfp>2Qc}c`V1cwTNSVjGHns8OL&rDg7L zaElQT;=D`1mMz;+nkTmN=nd&)q!~#Qk7kCMku9Zw)dEGAk6T)3Y09Ihgi`;Ylvij2 zg~TLoE1nJXL3mu6mKFk~h3}T{Hnf1h|9|iGpL6ES8EHmiIW{>*n%S?l*4}5Wz1LoQ z?S0N%Z+M~?;j@C7gYLxwN9!oR3P z{el<%eTFZ(!kg-VFL>dPR=qwHU5(pYJKzgm__KyDx~jJmzTky_$nZt?4AVQhk2wDY zFZ}xqUv!1vseZu=Kl4(%f1@M0Ep@nm!3+N)!xvrguM@uDg+FEZqAUJ&!WX>oZ#8_; zebCyyDK@Uue+4i6CBqlp%nJB|7yg5WFS=^C+7XwZ;Dx`*=3~*7+~ayg?H9c8uQzml_y4QOB^a)N=kvyQ_D5dK<0XG$ zIacmV_3h=t9*6bNI)vCCp5HJCDq$}aZ0GQz^}Zj+A;QH{FVx~xj$fK`8Af#)Z}%cD zzAo1aV{u0i(p^O9sObyok4(;wZ|Rj=P5)0>D1EMZO%*&F%OQ=o+t9%E>#u`_=vx}~ z4P>6>^@PHOclq?_q2Ba|@YGL}@jo%*+h_V?{ynW}HNHc5tufl^kNNik7y3h?(;adB zaoxa~0Y58W;@4|Y2l*AhJe9Dwc1JZ%<@lwgKO_gqMJj~MV(u>lQQPR&c7ZJzzV;@UTg6DixA71n}uWuD*-tG0^!h3tuhr-jiTY66t{@$4W z`|};Xy|S;Ot#6O(ew;qM{|IoQ4;3cr!%e508SvBH)j~gp;;Dr8RQFV4gpN~E`cQI^ zTqIY?%QxpGkW2OMuxU*HxzmT-hx@7(NFRO0($a@Yt30IRVqPD@ATWK1{n@VuuN~kg z2H7D=`jlbPJmsnALBFx_AAeI*F1J7UsU6?^#=khZ zT!{H)6d#}$+CM@&!vzp?cF~>BcHN92u?lq!ok@=-{Po#&%EHd?tGxa(f4`1y!62&{VeKX zsQxNE_1DY?67Yuy&|i6(K0o~E*0e9|_v`>)wcw0y!^MusWxt0X~!>(mn1$v@{7-Sq4sXMuZs(Qj0*>UX^@|eB%1{qFP-EP zrxH&$37sGj%HeMdU|1^Wqc_h+Z-zEJn$fqC=D-Ng^wca%Q?;^5f zFUWq-c>&oKaeuw+2-y{)N}t9h(7Uo91_lP#C)p39ANTXT!iC#?dg0F!=6?~7gwlt? zlRg~%lLY+vmzv%)`(b##H65Xw6dmB8!{zJ;hYR~bVWRyoh^KS-S^0|cE6INFR6_fq zJE|+!yH*gAi{v1=WbQEenw)+8v=??A3EOho$kBs7E&GA%kmtB*#y<;0Sgk{7KSaw} z7P-9rfQ)c`xEMTl-Rpxhja~${ElRoYb0Ks)?cn$|5PSoreC`LqNpMLnl7r;3^bs!? z$;;o$=_5h#xw~~+-<$~3QMnv20NHVIxu{%pEKHQkZ18&btY8ebEh)Lsevq9K1sVuu zkqn;;2wXY}abm?K7s)|#ksg%1e5-NZJ(!M+7o2xzdj2-DL9Z)nS_JZ{~e8Pq&N`^bl7CC$L^gEf;b z(kZV~ek(SrLMUQ?e+n#sy2lvF`lH1e{mFBEH2kv>} zjl=O;y3O-)Z0%paeg0oH`@khncu{OTETRlbJ97Qkf59KK<-)BOef0i2|Mk%n;oBV!~yf3*{5C-~{^62FqxgPuyb9_*fKcXc0Y zD9J@~kX%%c*|$ooyh+DJyzY84_BJRN zJd1+&Ki=zmt6%rxH(hqWMteQ!ZEIel*^`fQBHs;swV2L|mh9UDxt{ zi(`3HQ9hE-*aHnz-?LE2^2gZcYHJ7K?nj=|KL;Sf_zUkDvgdRjj|{G*l;$(l(KO$3 zO8P1%K6B#l3J$WU#0gr>A9*yqH^$M*xc^nV!zl3 zc(p^%p`1})eqI!w;Dk47c%m0JrS&-}!3l5H@I+5|@#m`qC%i+3Cwd{CkExx46W)D> zCwju;^Hq!sPjJG^G(2BKPk4O3DvBpK;ay~Sq9?qUnz&S-;Dk42c%m2LJ*lNW!3pnH z!xKH>K?As`>JyysmJCnygm-X5E1uwl_n_g4p75ZVoJv=Hf)n1R8P8AA6W+lMt$2bH z-t~qjdcw=EYsC|s@D>bD^g_H=`3X*VcNm`N2`>oVkJAg`^LT<2-UEgwdcr%np%qVX z!jnD_J>l&*rBx1s6Q1BiPw5?}g!S?HuTj%8M-iuvnzgjx&*(6&C`aN8UigP%`b+rn zaUy)d3;#aD7hR3#_;?Y%;Dw(#VB^y0sNPQaf*1ZphA+C(U$e#s@kR9uUiednFS^2y zk0ap=Uih~fzUZpn_;?b&;Dx_r_@b+NJK+mn_zxPs=!$>wajE(RFZ@ljHja&s_#Pjh z!WX>ouQzcUVECdd{>Al$?qBf2 zKV#1GPjtnX%@WQ{(@I_br zZ_|IKe*`c5jM+<~d#lYyo$v)O{EG}cEsa^}!{xf2FUHwn+!hg{4L|6CS319HS*Z2}$wL1xa5x}x**JJYG{Ig_suIOm| zoDrLcG%f_kF#0@M`21a_<@vh>J1^c0@Al(u^oS3m^pfJ_+dLY&V0iK~B;u#f-zBkd zP4Xlc$w6{aWs;XmAO7wRpAUZ;FZcZ2{lh_U`nL4>JI9e@_C>jXv4O_hy@+$1uXME> zK2888-9_X}Ur2u}6zn{*>5;hoC4D*@v*%cap1->a@zYM5$4bYywB5c!ZnHGFBRKJq{m}&Z#&v!ud7mscaUiJnY-yhxX-&wTLo#jXIAQt!Q zGkAXYf+)ci;-t?#0QTef6{i$W$KfC9G{^bFsp>py7sC;cXU zCjB-#;q{yJp6tuGohQ31+KdtSm|l#G_hBF62~XH@N;ctni>1FceP-dpCw)5eH@)dM z;b|O=emV*NYc_7QKeiOpchT0j$9X@zy#CR92^5BV$bNr}=f`*8Svr2YyTq@X6Tm%{ zaDS|OstLr7Ll*lJ?N-S_a>;zw%SH0?P1y*!d@tM|3y_}w#yu?4xje>ivi+>LGl5I` zP3g}h4^-&8miMIN6y0L**#UkWnH9fC|Lgd$AIC3Gh36&xwHWM7fQn;1bZN;&a*$k> zKIi2kdHEJnE*o3rVseVgMdu+Uhqzo+9=q#Axy(W~Jn7iY#rpQ)^N$I@o=SLLvU{ot z#EwIjM_bCdAx9Z@cqF4>W*rxg~u@|xkwI@%jg%pTqG~wB%b>&J306?Dmrz982L2{AZ zAbI(Q-9kO~34FFCr+aDsJb>|m{e1N3!GppqD$--P2zY*$mkU>?Czo6#2gwCD;4aC_ zr{*CSUI^!d!@>OUa4`R~cLl?rrw&^2S`S^rD{00}ex7grBX$n*Ahe+P}|rbmVEwvV=YerpnLxAS(CQt$Ejsg70(kEO#0S8}_3 z*@^JIlFFvM7ST|xzqB69Oxn2&^E+)aKmYX>%1^C*4Bcx16>^<^DMCK?GcfSe>;J}j zK-AwfdcWC$7A}0zrx(8FL(%ILN-qmfE5jU@=nQwi5&-BDe+-nD{|TqFm{CG!=NugQ6>>OWR= zDHndmtslqf4g?=X)=BvMn#njl?!DPzr5DwdMs(?h(ka0X^j`j zL2{8E)VO)*Te^G;sPp;hJYFb|*57Mcp5jAWD!E7wl8ag;c`1FOhMHeG$>pclQ;&sL zJRO!iw6V@Q*p#8U5zHsEvhvTh2w88;@o5x>W`#<)_PuoTszyFw<+uDEe`~Ulv`2GL%kAHB_`+t1N-O3+3 z_=Ax@IeN)P`3jn%VXJKfl&qSN!){+98gA4re!hXp*?!Yl%F+7WEM%x6FR8CBdFahVMUjrRUeQ z{?mGJ$<~8fC+hs0&M|3SsC8nrg`9h|9(=+R^6L`Uga2lBsD+t-wDrPwd>Eyd6xVz$ zJk8fjUr)fF|I~=5q4nP{_Ou?9-RahYZY_!Rpu)%)3HRsn>&^`L>FyH0lGcNsO1K{E zo@#e>A8RPdMRJf_7XI1GMe=g>@_lH*-saqd(<;q$bid)e4vo}%G&+=1uMWrGhju=8 zGW>ak4n$+wo$M&T?x3TPTHwULBp1m+avA-mmy6`(?!?I@x^GIk_;ge*9roYcZ%~s? zhw?t|`1zKX3pdnHF1bh!l1t`WUM`YXD3|BmdBoXo+dObSO`h z%X=Z0_qI@3KC!%9=vX_sNRLSllFNeG4U$*DeYyD? zcD(1^ud?~YrzMvU4F2+Akw@f7p9}-uF&@9yp1=y{TEzjFnBtSxUC1p*44Ey zO!{6#CS}q|E}jw`EOvEISs2GRlw2eS$wjS@yp#^Z`J-589K^@Mu%uJ$ER$1`UW(e@ z_P$O0HsV=>?{%L}6uZw4cZp6OJ;wdHQM0p8-u=1dXAZwVH~15?Kd1GV)?*9yytLM7 zIwz@hnfB%MoJ+Jv(@*;WjG0TIZ=Udk`3=8gb8vKjE_3Hg{CRK-mpt-e|GPoG{+<*0^(oUc(fd7F&x1=2lFR6ay<8+Oe~+P^AEv)> zH{((Ja>^G5v@3XNzLb5ba$nl~-ilcC_gLIHqarBxa>nJ;){mQ1EfQakE%rn;PHpYe z8ZVNAZCqY1;d<<3IWH+WNG?lvc)3VkUM?Ij(esi_pG@N= zT#ubB<3)0iToyj+$8U zl9x}Hmta$Bqrv{@c}w z0_DQ>nC$J7cRdzzKIvZldTih)W<93$m)2vtXRXupoSNPbpmms@(-r(qj1}sc7bAnu zF|1#I@j%k^YYWdd|F4BhcbQ%I2_K4Hr%>ZxcpCo;iTIze@vrCC-qxD#REg!kz@{qy z{Mv5=m(Qas4EK=3{jrPjZbyDrzQnILfmcb-eRwKiU+j+R%Jr@lgybSQNG_^R^73i& zF#LT?$5VSAX9zsM*!bSzd7I$b%a_O3WAH0qJg{?c2p_ekb11p6AOCg&JSj!7Cj~4XFeD(VKn0o)9-Z!ZC501Xj_C+@NFwT=byZ4OOiq!_+ zJUDsQ*=KK#19Xvo6<}79$);cS_22q(A1+z=VD1Lz-x@92dljaA7_atNy?;>c(0k0T zw|2$rQ=0v6BNBoW-h$zYp5TMv!F7xaPjJG!!|+5;cn3GM;t5W84;Y^4g?K)u`UEGu zGhXKTEqcNWf_JpEQ*go?H9XN1-oXv6c!Cq&tl^2C@OGT?j&l&*<=gHldDSO4;c2{xp70KC__ovI!V{eE1Sfh*|8Ovr-zH=(S-XxRPKG^bX~C|B4;a4aYTV6sXusfvf5t%@ueuK#_ig>u>KDB5M-5+eb^o341uy(r!xvrM z_kA7OFL>b}GJMh1eRskayzuWce9=|A+s2LEzu<*GdXt||L|658!WX>oXANI;)&7fO z<3jyU@WMZ2_@XQRb;1|C@b5Ex(LKZX9v{c5U+}`u*nBFw>VKW^1uy)I3}1BB?oRlE z7ygvti>~_LtsVF$c;Vk__@XQRb;1|C@RtlVN7-as4BB;j3J9 zH`(}AKTBg3(jI5Iu%mzutyfot6aOPj{_ZWzqe_`|SO6 z3PG-7CpXSk6$w6{a?UI*E->>)6-M@|LqksReCa3E5==oJXWdnY2wW~}0_-oEWZAF=nQHiHpp&$AbZc2d z_{Y%yHUIVz=l@dJc0Qc?qj&$;z2Fu36~9he|Ch-@a?yQBUOr7fWa$6;li9b8eCOgV zM_3m1fBlv5MgB195Ba}Tt~xB-iZFT}!TG=Lh5w7ZUg?VV<0SeQ$Ed{9o#txbC8 zk9~jobZa)=uhf32KZ!5mQ)aX0lloO0GrZ4SxlzoOin)4EKkCvi{x;P5ylp*K+j1Mb zjZZH?ZuGq>3Fesd=Q;gkd=Z~U&+&X}@~@?aAPDbs+Wr1bcC0kh%i!x5e@||@S}No> z+OO|y@2z%!GcPbcF-1PD_u0+Rk}gnx5?{opg>y|miGNWf#KZfnPv!DGbtOlsU;I6* zsCw;k z=I;`o{3@BxB;e2Q-{J4u{N;yV+?tLvC6?Z02D&@%HBa27ZGpl>f7c~=7Xm*kUr~O& z3OtKno=W&Wgzl)usT{vF`_nw`LvoN@mOg9pH97kh;rW5#T}Q&!oi=jxpik@h8=ilD zj`3g5+sNO=bhJFA<6_R=MIAa2Y;bUVj`+FjULTy9wBU*%Q!egf{Ww+(ntyiGU z$J_DU&u=;R1E0O~j^BH+!`XG9xb^kFuxraRp8JtIN#GrOfAM4QdU|2&(2M?QOO)W> z{dMINptp4=@QL$&z_I*%(E4@Y6Nl-KfG%l0$MD~I(~fPGx%VD^@biB=O#BbN?Vq=7 zs-Jb&*A`!V7us;w%>OvJ^|I$4+H&eyA7LA|{O0Y`A3J~V-CKWU>p$IzHn=vC?oF?% zY(pEiZTaq9Ti(~WX6xCX-G%z=AO4S5*6u8Q>RT`R;uAM)4d!n>|BF*kKJw~Uy=LT@ zr~ctR3qQQ%?sXSDdB^Wv_nLb?^Z9p;{LYX0e!TG9I_dVykAClmZFo3d8~*Ak!}0s> zHjgrV$(9SZUi8uX@BG(K|JI%BzVq!n**8S*C4c*vwxb2{_v1zPq=o0h`K=pY{qtMC zTYSdW(my=9ZCnYK^BLcdC;Ptt_v5i&Mz4+A;_t_!eV2R*S79>LvB;$k;)hdT^84}r z6LWQ^>%@CMp4NX_4~~}ndQj^`oxh5o-Q<#W?tSo+Y&x#&YXtRG#)ftGNcvuwGa-)QWF=cn*% z>;vcGlRzvXi~X2udiLY^MM}}Ucsg2kBE&gfc+Py&m_OJ1EyP=Hz#6H%i{A7?_dJQ( zPW<&qMDqp9vIQhGroY{RwrDBj+9c_EOj0KD)OLkiwrtth0rX*!U7c%8Rmz=jHTU!& z;D_>A1ekQXbbQ915t8oL**5w5bT&4AW?5&0{sn`JYrl2tE*|((>rGL6V&O$sxjv*Y z^JTBwm%h@Qju)PENizQTV>-T%XFTVLOP`;Gi8{XbGj8P9dhjcL>5Ln76)&Im@e}cz z{b?TKU2>3I)Kl{ujAhgbI|{` z*Q4ASx3__VZ)*iiOsO9~0y0VRVZ^D#(}_eM!c5AAvy#T!7tj_YSG*FsI+<0zF8feYS``?;Lqp&vVCxUFWy}a*51gZQIe-rtYbBSNE}oVt<;4 z>?H@uMRJwAT)lj^^YH0M!ZvWv$)~lK!LngZwjrR4{ko+)l+!oS_Rj5XgRc*^b)Xj` z?~<>!ejG3JV|G1!3II3>F3Cl5kX+Ps$;+kh|F|C?hyUA-m*k$b-Q34tNecDv=R-2Z!Fd zp?7dByvWWP4*4*Syk~c#u!AFc=2`!U+}^|WcZ>hJl&t# zC49jPU*)2!_9x*l0$BYgZa<5T@Zld2} zUJqPv;YE`^y->Ejl*2=b>(eBC&_ffQe{UlY)DDfaOy1Yui5BHWJi!U?BEu8C5Wn@^ zI)W44l;Me<@Z#^}5uEUDH9XM^@qA3}6rAvu3{Uig7X)9!J8}k^d=Z@R9yC1B6W+lM zt$2bHp5!Zf!n=1}E1uwlCpghl`reqnQ@@eESg?L1_)G^rN#6)w_;pzX5eexz%~zupulEEezGY(lI8Kl7(RWJl9UNzxRd)1fxS*T0`AXr^KYBmS z!apVWYt)EH$ac?TJ`|qTugUl)|2sIuxs&A`9Fl|NBGE}+F8#gfoj3<`SY^TedIv`^ z9DN6eGh_kO=^Y#@Z_;s*q&?*M4TGQ}Ubey~r+xrE?`O`|^3X@y3$<1n$1}z8GK>l} z-j0=hC;cIPA^ovr_LB5UT>nZB#`PI_@>e#u{%?e*oZ@F_=12D@GaJ4AsBrWfra%6r zH~k?z_0!A)3HXQC?O^>uAb)WqmiDEczI8v|Ut9++{lyk0`it+y^9cNOceT)up?E5x zzqos9d~;qh5(MwQJ8T-$FFnFEpKt%F6%4NTk*`=<`;$uF zWBtvF6>LRh_*bz%Y0o5JfAXurk#+nCq;vRvs0GS}GGsrFU!DrjSo^Cxs^~de%#UJW zobFnsDHlHDuKGEpC+pqT7F>G8wo7*M)e@7nLatuORtx3vVyP8oxm3USm$+&-UfpB0 zElqk4-Yvnt#CJ<@e{Z=<{a5`}{dd9ilKQoy;r2V`U4Qj7FT;L^Pe=RjfI3O6;!jz+ zL%Hj}t-mq))nIV_r}2pqS|-`4|N8mwynpG^S1_g&5uk>oORc^=YDbP zXFoH4*Th6H?6Oz*;@Icajh^t3y?y^X=y#IK_Xk^Rji-C7Y3-poUao&O{1`T$|0AmG zMz6TzgQpKCHZUK_ZGDF{cmAW-_qH+h=HLC@Eewgrcod)c>6LOIHfs_L&2T~5C97s8kavBSwfyNxp0`{Cw4Tq<^BN+c=Q#9S zhMv>Vb6!)i=l4F3v+aD|ix zweWO)H}l;D{I=ha*tf%z)AJiK;<4l(+j)KeyasXkyoQB|&uhF7&uZ|q@)hM*(mO*v zmGF6u?x?O@?^;1fE|P=fvh+QZugTfhzY*`mzx$rBEl3A@jxZg4zt3xp|8F-yJ+Gnk zWmX>2aWQw^z4dvG#o+RF{KOy=l9WqzeGt3>Wl7I#cq%;a?ytozPj`>L*gvPVw8w{= z2KTt<-W4V^<(OnqE__}?_3L?!h26d#ohrHZ(w*0xyMqsGG%A%+J=>_|%60yhTqlHB ze!uv8d#o>3y?Z|6m3Us`btvfOSCho2CSSlaYEa3m$-h`d@%yZd-CP)N#DJDb_KVL~ zBP>IH#Ueh(@<#mD9{F@%3_58B5ud~t^(Ub=`KJsEy;`e)IV}MCX>0Qp9znK8wsf51~(;Zbj zPjZbtA8KI&={3pHI8puaanh;Mu%DN5_)W?Re!(+`fzk=QEx%v)8=bf=hZua*$lqbjeHU6E%D( z`oeN@Ic;6*b8_+YiE>|=kHvmV$I_oc1KFd#@{&Jd|BYSkzpwL@N4Nf#&M$oN@;iyN z+TV@|o}4|5=OdfHrL$i_uqN; z?f$oPzHs*2w!ZEkuHSOzR{vW%AK3GTkA3c~w`_gw-qzpJ$&c+GMjM8|_Kmk}dC5)B z+qyCT^pD|o&b#NdkKOqzmz}@mzL)d2fewGDentKhr@i-+!yo>w2M>SxKi+=$TfcDK zw*T*}I}cxf^S6hemsuQU8~g{@xccQszxU%?@$mb8_P2iIp23XXdAE6#U;MXp*f&IL zVDZ5hD6TO6&c3LxLNGp@-})5%md?L*`&&BZ-$;K;XCBW?e+G}tpB%rXqxaP5y>xm{ zo%({_U#GOfJ-e?h<_nd+URC!h5L?MQn6mdt%@+N8xei%)U&-E6_X+=gx`iWa`<^8<8nE;Vl`S=!JN#@2L}<@E$Zg(Gy<$J#~T;-li$fC(#S>d`#^W zobawUJkb+g{5^Go6W)U1iJtJ{@2L}<@a`}?(F^gu?YfBCDLCOhV0fY@ydaoxQQ-+r zcxPBY5aaKcmn6+PkYUDt{yIN=FS^prlhA-q4ncU0rz zDB@(;eb!FFtKY=?0r^9G!3#fgbL)5${wCwM=n7x(!oSGyMOXF4oZ#8_;72ZOJ_6uJ4ONKAHQ#StM{YC8;yzn11e9=|=ALvlO;Dx_wpN(6iqk7MX z$yN0WUijA=zUT@s-j9SYc;PP?zUZpmo$v)O{5uR^bjA1C4(%7b@EdZd#+V7*+w{ylsUoDn;{M{&vC zqu31p!~6dhevq&)MxwEc{eB*ba>?+t-cQC)-=i2~-Ai1c1 z$qTPIJRAhC81ea|+p8ac?BV~r>*dX~;G?1Vr2QeL>3_e>0Z|U4+k=6)HnLw#BK#H@n90m#U6B>dN%@cNDXn&*whu9H>2Ne+_B=%AO20{w(+%G&P0e|?~R(s{9 zSGT4kbd#b(>wT`XUmPy%7ln!T%X8MB8Su0673Eiw{o<*F_DgqESFU%hAS4&bL2?;A z-Ru{Wv#X!KQxY7#Cu|FTr^M1x|H+Tyoz@WaJ0%^;o&O~MJ0(9J_;m2&4)nry_&&^j z{F63MN)D1s#>SiEg?$gm<9m?9YY@I>r1IVSj^MN7&DRVc!NXPsjVC7l zUbfStfRp@AMciW&JG|iHJ*L;x&-wnc^xu6b;^MQ~B{;P!4$pRt&yAM~{XD#>%DV{F zF117L5~|u8wkx~8STBwhOU1^VfYu;nyOtn0$@z7NC&@8h^_6?~Oy%;0+Qus@`9h;s zNZQknxM5e@?9q%@x-n{djh0quH;JG1tc%}rO_bkP%`~br zjb3K~2fxwdHfi?|*$%G1+`<32d356IfAG^=^~r3vb?t}`dm!Bb^i8nE`FRvROWW}T zI6lYm8vgLed%nGXM-cok{D$O*(T3PH{AVa1KzZ^-dEZ2N8()6S=ZKX6by?V9>{o<<~>w@89&iAK2g5yZn@_ZLmuVGWanLcakx9^x9 zH@)6Q_x_)Y>9_5<@qLrE%1k-m2D?ng>aaqBgV<~QRhK+!`fVVPZey6)Y5HxK4>O~! zVMwXl7=7;#oqoIanr+*H;q%ciUY4le-t+FmD1UaO-?ZMB#+mq{akgOmX@w3`Bb8DQ zZ(#`W6zdmXbOvplZF*f?zpbtY$IsxmMy9UHn4P|MFMe2`*MkqdB`%*`rAn^%SM^XnPkqE|Mi!2fe8PI7_NuLm zpV_!n@{t~i%O~VRYph>A*DtLimx*Q-dw@)WW4UPg$6` z%;qTzB|n9kg;%)soYL{|LvPI9^Ys@!bo10VAOD(rcKzok?+${ej4Zv@+u`pSdTg_w zeDm?Yg7SYrdGe)kCcbn#&aTDV$NHJ5`o-7X3cKdLaK2K1?N&~!o2|q8`^6U}*b{@)hsVmEV4u&wdU0f_OF5|> zy@r$%?TN6SWH}KofS*YE;=@qS%WG)Pb@~8yaGf>H=D?PQt~O8fL;S%Ox=MuQVVl}; z(cZv54xVvdX@1HF^?{S9KeYC5?3Hl8#C^OtlfOBpHLe*BHd79s$7EVA>IG*{nf=tX zr{upiJF5kWiPy*1{a56w)na+F4RHC4)nSD+d4K+0tnzEFYqh5?H+#y$%#~(OSr}6C zu}!i4kfpbJ|Fy#M%b$GYpC9u^*e|qokH25@HxB&#kx%{Z2VeuN-yVGM1874KTzieT zs~G={0~etDPf?zHQQkM96D$}%x}B$2XRU;7=oep<2F$N{tn4ZBGYBr<{y>-W^k^S` zP1;joJ>fXjz4_3+m#(?~SARVj{iv zVe^FM4Yf-5t8_EGDq$TyQmNE>@)ieyt-Uuo)M7c;=xrGuJbvRq@D|r7`HR=L%p1-2 zT4doWn@6tqVZ3~$^yf;K9eH-`e?nhBH2Y!C{M^iuxmR8WU6nN$UY;M96v}*aZ=px=HXG3|z6f#NIF|Z|yu9*}zd15>ob*vx z&vN=8vJN-7NKOm8t^b<*#21BE;+6Kfl2W~g{o<>}fnfNU%jv0)c-6?lagtM5Pj_;X zTqLK=UN5IkimE$whKnxW>kljVtj*;Z;5U z{(h8N{1g@5X^F6zxblPHgeiHlKFp+&$=e8r#m@G zE|Qb@Ao(e+aCc#%gsqoirL3IZ!hZ2p+uF$Kl#xxxNlsxsE6a)NPo1~Y`ZMmQ&^bk& zU(~*}&QnF#pQI;z(OWRThw5pb@6>u$>m&0k#pwxO^du+MqxE7&=Z(xir+vRDy{}gwD_uH6zkN5>+<1vZX4hVKp8u~wlyoy!`*bHd+jnov=Yy%U&OUo{ zCyMn-4uJSdULX=8Lbm>w=Hp{UU~EAzWJJ{*$NollC3_f8~BaL&> z?Yl=xxw(hVf0%i4Y9F?aXY~*D8;VJBmBsT?|6x0iqCAVo+xf?w^h!C9av(#ISFha0r`!MP|WZZOPSN=oI$4U0#vG5-*r1oK?qr~SWr9%+ehvHi&`><>O zq1l5?`*7CmL$e#hntjaMha2(Qred`otm+VAU;e|TGgJF8v~4I8_7R2gxYE&b-=|Xl zq31(8|DySdxAV`jJpD>Jka8g9Kvx`Su@BoY`n3=Fdlhzdv=0{#TxoNKht&DQe(Xcd z$4U0#I<=@}j$$VDst@D-!}$L4QfeQ1RvEv-xnFaWc4tyl^C=-}Z32b=cc>&!khyD_ZU$6z1U3b}ee24Y|K;pkJ>-ad@q zbF0msKEK?~pD-u24?|w0v6KTT2T~4r4n+Kir-X+E#hvB-hx(06LAQpq51sYtvwOA= z`|%%YK91Xm^bv%2*=`s5rp|AT+lT*@d*7Ysyt2CW%m04xu1Egq+dej$+J_Ng%N~q} zA&Bfl@vW162n<_u@cHFubbda??7^me_$IRt&29{9_Ob1|cjRjO3gzJJ3*trHru(uF zmwrFB4?}yEERT-8cwA}0G3`I;{&L6*-*Kbqc)Xo|9w+@yIgoN7`LBCd6y#n09?^;kLE654+hPowsKC z`;d&HvLis44##+y7cF01Ty-ey)Q)JmuRpa9qjG5HPpdqV%9)p5DF;#xq#Wpm1EGBw ztPdiOlX%<}{D)>=CD-Hkmz!lh+lT%54>cbr*@xjAADx%j&M+Of58KWkruJb|u&r}a zeE#xavJaPxZ=LMJuAfgad$4IAzT50Wvl}CgbJ6X)cNI&ecy3SWzWj%yf8g!I(-Tg) z_0))G(UgDj@fA(Se~{cXOS6sH&fi zh(5|w*xU0d!tx>Qka;*#G#@9~hoPT^x|3IXm}DP5*WQ2lB)tD{^!;bM-|z7F5BKl* z9Hex}7ukp6Ti^Df*@I2{@OHBg&29{9_AzfCK7U7{P~|4`YP^Vj*@u}wTzmgv{GMBF zgY^7iJAcBQhl_n3-fs0QBL;96+ zAmu>Hfi5@@u@9fw^z}9Imfv3v%>UK|Z;5b!c|(|UT%BX*4@3KfB8l5C%9Fk0#Aa~HOYOsuhjIRe zJPKjrJQa?3n}#U|QVygXSdIhUKICsK2lMT4%iD*`>l@mKj|fTjY9GpH*z)chG;(CQ zkM@@rY(8Eq`!Mr?bbmP%ZPMJ-+BdYnEWY(^ADTVbv=6^v_MzF0VcUFc`|eB26YwAw zu*K}cp52H2{r>XkAEowTyWK+BsP9DM(Y~W{AEwWzMEMctS+tDtq;j8|ey1ErIgoN- zWe!CAhwG2M|1d(aNBeLX@cQsQI?Yd4_MztEwXzRKQ~NN|wc_)V(jkcKL-DO|`_Syc zrhWKTvk%Q~3~TnW?Yl3}%@u0BTZJK^zV??hf1KKf?Y1D98|^EKGt?E$OZ|r-zr>?f z{;XUszNTTyfs_L&2Ug<1+S-TV>urJ_?L&X|(4Rky-a~i(L(Ru)Wgjl2_F+UQo#v_g4RN%o;Awa!t@4Rxybd$KN{AAkShQfeQ1));?6Sw-il5JdK&_}0lj z?E3wOW)C*)!|$1WXm(>*vyW}xeMPRmFP_^|x-a{1;R7dzeHhqy^zV2I`+F!q@+6dD zIL5=gXnB9}*1FnhwU?*%VN?$7{AuN3QaSU|E9F4Sfs_N?aDcy%yms%mdAueh|GOB? zeIvcwhGG2b?fo{b_9E>NzTZakagu#_EZ%RE`CxkfFqB(#&WgrE2-%0?TPORl>-Qg; zJ=nAl|I_S4vm3*jeGK+taW-`~Br+BaW;8Q1fw;eb{VK%N)gA>Qx`E z(OEd5DpABOe|WfHevl&8Mr1qg%~w3mQ{jlWX_#^# z-{#GkCW^}cgL<>(wFUF+4FPlBsv=7fP`_Syhux20IzWeH8d3@^mSL7zk#fiDq*ol4l4;Su8 z?ZeR4qfDY>E*@7}aABWH?Zc24zGp|%@pwD`JWl$Zavmiy2SapwJka8g9Kvx`CTmK>LOS^it4`~~&{`Z${ zK3*&Pa3Qr1C0B%+kK$nnBKuH$>)Spwd$4IAUSRg2*^Ob%K1Ta+rc`b0sO1jC%eqXv zf#SZpL@+RC2Q7U(wGYF7Le8+SD2&IIj+XnrmD-1%5AFPm<}2RLKgaU)E9F4Sfs_MX zabRuj!-zw&qkXt|;7Xe-e1nh0`)xEIC)tPLo;UR{Bwau40_r!3sH_V!_9tl90i%Hk`heR6o-O8gjz z_Itq+K=Jvl;WKDqUbK95an+%)Q#+#NzW&rcjLM;%KdtgeDra7Lr5s2(kaD0K4xCOP zdp@Nde!2bSaPDZwV~%@%*>B4++0i~kS<4=>?88vk5nWez`^%b-lk7uL^7NUC&QCra zw-4j*$IjfIoAtl7tCA66=jsa5SP zdlGIT)oz2uYidioHOS~E*4{pBt2tulu`IO@+c~71fx&g{hiek}7wq&H53PM29bbwk zg=}j)Uw52_DF;#xq#Rg@15y8BJ1l>0foBsZCMMuZ_{@u1^-a*?_lslGK8)PG0R{+&+vyzdV}Shn{s!{*j0APY5FWP<-oTA9nrxve|=8 z`*5$>hh{g1HTxLs!*Xt4VdH3}vTv0(Vqf-Q=AP6(4EqOV5*>5#xYB|P`&H^c40+*u zb~GK2xAV{Aq~9qAQVygX=!OH{KD6gk+7OoWABH-<4b5fHK74do)T4da-}5P&kJrjR zTuAN1P_k`yq2{R&ME0Th*0+6V_F&UK{3Wvw&29{9_A%Ipl?nd*@=)PET76VY_)Ka6rCji($)IgoOI99Zl9<>su_t9=;pM@1#oo&Qktagu!)QuFg> zXy=CMxc@M|zr2*%hanq#un)zzPWEBf`^#nzHtoYHvk%Q~j5N+gVIR(nHEOx>M!cl! zbYK3%g}+#P`>_2^Qv0x-C&@XfeVELbG&kiy%7KS72iExaQ^L*M<7yvjK3*&PF!SN` z{9!n1qIO6$9zw`}D8BV=ADTVbv=3`$ADZ15*6d^3ckeCC_VMsCsJNaScIS8v9n;Qt zH@dX;_F;1+)@(|vEYkCbO~$lEQv0xtC22;=fs_Ledk(bt4>NIgEVsXWyncWA34i>T zTllf_OI^JmTk~;}eRwRMUmi{E!$?<&+9A<+2qODXeCuQ%c76WP>_ORwswrc3qtXgt zA5P6okFE0Pp`+55|1k5ZwYLv-uVL6Ki_|_0ITMei_FOP*0dfB1)gH$8m*dZ; zETs0KXI+zjQCmdu5JdK&__kX6@bXK8;1E_ZnU{Hg;ZLE8cE4FzuVR;9dUN<$R&`yj;CrXgrU5-i6xp z8-;qK?u#ahr2?Y4dT~6<_*o8Nm2FPZQVygXIQ|?+$N%x?d0J!2ffJbnPZ}5uF5M9X z3ut8KaesR7#)CmX`+7N>LUzto+wb|Fy3$u-2s9G!R4~Fu&MlKkdDAwx8D&_D!8_Wf_ z1hdn{GQM(1F*e88P_K_ko6;0SF#`yABEylSp7b%Re1RdX=pc+~CJ)?j&W*tozj$K|$ER}T$wEHcC{DxZ%S~6AIfTYG zTx7C3(*S>GY6T|Ic$Zrl3&u*7@qLa(xqNNBk}voh-+azRKp(5(Q@EuOfX_7?q6DKD z?9bI429ju0BPdoY0f^(5VgjVbijC=9eP2*774wBG#bhzaYJ8?f`3&W2MPRyQf!{%W zs&ZgoVJ?_PGfA#msk4=v!R}J70btf$C>5rI88COh6SWs5YpFGBskt7J%Y&)4!UQQ2 zsotpFa4zoK#f!HT{9Ok_tZ8VXR+%Ps0;9@vf^qVY^-Qu$l#1m7fGVJjd-J^n{U{h3 zuS{1dV<&=oP$pnK@ZUqYC){SeP%82E#skF0gQ1ynzLFiAnV`h;flKj5U4)dUUCnj2 zuwE$a3nnV#Gxcn~Xx(a}-l$ZWnJZ-hK8Y76)eGf%r52QDrn6(ETpkUWDo##iUpkX3 z6&rKG1dhIH3RNeAR_b_ED#`>3R+jM=PJR(Y}Sn$c9sio z4BQw)drG-l*dmMx$Ps)RFC=G9vqx2n`zsBIw1n} zU}RROa>011SOphch=opo+phf;57f1(D7muo&my%Q5yWCe9(V@MaW#c4Eb zZoCxWEd|pvC3M$f;Xt-9hdakz_$-ZSlmw;R96J9{u3Vf(H_DAq6#~Y={Ti~N640aT zH(&tzXtrJg`=|x8(TsWp9joB-UHgJYH8)vsB13N;gANI1YlUhs$FIf#a<6fKykikZ zx@m&VH$XF?)~Z7ZRS|U>l(BDcy)jdTHuKfZ)Y0o*i>n31Abzl$-*fKU=>{fUTNud~ zs_3hX`JRXhbM-2EV7)r$JEvR7X2I1)u{>E1oY1qr^Pu~kkD&{0vMu$j4MmrLfSjPt z%_}>?A;&^!z3~e4R~7xreU}T9ZW!lXGlwc;H$z7TLx2lr_BUq;X!e`Y3Gof3fbUy~ zTt(Z0vD!?13gf5ho9C0hL%a4?Ch8n%?28O*5M3>YaX;;QJrw+`Ua_ym@1A>Wh*lcXz&1&Trd{w3-X1DEVM9rhapad%m8Q%(6_4$59Det1W>(N z7-!aWvF1P=e?2VT5rYB&6sC&}rl)eXJi}TJ6RpRAelOQub-C#=mVvIo5rw*Sg@`&x zLgX<@8DfY+*SMMmMoq^eug4s@(#*7LZyvgc8T*RmeF`lLGyLQf^PrTB_GB%$AF7U- zrQ(F6N!~M!X~Q)MW3=S%raqO+R}Qe~7HB?K2_ncUGtYTM7{Ne+)G#@?E@EMJY6epk z6=~QnH$$VsQgL(35VZjG{uoRQXiLl%7*`xxl`)q%_eR$(97)%Ao!Tl_8qfxqBgUX_ z>R=cL3WvJWWfL$$@1?sf8@bIlVBOg~)2fG0ex==BV(dR<=AS4%}G=z61ADq)u5Z0|V1M4YkC zh%?=N4h#^gLU)HjZh{60r>g?2EY4UA(IsIQ*W6rP&cVJ3(BC<8mZ3I%CoGh)TByR@ z-j5FkEy}Yjg&|fMH~q^X9F8y*ea0*U*QeaTx2XwvJ_-KQbn*#z$25dU3gn$NN|Pdg zfVOM?z@+;gbKmSruo`NUb508A*cCsV8FBQWUeVWRfNka%OwLLH!yG*V-NDCUM_LTF zT;8IjOw-cF0A})B9bI#RNYj|C>-EMIzNgsgLf(}E<@^99r|U$t@|c)Fr?SrF?u=Pn zAR%;VX#K2%Rb-A6fy=t38S?`NE0|msdKKNoN2vswvAHmMOOVTB7S37=MGw6WMjQsH zQ_Y-KT?^1P_|z72r*fqVX89`Ca^)=8gz4JD)c4IfZaRdiO09ScR%m{3IsI4%N5C+m zMRSpK%oxL>%O)mhhLRhTgrz1a*Ezs)jp;1MY%#ACR(O6YgC&r)9zrN+nPM611~ed& z%Z|(Spz_pU4sFDN1?wM6GP`-Gni<$x)4q8GaMO*~(U9YLZp}6g*4(fe#$gpo%rEIU z1zfvL%RU+;i}FecX&;QqIw8?^~SP)6F zG&)8dVoQdDC>QIM2mv?Ixch>H8x@D-rR`J-wPm*Cl;%198!42a6QHx?ur%h18HOhM zD9uhcG+nvZSTkc`&R7MC09drAvs}+u)J^a{w}2^G*%(?AFo~6PJ^~K~Cr<-rB=opZ zh*R_x$QFt(?01*X86@@bZGa}2WmtDkhk~y5&U}(8jl60PCj7qsQ=XuY5 zDkt77rWULX{JPrbjF&3Fb_;D-%P!(<)bn_AWj8I+zXn_y z!}S|}{zhlwwU?j;G`YB*bd()QI2fdkSOSSw;bnoYp>Chq|GM zbThxsF*eYdW2|sdbjtEffN$qhb+f*!3!c15x>lG&zO!$;Az7c|Z|iu=4u=8q-cZ2r zG18@2n(_jigTvII>tLpQ zfG+s`Sl(f6hlSmFLBTotf^itam>0)vP}6&aAu*IcK%rUYc*UtY_sv%OKC(Xm-Tka^ zA}9v+8_qc&zPLKQ&qPHxtipo>H%qW-h>7~MH$6KTf|h`>7_g}@uHdeBawG>ZGSP60 zk$cFXAh28`6$?y7$I3eYvL0iPe5 zgTCA>1MjPIPQuYLAos~eLiGyu0u z!VsUJz2+@mgb^|(|N#-Zk-uX@W8n> z%;!vkG!LnZQ4xc=z_d0zJT=@N+5~yi9|}^=73l8OEjH-v^fz9hN8BkB=e+W6`w>h6 z=yaeuS!g&N?l&8YWv4+fGFd;n!jKydQ2!Xveq?|i^(Jhh#?)1Q91PVVF;L(p1$nNx zcLKWgTu^Pe5D@gRIUVU-ZIhUxu`FK#cf}|=p6GMImlOLV0W8$gUuo!I*?y4(>EopzL_)pqvT(?CN4vy*`iqpIf;_x5)Qu zEZa=Ol{=0tKHJUZ=x<=?1yt#E_p{QBfuhSOa(@z|9)52aYwXn6K%1G}>!W@{IMfpR z3We$pSZnaC!1~zd^sZe^RM&w3lv&?hq-8G3$5t~lXEt#l;>H&u_ zLFxN&9pM0^orOlNjB_#MtW_Kl$R2>_7<)um2RRE98=MWF z3^l1M^((mXsY+G;y5>Y&<%D|i) zgiYZo5lNPV;IpzUnoNQPoGosS&VbpR)8vtcWXF^fxyfuUcGp?DyHF+9?Tm0WP3q&D zX=`8%%yKZ87{a7yAm>jjhv8vk4_d|T6X1SkeT4Mto1t`b<^AwV54nv|TV|4>z8g*P ztOmD~poPb1NK9qDQOuQ1WI~0tK)<)V!{teMR?Sn4(KVKb5$=NQm|I1fwt~R84x+-M zinFAv%-7-#9rQ9R@%{EW?AAgFyFji-5;2l=h;AJMEy+nfi}e|U{ciFs)ST7hEyZjd zuBvBV!>Hi@B?9?&Zx5ye5N-_$aHLCwpdlrvH^+%YYJ(>~mxFZrI|oQeHRib6ay>TnS8YgL?K!ia+>s<{#-=DZ zbar$l9AtrGfTP|Y-9osTiF5dMF26Vd;+PbV$H7{nZ^sRMEVw!T=g?nxy3P{r=*|$B z%*LOumA8#O&d{_Mok8UzTHNGeNw^%j(~#bV0p;={aYlI(2`(PR zDr2Et<405jYS>1R-*=j+|Lr;IIl;(opSKTcdy; zl?kjz4!|f!M|R#23=Z!V@%dR-f?0{9hCvn0@N`_vjWM5zo0;}8zfQ=f2dgMe-F`B^VKbCIwgks8quFsP9OPx!=X#DFPiJ5-<<|S?LCE9* zMM|9^JZE4IA*nKO_-)!_p#RkxK8p5Og#Kk`pRgBW6CAz79eKiuHXP=~aP~(TIJIEs zXMeb=qaWE#P?5RX&*+%0Nf8Sv81XiKI7h-R^vpn<#vQ!idm7wdhO+Y!Y|+lZRKgK5 zThU`oN8-S1=41KPjPKjCdvtep;o~tk4Yo(F+o-lsx$gW`Dj;ryx zB-nR3;#cnu_FX%IG~!q64fc(UA_JsR0l&84tEn`pKAe?-4#62d(yjwI>Bi{*qQaIr zV>rak^YI8RW4ex0L^$+~J@!em9L_nOm~pcS*B<$6FUdl$)E%eU9l+FlG3PsSZJ*gw zuq}$?u*cklFj>jrh@q>FQ4fj%!vsf`3o&q9NIS|K6RK?wx;cwnjT1As+%o5OL2=l^ z(}diqj@`+0wr-Eh&R*u=xsS?|TLpKr95;q4y}!t_X^5LR&X3~wz#W}BJS#BiJaKRp z{T`>X@a0A!BN(daB=xazZ-eBpH{`q;xF_cu=S}$tZ0UXQ%X$YDp2L7i&v6dd9od2Y zTdF{7!2E*0XdHV*+_Ul2i{&a#lG12G>#ff=MJ#j6+ek3i<)6Vm;WS5P36m;97j;W3 zB{-)1@WRB-;-QIYXaX#3bI|?V3(n^9`)MKOD^3MDd&?XLvvaq&F^7Y;Fv6Guns>rY z&J^KM;fm!7>RK2=n31A6FlFGd!ZPw&*Qc6E2i{EW#F>{eT@CD6Y#z@M?{TXb#&$w$ z(V^gT7-NpRpR4=G4G%X3Fx49$l6S>+h9$a;$*tV)q;r{5u;o~Ob z)%sp|Ej^noK~5q1VmtfK^P5nuZo1r~IWU?D3yj!*C5%oCo2`x;}q9! zS{gVxn^C#;NcyFYE>fs$K)_EW@;g4N&9&Lt8j5C!v`*4H1N^8bp!Ll#9afbZtgQ za-q%pI6H?OE_5#MlZU_%$5sZuaUKER&R$?dHUi@gnGpa<6Br^40PX@l za)C7t%q}1B-g6Z@DVW1CVYp3l6=x~uD(?6lQbi(xHdeE_3Px_^2wgMnl(4f9m{sL^ z%}!v1>2U}L3lmPN$fS|OB&-B?P7zr+Nf}Ae>(K&8JDvM?fJ7MscXG&lGDuEhoWVyQ zW>`bqgB-9AaZ6PI!1~C+*#KWTl#x625Y(~zfn{c?x{Hfy%v7Z+h7ooe#>XsYe9UJ| zjE}pqh;S7C0a*N45?@xB+r`O$Cngr`)*n#+&mY)6hX>%VF4XooeUBm==Lat3bWtk6 z_vw+a4C4b4jFMRx#itbgi- zo1%UQaLb2>N^v06nZe|lod-0}Q~f~kmRtN@u5uu4SR!=jI~_tAj%7pY-rkg-aLx3_ z`plR&72te;6@`TZb>JUzl-y1R^eH*x+L^~ZhGVO6wKvas!QJfoEC$U5!E7CN(;UBWqKZca z=6t|258S)s{w&nIN!gg{DAO-bOV=M3;^d1?m%k9M=z=SU!;w=Ycj&1Yc}~DGux6Zr zCjr{3g4^O`oj=c?`E-cT&bS$RBgY*F(BZ&%?8nZ*)5}v$?o<{Pthp$;5++}!$wQ|( zssCoN=^V`Q%ZTCZ8ozX#8t-%2$6c(Y_qZI45V-QWgYO}rVW-l)G0x>*nqi!-iIU^Xvd4=D~zoE924RSsclPJ+Bm=EX7%Gmx{u{ok8Q6t3IGm z{aMskUMoyOV_+V3H*YCE+v?I>;$mj4Ip;r4Mdykoe+O>lL^D9!6Lc(~7UEKYijpCf zCmx&QSgqmkU=3#nb2)WKir4h0gTND#?ul7{E&<91*7^>*WMEUd?oya7x`&+i*Kslc zkEKDZ@LcXG;?#)Y0D~hJ{!{S7AITc^#|ZNUXO=rSx1+?a1M8RB;p~mh$mfG&xo`=( z214yR6C5(*j>I@@HcU70_?0jL!k(Zv9PVGgH;Zg&G$#0bb2Ndu)g67q<_Z)$o{DVh z)8_smtHY8XQ-jVgp-VU#H28UX)jzjZFJNC8rYKyIrUw0R@^cw|Vc6v2IuU);H^|z< z$4<-RMVLhH;4sC&q-z?g@+uiiQFa9SVrm8Y9T35mGh=RZ)QuAtfVM7l)<%(zJ!Bh~jJxus! zz$;fd@7~=HEKE2-tX6vMDMCEBSN9KSI~8k8W1HME0MnP_0L%dI{WfTt-#mN};`6i? zwnLn4=th=T&u(7vGlBUfvQRdB)E(1;t>K(viX4gXjo{)#hp?%kE!Q2O_A^Cm78k*) z!XKA`X;Z_p(`3r!(SiP!G@pcixakFlgdFd53$NHJ)WY=u35*A!y*|=>ZToOkD$|z8jz)~XQtUOXeFqq;QO6-!?Co*& z<$w`4Q(R5u9H?qV_%pBu~Evw5a8`YNV*sik?hPU=RUQ05o2jooLMr+THWw#&TJ+Qb8k z>4%oaw}>`lyJ#N|;#Fw7t9}!K)tc2XdfUkLkVbn&vcGCg>}o4W3YK+>>nOKI0>%Qz zB9){r^%#z=N000s%L|-2Ylk+af%rfao6NL%Nq0np#Tvzjl()H7PEj9HTrg@{xaf7_*vw2tDMHa{pqIlBSaoF% zGeA67YlE5|B5o>^G`(?zgo8RV53$i2GrJ1M)s%cEzBtE6rbW~3S%WNre0z|thE#X} zEgG9;y&W|RnNzdtX3OqAB@VS5wUO4b8poFFwfquFdYiW8NO56Vm7nIGsHUU~Jk{3H;nR((fRP8q zX29yTGZXtBT*w5=B0jjw1@5*hm?T=mR1-ANM3vjmvI`-^93|$Y*f&db61=KOM64UM zlT&bsbwjCD{H1F!Yo%FkE2`}<{i5=kLdsV3Q#_U-FigvOVe!;fF{$3xm~@Pu+4Y_% zO)992#?G;E>59~H;Z$F(c)V`iNZ`9<$klC=LX|wwNwuSpAy&vGX0`oNs!#ff2*c3C zANDp#WK6Y$X>{3k;FQvD06rRXY1;# z#j_fD^fhL;BBi{#Jsopnv#zU6o|Ftt4cD%sDIyDJrl?;9zlqKp+kmjkzAUyuVtv*Z zJjy-_hh+5rYFY%X^k>Giy;d}WXSTb6Fo&&REVgNW@_b1i7R(dA6zUW;Ayp0x4EUM(CFY`ytt9n3J0V!xl{ zlF{mPzza@WYQJ>AD_TBNxb8wLJuT>LRQHuQu!X?I1DU_9G0Zv%I?NlgGDRJb8@h_* zL-UeUz{Etw1w8$Ydo{?46-AU3NER(7R11BROw)a|3NPAAZuE+)p3Kj8E?^jSBUk3? z3mjNA1gY+2^0};rVe1F9BS_VutOTR2z6Y0WkFFl;yjbnYkT5pE9?gSYkQ#;z_j>4Q zA!LxoymPHkfi)a&?O7X8F*b`o*-m1QDK7rG!LQX+dG(}~1EM0>d`vOR zmaJHe+_1j#ETXJS>nzPVVuxfLZuicKkN}NG{a7taoM}C!79BmE+aRW;PN#)L>sM_h zu9*!)RH2Q{nkFr@H=z5=4E0b-oSlbwYm>jD6E1PObjdV{4D^cm zkx~}Zk~WQ_k&SGEuTp?Pwo7#Z8T3%Q0V#QVzG26BpJqr!SJe34JYN1yUVQk3ndSIIk%+yEV`Ev&;(T!G4QwpOi_N7)3L$WuHD#lKUtkvxlf?h)Ph#<1<&P@p`#5iDdeke0Q0y8g@zgoR&*GR|nsFgvK z5}Og@a%v0`V>YfA>tatbvrGD`x0OS!LZFP)x~kbtngHx9iL45t4rDbU{XUg9RSTn| z=mD+b6}wz1E@j~97HzZ`+^uJ>GmpA)M4ig|ofrh`Va&SSHV#d-Ce%U-q%K7X%^*HY zY7hQW?vYuPL$n|cXE@SAin$4M+>m1?vVt%#LXIUVFR?qz!hGo$env62iQPN3rQ(B9 zeOwL4)XuM_cJBTegqG7WZ6<0PU=6_Fhka#-TNZkjmTQ3%dhl~F{obu1UDH3rYYKGke-kP;>-Lrn2OUw2Na#{Zb$i0BRx8bcBW+>u1JmtkdOEa_?0;t&#R?^ zhAUj6vB2;qVn$2^#=Rw6J!NDaQ!7)b&Z^r^p+9iA$?h@{ z@rr{hIg;g4`sTJij-89@xaw3KA1(l-K6M|fe9geBSMp1oxX+B!{chxhC5$DU8VX=c z_wsfn$TlgPY0$ga%=@M52G}*O?!ao_%PZwBIxZS^$f7yKB-#g|8W6{9m0z-Yu!X86 zWs3HqLTnU}ohZ0>TGgOz=0vZ`Ld(%QI4x@m_}Uy{dqDS>Qi)8n($ST8R}Hj+w@3T0 z3n#lSlj)4U6nk7GN%r3Ah`kIX7zos_{gn^}b_^m{wY?ybK=0TxsY`ojb199RjkKbA zvuuU#8;DPv>hw}+iH5uSI*FC2*|UBqcZgDrC@vF~EUEj}?&Z`8x3i|5Lq;{SRtR{H zHqqG?#n5l}LCC7U)@+@vixV#Jf~|HI$@cYZbIG@u*g-a@$l93M)+RJ1+@MWQFnOGS z=x%9cRm#9Y)KhBqfX>Vyvr{PDsendmSC5BwtM_8>Sh@*B0vNY(c|tT;A2stDuH;gO zH49Co!gwGv`gy|0ABfi4X~WC_cW65$3{JaaMifDwdL}>XLr7@Vm2|tT+cnc$T_A$w z4mM90ZokXYv0TiSQgIjhdogb;<-T_3ugw`A+U+R}dXe;HMOUZP(^M7R+0E8lS);b; z$|r@et8PmjEQ%b$YU-J>XxmY4G3kgo8)5VSq}A)*F11QQJG7~4K_Gsa!R|4JekpB{ zQa7Po->oYoi|&4fO%|+K_3yqa!~hFr^V4k^W^mf&W=3HLg3x}qNlCvXdLNg~7Bgnl zKy|Gn#17fqzOt2_X4Q>?*{wt9d&0+;*`4f*G1cJm5ieV0-`8j-M`^50hIPr{d>UTX zg*v;e6|CjpL?la5t3-S3Y$euak03VOc`pT*jWZ1{%KyL~JukeiBmCVR}Y z#2WKdMJl3IXjW9W#YmYYMzM-DBB1r1_c}Om4HUaF*G!X@XeWm$2JGFn_>+sKT+@t# zF_T?4@T8|rk+Lv4q5LvQ=4CD}pOMkdzR2JUG?|KZWRyrwW+<)9BqWlj7GB&Hmzgxw zVutS3Y!@w*1b{hc=WakPGf2n}j5YCi1 zQ0HQ#%IZG3smHZ@nD2r1XQW_F7=Bo#z3vRSo#*LD<#sF5$?rK*ExzVJvZnQz^M&lU7RMYsV z9u?oa=oT4Nk}tZc+ajYcbJLWDfT!Hii2SgC&hD3ogUi*HW4WWR%H_7Qml+{5m<(C2 zEY{>`8kaJd>`?~O8J5A%f5>D~K)XmoHg2k)L7@w2cwk0@BUr7&tpnLapK; zEKUz)4kf*5n7ekYRCJv;jpy#0r&wEvBC*^nnX28zUIj{2v}v#wZHSsmY+5yxSd%n3 zQDIw1wCXgZ)udTXP^w&fmSn?)`QMB|Zih%S7x5ig=d>`H zi>fz;OWjr>WG?ly?W`0q?rp{O3p-S?k$f7FfFpCT%Qh6xTr)COw3P=yQ&2i~S%hdW z52VOh2un!=Epstt$8uX1-#0i#@=(>$hc6Va)X_(kTvY=S5w}`tk}c%~A$Rs;06F*o zEG@gFXnBMIG41dZXjrl0W$z9(KI8{fX+TUjPjT~=ZX8)c@YE7^s;iPV+i zVZhZb-77XSCJibZHc`*gPLxNpF0a(?yI)s9-*QnhVo5JO?64%mt{RL4KC}4Nk4ug9 zi5<85CT|u1L~~)I@?iPmC(*bXUIED zcgP-Sf%c)3CWj=bk)D9JsA@QhA=XH9R@vKh(gw{!1K!Mb5X4OJz=4?~hlGYPvbDjk zsKSjw1&Q;!x{-)9VmqIbSUBt0ZO>q)mour{>ZMJx4(mYHt+?mJggAOywMc5i7oF&` zdKociWAD;ak(f}OlC3&+J#rUi{(+0xUg$=Q!} z;HcLqud)&*!js0$OLdxzwTcMpgWsB4lqqT;d zj1jh4$L3FZAFa#msA0*9Qrw}n!0MF}Q8Ms#1G?mOSshY^D^0K&kK1Zp23a@$()L!Q z;1IW8-I4RJ(%C}%+}kQKGBt=YXn^ywLhy{=9q>&835=0#$8BeI8pO{Xe8mGHhi;n| z_h%7p1q>zAP5dtLgYq=%`ZXFTzO7mH6&;^)lI}@~i{eX}z0;S*&L^8N(2XjSW2TAjfG@f-9kBCwuV}eX;EhPHzawu$kL?4IHzUw8TQUPSF=jCvP<{T z1l_wvxo!HA{;@l7fKk^c40op6v~kNkC#Dt4+Pt>|jz%B-Ng9VvG}N$JJ#?Ea%_%IM z0l}0G&%&Fxwq%N8rFuGPkBqvP9!b*iqte-ng7QcfF0yMAbBTs#5Bj;B!_!8TZLcwA z*mym4Dg@ocrN%Q2c16Nf>O}aS-sr9!e0}!A35K`%FgGNys5xbFni~HfwixbZyr(Jme+<>#tDiYT_&#@VaCnioudDab_TN_^(5pr=$f!!SmC`3T@ z3YmpngEdkXK`_n)f{>iwwahk%wQ&urxZ|3fy$+N)`#Zt5nb~7zWu@NDKBq+IE$G8| ziN)&hX}l~C6S%?RD05#bdCxHSIPaO6X_RYbB?^_0LV}Y_gbtPytdArq}i!#mVsx6UEW@@Buq?Ki_=tR*k zqoKQtUNE6^eF$utDp^mC?|EO+F%nDBv<>LyI>Te#Daj9$61v@uU2@WHu*<&Pr`bTe z0`URoGtl0_+!xEHd0bVeS=P3gp{yH)m7hBM@DC1w7pSc zEb-9QAT*-R1iBHm8r#X&xIv<7*NrTvg1fqPQQJx;9b7EsQREiVTPu zBiGp4%jU>Rz8#?N>2T9EX9M-akuSTw#7etpGIKyTR1HSE) ztX|lpPy-{PBR4vQ$mT3p5^L8|2D|OrFNdy$VPp8&a$U@o2B$t6#kCSr?#0IszcEZG zDkn}k>gr@LJ=-Ne35 zFp&hKVssGG_=#Uq(P0vl1nfIYZbq~5EGP!Q&|4wJoHC=h?4pvhDOo`2xiCO0dX>oi zwO%4^?c72Gn5)myszo2;<2#t9MWXe9c}b6}=)@Ka_n8&#nr*dnY6Gp=E_yX5Bk&$L zbpUgZYG#@#mgqwgx^qjH_c6x%e1mp*1EV`EpKiLW%j@j36>as5!q9e7Jbv6duXj50 zY-p0CX3ZRen`x~~W;GK`o*ZoQG<|%ig%mE;u_AlU1vfNk1G9$@sV2LTMT8OspRTr< z@^u{yr{dfsuc_kHLnl$2GC7lKoz%v*NfpFlxPVNXr*Y_cOL_YyO#_|3GWunj2bvUI z<45h`U;XkMF_}2a$AQ~i1Db0)e8CJuX1AHy8A-pKM&lO7P-`RBwW!`mqLbMrs3lG=7mUGeW1O8IPBSSfZ7S&^5G_uS z%xbJ^luAQc=OJu&K@zuK`#2sQ);>8$4a-qh-Po+Yf((gwQdTyg(S6g5hOQn?@==|r zB@|vyNJDoNvza?digBgJ6jJ3tF+@wBzy&6(F=zvV_?VVK{dlrID<~$%cZ}c+%#h8M zMQihrO~`(04x~k;M`wh$X4jn`7V1!3eUJnCxDmY(+7x(dw<{_Q{Zc3A+z(jitsH65)A6t?t9Se~4C3h(WWpP5j; z3?w^@Yh|$R!eC|XDJ+*LF#pRYqt*0j29c@2v-a{FqJbLVsE4+BS;nHT zC_-n4L)#mfWW2!i9d3Lg`S`IDtZ<<;j|j5Xxs)s#394_#`Vt}@GNFb2gK<>28;T=H z4Qz9k{4$GFc~E6b5*;d5+B zpw6k5Iu!|rSQ@AsC);%S86+BeOcmE;f}Qi!am!3PniHFa7KJ`QGeja(clIqsk#D*n z619%zNttOfL$sI6CEc}X)(2eF&{;o+y^noX{dA$Ik(Tj2X*B7sDQ4Ns9;6} zC^VbGuN&=i0Uew=a8}tCE6o4t8`!mpP*Yr{1FD>^uep?UbLjAlbqQv7m!@qssF6tH zQB2WH46K}W@LEsXvxRD4mK7lr(!U-t7Xnn}*`VgVBkRv>q?Y0iyK=E*q96J#=P6{cAdq+$qNXHc}o;wwuF8(%;f zcCD~rExH}q*=n0O%+ZBgW^7fB#{}CZYLc$?Hn5IJDyG2KAD{71wAMi|lJqweJ>6uD z9@+=}&H_e5N&hn)gJO3yYwERTN!`}Q6hum0+s*!I1(qhum#eDf(X|2+WGbUwE9d}` z`gd`iUr#jiJt|%*sv*1Cm5@!wp}Ew%piHJ~PDg@|woVl%n5b~C{PaESu4N?-R4M9n ztOEQrk=ax#yEzX%#TB+<;A!g7;wMO4+`CF;Qyr>UsM*-Z&aIt!Wq)#|gSelV)N&}6 zsft0FA#8R-uE@D)xx~YfE5KlFFdfOoGFce7QuHY;r0-NBv(SE-DQs(2qi--srLeD= zT+D?_7py-(qM*ieY(*wre6b~_H>TtBNE=0}ry!3*o4^(M7%FaPXD>(J-B25=X*F-f zt1f7;XwtV2n4FkRq}Zd5hu?gYx8NgXH6ExYa#&aLHi_Gi)=+xuo>YTv{dr$yLBSG= znV4rbE!g|W#piBT+t8xeL*Rwe2SsRMGK@i$4hb#JBub4N{{OI*#!sT4m;VCUDlelD^( zY`!f;R5*09eoo=y_NCxtaEdaRD=D`mf8>;zSq-gfnYoUMnTyQRJYf2@{`GJbLHF3f zgE5TbkaM#SIs5*h4MdsTErpfDUJ0b|$?kDVZPrR9Vd)1(D9U1IE-`+YofI-V*-jG= zxQ_DjLjy3j?4uV=5?N^%2Zc-P##$>Tp|wx5=I-a#^j)7gc1$g}2WhAFAd38@o3$=s zJA(Wx|Th4g{1>tXa&Nb$%r5MCw`3!4`D=@FbZ6e|P= zu1^t3XUtE3O9qNGMEa|Ij|ytYXP*3p(t6&=CCx3>1s9Oojw&1nO76XU!Ba=5?8^$a z7}3PWK88;WZnm5y)zfx7gv9IfkC8|^yBsc`!(!UQ$Jefw;I=?nVT<^jy#!J)(-PX+YdgW? zE_Ne)VpcRAO^MG#_|O*00@`Dv3MDuePsi??#I~${I8`#pPv5E`{kQ^zA3;nuu7qW? zvDUZ* zHB8If%Su+RVAd$od}-!1quurvw}q2+S?3_hs665mpy^SjlO3!{(^T}90HRivVwEvL zx73-IuI?0`;3s!YX6tq|x|z15H0E}1h%5jf%hR>5tN7_}<7ZGmekZry+n2o%3O7LF z-Qc^;)|yddV^gf_79k#CbW89l!3;ge6jeFkK*wpLimACw3ncPqnFpgYGec3CBJJR# zDidL{RHXZuZ@8xuuD-w1Zl{*6m3MBt@hMwyKwW&rKzDV6&8v3Px1VrfwdRLhTDcga z(^a2HDoU7q?+j}c@WzcyKNv$Zu^pkqF{aSp-_^nG6(&YPz9qBIqq-YSoQf+0d98^T zW+4s@(is&eCa}bDBQD*#Cl_^}WH;8vW@|2A;_jt^DST}aF3MKXT!OD-kn{}A!Y$p% z+_{L2&t$+JA&(DhCWSSV!`ewU>hdP$ z7Eyepf-J6M;Z0)G&uE7Rm6$Uo*QeQxOTO{iCZo;1Rg&!zK^L7U$ zD#AJsDYl__H@k_6jTb;UM(ezC@0EO8j-B7K>krG^{9?G!%9X9AD5L4a=j!C7-J96z z);K7=(Y3tt?9(R_HE^0W9X8@Hh`y)?C1MYf_G19KK{9VYg)9>@uOe!XiZhTpHcVK} z0}`&9#m%~oGe#?Mh_P{z#7#qm&4-eGEK+5kpPJ{_&dyj{sLxwV$k4i)oMdnX0-4~_ zi%N$!jfCEAxs(8nHDuf1^(AK{IRgrU9sWUQ5+%ryeu;4l=N!ncb!&_i5G^ zY)sX2(|(7YPvrEfHMwbs(8>Hx4DTt{gc-eI|A@5&U0T{&QJKNQIgLZ9nsgpqFW*=d>@a5rBV@Z{o_Vvu1ZO6+MiQvdr!1X%AII2bO6%U zdJM!%sjCq#uL4y@F|58J$2?-=mz!3Sk@-mXbwMfB&tS;Rnq74(M=M?O zi2=*p%0k;*l}S&`#wV2RwtnwHj1E7$K_JTH+*xFJR{8o%ypMPJ=&tM}Sw*FYI%Ewc zf_eyL(`JWUMKs-ji*xsVx@8DnIIgkmiWXj56`%#Kc%dOh{G^$>7*#Tw^CIKz*EmbxBuRHn22+w z+NI8>Y4=XEGOBj|1%zhw4?Fm@4Mt2?q> ze9D?pugAl_8{~TmcE!EThE%$BPZ&Vf+jibrt5Uysff3?MRIPYSL}_uTUrzcnP7Bvvj}c}3B3<`H>2id>s2U*Q6IjDEhedzbACFkBZKtS{YqgR zS)$6#9HNL&c2p_2QweQLdQ4_1QftNF1=LqCBHD8~d^DTL%*F*?b}c%qf_VKeTUyq6 ziw;H~lebMHroCQ_qWQ(NDb<%u&kmlCX%edM5;oClO@?fTqq4=BYbpC$(F2z%#Zt4M z<<6|XeBT`6(}E%?T}ugjZ#NUOmBxq|NF__}iw{;ANdB!|<-+{It1GB>vvDwg8B}cy z!DK9Rx7TN)S3J6ceQ=?b1MrrKBF159ox@AzMlL_F-cYppxMY!`ZD~u_OiHBG2IH#$ z3}^Tv*q6TIcZ=kdK2`)l!q2S`6%PBUkD=eoI^X0;R;6^NEP^tU(ogSTN2j)3^za3- znJ2r`Q#K*^AVWf7 zeblxVv@#P7V@E;@72eNoiB7W4MJ+fxQEP>BvpKUS<*QBpKCPspV#G=? zsewypAq?t@E?2itkLe@e3=Tc|;Dofgg+!PXOk@*L1AXpL^$4lju$HuUqzXt1^FXKH ztWaBP4e6H5S*qpU!scOC-hxlf7%gW0f%rx`AiEOMJiurkX3)(w=37$Mn4NvOn7~%wc0su>D5;vkA(zLW?kuI% z9b5BATslx`)}_l+(j8u6sjY@tg6Q*dPK6<1qR_T^K=DAB=gTPSz3TYA(M%u%*G zhDaq=Lnc+24!;_v59vcBegi#{z}V)Ri#f4NFOtFi-N=rC&D2y8YK0vT1};qZse^v) zTM*h^bduxicl8z9Z-{C{vJ+YN$tfh1(pE9ex-KDY564fnGE>`Bnh0UCW-kF1mWDl_ zk%(W>QwsLcG?mW3!)ya788wb#$JQ>5LJjrmYH{7(?H%8!LSy?X*Jpxnwyjxe!e3PH z>H9yvhL88OT6IM;%npj>*2by!lFdF6Es0s5?rGNIOA-<->5zrl%1%mrs8MPSD{aaE ziR$V`-oTz9^_X5$w&bIa7qfo1EuFNkCS@EwlASoVdx?=WbNJYesYE2Cd02e3ZQm8Q zO?@J_m4N6{iPgT7t*?+%+tJ+`s>{^cJz$bvnJq3l%;IqE)-&s-9;LI`Pm{&?*xKmFS}es%UqP`;&m~~9zDByVZg_mBjK2cy2ajtoTKeFptv^-)j4ZU}cMo6JpHxEh+-Z(UU z1*IJ^sb|oS8dIxug7tE?KC(uJs!@@wes#zu+X#^zwF8~WaU;_T-#)_8%1J<5(2=>9 z8__(;a!ZZm_|oK{P|P#B@x0dd@p%E{;89W7RP9Y?*j+NoDC;Bkt$NW%k1uR&KZh3V zqCqj{UUD5%qpR3kXjR)9jTG39?{E+|Ub~u(Yp6`DHMzOSm}VtaVy!jTxX4giR$S)? zYsJ9Xyr70Dp5j@(T)Ve&GfyiKf+1Ke<_$(nYO?HX03ji|QsG9~$AtYFJ~k(1E>I^) z-Z?nbjj)+RK4^QaRRg6dovDD2r?LZ8i?m*SN3ZI4hp4&Sq?<@+Tz#R&jW!k9p$6%H zV_31WOZV%r#R0+7_C>9gKL(dvJ!=zspz=ozE-E(o9GN;5I?Y^ET-)1cD$vX?ES*fR z#qOLlR*^i`Hv4G-<5vA34a)>NygS6Do>xk=uvvkf83W>KEDZu~U6|-1is&r;189PK zM2l@hS-R>bFhYJ4yO!tiTTFZ=v&HreLZ4)LMe(LB5vEHL&UT7w*_n%eUGJuaX0-aP zVvu0i{WT`sp;qH9QF4IF!|bv?(IST1SJ{$4{891=bgP@Vcqcv|zZ84K;L*Cu9AYJC zf#u|n`xuNy(h!0;1RIB0bN+QzRVj;=PR`^GCZz!$&FMAeGD18UK`DuV}2 z2Fd0onezQG6{%F{jEfbQ}PnBk{?Q>Qng>jfmLXpD?uRA&c18Kc9C{g z>E}$nEHk8X!3~nGI%uTPiMfj|P@jV_O>?;PGrFOrMiZ2Ta?zFxjJfATA!v0SlEH%u z!L7f@(yVV=vO0hdF*1`SfrQSudY6M)fYz2C9l7SiB(~8=f$rYHhuk&O! zZP2|`G{yv5^7hrfcxcuw1dPr_QKAWnV1L=gW!nO^Qo=|KK_Al6lZy!L>%DYDyXsea zqmlw4m9d6XF(|64#_H16WlnJ1XxC*K0fGhmv^np891KBA`d+vZ`~wfiM0o5ldskA0@u#;nO6jR&HDDv63~bFg}OE2^eES=J)V zvo;q^DlPl+FPeRArl<=v|7>Dt(Nssbgc~!c>T2A z@|n=qO}>?2#<=QVKFG=uV}St{VA4yGjT4lz9h0|a5AV2ed*bPqd~747j*mQhU` z-1J17Db#m#)M}Y%B{l4)AYq!;taUy4BwbVkSU5-Xwt3A1fYd047^ZDkbbH{shO+>Eoa$=^QQX2#hKjcA129wcU{oVR?)u`C%RB_Rn zMzwpsl_}#>Nic8`3|Ni2+3KIG%Iz#VA?PQj8%vGHZDX&DOz*;@QAR#z#V5dZA_(D% zrcD=*!BKM(wfx19a_P26?-*2BiG`xOE=pSDB|WgR+>_(5QY7b1l_vS6ce0U~9AgcX zxs}yK3P?@r0)}Kwi7{JILCMuBHI~=R@NAYEy&;+qmg?K6@LGKCP+iQzF`T8U9q-gB z>5H(`FvVUXgu1dgvlA`edtGy|$S^S*M!rt$nGFib>`Z&mZE}|`q1&J`E`&l7n%pF0 zrPEv1k@rrUYf;QcSgGv6{kbZ=47llGoiHAI+s6W{-*Ug; zI`7QJB$t#{JPb1r46;3WHI>jU93Q(luhS+VcE6o zZ5G>K%odexoLqK(#`BQ9$RgS7>leLw!Q;vZAs{S#S;R7@C}{MASySj*C@s-3h|SHG z3~~PUt@UUzb)Y1cG>a!=MhQ8*vqm3@gH2^2F6xY#kEFzOJWJKmnE%lFEUq$3?2~Qj zRoe#}9q06njl%BpgaygiF9_X$<(5tPQ9~fJ`|<*UE25`)#SV8xT?TZ2S;$i@FkzT9 zhl=>3dmvHvat4#MDA?z+7mf99X1jOKB+*6QY2~1Yb&Z`iz7IoZ-^-;xU zB?HzbaH%jiuYvPH(^eXUQdKsW!9LjQ5*Kv0hK11=bIQZ4+bGPsvM?%bd0y^PnvPt` z^KzHrVaoGTn3PxCUMX(l>%6VTK7Bsz@@M<^MW=NehqBUb+IbTRSQ%32NR*nhypux~ zF*#)UCWo?IOC2|g>N&zjF#W34;&hu0b@x%IP5UU0=0`T$?J#XIe5q^JeTyT7nNSxc ziG@3>i~r)_7>*biVSXj82!5#zEA_=DjHpaIPg*K-}VS73}1f5^)|&Jx|+(=w;hgcg=(GiL72% z-{I~Dh@5%JUPr8(FW`$#Ed9BQn{VrATNz5J_Yrx`G=@}lvFNIUXtc2K``S_W;B9D* zPKxG^mcC?^Gp8*rMVymS&Qprc7{#fS2x)`Q|uc5c|J&TfHaP{2dI8k3ki3eq)D9uT}F%ocI$TQMa z3rR{E`D9o#i4{ewLs)onnM*U< zbi|XZTAE-b+IxpN1}p3$T`kwdAff;&yfU>jI&NKz{J~8nFT215B2C?_X#9m6bbah} z={N-UTfl)mHi4$AqcybjkZzlqZ969`hZk!~+e~NY8+bjvVwhfMuWd2vkOqetJwpv_ z70g*#$2}KTZ}qmHyEa%|;%9sEi?t_jQRgpX?Wd%;#-y!%Av<*E8dhc+ADhT{Qa}M0=UVUm^O; zwN2=T1@okdK=+ejI%bZm5Cd~_Fu626-GM6Svq&Ie{=hl_3 zo~%1tDB5v#xeIO3ow=xa^og6Y#1<{4ZM9w~bFJsr5Z2=5LCJ&re#^p5hn*>NSi&UTM=IMZ>a_OE7mnAfLUMIh4JsQ4=R!<~f^vE9(y) z*G_*IshMviloiOj8YDc_EuL+JrfJZW3CaT1Lo`r#uwfR%&18er?IvD zKA~*W*{p$>^mqCIE(_f#-9N-#P4ssbCs5H4!kLfKvLoNMT6_t9`t%A|X zd=_x8aesN27C9@+kxmDr%|$W8M&H~P4PN{SznQ9$J-0v;k253L@^XY{$fZ9cIy*@dS~2v@bjYn|pRz1BwVZ3?Zk8r#HEwu)O? z+_f%iw$=taN7e{u9O}5Av3)@Fst$T(LywHKWDJ?3O&azhVL?|%7aT*|+WDUEz?WFi;Ln-yl5@UwT7_tyTAsyvpX@C<+?!0wqs#D#-7Ac>|e`0Df z$pF4h%UDk!p|=6#|_p zx5A>KXjtsY&uVN|FpJ#mMQLm{o1B}o=!Apw(rwBb`$cyjU<@d@Eo79ws9oe=&$b-0 z6s!V`J9Cz^+}8#l(HEoZyO7x_i`LqNYkwfg;=43ph+YF}~eQb-E7CO!IYt zecjwSY@Kk~2<)^t0E=U*0FTGIuC<<3Ws_}nnAQ z?4u{CC4@1$qJ+Laprh%lo#t=!Q9oMr^49ZN(%Q)vbMtR;&TMKx8FhwzqjH))r@3em zYuwCaF%`VNYn26Bz+SYG!cxb@{*g*w632jL78qPFk}nkFi_F%ZF&$uKtOPAbv8DhbcL;3)yvy6w?^H6o7rYbe8uRD4h!`K zgGFeI|V{laC*{O-CZ*z8QUUt5pwcYuhEV zNaD=s7mAe)9;!fVaa)M{3oPLpR61^dAm`O)$PzZ2)v6`#R%tKMXLN_OM{5~`DQM}b zV%|$L=T^=5!=u^^S`3nEs^~I20wTqtr;7qh?Ae}Q(am_^qSY&~ zXpi+&bP%glw81ZQNf%&XZP9Jv>fU-rIowLojj0L(ShO2WDq2(P6kQM$vViXCD7sjG z%B)uG$Q#$ukE!@5Ofc@lor#>k+VSH5vSPuZ+`0mA*gK|$(Fqcmm!@p@SCxT!R_cWP#&q4rg! z?!}jq)V@bmt3vd&1lkFDA*g z^O5G9H~_O~Vz4wR04iJy=1ud|O5?`#2{}X8dRaU#&0<}*%u;6~HJI=}w2;(&sc9^@xuhR`u&i5(^ z;(lYn=#;qh6l9*Mwnxv!y@c-VN`4LTcBW((Q>jigEGQ9(OI3v&w7YEW>zCLNUcg8 zdio_e$Xps>q1hy3c2OIy@=eEL`Mfbp3ns+@MrARGOYyWvS9DvnII|D-)bSaJ{%p6- zMNet(&c!Oo+nKmc5Mdq|P0V8bpu|1JWd&&k^-)vYyFviww<}7LuVo?=yGh4ou47*~ z+09~gkX)i1%;u2fmPL;fcyc#!T-+AR+$1z=YMgE2vrK4`d@~0XBC{l469TA+Q7T!| z5-CWDKxUOA^>h85r9&}-&!TEh2v+gEAINbdEhE}36)z$eKzd_9@Xdo#Tg&BUR37Q5R~ z{vqqk!5-)Ciq6v;njr#+I{SQ7ShVC4%r@N*?3vk_eRnqwq2J9;B`gRmD~e%l!FT^- z=Wz?GLu~|$@r=3wGrd!5^~>8c23FbTKW6EcAuRIg8-tC~aAH%liA1Pjjen+aMV$|i zV29o2v`uRpScpVQqujdr0-ZEdzms8BZ%g+y(~w9mW@DiFS}F_Zyvke`u@}Rd#&DCJ z=}C?=O$H&G@$zBjT!cx@ENhl5T(qEW(cBsHrq4hWUwRw~jZnJl6t_v7zNS4BkulA$5FU|v z8GSus-E`5C;Vvb1Ga5;@?YyG3xDhWwoVskb8(6qdMwnWlFs>V z;n@4xe71G4$5Ky)zDP#FyuA6a3%mN*z!x=smq60u>d?98barO*>CNJ#FV(C7{qK?@ zOTu<-<-S|(O|GBsx6^Gtx5+S<@!raJ$;|XPigy%b$!*+`rlbDWW!rt|G@=~W+O^Ed zit#YhT9-}Zpd#uqvk})a`lJgA!;lNPkms)u|7wE%LKqdsfCA>Nc#aC=!?|I7xCyUO z;duNn4!2eIg}uY@bFKjfF9VQRCj?dkk z!@pt!_M5`Fx#J6sVMFfXFtuVrekp0=S9No^wh&0MlXR96N4bYE9<9~OE4@7WErjjE zMAF>eN=St8aCkUZgFEKjc;e{|j^}qPehZlOK84U1HmLOcoeN}ML(GfA>-k$$`rL%v z2Ht1`CEXA@bA90jQofB8CRAd;UH>k(-*d^MhA@|hi}ULVvxXF(Dm+Y>zVH-bMp=xB zxz60RU_I~CM+k+w4gZUCms{AH+*4tFVMBp8q=XNH3B2_La(K%ACSqO_t_?5bLO4@7 z=WfHVkpZBP_mJ*C2b|1Dz z-k=ZvHTF*9$?Mz-ueDQ>TPlyIP72|2;?E}M^|?;W>%*ABcv2eA zpW5u=ihtxsg>w&I8pc#i#ck@rHH245NAXlmc$+NMJJX{=IKDtH%2A?l0BNnSSd)9T zFo7BxLoDlIVQOA)eQkI>_j(Q`bxL)y`L0)N!kkH}>kS(y8E+ou@_c~jdcv*`r}5iJ zyivT}czn(!_QlvQ#da=ju#|SZkT+Ak*O1RdN-}|-q7svOzJP5_SW4bgt!?|LtqH_x zw7(is?Bq|jF=nC`=!Z+gZuUn_kme}$u)=IgFfp7-x>Lhb{08#VxbuIizgUWbMu1Y= zp5HN{p8R&BPPPg)m7^*rR8mvKJeRju9gXL&hTOO3wUVqo)I%oF?tz#OlL})uH=Y!y@+RtOv-v%j z*c!z(^yM>i#}jTg{u6MY9ZMW?edIDRjHwE=3e+$60{#~h;)UFJdWO%-Q6s^_c^(bqPR^97fkQYYYgXsp1H7fr~m=v!U)_)f)Tilpgp(2oDY?t ziu%llYRuJ`x5Yo1t1*oxtSERPYyq|eBf@t4R^wKUTQzRgxNUDfTam}sm_~wa!VdWD zK>j;}ey-N86wjwkFM zgxiAfdlF+W!tV|C!EIk+??<=^#NQv(l9I~*9&iBm1HnO<4<_Y_JjY_+mAI40r3%|* z>{GxYK((VXA4<+UfB9!Jn8EC`a4we(IgD|4jUEsa+pcS+e1R->Tl~(rs$g4W^fL_oC z&cbgM=%+R1Hvk5~5Lk`-8ZeGlF3{p@3A2uT-UrU6)zwGO0q^I%J^;?O_fwr#hYx}e z(Ia-u>c-#uJPT7DK8*iIz(>KyzNL{0O%n6Xqx2R`63s&d+ea z4crdy0C&<~?qW3koU-4|h|(Ci2W$ZMg8LYg_cO{KAnb$SA@B?EF!&{S1Uw2Rk^W=g zaqt9qlDJQSr@=GeSK!y+S^S;@&x04hZ@_PX#_8|Ci{K^jGI#~N3Vsj%0R9MG1AhX4 z27dvsgTI0|z~8{%!JFVM@HY4d_$T-m_&4|u_%HY$cn5@Bb;yA{r~rjrftd(8jJXO_ zgPPot*8fY(y#?;Gsp}a~9Abwpb9u~AQ98(0U~4dvc-!QThW4rsr!W^C6SgJZXs{jO zMc=l^ocj6>*AJApBn)t>4TyMvu`$I^?OrtLzUUBPaIQ{NfOb9XR~IOB85s}T0U zz9-m=a_pTO5%wYczF4xEqD)Z2Y>^?L0~EGb8zmsFp=3+eR2|MPA1$GpuTzt z&qKjs;Bfq=T7K2x2+T*4*HNT#H0EQ#6;N7H`1`4sW3e9x#?hCK%f>zQnDEm;9heU4 z!3;1H%mTB4+G7sS6TpdJE@%MrzpvFh(=xJ8Z6V?!79 z_}<*Ku!6ej24^$tY|ZMQNd=-2Rd>woPe3N)Llkc~z zt)_-=WB(3NyL{K$OYJz*>hybr|33HuxCQ(W{0RIQ`~=(zeoEY*f!o0C;11mG1b2a- zgS&IHsCl(fA>2dTYyfkNYN(%ta4+`zz&KnlENQd*NlWco+D;FU-h<#F@C)!T_$7D* zJPIBIkAo+`li(@vGE%+UH5xfLm2CsluDZ}rucaoxc?da1-IA1UopP{{s#UI-o))K@HX$X8vFzN6Z{Lee}n&k|APM!_8k!N&|Z)S z6`%krK^3S5H850L@Z1uN09)k?VQbt*f@>(xHaxpYZ&cpfaa-)8f#&n=aNC|ZJAfU* zPGAh!8TWhe-@sVfC4W@dmGHZPv0!(_#eY25gRpyoz4GcOX?&j$_RjmfyAOW*g8je* zus?BXfyTjmupa;p1P6hG!9*|#Oa@a3cL+F?_c@H`;ov^%V=B)hz>(l6a5Oju980;5 zBkb|uqTK8-Ek82UkQBg&IB!>6)Yo68)yg1 zv3G!>oN}oSow#{AdE!C4vF}EneU##Ob#9x~i$3HTx%P$P?BktLR zKPSJ4bw;XFwbRJ(e!_hqKQ^2TJ_tT!^}AO%FRwZ-txta!)$@nR|0DQ)6nu=d*JJ-U zScF+LFw!Tc%0ei~c~E(4zdp9PnL&w(qzmEbDk zivRgM&#S>TU`NupHorJrM>=1ie_jv12yOsh$}b2v66PlGW$NxL;H#u_GG+W4+ z8{nJZ=KK=cq_l3-&r&@s4d2S29KM}DC447;YWQycwD7(B>EZkNGr|w@&Eb~(nc;`| zmhhu|Yxr?~S@=o5E!;|aKh3v?pXHZ_+raJM4sa*9i}D=Bd;FZ|-QXUu0o)7jqg=&4 zT(G)UovU8&$A2mB`vBz~$MZp+4}o8RhpqlQ!Y?UHO&Ad#A)QAF{}_JiCy(Q=`S=N* zPf~6uUw8`tr@=GeSGcQB{o2B}($A8A2+!j79R8zO%}MV2JZYcCdsbk7fw;c`qeBZm z(00Q8F6Q|h^-v)1Ef{Cd@q8YZ=OD!GEaidtFYOFq*-*j3}=DQf9%sct_@+^ek=T{Ingg@}}$9%W> zJ(^!>&sXw2geZj9$oEgY|DSpOCEtq+auLRTao+4Bd@uEWmc8feg!^lJ57jRpp0M)0 zVeb9NO!~>OpEzfQzvcVF-}9@&oA{}JsBfr`jH7Pf%6BlDM~1iQXK#_tKfpi1zrer2 zf53mi|G;Qg-|BOBP`~eB4;2HXulF0I&6xWz|H;xF!pwYFq4ryC@2<8O%B?9euZ0I( zi|blTL;Shs**tO72e-2|FIiNqqs`WaLd6lGvSMtgstBQ)Fg0L{iuYL>g$mXz;BCq^ zg6Em!vK7xE)(Tr!j0htu&Zf?khV$>+QMPSJ=bZdG!`z`oxNlqW{+K80n+n!9q$NIk zd-B|&;saTn9SPeI%RL&Yz{r@#PUJHN>kQ71X zW1VApF;|;=b=aFU_Nn*~^(%koX^VFre7D>8!#;sHdguLl)`Itd1Hd@a*BpKz@eZP_ z2UmPJzSl>>#EOrGNfjRplkuBE8l#X*jIcB}RnMxgLO8_Is1Ao>KCI&7NC&-653iWQ zu8F_T5u|q{I0_sMjv-EJuW?8{JP+2$l_tAqs-s^ zW>#DXE%LnY=ly07Uvp$P{pR2pe-u)c9X9(uW5cYH^fdF%CXG4Z1fY55M4od&1DFTq zgGMk1Nlj|2lgMiU@4eL4g{;>s%}-|iKx@T?xT){&0SWI zMXHyU&<>V^4$uj@z}Qw59lS|K5#ZG+_NgKjPK_0S5;gU`YS$gENT|*x-E)ZZ zex9ODAE>yNeV=Q>2eE$$oCnt7|6%YE@KNwFu%2=K@rp0R@qc|dpR!&6E+qU#;1l4J zF`scrsZxKLOv(0OzEU64SX0|yOnR48+z{Wb5Iz;-eH!;mdB+ElZh8C=F2nvAAe#7D zo|l6&se?&KFMN#N6h3F|^yO@PT)`N=l5kg%-segCYRuPwIplpU&+EV!z$Bz)qKTqY z*JD?B$tk~xc{TlKPo6h`(MZ(1pL{L$6V)sH4Pn2;^G0wJ(7Sz^=U2d2sSmyL*U10t z6x>S{-ihi#~~s0zR7x*@UMVZDbpDGi|SVWW*ib!pZ}0Q;wSe%@SKEH z)!o%M3gM5W`5G8!l2+9l@=5S#Fo!saw$7~hNjCrdh48OiIM!p7RcZf~wBNAwyRXaS?@SuI0PzsJ7VeBR>aMU`;pbs2>Ff^1fwPf#S5YD3$zzbTSJTh; zAl{x}ufjdhrn|%5`0Yd3bMovu#`0fLaSwc-<|B`{FJaCk-`?E4#JMl*huznB_aU=Q z>zF+2&AhEQC&YT$pJy$2571iT0P;By90c}&Cp?&POazm_WH1FB0uC*(9xbFbk=8ik zsqPJj7w)HTY6iU@TIc%|>H}vZ2N170m2#=ijzgMXZ4&(l2sbty5zBuhX^a0ksxTH# zAeH;Ua5Ux9+W8p59Se>F$5X~>gxi<+bv&nodN9MvrSFsty3Fq{68XUAYp z;g{ir!Xx2C>~jkvLj#xx=7UDk6#sHk!Q}}Huxkz5M47Y(TgY<}kUU{A&m}-|g{3?t z!#J7eDd1Fa8aN%C0mM5r^BhgsGfA_BcTrzy<+%*Bfp)MQbbwCYs|&mrtN^NyZsM&3 zJ)oDg`oLLW73c>8U=R#})nE-+3)X@6fwRFmr1gIA0rEH(d=PvH`+4BQn9rk~K7#q9 zg#8#;Pn~=moDVJl7vgpi;qIfae**Jk)XgU;&&9;K1Za=oQ@DScu$O|%z-Pc`3y+4& z3y&d(ems1xa6-6(uvdbsNb79s?f(2t;q!$j!qtVV!ZqO9!j|DW@CDMo9(<8BZUA2b zHx`}@Hx-@=UnZZg6b=Yqr5(S9`_~H(gl`li7ke5$?rGlSY3o<}(pIW}$+4Y(Q=d%y z8*?aSP`|pF^iHmL2Kx96ai6iclZmT%-@@+|#*OIMw<-5`DARWf*N5-%{5}}Ru9J2k z)uulny<5OMXu=P9{s{aS`~=)eIzI(J1GjrK7&|8s#{anA+3)6ZQLN@E7np>Hf9we0YOA{#JN_bR}nd zlzyhXk@xZrZ-Tc-=WXy0@K5kB-2M&z1O5yC2i^gplC>?!g9=apm7oe#gBq{}*bI+HLvVBeAFPGAh!8SDaf1-pT< zV0SQ%@Z$-)2hTmR?*;b8z7P3*mOS?5xgUNL!2Xplgj($H0ZVxA0|dGO7&yH0cVQ~wjsQniUKWn3)H>vZaCGIb!!fuW3yuTFllHXA7p;!#DsN)P z_{K0Dw|XEw1C5axq&E}HBK&NgbHE9hPvkilG+>?w=7UD!odgzuCZP4~LY|B8TMU+f zrM&OSJWm0qR%$NEhtqI79h`w%GvUwV*#cTIF9T}#Htg+SIpyuZO}n3+*t@`c!3xj~ zR)QYg8?uIhQMl|y$$VaXn$i3_O)Ogcpo?$oCDs^ zyMF+P2RN7K2f>HHdEmp~BZT=V_!w9ZJ`T7&1a1U3fiDBq<5%$is?~exK9u+* z(NXO;NXGv%Jjct7%$IFkw=llGX6?Xwgmk`9sWs&*(9IFyo0TKN&G>x_d>ecRd>4EV zd>{M(+yZ_GBrEz+<*Tgqo!0yqx1WGp!B4@@z-{1m%6JFQJHcH*vX`Ipyc^sDHh_D< zec*mDhZM)NTQ7Z|2Z;M1cnJIgzlZI;eeL)b^k6AF`r81wYTixsXHNKKt!s{PgnjiJX0x6fY*rmT8z)yf-t`ZT3^3eaX2(pbq!UePd^8q z2Sd3(8LfK(v-thr@Kl)J^86im5xhiMUk0yG_E)k09{d6P5u5|BbtjbQwaPz-KUMxE z{JHXV>ir2L^0QZEx;wX zbyLPIF^|A+E3h@@kzgClqrkS9e?wj`C_l`<<+)u|2-|}l@ZS-LPumHGSGFb&j!>4d8%%nUFS%mT9s zHwT;mPQ*SJG+>^`b3SM!&PhBMfF`gIEW&>=SPBQc1plR&PbU3Ss$LJLVn2;Ar-L(i z_q(X0X3Tf;JhSS!&{FjVW8@8b-5b_-Tk%^4+CV#yjAOZ_EsYlDp}5AWhJV%=q~w+Khkxez_Z(@fQ6RsPq1U;Y^^ntU$D$oxGDC;24A+VZs)&RBXQZ#7x zLz`wT3<2_2yUv9+*0&>Z1{53|0uu8;}ey-AQL07!URUd*Zei*cEz(w@Q$&_yjIHbBVcW8BW?y%~b+~L(*=A`F5m9R&EBf(MNXmE_o z_}!f!L2Ski=^qDz1F{#4>WMIT-Yvv8YT zJu=LxemR^#-JD3cxun}b8sb0Z@tkjYxZc*tobhD2#_BC{Csl8gTTs1quBrO3tjvBN z7Lv{)u(*0eSOS)UlffzA)ap^W(|FD;Y@0is^v(d1?KBhq%xclsw?a$xh+J#6xPCUk8VR`j-xsGb_hTG@10kk6HP5ss67+yx&(sGb)Ft9Q%|RqvErT|FkZhWA)o zy>o6|^)9*h;eR$b2S``!{X9Pa&IQr~{UCMuA#fhJntVUZ^CMu0upgyN9|P+N`*EJ< zg9|WU2rdGj0H3VhHFt6KZnICeVXu>@=SSOM!KJ|wBer!b2V>_#)7I z&Bgx)@Fj2~>D&aq488)sird%7=j-4b;G4MJ3?7Fc`4-PBsfTY@?;pNHJ$|=(PWYa+ zIl8;}{Q&I3xW9#beh7Xg?I-J#(YpHSLk% zx$3=g&y&Ur)qCfDLwb7m-}3w&c#$+-s@~`SNMqmJ%e37qgcrZ^D*0>f{5^H`2h7)j zacI$w*lalzNBJt8($YImU>=@8Kb}B8Mvu9A|J)XvjIXdG!)xU6C(E}sxAP{$ssAf% z8t-1Ge_wAXb!`Kqm^@vOsbI;aOT zfcpDP@?46R_^g^^a(ir)XQIdZhS`Lh15U8_$cGbo&LxcoFc0_npb?ye`vTAe7J@~T zWpT~uummi{|736qaZUxN;eR?f1M@j~&bbiw%$j3qGtK8CLJRfS3YLL3&`w8>J=ey|6!g8|Ak2zIAm4dJ&7 zyy5Da>A5x5j`f>)7v=AHcEY>(IG@40%-~&SSU+4#`qIxkmAYAnc@!G%;wvb#NYa@?r2-c$SaUhWJgE&`tbpR73%{@?8vW50y5ehS=<+o!Q#3N8bm0iOjMXsgS~^K&(G8Pjt~a;~Mj z9j6ekAgwFGRp9f4xtj3TfNQ~Z;0xe-@I`O~_!77gjN|0OmXu9rvA+zy0=^2q2ELB} zH^4W+&EQ)#^Po5I4E%ftd>4EVd>{OPJjLIQ;{*gErEm*wKP1kNz>lr%8sURO_zCW} zV*e>v$|;Gl$^>26gF0ea2(=+S>5`-axAd)2KBtbwj3oJ;^ zIcE^bIVTAc1VlwZvXaaZF=Cc0DkdZt5EcENU)Rina=-t%d(N}fUE!^_s;jE2D@{@h z`vTWL!bP|Qm*EQh1V6(s@GD$}-{2bj4u8O(a2@`Fzk%l7;>Bz^kN}C02{J<#NP=Vt zfD1tgfd^rTKvqbBRLBO|AqU(BIUyJ1hCFaPx0DpZ5&Py=d0EvOB3pf1#d`p^LGfriis8bcGf z7n(vdXb$&53up;m^gSLg=ap$GJYUeFu*Kwszw z{b2wMgh4PEhQLr52E$|c9!xq>IkH9wAPJBC(SzirNc0e)XLmX}WICds$+`Jw7w8O5Q zZ}%8_nZ9;=?9Df{+Szyc_IaFV)7MF({b9_B>s|09?1nwCH`%0RwB5m;Mp(_kmWauC zium^-dp{h2gK!8A!x4BIo`Iuq48O;bbplSpv+x`|4=>>MBD}=)%kT=k3a?@JI=lg= z;7vFU6KLb!LbtcMeh1m_f>t2EN0|5F4EG--GeZp@!N>3kd%qtTg>m^d-wq^z>jbdF2QBOUxA;{>1XbLfnVV&{07(HclZPT zgzLor7yJzj09txcdE|9Es<} zb)(GHtW@l?L3ZwQ5XWtxIiZ}GxfCZd^1$u*$qV_oj^Z~z6o7(I2ns`yK$=|?vl!uu z2Rib-qJEiY-4XDt5>OJBFxIk+waItluN2&c-_o#!7gQO{vQQ4n!`)B;Dncd5%9wX$ z!c+<5wyOqQt6HFwT|JOazc`(8oK87Tw`&B#R!#hYZ=m}L6aU`t%5_332vJs^D4szu7>2-57zT=SIL~zi`ivwWM+N%ZIzeGH;l{vN7>8TdgpT(3 zKq+eic{C9w1p?M&?5DuIqygl;c2^ESXYJJ<$USA4wqPoL9|#Ph9W>u1)410+$b*5w ze1)=~gZmkQA>=hV3iG%EA#J!w2R|K>dd$?T*cw-UHwN{b`xro!uW0<*F z?K@4;ydbhxXUI&n)^P3b5ypH7z1P8d*nnOe;bH7I!REj)drLs``(}P&Ye4;Ned}vK zI(sJxvn?>(-VQt9QJ%@pzzF*>ba@;%&DB1ExeK1eZZ|Ubz+QL?yM372SAPOD@2a`c z7nleBkhKmi5=WA^BT3&#(&t(Gk$(XH2Lm3@*|QG$ae3BZ?2nK~Ps1~C6hFt{IGli! zfmG|+fOfaCUWYg}5B5B1d?7HJc7Sy|*u4ZV!z=iI6Tx$&}qmc4ER1 z`wPOI3rst9c0HX+K4ism5WV{DqY)p$-e(vsa>=zsrdT}2Lb(inY|9oX{!HP7xg z^ijB+_{{~m-NnRV+8nc&h;J0^Z+DmYx|(&<(qSobnd2vXzF3-~?Bv!omDZ3&vC9w5 zsG}M`O=E|5T=%-<%Xpr*@}XeD3gjw`o-^Zf?n*Q?X&g@glLjM0eX#=WDnC61(Www= z*Zg*|gw@E%YZb<>2o!bK@SVPf99Wa_%!kKTVo1EQOuXoBj*&mxeM>7Ro_+cb)(2?snIsr^dqgwx{o>wGt`BAvkpe zKWps@$cjI+id;)4=~)TXUoAlUVRYMoZfoqy*y{wLD#TOO-RM6L?GMoWZ#j0vhpkgq zHT)Qv@w#Mmua12Us0ka9Q46y+sO_#pxv1-I^4rOJT-S#Na1S(uM$j0VxSRcP6Q%!N zbkOsVo=tHx?+3jvHrdUPD;=~JM0@_5yIUAzB5x=QMmOo(-nx&BRatI9_?9q~`SVtU zZ4Fw7+shxr+L}>!6kjy<{#uav5x<;j4Wpim%3L1*`EAS4QE@3hwMMrM^4o&uol1h% z5o^tGJM7vMF3sIen;xs1=w#ZV8+m8Sik^wmwS&A;8qA)j4#?;T!_Zm&3R1q)IDH_< zwRBMVSDvXZC=WW3cWS573DX(6!2RS!S9d4vbX*6%7ij-}=6#}eU^FrsV0I%t-Cdn% zVCqW`Wc7qz$mk7ykdw{TX$SP)NLN4Zix8$inCGSX@q}OhrIYG&Je~pg9q8_&Y^tn2 z>DT2+q}Mz%);=SDu&Xk?+pmM#FReZjb1~$_9yB!V#<47W$sfiqkQc9`+S^@-{8m}j zo}MA@Q+~ZVi9hKvlr*R=t9=?qJi}oGb|XoH{Eu??;c`Ql(YTL+u`mwCyBm0Z8>m|w z(0{`}>XypD1avWVNxF`(Q~d7}##a3O@~$<}&1Fq;)ju+2c?_odJMsEZm9nV5K$Ny( z6HMksq50h@?tb!VKk@D-UdeW?sl=yo+pGyqSeIkIgC1}-XUqO*5OE=tXQ(ASYMQPML5X2LA;K=V$sxt;@aVIC--l&AB#PNlppz+4E6U@U!2XSdXq7+(Y(8()+Nl3v)?~wQk~C-$L5Q zr@6V!+;2qQ7G!OOM_?Ol$9@Mq3OnI3cpRQ^4^v)PSHT>33a1C@WQ|?etFQGW=5F*G zg}gmnr*OiM%IRLNpMrg`AK3@sARGd%dq0eM1fGUx@N*Q7!Erd@9NCXKBgSfohfRxqTdn782WhQ>raejEIx+YxZTqu?eU`9!txWiBL%q!$WDO&A z$h5`Oh~RVNq1srr3nu@Pf}WKejE8xi_q?v@uY$t4m_c7&UMqy@5nmY8K149H;%?qU zYBye>om6vwL0ZS?vnX>OgF}zh+lhPmA?9nm)?$!<{ivfl<)VAm|v5&;>s)9 z4t+bA_p!pNKP0)QGIUU%BA*}r&41XbuiGZ!bS%B*8)=*RR>W)e1-+G_o6?(~yeNQ< z1>v80COL0wZ2@Uwk0oVQ@3lhsD-1=TC=`R@a0irtlCfu?Hr1r_9luYjyjOf}oOdac zH}X+s>`p%&@9{2+=O5#0$hiyq(ohDuWuY9Dhr6KyRD?=U8LB{4s0P)8@5ka$8nkbY zKBKSK8R`t{%ODxdd6Uc?6Q)*7?>5c{|AU_o{|7%hsVJTv^PZba2~jyvA3ExvVx&HS z+{}L9O?*JqMwf>%CpkLdNMjq!VZ`#TE_qRpXR#nNd((oSlCN?%`5NUUq|E=gmtW<4xgnC->CZy@UI!;I_PtWI&}|W%WEm%e8rL0zU)r5;Yk^Mb=+QaoT3xWe zAG%`S4Rk)lCdy@Z^0-IvoZU0{mE9}&h21;&wOy9g9lS}1>ubA@AJ_SqJk!1^FBG53 z`XatT^{v$x*;*%{IKrfN6z`9Uyc_x(vBl&9D+@DB0^)UD|d1mCPUELJaiD0G=BMR1+^*W&gIDbx@F?uW?J;;fc#UVG@j&{O-0y-XVR!I% zU!L3~w?Fgb=8OvE%^&}Vn@%XB?}=V}gV$-xZ;Wm06qcvZbsy;5*CCYI{luknG!9@M z#9rsx9U|;`p4DM=KN9?lcRy>MaeoG?()ZIC$Wg8@vtC1Ic^t!kl+(~Ows{=;6UeDW z`%C^g+OvBSJB{snmQ9aY-!0lR65l7{I2w0(Hh95$j`-qx*Pi$DO(&``MvA-_xo?cW zi;41QSueqEC()5^FC+gIcolTk(`%To!yAM<1#bp3IZ4Pl&GlRGHoSxTyYL>o4`+gz zsmZKK2J)M0b5`gF!6b()p{+@Fh|>Cye;>j7w9y|UM|t`Q;dS2Zrg`nte=^i!*@~uIpL91nXPB22-6(oLJYGchXhD{07(H_h2^Smc7<-vHu4h z|HS?}rpB%R!sHxg@>YIwWXSj%doBFdIIkVL4c-1N!-S7=5+3hDKVBy!S-E1ea%b2l z`1W}+?i2m{+cWMnai2MqH{)J&5m8RiGtWCpewwx{3;vS)u=#n0ij#3y4)N3XNdR4M zC)_^DyZXX!(bk%COeyDfP0J-*5YiZZF>(v~W++sM@A75$%>f*sgRBP?2rR) zgPf2nRM>wWAvO-=4i!Of#*Mgcf|)g;s9%rdb~~ugpBGbS3FHeEBY)%Lc#Nsw7R4=p zs5mm{3nIH9!U~3T0-(r^2B-$&+{;F>PXzP$|;Ed^6vO>Jw{k zV^RDTgW_-pVM;(rxRd)*a95}nwZgnt8eot+dx`TV zXxl4uUj?c{HK-0XK<$8f5@x)L^?Q`}nxSg+FU=XWwTPoO{_0@X#jFSQxo&`Y4`xHm zM#R$?vkBY_O`#cX&4Kq3eaQH`kiHE0*8+F#={z5(Wwi{sR;$oOOV7AW;>9_|_nu z>1d(z@ARFrEL4HIW8CWUte2zP3MijY5&OK>%1|XIJMML8Q&(YMlM^uY&RdQAHLx~R z1*yz$a=i}L<7WeGgol0qRcR-yk~dY+SAB2lBX4li=QjG}bE_ev8h)z9{E$nuHS(jc z(VCpHnaW9=TM{ccn@G!MbPl-{oh`(t{oYEG&am3bz4UnGruenTVjFg9%eGU-By&fo zhNH7Bb+*={_+1S<;W2m|o`7BOB}j>_adL+(Vceb2^N91es5RzAK;M{wN#+jolx|JOL+RJLC1wVm=4Y z!wc{tXl_h%W@?vT;{IibpQrE&*RR5B@H+ax0jJGL_!`c`H}EZd2RgGu z&+B`xe}D_{Bj`-J?$0O86KXM&1+(1 z_wrgf;5JX=O*-S_T`MPtT3L&$wSH~%WsqyJ#`aPPj(HSZusS8EXr5O5Y-mW;N%B`N$9bA`y zl5i(FXl%9==3P*l4qO?`vQQ4ndv%?=z4)03o>jrC>{KLNC8+GxbE>OwuJ4-McRXbAZT-w3lYG=V7h z@iQXs<-RF2gXVA_w1Ae-3RU$eZjfu6zY)5+9LmG5|j?f9xp)+(L?Jv5jyUW=Z z+Q7LVIbER}6hU9jQ+4OM2lVviGWJBc-hNz~i*~F&+)qi=>Amqjgs#-qYrm=5DLsdV zv~h`6U$2pq!l}Nj*yLVkdhq@uy!sgZF$cgv;u-{lVF(O`VK5vZVOWZ=fg zY8;bg);)~z<@s|RwEsx4K_nAM`V-NU=6p)-~=<)_a#j_^h& zjZ-99x}dJpV{r(hpwkFeI`?dSS{*UCBQwRR49ZJfhiTjvNmKMl{I$5D6)v|j5N z=5aXTX`K(F;$Az-T08V=hh7>x(i%3tNs;*+=>4R*>*u+C0bYcc;AK!Azk*p1Gs@}E zuX<^;z-h=zLsmQIHDtf;bzs*=2kbid&-)GHK1G^ap!b`EJsp$t7P`L8vwDZTqqgF| zWlSH|ffD8u=HlPOPYSX!|MU z>ofQqH}%g_IK^81CNs98x=r7eHlVB16?zajd~7 z|Gy)S??Li@@cPgX>qA!b@$)@Jbdmyur=`$F_VO`7}p zeZMOiI;PVvOGjopGBsb**QrNIYLTel{^{rZgg>1`-egxfW50Qoh5+X2Wv#h9{Z{q7BPa&ba7J$mds>km)kv;&+!DF@e~ zg+FI#p6_4C(;2rnkKO)r%$9xIGH2V^B6OKqys^$Yij+-C|8p*#-3{}5kR=CI1Mm=OCCf+X7*eZZ|y035Ewcp)jW%LpYWOz1Jhi&C2HTl<+X}HQsg( zNA_@J4@Y+Vxv~m2^9a&B+(`|aK6*C7Wk*&Hxa5xHxyy}T1jPQf@F>bs+%NAao?%Yx z)$h<;d^Y^$3Xk^VNyR=l=nQC`J6qEl6O(1e+VX@e@to<4*f$*=CT`vuWkWx4=i3TEi2`6~JY3ALQtaFY&&a4!t{wkv|EH3N#LD5y@= z;k~Ty`C{A`hdZDIl!QB>6x;=+p$wEohjQT={6^Gtt9*DIeSO!uJKV&o0NLs5RSb`J zDuwfKu2>$cGG-O1O1NrJ9cn;Ls0Fp54m#GwtOxZ$eK(zl*MRGLaBB#SpfNOod$Df{ z=jlf@K$$iT1qVcqc8o$DT$Ju!PhZ|DPkp&#@o`~VmTgJ3XrLtrQj3+uO5=(Auy0!G3p zNV8^gijwkCXYuNs+bY&*{Es1?Q9PTmT#tkCpx^mW8!>_F(mcb7n3G^KeoycWr*J)$ zYkliyp&fpJbgNC<4%4vjYRzKIGagqw4&x`vY5zBV|4VD6_ze~0O^4CMIRjJcO=e=w zg4tl!QpiZN~6m%=hw9-iW?2-mPy z!YbshChj$`R&Lf*r*7gD=OOIZg&&|E%8oV3+z+v*QRkR%!0$#-zw2S_H^FA^w?Jd; zwsQXnY=iBv10E$#y(f2a{TMtBPx$dk@2UJ6$5iU_RKG3LH_9&DpUm*5u_MMg@V^H+ zd$E5C)^o2k@59{B{V39T03CE@(?QHb*dNCJNZ8EJXg>Yv@Pq#Q=^5Pgn_?-f5()Y% zMW)B%p6VRM?HEL@2Z_tXYxd(Zw$J^Z@C+xXAJ(x>5YI{Ccoy?HcphGW7vUv%8MoIc zZ?ACOl=}55;a`K-xqkz+r*ty?w^P`?iQm)k7S{!wnT~m%(jVgf9e5Ys!~Om6RObxW zA8`F4d;}VA{}}TV_!PIVk-3&%k}&&$OkRD4{pUQ>v*Fo{AZ1OB4?az@CS;amt$bAH7BhAuOmi=;Uip6*=2{xW{Az)#^h zPOB{Qou9)CoO0Fz;#@$SIwN=?@3JP=FMc}}|2Ac93T=w|c+WA;qPl+-9e#sr@H_kg zeZ^onZUs;iI530Ll#JaWC(x@K?s2dVTeFh z!t0!;ED4NNBQq7UMGo*J_FLH_YV$lRM}#%L5MQ^EGjfn$YK*(9O>E3>yBM8wA@jy> zCYUxqH+Fg8cE}s4X61t@^72C_-lYXFRgVkeUI+?9kw_`#yW;JTXB9=yVo)67b5p8! ztV8yn=N;Hb@UK2)3DQs!8Fxad$YQ^)-Np4-bWGuwNitdatq1K@ zTUu?ul;>yqN9B-H9)EX7mhinPKTDhn5&fdcGW;#WpJv4vr^nA(`gH13P2|^3SQUo* za@_T-J*!g0vnofHI#rNU6+J$}p&!FJ)sS!IbWGSKiK%=~m~pwn{ANq_NE54uuP5*0 z$c-{oi~On$b#POiX-FTqZsZJcxmLZ1Yt_e1W$Q5IM|sqM`+Gontg#J^6Es8*oip1A zvoSP*d!Z>bgU0;wPGQDDn@93m_r>JJ<71+AeCw1sxi9@3x#bc9Zj4xOP3 z+z(x$8+3;r&=Yz=Z|DPkp&#^z0Wgqs4T`KFZFD`I(T%G_Y|8vG7_UL9i`US|IOk7d_*Kgus z=_6o2HM0H||HfYaH_)g3r!3=kv&@a8RerR_MLNahKJ2H%*vIvYyGiyY>Oef)zuj+^ zzd5EK^9snGMt!~!$Cg`kH-034>%VlDU0eqJ8Dve5JQ53UWcEhmUgW682cy=uTV&sG z-yTadWhfR#&nA0~tdnUP0tkz?!?$Ikz%qj8Vx_}ER)`|wNtjHePG^L4to?nLcX56bk66M#7%=2eFiu7t+;A_71 zqWr>9++KF-pU?Hn`+n|>ym>MIS_dIF<$Gg(5$XSSKbR5!d|#hK8TSkP`@{Hk4Di}?^p-*pf#BkQ@|fc-|= zmxo~!Y=$kc6&}HD8*Inl4(>JAVtzZ&tkHiIyPfbDJPuF5F8sfp6#xA=&V!;|+6{YP zZ{!5&J3;$&!f&6RiahVX3(XkhNoOK!bNAtIKkpmOIUm4`pWlBF9n^0-%e!DPeGiSJ S>D-<}kp|7{*TwTKfBz2|>w;4N literal 0 HcmV?d00001 diff --git a/tests/test_blendfile_loading.py b/tests/test_blendfile_loading.py index 039eb33..2206d99 100644 --- a/tests/test_blendfile_loading.py +++ b/tests/test_blendfile_loading.py @@ -1,23 +1,8 @@ -import pathlib -import unittest - import os from blender_asset_tracer import blendfile from blender_asset_tracer.blendfile import iterators - - -class AbstractBlendFileTest(unittest.TestCase): - @classmethod - def setUpClass(cls): - cls.blendfiles = pathlib.Path(__file__).with_name('blendfiles') - - def setUp(self): - self.bf = None - - def tearDown(self): - if self.bf: - self.bf.close() +from abstract_test import AbstractBlendFileTest class BlendFileBlockTest(AbstractBlendFileTest): diff --git a/tests/test_blendfile_modification.py b/tests/test_blendfile_modification.py new file mode 100644 index 0000000..a97ca0d --- /dev/null +++ b/tests/test_blendfile_modification.py @@ -0,0 +1,34 @@ +from shutil import copyfile + +from blender_asset_tracer import blendfile +from abstract_test import AbstractBlendFileTest + + +class ModifyUncompressedTest(AbstractBlendFileTest): + def setUp(self): + self.orig = self.blendfiles / 'linked_cube.blend' + self.to_modify = self.orig.with_name('linked_cube_modified.blend') + + copyfile(str(self.orig), str(self.to_modify)) # TODO: when requiring Python 3.6+, remove str() + self.bf = blendfile.BlendFile(self.to_modify, mode='r+b') + + self.assertFalse(self.bf.is_compressed) + + def tearDown(self): + if self.to_modify.exists(): + self.to_modify.unlink() + + def test_change_path(self): + library = self.bf.code_index[b'LI'][0] + + # Change it from absolute to relative. + library[b'filepath'] = b'//basic_file.blend' + library[b'name'] = b'//basic_file.blend' + + # Reload the blend file to inspect that it was written properly. + self.bf.close() + self.bf = blendfile.BlendFile(self.to_modify, mode='r+b') + + library = self.bf.code_index[b'LI'][0] + self.assertEqual(b'//basic_file.blend', library[b'filepath']) + self.assertEqual(b'//basic_file.blend', library[b'name'])