Files
BingoGrassland/Assets/ExternalDependencyManager/Editor/1.2.186/Google.JarResolver.dll
T

7152 lines
356 KiB
Plaintext
Raw Normal View History

2026-04-20 13:49:36 +08:00
MZÿÿ¸@º´ Í!¸LÍ!This program cannot be run in DOS mode.
2026-05-08 11:03:00 +08:00
$PEL_+hà" 0ˆ À @…ó¥OÀ´à 8  H.textL† ˆ `.rsrc´ÀŠ@@.reloc àŽ@BHÀ1È2°q"(
2026-04-20 13:49:36 +08:00
*0É
o
(
o
8o
(
(
(
(
(
,(
(
2026-05-08 11:03:00 +08:00
~o
2026-04-20 13:49:36 +08:00
þ,sˆ  ,~o!
+
o"
:hÿÿÿÞ ,o#
Ü
+
*٦ .s$
*z(%
}}}*0({(&
+*0 {
+*0*(('
.rp+rp(&
(
2026-05-08 11:03:00 +08:00
+*0Ò{%{(s(
2026-04-20 13:49:36 +08:00
¤(,(~(('þ+ ,r)p(()
o*
 +e(
('
þþ
,Kr…prp()
(€þ,p(+
o*
 + +*0s,
%-p+r po-
%rp(
()
o-
(
þ , o-
o.
+*(/
r/p(
(
(+
o-
(0
-ÍÞþ o#
ÜrGpo1
(2
(rKp(&
( (3
Þ$rop((4
o*
Þ,p((+
2026-05-08 11:03:00 +08:00
o*
2026-04-20 13:49:36 +08:00
(o5
+*Sª Ê$0wþ
,#%-&~µþs6
%€¶~  +2š
,  o7
þ+,  o8
o9
X Ži2È+*0Ès,
o.
8€(/
(
rGprpo9
(
w% o:
(
o;
o<
rGprpo9
( (=
rp (+
o-
(0
:tÿÿÿÞþ o#
Ür+po1
(2
+*“¢0r/p(
(
(=
+*0"(>
þ?
s6
~( 
+*0}u%rAp¢%r…p¢%rp¢%rp¢€u%rGp¢%r×p¢%p¢%p¢%p¢%p¢€s@
%rçpoA
&€*0 ~

+*"(%
*BrëpsB
*0J(%
þ
s,
 (C
w%
oD
8´ šoE
poF
,woD
š,;rpoF
-*r+poF
-rSpoF
-rypoF
++,+3 poG
  ,o;
YoH
o-
X Ži?Bÿÿÿr+po1
(2
((((( ("(*0 (%
o(o(o(o(oþ
,ooI
t( o!þ ,o!oI
t("o(*{
*"}
*{*"}*{*"}*{*"}*{*"}*{*"}*{*"}*0(p((J
+*0b
u%(¢%p¢%(¢%p¢%(¢(K
((
þ ,p((J
 +*0 ($
+*0 poG
-+o;
YoH
poG
-+o;
YoH
w%.oD
w%.oD
ŽiŽi(L

2026-05-08 11:03:00 +08:00
8„ š š(M
2026-04-20 13:49:36 +08:00
, (M
+,(þ  ,
+bþ  ,
+P+/oN
  þ

,
+0 þ,
2026-05-08 11:03:00 +08:00
+ X
þ:oÿÿÿŽiŽiþ
2026-04-20 13:49:36 +08:00
+
u%p¢%p¢%p¢€ s *0S {sO
~oP
+(Q
(
o-
(R
-ßÞþo#
Ü
+ *%>0
(*
+*03
s2 þs ~%-&%-
&-+(S
sT
+9oU
2026-05-08 11:03:00 +08:00
 oV
2026-04-20 13:49:36 +08:00
þþ  ,p(=
sW
zXo;
}s,
%-&uoX
prp(&
u%rpr%p(&
(&
¢%r?pr%p(&
(&
¢oX
(+}~{oY

+
*0*~,
,~++
,~o—*0Ãoþ ,
s,
 ~oZ
+=([
(\
o$o]
o^
,(_
o-
+
(`
-ºÞþo#
Üoa
þ,o1
ooooo!s
+ **Jt0î u%rMp¢%¢%rsp¢%¢%rp¢%¢%p¢%-p+¢%p¢% -p+ p(2
¢%
p¢% -p+ p(2
¢(K
(+%-&usO
{oX
(+o1
s(, {o$ob
*0sc
~od
oe
+X(f
{og
+%(h
(i
(j
sob
(k
-ÒÞþo#
Ü(l
-ŸÞþo#
Ü+*02be}^sc
}sm
*0bsn
so
op
+)(q
 or
,+ os
& ot
(u
-ÎÞþo#
Ü+*6K0~þ
, ~ov
*zs,
}sc
}(%
*0vsm
sw
%r psx
rMpsy
oz
%rƒpsx
r¿psy
oz
%rópsx
r¿psy
oz
s{
*f(%
(<s|
2026-05-08 11:03:00 +08:00
}*V(%
2026-04-20 13:49:36 +08:00
s|
}*0m(%
(
,(<s|
}+Fs@
}w%,oD
 +š
2026-05-08 11:03:00 +08:00
{ oE
oA
2026-04-20 13:49:36 +08:00
&X Ži2Þ*0){sO
o}
r9po1
(2
+*0{s|
+*0$u 
,{{o~
+ +*0{o
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*0
+*0(;o€
+*0Du%r=p¢%rMp¢%rep¢%ryp¢%rp¢%rp¢%r™
+*0p()
(
+*0(
(>
2026-05-08 11:03:00 +08:00
+*0!
  (;
o8oþ,uj o.
2026-04-20 13:49:36 +08:00
+7(/
(
o7
  ,(
(?

`(0
2026-05-08 11:03:00 +08:00
-ÀÞþ o#
2026-04-20 13:49:36 +08:00
Ü
o„
+yoþ  ,] o€
o…
o†
þ  ,+Io†
0 sO
(‡
oˆ
+p(?
o„
+
p(‰
*@D„04
  (;
s@
oþ,n
(> o.
+6(/
(
(?_  ,(
oA
&(0
-ÁÞþ o#
Ü+woþ

,h
(
 o.
 +1 (/


(

,
(
oA
&+
 (0
-ÆÞ þ o#
Üo†
, s5+s4+*JCÈ>:s6(@*0(Ao
+*"}!*{!*0~ 
+b(
o]
o^
,Fo
oH
o
o
Xo<
o
rlprßpo9
(J
(“
-•Þþ o#
Ü+*
o|0prlpo9
+*0Œ(Frlprppo9
(G
~o.
+=(/
(
oF
,"(
(
o;
o<
(=
+
(0
-ºÞþ o#
Ü(D**Jt0 (E
~o.
+=(/
(
2026-05-08 11:03:00 +08:00
oF
2026-04-20 13:49:36 +08:00
,"(
(
o;
o<
(=
+
(0
-ºÞþ o#
Ürpprlpo9
+*J^¢r×prtpo9
rtprppo9
(D*0#!(Erpp~”
(•
o9
+*"}"*{"*0"(M @Bj(R
+*0rxp(E(M(+
+*0(Eo
+*0$#u

,oE(E
+ +*0Ž$(
,j+zw%.oD
j j (
+Ešj(—
Þ&p()
jÞZX Z XŽi2³+*E
R.0%s,
o˜
+Do™
poEoM(
,r p+rpoM()
(+
o-
o"
-´Þ ,o#
Ür+po1
(2
2026-05-08 11:03:00 +08:00
+ *P_ 0
2026-04-20 13:49:36 +08:00
%rpr(po

%r8psx
o
%rjpsx
o
%rzpsx
o
%r´psx
o
%repsx
o
%rMpsx
o
%rÌpsx
o
%räpsx
o
%r psx
o
%r: psx
o
%rP psx
o
%rn psx
o
%rŠ psx
o
*"}#*{#*"}$*{$*0ú&r´ p(&
(&
 
Þ"
p o
(+
ݵs[%oJ (8†šoE
poF
  ,+[r
poF


2026-05-08 11:03:00 +08:00
,r
2026-04-20 13:49:36 +08:00
p(;
o<
2026-05-08 11:03:00 +08:00
oL+,r$
poF
2026-04-20 13:49:36 +08:00
  ,r$
p(;
o<
oVXŽi?oÿÿÿ+* "/"(T*0'{%
sO
+*04(
2026-05-08 11:03:00 +08:00
{%o 
2026-04-20 13:49:36 +08:00
þ ,
{%
 +*0)
(]
2026-05-08 11:03:00 +08:00
+
2026-04-20 13:49:36 +08:00
 oN
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
-ßÞþ&o#
Ü
2026-05-08 11:03:00 +08:00
þ,+= 
2026-04-20 13:49:36 +08:00
+ 
 
-ëÞþ(o#
Ü+*%:m0I*(]
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+
2026-05-08 11:03:00 +08:00
oY ,
Þ
-ßÞþ&o#
2026-04-20 13:49:36 +08:00
Ü
+ *%4Ns­
}%(%
}&}'þd(×*0¬+
,8,{&
-{&
+ ,]
{'
(=

+ 
o´
X
Ži2á
Þ&Þ*V0Â,
~jr8
prz
po¶

p(Š
p(+
rH p}•}”{•}:þ}~i}<þ§2o‘o*0 -
~jr˜ prÞ po¶
r* p(+
2026-05-08 11:03:00 +08:00
scþ©
(h*0Ä.þ
2026-04-20 13:49:36 +08:00
,þ+ -rx p+r%
p
p-+rp(S(4
-+%r^ps¸

s(
¤
,~jrvp rÌpo»
+~jr.p rpo»
*0:/
-p+r"p r€p(Š}•}”p(+
}™{•}:þ}~i}< þ
,
þß p(+
þ­- ô+ úoo*0²0
r€p(Šp}•}”}™r`p}—rlp}˜~i}<o\þ¯}“o*^(%
}.}/*0O1{.r|p
%rŽpr®po
(€
po¼
þþ , + +*072s`
 ( 
8 špoF
, ~+o]
o^
,8s[%

o
oH oEo]o¿
8—þ,8ˆ~,o]
o^
  ,

o
oV+Q~-o]
o^


,5{/

o
(&
r´ p(&
oX X
Ži?éþÿÿ + *033
{.pþ±
(e*04s,

+
oIo-

-âÞþ,o#
Ü{.pr9po1
(2
()
r$prXpr`prfpsx
(f*"1ºrzpsx
€+psx
€,psx
2026-05-08 11:03:00 +08:00
€-*0M5(%
2026-04-20 13:49:36 +08:00
}5
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
~”
2026-04-20 13:49:36 +08:00
(•
(=
o;
2026-05-08 11:03:00 +08:00
o<
2026-04-20 13:49:36 +08:00
(Z}6*0 6{6
+*0î7s`
  
(‚šoE

r
p(Œ
  , r0p(Œ
 rXp(Œ

 
`

,   8QpoF
,89(
,G , oE(
- oM(
2026-05-08 11:03:00 +08:00
þ++, oEo] o¿
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
þ,r€poF
  þ,* þ,s[%oD%oX
2026-04-20 13:49:36 +08:00
8‘ þ9„po¼
þþ,foH
2026-05-08 11:03:00 +08:00
oE
2026-04-20 13:49:36 +08:00
Xo<
2026-05-08 11:03:00 +08:00
oE
2026-04-20 13:49:36 +08:00
p(Œ
,
oV+p(Œ
2026-05-08 11:03:00 +08:00
, oLXŽi?8þÿÿ+*0z8s`
  
2026-04-20 13:49:36 +08:00
(8IšoE

r
p(Œ
, 8r0p(Œ
 rXp(Œ

2026-05-08 11:03:00 +08:00
 
2026-04-20 13:49:36 +08:00
`,
  
þ, þ,poF
,
w%|oD
  Ži2 (
+, +v Žiu +  šoE
¢X Žiþ š

o]s[%
oD% šoV% šoL%oXo¿
XŽi?¬þÿÿ+*0r9
(r,(roN~4þþ+}×{5p{×-r p+p(=
þ³
(e*0 `:s´
(S prp()
príp"ÈCþµ

*Zróp @Bj(R€4*0;(
,rpr p(+
s,
%(„o-
('
þ
,u%p¢%p¢oX
u%p¢%prÁp(&
¢+jš
+6
(=
(&
(&
 


,  ÞE
-ÁÞþ.o#
ÜXŽi2Ž(…
,
-+ + * prpprp(+

*0
<
rpp(x þ
9sqorþ,UoN~4þ,þ¸
ou+
+Orp(x þ,,skolþ  ,
+
(y*n}7(‡r†p}°*0=
p()
o*
þ»
þ , + +*0_ ~rp|7
,{7o/+)rp(Ýr0pþçs()}7(† +*0q>
}}}}}}þá
, 
+þÓ
*0?(
+*0©@
}  (×

þþ,
þþ  ,
ÞC
~8þ  ,/rPp%¢% ¢%
¢%
¢(Ü
2026-05-08 11:03:00 +08:00
(‰
2026-04-20 13:49:36 +08:00
 Þ('
3
r9po¯
+  ,
+.r=poF
-r9poF
þ+

,
(
2026-05-08 11:03:00 +08:00
_
2026-04-20 13:49:36 +08:00

r p('
þ,rAprQpr=p+hr[prepr9pr9prupo9
('
-,
rpoÞ
2026-05-08 11:03:00 +08:00
+_,r‰prprpoˆ
2026-04-20 13:49:36 +08:00
(+
p%¢%¢%¢%¢%¢%¢%¢(Ü
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
}
{


{


,={


{


{


8˜{


{


{


þ,Vo.
+/(/
{

(
(
2026-05-08 11:03:00 +08:00
(0
2026-04-20 13:49:36 +08:00
-ÈÞþ o#
Ü{

- { þ+
{

2026-05-08 11:03:00 +08:00

{
2026-04-20 13:49:36 +08:00

%-&(ê
{

&{ þ,"{ {
{


%s,
¢%s,
¢},W{

2026-05-08 11:03:00 +08:00
,<{š
o-
2026-04-20 13:49:36 +08:00
{š
2026-05-08 11:03:00 +08:00
o-


2026-04-20 13:49:36 +08:00

} %{

¢%{

¢þåþç& + š!!oË X  Ži2ã{

{ 
&r p{šo1
(2
r p{šo1
(2
{

(×
þþ"", 
þþ##,
Þ,$~8þ%%,p $(4
(‰
 Þ&&,€8'+'*(PmC/¹/8g,/0Arxp(ö
+*0Cr†p%,p+rp¢%¢%¢%¢%¢%Œ|¢(Ü
+*0('
2026-05-08 11:03:00 +08:00
.r p+r:p
2026-04-20 13:49:36 +08:00
+*0B('
.rDp+rPp

2026-05-08 11:03:00 +08:00
(€ þ ,(‚š
2026-04-20 13:49:36 +08:00
ÞPÞIu%r9p¢%¢%r\p¢%¢%p¢%o
¢%p¢(K
Þ
+ *1GI/"}=*{=*0)C{>
 
t> |>(+
3ß*0)C{>
 
t> |>(+
3ß*03D
-Ð

t+s”
oZ +***0
þ
,

*0
þ
, 
*0T(Z"þ}9r p}:r p};}>þ}{ þsÿ
*}:þ}9};(\*0ÇE}{:(
þ
}(
&{:(
(
(
þ{9"€?(
r p(
{;(
-{;+p"ÈBZiŒ|()
(
(
(
(
(]*0ÉF
}{<}{} {þï(ˆ{{þõ {{<p(+
o*
(†{þí{þß(*0{>þ
,
{>*&(_*Ns
}<(a*0(‡þ
+*&(%
*0(Gs,
Qs,
Qs,
Q
u%rp¢%r+o 
 š
r$poF
- rHpoF
-
rnpoF
+,
oE
(
,
8†(
þ,vr$p(Œ
,P oE
(&
2026-05-08 11:03:00 +08:00
(
o-
2026-04-20 13:49:36 +08:00
+FrHp(Œ
2026-05-08 11:03:00 +08:00
,P oE
2026-04-20 13:49:36 +08:00
o-
+"rnp(Œ
  ,P oE
o-
X Ži?ÿÿÿ*0loa
þ
,@~jrp(!po»
pr+po1
(2
()
+~jrp(!po»
*05oo

r{ p(Œ
-o$+o#r‰ p(=
+*0H
o 
+Ro 
(™
o(š o

,p(J
+ o
o"
-¦Þ ,o#
Ü+*^m 0Iþ
,(C
w%
oD
špoF
, 8Hu%r p¢%r p¢%
2026-05-08 11:03:00 +08:00
+( šoF
2026-04-20 13:49:36 +08:00
, ( 8X Ži2Ñ(
þr p 
2026-05-08 11:03:00 +08:00
~
(
2026-04-20 13:49:36 +08:00
  ,~
o;
Xo<
+:(
  ,.(


(
þ,
o;
Xo<
(
2026-05-08 11:03:00 +08:00
9†(
2026-04-20 13:49:36 +08:00
(
þ,k~
(•
(J
(
, +;(
  (
þ,~
2026-05-08 11:03:00 +08:00
(•
 (J
 
 (
2026-04-20 13:49:36 +08:00
,t~
~
2026-05-08 11:03:00 +08:00
(•
2026-04-20 13:49:36 +08:00
(J
(
, +A~
(
  (
þ,!~
~
(•
 (J
 
2026-05-08 11:03:00 +08:00
 (
2026-04-20 13:49:36 +08:00
þ,'
,p (4
 +r<!p(+
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
( +*0J
s
}þøs
~oP
2026-05-08 11:03:00 +08:00
+,(Q
(
2026-04-20 13:49:36 +08:00
(
((
o
2026-05-08 11:03:00 +08:00
(R
2026-04-20 13:49:36 +08:00
-ËÞþo#
Ü o 
+o 
o!Ži(
o"
-ÜÞ
,o#
Ü +wo 

+L
o 
  o!   Žiþþ,+& o(š
  š
(
o

2026-05-08 11:03:00 +08:00
o"
2026-04-20 13:49:36 +08:00
-«Þ

2026-05-08 11:03:00 +08:00
,
2026-04-20 13:49:36 +08:00
o#
Ü X  þ:{ÿÿÿsm
{o
+5 o
tupo
t
o1
(2
s(
o
o"
+*(,9e
ÃY
0K
}}}} }"}%(.}!{!o
s
}$~jr†!p(!r¦!po»
}({(orÄ!p(&
(
{(~io ,]Ð
2026-05-08 11:03:00 +08:00
o 
2026-04-20 13:49:36 +08:00
%s(
¤%r2"p{(orŒ"p(&
(
s(
¤~i(þ+,^~jr¬"prô"po¶
rB#p{(oÐ
o 
o!
(4
{{$o"
8Ls,
{!o
oP
2026-05-08 11:03:00 +08:00
+(Q
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
o-
2026-04-20 13:49:36 +08:00
(R
2026-05-08 11:03:00 +08:00
-àÞþo#
Ü}r¢#p(Š}{o`}~i{o#
2026-04-20 13:49:36 +08:00
þú
2026-05-08 11:03:00 +08:00
}#þû
}&þþ}'{!o
2026-04-20 13:49:36 +08:00
o€
2026-05-08 11:03:00 +08:00
sO
2026-04-20 13:49:36 +08:00
(
  , rà#p
%rì#p{%o
%r$p{ (
2026-05-08 11:03:00 +08:00
o
%r$prppo1
(2
o
%r4$prpp o1
2026-04-20 13:49:36 +08:00
(2
o
%rV$p(L-rp$p+po
%rt$po
{rž$p}•{}”{{{•}:{þ}{~i}<{$o$

2026-05-08 11:03:00 +08:00
Z2X}){((/~iþs%
2026-04-20 13:49:36 +08:00
o
2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00
,{o+{{$o"
*0sLs
};~C%-&~Bþs6
%€C}4s,
s@
}3(o&
2026-05-08 11:03:00 +08:00
+So'
2026-04-20 13:49:36 +08:00
{4o8
o
râ$poF
-r%poF
+  , o-
2026-05-08 11:03:00 +08:00
o"
2026-04-20 13:49:36 +08:00
-¤Þ
,o#
Ü{3o(
o)
s*
~ s|
po+
&s,
o,

s   }= 
(-
2026-05-08 11:03:00 +08:00
}<rL%p {<()
2026-04-20 13:49:36 +08:00
 {>%-&  þ s.
%}>(/
 
+| 
š(
rf%p(Œ
,o-
+C {={4o8
 o0
-s,
+o-
o1

X

 Ži?yÿÿÿ
(2
2026-05-08 11:03:00 +08:00
: ÿÿÿÞ
2026-04-20 13:49:36 +08:00
þ:o#
Üoa
1 oa
þ+,Nr˜%prf%pr+po1
(2
r+po1
(2
2026-05-08 11:03:00 +08:00
(4
2026-04-20 13:49:36 +08:00
~jr×(prU)po¶
s*
}5o.
+b(/
2026-05-08 11:03:00 +08:00
 (
o0
,B{5(
o0
-s,
2026-04-20 13:49:36 +08:00
+oX
{5(
o1
(0
-•Þþ o#
Üþs6
}8s,
}6þ 
}:{5o3
}7}9þ

}9{9
*(W
ü07Ms
}E}F}G}Hþ

*0áNs
}J}K}M}N}L{L(
-{L(
þ+ ,O~jr¿)pr*po¶
rg*p{L(
-{L+r(,p()
{N
+Aþ
2026-05-08 11:03:00 +08:00
}Oþs4
2026-04-20 13:49:36 +08:00
{K{L(1þ{M(*0=Os
2026-05-08 11:03:00 +08:00
}Q}R}S}T{Rþs5
2026-04-20 13:49:36 +08:00
(z*0QP(
~   +0š
 oG
2026-05-08 11:03:00 +08:00
,o;
2026-04-20 13:49:36 +08:00
o;
YoH
+X Ži2Ê+*0(3(&
+*0·Qs
}Z}[}](s|
s6
}X{Xo7
2026-05-08 11:03:00 +08:00
}Y{Yþ ,{]
2026-04-20 13:49:36 +08:00
+U~jr6,p%r^p|Y
s(
¤rn,po»
s,
}\þ sÿ
(8
2026-05-08 11:03:00 +08:00
*08R(9
2026-04-20 13:49:36 +08:00
w%.oD
š
(M
þ , þþ
2026-05-08 11:03:00 +08:00
+ *0ïS(;þ ,
þ,
r¨,p(&
2026-04-20 13:49:36 +08:00

,)
rÐ,po¼
2026-05-08 11:03:00 +08:00
þþ,
rò,p(&
2026-04-20 13:49:36 +08:00
þ,
+e ,(:
2026-05-08 11:03:00 +08:00
" üDþþ+  ,
+>þ
2026-04-20 13:49:36 +08:00

,0o8  (Ao8o;
 o†
þ  ,
2026-05-08 11:03:00 +08:00
+
+ *0¤T(
r
-p
poG
-r:-p+r p(4
(€ þ ,?r>-p%¢%Œ|¢%¢%¢(Ü
(<
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
ÞÞ(<
z
+ */0Us@
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
~?  +`š
2026-04-20 13:49:36 +08:00
(=o&
+/o'
 (&
2026-05-08 11:03:00 +08:00
(&
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
, oA
&o"
-ÈÞ
,o#
2026-04-20 13:49:36 +08:00
ÜX Ži2šo†
0+s5+*$<`
0Vr-p()

poG
2026-05-08 11:03:00 +08:00
þ
,(=

(&
d(>
þ,r´-p()
2026-04-20 13:49:36 +08:00
(&
2026-05-08 11:03:00 +08:00
r$.p()
2026-04-20 13:49:36 +08:00
(?
2026-05-08 11:03:00 +08:00
(@
(
2026-04-20 13:49:36 +08:00
þ  ,ÝX(A
&('þ
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
, Ý4,
2026-05-08 11:03:00 +08:00
þ+  `þ,Ýr¨,p(&


 9r.p(&

(A
&rò,p(&
(
(&

2026-04-20 13:49:36 +08:00
,
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
,(B
2026-05-08 11:03:00 +08:00
+1rš.p(&
2026-04-20 13:49:36 +08:00
(A
&þ,ÝAr¾.p(&
 
%-& 
 (
2026-05-08 11:03:00 +08:00
9q 
2026-04-20 13:49:36 +08:00
(C
,H 
(D
rÆ.p()
 (?
(@
(
þ,Ý·þ9(Ao8o8s|
o;
~D%-&~BþsE
%€Dr/p%oF
¢%oF
¢%¢%oF
¢(Ü
2026-05-08 11:03:00 +08:00
o,
 +Q (-
2026-04-20 13:49:36 +08:00
!!o+
2026-05-08 11:03:00 +08:00
&r˜/p()

!(&
2026-04-20 13:49:36 +08:00
(?
2026-05-08 11:03:00 +08:00
(@
(
þ"",  (2
-¦Þ þ:o#
2026-04-20 13:49:36 +08:00
Ü ##9¿rä/p(&
2026-05-08 11:03:00 +08:00
$$(À
þ%%,($u%r
2026-04-20 13:49:36 +08:00
0p¢%r.0p¢%rP0p¢(G
2026-05-08 11:03:00 +08:00
rz0p(+
2026-04-20 13:49:36 +08:00
rÔ0p(+
2026-05-08 11:03:00 +08:00
(
(?
2026-04-20 13:49:36 +08:00
(@
2026-05-08 11:03:00 +08:00
(
þ&&,Ý(H
2026-04-20 13:49:36 +08:00
u%¢(8rW1p(+
2026-05-08 11:03:00 +08:00
r…1p()
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
(?
(@
(
þ'',݇þ((,Þqu%¢(Þ)rÃ1p)(+
ÞÞ7r2p()
(?
(@
**(
2026-04-20 13:49:36 +08:00
þ++, *Ü+*ALþ^\uF»/ub×7ru%r.p¢%r¾.p¢€?*0LW~Dþ
2026-05-08 11:03:00 +08:00
,3 (
2026-04-20 13:49:36 +08:00
,+&rs2p(&
r2p(&
€D~D+*0~B(&
2026-05-08 11:03:00 +08:00
+*0 srŸ2p(Ö(þþ
2026-04-20 13:49:36 +08:00
+*0>Xr§2p
(I
o^
,(J

o
2026-05-08 11:03:00 +08:00
(&

+ *0Y
2026-04-20 13:49:36 +08:00
sm
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
8
2026-05-08 11:03:00 +08:00
(J
poN
þ  ,8Z  (


, (
  (K
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
(J(K
2026-04-20 13:49:36 +08:00
(JoF
2026-05-08 11:03:00 +08:00
þ  ,
2026-04-20 13:49:36 +08:00
(=
2026-05-08 11:03:00 +08:00
p(=
(&
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
þ

,{((
2026-04-20 13:49:36 +08:00
,G(L
2026-05-08 11:03:00 +08:00
tKoM

2026-04-20 13:49:36 +08:00
oN
Þr÷2p (+
Þ+r4p(4
,s(
2026-05-08 11:03:00 +08:00
o
2026-04-20 13:49:36 +08:00
(O
+
,
2026-05-08 11:03:00 +08:00
(P
&

:rþÿÿÞþ.o#
ÜoP
+!(Q
2026-04-20 13:49:36 +08:00
(
(
_
(R
-ÖÞþo#
Ü+*ALü)%/«Ã.ñ0WZ(Q
ÞJ~jr·4prË4p(J
r5p(=
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
rK5po
2026-05-08 11:03:00 +08:00
(+
Ýþs,
o&
+eo'
2026-04-20 13:49:36 +08:00
s,
 
+8 
š    o" - oa
2026-05-08 11:03:00 +08:00
þ+

2026-04-20 13:49:36 +08:00
,+
2026-05-08 11:03:00 +08:00
X

 Ži2ÀoX
2026-04-20 13:49:36 +08:00
o"
-’Þ
,o#
2026-05-08 11:03:00 +08:00
Ür+psO
(1
2026-04-20 13:49:36 +08:00
(2
2026-05-08 11:03:00 +08:00
r+p(=
r+po1
(2
r+p(=

,r5p()
+ +* J/er×
2026-04-20 13:49:36 +08:00
0æ[~i(R
þ
,Ar£5p()
~jr·4pr 6p(J
r-6p(=
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
 8rg6p()
(3
~jr·4pr6p(J
2026-05-08 11:03:00 +08:00
r¡6p(=
2026-04-20 13:49:36 +08:00
ÞE ~jr·4prÃ6p(J
2026-05-08 11:03:00 +08:00
rß6p(=
2026-04-20 13:49:36 +08:00
rK5po
(+
 Þ +*f5E/0 Ì\(!
~jr7prG7po»
2026-05-08 11:03:00 +08:00
s,
u%r{7p¢%r­7p¢oX
2026-04-20 13:49:36 +08:00
rå7p~A(=

2026-05-08 11:03:00 +08:00
N%r8prG8pr8prÓ8ps!¢
2026-04-20 13:49:36 +08:00
~Aré8pr
2026-05-08 11:03:00 +08:00
9p þ,#r/9p(=
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
++*0 Œ](!
2026-04-20 13:49:36 +08:00
oS
þ,~jrQ9pr9po»
r±9p~H()
rÙ9p()
~H(Q
Þ9~jrñ9prU:po¶
2026-05-08 11:03:00 +08:00
rK5po
(+
 Ýðr½:prï:p(+
2026-04-20 13:49:36 +08:00
rï:psx
2026-05-08 11:03:00 +08:00
o&

2026-04-20 13:49:36 +08:00
+
2026-05-08 11:03:00 +08:00
o'
2026-04-20 13:49:36 +08:00
  oT
  ,+
2026-05-08 11:03:00 +08:00

o"
2026-04-20 13:49:36 +08:00
-ØÞ
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
,
o#
2026-05-08 11:03:00 +08:00
Üþ

,5~jr;prq;po¶
2026-04-20 13:49:36 +08:00
r×;prï:p(+
2026-05-08 11:03:00 +08:00
 8Iþ,~jr<prÖ<po¶
2026-04-20 13:49:36 +08:00
 8s,
2026-05-08 11:03:00 +08:00
(L, oS
þ+,T(:
"šiüDþ,@u%r,=p¢%r¢=p¢%r¶=p¢%r>p¢%rŒ>p¢%r˜>p¢oX
(­þ,(oX
2026-04-20 13:49:36 +08:00
N%rœ>pr ?prL?prˆ?ps!¢%rï:pr”?prâ?p(r,@ps!¢%rF@pr\@pr¦@p(rì@ps!¢~HrApr0Ap + *Q`9/Ç
2026-05-08 11:03:00 +08:00
0
2026-04-20 13:49:36 +08:00
^(­,
2026-05-08 11:03:00 +08:00
þ+
2026-04-20 13:49:36 +08:00
,r pQ~Bþ,$rNAp~B~C(4
Q(!
2026-05-08 11:03:00 +08:00
~jrýDpr-Epo»
roEp~C(=

N%r£Epr ?prL?pr»Eps!¢ ~CrÅEpråEpþ,r/9p(=

Q+ r pQ+*0h_s,
oS
þ 9I ,(F-
-(H++
2026-04-20 13:49:36 +08:00
rFp(
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
( þ,rFpr/p()
2026-05-08 11:03:00 +08:00
o-
2026-04-20 13:49:36 +08:00
,&r¤Fpo-
2026-05-08 11:03:00 +08:00
rÄFpo-
2026-04-20 13:49:36 +08:00
rGpo-
s*
2026-05-08 11:03:00 +08:00
(o
2026-04-20 13:49:36 +08:00
 o
2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00
(
oF

2026-05-08 11:03:00 +08:00

,|
2026-04-20 13:49:36 +08:00
(
o;
2026-05-08 11:03:00 +08:00
Xo<
2026-04-20 13:49:36 +08:00
(J(K
(
þ,(
 ,r.Gp(+
 +rBGp()
 +rzGp
(
()
2026-05-08 11:03:00 +08:00
   o0
2026-04-20 13:49:36 +08:00
þ,s,
2026-05-08 11:03:00 +08:00
   o1
2026-04-20 13:49:36 +08:00
 
2026-05-08 11:03:00 +08:00
(
o-
2026-04-20 13:49:36 +08:00
 o"
: ÿÿÿÞ
2026-05-08 11:03:00 +08:00
 , o#
Üo3
2026-04-20 13:49:36 +08:00
+Q(U
r¤Fpo-
2026-05-08 11:03:00 +08:00
r†Gp(V
p(W
2026-04-20 13:49:36 +08:00
o1
2026-05-08 11:03:00 +08:00
(2
2026-04-20 13:49:36 +08:00
(+
o-
rGpo-
2026-05-08 11:03:00 +08:00
(X
2026-04-20 13:49:36 +08:00
-¦Þþ>o#
Ü,r¼Gpo-
,ræGpo-
+*û±
È^&0`rHp(&
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00

,
2026-05-08 11:03:00 +08:00
+o(«(&
2026-04-20 13:49:36 +08:00
(Y
2026-05-08 11:03:00 +08:00
Þ<rBHp%¢%¢%rHp¢%o
¢(Ü

ÞróHprHp(+
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+ *( 4</0arkIp€@rHp~@(&
2026-04-20 13:49:36 +08:00
€ArŸIp€BrHp~B(&
€C€DrÏIp€GrHp~G(&
€H*0as@
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
rFp(
2026-05-08 11:03:00 +08:00
( (o
+=o
(
oF
,o;
Xo<
(Z
oA
&o"
-»Þ ,o#
Ü+*%In 0¨bs,
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
(
([
2026-04-20 13:49:36 +08:00

+E š(J
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
p(Œ
2026-05-08 11:03:00 +08:00
-p(Œ
+, o-
X
2026-04-20 13:49:36 +08:00
Ži2µ(\
2026-05-08 11:03:00 +08:00
+š oX
XŽi2Û
2026-04-20 13:49:36 +08:00
+
*0Mcs,
2026-05-08 11:03:00 +08:00
o,
+(-
oX
(2
2026-04-20 13:49:36 +08:00
-àÞþ:o#
2026-05-08 11:03:00 +08:00
Ü
+ *$80
(=
2026-04-20 13:49:36 +08:00
(&
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*0{dþ,(
,r÷Ip()
2026-05-08 11:03:00 +08:00
8ArJp(
2026-04-20 13:49:36 +08:00
()
2026-05-08 11:03:00 +08:00
rÒJp(=
2026-04-20 13:49:36 +08:00
(]
2026-05-08 11:03:00 +08:00
, 
2026-04-20 13:49:36 +08:00
þ+  ,NrÒJp(=
2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00
(  (
2026-05-08 11:03:00 +08:00
þ  ,rÜJp
2026-04-20 13:49:36 +08:00
 (4
2026-05-08 11:03:00 +08:00
(J
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
o<
2026-04-20 13:49:36 +08:00
s^
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
s_
2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00
o`
Þ
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
,
2026-05-08 11:03:00 +08:00
o#
ÜÞ&r:Kp(=
2026-04-20 13:49:36 +08:00
(4
ÝR r”Kpoa
ob
2026-05-08 11:03:00 +08:00
+Koc
2026-04-20 13:49:36 +08:00
tQod
(C
,(r¨Kpod
(4
oe
2026-05-08 11:03:00 +08:00
o"
2026-04-20 13:49:36 +08:00
-¬ÞuR,o#
Ü~i(R
þ,r
2026-05-08 11:03:00 +08:00
Lp()
89sf
2026-04-20 13:49:36 +08:00
%og
%r§Lpoh
2026-05-08 11:03:00 +08:00
%r+poi
2026-04-20 13:49:36 +08:00
%oj
(k
 ol
Þ
,o#
2026-05-08 11:03:00 +08:00
ÜÞ6r­Lp(=
2026-04-20 13:49:36 +08:00
% ¢%¢%¢%¢(Ü
Þ+*@ã
ð
Ú&&/@X˜
,
2026-05-08 11:03:00 +08:00
éS<6/0esm
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+Z
(
2026-05-08 11:03:00 +08:00
,+@on
2026-04-20 13:49:36 +08:00
þ,s@
oo
(J
oA
&
2026-05-08 11:03:00 +08:00
-Þþ.o#
Ü u%p¢% op
 (q

2026-04-20 13:49:36 +08:00
r p 
+p
2026-05-08 11:03:00 +08:00
š
2026-04-20 13:49:36 +08:00
(r
o,
2026-05-08 11:03:00 +08:00
+)(-
2026-04-20 13:49:36 +08:00
 

2026-05-08 11:03:00 +08:00
,+
2026-04-20 13:49:36 +08:00
(2
-ÎÞþ:o#
2026-05-08 11:03:00 +08:00
Ü,+X
Ži2ˆ
2026-04-20 13:49:36 +08:00
(s
 (=
   _  (t
2026-05-08 11:03:00 +08:00
:EÿÿÿÞ þAo#
Ü+*(g{å6¬Ân0f
(m (
2026-04-20 13:49:36 +08:00
þ ,
(
- r<Mp(u
2026-05-08 11:03:00 +08:00
+
2026-04-20 13:49:36 +08:00
(
þ9‰('
þTo
2026-05-08 11:03:00 +08:00
rZMpr po9
2026-04-20 13:49:36 +08:00
rhMprpMpo9
rs2p(&
2026-05-08 11:03:00 +08:00
r|Mp(&
2026-04-20 13:49:36 +08:00
(&
(
2026-05-08 11:03:00 +08:00
  ,
2026-04-20 13:49:36 +08:00
+ r|Mp(&
(
2026-05-08 11:03:00 +08:00


,
(
  ,
rŒMp(v
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
  ,
rœMp(w
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+
*0r°Mp(Å
+*0r¸Mp(Å
+*FrÂMpsB
€U*0Ig(
þ
,1p(„(=
2026-04-20 13:49:36 +08:00
(&
2026-05-08 11:03:00 +08:00
(&
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
,
+
2026-04-20 13:49:36 +08:00
+ *0 Æh
2026-05-08 11:03:00 +08:00
 (
þ ,V (
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
,ArÊMprìMprœMp(4
2026-04-20 13:49:36 +08:00
rÛNp"ÈC
2026-05-08 11:03:00 +08:00
ráNp(+
s#z+R(… 
þ,:rÊMprYOp()
2026-04-20 13:49:36 +08:00
rÛNp"ÈC
rÄPp(=
2026-05-08 11:03:00 +08:00
s#z+*VrÜPp(+
*05i

Þ&Ý rRp(x
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
%rœMp(Ào
(€ þ, r#Rp
 (y
o^
,V
2026-04-20 13:49:36 +08:00
poz
2026-05-08 11:03:00 +08:00
o
rFpo¯
þ,r“Rp(=
r™Rpr p({
sB
(|
  ,+?~U(}


,.~jr«RprÇRpo¶
rçRp~U(+
2026-04-20 13:49:36 +08:00
*
2026-05-08 11:03:00 +08:00
O0X ~V-(~
2026-04-20 13:49:36 +08:00
-(
2026-05-08 11:03:00 +08:00

þþ+
,+3(5,(+-
(-þ++ ,
r´Tp(‰
€V*"€V*0.j~Y- (

2026-04-20 13:49:36 +08:00
þ+
2026-05-08 11:03:00 +08:00
, s€Y~Y +*0'k~^
2026-04-20 13:49:36 +08:00
 
2026-05-08 11:03:00 +08:00
t ^(+
2026-04-20 13:49:36 +08:00
3à*0'k~^
2026-05-08 11:03:00 +08:00
 
t ^(+
3à*0>lС
o€
þ ,
2026-04-20 13:49:36 +08:00
þ, ++*0$rÁXpr p(Îo
rçXpo
+*0, ~H
+
2026-05-08 11:03:00 +08:00
+*0, ~A
2026-04-20 13:49:36 +08:00
+
+*0, ~C
2026-05-08 11:03:00 +08:00
+
+*"€`*0m~`(
2026-04-20 13:49:36 +08:00
þ , ~`

2026-05-08 11:03:00 +08:00
(p (
, rõXp(&
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
,>(
2026-04-20 13:49:36 +08:00
,
2026-05-08 11:03:00 +08:00
rs2p(&
2026-04-20 13:49:36 +08:00
rýXp(&
2026-05-08 11:03:00 +08:00
rõXp(&
2026-04-20 13:49:36 +08:00
(
-(
2026-05-08 11:03:00 +08:00
+,hr Yp(
 
2026-04-20 13:49:36 +08:00
+J 
š ~a (
2026-05-08 11:03:00 +08:00
o]
2026-04-20 13:49:36 +08:00
  ,  o^
+
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
, r/Ypoƒ
2026-05-08 11:03:00 +08:00
€`+
2026-04-20 13:49:36 +08:00
X
2026-05-08 11:03:00 +08:00

 Ži2®~`
+ *J€b(„
€c*0£n~H

,&(
~c(…
þ,€b~b(
þ,
~b8I (
9s,

  , o-
r5Yp(
oX
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00


  (Q
2026-04-20 13:49:36 +08:00
 
2026-05-08 11:03:00 +08:00
+{ 
š~do]
, o^
+,r/Ypoƒ
€b+H~eo]
2026-04-20 13:49:36 +08:00
, o^
+,r/Ypoƒ
€b+
X

2026-05-08 11:03:00 +08:00
 Ži?zÿÿÿ~b(
2026-04-20 13:49:36 +08:00
þ,+

2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
:?ÿÿÿÞ
þ.o#
ÜrGYp~b()
~b+*©Èq0orŸYp
,¥£+ +*0,(×+
+*0'p~g
 
t g(+
3à*0'p~g
 
t g(+
3à*0'q~k
 
t k(+
3à*0'q~k
 
t k(+
3à*0r
(o (
þ ,(
,
(
- rÙYp(u
+,9(
þ, r÷Yp(&
(
,
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
  ,
2026-05-08 11:03:00 +08:00
rÿYp(v
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+
2026-04-20 13:49:36 +08:00
*0's~o
2026-05-08 11:03:00 +08:00
 
2026-04-20 13:49:36 +08:00
t o(+
3à*0's~o
 
2026-05-08 11:03:00 +08:00
t o(+
3à*0Ät~p,~pr p(Œ
+
9—Ф
2026-04-20 13:49:36 +08:00
rZp%
2026-05-08 11:03:00 +08:00
ŒX¢%Œ¥¢(†
2026-04-20 13:49:36 +08:00
tu€pÞY&€p(‡
oˆ
2026-05-08 11:03:00 +08:00
 +8š
2026-04-20 13:49:36 +08:00
o‰
2026-05-08 11:03:00 +08:00

rSZp(Œ
2026-04-20 13:49:36 +08:00
, o
2026-05-08 11:03:00 +08:00
€p+ X Ži2ÂÞ~p+*"<^Y/0 u~q
2026-04-20 13:49:36 +08:00
+*0(+,
þ+
+*0tv€Ys
2026-05-08 11:03:00 +08:00
€Z€[€\rZp
2026-04-20 13:49:36 +08:00
€]€`r¥Zpsx
€a€bcþrßZpsx
€drG[psx
€er½[ps
€frë[p
2026-05-08 11:03:00 +08:00
€hs
2026-04-20 13:49:36 +08:00
€i~~ir\pr;\pr‰\pr prÁ\ps
2026-05-08 11:03:00 +08:00
r ]po
r-]p(o
()
o
rE]po
Ð
(“
o
2026-04-20 13:49:36 +08:00
o”
2026-05-08 11:03:00 +08:00
rk]po•
€js|€l€mrç]p
2026-04-20 13:49:36 +08:00
€nr p€pÐ
o 
r ^p(
2026-05-08 11:03:00 +08:00
rk^p(&
s€qs—
2026-04-20 13:49:36 +08:00
€r€sr¡^psx
€ts@
2026-05-08 11:03:00 +08:00
%rË^poA
&%rù^poA
&%r_poA
&%r;_poA
&%rk_poA
&%rµ_poA
&%r`poA
&%r)`poA
&%rA`poA
&%rg`poA
&%r“`poA
&%r½`poA
&€urÕ`psx
2026-04-20 13:49:36 +08:00
€vþjsÿ
þäsÿ
r ap~i(˜
*0àw(

þþ
2026-05-08 11:03:00 +08:00
, r3apsW
z~lr ap(Ýr0pþçs()€Xþös™
2026-04-20 13:49:36 +08:00

þös™
(
(þõ
2026-05-08 11:03:00 +08:00
þ÷s
2026-04-20 13:49:36 +08:00
þú
2026-05-08 11:03:00 +08:00
þü
2026-04-20 13:49:36 +08:00
(+ , +þøs™

2026-05-08 11:03:00 +08:00
þùs™
2026-04-20 13:49:36 +08:00

þûs™

þøs™
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
þùs™
(
2026-05-08 11:03:00 +08:00
þûs™
(
*02x
2026-04-20 13:49:36 +08:00
  E
2026-05-08 11:03:00 +08:00
+ 
+

+
++*0

(~
+*0þ
2026-04-20 13:49:36 +08:00
,€m~io*
2026-05-08 11:03:00 +08:00
*:~ro 
*0ªy
o,
+n(-
~r
+<
o]
o^
,rhbpo
(+

+

-»ÞþHo#
Ü(2
-‰Þþ:o#
Ü,+*"Ik {†0zþ
(<(
 
+- š(

,+ X
Ži2Í(â9+*š  (3oF


, +qXŽi2ÎŽ,~r
þ+  ,s|
  ,+3Ž,~r
þ+

,s|
,+*"€s*0Š{
,+}(Ë,
2026-04-20 13:49:36 +08:00
(-þ+ ,+d~sX€s~sþ
2026-05-08 11:03:00 +08:00
,+JrÜbp(
þ, ~sY€sr:cp-rjcp+rxcp()
*0c|Ð

~[þ ,7~\
~%-&~Šþk
2026-04-20 13:49:36 +08:00
%€
2026-05-08 11:03:00 +08:00
€\Þ
2026-04-20 13:49:36 +08:00
Ü*GZ0l}s{
2026-05-08 11:03:00 +08:00
}› ,þ|
(+;(Ñ
-(5,(.
þ+ ,rŒcp(‰
2026-04-20 13:49:36 +08:00
{
*0),
2026-05-08 11:03:00 +08:00
þ+
,#@@(ï*0_~
2026-04-20 13:49:36 +08:00
þ ,

o­

2026-05-08 11:03:00 +08:00
8 oc
u_þ,

o.
 (/

2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
(
r»gpoF
2026-04-20 13:49:36 +08:00
,
2026-05-08 11:03:00 +08:00
(
r˜>poG
+ 
(
oF
2026-04-20 13:49:36 +08:00
- , 
2026-05-08 11:03:00 +08:00
(
,
(
(C
+  ,F -!
(

(
o;
o<
(=
+
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00

(
o9
o
+
 (0
:?ÿÿÿÞ þ o#
Ü o"
:àþÿÿÞ uR

,
2026-04-20 13:49:36 +08:00
o#
Üo.
+a(/
rÁgp%¢%(
¢%(
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
¢%(
2026-05-08 11:03:00 +08:00
¢(Ü
2026-04-20 13:49:36 +08:00
(
(


(0
-–Þþ o#
2026-05-08 11:03:00 +08:00
Ü
2026-04-20 13:49:36 +08:00
ob
+>oc
u^þ,+rtp
2026-05-08 11:03:00 +08:00
(J
2026-04-20 13:49:36 +08:00
`
2026-05-08 11:03:00 +08:00
o"
-¹ÞuR
2026-04-20 13:49:36 +08:00

,
o#
Ü+*AdhÈ0&'MknÙöKA0C
þ ,8/rÐ,po
r3hp()
2026-05-08 11:03:00 +08:00
s^
2026-04-20 13:49:36 +08:00
s_
2026-05-08 11:03:00 +08:00
 o`
Þ , o#
Üs,
2026-04-20 13:49:36 +08:00
o.
+*(/
rkhp(
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
(+
o-
(0
2026-05-08 11:03:00 +08:00
-ÍÞþ o#
2026-04-20 13:49:36 +08:00
Ürƒhpr+po1
(2
()
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
,csf
%og
%r§Lpoh
%r+poi
2026-05-08 11:03:00 +08:00
%oj
2026-04-20 13:49:36 +08:00
(k
2026-05-08 11:03:00 +08:00
ol
2026-04-20 13:49:36 +08:00
Þ
,o#
ÜrÝhp()
*(? K e
"
0(>þ ,+p~jripr3ipo¶
(:
"@üDþ ,+Isš
rgip(+
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
- (
2026-05-08 11:03:00 +08:00
þ+
, o
(<*jo<o>*0K~]%-&~Šþns´
%€Ž~%-&~Šþo
%€
*"*0K~f~%-&~Šþp
2026-04-20 13:49:36 +08:00
%€~%-&~Šþqs¸
%€‘
2026-05-08 11:03:00 +08:00
*0K~h~%-&~Šþr
%€’~“%-&~Šþs
%€“
*0K~n~”%-&~Šþts´
%€”~•%-&~Šþu
2026-04-20 13:49:36 +08:00
%ۥ
*2(*0þ
2026-05-08 11:03:00 +08:00
,8s,
o&
2026-04-20 13:49:36 +08:00
o'
(?
2026-05-08 11:03:00 +08:00
oX

+;([
2026-04-20 13:49:36 +08:00
Ž-
2026-05-08 11:03:00 +08:00
(\
2026-04-20 13:49:36 +08:00
Žþ+,+C(?
oX

2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
-
2026-05-08 11:03:00 +08:00
-~
(]
2026-04-20 13:49:36 +08:00
þ+  -o"
2026-05-08 11:03:00 +08:00
:jÿÿÿÞ
2026-04-20 13:49:36 +08:00
,o#
ÜrÑip(@
(
2026-05-08 11:03:00 +08:00
þ

2026-04-20 13:49:36 +08:00
,
2026-05-08 11:03:00 +08:00
oa
sO
(a
þþ   ,
+* ½
2026-04-20 13:49:36 +08:00
æ~Z~%-&~Šþvs¿
%€–
2026-05-08 11:03:00 +08:00
&
(ÿ*0{
2026-04-20 13:49:36 +08:00
~Z 
+8~Z
2026-05-08 11:03:00 +08:00
~Z
2026-04-20 13:49:36 +08:00
þ
2026-05-08 11:03:00 +08:00
,o9
~Z
2026-04-20 13:49:36 +08:00
+~Z
2026-05-08 11:03:00 +08:00
þÞ
Üþ,
*Qa0+ƒs}
2026-04-20 13:49:36 +08:00
}þ~
2026-05-08 11:03:00 +08:00
(*0 +
2026-04-20 13:49:36 +08:00
&doÆ
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
,+ +å*0Fs
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
þ
2026-05-08 11:03:00 +08:00
(( +*0
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
+*0L(.o
2026-04-20 13:49:36 +08:00
&,+
2026-05-08 11:03:00 +08:00
,
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
&,+ ,
2026-04-20 13:49:36 +08:00
(´&*0*s
2026-05-08 11:03:00 +08:00
þ
2026-04-20 13:49:36 +08:00
#
2026-05-08 11:03:00 +08:00
&*02
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
þ
((*0³ˆs…
2026-04-20 13:49:36 +08:00
~Z 
2026-05-08 11:03:00 +08:00
~\
2026-04-20 13:49:36 +08:00
€\~Z~—%-&~Šþws¿
2026-05-08 11:03:00 +08:00
%€—
2026-04-20 13:49:36 +08:00
&~Z
2026-05-08 11:03:00 +08:00
þ ~Zþ
2026-04-20 13:49:36 +08:00
s;
2026-05-08 11:03:00 +08:00
Þ
2026-04-20 13:49:36 +08:00
Ü
2026-05-08 11:03:00 +08:00
,(ÿ*00~G, ~@+
2026-04-20 13:49:36 +08:00
+*0 Ë
2026-05-08 11:03:00 +08:00
-(P+ ,!(
2026-04-20 13:49:36 +08:00
+s(Ñ
-((+þ+ ,'(&(
2026-05-08 11:03:00 +08:00
+1rjprCjpr¬kprºkp"ÈCþ
2026-04-20 13:49:36 +08:00

*0AŠ
2026-05-08 11:03:00 +08:00
}­r pþ
2026-04-20 13:49:36 +08:00
(%*0 1
(I (A-
(;þ+ ,rÊkp(:~l~io†&(.
þ
,Wrmp(þ,r1mp((þ,
+i(7_,
2026-05-08 11:03:00 +08:00
þ+,5rmprËmpr¬kprºkp"ÈCþ
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+( *04Œs
 ,rLqp(8˜rxqp(*
2026-04-20 13:49:36 +08:00
(-þ,d 
2026-05-08 11:03:00 +08:00
,.rÚqpþ,
2026-04-20 13:49:36 +08:00

r&rpo
o
(+
(+rˆrp(. (3(A
2026-05-08 11:03:00 +08:00
&r spr+p
2026-04-20 13:49:36 +08:00
sO
(1
(2
2026-05-08 11:03:00 +08:00
()
2026-04-20 13:49:36 +08:00
(!}´~jrasp{´rsspo»
þ
,
(@þ+,
(Dþ+(~˜%-&~Šþxsÿ
%€˜~™%-&~Šþy
%€™}¸,(@+,!r p€mþ
2026-05-08 11:03:00 +08:00

+Pr p€mþ  ,!(3þ
+þ

2026-04-20 13:49:36 +08:00
*0 $rƒspr§sprÛNp"ÈC
2026-05-08 11:03:00 +08:00
*Jrtp(Ï

*0+Ð
rItp(ü
2026-04-20 13:49:36 +08:00
t
2026-05-08 11:03:00 +08:00
oS
2026-04-20 13:49:36 +08:00
*0?þ
2026-05-08 11:03:00 +08:00
, (
+(%-&~Šþz
%€š(*&(*&(*"(*0-Žþ
,~l~io†&(.o
 +*0(

2026-04-20 13:49:36 +08:00
+*0(
2026-05-08 11:03:00 +08:00
+*0vs,
2026-04-20 13:49:36 +08:00
oS
þ ,ZrFp(
2026-05-08 11:03:00 +08:00
(
(
2026-04-20 13:49:36 +08:00
r}tpo-
2026-05-08 11:03:00 +08:00
r
2026-04-20 13:49:36 +08:00
upo-
oX
rŒ>po-
r˜>po-
+*0æs,
oS
2026-05-08 11:03:00 +08:00
þ  s‘
2026-04-20 13:49:36 +08:00
(
- r@upo/rHup+rXup, rvupo-
sc
s@
o 
2026-05-08 11:03:00 +08:00
8o 
  o#
2026-04-20 13:49:36 +08:00

  ,^  o
ooþ  ,( o# ob
2026-05-08 11:03:00 +08:00

(™

oA
2026-04-20 13:49:36 +08:00
&+ (™oA
2026-05-08 11:03:00 +08:00
&+ o# ob
o"
:bÿÿÿÞ
,o#
2026-04-20 13:49:36 +08:00
Ü(o
+zo
2026-05-08 11:03:00 +08:00
r€p(
2026-04-20 13:49:36 +08:00
o7
2026-05-08 11:03:00 +08:00
,(r”up(
()
2026-04-20 13:49:36 +08:00
rúup(=
2026-05-08 11:03:00 +08:00
rvp(
(
2026-04-20 13:49:36 +08:00
(4
2026-05-08 11:03:00 +08:00
(=
o-
2026-04-20 13:49:36 +08:00
o"
2026-05-08 11:03:00 +08:00
:zÿÿÿÞ
,o#
Ü, r˜>po-
2026-04-20 13:49:36 +08:00
+*s¥
2026-05-08 11:03:00 +08:00
3н
0ƒs,
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
oS
þ 9d(Ao8 s@
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
-sr$vp(þþ+,`(=s|
2026-05-08 11:03:00 +08:00
o;
o,
+(-
2026-04-20 13:49:36 +08:00
 r,vp ()
2026-05-08 11:03:00 +08:00
oA
2026-04-20 13:49:36 +08:00
&(2
-ÙÞþ:o#
2026-05-08 11:03:00 +08:00
Ü

2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
  (&o&
2026-04-20 13:49:36 +08:00
 +{ o'
2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
~to]
, o^
2026-04-20 13:49:36 +08:00
+,Er/Ypoƒ
2026-05-08 11:03:00 +08:00
o7
þ,$ rDvprTvp(;
2026-04-20 13:49:36 +08:00
o<
2026-05-08 11:03:00 +08:00
()
oA
2026-04-20 13:49:36 +08:00
& o"
2026-05-08 11:03:00 +08:00
:yÿÿÿÞ
 , o#
Ü
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
:BÿÿÿÞ
þ.o#
2026-04-20 13:49:36 +08:00
Ü o†
2026-05-08 11:03:00 +08:00
þ sO
o}
2026-04-20 13:49:36 +08:00
r^vpo-
2026-05-08 11:03:00 +08:00
srrvp(Ö(þþ,rzvpo-
+rvpo-
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+-
rÀvprìvpròvpo9
2026-04-20 13:49:36 +08:00
()
2026-05-08 11:03:00 +08:00
o-

2026-04-20 13:49:36 +08:00
-ÊÞþ.o#
Ürwpo-
r˜>po-
+*4}êu
ÌÅ‘:R0}~l~io†&(.o
2026-05-08 11:03:00 +08:00
s,
(oX
(oX
2026-04-20 13:49:36 +08:00
(oX
r+po1
(2
r
wp(Y
2026-05-08 11:03:00 +08:00
}™
*0qs˜
s@
2026-04-20 13:49:36 +08:00

(
sO
oa
2026-05-08 11:03:00 +08:00
}¿þsÿ
(8
*0o
(]
þ , r p
2026-04-20 13:49:36 +08:00
8L
2026-05-08 11:03:00 +08:00
þ,r.wp()
8+
,F,+(?
oa
þ,rdwp()
+rºwp()
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
~i
2026-04-20 13:49:36 +08:00
þ,rêwp()
2026-05-08 11:03:00 +08:00
r*xp(+
(Y
Þ rPxp o
(4
Þts@
u%¢þ
(o†
þ

,ršxp()
+&
þ  ,rÐxp()
+r p
+ *Ô à/0r@yp(/
+*6(&*0<(N~i(N
þ
,*0(I
(A
%rË^p(1 
o
%rNyp(3o
o
%rù^p(; 
o
%r_p(> 
o
%r;_p(@ 
o
%rk_p(F 
o
2026-04-20 13:49:36 +08:00
%rµ_p(H 
o
%r`p(Jo
2026-05-08 11:03:00 +08:00
o
%r)`p(L 
o
2026-04-20 13:49:36 +08:00
%rdyp(èo
2026-05-08 11:03:00 +08:00
%rA`p(A 
o
%rg`p(C 
o
%rvyp(E 
o
%r“`p(G 
o
%r½`po
o
+ *0Asm
r¶yp(+

s(
o
rÔyp(/

s(
o
( o.
++(/
~u(
o7
, o
(0
-ÌÞþ o#
Ü(Ô (
þ,rôyps(
o
 (
þ,rzps(
o
rFzp(.
2026-04-20 13:49:36 +08:00
 
s(
2026-05-08 11:03:00 +08:00
o
þ

,"rpzp
 
s(
o
 + *P8ˆ0W˜o&
+/o'
~v(
o]
,o^
+
,Þo"
-ÉÞ ,o#
Ü+* ;D 0 ¼
 ,,(@+ ,k
srzp (þ,J r¢zp(=
rÄzprzp (+
r!~prC~prQ~p"ÈCþ

þ,
*0 œš
(g ,þ+ ,]r~p(=
r»~pŒ|0rN€p+
(+
prípr!~p"ÈCþŸ

+
*0hs 
(L,
+ ,
+þ¡
(#*0Ɯs,
(
rz€p()
r’€p()
2026-04-20 13:49:36 +08:00
(€ þ
,<(+š(
o-
XŽi2Û+r¦€p(+
ÞrÖ€po
()
z+*™ /0L(
2026-05-08 11:03:00 +08:00
(
r p þþ,co&
+>o'
(&
 
, (
(…
þ+

,+
o"
-¹Þ
,o#
Üþ  , Ý¢rzGpr
psO
(1
(2
()
rp(4
rJp(+
(€
þ

,rhp(+
 Þ&ÞrÖ€po
()
z + *A4;K
%&/"
2026-04-20 13:49:36 +08:00
*v~
2026-05-08 11:03:00 +08:00
~j
*0*~p

,
+*0~p
+*N~p
*0~p
+*N~r8p
2026-04-20 13:49:36 +08:00
*0~r8p
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*N~r~p
2026-05-08 11:03:00 +08:00
*0~r~p
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*N~rè‚p
2026-04-20 13:49:36 +08:00
*02-~+~rè‚p~
2026-05-08 11:03:00 +08:00
(Q(
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*N~r0ƒp
2026-04-20 13:49:36 +08:00
*0~r0ƒp
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*N~r’ƒp
2026-05-08 11:03:00 +08:00
*0~r’ƒp
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*0~
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*:~
2026-04-20 13:49:36 +08:00
*N~rîƒp
2026-05-08 11:03:00 +08:00
*0~rîƒp
2026-04-20 13:49:36 +08:00
+*0(3r¨,p(&
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*N~r,„p
2026-04-20 13:49:36 +08:00
*0~r,„p
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*N~r|„p
2026-05-08 11:03:00 +08:00
*0~r|„p
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*N~rÒ„p
2026-04-20 13:49:36 +08:00
*0~rÒ„p
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*N~r4…p
2026-05-08 11:03:00 +08:00
*0~r4…p
+*N~r’…p
*0~r’…p
+*N~rp
*0~rp
+*N~rx†p
*0$~rx†p~Ž
(R(
2026-04-20 13:49:36 +08:00
+*N~r†p
2026-05-08 11:03:00 +08:00
*0~r†p
+*N~rp
*0~rp
+*N~rD‡p
2026-04-20 13:49:36 +08:00
*0~rD‡p
2026-05-08 11:03:00 +08:00
+*0Þ
rHp(Å
oF
þ , rHp(

2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
,
2026-05-08 11:03:00 +08:00
(C
,~,
~(C
++
,rž‡p(+
2026-04-20 13:49:36 +08:00
+5~,
~(C
,þ+,rˆp()
2026-05-08 11:03:00 +08:00
€‘+*0Ÿ
2026-04-20 13:49:36 +08:00
~
oF
þ
2026-05-08 11:03:00 +08:00
, (
2026-04-20 13:49:36 +08:00
rHpoF
2026-05-08 11:03:00 +08:00
, rïˆp
2026-04-20 13:49:36 +08:00
~
(•
oG
,o;
2026-05-08 11:03:00 +08:00
YoH
+*0J"€ÔC"ÿCsç


[k(ê
2026-04-20 13:49:36 +08:00
[k
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00

*6}*&(T*0K
2026-05-08 11:03:00 +08:00
 

2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
rž‰p(
2026-05-08 11:03:00 +08:00
Œ|(
Œ|(
2026-04-20 13:49:36 +08:00
Œ|(4
2026-05-08 11:03:00 +08:00

{
2026-04-20 13:49:36 +08:00
}
2026-05-08 11:03:00 +08:00



2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
rì‰p(
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
{{
2026-04-20 13:49:36 +08:00

{-rŠp+rˆŠp

r]p(
2026-05-08 11:03:00 +08:00

{{
2026-04-20 13:49:36 +08:00

{-r‹‹p+rŒp
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
rŸŒp(
2026-05-08 11:03:00 +08:00

{{
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
{-rÕŒp+rpp

rŽp(

{{
2026-04-20 13:49:36 +08:00

 
2026-05-08 11:03:00 +08:00
{
r3Žp(

2026-04-20 13:49:36 +08:00
rWŽp
2026-05-08 11:03:00 +08:00
,UreŽp(3r p(þ
2026-04-20 13:49:36 +08:00
rHpo¼
2026-05-08 11:03:00 +08:00
{2o;
2026-04-20 13:49:36 +08:00
YoH
+r p(
 {o
þ,{{(Q
2026-05-08 11:03:00 +08:00
{{(ÿ
2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00

r‘Žp(
2026-04-20 13:49:36 +08:00

{{
2026-05-08 11:03:00 +08:00

{,r«Žp
+r(p
{-
{+(
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
rap(
2026-04-20 13:49:36 +08:00

{{
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00
{þ(

2026-04-20 13:49:36 +08:00
r£‘p(
2026-05-08 11:03:00 +08:00

{{

2026-04-20 13:49:36 +08:00
(
2026-05-08 11:03:00 +08:00

r3ip(

{{

{  ,rߑp(<()

+r>”p(<()

2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
r_•p(

{{

{
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
,r{•p
+r’—p

rW™p(
2026-04-20 13:49:36 +08:00

{{
2026-05-08 11:03:00 +08:00


2026-04-20 13:49:36 +08:00
rp(

2026-05-08 11:03:00 +08:00
{{
2026-04-20 13:49:36 +08:00

{  ,rљp
2026-05-08 11:03:00 +08:00
+#r"p{()

{  96rÓœp(


rp(

{{


rsp(

{{{×
}×
p
r¾ p(
(
2026-04-20 13:49:36 +08:00
rY¡p
rp£p(
(
r¤p

2026-05-08 11:03:00 +08:00
{
r`¥p(

2026-04-20 13:49:36 +08:00
rWŽp
2026-05-08 11:03:00 +08:00
,nr–¥p{r p(þ
~
~
2026-04-20 13:49:36 +08:00
(•
2026-05-08 11:03:00 +08:00
(=
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
{2o;
YoH
+(
2026-04-20 13:49:36 +08:00

{o
2026-05-08 11:03:00 +08:00
þ,{{(R
rÔ¥p
2026-04-20 13:49:36 +08:00
{{(ÿ
(R(
{,\
rµ¦p(
2026-05-08 11:03:00 +08:00

{{

rõ¦p
{,\
r<©p(

{{
2026-04-20 13:49:36 +08:00

r¢©p
2026-05-08 11:03:00 +08:00
{o
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
r%«p(

2026-04-20 13:49:36 +08:00
{{


2026-05-08 11:03:00 +08:00
rE«p(

2026-04-20 13:49:36 +08:00
{{
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
(
(

" A(
2026-05-08 11:03:00 +08:00
ro«p
,3()~jr“«pr±«po¶
(T
rϫp
2026-04-20 13:49:36 +08:00
,~jrÝ«prý«po¶
rÛNp
`
9#~jr¬p%rÔyp(/
2026-05-08 11:03:00 +08:00
s(
2026-04-20 13:49:36 +08:00
¤%r9¬p(+
2026-05-08 11:03:00 +08:00
s(
¤%rË^p(1
s(
2026-04-20 13:49:36 +08:00
¤%rù^p(;
s(
2026-05-08 11:03:00 +08:00
¤%r_p(>
s(
¤%rc¬p(H
s(
2026-04-20 13:49:36 +08:00
¤%r³¬p(F
s(
2026-05-08 11:03:00 +08:00
¤%r`p(Jo
s(
¤%r)`p(L
2026-04-20 13:49:36 +08:00
s(
2026-05-08 11:03:00 +08:00
¤% rý¬p(N
2026-04-20 13:49:36 +08:00
s(
2026-05-08 11:03:00 +08:00
¤%
2026-04-20 13:49:36 +08:00
r­p(5
2026-05-08 11:03:00 +08:00
s(
2026-04-20 13:49:36 +08:00
¤% rW­p(7
2026-05-08 11:03:00 +08:00
s(
¤% r;_p(@
s(
¤%
2026-04-20 13:49:36 +08:00
r­p(B
2026-05-08 11:03:00 +08:00
s(
¤%rÉ­p(D
s(
¤%r®p(P
2026-04-20 13:49:36 +08:00
s(
¤r5®po»
2026-05-08 11:03:00 +08:00
{(,
2026-04-20 13:49:36 +08:00

(
(
*v""
}(
2026-05-08 11:03:00 +08:00
*0Ïu%p¢%p¢%r~p¢%rè‚p¢%rîƒp¢%r,„p¢%r|„p¢%rÒ„p¢%r4…p¢% r’…p¢%
rp¢% rx†p¢% r†p¢%
rp¢%r0ƒp¢%r’ƒp¢%r8p¢%rD‡p¢€Š€ŒrHp€rQ®p€Žr…®ps 
*0&¡Ð
(
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
t
2026-04-20 13:49:36 +08:00
oZ +*0±r p}—r p}˜r p}•r p}™}""
"C"HCsç
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
[k(ê
2026-04-20 13:49:36 +08:00
[k
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
"@Z
2026-05-08 11:03:00 +08:00

"@Zsî

} *0)¢s´
þµ
2026-04-20 13:49:36 +08:00

*0k£
þ
,](„
( 
2026-05-08 11:03:00 +08:00
'j[ Y !jþþ,.þ{,"
2026-04-20 13:49:36 +08:00
( 
*0¤(
2026-05-08 11:03:00 +08:00
&{•(
-{+,{•(
(


s,
2026-04-20 13:49:36 +08:00
+i{™o;
2026-05-08 11:03:00 +08:00
Y ˆ(L
{™r+pXo

/+YX{™oH
wo
2026-04-20 13:49:36 +08:00
o-
X
{™o;
þ
+J
 (
 s
(
  (
2026-05-08 11:03:00 +08:00
o

 (
%
2026-04-20 13:49:36 +08:00
(
¢(
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
-­Þþ.o#
Ü(
2026-05-08 11:03:00 +08:00
 
(
2026-04-20 13:49:36 +08:00
&{—r p(C
2026-05-08 11:03:00 +08:00
  ,{—
{˜r p(C
2026-04-20 13:49:36 +08:00


2026-05-08 11:03:00 +08:00
,{˜
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
(
 `,G}, + , {“þ,
{“*éW@0{”
,(
*02 {þ
,#{“þ ,
{“*0 ¥{ 
+*0X}”r p}•}r p}—r p}˜r p}™}j}ž(
2026-05-08 11:03:00 +08:00
*0r­®p(
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+*0rÿ®p(
2026-04-20 13:49:36 +08:00
+*0˦
ж
2026-05-08 11:03:00 +08:00
(
Þ &
ݨ(
, ¥|
2026-04-20 13:49:36 +08:00
8rU¯poF
2026-05-08 11:03:00 +08:00
,rU¯p(;
o<
ru¯p(Œ
2026-04-20 13:49:36 +08:00
,
+V(M
þ,9u%r¯p¢%¢%r˜°p¢%
2026-05-08 11:03:00 +08:00
¢%rž°p¢(K
2026-04-20 13:49:36 +08:00
(<
-+
+ * -01§(
Œ¶r­®p(b(d
þ ,(b + +*0r©±p(i
2026-05-08 11:03:00 +08:00
+*0M¨и
rűp(€
,
rÿ®p(c(d+ þþ ,
2026-04-20 13:49:36 +08:00
+(x
+ *0rűp(i
2026-05-08 11:03:00 +08:00
+*0`©и
(€
2026-04-20 13:49:36 +08:00
þ ,
2026-05-08 11:03:00 +08:00
+@/rç±p+rU¯p
2026-04-20 13:49:36 +08:00
(=
o
(
o„

Þ &Þ
2026-05-08 11:03:00 +08:00
+ *;U-0 
2026-04-20 13:49:36 +08:00
+*0ªr²p(
2026-05-08 11:03:00 +08:00
+*0=«
2026-04-20 13:49:36 +08:00
(k þ ,$o€
2026-05-08 11:03:00 +08:00
þ, 
uu
2026-04-20 13:49:36 +08:00
+*0r²²p(l
2026-05-08 11:03:00 +08:00
+*0rʲp(l
2026-04-20 13:49:36 +08:00
+*0râ²p(l
2026-05-08 11:03:00 +08:00
+*0rú²p(l
+*0ªr³p(
2026-04-20 13:49:36 +08:00
+*0¬(qr›³p(†
2026-05-08 11:03:00 +08:00
Þ&
2026-04-20 13:49:36 +08:00
Þ*/0ªr³³p(
2026-05-08 11:03:00 +08:00
+*0Š­(s
2026-04-20 13:49:36 +08:00
þ ,r<´prx´prÀ´p(+
(<
2026-05-08 11:03:00 +08:00
 +Zr›³p(†
2026-04-20 13:49:36 +08:00
ÞH&Þr›³p%(r¢(†
Þ$
2026-05-08 11:03:00 +08:00
rǵprx´p rÀ´p(4
2026-04-20 13:49:36 +08:00
(<
2026-05-08 11:03:00 +08:00
Þ +*/@/Fd /0*®r+¶p(
þ ,rƶp(<
2026-04-20 13:49:36 +08:00
 + +*0I¯(u
2026-05-08 11:03:00 +08:00
 þ ,$+o
þ
2026-04-20 13:49:36 +08:00
,ry¸p(<
+ o
2026-05-08 11:03:00 +08:00
+*0-°(c
r8ºprÀ´prÿ®pŒ|(4
(‰
 +*0"±(s
þ
rœMp(w
(
þ,rœMp(
(tþ
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
, (w ݹra»p$o 
þ  9s!

o"
t7Þ&Þþ,)%(r¢o"
t7Þ&Þþo&
2026-04-20 13:49:36 +08:00
+Io'
r‰»poF
,,r‰»p(;
2026-05-08 11:03:00 +08:00
o<
2026-04-20 13:49:36 +08:00
(M
, 
o#
2026-05-08 11:03:00 +08:00
o"
2026-04-20 13:49:36 +08:00
-®Þ
,o#
Ü
2026-05-08 11:03:00 +08:00
o$
2026-04-20 13:49:36 +08:00

o%
þ,
2026-05-08 11:03:00 +08:00
Yo&
2026-04-20 13:49:36 +08:00
 ݘr›»po'
  þ,  o(
2026-05-08 11:03:00 +08:00
¥| ÞaÞrœMp(
Ü(u -+
rÙ»p$o 
þ,(v o(
¥| + (w + *AdŽ£/´"Ö/õVK
GzÁ0Ö²
%rÿ»pr-¼po
%rC¼pr-¼po
%ri¼pr-¼po
2026-04-20 13:49:36 +08:00
%r‰¼pr-¼po
2026-05-08 11:03:00 +08:00
%r±¼prżpo
2026-04-20 13:49:36 +08:00
%rͼpr-¼po
2026-05-08 11:03:00 +08:00
%rñ¼pr-¼po
%r#½pr-¼po
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
þXo
2026-04-20 13:49:36 +08:00
o

þ
2026-05-08 11:03:00 +08:00
, Ðp
(
2026-04-20 13:49:36 +08:00
¥pÞ&Þ*²Ì-0j³з
rM½p+%Ðp
¢()
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
þ ,
2026-05-08 11:03:00 +08:00
+3(y þ,
2026-04-20 13:49:36 +08:00
+%Œp¢o"
2026-05-08 11:03:00 +08:00
uu
2026-04-20 13:49:36 +08:00
+ *0x´з
2026-05-08 11:03:00 +08:00
r½p+%Ðp
¢%Ðu
¢()
þ ,
+4(y þ,
2026-04-20 13:49:36 +08:00
+%Œp¢%¢o"
2026-05-08 11:03:00 +08:00
&
2026-04-20 13:49:36 +08:00
+ *04µз
r±½p(€
2026-05-08 11:03:00 +08:00
þ , +
tu +*0+з
2026-04-20 13:49:36 +08:00
r±½p(€
þ ,+
o„
2026-05-08 11:03:00 +08:00
*0
(z
þ , +(| +*0({þ
2026-04-20 13:49:36 +08:00
, (}*0(
2026-05-08 11:03:00 +08:00
(~
+*:(
(*0O·
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
+
2026-04-20 13:49:36 +08:00
o]
o^
,
Þ
2026-05-08 11:03:00 +08:00
-ØÞþHo#
Ü
2026-04-20 13:49:36 +08:00
+ *,:07'rÓ½pþƒs.
u%r¾p¢%r¾p¢(/
2026-05-08 11:03:00 +08:00
sO
2026-04-20 13:49:36 +08:00
+*0
2026-05-08 11:03:00 +08:00
+*0j¸
(„
+6
2026-04-20 13:49:36 +08:00
o…þ
,r%¾p(+
2026-05-08 11:03:00 +08:00
o*


2026-04-20 13:49:36 +08:00
-ÁÞþ.o#
2026-05-08 11:03:00 +08:00
Ü+*CS¾s—
2026-04-20 13:49:36 +08:00
%r£¾psx
2026-05-08 11:03:00 +08:00
o*
2026-04-20 13:49:36 +08:00
&}¯rñ¾p}°(%
2026-05-08 11:03:00 +08:00
(%
}´*0 
2026-04-20 13:49:36 +08:00
+*0 {´
+*0/{´
2026-05-08 11:03:00 +08:00
,{´(
2026-04-20 13:49:36 +08:00
(…
2026-05-08 11:03:00 +08:00
þ+
2026-04-20 13:49:36 +08:00
+*0ç¹(
o+
þ
2026-05-08 11:03:00 +08:00
,,r ¿p(‰o!
2026-04-20 13:49:36 +08:00
(+
o*
2026-05-08 11:03:00 +08:00
8o,
2026-04-20 13:49:36 +08:00
Ô¿ o,
io-
&(
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
(A
2026-05-08 11:03:00 +08:00
&(.
2026-04-20 13:49:36 +08:00
ÞErc¿p%(‰¢%o!
2026-05-08 11:03:00 +08:00
¢%¢%¢(Ü
2026-04-20 13:49:36 +08:00
o*
Þ+*r'™E.sŽ€µ*0r×p(=
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
+*0'º(&
2026-05-08 11:03:00 +08:00
, +(& , + +*0þ
,
2026-04-20 13:49:36 +08:00
o“*"**"**"**"}¿*{¿*0Ò»(%
2026-05-08 11:03:00 +08:00
и
2026-04-20 13:49:36 +08:00
rÛ¿p(€
rÀprÀp(/
( , þ+

2026-05-08 11:03:00 +08:00
%rMpr[Àpo
%reprgÀpo
%ryprsÀpo
2026-04-20 13:49:36 +08:00
%rpr{Àpo
2026-05-08 11:03:00 +08:00
o.
2026-04-20 13:49:36 +08:00
+;(/
2026-05-08 11:03:00 +08:00
(
2026-04-20 13:49:36 +08:00
(?&(
(
o
Þ&Þ(0
-¼Þþ o#
Üи
r‰Àp(€
rÀpr£Àp(/
2026-05-08 11:03:00 +08:00
( , þ+,9
2026-04-20 13:49:36 +08:00
%rMpr[Àpo
%ryprypo
+6
2026-05-08 11:03:00 +08:00
%rMpr po
2026-04-20 13:49:36 +08:00
%rypr po
*¾-³0?¼Ð'

þ ,
€ÀÞ
2026-05-08 11:03:00 +08:00
Ü~À +*-0ooþ
2026-04-20 13:49:36 +08:00
,~jrãÀpr5Ápo¶
+.~jr‘ÁpráÁpo¶
r7Âp()
2026-05-08 11:03:00 +08:00
o0
*0ê½þ ,
s,
2026-04-20 13:49:36 +08:00
 (
+7 š-o]
o^
2026-05-08 11:03:00 +08:00
+ , o-
2026-04-20 13:49:36 +08:00
X Ži2Âoa
þ,*(g
+7r+po1
2026-05-08 11:03:00 +08:00
(2
%-&þª
2026-04-20 13:49:36 +08:00
%(i*0c¾þ
,
+Isc%-&þ«
% (h*^þ
o(go0
*08oþ
2026-05-08 11:03:00 +08:00
,
2026-04-20 13:49:36 +08:00
+

,+(mo1
2026-05-08 11:03:00 +08:00
*0E,+,{×-(t+(so1
*0³¿þ ,r³Âp
s,
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+
2026-04-20 13:49:36 +08:00
 oEo-
2026-05-08 11:03:00 +08:00

-âÞþ,o#
Ü{5rGpo1
(2
r'ÃprEÃprIÃprMÃpsx
(f*;"]0|ÀoEo^þ
,C %¢s2
%-&þ¹
% ov+(y*~-+
2026-04-20 13:49:36 +08:00
*0
Árñ¾p(Œ
2026-05-08 11:03:00 +08:00
,r p(Œ
+
, 8rqÃp(Œ
,rñ¾p(Œ
-r p(Œ
2026-04-20 13:49:36 +08:00
++ , 8Rr‘Ãp(Œ
,rqÃp(Œ
+
s,
s,
2026-05-08 11:03:00 +08:00
r¯Ãpo3
2026-04-20 13:49:36 +08:00
%-&r pw%:oD
2026-05-08 11:03:00 +08:00
Ži. Žiþþ+,2r¹Ãpo4
2026-04-20 13:49:36 +08:00
Œ|(4
2026-05-08 11:03:00 +08:00
o*
2026-04-20 13:49:36 +08:00
 8{š}âš}ãš}äŽiþ,
š}å 8?(
2026-05-08 11:03:00 +08:00
-(
-(
þ+  ,\{7o1
2026-04-20 13:49:36 +08:00
o1
2026-05-08 11:03:00 +08:00
rBÄpo4
Œ|(+
2026-04-20 13:49:36 +08:00
o-rRÄp(Œ
,r‘Ãp(Œ
2026-05-08 11:03:00 +08:00
+
2026-04-20 13:49:36 +08:00

, 8r|Äp(Œ
,rRÄp(Œ
+  ,9,o5
, o6
þ+  ,o7
o-
2026-05-08 11:03:00 +08:00
 8'r¤Äp(Œ
,r‘Ãp(Œ
2026-04-20 13:49:36 +08:00
+
2026-05-08 11:03:00 +08:00

, r¤Äp(Œ
2026-04-20 13:49:36 +08:00
,rqÃp(Œ
+,,s,
+d
+8
2026-05-08 11:03:00 +08:00
~rBÄpo4
Œ|(+
2026-04-20 13:49:36 +08:00
s(
o

-¿Þþ.o#
Ü +\r¾Äp(Œ
,r¤Äp(Œ
2026-05-08 11:03:00 +08:00
+,6,o5
, o6
2026-04-20 13:49:36 +08:00
þ+,o7
o-
 + +*ÿEDþr p}ï(%
2026-05-08 11:03:00 +08:00
*0Âr p
2026-04-20 13:49:36 +08:00
+*0)Ã
 
tp (+
2026-05-08 11:03:00 +08:00
3ß*0)Ã
2026-04-20 13:49:36 +08:00
 
2026-05-08 11:03:00 +08:00
tp (+
2026-04-20 13:49:36 +08:00
3ß*þþ(%

¿*0 
+*0(þþ
,þÌ
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
*0I+6ŽiþÎs8
2026-05-08 11:03:00 +08:00
o9
2026-04-20 13:49:36 +08:00
&
&þþ
2026-05-08 11:03:00 +08:00
-»*01ÄŽi6
2026-04-20 13:49:36 +08:00
 +š¢X Žiþ 
2026-05-08 11:03:00 +08:00
+ *0Åo:
2026-04-20 13:49:36 +08:00
þþ ,_þþþ ,D¿
 Ži(;

o<
2026-05-08 11:03:00 +08:00
þo=
2026-04-20 13:49:36 +08:00
&*0)Æ
2026-05-08 11:03:00 +08:00
 
2026-04-20 13:49:36 +08:00
tq ( +
3ß*0)Æ
2026-05-08 11:03:00 +08:00
 
2026-04-20 13:49:36 +08:00
tq ( +
2026-05-08 11:03:00 +08:00
3ß*0)Ã
2026-04-20 13:49:36 +08:00
 
tp (+
2026-05-08 11:03:00 +08:00
3ß*0)Ã
 
tp (+
2026-04-20 13:49:36 +08:00
3ß*0©Ç(%
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
s>
(?
s@

2026-05-08 11:03:00 +08:00
 +/š þÕoA
&X Ži2Ëþ
,þÖ
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
*04È
2026-05-08 11:03:00 +08:00

oB
Þ
Üo=
2026-04-20 13:49:36 +08:00
&*noC
o=
&*0ÂÉ8‰
2026-05-08 11:03:00 +08:00
&+eoD
t4
 ,. 
2026-04-20 13:49:36 +08:00
oE
&Þ
2026-05-08 11:03:00 +08:00
Üþ
,
2026-04-20 13:49:36 +08:00
oF
2026-05-08 11:03:00 +08:00
þ-‡oG
2026-04-20 13:49:36 +08:00
þ:`ÿÿÿþ, *@V0)Ê
 
2026-05-08 11:03:00 +08:00
t5 (
+
2026-04-20 13:49:36 +08:00
3ß*0)Ê
2026-05-08 11:03:00 +08:00
 
2026-04-20 13:49:36 +08:00
t5 (
2026-05-08 11:03:00 +08:00
+
3ß*0)Ê{ÿ
 
t5 |ÿ(
+
2026-04-20 13:49:36 +08:00
3ß*0)Ê{ÿ
 
t5 |ÿ(
2026-05-08 11:03:00 +08:00
+
3ß*0$sH
(%
þ
2026-04-20 13:49:36 +08:00
,(×*0#ËoI
2026-05-08 11:03:00 +08:00
-sJ
2026-04-20 13:49:36 +08:00
+sK
2026-05-08 11:03:00 +08:00
+*0AÌoL
2026-04-20 13:49:36 +08:00
oM
2026-05-08 11:03:00 +08:00
+(N
2026-04-20 13:49:36 +08:00
oO
2026-05-08 11:03:00 +08:00
(P
2026-04-20 13:49:36 +08:00
-æÞþ\o#
2026-05-08 11:03:00 +08:00
Ü*10ñÍs,
  
oQ
+7(R
o-
2026-04-20 13:49:36 +08:00
ŽiX  `
(S
-ÀÞþ]o#
2026-05-08 11:03:00 +08:00
Ür po1
2026-04-20 13:49:36 +08:00
(2
2026-05-08 11:03:00 +08:00
¿oQ
 +4 (R
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00

Ži(T
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
ŽiX (S
-ÃÞ þ]o#
Ü + *DZ0Î{ÿþ ,{ÿ
þ 9´rpr+po9
2026-05-08 11:03:00 +08:00
rÔÄpr+po9
2026-04-20 13:49:36 +08:00

oU
8JsJ
 oV
2026-05-08 11:03:00 +08:00
 oQ
2026-04-20 13:49:36 +08:00
8(R
 ,
X%þ+
 oU
2026-05-08 11:03:00 +08:00
o;
 
þ
2026-04-20 13:49:36 +08:00

,/r+po¼
  þ, oW
& oO
2026-05-08 11:03:00 +08:00

þ,S %{ï XoH
(=
 Xo<
2026-04-20 13:49:36 +08:00
oU
2026-05-08 11:03:00 +08:00
þ, 
(S
:ïþÿÿÞþ]o#
2026-04-20 13:49:36 +08:00
Ü
þ:¨þÿÿ oX
- þ+,*A®0KÏ
2026-05-08 11:03:00 +08:00
}{{{{{(€}þã
2026-04-20 13:49:36 +08:00

*f{{{*0F{šo-
2026-05-08 11:03:00 +08:00
{ þ
,{ {
2026-04-20 13:49:36 +08:00
{
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
*:{ o=
2026-05-08 11:03:00 +08:00
&*0)Ð{
2026-04-20 13:49:36 +08:00
 
2026-05-08 11:03:00 +08:00
t3 |( +
3ß*0)Ð{
 
t3 |( +
3ß*0b}
þ}}s>
2026-04-20 13:49:36 +08:00
(?
2026-05-08 11:03:00 +08:00
}
} þ}þì(×}}*0 w%
%
2026-04-20 13:49:36 +08:00
oD
ŽiY
2026-05-08 11:03:00 +08:00
+*0Ñ
- þ+ ,+yþ ,þ{}
o<
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
{
2026-04-20 13:49:36 +08:00
oC
2026-05-08 11:03:00 +08:00
(
+ š{o*
2026-04-20 13:49:36 +08:00
X Ži2Ü*¾{rØÄp()
o*
2026-05-08 11:03:00 +08:00
þ}*0,{þ
,{þ{}*0DÒ{
oF
þ
2026-04-20 13:49:36 +08:00
s,
2026-05-08 11:03:00 +08:00
+{
oD
tuo-
{
oF
2026-04-20 13:49:36 +08:00
þ
-×{™r po1
2026-05-08 11:03:00 +08:00
(2
(=
2026-04-20 13:49:36 +08:00
+zrÔÄpoY
2026-05-08 11:03:00 +08:00
2oH
2026-04-20 13:49:36 +08:00
r+p(Œ
2026-05-08 11:03:00 +08:00
+,+Mr pr+po

2026-04-20 13:49:36 +08:00
þþ,XoH
Xo<
(=
2026-05-08 11:03:00 +08:00
 +}™o\{ þ
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
,þ{k{ k[þ}9þ{þ  ,r p}:{(†{{þï(‰}s,
}s,
}
}s,
2026-04-20 13:49:36 +08:00
}(%
2026-05-08 11:03:00 +08:00
*0kÓ(
2026-04-20 13:49:36 +08:00
þ
,\{oZ
,.{o[
t
 o\
þ
2026-05-08 11:03:00 +08:00
,
o-
+{s,
%o-
2026-04-20 13:49:36 +08:00
o]
*0ˆ~i{o^
{{--~io_
2 {-{þ++{`
,{o{{{o"
2026-05-08 11:03:00 +08:00
*0rÔs@
2026-04-20 13:49:36 +08:00
{{s|
(o&
+(o'
2026-05-08 11:03:00 +08:00
 (
o7
þ,
2026-04-20 13:49:36 +08:00
 oA
&o"
2026-05-08 11:03:00 +08:00
-ÐÞ ,o#
2026-04-20 13:49:36 +08:00
Üo†
2026-05-08 11:03:00 +08:00
þ9˜rÅpr+psO
2026-04-20 13:49:36 +08:00
(1
(2
()
2026-05-08 11:03:00 +08:00
s,
2026-04-20 13:49:36 +08:00
o,
+(-
2026-05-08 11:03:00 +08:00
  (?
2026-04-20 13:49:36 +08:00
oX
(2
-ÜÞþ:o#
ÜrHÅp(@
(
þ

, {{ {{s|
2026-05-08 11:03:00 +08:00
{*%-&þüs`
% }* {+%-&þý
% }+ *$4X ¬V{rŠÅpo*0@Õ{
}{{

{!
2026-04-20 13:49:36 +08:00
þ
2026-05-08 11:03:00 +08:00
9•w%:oD
sO
2026-04-20 13:49:36 +08:00
oa
2026-05-08 11:03:00 +08:00
þ,rºÅp()
+joa
2o‡
p(Œ
+,r{ po-
o‡
o‡
o‡
s {{oa

:+ÿÿÿÞþ.o#
Ü{",{{{(˜{#
*#Üÿ09Ö{}þ
,O~jr§Æprô"po¶
{{$}ráÆp()
{#
{{ {|{|{|(—{{oa
þ ,-r5Çpr+p{{o1
(2
()
{{{,%-&þÿs×
2026-04-20 13:49:36 +08:00
% },{-%-&þs`
2026-05-08 11:03:00 +08:00
%
}- (*0s×{{("
2026-04-20 13:49:36 +08:00
,Os }0~jröÇpr8Èpo¶
2026-05-08 11:03:00 +08:00
(L}/(Kr|Èpþ
(%+{&
*V{rÌÈpo*0GØ{{.%-&þ%
}.{(o{)o +*0)Ùs
}2}1þ
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
*0ï 
9~jrøÈprDÉpo¶
{/(Lþþ ,]r„Ép({0{{0{ {0{%{0{"{0{{0{(+^{0{&
+J~jr'ÊprqÊpo¶
({0{{0{$}{0{#
+*f{2{'{1*0+Ú(
(=
{4o8
o;
Xo<
+*0q§{5ob
2026-04-20 13:49:36 +08:00
þ ,[~jrÁÊp%rËp
2026-05-08 11:03:00 +08:00
s(
2026-04-20 13:49:36 +08:00
¤%r)Ëp{6oa
2026-05-08 11:03:00 +08:00
Y 
2026-04-20 13:49:36 +08:00
s(
2026-05-08 11:03:00 +08:00
¤r?Ëpo»
*0 ßÛ
8es
2026-04-20 13:49:36 +08:00
 }A|7(X
þ,
2026-05-08 11:03:00 +08:00
8C|7(U
2026-04-20 13:49:36 +08:00
}?{8|?(V
2026-05-08 11:03:00 +08:00
o8
s@
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
|?(W
+
 {8o8
oA
&
2026-04-20 13:49:36 +08:00
-ØÞþ.o#
2026-05-08 11:03:00 +08:00
Ü sO
~ oc
r¡Ëp{4|?(V
o8
|?(V
2026-04-20 13:49:36 +08:00
r+p|?(W
o1
2026-05-08 11:03:00 +08:00
(2
(4
}@~ o‡
oþþ,?rfÌp{@rŠÌp(=
príp"ÈCþ
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
+  8“þÿÿ

,b{:
2026-04-20 13:49:36 +08:00
{6
 +
  rÃÍp(=

2026-05-08 11:03:00 +08:00
-ÙÞ þ.o#
Ü{;
*s02{={3o7
-(J
{<
+
2026-04-20 13:49:36 +08:00
+*0ºÜ
2026-05-08 11:03:00 +08:00
þ ,|s,
|?(W
+
(?
2026-04-20 13:49:36 +08:00
oX
2026-05-08 11:03:00 +08:00

-ÝÞþ.o#
2026-04-20 13:49:36 +08:00
ÜrêÐp(@
2026-05-08 11:03:00 +08:00
(
þ, +
þ,{A{6{@o-
{A{9
2026-04-20 13:49:36 +08:00
*%'L.s€B*0(Ý(
2026-05-08 11:03:00 +08:00
rlpoY
/+oH
2026-04-20 13:49:36 +08:00
+*0psO
2026-05-08 11:03:00 +08:00
(1
2026-04-20 13:49:36 +08:00
(2
2026-05-08 11:03:00 +08:00
+*09Þ{E{F{G{I%-&þ
%
}I( *R{E{H*0Lßr(Ñp{J{K{L{M{P%-&þs4
2026-04-20 13:49:36 +08:00
%
}P(*:{N
*0=àsd
2026-05-08 11:03:00 +08:00
sm
o$
þ ,{N
8oe
2026-04-20 13:49:36 +08:00
(f
2026-05-08 11:03:00 +08:00
rzÑpo$o-rîÑp+r9po(2
2026-04-20 13:49:36 +08:00
(+
2026-05-08 11:03:00 +08:00
oþ,so+Zš on
2026-04-20 13:49:36 +08:00
þ

, s@
  o$oA
& oo
2026-05-08 11:03:00 +08:00
sT%oHog
2026-04-20 13:49:36 +08:00
&XŽi2ž(h
2026-05-08 11:03:00 +08:00
:-ÿÿÿÞþ_o#
2026-04-20 13:49:36 +08:00
Üoi
,
(1þ+  oj
ok

+^
2026-05-08 11:03:00 +08:00
(l
sT%oHr+pom
sO
(1
2026-04-20 13:49:36 +08:00
(2
2026-05-08 11:03:00 +08:00
on
2026-04-20 13:49:36 +08:00
,rüÑp(+

2026-05-08 11:03:00 +08:00
(o
2026-04-20 13:49:36 +08:00
-™Þ
þao#
Üs,
2026-05-08 11:03:00 +08:00
 oe
2026-04-20 13:49:36 +08:00
+(f
 o$o-
(h
2026-05-08 11:03:00 +08:00
-ßÞþ_o#
2026-04-20 13:49:36 +08:00
Ü{J (˜{N
2026-05-08 11:03:00 +08:00
+{J{L{O*(4ÚHÒ0sás
}W}V{Vþ ,8rÙÒp{Q(S{R(
-r p+r p(+
+{Vþ
oa*:{T
*0¬âþ
,8{W{Soj
ok
(l
2026-04-20 13:49:36 +08:00
sT%oH
2026-05-08 11:03:00 +08:00
r+p{W{Som
sO
2026-04-20 13:49:36 +08:00
(1
2026-05-08 11:03:00 +08:00
(2
 oEo^, oYþ+9‰rÄÓp% oE¢% oI¢%-ruÔp+rµÔp¢%¢(Ü
þ,{W{Q op
2026-04-20 13:49:36 +08:00
&+%oYþ,{W{Qog
2026-05-08 11:03:00 +08:00
&(o
:ÿÿÿÞþao#
Ü{W{Qoi
þ  ,{W{T
+G{V{W{Q{W{U%-"&{W{Wþ
%
2026-04-20 13:49:36 +08:00
}U
2026-05-08 11:03:00 +08:00
ob*A%(0ã{Xo7
þ ,8y{YY {Xoq
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
Y
þ k{Yk[{Z or
rñÔp ()
{[ o7
,2þ,!rÕp ()
{\ o-
ÝÞ {Z"€?rÞÕpor
{\oa
þ
2026-04-20 13:49:36 +08:00

2026-05-08 11:03:00 +08:00
,;~jrÖp%r^p|Y
s(
¤r^Öpo»
+^~jr¬Öp%r^p|Y
s(
2026-04-20 13:49:36 +08:00
¤%ròÖp{\oa
2026-05-08 11:03:00 +08:00
 
s(
¤r×po»
2026-04-20 13:49:36 +08:00
{]
2026-05-08 11:03:00 +08:00
Ü+*KÞ0}d}e(%
2026-04-20 13:49:36 +08:00
sx
}^}_}`s,
}a
þ
,*{ao-
2026-05-08 11:03:00 +08:00
{aoX
{ao-
2026-04-20 13:49:36 +08:00
}b}c*0ýäoE
2026-05-08 11:03:00 +08:00
2026-04-20 13:49:36 +08:00
s,
%o-
2026-05-08 11:03:00 +08:00
 R{d
, {eþ,>{_oF
,}eos
+{^oT
2026-04-20 13:49:36 +08:00
, +&os
2026-05-08 11:03:00 +08:00
{`oF
, }e   ,M}dR{aoa
2026-04-20 13:49:36 +08:00
þ
2026-05-08 11:03:00 +08:00

,-r^×p{b{c(+
{aot
+**(u
*{g*"}g*{h*"}h*{i*"}i*0>ås3%(.
s|
o%%(s|
o'%( o)
+*0Aæsv
o&
+o'
ow
o"
-èÞ ,o#
Üox
+ *+ 0ç~f
(A
&~f~i(R
þ
,(~ir‚×p~f()
o*
(*Ý¿~fsy
sz
%o{
rñ¾po|
r5Øpo|
($(+o&
+$o'
rGØpo|
 o}
o~
o"
-ÔÞ ,o#
Üo~
rWØpo|
(&(+o&
+,o'
rcØpo|
(
o}
o~
o"
-ËÞ
,o#
Üo~
rmØpo|
((o€
(+o&
+Eo'
rØpo|
rØpo
r™Øp((oˆ
o
2026-04-20 13:49:36 +08:00
o~
o"
-²Þ
,o#
Üo~
o~
o€
o
Þ ,o#
2026-05-08 11:03:00 +08:00
ÜÞr¥Øp~f(+
Þ*A|0Ã ô9-
eR·
h{ã ðñ/0è
s@
s@
2026-04-20 13:49:36 +08:00

~f~iþ¿
þ , +/s3%o%%o'%o) +*0ÇéuP
2026-05-08 11:03:00 +08:00
,((o
2026-04-20 13:49:36 +08:00
o(o
þ+  ,j((o.
+?(/
o((
o
2026-05-08 11:03:00 +08:00

2026-04-20 13:49:36 +08:00
,(
+ þ,+
(0
-¸Þþ o#
Ü,&($o$o~
,(&o&o~
++*:L†0Éê
(&o,
+(-
o
a
(2
-äÞþ:o#
Ü($o,
+(-
o
a
(2
-âÞþ:o#
Ü((o(

+(„
o
a
(…
-âÞþdo#
Ü+*( 0L"n0 p(+sO
(1
(2
+*0gës,
o€
(+o&
+"o'
rpoˆ
(+
o-
o"
-ÖÞ ,o#
Ürãpo1
(2
+ *.G 01rÈÙp($(0(&(0(((1(4
+*Vr0prÚp(&
€f*0S}†
|‡
þf|ˆ
þf(„
}‰
(„

(%
}

}
*0ì(„


(
2026-05-08 11:03:00 +08:00
{
2026-04-20 13:49:36 +08:00
 ,
o
{†
þ,}†
}‡
{‡
Œfþf
þ
Œfþf
,j{‰

(

þ,?r^Úp{
{‡
ŒfŒf(4
{‡
o
}‡
+}ˆ
}‰
*{r*"}r*{s*"}s*f(%
(8(:*{t*"}t*{u*"}u*"(
*{v*"}v*{w*"}w*{x*"}x*{y*"}y*0CíþT(B(D(F(×(H +*0Lî¥T
(A(A3/(C(C3 (E(E3(G(Gþ+ +*0Aï(A
(“
(C
(“
a(E
(“
a(G
2026-05-08 11:03:00 +08:00
(“
2026-04-20 13:49:36 +08:00
a +*0NrŽÚp%(AŒ£¢%(CŒ£¢%(EŒ£¢%(GŒ£¢(Ü
+*{z*"}z*{{*"}{*{|*"}|*{}*"}}*{~*"}~*{*"}*{€*"}€*{*"}*{*"}**"*{„*"}„*{…*"}…*.si€Š*0(

3
(”
þ+
+*0LªÐ

€[Þ
Ü~Œ%-&~Šþlsÿ
%€Œ(8
*
0Gw(•
, +7~\þ ,'~%-&~Šþm
%€‹ +*0,ªÐ

€[€\Þ
Ü*#*01~^þ
,#~^s@%o?%o=o
*(I*0~gþ
~gs]%(AoN%(AoP%(CoR%(CoT%(EoV%(EoX%(GoZ%(Go\o—
*(A*0;~kþ
,-~ksb%o
o_%o
oao˜
**01~oþ
,#~osg%od%ofo™
*0
þ
+*0,o7+
+*0w,+(:
"šiüD7(L,(B,,
þ+
,roÛp(:
ή()
€m +'(Ñ,(L,(B+ ,  + +*00 ,,(D+
,m(´ + +*0 8rÀßprêßp-ràp+r‹àp()
rÛNp"ÈC
*0{þ
, {
*09 þ
,
{þ ,{
*Vo=
&*0\ 
,rŸàp(*~jrFáprfápo¶
(({ þ , { 
*:o=
&*09ð%-&þ
%
( *0(ñsˆ
þ
*0-þ
,
*0@ò 
,+.
+(&+ (O+(
*{­( *0qó
  ,+.
+
(6+(*(6
+
,( + þ,
*0³ôs

(*o, ,1~jr˜áp{´rºápo»
2026-05-08 11:03:00 +08:00
ràáp()
2026-04-20 13:49:36 +08:00
+/~jrâp{´r6âpo»
rTâp()
þ ,þ

*0Bõ(.o
,
,{¸o
+~m
*0(Þ%-&þ
%

~m(
,

+~m
*Rr„âpoœ
*f
*0öoa
þ,o‡
o
(
rãpoG
-oF
þ+, 8(
2026-05-08 11:03:00 +08:00
o;
2026-04-20 13:49:36 +08:00
Xo<
(&
þ, {¿Yk{¿k[ or
, (
+  ,8
sO

{¿
oa
X}¿
oX
 (O
(L

  ,3( 
2026-05-08 11:03:00 +08:00
s|
2026-04-20 13:49:36 +08:00
  r)ãpoA
& sO
(1

+oA
&oa
þ

,to†
þ_,2r3ãpr)ãpr+psO
(1
(2
(+
þ,
++*>o)
*0@ò 
E
++ + (?+
2026-05-08 11:03:00 +08:00
*0­÷  Ew8(h
2026-04-20 13:49:36 +08:00
þ
,(xþþ, (h
þ,!räpŒ|()
-+
+
+
+*0.ø%-&þ¢
%
($*0Uù 
E+)(K++(K+
*0ê(%
(+(-(/(1(3(;(>(@(B(D(F}×(H(J(L(N(5(7(8(P~j
*0û(.(*(,(0
, (2(:(=(?(A(C{×(E(G(I(K(M(4(6(9(O
2026-05-08 11:03:00 +08:00
*0Y(%
2026-04-20 13:49:36 +08:00
þ³
2026-05-08 11:03:00 +08:00
(­%-&~ïþÆsÿ
2026-04-20 13:49:36 +08:00
%€ð**"**"**"**"*0aú  .+.+ r§äp
(­+r·äp
+r p
+
,r+p(J
o[**{™(=
}™(\*0¦û
9—rñ¾p(Œ
,r p(Œ
+ , 8rr5Øp(Œ
-rWØp(Œ
-
rmØp(Œ
,rñ¾p(Œ
+
, 80rGØp(Œ
,r5Øp(Œ
+,9,o5
, o6
þ+,o7
oA
& rcØp(Œ
,rWØp(Œ
+,6,o5
, o6
þ+,o7
oA
& +}rØp(Œ
,rmØp(Œ
+,V  ,JrØpo3

r™Øpo3
 
(
-  (
þ+  ,
 o
 + +*.sÅ€ï*0
+*BSJB v2.0.50727l4u#~ uk#Strings¸àÌä#US„Å#GUID”Åt;#BlobWú3ÇtðƦ~0û ~ÚhU ;B/oNÝ/oN9.“M½Nh./@ò./@Ó./@Ä//@b//@•//@«./@/oN.oNñ/D<D]D<M ·´g/@J
· ·
F½%¨(D<¯
·<,EA,½
·á D<È
·CÉL
D<ž?D<é,“MM.“M£
·ödVWoÉL¼5VWCt@ÉLÔ<D<N,D<'^D<º8D<+D<ÎC/@ŒAD<|AD<”AD<+//@G ·Çt@ËÉLl
D<¤Z“M€I,gÉL
…d½%ã>A—EO;(@D<%$2v2Þcñ_$2-&oN'0ŒW-]_* D<¾LŒWzH½%I h~C”@ÉLd
·u
·"ÊI0MÇ
·r_O;\bO;ŠE,LŒW¨!O;œ#D<vIO;c<_*gAD<".ÊV".ÊV"®]0M"Ø-0M"oL0Mƒ
D<
K_½%
¦:½%_O;Æ.O;à_$2"2<0MIO;C
D<ö<D<UD<¹*D<X
D<"æI0M"Åd0M
ôT½%c _*s"USí+C/@zC/@"ÐD0M™.D<(&,,8,
W½%¾4D<´?_*-ED<¤8D<f_D<XeD<Ð5D<è
D<ÛDVWù D<´5_*7+VWÄ`D<„@VW
{Q½%
_
]_½%
½%¡`$28&D<¯C“Mh~%$2W,D<$2Y%D<5A_*"´b0M"€R0M]&_*"é0M¿WD<<j,Óý*
š;½%ÀC,"P+0M"¬W0MšE,TO;Ì2O;"ÕS0MÒWVW"®?0M"T0M(A,â<D<"z*0M"ŸW0MY=D<ž'/@
gJ½%ƒ¢@<M$2]@O; DO;#çD, ·9 ·ÿ<_*ï_*{=_*ºb_*"j0M__*"CW0M"“T0MßÃáS/@ôE/@F/@Æ]D<?+/@…C@0D<{EO;­*O;}%$2Ç”@I,Ó4O;®%D<D]_*Nò-³V9°/oN9™ ½%=I½%=AE½%= ‡eJ= è`J=(lVN=4Ð>N=Dx"N(#VA@N=%\ $FN&aûE&cñ:N=(e7FN=*kBFN=0q%FN=7x÷ON|7|)N=8Z5Nt9ôIN=?JN=@«PjN=T¹mQN=TÀÙN=VÈ-JNiWËž5w)25Y»\N=¡bþON=¯ƒª =±ˆ!=µ.I=·¦:·Î"¡»¯:¡»=»šë?=¼œs=Á¦=èý=̬r=Ò®U=Ô°=Ö²Ä=Ù´s=Üò=Ý·s=áºÌ^=꼉H¡î½ø=îÁ#H¡òÃ…E=òÇJJ=øÏpE=ý×=à'=âU=ä¯= æ°Ià è,¡ðk=ô-=ör=÷=ù =/8 =1=3 =< M =?
!=BU=E¯=J=QÜ=VÄ=XáL=^!QAUf#)-=f$
=j5}=r7ƒUt< PTvA4UzMRU^iUc­^h!=Šh±={ˆ=œ}=žÇ= =¡ƒ>=¢˜=§ˆ=©ŠŸ=­Œ&=±Ž­=´_=ºÅ=¼˜L=ÄšÜ=ÅœÚ=Çžj=É "U=ͣءá¥M=á©=æ´£!èH¡ì‰H¡ìº=ì¾·¡ïÀ!=ïÄÏ7#-¼ U  g--`hU 8R1-OY1-V€¡U .Y5-Q€·U !1<-21-3>I@-U  U U ÖU #U ?1-u1- 'U FE-VJ-îUQ-D]-S€N#U V€LU ƒOf-¹2¢Nt-V5-ò}-c…-8U ·U ïU Þ OŽ-ÞAU ^+U Q€ÆU Q€ŠU V€—U ¨-Ø-¹-â6U Ä6U V€—U Q€6U Q€PU Q€jU  -â6U œ"£-Ý`§-t3ÀZ«-@&U ôgU F±-ùÂ_µ-°1- (U Q6U *(U w6U ‰KU Q€*U Q€T)U ò'U >6U Q€<*U Q€~)U Q€Ù)U Q€-TU Q€Á)U Q€ø)U Q€@)U Q€-=U Q€"*U Q€f)U Q€?=U S€­U 
?<-îS€WU Ý`§- º-YM¾-Þ4)­HÇ-¾Ï-S€i:U Â>U ]-z?U ±(%^e-ó\-¼HÙ-óã-ÕHí-F±-¦Mö-uû-P._LU çHÇ-© .ÏhU I.ßW.ø)8-‡b5-/h-Q€ÅU Q€3fU Q€¥eU Q€…fU Q€×fU Q€gU Q€{gU Q€ØeU Q€óeU Q€fU Q€(gU Q€PgU Q€åfU Q€ÈfU Q€RfU Q€dfU Q€—fU Q€µfU Q€»eU {\1-S€¡KU µJßJU BKU +U .U%.—JU ð@*.æ/.×9NdU Ce&dU dU EdU Ó^ôð@*.P<4.=N -Q€‘ -M:.Q€ÅU Q€3U Q€PU Q€ó)Q€)Q€U Q€U Q€¶U Q€nU Q€DU Q€'U Q€ûU Q€ËU Q€×U uW.î*U ½g--ÿ(%‰&U 18U 6,?.=D.à)V€ÖCL.V€ 3L.V€cLL.FQ.V. [.N`.}-Š e.Üdj.Ï-n.Ï-x.^E-â6U \U  O€.ÎAU  "U b n.3 x.Üdj.â6U \U rS Oˆ.Ï-n.Üdj.Ï-x.Ï-.V™.Ï-.s+V.Ï-x. O€.V.Ï-¡.Š"£-MF.Ø
ª.3 x.ÎMJ-áDU á\U «U ÍFU KQJ-F±-”(U V.­bU DMU ;!)í"U  %)ZdU ¯.q³.¡_¸. %)<½.F¯.Ï-4.'<¸.70Á.WÆ.Æ-Í.q³.%Ò.gHà.DHà.â6U %\U !iU ÖX}-Hà.;,å.Ó^ê.Ø
ï.KMô.Hà.¬Zü.Ï-¸.1S)#0Á.,/Ó^/F±-Æ-å.Vj.ÁI/M^ê.ÛZJ-[J-VP/ÉZJ-ÛC/M:.-!/Í@Üdj.¼-&/Vº-?iU çO]-ëZvF3/sb/µ6U ÊX3/„-å.I.1S){ 8/
3/X
A/¨
8/0å.îØ
M/Ó^ê.k M/žR5-d(D.=[R//[J-œL^/M(D.j]3/`3/Ï-3/‰2U Ø
j/
o/…]t/©"U k j/6,€/XD..…/Vº-?iU Í@¼-3/3 3/Vº-?iU Ä6U Í@¼-3/Û13/b &/sO€.Ä6U õN/Û13/b x.MF/Ø
¡/ÞX¦/±X)Ð+8/+R5-iSJ-Ï-3/=-²)U ¥)U MSJ-+'U ¾AU Ž9tU [5-5-ª}-º0`0î(%N)¼'U Ü(%&N)àË3/U U zÊ ŠzžÊñ QаáU ÄU @U  U à)V€'1®/V€D1®/V€51®/6,³/ 3/¸/(3/ñÀ/È/ÚÐ/vÚ/Oä/Àí/ÞÀ/ãÈ/ö/ö/<¸/î
00x.¼-3/¼-3/w^x.Ï;Î_0Ï-3/Î_0w^x.ùAVÍ@b x.†ZØ
0¼-x.ùAVÍ@¼-x.ùAVÍ@¼-x.ùAÍ@oY0¼-x.B%0ºQ¸/Î$0Ú
3/5Ø
.0œZJ-¬EU Ð+8/¦[)c1ÙI5-™3Ï-A/m[5-øFÏ-x.øFÏ-30üdU øFÏ-x.3 30jBDC<OñJU ¥X%b$p$Î$NaËa[KU øF¹203½BñT!¢T=0ÜdB0hF0]>h¸/VB0ZdU à)V€ÆgV.V€ž\V.V€è V. O5-zR5-+U}-6,K0Ÿ/P ÔLP ÔL\ ¬NP0D!ÚLçP!ÔLb0p!W1e”!Mhe¬!¨#eä!%]j0Ä"[Cp0 $1†0$¡Q–0t%‚8Ÿœ%Ì%ÚLçX&=0 0o&ÔLx&ÚLçŒ&ÔL¥0ä'ÔL²0†(ƒ eeŽ(e—(„DeŸ(ŽD¨(Ç\e°(Ô\¹(†>eÁ(>Ê(¯Fe Ò(¾F Û(°M¸0!ã(¿M½0!ì(Q¸0"ô(#Q½0")ge#()ee#˜)Æp4e#°)lI¢#Ö*ÚLç%+ƒÚUÃ0%x+ëË0%˜+ëÙ0*Ø,(5é00-ãMò03ð-Ù<¥04ì.ÔOù0;¨/DP;À/hb1;@0ˆ<e0ÔL<„0ÚLç<1ÔL< 1ÔLÛ<81ÔL=´1Æp4e>ì1Ž]1> 2ÆíV><2Æ"!º?\2r01?x2:$1?”2H$1?ä25,1?3ú411@(3Š_91Bh4~_?1CÄ5³4;CÔ5¡4ÚDð5o&Dù5f&eE6/\æE´6@\æFØ6'G€7€'eH 8Þ5HL8Õ5eI{8-4I„84eJŒ8†>³J°8Æp4eJØ8Æ"!ºJø8ÆíVJ(9XFD1KÔ9Y4J1Mo&ÔLNp:ÚLçN;®ANˆ;žAeO;à*O™;ÒÃP¤;ˆQT1P¼<ÔLRÈ<RÃ0Rì<<[1R,=Z"e1Sô=F"e1T\>ÔLUÆOk1UÆcOv1Vp>ÔL
Xœ>ƒ†1Zd?O“1]4@cO¡1`à@_^¹1h°Al5É1møBˆ5à1so&ÔLu¶CÔL
uÐCw,Dzcë1wpEæOk1x°EæcOv1yPFÚLç{€FÔL{ÜF:"ñ1|ôFGcë1|ðH©cë1}xJæOk1~øJæcOv1dKÚLç|K€;˸LÅö1ƒàLæ+2„o&ÔLöMÔLNÄ
2†´NÆ;j0ˆ O2‰ O[C'2ÀO7;92” UBS2 œÀUÙ"N2V¢8V·#Ÿ¢ìVl*£õVYäW«_W2¤8W»_W2¥pWT5^2¦¯Wãd§¼Wãd*§àW†+¨XÆ
2¨dX´Zd2¨ˆXÄã«\Yk2«4ZÄØ+²\ZÄÒg²fZÔL²|Zò—ZÔL²¤ZcØ[7L—2·P\ 2¸”\hM¦2¹0]š8˺À_œVµ2¼”a BÈ2½he[Û2Âi+Bâ2ÃTi'"â2ÆDjm1ë2ÉjÍðjô6æÎk¾XØk\R¨ÓlŽZ¤ÓmóD¢ÔØmxVˆnþD¤×øsÚLçØtmKÚØptn6ÚØ”t¾,¨ØÀtéCŸØ upXlwÍ%(3Úìxñ%?3àðyÐQ¨æÈzuP|}´TS3ç˜~P`3é(­¤ío&ÔLîÔÚLçîD‚Xs3îä‚|X‚3GX‹3ðÑ=Ÿñ(„×%¢òð†-Xo&ÔLõ¬ˆõ̉
õè‰ç7ÚõŠÚLçõŠú7Ÿõj;ŸöB‹N3M÷X‹×:çù¬Œçùv-š3ùo&ÔLûú¢3ûXЧ3ûŒž§3üÀ¿j³3ý Ž
¨ÿy¨ÿ
¨ÿŒŽ­¨ÿ²Ž°>;ÿ¼Žž>ÚØ[?;ì<?Ú¬‘þ¨Ø‘0¨ü‘ι30’ì¹3d’;Å3˜’RÅ3Ì’&`Út“ˆÑ3¨“¢Ñ3Ü“¬hÚ¼”Ñ#Ý3ԔϨø”ÚLçx—
ëBç˜ØBçܘ/,â3®Ú 8™(5ê3 a™÷Wò3 p™Cý3 ¾[4
S›/š3\›-)çô›²14º14ìœÙ1ç$ë!4ôŸ:b,4bMø¡µ84¢9ç
@4;<ç!Ì¢8Vç!lH4!L`ç#
#P4#ˆ£PRX4%À¤]-4&ü¤gç'”¥Ñ1a4'Ì¥Ü_o4*ø¥Ýv4+Ý|4-j,4.À¦¹P40ø¦éç1¢1‡41¨ŽS¨59”45 ©P9”49p9”4=œª"¡4AܬA5çD ­D ­ž5çDÆ1†D£­Í1çE­­‘1çE·­µPçEÀ­©O­4Eü­ƒM¼4F\X¼4GSÐ4HÈ®íRà4IذSÐ4Kœ³îPçL²[ñ4L¨´.:5RG[$1UY[çU)çU¨¶kT1U„Y5U˜¹ÑPX4V º8G)5WÔºG55ZNIà1]ð»KDC5_Ô¼@DL5`ÔLddˆ¾QB†dÀ¾8B¨eâ¾eø¾î¨f¿0C†f0¿gR¿!O†gh¿hŠ¿ˆJ;h ¿yJÚiÞ¿3†iô¿ì2¨jÀžB†jkÃT¨kÚT†k•X†lÀ…X¨m´À£7ÚmÚÀ b†mðÀóa¨nÁø#†nÜ#¨oN$†o,$¨p‚Á®$†p˜ÁŽ$¨qºÁ%a†qÐÁü`¨ròÁŸa†rÂsa¨sK;süJÚtèF†t„ÂØF¨u¦Â¦2†u¼Â“2¨vÞÂê †vôÂÌ ¨wÃÌJŸwèÃ(KŸx„Ä
2yÚÄTyèĈ#yôÄãyÔLyÚLçy,5X5yÆ
2z9dz`{ìÔÄã{×ÄZ\{<×ÄÒg{|׃öL^5{”×ÔL{ø×È8{Øâ8{·<d5{ Ù >~8>k5~€ÙP>ÜÙk>k5üÙ >p5€D!¨Ú\Zv5‚¬ÚâjŸøÚƒÛK7Úƒw7Úƒý5ÚƒBZv5ƒ„Ûm |5ƒÀÛ)Zv5ƒÜÛQ |5ƒÜZv5ƒÈÜ, |5ƒ Ýí>ƒæ=ƒðß¼D€5ƒäàžG‰5„ÆG5…àáVGÚ âzG;Ɖ5ˆ„âך3‰¬âŠÚÈâœ;o&ÔLŒØâƒ
ŒFRÃ0ˆãÄ
2œãÆ;j0ÔLÔL˜5x&e”äÕ5e¬ä¥+Ãèä%]j0”ìåÚLço&ÔLøåƒGæææ#+¢5o&ÔL˜ÔL}˜ÆG#šÆB#¨5›Æ8#³5žÔL}ŸÆG#º5¡ÆB#Â5£Æ8#³5§o&ÔL¨ƒäº5¨–!Ð5ª„!×5«…æ²jÝ5«Žæ¥jä5¬–æÐ*ê5¬ŸæÃ*­§æ‘0ñ5­°ær0û5®¸æÔL®´èÞo&ÔL®éƒ
o&ÔL¯Œéƒý
„êƒ
*°óêƒÙ
o&ÔL² ëƒ
o&ÔL³ƒ²o&ÔL´Œëƒ
6´o&ÔLµ¸ëƒ
o&ÔL ìƒýo&ÔL·o&ÔL·Üìƒ9ƒb *¸o&ÔL¹„íƒÙ$6¹o&ÔL¾ÔL}¾ÆG#
ÆB#36ÁÆ8#³5ÄÔL@6ŘñjI6ÉÔL}ÉÆG#†1ËÆB#O6ÎÆ8#³5Ó¸ñYb6Ôðñjb6ÕÔLi6ÖN%ºÙ€ò¹`Ù´òÙ ó Wq6Ù³5Ûäó@-|6ÜôM-|6ÝYb6ÞŒôjb6ßÄôÔLƒ6à_CãÌõð‘6ãèõ0äÈöPH˜6ä÷`H˜6å-H˜6æ=H˜6ç¨÷ÔL˜6èØ÷èŸ6éøÊ5ê`,ª6ê„ù—)†1ëo&ÔLî¼ûƒÊîo&ÔLîüƒ: îo&ÔLîƒZo&ÔLï‚üƒ¯ ï”ü@-·6ïÌüM-·6ðýÔL¾6ñ^S1ò ýH†1ó³@
“-÷¬þØ+Ä6÷ÔL}øÆG#Ä6úÆB#Ê6ûÆ8#³5þo&ÔLÿüÿƒÊ
6ÿ)ÔLo&ÔLlƒE
o&ÔLäƒlxƒÁ ƒ¬ Ö6,ƒ#
ˆƒÂ
6Ѓs
Ü6OƒÃ
Ö6hƒå6¼ƒ7
6
o&ÔL ôƒõ
* o&ÔL ïƒ o&ÔL  ƒ%
æ Dƒï 
ăà 
o&ÔL
Ì
ƒ:
å
o&ÔL ƒŠ
6ä ÚLço&ÔLð ƒaæ$ ƒ8ë6o&ÔLL ƒƒ ƒØ o&ÔL¨ ƒ

ƒi ô6
ƒI ô6o&ÔLƒTþ6ƒ *o&ÔLƒo 6o&ÔLèƒbäÔL74ì)7=ÔLHÛN1PƒèNÜ6YR1 aƒ!RÜ6 jîSû5!rƒûSñ5!| -7"Èœ]$7"(ñ%#Àä%7#LÆíV#0Æ"!º$0M417$\f40%àÆp4e&o&ÔL&ÚLç&4ÔLæ&J;/)¿,Ã+ÇA*+Ð:7,Ø$Û2,áÔL@7-ûe/,/ Fe0[0ÔL1&
Ã1.$*17yÃ2?*2H
Ã3P1*3YþÃ4a*4l~_H75¼ÆíV5Æ"!º6dÆp4e6¾
Ã6Æ$*6Ï;Ã7×Z*7àyÃ8è*8ñÉÃ9ùë*9 
Ã:
1*: UÃ; *;$ þÃ<, *<5 OÃ== p*=ÔL>F HVe>N `V>W Ve?_ (V?ÔL@h _`e@p z`@y &`eA 9`AÔLBŠ ÚLçBo&ÔLB˜ ƒcÃBÀ ƒ2B(!ƒ£ÃB|!ƒ BÄ!ƒûeBÌ!ƒ
B "ƒäN7D"ƒT7D°"ƒY^7F¸"ƒÊc7Fÿ"ƒèeH#ƒí
HH#ƒŒk7J`#ƒ$k7K€#ƒGÃL $ƒù
r7LH$ƒ;*Mo&ÔLNŒ$ƒ~*No&ÔLO´$ƒF*Oo&ÔLPù$ƒ*Po&ÔLQ%ƒ'Qo&ÔLQx%ƒ¨Qo&ÔLQˆ%ƒQÐ%ƒ¬ *Qo&ÔLR&ƒ Ro&ÔLR@&ƒÎ6Ro&ÔLSŒ&ƒø*So&ÔLT°&ƒ6To&ÔLU0'ƒù}7Uð'ƒ W@(ƒ
Wt(ć
W¢(ƒ_
Wo&ÔLW·(ƒ¯
Wo&ÔLWÔ(ƒtÃWo&ÔLWà*ƒBÜ6Wo&ÔLXð*ƒµ6Xo&ÔLY<+ƒ6Yo&ÔLZø+ƒÙ*Z4,ƒë ƒ7[˜,ƒÔL\-ƒR1\ÔL}\ÆG#6^ÆB#Š7_Æ8#³5b˜.ÔL6cý.¥d7d/µdÿ d/jÃe/z*e/FÃf'/X*f0/,œ7g8/%,¥7gD/Î"èh±/óèjo&ÔLl¼/ƒlÔL}lÆG#6nÆB#¯7oÆ8#³5rÔL}sÆG#uÆB#¼7uÆ8#³5wo&ÔLxì/ƒ&$6xÔL}}ÆG#WÆB#Æ7Æ8#³5…ž1ÚLço&ÔL¬1ƒÎýg¡U–F g¼ `hFDC•`áQ%\FJ!1Ò×!óQÌ6¨8áDá\¦?ÍF÷MKQ(ee!1!1!1!1!1!1!1Ï
Z  'Ä6§iFÃ: 'Ä64Q§iFÃ:í"ë:~+<DáDá\¦?ÍF÷MKQ(e¨b”]4¶82]Ý*ñ3!1!1!1«&«&!1!1!1¶8?4H O!1!12ih«&«&«&Ï- OÏ-ÞA^+¬Zu=â6\Ï-â6\ OÎA "k*^EÏ-â6\rS O¢^â6\rS F OÏ-…SÏ-â6Ä6”cÏ- OÏ-â6^c¹cÏ- OÏ-'Ä6Ï-Ä6Ï-”(FFâ6%\;,!iÖXHâ6%\!iÖXHâ6%\!iÖXHçAg!T!Ì3â6%\­bDM;!Æ#!1!1!1N&2eN&!1hâ6%\;,!iÖXH1SÎc?iÛZ[ÉZ[ešPë6Í?šP?iµ6ëZÍ@¼-Ï-?iÍ@¼-?iÍ@¼-Ä6sOõNÛ1
7
7³K+RÐ+Ï-ri&âiri&18šP(6¾Al'=óY§Y(6¾A.dl'=§YšPšP_LšPµ%Ý9É9à&šPFjšP18ƒ(ã'šPw;w;ô5ágà]R]!1!1£(Ý0!1!1!1!1!1!1!1!1í"ë:í"ë:XC9[}[š[»Uà]18[N¼-Ò!Õ[18»7Õ[píEœUíEœUíEœUíEœUÈRå@¼-ùAw^C;ùAÍ@ùA”,§,Ï-ùAÍ@w^V¼-ùAVÍ@¼-ùAVÍ@¼-ùAVÍ@¼-ùAÍ@ùAšPšPšPšPšP–9šPÏUÏ-f\Ð+™3c1Í?Ü?SOÈRøFüdÏ-øFüdÏ-üdÏ-ý%ý%·Rñiß+!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1FjFjN&Zd°0BfR01?1?1?¼'¼'º]º]º]îG!1º]º]îG!1”(”(F–F½gÿ(‰&18FŽ*
ekK]°í"í"9K]Ó^K]°í"ë:í"ë:9K]Ó^í"ë:!1!1!1!1Ó^Ä^?”^Ó^­5Ó^Ó^A O†Z¥EM'·`;'9K]°Ó^Ó^9K]Ó^ %ZdK]°¬Zu=¬Zu=9K]Ó^!1!1 %<22W24^!1!1!1!1&Y¥HÏ-!1!1!1!1¥H %Ú;¬Zu=!1!1FUM¬Zu=Ó^ÜdK]°ÜdÜd9K]Ó^@^DÅ ÀZí"M^«ÀZí"â6%\Ó^øF”((A”(¿`[¿OMF†Z O=²)¥)MS+'¾Aƒ*Çí"!1!1!1Ì`¶8¿`e]¼'N&Nê0¿!1!1V!1!1!1!1!1!1¶8!1!1!1!1!1!1!1!1!1!1!1!1º0ú0º0ú0º0ú0º0ú0rCrCšP†Z†Z†Z†Z†ZAîA5iL»AAGÓ^K]°­5­59K]Ó^Üd!1!1!1!1í"ë:í"ë:K]°9K]Ó^K]°9K]Ó^¥EM'·`;'9K]°º0ú0º0ú09K]Ó^44" ÔLÔLÔL
)ÔL1ÔL9ÔLAÔLIÔLQÔLYÔLaÔLiÔLÔLÔL±ÔL¹ÔLÉÔL ÔLÔLqÔLÀ?eË(i4°Lz<~_ŽD=0šÖ6Ÿ¡ßYŸD©—j¤¡ÇYŸÔ&ŸLÈ0²LÕcÃŒ+LÔLyÔLW*˱ª<ÑDÔL»©´\â¡(5è©´\ðTÔLT1\°L#d~_5dÕcÃTVe@©Œ=FöcM©´\SlG#ctÔL}|:W‰tG#©·©­`´©@8º©Å4¾©­\ËÁ Á¨3Ÿ|ÔL|1ñÔLÉÏÚ©©K<e©^8å©U8å©Å4êш*õ©­\ü©­\ ÙU=$á”+*©hC1TÔLTŒ°Li~_ŽÕcÃíXœ©ÔL¡©ãX§©yÔLTõ"Tœ¤°Li¬~_Ž´¼5 ézZô=0š¬ÕcÃT¼¼ÔLœÊSNİLcÌ~_š¼°L#Ô~_5ÜÜ=0šÔÕcÃÌÕcÃŒÔLäÔLìÔLì°Liô~_Žä:W‰ä1ì1ôÕcÜE¤ÔLÔL´ÔL»¤1œÔL|ÔLTTÑ`|êVÜy"!º\r\ûñ—+ 9—+9B]AaÔ0I|i8T|T<Q\<ùi3WaË0“9©ej¢yp4eü°Li~_Žìdº@8º=0eÕcùp4eÑ+ 
 °Lz~_Ž\ÔL\1»üÔLü1êcŸr\ûÈ0²$ÔL,ÔL$°Li4~_Ž,4ÕcÃ,,ÊS¯<°LÄD~_šDÕcÃÔL©é:Wåé ñÉK*ÚéÁS÷±ÿ;ý¹0¹Ê5áÖ`
LÔL}TÔLTTáp4eáÖ`8©21!eXw<}$1S\¤\°L¢d~_ŽdÕcë'Ÿ©BJelÔL}ÁNeT°Lit~_ŽtÕcÃ|G#ÔL}!ÔL}ð[œÈ0²ÙÔL})D!¨1[C¬ÙG#9ÔL}áÔL´á¹`A52ñAY2ñyæ*AG2Al2©´\Ä&Ú\úf‰©ÔL©¡C$Iû/*I \Id*Ic*I÷K*IþQ/Q<
IÖb*I·&ɹiÚI i©¹`éÄb5©^9-;ñÔL*©ðb@yÿ;ý©åK@Y%)é.!º^Kù(5WaW*ji(#vaã1jYk%IÒd™Iãd*I†+ŒÔL}»9³ºÃÙU=Ϻկ9ç¿ç¡ÔL©^ ©üHe°Lzœ~_Ž\È0²\©S\¤¡ƒU ¡¡oh¤¡‡hX ™¡1ÔL¤ÔL}¤G#»Ùèd$1°Lµ =0õŒ1¼ÊSN¬ÔLTY“gî ‰'e´G#¡¸"ÿ ¬lÔL}¼°LzÄ~_Ž\ÊSN|K8TÌÔL|ã1‰|°L¢Ô~_Ž)ÔL}¹J+Š
ÌÈ0²ÌÔÕcÃ̰L#´ÔL}|ÔL}ÜÔLTÜ1¢-Ó
±•?Ú!ËKú
|w8TùLWµ=Ÿ¡jk ¡Tiq ¡SL{ ©îh… ¡Ä%M©qj¢¡jMäÔL}äG#ßR— ¡þhM¼5¯ ¨=Ÿ¡ËEËA Y<*Ys<ù Éó] Éç]¤ÒR2 ¡ &@ ìº5åô~_5üü=0šôÕcÃÜgMÁ¹3Ÿ©qR2 ©Q2 ©#+
iÔLyÔLi,¡
ií&¨
q°L¯
~_õ
dedáÔLáò^*áYáYáÈ2µ
æ+¼
iR1Æ
ÔLÈ0²°L# ~_5=0š ÕcÃñZ;¤ñÉZ#Ÿ©ÎiÚ¼5h<s·üñejzñê<zì4¨ ¤]Y
©íVå©qRÜ!Ì^æ©}dë©hC!ª1c=º1§PÀ9f&eÔL$ÔLæ,ÔLæ4ÔLæáÔLþá16á?háY'±g áÉ'á­;¡(jÚ<ÔLAIÔL}1À+51³+5ÔL}ÔL}$ÔL},ÔL}<K8T<°L¢D~_ŽDÕcÃ<±ì4¨QªIW1…:1T&Q"^WLÔL}¼f&e¤Säa°L¯
=0eñ{/æñˆ/
ÌNêi%_TÔL}\ÔL}$J;/dÔL}lÔL},J;/tÔL}|ÔL}4J;/¤ÉÂ5çÔL}<Q•\11Y%)§ÔL*¬ÔLiÎgÜLG#yíV¼r\ûŒÔL}ÔL}¹¾;Ÿ± ;IãdœÔLSŒÔLT¼È0²±ç5Ú¡¾E@ ¤ÔL}¡g+*p4e¬´G#ÑÔLQŠ\ÛáUQb;äQZ;êQ—4
Q4QÃTÃQÚT*©á^e¡YÔLIö168
^Iê1Y
eYk ÔLI A#ƒ=J{:P/D*»9Vñ·KºñÁKºñϺu:Õmd^û9Vu:ç%kí9çTCt¡Œ:üÅ}©D†˜DçP:½a¬8¯9ç_dç¿IÔLQÔLIÒd—©àV³I`©©B´ ©ÔLIÿ@Þ 68äÿ]è@:Ãû9³í9çI`\ñÚ^ýÁ?a+Yæ*2Y!MkqG#Éq#½Y¦Æ¼ÔLéG#“¼1¼Ñ`¼¼<QY¦ÖéG#ÝY¦<1å;W¹@8³¹]³Se!ýY‰LG#G#\ÔLT{/æÑ2EºÃ y4eQÔL}¹û¹è7ÑÜg>é4I ÔLmÄÔLÄ1ÄE50„-0õÄã1‰ÄÌÔLÌÈ0²ÔÔLÔÔLTÌÊSNܰLcä~_šÔEäÕcÃÔ°Liì~_ŽìÕcÃÑÜg5Ô1ÔÔã1‰Ì©211:W1T:W‰1<´¡Ç"ÿ ¡œ:ºôÔL}¬1ÌTÑ`]\ÔL¬°Liü~_Ž\1üÕcÃ\r\û°Lñ ~_Ž<\:W‰ ÕcÃ\ã1‰Ü-0ŽôG#»TETþ"T©ÔLÔLr\±ÔLÔLªÏ4±9_G0ý^Ü3
Ê5†+\°Lc$~_š$ÕcÃ,,º0,`0,î(%,Ü(%,¼'U ,N),&N)©ê\;!NC<G#ŽDG#W)ÔL"!º°!¨Ü2¨G#tG#t$G#t,G#tŒG#ŽG#ŒG#»T•\©XQ2 9qjÏÉôVÙÉþVá¤G#´ÔL}aÔL aR1iÔL}6$G=ù,Aù,]ù,aù,dVeù,h_iù, _¡ù,¤Ú¥ù,¨¹ù,½ù,À(Ä=Åù,ÈdÉ-ÌÝù,áù,åù,éù,°÷$: (y ,´ 0#!
1
-4:!8e!<²!@û!D"He"Lª"P¿"\Ò"|
#Ü#à=#äŠ#èÕ#ì>$ð…$ôÂ$ø%üf%Ç%$&“& ù, 'Q'Ž'Ñ'2( ($Ò(,+)1ù,5ù,9ù,Eù,Iù,Mù,Yù,]ù,aù,e-i-m-
|X)#ˆa)Œ²)* *˜*œ0* K*¤l*¨©*¬ò*°9+´š+¸ó+¹ù,½ù,Áù,Åù,àù,äþ,è-íù,)-
M-]ù,ù,¡-¥ù,Áù,ù,ù,)-5ù,9-=ù,A-E-Q-ù, þ,$-ù,¡ù,¤ù,¨þ,¬--¡þ,. 8.”8.³8.#¼8.+Ô8.3Ô8.;Ú8.CÔ8.Kë8.SÔ8.[ÿ8.[9.[C9Ccþ,C
þ,ccþ,c
þ,ƒscþ,¡kd9Ácþ,Ákd9ácþ,ákd9cþ,kd9!cþ,!kd9Acþ,Akd9acþ,akd9 cþ,Àcþ,àcþ,cþ, cþ,@cþ,`cþ,cþ,€cþ, cþ,Àcþ,àcþ,cþ, cþ,!cþ,!kd9#cþ,@cþ,Acþ,Akd9acþ,akd9cþ,kd9Ãcþ,cþ,#cþ,Ccþ,ccþ,ƒcþ,£cþ,Ãcþ,ãcþ,cþ,#cþ,#cþ,Ccþ,ccþ,ƒcþ,¡cþ,¡kd9Ácþ,Ákd9ãcþ,#cþ,Ccþ,ccþ,€cþ,ƒcþ, cþ,£cþ,Ãcþ,ãcþ, cþ,# cþ,C cþ,c cþ,i &;€ cþ,ƒ cþ,  cþ,£ cþ,À
cþ,à
cþ, cþ, cþ,# cþ,C cþ,c cþ,ƒ cþ,£ cþ,Á cþ,Á kd9Ã cþ,ã cþ, cþ,# cþ,C cþ,c cþ,ƒ cþ,£ cþ,Ã cþ,á cþ,á kd9ã cþ,
cþ,#
cþ,C
cþ,a
cþ,a
kd9Ã
cþ,á
cþ,á
kd9Ccþ,ƒcþ,Àcþ,àcþ,cþ, cþ, cþ,cþ,kd9¡cþ,¡kd9Ácþ,Ákd9ácþ,ákd9{d9 ƒd9€cþ, cþ, cþ,@cþ,`cþ,€cþ,Àcþ,àcþ, ƒd9À{d9Acþ,Akd9acþ,akd9cþ,kd9Ácþ,Ákd9ácþ,ákd9À!“m9à!“´9 "“ö9!"cþ,!"kd9@"“7:`"“~:@#“Ñ:á,cþ,á,kd9-cþ,-kd9!-cþ,!-kd9A.cþ,A.kd9a.cþ,a.kd9.cþ,.kd9¡.cþ,¡.kd9Á.cþ,Á.kd9á.cþ,á.kd9/cþ,/kd9!/cþ,!/kd9A/cþ,A/kd9a/cþ,a/kd9/cþ,/kd9¡/cþ,¡/kd9Á/cþ,Á/kd9á/cþ,á/kd90cþ,0kd9!0cþ,!0kd9A0cþ,A0kd9a0cþ,a0kd90cþ,0kd9¡0cþ,¡0kd9€3cþ, 3cþ,À3cþ,à3cþ,4cþ, 4cþ,@4cþ,`4cþ,à8cþ,9cþ,À9cþ,à9cþ,:cþ, :cþ,@:cþ,à:cþ,;cþ, ;cþ,@;cþ,A<cþ,A<kd9a<cþ,a<kd9<cþ,<kd9¡<cþ,¡<kd9=cþ, =cþ,€Dcþ, Dcþ,ÀDcþ,àDcþ,Ecþ, Ecþ,àFcþ,Gcþ, Gcþ,@Gcþ,€Gcþ, Gcþ,ÀGcþ,àGcþ, Hþ, Hcþ,@Hcþ,`Hþ,`Hcþ,€Hcþ, Hþ, Hcþ,ÀHcþ,àHþ,àHcþ,Icþ, Icþ,ÀIcþ,àIcþ,Jcþ, Jcþ,@Jcþ,`Jcþ,€Jcþ, Jcþ,ÀJcþ,àJcþ,Kcþ, Kcþ,@Kcþ,`Kcþ,€Kcþ,ÀKcþ,àKcþ,Lcþ, Lcþ,`Lcþ,€Lcþ, Lcþ,ÀLcþ,@Ucþ,`Ucþ,€Ucþ, Ucþ,ÀUcþ,àUcþ,Vcþ, Vcþ,`Vcþ,FÇ×÷lœÃÈð6½Á%ˆ½ÅÎÖæêó\¨Îßñùý<Pd{Ùè"ITZbŠ´º¿âGo»ÁFR^«ëô 5 ` » 
˜
ž
°
À
2026-05-08 11:03:00 +08:00
Þ
2026-04-20 13:49:36 +08:00
å
þ
 ž ¦ · 8 G a ² 
#
C
[
o
Í
2ELUˆŽ´ÈðDjxžÌÑ/<Hj~š©ðcŽ¡¬³¹¿ÅÔçíû.3=`q³ý4Cv §Àðù*£©·÷#,9FJU_Šíü'.>Klr±½ÏÙü"/Oa|¸ÑBou¤Àõ
 '.49h|ˆ />_eޏÂÙ,_ho{ŠŸ§²ê÷678 = Â_ø¾
óu©qÀÆ-ÄqÀgHÔDHÔÆ-Ì 
   !$'4HI Y'\4a6bPcRfShTjUoVwWym{[1Ô7QhÔ7»#Ô71Ø7eÔ7ÛDÔ7Ø\Ô7ž?Ô7ÂFÔ7ìMÝ7>QÝ7gÔ7gÔ7øUâ7•0ê7Oó7Ló7Ž_û7·48Ä'Ô7“'Ô7,8Ô714Ô7ž?8ÂAÔ7ä8Râ76< 8$I8¡"8p8`R8qK8r68Â,8)888ë78þ8f8÷88±8´>8_?8|848†`8°h8ã$$8Ó8UB8 84C8%O8æJ838¢B8ÞT8™X8§78b8ü#8R$8²$8)a8£a8IK8ìF8ª28î 8M)8Ì8/8æ8/8H!8`Z38#78O78{7868FZ38q 98-Z38U 98 Z380 98~G8Ú8|&Ô7,8Ô7©+8š!=8
kC8Ô*I8•0O8 X8Ÿj^8™%d8—Oh8tRh8"UO8E8p8xÔ7_Ô7f8÷88|8Ž_v8f8^8÷8ï888|8t8dVÔ7lVÔ7~`Ô7†`Ô7¹d|8~8\8),8ˆÌÍÙÚÛÜ Þ
ß
  Ç È 

ÏÐÑÒרÙÚ èé!"#$(;<!=#A%@%C'B'E)D)I+H+K-J-M/L/N1W3V3Y5X5\7]9l;r=??¥A«C¬E­GÀIÁKÂMËOÏQÐSÑUÒWÔYÓYÖ[Õ[×]Ø_Ýaàcáeâg+i*i-k,k/m.m1o0o3q2q5s4s7u6u8w9w;y:y<{>}=}@?BADƒCƒFEHGJILKNMPO`bcjkmnoŸp¡q£r¥s§t©u«v­|¯}¯±±³Šµ·¹œ¹Ÿ»ž»¡½ ½£¿¢¿¥ÁÂÃÊÅ$Ç%Ç&É'É(Ë)Ë7Í8Í9Ï:Ï<Ñ=Ñ>Ó?ÓAÕBÕC×D×EÙFÙGÛHÛIÝMßNßOáPáQãRãSåTåUçVçWéXéYëZë[í\í^ï_ï`ñañcódóeõfõª÷«÷¬ù­ù®û¯û°ý±ý"+4=oƒ©.[vƒù^sµèõZox§®µ½Å.5Xtž§»Ð1¬`g¤' . ­ ç ó l
r
x
ƒ
Ì
Œ 

'×ßíöa¢!(AJS[z!K)oÐv«Éèö,íÝåýzôü"GOJ-“;-++-D<-O;_*sH0MSD°É%oê$ !"#$%&' ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno'p6q7rPsQtma¦¢¦æ¦`±óƒó©ó9ó_ó±óó[ó¥ó<GradleResolution>b__10<>9__110_0<ScheduleResolve>b__110_0<>c__DisplayClass110_0<>c__DisplayClass10_0<>c__DisplayClass20_0<>9__101_0<SignalResolveJobComplete>b__101_0<>c__DisplayClass11_0<>c__DisplayClass131_0<>c__DisplayClass141_0<.ctor>b__1_0<>c__DisplayClass112_0<>c__DisplayClass12_0<>9__22_0<ProcessAar>b__22_0<>c__DisplayClass132_0<.cctor>b__72_0<>c__DisplayClass2_0<>c__DisplayClass103_0<>c__DisplayClass113_0<Read>b__13_0<>c__DisplayClass13_0<>c__DisplayClass143_0<>9__93_0<PollBundleId>b__93_0<>c__DisplayClass3_0<>c__DisplayClass114_0<>9__14_0<EscapeGradlePropertyValue>b__14_0<>c__DisplayClass144_0<>c__DisplayClass4_0<>c__DisplayClass105_0<>c__DisplayClass115_0<>c__DisplayClass15_0<>9__95_0<PollBuildSystem>b__95_0<>c__DisplayClass5_0<>c__DisplayClass16_0<>9__86_0<ScheduleAutoResolve>b__86_0<>9__96_0<PollAndroidAbis>b__96_0<>c__DisplayClass6_0<Initialize>b__17_0<>c__DisplayClass17_0<>c__DisplayClass87_0<>c__DisplayClass108_0<>9__98_0<PollAndroidSdkRoot>b__98_0<>c__DisplayClass8_0<>c__DisplayClass109_0<>9__119_0<ExecuteMenuResolve>b__119_0<>9__9_0<FindAndResolveConflicts>b__9_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<ResolveUnsafeAfterMainTemplateCheck>b__0<ResolveUnsafeAfterJetifierCheck>b__0<ResolveUnsafeAfterPromptCheck>b__0<CopyAssetAndLabel>b__0<RunViaShell>b__0<GradleResolution>b__0<DoResolution>b__0<CheckApiLevelForJetifier>b__0<CheckGradleVersionForJetifier>b__0<CanEnableJetifierOrPromptUser>b__0<InstallPackages>b__0<QueryPackages>b__0<DeleteResolvedLibraries>b__0<DependenciesToRepoUris>b__0<ProcessAars>b__0<LabelAssets>b__0<AddBodyText>b__0<>c__DisplayClass110_1<>c__DisplayClass10_1<>9__1_1<.ctor>b__1_1<>c__DisplayClass12_1<>c__DisplayClass2_1<>9__93_1<PollBundleId>b__93_1<>c__DisplayClass4_1<>9__115_1<ResolveUnsafe>b__115_1<>c__DisplayClass115_1<>9__95_1<PollBuildSystem>b__95_1<>9__86_1<ScheduleAutoResolve>b__86_1<>9__96_1<PollAndroidAbis>b__96_1<>9__98_1<PollAndroidSdkRoot>b__98_1<>c__DisplayClass8_1<>c__DisplayClass9_1<>9__1<RunAsync>b__1<DoResolutionUnsafe>b__1<Create>b__1<InstallAndroidSdkPackagesAndResolve>b__1<ScheduleResolve>b__1<RunViaShell>b__1<GradleResolution>b__1<DoResolution>b__1<CanEnableJetifierOrPromptUser>b__1<InstallPackages>b__1<FindAndResolveConflicts>b__1Func`1IEnumerable`1Predicate`1Queue`1Action`1ICollection`1EventHandler`1PropertyPoller`1IComparer`1IEnumerator`1HashSet`1IList`1version1CS$<>8__locals1Int32<>9__115_2<ResolveUnsafe>b__115_2<>9__86_2<ScheduleAutoResolve>b__86_2<>c__DisplayClass8_2<>c__DisplayClass9_2<>9__2<DoResolutionUnsafe>b__2<InstallAndroidSdkPackagesAndResolve>b__2<ScheduleResolve>b__2<GradleResolution>b__2<InstallPackages>b__2<FindAndResolveConflicts>b__2Func`2Action`2KeyValuePair`2SortedList`2IDictionary`2SortedDictionary`2version2Vector2CS$<>8__locals2<>9__3<ResolveUnsafe>b__3<ScheduleResolve>b__3<GradleResolution>b__3<FindAndResolveConflicts>b__3Func`3AnyOfArmX86Arm64UInt64ToInt64<>9__4<ResolveUnsafe>b__4<GradleResol
{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.186at 'System.Environment.'Google.JarResolver.%System.Reflection.+Google.VersionHandler()+ .aar .jar.srcaar)Invalid clientName: $SDK
extrasandroidm2repository
google%DependOn - group:  artifact:  version:  classifier: null packageIds: ,  repositories: C^com\.android\.support:support-.*5extra-android-m2repository;^com\.google\.android\.gms:.*3extra-google-m2repositoryE^com\.google\.firebase:firebase-.*,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=A/androidsdkmanager/querypackagesGAndroid SDK Manager: Query Packages;Querying Android SDK packagesIQuery Android SDK packages
{0} {1}
OGetting Installed Android SDK packages.E/androidsdkmanager/installpackagesKAndroid SDK Manager: Install PackagesMInstall 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.
numPackagesU/androidsdkmanager/installpackages/successaAndroid SDK Manager: Install Packages SuccessfulS/androidsdkmanager/installpackages/failedYAndroid SDK Manager: Install Packages FailedEInstalling 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?YesNo
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 ' '\'' LANG!export {0}={1}; A{0}{1}"{2}" {3} 1> {4} 2> {5}{6}€‰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:-/resolve/gradle/failed+Gradle Resolve Failed€‰Resolution failed
Failed to fetch the following dependencies:
{0}
LATEST:+ file: http:
https:€…{0}: Repo path '{1}' does not exist, will try using '{2}' instead.I{0}: Repo path '{1}' does not exist./resolve/gradleGradle ResolvemPlayServicesResolver.scripts.download_artifacts.gradleYPlayServicesResolver.scripts.settings.gradlesettings.gradleG/resolve/gradle/failed/extracttoolsMGradle Resolve: Tool Extraction Failed_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.
}/androidresolver/resolve/conflicts/duplicategoogleplayservicesiGradle Resolve: Duplicate Google Play Services FoundQ/resolve/gradle/failed/missingandroidsdkUGradle Resolve: Failed Missing Android SDK¿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}7/resolve/gradle/processaars9Gradle Resolve: Process AARs'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} ToolsGradleTemplates7.0O^(.*[/\\])([^/\\]+[/\\]m2repository.*)$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. Reason: {2}/resolve/5/failed/templateunreadableI Resolve: Failed Template Unreadable3Unable to patch {0} ({1})#No changes to {0}gFailed to checkout '{0}', unable to patch the file.!/failed/checkout9 Resolve: Failed to checkout'Writing updated {0}/success! Resolve Success/failed/write3 Resolve: Failed to write3/resolve/gradleproperties3Gradle Properties Resolve1android.useAndroidX=true7android.enableJetifier=true5gradle properties template+ADDITIONAL_PROPERTIESG# Android Resolver Properties StartC# Android Resolver Properties EndProperties#Gradle Properties!gradleproperties!Unable to patch //resolve/gradletemplate/Gradle Template Resolve'gradle template {0}Reading {0}c/resolve/gradletemplate/failed/templateunreadablegGradle Template Resolve: Failed Template Unreadable1Searching for {0} in {1}!.*\*\*DEPS\*\*.*_/resolve/gradletemplate/failed/noinjectionpointeGradle Template Resolve: Failed No Injection Point۩No {0} token found in {1}, Android Resolver libraries will not be added to the file.S/resolve/gradletemplate/failed/srcaarcopyUGradle Template Resolve: Failed srcaar I/Ou([rootProject] + (rootProject.subprojects as List))
* For Unity 2022.2.10+, enable 'Custom Gradle Settings Template' found under 'Player Settings > Settings for Android -> Publishing Settings' menu.
* Manually copy '{1}' to '{2}'
If you like to patch this yourself, simply disable 'Copy and patch settingsTemplate.gradle' in Android Resolver settings.//resolve/gradlesettingsAGradle Settings Template Resolve3gradle settings template .*flatDir { RepoGradle Settingsgradlesettings.€› def unityProjectPath = $/{0}**DIR_UNITYPROJECT**/$.replace("\\", "/") maven {U url "https://maven.google.com" }"{0}/{1}"7(unityProjectPath + "/{0}") "{0}"5 url {0} // {1}) mavenLocal()- mavenCentral()-Assets/Plugins/Android€¯Unable to copy '{0}' from Unity engine folder '{1}' to this project folder '{2}'.
{3}wCopied '{0}' from Unity engine folder to this project '{1}'3gradleTemplate.properties/settingsTemplate.gradle'mainTemplate.gradle€‰Cannot patch POM from Packages directory since it is immutable ({0})O{0} may not be included in your project .pom]Failed to copy POM from {0} to {1} due to:
{2}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}). JdkUseEmbedded
EditorOSX MacOSOpenJDKJdkPathJAVA_HOMEjar java1.8!Android Resolverے{0} environment references a directory ({1}) that does not contain {2} which is required to process Android libraries.OKw{0} not found, {1} references incomplete Java distribution.iUnable to find {0} in the system path. This tool is required to process Android libraries. Please configure your JDK location under the 'Unity Preferences > External Tools' menu. not found.3Failed to get Java version when running {0}
It is not 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\.]jdk/outofdateJDK out of dateË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 > External Dependency Manager > Android Resolver > Resolve" menu item.
Failure to resolve Android dependencies will result in an non-functional application.
To enable auto-resolution, navigate to "Assets > External Dependency Manager > Android Resolver > Settings" and check "Enable Auto-resolution"%androidBuildSystem
Gradlelib
gradle#gradle-core-*.jar$1*.gradleWDetected Android Gradle Plugin Version {0}.9exportAsGoogleAndroidProjectSdkUseEmbeddedSDKAndroidSdkRoot5GetPlaybackEngineDirectory=UnityEditor.Android.ExtensionsBundle ID9^gradle-core-([0-9.]+)\.jar$g['"]com\.android\.tools\.build:gradle:([^'"]+)['"]$u['"]com\.android\.application['"] version ['"]([^'"]+)['"]-Android Build Settings3Android Target Device ABIUA-54627617-3Mcom.google.external-dependency-manager7External Dependency ManagerGhttps://policies.google.com/privacy#/androidresolver/version={0}%Android Resolver: {https://github.com/googlesamples/unity-jar-resolver#analytics!Android SDK PathaPlayServicesResolver.scripts.gradle-template.zip5PlayServicesResolverGradle)^jni/([^/]+)/.*\.so$-installAndroidPackagesexplodeAars)patchAndroidManifest/patchMainTemplateGradleIuseFullCustomMavenRepoPathWhenExportOuseFullCustomMavenRepoPathWhenNotExport#localMavenRepoDiruseJetifier%gradleBuildEnabled+gradleTemplateEnabled)projectExportEnabledandroidAbis3^androidx\..*\.(jar|aar)$)PlayServicesResolver3PlayServiceResolver.Initialize() is called when active build target is not Android. This should never happen. If it does, please report to the developer.sFound 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 > External Dependency Manager > Android Resolver > Resolve" menu item.
Failure to resolve Android dependencies will result in an non-functional application.
To enable auto-resolution, navigate to "Assets > External Dependency Manager > 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}+/patchandroidmanifest3Patch AndroidManifest.xmliPatch Android Manifest with new bundle ID {0} -> {1}/Failed to delete files:AEnable Android Gradle templates?gAndroid Resolver recommends using Gradle templates for managing Android dependencies. The old method of downloading the dependencies into Plugins/Android is no longer recommended.
EnableDisable7AAR 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?ƒAndroid Resolver has detected a change and would to resolve conflicts and download Android dependencies.
"Disable Auto-Resolution" will require manually running resolution using "Assets > External Dependency Manager > Android Resolver > Resolve" menu item. Failure to resolve Android dependencies will result in an non-functional application.
Enable auto-resolution again via "Assets > External Dependency Manager > Android Resolver > Settings.+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}
/resolveResolve#Android Resolver.qResolver not enabled. Android platform must be selected./#android-resolver-usage3Android Resolver Settings€‹([rootProject] + (rootProject.subprojects as List)).each { project ->5 project.repositories {3.4compileimplementationdependencies {eIgnoring duplicate package {0} with older version.// !{0} '{1}' // {2}4.1/lib/{0}/**lib/{0} jni/android {8.0 packaging {) packagingOptions {+ exclude ('{0}')***' + '* }#Android Libraries5Source file {0} not found.UFailed to remove existing target file {0}./Target file {0} exists.?Failed to create folders at {0}%Copying {0} to {1}IFailed to copy {0} to {1} due to {2}5Cannot label {0} properly.oCannot find the file at target location {0} after copy.
l:gpsrpackageDirbundleId?gradlePropertiesTemplateEnabledautoResolutionuseGradleDaemongradleVersion5androidGradlePluginVersion)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)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.PatchMainTemplateGradleaGooglePlayServices.PatchPropertiesTemplateGradle]GooglePlayServices.PatchSettingsTemplateGradleoGooglePlayServices.UseFullCustomMavenRepoPathWhenExportuGooglePlayServices.UseFullCustomMavenRepoPathWhenNotExportIGooglePlayServices.LocalMavenRepoDir=GooglePlayServices.UseJetifierCGooglePlayServices.VerboseLoggingYGooglePlayServices.UserRejectedGradleUpgrade€ý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.€­Currently LocalMavenRepoDir does not work at any folder under "Assets/Plugins/Android"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-ResolutionAndroid 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.7AAR explosion will be disabled.You may 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-Resolution]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.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.EDisable MainTemplate Gradle prompt3Patch mainTemplate.gradleOIf 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}KUse Full Custom Local Maven Repo PathS When building Android app through UnityA When exporting Android projectƒEDM4U can inject custom local Maven repo to Gradle template files differnetly depending on whether 'Export Project' in Build Settings is enabled or not.
If checked, custom local Maven repo path will look like the following. This is best if the Unity project is always under the same path, or when Unity editor has bugs which fail to resolve template variables like '**DIR_UNITYPROJECT**'€™ maven {
url "file:////path/to/myUnityProject/path/to/m2repository"
}If unchecked, custom local Maven repo path will look like the following. This is best if the Unity projects locates in different folders on different workstations. 'unityProjectPath' will be resolved at build time using template variables like '**DIR_UNITYPROJECT**' def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\", "/")
maven {
url (unityProjectPath + "/path/to/m2repository")
}€ÏNote that EDM4U always uses full path if the custom local Maven repo is NOT under Unity project folder.5Local Maven Repo Directory=Set Local Maven Repo Directory€ßPlease pick a folder under Assets folder. Currently it won't work at any folder under "Assets/Plugins/Android"?Patch gradleTemplate.propertiesEFor Unity 2019.3 and above, it is recommended to enable Jetifier and AndroidX via gradleTemplate.properties. Please enable Custom Gradle Properties Template' found under 'Player Settings > Settings for Android > Publishing Settings' menu item. This has no effect in older versions of Unity.eCopy and patch settingsTemplate.gradle from 2022.2For Unity 2022.2 and above, any additional Maven repositories should be specified in settingsTemplate.gradle. If checked, EDM4U will also copy settingsTemplate.gradle from Unity engine folder.Verbose Logging)Use project settings#Reset to Defaultssettings/resetSettings Reset
Cancelsettings/cancelSettings Cancelsettings/save)enableAutoResolutionOUseFullCustomMavenRepoPathWhenNotExportIUseFullCustomMavenRepoPathWhenExportverboseLogging;autoResolutionDisabledWarning5promptBeforeAutoResolution;patchPropertiesTemplateGradle7patchSettingsTemplateGradle3userRejectedGradleUpgradeSettings Save3Assets/GeneratedLocalRepo'GooglePlayServices.QGooglePlayServices.MinSDKVersionFallbackUGooglePlayServices.PlatformVersionFallbackAndroidApiLevel AutoCould 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.AndroidExternalToolsSettings, UnityEditor.Android.ExtensionsjdkRootPathndkRootPathsdkRootPathgradlePath€‰UnityEditor.Android.AndroidJavaTools, UnityEditor.Android.ExtensionsGetInstance€‡UnityEditor.Android.AndroidSDKTools, UnityEditor.Android.Extensions;{0} class does not exist. {1}GUnityEd
{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 ARM64X86
X86_64targetDevice?UnityEditor.AndroidTargetDeviceQ/androidsdkmanager/querypackages/success[Android SDK Manager: Query Packages SucceededO/androidsdkmanager/querypackages/failedUAndroid SDK Manager: Query Packages Failed{Unable to determine which Android packages are installed.
{0}sUser cancelled installation of Android SDK tools package.Accept? (y/N):yN#^License\W+[^ ]+: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 bug9/resolve/gradle/failed/fetchSGradle failed to fetch dependencies.
{0}€¿Some conflicting dependencies were found.
The following dependency versions were modified:
{0}
A/resolve/gradle/androidxdetectedCGradle Resolve: AndroidX detectedOJetpack (AndroidX) libraries detected, +Labeling libraries...K/resolve/gradle/enablejetifier/enable?Gradle Resolve: Enable Jetifier€¡Detected Jetpack (AndroidX) libraries, enabled the jetifier and resolving again.I/resolve/gradle/enablejetifier/abortOGradle Resolve: Enable Jetifier AbortedU/androidresolver/resolve/conflicts/cleanupnumFoundnumRemovedaGradle Resolve: Cleaned Up Conflicting Libraries€Ã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?ƒ%
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.
=Unable to delete old librariesQPerforming 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 completeG/resolve/gradle/processaars/successMGradle Resolve: Process AARs SucceededE/resolve/gradle/processaars/failed#numPackagesFailedGGradle Resolve: Process AARs Failed#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} GradlePropertiesTemplateEnabled={2} ProjectExportEnabled={2}]„OResolution failed because EDM4U could not enable Jetifier in Unity {0} without Custom Gradle Properties Template. Please enable 'Custom Gradle Properties Template' found under 'Player Settings > Settings for Android -> Publishing Settings' menu. Due to changes in Gradle project generated by Unity 2019.3 and above, our recommended way of enabling Jetifier is by injecting properties to Assets/Plugins/Android/gradleTemplate.properties.
If you like to patch this yourself, simply disable 'Patch gradleTemplate.properties' in Android Resolver settings.)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./deleteresolved1Delete Resolved Packages!/resolve/success%Resolve Successful5Resolution Succeeded.
{0}/resolve/failedResolve Failed/Resolution Failed.
{0}€—GradleResolver is not created. Is your current build target set to Android? .meta gpsr€ÝFailed to add tracking label {0} to some assets.
The following files will not be managed by this module:
{1}
€“Failed to set the Android Target API level to {0}, disabled the Jetifier.ERROR: WARNING: H½Í®vƒÜ~©Å     }€…mLmTmXm\ UYMM€€ U
IM Y
YM M A€€   Q
€È umqMam A
qq
M i  u e   mqM   y
m     mMMm I
mM  M  €˜ €”m    
A & mM€‰M€‰€‘ mM€‰
M€‰M€‰ €‘ mA(A€™  qMA €•€• €™€™ qMemmemme$ IAI   €­(
€œ€±€­Ae qM €­   6€œ€±€­Ae qMqM$ €­€‰€‰€‘m€‰€‰qMqM
(
 


é
mY((I(Y( ,€½,m Am,m,m,m,"€Å
,,,,,€Í
,,ہ
,, ۃۃ
, €Í€Í
,,,,€õ  ] €  €¤€Ñ€ÈMm( )M
€¨€Ô€¬€È 0,€‘0  õ€°m€Ý((e( €Ý€Ý(,"0,000€´€¸€Ñ€å/ €å €å€Ñ€å€Ñ€á€Ñ€á€Ñ€á m€Ñ4
€¼€À@€Ñ0€Ä Q €ä€í€ñ€í €ÈN(€ì€õ€õ€È€­€½qM€ð€Ø€Ø€Ø€½€È €­€õ ‚%  ‚) €Ù = €È€½ €ø€ø€ø ‚1‚1‚1 
€øTT€­‚9
¥€­ =I ‚I‚= ‚= €ü€Ì

 QAYAIYYL mM
MMYYmM  
+ mmAMMm E €Ñm µemAAmemY€ÝmmqMmmmIY
Am€Ý
I$(ۄm,  4e%

$e €È€½eY$K,$eeeuI€Ý€½ m ma
uI€‘€‘:mM-€½MM¡ ai(Im€½Ym88€½Q)Mm81)MI€‰m8€½Y))M8PmAmYMMmqmMm1
qm
Mm €½eYMMe mmm€Ým+59=€½AEIM€½ m 9 A u Mq MCAeeqeMe€Ý
Ae
qe
MeQ €Èy€‘
€‘‚} õyyaXmLmLmL
mL €­€± €±€‘ ‚‰ U"Um€‘ UmTmTmT
mTmXmXmX
mX
 m\m\m\
m\ EE€­A‚™ E qmHD DPD$
©QE€­e€‰Q‚¥ u€Œ€Œ€Ý€Ý€‰€‰€Ý€‰€­€í
h€Ñ:AA}qMIqMAy ­ 95m=qMM y AÌ ÌPÌP$Ì$ mYH
ےmHHl ptx|mH
Iˆ
ŒP
A@@   u)p I
1M‚¹ ‚½m1Am€ˆAeYYMM1Imeee€ÝY€‘m1€•mt˜ œ€½
ۄeP$A+ mMqM)M)
Y€‘
 ¤€Ñ`¨ m€È€½IU€ÈY€½ I     ­ ­    ¬‚É ‚I‚= ­­=‚=‚== tt ¥€­¸ 
U
m      ‚Õ ‚= ´
‚Ù€±€±€­€­ €­€±
€­€½ €­€­ €­¹ ¹‚å‚逭‚í 2€­€­½½½mIY‚ñ ½‚åm ½ ‚å‚é‚ùAÁ ½Á
½€­ ½Á€±€±€Ý€‰€‰  ]a ] AqM€­ €­€œ m€Ñ €Ñ€Èm€Ý(( €Ñ ƒ€Ð ÀÀÀ
À
۴۩ ۯۯ ۴
éé  ÄÄÄ
Ä €Ø€Øee €Ðe €Ô€Ô€Ô
€Ô Am€Ðm€Ðm€Ðm€Ð€™m€Ðm€Ð
€•m€Ð
€™m€Ð' m€Ð€Ð€Ð€Ð€Ð€Ð éé,m€Ðm€Ð€Ð€Ð€Ð€è €Ì€Ì€Ì
€Ì  m
m   u,
eeYm€Ý  €í  m€Ñe   €Ì#
em
€…m€í
ۄmFe(Aeem!e( e ! !e0 !e(,ۄ   mm
I@€ÅYI€Å ƒ
 YYY€½ ƒ ƒ È@@qM€Ý€Ý€™€•€™mYDUU U
Ì PPP €Ñ€å€å €å€å
€•¡me ƒƒƒƒ €å€å
ۄ``` q
uu
·z\V4à‰file:///1.2.186$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 variablezUnable to determine which Android packages are installed.
{0}>Installing Android SDK packagesandroidsdkmanager&installed packages:&available packages:$available updates:F# Android Resolver Properties StartB# Android Resolver Properties End>// Android Resolver Repos Start:// Android Resolver Repos Endn.*apply plugin: 'com\.android\.(application|library)'.*.*flatDir {*ADDITIONAL_PROPERTIESL// Android Resolver Dependencies StartH// Android Resolver Dependencies End .*\*\*DEPS\*\*.*H// Android Resolver Exclusions StartD// Android Resolver Exclusions Endandroid +{JAVA_HOME:PlayServicesResolver.scripts.gpsr&GooglePlayServices.LGooglePlayServices.AutoResolverEnabledJGooglePlayServices.AutoResolveOnBuildhGooglePlayServices.AndroidPackageInstallationEnabledFGooglePlayServices.PackageDirectory<GooglePlayServices.ExplodeAarsNGooglePlayServices.PatchAndroidManifestTGooglePlayServices.PatchMainTemplateGradle`GooglePlayServices.PatchPropertiesTemplateGradle\GooglePlayServices.PatchSettingsTemplateGradlenGooglePlayServices.UseFullCustomMavenRepoPathWhenExporttGooglePlayServices.UseFullCustomMavenRepoPathWhenNotExportHGooglePlayServices.LocalMavenRepoDir<GooglePlayServices.UseJetifierBGooglePlayServices.VerboseLogging`GooglePlayServices.AutoResolutionDisabledWarningZGooglePlayServices.PromptBeforeAutoResolutionDGooglePlayServices.UseGradleDaemonXGooglePlayServices.UserRejectedGradleUpgrade,Assets/Plugins/Android!PGooglePlayServices.MinSDKVersionFallbackTGooglePlayServices.PlatformVersionFallbackAndroidApiLevelminSdkVersion targetSdkVersion<UnityEditor.Android.ExtensionsHUnityEditor.Android.AndroidJavaToolsFUnityEditor.Android.AndroidSDKTools`UnityEditor.Android.AndroidExternalToolsSettingsXUnityEditor.Android.PostProcessAndroidPlayerPlease report this as a bug with the version of Unity you are using at: https://github.com/googlesamples/unity-jar-resolver/issues@B@@ A€€Eey€ˆ€”m mMA
mM€‰A Am€‰ Am,€‰
, €ý Q€øXmHD mL DP mTD$q mXL m\e€‰¬©­°€ý´€„u€Œ¼€±€­€œT €Ñ€È€Ñe(I(€Ñ0@D€Ñ4€¼À€ù]eÄ
Am€Ð€Ô€Ì€È€äm€Õ€ý€ý€È€ôm €Ñm€í   €Ñe Am qm Mm uI Ae4,%`dÌ P ÌP$Ì$ H
u)| )M  €Ñ`±tµÐEIMQ E Q AQiue Ay     m
 €” €”€Œ Amm eAI  €­$$

I(, m, ,
€Ñ0 e(€Ñ €Õ€Ù€Ð
€Ñ€Èe(€‰€ÑI(€È8I(€Ñ€È
ۄ 0 ,
€Ñ4 €Ñ4 Q€ÌA€Ô€ÈA€Ô€ÈA€Ô €øT   €ÌA€Ô mmm mAImMI €Ñm €í €í e(Ae€í e  €í$
)8)M)M )1)e)mm)aX mL mT mX m\€Œu
I€‰e 
ے
yA ALTX\I
ےۄ ۄ ۄ ۄII1MI1)1)Iۄe  )M) ۄ
€Ñ`I It ´€­Áaaa EU 
€¥€© €¥ €Œ
€¥€Œ€© ¼ ¼ €± €± €­ A A€œ €È t €å 0 €ém €¥€È€© €Ð €¥€Õ€Ù€Ð€© À ]
€Ø] Ä
€ØÀÄ €Ð €Ô
m€Ð €Ðm€Ð €Ì Q T €¥T€©   e  I m 4 )
m@ IIe ے ےP P PP $ $$ H
)  ` €¥t€© µ   €¥€Ð€© €¥€©
۴۩(y((mAI$(
( (m,(,X(´€­(¼(€±(€­(A€œ€Ð((e(€íP(µ(TWrapNonExceptionThrowsGoogle.JarResolver Google Inc.Copyright 2016Google.IOSResolver+&Google.AndroidResolverIntegrationTests Google.AndroidResolverTestsFAAssets/External Dependency Manager/Android Resolver/DocumentationA<Assets/External Dependency Manager/Android Resolver/Settings@;Assets/External Dependency Manager/Android Resolver/ResolveFAAssets/External Dependency Manager/Android Resolver/Force ResolveRMAssets/External Dependency Manager/Android Resolver/Delete Resolved LibrariesJEAssets/External Dependency Manager/Android Resolver/Display Libraries ItemJEInBatchMode is obsolete, use ExecutionEnvironment.InBatchMode instead§ÉPK
D‰ÄXgradle/PK
'sAYgradle/wrapper/PK
D‰ÄX“=º$»!gradle/wrapper/gradle-wrapper.jar„»”fÍÒ&Z¶mÛ¶mÛ¶í®.¼eÛ¶mtÙ¶mwY}ûÞóß™ùΜ+±#×ÎÈõDdDfl%YP0 (( 0ñ) ¿пè¿$/®&L/­ Á
¤ôF^n®7‘¿ š íe”VWUc—ø-?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úWw¶ÔÌ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ÒÆƒEDMËÖU;%1)<D•¯’ù¨¬™«òüÒ ÃY®zÞÐBø‡óÐcÍ©NaŽlªFë,Ò‡œœ¶NR0Ѩ¹Ni–Âr‡ŒrÌqñ÷ŽB¶é/…nC§s¸“²“j½­Ø~8‡è ~J\\kãÅ–#4)ý†î¯i`{÷ø°šãG%ÊCèéí
ëKŒÿDÝé•–kå_´mþ%’ÿŒ:éÿvÿ”x̯¿Šø3u~‚†Ü
cðdrß]*¬ôhÐÆÂ!Ã{á&†Â›‚
5žöùöÛoãÌ÷Ì
* –œ]*éœâTs&™jÝ3ÔpM×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܈–+L0š  %IQÇì‘mÐ?íŒñæ+È'T(¡¢7$8-žGtàB;}5”D ŽD#Ü.Nz†Ðq9€‚AEñL¾xÑW›F­ë§ª …ΘYñͽt‡á
÷#ŒîyÀáŠ\Ä¥TÝãùßï@sèýo놩¸—©»«µ‡¹„µ¹°©©¹««¼±ƒ±¥ù
Y'Ts¼?ö™ÖöÄBÄJv@¡ÍJATA©k&V:ùð%àèmãúÛ1Yò²þDîwg9E,¤ôZ#Ø’’£Á<‡? †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 —xc–ЯÐM|(/×hxóvCcâ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ë1b޲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#ö¡,'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¡Õ™ÕáÐ¥üDkRIc·ôÙï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Êñ š‹»ì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á™ImV,¢Ï-]ýÒ{Ó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êƒ'I‚„]Û…ü(‚á ñC2ƒ=¥BoÆ–È©dä|è7×,!K`Z”á(löò¯ÙºxDÐcr<pÉÙ=¡[o)Asÿ3É@z ¦@áXx¬&e=ºÞà,©½6Ñ¥šëAvÎôàI/ဨè×'q2»Ä³D˜¤‹ÕÞj¤û=zßÇ8OQ˜Ò*¼Ø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.(¡ö¥ÒÔ18É¥£æÀˆk™)fÐÈ„Ð5ÉYµ²Öh1"„â ~‚~EŸ¶Â£h5ÅçæºÞrçý¦ùñýý¿‡¤˜$µg’æDûs³œB9˜NL?œWd+ʼnH8aÎ(<® Â{
zpƒu®á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æÅdB™{ö¡;"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ŒËð”Æ®Æù[Zþ…Îÿ¤•„­9Åß¾Ê[w×õeóÃ)Þ„o§}39çÜNeµýùž½üâ„ð'zŸ/Z4¹vT©_":z;WS9ùZ^[F†yÈhLA»³°ÞÜÃDiÂCEã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ô ¢ôÝÍ|~^Nx=Fr™àƒÎèo2±

òž¼I›œOƒ¶›µj–›-Îà0¦|
£K+ʯ\¹°+²œ1ô«õxq'ñÇ
Eñðä²3ASÙOcôƒÓtÓ–ˆPÚgzQO$½uò‡æ¥úÂÑ£Äq_ßÁëVj?¤P&aK"{Æ(hý
ácƠዼÔ!•‡iq(îDáWïšeLUÄQÖG=©ìŸPžl|ØÃ^Ã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;MJR˜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¥æÝËÔÒya;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 À°È.Æð(¨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ôÂ=CZ”óf7š¾;V"ïl—OØ>þ©ÜZæîg¾µ×føçd+ApÕ¾§¿§òÕð
%4ð»&þüÛ½,×Në6.*Ð5ÑsCæàêflg÷¯]2GÖí¸E²k}ni`ÂVŒÄ;Œ ^:~
)þމèÂÌ31úŠôf&Q¬F'Jf¹WIw^£:΄^]YzŽjÍÆ¿õ¹ ¥¥eYÃÖñòº§çåygóƒæå‡…g–ÒcߗʼnoöéŸì[?Cƒ¯3i#”1$1†™A lÀÖ#ãe8ù,uw`ˆ÷Y³àTý¨æv‰lI zcªÅ8{$¹ù¼íZ™ç0 l)–cŸ¿¯€få÷AÝpfáï°ù}dйU÷߀3Aõ&Ì+]ÞªãKU2+õ¦Ùaï~‹„bŽGgÎÊÿ¨ÈK÷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î©öö^Õ«Í[·Î޽@‡Î¾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ÁǽhYì¼âX}ºbâÍC®‘ ýDS[ÜÚ¯ªÔT$;!¶hkÎâ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¦ 4œ,wï ‹ê¥B§¡›zx:46µ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ñrr{ì(åš7ñ…‚XþIô‡ûkî ¦"Ý\"ÆnÀ¢óÊO—’¾Mcî$ìÔv¿=aÉÄYVTØæÜBnÑÔ?=µ?7
O£†½”Óp:Ò_ê(s>ÊŸg¡Œ~jæ²J"ƒyè‡ÿÇñ™Æ[–ŸÜsüÄîÁ—¯•X¦'
ÝÎctþÃà§}Ê
ÑÉ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ÎxÜÒ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ê©gd‡~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†r99EK;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óæŸ|ˆBIÐ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ÿ„²O–›ϲAgÞ=iÕù¥†§ÓÆ¥„ø®ûa}©q„.
…Ù‚—o°iï…Úm°²–r̲˜Ø‡a”&:×uÿ‰äΗ'„àÜï^´ µ&à;b"æOÀ¾ÒL:à‹tºJÜë(,w+9Äõ€Õ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|_È*¿–+Å RBšåtKv€}­¢ÃÇb׎ø™p½g<Yߥ[ü2ùùzò£ÝÁ± €ØƒÇ)îªÈd¾XE p®$ÏDè7
r¨k?‡š,Œô(£Ér†K$»—Ë#tˆ¿W:êˆYÚU¼èØþ5Š \„ïÆm$üªý̨煚ËùK†3fdwàl“
Ú²àïL š~¶à%žy²d7x…Ì!‡/R+ÿžKBásR5¤3Þk6»E»­¼õÓßUä÷ÓÎŒþñ;\ÏA•ý(EˆÂË ØÏƒ„ľm­ÆŸŠ{{G+ºs”HÔWâòó*Ê¡:…ö/™JÚæš(ü±°ÎÄÑÊ$0œ8*=×Q™£]ü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õÑêÚ#c5$«Ã:m¥ø‚tªßõ‘4Š\u‰ëˆjQØj·N
h¤úN‘œA‰µ×:r%–žÔMíE½-tÕ´Ç{MS¹÷Ÿ¼¢uP«ù‹"ËÓeF?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Ò ¬Ú’” š•Ž¸»ŠÅÊòŤ§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-Éâ.³#kaT÷Ö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†®?cN`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ûœ¶*Ч^
â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º4SFµæÞÀÀq§t°µöGrO€lç2צk++@/ À mâš×¶uZÑX·¥ä¶¥äµ56ñÁ¨Ê–ÈrŽij]Ѷm\ÍD,0.šôÏ“8-}XÌ?¬}¹™Âß ðk‚4 Ër;Æ].sá·p+ ¢RîÓÕf· ÷¬‰qq ŸªJP–èú:7žµóÏmE·Ã¥©‹ ¨r$7q”Gò'ÁÑ4X8RŸú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ëŒÅÈAGÞþª) 7WxF­<KglÈŸUPi©Ñ¶ó‡ÂL1:%V{Þ¼±Û¤Îm Wm® Iµp¡nH
…À]Dzjj?¤sL2÷¤èÉ;ïB}]Z^
<Üš»KÝ?ãêÁÉÜÙ\µeà¿IîÞ˘ï벇í0ƒø9ÿ€½î éë…Bk‹ñÖ)ªT’áiaÀ I_Ö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.ì’Ÿ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­tjT¶±(ÙÄÅ/€–Í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žžsIKî~jW€±°ÃIøºeÚáf2±v“ܪ
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%®Ñ)¾\ºq2¿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ð‘ãïµ™ƒ¿Ú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%Ct¤ #<W¬O‹¶Æü=MÈeõÐmF¬v°úA5\Á´wXÚ¶·1¼$;J¼>q÷ÜÜÒqûÄ¢¯ä"÷D„©Eš’ÜχÃá-„cÌ®»Dbn] PÓG*üмŽ»ùT6Ö¥Ëïò,$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ÎúRgžŒBë:Ʋhƒê,¬y!V39”Ü"Ûà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üÀs+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§xfa: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 àôò¥¤Ü?ô'«vK§<ßE»kw˜
ÏÎ$ò»úØ-Пð‘ç3|Ù§øPáÅù;áe:² éÕ©!“ÁF)£¼$.ÅÒïØÅmì)qõ1J.ÌŸ.ïè§`3"êD­dý<»%ûe/²c§/Âc»ÃÇtÆÔIr1쪚M&ÈÐN~¿ð,Ñj{ð‚¦½J÷³ÀŽrSK!Åé{-ìCÇÒNåüëˆëAX(¦Å7fÍ6÷ý.ä9¸Ù1**»÷†Ëo!hB/“¦åkF˦i–¤5'á·¬ÐÁ²i#œO5ç[dz;VcX¤YìQ|æœÀâiÝ{è
쇫i茩W"\rɇ«Õ ¶e;Ÿ£AWjmïÊë2ºsØ*Æ]²èÓŽNu?vÜÎã!­qoAy
>ÃcNN:­“à5惢aj©¤$
¯Ý=I9B4zÁ¾“_€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!´is…¸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úµ¢¥nZZNXäÁ‚ÀùPÇG2ÓÐûlïÇMï«Ñ&oæˆBsîö#+È©­®ä‰\Nî‘LÑ/„ëpNïÏF5™–º?Qâ«ù
ÌyátÛ§}¬â‚P…ÜE´vLëÄ}.?/OZ+Òˆ÷ÊáC-½:¬ËG½Ú–*p9óß1F3Ndt1Cɵ++)Ëíø©qU»íëY"
OÕÚã~²{!`aùtåù=+)±nõ&ù=Cêé+¡çTL·|¼ Iª@N¶ Êׇ%K>0Ôzc6eA^œxqRúêþm²U|ó7u0®ÿÁ6d2Y{cCQKg'K#×ÿkp“¢¬#ƒ+„ö9c¶½ìRåØÒº¡Óìn}¹q ##„ò¸9ƒÐ‡J6X¾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™(˜ûutXha[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Ðë¶ØŽÖ㻹8ZNµ{“E‹Öj;¯Jwš‘½HÔ msƘË“ô1Y¯A>®WcƧ,5±væ ?$ÎÝΘ§ÉýÆ»mÁ˜®.)Ãz†—šÌž,~hm`ØÆ)lJ¤¡–\C¡‡0ǹéT­F³ÅÁš4g”Õ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¨šÂ÷
Ø›¾Ë¡¿ëŠ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ÞȘڌÑÖ„¥Â'KX7´ª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 ¿=‰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%ùûPO½Ç7#B"ÜaYÖwCt7#R·Ô[
é®–ñy¤܄ݡØïžI¨Ï ð/Dë/P*¯T†\Rf|bv|"lyä ŒŠ‡|¦uÊn¡«TÞÁ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±§¿*nx3sw=²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¸±ŽÑ ½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?ˆô% ÷Â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ÆçvJN žJš¡Y#?côEQ])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Õte5ßo< oIçIUË´Q‹ŒUÒŸd§æ Ìý²Û6ªóZæ«ÕÞÁUj¡fÑv´@ÊUýCU¶`.y›ó}Áõ L'¦ÑÛ‡„¹@ÄhÕ‘®Î
ªM˱°Ýnʤ—$€-«ÍìÁȵ÷ìØI‘†ó¢ßRZìð9–̆YIJ!•ÙNxÕã9,GFúbæ'é#¿‹¬ÂBí|ìTëZ7kð7Z UðâÜ=Ojx—¬b!¥^þy ÙúÁ<™! ©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‡Àô§oOÈÚ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ÊìÒ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óɉ‹PQd±‰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ë,/Üñ¶‘-®›®Vu¢(W4FGÙ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Ì$þòµ¯6có¹­~㱘À8tì½Ý/Äs­ìÎm™ýDRÛîæ‡…I }Ïõ_¾ÐFT`ê¿bÏ9±²O.ï-´¹,`žò5àÛ
(¿¯L…5n¶¶m™¿œ­Â¸H ¨Ûh8à»Q­EÄQŸ · ÁA³1Ø©ð$¹ ½´}›†æÑø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§ñ·Btn—&-•~4'ÝDwh‚…qlÎ
un‡‘Ú™»¯€™Œ`" ¦QÖ†ºžl‰…
¿D·'Qb"ª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Øgd¢À%ä·”±¶­ )¡($ý.kÐÊJóÀè9¨vví}š‚»³„‹·…tp68DÒR8ä°’’ñÀQK*7ómÒ¤dŠHqÖœšÙvàÑøMÓÛkPù 8âœË3‚‰VŽÊG!ÍÃWoñ";5NmÞíA%˜½ßGn[ì€'%az5.µdªuæ]Ó™¿ªüÄãxÓæüýjCX8ïŠCø0*_lïgʪÛO·êev‡¬®#Ö¿dVgý†›U¦ä|ñáÿjdŘœŸè¼ÆÆ#=ö&9ÄVHg“@Ah&T*ÔMÿÙëŠa«ÃQŒÞüü ^{¸ôç‹L1
"V“T¿´ºG²Á½-j•‰XÌñ‚b$ËC³;4éÀV%
˜ëù…|«L÷yÃݵåŸíä–ÞXˆöl€j7"”øA¾Ïªø
¦Kxîw™ÇzÑÚ‚P‚®” ‡jk$C0jn¨èàQÕãs4J'¼k¾¹;gѪØCZnæk*Â…RÏè8„iÂÅ,]BÊö™.ȵ¸[÷±jC£ãŸQ‰?q¯°L}¡íÊi†4¿,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Œ Ï8åx–”™VVêz5^±†ËQ1D*‡; ú‘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©Êj ,e‘¸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•Í”4x42d9%êÈi
ç´~˜K0'òŽì>ÙÙE
w¶¹²m•6é•ah4⓽_Xr
“š¡ã&Mn‡©!«Sw ~±÷G|ƒ7>«µÅád?¦ Ø/š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}$ªJ4„oÈ? À(jazž]`ZFÛYZ$Jµ•0yÛçÀŒ4dÛ¶b¡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óÇ$¨vceÄ¥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_°"
./êó‘ù§µð®!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íH.ù€úèÚ0Ã×ÝœŸ›Q<6anò‰Ö§Þ(·.¥ç‰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¿®)ïŒèàšú¤,°kt~2þ묞m£;[ö
¤ô¿Ö»þwªá¿¡Ô»ò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Û1jek®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—žü— !ÿ?—ôÿýÿÇÝiÝWýS|s|A´Am,vBm+Õ”@6çQuH!‡·Ií(å 
ƒjM¢ož<?¡#-S0ZRž™êË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@%l
ôî`wSg /¸`?"¹ÉÍ 'k+»:Ú;”`ê*ǰøé»êÀ,вǑ+û¼âˆ53¡kÕC'¢¢_å”±1}j/9ý=HcB%Ø]L h/í=L¼.ˆZ6äõƒ]Ýô]|€’¹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Á6ö8­•Qgî߇‰ l3‹áº©ÎÖ0]¨¨¦T×=åéö=
˜ôi”dV”þ¢ñøˆÐÁº¡@âÚõ³Ï7¢Õ0Žê| &{ˆ&þ5ÀÀdrÓØNíŽ[Сµû#Ä(Ùè
âÈ•Y¾!Ôè"ñÃZLö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ÒmCpNŽ$[½HQ9i^¶¨|„Ø*Þuõ±Ãk­õèN&éÇ÷Ú@¨ë‚ ¢ý‚ «Â,­ gV†bñÚkÉ&ž,Œ•gÖC2iT…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® i—[©Ï³iHstèK‰\.Œd` Dj¼w­/L:¶_¾XUùîý$IM{—Eé÷)ÀªÖ\1XßÎ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 Á…“Ü÷ÇšöÇxoö+¬×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‘ÁM8@(“[¤ õ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
åGµÉ­ÈW#"_gå„—Ùm¿£˜u¡•Žf_×wé 1tɪ“e!7ì’-W×*ŒfÞ*RxÙ %íØüÎí² kþÈ¡ŠA«ÏÞC‹\…SÞ(áѤP‚óúaEôš(Ö‡4ñc—ü¨cV«è3*Ħ¥~ssiŠŽy3"9UˆmG-‚¶ë­ÐOW@Xö¶ÉçÁÒ5\s¯Øî]jÔöíÒ¾¡r¥¶Îöæ@þ˜Ì©é-㳊tŠð“é1(…*3Ñï-ŘNRN¿øH²‚Ömé)ÇlÖG¬ÑÀ([ά?j3Õï{±!GL¹®“Þ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½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&é ªÐÑφÃ,²*©Ã¹“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ÒO0–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Á5r'‡äl54Á)m³—VY–´ÉÑÓ­•µù95¢œ0)Ž„-b’ƒéúʯºÐ/#§ËéFBIêmó#8}ös5Ah0
j-»Ú´eø6k)åR¤ÔÓLäó‹®!ÌÔNU+)mÍW@Ú8®™q¾üx’««Ò8Êø‹F½
×0_*QX.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ü#ÕCÚØ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 =Ï/¹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Ÿ<õ–œQL73¦Œ­§íÓ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ͧÚÚ¢ÖÄ1P9 •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þ› …Š„.¤@Ò'â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ûÍT6@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< EBZÍqgËYE/ˆï´=C¤rBð;á
yJr«c|eÝÆ9oWÖ9÷×ì—3;ÚŸÞõ…‚¡NcU'’Kª2–F¸Â’¡)Å+Ó0í ò–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[/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-NC š'¼ó©”–Œ$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-á [à˜…÷& y•n¯ðùL„ Ã=JNZ™½)žà9XT&9÷GáÐQñ
ØXñ®ìäÝ&ý¸æßÔtbræ ÜQîðŸ+«ìO1]+‡º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,^ø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Š[„˜£[ª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¾ Äû.@ "C÷tõ‡~;E¨÷¯ FCÈ·Ÿ°AM4¡ûsKš˜~gwzgwe} t£Þ"u¡m¾ï#&i—Þ$iµAÔ‘šKùýsâþÇÏ4v©S,7HÛ° ™×#–qêE§êBÕ»ê]´B«‡ýÓ߯ùlß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œÿ”8xÚ¦Yø9Z¼jóೃ¸éGm?¨—Áö’.ms–6O™©ÔÁ ¿ŸAº)çOrˆ0Drîfœe‰”ïÅâ
\ ò]Âæs> >žäVLP­Rq×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£“Ö~0kéâãÓ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Ìî—ÀѬ'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Ùl8!ô„tךó6ݽýÛcìNÞ1\Ü4¤4EèrØìuèB‹¯?â)7;0Ê9v!Ýqå]õ€* ¹¢†ý½±’‹šü˜}±%³“YÉWf!á¥Ô j•ˆ0Àlq\n2Ü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Û;ëCU~µ-øp6Ü4λß4žá~ó|}nMgû¡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ʼngn«ÅÖ”¿.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¾¾0zºd.MëEh ãk
}Òî7À.`íÒ÷èÆT¨#Åîo\¸z`o«‡/¯佲ìõò9Ç|@ÿêy =|E>U~?#q*L׌¨ãÚõUï öŠ{ åi°‹ä–áÊ?;g!'F‡pÝu)Ç/íÀ(ä6¼Z9¼Š•d‹ÉÂo-Œ3èÙ0Q-¬=RÉ’1%'ð„ ×3~GRë=‰z³k#O™ÄŒ½8­SJ‡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 Ü_'HKxñ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Þ?øBa&ÕzFˆ`h"}*B‹Äx Ä•4v´$&¯½ŠÐ¼„RYÍ 7 öO•u¶µŸaöØâ¹"€T‡¶*ì––Ñ%ö¡¸k¢ ôR›:ôBIg0®'sªÆÎKŠ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»QGÅž>¹“ùfn<ÉßQiÝù<Ü?g~;Tƒ‹) pšl¬·M^>ýÚ‚'q´®ÊvŠÓ¸µÿé„Scº¶Ædz8=ËsÒ‡RKœ½ékvOÅP#dCTîš¶Œ¢É¼½#púåûA‹B6tYQI½ e_8Ñ…†Ì:?AS^m *çÌó¹ ë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º·pog~©}ø[>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
D‰ÄXâ=+˜è(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
D‰ÄXGÇ%Ôpgradlew½XÿsÚ¸ÿÝÅVñÈ«!É}}éÐw\ iz!06½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Æ;WR•h„×™²šv¹6À±Z£éø›ùš‹¶é;‘Ú¨¬«$^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
؆FƒÑ1A_8f¸o.xE8Þq.™ŸÄrƒœ\ˆ:Î0dnF~ÁJFVTr½[48•€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þ´éfxmpƒ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*Aaª-å¸Ü®CtÁGàoÜJÿ®~ßR£’\ñé·);{«Š£óàc˜sSˆXîARW Ÿ4æXM¶Vöyû =С'îO¤ò“W½“_ðAbkK#wl.Ù<vGVõŽ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
D‰ÄXÔÄæ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)ššÁmx&óÅ*Ê3/ÃÑ$²g% ¢uÝs2µÍ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
D‰ÄXíAgradle/PK
'sAYíA'gradle/wrapper/PK
D‰ÄX“=º$»!¤Vgradle/wrapper/gradle-wrapper.jarPK
D‰ÄXâ=+˜è(¤¹»gradle/wrapper/gradle-wrapper.propertiesPK
D‰ÄXGÇ%Ôpí—¼gradlewPK
D‰ÄXÔÄæD·d ¤gradlew.batPK È/*
* 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 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()
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 = ""
// Classifier of the artifact.
public String classifier = ""
// Type of the artifact.
public String artifactType = ""
/*
* Extract the components of a package specifier string.
*
* @param packageSpecifier Package specification.
* Package specification should match one of the following formats,
* - agroup:apackage:version@artifacttype
* e.g a.b.c:d.e:1.2.3@aar
* - agroup:apackage:version:classifier@artifacttype
* e.g a.b.c:d.e:1.2.3:f@aar
*
* @returns [group, artifact, version, artifactType, classifier] 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(/[:@]/) : []
if (components.size() == 5) {
// Special case to handle group:artifact:version:classifier@artifactType,
// We want to maintain the components list as,
// [group, artifact, version, artifactType, classifier]
// because classifiers are a rare case and more often than not, the parser
// will find artifactType in the second to last position.
// Hence, if there are 5 components, swap the last two to make sure
// artifactType is second to last.
components.swap(3,4)
}
// Fill the list of components with null elements.
components += ([""] * Math.min(5, (5 - components.size())))
return new PackageSpecifier(
group: components[0],
artifact: components[1],
versionExpression: components[2] ? (VersionRange.fromExpression(
components[2])).expression : "",
artifactType: components[3],
classifier: components[4])
}
/*
* 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
pkg.classifier = classifier
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) {
if (classifier) {
components.add(versionExpression + ':' + classifier + "@" + artifactType)
} else {
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]
}
if (classifier) {
hypenSeparatedComponents += [classifier]
}
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,
classifier: pkg.classifier,
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 " +
2026-05-08 11:03:00 +08:00
"given %s", versionLockedList, expectedPackageList,