Files
Hexapod_Simulation_Unity/Assets/MobileDependencyResolver/Editor/Google.JarResolver.dll
T

6570 lines
323 KiB
Plaintext
Raw Normal View History

2023-04-10 15:11:41 +02:00
MZ�ÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode.
$PEL‡cà" 0Ò! @ €@…€!O@´` H   H.textØ  `.rsrc´@@@.reloc `@B´!H
Œ¥ ²¨m0É
o
(
o
8�o
(
(
(
(
(
,(
(
~o
þ,siom  ,~o
+
o!
:hÿÿÿÞ ,o"
Ü
+
*٦ .s#
€*z($
}}}*0({(%
+*0 {
+*0*((&
.rp+rp(%
(
+*0Ò{�%{(s'
¤(,(~((þ+ ,r)p(((
o)
 +e(
(&
þþ
,Kr…pr‘p((
(‹{áþ,r§p{â(*
o)
 + +*0s+
%-róp+r po,
%rp(
((
o,
(
þ , o,
o-
+*(.
r/p(
(
(*
o,
(/
-ÍÞþ o"
ÜrGpo0
(1
(rKp(%
(
(2
Þ$rop((3
o)
Þ,rßp((*
o)
(o4
+*S7Šª Ê$0wþ
,#~¬%-&~«þps5
%€¬~  +2š
,  o6
þ+,  o7
o8
X Ži2È+*0Ès+
o-
8€(.
(
rGprpo8
(
�s% �o9
(
o:
o;
rGprpo8
( (<
rp (*
o,
(/
:tÿÿÿÞþ o"
Ür+po0
(1
+*“¢0r/p(
(
(<
+*0"(=
þ>
s5
~( 
+*0}�q%rAp¢%r…p¢%rp¢%rp¢€�q%rGp¢%r×p¢%rÛp¢%rßp¢%rãp¢%rçp¢€s?
%rçpo@
&€*0 ~

+*"($
*BrëpsA
€
*0($
þ
9Òs+
 (B
�s%
�oC
8� šoD
rÿpoE
,�soC
š,;rpoE
-*r/poE
-rWpoE
-r}poE
++,+  o,
X Ži?iÿÿÿr+po0
(1
((((((*0‰ ($
o(o(o(oþ
,ooF
t(oþ ,ooF
t(o(*{
*"}
*{*"}*{*"}*{*"}*{*"}*{*"}*0(rçp((G
+*0<�q%(¢%rçp¢%(¢%rçp¢%(¢(H
+*0 ( 
+*0
r©poI
-+o:
YoJ
r©poI
-+o:
YoJ
�s%.�oC
�s%.�oC
ŽiŽi(K

8„ š š(L
, (L
+,(þ  ,
+bþ  ,
+P+/oM
  þ

,
+0 þ,
+ X
þ:oÿÿÿŽiŽiþ
+
*º�q%r­p¢%r·p¢%rÁp¢€ sr€ *0S {sN
~oO
+(P
(
o,
(Q
-ßÞþo"
Ü
+ *%>0 (&
+*03
s{
}±s. þ|sw ~%-&%-
&{±-+€(R
sS
+9oT
 oU
þþ  ,rÑp(<
sV
zXo:
2¼}s+
%-&�qoW
rûprp(%
�q%rpr#p(%
(%
¢%r=pr#p(%
(%
¢oW
(+}~{oX

+
*0*~,
,~++
,~ox*0½oþ ,
8¦s+
 ~oY
+=(Z
([
o o\
o]
,(^
o,
+
(_
-ºÞþo"
Üo`
þ,o0
oooos
+ **Jt0Ò
�q%rKp¢%¢%rqp¢%¢%r‰p¢%¢%rŸp¢%-r»p+ rÅp(1
¢%rËp¢% -r»p+ rÅp(1
¢(H
('%-&�qsN
{oW
(+o0
s(( {o oa
*0”sb
~oc
od
+X(e
{of
+%(g
(h
(i
soa
(j
-ÒÞþo"
Ü(k
-ŸÞþo"
Ü+*02be}^sb
}sl
€*0bsm
sn
oo
+)(p
 oq
,+ or
& os
(t
-ÎÞþo"
Ü+*6K0~þ
, ~ou
*zs+
}sb
}($
*0vsl
€sv
%rëpsw
r/psx
oy
%repsw
r¡psx
oy
%rÕpsw
r¡psx
oy
€€sz
€*{!*"}!*{"*"}"*{#*"}#*{$*"}$*{%*"}%*0i($
rp(1rp(3s�%rpo~%~ o€(5s�%r%po~%~ o€(7*0#(8þ
, (=+ (<*0„(0(2(4o}(6o}(8o}({
 E(+9(4oo|
+&(6oo|
+(8oo|
+*0W (0(2(4o}(6o}(}
 ,(4oo|
+(6oo|
*Z~´þ„s~
€ *f($
(Gs
}&*V($
s
}&*0m($
(
,(Gs
}&+Fs?
}&�s%,�oC
 +š
{& oD
o@
&X Ži2Þ*0){&sN
o€
r+po0
(1
+*0{&s
+*0$u
,{&{&o�
+ +*0{&o‚
+*0(ŽoŒ
+*0(Foƒ
+*0D�q%r/p¢%r?p¢%rWp¢%rkp¢%rsp¢%r�p¢%r‹p¢
+*0r™p((
(„
+*0(…
(I
+*0!(Ž
oˆ oŠ (F
oCo†þ,uj o-
+7(.
(
o6
  ,(
(J

`(/
-ÀÞþ o"
Ü(†
o‡
+yo†þ  ,] oƒ
oˆ
o‰
þ  ,+Io‰
0 sN
(Š
o‹
+r¥p(J(†
o‡
+
r­p(Œ
*@D„04(Ž
oˆ oŠ (F
s?
o†þ,no�
(I o-
+6(.
(
(J_jþ  ,(
o@
&(/
-ÁÞþ o"
Ü+wo†þ

,ho�
(Ž
 o-
 +1 (.


(
 (�
,
(
o@
&+
 (/
-ÆÞ þ o"
Üo‰
, s@+s?+*JC�È>:sA(K*0(Lo�
+*"})*{)*0“~(o‘
+b(’
o\
o]
,Fo“
oJ
o“
o”
Xo;
o•
r^prßpo8
(G
(–
-•Þþ o"
Ü+*
o|0rßpr^po8
+*0Œ(Qr^prbpo8
(R
~'o-
+=(.
(
oE
,"(
(
o:
o;
(<
+
(/
-ºÞþ o"
Ü(O**Jt0„ (P
~'o-
+=(.
(
oE
,"(
(
o:
o;
(<
+
(/
-ºÞþ o"
Ürbpr^po8
+*J^¢r×prfpo8
rfprbpo8
(O*0#!(Prbp~—
(˜
o8
+*"}**{**0"(X @Bj(]
+*0rjp(P(X(*
+*0(Po‚
+*0$#u 
,oP(P(�
+ +*0Ž$(
,j+z�s%.�oC
j j (™
+Ešj(š
Þ&r~p((
(æjÞZX Z XŽi2³+*E
R.0%s+
o›
+Doœ
rêpoPoX(
,rp+rþpoX((
(*
o,
o!
-´Þ ,o"
Ür+po0
(1
+ *P_ 0s�
%r
prpož
€'sŸ
%r(psw
o 
%rZpsw
o 
%rjpsw
o 
%r¤psw
o 
%rWpsw
o 
%r?psw
o 
%r¼psw
o 
%rÔpsw
o 
%røpsw
o 
%r* psw
o 
%r@ psw
o 
%r^ psw
o 
%rz psw
o 
€(*"}+*{+*"},*{,*0ú&r¤ p(%
(%
 (¡
Þ"
rÈ p o�
(*
(æݵsf%oU (�8†šoD
rÛpoE
  ,+[rø poE


,rø p(:
o;
oW+,r
poE
  ,r
p(:
o;
oaXŽi?oÿÿÿ+* "/"(_*0'{-o¢
sN
+*04(
{-o£
þ ,s¤
{-o¥
 +*0�)s¦
(ho§
+(¨
 oY o©
(ª
-ßÞþ&o"
Üo«
þ,+= o¬
o­
+ (®
 (¯
-ëÞþ(o"
Ü+*%:m†0I*(ho§
+(¨
od ,
Þ(ª
-ßÞþ&o"
Ü
+ *%4Ns°
}-($
*®(Ã}.}/þos«(¿*0¬+o±
,8›{å,{ä{.o²
-(Ä(Æ{ä{.o²
+ ,](Å(³
{/(´
(<
oµ

+ ‘o¶
o·
X
Ži2áo¶
o¸
Þ&Þ*VO¥0­,s�
}»r(
p(–}ºrd
p(*
(æ{ºr®
p}Œ{º}‹{º{º{Œ}B{ºþ}”{º~h}D{ºþ‘s¥2o�{ºo—*0‹-s’
}¼}½}¾}¿}À}Á}Ârþ
p{¾{¿(*
(æ{¾{¿{Ásn{Àþ“s¹
(s*0\.{áþ
,þ+ ,A-rL p+rù p rÀ p-+rÜ p(^{â(3
-+(æ*0:/s–
}Æ}Ç}È}É}Ê{È-r2
p+rx
p rÖ
p(–}Å{Å}Œ{Å}‹{Årp{Æ{Ç(*
}�{Å{Å{Œ}B{Åþ}”{Å~h}D þ
,
þÇs« r*p{Æ{Ç(*
(æ{Å{Æ{Çþ—s¥{È- ô+ úo�{Åo—*0²0s˜
}ÌrÖ
p(–}Ë{Ër:p}Œ{Ë}‹{Ë}�{Ër¶p}Ž{ËrÂp}�{Ë}‘{Ë~h}D{ËoC{Ëþ™ss}Š{Ëo—*^($
}6}7*0O1{6rÒps�
%räprpož
(‹
{ßrpoº
þþ , + +*072sk
 (� 
8 šrpoE
, 8ê~3o\
o]
,8sf%o»
o¼
o•
oS oPoho½
8—þ,8ˆ~4o\
o]
  ,o»
o¼
o•
oa+Q~5o\
o]


,5{7o»
o¼
o•
(%
r¤ p(%
(¾
oc X
Ži?éþÿÿ + *033sš
}Í}Î{6r&pþ›s¹
(p*0‚4s+
o¿
+(À
oTo,
(Á
-âÞþ+o"
Ü{6rJpr+po0
(1
((
rzpr®pr¶pr¼psw
(q*"1ºrÐpsw
€3rpsw
€4r(psw
€5*0M5($
}=(Â
(Â
(Â
~—
(˜
(<
o:
o;
(e}>*0 6{>
+*0î7sk
  
(�8½šoD
oÃ
r`p(�
  , 8ƒr†p(�
 r®p(�

 
`

,   8QrpoE
,89(
,G , oP(
- oX(
þ++, oPoh o½

8åþ,8ÕrÖpoE
  þ,* þ,sf%oO%oc
8‘ þ9„rçpoº
þþ,foJ
oD
oÃ
Xo;
oD
ràp(�
,
oa+røp(�
, oWXŽi?8þÿÿ+*0z8sk
  
(�8IšoD
oÃ
r`p(�
, 8r†p(�
 r®p(�

 
`,
  
8Ûþ,8Ì þ,rpoE
,
8¦�s%|�oC
  Ži2 (
+, +v Ži�q +  šoD
¢X Žiþ-Û š

ohsf%
oO% šoa% šoW%oco½
XŽi?¬þÿÿ+*0r9sœ
}Ï}Ñ(},(}oY~<þþ+}Ð{=rp{Ð-rp+r p(<
þ�s¹
(p*0Á:(^
r6prpp((
rpr%p(}
þ
,r;p(æoÄ
+ys+
o¿
+(À
oPo,
(Á
-àÞþ+o"
Ü{=rGpo0
(1
r¯prÍprÑprÕpsw
(q*V$zZrùp @Bj(]€<*0;(
,rpr¦p(*
(æ8Ùs+
%(�o,
(&
þ
,�q%r§p¢%r±p¢oW
�q%r»p¢%r»prÇp(%
¢+jšoÅ
+6(Æ
(<
(%
(%
  (¾


,  ÞE(Ç
-ÁÞþ-o"
ÜXŽi2Ž(�
,(¾
-+ + * Cã–rÏprvprp(*
(æoÈ
*0
<sž
}Òrvp(ƒ þ
9–sŸ}Õs|}Ô{Ôo}}Ó{Óþ,U{ÓoY~<þ,{Ôþ sÉ
o€+{Õ{Ò{ÔoÈ
+Orp(ƒ þ,,svowþ  ,{ÒoÈ
+
{Ò(„*n}?(hrŒp}¦*0‹=s¢
}Ü}Ý}Þ}×}Ø}Ù}Ú}Û{Ür¶p{Ý((
o)
{Ý{Üþ£sÊ
(Ë
þ , + +*0_ ~rp|?oÌ
,{?o++)rp(Ûr6pþäsw(%}?(g +*0q>sÈ
}õ}ö}÷}ø}ù}úþÉs~
(Í
, (Î
+þ|
sÏ
sÐ
oÑ
*0?(Œ
+*0^@sÌ
}þ (Ò
(Ó
(³
oÔ
oÔ
þþ,
(³
(Õ
oÔ
þþ  ,
(³
(Ö
ÞC
~@þ  ,/rVp�
%¢% ¢%(³
¢%
¢(×
(Œ
 Þ(&
3
r?po²
+  ,
+.rCpoE
-r?poE
þ+

,
(
_9–(Ø
(Ø
(&
þ,rGprWprCp+)raprkpr?pr?pr{po8
r…p�
%¢%¢%¢%¢%¢%¢(×
sÙ
}ÿ{ÿoÚ
oÛ
{ÿoÚ
oÜ
,={ÿoÚ
oÝ
{ÿoÚ
oÞ
{ÿoÚ
oß
8˜{ÿoÚ
oÝ
{ÿoÚ
oÞ
{ÿoÚ
oß
þ,Vo-
+/(.
{ÿoÚ
oà
(
(
oá
(/
-ÈÞþ o"
Ü{ÿoÚ
- {þþ+oâ
{ÿoÚ
oã
{ÿoÚ
%-&(ä
oå
{ÿoæ
&{þþ,"{þ{ÿ{ÿoç
(ªo¬�
%s+
¢%s+
¢}ý,W{ÿoè
,<{ýš(¡
o,
{ýš(¡
o,
(é
(é
8«sÎsê
}�%{ÿoë
oì
¢%{ÿoí
oì
¢(µþÍs‚þÏs†s»&+šo³XŽi2ã{ÿoè
{oî
&s¤rp{ýšo0
(1
}ßrp{ýšo0
(1
}à{ÿoï
}á{ß{à{á(Ž}â(Ò
þþ  , (Õ
(Ó
þþ!!, (Ö
Þ,"~@þ##,rÁp "(3
(Œ
 Þ$$,€@%+%*(PmC/n<ªä8,/0ArLp(ð
+*0CrZp�
%,rÆp+râp¢%¢%¢%¢%¢%Œx¢(×
+*0(&
.rp+rp
+*0–B(&
.rp+r$p
(ä
(‹ {áþ ,{ß(�š
ÞPÞI�q%r?p¢%¢%r0p¢%¢%ržp¢%o�
¢%r¦p¢(H
(ñ
Þ
+ *1GI/€@*"}E*{E*0)C{F
 (ò
t> |F(+
3ß*0)C{F
 (ô
t> |F(+
3ß*03D(Í
-Ð(õ
(ö
t+s 
oA +**(˜*0(Í
þ
,
(÷
*0(Í
þ
, (ø
*0T(A"þ}Arp}Brp}C}Fþ}”{—þ¡sù
o*‚}Bþ}A}C(C*0ÇE}�{B(
þ
9¢}��Œ(ú
&{B(û
�Œ(ü
�Œ(ú
þ{A"€?(ý
rp�Œ(þ
{C(
-{C+rªp"ÈBZiŒx((
(ÿ
(
(
(
(D*0ÉFsÜ
}{DsÒ}{}{þ×sØ(”{oÐ{oÁþÝs¥ {oÐ{Dr¼p(*
o)
(’{þÕs¥{þÇs«(Š*0{Fþ
,
{FoÙ*&(F*Ns
}D(H*0(“þ
+*&($
*0(Gs+
Qs+
Qs+
Q
�q%ròp¢%r+p¢o
 8Þš
røpoE
- rpoE
-
rBpoE
+,
8Ÿ oD
(
,
8†(
þ,vrøp(�
,P oD
(%
(
o,
+Frp(�
,P oD
o,
+"rBp(�
  ,P oD
o,
X Ži?ÿÿÿ*02o`
þ
,#rjpr+po0
(1
((
(æ*0¬Hs�
o
+{o
oo
rõp(�
-o +orp(<
o(�š o
,rÅp(G
+ o
o!
:zÿÿÿÞ ,o"
Ü+*Š™ 0>Iþ ,(B
�s%
�oC
šrûpoE
,
8�q%r p¢%rp¢%r!p¢+)šoE
, ( 
8ºXŽi2Ïr/p~ 
(˜
(<
(

-oÃ
(
oÃ
oE
+  ,]o:
o;
( 


(
þ  ,
(<
r=p
(3
 +rÄp(*
  (æ( ( 
+ *0�Jsß
s 
}þàs

~oO
+,(P
(
(
(¦(
o
(Q
-ËÞþo"
Ü o
+o
oŽi(
o!
-ÜÞ
,o"
Ü +wo

+L
o
  o   Žiþþ,+& o(�š
  š
(¦
o

o!
-«Þ

,
o"
Ü X  þ:{ÿÿÿsl
{o
+5 o
tqrÅpo
t
o0
(1
s'
o
o!
-¾ +*(,9e(§
ÃY
0†Ksá
}}}}}}(*}{o
s
}(ß}{orp(%
(
{~ho,]Ð(õ
o
�%s'
¤%r|p{orÖp(%
(
s'
¤~h(þ+,Iröp{oÐ(õ
o
o
(3
(æ{{o
8Ls+
{o
(§oO
+(P
(
o,
(Q
-àÞþo"
ÜsÞ}rV p(–}{oG}~h{oxo
þâs~
}þãs~
}þæs¥}{o
(¥oƒ
sN
(Ô(
  , r” ps�
%r  p{ož
%rº p{(
ož
%rÐ prbpo0
(1
ož
%rè prbp o0
(1
ož
%r
!p(6-r$!p+rpož
%r(!pož
{rR!p}Œ{}‹{{{Œ}B{þ}”{~h}D{o

Z2X}{(#~hþés
o

,{o—+{{o
*W${0ÕLsí
~,%-&~+þós5
%€,}'s+
s�
s?
}&(o
 +S o

{'
o7
  
o
 r–!poE
- r´!poE
+  , 
o,
 o!
-¤Þ
 , o"
Ü{&o
o
s 
~ s
rÁpo!
&s+
o"

8ésï})
(#
}(r"p{(((
{*%-&þðs$
%}*(%
+|š(
oÃ
r"p(�
,o,
+C{){'o7
 o&
-s+
+o,
o'
XŽi?yÿÿÿ
((
: ÿÿÿÞ
þ9o"
Üo`
1 o`
þ+,9rL"pr"pr+po0
(1
r+po0
(1
(3
(æs 
o-
+Z(.
 (
o&
,:(
o&
-s+
+oW
(
o'
(/
-�Þþ o"
Üþîs5
o)
8²(*
(+
o7
 s?
!(,
oÅ
$+$(Æ
%!%o7
o@
&$(Ç
-ÛÞ$þ-o"
Ü!sN
""~ o-
r‹%p{'(+
o7
(+
r+p(,
o0
(1
(3
#~ "oŠ
 oqþþ&&9°rP&p#rt&p(<
rpr%p(}
''9…s+
((,
oÅ
*+*(Æ
+(+(.
oW
*(Ç
-ÜÞ*þ-o"
Ür­'p((/
))(
þ,,,
)(æ+X##(
þ--,#rë'p(<
(æ(0
:BþÿÿÞþ:o"
Ü*A”P`°
ÿüûogÖ5)^"(JÅÅ07Msõ
}.}/}0}1þös~
(Î
*0ÌNsø
}3}4}6}7(Û}5{5(
-{5(

þ+ ,:r+p{5(
-{5+rÓ,p((
(æ{7o|
+Aþùs~
}8þûs1
{4{5(%þ{6(¨*0=Osü
}:};}<}={;þýs2
(…*0QP(
~   +0š
 oI
,o:
o:
YoJ
+X Ži2Ê+*0('(­(%
+*0€Qs
}C}D}F(s
s3
}A{Ao4
}B{Bþ ,{Fo|
+s+
}Eþsù
(5
*08R(6
�s%.�oC
š
(L
þ , þþ
+ *0ùS(Ö,
(/þ+ ,
8Ø(°þ,
8Ãrá,p(%
(¾
,)(¡
r -poº
þþ,
8ƒr+-p(%
(¾
þ,
+e(³ ,(7
" üDþþ+  ,
+>þ

,0oC  (LoCo8
 o‰
þ  ,
+
+ *0¤T(
(ÂrC-poÃ
r·poI
-rs-p+rp(3
(‹ {áþ ,?rw-p�
%¢%{áŒx¢%{ߢ%{à¢(×
(9

ÞÞ(9
z
+ *��/0‘Us?
~G  +`š
(Ho
+/o
 (%
(%
(

, o@
&o!
-ÈÞ
,o"
ÜX Ži2šo‰
0+s@+*$<`
0VrÏ-p((
(æoÃ
r­poI
þ
,8á(:
(Â
(%
d(;
þ,rí-p((
(æ8Ÿ(%
r].p((
(.
(/
(
þ  ,(æÝX(<
&(þ

, Ý4(±,
(Ïþ+  `þ,Ýrá,p(%
(ås�
(ï
 9›rÉ.p(%

(<
&r+-p(%
(
(%
(¾
,(é
(¾
,(=
+1rÓ.p(%
(<
&(²þ,ÝAr÷.p(%
 
%-& 
 (

9q(³ 
(>
,H 
(?
rÿ.p((
 (.
(/
(
þ,(æÝ·þ9(LoCoCs
o8
~-%-&~+þôs@
%€-rW/p�
%oA
¢%oA
¢%¢%oA
¢(×
(æo"
 +Q (#
!!o!
&rÑ/p((

!(%
(.
(/
(
þ"", (æ ((
-¦Þ þ9o"
Ü ##9¿r0p(%
$$(¾
þ%%,($�q%rC0p¢%rg0p¢%r‰0p¢(B
r³0p(*
(ær
1p(*
(
(.
(/
(
þ&&,(æÝ(C
�q%¢(8�r�1p(*
(ær¾1p((
(
(.
(/
(
þ'',(æ݇(²þ((,Þq�q%¢(Þ)rü1p)(*
(æÞÞ7r:2p((
(.
(/
**(
þ++, *(æÜ+*ALþ^\uF»/ub×7r�q%rÉ.p¢%r÷.p¢€G*0ÂW
s+
(¼oÅ
8@(Æ
(Â
 (:
r­p(<
(%
(¾
þ9ú (D
  

,Hs  s?
}O�q%¢ þsE
( {Oo‰
þ    ,G(F
tH

oG


oH
Þr¬2p (*
(æÞ+rÅ3p (*
(æ,o,
(I
+(¾
,
(J
&
(Ç
:´þÿÿÞþ-o"
ÜoÅ
+(Æ
(¾þ,
(Ç
-ÚÞþ-o"
Ü+*ALÄ)í/Si�*«0 XX(
rT4p~H((
r|4p((
(æ~H(K
Þ$
r”4p
o�
(*
(æ ÝørÈ4prú4p(*
(ærú4psw
o
 + o


oL
,+
 o!
-ØÞ
 , o"
Üþ, r5prú4p(*
(æ 8f(¶þ,  8Ns+
(6, oM
þ+,@�q%rÇ5p¢%r=6p¢%rQ6p¢%r¹6p¢%r'7p¢%r37p¢oW
(oW
�L%r77pr§7prç7pr#8ps¢%rú4pr/8pr}8p(rÇ8ps¢%rá8pr÷8prA9p(r‡9ps¢s+
o
+fo
s+
+8šo- o`
þ+,+XŽi2ÀoW
o!
-‘Þ
,o"
Ür+psN
(0
(1
r+p(<
r+po0
(1
r+p(<
  (�
,r«9p((
(æ +}~H~h(N
þ,rÏ9p~H((
(æ +Ir7:p((
(æ~H (2
Þ!r”4po�
(*
(æ Þ + *4*9$/‹,·
ósf
/!/Vr_:pr�:p(%
€H*0�Ys?
rµ:p(
(¦ (
o
+=o
(
oE
,o:
Xo;
(O
o@
&o!
-»Þ ,o"
Ü+*%In 0¨Zs+
(

9Œ(P

+E š(Q
oÃ
r­p(�
-rÁp(�
+, o,
X
Ži2µ(R
+š  (»oW
XŽi2Û
+
*0M[s+
(ºo"
+(#
(»oW
((
-àÞþ9o"
Ü
+ *$80(Â
(:
(%
+*0
\r¹:p(
((
(½r ;p(<
(¾
þ,"r;p(<
(*
(æ8¶(Q
oÃ
o;
sS
sT
 oU
Þ
,o"
ÜÞ& ra;p(<
 (3
(æÝR r»;poV
oW

+K
oX
tM  oY
(>
  ,(rÏ;p oY
(3
(æ oZ

o!
-¬Þ
uN

,
o"
Ü~h(N
þ,r1<p((
(æ8›9‹s[
%o\
%rÎ<po]
%r+po^
%o_
(`
 oa
Þ
,o"
ÜÞ6rÔ<p(<
�
% ¢%¢%¢%¢(×
(æÞ+*@u
‚
l&’&/ÒX*±
¾
{SÎ6/0o]sb
(¼oÅ
+J(Æ
(½oc
þ,s?
od
(Q
o@
&(Ç
-­Þþ-o"
Ü �q%r­p¢%rÁp¢ oe
8©(f
 rp
  +p  š
 (g
o"
+)(#

oÃ

(�
,+
((
-ÎÞþ9o"
Ü,+ X   Ži2ˆ (h

(<
(¾_ (i
:KÿÿÿÞþAo"
Ü+*(WkÕ6 œ¼X0¿^rc=p(j
(
- rs=p(k
+ ,y(Þ (
þ
,d(&
þPo�
r‘=prpo8
rŸ=pr§=po8
r³=p(%
r¿=p(%
(%
(

,
(
,
rÏ=p(l
 + *0rã=p(Æ
+*0rë=p(Æ
+*Frõ=psA
€S*0I_(Á(
þ
,1(ÁrÇp(�(<
(%
(%
(¾
,
+
+ *0¬`(Á
 (
þ ,I(Å (
,4rý=pr>prÏ=p(3
r?p(m
&r?p(*
sz+E(� (¾
þ,-rý=prŒ?p((
r?p(m
&r÷@p(<
sz+*VrAp(*
(æ*0 a
(Ã
Þ&Ý rJBp(n
s�
%rÏ=p(Áož
(‹ {áþ,{â(Ç8Á r\Bp
{â (o
o]
,Vo»
røpop
o•
rµ:po²
þ,rÌBp(<
rÒBprp(q
sA
(r
  ,{â(Ç+*~S(s


,räBp~S(*
(æ*
N0X ~T-(t
-(u

þþ+
,+3(),(-
(!þ++ ,
r±Dp(Œ
€T*"€T*0'b~]
 (ò
t ](+
3à*0'b~]
 (ô
t ](+
3à*0>cÐ�(õ
ov
þ ,o�
þ, ++*0$rºHprp(Îo�
ràHpow
+*0(Ï, ~H(¾
+
+*"€_*0Ôd~_(
þ , ~_
8µ(Þ
(
,
8œr³=p(%
rîHp(%
rüHp(%
(

,hrIp(x
+Jš~`(
o\
  ,  o]
+

, r(Ipoy
€_+XŽi2®~_
+ *J€a(z
€b*0Ðe~H
(¾
,'(
~b({
þ,€a~a(
þ,
~a8u(Þ (
,8[r³=p(%
r.Ip(%
(

  9s+

(¾
  , 
o,

rNIp(x
oW

oÅ
 8· (Æ


(K
+}š~co\
, o]
+,r(Ipoy
€a+J~do\
, o]
+,r(Ipoy
€a+XŽi?xÿÿÿ~a(
þ,+
 (Ç
:=ÿÿÿÞ þ-o"
Ür`Ip~a((
(æ~a+*ÔÊž0fr¸Ip(Î
,¥Ÿ+ +*0(Ï,(Õ+
+*0'g~f
 (ò
t f(+
3à*0'g~f
 (ô
t f(+
3à*0'h~i
 (ò
t i(+
3à*0'h~i
 (ô
t i(+
3à*0airòIp(j
(
- rJp(k
+ ,4(Þ (
þ
,r.Jp(%
(

,
+*0'j~m
 (ò
t m(+
3à*0'j~m
 (ô
t m(+
3à*0Äk~n,~nrp(�
+
9—Р(õ
r6Jp�
%
ŒT¢%Œ¡¢(|
tq€nÞY&€n(}
o~
 +8š
o
o€
rlJp(�
, o
(Â
€n+ X Ži2ÂÞ~n+*"<^Y/0 l~o
+*0(,
(Í
þ+
+*0zms�
€Y€Z€[rªJps‚
€\€_r¾Jpsw
€`€abþrøJpsw
€cr^Kpsw
€drÒKpsƒ
€erLps„
€gs
€hs‡€j€kr4Lps‚
€lrp€nÐ(õ
o
rVLp(…
r¸Lp(%
s€os†
€p€qrîLpsw
€rs?
%rMpo@
&%rFMpo@
&%r^Mpo@
&%rˆMpo@
&%r¸Mpo@
&%rÐMpo@
&%röMpo@
&%r"Npo@
&%rLNpo@
&€srdNpsw
€t(u

þ
,Bs¢€X~j{¥(çr˜Np(Ûr6pþäsw(%€Wþòs‡
(ˆ
þòs‡
(‰
((u

þ ,_þñsŠ
(Ìþós‹
(×þösŒ
(Ùþøs�
(Ü(í( ,(ã*âþôs‡
(ˆ
þõs‡
(ˆ
þ÷s‡
(ˆ
*ú(âþôs‡
(‰
þõs‡
(‰
þ÷s‡
(‰
*00n
 E
+ 
+

+
++(æ*0

(_
+*0þ
,€k~ho)
*:~poŽ
*0ªo
o"
+n(#
~po�
+<(�
o\
o]
,rÂNpo�
(*
(æ
+
(‘
-»ÞþHo"
Ü((
-‰Þþ9o"
Ü,(í+*"Ik {†0p~Xþ
9ò(0(
 
+- š(
(�
,(å(ð+ X
Ži2Í(à9�+*š  ('oE


, (í+qXŽi2ÎŽ,~po’
þ+  ,s
(è  ,+3Ž,~po’
þ+

,s
(è,+*0tq(“
,+g~X,
(!þ+ ,+N~qX€q~qþ
,+4r6Op(æ(þ
r”Op-rÄOp+rÒOp((
(æ*0crÐ(õ
(”
~Zþ ,7~[(•
~p%-&~mþHs~
%€p(–
€[Þ(—
Ü*GZ0lssV
}|(à ,þWs˜
(+;(Í
-(),(*o™
þ+ ,ræOp(Œ
{|o|
*0)(à,
~Xþ+
,#@�@(ë*0_t
þ ,oš
s�
o›
oœ
8 oX
uZþ,8óoš
o�
o-
 8µ (.


(
rTpoE
,
(
r37poI
+ 
(
oE
- , 
(
o²
,
(
(>
+  ,F -!
(

(
o:
o;
(<
+
(

(
o8
o
+
 (/
:?ÿÿÿÞ þ o"
Ü o!
:àþÿÿÞ uN

,
o"
Üo-
+a(.
rTp�
%¢%(
¢%(
ož
¢%(
¢(×
(æ(
(
oŸ

(/
-–Þþ o"
Üo 
oW
+>oX
uYþ,+rfpoš
(G
(î`
o!
-¹ÞuN

,
o"
Ü+*AdhÈ0&'MknÙöKA0Cu(¾
þ ,8/r -po
r‰Tp((
(æsS
sT
 oU
Þ , o"
Üs+
o-
+*(.
rÁTp(
(
(*
o,
(/
-ÍÞþ o"
ÜrÙTpr+po0
(1
((
(æo¡
(î,cs[
%o\
%rÎ<po]
%r+po^
%o_
(`
oa
Þ
,o"
Ür3Up((
(æ*(? K e7œ
"
0kv(2þ ,+[(7
"@üDþ ,+Is�
r]Up(*
(æ(
- (
þ+
, o
(0(ï*jo o"(ð(í*0K~\~q%-&~mþKs¢
%€q~r%-&~mþLs£
%€ro¤
*"(í*0K~e~s%-&~mþMs¥
%€s~t%-&~mþNs¦
%€to§
*0K~g~u%-&~mþOs¨
%€u~v%-&~mþPs©
%€voª
*0K~l~w%-&~mþQs¢
%€w~x%-&~mþRs£
%€xo¤
*2(*0¥wþ
,8‘s+
o
+o
(.
oW
o!
-ÝÞ
,o"
ÜrÇUp(/
(
þ,
(æo`
sN
(`
þþ ,(«
+* 'G
æ~Y~y%-&~mþSs¬
%€yo­
&o|
(û*0{x
~Y (”
+8~Yo®
~Yo¯
þ
,o
~Yo°
+~Yo±
þ-µÞ(—
Üþ,o|
*Qa0+ysX
}}}~þYs˜
(*0 +(²
&do³
,+ +å*0FzsZ
}s´
}€þ[s˜
({€(ý{ +*0
(þ
+*0((*o
(¿&(Ð
,
sµ
(·&*0*{s\
}�þ]s~
#(–
&*02|s^
s´
}‚þ_s~
({‚(ý*0³}s`
}ƒ}„}…}†~Y (”
~[(•
€[~Y~z%-&~mþTs¬
%€zo­
&~Yo±
þ ~Y{…þas~
so°
Þ(—
Ü
,(û*0oŸ05~se
}Š(Èrp(&(+(%-
(/þ+
,r÷Up(æ(.~j~hog&(*o™
þ,Xr0Wp(æ(þ,r^Wp(æ(({Šþ,{ŠoÄ
8f(+_,
(Í
þ+9Äsj  }�s:%r¸Wpo1%røWpo3%s�%r‘[po~% þks~
o€o5%s�%rŸ[po~% þls~
o€o7

o; {�þ  ,${Šþ  ,{ŠoÄ
8†

,r¯[p(æ(8›rÛ[p(æ((þ,fo¶
,.r=\p(æ{Šþ,
{ŠoÄ
8r‰\po�
o�
(*
(æ(+rë\p(æ(* ('(<
&rn]pr+po·
sN
(0
(1
((
(æ( þfs¸
}‹(Ð,
(4þ+,((Ð,(4+,þgs~
(Î
+)rp€k~X('þhs~
oª*^rÄ]prú]pr?p(m
&*0+Ð(õ
rl^p(ö
t
o:o¹
*0?~Xþ
, (+(~{%-&~mþUs˜
%€{(*&(*&(*"(*0-€þ
,~j~hog&(*o
 +*0�( (¥sº
s»
+*0�( (§
+*0�‚s+
oM
þ 9q(Ö rµ:p(
(
(¦r ^po,
r-_po,
rc_pr/p((
o,
r`po,
r `po,
rv`po,
(
o
8”o
(
oE
,þ+,%rŠ`p(
o:
Xo;
((
+rÂ`p(
((
r`po,
rÎ`p(
(*
o,
rv`po,
o!
:`ÿÿÿÞ
,o"
Ürapo,
r.apo,
rRapo,
r'7po,
r37po,
 + *—§>
0ȃs+
oM
þ 9©(Ò (
-srr€ap(q/rˆap+r˜ap
, r¶apo,
( o
++o
rÔap (
(
(3
o,
o!
-ÌÞ
,o"
Ü, r37po,
+*g8Ÿ
0Q„s+
oM
þ 92(LoC s?
(Ò(
-srrþap(qþþ+,`(Hs
o8
o"
+(#
 rbp ((
o@
&((
-ÙÞþ9o"
Ü8ä(¼oÅ

8²
(Æ
  (o
 +{ o


(
~ro\
, o]
+,Er(Ipoy
o6
þ,$ rbpr.bp(:
o;
((
o@
& o!
:yÿÿÿÞ
 , o"
Ü
(Ç
:BÿÿÿÞ
þ-o"
Ü o‰
þ9• sN
o€
r8bpo,
rLbpo,
oÅ
+-(Æ
rvbpr¢bpr¨bpo8
((
o,
(Ç
-ÊÞþ-o"
Ür¸bpo,
r37po,
+*4}+¨ê‹u
ÌÅ‘æ: 0}…~j~hog&(*o
s+
(oW
(oW
(oW
r+po0
(1
(ærÀbp(@
}� o¹
*0q†so
}’}”}–}—s?
}•(¼
(
}‘sN
}�{�o`
}“þpsù
(5
*0räbp(%
+*6((ù&*0<(8€~h(8o½
~Xþ
,(å(ð(í*0‡(+
(L s�
%rMp(% (¾
ož
%ròbp('o�
ož
%rFMp(/ (¾
ož
%r^Mp(2 (¾
ož
%rˆMp(4 (¾
ož
%r¸Mp(6 (¾
ož
%rcp(åož
%rÐMp(% (¾
ož
%röMp(' (¾
ož
%r"Np() (¾
ož
%rLNpo�
ož
+ *0Aˆsl
rcp(
(¾
s'
o
r8cp(#
(¾
s'
o
(o-
++(.
~s(
o6
, o
(/
-ÌÞþ o"
Ü(Ò (
þ,rXcps'
o
(Ô (
þ,rtcps'
o
rªcp(*o™
  (¿
s'
o
þ

,"rÔcpoÀ
  (¿
s'
o
 + *P8ˆ0W‰o
+/o
~t(
o\
,o]
+
,Þo!
-ÉÞ ,o"
Ü+* ;D 0•Š(6
,(Í
+ ,
8v,(Ð,(4+,{(Ôsrrúcp(qþ,Xrdp(<
r(dprúcp(*
r…gpr§gprµgp({
E+
+ + (3+(N ,þ+9¾rÿgp(<
rhpŒx0r²ip+(¿
(*
rpr%pr…gp({
  E]a+c(O

þ  ,(Yþþ  ,
(O

þ

,rÞipŒx((
(æ
+
+
+(5
+ *0Ƌs+
(
rsjp((
(æ(Âr‹jp((
(‹ {áþ
,<{ß(�+š(
o,
XŽi2Û+rŸjp{â(*
(æÞrÏjpo�
((
(æz+*™ /0LŒ(
(
rp þ9¥þ,co
+>o
(%
  (¾
, (
({
þ+

,+
o!
-¹Þ
,o"
Üþ  , Ý¢rÂ`prkpsN
(0
(1
((
r kp(3
(æ(ÂrCkp(*
(‹
{áþ

,rakp {â(*
(æ Þ&ÞrÏjpo�
((
(æz + *A4;K†
%&/"(Á
*J~‡~‚oÂ
*0*~‡r—kpoÃ

,
(ã+(â*0~‡r—kpoÄ
+*N~‡råkpoÃ
*0~‡råkpoÄ
+*N~‡r1lpoÃ
*0~‡r1lpoÄ
+*N~‡rwlpoÃ
*0~‡rwlpoÄ
+*N~‡rálpoÅ
*02~„-~…+~‡rálp~…oÆ
(9(
+*N~‡r)mpoÃ
*0~‡r)mpoÄ
+*N~‡r‹mpoÃ
*0~‡r‹mpoÄ
+*0~‡oÇ
+*:~‡oÈ
*N~‡rçmpoÃ
*0~‡rçmpoÄ
+*0('rá,p(%
(
+*N~‡r%npoÃ
*0~‡r%npoÄ
+*N~‡runpoÃ
*0~‡runpoÄ
+*N~‡rËnpoÃ
*0~‡rËnpoÄ
+*N~‡r opoÃ
*0~‡r opoÄ
+*0Ã�oÉ
r_:p(Ã
oE
þ , r_:p(
(Ê
(
,
(>
,~ˆ,
~ˆ(>
++
,rMop(*
(æ+5~ˆ,
~ˆ(>
,þ+,rLpp((
(怈+*0J"€ÔC"ÿCsË
(Ì
(Í
[k(Î
[k(Ï
{Ð
(Ï
{Ñ
sÒ
(Ó
*6sq}†*&(;*0eŽ�Œ(Ô
ržpp(oÕ
Œx(oÖ
Œx(o×
Œx(3
�Œ(Ø
{‰�Œ(Ù
}‰(Ú
oÛ
oÜ
�Œ(Ô
�Œ(Ý
rìpp(û
�Œ(Þ
{†{†{š�Œ(ß
}š(à
{†{š-rqp+rˆqp�Œ(Ø
�Œ(Ý
r]rp(û
�Œ(Þ
{†{†{˜�Œ(ß
}˜(à
{†{˜-r‹rp+rsp�Œ(Ø
�Œ(Ý
rŸsp(û
�Œ(Þ
{†{†{™�Œ(ß
}™(à
{†{™-rÕsp+rptp�Œ(Ø
�Œ(Ý
rup(û
�Œ(Þ
{†{†{›�Œ(ß
}›(à
~„ 9þ�Œ(Ý
{†{œ
r3up(û
�Œ(Þ
rWup�Œ(á
,Ureup('rp(â
r_:poº
{†2o:
YoJ
+rp(
}œ {†{œow
þ,{†{†{œ(9}œ(à
{†{†{œ�Œ(ã
(
}œ�Œ(Ý
r‘up(û
�Œ(Þ
{†{†{��Œ(ß
}�(à
{†{�,r«up�Œ(Ø
+r(wp�Œ(Ø
{†{˜-
{†{™+(ä
�Œ(Ý
rÅxp(û
�Œ(Þ
{†{†{¢�Œ(ß
}¢(à
(å
{†{˜þ(ä
�Œ(Ý
ryp(û
�Œ(Þ
{†{†{£�Œ(ß
}£(à
(å
�Œ(Ý
rCyp(û
�Œ(Þ
{†{†{ž�Œ(ß
}ž(à
{†{ž  ,rwyp(0((
�Œ(Ø
+rÖ{p(0((
�Œ(Ø
�Œ(Ý
r÷|p(û
�Œ(Þ
{†{†{Ÿ�Œ(ß
}Ÿ(à
{†{Ÿ

,r+}p�Œ(Ø
+#r|~p{†{œ((
�Œ(Ø
�Œ(Ý
r-€p(û
�Œ(Þ
{†{†{ �Œ(ß
} (à
{†{   ,rI€p�Œ(Ø
+r`‚p�Œ(Ø
�Œ(Ý
r%„p(û
�Œ(Þ
{†{†{¡�Œ(ß
}¡(à
�Œ(Ý
rE„p(û
�Œ(Þ
{†{†{¤�Œ(ß
}¤(à
" A(æ
ro„p�Œ(á
  ,sq
((;
or�Œ(Ý
r“„p�Œ(á
r?p�Œ(á
`
,{†or(,(ø
(à
(ç
(è
(ç
*v""sË
}‰(é
*0� �q%r—kp¢%råkp¢%rwlp¢%rálp¢%rçmp¢%r%np¢%runp¢%rËnp¢%r op¢% r)mp¢%
r‹mp¢% r1lp¢€‚€„r_:p€…r¡„psê
€‡*0&�Ð(õ
(ë
t
oA +*0±rp}Žrp}�rp}Œrp}�}‘}’""sË
}“"–C"HCsË
(Ì
(Í
[k(Î
[k(Ï
{Ð
"@Z(Ï
{Ñ
"@ZsÒ
(Ó
sw}—*n{�(<
}�(C*0k�(Í
þ
,](z
(ì
'j[ {•Y !jþþ,.}•þ{”,|“"€}Ñ
(í
*0‘�Œ(ú
&{Œ(
-{�+,{Œ(û
�Œ(ü
{“�Œ(Ù
}“
s+
+i{�o:
Y ˆ(K
{�r+pXoî
/+YX{�oJ
�soï
o,
X
{�o:
þ-ƒoÅ
+J(Æ
 (ð
 sñ
(ò
  (ó
oô

 (ð
�Œ%
(õ
¢(ö
(Ç
-­Þþ-o"
Ü(è
 
�Œ(÷
&{Žrp(>
  ,{Ž�Œ(á
{�rp(>


,{��Œ(á
(ø
(
 `,G}’, }‘+ , }‘{Šþ,
{Šot*éW@0{‹
,(ù
*02 {’þ
,#}‘{Šþ ,
{Šot*0 ’{—
+*0X}‹rp}Œ}�rp}Žrp}�rp}�}‘}’j}•(é
*0rÉ„p(ú
+*0r…p(ú
+*0““rq…poE
,rq…p(:
o;
r‘…p(�
,+W(L
þ,9�q%r›…p¢%¢%r´†p¢%(¿
¢%rº†p¢(H
(9
-++*0:”(û
þio�
rɄp(I(K
þ ,(I
+
+ *0rŇp(P
+*0X•а(õ
rá‡p(v
,$oü
o�
(Ž
r…p(J(K+ þþ ,
+(Y
+ *0rá‡p(P
+*0`–а(õ
(v
þ ,
+@/rˆp+rq…p(¿
(<
oü
(…
o‡

Þ &Þ
+ *;U-0 (Í
+*0—r+ˆp(ý
+*0˜(Rr¶ˆp(|
Þ&
Þ*/0—rΈp(ý
+*0Š™(T
þ ,rW‰pr“‰prÛ‰p(*
(9
 +Zr¶ˆp(|
ÞH&Þr¶ˆp�
%(S¢(|
Þ$
râŠpr“‰p rÛ‰p(3
(9
Þ +*/@/Fd /0*šrF‹p(ý
þ ,rá‹p(9
 + +*0I›(V
 þ ,$�+oþ
þ
,r”�p(9
+ oÿ
+*0-(J
rS�prÛ‰pr…pŒx(3
(Œ
 +*0àœ(T
þ
9(S(Uþ, (X 8¥r|�p$o
þ

9s
  o
t6 Þ&Þ þ

,)�
%(S¢o
t6 Þ&Þ þ9ž o
+Io
r¤�poE
,,r¤�p(:
o;
(L
,  o
o!
-®Þ
,o"
Ü o
 o
þ, Yo
 8„r¶�po
þ, �
o
¥x +M(V -+
rô�p$o
þ,(W �
o
¥x + (X + *(`u/†"¨/ÇV
0Ö�s�
%r‘prH‘pož
%r^‘prH‘pož
%r„‘prH‘pož
%r¤‘prH‘pož
%rÌ‘prà‘pož
%rè‘prH‘pož
%r ’prH‘pož
%r>’prH‘pož
þTo�
o
þ
, Ðl(õ
(…
¥lÞ&Þ*²Ì-0jžЯ(õ
rh’p�+%Ðl(õ
¢( 
þ ,
+3(Z þ,
+�
%Œl¢o
uq
+ *0XŸЯ(õ
rš’p(
þ ,
+4(Z þ,
+�
%Œl¢%¢o
&
+ *04 Я(õ
rÌ’p(v
þ , +o�
tq +*0+¡Я(õ
rÌ’p(v
þ ,+
o‡
*0¢([
þ , +(] +*0(\þ
, (^*0(u
(_
+*:(u
(`*0O£{¥o�
+(�
o\
o]
,
Þ(‘
-ØÞþHo"
Ü
+ *,:07'rî’pþds$
�q%r/p¢%r “p¢(%
sN
+*0
+*0j¤
(eoÅ
+6(Æ
ofþ
,r2“p{¦(*
o)

(Ç
-ÁÞþ-o"
Ü+*CS¾s†
%r°“psw
o

&}¥rþ“p}¦($
*š($
}§}¨}©}ª*0 {©
+*0 {ª
+*0/{ª(¾
,|¨{ª(
({
þ+
+*0ç¥(l
9Ñ{§{©o 
þ
,,r”p(j{§o
(*
o)
8�o 
Ô� o 
io

&(k(
(Â
(<
&(k(
ÞErp”p�
%(j¢%{§o
¢%(k¢%¢(×
o)
Þ+*r'™E.so€«*0r×p(<
+*0'¦("
, +(" , + +*0{±þ
,
{±ot*{²*"}²*{³*"}³*.sƒ€´*
*"}µ*{µ*"}¶*{¶*"}·*{·*"}¸*{¸*0Á§($
а(õ
rè”p(v
(‡r•pr(•p(
(‰(ˆ, (Šþ+
9²(…s�
s�
%r?prh•pož
%rWprt•pož
%rkpr€•pož
o-
+;(.
(Š(
(J&(
(
o
Þ&Þ(/
-¼Þþ o"
Ü(‹8ºа(õ
rˆ•p(v
(‡r•pr¢•p(
(‰(ˆ, (Šþ+,9(…s�
%r?prh•pož
%rkprkpož
(‹+6(…s�
%r?prpož
%rkprpož
(‹*­,Ù-¢Hê0?¨Ð((õ
(”
~¹þ ,
s�€¹Þ(—
Ü~¹ +*-€¹*0E{ºo™{áþ
,+râ•p{â((
(æ{»o
*0ê©{áþ ,{¼oÄ
8Ès+
 {ß(�
+7 š-{½o\
o]
+ , o,
X Ži2Âo`
þ,*{¾{¿{À(r{¼oÄ
+7r+po0
(1
{Ä%-&þ”s˜
%}Ä(t*0cªþ
,{¼oÄ
+I{¾{¿{Á{Âsn{À{Ã%-&þ•s¹
% }Ã(s*^{¼{áþoÄ
*ê{Åo™{Æ{Ç{È{É(r{Êo
*08{Ëo™{‘þ
,{ÌoÄ
+
{ÌoÄ
*ª{Í{á,+{Î{ß(xo
*0E{Ï{á,+,{Ð-{Ñ{ß(+{Ñ{ß(~o
*0|«{ÓoPoi}Ó{Óþ
,C{Ô�
%{Ó¢s
{Ö%-&þ¡s˜
% }Öo�+{Õ{Ò(„*~{Õ{Ò-+{ÔoÈ
*0 ˆ¬rþ“p(�
,rp(�
+
, 8]r^–p(�
,rþ“p(�
-rp(�
++ , 8$r~–p(�
,r^–p(�
+
9U9½s+
}×}Ø}Ù}Ús+
}Ûrœ–po
%-&rp�s%:�oC
Žiþþ,2{Ür¦–p{Ýo
Œx(3
o)
 8^š}Øš}Ùš}Ú 89{Ø(
-{Ù(
-{Ú(
þ+,V{Þ{?{Ø{Ù{Ú{×o0
{Ûo0
r/—p{Ýo
Œx(*
o)8¨r?—p(�
,r~–p(�
+  , 8‚ri—p(�
,r?—p(�
+

,9,o
, o
þ+  ,{×o
o,
 8'r‘—p(�
,r~–p(�
+  , 8ýr‘—p(�
,r^–p(�
+

,,s+
}Û+d{ÛoÅ
+8(Æ
~r/—p{Ýo
Œx(*
s'
o
(Ç
-¿Þþ-o"
Ü +\r«—p(�
,r‘—p(�
+,6,o
, o
þ+,{Ûo
o,
 + +*ÑEþ}ãrp}ä}å($
}ã}ä}å}æ*0­rps©
+*0)®{ç
 (ò
tg |ç(+
3ß*0)®{ç
 (ô
tg |ç(+
3ß*þ}èþ}ì($
sê
}è}é}ê�}ë*0 {é
+*0(þ{ìþ
,þ´sÏ
sÐ
(Ñ
*0I+6{ê{ë{ëŽiþs
o
&{èoî
&þ{ìþ
-»*01¯Ži�6
 +šs±¢X Žiþ -ã
+ *0‰°{êo
þ{ìþ ,_þþ}ì{çþ ,D�
{ë Ži(
{ç{é(³
o
þ{ìs©oƒ{èo
&*0)±{ð
 (ò
th |ð(+
3ß*0)±{ð
 (ô
th |ð(+
3ß*0)®{ñ
 (ò
tg |ñ(+
3ß*0)®{ñ
 (ô
tg |ñ(+
3ß*0©²}í}î($
sê
}ís
(
}îs 
}ï
 +/š þ½s‚o¯{ïo²o!
&X Ži2Ë(¹þ
,(·þ¾sÏ
sÐ
(Ñ
*04³{ï
(”
{ïo"
Þ(—
Ü{ío
&*n{îo#
{ío
&*0´8‰{íoî
&+e{îo$
t4
{æ ,.{ï (”
{ï{ão%
&Þ(—
Ü{ñþ
,
{ñoƒ{îo&
þ-‡{ïo'
þ:`ÿÿÿ{ðþ, {ðo‡*@V0)µ{ó
 (ò
t5 |ó( +
3ß*0)µ{ó
 (ô
t5 |ó( +
3ß*0)µ{ô
 (ò
t5 |ô( +
3ß*0)µ{ô
 (ô
t5 |ô( +
3ß*0$s(
}ò($
þ
,(¿*0#{òo)
-s*
+s+
+*0A·{òo,
o-
+(.
o/
(0
-æÞþXo"
Ü*10ñ¸s+
  
o1
+7(2
{äo,
{åŽiX {ã {æ`
(3
-ÀÞþYo"
Ürpo0
(1
�o1
 +4 (2


{å
{åŽi(4

{åŽiX (3
-ÃÞ þYo"
Ü s© + *DZ�AÐ0¹{ôþ ,{ôo¬
{åþ 9´{äròpr+po8
rÁ—pr+po8
}ä{ã(Ä
o5
8Js*
 o6
 o1
8(2
 {æ,
X%þ+
 o5
 {äo:
 
þ

,/ {är+poº
  þ,8œ o7
&(Æ o/

þ,S %{ä {ä XoJ
(<
}ä{ã {ä Xo;
 {ås©o5
{óþ,{ó o¬
(3
:ïþÿÿÞþYo"
Ü
þ:¨þÿÿ{ò{ã o8
- {óþ+,{ó(ªo¬*A–®0KºsÊ
}ü{õ{ö{÷{ø{ù(‹}ûþËs~
(Î
*f{ü{ú{ûo¦*0F{ý{ãš{äo,
{þþ
,{þ{ÿ{ÿoç
o¬*:{o
&*0)»{
 (ò
t3 |(
+
3ß*0)»{
 (ô
t3 |(
+
3ß*0b}þ}}(Ãs
(
}}þ}þÔs«(¿}}*0 �s%
�%
�oC
ŽiY
+*0•¼o±
- {åþ+ ,+y{ãþ ,þ{{ä(ÓXþ}(³
{åo
{o#
(�
+ š{o)
X Ži2Ü*¾{rÅ—p{â((
o)
þ}(Ö*0,{þ
,{þ{o¦}*0D½{o&
þ
9Þs+
+{o$
tqo,
{o&
þ
-×{�rpo0
(1
(<
+zrÁ—po9
2oJ
r+p(�
+,+Mrpr+poî
þþ,XoJ
Xo;
(<
 +�}�oC{þ

,þ{k{k[þ}Aþ{þ  ,rp}B(Ö*²{(’{{þ×sØ(•*þs¤} s+
}
s+
} sµ
} s+
}
($
*0k¾(
þ
,\{o:
,.{o;
t
 o<
þ
,
o,
+{s+
%o,
o=
*0ˆ~h{oxo>
{{ {á--~ho?
2 {o|-{ozþ++{`
,{o™{{{ o
*0r¿s?
{{
s
(o
+(o
 (
o6
þ,
 o@
&o!
-ÐÞ ,o"
Üo‰
þ9˜ró—pr+psN
(0
(1
((
(æs+
o"
+(#
  (.
oW
((
-ÜÞþ9o"
Ür5˜p(/
(
þ

, (æ{{{{
s
{%-&þäs@
% } { %-&þås~
% }  (¯*$4X ¬(ÔV{rw˜po›*0?À{sµ
} {{ oÅ
8È(Æ
{oA
þ
9”�s%:�oC
sN
o`
þ,r§˜p((
(æ+io`
2oŠ
r©p(�
+,rõpo,
oŠ
oŠ
oŠ
s {{ oB
(Ç
:,ÿÿÿÞþ-o"
Ü{,{{{ (¤{o|
*#Ûþ0$Á{} {áþ
,:{{} r”™p{â((
(æ{o|
8Ï{{ß{{|
{| {|
(£{{
o`
þ ,-rè™pr+p{{
o0
(1
((
(æ{{
{!%-&þçsE
% }!{"%-&þès@
%
}" (*0ºq{{
(
9•(6 (5r©šp( ,R(6þþ
,?rùšp(æ({{{{{{(¨+6+&({{} {o|
+
{o|
*V{rœ›po›*0GÂ{{#%-&þês¥%
}#{o{o� +*0)Ãsë
}%}$þìs~
(Î
*f{%{{$o¦*0+Ä(
(:
{'o7
o:
Xo;
+*02{){&o6
-(Q
oÃ
{((�
+
+*.sò€+*0(Å(
r^po9
/+oJ
+*0rÅpsN
(0
(1
+*09Æ{.{/{0{2%-&þ÷s~
%
}2(«*j{.(©{1o|
*0LÇrÈ›p(æ{3{4{5{6{9%-&þús1
%
}9(¨*:{7o|
*0=ÈsC
sb
o
þ ,{7o|
8oD
8Ç(E
rœpo o-rŽœp+r+po(1
(*
(æoþ,so+Zš oc
þ

, s?
  o o@
& od
s_%oSoF
&XŽi2ž(G
:-ÿÿÿÞþ[o"
ÜoH
,
(%þ+  9éoI
oJ

+^
(K
s_%oSr+poL
sN
(0
(1
oM
,rœœp(*
(æ
(N
-™Þ
þ]o"
Üs+
 oD
+(E
 o o,
(G
-ßÞþ[o"
Ü{3 (¤{7o|
+{3{5{8(¬*(4ÚHk³Ò%÷0sÉsÿ
}@}?{?þ ,8ry�p{:(^{;(
-rp+r¦p(*
(æ+{?þsÉ
ol*:{=o|
*0¬Êþ
,8�{@{<oI
oJ
8ð(K
s_%oS
r+p{@{<oL
sN
(0
(1
 oPoi, odþ+9‰rdžp�
% oP¢% oT¢%-rŸp+rUŸp¢%¢(×
(æþ,{@{: oO
&+%odþ,{@{:oF
&(N
:ÿÿÿÞþ]o"
Ü{@{:oH
þ  ,{@{=o|
+G{?{@{:{@{>%-"&{@{@þþs˜
%
}>
om*A%(0êË{Ao4
þ ,8Æ{BY {AoP
Y
þ k{Bk[{C oQ
r‘Ÿp ((
(æ{D o6
,2 (´þ,!r¯Ÿp ((
(æ{E o,
Þ.  ,${C"€?r~ poQ
{Fo|
Ü+*Ki´.0„}M}N($
sw
}G}H}Is+
}JoÀ
þ
,*{Jo,
{JoW
{Jo,
}K}L*0ýÌoD
s+
%o,
 R{M
, 8Ì{Nþ,>{HoE
,}NoR
+{GoL
, +&oR
{IoE
, }N   ,M}MR{Jo`
þ

,-r¶ p{K{L(*
(æ{JoS
+*>{Oo
**(T
*{Q*"}Q*{R*"}R*{S*"}S*0>Ís%(*o·
s
o %(s
o %(o

+*0AÎsU
o
+o
oV
o!
-èÞ ,o"
ÜoW
+ *+ 0Ï~P(Â
(<
&~P~h(N
þ
,(~hrÚ p~P((
o)
(Ý¿~PsX
sY
%oZ
rþ“po[
r�¡po[
((o
+$o
rŸ¡po[
 o\
o]
o!
-ÔÞ ,o"
Üo]
r¯¡po[
(
(o
+,o
r»¡po[
(
o\
o]
o!
-ËÞ
,o"
Üo]
ršpo[
( oƒ
(o
+Eo
rסpo[
rç¡po^
rñ¡p( o‹
o^
o]
o!
-²Þ
,o"
Üo]
o]
o_
o`
Þ ,o"
ÜÞrý¡p~P(*
(æÞ*A|“0Ã ô9-
eR·
h{ã ðñ/0€ÐsŠ
s?
}®s?
}¯s�
}°~P~hþ‹sÊ
(Ë
þ , +/s%{®o %{¯o %{°o
 +*0ÇÑuO
,( oa
o oa
þ+  ,j( o-
+?(.
o (
o
,(
(�
+ þ,+
(/
-¸Þþ o"
Ü,&(oo�
,(
o
o�
++*:L†0ÉÒ
(
o"
+(#
o‚
a
((
-äÞþ9o"
Ü(o"
+(#
o‚
a
((
-âÞþ9o"
Ü( o
ob
+(c
o‚
a
(d
-âÞþ`o"
Ü+*( 0L"n�"²0 rÅp(sN
(0
(1
+*0gÓs+
oƒ
(o
+"o
rpo‹
(*
o,
o!
-ÖÞ ,o"
ÜrÅpo0
(1
+ *.G 01r £p(((
(( ((3
+*Vr6prv£p(%
€P*0S}e
|f
þb|g
þb(z
}h
(z
}i
($
}j
}k
}l
*0Ô(z
{i
(m
(n
{l
lþ ,8ï}i
oo
{e
þ,}e
}f
8¾{f
Œbþbo¶
þ9š{g
Œbþbo¶
,j{h
(m
(n
{k
lþþ,?r¶£p{j
{f
ŒbŒb(3
(æ{f
op
}f
+}g
}h
*{\*"}\*{]*"}]*f($
((*{^*"}^*{_*"}_*"(q
*{`*"}`*{a*"}a*{b*"}b*06ÕþS(Ï(&(Ð(((Õ(* +*0=Ö¥S
(%(%3 ('('3()()þ+ +*02×(%
(r
('
(r
a()
(r
a +*01ræ£p(%ŒŸ('ŒŸ()ŒŸ(3
+*{c*"}c*{d*"}d*{e*"}e*{f*"}f*{g*"}g*{h*"}h*{i*"}i*{j*"}j*{k*"}k*{l*"}l*.sG€m*0L—Ð(õ
(”
€ZÞ(—
Ü~o%-&~mþIsù
%€o(5
*
0Gm(s
, +7~[þ ,'~n%-&~mþJs~
%€n(ì +*0,—Ð(õ
(”
€Z€[Þ(—
Ü*#(å*01~]þ
,#~]s$%o#%o!ot
*(+*0u~fþ
,g~fs;%(%o0%(%o2%('o4%('o6%()o8%()o:ou
*(L*0;~iþ
,-~is@%o�
o=%o�
o?ov
*(Û*01~mþ
,#~msE%oB%oDow
*0
þ
+*0,o+
+*®r¤pr©¤p-rǤp+rJ¥p((
r?p(m
&*0{|þ
, {|o|
*09 {}þ
,{}o|
{~þ ,{~oÄ
*V}{€o
&*0E (à
,r^¥p(æ((({�þ , {�o|
*:{‚o
&*09Ø{‡%-&þbs˜
%
}‡{„{…{†(*0(Ùsc
}‰}ˆþds~
(ú*0-{‰{ƒþ
,{‰{ƒ{ˆoÄ
*0}Úsm
}�}Ž(«
(o{Ž ,r¦p((
(æ+r;¦p((
(æ{Šþ ,þns~
(Î
*Š{‹(*o
(·rpox
*0(Æ{Œ%-&þis~
%
}Œ(Î
*v{‹~k(
~kox
*B}�(**^((*}�*f{�{Š{ŽoÄ
*0Û{�o`
þ,8Þ{�oŠ
{�oy
(
rk¦poI
-{‘oE
þ+, 8�{‘(
{‘o:
Xo;
(%
{’þ, {’{“Yk{“k[ oQ
{”, (

+  ,8 (z
sN

{“
o`
X}“{�
oW
8í (I
(F
({
  ,3(|
s
  rw¦po@
& sN
(0
(}
+{•o@
&{�o`
þ

,t{•o‰
þ{–_,2r�¦prw¦pr+p{•sN
(0
(1
(*
(æ{—þ,{—{•o~
++*0˜($
(}˜(!}™(#}š(%}›('}œ(/}�(2}ž(4}Ÿ(6} (8}¡()}¢(+}£(,}¤*0§{š("{˜({™( {›($~„
, {œ(&{�(.{ž(1{Ÿ(3{ (5{¡(7{¢(({£(*{¤(-*0Y($
}¥þ�s
(y({(}~²%-&~±þ’sù
%€²(*{¦*"}¦*{§*"}§*{¨*"}¨*{©*"}©*0_Ü .+.+ r`§p
({+rp§p
(}+rp
+(~o€
,{¥r+p(G
oB**(€*0¦Ý
9—rþ“p(�
,rp(�
+ , 8rr�¡p(�
-r¯¡p(�
-
ršp(�
,rþ“p(�
+
, 80rŸ¡p(�
,r�¡p(�
+,9,o
, o
þ+,{®o
o@
& 8Õr»¡p(�
,r¯¡p(�
+,6,o
, o
þ+,{¯o
o@
& +}rסp(�
,ršp(�
+,V  ,Jrç¡po

rñ¡po
 
(
-  (
þ+  ,{°
 o
 + +*.s‘€±*0
+*BSJB v2.0.50727ll#~€lð\#StringspÉ„§#USôp#GUIDqˆ4#BlobWú3½k²’B€p(Ý pÉdM
›2i()Dð()D`'WCwD�'�7(�7ú'�7×(�7‰(�7¼(�7Ò'�76()DËQ�31
äZ�7Pä
ä
Š=> ‰"�3µä`3� –8� Ãä—
�3Îä;�Bñ �3+')Dß6�3"&WCt'WC©ä+XRLg�B¶.RL;Ô7“�B-4�3Ü%�3¯R�3²0�3ˆ7�3¬$�3;�7Ý8�3Í8�3å8�3R(�7+
äÇÔ7Ë�Br�3COWC@� _�BÁ<Ê2;+b++WPT+¤ )D:)ˆL´Q$ø �3‚BˆLú>> @WZ™;ô7�Bjä{ä"J@ôBÑSÊ2©UÊ2´<� hBˆL1Ê2ê�3ö?Ê2¼3$¸8�3"¦'ÆK"F'ÆK"RôB"'ôB"GBôB‰�3
!2> ‹SÊ2í'Ê2?T+"‹3ôBÍä
@Ê2I�3O4�3¥J�3\$�3^�3"f@ôB"úWôB
J> G
$K{%"?LôBâ:�7Ë:�7"<ôBÀ'�3Ÿ �  0�
L> ª-�3õ6$W<�3˜0�3ÅS�3­X�3Ê.�3î�3<RL"\ôB¯
�3®.$Å$RLU�3ä7RL
G> ~S
¼S>
2> ìT+¯ �3;WCiZ™ +å%�3+é�3†8$"VôB"íGôBö $"H ôB»L�3<\�
3> ;� "Þ$ôB"¨LôBÄ<� µIÊ2¸+Ê2",IôBÎLRL"ï6ôB"lIôBy8� ;4�3"$ôB"›LôBš4�3"�7s8C+½7Ê2?;Ê2
ä
äX4$V$N $¼4$õS$"ÇIôB¿Þ8I�7ï<�7˜=�7Í$�7Ö:37')�3¥<Ê2P$Ê2
+Çô7@� ¿-Ê2ËQ$­ €‹> 5„?> 5k<> 5 ³X©@5 ,U©@5$_1ID50KID5&?6ID5'OßID$+a¡7ID5-g =ID.lö<IDà.nl2ID50p2=ID52v==ID58| =ID5?ƒ±EIDx?‡�Z#ID5@ŠF.IDpA’t@ID5G¢’@ID5HP\ID5Rº€GID5RÁID5Tɼ@IDYUÌŠ.ID•u.ID•Š@BQID5˜I¸EID5¥dœ5§i!Ô5«n®?5­q!2™­s>�±s*2�±w[5±{H75²}!Ô5´‚75µ…5º�{5¼’5Å–q5˘5Íšÿ5Ïœ5ÒžQ5ÓŸ5×¢=S5ߤ ?�ã¥=5ã©£>�端<5ç¯Ù@5í·š<5ò¿Ó5õÈ}5ûÊ5ýÌÑ5Î0@àÐŽ%�Ø.5Ü9&5 Þ5ßÓ5áÕ5$ër5&í45(ï!Ô5+ñ­5.õ53ø�5:ü
5?ÿ½5A¥B5G5O¢8EPb&5P˜5TÂ5\–J…^  „I‰`%GJ…c/eJ…i<|J…kA!Ô5mF—5|V5}X½5Z5�\j5‚^è5ƒ`:5ˆc*5Šef5�jô5Žmè5�o5J5˜qî�¥sÉB5¥w,™ª‚?�®‚ ?�®†[5®ŠÍ�±Œ!Ô5±�Ã/¶'®0ûY¿'�Z0¥GÃ'KNÃ'V€ 0*NÇ'Q€ 0**Î'k+Ã'3¾?Ò'Â0P0.0ú0gÃ'�Ã'Ã!0‘=×'KÜ'Kã'O;ï'S€¾0V€òA0=Eø'¥+"\D(Q€Æ0Q€j 0Q€u 0|7(0é0·(â(H( KÇ')(š
!(0˜030�"ZE*(/90ì$0Q€% 0Q€é 0V€ö 0ß
7(7(ð
7(Z/0</0V€ö 0Q€§ 0Q€Á 0Q€Û 0¼
<(Z/0?(!UC(`,"_OG(Ù 0?Z0‘=M(ª"!TQ(
Ã'÷.0Q€ß#0Q€M#0Q€�#0Q€¯#0Q€!#0Q€n40Q€Å#0Q€5#0Q€€40Q€ 0N6Î'"S€¶ 0Q€/!0!UC(ƒ@V(CZ(Ê-";3-?c(Ôk(Q€Õ1060œQ7(»60’",zQ7(ŠR7(<?u( (U?‰(‘=M(‹’(ÈEœ(7B0g?c(¿ (àZ0’?ª(ÛL®( 307(ÔUÇ'zZ7(Q€ï0Q€Y0Q€ÑX0Q€TY0Q€¦Y0Q€´Y0Q€ÖY0Q€çX0Q€—Y0Q€!Y0Q€3Y0Q€fY0Q€„Y0QÃ'S€yA02A"\A0>J·(J¼(A0P8Á(üÆ(j1"�W0˜X"sW0PW0‡W0DS"
"P8Á(©3Ë(÷C<(Q€ô <(×BÑ(Q€ï0Q€j0Q€‡0Q€R 3Q€„ 3Q€H0Q€Ô0Q€û0Q€¥0Q€{
0Q€^
0Q€.
0Q€6 0qL®(‘$0 Z¿'à","!0%006’ Ö(�Û(%3V€';ã(V€Œ,ã(V€;Bã(‘=è(Ë0(6’ í(Êò(Ý÷(/ü(l(‚)X)'
)')ˆ<7(Z/0žP0ZE)90s02
)I)X)Z/0žP0ßH"ZE$)'
)X)')',)¥K5)',)%"¥K9)'=)ñ?(H=9)ÞF)I)ˆCÜ'<0hQ0Ø0ßFÜ'‘=M(u"0¥Kœ(úU0C0×3]00 3œW0SK)©"ŒO)TT)0 3g3Y)=K)'Ë(€3T)J)])Lb)ÿ&i)ŒO) n)ç>|)Ä>|)Z/0¬P02[0ÒM(?|)É%�)DS†)Þ‹)C�)?|)KO˜)'T)žH36)])G�)DS£)‘=M(ÿ&�)¥K)A@«)ÕR†)zOÜ'¥OÜ'êE°)hOÜ',;¸)×BÑ(I&½)-8"X)õ&Â)¥KV(P[0¡Eï'ŠO"q=(ÀU°)-/0ÆM(½&�)’?ª(žH3O
Ï)¾
(ð
Ø)" Ï)t �)DS†)Þä) HÇ'E"Û(u+0Þé)2 î)6’ ó)IÛ(—ø)¥KV(P[0-8"õ&(I(¥KV(P[0</0-8"õ&(Ç*(2 Â)-E)</0¯D*Ç*(2 )H=*Þ*ÚM*­M3^%Ï)˜GÇ'ÖHÜ''(_47(�#0t#0ºHÜ'Î!0900"$1"ôOÇ'Ó 0ƒÇ'»Ç'Ò(¸"Ã)%s)%Ï",ÍC38"0½",àC3û"æ(070•"å";"•"¹"å" ";"a" 0ì0}0]06’ !* (ê&*ÿ(è.*’6*š>*²H*&R*[*D.*ç6*Od*Ãd*3)õ&(õ&(ÿR)(3"-Tn*'(-Tn*ÿR)J9"›"-8"2 )%O"Þs*õ&)k9x*" (K*"K"Þ�*;OÜ'Ö<0^%Ï)-P3A*"Y@Ç'…,"'Ø)»9"Y"•:"öD"nA0¡M"rU"b"Ê="¥+",":"J"X†*¥Š*x"Y"I&*%3V€Zò(V€%Qò(V€ž
ò(ZEÇ'çGÇ'>J(6’ �*#&*P –fD”*8!‘žB¬D!†˜B¦*d!�5*dˆ!†ŠZd !†ödØ!†¬Q®*¸"†¬:´*$–*Ê*„$–5GÚ*h%–v0ž�%–„0žÀ%‘žB¬L&–P)ä*c&†˜Bl&‘žB¬€&†˜Bé*¨'†˜Bõ*=(ƒaXdE(�oXN(†º;dV(�Ä;_(†NQdg(�[Qp(†Ç5dx(†Ó5�(†jCû*‰(�yC+’(†¦Fû* š(�·F+ ¤(†ÃYd!Ì(†ÉXd!)Æ\-d!,)‘ì?¯!R*‘žB¬#„*ƒíJ+#ô*–+#+“+(T,“.,+.Œ,‘�C5+1h-†24é*2H.–ŽE<+8/†ØE8/‘µUF+8œ/“F¬9Á/†˜B9à/‘žB¬9b0†Å d9j0†Ï 9s0†d:{0†:„0†¤0V+;Œ0†«0\+;•0†ñ1V+<�0†ü1\+<¦0†zRV+=®0†‚R\+=¸0†˜B>01†£X>`1�FX>ð1�· >S2‘žB¬>j2†˜B>„2†˜Bp>œ2†˜B?3Æ\-d@P3†ñQc+@p3ÆéKó@ 3ƾ¸AÀ3‘…)k+AÜ3–Ut+Aø3–ct+AH4‘ý-|+Al4‘æ-�+BŒ4–éS‰+DÌ5–ÝS�+E(7–Ÿ-E87–�-×FT7†!F]7†ÿ dGh7�¶PG8�ÇPH<8† "Iä8†ü!dJ„9†Ø.J°9†Ï.dKß9†-Kè9†-dLð9†Ç5/L:Æ\-dL<:ƾ¸L\:ÆéKóLŒ:–S=”+M8;–E-š+Oc&†˜BPÔ;‘žB¬Pã<†ÿ8Pì<†ï8dQô<†éQý<†úÁR=–G¤+R >†˜BT,>†úG+TP>†n3«+T�>†Áµ+UX?†­µ+VÀ?†˜BWÆLE»+WÆEÆ+XÔ?†˜BôZ@†­Ö+\È@–LEã+_„A–Eñ+bB‘çR ,j„B‘X.,oÌC‘t.0,uc&†˜BwŠD†˜Bôw¤D† ?ÁyE�ÇV;,yDFæLE»+z„FæEÆ+{$G‘žB¬}TG†˜B}°G†¡A,~ÈG�”V;,~ÄI�öV;,LKæLE»+€ÌKæEÆ+�¬L‘žB¬ƒÄL‘û2ɃN‘íF,…(N–t%Q,†c&†˜Bˆ>O†˜Bˆ\OÄ-],ˆôOÆ{2®*Š`P–2d,‹àP–¬:w,‘Q–²2‰,–”V–¯HR �´V‘I�,žW–Ò4×£,W–ž£àW‘žB¬¤èW„–é¤ñW†ƒÁ¥üW†
T¦,¥4X†T¦,¦lX–@.­,§«X†X¨¸X†Xé¨ÜX†%©YÆù*©`Y†SO³,©„YÄB ¬XZ†2º,¬0[Äf%³X[ÄZ³b[†˜B³x[�†Á³“[†˜B³ [�kVÎ,³Ô\�Bæ,¸]“,Cï,¹Ü]“Ž0ɺ(_“¯Kþ,¼ü`�Z9-½ d�¶OÂj†|9$-Â\j�Ž$-Å4k�Y*--È€k�=!Ìàk�l/Íl�ºME-Î�l“ÉGiÒÔl“-O£ÒÜm“<¯Óœn“‹KY-ÕLo“(<£Ö¼t‘žB¬×Üt‘lM_-×øv– F_-Øc&†˜BÙ�z‘žB¬Ù¨z–Mj-ÙH{–xMy-Úü{–CM‚-Ûh|‘5žÜŒ|–N £Ýè~–)M_-Þc&†˜Bߌ€‘ù"×ßX�“0×ßt�“Û/×ß��‘žB¬ߤ�‘î/žßü�‘å2žà´‚‘:,KáÌ‚“R2¬ã„‘¹¬ãl„‘¯&‘-ãc&†˜Båx„– ™-嬄–´™-æà„‘¿\¥-ç,…–#ié\…–�ié‚…–ñ5錅–ß5×êl†–œ6ꀆ–}6×ëlˆ–&i똈–Xi뼈–ä«-ëðˆ–«-ì$‰–Q·-íX‰–h·-–qT×ïü‰–žÃ-ï0Š–¸Ã-ðdŠ–½Z×ñD‹“Ï-ñ\‹–iñ€‹‘žB¬ñŽ–<:¬ñ?Ž–):¬ñ€Ž“½%Ô-ñ¼Ž“Û×óØŽ“.Ü-ó�–óLä-õ�‘Q:ï-öä�‘EPø-÷ô�‘#¬ût‘‘ž*.ûô‘‘¦* .ül’‘Å*¬ý¤’‘R.ýt•“‡U.ì–‘]UKc—‘Ë*.€—‘f¬×—‘#2.à—‘”3¬ 8˜‘KK¬ ×—‘‚:. �˜‘—T¬ 瘑zB. ô˜‘½GJ.
¸™‘–& .ô™‘¬¬Œš–½*S.Äš‘;Ta.ðš‘
h.D›–
n.`›‘ø%¬”›–MF .Ì›–¬ œ‘Ž*s.Üœ‘€€. ‘-.¬8 –Š.¬p ‘²*» –¹*¬ Å –}*¬ Ï –IF¬ Ø ‘cE�. ¡–GCœ.!<¡–XMœ."\¡“ˆH°.#£“ZHÀ.$죓rH°.&€¦–‚F¬' §“9PÑ.'Œ§“ÎOt+-ª§“àO¬-¸§“?¬-¨“ŸIk+-,©“kNî.-Œª“eFJ..«“Î?£/¤¬“�;/0ˆ­“v; /1¯†˜B5¯“'J¬50¯“¢95h¯“‰9i6Н“B6 ¯“+i7¯‘�:7د“m:i8ú¯‘ÛD8°“ÀDi92°‘A9H°“ö@×:†°“ú+:œ°“Ø+i;¾°“ï9;Ô°“Ð9i<ø°“ÖIi<±“íI<#±“‘M=8±“�Mi>\±“—/×>‚±“YU>˜±“@Ui?º±“F?б“*i@ò±“º=@²“ª=iA*²‘’+A@²“+iBd²“IAžB4³†ù*Cг†_IC˜³†áC¤³†B C»†˜BC4»‘žB¬Cл–./C¼Æù*DÁ¼†{WD༆_TEX½ÄB Eˆ¿ÄáPE¨¿ÄZE迃ºB/EÀ†˜BEdÀ‘À0›E„À‘Ú0›E¤À‘4#/EDÁ–a5›HŒÁ–y5*/H¬Á–‘5›I–¬5*/I0‘L5//J¬Â–àiLÄ‘ÿN5/Là‘e;/LÑæN5/L8ÑI;/LìÑÄN5/L$Ä‘$;/L|Ä‘.6›L¸Ä–'5›LÌÆ‘ò;?/LÀÇ‘>H/M8È‘F>O/NœÈ‘Ö=×PÜÈ‘ú=PÉ–óH/Q@É–‘-RhÉ–·×T„É–ÉTc&†˜BU”Ƀ„ âUÊ�³G+VDÊÄ-],VXÊÆ{2®*Xàʆ˜BYˆ˜BW/Y8ˆ!d]PˆÏ.d]hˆ3%Á]¤Ë†¬Q®*]¨Ì‘žB¬^c&†˜B^´Ìƒš^ÔÌæ±$a/_c&†˜Ba†˜B{aÆ·cƲg/dƨr/g†˜B{hÆ·y/jƲ�/lƨr/pc&†˜Bq̓y/q0͆Ž1ds8͆˜1sA͆V7�/tI͆i7•/tc&†˜BuRÍ‘žB¬uc&†˜Bu^̓‡uaÍ�œ/uj͆
£/vrÍ�²\©/v{͆¥\°/wƒÍ�s$¶/wŒÍ†f$Ïx”Í�¤)½/x�͆…)Ç/y¨Í†˜By”Ï–Ð/yðÏ‘žB¬yc&†˜ByøÏƒLÖ/yc&†˜BzLЃ6Ö/zDуé{³Ñƒ½ Ö/|c&†˜B}Ëу¼Ö/}c&†˜B~ÒƒÞÝ/~c&†˜BLÒƒLÖ/c&†˜B€xÒƒLÖ/€c&†˜B�c&†˜B�ÌÒƒeã/�TÓƒŒé‚c&†˜BƒtÓƒé/ƒc&†˜Bˆ†˜B{ˆÆ·Ö/ŠÆ²ø/‹Æ¨r/Ž׆˜B0�X×–�\0“†˜B{“Æ·Ö+•Ʋ0˜Æ¨r/�x׆t'0ž°×†…'0Ÿå׆˜B.0 (؆Þ¸£@؆U£tØ�-£ÌØ–L60£ Ù�Ar/¥¤Ù†y&A0¦ÜÙ††&A0§Ú†t'0¨LÚ†…'0©„Ú†˜BH0ª<Û†°:­ŒÛ�V0­¨Û�,)®ˆÜ†Ð>]0®À܆à>]0¯øÜ†­>]0°0݆½>]0±h݆˜B]0²˜Ý†-d0³È݆Ä.´(Þ–î%o0´D߆f#Ö+µc&†˜B¸|áƒö¸c&†˜B¸ÓáƒP¸c&†˜B¸ðáƒúV0¸c&†˜B¹BâƒÙ¹Tâ†y&|0¹Œâ††&|0ºÄ↘Bƒ0»4ã�ËH(¼`ã�˜>Ö+½ä†8Ö/À4ä�Ì&Álä†f%‰0Á†˜B{ÂÆ·‰0ÄÆ²�0ÅÆ¨r/Èc&†˜BɼåƒöÖ/Éé冘BÊc&†˜BÊ,æƒ~ôÊc&†˜BÌ¤æƒ Ì8çƒëÌÔ胀
›0ÌìèƒÙ
ÎHꃦ Ö/Îxëƒ ¡0Ï>ìƒ= ›0ÐTìƒT ª0Ò¨ìƒ{ Ö/Ôc&†˜BÕÝ샖 Õc&†˜BÕøìƒ+Õc&†˜BÖ0íƒÓ âÖn푞B¬×c&†˜B×|íƒRװ탡°0Øc&†˜BÙØíƒ#ÙîƒÙc&†˜BÙ8îƒ9Ù�îƒM ¹0Ù îƒs¹0Úc&†˜BÛñƒ€Ã0Û“ñƒf éÜc&†˜Bݤñƒ™ã/Ýc&†˜BÞxóƒ­ÁÞ€ô†˜BÉ0Þõ†£#Ø0äc&†˜Bæöƒ›¡0æ)ö†˜Bç4ö†•Dc+è<öƒ¢D¡0èEö†„Gc+éMöƒŽG¡0éVö†EIÇ/ê^öƒRI½/êhö–Y&ã0ë´ö‘ÿQé0ë÷†h ì¬ù–[ ã0ì8úÆéKóìûƾ¸íü‘9-ö0íHü‘R-Ú*îÌüÆ\-dïc&†˜Bï ý‘žB¬ï ý†˜Bï€ý†Å2$ò«þ†qÁô³þ�†éô¼þ†a�/õÄþ�i•/õÍþ†˜Bÿ0öçþ†Ldøïþ†Yøøþ†sdùÿ†ˆù ÿ†˜Búÿ†#Áúÿ�:éú#ÿ†�Áû+ÿ�©éû4ÿ†&Áü<ÿ�?éüHÿ–ÝS1ýŒÿÆéKóýØÿƾ¸þÆ\-dþU†#Áþ]†:éþf†QÁÿn†péÿw†�Á†©éˆ†ÃÁ�†å陆&Á¡†?骆wÁ²†˜é ÿ†˜B»†[KdÆsK̆+KdÔ†;K ÿ†˜B݆ªTdå†ÅTî†qTdö†„T ÿ†˜Bÿ‘žB¬c&†˜B ƒ tƒôÁȃ ƒòdƒœôUƒ¤
1
\ƒ¼1
݃01 äƒ"1 +ƒNd4ƒñôtƒY*1ŒƒÎ*1ªƒ>éc&†˜B؃ªéc&†˜Bƒréc&†˜BEƒÂéc&†˜B\ƒ`c&†˜B­ƒÔc&†˜B¼ƒÃƒ� éc&†˜B8ƒj
c&†˜Btƒ%11ýƒ_ ƒ9 Tƒ) c&†˜BrƒV
ƒƒÅ
c&†˜B›ƒ÷
c&†˜B¸ƒ¿Áă˜Bh ƒ0*†˜B{Æ·Ý/Ʋ71ƨr/
†˜BÝ/ �
†ÚWC1!‰
�êWª !’
†€Á"š
��é"£
†\Á#«
�né#´
†�%I1$¼
†³%R1$È
�>æ%3 �µæ'†˜B{)Æ·V0+Ʋ\1,ƨr//†˜B{0Æ·2Ʋi12ƨr/4c&†˜B5@ ƒRé/5†˜B{:Æ·a<Ʋs1>ƨr/Bò ‘žB¬Cc&†˜BC
ƒ,ÁC Z´J‘=ûY®�Z‘=•:àTNG¬P‘=t**ÿ>`GD/œ0<hQç6±CßF}X¾X************Õ>
Ã!</§[‘=>2Ã!</ÈF§[‘=>2]f2 %r;<hQç6±CßF}XõU**********÷Qí, 0¹Q€$Ý,******R!R!****** 0+-„>ZE****C[¬ZR!R!R!'ZE'/9ì$KO¶4SZ/žP'Z/žPZE9s$ˆ<'Z/žPßHZE*SZ/žPßH=ZE'òH'Z/</áV'ZE'Z/«VW'ZE'©!</'</'u"‘=‘=Z/¬PÉ%2[ÒM?Z/¬P2[ÒM?Z/¬P2[ÒM?89ð¸,Z/¬PúUC×******ç ‡Xç **OZZ/¬PÉ%2[ÒM?žHWP[zO¥OhO¥O.Fc/7.FP[-/ŠO-8õ&P[-8õ&P[-8õ&</-E¯DÇ*…/…/‹A˜G^%'ƒ[| â[ƒ[| .F.F.FF\.F%0d".Fò2ò2î.,Z)RÙQ****„"æ)****************]f2]f2M1PP!PÎJDõ&9\P%0¯/®\P®�è<¯Jè<¯Jè<¯Jè<¯J5HE8õ&J9ÿR¾2J9-8J9'J9-8ÿR›õ&J9›-8J9.F.F.F.F.F,1.FâJ'íP^%…,A*
E5HUXt t $Hñ[m%**************************F\ç œW²!Ye)r6r6r68"RRRn>**RRn>**u"u"‘=‘= Zà""!%0‘=1$_Xì\ÒQÚ]]ý0ÒQDSÒQÚ]f2]f2ý0ÒQDS]f2************DS5SUSDS§.DSDSZE%OÏ<ð!UÞ!1ÒQÚDSDSý0ÒQDS0 œWS©ÒQÚKO¶4HKO¶4Hý0ÒQDS****0 g3î*.Lî*¼R********"N%?'H********%?0 33KO¶4SS****‘=CKO¶4SDSXÒQÚXXý0ÒQDSÈR:;·_O]ÕRÓ_O]Z/¬PDSu"~"u"
U¥OyEH=%OZE_4�#t#ºHÎ!9&$Ýã]******U 0
UìQ8"ÍCàCó)Õ****›Ð********** 0********************Ã)*Ã)*Ã)*Ã)*Ã:Ã:%O%O%O%O%OKABÒQÚ§.§.ý0ÒQDSX********]f2]f2ÒQÚHHý0ÒQDSÒQÚý0ÒQDSÏ<ð!UÞ!1ÒQÚÃ)*Ã)*ý0ÒQDS00! ˜B˜B˜B
)˜B1˜B9˜BA˜BI˜BQ˜BY˜Ba˜Bá˜Bù˜B�˜B‘˜B™˜B©˜Bá˜Bi˜By7dq¬"h4tBy<ÝS�DP)™yN/ž�¦NžDÉX�‰—\£�ŽNžy{!žLÑ)°Lw3¹a"WÁq%L˜Bi˜Byú#É‘4ÏD˜B¹‰;Qà‘.æ‰;QîT˜BTG\tB!dÝS3d"WÁT«X>‰Í4DqCWK‰;QQl·at˜B{|6L‡t·�‰á”‰øT²‰40¸‰±-¼‰4QÉ¡÷,ž¡”,ž|˜B|G‡é˜B©ù׉hRÛ‰¤3d‰R0â±+$ì‰4Qó‰4Qú‰I0≱-¹–4Á"%!‰¹:(T˜BKŒtB`”ÝS�”"WÁyéM“‰˜B˜‰ßMž‰+£y˜BTeKœw3¹¤tB`¬ÝS�´ÉX� ¶.ÉOÁ´P)™¬"WÁTgT¸¼w3¹¼˜Bœ!IEÄtBZÌÝS™¼tB!ÔÝS3ÜÉX�ÜP)™Ô"WÁÌ"WÁŒ˜Bä˜Bì˜BìtB`ôÝS�ä6L‡äG‡ìGô"WÁœ?<¤˜B ˜B´˜B¹¤Gœ˜BÑ1X¹Q·Ñ™.ÂQ˜B{|˜BKTU|æKéi¾¸\ùPÙ%%1%%1ÉQNaÝ)V|]0K|gT¸Tn3^\n3�áU,daÔ) 1»!§‰e\¯i\-dütB`ÝS�é!X¸é40¸éP)d"WÁyZB™\-d±+%ñ
% tByÝS�\˜B\G¹ü˜BüGq7WžùPÑ)°$˜Bw3¹,˜B$tB`4ÝS�,w3¹4"WÁ,gT¸,!I¼<tBÑDÝS™D"WÁ˜B©9Á‰6LâÑk þ©î#×ÑI±X3
©")©Ä.L˜B{‰+(aM]ùn3c$GqÚP£TtBˆ\ÝS�\"WÁy'"ž‰Ñ@dd·TtB`lÝS�l"WÁt·|˜B{ ˜B{wPRœÑ)°ài¬:m!˜B{ɘBuÉU)!+þ)E+þi‰$Ï)3+Õ)X+Õ‰;QÜyk!ש˜B©ò:ã1)é1�P1ÇWé1PVé1ÏAé1kGî9w3ô1#Vé1^!©¹[×1[©UÁ©Vú©nRqr&Ù˜Bé©=VYX3
©½AA#Á©Ê¸ hRá.dIú#/Q˜;IÏ*/YûU)X^)Xé)%„˜B{iQ1xq·1‚i÷ˆ¹–4”i÷š�3<£iE1¬i鬑˜B‰hRÇŒtBy”ÝS�‰|?d\Ñ)°\w3¹yE<‘ÚP£��[ɘBœ˜B{œ·¹¹XtB` ÉXìP)ìŒG¼!IE¤˜BKYîY™ yœ!d¬·‘(ª ¤gT¸l˜B{´tBy¼ÝS�\!IE|?0KĘB|Ï*‡|tBˆÌÝS�˜B{™Ø$
ÄÑ)°Äw3¹Ì"WÁÄtB!ÔÝS3ÜÉX�ÜP)™TU£
�e[®
�+B¸
Ô"WÁ¬˜B{t˜B{ä˜BKägT¸Û&ý
‘Ö6× £A$ |k0KáéAdyö4ž�\• ‘ÿZ› �E K‰q\¯�\Kì˜B{ì·�qLH­ �[K©HR¯ô˜B{!�/ë Aæ3éAÌ3ò ©<Rú ©0R£q?HR ´.âügT¸�— ` ¡¥,ž‘ÞGR yé4ž‘—FR I˜BY˜BIBÚ I‡!á QtBè aÝSìiWWdieWÁ˜BÁcSéÁNÁNÁ´+î yt%õ I0*ÿ ˜BÑ)°w3¹tB! ÝS3P)™ÉX� "WÁÑy-žÑÕ2£©ÊžÑ™.ˆ
‘Î[× ¶.¢
ùn3­
áóée\´
éC4´
áØ-iéR¼
Yâ\õ
‰éKâ‘ÞG
=S™¿W™¹:F ½Ù¤4é;Fïy»!õÿ d˜B$˜B,˜B4˜B�(\×<˜B!˜B{N%5A%5˜B{˜B{$˜B{,˜B{<?0K<tBˆDÝS�D"WÁ<gT¸‘Ø-i)*@d2‰í Ž)uRdd˜B{¼gT¸iÿ diûHÙ9tBè iP)dÉ¢(ɯ(ôi†DßI–SL˜B{T˜B{$Å2$\˜B{d˜B{,Å2$l˜B{t˜B{4Å2$©¼.¬|˜B{‘2un3^QGgT¸ƒ2iA#™Ù˜B餘BiéKó¼ùP„˜B{)XŒ˜B%Œ˜BK‘á.בõ$éù\-dÁ\-d”gT¸±˜B1Qp1Ý2y1Õ21ƒ-ô1y-”1ÖIÁ1íIé‰RSd�
/ž9˜BŽ)â*”Q*0›Q]R›)Ö*Ÿ9_X¥9ì\¥ñ˜B¨)l8°YQ1Ìé�A¸é™A¸é ¸Yá1ši¯WÔaÄ4áiç1çye;éY~1ÌYá1ˆi7 íYp1¬Y¥:öÑ2óiÿ�ß;�Î;¬Yé
YE1¬i¡W¬)˜B1˜B)X™ÜK/)_T‰+S‰l²q¢1‚q˜B)_8Zñ*0`yRRdYVRliÅ1ˆi~1xip1¬)çPÑKSy�`6‘a $ÏY‰$¯YåBÛQ·ïYÐ&œ˜B¡· œGœUœgT¸œn3^YÐ6¡·=YÐh<G‡y>3½©40/©-Ãq
IË ºNïL·|·T˜BK¹¢(Á\<¸¹-Á¹C$I¹e-dI˜B{©(g©Š±'Z‘Ñy-œÉRÁé˜BéÑÀ¤˜B¤G‡¤?<éH)×é@)ì¤Ï*‡égT¸¤gT¸¬˜B¬Ñ)°´˜B´˜BK¬!IE¼tBZÄÝS™´?<Ä"WÁ´tB`ÌÝS�Ì"WÁ±'Zˆ´G´gT¸´Ï*‡¬w3¹‰+(6Lón3T6L‡w3‘7ª ‘2
Ô˜B{¼Ñ)°¤GT˜B¤tB`ÜÝS�TG‡Ü"WÁTgT¸ùPätBúìÝS�n3�T6L‡ì"WÁTÏ*‡ä@)�Ô·¹T?<Tn[‰˜Bô˜Bôw3¹ôùP‰±˜Bñ˜B±ñ»-¸yªSyZ)ynSyÈ,ôyÄ.y%\gT¸ütBZÝS™"WÁ ¸" Ã)% s)% Ï", ½", 8"0 ÍC3 àC3™qQE¼CM·�$·a ˜Bù¾¸áÈ+i·~·~$·~,·~„·¹TQ‘ìFR éq\¹©ðKéúKËô·A˜B{„·�õ$=Œ'AŒ']Œ'`aŒ'd"eŒ'tx"|)™Œ'�Œ'±Œ'µŒ'½Œ'À.Á›'Ä©ÈèÕŒ'ÙŒ'ÝŒ'à÷ä è3ìZ$(¾,ù0h4µ8þ
9�'<@hD­HÂTÕX xE ÔN Øu ÜÂ à
!äv!è½!ìú!ðI"ôž"øÛ"ü##Ú# $Œ'9Œ'=Œ'AŒ'MŒ'QŒ'UŒ'
XL$`N aŒ'dU$eŒ'h¦$iŒ'lû$m›'p%q¦'t%x$%|?%€`%„�%ˆæ%Œ-&�†&¸Œ'¼‘'½Œ'À–'ÁŒ'ÅŒ'ÉŒ'íŒ'Ñ–'
í¨'ýŒ'=Œ'A›'EŒ'YŒ'…Œ'‰Œ'•¦'¡Œ'¥¦'©Œ'­¦'±›'¬Œ'°‘'±Œ'´–'ÉŒ'Á±'Å‘'. 92.B2.a2.#j2.+‚2.3‚2.;ˆ2.C‚2.K™2.S‚2.[­2cs14¡c‘'¡kÅ2Ác‘'ÁkÅ2ác‘'ákÅ2c‘'kÅ2!c‘'!kÅ2Ac‘'AkÅ2`c‘'€c‘' c‘'Àc‘'àc‘'c‘' c‘'@c‘'C‹‘'`c‘'€c‘' c‘'Àc‘'c‘'!c‘'!kÅ2Ac‘'AkÅ2ac‘'akÅ2�c‘'�kÅ2¡c‘'¡kÅ2£c‘'ãc‘'!c‘'!kÅ2#c‘'Ac‘'AkÅ2Cc‘'ac‘'akÅ2cc‘'�c‘'�kÅ2ƒc‘'£c‘'Ãc‘'ãc‘'c‘'c‘' c‘'#c‘'@c‘'`c‘'€c‘' c‘'Àc‘'àc‘'c‘' c‘'#c‘'Cc‘'cc‘'ƒc‘'ãc‘'#c‘'Cc‘'cc‘'i›;4ƒc‘'¡c‘'¡kÅ2£c‘'Ác‘'ÁkÅ2Ãc‘'ãc‘' c‘'# c‘'C c‘'c c‘'£ c‘'à c‘'
c‘'à
c‘'ã
c‘' c‘' c‘'# c‘'C c‘'c c‘'ƒ c‘'¡ c‘'¡ kÅ2£ c‘'Ã c‘'ã c‘' c‘' c‘'# c‘'@ c‘'C c‘'` c‘'€ c‘'Á c‘'Á kÅ2!
c‘'!
kÅ2#
c‘'c
c‘'¡
c‘'¡
kÅ2@c‘'`c‘'€c‘' c‘' c‘'Ac‘'AkÅ2ac‘'akÅ2¡c‘'¡kÅ2Ác‘'ÁkÅ2ác‘'ákÅ2c‘'kÅ2 {Å2@ƒÅ2€c‘' c‘'àc‘'c‘' c‘'@c‘'€c‘' c‘'ác‘'ákÅ2@{Å2c‘'kÅ2!c‘'!kÅ2ac‘'akÅ2�c‘'�kÅ2À “Î2Á c‘'Á kÅ2!“3 !“O3@!“•3 "“ç3!*c‘'!*kÅ2A*c‘'A*kÅ2a*c‘'a*kÅ2�+c‘'�+kÅ2¡+c‘'¡+kÅ2Á+c‘'Á+kÅ2á+c‘'á+kÅ2,c‘',kÅ2!,c‘'!,kÅ2A,c‘'A,kÅ2a,c‘'a,kÅ2�,c‘'�,kÅ2¡,c‘'¡,kÅ2Á,c‘'Á,kÅ2á,c‘'á,kÅ2-c‘'-kÅ2!-c‘'!-kÅ2A-c‘'A-kÅ2a-c‘'a-kÅ2�-c‘'�-kÅ2 /c‘'À/c‘'à/c‘'0c‘' 0c‘'À0c‘'à0c‘'1c‘' 1c‘'@1c‘'`1c‘'€1c‘'Á4c‘'Á4kÅ2á4c‘'á4kÅ25c‘'5kÅ2!5c‘'!5kÅ2à5c‘'6c‘'À6c‘'à6c‘'7c‘' 7c‘'@7c‘'à7c‘'8c‘' 8c‘'@8c‘':c‘' :c‘'Ac‘' Ac‘'@Ac‘'`Ac‘'€Ac‘' Ac‘'`Cc‘'€Cc‘' Cc‘'ÀCc‘'Dc‘' Dc‘'@Dc‘'`Dc‘' Dc‘'ÀDc‘'àDc‘'Ec‘' Ec‘'@Ec‘'àEc‘'Fc‘' Fc‘'@Fc‘'`Fc‘'€Fc‘' Fc‘'ÀFc‘'àFc‘'Gc‘' Gc‘'@Gc‘'€Gc‘' Gc‘'ÀGc‘'àGc‘' Hc‘'@Hc‘'`Hc‘'€Hc‘'Oc‘' Oc‘'@Oc‘'`Oc‘'€Oc‘' Oc‘'ÀOc‘'àOc‘' Pc‘'FÅÕõjšÁÆç-v{´¸
´ÊÒÛãó÷%iµÛìþ
*I]qˆæõ)/:@Hjpš ¥Èçí0J\|‚ #Np°¹Ñú f ± Â
È
Ú
à
ê
  ( 4 I ´  g ‡ Ÿ ³ 
i
x

�
Â
è
ü
!LQw�§Íû<Eg{‚–žå
X€“ž¥«±À2VyÂÕÛê+<U…·%3sˆ— ©ºÅÏõM\s‡Ž”¤±ÒØ÷#-OUu‚¢´ÏÜì $W•ÂÈÚä÷H]sz€…‹‘Ÿ8Efl•¿Éà 6iry…Ž”œÔÜ678 = !TøÔ
‹¿Œœÿ& Œœç>ÔÄ>Ôÿ&Ì
 
 !"#$%(2@AL&O(Q4V6WOXQ[R]S_TcUiVkem9*�1ŽZ�1 �1$*…1sX�1<�1_Q�1ß6�1¦CŠ1ÒFŠ1ÇY�1êY�1 K�1á �1U�1¯0—12—1«R—1¨)�1j¦1g¦1íS®1£-³1@"�1"�1 0�1-�1ß6·19�1 »1þG�1�3¿1¤?»1É1š»1ÍGÎ1ý"³10³1ß/³1|Î1ñÎ1õ5³1 6³1¤Î1\Î1ÑT³1ÁZ³1sÒ1 Î1¦9Î1FÎ1…:Î1ßDÎ1cA³1þ+Î1ó9Î1ñIÎ1•MÎ1›/³1]UÎ1JÎ1¾=Î1–+Î1ÚB×1Ä0Ý1Þ0Ý1äÎ1Oá1iç1êNá1Mç1ÈNá1(ç1þ=³1³1!�1 0�17%»1á1�1m7ë1#ñ1å\÷1w$ý1¨)2y 2Ÿ\2) 2QE2áG25J2Š»1Ìë1¥�1Œ�1|»1ñ»1¤»1íS$2|»1t»1ñ»1é»1¤»1œ»1wK�1K�1ÉT�1ÑT�1îW*2”»1r»1·%02”•ÌÍרÙÚ Ü
Ý
  ¯ ° 

·¸¹º¿ÀÁÂÐÑ $01234!5!6#7#8%9%F'G)H+L-K-N/M/P1O1T3S3V5U5X7W7Y9b;a;d=c=g?hAwC}E“G’G°IÁKÂMÃOÏQÐSÒUÑUÔWÓWÕYÖ[Û]Þ_ßaàcee!g g#i"i%k$k'm&m)o(o+q*q,s-s/u.u0w2y1y4{3{6}5}87G�IƒJ…Q‡R‰S‹T�U�V‘W“]•^•a—b—j™k›l�}Ÿ~Ÿ¡€¡†£…£ˆ¥‡¥Š§‰§Œ©‹©Ž«ª­²¯± ±
³ ³ µ
µ··¹¹ »!»"½#½%¿&¿'Á(Á)Ã*Ã+Å/Ç0Ç1É2É3Ë4Ë5Í6Í7Ï8Ï9Ñ:Ñ<Ó=Ó>Õ?ÕA×B×CÙDÙxÛyÛzÝ{Ý|ß}ß~áá"+4=n‚’¨,Yt�ðUj¬ßìúQfowž¥¬ÊÒ;Be�«´ÈÝ �’!(BiìóX ’ ž a
g
m
x
�
˜
ö
¢ à X H
S
^
%-^6?HPlø0Éþ;I@æî�û)QY€©@ìX3ì¹$ì�3ìÊ2$ó>ôB‰;°É§kz !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef(g6h7iOjPkeYÝ
 Ý
ÔÝ
X¨çHçÝ
çlç’çÂçaç®çøçÔ<>c__DisplayClass100_0<>c__DisplayClass10_0<>c__DisplayClass20_0<>9__90_0<PollAndroidSdkRoot>b__90_0<>c__DisplayClass101_0<>c__DisplayClass11_0<>9__21_0<ProcessAar>b__21_0<.ctor>b__1_0<>9__102_0<ScheduleResolve>b__102_0<>c__DisplayClass102_0<>c__DisplayClass12_0<>c__DisplayClass2_0<>c__DisplayClass103_0<Read>b__13_0<>9__93_0<SignalResolveJobComplete>b__93_0<>c__DisplayClass3_0<>9__14_0<EscapeGradlePropertyValue>b__14_0<>c__DisplayClass14_0<>c__DisplayClass4_0<>9__85_0<PollBundleId>b__85_0<>c__DisplayClass95_0<>c__DisplayClass5_0<>9__106_0<ExecuteMenuResolve>b__106_0<>c__DisplayClass16_0<>c__DisplayClass6_0<Initialize>b__17_0<>9__87_0<PollBuildSystem>b__87_0<>c__DisplayClass97_0<>c__DisplayClass7_0<>c__DisplayClass118_0<>9__78_0<ScheduleAutoResolve>b__78_0<>9__88_0<PollAndroidAbis>b__88_0<>9__8_0<FindAndResolveConflicts>b__8_0<>c__DisplayClass8_0<.cctor>b__29_0<>c__DisplayClass79_0<>c__DisplayClass9_0<ResolveSync>b__0<DeleteResolvedLibrariesSync>b__0<RunAsync>b__0<Read>b__0<CreateInstance>b__0<ResolveUnsafe>b__0<DoResolutionUnsafe>b__0<ReadFromFile>b__0<Create>b__0<Resolve>b__0<InstallAndroidSdkPackagesAndResolve>b__0<AutoResolve>b__0<DisplayInstallLicenseDialog>b__0<DisplayLicensesDialog>b__0<RunViaShell>b__0<GradleResolution>b__0<DoResolution>b__0<InstallPackages>b__0<QueryPackages>b__0<DeleteResolvedLibraries>b__0<DependenciesToRepoUris>b__0<CopySrcAars>b__0<ProcessAars>b__0<LabelAssets>b__0<>c__DisplayClass10_1<>9__90_1<PollAndroidSdkRoot>b__90_1<>c__DisplayClass11_1<>9__1_1<.ctor>b__1_1<>c__DisplayClass102_1<>c__DisplayClass2_1<>c__DisplayClass103_1<>c__DisplayClass4_1<>9__85_1<PollBundleId>b__85_1<>9__87_1<PollBuildSystem>b__87_1<>c__DisplayClass7_1<>9__78_1<ScheduleAutoResolve>b__78_1<>9__88_1<PollAndroidAbis>b__88_1<>c__DisplayClass8_1<>9__1<RunAsync>b__1<ResolveUnsafe>b__1<DoResolutionUnsafe>b__1<Create>b__1<InstallAndroidSdkPackagesAndResolve>b__1<ScheduleResolve>b__1<RunViaShell>b__1<GradleResolution>b__1<DoResolution>b__1<InstallPackages>b__1<FindAndResolveConflicts>b__1Func`1IEnumerable`1Predicate`1Queue`1Action`1ICollection`1EventHandler`1PropertyPoller`1IComparer`1IEnumerator`1HashSet`1IList`1version1CS$<>8__locals1Int32<>c__DisplayClass103_2<>9__78_2<ScheduleAutoResolve>b__78_2<>9__2<ResolveUnsafe>b__2<DoResolutionUnsafe>b__2<InstallAndroidSdkPackagesAndResolve>b__2<ScheduleResolve>b__2<GradleResolution>b__2<InstallPackages>b__2<FindAndResolveConflicts>b__2Func`2Action`2KeyValuePair`2SortedList`2IDictionary`2SortedDictionary`2version2Vector2<>9__3<ResolveUnsafe>b__3<ScheduleResolve>b__3<GradleResolution>b__3Func`3AnyOfArmX86Arm64UInt64ToInt64<>9__4<ResolveUnsafe>b__4<GradleResolution>b__4<>9__5<ResolveUnsafe>b__5<GradleResolution>b__5<>9__6<ResolveUnsafe>b__6<GradleResolution>b__6<GradleResolution>b__7get_UTF8<>9__8<GradleResolution>b__8<>9<GradleResolution>b__9<Module>EMBEDDED_RESOURCES_NAMESPACEDEPENDENCY_STATE_FILEDIALOG_TITLETOOL_NAMEFILE_SCHEMEJAVA_HOMEVERSION_STRINGPACKAGES_MISSINGWRITE_A_BUGOnGUIEditorGUIDEFAULT_ANDROID_MIN_SDKDEFAULT_OKDEFAULT_CANCELDEFAULT_PLATFORM_VERSIONSystem.IOINSTALLED_PACKAGES_HEADERAVAILABLE_PACKAGES_HEADERAVAILABLE_UPDATES_HEADERREPAINT_PERIOD_IN_MILLISECONDSNATIVE_LIBRARY_DIRECTORIESUNITY_ANDROID_POST_PROCESS_ANDROID_PLAYER_CLASSU
{1}--no-daemon--daemon-b "{0}""-P{0}={1}" #gradle.propertiesoUnable to configure Gradle for execution ({0} {1})
{2}5Running Gradle...
{0} {1}\ {0}={1}
file:///Cgradle/wrapper/gradle-wrapper.jarQgradle/wrapper/gradle-wrapper.properties\#!=:1.2.135.0at 'System.Environment.'Google.JarResolver.%System.Reflection.+Google.VersionHandler+ .aar .jar.srcaar)Invalid clientName: $SDK
extrasandroidm2repository
google%DependOn - group:  artifact:  version:  packageIds: null,  repositories: C^com\.android\.support:support-.*5extra-android-m2repository;^com\.google\.android\.gms:.*3extra-google-m2repositoryE^com\.google\.firebase:firebase-.*YesNo,armeabiarmeabi-v7aarm64-v8ax86
x86_64 mips
mips64 {0:D}FAT€¯The current version of Unity does not support targeting a specific set of Android ABIs.-;/{0} ({1})kUnable to convert version string {0} to integer value* {0} {1} ({0})
extra;extras;1\d+.\d+.\d+-[a-zA-Z0-9]+add-ons9addon-google_apis-google-\d+android-\d+build-tools#constraint-layout1constraint-layout-solverndk-bundleplatform-toolssystem-images)support-[a-zA-Z0-9]+#source.properties/Unable to read {0}
{1}
Pkg.Revision=Pkg.Desc=;Querying Android SDK packagesIQuery Android SDK packages
{0} {1}
OGetting Installed Android SDK packages.MInstall Android SDK packages
{0} {1}
€«Android package installation failed.
Failed when installing the following packages:
ہFailed to retrieve Android SDK package licenses.
Aborted installation of the following packages:
{0}
{1}
{2}
USuccessfully installed Android packages.
EInstalling Android SDK packages...]Attempting Android SDK package installation...?Installing Android SDK packages{0} {1}
{0} {1}{License agreement(s) required to install Android SDK packages agreedeclinelist sdkUSE_SDK_WRAPPER1deprecated---#list sdk -u -e -a/update sdk -a -u -t {0}3Do you accept the licenseyesno^--------7^id:\W+\d+\W+or\W+"([^"]+)"^\WDesc:\W+(.+)7^\W+Install[^:]+:\W+([^ ]+)%available updates:'installed packages:'available packages: descriptionversion ----
--list --verbose9Missing Android SDK packages�ÉAndroid SDK packages need to be installed:
{0}
The install process can be *slow* and does not provide any feedback which may lead you to think Unity has hung / crashed. Would you like to wait for these package to be installed?sUser cancelled installation of Android SDK tools package.Accept? (y/N):yN#^License\W+[^ ]+:
26.0.2€�{0}
Falling back to searching for the Android SDK tool {1} in the system path.�ÿAndroid SDK path not set. Set the Android SDK property using the Unity "Edit > Preferences > External Tools" menu option on Windows or the "Unity > Preferences > External Tools" menu option on OSX. Alternatively, set the ANDROID_HOME environment variable .bat .cmd toolsbin�¥Unable to find either the {0} or {1} command line tool.
It is not possible to query or install Android SDK packages.
To resolve this issue, open the Android Package Managerand install the latest tools package.sdkmanager)Android dependenciesOReading Android dependency XML file {0}/InternalXmlDependenciesProjectSettings€çUnable to set console input / output encoding from {0} & {1} to {2} (e.g en_US.UTF8-8). Some commands may fail. {3}'"cmd.exe /c " bash-l -c ' '\'';{0}"{1}" {2} 1> {3} 2> {4}{5}€‰Unable to restore console input / output encoding to {0} & {1}. {2}
|
|
k{0} '{1} {2}'
stdout:
{3}
stderr:
{4}
exit code: {5}
Failed to run+Successfully executed .exe which wherem' command is not on path. Unable to find executable '' (){0}%... 5Executing command: {0} {1}
#Copied artifacts:%Missing artifacts:'Modified artifacts:€‰Resolution failed
Failed to fetch the following dependencies:
{0}
LATEST:+ file: http:
https:
Assets€…{0}: Repo path '{1}' does not exist, will try using '{2}' instead.I{0}: Repo path '{1}' does not exist.mPlayServicesResolver.scripts.download_artifacts.gradleYPlayServicesResolver.scripts.settings.gradlesettings.gradle_Failed to extract {0} and {1} from assembly {2}=Resolving Android Dependencies 2.3.0ANDROID_HOMETARGET_DIRMAVEN_REPOS!PACKAGES_TO_COPYUSE_JETIFIER0)DATA_BINDING_VERSIONCResolving Android Dependencies...play-services-Kcom.google.android.gms.play-services-{0} t:Object1google-play-services.jarƒ=Legacy {0} found!
Your application will not build in the current state.
{0} library (found in the following locations):
{1}
{0} is incompatible with plugins that use newer versions of Google
Play services (conflicting libraries in the following locations):
{2}
To resolve this issue find the plugin(s) that use
{0} and either add newer versions of the required libraries or
contact the plugin vendor to do so.
€ÃFound conflicting Android library {0}
{1} (managed by the Android Resolver) conflicts with:
{2}
#Resolve Conflict?�7
The conflicting libraries are older than the library managed by the Android Resolver. Would you like to remove the old libraries to resolve the conflict?=Unable to delete old librariesƒ%
Your application is unlikely to build in the current state.
To resolve this problem you can try one of the following:
* Updating the dependencies managed by the Android Resolver
to remove references to old libraries. Be careful to not
include conflicting versions of Google Play services.
* Contacting the plugin vendor(s) with conflicting
dependencies and asking them to update their plugin.
�¿Android dependency resolution failed, your application will probably not run.
Android SDK path must be set to a valid directory ({0})
This must be configured in the 'Preference > External Tools > Android SDK'
menu option.

{none}'AndroidManifest.xml!${applicationId}classes.jar/cvf{0} "{1}" -C "{2}" .MWError archiving {0}
Exit code: {1}
{2}
{3}
ProcessAar {0}oUnable to create temporary directory to process AAR {0}kFailed to create working directory to process AAR {0} libs#empty_classes_jarjniWUnable to delete JNI directory from AAR {0}yTarget ABIs [{0}], ABIs [{1}] in {2}, will remove [{3}] ABIsKUnable to remove unused ABIs from {0}%project.properties## Project target.!target=android-9)android.library=trueYCreating Ant project: Replacing {0} with {1}€�Failed to clean up AAR file {0} after generating Ant project {1}-Repacking {0} from {1}=Failed to replace AAR file {0}=Failed to process AAR {0} ({1}qFailed to clean up temporary folder while processing {0}�Failed to disable {0} from being included by Unity's internal build. {0} has been deleted and will not be included in Gradle builds. ({1})€�Unable to copy {0} to {1}. {1} will not be included in Gradle builds.'gradle template {0}Reading {0}3Unable to patch {0} ({1})1Searching for {0} in {1}!.*\*\*DEPS\*\*.*€©No {0} token found in {1}, Android Resolver libraries will not be added to the file.u([rootProject] + (rootProject.subprojects as List)).each { ext {g it.setProperty("android.useAndroidX", true)m it.setProperty("android.enableJetifier", true) }}o.*apply plugin: 'com\.android\.(application|library)'.*?// Android Resolver Repos Start;// Android Resolver Repos End ReposM// Android Resolver Dependencies StartI// Android Resolver Dependencies EndDependenciesandroid +{I// Android Resolver Exclusions StartE// Android Resolver Exclusions End#Packaging Options#No changes to {0}gFailed to checkout '{0}', unable to patch the file.'Writing updated {0}-Assets/Plugins/Android'mainTemplate.gradle.O{0} may not be included in your project .pomMMaven POM {0} for {1} does not exist. YUnable to read maven POM {0} for {1} ({2}). packagingaReplacing packaging of maven POM {0} {1} --> {2}€›Unable to checkout '{0}' to patch the file for inclusion in a Gradle project. €�Unable to write patch maven POM {0} for {1} with packaging {2} ({3}). JdkPathJdkUseEmbedded
EditorOSX MacOS ToolsOpenJD
It is not be possible to verify your Java installation is new enough to compile with the latest Android SDK
{1}-versiono^(?<model>java||openjdk) version "(?<version>[^"]*)".*$.0[^0-9\.]�ËThe configured JDK {0} is too old to build Android applications with recent libraries.
Please install JDK version {1} or newer and configure Unity to use the new JDK installation in the 'Unity Preferences > External Tools' menu.
„Warning: Auto-resolution of Android dependencies is disabled! Ensure you have run the resolver manually.
With auto-resolution of Android dependencies disabled you must manually resolve dependencies using the "Assets > Mobile Dependency Resolver > Android Resolver > Resolve" menu item.
Failure to resolve Android dependencies will result in an non-functional application.
To enable auto-resolution, navigate to "Assets > Mobile Dependency Resolver > Android Resolver > Settings" and check "Enable Auto-resolution"%androidBuildSystem
Gradle
gradlelib#gradle-core-*.jar$1GradleTemplates*.gradleWDetected Android Gradle Plugin Version {0}.9exportAsGoogleAndroidProjectAndroidSdkRootSdkUseEmbeddedSDK5GetPlaybackEngineDirectory=UnityEditor.Android.ExtensionsBundle ID9^gradle-core-([0-9.]+)\.jar$e['"]com\.android\.tools\.build:gradle:([^']+)['"]$s['"]com\.android\.application['"] version ['"]([^']+)['"]-Android Build Settings3Android Target Device ABI!Android SDK PathaPlayServicesResolver.scripts.gradle-template.zip5PlayServicesResolverGradle)^jni/([^/]+)/.*\.so$-installAndroidPackagesexplodeAars)patchAndroidManifest/patchMainTemplateGradleuseJetifier%gradleBuildEnabled+gradleTemplateEnabled)projectExportEnabledandroidAbis3^androidx\..*\.(jar|aar)$)PlayServicesResolversFound asset {0} matching {1}, attempting auto-resolution.]Starting auto-resolution before scene build.../Android resolution {0}.
failedsucceeded„)Warning: Auto-resolution of Android dependencies is disabled! Ensure you have manually run the resolver before building.
With auto-resolution of Android dependencies disabled you must manually resolve dependencies using the "Assets > Mobile Dependency Resolver > Android Resolver > Resolve" menu item.
Failure to resolve Android dependencies will result in an non-functional application.
To enable auto-resolution, navigate to "Assets > Mobile Dependency Resolver > Android Resolver > Settings" and check "Enable Auto-resolution"${qReplacing element: {0} attribute: {1} value: {2} --> {3}7Reading AndroidManifest {0}{0} --> {1}YWill apply attribute value replacements:
{0})Saved changes to {0}iPatch Android Manifest with new bundle ID {0} -> {1}/Failed to delete files:�7AAR explosion *must* be enabled when the internal build system is selected, otherwise the build will very likely fail. Enabling the 'explode AARs' setting.-No dependencies found.YStale dependencies exist. Deleting assets...?Enable Android Auto-resolution?ƒ—The Mobile Dependency Resolver has detected a change and would to resolve conflicts and download Android dependencies.
"Disable Auto-Resolution" will require manually running resolution using "Assets > Mobile Dependency Resolver > Android Resolver > Resolve" menu item. Failure to resolve Android dependencies will result in an non-functional application.
Enable auto-resolution again via "Assets > Mobile Dependency Resolver > Android Resolver > Settings.
EnableDisable+Forcing resolution...aChecking for changes from previous resolution...KNo changes found, resolution skipped.aAndroid dependencies changed from:
{0}
to:
{1}
€�Failed to parse previous resolution state, running resolution...UResolving the following dependencies:
{0}
5Mobile Dependency ResolverqResolver not enabled. Android platform must be selected.3Android Resolver Settings€‹([rootProject] + (rootProject.subprojects as List)).each { project ->5 project.repositories {€› def unityProjectPath = $/{0}**DIR_UNITYPROJECT**/$.replace("\\", "/") maven {U url "https://maven.google.com" }7(unityProjectPath + "/{0}") "{0}"5 url {0} // {1}) mavenLocal()# jcenter()- mavenCentral()3.4compileimplementationdependencies {) {0} '{1}' // {2}4.1/lib/{0}/**lib/{0} jni/android {) packagingOptions {+ exclude ('{0}')***' + '* }#Android Libraries
l:gpsrpackageDirbundleIdautoResolutionuseGradleDaemongradleVersion5androidGradlePluginVersion)numRequestedPackages%numMissingPackages 3.2.0!Enable Jetifier?ƒ[Jetifier for Jetpack (AndroidX) libraries is only available with Android Gradle Plugin (AGP) version {0}. This Unity installation uses version {1} which does not include the Jetifier and therefore will not apply transformations to change all legacy Android Support Library references to use Jetpack (AndroidX).
It's possible to use the Jetifier on Android Resolver managed dependencies by disabling mainTemplate.gradle patching.!Disable Jetifier
IgnoreIDisable mainTemplate.gradle patchingEnable Jetpack?�‘Jetpack (AndroidX) libraries are only supported when targeting Android API {0} and above. The currently selected target API level is {1}.
Would you like to set the project's target API level to {0}?+auto (max. installed)€“Failed to set the Android Target API level to {0}, disabled the Jetifier.Listing {0} tf "{0}"/Error listing "{0}"
{1}3Failed with exception {0}" "7Extracting {0} ({1}) to {2} xvf "{0}" {1}5Error extracting "{0}"
{1}MGooglePlayServices.AutoResolverEnabledKGooglePlayServices.AutoResolveOnBuildEGooglePlayServices.UseGradleDaemoniGooglePlayServices.AndroidPackageInstallationEnabledGGooglePlayServices.PackageDirectoryaGooglePlayServices.AutoResolutionDisabledWarning[GooglePlayServices.PromptBeforeAutoResolution=GooglePlayServices.ExplodeAarsOGooglePlayServices.PatchAndroidManifestUGooglePlayServices.PatchMainTemplateGradle=GooglePlayServices.UseJetifierCGooglePlayServices.VerboseLogging€ýResolving to Android package directory {0} instead of the requested target directory {1}
Is {0} in a different case to {1} ?
QAndroid package directory {0} not found.MAndroid Resolver (version {0}.{1}.{2})#Use Gradle DaemonwGradle Daemon will not be used. This is slow but reliable.€ÓGradle Daemon will be used to fetch dependencies. This is faster but can be flakey in some environments.-Enable Auto-Resolution€�Android libraries will *not* be downloaded or processed in the editor.€ƒAndroid libraries will be downloaded and processed in the editor.5Enable Resolution On Build€™Android libraries will *not* be downloaded or processed in a pre-build step.€�Android libraries will be downloaded and processed in a pre-build step.1Install Android Packages#Package Directory
Browse+Set Package DirectoryExplode AARs�{AARs will be exploded (unpacked) when ${applicationId} variable replacement is required in an AAR's AndroidManifest.xml or a single target ABI is selected without a compatible build system.�›AAR explosion will be disabled in exported Gradle builds (Unity 5.5 and above). You will need to set android.defaultConfig.applicationId to your bundle ID in your build.gradle to generate a functional APK.AAuto-Resolution Disabled Warning;Prompt Before Auto-Resolution3Patch AndroidManifest.xml‚]Instances of "applicationId" variable references will be replaced in {0} with the bundle ID. If the bundle ID is changed the previous bundle ID will be replaced with the new bundle ID by the plugin.
This works around a bug in Unity 2018.x where the "applicationId" variable is not replaced correctly.�{0} is not modified.
If you're using Unity 2018.x and have an AndroidManifest.xml that uses the "applicationId" variable, your build may fail.3Patch mainTemplate.gradle�OIf Gradle builds are enabled and a mainTemplate.gradle file is present, the mainTemplate.gradle file will be patched with dependencies managed by the Android Resolver.�¯If Gradle builds are enabled and a mainTemplate.gradle file is present, the mainTemplate.gradle file will not be modified. Instead dependencies managed by the Android Resolver will be added to the project under {0}Use Jetifier.‚Legacy Android support libraries and references to them from other libraries will be rewritten to use Jetpack using the Jetifier tool. Enabling option allows an application to use Android Jetpack when other libraries in the project use the Android support libraries.�ÃClass References to legacy Android support libraries (pre-Jetpack) will be left unmodified in the project. This will possibly result in broken Android builds when mixing legacy Android support libraries and Jetpack libraries.Verbose Logging)Use project settings#Reset to Defaults
Cancel'GooglePlayServices.QGooglePlayServices.MinSDKVersionFallbackUGooglePlayServices.PlatformVersionFallbackAndroidApiLevel Auto�Could not determine the Android SDK Version from the Unity version enum. Resorting to reading a fallback value from the editor preferences : � . Please report this as a bug with the version of Unity you are using at: https://github.com/googlesamples/unity-jar-resolver/issuesminSdkVersion!targetSdkVersion'AndroidApiLevelAuto€‰UnityEditor.Android.AndroidJavaTools, UnityEditor.Android.ExtensionsGetInstance€‡UnityEditor.Android.AndroidSDKTools, UnityEditor.Android.Extensions;{0} class does not exist. {1}GUnityEditor.Android.AndroidSDKTools�Please report this as a bug with the version of Unity you are using at: https://github.com/googlesamples/unity-jar-resolver/issuescFailed while calling {0}.GetInstance() ({1}). {2}€™UnityEditor.Android.PostProcessAndroidPlayer, UnityEditor.Android.Extensions�±Could not find t
{0} in this file will be ignored.M.*[/\\]Editor[/\\].*Dependencies\.xml$dependenciesWFailed to find resource {0} in assembly {1}wFailed to write resource {0} from assembly {1} to {2} ({3})'targetArchitecturesUnityEditor?UnityEditor.AndroidArchitecture ARMv7 ARM64X86targetDevice?UnityEditor.AndroidTargetDevice{Unable to determine which Android packages are installed.
{0}androidPackagesandroidPackage spec€‡Ignoring invalid package specification '{0}' while reading {1}:{2}
{0}:{1})androidSdkPackageIds'androidSdkPackageIdrepositoriesrepository
-Command completed: {0}ADeleting stale dependencies:
{0}AFailed to delete stale artifacts/Processing libraries...ۑFound invalid missing artifact {0}
Something went wrong with the gradle artifact download script
.Please report a bugSGradle failed to fetch dependencies.
{0}€¿Some conflicting dependencies were found.
The following dependency versions were modified:
{0}
OJetpack (AndroidX) libraries detected, €¡Detected Jetpack (AndroidX) libraries, enabled the jetifier and resolving again.+Labeling libraries...QPerforming Android Dependency ResolutionsMissing Android component {0} (Android SDK Packages: {1})
(none)€ÛAndroid SDK package {0} is not installed or out of date.
This is required by the following dependencies:
{1}ێUnable to find the Android SDK manager tool.
The following Required Android packages cannot be installed:
{0}
{1}
€¯Android SDK package {0} ({1}) {2}
This is required by the following dependencies:
{3}
?not available for installation.;not installed or out of date.Processing {0}€ÍFailed to process {0}, your Android build will fail.
See previous error messages for failure details.
7Library processing complete#Adding {0} to {1}€±Unable to checkout '{0}'. Resolution results can't be saved, disabling auto-resolution.packagespackage files filesettingssetting name value�!Unable to update dependency file {0} ({1})
If auto-resolution is enabled, it is likely to be retriggered when any operation triggers resolution.Upackages=({0}), files=({1}) settings=({2})?AndroidResolverDependencies.xml/{0} changed: {1} -> {2}€—[GradleBuildEnabled={0} GradleTemplateEnabled={1} ProjectExportEnabled={2}])Android DependenciesResolution {0}€�Failed!
Your application will not run, see the log for details.Succeeded€¥Disabling auto-resolution to prevent libraries from being resolved after deletion.5Resolution Succeeded.
{0}/Resolution Failed.
{0} .meta gpsr€ÝFailed to add tracking label {0} to some assets.
The following files will not be managed by this module:
{1}
ERROR: WARNING: )õ«HZ€ÆIžˆÿ³øµsé     y€��]�H�]�P�]�T�]�X MQEE| M
AE Q
QE E 9|   �A
€È �aeiEYe 9
ii
E a  m ]   eiE   u e     e€‰EEe A
eE €‰ €‰E €”€�e   
9& e€‰E€…E€…€� eE€…
€‰E€…E€… €� e9(9€•iE9 €‘€‘ €•€•iE]e€‰e]e€‰e]  A9A �  €­(
€ €±€­9] iE €­   6€ €±€­9] iEiE  €­€‰€…€…€�e€…€‰€…iEiE
$
 


�Ù
eQ$$A$Q$ (€½(e 9e(e(e(e("€Å
((€‰(((€Í
((ہ
(€‰( €É€É
( €Í€Í
(€‰(((€é  U €¤€¨€Ñ€È
€¬€Ô€°€È ,(€�, �ý �倴e€Ý$$]$ €Ý€Ý$(",(,,,€¸e€Ý$$€Ñ e€‰€‰€Ñ0
€¼€À<€Ñ,€Ä I‚ €ä€©€å€© ‚€ÈL&€ì€é€é€È€­€½iE€ð€Ø€Ø€Ø€½€È €­€é ‚  ‚  €Ù �- €È€½ €ø€ø€ø ‚%‚%‚% 
€øPP€­‚-
�•€­�}€ù €ù‚1‚= ‚=‚1 ‚1€ù €ü€Ì

 ‚E9Q9AQ
L�€ýeE�€‰EEQQeE€ý �+ �ee9€‰EEe = €Ñe �¡€®.�e99e]e9emQ€Ý�� eeiEeeeieEe]e€‰e€‰AQ
9e€Ý
� A
ie
Ee
€� e e�� €Ñe�$  �,]�
�}
 ] €È€½]Q K, ]]]mA€Ý€½‚Q
mA+e€‰�4�!€½€‰
€Ñ]�‘ �Q‚YO�EA€…e�0e€½QQe�0�0€½�I]QEE] eee€Ýe&�%�)�-€½�1�5�9�=€½ ‚] �) �1 ‚e �=‚a �=A9]€‰]i]E]€Ý
9]
i]
E]
�A €Èu€�
€�‚m �åuu�Q�]�H�]�H�]�H
�]�H €­€± €± €� ‚y M$Me€‰€� M�]�P�]�P�]�P
�]�P�]�T�]�T�]�T
�]�T �]�X�]�X�]�X
�]�X ==€­9‚‰ = ‚� e�D�@ �@�L�@ ]€…‚‘�a€ˆ€Ý€Ý€…€…€Ý€…€­€©
�`:9�1�iiE�9iE�1�e ‚™ �)�%e�-iE�= �e 9�}�¨ �}�¨�}�L�¨�L�} �¨  eQ���D
��€©e�D�D�d �h�l�p�te�D2�|9�E�L�€�<�< €ýl A
�uE‚¡ ‚¥#
eQEE�u" eQEE�uHe]]]€Ý€‰Q€�e€‰�u€‘ep�ˆ�L 9+ eEiE�E�
Q€� e€È€½AM€ÈQ€½ A     �� ��    €ù�Œ‚1 ����‚1‚µ ‚=‚1‚1‚1 pp �•€­ 
M
e€‰ €ù  €ù   ‚¹ ‚1 �”�¥�¥€±€±€­€­
€­€½ €­€­ €­�© �©‚łɀ­‚Í 0€­€­�­�­�­eAQ �­‚Åe �­ ‚łɂÕ9�± �­�±
�­€­ �­�±€±€±€Ý€…€… €‰ UY U 9iE€­ €­€  e€Ñ €Ñ€È €Ñ€‰ ‚á€Ð �œ�œ�œ
�œ
€¡€¥ €Ø€Ø €¡
�Ù�Ù  � � � 
�  €Ø€Ø€õ€õ]] €Ð] €Ô€Ô€Ô
€Ô 9e€Ðe€Ðe€Ðe€Ð€•e€Ðe€Ð
€‘e€Ð
€•e€Ð' e€‰€Ð€Ð€‰€Ð€Ð€Ð€‰€Ð �Ù�Ù,e€Ðe€Ð€‰€Ð€Ð€Ð€è €Ì€Ì€Ì
€Ì  e
e   �a,
]]Qe€Ý€ý €©€ý €‰e€Ñ]€ý €Ì� €©
€ÑeF]$9]€‰]e�]$€‰€‰ �] � �]�( �]$(€Ñ 
  ee
A�<€ÅQA€Å ‚é �yQQQ€½ ‚í ‚ñ �¤�<�<iE€Ý€Ý€•€‘€•eQ�@MM�� ��M
�}�¨ �L�L�L €Ñ�x�„�‘e] ‚õ‚õ‚õ‚õ�a
·z\V4à‰file:///1.2.135.0$SDK�þAndroid SDK path not set. Set the Android SDK property using the Unity "Edit > Preferences > External Tools" menu option on Windows or the "Unity > Preferences > External Tools" menu option on OSX. Alternatively, set the ANDROID_HOME environment variableYesNozUnable to determine which Android packages are installed.
{0}>Installing Android SDK packagesandroidsdkmanager&installed packages:&available packages:$available updates:>// Android Resolver Repos Start:// Android Resolver Repos Endn.*apply plugin: 'com\.android\.(application|library)'.*L// Android Resolver Dependencies StartH// Android Resolver Dependencies End .*\*\*DEPS\*\*.*H// Android Resolver Exclusions StartD// Android Resolver Exclusions Endandroid +{JAVA_HOME:PlayServicesResolver.scripts.4Mobile Dependency Resolvergpsr&GooglePlayServices.LGooglePlayServices.AutoResolverEnabledJGooglePlayServices.AutoResolveOnBuildhGooglePlayServices.AndroidPackageInstallationEnabledFGooglePlayServices.PackageDirectory<GooglePlayServices.ExplodeAarsNGooglePlayServices.PatchAndroidManifestTGooglePlayServices.PatchMainTemplateGradle<GooglePlayServices.UseJetifierBGooglePlayServices.VerboseLogging`GooglePlayServices.AutoResolutionDisabledWarningZGooglePlayServices.PromptBeforeAutoResolutionDGooglePlayServices.UseGradleDaemon,Assets/Plugins/Android!PGooglePlayServices.MinSDKVersionFallbackTGooglePlayServices.PlatformVersionFallbackAndroidApiLevelminSdkVersion targetSdkVersion<UnityEditor.Android.ExtensionsHUnityEditor.Android.AndroidJavaToolsFUnityEditor.Android.AndroidSDKToolsXUnityEditor.Android.PostProcessAndroidPlayer�Please report this as a bug with the version of Unity you are using at: https://github.com/googlesamples/unity-jar-resolver/issues@B@�@9|=]u€„€�e eE9
eE€…9€©€˜9e€… 9e(€…
(€ñ I€øTe�D�@ �]�H �@�L �]�P�@ �]�TH �]�X ]€…�Œ�™����€ñ�”€€m€ˆ€Œ€œ�˜€±€­€ P €Ñ€È€Ñ]$A$€Ñ,<@€Ñ0€¼�œ€íU€õ]� 
9e€Ð€Ô€Ì€È€äe€Õ€ñ€ñ€È€ôe�
� €Ñe€ý  €Ñ]��� � mA 9]0�$��\�}�}�¨ �}�L �¨�L�} �¨ ���D�m�t€ý�|p�¡�¬=AEI = I 9Iam] 9u     e
€Œ€�€Œ€�€ˆ 9ee €˜ €˜ ]9A  €­  

A$( e( (
€Ñ, ]$€Ñ €Õ€Ù€Ð
€Ñ€È]$€…€ÑA$€È4A$€Ñ€È
ۄ , (
€Ñ0 €Ñ0 I€Ì9€Ô€È9€Ô€È9€Ô €øP   €Ì9€Ô eee e9AeEA €Ñe €© ]$9]€© ]€ý €© 
�]�ee��Q �]�H �]�P �]�T �]�X €ˆ�a
A€…] 
۩
�e9 9�H�P�T�XA
€©€Ñ�m €Ñ €ÑAA�uEA�u��u�A€Ñ]€ý �E�A Ap �”€­�±�Q�Q�Q =M 
€¡€¥ €¡ €ˆ
€¡€ˆ€¥ €© €© �˜ �˜ €± €± €­ 9 9€  €È p , €áe €¡€È€¥ €Ð €¡€Õ€Ù€Ð€¥ �œ U
€ØU � 
€Ø�œ�  €Ð €Ô
e€Ð €Ðe€Ð €Ì I P €¡P€¥   ]  A e 0 �
e�< AA] €©�L �L �L�L      �D  €¡p€¥ �¡ �} �} €¡€Ð€¥ €¡€¥
€¡€¥(u((e(€˜9A (
( (e((( (�”€­(€©(�˜(€±(€­(9€ €Ð((]�L(�¡(�}TWrapNonExceptionThrowsGoogle.JarResolver Google Inc.Copyright 2016Google.IOSResolver@;Assets/Mobile Dependency Resolver/Android Resolver/Settings?:Assets/Mobile Dependency Resolver/Android Resolver/ResolveE@Assets/Mobile Dependency Resolver/Android Resolver/Force ResolveQLAssets/Mobile Dependency Resolver/Android Resolver/Delete Resolved LibrariesIDAssets/Mobile Dependency Resolver/Android Resolver/Display Libraries ItemJEInBatchMode is obsolete, use ExecutionEnvironment.InBatchMode instead§ÉPK
ò` Ugradle/PK
ì Ugradle/wrapper/PK
ì U“=º$»LÐ!gradle/wrapper/gradle-wrapper.jar„»”fÍÒ&Z¶mÛ¶mÛ¶í®.¼eÛ¶mtÙ¶mwY}ûÞóß™ùΜf¯+±#×ÎÈõDdDfl%YP0 (( 0ñ) ¿пè¿$/®&L/­ Á
¤ôF^n®7‘¿ š íe”V�–WUc�—ø-?5)'KÏ0/KO335ۤ´ĺwü0E?&=-?M+M s0K=*Ö¡nÇ$/=*6hÁ9ÇÎ<Ã~p¹wþ_¾ù"öÏÉ�ý%GËÌëßy`ÿ‹ÇÒÅØÌÎüÿÈŠúOVOc''s—ÿmˆU�™EÑ_Öå¿DúŸ‡ˆ9z:Ø9›‘13˜Ú»ºúGËà 0!…îZ±ëÐz0Á®r:3ð Û‰ÚAKKWödÁ"î ¡9_ò�ðLùÕ½B‰ôc™ˆøµr¦MúW�w¶ÔÌk ]Êl�·²v´ö²]PeUÑcQ„„ºGÒRÂÐ{_ŠéËŽþøQ
$âÂ$у±#«(Å‹³:@ЩÆâõ[0Þ
‰ß¯Œ0dŽND ‚0,fÞ�ßÿßdÞ ]Aû».N—Xìÿ"£ª·«›¹½’‹ãß^7ks׿5/oaw7+s7kSc7G—-B‰ª½#Š0RUØèüA…QMÊÆŠ�Úq¤ã¼tL4³|¥¼œ ½1¨e­§™cÂCÝc”=Û=äkQt“P
0êíàÌßï)>Þ®—ÃÓÕ[  /’˜ hXpP[ê-ކØ4U­•|TÝv[„ÑþÖŸ¾pã˜{ú€vU>3©¥�R#­Jߟ^‹üÜô‚ÏÔ&«ƒ/ˆ��hrå­˜ÌÕ„�¤ä
ÏækÈ*Þ$$·Í†×•­PÉ«{4Ép+—DH�'¿©P†¼µÍ'í¥wC7“ºEÕ<¯ÀƲ²~Ãj`¥êŠ\«vPe™¦cBÀá*4|ÿüqä@”ÌË_a²'*Õ˪*ÛQ‰Ê»mL5%mÆ„8Pk®™K xBcM�Á¢UŒãjÆLךr‘Ìó>vKB ÏW¯$ëyÙ¾gc6*´> Ê·€O€ë5PÿñcÐ|ìKƒ¸z&HÔCèÑ{Î%Ìká=°ý§«àO'.Íh¥ù# +W^úSÒÆƒE‚DMËÖU;%1)<D•¯’ù¨¬™«òüÒ ÃY®zÞÐBø‡óÐcÍ©NaŽlªFë,Ò‡œœ¶NR0Ѩ¹N�1ˆ�i–Âr‡ŒrÌqñ÷ŽB¶é/…�nC§s¸“²“j½­Ø~8‡è ~J\\kãÅ–#4)ý†î¯i`{÷ø°šãG%ÊCèéí
ëKŒÿDÝé•–kå_´mþ%’ÿŒ:éÿvÿ”x̯¿Šø3u~‚†Ü
cðdrß]*¬ôhÐÆÂ!Ã{á&�I؆›‚
5žöùöÛo›ãÌ÷Ì
* �–œ]*éœâTs&™jÝ3Ôp‚M×R%¤‰”XkÛD99CÑÒן¹¡ü%D¸ùS{úRt@++¹@©R?qWˆ`Ǹ3eì�YNŽj'‹þ.:Q
rR‚ìÁЛ´—u¿^{´»íÿúOIÁ*|¶õþê—ò_ý¢ÿÏ’JþMuWs)G{s9GG[w§ £ª«ˆ#Œö-‘ ¿ò¤RMÕÒj£ ¦»®s­¾84Y¡E­h
]ËÐe¦m÷©ÙCfc³0*ð(ÉÎ?¨B;Ü5Þ1íÙëz25u+(¢5P¤<5îU¸G�+N
ed ¡÷�$QO´ßÔƒä£,¡b%? - —¤ûþü.Lc¸1^ëXò¸ ¬0›ê±˜çpºXãbg›¬¯Ò™q•ïêœ`ÚŽ¡5o<�Î�Æ”õõI0¶ZlÀÍ5ö´q9è ]}�`k·Ø(}I(Ì¥bãÈ�!�.–˺å´
ÛšÆ
ÃÀôç2¤Áª¥þô`ÚÃÏ€ˆM8Wé,³Ó`¬
tIôÌèÛ—°µw].yM8+dºÛø·o [bÅP~ÒgƶÚëd3=è¬Ûx–e—Ꞙü$Þˆb¥NTcÖðn”?B&ëViˆF‡x²€þ!wÓPþ‚d‘~–û!±ØL³e¥¿Xåå¹T—ú[å‡÷ÛÒý®Oêý.=­'Vé¦zÿgÐ(Å{•ç6š£ÏŸ¥ÇaÜ‹‘(Ç9þ¬Ý_`5]ËD·ÑÈä,”{†u3ê»4B·ý®ìƒÿi�ˆ>Œe=�´-ùí�ó“ˆ8ƒK41 m^ŠuÓÈP7žj܈–+’L�0�š� €� %IQÇì‘mÐ?íŒñæ+È'T(¡¢7$8-žGtàB;}5”D ŽD#Ü.Nz†Ðq9€‚AEñL¾xÑW›F­ë§ª …ΘYñͽt‡á
÷#ŒîyÀáŠ\Ä¥TÝãùßï@sèýo놩¸—©�»«µ‡¹„µ�¹°©©¹««¼±ƒ±¥ùYý
Y'Ts¼?ö™Ö�öÄBÄJv@¡ÍJAT‹A©k&V:ùð%àèmãú�Û1Yò²þDîwg9E,¤ôZ�#Ø’’£Á<‡?s± †vÛ²R{ñÞþœÞþyçüþX†B<L"j-hA.Z8–ôD2À{9Cp‹œ”v¾€Î×¼²æ&Oí%R(Ú�û 4¦LÎÎ…;ÄêÅ!¥: îŒ0ûQÆD…Æ
lš‰#F ItB™Ñ4ë$,
À
HGY)Ž¥ä™u'S½>õQtw#û Q9Ma&/¥•`X±ÕÍL°MPJaŠ ªÁòÈ+ÄT‡Foå¨Ìïª"–‘)ŸÉêÌe³[ÆQu~l±X¦*ÈSྒྷy¡Z¤F²SO+uEW¦h@¸«¿²²Fî”ie¶§…øj¥hM4»4d—˜¹³s8P¿uÛ o0š=šãªò²éÛOš-‰È2'gÛ —+:C¡l:àeb£ºÐßÔXÙúЙâdšWðe©:øZÙ¦¢Þ_÷¼ÙMÓóˆu=²¦±â�“,$È–:!à-èƒJOA‡?�£Ãå*~ï3³Â‡Ï%ƒL/ýA$‚ÞŸeoQ‰®æ¾€¸Lä˜]¿ÖBí—;Ù¢ÎrbL®ÑOÿñiO ‡ol˳í’þ.¼":½‰ƒâ?_u 7Ì ³tk#?šfñtç¿<ì¾Ð¯>°¡ln¢$f!̯½¤¦›Gô껂ЕmÍŠã’ûi2Èå*e]CÂJËh¼Í"�¥U§ÝÌR²R·åîÚMõÀB0 €ÝU¯Ä'(ƒÍØŸXï|o†Omã£Ñb†f4Ie}Ý 9=†…BÅ0–ÞÐMvhÞMb¼(#ž¶×0b®7T —x�c�–ЯÐM|(/×hxóvC�câwÚH\Àrë:„ …çèüH’ZiX¶3Ó›·3‰�ËÐ0«í ½É·ce{q®ì¹ �ó4ï{ùz û¸OˆŽK°ÌM£
)ýÈtF<ÈMTÂ@g¯›¨x†T´¶)„�
›ULp0OžzšðäÝ9šEÐt&÷¨© 1×´ž'’]iµcb¡àóð$.W�~O•ûP´òL僩ÒJ/3i§Ê¨Æ˜PšH{í9Õ~—• SQöòÅÙ§×?ÑkRÚ½…¯�O*»ó«h./cP–Å“ªÌ+{›°¥Í˨‘üSØú «þMåš>¸gqˆi½íÉ®u/')ƒFý©•U2?%V2ü!Žø>µ$_A'�F<®€vÅvø HÈ(rNã±<$EL.9�ì�ìYÌ·lqʈÙ:`M·Õ“õ�“=ym j7Û$Áá5ïTHjq2ë1�b޲CHg™¯ŠÐ¶½.^ Ò€ÇYAoûo¨“gû9™àã~R«…é•*qÃwtElQ«å¤PÀ/O P@AöJB2¶ôŽ0îg¨ |ÁM³–c[ÁÔdŒl´s^åˆP”^ðH¾ßÌÓÔ!úv(•Ø=àpèõò’^±Mç{äƒ5'䆎SÛÁ„zSN7µnm¹â»£ n]`‘QŒRìo»"Õ¾’èPx±p+Ö?P°¾q—:Get†îæø àŸ~·5¥qgô…ûÔv¥¿P¹®õËqª4BC¦ßó•¼rÖ~¼9^ Ã%ð�ÆK²î·‡hÈ ñ·Ìk‚áïæƒîPô/>®FZícx·�w ŽDuó}‰æ–» ‚4ûç>7A2‹Æ%ŽÈÌhä–�>Òq—YLx…¿rPÖD³ôÇbŒt#ö¡,'2¥q¿QRý!£6P¹ˆÐxÜFn¥ïƒ*ÁàŸÜ>l>ó,·éþ»¡è8ÝCÍÁ«ÊOZmèc@)¥¯É{â²Ù6[v¡‹SY–·6±Ë7‹%±i˜‰ÎÛùž ÿ¹+LÁH$üu^Þ þ[çEó_¥¨£ƒ…µ¥»‹±›µ£Ã9/IöЍÂH£6OW‚‚ I®‰³ó÷X¡Õ™ÕáÐ¥üDk�RI�c·ôÙïU­I˜ïC ûͳ{tó«7‡8Y›Xç}]ë}|ÌÎ�ÜQ…ɦ�qDáEÃÝ8 ŽNóq¾tx÷O‹àDYó™Í=Û Þ]ipÖë‡×;[°À�ÂD×L?•Á…î¼Gžë•”—™òØI³—Ñ¿ô°ƒ
vÔ~÷gjÙyÄa-^Z¡Äî,±n6“¼ZZ§ãµÜ_*r×bŸZ}—»_,ªPw®o2rì›Þ´ÉPý¼f]©]åØÈíØmˆžÍõö³óQ8ÒÔ?-Ú¾ñ¡°$ÞòÛ„YaèîVªwœýpQmðikJ-Qž_¤);d¨­¸ªÊ «üó\)!Ù•h)¶Ž\Ñf¹O°««F¨ (9sË/–bÕ^.ºxíã»›u Ö²§ý��7o`èÀPÇ~Ñ¥;ý~rSÃé<Æ
—@üM{ÏŽ¿ªtP:†ßázÊ3L©å1<�¸œÛ€eþR ¿�@~½.`„2Dë%óã~5ÊλbÊñ š‹»ìT¹sîIæf‰V5ÎþƘ`L—H´‡ŽtI¦6J.dŽVÒˆ‚P¶ˆæD×COÃ:ò¦¯ø!yr¹^ŸŒ”•dyଇz@~{ïàÿ–ᚬ—žC4=í4à´DNq'»;á„ωFäŒm¦Í"|ˆþ·V,�Óƒõ‡éó@W&¾Ž¥¬£Bz‚ȵ8ãT‰(I&¾®1¬£b|‚(Núw1¢”r µ°
˘+¹”:|b¢pªtÓd1™��L|3œŠfЙÍß²Q!sÕ_hÄŒgië öŸØ6ó™ÚMüë”óC1ýglÿ{¼+eìð÷õ¹;1ºªºêhßÒ\Äx=lRºÅ-!º*ŒRäÍ4hdè äP%ÄÙa׃qi`ǧwC<Ë‹`G„®™¥4¦±hÿÉŠ]’£• ³Æç
[ßë–¾–U…ï÷�8AàîpGÿ³áâ j ¦óAw9Úôû_¤1ŽoùF
$*]{öà®0'þVŘÊÜ R
TÃò„jtÒ^ÕÈ“^eÈ´Z)©[G¥˜¶[#]*Ý”Ã(ï¤7{¢à™Aî?[×tì¼}¾gH†åŽ0b\³6ü铦ĨNÖP°lòÚ#ór–â²æî?ߡٲmAjûû#}'6ò[¼g˜ž¬<lõÛÒZž’‚µ�é[
×Ù˜1”Öf`€S:^d™µ
DûMžšÍ‚5‡‘ù6 û(ÔÑ9Ö¦Lé¶i´
ÔNÕst.Bªb[­lÒ’0H˜ÅjÓb‘ß:™—Ý€qÓ³�ÔÀ>8\æEí²=9¦†ÒfÆ>”µeøƒ,ç®Û‹žØRM¨ëôÛnÜ:Z»K‡Êî#â?c¿HclcÉ“S&´äE½7@bćšRå4Ó¸ŸÎQ^˜q�Ï©}9¿O‹Ž�)+£ôì;Fá™I�mV,¢Ï-]ýÒ{ÓSZ}~†ç–©ñQ¥U¶‡c‚éĽd,³Hߔ՚€êí*GAÿ¬-SÓ‘è®"ùY #:âP§ìòóæp(­±ÔÔîœ|¦vBUÞ"f à«—Þj?y³­paá8±ÀqvÉ_«{«â¢>Lq#� Ò®JaV!uH
Þ ‡®�þRPµ6‚À(qžŸ¤�NxˆŠžwÀŠžwø3’ñ®$¨NÍ/Æ BqG„>%MKˆ¾$ÆÞ­Žvó“ãRÉØìrÒ&›Û#å9EÌ뀚–4xÜMÎDdùÅ$B�Œ]ï'cëfÓ�Á(Mº/Ȳ „­™’‰¶ÂÆJëU–ß÷ÓÕwúÍØaÚŽWæÑ –E|�|Ãùz”ù]âh~ÍM>Y‹œÚ®1T[ᄪ �¹
ª¥à½ykÎTå>Ù`™$­¥JñÜBDkêƒ'ImÕ‚„]Û…ü(‚á ñC2ƒ=¥BoÆ–È©dä|è7×,!K`Z”á(löò¯ÙºxDÐcr<pÉÙ=�¡[o)Asÿ�3É@z ¦@áXx¬&e=ºÞà,©½6Ñ¥šëAvÎôàI/ဨè×'q2»Ä³D˜¤‹ÕÞj¤û=zßÇ8�OQ˜Ò*¼ØcEë žV!{Xk‚³ öLÁ!PÈ|h6†WÈ¥Z'ØÈv€'‚åÆ'·›àÀÝüQžÏbKÞ÷ÑË‘¾å9?7¦ÆË77–æÛ™d|¤3·à;3À™m�‘Pœ÷XÛËaú¨!î}Ü�PûòÔ2¼Œ;V—’Þ¥)y­Y€¨û òÛø
¼nO3úDZϤYÀ
ýˆÁøÉ3cCÔ
u]ÒǾ;2펅zÙ)˜Vòœ¼¥9ÖùñÀRï—-](á®ë*“,“2�Â/Ï”�?`òg ß߆ÿ´o%ÞL�ÿï�çߨŽð?Û79GËÿ½…&}8.(¡�ö¥�ÒÔ1�8É¥£æÀˆk™)fÐÈ„Ð5ÉYµ²Öh1"„â ~‚~EŸ¶Â£h5ÅçæºÞrçý¦ùñýý¿‡¤˜$µg’æDûs³œB9˜NL?œWd+ʼnH8aÎ(<® Â{
zpƒu�eë®áBú:ÝÀÞ·»Qð ®lPÀs§Â?I�£«µ4s´ÒŠ—+º£l$¤`©_ßÝÈ帨(VbK¹³µÖµl‰Ý>§@é:·‚PmX�^ÿ¼#Öøœ>A ça\l¹ŽA-/P0bâ÷¡æîãÇwœ:¢Û…™ÛF¥@¶Ba
0ÑÂeM^?Q9DÕtzäIþEk_¶�ðd�Ão0›ÍåÁdZSù¶C“ÃÁÆ+MÑa�ñmgÜÆAT–*
—áÃ8€>†Îaùóéøn©WÒ6CaSÙÀøú" ¯'P ë+£ Þ‡:¨±³£§¦¶$õ�mº±#¥U:œ¯×œ‡~°?¼hA=#Ùã
ãÿ=—¾ŽvXüC"ûnEÚbœG$$@Håš"-€è!¥ŠCª–Tæ�Åd�B™{ö¡;"’O^É:gM„ب.]û�—$/á`åXciƒ6_¨clruJUhåwBæ~UšyÛKFŒíKë£+ 
éU þ€=ÛÂËD—¹)šÖ)b0}œù8‹Jó´ÔÒ
Õ„6 •Úž XÃËEÜÙ,Ù!Ém•ÔY’õ¢ïN[€[°á ]`§*Æ^�
åAïÙº;xþüOHš¼ZÓžýu%q€€(þ3$•ŒÝ¬„]]ÍíMìþç¹Â›!î*ò)íj{:S^#)s9TbàÊí{ùƒTÚV°dÚaŒfŒËð”Æ®ÆMŸù[Zþ…Îÿ¤•„­9Åß¾Ê[w×õeóÃ)Þ„o§}39çÜNeµýùž½üâ„ð'zŸ/Z4¹vT©_":‘z;WS9ùZ^[‹F†yÈhLA»³°ÞÜÃDiÂC�Eã0ì„§Ël7ùãô®�J€`�ònK Sü½9rvìsKáЕÅÏ`ØÝ0ü Š™ìNÍå˜qò�ùQ=¡cxÕü[m7ú@—Ùwù”Qò~›ª—’ÒPãÞ]PÉÉ®³¹“R~´eº%Ò6•\g¥η°œ7vŸŠËÝ;ÀÎÅÇÆÝÚØ&àiÂÎÁÆÝØY€×U[Øï :‹æ^¯�\ÅT¹w'6í’öd2¬ädæðQ1ü^A
®;‹C>Z_—Ì!>ÈišÊ—%LA—™zn 2—‹§§�”Iu\áá¶Ñ�1q’iÌxa+.ú ûj¾ÍaŽoØ‚O*ÿ(“õ >ìšØj|rY¯guíìb)稰^œo8
X=¸¶úåôò»!ÓÎü’ú‡Eóê´ÈðŠ¸§Û}Bw„Ó¾�:8ýt³[9Qg)ïH4ƒ˜Äo¶Ë(|�Š!&»%„zà êMÕFo'W=Á\ºf5kô�MÂxï ¢ôÝÍ|~^‹Nx=Fr™àƒÎè�o2±

òž¼I›œOƒ¶›µj–›-Îà0¦|
£K+�ʯ\¹°+²œ1ô«õxq'ñÇ
Eñðä²3ASÙO�côƒÓtÓ–ˆPÚgz�QO$½uò‡æ¥úÂÑ£Äq_ßÁëVj?¤P&‚aK"{Æ(hý
ácƠዼÔ!�•‡iq(îDáWïšeLUÄQÖG=©ìŸPžl|�9š�ØÃ^Ãt'ðºƒqâ§”¯ÔØãV¯Õ÷®ð}HçiíE{Ÿ¼uN
÷´è}+LÁÚ;[G¤4Eûm¯9‘»¶¯ ßåûНMA ˆkÓæ#Ó"+.1AùïQTÑuAV’¿î124æ×rê´j;¬¯Þš< Õ¨OP5Æåíê™PKÕkÛ¡ûØ$†ž«¢Óvï<á=ï3•b~š[îœBðì[¦Á3#Q𯬏ãY­‘?¬¼ôQ˜"õWr;M‚JR˜rĆ}vh¶IÒ‡t•¥òbŒ,V°.»‘û¦'ÇÇ�Øðí,-�ôà\Ê´V_Xs×%’LLÐbèzòPQŸ+9X·[fá8ÀŠN~çÇ=0CÀjMjt÷Õ´=Ô·ý²õ­PvzÿóˆÝGiÖób—£5ƒ�÷ö3¦²é
:!w¯­NÉE G«Xeæ’�?$iuÜŒŒ(œ¬é{&¬ռQ¥æÝËÔÒy�a;1m>ª'8ŽçpW·iuØ,ÊIjœ¸¬Ñ£Ï6WÎB÷#…€
p/"ÎÈ#ÿüÙˆ�ßÝ™d?ÊÎáopz…Òtê@d†mùªî–kht}6BÚ~{Z /]+Xo™sçï’ìk…GxxÑ“�>³¯?Q•{AË<#D(â…DXXü&óÊ4Âõó¾¿ÿp m;KªÄPTwpyD°D$Äê+·$©×ÃHšì'9öÚ'#E¶cÙ‚zó*ÒD Àj¶°È.Æð(¨3œÇA¸&iU…ÔÔA;”är ãRsnÌDítŽ>Ÿ�¼œû,(*™aŽjªlïßHÁëó>9ù í§›QsÉH(Ëω®
Ôcn ºñ7o¦“ðW£äX0lx]P´0ħªÖ¿é±£?@« •æ z%ª„dúeƒ°Lè…r!‡×÷D¢²gg[‹>ÿºe#¿ÃCõÜL}°_j€÷âBSÌ|H,ß>â³³€ß¹½ËÎÆ‹Èë ƒtq[ãgsäïâêA!)ÜÁyç�¬ôr¢l‹’ù„c]þ°|ƒSý®õߊqÆ“„4½1kü8£ó‡í}aþ†òa‹»ƒ|ËiÈ.é'gÌLàyG¦ó=Û<"GŒ�µ§n«uû´C�{ÚæêIr¸­9؆780`SdQ]lÎ&=lÊýò£õ¦–ð‰¯|Ië—zÝØÛ9Òkc½‡Ïبh±ô¯þ¼
ì X~ÍáAø8Jll,Ùtg«èâ¤µÃæ�1Åm[Ä\c<;g®Ÿêu&l$÷ŒÚûžÒ{ÈsQ%(ïÍЃëˆ2;£ZsÜøŽkxJÎÏ}�ždôÂ=C’Z”óf7š¾;V"ïl—OØ>þ©ÜZæîg¾µ×føçd+ApÕ¾§¿§òÕð
%4ð»&þüÛ½,×Në6.*Ð5ÑsCæàêflg÷¯]2GÖí¸E�²k}�n�i`ÂVŒÄ;Œ ^:~
)þމèÂÌ31úŠôf&Q¬F'Jf¹WIw^£:΄^]YzŽjÍÆ¿õ¹ ¥¥eYÃÖñòº§çåygóƒæå‡…g–ÒcߗʼnoöéŸì[?Cƒ¯�EÉ+âHù3i#”1$1†™A lÀÖ#ãe8ù,uw`ˆ÷Y³àTý¨æv‰lI zcªÅ8{$¹ù¼íZ™ç0� l)–cŸ0³¿¯€f�å÷AÝpfáï°ù}dйU÷߀3Aõ&Ì�+]ÞªãKU2+�õ¦Ùaï~‹„bŽGgÎÊÿ¨ÈKwí÷M�ÎÁÏ7©}ú
ã]K·çê¥8{üÄ«JÕË=05sä¢Ä:¾T™ªæôûæ‘�Úïç@ÞƒkSÞª´¤làÌáÓ‚Ô]h·òþ
PÍñ}ÀÙìô‚¸¬£ú+Iè¦ÙB+PÍé5°Í~úr¾Æþæ@Úë›Ê[»\&MèP‹s×@�ý©‡`Ø—Ýk‡èÑ5݇xÕäW·j.22E¥�~=Yæ+×Í m±4U6Üœ‚CòHbu¨'õj¾Cî©�öe¤ö^Õ«Í[·Î޽@‡Î¾mz|Œí§cgsA…ûâHér'{�c‡›èvi‹\ètÚe×cf8Áeµu ŠEµ+øâë»�õ9³m�´ðƒm†_‚—eY‚Qæ<ž¢ÛŠÅ£ÓPù¹ôÙö¶Daé:Á�̮Ԩ¡'¦E»¶yøsçý…]}÷ñbdû8¨ãXŽ£™_…‹Ñ;Jd)lžØ¶Sáʘ0ØãG<ü¥›�ËíÊV|û ñ¿kØLK["Ïâæ/Ù¹;ÖÌuÓ»Ÿîë±5¬GcÓWXu%¬›*ñ!!ž'Ðû $ߺ•­^°$ɱêsG9’ KB‘Ãm³àL»µVAèæPâm{”¢tš�˜ÒNà•eÝã4D´“$óΨyLç+c]¡ZøÊôrR’È¡â=0V®w7@«Fº”5{œG¥2ØÊ‹gPHŠ=²…CëD=�9P´Pc€Þ†#
0É*Ø<z… !‰ƒY3¡jc‡Éåo4Ú±vã–‚ÛE;h§ª½²Þ¡@ˆV@Uç�þÙZØW›Ø
_4diˆ0DÅÛ4Nš�"±à^L’ JaªéÍt¤pZ7òÀ‘–Õð€‚ˆläË4Ù¦†uƒç�T¨û]WÄ"ì</Cõ> 
·¹•‚0¹“e
ÈT.?ÓÌ¥¯[k¹7Üa�{<oؘò!HÑcìZ=IWp­.ÃK°$3uá#ú Z€\ȹhñ©,Úmø(àûogPÍILésgoÒhwM&ðãG?éKXYªø55»57S.C8WŠá3ö|ÆdΑ7Áǽh�Yì¼âX}ºbâÍC®‘ ýDS[ÜÚ�¯ªÔT$;!¶h�kÎâ4bŠ·,¤¶bç5íL‘Á*ÒgJ,�’.¥„¯jÀÌoŠÄ�[’£ ¯NXj…š4à =ó¬7áÄñY“N�¦ÅSÔÖ&Ú¨^BUÞn¼‚Þ�RÁ9sk#å?År%a÷pŸˆæJ®/˜OžG5Âü~ZßÓMÿÙSH
‘¡Æ�ÇK¾GÔrOuí)pq8_N š\¡…¬X=é³,çÀnºVšßRÖl‡‹M©ë¦­�ÄA(^ ‰*aR–.½º}8˜$¼2��ËmÜf¿¡DïZ9pÕ3¥^E~“˜’y4÷7ÞÄ–µ�OÂ1KDÃK˜FáÂ&¹t}m™^Àå03U
©¥Önâ
s1¥Cgo”Öë`Iz�”tUu3¡ÚÙNK
N¯”ÕwMêRCX1¢�‹¡P£Ãœ³�šÑ­7VmºDH]¿ÉŽ|ðÁ”jRÊ­Æ€¡}™fœpÿ˜\á‰
™›h@�¨ùÉÒŒ‘—½"í* XA)PgÇÐÙ`0¦ cæ4œ,wï ‹ê¥B§¡›zx:4›IÑ6µ6¶/+œ",?vÛd”.ü~ ’é+ðTç‘û¢ùÊ(X â/ZpÄN©-°U÷ !P?—è%ˆUsš(œ­lÎrP:÷y¯èRïýé¨öF±Stwzth‘ⸯ«þÍ·yý6$3
Z-}æ/|Ìø�–/^›u¶Òâ®^®ŠöÝ8áûÆæq’íŽì#¼¿©ÞÜWø ù¦�òr¯?Æpc<àYõÉþÝ9ñr�r{ì(åš7ñ…‚XþIô‡ûkî ¦"Ý\"ÆnÀ¢óÊO—’¾Mcî$�ìÔv¿=aÉÄYVTØæÜBnÑÔ?=µ?7
O£†½”Óp:Ò_ê(s>ÊŸg¡Œ~jæ²J"ƒyè‡ÿÇñ™Æ[–ŸÜsüÄîÁ—¯•X¦'
Ý�Îc’tþÃà§}Ê
qúÑÉcI#ô›FZzV³2}ú�‚Žñ¹‚AáýEYòŽþ%wµÛÅÎG}ÀŠóôBÑv£¥-鲺>J“죘ZS§lLÁ´'}ÿ©ív†Ž?Ý6e7^½zÉ/�‚°�Ì¥šÌŒg”BR<ÔTòÌÜ@«óˆèµ«…É–X1¾ÊóÌ)òaxuúHëŽáR@c¥­têK†rR¤ û¦zXôü¡vÅmÌÊÝ#†ÃFèX<&®Â/œPó:%m”ð$àjE4£‰!aîƒÌ¿’OHPõ
J°äañ�*o>+èH¨ [² ÿÛn޲Òð‹A5à4¬³Ðy‰8÷X6­ò“î™FR]`d–úS?¥�ÒˆŽßÖ:R§ÊØ8ÃEá’ ò´9Ö«P#éÌ×`Sí[@09bC9OuμÊcD- Á¥Â õ$ÅcǦoÂWI5\�,Õ`R× ¾â4ƒããЖ£ôáÝ‹¥U”ß¼A×1ËGÅ©t¼CËEAr(ŸÂ÷1�|>}ï—!� '12Õ½™;Üq΄àÑ*úw„àI^ù§j¨)¿yùC\^ß° $ö…Îwù#ñ‘ý6õï’üCÍO…‘…¢ ¶”ð„¿ÁxY%yL¿êßí}dfðQ»i¼Kç%aþhïÞ?ÑôÍz’´åzé
½e�'ÄKN·Y]AG[Ú¿¿Â7&W”ÈË?dÿˆÔ£ÂsžÀSø¡b½>ÆtNJqŒ×T–ÚIPÝ’d=âv®u#&0#²Õp=(ªÑS`Âè½>º�×þ€íТª1ÓCöûüüP.çr}H‚ãy@ [ÐbyI”+bÎxoæÜÒoJbfJiw…#èVæÄœ².ã ±7>ö
–¢­ŽÁ6H¢â¦ÞAú-²´×IÌÑ:C/QŽ 7ãÊwÐYÃïzÎ_ZÙ:‰vÇ�«ÁMGßб¡ �É2y%.7¯Ç¤‚¯¡ÖañKƒ�t4d] ™%)fÞVRÌ0,'õÚuŠêbS²kT=�„sü¨”ÅÚÕg¯Qyd¬sÓRï'Z6ž0ù ‚ÂòŒñFÄwç³_b#\DÙ~–!
èë|0=É Œh16ÏŒ‚ó9€»ó˜–DSV¢ÎÚwíž«÷jI“H“Äêã¤Èn)g’‹u=žz�(ˆÀ:Ëõ–‚©%¤ðäCG J�霜©qámt*›/`¬Ë²/êI˜$é>1Rœ…Ñjðaæ*s7¾Õ¦èå’Bê©gdf¢‡~jVµ¯½¸=ûR¸œ\Pð(ŸðøNŽ—u}™Ÿb*rR.K>ž¶Î‹;N€»PB³˜Qf–ˆŽ�Í
LV¡ËPÁÑfñç4�µ~`xúž€L
G”Ïå´ýAII«ç’WIAþùIkÁ¹ï’^¹žmlÐÑ<RIEßÇEŸÏ˜M"šŠ…ˆ•ÁâQç|6ׂÃ=}¾ãüAÜ“§­á1glguÅx˯ú¨rÔ}óJ\úŠ@Rgf›D–.á2UÂdeðs™ÎÈôÚMÿL˜c¯˜nÛMÅìÄkÊØ)/…_[¸ç;wîøT^÷ÙšBàÇÁhV´xœDOL1Œu\r2ÞÇÆ)šø¥Ðavy¢¾8os3Ã21¥ ØñÆÓ¥(Ý9Òœ¦Å[Òms5bÏYcCÏYR)–}z�¹½� 'PàR¿\ÕÅåõÂ,Tdß’Ø€“l{„ÑWN&Mej¿ƒ{…374ÁÓÒVB”—ç•òKÇÅÄ7Áñ¤»�›Õb«Á�c®¹Ôº·›ë‰3
úñdõÊù
“ Éžq¬­·»ñnCO[Íú»aZL—d¸qîø=²W?›¯6@œªK:ˆ‘r¢)ŠürvÓÑš¶º§û­�+6ûjû;ªÛûÃÚB�©/Ï‚á7†÷-÷wÚ„Qo”Ì �ÓgðD@¦>,ýi3|¼F•Wê[Ô§ðîü‡Õ/3‚Gô7LC×…:z(ŒÇE½Û6†r9�9EK;xšvÇKAB®o¥ó²Dâ¦ê‚q«6‘«(+’`œÍ½�k¶0†Ò·fP@gÈ þ ÔüZiŒÙœù’0…ûºÕÇœ'½¸ª‡Ð¯Éúw¬Š@†ü’GøÎ¸ÏB·•jι/&ˆ*‚|Hâa±
ñÝbP&[bòsâê» ‰�^qÄÁêªþ§M¯ßû‘ ž{¥z ‚"q¥À¿á$Àlè�ëmd—UÝ(9!­t�+^´il«µçw`IÐ&È<—…UI øæ^ðÉ€Ž%�æÓÎQ¹¢äË t•çú¸î$.7C@l:Æý"ñÖêHE˜?Ì7G-óÍS¬U«¬Ylªt²¯öI¸˜¤…,/]Ñ%/7t¤‡ Âp ×+^+Ôlnõžoho¡ï«l™Æ|Œ¤iy‹[Dùµ¨r‹¬Ã�Öäj_¦X�ãâ2¡!a×âƒ-Ì Ã²zpl5íH�
°È�)ïžÐhb®² å7?ÅóFý<]wTÜtN¬Z"Â;¢zBå#_¹€°æ®÷K{Yÿ°b&h¡W—LóæŸ|ˆB‚IÐPOî+_Á||ZŒô/Ö€ðWœŸàÛèä%”
hsãl²j®ÙÜÏâ-Oî
ªÿ¦ë
ž ÕÊb߸m v£Qïï”làq
˜’؆{}äî>ŽrÒ¿\x Îôbd¼ä/;•~ô[å¸~¹óÍ5pZ îe?ûƒÎcIè�¯â¬+¾_ Ìã‰ß·àmßkYQ;­ÚŽSK[v¸×X¶q{ØÄ9âl¿ùì:ƒ#ã2�_Ð’Å|\,š÷zTu¬á²…¨(±�_iÿ„uÛ²O–›�ϲAgÞ=iÕù¥†§ÓÆ¥„ø®ûa}©q„.
…Ù‚—o�°iï…Úm°²–r̲˜Ø‡a”&:×uÿ‰äΗ'„àÜï�^´�x¹ µ&à;b"æOÀ¾ÒL:à‹tºJÜë(,w+9ÄNåõ€ÕL0ø�Zÿhü ;
4ä Ô½{(ë· ïôL„Ó§È8p±jüáa1ÊÏeŒöµ—š¯yÎîÕ‘ê±€xv×h–²z.yÆk×÷µxÓžýUyZ6‡û¨Š»!~æ=ðÈÕ³(ᜱEYËÓð:Gî¼r^ø¨èé(dZRÜÚõ�seÂõ åˆ+êŸe΄h–‡´ ¶FesL¡˜ÓõÐ:õΜ
ŽW©ïèˆ
³á‹vÏUo¢i€Î6p¬rY!Ù³
ìnüi¤û€·u� õk)TT„ëþ Ü#ŠVO´‘8…/:õ;Ùgš5òZAj >´E�|_È*Aâ¿–+Å RBšåtKv€}­¢ÃÇb׎ø™p½g<�Yߥ[ü2ùùzò£ÝÁ± €ØƒÇ)îªÈd¾XE p®$ÏDè7
r¨k?‡š,Œô(£Ér†K$»—Ë#tˆ¿W4Ñ:êˆYÚU¼èØþ5Š \„ïÆm$üªý̨煚ËùK†3f�dwàl“
Ú²à�ïL š~¶à%žy²d7x…�Já�Ì!‡/R+ÿžKBásR5¤3Þk6»E»­¼õÓßUä÷ÓÎŒþñ;\ÏA•ý(EˆÂË ØÏ�ƒ„ľm­ÆŸŠ{{G+ºs”HÔWâòó*Ê¡:…ö/™JÚæš(ü�±°�ÎÄÑÊ$0œ8*=×Q™£oí]ü0ÿ T¨�,›¿¬;„BõÜÛÓ6Ýài‡h¤"÷Çìt±:<éóq6ÿ&|-œ›€/åÆÎê»@eÈ5Û˜u)›ú‘Ñóe»A#–<ÍÖÕøjx¾»H¬\65‘6t¤ ãNÁUÜð*˜y6Ü«ªûɉ5¦­—¥"Ðõédx
ÖÁX•2;ãö�õ=û²‡uþÉøe¸1…k„/Í�ŽýTOK^fuoIý&<¾>ýUßÔ”õq~;èézÇ=st1ÃçÉAx;Óå²]Í䚛ż–ó -ìMÇ÷{-ŠGèÁ�`û—x9¬SuãéüŸKÈÞî—‹J�þosšDÝ\Ýþ6ä�­TÝŒ]ÜþgÒ‡¶î¦ÿ@#x%J¿3˜ZÖ°‚ª n>th=V¢Q*OqT=£„Xj9êY*ƒõîûFZ/# ÎO~÷ƒñ}éǼG­Y0çÃ2¢gF¯ëÌT�é×Û¬##p÷OBóWgM F ²nFc
Ú³­Áîhpºci$3ö¤Öþà—ß^bØ“V
RY²-ÊŠ¹�‘êä“”gÜkýpØèÓ«Òˆä«Öå“Ò›‹®f"Š
ˆŸjfÁú"_ÁÈyDŽ8†yÚˆ¶cŠ£ieÉ>‡ì;=Cí ~yáµ—íZŸž–�µÆ�;‚:G<Oçâ[ ©ÐS~qf£Y[ƒ�Ô¡*uºZx‡Îæ Ñ~øy ”½²J‚§�~ZJ±e:zÆš'Ëí®\#“¤y‰ ƒ¨‹øtθC/@K(¸J_�^$�
> ƒµ3szDŽ}X
ËIk*¶¶nDFíÓ  ÄK<MÞ€�Œ8ý49µÃN–C�±9¯½ÛÉÓhǨ¸5Àì]“âP(í8]$Ûlc_“Ù+Y›�V“›Æ×·à6óA÷®4c¸±RpW›¼ „ÔU÷ÉÁ.FÂ[²nŽ?´˜‘iä>UËר'Ù
"ª¥ö‚lsÓ‹ç–©�ø…°€â�nµ–t'ö36$Q8åÝFVÃ�Òç G|«RüäpŒßr¶�jl?pî÷jMäµW¤(°üéÁǦ¯4´$ŒÀ੸Y(Û\èj‹}ì,¸á-øìû½Ë`Æ`œ€Õ[v€¦wØSíê7P÷à
ËUµˆ…åTv. N)þRÅìFÝ™
†?æm5{•‚u²½=ï(?$dc02øì=Øspà¯?oÍg1Ù ´ÂG-ÓOê4nªTz>Û˜“´-JõÑêÚ#c�5$«Ã:m¥ø‚tªßõ‘4Š\u‰ëˆjQØj·N
�h¤úN‘œA‰�µ×:r%–žÔMíE½-tÕ´Ç{MS¹÷Ÿ¼¢uP«ù‹�wß�"ËÓe‘F?uÈ·j�-ª.ä^Õc'Äyl62��
xýªØ¢}w'ÐÄöm{#9T‚‹“ :sõfq�©ô–eÉHz
 ôr¿›(¶Õ¨‹X±—KÄ6mJž‘‘·˜éY*‰´HãØ¡rÅkÏý@WÏþ¬ ~ÿÚ£�¹lŽZ ›»ÂçÜa¸ŸÍŸBñÎ)àÕ-ÊÅ¡7„ý¡à�8™.H0]ªÉHBú–~}²?=ˆ)ø3Yò‹‡bu ˜9n¤Ðpüp!„sïÉ�âr$¤ \þž/“Ò8OåÇ«ÜGê4&‚BÙ(4j¾SNóíS­ Üöãôœ(!P”7¦ 0…a(ó‘Ð.ÙrÐÕ hôBäžhH{ÛË>„Š×¸&ªÃ�|#m¼‡»c‚C6‰ôã£¢ÒØ6³øã|·[äÊP}ß5Öµ·]\wöst”½ÉËì¾5ª£K¥·Þ=äÃÙ'toàËêiáÝdß�œBÚý>2¿ ÓÇOg�Ÿ0°0¨ÅÛTÈÝ—Îüe<òÆÁ`žAc^ÎÌÔ<«rG»ä5a�µ‡ü:x;Ú2©ÙbwA»[oˆÿ4‡R+md‹›¤X@@TÿÇOq/sS÷ÿñ�WЦ·ž:öùÆqŽÅ‡ÄVjj:rû…iñÉíTRiUœ±e»…Ì•ñ6íµ«�õu(**šB<41ñš6ásˆðÀBŒaÜÛ�ûPÇ»—i9ަM{øWY/=/=·¯þ£¾G®ˆ‚0F=(‡ô[ÈýºÁT¿r¶ÐŰ
ö´;FãÚÀ�êð½,‘ÐÛÃeðõ…Õ�À¹wé}͸È}�?̼úêýˆ'^DŒ3üɱßv%A_Óýã¯Y&!˜hw!ͽ¨ÃŽy)G¿¼È%‡#GC¾P…³c#sâ&¯TY>Ü€ò� c_ïCîðr>Ìžµ0‡Ö¹°ú“¾ü€ ¡ö¢€ý¨!ïR€zi&ßî[ˆ:C®/¾pŠêY¯©Ro­„»Ð…˜»èä»°¯?ÓŸ‰B!ïQ?Ùó¨Ëwpñ±o®qðÏññÖøy¶Ú|­¼œÊ-½Ìä„ËoYìëV–TPñ•'åŠ)8¨µì‹RS=¬Æ£k�Ìskg¬â$E¾O”NÇ8fO"»§ÏZg¶qgøl=Ýš
=è÷ˆv‘ò‡¢ðó‚-–2×diˆ(Òj�¤ç6 ŒÇlñL×éìmdJ-|Ó„±»AÑ#Ü,N¡ùãOi-bÓRNH¸úè(·8g5ðY?“Q U_²NEÄB«FQ>Åú—JP4™–ý¾nõf)µ �FC\¾b–ÃqË hj%“‹x ýž~Ó@ÓôæãçÿxÒ ”¬Ú�k¹’” š•Ž¸»ŠÅÊòŤ§nd@l‹ÿœn¸×ö€dOpRª@_ú�Ÿ¢·´ �›zÕ‹þ1vϽÎýbößµ”§Àêæî´ÛX*cWÝM”båe%1[’£â*ðÎ)"*ÑÅ/ìA©nN`6…½7Xƒ>�“ú¸wÙ]ji§_ÀbOšÚçó‰R(až^8äe‡¨
”·N-Éâ.³#k�aT÷ÖR_˜;ͳ×AË Ò%J0A¾ØPS@�},M/šy  øU®x–Љô+¥›NmnáSDe¥n3µK6‹‘¿“-i‰–ž$ƒ®sÕ ãz±ôƒý^ŠœÜy®,U¬¸4'ÁIŒÆŠ+W¼åPüˆ°H"*s Úi­[õ±#ñ®#Á¨{•ƒÐ~«Óä¹Ò!�›)?"Ù52[·º¸½Wr’ìôãº#*±¹ª¼<°Â0Áx5¢ Æ“šjó2¼Ú»t9Oªl¼mÏŽÉf5ZõO øÓ*Ãzõ÷ŸÌnêÚüŽÀ]âM½FÿѪô!ÆŠN-ù±�:3©òWö€A}'/®¤FUŸÚzôæNŽPÌ�°—¹t§ÅL7U.‡x9l
­ÝÙkËiº1¼´›³QGu¾˜Ýˆ�Ý&Lm~�Csš‘zÙᯆȴ½„=tj,šï@Aí-Õ:}Í{J¾¢÷véá<q}‚Ñx ùÊ×(§OuŽËî¬yé˜4+6Ö’ÇØè,u>Z»‹”ˆsª¢^œo†®?c›N`T9¾ÉqÙÅ}Ø®8XÆÛcRïzIú3G’áíºúŸÑS_ß ‘?
ùʼgÐú�Ú"O[nб>ßßüœu›#£ë§NkåH°Óž-§Ž˜hµÕÑJB2¶•�ÒUÊàò?0ÜÎM7_ϳÜÚxª˜¢_I‡ò(§¨ð±"J8jÞ½:/FÞ‚FÅ�ãÇž2ÄÔçÒ¸°wHp¶²`bèõ\éíal+¼¾g‚Zä¯÷¤ùkÂ^ÈÇïÚ 8ž¨MÑKáI— d.à|¹’<ä“&lküáU­‡O5'Àz\ÐÛ`¾'{ž.:L°†ëh€KêÀÔKT`îЙ>#+id“iúTjh(©dÑݰŒ»:æðlYü:ú•³rWLM²!Ц³½¯´‚)}’ˆ|•n^Š�åo ð«s}®<—ü¢ŽÅU7èL;ô¯¬³¶R4h¹³'{¼fŸvTâ¨vz/#·±Ô sºËÓ8NåCªJ÷xÒÌEí*+)ô£;”B’ßæ»g."Avôx÷5ÞÓu…s7RÒ=–À
Ö�Cºx�¹¿Ù9X¬q>\G`"#F(Ü+É]ϧ5fO’½¬èzýZ=^+Rèö
4¦k‚;˜h·yŽRÞ,tpm›û²ÆþÝÑð^2¤ì8°a2k
^æ]â¡hc‘ŒÙšyîmqü«­ÿð,+ÃÃ*º¢÷˜cuªž‚&‹ƒÒš2`ÌÍÌ¢û\´Y=,@£Ú Û¼íQBÏ#¾›~sˆöýQ†$Æßjš®–¬½’Dp?G+çs±ÀË÷8^ìés¦*Ý7&Z'.åà1#êÒ±i¸sûœ¶*Ч^pÎ
OÀâV¦=Í�ž.0£C¡É uD07m¢rÌý1’Š{ª5Ã*Äê;™­ºfzŸae¬nDBÉ Ü7½Œ1Nâ„©1U`B‡öÈÿ7¸\�z.oÒzH?‹AS× U‰­A[�Àâá³ÙÔ[5;)íîÀk™ðÈ¥:œ°3ÃPGÓ—Ÿ§ÄY�º4!¡SFµæ�ÞÀÀq§t°µöGrO€lç�2צk++@/ À mâš×¶uZÑX·¥ä¶¥äµ56ñ�Á¨ÊVÍ–ÈrŽij]Ѷm\ÍD,0.š�ôÏ“8-}XÌ?¬}¹™Âß ðk�‚4 Ër;Æ].sá·p+ ¢RîÓÕfCÍ�· ÷¬‰qq y·ŸªJP–èú:7žµóÏmE·Ã¥©‹ ¨r$7q”Gò'ÁÑ4X‚8RŸúa»$—�x+<ã@kÙ*Ûù‚<yœðfÒmt,ü‚›8hÎH
5ØÙëV|‘”7»±3܃5Ï·F¿ñÇÐZ…JOŒ:f~h(¼xøÂ#­‰<iÛq•¸råhw`XNLaë¸k#À+{”ž…ר¸‹µÓôD²p‹Ï²¬ÁËìâÍX€ä BçÈÂkÛÁÙ AÛ{Tü¶»øä»IëŒÅÈA›GÞþª) 7WxF­<KglÈŸUPi©Ñ¶ó‡ÂL1:%V{Þ¼±Û¤Îm Wm® Iµp¡nH
…À€]Dzjj?¤sL2÷¤èÉ;ïB}]Z^
<Üš»KÝ�?ãêÁÉÜÙ\µe��à¿IîÞ˘ï벇í0ƒø9ÿ€½î éë…Bk‹ñÖ)ªT’áiaÀ ISí_ÖP6_WuÝÇäXªr<'oñâ®mÔ÷œêÌì½ÞúnüimÞ_Qó= �r»×Y9—a»õÿæ�…ÛÐë•fv¿qkßÖ9'J:QB6
º…g’ã}Cç"ã9øÓl—}èA'õν$Ù%�± É@üÝ׃ŸTÅdÖ xõÁ.ÞbWJÉ�ˆìû“ó€§~�~X¨XÜø–«d.ì’ŸcÌnÞ£Z|A¾¶¸&YíBʆžâ\B1?6•¬‰ÓEÃd²{=Ŷ‚¥K¹^k�Ãîqù#6¿{‡sÑ̼†µêFL<ä­Ç^B{®-³Q¨+(YK^›¸;ƒ`ëÿaì£$ ¶máêª.Û¶m«Ë¶ÙeÛveÙ¶mÛî²m; ]êÂëóî}ß;çÜ÷ÝqÄ™¹cÄØ9ö\s®½bÆ`ÔÅÔõVßP°±ñLêh6}L-=‹7ªl,-µášøå
ž—ÈÍï%΃–6ä¸×« —º2P¼›'¢�øÅí½ u‹"àî§à¿ãœâªÆ¿_…ÿcšÿnãöÒãä
þ³GÒm ýR~cÑJ� ºx( v)~& ¦¡I …()ß,ж;ãx®¾u­t�jT¶±(Ù�ÄÅ/€–ÍE¹)w…F)ïîu;}ÞÃûjîîʳM/ü³qúºÛó£Çó^AàX²CÓºÏ€Ž déèÖe¨SJ£ƒ£èhPsŽU}xÄlõ¨�\:´>¿Üy�Û+*Q4üŠ{zÔErîOÃì.|ëSAè–»÷éÒÝ!Ns¯lG¼UÚ�ßÞúA{ÕE{ä=Wi†"–kš`•H;¶Âi^â +ËGÂÔŠ™‰û(Žïãu žŒÅÅ•‘;üU¸Ñ GŒiÆÆT}ðòï¤ø
öT`jŒXsUï°}Vâf¥2gÿÜ�ƒÿLÎû™¦01Ä(#þ—,£OœUùùÈ
¬–лOãúm1ø÷��µ©úàî*õ{)#úê _
týŠÆ^""óÌaüj û�Ê7<ó[zªüíLJº¼:yž¯./¯Öi‘ÎxJóæ†˜ùPnZPæ_Æ19Xs›ÛÙóÇ”?¨âº{ŠêZšªŠø‡ÊÅÖww×çÓ²À§Ii¶pb$jlAa// ¿ûØž0•¤¸ŠŽî,­!“ΗF`+K±ŽA<ŠªÞèåÏâÄP€¯¸eD$%… c±÷“ }}¶$CÜ76…ÌWk$Ù~qŽþ $w
»—k-¹Œ@¾¯ra(êÍtýùQŒÌ>Ä[È\Vr�¦¾$)�È$WÅ/½5èÈŸÀöÒÀ£3+I‡cÇ:6úøRÏæ–#".†ÌêM6`Úñ½§,)•¹•‘”&Jh“
Û“ê¤Ýô�Otà Ðt®Ÿ;e(ƒÉýTRmAÇ–æÆÓýVqÅàí†1:•€\q%¦¯tÖˆ(¥q"Ì#���lŠÒ7
ëïÀ‘êâ=VÎl+*À—} ˜âÚTÄìM VÅc„£q”¿z:ê”P%×}ßÉÇ&¤?‰o°U?øÉã­0Fÿ¡*nxðb,«óš#…�©Ö¹€Îj@–È!~Ü�]å1(äp¦&…%ÅšŽU#u€õ–Þm—sw—| U‰/%f<ŽŒßÆbÁñdžžsI�Kî~jW€±°ÃIøºeÚáf2±v“ܪbÕ
k€ÇnT'vŸB½V� ¾oxÑE­–›ý3…·XŽÚˆ#†…ší¦Oˆ ß7r¿çAc5gŽûG[¾ÿü <P€ù¬Þg|¡M²:¾^H*Ú~kôíßâ|ú[I À—ÝÙÀcܨá¿Fý¿§zµ×©¬kFcÎÖoóaÇe¼1Y8;)=8f=°6msÈ5(´‰ë$IG£³ß}N†2ü¨�¼W«¶”ŠÂÅÎÓ—i‹A¦3¨4-ƒœv¥Ê2ÿUhÒ¥ˆ, ‡.,G]TaW
ÙÔ¯5lGeY'FI”7îHWˆÑ� �Ë ùÅÞ ùM© BºAY†M‰¼ò¼™û†öƒ?‰RÙ‘–ÇÌ¡GHŒnyXLùç®RfE„©QG+?gÍ\½�{43²pBz®lìbSA‘ÉQ%®Ñ)¾\ºqTÖ2¿eˆÕ*™u–y‰ål‚±øðÂ0Lƒ²4œ¥Q
&Ü&gõ¾î±–€6=ƒ™Ås&1.ùQaHiÕw5É‘0ê’…ªbëBñêùam%Úú¾-mÔÈÍŠd<N’ù"%c.´˜¼0ÿ&’ 6¥8k­\þ_°¤«f¥’œ›"‹ŽÇì2Ƹhóå®…«Jñ¶š¨i{bÕiχ<ûÝ#¢Êöñ×Ĭ
Ocöá8�²œ1™�o¯l;‹ËÏN³wü‹®.±�K‡,ŒËI5 KéÈm ÅÚ€ºlèXq ehýjvOSÎ]¬õ{˜«
ãÞ�Xp-·ycZæê«ZMþí†{Hð‘ãïµ™EヿÚKÌÃÊ“—iªôó0ÓFk{�TB¦ž˜�μ]*5nÞòH­ç5Ãqˆ“ž‹]YÇ
tM×Óç^¯
@1Ìcê=NJã:uæm>s5?�£5õ9â°îÆQ•�žÙîÎPúÓƒ‡.ÞIpx:ç®[
EY1ô©)XÀ«§©ysîž­ KUSýRýÓ…“Éʨ‡lZ‘4ÉDð´ëLÑ*“¯ ræO0Û¤ëᆄ-¤jØëÒ‡L-~_Ȥh=«„ÓÅ«Èf<Áñ¶4ÖÄ»õÔ1דä÷ÊY÷Q y½Œ
NVN^ú6ëÉÇâ½­rº¤.Dùñåõ™ \¹tÊo.¦,©2ÔÖ�ñrÃ>ÉèCj~qú
wœËÔ·`Qb¬Eì1Z¾ ÇñàQÚø(~‹k^Êxö‹�Ë;åú·bî¹wÛ§ÑNË®¹§ÊÚw²BÓaÀWÏYõÞÁ`BR䈌FS¶©œ¢&°„͇{+Þà¡\Îí/¾íÑt›ßªÂݬøN×ïL¯DEC[_ @÷¯m·Œø
ÇÑ‚ƒuC°Öo@âðopN¢½™]àT~TÖuNþLÖ??
ª}©©C|Vzb㙎ÚáÑØdðá�h[€iìyÕfƒàK¼è„@"ÄŒ‘ÐÞ>(°�8”
õYQö·h0
ŵØ·EˆàÞ ‰=Bm,ª ü{ð¥¶ÈÅ9³~r]š�`*RSO¡ú 0o8 PÍhò……bÐ4!ò‰TQ‹š‰âjñ”ËôŸù}–(BZÊÍ šlQÚKùL¡¦"…Ôt§8šÌ)¨Pr†ËŠs‚�˨í0ìG-1-¬©·â—8<^ô¶5%CJ¡t¤ #<W¬O‹¶Æü=MÈeõÐmF¬v°úA5\Á´wXÚ¶·1¼$;J¼>q÷ÜÜÒqûÄ¢¯ä"÷D„©Eš’ÜχÃá-„cÌ®?þ»Dbn] PÓG*üмŽ»ùT’6Ö¥Ëïò,$e6Ü Ûï'U3ð.!ÝÀ¶ÔÞlákE‘|;ÐßIùÁUºŠÆ£Ä%ªpà<g‰ø­J2xêí ÒýŸ<f¸%¿0i�,œM‘µó¯î”}<M÷UkO°ã'pQê˜u¿Ô¹b\ß­aØ -uYw\u6­©™®Ýý¾iìJ«Mòº­í°q”:Z⤕4XÎúR�gžŒBë:Ʋhƒê,¬y!V’39”Ü"Ûàj¯ÍñF\£z¬pkd¬@뺮¤ªÉïêÞX5±èB@]‹�¿eðËVyú#šukLÄoGžÆ÷fK=èòÅ9ôùÐwu
L#aÝ:!6,v�ߥm|yðÈݘ\ÝÝØ•“ôbgØÜÜë²F×H™W®�•4×1<Ã:ƒz�½¯šzºÏøOÇ}É[ç&lŸës&v§o·ŸêŒg!ÞPßi
OÈ龩ɧȎà”:“úâ–¦Õ,µ1Ùº³>3i•ÄÀ'ÏIÊØ—]7J·€{ïÓBû"'i"5¥x4à‘Ý8\1|¬!QIïn—»$¦d}XâÅ ä‰ÞÊå\5S‡–È~eÀiþÄ�ØÌaxžfx^ ~L°„&—Í䌳›:P¾pBî¶B¹,ù÷7dë3Èù ÍÿÿæLÿQzþ\Ïr4¬Ýq—Ñ·Wq´"ù¤ð¾}S
ûÎDD»&
M&/ŒÊ ÄL,0*§3º@Çš«$AJY€˜ß=H:Z’îNˆd!ƒ«]ÍU çVS»ìw%áîŸoJc2Ùx@ñ[[ày‡õ4·é–û�Àãì—�A¿ø»/v§£æ°»¨�Æð³(Ñ`x¤1²‰q8 f ¶œ1‹‡¢×+ÕhI‹(+ñA8”ΰ \‘C¡ƒ©büÀsp¸+8.Ñ¢tÃmlx¯ŽÐj8Äñ%ˆqç€þ6�å4fä¡{}A•}@}ž‹t×<åO!Þ<+ÔýNIê¡_àû«ž×–Óz­H}_~’]Ý„"ššÔ¶Ãû™º9Bn†æ
,µÌAËöH˘|×),—Ÿs‚ùã1Ð78»Yzª±ö!?…ѰFíbªË˜7ã->ñ(Á_¤ÈÔó(9÷´šåäWÈ<lŸï²|p°T&&øÞO™GP˜t¢î¿Eãf§xf�a:Gý°�Úæ˜lxLJ‰£LcÑM1+ÚÐfôRŠRrÇW�{ÛÆkêe1æ>Q´tšz|Â5Vóÿå4¤ÃÖHɬVþó–Èd‹EÁ¾J×�>£Û&nN§êÝXÕÐËìßȤñ¡(¹eäJ£K€ÅòÇÍk޳fõAjˆ×È+ðÕiŒÍyäÛs¹q—¸¼P JÆ-ËI²e£èŠþ)ÅP Ƭ«oè2¬†G·¢Îq'€zCx‡˜Ê�p2|š9ªµµVÚï7‹© År½>Å®ïhþrfÂÕq|ÙfâAvLá™U´XkͰíÈtÚà΋½�ßh寭±UÇÄð9ý³}Òy¯ŒÇ€éj3 Ž�[¯$Q®ãP+·V}ȱU[„È8¯áK…ÏhÜ6˜²®Öx•}~þ­?ÛýËëw»„‹ìd;bݹ¾ý™‡Ê°N¡7î-Uˆ7 àôò¥¤Ü?ô'«v�‘K§<ßE�»kw˜
ÏÎ$ò»úØ-Пð‘ç3|Ù§øPáÅù;áe:² éÕ©!“ÁF)£¼$.ÅÒïØÅmì)qõ1J.Ì�Ÿ.ïè§`3"êD­dý<»%ûe/²c§/Âc»ÃÇt�ÆÔIr1쪚M&ÈÐN~¿ð,Ñj{ð‚¦½J÷³ÀŽrSK!Åé{-ìCÇÒNåüëˆëAD¹X(¦Å7fÍ6÷ý.ä9¸Ù1**»÷†Ëo!hB/“¦åkF˦i–¤5'á·¬ÐÁ²i#œO5ç[dz;V�cX¤YìQ|æœÀâiÝ{è
쇫i茩W"\rɇ«Õ ¶e;�Ÿ£AWjmïÊë2ºsØ*Æ]²èÓŽNu?vÜÎã!­qoAy
>ÃcNN:­“à5惢aj©¤$
¯Ý=I9�B4zÁ¾“_€m&Ï»‚^£@CÍEÉ@’Àúò;K㊓w4îñ–ž…|IÅ@·š�ÛOÙÚ»Ò¨­îoÛ�¹x®mÇïCâu„³"›ds7}P¿§:Òáµaëµ@?víS½4ÚôœpŽá`c‡‰ÊËëc'D,líÓºà
6ul=‡Ô´õ�RRŸuKŽÅÆO]¿|×F×7×7£0D×vÒµÁR:=!è+n°C”¡m!´i�s…¸R,r„¬/àHçÁy©t¸ £} KôÏwÃí ï¹ä„i½ìï�KÉ—tN‘ø“ß°èMéxÃÖ
X-`ް'i©~izâЭDL«3G3›—5dÂ�ÿÚ2mjwabýÄ!Ù ¶(¸Æ_L×\øBwþ ëœÔä'0w4]fòCT)IIÈWÃÖ€Üí#î¼i:ƒ*àuh5+˜a¬ÂÝ-j‡Öh óÂêW.®1ôX£ ˆ¸X·�ºF'@9û–l/ê�±—ýv[¦ÖÇvFw1úµ¢¥nZ�•ZNXäÁ‚ÀùPÇG2ÓÐûlïÇMï«Ñ&oæˆBsîö#+È©­®ä‰\Nî‘LÑ/„ëpNï�ÏF5™–º?Qâ«ù
ÌyátÛ§}¬â‚P…ÜE´vLëÄ}.?/OZ+Òˆ÷ÊáC-½:¬ËG½Ú–*p9óß1F3Ndt1Cɵ++)Ëíø©qU»íëYvû"�
OÕÚã~²{!`aùtåù=+)±nõ&ù=Cêé+¡çTL·|¼ Iª@N¶ Êׇ%K>0Ôzc6eA^œxqRúêþm²‘U|ó7u0®ÿÁ6d2Y{cCQKg'K#×ÿkp“¢¬#ƒ+„ö9c¶½ìRåØÒº¡Óìn}¹q ##„ò�¸9ƒÐ‡J6‘X¾s>I.êKz@X ØO¨ÆÇ
X(GòYËpþÃà¼6Ù‡éÒ=RÅ=eP…¨ ÷8…7ëÛý¨DñbË>§šÇ´{™G¢®Õ]‡òê·UI+¼7f/¿BâÀɸƧ߈ˆö·œ¿•Á÷G~½Û1 òžµõ$T­¼� é¹x¼“šŸ°yˆß[il%£cS¥„÷–«èƒ†@_A™(˜ûutXh�‚a[7óÔb…àœR²G$WRKTâiâ^Ùò‹ÅOg-áõ‹¼+WÙõáä&’oL‡›ògS�ÝÄ%Y6Ò:G;ˆ’?žØKúï!wÿ¸«Qm)Ñ�AήÆTµ¦_÷lÕyûw‚*?,øÐpD~T˜Ðm Ø£ ¾fŸ^ñâµû0Jè�*>âÊ?z…?š}޾DÀ  ËPšZ2]B¤#Š 553¦Ãx
މN5&-²k&04­F�ó™=¥Êþ$}¶QÒÜó2�•ôð¡\ë�è»Ú‹à×X§¹ÎÁ|GéýW$$KãbC�€È ‚€ÿ÷æ§ÿé’ á�fŽígÖÔÅÊ Ç��¢I_
osC“ؼDï¶É6@­§èØÈ»N·=ecn­jÛSùÛ®…@­X]'.µÕ†jî@M•O»F]çósé4kû
Y}Šñ5öùÏΡwÞ©÷édŠž?x¿Û»Š©qh=÷ü#ŽŽé!•ƒÚ‘£ìh! ø˜Zv?�@bÔ ©Ñl0
Á „©�ìè˜Û!*M&P
ñPÅèu†@éÛG�-OåÎÓGhóŽ|ž§ðz ÍGkDØ]Gó’9ýâ²3+Úd_zGŸ­Z¯"ÛK��’¨“«
ÄßUòƒïjÁÀ&^
"_¢ËLùHÇPˆ„¢2J
ãÌ\ǘñ ñïPc­é®Új²
»°‡öÏ^"ö»yíÓí(*ºRé ¿–ŽðUþÜ‘¹Ë+lÑ EJiò[eÄVeÝDçNã“HCW‰—Ž�>ÉáGŒ!\Yè4…¬H—Ák¯sÙ­Ÿ6×”5ŽöÖœž9léà%Î
{ªsMiž„ôHBÅ.Ç�ƒimË"ëñ—vÐë¶ØŽÖ㻹8Z�Nµ{“E‹Öj;¯Jwš‘½HÔ msƘË“ô1Y¯A>®WcƧ,5±væ ?$ÎÝΘ§�ÉýÆ»mÁ˜®.)Ãz†—šÌž,~hm`Ø�Æ)lJ¤¡–\C¡‡0ǹéT­F³ÅÁš4�g”ÕR(±*¸ݨ%6å²¥[·«^NÉ¿áÍes2šO¸C…žž´3.µ^+Í5åóäír±ã>Ä"–Å œM½ÛøÙÉ\òò
ÆO½&ÚÿZW×å´:UR>aÐn¹¯
iuâKòäLsÏðù™ï*è<챺êA>)KJtŒðpYcú‘®UC@Á5á£îs~LE^ã¶\” ðëQi€=$ ][G#/-CŸR³IW&9¬
v}Ä3RÓ�Ã&Zé)‘Š=Çxe±åßvÈ�`.4Tes7ÎŽÈqßÖõ—WùÎxX†ã0'¿ê@¨±ûür×h÷‘ņŸ=Çf´âŠ
�g/2Å@c3ZrÅÁ�:ÉKðýˆQeç.Î^–›ï¦;D‡O:ÃSÏ*¹$ò‚¢Z¼�û•ì¯z¨�šÂ÷
Ø›¾Ë¡¿ëŠ2öfü‰Þ‹Ì™í—Íc묒WSñkQÔ†Œ;al`º–õH7üa¯ø9šÇþn?þRèÛ—ƒ÷»Äù$F¹Øò¯þÞ©ž™ÒoC#�Iƒ²îô&‡è’R„Óp3ÐÛ°ˆ}æ²Q”3ÿ¼©Æ~_¥èàôDuNwHoHƒ^ÆdXÑ„SEgßIÀÛÊX6ó “ÒYi gijÐ9˜‡†Ö)r¥1î±^RjÛQ'¨é¼òÔ½T—Çîß°Ÿ<ú¤bº«
T­Ÿ®ÏU¾Žy“.ÛÞPÏd¥Ù{–ŒƒcÞȘڌÑÖ„¥Â'K‡X7´ªR«[éÊ<nhãF¬Ôi¥ÌI¿uOÈjQk£pT;(©Ìm\ÔÕ§3sªŒ~xbÜÃ0l^ì)ᮌWS“€¾¬dQÕáX]BnÂØÔÇGEŒs±¢r6èmoæÉh�|Ø�ÖI^x¿ˆF­Ò�¹¸èÉ›_�.’–ýâf.Rç‡1ø<=Í…CRIb°¯P'ÈY½n—¬Î`³’ä¿ºÆ toj%Ø‚3ŸŸi?Êšj6" €èµ£R0£+ïÑÒ��6šiÄt!0tÏ!Å#ø©…u±Íº5þ|èÖ»½ÂaÀ ÁMpÐ5¦ÃÝWcÕ ixç»ÏE'À¬/xñûÛÍz”¯Í—sÇ꬟ï3JñMnÐõ9WLÄ}Wë…&û®z{À
,ȆÓñÙ,¤<Æb G¼¿=‰v[Œ7|Ÿá¶¦sç�Ñ“9p7 ‡ëd¬mëÔhuÈw4iÑ
BNLOì‚`5âMêþ-ÇÇɾdµüT‰ö"…Oºu‹ÞFÞ¹mmwI§¿´9x›¿GF³gAqú·ÓÖi†5ce2â\ˆÔÕ³.Û~Oz¡Y¶± 9$W®¾ÅGµÞtJÕBÖu¾#“Ç7¹X ù9ëI”AÔƒoÖbâ«¿�ýÛÙI0ç0î0ëí˜æk^ YÊCÜ*~ˆRø™�?“QÌ+÷(çÞø8öT‹à6ò!mtÊY8^š»%­ÖއÂgw*×~Ƚ@9ð-Ÿ9Tœ®¥Þð…9šü‡GÿÜ'õ6Œzz”v8r*¢
wìm_p—œQ¹`íW­j‰fs�%ùûP�O½Ç7#B"ÜaYÖwCt7#R·Ô[
é®–ñy¤܄ݡ��ØïžI¨Ï ð/Dë/P*¯T†\Rf|bv|"lyä ŒŠ‡|¦uÊn¡�«TÞÁ�mÐz‰¸* –™Cü{tâìóBœ,ãmYžÈw�ì.DÖH¤ã0 À/µoêØ'U¦éu©Oûô"±ñøЄ&Õ~¹×rS$½™ß}ö’5é$óëW3$¿<Ú³T{)·†ÜH¶&ÝæoPõˆ¶;
<~¸8½¤š›Ú(°)V矇Q%‰r¡ÄƒîBð¡K8s-žˆmN�±§¿*n�x3sw=²B ô|;^®°ˆ)cW‡Ä¢‘¥‘�)x{x*
ü®‹;#6† '=QÔµöRÁšè=ª/ÐfvÑrñôŒÜê4}BŒn.Yaz騸¹[�Lô·
¡þå¯ã‡¡s? þò ¼ÿ4ŽÿNAÿŸœ‚þS ‡¿“Ááÿó–û«f¥å¨[å¥e'¤–åf&Žhh¦i'¦äZÀÿÉàæïð“¡S¥î‡�ùÛ°þ6#WKz'ScSK—“}²a�íÇ~޳e»Á+¶æ–®î#øÍ±0u õÒi[pî� ¾é¾FEbµŽ"Jtó^ñ¼üfjòöhØŸb¶?²N£Ü$(ß.ñ™¹gðî²û£òhí>¶ÅÇÛÉ,oKj8¯¨Ë¡kQßÏU¥ÿ öýëÍþ³ï>â¿r,cËñÜÿG÷øñÇT¾¿ýUÀA@˜ÿkw!£f»ˆØÛÚÚ™ÈZÚ™ŠØÛ¹™þßíU={!4~0Ø(ÚÖpÛšÝ9Äã"—M� aI¨y áJä…á1SìU[ƒ48‘"ÿÁÝBF¶ùa½8–­xÅÔæGÃÓnïÛç“�mAÿO‡pR0諳5v¤�Øoø³)ÏÂžÜøžøàøb�‘ߺZ¦á'÷epÚÛ·€eÀå]’aݴؤ•;´§ÏæE®ö Úèò‰Ù›€‚%`¨1Ïà…K‡¥»^Ó
�¤ázãͳWꪒ‰ë.ï©°“’ÙZûÔï–¯¼Û3
Ñõ*]rŽmR¸±ŽÑ W» ½Iç©6´BÍIÖµ®'ì6SnB€d9ÞBckxP­Ô‚5Ã2?ÝxÌ3=ó^�¡µ~ÿÔÀ.$3ZÏYr
v5uè%w`+•¥ “¾oƒçÏÎ^ι†1‡ªsž\ò° Ú+KŽÂ_�.„45‡õ‘VX�²å°â‹„0Y}nj„M¿m.K
öÛ¦\WSD¡ÿH¥sI `Gr¦#–º)×䢡“S¢Ë!¬WŽ
òYÂðÈïG<B"nΫ³o FSLݺ\ͯž‰DM¬"b4x-K�ÖZo´d?„Ïv‘‰e¦ Ø¥ºp´Ä9ÔÛAþÉ£¹[Ä@àÐ6SŒ}Ó‹¼Ú–‘̤+š©QÊ-ü#®NÚõ
›‡ž‹&Mjªì²¶uw»Ck"ä ]½èGZ®Šu*OCmŸ³Sßߥ R¨â–\5“ÍÅAyŠ5&˜9*XúBydÂ7Òôà �Û�6¢nÐöÏvUÿ€"ËOÓ¸Ò¿<ù/¥±ÿ€â?APÑÐÉù¯NüÏlhh´Ð?΀û²hцu;î ·™UDû.6€:ìVNo *õÛ��/ EE·ÓAàA�ÐlçòÃt) JD4äÌÆ®u϶&½~\nSZïÆzšÒÓ•ô6ñ¯
ÆÖ¸¼èß^N&6 )iH)¯¦C�^>8õLAþî®Ý4�â‹O|ž ,¥qX²_HZü%)uÁ
æc~¾ í�å�÷óÿ›>ÃçßÂNY¿üoØ=C€€ðýOþ«œ¥³³¥�¹‚Ã?ô°�“¹Š‹¡‹éfƒSô
ÐÆ¾f9:k.Mò‰zY0“{ˆŒÃ(‚™åÙ ‚4«3Ø·U0v»ïFq?ˆô% Iï÷ÂXrËè�qeFS)®¹f_sV›ÿ·£\~::ó‘Ú°Rxùr
Jzª¹õ´(3î;ÄȆ+¼Œ(óÓãZRžÃæü5|ZOðÓ¨m}ÖŽÃ3„!Ýõƪ‘ÊiÚRý-昃Lµ*G%j\áçŠØ©Ô¿"‰áž1†„[ Ø%7š©Qå Y¶÷jl®\—ùl'í7¶ MËÙá*#"�ÞÀ/à{špÅW
Ü·êÁWj_åŠI(Ð�«Ú·¹.جúK(5§½£3fêªFáÖÊÙMvИڪXúH±S-„l\¸<­~„�¯Ð;bÑ̳ì.Ëw¸#.â™FP$u
·˜;g)隃 =ôv¶ËŽèÅϦ£»S°(bóí4½Ÿbýfã£X¼†Í´ŸD†ˆ”ï9ê„F áa±ëÃqqfö»äÑBÕ¯ŸOᆕi¬SO;?²ÏnL²Æ\~EÆçv‘JN žJš¡Y#?côE‹Q])lñö4¶å[À±†¥¦|081716ɵ€%±ÅýH�Ï>åàŸbÀ8ž Ŭ;–ÁmA#"—”yQ/·|Âw…DMñUËhð¹�Ê#XWÑ^v˜#e›*øØ V®KG БHl¢Œ¯@|°Ð
žä[Ûv†k\‡ Jò”b¤ L&‚{èQòt§èVAÎc,û‡1x‹íhù|ü?”bg?ÛRn®`�®ªÂ}DÓ@å I¶ˆ'ëwëÁê?ZMô9ÕÖ¶ê'õK\À“ôÅ´fY%ØÁ°E-¸È-�_Qi
¿ßcªŠ-°>ŠÒ<!þktW˱üÃë8øïÂÃÿ?‰€ÿ€¾Š‹Óß0ø{ÕÁÐéÿž€’£:«€*„öiÖijh[p_dФ] hBM$)^Ý€Œ
±Sz]
§å6q“úR×?‘é}A1ÚäŸ|7íV#lmÅ岓õÜëy»i¿ó86˸ ‚v7Õ�t�e5ß�o< oIçIUË´Q‹ŒUÒŸ�d§æ Ìý²Û6ª�óZæ«ÕÞÁUj¡fÑv´@ÊUýCU¶`.y›ó}Áõ L�'¦ÑÛ‡„¹�@ÄhÕ‘®Îv·
ªM˱°Ýn�ʤ—$€-«ÍìÁȵ÷ìØI‘†ó¢ßRZìð9–̆YÄ�²!•ÙNxÕã9,GFúbæ'é#¿‹¬ÂB�í|ìTëZ7kð7Z UðâÜ=Ojx‹r§—¬b!¥^þyIì ÙúÁ<™! ©D4þf¬œþ±qBHÞÖºVª<Ú»ùhµ[aǾ½l'…/MhªÐPk¼ïù3Öt_§+Öž»î¨b™Ÿ`Ñ©ò°è;E¼™¤Þét½ã�e§r5=Æ�c ÁSt&Ö¦΀á ÀÇì-g€…_8Xüƒ_ ^Z¦Ëp#ÃÄRégû÷/Y„1¨0šqÉ„< 0ÜCEg±{Ñ0AbqGƒ2‡Àô§o�OÈÚ6Þw·Û�©üÁÌ9¤3:ëÎǹĵ-½ÂÞ“ ÈŒH^ùË–>yŸ"ýÌScñLJéǨãRh¯hêždÍ+v8ÈÊ;d¥Â‰¼í"”NUã{ ó“$aÞG–ø$¹1á}ŲÑ6N@ü7’¦µ‹×߬¶eZ‰TòaÓ‰ÉYêLììJûr�|‰I¿SY·!\`F+ bï™ùîšÒam ŒMXÑ…¿ñE-m|SˆÿW¬Ÿ‘ÂßK|‘ý’¬Âúß™ÝÕÖÔÎEÌÃØÔáŸRŸ ÓÒ`Ìh¡
o¬E-­Ú¶´ƒ7Íj�«)AáALíõ%\pJ2DYX/¬;hÚ�ß|¨˜¥dÐ郴¶Žr·þl£ÞÞ½AìÁM£À¬±nŠm‹÷sŸ•ñ½ø+V`*!{}¨:"»Å¾‡Êp›}W˃uË!-…pA³,9™ ©lŸ85"Άì
§Ñ<
‹�!?…{§±ÄV`ᎇÂ4¥G<^p R§Êì�ÒIYXTôé"5§yü)…£�Èx]q`Î×*”ú]‚þ½¤wJµ¿¶ãnómr­â[²Rˆ±phþCœò•ßtߤè/ãÖvQXÏX³ãSßñõr~»ä.v-ÞÈ
é_}DÆ’Wq¸#¨ÿ®`®ZxË,á¢2Öc…«b1ß>Ãöì麞¹CëÈ«çßn¶7„ljŸÊšªˆ„·v\t[ø7¾!ˆiñ5 †ú?œ�dììÝíþcú�_þiÞÖ´ö@;F÷ë3IÒ¢„‚ª—eÆ›8#~‹šk&.,üÀ•�nÞ0t—…àdÝÌXÿ~5"­s½­?Ç¡îݵá(�"ܽ¤__ø{¥PáëÉó�Ï÷m7¯†ßÜÌ­)k»>BðÏiÖCÎíV¯óŸ™›‘¯\ÿo?xwRÀÝkóɉ‹P�Qd±‰5£¥îï=õmôñôuK¤°�…‘±W÷ÊáÀÝ™C™z5÷'e]Údú7½É|ÔF½|ø£½Mm†|Yzíï'ÚL|pw
owü£[?o!»ßã^^¸‰±’�ÆØ®õƒ/Ðþ”žžTÑy÷φØq{æ²`ÞAŸe^È«<UëȲ‘«‹­5O¬qOÂC’BÖÓB lë,/Ü„�ñ¶‘-®›®V�u¢(W4-®FGÙXwÌÓßü¦Ý\º(²üÃ~tÔ í]LÖ¿ñ‰ê!gI`Ü©7aE”L9²k¤9D¶û¢B`Ï)o­Ðyq¸êÊ¿¤¦ø†µ8Ö°ãD¬ 9žÛŒ0YÙý¢`‡�uûbÛ ñ|cäxS¾¿Ô¬÷yÒ .Û³Èß&³'ìëxo*^Ð~Åëå9cƒ…õ[Óñ~]v!‡·x²YzPô­:=kÉ&øùËðЦ{’¥\z¯÷ü–þVÀ`õ‘Î:K×uÂRº]'h×ÅÃÐrý–*´5¶g‚�#hÕÚsæõÓ¥„®2ýœzŸ
~•¸‹{Üɔ޾ö®C•;ö�,…Ë“tFZ#(¹xLÿFu÷•««Ž3ýL5Ì$þòµ¯6�có¹­~㱘À8tì�½Ý/Äs­ìÎm™ýDRÛîæ‡…�I }Ïõ_¾ÐFT`ê¿bÏ9±²O.ï-´¹,`žò5àÛ
(¿¯L…5n¶¶m™¿œ­Â¸H ¨Ûh8à»Q­EÄQŸ · ÁA³1Ø©ð$¹Fœ ½´}›†æÑøP¯YYæqµÚZÀ_nÖ]^¾YR›V]ÄÞþp8|Æç©oÜݓ⸥W8ÄÌÙ.­Œ#ß.Âæpv^*¶�Áuä¯Ý1\·²A^¦G‘§å
Þ¥iç¤õÀ�™1’Lîo-dصæB0MÉãv9Î÷WEnš^$kÙ}#ФpC7ÁÌË8{ˆ>Àè÷GÁø�
œmdI·C,[‰wÉŸµöš¼2î?£|æïÅ] î ÇÞ~Ü+Yº>f=ÄĺiêýˆGj“Â/9~¯�uV‡¦­‚s/cÇâ¬&µ�æ
/›‘x�ÕIz¨ èн۾«
î~_2J©ÜCÙAn{²
Œ%o�Å+]w˜ž¼•›´$z,Ådô
ì<èa±`[Ú°¤/³ÁZ,_´gŠã_éhº>Ú {xUÂôØÓñd‘Þ”—U¥é§maæ´ùzxkú9PüâÛ!ì žqg
©p朘¯¦¨C}eýä\¤_wú•`´Íš²îÙ™O3Vëü2+)Ø 0Nû%÷úø8°–çe�­ ±ŒŸÍÇ1àQüýª½±Ž˜ç[Ýl,±FXÑÍ o€÷7cŠòs�ô­zäh¤G‹c&óŒ:Ó‘òà–DÖŽ¹­¯ˆŸ²ãøÁÝë~i¤M‡€…�ÉG¼Y–¾Þ ‹¹QRijzìó9y Ö�Õ¶ËqÖíXp[ªìE‰ŸóÀ€C‚Y§ñ·�BtnB·—&-•~4'ÝDwh‚…qlÎ
un‡‘Ú™»¯€™�Œ`" ¦QÖ†ºžl‰…
N¨¿D·…'Q�b"ªA•Ðç’�Á? 6û¾–7ù¯·^A2õ]�‰aèqM!æ˜<¯d×¢Ô†¥‡hÒ…F%óÜ!sEŽÐ{‹E´b‹´Áù‹94uÑ*hÚ¼;²ÑË”x‹a¾oZ|‘4wX‘IíÒÙÂ5x1Ð�Èr”¿4žŒ÷„lÜ# ŽK†[ÃøÂkI/ŸU°qÉãzyb"Ãê-~9˜˜žyVã0Ä䆲9 hLåß�ŒZVËJÜÇA3Øg�d¢À%ä·”±¶­� )¡($ý.kÐÊJóÀè9¨vví}š‚»³„‹·…tp68DÒR8ä°’’ñÀQK*7ómÒ¤dŠHqÖœšÙvàÑøMÓÛkPù 8âœË3‚‰VŽÊG!ÍÃW’oñ"�;5NmÞíA%˜½ßGn[ì€'%�az5.µdªuæ]Ó™¿ªüÄãxÓæüýjCX8ïŠCø0*_lïgʪ�ÛO·�ê�ev‡¬®#Ö¿dVgý†›U¦ä|ñáÿjdŘœŸè¼ÆÆ#=ö&9ÄVHg‹“@Ah&T*ÔMÿÙëŠa«ÃQŒÞüü ^{¸ôç‹L1qÐ
"V“T¿´ºG²Á½-j•‰XÌñ‚b$ËC³;4éÀV%
˜ëù…|«L÷yÃݵåŸíä–ÞXˆöl€j7"”øA¾Ïªø
¦Kxîw™ÇzÑÚ‚P‚®” ‡j�k$C0jn¨èàQÕãs4J'¼k¾¹;gѪØCZnæk*Â…RÏè8„iÂÅ,]BÊö™.ȵ¸[÷±jC£ãŸQ‰?q¯°L}¡íÊi†4vë¿,ycÂ÷_ÿ¦Òñ¬1¦ÿr¶Í¿*�ó®Qþ]�¤¨Ù*,*¢ùÙ­Î+ñ`Ù«ÁEápíMˆà�³�00™2ˆïŒ±§éε܆óö÷£~öK½\Å‘änr8×Kï‹xÏòŸrÏv<w7û×ú}@(öÇF³�˜<Þk ž�Ó�#5PCO¢èKk&$üAÓ—Ò<ºB‹Aã¢è³ºØb¥îÛ²�9½úB4˜^Àù¢-¸gÅ€m¿Vã§c—¯±Oo­âߊ”œù²ë¦vÌ×Ô'ìð¬cOÖ‚•[é¶©32//B4+×äõjx7
*ªØ¡7çªEN’NÚ;Y=“ŠÆ‰–ßñÁßâ»B‰€t£¤÷¦;ýLÈ·sAŒ z¸Ï8åx–”™VVêz5^±†ËQ�1D*‡; ú‘98~0û›ƒ®•s£ôàЪ/.
Z´hžË· &gµ8®2™|E)_ø-çØ¥oup¸wZdVVœ9™½ÆÀÖq·�¼Ó%–3
„J+¶úíŠPêf-®íÞ»
Ê
Õ>¾ëñ´0³Í€Î²V¿UwÛ ~–kž×8n„-z�ÈCw…Ë.¹Àᶣݭ!ß ND©¤#ΖFOï9ˆˆ­ü£ÃGWÕu'±m‹ÜÀË.Î>Ó¥4€A(XÈrV­ðj^cJ"f¤eæ´V%‰Ñ8°×¾‡�Ï÷Ñ�˜Z´
r­ªmYŸ- þþ-øñæ@Ú-”81$À�ï{Þ¥³÷œñÄæÚ©lbÇow°¼÷”� Ä×3nå+#°Å/½Þv¢|Á>‘+Qß1™©ær¾Äuâ1…)u<BÅ}$UïAKm=pçEû”�’EdØòl7]'„»%fu ÍSsY©Ê4ðj ,e‘¸J¤Cà^°B‡­›a g4]f¿å‹¥“
â­£Žÿy±œz¹¤#˜ãò”U¡nL^Çl&I"‰‘lTzªÐ9ûù¯rd´L¹ÿ7BìþòhÁÿI„¨ÙYÿ7,ºGmRù¯ŽççŸ 3dù…tN5�µ_@NRR¢†¦Úh°J¦rxfÈ”Mþ ü©+‰Gƒéðµ7º:ƒËÙYßÍŸƒ,Ls³ùœÝë{3}ôqÛv rä¨#wÃÃ4/T•Í”4x42�d9%êÈi
ç´~˜K0‚'òŽì>ÙÙE
w¶¹²m•6é•ah4⓽_Xr
“š¡ã&Mn‡©!«Sw ~±÷G|ƒ7‘bþ>«µÅád�k½�?¦ Ø/šPhˆÍ#J_äèƒà÷Ínàò1_Áœ”Oˆ¼Ä ®JY(½8ÉJeÐ?Bko™ÑS¹
6Xó¶J”S¸:m}Xðk?ΈýH˦Ov@IÏÝ5=ÛñÕ×wŠ‘–jãWæÌYϯ7V\Ö\lî$Æ{³äX¶)D.ìXæÛmF3ë’:ýÚita6âÄê^²Õ{ºíØ76óSËê§S–b‹k[œ\ÉŽÔ™»Í(ü¨0æF=ˆ¡ñš§œêŽ´#S}$ªJ‹4„oÈ? À(jazž]`ZFÛYZ$Jµ•0yÛçÀŒ4dÛ¶bd¡dĸµóføyªúô3Úòm¹�–Y”páM�_ ¦Ü<þ¼D~�,YèËÖðÑL;Ï ÛûÓ2¾¹�?¤ùŠ`pã…àŸ'>ž$+H–õ™åÏ÷P_qÎ?AOèeg²U( æ þä &ŸÒºÔ¯´J²á…æŽ í<2ú&Rû«-Þ$$ƒ½¯ÝV¿ÙöL¹â@2`ã[ãÆ³H÷n]
: züRp>*Iêôq¨ÌTôNˆŽúŒJǺ
0KpF‡¶M[Ú³ Trº'."Ñ\S^¯ëLDQS¿�dd€ÔÅ-&:�JçHÅÙäV^†$T™®PCJùqŠ%–c,ù‡'Jmô6:„9�>Jþ~-ÂÃJóÝxæ€MÍ3‚ÅÈÆÌ‘¿úýß(‰×„v"8Hü9 áߢG្9ê:΋êHŸÉX“
b(pÃûDƨ[ ÉÅŠPm?$Š¥DòÅÔ$TtµNþô|Àv?Ö— 6« O¹¼
‹˜¿Q¾‰løI¨›¬7Ê”&EÌä.çnÛ»÷ñßú½á¤ÝÙâñ2‘óÄrȺðîœõÙ…>–zL‘;€=@o
ÓßyÈŒnBohŒ…Äbg.*‚âÙˆ{H‹ =èFóÇ$¨vc�*ÉWÐeÄ¥F½QLªŽÎRµRçØý$zªNhbíŽJÙÌ5…Ç’õÙÔÊŒ¬QžVúð+ìà—éNJñt8£†(=…•®�L¥XsÎ!É 6�êqØ—œ2(²p\I±Y”æ~yê¸HJ¶U´æ¤[S5B'ª­²–¤Ã/Ízä¬IrBuZè¤,TßÐIsmAm4FuÖ`Àѧq>n•·4g†:n/Ql�Û¡Ì#o/å$¡(ŸƒD3K4-ƒ‹à¤' a·ÀdRa+È«¦b°ykw£ö×t[M•·2<å²XyZ¶œø}ÓU¬UkÄf? »¸ÌÅ4®®+ˆ“Vðuh훣‹ÃÀŸª]W_"Ö_ÊžPµ•D ¡j®SZ%±1R¢Ï{j'5¤Â'™é×¾pâs‘�·–“ø³h͢ʕáDù ˆKvSºìsY�ÛÒâ4b`¦#l?«êR”
á²àžÓTt^_Ç^ ‹²b9TÞÐZÉE ó¡¡%Ɉ­ÝOÖËc¨-4hÆÙ¦^úY>½¦Ø>d�ÙhÒH¤ ±ø5”&3L]etÚòЙï­0~¬Ü#²YhÆØ/ÔÖ7Açm�×
î�y
—· �¹9È�þC` ;ðç凰»±‚‰Où©ÏŠnÜ¥i+ïrá&Ì“a_�°"Lø
./êó‘ù§µð®!c‹Ì–Áþ©µ;¾ëO#Õ�íN·Ý(µ0§ýØTw]å©ê·ŸSš<Þ„¹]^±ü0?ÁQŒ:Ý-æ\{uÍ&êSópî½…»fË‘õ.ÂJ`"ÂVW•°–ƒò�ylh¡ðÕdȧ‹ --ùí”DX£‚ªÒC®Ïç¿c¹ÕÕÈI0`ðˆœãkŠR
‘’ò‹a'WR«»pܺ‚wߨƒL
ŠÚ­‹zå�¦wŸò²ŽÁv~Õ:ËÁ0¼¹iù�’£xÆß[ùIð’è2šæ
ÿâÙÜRi"{`]áj.Mh¢
—jwrÇG!0Â
m~ˆˆ˜b ‡«ýa9tUäÿù±³‘pèŒhäsSü…Ö9EpÒ˜¥ ˆ8æ+aÖî�‚£$ìÝf|ðeœdi8¤¿„ÃH0}o_�Ç#¿7NF¯U›v¬Ó ÎÉO³Rç¾ ™æùvÝ`ïE•üg+_�ò²D�’t©�”›d­ Å�„žâquŠî¾ Æ—í¨÷[uÚ§ºq5G½àü¹!×i¨{¦ Ê9Çp1a=|Ø*¿õG¾_.¬Á
TŠk{iâÍL¡ë%“›;Xiv"OpƒÕ¥ñ\ï°ZÿÙ™J«�Áxˆnõȹ¸iríÿ`ý¦×Ô&sš‚3Ê}�êf‚`–ã7ROLkOíKëH.ù€úèÚ0Ã�×z˜ÝœŸ›Q<6�anò‰Ö§Þ(·.¥ç‰CBŸ0#ø¯:Oè‡(·S]Ðì1pÆ•}·°JÖ}ùÖ³’tšý+’WmW·AZ7Nçh'ùÞ0<ÏÉ?qð¢Y0K]›uÏ%'~km„Ú/§NG‰G'[ÓøÀD™?²8÷?&2ÆQ‹…gì3púIÿxŒú€—1®sùj'�ƒÕ²áëuÜÕï8¹Pny›,8z¢KASv··Þ[¡™�oR­Ô–Ë×ö£0&-7€ªI¿®)ïŒèàšL¼ú¤,°kt~2þ묞m£;[ö
¤ô¿Ö»þwªá¿�¡e½Ô»ò7i5¹ÉÉ5g¸GS‹SÛ¡ý$#±ø�“À÷Â!¸7S7£$ÿ*ê+Vx{+Štçø† kéF0“Óuš;Éïþùþñ·‡ôÓǤþ|h¤4,1ÌpU¡º�ÍlRém цüü]¤—:¥û‘Wx÷A^4cÄlëX)ËÚòö°Øºw"Äpÿib\sÛ1j›ek®n«EY˜“$—,ˆjlZ3L¨Ü“Eˆ3Qˆôæ¹ãb] ¨óoÏ�O5ÕÒ‰8Üt2öÉÎc…Ú3…Lúoc1íà^EÀ~á†ÏÑ®'’#:}Q Ì¥
íLØ îÝ‘ZÊ”�$®Ò±
Y4°~°}ar=Ô¹ÂZͬú&£}÷Ã}¤¤Y†º÷o
Ú9]hE$tßâM� M_¯óš/’þÕ'
ëW’„!•I¹× ÃUZ¨±9‰'xˆ ³Ù“ÿÀ«T`ðz²‰ïW "Ú©ø÷—¨öfºâöpjCî‘ÂiL:gS:?á³è‘õ¾‘(ÒAI¾õ†ÔÔš²wx+Ä_¦g6†3¿(é�ü(D
Ÿþ-Õ¯ãa—žü— �!ÿ?—ôÿý�Mþ ÿÇÝiÝWýS|s|A´Am,v›Bm‘+Õ”@6çQuH!‡·Ií(å 
ƒjM¢ož<?¡#-S0ZRž™êËXÌM!˜Êùr7ƒkß
Ô@êåeÅ‘Yigfd=Ýá~æ=õ1ïXüü3&ö´£��
€c
DŠÆ8RJu¤,ïª."’ÏÙ® h™”Òhôà#=ÔÂΓÉGݼÓEÉ3Åž¥¼íE‹béMßk`$Ÿ‹M3ñá´Ãrôëþ{ˆ~ç§fÑM!ïÇQ·ß¨é§â#2zéØ�ð±7c8ËCæÌG†¯—žÀ~â%6äÚl}E®ÈÉÄs¥Õ¥h<§"ê"‘G³å÷Â^³6AÂK&ür­vfHRÌO‰mS)öÈ`†þñdKtȨTm*Ëàr_ ãr¥E(´³£;ŒJgAŽ]l42·Zks¤ÙÚ�zÉüKµ™ÊñÀhH0B| }¦Œö¤´¥†� ~[䲨�sQ ‚¹tÔYn+Ç@lÌÀ.Nêlj…:»ž]†ÿç‚øÛŒd¸l:¸œÇ,Ь2ê”ýúNNØëW¶†Œ¹ª ¦µ}ÓÈq6Eˆp’4±o]ÈÏ-žq«å]–²Û‹ XJü6ÍvôÐãÌÕº…$¯ãY
È6…ÏÅ/³˜§'"™ ÛB½n­’#×ÿÇ››ˆæèï¦Æ2æb£­Z´/O6?Q’eÔWFc‹+` ƒ“]XÔïâM5Ê¡nªÜ:¬dάxŠ+Ó`2%kª5bÏÕCµ¸Öó� ´..“��Ÿ­tå)Úü×ãÖ�óY+àËU‹ve D¸œ©Ö”]�®à¼†©ÒÝCm\==&eÍä5GÏæõ�!º{ar „P­Øxoð¢×v/Ètö?g€ŽÄZ5…“õÕæ)�Í%á!¾¢ÔÊ
ŠÇ&Ý"™›gŒ‹U(žÏ7Ç_þ!Uí"-fue–+ßóW‡«µZNZŒ;-€±/ƒ–àawÐz”çíÚZ{¡… ²€´ÝöˆT\!`(7Z_<vZ�Dš@%l
ôî`wS��g /¸`?"¹ÉÍ 'k+»:Ú;”`ê*ǰø�é»êÀ,вǑ+û¼âˆ53¡kÕC'¢¢_å”±1}j/9ý=Hc–B%Ø]L h/í=L¼.ˆZ–6äõƒ]Ýô]|€’¹l¯í_Âs;Ú  mYyºªHã„=.,§V!c'WÚ~”éZV¨«ÿ ö�Ø(Ãx{é�:zwXÚ;AÕô3%q6ºk‚]®RöP§{Kƒ*NféÍ/Î['M§·©xÈœ|æl±C&÷2Ñ œËÙÜV‘›Ùh[x\xkuò®Å?­ØÝž”sÁkà‹ÚªÌhs­
~LãoÓ…©“™Jš„>1Á6Uäö8­•Qgî߇‰ l3‹áº©ÎÖ0]¨¨¦T×=åéö=
˜ôi”d�V”þ¢ñøˆÐÁº¡@âÚõ³Ï7¢Õ0Žê| &{ˆ&þ5ÀÀdrÓ�ØNíŽ[Сµû#Ä(Ùè
âÈ•Y¾!Ôè"ñÃZ‘Lötµ^nP-»8>¨a“×£~Ñ /aGÒðþ_­}TÙ¶-îîîîîîN® îîÜ�à®ÁÝ5¸»»»„ààÓ¿ïûéæv÷íwûãŒÃÔž³¨ÚvÖ^{Nñ–œ 1‰H½Gš[>"íªò,'[§Ý±•³Vçô1Æ®}@
'æÜeë‚Eqü£ÎL;îŒ!� aÚ•UØô[^­þ0:d’¹<¶i€‹›ºá„�…“aâߟû“H·8"¬cï�]â�ðºúÓ+#·06$¢E» ‡ ÖÏÆòä·$¥Òp<b…<|Uüå¼›‰oÈÆìÃ¥ÛÒkì Ép©z^>•›Ã…CLñ.msœ¥Ý®@„ØîA¾lr÷Ý.�5Üʉ÷i=ûò-
}OŠ8sñxhO]pdË\;mmÎq,ù¶0”Þ±o½õlηú˜>t ŒÃIr š€šh\†k0ÑMâ™æè”†"ggœÂJƃb\¥Z=%†ÃDÜ¥˜92�§�¹?8-#|Ðb
=�HS;v’™ß#x‚èáËM$hÙôœ:�†zÂô.¤vm*ÃÕ•.ŽÓϵÜŽl9r‹±I’ö°àÂpB¢+¿z#ɳ»{$Û
ì ²¬8O¸Zgš9XÅŒ×jbàøúºK¼ ¸$r¾Z½¯
"9ɯh»RKC¬M…ƒôË1döZ½¹?»ÚT,½}hFåμ1}‚!ÕqÒù�šãi"ÌÕÂ.²¯QxéÝ=¶|�,}Æ1»Buƒæöû¡b©Y×G¶@¡]€‡œ™îcº0?e}©IÂîeÒm–CpNŽ$[½HQ9i^¶¨�|„Ø*Þuõ±Ãk­õèN&éÇ÷Ú@¨ë‚ ¢ý‚ «Â,­ gV†bñÚkÉ&ž,Œ•gÖC�2iT…S±™´DwNNÜÓvy�ýû(¸R=‹aw¥Æ�°ã7ï¼-�®ãÊJð›™*µ‚—)´®‚z@žöݬy» ïiV]#:/ÓéïÎN·(<( @Ü;Td„Û‡…#s‰„IÁí/¼?®‡ ²Zx¼Nê _'u\0®ÛY›ê;üô.þó„ÉôXiù.”€qPþwÝ9'� XÈŽÛÄ
áÔ9$·ÂÜ Œ–A0À�/Rªdt?Ÿ)¶QŠD¶iÎÓ8ׯœ
¬Ïé+nª4а]-öª>‹S�â8A,"#ByŠI¨š;ûË(6§U® và�i—[©Ï³�iHs�tèK‰\.Œd` Dj¼w­/L:¶_¾XUùîý$‘IM{—Eé÷)ÀªÖ\1�XßÎQFíúÎØÄcz^(Ð?¬ìºSläFý`·Lä ù`,ê€t^æn…4y,é"2 ‡*èCÈ—Ý6þë¹`.
¢ Ÿ%=o©ÙˆHtÜò²…P‡ïFÇ:TÒ·�³¸Pëu°jÊkß°TÚpÃsWLð½Ìa»¾zÃEØpø¥;ƒkT­s(1Ÿñca¾»Ò-KM¶Œ;åõˆU¬A¶Ç….@+Ì
Cö€fÔŠÚ¼Ò8²£õžþp ”’!:r`”’,J
ùåÞ™¼èúM
“…j½(€Øß™¨ ëÚJZÙZÙ›:˜:þq.R¾â¯ ±Ì4z1õw꽡 ô-ùzRzB$fBÓ·€`iF‹–N‰}[Þ½‰)w=nÄ1Ïi°e Á�…“Ü÷ÇšöÇx�oö+¬×Y¾ñË3I’úð¶ÅÃ*94šeYmùxHsRqè¦&‡¹¨çއÁÖÞpž–üàÖŸc­H²îÞŇ˜1õH�ÏG•¹)¨yW½}7u¡œ5fHÿ-žÙª%Žy3¤óc$r[¢Âz=1þ[ó±›¾ùIH6m™OM—œ?óŒ2?Äx¢Ž)¬aÜW îæ>�&wª±Chc‹Ñ˜Ñ]‰|aÎ3õ,­ÂìGu šHø¢šl¬ µ}¨ÇÇç"�ÑÝ`£ýL8:dqã‡<ÝN=‰†ú{1Åñœ+z�@ù\D™:¤²mG,ŠåâæM�Ä9CW+EìÑÖñxVºE+írL1_Y‘ÁM’8@(“[¤ õ�5Á2[¬3~ÐËd𤋮+&\½6c´‹Ú[8
Ç��kæë¾ ÏOÑÉ =>�DòãcÊ�g€+wÌI—ä£�Å9RýF¿cc`*{D ¿Åu¿‡ó v';Rƒ4
—<µb–�{é>¼gLæñbÑ—²‘'€Dž¸›™¡ ³Ze?±ä¦^‚z×6ŽGΙÁºq¸-'Å9'Å1?ºl΋@¡ð4¶æ3:ý˜O’úJo[¥÷ÎŽDˆžÈ_š¨ø�%Ÿ)F¡»@ùò.1œ„Ç =b°wñq êGžyeÒØ­ÿ¾¶ä×¢#ôQý§`᯵õÿùÔ¹(ÍÖéP_rÄœĸñÁêÇ}úÆ$¢Âä"!ë3(“”  ð%g†êZ¡$磧jQ™Š¨d°BiÙ¹že‰ç*ŸÅùéõšæ²»µû²›¹æaÇMròˆ ÙÍöö ¯{EÛÜÒñÅy�óÚ�»&d–0ù½)¸ïû¢|øƒûXO´‰ÏrøÇ;ÙŠ\§§ŠBÔ·qÒLµ¹0Oæ»u’çXnLÓRû¹ö•:åîy„¶c¸P/¾ðŒíûòÐí0ï0kl¥Ã}ÃÀ�š5剚^¨˜&Á;ßfÞ½¹—A •äÒîŽóÔ¢!64
—¹¾`1œöô¨ïcv€bÛAŠ�v,Ö»±M®Ýý9
u¯åGµÉ­ÈW#"_gå„—Ùm¿£˜u¡•Žf_×wé 1tɪ“e!7ì’-W×*ŒfÞ*RxÙ %íØüÎí² kþÈ¡ŠA«ÏÞC‹\…SÞ(áѤP‚óú�aEôš(Ö‡4ñc—ü¨cV«è3*Ħ¥~s‘si�ŠŽy3�"9UˆmG-‚¶ë­ÐOW@Xö¶ÉçÁÒ5\s¯Øî]jÔöíÒ¾¡r¥¶Îö�æ@þ˜Ì©é-㳊tŠð“é1(…*3Ñï-ŘNRN¿øH²‚Ömé)ÇlÖG¬ÑÀ([ά?j3Õï{±!G�L¹®“ÞnÅ=Ý(ݽÜ£­ënW‡¡>Ù׈ÙÀ'¸Õ[˜|ü‘ÊŽu\Ÿ1¸ÞØ<×Ò Ê½È2BSÁ�¥ÀÖß´‹“#¢»¥^¨Žyl¸tNbfk¾‘ÙðÓ’¶ÑÌPtÏÀ0F§W„ƒ9cz•Ùõj V=ËÌýzu³ÓéÒn" ýª³sвöÅÇ/Tfuê-%*©¶&¨:,TzÔ-¥ÜƒúJXŽm‹�)+}5Â�E«ºw“kÂN2 ™WT ™Õ™�,KÌÂRh KŠ9QJ¥N,
,‡è´€2@�(P•ñW,ëHFz{°+�Y36éGPêÕÒJ•Ú?¡PÀc/UûÅP±Öòaõ0¨e2Ê
Q'd ‡'k
£Ñœi£À€oK'i‘æ'­8Æ I³A×a5sÕkLÖ A(P�™¤cÂ�÷dq¯áùc)òéZ׋xHJUøKÑó»GNSJ'í}¶À±è�²Põ–N°0Ç»ƒü
g�>ìÌ®9ø©o/1O¡ìYu÷fs|¤7ã(æÖ4˜!|£K™
4Ø™ŽÏD(ɶ*ÍyVû'#äÑ®% ¡úa8ί¦•µÁJ�‚sô2°ÆVȶóÉmŒà
\–:ªÐÈ®:œWsÌì¼dÌÅÍÜq1»;°Ay±ñêœKº®ößÀ€|�bPJ`áw¶kcÃÓ€tTÃUÛ4ƒ°Gä,VŒX œ›…U0díÙ,<ìH³HQi€°üÔz˜&Ë&Cõ¿r&‡}p+ü8–ÏX+wUè^P_ƒŒheŒŠ´l@pu QÛJ7€‡Z`]6„:óƒ¥NL?§È¼evaÁ4°™`F?`[á¾mÅ*Œ)Æ5+A9¦¼$+7p@ M÷ˆcÀÀÖ˃…˜9>Ð.¡ÔgnV÷Ì(%ÅR°ÿ[zB]öt4­ÃRà4ãv£ÛÙDÜ6×m½býKOm”ê”ÏýéBK€¥<d=ƒ‡õfÇl ˆ+ŠqUñÔÕ†�¨ŒÔÊ.
Nuõ¡ò}°Hµ2£Á�*”øLã·€�aCúÒéÎ$qÝ+3…cJTGFö5¨a²©ÜödÓW±Ù‚Y( cgÉÀÔûÃCö�5vï&c
ªÔvH½FÞÓ`ðu öX#œ
Y‡;ˆ¦*tCFFaöä¼ÇÀp@_µœlžÎ¢Ÿ°[tfŠ�ÿ®3‹z~Ú]�°¨6Áa5ß8œÕÝŠŒïöŽïœÍ%Ó¼ŸÌv‹û€ÚÙ´uyê}*+è�±`+;ÒOð$¦ëƒá7¼5j~âÌ’äâ žœc
uψ¾G˜ö„Ši—ޝ™»Ç°Ï8ëiÑ´~Ö;ÀÁ~¡P~üãìŒÊ0”,mGhêìÛ_¾,¸Üo�î‚­w�ôîøøÍò‡¨Ÿõ>7€ ©´~>dhïgC°õAð€:¿ó=aKVúi&é S×�ªÐÑφÃ,²*©Ã¹“3Ý9W _Õ±aê$„˜oá½7ÜïùüÎÑ…y:�1~ð|ëöØ ŸæãïŠ2óèÙ¨€h°‡bóÃß® &Bî õjOßܨSöõK6‚­ù„Ý(âØA–ÙëåÛ‘±b 4Ó½\– d3†Mvy"�öUþ»"¦fQ„ب'‹–"ÛAâµ_T(`æ¦1,_Ÿ¼éŠþ„|Óüƶú°baðWO$۳êÃÍðÎÆ¥�ý;0¿Ç{WˆäòÖ+ J-h>BSŽ>ÌV/…ƒ"Ò21à¥údB”m\ŽRÅ3z÷ã^æ‚~#pý^#ˆ‰)í_"‹:¥P4ú�äÓo
$ØfG#6Hôlš¡Ä¦æ²¥°äâ)–)j+á}aΠۧ½ÌTFJXЫÅÃ`]f?R z®e°ƒ«8�àÑÙÅ»l™1sÒO�0–CÀRÃR—7«ŒüÕ`.(«•j ÅvÉÁJO=">°ßÁ*
仳9ê(c­·a+¶…Ò¦KÁzÅ!¶*†“jÁ�áÆš ìû�
Ws¬JwÙl­Þ§û˜ÞvˆÃ‚‡Ê_Š1:»Øp ê5Þ§=Ù|E¹cIÌßÜðÜË¿?<Ä}OÿÔzÙ[)ycÛj“U:ÎõEY�ßm‚ÖÛ¯yÏ8mˆ·ù$Êd{£¹ÒÁ&™Ÿ¸¹SõÇKyÞ•C~î K@ÉËÜ}_Tòi7…`»œ'zF~*Üеƒ­!x­‘ý)Քƫ>¬ÒUÛë,¿æI\~±Äx.Ôõ{\£[•¦6ñíÁe…aõÁ5r'‡äl54Á)m5Ƴ—VY–´ÉÑÓ­•µù95¢œ0)Ž„-b’ƒéúʯºÐ/#§ËéFBIêmó#8}ös5Ah0
j-»Ú�´eø6k)åR¤ÔÓLäó‹®!ÌÔNU+)mÍW@Ú8®™q¾üx’««Ò8Êø‹F½
×0_*–Q�X.Km4[µ(a¢Ñ!ÙEº$Á÷¨‡vؼÊÙŠFÆœBy ;倡•§šl2ˆ“–rbÊÇ®c4“à`¿ïÚ²ëŒÈ‹˜ U“ŒK±îT.½;@Þ?ÌÑ.
òó
ÇiÀÿ(fD”e9qYªfÏ’äqzO~džYð¹u¹ÌÊ0#8îº@­Ÿ²ãnÆ<4çBð×cDoX9.ß
õ`'´  àñ!=%r“;ÁOYv9F-Ö©�,N^wøjÏc§¯|¾¹Ñ;îb­ò’#&£ �‹Ì ç”rÑÙSÏO
¸T}b%¨VõLô
è´Z™;ìT©?F!’¦ôz}JHá‘AºüçÂm”.å%Ü‚:B'ÔkýR‚¤·ó]ÄèÅ­Î{®Dg;p_lcTŸüŠiãÝùž9š¨·n)&¶–"Ï¿™36Mv›¨ó»¦DÆ6$Öê|ç-ÃX «ˆL0¡ŒÈ³?仂IM;+F)G.e‹Ÿ”£9ÎתœNu£<Çhš`MZmcٸؒ Ó<ª,É…tÈ@bè3ŠE hk9 ^‡ŸNd46OÏýb7<5=€‡u­Z¦zØ@¡lªLÇ+¥÷ ñP}Z±ñÒ}…Ñä_tLp5ŒíÌ¿Ë~­(¨¸X³s”+T Ã•›(6«¨ ¨þÉÝTFØ?¢w¶ÿÔùv’£@Øã½›W�õÄ–|Àú´°1Þù�Œ.H^– „ÝÛé<2u®¦Mˆõ°Í-<®c„ðüuà-J^–º¾ãÛ› „À¯¢ïowèϲkJÚØ )Œ ÊöæÜí¶ •Ñ~Í�®ü¢DË%=ÙÌ ù¾òÚ½•²yP¼è„Õ§g&ˆ²"è›Ro˜PV…ÅòùiîŽÈÆæ®¬„ÒÒd äkJÎ Rü#ÕCT¸ÚØQö¢OKÐXŒ“YÄøùq6gЗ‰si+ôâ @ÌŒå�¢1Ú!Ô8e~‘Ë*걞£_&™Õ� ÜBwWŸš<vf†ÅM(%UÙ½ý àó‡ /±"=xjr‚öÀI2´¨2"߬G°D²M*õ¸ÐjË¡O¢iH«F‡x/›R;*2kËÒ: «KT©ˆ¨cóJŸ^!�¶ÔFx�ßRˆà¿OÏaˆÊ‚ˆÊ—Ë�ànLÊÑ’²Í×^‘àv%>ݲœMw =Ï/¹8Ý7¥ç�\ï7Áç—Ÿ¿(©Í\/À¾nŽñ–g¿Ä?Ty¦^íß>åŒ}Fz䕨´2èV=4¿[“Œ;´uj�¶`*dîΠcK3U<8¾"9Äã@mš0+I¹´²ÊQ•ª˜žÎšÎòk› JœsCê0¿çtã…ÿ|É]ÙÃ(y�ãÌ?éò°9×Ù!j…+ž ·ûAŸ<õ–œQL�73¦Œ­§íÓ3¤£—=#fÅç& ‹�fl))`:ZP-ðtõ=[zµ•ýN=üØ'ÒTЖì¦À*Y_ì¶Ú¬öÖì-‘ºeåSÊï(MøBRh®Fó.Àƒ+Ń_�Ð÷&žðzÎé�<kƒ‹²»À�±4c:c{}|ð4ìvf
�9AçÈ’áë“AZFD4aéK}ðçºÇ±7Ø'�‘°BÚ~t'ñF.ÑêüŽô€f²¢$0½™I^ÙÍšå’¬óuAO ün$Ÿƒ¤Ê¹­¸r:hÀvm\ÒuÏUóBö¡ÞqžêpÊwͧÚÚ¢ÖÄ1P�9 •DV@Ðc·ÃÖÀP”ö›I»¤œÌ± Cº/¶ªæ3ÝH7”mþ‚­l©Ð£P•
Ááƒ;z ê!#stMÏ+ ‰ŽSÒµtïO½>ÜyÊaL‹_tò'ƒ—‘Çàñ<R訨Üä(óEùR©±Ð.åz«;5ÿ±ótüúØÓ!DúÀ˜ˆ`'Ë$ž7ÌI,•ä�´v:”ÇW~¶ßÔ²|“Pš·5�¹Î ]-;j®dWê.Ù§kx…þ�b�ÉLso-"¶‚Ä™1rý{�‰e-—¦6Jy0×8:.Gdþ› …Š„.¤@Òdè�'âP‰B-‹³ÐȦØb)gB)R «ðerWÏ €7öþ“�‰ë„þ|B2äê…
!ë›n©ûÎ÷Zxó“·Mk›ÚWtëRü;ªý?¸žüå}¥‘Öàrô8(?ŠÎ$‘Ø>2ºA·²Jt¤· [󬚴�3>rûßÜ΄ÎN\St­J³ǃWÂzaÉ¿7µ…™Xk|ák «bÝøÒGò%ÎÔg
þ â^Ë+ÙK„_ éî^ý’ÅfÒ¢|iMÌêäô¡HŠY2…ÓÄ’×;aêr@YsŽžÁèÒ…¸w›7/ŸŽ~8äa?Ñ$\{F^µ3Ù¨Í]òÞ|‡V«¦º4ª¾�Œ…W!iÆ… ¯``ìÇÞ5 ç‰FÞ>PõˆŒ:°Îü÷S*W>dDö$yh€x/pY®ø—™ /П—­M8=³Z«@–@ÞY=Q?aßì‰ó>pPyG8æ¹�wסðwƒ¯Œ§fUxûÍ>ÀT‹6@F[Ì““'4¯Šž…ÀO– ĸ;Eˆ–�+„Ý=ÕUÒÆdômϬI *qÄî,Ç^.×ìG½— ™žÞì†L‘`õbxìóÒX!É7¦wœG¹ËÛ¾Í U¢jù¬s&€¸
ƒC?Ë´Î?iòÀLð$œ"ïícÉ—3|`MAô,çÎàLnÍÌ;ÆÁ¸ :¾ýERèÑ$C|–1ÕÁd\лÂ× ýÄ#ß׉Αª|•¶0?ëIjIž$ë íNÕŽˆ|=Hæþ¼çP-@…‡͉?CÙXµ0= ï_7¸÷EºÃYídˆn*ýå«‚ÝØ7’ü§I]Fxa¦“뙲/£ü~NWïPÔÎø„¬æ™•T0¸å.Œ)®j‹ ÁBýÍvx®žKI<ƒKÑÂqDµ+BôÐsV#¸5Ù—¨'é„ÝQ—xMn}û�'tÊ~4úÝ496£�:bdú;ñ/�ç´á]ŠšðÝ€Õ²7Û,�û=“Õ²ûYáN\áZŸñ¿É›þÏ7• @ Àüw«‚F†v¿¦AØÿ·*ûüs¦û_°�À°)‚Ç¡} ã³s‚< E�BZ�ÍqgËY�E/ˆï´=C¤rBð;á
yJr«c|eÝÆ9oWÖ9÷×ì—3;ÚŸÞõ…‚¡NcU'’Kª2–F¸Â’¡)Å+Ó0íyÕ ò–l¹°u»ô¢ÃÖ6î.­:Ž�kÕZ˜;®Ú_¤m°uï8T?Ê|&l;Ò¡—è~pª1
+lÝ‹5lÜšoÒÜíŠq3�×” #ôÞ7üÖo
Ô›×¼çZ¯æèZbg†Ž†IFH¶uLy¬×Q±ˆ
ˆ.¸<ÀÀ¤íÚ»n7½«Ó½á¿ÍªbĆù^‹ÅÀN;¸]øKcÃL²‚)S›{´{�]NíízÔ÷ñûµæó§"²[U0g÷Ùz<É^e0†RÜͤ¸ÁÝJÔøtÐ{*fCH¿úMë°æ§Î˜2Æ¥]fú°â Víá\ü”PÒÀ]‘æóºýŽK·´µ]E¦>GTöïj}²�Mú×Ý'¶õ™ºw«‚쮪˜ÍrW•—T¤÷Œ³Ç/Ùº[ew‡N½ùØ#´ÇÏr.Ÿ[–oñ}¨¤®zG„ê_*O(c²øˆ‡Lá%MF-àC­<Í•@ý®ðDBUæ&ú�&’€Å–Ï(¶@¤�†8Cb šEr¯Þ¿Çç.…Ù!] eŒ‡&.Šf ¬AÜF,Ë: ðhÊö“2Z¸=¨Ä’¶œ‡«DÌwˆ$ عlÄÈ>c5�5ó[/4³ „4P§N(ž#4·´S@ãû8‹‰
ÏœŒà­\Æl6L:´ajD±J�'cÀ4ràÔâ%=p�£‚�‰™7ÅÏÛ…ŸèÅ’fÉIÊ÷Îòá4éx“Ë)>itûZçÓ@ÿf�ÿí~æe�(žÊý’ý<
__§=”H‘⫼DkH¹E܇…L ˆ ö{ª–`᜺Ú{�{òüY„`²ü[v¸sµÐ2È�ýþ·ýïþØÈ9?¿à—­E‚ò¬x2ý‚Aõ@{J¥©¤ |]BXXCÓâ)šÕ í)›ÝÀ�·©0Mu¼Ï1špΩsFËVöɺ�æAõû±5z-N�C š'¼ó©”–Œ$f: óª¥ç
Nþ/ çBNß�V·Úi·)’!œO? ®¿ƒå6¤ðØmîªàä�9Õ0ÏX¯Má³æè*æ®W¾Ô =c3c_�÷ÿÀA˜\ñaApy3sÞ5ì!MúÉ¿@¨bÛÜe p}Ê•/³8EôdÚ—EÙ

ý+#Ì…›6ˆ`vs­À7�‹Ø£G(Yk·G/íÖÚ݉~wªéàH] .;Œ˜½˜H=�"—R}LjäÕüÌóe9á;®Œ�Êý°2Œ•¡‘ÇISßâ³í(�`ú^°¹Ýsð˜FÒø™Ý†E9­rSqá„΂¾rs¯bÛ7åß^
¹¶Ð®€Mž:g‘£ší�oò<5Â<ÍaÈÆ÷IêÈÉ%Ïå
EL¤b盤æp”©_bØÖxûs:C8eeéC%dÝrúƒL3|¡þ˜öý¹ŒB¾^w(.BogÚRÄ’ï †cqŒ4žît�—Ð2Ÿ˜T _¼q-ájÜ [à˜…÷& �y•n¯ðùL„ Ã=JNZ™½)žà9XT&9÷GáÐQñ
ØXñ®ìäÝ&ý¸æ�ßÔtbræ ÜQ�îðŸ+«ìO�1]–+‡ºb[ÍɦÆI²%SŒ#Tš=yͱ«g¼Z¢Xì¦1п¯â.d[JA° ¸ÿ\+æï,‚–©h:c)£<ÃÁÈ0%ïùf³’•I Á–Õ›Ò²HMÏ|-
1¥vú™Œbdc,òâw^¾ëþáÚRKZ5ó ÷Î1Ó‡À 2_½kKëfÑøÜÚû1Íón»âƒ7¸
(¿GÐ2QiZ/îZ©Dc˜<i)ÑhaæÅ$/$f©¤ZÛÅ=B»@û-ø·|øz°J^[�^rîVW‚-Âõ‰žy";˜ç¼ó$?vœE=„„ˆœ!†ØIÇ6•Á’=OÒd’ú(ñßôÌ<Ö� n2ŒµÆ1Œ(u˜>ë©G ið|n°P¤\H-PP–ÕT,3Ì}¯pEÄÞbqN¢4
Ò­&ɫµòe)%›9<ˆ8ÙsW $µ
e|©  Q±+ßM¼µ¬
³À­TTÑ\‡ã¡\¥8„…²x©@OÃ? y³‚K?pqþ8®~Òîšê”Œi
Z
êe‚ƒ, ·I–ɬ^%²‚rVd§'�I••’FVÒ-ÏŠr7¥ù}EJ±!g4PÛ•‰}�CP ©H,^øLßb6®Ÿ’¥q2~ZÜÁ˜~Z÷ÑÅfÓ\YŠC·ƒtBcÇg7AK"” XCö’ϽNÕ�ÛØ—‹…Ë”_Ëo`›bÖU¡�ˆ¶Ð†Ž]íó¹sOw·¼µ»tTé]‹mpnjÄFi¾8³ft™x£{ú,Ç^°‘aˆÉ/}¾ +0ù¨Ñ£�y.Œ“¨  ÐGóA¡Š:§GõFÄ„éæBDD] ´BX u}ˆákE'-&›L´í§sƒÛ�ÔsÌ1‡^jb_W.ŸB*M”l†Ó¹³ ©ä|
ÑÙÓ›£$/íºl;l¯ƒ1¹¼Ì®K¨íþYÕ5ÅR}5‘C­FúîîÚ’’ºÀòàòã®è“þzóËݽÏ,E•%[JŠ[„g¥˜£[ªV�š] YuÅŸÛÊaqgY7Þ’>ÏÍ6ŸòtÃèΦKÞ*.´å Ï>ôÑ W¢£š>“̘<FTº;göM_ËÞ¸P:Œ“sbœ‘¢¼ôr~‹‚è³æ­;Ÿ ‘ã]•½ÛËô{†'+ºæî"(è</ËýtÙD+Ç?}dì*Ïu®[nX+µ¤sD/æÙñµf;ݺ3uñ r5ìÝœìݼ *6ÆÂó¼9P]ˆChû>"QÎW‡i
df¨É¨˜5å,†S£V—h´Ûgr×[ÅÌ0»X6\Ý`ݧ)DƒÀÌJ!?fúÍ&JŸM014OÁõqŒ°I‡+} þ^’ÑVÁÀ>�„ÈxìßTÌÏÑ«Œw¾gµ Äû.@ "C÷tõ‡~;E¨÷¯ FCÈ·Ÿ°AM4¡ûsKš˜~gwzgwe} t�£Þ"u¡m¾ï#�&i—Þ$iµAÔ‘šKùýsâþÇÏ4v©S,7HÛ° ™×#–qêE§êBÕ»ê]´B«‡ýÓ߯ùlføßqÅ¥·¢¶¾ŽÍ¯c3ÍßHÊüín‹EÍÿ+-Rß@{J”¯…"H�žM;ŠÞú®„‘д'ÌÏZ˜[=ð—A™Ñjœ¬ý.+D*ZÄóFsü„.EÒ#9�ó1ýÜc�“¹ãÅãð#"5¥Á»w
2„¾Bð ™9»�¡©’4yÑŸ2úhiÈl5½Î¿4RwÜîTçmµ‡‚C!¹�Xت
Tß$­}÷/Rõ?¦¥>(‚êÖÓÞ„2jöJô­¤®p‹¬ ßeÊ'‘êBÒQdù° „ Yw¿¢Šˆæ=ifa¿�ºÌF[¶ÀjdÅ$>`�îÊí¿C]¯Ø}D6o^0ñ�©÷Z¹eò£Šö{K^]M%:SkE¬w Iôi‰"xr"i¼>)i¼è­�)³ÇÔ‘“f6Ê ñüQ±‘q¥°ƒÏÒòvAMÙzf“Ø EÅ«vf?š¢q1Z:�|
¦üuA� ÍTq‚N¥±bfmpk ÈäJÊSÉØ“Ô¯“úç׿ÇEƒ?±¨64¥ÖXÐ7t߸Dª?r¾0Ñ )Rᙹ€Äò`uIº–O2ñN²¸~r€ÔèÒoæY•c�¿éV¤4¹yés
4ÔwOœÿ”8xL½Ú¦Yø9�Z¼j�ó�ೃ¸éGm?¨—Áö’.ms–6O™©ÔÁ ¿ŸAº)çOrˆ0Drîfœe‰”ïÅâ�
\ ò]Âæs> >žäVLP­R‹q×Nñ”ëÍìãw×E—`ÚÑ¢vz}ZÓ'©¯>"Œåû€À-�鉨H¾y€8…øÃ÷¦HÛ6‰Å׬H)7ó®¿Hw6qi¶Ÿï¢äØ!öe+ö:žf¼�;v[×n"§—ŒUÃE ÑT5ŽäRü bÃÑ™z/šŒ“¸ý>ö÷ÁU#Lcá¾÷ÔØW±¾À_ªà
~è'öÝÃE,ÖåÄÿüòfø®ï¬´OzmÅ`ÿ+ÅAg];ÃKN/S~�«* ð6h7Ÿ:U¡f{m€ë!6£@±B!1’À¦Ì°|õn8Õ@ohÙ;›‹¿€ü±
/+AÂ÷ Þ0M3Ac*Et+sll$Ù¾ÀyïìùÇõø'×RòèXX®êï¦B¹™©XdŒù„ཱུ`¨ÌTF¬$ …z:¢1„êö©²g3Ò úLá‰Z“, ËFÙFšýZ.Fž—ðFŸ ÷øZO´ðÐ˵)HÜFíh^躻‹l\=Ê»²,šÍØH�¹ËŒfQä]f Þ
–Ù¶t�>|pÂdŠÒyH8¶hÝ#zGý¸RØÚ~ÊQ°PÛ´Ÿì¯ wÊ´œòlÞ<¸®"ûÝß;X#™êôBµõ£}¡Åc—VIS!ŒVõfID�£“Ö~0�kéâãÓA7ßZ�Š“fŽ‘•úw&Þõ¢,â€Úȵ Æ`f.+}¥ÞœHRšµÉªPÖÀ€w»Æí”õ4›÷»*¬Ì0·ÐÒuÜ0ÌäÛ<<øXIk§RpKu½ŠcÑ„/ôÆE[xÀdݪÜÜë:«�»¸°N4ó˜`®mÏô.Ë´—ôÃJ‡ùG
…É—£W­']8Ú+!ÈZ¢MyôÏßy-n¿¤g˜óà†Ob¿/t6é¶ëõqРãÍyghR½?@�H$Åf)sî‡yBM$æ…?)/Hû%á;
|Ä(A¯£PÌî—ÀѬ'V¢WÈ\ÀK¨{$Tæ‚�û‰Í0Áråª0ò¹Í�M¦òw›T}@¼0µ
¢ÛÌ9"¬ žÂ'¸LàïœóÉ™g\ð¾—8+¿©Ê-’«æÐ<š¢uró±™_fÝn˜#Ø%ñü0F�È5ŒSNù�:N8²t«MíðÎú÷UžDÀø—`Ä_Vù7óÓYénÏé¹¾™Šbòq"(±
YJ  (ȵ†Ãf IöêÕøg6øgïøFÙl�8!ô„tךó6ݽýÛcìNÞ1\Ü4¤4EèrØìuèB‹¯?â)7;0Ê9v!Ýqå]õ€* ¹¢†ý½±’‹šü˜}±%³“YÉWf!á¥Ô j•ˆ0Àlq\n�2Üu èYRóVäßv0òîÇ)°¥2²Bæ/5Õãæ±µ—§÷¡ˆ.«¢ê…¼79èt'¿³í0ã)M¿Ëµ)ÏT÷€NÚ4驵^®æ?|:–Záæ
Ý5ê´å‡vN]³¨”*`òÑ1…V™6õt±Ôð‚
›µòƒÒJŠT¿
œ�Z�ùD¯ûwðßß_áI´½#`è¿)c'dhdmg(fjgï è¨÷¯¿ÿzË{U,‘UQ¼¬ªmlkL$`?×/Hø è@– @#F#…XƳ-4ȪMÏÌ/Z{góg¿t�Õú%Ýh?ä¿äòçLÛ;ëC�U~µ-øp6Ü4λß4žá~ó|}nM�gû¡O}$=ÇHG à Í�fC@ºqì"$‰Æ¾b“I…s¬rÌV±Œï3c°ldZ8B=Çwœ̇Óók7‡@]c�ÏJ½ï�K4еfÕkT#VÓ¬L”KÊÕ1…è�­èKåݺ?ˆsì­²i™¥
¥´`ucê.˜ÍH¥8ŠÓ*"
%Ö5—i4'±GÄf
#èLž¥&Ôh:¶LP°z2Q`f«/kT˜ƒ¤^’`žËaQà ´O»¢
NS,îã/6›ÚxŒ1ìD®ªÕšÄU¤®_ƒ³*+GHÔlVtÐ(h-r¾#ƒóš-†8äú1ÙÀŒË²·š²/«ØfʼngGµn«ÅÖ”#î¿.EåZ#Ç}¸çÎDœRkb„™Óv¢
mÔM¥˜ŒƒsÖ)Ý„šÖì«Û:lDèJ„Ù»×UÚŸº ì"ùe¯]/é6ÜaÞÅ$)*‚nÐåì )(:™šç0?Wgµ²é K·Žçû¹”Ìg¡iüd´AªM"«1Q²¾cäi˜¯~?FñL S·¹A©¤ˆô’7‹÷cØ¢8&lnA7�º?³—€·!Ø Óñ«Ðž2dç¢É{}=Ôq-<®
ÙöÅ`s§jÓ¡R§M¬sãåbN<~ë:1[ymv”ð �2. Fe€:jÔ¸ 7=¯ê¾, ³êw¡ƒqb�á#|ô¼ û¹á�Û’¹CE
Øc!Ô´÷5±4—Ú.kÜ:E*up΋Ô[O—`† ÛóOðw=²i=ÔDWYPÓÜá ~9­Óð™_n®nÝ¢ŒØMÏ
uBz½èÑäO¾¾0�zºd.MëEh ãk
}Òî7À.`íÒ�÷èÆT¨#Åîo\¸z`›o«‡/Â�¯ä½²ìõò9Ç|@ÿêy =|E>U~?#q*L×gŠŒ¨ãÚõUï öŠ{ åi°‹ä–áÊ?;g!'F‡pÝu)Ç/íÀ(ä6¼Z9¼Š•d�‹ÉÂo-Œ3èÙ0Q-¬=RÉ’1%'ð„ ×3~GRë=‰z³k#O™ÄŒ½8­S–J‡M7Z:#úT7£ô³±Ãà¤t8ݶþ¾»–­‡VoÐLE´“ñ!§G�ÂQ?é…–Ž@šN/å"Î':cB¼nèFÑF†ëLI>Ù'öØøo&çÜÉ¿dVÿxí£9ÿ½Qtµw0´ü{‰ÕÃRÝ(�ã %–uõsf³¢+¬BÈ"=èÑhèïéßz¥àMÇ� “M ­I©úBãw!‘›" ö¨§1_Ž¿Œ¦5µz·¶vZ$ÀGY d«û�Y f‰xñ��C,=D Ô÷Kd-ã­É¬"†ºsÙÅ¿?·ã¦Rc‘ë)M«üÔ©� ½\ ŠËm¢Ç ®K0Ù†¼"Nˆ ¦}Ö<ƒ-æÔÄ®HŠ ÄŠm¨eí9Ø(ž59÷å &äVÏíëZ_]ï¥æNAio#ó‘Ý�®DZ…öNIÍe0'ôº#ÞHT) @(O< §ç]¿*ŠÏ6 ”e¹‰WuY> §à©™KYÝd%lÙ´}·ÉͬñLrŽÇ�~Ö¢eí,:1”™ØûJpÎë
…a �±œ­j¬d*äÏö�ôÊÆ�RT{úUp†¨Ôö~CÔŒíP³ g$6íWµŸØ:²“éhAGir¸‹L^ßér4 ŠùÌO4^@~ÿHiQM|Á_g Óßþ}ï£âºõÔ;”g9JhûÎ%dv¶#f Y’”¤hKH#x÷�îæxMûeÚþû­02¾;ð»×o\–‹~ ¦Sø·içûiËëÞ^Ï@6ýbXËlL c9fÛ˜N43´,ɪW9óþJm¶B Ü_'HK�xñtÂË(øÜ¥V?ü@Îæ±”O3rØ ð_©z—]â¼�üB�_ÂÕ!œ¯¹*‘ƒ$¼îÖ¾ïà{¡6�]½£\8µìߥæqØbQtp ¸[©sž&½y'™¦“ÇÃiÆ.©Nß
% É:Ec¼Aí“&TS)MAö»Vh:BÙÒ˜Ži±
½£KP1О>?>eµ£4ÀÍY;Aòé] } —ɱ%vf&rñ ²l¥û׬ÆsÞ¶»ˆä¤+
xhu_eod¶MYhwד\“lÑÍÞ³³õO‘ûgD­j^ßýËzGW),üÜ1ÂLl
èm }Õ7;¨�ŸÔ® \ �ìÔ¾‹E¯=ncSƒY<ÕÆ
TeÈ©•‘1 2‚QUÉ,¥šQ^ãîÍk2¤2Žˆ!Åvö,a�ù`ØàÂëmQˆŸ?I©=·4âV¡ð¡1•Ü’NèË+KÞùŽ’yŚɒ‘…TȱÝ`“hˆIÉW¤Û[Ë™øHƒ_#Bøˆþûj%VqËû:Û‚üÃøãŸ,+ýÉdãøýô;„g9Mˆ<@)Ðn=Ã,ÚZPÄJJeº÷j¢“²{°( ãÀ.P=Ö��Þ%ÛþØ�Úæ8“„B‘NíbØÎ¬qwºõ0v®iáìxöx„#E
f™BB�ô
–¨¤´‘î¬ü´¬ÅL%Ô™ô‰¨OÔÅVÞ?øB‚a&ÕzFˆ`h"}*B‹Äx Ä•4v´$&¯½ŠÐ¼„RYÍ 7 öO•u¶µŸaöØâ¹"€T‡¶*ì––Ñ%ö¡¸k¢ ôR›:ôBIg0®'sªÆÎK’M©�ŠwE;°¾Ç\‘‘L9÷£Q½Jh4ÌTx¥=:”zÇ\ÐÖ•<m”¤¬+ Œls£a·ŒuJq9¤SíR«'*¥l—ÛbªFÜúPLké.æô»:­V­©ýWL¶û�„y-L<OÎÕjòB)!itÃÙö6KdôoÑ€0ÇÆß7Ó»ÃÔ{7ÝÐw¥Ãéý`|4ƃ1=‡¨â¨*’"™R3ð ½Òâ6„K>‰#‘1’~Ôè‚Ácvà4ôÓ™Œ1^j.°6ï�0&ýì/Ý8‚›š»äØú±ÈCœTÔ;‚ÕpÆQñ0¡…u<‘¥û[ÑRqBÒ 6òru6NDQ¬Þ·O¡Ý3-Qå°N¶®¸õüwábERAf&á|-Ì
2¬øÉqì÷3DYpc”dÂò‡Ñ¥”êö/E�@ÅÄÙmüV­i‚Ü cÉ©Îõ
ªÔKçŠ0G¨:£­×ϪG]ä‚¢èO»š¼�||ÁöݽûØ£ÇlK²Ók²JP�|ݨ0ΛÏîèK¦–{\õÁ\7 : ‚àƒ\â7QaŸz'
ˆ0»Q›GÅž>�¹“ùfn<ÉßQiÝù<Ü?g~;Tƒ‹) pšl¬·M^>ýÚ‚'q´®ÊvŠÓ¸µÿé„Scº¶Æd�z8=ËsÒ‡RKœ½ékvOÅP#dCTîš¶Œ¢É�¼�½#púåûA‹B��6tYQI½ e_8Ñ…†Ì:?A‹�S�^m‘ *çÌó¹wÍ �ëaz›õ"�·%h×€AÆC7
)àÙz#ÿÒ­ŠòÚ‘^_ø?Å÷_[ä_ ïïþVnøWHÑßkØCüÏ�p*øË»¬¨’ ­¤œýÛbÜœ÷B¯'¨¾¾P~y>”¿-&+(')&ª¨D'+ö[„Û7âù ¿!~LÿWóW% Wâëï{¨¿*ˆü»‚'â‘õÀÄ×À(÷õÔÙ™üÏQëƒø—ÖJÿ£›þ°w-`åõ’l^ÿs‘ßý5àÛ9Úëo.®‚Ž&†V¦ú?·F½eÜ?Q³/~eXøÕùò'£+Èû`þÞê-H‘ÛªÖëµ*¼–¦ýž>è_8Ê+¿ŽÖ–†2ÖÖæŽ6 �³¥½Üû
òõëòîOh(ˆ?„uÑ·p´7uzý²ka(¨¯oho/«k¥klø'÷bVGì=ì{°·×N÷‡ª¿¾¿N‚�L�ít†¬ßB¸�¬Ç¾ÞÞ×¶Äð;èýöyJ¼Ž›váù® Í*¿ÔdÐ_ÛÿOôÔ?D—±6þÓ» wgJ}ðz°à~ÝäôÌã?;Çý1&ÇZý*ök;yí~‡™ŠÿWn«Œ¶Ú)Òóz3?C¾}NWLˆ&dmíð˨�¬®©Õë÷ç–·Ðs
$Ó¯‰1~5@øMäø«* êb¨ïø§�Ì+¯¤úõ£Ð+*ÕïPq„ÿ¢Qü û—‹þcÜ·¶µ?qÑäþމí[¼·6�?ñn”þ{ÓÀ·,o-è~²ü2lüGCº·po�g~©}ø[>4¿ü#¯™Ÿ€
þÜyæ-Ê/%~kóëñËàbðñß—¿Þ~k óóâþ½ð6ˆy ÿÖæã'<žþß7ýx‹úÖPã'*”Á?³×xËôÖ¸à'Œñ?´1xKõV7þ'Õ�é¡"ÿþ­úOøHó(‡þ–ê­’êOªJûÿZWõ-É[1ÊŸ$SNÿXšò-Ù[í¾ŸdnWÉï-æ[娟˜{Þÿ½ŽÔ[–·E?Y¶}þ®`Ñ[Ì·ò?1[Bþ‰X¿uo¶ìÿä‰
ûÿµ�ÿ-çÛ�×?9y#ÿî6ì·˜o3dbdýWù²o Þ¦#þ$XÉý¯’ß¼MûIÐQð�RÃÞ½MÞøIäRò¿Kåx‹üvAü'²Wù?\Kõv!ò'•mÕÿbYò-ìÛõ·Ÿ°“Õÿl5îߞ›(ýO&Ô†³Kó6rü›vÑøßÄ‘ßâ¿
!þÄçoùGÅ·Do£"?‰fÛÿcŒä�4(Ø/'3¾þ üÒKwüòéÿPK
ì Uâ=+˜è(gradle/wrapper/gradle-wrapper.propertiesm�Í
‚@F÷>Å@kgIÁE¡Ô¢HüÙ2æED‡{Ç‚ž¾"×çœïÛ”3°ÝÜ1?drÉ0ò–%%ó=:­&‹º™­žÆ½"ˆù.9¥uU¤y}¼œÓ?#S¶�¨Œ@ÎS›ÂNëñ�®„ËÝ
‡¸·ÖÐ5‚ïúÄ;Tí|ÂN,e_à\ré6zäïçPK
ì UGÇ%Ôpgradlew½XÿsÚ¸ÿÝÅVñÈ«!É}}éÐw\ iz!0�6½9zA±¨µe*Ù¦éÿþV’ml’ÜÝ»ë<Of¢/»«Õê£Ï®Ø{ÒJ•lÝpÑbb7T-gï«~Žù8•4¨„ÊÒ%(_òe³X›‹ýwVì«.ììA'IX„«$1(–@g8¼~5è÷pfÄT®„\|TÇà@D7pÀš!g8:m÷€ èc$ ®Œ³’…4ᨩ6‘Qn:ëÇ�ýÞˆ‹ŠÞÃsbð U{*𠛜ÚaTmOÙíRâp¨C­¹ï½€I½¹?i¸5+Æg�Ë ‚‘j5÷kðZ[µD†ÏÑ7&Œ´þ¬ãFÚŒ±P±Êä4àRЈåî�VIzÆ� ÌwÞöºm2]®ƒ)q|ô½P›½ ™¶¼(¼pòØZ%ð†™žkLUD�ìEGËZT3òsgܳÃS"Ë|<À€é“ ØŒ¦a¯ßö!^&<
L²&ü§àS4T1¤ŠÁëÎÛÎõ`x9*8uºç=ÛG(,©R#8fÎ×b²ét{/;oÎ/¯QÆ(µ Ñ>¼AÃkDÊ-�ÒèŠò�Þ„ì 04Àú�w×/»ð¤
Þ¡¶š
šÀІ)k:v¾M2 huM¥€:4à³=-ã¦÷‰óÅqÎv¦vdªÃ·<�C­·ƒ1¨%óùŒû Òå2Æ;W�R•h„×™²šv¹6À±Z£éø›ùš‹¶é;‘Ú¨¬P¹«$^f=Ïa‘êsšà‚'¿ž^�]ìCÃx”ÕË™þóçø¯k,æ"™ýªHÿìâô*—0ÎTç/ãËÁ0—ÈÝ* 1E}Ç99ïŒÇÃÎå«¶›Ã³57ˆk­%].™Ìº^Öm~ RǯË&#.ìy¿Æƒ?Ž"�¥üTãŒÊŒÀÛ~ÓÁ«Š ðd øôb–Šëi%nË­’µÔ¢õ—Ø‘Ößœýܯ!X»¿@, söN/Ž@M$sd¯Ø§šš´+ì–ùi¢A©
+zµ“>Âî‘uïóÄC:IlÅ‘(Š-=Ùn
•؆2é�FƒÑ1A_8f¸o.xE8Þq.™ŸÄrƒœ\ˆ:Î0dnF~ÁJFVTr½[4›8•€yŒËXDLÓMü…ÖqòXA<³’æX9b‡†¡™i[+‚Qb»sd{´¨û%Nƒ£Oáîîñ­Š81îk ‰jÚ@­@•§˜ ðrÎâ»ùf4v›ÿ¿ÝãÎüg—f½2×ÍtŠ ˜eÈX*}òk¦I7C>qíu'Ðb‚€GqØ^ñ{ÃÙ­-�Wpc©òúü¬vÙž¦!��Þ¼Wxæ[ä¹ÿ�}‚ƒû�Ë|²VÌ"9ç‚ß›x³[Ú¹´u†"ÙÐ_L¶êˆöÉä?
¢t '9L‰;˜uŽóUîùR¹Å»v?¥Lnþ¢åò^ѶEÆK³üý (&äRþ´éf‹xmpƒtò ršZ©†Œ0SAìÔ˜É�Q
H)OcÐËY{B¼wZïXgËæºR˜�í ÷cQâùˆœfôÞä¾PBJÛ81`}jÍõYÒdaöqÅE¯
ŸâåÁ‰
2‚‹¹¹õÆu‹õòaõÏç´9ð¼ì_Äo™®„r‘¬Üf§ÇU
™L'磒F*x™}±Z²™ãŠÁMÊÃÀÄe1£ “&¨œ§š Ì~‘r0n+&\oÅ)d†�‘Ñ`pÙ=�G�«öt†‘ïZà!„¶ÄÕ±�Ãy;Ù,ñx‘ ^´^�{C]B,¡Èñ nÉü¶^.¯‹ È›.ÚpQq‹xcôÎöMͪƒ7#¬A0`—½ÑE›Ô¯
’EF×’T'RéaI‰Y>(âc*A–aª-å¸Ü®CtÁGà�oÜJÿ®~ßR£’\ñé�·);{«Š£óàc˜sSˆXîARW Ÿ4æXM¶Vöyû =С'îO¤ò“W½“_ðAbkK#wl.Ù<vG�VõŽSüÝ#Sø³ßj¥‚ ƒŒå€eg‡EÍb“>}ZŒí¤�Ç–Á“gúì1¦7+”%– `w‚ûP.Ÿ>p3ù\hFØ^Q½åm<*üˆQ21Zò`*ám·^çÿ:l4ªÐ6õ¶Ëm¡m¿úAÃ$ ϳ…q6zXŒšuÔ©LÝŸ¶�êÜ7 gGU…oÿŠ‚m|SÕüîÒ´�o«&¾ÿ{&l㻪­þ¡-Ûø¾jôǯeÔ6~¨Zÿ÷W·n?˘'•M cÌíæGœìñcstgç¥mÞ¼:ëÛ
ŸJI7Ï�…Â0^ëdª•Õ‚añü)�=¢+a•Þ¨„'©©dªß1³Tø¦«ôº¯WÑ`™¨zþ..éuÍj
|›+W–w÷EŸ=.l³ä´“ üæ~Þ+Úûo¯Ëy3«(°¦Ù–"Å/ø ×°òcˆ¸Ÿ ;?½ÿ‚äé‡T)Ã&åü%ãùkÔþ:re{}š·ó_PK
ì UÔÄæD·d gradlew.batÍVKoÛF¾ð˜²ÝH+Ú1r©f"Z¶£DÙIÑÄš\I È]b¹”•K~{f¤ÄÄ=4È¡>˜Üá<¾ùvºÌ×à‘QôænL<ð<¸déV€X¯OO.%+áןög:·0–4+ÔŠJÕTP§2¯¬…„÷9ÏÄcÝSÿ™(œË˜)(DJ Œ-*fB«-ƒ•9}(X
�¹Úâ?ƒf+¨·¬(NO ió˜xAà9¬ÉlåAÍ”ñ§#à;Œn–³päKV�;3'ëØ>Öó­Y¸X$oÂ8Jœ1??ȯçZÔ:éR ³ 2¶¦M¡àö~
¢R¹à5l™d>ü%H)ZÔššÁmx&óÅ*Ê3/ÃÑ$²g% ¢uÝs‚2µÍkwCä(º
ï&«�eÐa¹BFàÝQŸí™É‘åœe6¬Î6�¢0»E½+)Jý¼%k©3ªÑ‡(88"­ŒÀ`Çd�Øàõìn¯Ÿ½tìFËå|9‰î£‰#øÜ³±rž+í[×¶o`”‡G¨0G.”¹Í ð\‡©(K-IESdð K¥ÁcÎá³h$,ÂÕµß÷½(E¢µ+]R‡mquÆŒïr)xɸÒL—T¥[mãé‚Ò×€
iõ5ShŒmS拯ó²„ÒÜÔÞðif;^mu¯C/ ß°~øHÎr~v¸C4ÛçµBº»ù�,Z’Œ;ZäX¼¹d©òóŽbÿŸ8µ¹™
#Wƒ+¨Ü4:XýlQˆ²M;Ä,8üä¨Óf‡‡©Ïãñaâá´ùs?�tY»¢¾dÈÑß¿_ücm^9ÕW³•SCx};;ߊFV†ª¶~û`]'¿�Ž’ÉÍ,JÂåX·±–%ñ»›Epñ�ç¤Ö>-®=ùòÒÚ;@X i£ºî;&/£GZÃC
±<Xcõø¨±½Vt»€X¬Õ#•ìÉ@¿×]˜vÖ7ßsÑ!�„q¬»8 í�%7f?}|”´ª˜tÇ�;úŸ¨ì&^dC¹�vzÒk òí¤$®ÂÝûÑô%à
FBn|ËÇHœ–Ì‚ê6ú¤éŠâvòH?·@-¨÷ö4¥Ø"¤Ç±lñ¬MFsóÃ[ñxãvlÇo‰q#B'ÓQíîz×ñ}¸Y%oç³x>ÁQaú8Ãå¡1$v% ñ:%ǻ̘é[F3lfëÕ(¦e¦çœ¥=å_ LÛ„¶vÉq‘Hœp
p«˜çÙƒ~Eè]ÿö iì~ qènèéÉWPK
ò` UíAgradle/PK
ì UíA'gradle/wrapper/PK
ì U“=º$»LÐ!¤�Vgradle/wrapper/gradle-wrapper.jarPK
ì Uâ=+˜è(¤�¹»gradle/wrapper/gradle-wrapper.propertiesPK
ì UGÇ%Ôpí�—¼gradlewPK
ì UÔÄæD·d ¤�,Ägradlew.batPK… ÈZ¡/*
* Copyright 2017 Google Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
String helpText = """
This Gradle script performs the following:
- Adds Android maven repositories to search locations for artifacts.
- Adds user specified maven repositories to search locations for artifacts.
- Copies specified set of maven artifacts to the specified output directory.
- Displays the set of files copied into the output directory.
- Displays any packages that were not found.
./gradlew -b """ + project.buildscript.sourceFile + """ \\
\"-PMAVEN_REPOS=[semicolon separated list of repo URIs]\" \\
\"-PPACKAGES_TO_COPY=[semicolon separated list of maven artifacts]\" \\
-PTARGET_DIR=[target directory]
ANDROID_HOME (optional env var, system property or project property):
Optional environment variable, system property or project project that
specifies the install location of the Android SDK.
MAVEN_REPOS (optional project property):
Optional property which adds to the list of Maven repositories to search.
This is a semicolon separated list of URIs e.g
\"-PMAVEN_REPOS=http://some.repos.com;file:///some/other/path\"
Since this property semicolon separated it needs to be quoted correctly
when specified via some command line shells.
USE_MAVEN_LOCAL_REPO (optional project property):
Optional property which, when not set to 1, disables the implicit use of local
maven repositories (see mavenLocal() in the gradle docs).
By default local maven repositories are enabled.
USE_REMOTE_MAVEN_REPOS (optional project property):
Optional property which, when not set to 1, disables the implicit use of
remote repositories (maven.google.com, jcenter and maven central) when
fetching artifacts. By default remote repositories are enabled.
USE_JETIFIER (optional project property):
Optional project which, when not set to 1, disables the Jetifier tool to
convert references to the legacy Android Support libraries to Jetpack
(AndroidX). This defaults to 0.
DATA_BINDING_VERSION (required when USE_JETIFIER is 1):
Data binding library version to use when applying conversions from the legacy
Android support libraries to Jetpack (AndroidX).
PACKAGES_TO_COPY (required project property):
Semicolon separated list of Maven artifact specifications. This will
result in the script attempting to download the set of artifacts to
TARGET_DIR. Specified artifacts that are not copied to the target directory
are logged to the standard output stream.
e.g
\"-PPACKAGES_TO_COPY=com.android.support:support-compat:26.0.1;\
com.android.support:support-core-utils:26.0.1\"
Since this property semicolon separated it needs to be quoted correctly
when specified via some command line shells.
TARGET_DIR (required project property):
Directory to copy artifacts to.
e.g -PTARGET_DIR=some/directory/to/copy/to
"""
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
google()
}
dependencies {
classpath "com.android.tools.build.jetifier:jetifier-processor:1.0.+"
}
}
import groovy.transform.AutoClone
import groovy.transform.EqualsAndHashCode
import groovy.transform.ToString
import com.android.tools.build.jetifier.core.config.Config
import com.android.tools.build.jetifier.core.config.ConfigParser
import com.android.tools.build.jetifier.processor.FileMapping
import com.android.tools.build.jetifier.processor.Processor
configurations {
// Configuration used to resolve the final set of transitive dependencies.
transitivePackagesConfig
// Configuration used to aggregate the set of packages we'll copy.
copyPackagesConfig
}
// Class which splits a version string into components.
@ToString(includeNames=true, includeFields=true)
public class Version implements Comparable {
// Version string to parse.
public String version = ""
/*
* Construct a version class from a string.
*/
public Version(String version = null) {
this.version = version ? version : ""
}
/*
* Split a version string into components that can be compared.
*
* @returns A list of components that can be compared either as integer
* values or strings.
*/
public List<String> getComparableComponents() {
// Split into groups of numeric and non-numeric strings.
List<String> components = []
if (version) {
boolean previousIsInteger = false
String component = ""
version.each { it ->
boolean currentIsInteger = it.isInteger()
// Determine whether the current character is the same type as the
// previous character.
boolean currentTypeSameAsPrevious =
(currentIsInteger == previousIsInteger)
if (!component.isEmpty() && !currentTypeSameAsPrevious) {
components.add(component)
component = ""
}
previousIsInteger = currentIsInteger
component += it
}
if (!component.isEmpty()) components.add(component)
}
return components
}
/*
* Split a version string into period separated components.
*
* @returns List of version number components.
*/
public List<String> getComponents() {
return version ? version.tokenize('.') : []
}
/*
* Expand wildcards in this version number to the minimum absolute value.
*
* @returns Expanded version number.
*/
public Version getMinimumValue() {
List<String> versionNumberComponents = []
for (String component in components) {
if (component.endsWith("+")) {
// Strip the + from the version number and replace with 0
String nonWildcardComponent =
component.substring(0, component.size() - 1)
versionNumberComponents.add(
nonWildcardComponent ? nonWildcardComponent : "0")
break
}
versionNumberComponents.add(component)
}
return new Version(version: versionNumberComponents.join("."))
}
/*
* Expand wildcards in this version number to the maximum absolute value.
*
* @returns Expanded version number.
*/
public Version getMaximumValue() {
List<String> versionNumberComponents = []
for (String component in components) {
if (component.endsWith("+")) {
// Strip the + from the version number and subtract the existing version
// number, if it can be parsed, from Integer.MAX_VALUE. This ensures
// 1.2.+ is a larger number than 1.2.1+ since 1.2.+ is less restrictive
// than 1.2.1+.
String nonWildcardComponent =
component.substring(0, component.size() - 1)
int valueToSubtract = nonWildcardComponent.isInteger() ?
(nonWildcardComponent as int) + 1 : 0
versionNumberComponents.add((Integer.MAX_VALUE -
valueToSubtract).toString())
break
}
versionNumberComponents.add(component)
}
return new Version(version: versionNumberComponents.join("."))
}
/*
* Returns whether the version contains any wildcards.
*
* @returns true if the version contains wildcards, false otherwise.
*/
public boolean getHasWildcards() {
return version.contains("+")
}
/*
* Compare with another version object.
*
* @param otherObject version object to compare with.
*
* @returns -1 if other is less than this version, 0 if they're the
* same, 1 if other is greater than this version.
*/
public int compareTo(Object otherObject) {
Version other = otherObject as Version
List<String> thisComponents = comparableComponents
List<String> otherComponents = other.comparableComponents
int componentsToCompare = Math.min(thisComponents.size(),
otherComponents.size())
for (int i = 0; i < componentsToCompare; ++i) {
String thisComponent = thisComponents[i]
String otherComponent = otherComponents[i]
int result =
(thisComponent.isInteger() && otherComponent.isInteger()) ?
(thisComponent as BigInteger) <=> (otherComponent as BigInteger) :
thisComponent <=> otherComponent
if (result != 0) return result
}
return thisComponents.size() <=> otherComponents.size()
}
/*
* Sort a list of versions
*
* @param versions Versions to sort.
*
* @returns A list of versions ordered by oldest to most recent version.
*/
public static List<Version> sort(Iterable<Version> versions) {
return versions.collect { it }.sort(false)
}
/*
* Modify the version expression such that it has looser requirements
* accepting any patch, revision then finally version starting at the
* current version.
*
* @returns Loosened version if possible or the version.
*/
public Version loosen() {
List<String> loosenedComponents = components.clone()
int lastComponentIndex = loosenedComponents.size() - 1
if (lastComponentIndex >= 0) {
String lastComponent = loosenedComponents[lastComponentIndex]
if (lastComponent == "+") {
lastComponent =
(lastComponentIndex > 0 ?
loosenedComponents[lastComponentIndex - 1] : "") + "+"
lastComponentIndex--
} else if (lastComponent.endsWith("+")) {
lastComponent = "+"
} else {
lastComponent = lastComponent + "+"
}
loosenedComponents =
lastComponentIndex > 0 ?
loosenedComponents[0 .. lastComponentIndex - 1] : []
if (lastComponent) loosenedComponents.add(lastComponent)
}
return new Version(loosenedComponents ? loosenedComponents.join(".") : "+")
}
}
// Type of version expression match.
public enum VersionExpressionMatchType {
NONE, // No match
RANGE, // Version in a range of versions.
ABSOLUTE, // Absolute version expression specified.
MINIMUM, // Minimum version of a min-version expression.
}
// Class which holds a version range.
@AutoClone
@EqualsAndHashCode(includeFields=true)
@ToString(includeNames=true, includeFields=true)
public class VersionRange {
// Parsed version expression.
public String versionExpression = ""
// Minimum version parsed from a version expression.
public String minimum = "0"
// Maximum version parsed from a version expression.
public String maximum = "+"
// Type of version expression parsed.
public VersionExpressionMatchType matchType =
VersionExpressionMatchType.NONE
/*
* Get the minimum and maximum version from a maven / ivy version expression.
* This does not distiguish between exclusive and inclusive version ranges.
* i.e [1.2.3,] is treated the same as (1.2.3,].
*
* @param versionExpression Version expression to parse.
*
* @returns VersionRange instance that contains the parsed data.
*/
public static VersionRange fromExpression(String versionExpression) {
// Match Maven / Ivy version range expressions like:
// [1.2.3,4.5.6]
// [1.2.3,4.5.6)
// (1.2.3,4.5.6)
// (1.2.3,]
// [,4.5.6)
def versionRangeMatch = (versionExpression =~
/^([\[\(])([^,]*),\s*([^\]\)]*)([\)\]])$/)
// Match absolute Maven / Ivy version expressions like [1.2.3].
def absoluteVersionMatch = (versionExpression =~ /^\[([^\]]+)\]$/)
// Match min value Maven version expressions (i.e which don't start with
// [ or (.
def minVersionMatch = (versionExpression =~ /^([^\[\(]+)$/)
VersionRange range = new VersionRange(
versionExpression: versionExpression, minimum: "0", maximum: "+",
matchType: VersionExpressionMatchType.NONE)
String minMatchedVersion = ""
String maxMatchedVersion = ""
if (versionRangeMatch.matches()) {
range.matchType = VersionExpressionMatchType.RANGE
minMatchedVersion = versionRangeMatch.group(2).trim()
if (minMatchedVersion) {
minMatchedVersion =
(new Version(minMatchedVersion)).minimumValue.version
}
maxMatchedVersion = versionRangeMatch.group(3).trim()
if (maxMatchedVersion) {
maxMatchedVersion =
(new Version(maxMatchedVersion)).maximumValue.version
}
} else if (absoluteVersionMatch.matches()) {
range.matchType = VersionExpressionMatchType.ABSOLUTE
minMatchedVersion = absoluteVersionMatch.group(1).trim()
if (minMatchedVersion) {
minMatchedVersion =
(new Version(minMatchedVersion)).minimumValue.version
}
maxMatchedVersion = minMatchedVersion
} else if (minVersionMatch.matches()) {
range.matchType = VersionExpressionMatchType.MINIMUM
minMatchedVersion = minVersionMatch.group(1).trim()
} else {
range.matchType = VersionExpressionMatchType.NONE
}
if (!minMatchedVersion.isEmpty()) range.minimum = minMatchedVersion
if (!maxMatchedVersion.isEmpty()) range.maximum = maxMatchedVersion
return range
}
/*
* Get the version range expression.
*
* @returns Version expression.
*/
String getExpression() {
switch (matchType) {
case VersionExpressionMatchType.NONE:
return versionExpression
case VersionExpressionMatchType.RANGE:
return sprintf("[%s,%s]", minimum, maximum)
case VersionExpressionMatchType.ABSOLUTE:
return sprintf("[%s]", minimum)
case VersionExpressionMatchType.MINIMUM:
return sprintf("%s", minimum)
}
}
/*
* Get the minimum version as a Version object.
*
* @return Version object.
*/
Version getMinimumVersion() {
return new Version(version: minimum)
}
/*
* Get the maximum version as a Version object.
*
* @return Version object.
*/
Version getMaximumVersion() {
return new Version(version: maximum)
}
/*
* Get the maximum absolute version number from this object replacing the
* wildcard character "+" from the version expression with Integer.MAX_VALUE.
*
* This facilitates sorting version expressions with wildcard values after
* non-wildcard card values. For example, 1.2.+ will be ordered after 1.2.0.
*
* @return Returns a version string with the wildcard component replaced by
* Integer.MAX_VALUE.
*/
Version getMaximumVersionOfRange() {
return (matchType == VersionExpressionMatchType.RANGE ?
maximumVersion : minimumVersion).maximumValue
}
/*
* Determine whether a version is within the range.
*
* @param version Version to check against this range.
*
* @returns true if the version is in range, false otherwise.
*/
boolean inRange(Version version) {
// If there are no constraints or the version is empty, always match.
if (!versionExpression || !version.version) return true
switch (matchType) {
case VersionExpressionMatchType.NONE:
return false
case VersionExpressionMatchType.RANGE:
return version.maximumValue >= minimumVersion.minimumValue &&
version.minimumValue <= maximumVersion.maximumValue
case VersionExpressionMatchType.ABSOLUTE:
return version == minimumVersion
case VersionExpressionMatchType.MINIMUM:
return version >= minimumVersion.minimumValue
}
return false
}
}
// Components of a package spec.
@AutoClone
@EqualsAndHashCode(includeFields=true)
@ToString(includeNames=true, includeFields=true)
public class PackageSpecifier implements Comparable {
// Group component of a maven package.
public String group = ""
// Artifact component of a maven package.
public String artifact = ""
// Version expression of a maven package.
public String versionExpression = ""
// Type of the artifact.
public String artifactType = ""
/*
* Extract the components of a package specifier string.
*
* @param packageSpecifier Package specification.
* Package specification should match agroup:apackage:version@artifacttype
* e.g a.b.c:d.e:1.2.3@aar
*
* @returns [group, artifact, version, artifactType] list with the components
* of the package spec. If a component is not present the entry in the list
* is null.
*/
public static PackageSpecifier fromString(String packageSpecifierString) {
List<String> components = packageSpecifierString ?
packageSpecifierString.split(/[:@]/) : []
// Fill the list of components with null elements.
components += ([""] * Math.min(4, (4 - components.size())))
return new PackageSpecifier(
group: components[0],
artifact: components[1],
versionExpression: components[2] ? (VersionRange.fromExpression(
components[2])).expression : "",
artifactType: components[3])
}
/*
* Convert a list of package specifier strings to PackageSpecifier instances.
*
* @param packageSpecifierStrings List of strings to convert.
*
* @returns PackageSpecifier instances.
*/
public static List<PackageSpecifier> fromStrings(
Iterable<String> packageSpecifierStrings) {
return packageSpecifierStrings.collect { fromString(it) }
}
/*
* Convert a Gradle ModuleComponentSelector to a PackageSpecifier.
*
* @param selector Selector to convert.
*
* @returns PackageSpecifier instance.
*/
public static PackageSpecifier fromModuleComponentSelector(
ModuleComponentSelector selector) {
return selector.with {
return new PackageSpecifier(
group: group,
artifact: module,
versionExpression: (version ?
(VersionRange.fromExpression(version)).expression : ""))
}
}
/*
* Convert a Gradle ResolvedArtifact to a PackageSpecifier.
*
* @param resolvedArtifact ResolvedArtifact to convert.
*
* @returns PackageSpecifier instance.
*/
public static PackageSpecifier fromResolvedArtifact(
ResolvedArtifact resolvedArtifact) {
return resolvedArtifact.with {
PackageSpecifier pkg = fromModuleVersionIdentifier(moduleVersion.id)
pkg.artifactType = type
return pkg
}
}
/*
* Convert a Gradle ModuleVersionIdentifier to a PackageSpecifier.
*
* @param moduleVersionIdentifier ModuleVersionIdentifier to convert.
*
* @returns PackageSpecifier instance.
*/
public static PackageSpecifier fromModuleVersionIdentifier(
ModuleVersionIdentifier moduleVersionIdentifier) {
return moduleVersionIdentifier.with {
return new PackageSpecifier(
group: group,
artifact: name,
versionExpression: (version ?
(VersionRange.fromExpression(version)).expression : ""))
}
}
/*
* Convert a Gradle DirectDependencyMetadata to a PackageSpecifier.
*
* @param directDependencyMetadata DirectDependencyMetadata to convert.
*
* @returns PackageSpecifier instance.
*/
public static PackageSpecifier fromDirectDependencyMetadata(
DirectDependencyMetadata directDependencyMetadata) {
return directDependencyMetadata.with {
return new PackageSpecifier(
group: group,
artifact: name,
versionExpression: (versionConstraint ?
(VersionRange.fromExpression(
versionConstraint.requiredVersion).expression) : ""))
}
}
/*
* Sort a list of package specifiers by version.
*
* @param packages Package specifiers to sort.
*
* @returns A list of package specifiers order by oldest to most recent
* version.
*/
public static List<PackageSpecifier> sortByVersion(
Iterable<PackageSpecifier> packages) {
return packages.collect { it }.sort(false) { lhs, rhs ->
(lhs.versionRange.maximumVersionOfRange <=>
rhs.versionRange.maximumVersionOfRange)
}
}
/*
* Get the range from the version.
*
* @returns Version range parsed from version component of this class or an
* empty string if no version is set.
*/
public VersionRange getVersionRange() {
return VersionRange.fromExpression(versionExpression)
}
/*
* Compare with another PackageSpecifier object.
*
* @param otherObject PackageSpecifier object to compare with.
*
* @returns -1 if other is less than this version, 0 if they're the
* same, 1 if other is greater than this version.
*/
public int compareTo(Object otherObject) {
PackageSpecifier other = otherObject as PackageSpecifier
List<Integer> compareResults = [
group <=> other.group,
artifact <=> other.artifact,
versionRange?.minimumVersion <=> other?.versionRange?.minimumVersion,
versionRange?.maximumVersion <=> other?.versionRange?.maximumVersion,
artifactType <=> other.artifactType]
for (int itemComparison in compareResults) {
if (itemComparison != 0) return itemComparison
}
return 0
}
/*
* Convert to a list of components.
*
* @returns String list of components in the form
* [group, artifact, versionAndArtifactType]. Missing items are not returned
* in the list.
* For example, without a versionExpression this returns [group, artifact].
*/
private List<String> getComponentStrings() {
List<String> components = []
if (group) {
components.add(group)
if (artifact) {
components.add(artifact)
if (versionExpression) {
if (artifactType) {
components.add(versionExpression + "@" + artifactType)
} else {
components.add(versionExpression)
}
}
}
}
return components
}
/*
* Get group and artifact components as a string list.
*
* @returns [group, artifact] if they are present, empty list otherwise.
*/
private List<String> getGroupArtifact() {
List<String> components = componentStrings
return components.size() >= 2 ? components[0..1] : []
}
/*
* Convert to a colon separated string.
*
* @returns Colon separated string.
*/
public String getSpecString() {
return componentStrings.join(":")
}
/*
* Get group / artifact tuple as a colon separated string.
*
* @returns Colon separated string.
*/
public String getGroupArtifactString() {
return groupArtifact.join(":")
}
/*
* Convert to a valid filename.
*
* @returns Filename string.
*/
public String getFilename() {
List<String> hypenSeparatedComponents = []
String dotSeparatedGroupArtifact = groupArtifact.join(".")
if (dotSeparatedGroupArtifact) {
hypenSeparatedComponents += [dotSeparatedGroupArtifact]
}
if (versionExpression) {
hypenSeparatedComponents += [versionExpression]
}
String filename = hypenSeparatedComponents.join("-")
if (artifactType) {
filename += "." + (artifactType == "srcaar" ? "aar" : artifactType)
}
return filename
}
/*
* From a set of package specifiers create a map of lists of package
* specifiers indexed by group:artifact strings (e.g
* com.example:my-package:1.2.3@aar would
* become ret[com.example:my-package] = ["com.example:my-package:1.2.3.@aar"]
*
* @param packages List of package specifier strings.
*
* @returns A map of package specifier lists by group:name strings.
*/
public static Map<String, List<PackageSpecifier>> byGroupArtifact(
Iterable<PackageSpecifier> packages) {
Map<String, List<PackageSpecifier>> packagesByGroupArtifact = [:]
packages.each {
String groupArtifact = it.groupArtifactString
if (groupArtifact) {
List<PackageSpecifier> packageSpecs = packagesByGroupArtifact.get(
groupArtifact, [])
packageSpecs.add(it)
packagesByGroupArtifact[groupArtifact] = packageSpecs
}
}
return packagesByGroupArtifact
}
/*
* From a set of package specifiers create a map of package names indexed
* by group:artifact strings (e.g, com.example:my-package:1.2.3@aar would
* become ret[com.example:my-package] = "com.example:my-package:1.2.3@aar")
* Package specifiers without at least a group and artifact are ignored.
*
* If multiple versions of the same package are specified, the highest version
* is returned in the map.
*
* @param packages List of package specifiers.
*
* @returns A map of package specifiers by group:name strings.
*/
public static Map<String, PackageSpecifier> mostRecentByGroupArtifact(
Iterable<PackageSpecifier> packages) {
return PackageSpecifier.byGroupArtifact(packages).collectEntries {
String groupArtifact, List<PackageSpecifier> packageSpecs ->
[groupArtifact, PackageSpecifier.sortByVersion(packageSpecs)[-1]]
}
}
/*
* Get a list of specification strings from PackageSpecifier instances.
*
* @param packages PackageSpecifier instances.
*
* @returns List of package spec strings.
*/
public static List<String> specStrings(Iterable<PackageSpecifier> packages) {
return packages.collect { it.specString }
}
}
// Maps a package to another package name.
public class PackageMapper {
// Map of "group:artifact" to absolute package spec (coordinate) in the form
// "group:artifact:version".
public Map<String, String> dependenciesMap = [:]
// Inverse mapping of absolute package spec in the form "group:artifact" to
// "group:artifact". This is the inverse of dependenciesMap.
private Map<String, String> inverseDependenciesMap = null
// Set of packages that should be ignored when applying mapping in the form
// "group:artifact".
public Set<String> blackList = [].toSet()
/*
* Apply this mapping to the specified package.
*
* @param dependenciesMap Package mapping to apply. This maps strings of the
* form "group:artifact" to absolute package specs (coordinates)
* "group:artifact:version".
* @param blackList Packages to *not* map in the form "group:artifact".
* @param pkg Package specification to map.
*
* @return Package specification mapped via the dependenciesMap.
*/
public PackageSpecifier map(PackageSpecifier pkg) {
String groupArtifact = pkg.groupArtifactString
if (!blackList.contains(groupArtifact)) {
String mappedPackageSpec = dependenciesMap[groupArtifact]
if (mappedPackageSpec) {
return PackageSpecifier.fromString(mappedPackageSpec)
}
}
return pkg
}
/*
* Lookup the inverse mapping of a package to the original "group:artifact".
*
* @param pkg Package specification to apply reverse mapping.
*
* @return Package specification before mapping was applied.
*/
public PackageSpecifier inverseMap(PackageSpecifier pkg) {
String groupArtifact = pkg.groupArtifactString
if (!blackList.contains(groupArtifact)) {
if (inverseDependenciesMap == null) {
inverseDependenciesMap = dependenciesMap.collectEntries {
String sourceGroupArtifact, String targetPackageSpec ->
return [PackageSpecifier.fromString(
targetPackageSpec).groupArtifactString,
sourceGroupArtifact]
}
}
String mappedPackageSpec = inverseDependenciesMap[groupArtifact]
if (mappedPackageSpec) {
return PackageSpecifier.fromString(mappedPackageSpec)
}
}
return PackageSpecifier.fromString(groupArtifact)
}
/*
* Apply this mapping to the specified Gradle project configuration.
*
* Substitutes dependencies that match this mapping in the specified
* configuration.
*
* @param configuration Configuration to apply the mapping to.
* @param project Project to apply the configuration to. This is only
* required to apply a workaround for
* https://github.com/gradle/gradle/issues/5174 .
*/
public void applyToProjectConfiguration(Configuration configuration,
Project project) {
// Workaround https://github.com/gradle/gradle/issues/5174 by remapping all
// indirect dependency metadata directly.
// When #5174 is resolved it should be possible to remove this in preference
// of the dependency closure below.
project.dependencies.components.all { ComponentMetadataDetails component ->
component.allVariants { VariantMetadata variant ->
variant.withDependencies {
DirectDependenciesMetadata dependenciesMetadata ->
List<PackageSpecifier> currentDeps = dependenciesMetadata.collect {
PackageSpecifier.fromDirectDependencyMetadata(it)
}
Set<PackageSpecifier> depsToRemove = [].toSet()
List<PackageSpecifier> depsToAdd = currentDeps.findResults {
PackageSpecifier mapped = map(it)
if (mapped != it) {
depsToRemove.add(it)
return mapped
}
return null
}
// dependenciesMetadata.removeAll(oldDeps) does not work, so
// remove each old dependency manually.
depsToRemove.forEach { PackageSpecifier remove ->
dependenciesMetadata.removeIf {
DirectDependencyMetadata dependencyMetadata ->
return PackageSpecifier.fromDirectDependencyMetadata(
dependencyMetadata) == remove
}
}
depsToAdd.forEach { dependenciesMetadata.add(it.specString) }
}
}
}
// Use the dependency substitution closure to apply replacements.
configuration.resolutionStrategy.dependencySubstitution.all {
DependencySubstitution dependencySubstitution ->
ModuleComponentSelector requestedSelector =
dependencySubstitution.requested as ModuleComponentSelector
if (requestedSelector) {
PackageSpecifier requested =
PackageSpecifier.fromModuleComponentSelector(requestedSelector)
PackageSpecifier mapped = map(requested)
if (requested != mapped) {
dependencySubstitution.useTarget(mapped.specString,
"USE_JETIFIER is enabled")
}
}
}
}
/*
* Create a mapper using a Jetifier (Jetpack / AndroidX) processor.
*
* @param dataBindingVersion Version of the Jetpack Data Binding Library to
* use. All components of the data binding library must be pinned to the same
* version. These libraries are versioned in lock step with the Android Gradle
* plugin.
* https://android.googlesource.com/platform/tools/base/+/\
* f831317e99f/build-system/gradle-core/src/main/java/com/\
* android/build/gradle/internal/dependency/\
* AndroidXDepedencySubstitution.kt#56
*
* @returns PackageMapper initialized with the Jetpack processor's mapping.
*/
public static PackageMapper fromJetifierProcessor(
String dataBindingVersion) {
Processor processor = Processor.Companion.newInstance().createProcessor3(
(new ConfigParser()).loadDefaultConfig(), /* config */
false, /* reversedMode */
false, /* rewritingSupportLib */
true, /* useFallbackIfTypeIsMissing */
false, /* allowAmbiguousPackages */
false, /* stripSignatures */
dataBindingVersion /* dataBindingVersion */)
Map<String, String> jetifierDependenciesMap = processor.getDependenciesMap(
false /* filterOutBaseLibrary */)
Set<String> blackList = [
// androidx.databinding:databinding-compiler has a transitive dependency
// on com.android.databinding:baseLibrary, which shouldn't be replaced
// with AndroidX.
// https://issuetracker.google.com/78202536
// https://android.googlesource.com/platform/tools/base/+/\
// f831317e99f/build-system/gradle-core/src/main/java/com/\
// android/build/gradle/internal/dependency/\
// AndroidXDepedencySubstitution.kt#143
"com.android.databinding:baseLibrary",
].toSet()
return new PackageMapper(dependenciesMap: jetifierDependenciesMap,
blackList: blackList)
}
}
// Processor which simply copies a file to an output path.
public class DefaultPackageProcessor {
/*
* Generate a task to copy a file.
*
* @param project Project to add the task to.
* @param artifact Artifact to copy.
* @param pkg Package specifier of the artifact to copy.
* @param artifactTargetFile Path to copy to.
* @param copiedFileArtifacts List to add copied file and package specifier
* when the copy task is complete.
*/
public Task createTask(
Project project, ResolvedArtifact artifact, PackageSpecifier pkg,
File artifactTargetFile,
List<Tuple2<File, PackageSpecifier>> copiedFileArtifacts) {
Task copyTask = project.tasks.create(
name: "copy_" + pkg.filename,
type: Copy,
description: sprintf("Copy %s (%s) to %s", pkg.specString,
artifact.file, artifactTargetFile))
copyTask.with {
from artifact.file
into artifactTargetFile.parent
rename(
// Rename the file to the target filename and log the copied file &
// artifact so that they can be summarized when all copy artifact
// tasks are complete.
{
String filename ->
copiedFileArtifacts.add(
new Tuple2<File, PackageSpecifier>(artifactTargetFile, pkg))
return artifactTargetFile.toString()
}
)
doFirst { project.logger.info(description) }
}
return copyTask
}
}
// Processor an Android library to reference Jetpack / AndroidX using the
// Jetifier.
public class JetpackPackageProcessor extends DefaultPackageProcessor {
// Jetifier processor.
private Processor processor;
/*
* Construct a Jetifier (Jetpack / AndroidX) processor.
*
* @param dataBindingVersion Version of the Jetpack Data Binding Library to
* use. All components of the data binding library must be pinned to the same
* version. These libraries are versioned in lock step with the Android Gradle
* plugin.
*/
JetpackPackageProcessor(String dataBindingVersion) {
// NOTE: This needs to strip library signatures as libraries will be
// rewritten and without the signing key it's not possible to resign them.
processor = Processor.Companion.newInstance().createProcessor3(
(new ConfigParser()).loadDefaultConfig(), /* config */
false, /* reversedMode */
false, /* rewritingSupportLib */
true, /* useFallbackIfTypeIsMissing */
false, /* allowAmbiguousPackages */
true, /* stripSignatures */
dataBindingVersion /* dataBindingVersion */)
}
/*
* Generate a task to process a file.
*
* @param project Project to add the task to.
* @param artifact Artifact to copy.
* @param pkg Package specifier of the artifact to copy.
* @param artifactTargetFile Path to copy to.
* @param copiedFileArtifacts List to add copied file and package specifier
* when the copy task is complete.
*/
public Task createTask(
Project project, ResolvedArtifact artifact, PackageSpecifier pkg,
File artifactTargetFile,
List<Tuple2<File, PackageSpecifier>> copiedFileArtifacts) {
// If this is a file that should not be processed, (i.e is a new AndroidX
// library or an old support library that has been blacklisted) create a
// copy task instead.
if (processor.isNewDependencyFile(artifact.file) ||
processor.isOldDependencyFile(artifact.file)) {
return super.createTask(project, artifact, pkg, artifactTargetFile,
copiedFileArtifacts)
}
Task processTask = project.tasks.create(
name: "process_" + pkg.filename,
type: Task,
description: sprintf("Jetify %s (%s) to %s", pkg.specString,
artifact.file, artifactTargetFile))
processTask.with {
inputs.file artifact.file
outputs.file artifactTargetFile
doFirst { project.logger.info(description) }
doLast {
Set<FileMapping> sourceAndTargetFile =
[new FileMapping(artifact.file, /* from */
artifactTargetFile /* to */)].toSet()
processor.transform(sourceAndTargetFile, /* inputs */
true /* copyUnmodifiedLibsAlso */)
copiedFileArtifacts.add(
new Tuple2<File, PackageSpecifier>(artifactTargetFile, pkg))
}
}
return processTask
}
}
/*
* Get the group of a version-locked package.
*
* @param pkg Package spec to query.
*
* @returns 0 if the package isn't version locked, index value greater than 0
* if the package is added to the lockedPackages list or an index value lesser
* than 0 if the package is part of a version locked set but is at a non-version
* locked version. For example, if a:b.c:1.0 is version locked and a:b.c:2.0
* is not version locked - 1.0 & 2.0 are arbitrary versions - this will return a
* positive index value for a:b.c:1.0 and negative value for a:b.c:2.0.
*/
int getVersionLockedPackageIndex(PackageSpecifier pkg) {
// Packages that should be version-locked.
for (def indexAndRegex in [
// * com.google.android.gms.* packages are released a single set that
// typically are not compatible between revisions. e.g If a user
// depends upon play-services-games:9.8.0 they'll also require
// play-services-base:9.8.0 etc.
// * com.google.firebase.* packages are versioned in the same way as
// com.google.android.gms.* with dependencies upon the gms
// (Play Services) components. and need to be pinned to the same
// com.google.android.gms.* packages.
~/^com\.google\.(android\.gms|firebase):.*/,
// com.android.support packages all need to be included at the same
// revision.
~/^com\.android\.support:.*/,
// Package group used to test this script.
~/^org\.test\.psr\.locked:.*/,
].withIndex()) {
def (versionLockedRegex, index) = indexAndRegex
String specString = pkg.specString
if (!(specString ==~ versionLockedRegex)) continue
// com.google.firebase.* packages that end with -unity$ are shipped
// separately so they are *not* locked to Google Play services and
// Firebase packages.
if (specString ==~ /^com\.google\.firebase:[^:]+-unity:.*/) {
continue
}
// com.android.support:multidex is versioned independently of other
// legacy Android support libraries.
if (specString ==~ /^com\.android\.support:multidex:.*/) {
continue
}
// Version 15+ of Google Play Services components are released and
// versioned individually.
if (pkg.group && pkg.group ==~ /^com\.google\.(android\.gms|firebase)$/ &&
pkg.versionExpression) {
String majorVersion =
VersionRange.fromExpression(
(new Version(version: pkg.versionRange.minimum)).components[0]).
maximumVersionOfRange.version
if (majorVersion.isInteger() && Integer.parseInt(majorVersion) >= 15) {
return -(index + 1)
}
}
return index + 1
}
return 0
}
/*
* If the specified package is version-locked add it to the appropriate set.
*
* @param packageSpecifier Package to add to a set if is version-locked.
* A version-locked package is determined by a return value of >= 0 by
* getVersionLockedPackageIndex().
* @param lockedPackages Map of sets of version-locked packages. Each set
* is indexed by the value returned by getVersionLockedPackageIndex().
* @param blacklist Set of package set indexes that should not be used.
* This is utilized when a non-version locked package exists in the set of
* dependencies for a package and therefore no packages in the set should be
* locked to a specific version.
*
* @returns 0 if the package isn't version locked, index value greater than 0
* if the package is added to the lockedPackages list or an index value lesser
* than 0 if the package is part of a version locked set but is at a non-version
* locked version. For example, if a:b.c:1.0 is version locked and a:b.c:2.0
* is not version locked - 1.0 & 2.0 are arbitrary versions - this will return a
* positive index value for a:b.c:1.0 and negative value for a:b.c:2.0.
*/
int addVersionLockedPackageToSet(
PackageSpecifier packageSpecifier,
Map<Integer, Set<PackageSpecifier>> lockedPackages,
Set<Integer> blacklist) {
int index = getVersionLockedPackageIndex(packageSpecifier)
if (index in blacklist) index = -index
Set<String> lockedPackageSet = lockedPackages.get(index, [].toSet())
lockedPackageSet.add(packageSpecifier)
lockedPackages[index] = lockedPackageSet
return index
}
/*
* Given a set of package specs, generate a blacklist of version locked package
* set indexes.
*
* @param packages List of package specifications to scan for
* version-locked package groups that should be blacklisted.
*
* @returns Set of blacklisted package set indexes for groups of packages
* that should not be version-locked.
*/
Set<Integer> createVersionLockedSetBlacklist(
Iterable<PackageSpecifier> packages) {
Set<Integer> blacklist = [].toSet()
packages.each { pkg ->
int index = getVersionLockedPackageIndex(pkg)
if (index < 0) blacklist.add(-index)
}
return blacklist
}
/*
* Generate a map of the most recent version-locked packages each set.
*
* @param lockedPackages Sets of version-locked packages indexed by an
* arbitrary number for grouping.
*
* @returns List of packages.
*/
Iterable<PackageSpecifier> mostRecentVersionLockedPackagesFromSet(
Map<Integer, Set<PackageSpecifier>> lockedPackages) {
List<PackageSpecifier> versionLockedPackages = []
lockedPackages.findAll({ it.key > 0 }).values().each {
Iterable<PackageSpecifier> packages ->
List<PackageSpecifier> sortedPackages =
PackageSpecifier.sortByVersion(packages)
String highestVersionExpression = sortedPackages[-1].versionExpression
sortedPackages.each { PackageSpecifier pkg ->
PackageSpecifier lockedPkg = pkg.clone()
lockedPkg.versionExpression = highestVersionExpression
versionLockedPackages.add(lockedPkg)
}
}
return versionLockedPackages.sort()
}
/*
* Lock all packages in the specified set to the same version if they should
* be version-locked.
*
* @param packages Packages to search for version locked packages.
*
* @returns Potentially a subset of `packages` with version locking applied.
*/
Iterable<PackageSpecifier> versionLockPackages(
Iterable<PackageSpecifier> packages) {
// Build a sets of packages that should be version locked and bucket into
// version locked groups.
Map<Integer, Set<PackageSpecifier>> versionLockedPackageSets = [:]
Set<Integer> versionLockedSetBlacklist =
createVersionLockedSetBlacklist(packages)
packages.each {
addVersionLockedPackageToSet(it, versionLockedPackageSets,
versionLockedSetBlacklist)
}
// Lock each group of version locked packages to the most recent version.
return mostRecentVersionLockedPackagesFromSet(versionLockedPackageSets)
}
/*
* Perform a breadth first walk of a dependency graph optionally calling a
* closure for each node in the graph.
*
* @param root Root of the graph to traverse.
* @param closure Closure to call for each node in the graph.
* The closure is called with
* (DependencyResult dependency, List<DependencyResult> parents)
* where dependency is the current dependency and parents is the list of
* parents of the current dependency. This value can be null to just retrieve
* a flat list of nodes in the graph.
*
* @returns List of (dependency, graph nodes) traversed.
*/
List<Tuple2<DependencyResult, List<DependencyResult>>>
walkResolvedComponentResultGraph(ResolvedComponentResult root, closure) {
// List of (dependency, parentsList) tuples where dependency is a
// DependencyResult describing a node in the graph and parentsList is the
// list of DependencyResult nodes that are parents of the "dependency" node.
List<Tuple2<DependencyResult, List<DependencyResult>>> graphRemaining = []
root.dependencies.each {
graphRemaining.add(
new Tuple2<DependencyResult, List<DependencyResult>>(it, []))
}
List<Tuple2<DependencyResult, List<DependencyResult>>> summaryGraph = []
// Map of group:artifact to versioned package specification
// strings.
while (graphRemaining.size > 0) {
// Process current node in the graph.
Tuple2<DependencyResult, List<DependencyResult>> currentNode =
graphRemaining[0]
DependencyResult dependency = currentNode.first
List<DependencyResult> parents = currentNode.second
summaryGraph.add(currentNode)
graphRemaining = graphRemaining.drop(1)
// Call the closure the current node and the current node's parents.
if (closure) closure(dependency, parents)
if (dependency instanceof ResolvedDependencyResult) {
ResolvedComponentResult componentResult = dependency.selected
List<DependencyResult> parentsOfChildren = parents.clone()
parentsOfChildren.addAll(0, [dependency])
graphRemaining.addAll(
0, componentResult.dependencies.collect {
new Tuple2<DependencyResult, List<DependencyResult>>(
it, parentsOfChildren)
})
}
}
return summaryGraph
}
/*
* Add the most recent package to a map indexed by group:artifact.
*
* @param packages Map of package specification strings by group:artifact.
* @param pkg Package to add to the map if it's the most recent versiom.
*
* @returns Map of package specification strings.
*/
Map<String, PackageSpecifier> addMostRecentPackageToMap(
Map<String, PackageSpecifier> packages, PackageSpecifier pkg) {
PackageSpecifier existing = packages[pkg.groupArtifactString]
if (existing) pkg = PackageSpecifier.sortByVersion([existing, pkg])[-1]
packages[pkg.groupArtifactString] = pkg
return packages
}
/*
* Walk a dependency graph loosing the version constraints for the parent of
* each conflicting dependency.
*
* This walks the supplied graph and loosens the version constraints using
* loosenVersionExpression() for each parent of a conflicting dependency.
* The method returns a map of package strings that can be used in another
* attempt to resolve without conflicts.
*
* @param root Root of the graph to traverse.
* @param requestedPackages Set of package dependency strings that were used
* to generate the resolved dependency graph.
* @param keepPackages Set of package dependency strings that should not have
* dependency expressions modified.
*
* @returns Tuple of [conflictsFound, packages] where
* "conflictsFound" is a boolean that indicates whether any conflicting
* packages were found in the graph and "packages" is a set of package
* specifiers from the set requestedPackages with potentially loosened
* version constraints.
*/
Tuple2<Boolean, Set<PackageSpecifier>> loosenVersionContraintsForConflicts(
ResolvedComponentResult root, Set<PackageSpecifier> requestedPackages) {
// NOTE: The version field is ignored in the returned map, this is only used
// to look up the type specifier for each package.
Map<String, PackageSpecifier> requestedPackagesByGroupArtifact =
PackageSpecifier.mostRecentByGroupArtifact(requestedPackages)
// Build a set of version locked package set indexes that should not be
// version locked.
Set<Integer> versionLockedSetBlacklist = createVersionLockedSetBlacklist(
walkResolvedComponentResultGraph(root, null).collect {
DependencyResult dependency, List<DependencyResult> parents ->
PackageSpecifier.fromModuleComponentSelector(
dependency.requested as ModuleComponentSelector)
})
// Map of whether each package is conflicting by group:artifact.
Map<String, Boolean> conflictingByGroupArtifact = [:]
def trackConflictState = { PackageSpecifier pkg, Boolean isConflicting ->
String groupArtifact = pkg.groupArtifactString
conflictingByGroupArtifact[groupArtifact] =
conflictingByGroupArtifact.get(groupArtifact, isConflicting) |
isConflicting
return isConflicting
}
// Map of package specification strings indexed by group:artifact.
Map<String, PackageSpecifier> packages = [:]
Map<Integer, Set<PackageSpecifier>> versionLockedPackages = [:]
// Closure which adds a dependency to the packages map if it is present in
// the group:artifact set.
def addDependencyToPackages = { PackageSpecifier pkg, Boolean isConflicting ->
// Look up the requested package so that the search continues from the user
// requested packages.
PackageSpecifier requestedPackage = requestedPackagesByGroupArtifact[
pkg.groupArtifactString]
if (requestedPackage) pkg = requestedPackage
// If the package is version-locked add it to the tracking set so it can
// be reconciled later.
int versionLockedIndex = addVersionLockedPackageToSet(
pkg, versionLockedPackages, versionLockedSetBlacklist)
if (versionLockedIndex > 0) {
return trackConflictState(pkg, isConflicting)
}
// If this package is part of a blacklisted version-locked package set but
// the current package version is version-locked we're going to end up with
// a conflict across this set so loosen the version of this package.
if (((-versionLockedIndex) in versionLockedSetBlacklist) &&
getVersionLockedPackageIndex(pkg) > 0) {
isConflicting = true
}
// If the package was specified by the user as an absolute version,
// keep the user specified version.
if (requestedPackage &&
requestedPackage.versionRange.matchType ==
VersionExpressionMatchType.ABSOLUTE &&
requestedPackage.versionRange.minimumVersion.minimumValue ==
requestedPackage.versionRange.maximumVersion.maximumValue &&
isConflicting) {
if (!(requestedPackage.groupArtifactString in
conflictingByGroupArtifact.keySet())) {
logger.info(sprintf("Keeping conflicting package %s as it's " +
"explicitly specified at version %s",
requestedPackage.specString,
requestedPackage.versionExpression))
}
addMostRecentPackageToMap(packages, requestedPackage)
return trackConflictState(requestedPackage, false)
}
// If this package wasn't specified by the user, ignore it.
if (!requestedPackage) {
return trackConflictState(pkg, isConflicting)
}
// Loosen the version expression for this package if it is currently
// conflicting.
PackageSpecifier newPkg =
new PackageSpecifier(
group: pkg.group,
artifact: pkg.artifact,
versionExpression: (
isConflicting ?
pkg.versionRange.matchType == VersionExpressionMatchType.RANGE ?
pkg.versionRange.maximumVersion.loosen().version :
pkg.versionRange.minimumVersion.loosen().version :
pkg.versionRange.expression),
artifactType: pkg.artifactType)
addMostRecentPackageToMap(packages, newPkg)
return trackConflictState(newPkg, isConflicting)
}
// Walk the resolved graph tracking whether conflicts are present.
walkResolvedComponentResultGraph(
root, { DependencyResult dependency, List<DependencyResult> parents ->
// Wrap the selector with a PackageSpecifier keeping setting the version
// expression to the selected package version.
PackageSpecifier requestedPackage =
PackageSpecifier.fromModuleComponentSelector(
dependency.requested as ModuleComponentSelector)
ResolvedComponentResult resolved =
(dependency instanceof ResolvedDependencyResult) ?
(dependency as ResolvedDependencyResult).selected : null
boolean conflicting = resolved == null ||
resolved.selectionReason.isConflictResolution()
// Gradle has resolved the conflict but it still may not satisfy the
// dependency specification, so check the selected version with the
// requested version of the dependency.
if (resolved && conflicting) {
PackageSpecifier resolvedPackage =
PackageSpecifier.fromModuleVersionIdentifier(resolved.moduleVersion)
if (requestedPackage.versionRange.inRange(
resolvedPackage.versionRange.minimumVersion)) {
conflicting = false
}
}
addDependencyToPackages(requestedPackage, conflicting)
})
// Walk the resolved graph again, this time applying any required changes to
// parents or children of conflicting dependencies.
boolean conflictsFound = false
List<Tuple2<DependencyResult, List<DependencyResult>>> summaryGraph =
walkResolvedComponentResultGraph(
root, { DependencyResult dependency, List<DependencyResult> parents ->
PackageSpecifier pkg = PackageSpecifier.fromModuleComponentSelector(
dependency.requested as ModuleComponentSelector)
if (conflictingByGroupArtifact[
pkg.groupArtifactString]) {
conflictsFound = true
parents.each {
addDependencyToPackages(
PackageSpecifier.fromModuleComponentSelector(
it.requested as ModuleComponentSelector), true)
}
}
// If the package version spec can't be loosened any further and this
// was requested by the caller of this method, add child packages to the
// set of dependencies to loosen in the next iteration.
boolean overrideTransitiveDependencies =
pkg.versionExpression == "+" &&
(pkg.groupArtifactString in requestedPackagesByGroupArtifact)
if (overrideTransitiveDependencies &&
(dependency instanceof ResolvedDependencyResult)) {
// Find the set of packages, if any, to override.
List<Tuple2<PackageSpecifier,
ModuleComponentSelector>> packagesToOverride =
dependency.selected.dependencies.findResults {
PackageSpecifier dependencyPkg =
PackageSpecifier.fromModuleComponentSelector(
it.requested as ModuleComponentSelector)
if (dependencyPkg.groupArtifactString in packages) {
return null
}
return new Tuple2<PackageSpecifier, ModuleComponentSelector>(
dependencyPkg, it.requested as ModuleComponentSelector)
}
// Add packages to set to override on the next resolution attempt.
if (packagesToOverride) {
logger.quiet(
sprintf("Overriding transitive dependencies of %s: %s",
pkg.specString, packagesToOverride.collect {
PackageSpecifier unused,
ModuleComponentSelector requested ->
requested.toString() }.toString()))
packagesToOverride.each {
PackageSpecifier dependencyPkg, ModuleComponentSelector unused ->
addMostRecentPackageToMap(packages, dependencyPkg)
}
}
}
})
// Select the most recent version of each version-locked package and add to
// the set.
mostRecentVersionLockedPackagesFromSet(versionLockedPackages).each {
if (it.groupArtifactString in requestedPackagesByGroupArtifact) {
addMostRecentPackageToMap(packages, it)
}
}
// Collate the set of conflicts after resolution.
// This data structure maps groupArtifact of a conflicting package to a
// list of paths through the dependency tree in the form root/child/leaf to
// each conflict.
Map<String, Set<String>> conflictingDependencies = [:]
summaryGraph.each {
DependencyResult dependency, List<DependencyResult> parents ->
if (!(dependency instanceof ResolvedDependencyResult)) return
PackageSpecifier conflictPkg =
PackageSpecifier.fromModuleComponentSelector(
dependency.requested as ModuleComponentSelector)
String groupArtifact = conflictPkg.groupArtifactString
if (!conflictingByGroupArtifact[groupArtifact]) return
List<PackageSpecifier> parentPkgs = parents.collect {
PackageSpecifier.fromModuleComponentSelector(
it.requested as ModuleComponentSelector)
}
String pathToConflict = PackageSpecifier.specStrings(
([conflictPkg] + parentPkgs).reverse()).join("/")
Set<String> conflictPaths =
conflictingDependencies.get(groupArtifact, [].toSet())
conflictPaths.add(pathToConflict)
conflictingDependencies[groupArtifact] = conflictPaths
}
logger.info("=== Updated Dependencies ===")
conflictingDependencies.keySet().sort().each { String conflictGroupArtifact ->
List<String> conflictPaths =
conflictingDependencies[conflictGroupArtifact].sort()
// If only one package is reported as a conflict, it's a parent node in the
// graph of the conflict so ignore it.
if (conflictPaths.size() > 1) {
logger.quiet(sprintf("%s conflicting due to package(s):",
conflictGroupArtifact))
conflictPaths.each { logger.quiet(sprintf("- %s", it)) }
}
}
// Dump the complete dependency graph and the conflict state of each node.
if (project.hasProperty("DUMP_DEBUG_GRAPH") &&
project.getProperty("DUMP_DEBUG_GRAPH") == "1") {
summaryGraph.each {
DependencyResult dependency, List<DependencyResult> parents ->
String groupArtifact =
PackageSpecifier.fromModuleComponentSelector(
dependency.requested as ModuleComponentSelector).groupArtifactString
ResolvedComponentResult resolved =
(dependency instanceof ResolvedDependencyResult) ?
(dependency as ResolvedDependencyResult).selected : null
logger.quiet(
sprintf(
"%s* %s (new: %s, conflicting: %b (parents: %s))",
" ".multiply(parents.size()),
resolved && resolved.toString() != dependency.requested.toString() ?
sprintf("%s --> %s (%s)", dependency.requested.toString(),
resolved.toString(), resolved.selectionReason) :
dependency.requested.toString(),
packages[groupArtifact]?.specString,
conflictingByGroupArtifact[groupArtifact],
parents.collect {
PackageSpecifier.fromModuleComponentSelector(
it.requested as ModuleComponentSelector).specString
}))
}
}
logger.info(sprintf("=== Selected dependencies: %s",
PackageSpecifier.specStrings(
packages.values()).toString()))
return new Tuple2<Boolean, Set<PackageSpecifier>>(
conflictsFound, packages.values().toSet())
}
/*
* Given two sets of package specifications that specify potentially different
* versions, create a map that describes all versions that have changed.
* Only the packages in the oldPackages set are considered, all packages that
* exist in newPackages that are not in oldPackages are ignored and packages
* that are removed are ignored.
*
* @param oldPackages Package specifications prior to the version change.
* @param newPackages Package specifications after the version change.
* @param packageMapper Object that applied mapping to packages when they were
* resolved.
*
* @returns Map of [oldVersion, newVersion] tuples indexed by the group:artifact
* of each package with a modified version.
*/
Map<String, List<Tuple2<PackageSpecifier,
PackageSpecifier>>> getModifiedPackageVersions(
Iterable<PackageSpecifier> oldPackages,
Iterable<PackageSpecifier> newPackages, PackageMapper packageMapper) {
// Track package specifications that were modified.
Map<String, List<Tuple2<PackageSpecifier,
PackageSpecifier>>> packagesModified = [:]
// Bucket old and new versions by group artifact name.
Map<String, List<PackageSpecifier>> oldPackagesByGroupArtifact =
PackageSpecifier.byGroupArtifact(oldPackages)
// This performs the inverse mapping from each new package to the original
// package name so that it's possible to track the replacement.
// For example, if foo:bar:1.2.3 is mapped to foox:bish:1.0.0 this will
// generate the dictionary ["foo:bar", ["foox:bish:1.0.0"] so that when
// the code below looks for modifications to the package "foo:bar" it will
// map to "foox:bish".
Map<String, List<PackageSpecifier>> newPackagesByGroupArtifact =
PackageSpecifier.byGroupArtifact(newPackages).collectEntries {
String groupArtifact, List<PackageSpecifier> pkgs ->
// There should only be *one* new version of the package selected.
assert pkgs.size() == 1
PackageSpecifier oldPkg = packageMapper.inverseMap(
PackageSpecifier.fromString(pkgs[0].groupArtifactString))
return [oldPkg.groupArtifactString, pkgs]
}
oldPackagesByGroupArtifact.each {
String groupArtifact, List<PackageSpecifier> oldItems ->
List<PackageSpecifier> newItems =
newPackagesByGroupArtifact.get(groupArtifact, [])
oldItems.each { PackageSpecifier oldPackage ->
// NOTE: Unlike similar languages, groovy's map.get inserts the
// retrieved item into the map.
List<Tuple2<PackageSpecifier, PackageSpecifier>> modified =
packagesModified[groupArtifact]
if (!modified) modified = []
if (newItems) {
newItems.each { PackageSpecifier newPackage ->
VersionRange oldRange = oldPackage.versionRange
VersionRange newRange = newPackage.versionRange
// Only take into account overlapping ranges if the previous range
// wasn't a minimum value without wildcards. For example,
// 1.2.3 typically means that user wanted to select version 1.2.3
// not 1.2.3 or any subsequent version.
boolean checkInRange =
oldRange &&
(oldRange.minimumVersion.hasWildcards ||
oldRange.matchType != VersionExpressionMatchType.MINIMUM)
// Determines whether the new range bounds are within the previous
// range.
boolean newRangeInOldRange =
newRange && (
checkInRange ?
(oldRange.inRange(newRange.minimumVersion) ||
oldRange.inRange(newRange.maximumVersion)) :
oldRange.minimumVersion == newRange.minimumVersion)
if (!oldRange || !newRange || !newRangeInOldRange) {
modified.add(new Tuple2<PackageSpecifier, PackageSpecifier>(
oldPackage, newPackage))
}
}
}
if (modified) packagesModified[groupArtifact] = modified
}
}
return packagesModified
}
/*
* Attempt resolution of the specified packages, loosening version constraints
* if resolution fails due to conflict package versions.
*
* @param packages Packages to resolve the dependencies of.
* @param packageMapper Package mapping to apply on dependency resolution.
*
* @returns Tuple of [packages, configuration] where:
* packages is the set of package specifications that were successfully resolved
* or the original list if it's not possible to find a set of packages that do
* not conflict.
* configuration is the Gradle configuration used to resolve the packages.
*/
Tuple2<Set<PackageSpecifier>, Configuration> resolveConflictingPackages(
Iterable<PackageSpecifier> packages, PackageMapper packageMapper) {
// Substitute top level packages.
packages = packages.collect { packageMapper.map(it) }
// Select the most recent package for each of the specified set of packages.
Set<PackageSpecifier> currentPackages =
PackageSpecifier.mostRecentByGroupArtifact(packages).values().toSet()
int resolutionAttempt = 1
Configuration userPackagesToQuery = null
boolean resolutionComplete = false
while (true) {
// Copy the configuration to query the set of required dependencies.
userPackagesToQuery = project.configurations.create(
"userPackagesToQuery" + resolutionAttempt.toString())
packageMapper.applyToProjectConfiguration(userPackagesToQuery, project)
// Add user specified packages to the userPackages configuration.
// This allows us to resolve during the configuration phase.
if (!resolutionComplete) {
logger.quiet(sprintf("Resolution attempt %d: packages %s",
resolutionAttempt,
PackageSpecifier.specStrings(
currentPackages).toString()))
}
PackageSpecifier.specStrings(currentPackages).each {
project.dependencies.add(userPackagesToQuery.name, it)
}
if (resolutionComplete) break
ResolutionResult resolutionResult =
userPackagesToQuery.incoming.resolutionResult
// Warn the user of missing dependencies.
resolutionResult.allDependencies.findAll {
it instanceof UnresolvedDependencyResult
}.each {
logger.quiet(
sprintf("Resolve failed due to %s missing for %s, attempted " +
"to use %s, failed due to %s", it.requested, it.from,
it.attempted, it.failure))
}
Set<PackageSpecifier> newPackages = currentPackages
boolean conflictsFound = false
(conflictsFound, newPackages) = loosenVersionContraintsForConflicts(
resolutionResult.root, currentPackages)
boolean packagesChanged = !newPackages.equals(currentPackages)
currentPackages = newPackages
logger.quiet(sprintf("Resolution attempt: %d, conflicts detected: %b, " +
"updated packages: %b", resolutionAttempt,
conflictsFound, packagesChanged))
resolutionAttempt++
if (!conflictsFound) {
// Create a new configuration for resolution with the selected packages.
resolutionComplete = true
continue
} else if (!packagesChanged) {
logger.warn(sprintf("Unable to find a set of non-conflicting artifacts " +
"for packages %s.",
PackageSpecifier.specStrings(
currentPackages).toString()))
break
}
}
// Restore any packages that were not present during the conflict resolution
// process.
Set<String> foundPackages =
PackageSpecifier.mostRecentByGroupArtifact(currentPackages).keySet()
currentPackages += packages.findAll {
!(it.groupArtifactString in foundPackages)
}.toSet()
return new Tuple2<Set<PackageSpecifier>, Configuration>(currentPackages,
userPackagesToQuery)
}
/*
* For each missing package search for a srcaar artifact.
*
* JarResolverLib will implicitly search for .srcaar artifacts in a maven
* package in addition to aar and jar artifacts. Since Gradle doesn't know
* what a srcaar is and it's likely each POM doesn't reference the srcaar
* either, we resolve dependencies during the configuration phase to
* determine which packages are missing, add the srcaar artifact specifier
* to search for srcaar files then search again in an attempt to resolve
* the missing packages.
*
* @param packages Package specifications to resolve.
* @param packageMapper Package mapping to apply on dependency resolution.
*
* @returns Package specifications with the @srcaar artifact specifier for each
* artifact where a fallback package exists.
*/
Set<PackageSpecifier> fallbackToSrcAarArtifacts(
Iterable<PackageSpecifier> packages, PackageMapper packageMapper) {
// Search for all packages, excluding those with explicit artifact types and
// find the missing set.
Map<String, PackageSpecifier> searchPackages =
PackageSpecifier.mostRecentByGroupArtifact(packages).findAll {
!it.value.artifactType
}
Configuration findMissingConfig = project.configurations.create("findMissing")
packageMapper.applyToProjectConfiguration(findMissingConfig, project)
PackageSpecifier.specStrings(packages).each {
project.dependencies.add(findMissingConfig.name, it)
}
def artifactsToGroupArtifact = { Iterable<ResolvedArtifact> artifacts ->
return artifacts.collect {
PackageSpecifier.fromResolvedArtifact(it).groupArtifactString
}
}
Set<String> foundArtifacts = artifactsToGroupArtifact(
findMissingConfig.resolvedConfiguration.
lenientConfiguration.getArtifacts(Specs.satisfyAll()))
Set<String> missingPackages = searchPackages.keySet().minus(foundArtifacts)
Map<String, PackageSpecifier> fallbackPackages =
missingPackages.collectEntries {
PackageSpecifier pkg = searchPackages[it].clone()
pkg.artifactType = "srcaar"
return [it, pkg]
}
// Search for missing packages using the srcaar artifact type.
Configuration searchForSrcAarConfig =
project.configurations.create("searchForSrcAars")
packageMapper.applyToProjectConfiguration(searchForSrcAarConfig, project)
PackageSpecifier.specStrings(fallbackPackages.values()).each {
project.dependencies.add(searchForSrcAarConfig.name, it)
}
foundArtifacts = artifactsToGroupArtifact(
searchForSrcAarConfig.resolvedConfiguration.
lenientConfiguration.getArtifacts(Specs.satisfyAll()))
// Replace all user supplied packages in the output set with discovered srcaar
// package specs.
Set<PackageSpecifier> outputPackages = [].toSet()
packages.each {
String groupArtifact = it.groupArtifactString
if (groupArtifact && groupArtifact in foundArtifacts) {
outputPackages.add(fallbackPackages[groupArtifact])
} else {
outputPackages.add(it)
}
}
return outputPackages
}
def testGetComponentsFromPackage() {
[["org.test.psr:something-neat:1.2.3@special",
new PackageSpecifier(group: "org.test.psr",
artifact: "something-neat",
versionExpression: "1.2.3",
artifactType: "special")],
["org.test.psr:something-neat:1.2.3",
new PackageSpecifier(group: "org.test.psr",
artifact: "something-neat",
versionExpression: "1.2.3",
artifactType: "")],
["org.test.psr:something-neat",
new PackageSpecifier(group: "org.test.psr",
artifact: "something-neat",
versionExpression: "",
artifactType: "")],
["org.test.psr",
new PackageSpecifier(group: "org.test.psr",
artifact: "",
versionExpression: "",
artifactType: "")],
["", new PackageSpecifier()]].each {
String packageSpecifier, PackageSpecifier expected ->
PackageSpecifier result = PackageSpecifier.fromString(packageSpecifier)
if (result != expected) {
throw new Exception(
sprintf("Invalid components %s, expected %s for package '%s'",
result, expected, packageSpecifier))
}
}
}
def testPackageSpecifierStrings() {
[[PackageSpecifier.fromString("a-b:c-d:1.2.3@srcaar"),
["a-b:c-d:1.2.3@srcaar", "a-b:c-d", "a-b.c-d-1.2.3.aar"]],
[PackageSpecifier.fromString("a-b:c-d:1.2.3@aar"),
["a-b:c-d:1.2.3@aar", "a-b:c-d", "a-b.c-d-1.2.3.aar"]],
[PackageSpecifier.fromString("a-b:c-d:1.2.3"),
["a-b:c-d:1.2.3", "a-b:c-d", "a-b.c-d-1.2.3"]],
[PackageSpecifier.fromString("a-b:c-d"),
["a-b:c-d", "a-b:c-d", "a-b.c-d"]],
[PackageSpecifier.fromString("a-b"), ["a-b", "", ""]],
[PackageSpecifier.fromString(""), ["", "", ""]]].each {
pkg, expected ->
List<String> result = [pkg.specString,
pkg.groupArtifactString,
pkg.filename]
if (result != expected) {
throw new Exception(
sprintf("Invalid strings returned %s, expected %s for %s",
result, expected, pkg))
}
}
}
def testPackageSpecifierVersionRange() {
[[PackageSpecifier.fromString("a-b:c-d:[1.2.3,4.5.6]"), "[1.2.3,4.5.6]"],
[PackageSpecifier.fromString("a-b:c-d:"), ""]].each {
pkg, expected ->
String result = pkg.versionRange.versionExpression
if (result != expected) {
throw new Exception(
sprintf("Invalid version range %s, expected %s for %s",
result, expected, pkg))
}
}
}
def testGetMostRecentPackagesByGroupArtifact() {
[[["a.b.c:d-e:1.2.3", "a.b.c:e-f:+"],
["a.b.c:d-e": "a.b.c:d-e:1.2.3",
"a.b.c:e-f": "a.b.c:e-f:+"]],
[["a.b.c:d-e:3.0.0", "a.b.c:d-e:1.2.+", "a.b.c:d-e:2.1.+"],
["a.b.c:d-e": "a.b.c:d-e:3.0.0"]]].each {
List<String> packages, Map<String, String> expected ->
Map<String, String> result =
PackageSpecifier.mostRecentByGroupArtifact(
PackageSpecifier.fromStrings(packages)).collectEntries {
[it.key, it.value.specString]
}
if (result != expected) {
throw new Exception(
sprintf("Unexpected map %s, expected %s for %s",
result.toString(), expected.toString(),
packages.toString()))
}
}
}
def testLoosenVersionExpression() {
["1.2.3": "1.2.3+",
"1.2.3+": "1.2.+",
"1.2.+": "1.2+",
"1.2+": "1.+",
"1.+": "1+",
"1+": "+",
"+": "+"].each { String versionString, String expected ->
String result = (new Version(versionString)).loosen().version
if (result != expected) {
throw new Exception(
sprintf("Invalid loose version expression %s, " +
"expected %s for %s", result, expected, versionString))
}
}
}
def testGetVersionLockedPackageIndex() {
["com.google.android.gms:play-services-base:12.0.1": 1,
"com.google.firebase:firebase-core:12.0.1": 1,
"com.android.support:support-v4:23.0.+": 2,
"com.google.firebase:firebase-app-unity:4.3.0": 0,
"com.google.android.gms:play-services-base:15.1.2": -1].each {
packageSpec, expectedIndex ->
int index = getVersionLockedPackageIndex(
PackageSpecifier.fromString(packageSpec))
if (index != expectedIndex) {
throw new Exception(
sprintf("Invalid package lock %d, expected %d for %s",
index, expectedIndex, packageSpec))
}
}
}
def testAddVersionLockedPackageToSet() {
Map<Integer, Set<PackageSpecifier>> lockedPackages = [:]
[["com.google.android.gms:play-services-base:12.0.1", true],
["com.google.firebase:firebase-core:12.0.1", true],
["com.android.support:support-v4:23.0.+", true],
["com.android.support:support-vector-drawable:24+", true],
["com.google.firebase:firebase-app-unity:4.3.0", false],
["com.google.android.gms:play-services-base:15.1.2", false]].each {
String packageSpecifier, boolean expected ->
int resultIndex = addVersionLockedPackageToSet(
PackageSpecifier.fromString(packageSpecifier),
lockedPackages, [].toSet())
boolean result = resultIndex > 0
if (expected != result) {
throw new Exception(
sprintf("%s was incorrectly added to a version-locked set, " +
"returned %b, expected %b", packageSpecifier, result,
expected))
}
}
Map<Integer, Set<String>> expectedLockedPackages =
[1: [PackageSpecifier.fromString(
"com.google.android.gms:play-services-base:12.0.1"),
PackageSpecifier.fromString(
"com.google.firebase:firebase-core:12.0.1")].toSet(),
2: [PackageSpecifier.fromString(
"com.android.support:support-v4:23.0.+"),
PackageSpecifier.fromString(
"com.android.support:support-vector-drawable:24+")].toSet(),
0: [PackageSpecifier.fromString(
"com.google.firebase:firebase-app-unity:4.3.0")].toSet(),
(-1): [PackageSpecifier.fromString(
"com.google.android.gms:play-services-base:15.1.2")].toSet()]
if (lockedPackages != expectedLockedPackages) {
throw new Exception(
sprintf("Generated invalid set of locked packages %s, expected %s",
lockedPackages.toString(), expectedLockedPackages.toString()))
}
}
def testCreateVersionLockedSetBlacklist() {
Set<Integer> expectedBlacklist = [1].toSet()
Set<Integer> blacklist = createVersionLockedSetBlacklist(
["com.google.android.gms:play-services-base:12.0.1",
"com.google.firebase:firebase-core:12.0.1",
"com.google.android.gms:play-services-base:15.+",
"com.android.support:support-v4:23.0.+"].collect {
PackageSpecifier.fromString(it)
})
if (blacklist != expectedBlacklist) {
throw new Exception(
sprintf("Created invalid blacklist of locked package groups %s, " +
"expected %s", blacklist, expectedBlacklist))
}
}
def testAddVersionLockedPackageToSetWithBlacklist() {
Set<Integer> blacklist = [1].toSet()
Map<Integer, Set<PackageSpecifier>> lockedPackages = [:]
["com.google.android.gms:play-services-base:12.0.1": -1,
"com.google.firebase:firebase-core:12.0.1": -1,
"com.android.support:support-v4:23.0.+": 2].each {
String packageSpecifier, int expectedIndex ->
int resultIndex = addVersionLockedPackageToSet(
PackageSpecifier.fromString(packageSpecifier),
lockedPackages, blacklist)
if (resultIndex != expectedIndex) {
throw new Exception(
sprintf("%s was incorrectly added to a version-locked set, " +
"return %d, expected %d", packageSpec, resultIndex,
expectedIndex))
}
}
}
def testMostRecentVersionLockedPackagesFromSet() {
Map<Integer, Set<PackageSpecifier>> versionLockedSets = [
1: [PackageSpecifier.fromString(
"com.google.android.gms:play-services-base:12.0.1"),
PackageSpecifier.fromString(
"com.google.firebase:firebase-core:12.0.+")].toSet(),
2: [PackageSpecifier.fromString(
"com.android.support:support-v4:23.0.+"),
PackageSpecifier.fromString(
"com.android.support:support-vector-drawable:24.+")].toSet()]
Iterable<String> versionLockedList =
PackageSpecifier.specStrings(
mostRecentVersionLockedPackagesFromSet(versionLockedSets))
Iterable<String> expectedPackageList = [
"com.android.support:support-v4:24.+",
"com.android.support:support-vector-drawable:24.+",
"com.google.android.gms:play-services-base:12.0.+",
"com.google.firebase:firebase-core:12.0.+",
]
if (versionLockedList != expectedPackageList) {
throw new Exception(
sprintf("Invalid version-locked packages %s, expected %s " +
"given %s", versionLockedList, expectedPackageList,
versionLockedSets))
}
}
def testVersionLockPackages() {
List<PackageSpecifier> packages = [
"com.google.android.gms:play-services-base:12.0.1",
"com.google.android.gms:play-services-core:12.0.+",
"com.android.support:support-v4:23.0.+",
"com.android.support:support-vector-drawable:24.+",
"com.foo.bar:do-not-include-this:1.2.3",
].collect { PackageSpecifier.fromString(it) }
Iterable<String> expectedPackageList = [
"com.android.support:support-v4:24.+",
"com.android.support:support-vector-drawable:24.+",
"com.google.android.gms:play-services-base:12.0.+",
"com.google.android.gms:play-services-core:12.0.+",
]
Iterable<String> versionLockedList =
PackageSpecifier.specStrings(versionLockPackages(packages))
if (versionLockedList != expectedPackageList) {
throw new Exception(
sprintf("Invalid version-locked packages %s, expected %s given %s",
versionLockedList, expectedPackageList,
PackageSpecifier.specStrings(packages)))
}
}
def testSortPackagesByVersion() {
List<String> unsorted = [
"a.b.c:e-f:1.0.0",
"a.b.c:e-f:[0.5.2,3.2.0]",
"a.b.c:e-f:2.1.+",
"a.b.c:e-f",
"a.b.c:e-f:1.0.1",
]
List<String> expectedSortedByVersion = [
"a.b.c:e-f",
"a.b.c:e-f:1.0.0",
"a.b.c:e-f:1.0.1",
"a.b.c:e-f:2.1.+",
"a.b.c:e-f:[0.5.2,3.2.0]",
]
List<String> sortedByVersion = PackageSpecifier.specStrings(
PackageSpecifier.sortByVersion(
unsorted.collect {
PackageSpecifier.fromString(it)
}
))
if (sortedByVersion != expectedSortedByVersion) {
throw new Exception(
sprintf("Invalid sorted package list %s, expected %s for %s",
sortedByVersion, expectedSortedByVersion, unsorted))
}
}
def testGetModifiedPackageVersions() {
PackageMapper packageMapper =
new PackageMapper(dependenciesMap: ["foo:bar": "foox:bish:1.0.0"])
List<String> oldPackages = [
"a.b.c:e-f:1.2.3",
"a.b.c:f-h:4.5.6",
"e.f.g:a-b:[0.1.0]",
"e.f.g:a-b:0.1.0",
"to.be:removed:1.0.0",
"z.z.z:x-y:5.0.0",
"z.z.z:x-y:5.0.1",
"z.z.z:x-y:6.0.0",
"com.android.support:appcompat-v7:23.0.+",
"foo:bar:1.2.3",
"foo:bar:2.0+",
]
List<String> newPackages = [