From 1d87b94403faec8818bd6fcc885242c752637907 Mon Sep 17 00:00:00 2001
From: CyC2018 <1029579233@qq.com>
Date: Sat, 10 Mar 2018 22:50:50 +0800
Subject: [PATCH] auto commit
---
notes/Java 并发.md | 53 +++++++++++++++---
pics/0126ff14-d52d-4a6e-b8ca-e429881e23b7.png | Bin 0 -> 32768 bytes
pics/30edea19-3507-423c-bbb0-5184292692d7.png | Bin 0 -> 47104 bytes
pics/643a2587-08ae-4d92-94fb-d9a1c448cd13.png | Bin 0 -> 40960 bytes
pics/b202eeb9-5e84-4dfb-a6a1-4f4b7ed5d3e4.jpg | Bin 0 -> 61440 bytes
5 files changed, 44 insertions(+), 9 deletions(-)
create mode 100644 pics/0126ff14-d52d-4a6e-b8ca-e429881e23b7.png
create mode 100644 pics/30edea19-3507-423c-bbb0-5184292692d7.png
create mode 100644 pics/643a2587-08ae-4d92-94fb-d9a1c448cd13.png
create mode 100644 pics/b202eeb9-5e84-4dfb-a6a1-4f4b7ed5d3e4.jpg
diff --git a/notes/Java 并发.md b/notes/Java 并发.md
index a6eeadf2..ed1bcc04 100644
--- a/notes/Java 并发.md
+++ b/notes/Java 并发.md
@@ -45,7 +45,8 @@
* [1. 自旋锁与自适应自旋](#1-自旋锁与自适应自旋)
* [2. 锁消除](#2-锁消除)
* [3. 锁粗化](#3-锁粗化)
- * [4.](#4)
+ * [4. 轻量级锁](#4-轻量级锁)
+ * [5. 偏向锁](#5-偏向锁)
* [多线程开发良好的实践](#多线程开发良好的实践)
* [参考资料](#参考资料)
@@ -851,16 +852,52 @@ public static String concatString(String s1, String s2, String s3) {
代码清单 7 中连续的 append() 方法就属于这类情况。如果虚拟机探测到由这样的一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部,以代码清单 7 为例,就是扩展到第一个 append() 操作之前直至最后一个 append() 操作之后,这样只需要加锁一次就可以了。
-## 4.
+## 4. 轻量级锁
+
+轻量级锁是 JDK 1.6 之中加入的新型锁机制,它名字中的 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为 “重量级” 锁。首先需要强调一点的是,轻量级锁并不是用来代替重要级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。
+
+要理解轻量级锁,以及后面会讲到的偏向锁的原理和运作过程,必须从 HotSpot 虚拟机的对象(对象头部分)的内存布局开始介绍。HotSpot 虚拟机的对象头(Object Header)分为两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分代年龄(Generational GC Age)等,这部分数据是长度在 32 位和 64 位的虚拟机中分别为 32 bit 和 64 bit,官方称它为 “Mark Word”,它是实现轻量级锁和偏向锁的关键。另外一部分用于存储指向方法区对象类型数据的指针,如果是数组对象的话,还会有一个额外的部分用于存储数组长度。
+
+对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Work 被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。例如,在 32 位的 HotSpot 虚拟机中对象未被锁定的状态下,Mark Word 的 32bit 空间中的 25bit 用于存储对象哈希码(HashCode),4bit 用于存储对象分代年龄,2bit 用于存储锁标志位,1bit 固定为 0,在其他状态(轻量级锁定、重量级锁定、GC 标记、可偏向)下对象的存储内容见表 13-1。
+
+
+
+简单地介绍了对象的内存布局后,我们把话题返回到轻量级锁的执行过程上。在代码进入同步块的时候,如果此同步对象没有被锁定(锁标志位为 “01” 状态)虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的 Mark Word 的拷贝(官方把这份拷贝加上了一个 Displaced 前缀,即 Displaced Mark Word),这时候线程堆栈与对象头的状态如图 13-3 所示。
+
+
+
+然后,虚拟机将使用 CAS 操作尝试将对象的 Mark Word 更新为指向 Lock Record 的指针。如果这个更新动作成功了,那么这个线程就拥有了该对象的锁,并且对象 Mark Word 的锁标志位 (Mark Word 的最后 2bit)将转变为 “00”,即表示此对象处于轻量级锁定状态,这时候线程堆栈与对象头的状态如图 12-4 所示。
+
+
+
+如果这个更新操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的栈帧,如果只说明当前线程已经拥有了这个对象的锁,那就可以直接进入同步块继续执行,否则说明这个锁对象以及被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁,所标志的状态变为 “10”,Mark Word 中存储的就是指向重量级锁(互斥量)的指针,后面等待锁的线程也要进入阻塞状态。
+
+上面描述的是轻量级锁的加锁过程,它的解锁过程也是通过 CAS 操作来进行的,如果对象的 Mark Word 仍然指向着线程的锁记录,那就用 CAS 操作把对象当前的 Mark Word 和线程中复制的 Displaced Mark Word 替换回来,如果替换成功,整个同步过程就完成了。如果替换失败,说明有其他线程尝试过获取该锁,那就要释放锁的同时,唤醒被挂起的线程。
+
+轻量级锁能提升程序同步性能的依据是 “对于绝大部分的锁,在整个同步周期内都是不存在竞争的”,这是一个经验数据。如果没有竞争,轻量级锁使用 CAS 操作避免了使用互斥量的开销,但如果存在锁竞争,除了互斥量的开销外,还额外发生了 CAS 操作,因此在有竞争的情况下,轻量级锁会比传统的重量级锁更慢。
+
+## 5. 偏向锁
+
+偏向锁也是 JDK 1.6 中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。如果说轻量级锁是在无竞争的情况下使用 CAS 操作去消除同步使用的互斥量,那偏向锁就是在无竞争的情况下把整个同步都消除掉,连 CAS 操作都不做了。
+
+偏向锁的 “偏”,就是偏心的 “偏”、偏袒的 “偏”,它的意思是这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁没有被其他的线程获取,则持有偏向锁的线程将永远不需要再进行同步。
+
+如果读者读懂了前面轻量级锁中关于对象头 Mark Word 与线程之间的操作过程,那偏向锁的原理理解起来就会很简单。假设当前虚拟机启用了偏向锁(启用参数 -XX:+UseBiasedLocking,这是 JDK 1.6 的默认值),那么,当锁对象第一次被线程获取的时候,虚拟机将会把对象头中的标志位设为 “01”,即偏向模式。同时使用 CAS 操作把获取到这个锁的线程 ID 记录在对象的 Mark Word 之中,如果 CAS 操作成功,持有偏向锁的线程以后每次进入这个锁相关的同步块时,虚拟机都可以不再进行如何同步操作(例如 Locking、Unlocking 及对 Mark Word 的 Update 等)。
+
+当有另外一个线程去尝试获取这个锁时,偏向模式就宣告结束。根据锁对象目前是否处于被锁定的状态,撤销偏向(Revoke Bias)后恢复到未锁定(标志位为 “01”)或轻量级锁定(标志位为 “00”)的状态,后续的同步操作就如上面介绍的轻量级锁那样执行。偏向锁、轻量级锁的状态转换及对象 Mark Word 的关系如图 13-5 所示。
+
+
+
+偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(Trade Off)性质的优化,也就是说,它并不一定总是对程序运行有利,如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的。在具体问题具体分析的前提下,有时候使用参数 -XX:-UseBiasedLocking 来禁止偏向锁优化反而可以提升性能。
# 多线程开发良好的实践
-- 给线程命名;
-- 最小化同步范围;
-- 优先使用 volatile;
-- 尽可能使用更高层次的并发工具而非 wait 和 notify() 来实现线程通信,如 BlockingQueue, Semeaphore;
+- 给线程命名。
+- 最小化同步范围。
+- 优先使用 volatile。
+- 尽可能使用更高层次的并发工具而非 wait 和 notify() 来实现线程通信,如 BlockingQueue, Semeaphore。
- 多用并发容器,少用同步容器,并发容器比同步容器的可扩展性更好。
-- 考虑使用线程池
+- 考虑使用线程池。
- 最低限度的使用同步和锁,缩小临界区。因此相对于同步方法,同步块会更好。
# 参考资料
@@ -868,5 +905,3 @@ public static String concatString(String s1, String s2, String s3) {
- Java 编程思想
- 深入理解 Java 虚拟机
- [Java 线程面试题 Top 50](http://www.importnew.com/12773.html)
-- [Java 面试专题 - 多线程 & 并发编程 ](https://www.jianshu.com/p/e0c8d3dced8a)
-- [可重入内置锁](https://github.com/francistao/LearningNotes/blob/master/Part2/JavaConcurrent/%E5%8F%AF%E9%87%8D%E5%85%A5%E5%86%85%E7%BD%AE%E9%94%81.md)
diff --git a/pics/0126ff14-d52d-4a6e-b8ca-e429881e23b7.png b/pics/0126ff14-d52d-4a6e-b8ca-e429881e23b7.png
new file mode 100644
index 0000000000000000000000000000000000000000..f633c0e9348d646daa7de4efc051b19c79f58afd
GIT binary patch
literal 32768
zcmX6^1yEaU(=Ar4xO-EqxD~eo#R=|G+?^mr0>uloK#MyRcPJLTxVuAecP9{}f8Ouk
znVZbbdWEB?@JaL4DpFSDm6KF-Z_7@V%jQ{&Lnzr72ez>waBR<2o9wx4y@
zw0^c`Hq=uccw1gb_k19KyR>x~^bZzvJH;KaMU+z#mppW7I)O{Gm*+d3kgZMEu)Sy*
zR~a{aHLTb1N8%_&|0VD;#&f0Tyca5yEqx-nU2=k110$1$fFZ}(uI#N@>
zfec+)+;sCrH@4nd!U~V11#ImqxoKA3ysGmBUU*#9S|wq$caR@f6{nl>_w3|tNvy>rK4U#d7GsAOE|1}M$drd)Wvl3B!r5||K&0+DBv*N
zv8r@p82`GO5E@DAcQ8%sf1+VBxVaIER~6SE%2CmKY%t-c3vLwIa`}BD#lG3P1&VQe
zdRx_UR0dbdgkC(|6iZgd&0qaWX|p;k$&W3YNKRh+_X5*A0>IzOLIh@Q8Vy)#=4cwAZkOt%XVOz-v?
z1Vqltm$M->tZs(zGU_#kbDxxV9V?9eu%2D)3RvzRuid7l$=ZR8CB977yAe
zKJO`gY_39u*-Abx9d(P%$me13Cv-lpp3lpdW14V{y*!?q(k1N>m_IFe#e!!NlVvzf}PD0hK7FoqU#29{M$qw()N?uFHMUUF>t%I^MHNP
z<2Dfduy{fK)E-M7w>aDHXuACKZ5h0Rs>AIWadBzfe7h+xt%Nab4z4GA{S^hbkk_N!&l>V|m$$Fjshg
z+?WKq-;Atw_z|w2S@Nujeb;ySJBD+(%B-kpuH5wb$U$u>xLEwu{5Yf4Q>7hExH{UdJbg*Z@J~OsS
z5^f$<78>|I9iQXRd0_MS2jeitAd#Y}kB4igKxd}zrj*9Lm*95EVQ*JdR|vd0#~n+hYC)@2
z_G_>8OxKI6TJW?ZKEqlTbo@7!N7$;{{u~`p)7K3?MqO%Qx|k+BgK{2?=Yn|%_NrRX
z4B?11)pII$5xe97)+Pn_Ig`
zKb3369TCy>cpLUrH~~}($MIcnTOv+4h;@VrsKS31#lU3F`$kJ7g+4L)4&GJ-lg2zN
zolLP*8i|ta)vMaCtx!XJNzSQ@(_l~y;mCzeZMz(|OTE1g`b8&Wu7M!%e3oq4cf?A!
ziH`{HSEh1`Pk9Cxp5s4wPl&_V|My3q=tpt4wY0Cn=4z|y5YeDC>JR+)xX$%_=F?d|
zv6tZ00VSj(z`XAK_t<%BAo0h-E|lx3)SZ<8#^mu#{!WGELwHa7zqWmG*U6fcE63!+
z)wy$l^9kM#aL;lhBZZdXk3aocMnoq{4iOi|Crf#J-YRHA;bKoyae>-7w>_!bIm3%v
z7vnx1b+vnvR;jjG68{V2%BJvXc!i|LHbqjr#6aM~i0Qn%dkX_Z&26Mz+eZ=+{kgy!
zD0KQFk0*6(;;cZ8#_MrW*F#IXNBw8*pq>7lq>-joZ=-W$h{?2vZhU0WeGlDH9VT7D
zPmW{Lm#dWH{DuHn>$(a2uBp=`hl9_`ckmKBBgoLO^yx^ivn=lFelk)*`?MOe745Jd
zUK?Z-&9+$MlA8eQ{P#Q;_~st9X;9G)Odj;KO?S+uJSUG2>SW8ic&G|O>|J$SvM~H0
zKP3=>1@pGgzkbC|1nlvp#EKl1RD2*~oViDY&GIR|00ZiC_JUtEgrNEtnwCzPx!ef~t+;;X3DE+j9P|jWiyqrxs83
z$kdb^DcsWa&nLpOUmFchL%RO{7c>@ZkEJR8Lw@6&O6>Dve;+B1hoy(L_YXOL?Bg)}O|vduZ=!j^O_VsH3GZ!Syzg&a;-|GLS%Sb1A6d
zgQx28rwhI>7ol{<&lQlS-DD%(1%fT(eabqTqt!>~zQo+Kc8NxRdPm0%?rw1VIL{`g
z_)1bD_lGGaCvcyw#(^j};Ec;5`$Hf9dq|`z{!>CuzzyS~`v47FQ^}G`=kwj%+P=WT
zB7V*6GzW%^A@SGf@cqxvM|yhu)cGl|MM#A82ABu%zWhZgv)sr8x;-@oJvQAgdB|fg
zoO~r7*Xg-OfVe@ptP3L1Gp#)9JO`hbix}H~24!nq=M7}~q~|ia9alEZ+u9dEjG_hL
zYE1#h%*QB6D<5bsgvbp!Z+|5D3tNFrFiOeV4`go*C@Yb79}evI6#3(ayU^*3o2@fW
z{y#{QI%JFO!($537v?Jrv~H6ncK~<>%MRt0Wkmogn4L6M`H|b|_Tv1!;F48>&hsm*
zo@3L0@S{vssYi(tueZ?0%pAX?(pv*Qu?f<;m&rKHgNm?)_A{@!wLh!gD+tGem@5~K
zL@J7T3@fZl|J5PMa_^_O{Yh8adbb|*&p}ea;xOEBJI3_M0^FEM#;MJ!E^O$QkbL=H
zDrg!dV?7#)LlsyO)cuQBsmVD_9j*MFm+?|b4>q*OT)sTzgH-mAJ38n4WS!#mv{!6j-3${}J6+tO-|`h$
z;W5U7-h$g)C@9Nv_kU4U84S?(1%)ZA#H}*df3Y;z4re6kh{HcZ7e1|@DQjPJZdyIc
zpL@E9l&px;y~g`@fp@DxA$?gK$B8~Y&6R|;fo5cXa9B0Gkc1ln8pfIN*XR^^_
ztMjf&yL^*62?=e#`sJuv_b}=lvK@N_HsX8jxjY*SvE`6aXD+!;^q+TKZ$8a@>L%+@
zH_89^${2w2{k_*}jTb2G&EF#8dDV_O^e%Yo
zr2~Ks4zd=#8YsCPXHi8`c?_{Bu=yh=Gcig1#S
z-T8Stb)o@rS}W|ODUV4#d_Vtb!f(E=%yP@Wmq1>7;Nw1dQXLc2Z8C1tJIwJUQ~~o5
zAF}zLrb-(oJy8j7;T}>Pif;@7j1hC*G*h%YuZiNBQ&~R%W}Pf@fmfA>6Fv
zwVq0fJsGYYh-$BlJ*H*;z`A)(R@O>`x`kZ@xirg3LTcnqfN-yfg4R_5F`(1Jd_$hA
zoQDkac=E9WNrop{*IAjdf&^N1dXAq)ru4+~Q#51_UF56@Q9~*3XM$82zmVHI9R8Yj
zDUZU0o7h!7?$I^X55>&7S^C6vblMBF1KfI480lvzTOQ9^%PWB|_iKm0CYm9EIEPKj
zqvrx6(869>diIrflDZvL228oibY+A$zE5*bVyi+kUHPin>VA*~uW?$wKY&QK$nI1u
z8g<;^!uDL_OwBH`z
zpL}gfNzi2A&29+2IBa8a1;Z%pg2y3;CYurqvw#KkQuFY}%cBIqGgjB&UJ)anJw?gr
z3bzktCpd*P&Ct59tg#Ro%d*
zhxF9hwZ*>Uv)y&yl&f;`GzJUbGXb>dlYeh3BPuerO9k?RAUSSFm(M3js~7H^x0nO-
z*(r+oo^glfr>)d=7fAL4AQtIF+ts0i6>0Q!<!TsPKlrf@t+pc<
ziik-0+5y1Z7A(|hKp(9hpK&8vUM@?_QmWmkF2+}aENGqbX7h#0;99m=9SO!t^Adm7
zCnKMN{f5S=c@E$+RB*nRpEM;iuwwSZAv?t0rSrs^3xVk&ymZS}xM-@7_TzNn>L`I1
zLktwYtJ3-Vr0RgeWi38$>{h1PZnd?UuK>RUXXAs1Ci^~dn|#ZgWLHi?=!}yY_@lF=
z?f8avA})rbjS2(asWGpx=a~H8AI3f>H%N)W(1%t_>}$9JPR?*54RPq({q#8lOLSFX
za2NJxbyEYfz_*K+DQ^Wh-0U?wFpEIy>Abn$Ny_(VhVxW}^e|o0A6cR_w=AR0!)Z25
zhqbF1)u9LV^wdr&m~7JJTk8JiaGf*78os}b+WAP$=b&m#hdPsMq^?TEA|;tj3nn{o
z3c&5zZ30YJmu-(_TIPjOnVz}3WASo@!eFwR!*TxhYqM=}%|_b^?wxnczaC{6QI@o%DXl!94Lt!R!b#OB%fscEgKyx47Dx2Kd?y?2dUqBA^Etro;Jdr
zD7x3I+zUTADJjRCFZrLh3ksFhj{JSEtV+(&0UK5r?C!;~eIppsD3F$6=biki)va1r
zi!6P`(5(W5N-&`7mIq3NN5;L`jQzVI>~Pv0k+NMZ`FvQOta$yCO5Oq81l=a=tqc4f
z)WctWL!)NY7yy9@&r8$op!?715=5U}8|r@|!6p3{Z^CM&-*2Uzc_>zAjVrveJN^tIo=vp-HE_`k1Plfz0Ztrt4)R;Q
zUlF{Xd&M$&kQZ#j3M&cbv!n!SjBD`Jx{nt5MhNfaOWo6d5hkN9e=T2`bzKxy1HExz
z{nqTO$66hQO~*4PHyrOeY@i&Kh8p=7NVivUW+~KuD?d*gZ5(_lfoSTiyUac+hq_yavU{+W3^IzW@hBd0Xfa|X!9tHgGQ
zVR#D|l&_d=D}1&2bJ~d`P5mtliX3L9%Ghu?flfBPKhvgH-Oes`Vn#@+wVUoRuF??Y
zRwP`u7T`!#O=9D;X#*UtY+7qEw88qv&A3A$@(FzDHDj1n*q!w~iiJh1LQQEu?=2^W
z%U5-HqjHH16r-smjOr%0>NYStCZ|B%4zB1~_0vEZ-e{mpMsSVY85?S7CKId401
zLG2(2&8PnfDpwQVOSRMmJ0AW01e8_|#r3{!FBP#b`7F1&9>N1LmBP#u38zVm$V)N*
zg23PLsZm@g4>IxWlj9@jvGOpf@U)Rlm?Wr(O0Bi;vnRahNlxyyI{6RSsDYlh3muZ>
zLWxB@3!3z0HoBNf&Gao+^KG{E-Rrhu0WSMkXHlDZyWMuCcW+)<-dNgIsuHltclZN$
zt0p{zb(edWz|6|hxJiSBXt3Uk_{jfNklP)@I5I=4n>$x*d$vknQi*zPfk~7plc3s*
zKB($#6XtYGn|UD3-QuDV`S1@kl^G~)*gym(XlZg#=A>O~460t46z#}bAVVg}Gv+l0
z0_T=_I5(Qyl1QqKfy2gxLKmGD@4GAlq3;2!59wO3sp9dSoHtEQ)F@WNU*5E8iYOoO
z*vg#dZPqy1X1dGqi~OuPG7#_^yv3c!XWJF=_gnn$Hg(VAzYyE~a7)a|%onxlVTcxg
zanIs@8tHseZrB&8d+m|+IpFm!_c1L{`w}>zPPRtk&;yAPBG1GY8ZyPks^VFR<1d
z`NhrjQiIY=RZd7~&txnAcn5HI*pW9wNP0FvhurEL&%wzr({Om1q}1%B(x2*lV6
z=_C%Wvx4tP)2@MGtK|_7K3zY`T^VQtc}q2M3q|If?@xF@
zP{>*93A@(-UaG4WgJ)z&*S%omvRIgt?Li?ncBx6al&ts2zNU^
znLDyhw#^6-9&}05^JY9*>kvOEGZgG+l3Cc#3y5=!mPUvgv23W{PrFzMMJRwOY8QynzK
zA^ne|=i{I^pnZ{nwrVuVo#HC@9G_e2&ANSvqSzf2G~r;58hfbC;1m}8C^qtd;G`Fi
zz);4vUMhc!wZ1nAw(1j?xC{TWSHoP{yObHzF}RkxOIzts&E-u}t%^Y^sS7
zt~2+li}%z{9%P;0xE2QK?uNCp_r<%Bdc)mnZE?xg)o5VLzoV)5hD+H_)os`?m->=t
z13x_JoRsl7E0RF36{w_m;^HIM;qy&Lbpie9s-qmL(1=vJLYz94CRw(X=(xM@YHkA!
zZ-Ti@xBNSESjr9aAX
z75^pJbwf@sb)=vkErjVOR-bYVc8&d2N#c!D#vajjh?L74n`<6V+G>SC9+Ilm4O-Sr
zt6vh+@nzp?1~b1G#qOqbK3Rk7Nk#Q|-`4vI3jEH3PwRJR-wsbw#|TP(!b3mk
zEpD6O>%Fr6XS#ovbcn|GBHr8pAd;G}{T#(4E!+o8wB3XTgMTiRv?gZQv=bHGNHxRg
zyh{Cn23m^aZzDR~*#nSp4Tr|%4fhOFAAGSBr;!QX=^;nC3%#B4Tn{g5e`Mcxac;+k
zEXcW~jQey?*?9luNtFC}`iUC)V=CmE;@(0Fm;^r)m54(wy#^#=DsSx27LC*rIb6KTdsoM
zGqh+(W}
zCEJ%Y3N>kDqzNz(O|dQtbXaas6b6VJ80(d|6To+yPWB)L(78m
zTVu?$X3rf^Ir@Rp-8=z*N63pmbM~fwqWP$PTKzEB_4Q15)#TN;!tgEGbbgNanIYAn
zczZi#@2`Sd;!RY^6>wppUUczbeFl!U)%&-8k)%u!!VVVG*Zzv-@
zm``rcBzeay1s%r{^73X!6SW*yd~9o
zu?lp(&ZLtT?gPg4K((z&0b1wh`tt|qB>yab*bllr_B?)b9r+T@)VL1R04f(sGu=!$
zk-?B~`jN0PXpCQZ;j_Opn3O4TDDRlN9IvM@LdF4CK$P8N;Y7IZ$I`uGN?!<`pRSur
zP652fIzLePO*R*s;f4Gy
zbu@jD^!RE`^FqB+BMoZ4bP-ci_;n0tONoS$!~(wI>omxO7Plu3(nPI}yj%7o5pM85
zpt3%aJ;U7hx6~{n!Vd~Ga7Pvc(g&nokuOn3IrPk{^;-Xi=k!cXR#CRtM#xG_gyz-g
z@ZB^k->M6z)a)8K%>?Islq3hSjoj>^i*Kyb6KQjUIftM!Iu
zH;lns)^lIOOfD0H4DIEQWZ-X?=cnhC8fQ+C1IrLa^}D7_yx?l5YSmL@NKnABy~6rK
z#`=?u4o-y1U|!sA(R~6DF59Q~Zzlrp>hwhZ9uRL*2)tbNCf(k80yAD;l)Rcjl^0T2
z&3pJ-7-61Z_AzH%ILm+5SZKcO-KbCHzJ2#$DvpAlXm@qBy>2_&@xRF6bRDBjakl%z
zK9SRJZ0<6U8?>|hWUXe64xVT|Up9u+A=|T3rZX(9?jIWjP)nKnW=TKP2DH5Ky7}LV
z^SWPO^~1x{#Wzwa&0Y=6(~Y0jk7uql&l1d*l%vAZj>DJPLCtPes>TiP!>Yvu%-5wd
zHbU!T(@
zD-dALgr_x3I{_gH|7EWr{1?x8+W%K_$Hi0>>!xh@E4$r?Y!Z)*A6ItIK4hfv8;z{I
zsL@bcMBnirY_2xf=~%+eN&d!y!UV&XeIMw%`|4x#q|haPWg==XkO
zjQq!iixgBNPExSQcaK`gV~Ku&T;BZHL{@q|
zRIk!_-;kPY=XFN6{bS-}ISli#e}Y#xP;1yb>Pk`xQ;~^XByW`MXQ|~^u{U0FJ^EXU
zLIg}zQTbF7X)83~o2j|%B|3t&LeV~s`H00xs($r!@6*KoE0nybW*W(s_%vpIYvAq*
znFG%#@>b4_@Dg)U7Lk5`_fQy-}Ce
zvQTa5r>H|x4j5Bixp}XYYSi%C!xJ832RM0KeKDgd@~pM@2|x9?8Kits%eNG#{yTrW
z2ic6E_OO@7S4cO8@UOHKX!!nbOQg{KYc02SHPGMMT(P7>I+|E#r<46~gly~*(L0?L
zaz25qBP1TxCEiLJJFu_^!WJeGwXkP96Ob@A4dvP7LHq{kf$C~3SGrp*3xEr<5u%d?
zh(Y#K&X^yq1c+Kyf#_Pb{q~f%_I534uT$Z66j$*@63A5(U98T4fT}YZa%ySHeh1|?
zN71dY>VT%ap)Adp0_i@~%^&F)ItqjAt{NAGTnh(ykfSg4C_3y)rr8FboBXwBuwMOW4eT>cS<9h?zNde4%LIgRE|hQ9l&^Z0vP
z+FUxP3UC>MgsC!_Pekotu~N_d|s^DDXc--1ocWn5$bC7J_6>P_i%b)T5LkW+j`bvNI%f}t5^8$
z1C=fj80|YMtCZF~B4aBW<}$#TbV{yd;x|4U!m;74+uR}#X2sudfe0^T4t#A0dHPdV
ztT^dll_B?whx^mZcC1&c$)9jA`@+HLj*8w&}P*Y
zE=qNWZ&GXB+$OMufz9?DEH$bdl-($sd&g~J4?79vwu>KN4fDxu_ggXLAoa12ZYM8p
z%}nON`_r#TKsVEn#3{%7q~Fo+FQp6wPk2Jo-AcHA6GMhnzB9U^H`FWQt=VV9IzMOF
zLNAIrzm1}5!HaCNTntP-$_7kOQrXN}?&ZhG_(X4JF$8gnezqV7oPo~2(Z`ld%&The
zyxc(KTt6I<>v1V@P?`ww+h+GHzy9zK84ay-Nq;lT@hwT5ni~<>$FD|RKq9sC{UW`L
zn?A0a6?SrCQft%Mk?a7OrO8DCZ;r=tJSML8g#>m%iW86OSRkb2|aY9
z*pOxfJ!uU)OA6n$NsYW+A~7T9XX+Xi595Jb-gPLRbyd;6Q_%C=GJH0nv8mVnm;l!=
zr*b&fo$CU7ZV1Fdit?7Ab&bQG9n0MHfMT%?z38%DuR7&41cSe#3#Ysf4&Tbyl0Tt<
z-r}$x5#AZdq|FpOTcT3=10SR9D@e`Xj{V11Ri&@Aa@i#*lL!;%@iwRq(aLOsB!x^<
zEjDjfuYrsC!Z8Gy2Pwiuqybw|%({CPnRR)OvKZ4*@9}?o;_@Om1EX{0NavovUJ=+v
z5IK1YXDEaKF`z!RQq8qe@jXgQHC5HH*UdCDZ{3;byC^2x~yUod=Sf&
z4Cy&(wy($aR08Um)&f3-rD
z`gyRKHr=*>;Xd>T2m80?QEFA<;C|jnG#Y=H38_=EIc9L?wa(`i{Ag2$Ha&)&RKjSy
zo{(18dcT6+f;vMRMRXoe>x8jCgMgP=cS9`GcIRD7sF{K5;(<2b9!y&DYm`@_5Xyj8$-=k;sSJM;&|(OHSuv$ic{^Njvbf+^C624nHJguu
zJBWd7D9yS34ty}>Qe6Y8N%0j5iHwhSc;?=z(g+PPt61KnGqy?e##yNELrKJM-dx6=dNYy9gMMCEV8NJPL3grztxsh%#C-}cgq
zKDcTnfDvpMp=SzR;L38d+p3(M(Fm7aw4M=EDNdOY03H)ksVqrfIr7D_dX>P^oKU;-
zDIO2SgdkMm{@U_>Jew&(g!{gRXLq|rAQ!V++*8Lda_VOoIt{7IrhtvR*a*+UVyy69
zD(gvGPro=jTddgCAPF{htZzh(du;1T!zS*+mmHt_3v%N@LuGx5f81Wg;XHfEK)8v?J1tI#=
zYoEYknfTJrr@PnGu^lT~CT5S^#8bOXgCl*F$6Fvi;aJadKTPg@IZAI?JJEc84|VHW
zPux$>4b^J#sK5`f$p@T(yn{arR`GBzv?0_%$8`+_1&R(rJl1{GIv3e{JGBKZDKTDx
zJCPhRJZm>af|c|TW$9B%ua=D^ZD*>Do{w)YW^zAT9`(|KnHTKj@~>y%KGa%5+U1rL
z{Z_yONnc!|PiO8x|0+JJx1pAcUv&Ld<}UD>E?3|a{!UL*m~1W^bmz5GiXo3rRzm$8
zFY~VcD=THk%R7SRj|iokF-~Ki_i)53%Q$CYH0*z0l54K1gREBnZJsF@w7vT9ywcM+`YIeye
ze%gWbo0U+fVrt|Yo1}+*^_SGM!~ZP$iW&A?tHJtIdUl@;s=obMWU_iQ2YF;5U7Nx>
z^L<6cnxN$U3MtpYlq%F*|L!?5b@Yl8{9Z^ytiXp+J^p+GgCW<&bYmk
z?+R0nr|Rc)_n4C~IV4Qh&~?5wukT`#TStqt(K^DY=;+x($9ghx2g
zQIoka+=fMkas!!x_oVMiKsCsDd~udxz9p7;N*LbLTJwzFGW)9f(kS}u0@S0+->}LU
zcIdL|NY`^Y3~{~R@ojA`yRUnUaFjD;TBu&szKP6vkJA6zTmOZfqG96>6F-9GxWkQu
z@Z{o)NSASH#9T-?noE%ixm6c0gU@s}VF8w|3LnpAPX!)QtiiiSz+3S&!{m@PuP(E+
zkMQ@G2}9u!Kmoy;We!aZL$5zVLW>Z4NY=Pejo6(um%Gc%JR8@9_5pJq4BvziHhgqQ
zW{>`gZ|hO~-#p43IBb|5HD)6+!r2RJw)ej|8Kw3R%si?yHSm$voKrw)C{RI7n^7WT
zmC30k58L+0sHlMvY)|7p4$mzRUr;V|FB9zrvORK%2mm9}lf5d`F;!^D=LJC=5DJ>U
zXl9pdH1j?__VHs?hTe~Oa(kx;;U-%I>_fP3w#p{$fR*OVg)ZtgVh-dU&i>|Z%d
zxYqhdZk)wfI=?c4uC({U6Q``(u~$c%z}H=qWj-;&e}^ja#Q{32uSn!jNoj1EH-iR4
zD@zoILF*)pUQ5aP6(8NW$0e(kG*&_e!mRCd^6()fplafzJFb1gnhsdGpuy@4&j)?K#thA>R>Y3oXn&|mO7sQ3|5aJgB(}U
z*o(>v%l}2rC&J{TXQSvEoVJ0c(iViG5tU?83O1Z(
z?lp|L&I;6%_G7sBlogzQ(jvOX2
z3nCP*ItdW&a*74U!GXfNuosNKh+Q9CKC*tKJ1=|3yJ#pE}+dd@3k5>Ga7UUeZw1dKwW4^)bJf1_&`RF
zRNLjZW7Aj1HYB7J;2BQ;1(oo@HKi=#n}>b+g6T7Ou&
z+=sFxWDJ)oKnX`dWI5|)^BDh{t0ho6(;5DqpgYo!qqx)DLI@6z(h@lJ(fkGFj=RFP
zhr6AE=Wq)J_p(*IXAg@y3$j)y98u@|YMXY2OO;ACJ;tq6cNCZM4*LbSD?yWDg;pfNQi$erzOI!Bx3%3qfy#cws8a3S~@{O2wmbkzNXKh
z;iql`nF${2?aVy^f9LOCERu+|kq($kmy}?mV)SD4!ExNXVg+~jPhejrfePcEdc?rU
zN>WYDrl5T(sMKrmgDi*o_Pm$CRuWdo`~vpb_-)L(_s7^k@-u0af-E(=$6?g-WBF8M
zNkwgX;Y4B#NYW9l`;1yLX^vCN${WZ~l+4+yT71SCXK+Y#y5XGw4tM}u?B2LRi;TFx
znO^~4ahQENU@DbkRs4K%q`b@gg-wUELfj>Qdf&70<%0f
z5>ly%K=L7H_(*4;vu$&=FwLK95R4VjE5oE4ZTdvqqOui6+0`)p*YtIj8Nm#H#~&ue
z;1B!75kG{J**z~>2Fv>TaEe9zwRA*0Km9iWSUu4n&V{FtGZ_Fab@%>B#o{~OO~R|J
z)z{TgjrIMQbYEMg;s~fdl_!Q}2-c3!?B1roq2(||HN(}en5AqS#2YRvx7k_yPpmyI
zJ?^}XQh&w>k-^7ZZ<2v8+Y{Xjw0e5#ngW1gO=)=OThS!gC@zclZ$ZqaSW-B&Mt4Owq+#e%aXR@^J3Aq^w~Q~x#}#HyV$c)m7Vl^POgWg=oLVob1!wE-_Eq*
zltAKp;|xD3y
zCVc7R(2#zt_gVXl?JHZ3s|`|GYOf4Yw5d&4e%@6wTIEnoL`o%u;nA@XIyj5$$?RA6
zZID;x3I3MzIc-?b%`*R9V6`oRo%fq-FV#kri1skkr@`eNRiN9y|2(qHA5vW*XqmKY%&Vn_?@p
zN0SYZP{QkulMG9--9XF&1@M0fFYNlFYCmYk05zk>4b!{SBv%ydqv^cFhPe|pLHfac
z8ZMRwy;j;`cwWeX_aE^TXpKx99V%r7&O$uwBIogt%wcoWb4cQ-g6jbwaDAYqP70?4
z#hk3mR55>VyiZQqv~@kdi#GlNg(AD$Kl7@H7ZPzI8fN|ET)m?Fh;%evfM-$7{=}es
zZ`}vyNx&AazXPkWWe?4o{BE$n6;_Zow8wdE;1{x>Z}ubgHM@B?@S!K$r)2k!JlS`n
zgTKN9G;5owK$kzoma+RndlcE$J(B6xVd$MT72@f1WHL=UyBjGI|?G?S-CVH3n3W3eg^I}WDH)p^T
z7^g!c0Qx0~y3{~qtVHMn1d|%+Z77RclHL!i^c1t0EbbCiT{>S`Cx-1y>ulA<;mB5v
z3^SPU^>)yKVhkOy0`Q%s79%!ft_l-eT?m@yPmW+;4daZi0eGcDt!`OU>CFW@z!QoJ
zY|X1kT~!Q2*#ZK0J4dZ7!Z_**|FF1Z4O4vAqS@1sXC(f@aQ~b?@A=jzTRV>H*;lGE
ztyZ@qWvmAoWu5!uJ`-(*$D3;Rv)9|$pBm~iSiJ{)gjq~rWak+K{ik==yK+bK;l!Xb
z#rfC{Lq24#1X~0f$px%^H{fu
z8U6!L^N53v#r^78MJuYA%jfn@fz+osy&1ouPT2cEH!;QLtaJbl5`o&|leIODq&qsf?FDs)6hX>RgzYY#=!M~*)bVWT!m$(Q%
z5+cJH#+H(0v?g$3`q@*-NlXAuCQP$L^NIGCA^XO;SmTWet5_oey2MA8(A-dGLFyUO
z*XnwnK`aE-#NUi6P==iCE2`t^N>TnU$7ieyPte~S5+Sz_#Qo@?Zh$_%ca;zvH)6iS3d$8Faq^;(COZ1sgmYYrN%}7fGo|2nW;z9=%dtjDX|=pE{IFr2RNY4
z;t2blEk3dS$Gjc=UvFpm7FGXsaiu$@g%ObMmM-b;mXZ$X5C){BySp1{hH#|2I|igX
zq+5T7`}rRpUU6N#m>JHQ@7a6pwLZJhFF2_f=vc(|ioTenu*86
zD2m4!uWETs0~t_W>0T+GJTmgLO}oCg-V*VaO?$=
zK2Z5FkwTKVjx{H?a!4-;@|uyc``s|WoLlUgyJ8d`-4T_)gq0pr$0X9wO$%GL9%`ig
z#6PdV;L&(p@E6rmA_If5fM*h3melFZIl5
z7;eKXdQ__Dyewuk$NmqhS9eyo6Z4D9B9ibjOb2Pco8|}R>=CwK9n-%U-)bsm(B`8xNk}+PU9(oF
z)&!;1%9^h0>9lRP5*G(2eT&E+)VNc>&g17T6G2J+nh~O%jx1ssWAU%T^#JZ5Px2l5
zX+E;H;c)};hU>WPP1V&nMFLK$0oa*H`gl7I)o
zP~Ga+Oqg38M*})=d>FmagbB9(M&0{9o*2&K
zrfc0Rge4^!UdDG5gc@eTix4$@#i>#*@bkDYWY>P$FTZ|@==*sLlG;1!<3W?uzLZCmXW{XAZu)T?IqlvVb5_y7p;a-}%BxZ}%rRK!HvqkDOVvaQFoM^MIBuL#Ui;uYHlF`2FO>k<
zBL~)U^hv)#;53Bx<{)v_?Y*xyj~3PQ0G#vX(o%}qV57_P@b!wwFIn&7pm~m)zYOqB
z>NCKk)SITry=nrEG!Wao>Rs?lh|(4!L>>*juW7w4lM${EF`$s!Tkfc^g#P>cs1td?
ziID5cTP*s(J&wCyW-?joqOx!ce7eI{)?PHMTeDkp9B6Z8NaM9D{r8mzlTE%GUt-c>
z*O-`gg@=&Qxb(@0bJQig`X8f313Jxh+Slyy(i+h1Z39#SjPB^ZBuQ0v9@{T#2nfy^
zA^kNrY51|z&J;lmpzL!a7QQx@t!O?Zg#rO}cyEGDyF)d|fIbzJ$l;8S<2
z@Y$N-X4&qC?U$Z6nG4+^LiSvn&MA}knP%mZFkj1Wl0kFR{{{2xS-{DKz$Ckol#AWc
zWosPIsv~haew^{F&ihnDx4}|rRv$yPl9wf%_zg@~-2UhF{I#BUGjMX*#g4`kt2Fk$jE4+OKetJNGBVX_@A6*o{Cv
z;IRrHgWvo)A@VqDwR34zb&na0smHVA?4#O$56l)zY)^XfP0-XmNvD&XZuG=nLY_sh
zIVt5sqJ`eGNgOGUbK${?xT-(uQ$5k!m~PL?J~AU;zT#0xX|qE=oN2~SYqcKgCU#TK
z@x2(*yDzayr=>12Q??i&_cUC#NHrQpbwrFCjiV?#3EmOu62{*4`yTnUkr2j@Z`B&b
z@9;hI3rR%}wrGdQVLw%BB(eE-Pi72^PG=eAfqgC!aa5Aa#xsQ79_wXpiK*57!7HOP
zR|QPh6$jwjf8swK`N4ZS{rccj!|9(bOYaZm-DVIAH2k4D37CClzkZ4$GZK(v?-DqQ
zt+!Rm)utK!K$_`3>qjl#C9H7A-o~8CBmMAqDH`))a?bfS9;rcg0h13_t6xmvj=J;4
z9ksd1X!uxnL}tioj4`J8Ny^DnFTebKbf6Dm_?V0+hfmx7aCx+b`FZua%SH&%yv#_i
z<#N!pMQx=IDTWptGl4qsp`hZm6`@N$oBCE@j36(FuUbLyRyDT~52nkqNa6H|fhf?3
zA$+!UU&2xkJP#n|5->lZQ6&}y0$d3Mv@?G4FAtqrNs!r1IZAD#(wI1;}F=iU+xgisFi*&!&k64lp;w7I(W*jr7p(#jkH4PGK(3u_2`_HA^7x?-lQpjPsYS
zzj@azEsIrllJDr7HD-pCe{EkhoMG&?Z{Qx*kuI&U*xGeJC~g7B9~57_NtZFWHA`Ag
z{fzUiGQ|djLzj6GDw{vXawagr&%_Y8;#dolz8{gXDG{G^UR^Zg;
zjXzvDdF^d7Sli%6B5+#bMoy*Zt+f&}n3C#zr_bIg;}|U%{DW5z-Cnwl@Qsmxm@EAh
zQI@;&hS>f#R
z?cRR_gS8p1W9J}R(g}R5b>Z$Rr^~1{@0*5PqmUr0YY|gbNb5kq>kGlb@cL?t!Vkyl
z2BrgP98!XrZ;|&!AHk5P1B5;g3eMm(>Y?rpGySL{OeBWO80HtS+vMH;03VE8c=L@L
zwfwz&0^=R-=ltXeh5Xva^qQvd5-3t8)=^(ZVrjOAJ~#;*6uRoW&<~+p2QRGHJ7%q3
ziZnO-y+VZjRJKyCc=cx^Gi)*J$plHRMf$U7<819dGEpETMDdd(#4ono7zsT+&My-*
zo9($qGE03qgMM%it|tH%gh2UJh-|ONf${D41!)*a*Q^i)Qft+dX@ko+{+}+$E~%RV2%#
zf_>P>nScj?M9@acIxIYX9%~iOd^2Y6mVsx3m;8u^@2Gd{G>~)o_H`KQxGHZFRIJC@J*+5QH(MEcmR5=DYkQ?vQ5=--~e*C;y
zPL7$Cce*r5?BS;{Sne2*5#@H+BI<7A`@9^Dc=6}3@<+`?XgNMkcAz&$|y~(SNv!FRahMuzO^_cr)veP
zNCTsu0&V;zM}cCFl>+}loBDEMnwb*x-e?yXPjo+CF7$if7m6+A=*Kuotn!J?#&F|t
z!D<9gos6d=^(~K83IWIRD-u@Nxce_RuR+PmN-{f!zvMk@B!HFs9kkBw75^J69s)~eC-=_9?oE0WnW0?N9(BBD
zIG~W{y@M5Eyn)$E){&e)WvC}6b7_)!$jQNrNdvmM_hu3Kl)8rWJ@rC^V(X6h
zx1ZQ**)ww4F+$tI-w(DN*-B&I;B`%_9dL`^Bi8!z$MFeb^P*>y7mELISjc`^v`29M7ia
zs?$rM^Q|P?Ca~S1c9hl
zMfBrozk7}-;MlD=f2GS(dth{W(AJO6Ueo1neCnL5G%$-(*EK+EeDiEy6AeB6HzWG2
z;hq~3uyh1n+u?ueS*4B@aybZL^W9+lw+Ja|+%UR{Kp*I+w35v1N2Jd(>@lAH7HwAq
z?-LTDbat7u>ZSb`4{176c#GIA*0q=qF3Z)(yb9hg+QMiOn6+uHuJ?Wb!~};CUmG*C
zg13b=&V^fvIrz^k0~#kjBJZ$Cz6H>ru29W)(9v48;j6(;m?;KY3R
zS9lGEUTDAWCm#ZsgAIUp0{&olg(deJS@=1LHq-j6tP(#tBujGy+!e0Zj7Ls998F<
z!1G8LpqidFe7MZ5o7DKHuMiSEDpxhxAc^9bq1wuYZjT4)5-@Wz5BOh+c1UI%XfFqM1i>9uoEtNA!A^kM<{wyAb{lz!d}f
ze1J=II^#_lQrFd(lLGwis@3o|ZDOfUr&)a@6U=&pH51K=SZN}1Hf`v4zjLj|uRdeC
zW->?jP%Dq4P*@iHdE21MCfu(AeboKP+`b|~Jq|Zg-^7R=`EyNz9{W5uD|rno6Ge3P
z^^PEJ>v{G2?M1xu=yk`49#pz4)sww^vD(9arcdV)56p`6tVaH2B3PnNfBKhUS~^Br
zAeJMD7MVkVLyn)B7ieB|s
zErKKx!IyNQp(D0Vd^qX;Q27{%&6z0Pc`?S6x!*!
zteZD(->rsyEkv)n^#qbvb5>&ziSI)8)M?AxseYl{mb?_gVBP3r$Uh;JE
z7FUC*Z*xT0j~L&sj@H8*o~Z^Wx*`E@yA8j>xnUH#^5n7F+~(i}VDNNZ3FdkLzK=FD
zW@lU9`Tt=y|J@A$RkOt3snKRQVlMVBK@>P9jN|Y13C<`R58@PU)HGj!gW!Q)@t`&o
zR%p4?E`xdc0gzL>(-2gQsCD4f;16)YhU}Lnetkc#S5XaWfWig;?Oiz4A$ZA{duxrw#v|!|;
z?2y-s!t0jih)kEwK58C6jDvoc5T>ofsW}ki1#m$PLD!PZKSIv*qgXHFFoc6j*#3H`
zeIa7}!f8ny0lT`zEP&I&iV4`LY)0Llg=BILc!CJ}(n9w_MFeQ4Yy$6Ezpiq04$94{
zqI}WQTCxx__+p4|LB>ve
zb&-Z1!?Xax#HrQlTHN{__zjC%6|%(
zctG$hcS0T-=YDopHglDCNj^
z-xD|ctoi3o%@0e6q1@9vRcN8d=%`b)AixiF`(XXSY{!gVeP&o>fflT>-xF&x*Zf0P
zSHe$rKzQ5iC;r%WQn(WDQqhC+B>#OsAG8iC@K(u`MGvabX5k-I-gqvmLubGlgTE>_
zBlkYAf`-@MlM&@K!4>loK984-(HC|(_m?n!vgi&4!*(#FfVmop~j6jz?D+#9aZIE0kxs?KW>u5T`e`Tp$saH~@5|arP;P=hW
zqixK4O8KB%xEUxYZTq<@CUZQ?
zn~DBX8g$UUWSObebjWZ<+txjc>M#l>N*71;1agPwcl%&dUE>fnb^=*1R$pVD0`c{drb0X)5GM4iiPvB^YcaOuZ|ehV}PFri`28H>sr;3SSIxZEjqcr
zjT~4+SHLRXOxPR;5P|EqCWs{(X>uH8W*8|Xm(tADB=9CywVz`hJj4A;!rdey3-4-D
zACP2>wkQ(RQQP*5O7OL5P)-+Tktj<#($c=qWCkB!oKr$bv`}42e~crJg$biZ*2jgV
z!40SQno*^CKhlO_eBtOa;+*uog7EQ1CM2oZS*{c9=`Q%fW7@I1S<1$sRB@&poZow$-@-ElcZcZ?6z1?-GZt
z7V7qR2`~0!g4fz*j?Re&5oQ`+Gw{#1{dDo-JW4j=#1~gm1YCbrf1-gGsa;WoaAC9m
zLv}vqynk5K0~AW0WlUEw+ZFRP4o5RHHDYk|3eDbG*t*G84ih(RvfMwRKLOZPim&x*
z4z6ZYe*CD}$?-YWdx13_HH3$Uzui@KVk3=wz`t)0eQX$34<47}wM4b&BDOL!V~#p7
z$VRx8)#ZK-Jt)c424Zj52mtN0jq7``J)V3GBej$h7aw~e1Ch}Q$B%QLPI!u1Gqg1P
zFz6pc54<>nxsv-69qs3ZJv8okxCpk3?OQ
z)26op_IluR)J^T(1`|x-blml^0pRDZ^3oiAP!k=GaRi#9P!k0R$n0FJQJ^>~zE%qx
z6!z)Z&oiU1lkkXw&bSmt^HvB@H%81a<=*nPbGcCiv-=h?{
zLi!8vR8}$s&E2oI{G+V;<m0=UZf2LlX*-9CzAG{xAF=2O46HC4rko^Z$6D#X3I^wdPvMc(sF3mAq2$u%}&O
zg>T9xQVy8@l8O!N>q$?u;w9PbuAOg`(3R9NucSqQf4fIsiX+}C@vSzx{fBTg^$l$Q
z5y-dV$dCyo5LhbjR@s+80pi&kB57Lc*t8)YFAuf3L5nrl)lPVsWcp(0B=5lgw_J
zhYeR)7_8~EvfK~g0Bb(-zQd9KQ|kXv$`mQ_ILKfnvj6=Nz<_Gx7Pl_UO>l_4eTb3K
zxdoqLC*MfkbJ-zPJD1|ACr4rGO~40=^}8xODzq2}DwyIIgs>~I
z#F>U3bUhHA7EtD2igpkSZ85rFV5T-+pbsvwI8Yf*s#gxC)5sW|2d>hcH4=L-dQ0p@+D@;PW7bNM_^@EZr|jQE6LdlwsMmUW
z%S9W+w7P~lv5sVH
zB%vv_Y=z(FZma)*SLV>4QJ#`>3d`t{B&1g?d|>C2@I09r*)3DN;|iNLi#pQzJphL_q_~b0c=2wHI4-Zge7Rp|1wz36T=363^-Dbc@%+
z=blq&_sswCO+g_fwqs)qqB=qRHBEgv77vZr?PcpZXoJ1X#OAG+AvQTs>|H|A20JjO_AImb&S%G>1w^;+$UZg#X{m2WuAK350x9c$1VdAaSrP^T4@ivi}+x
z>NTpd#4z+gdRE6?a;1Vf!q_EDkaxf53GmqWWx#s!N&KxFr+u0=Bb}d3tLA^nj@m8h
z%4l5x;z@o6ue;e3bA%WpL2O+~7+Hc7wr1{o`$Ib_-5g{vwd3mRi*T;tGpQbQ{
zDsU>X0w}2$5$%1#XQ(EvGHy3+;w(P;72olHhP)g2mEXflC_k{`{w3;QnMN^Nkk0r#
zLT6THWRx=is9ietM?>>#ZHiN9`{V9M^Xq^I)4Y|1X^yRQe{#V|88qo$-7LuAo4o7{
z*AZDHZATkt|CMZU!+H*J3KY$N%u}I*YXUTp#t>g)blGwMzV!=dFXb#U2D7_%t@6IM
zNsIIVHIJ~9+c$0n63mAU_dx`P#2Lc#Px(Arw$2vsez`c$(DGD6f%BKPS|?Lt
z=*bj!omk1wbm^vT;b)DAf)yZsKnIWXk3RvSRM9s|8;a2~;dh)wgQ}y9{<}l^R#cyq
z@4EgzEc~jOm`CKvW&8E(VeW^vXuKYmK$q~9%+lO1%5JiY9@Z4WH@wV}dl7#A(KF
zLouu(jKN{0Hu+d1#22;i9X1m$V;=1zyx*TCDeq08o+1O}b%p;po}*8{s=kd2y>;US
z2IiubHFlq{s-(Q2z4UB+rV4a!pxR!8@ZGH!>Tj`mtgy!cz?-k|L*fqj(z=sktMaMV
z7F8i0{6csBtt)NQo8x5vQa!g?Cx-S8xes(d7sd!wh(ylJRW&g@6%V8I{0Jw4Uq^@x
zf{0Qe1rN0`ZSy(zSFY|S8J+H}(vW&b?zK65ZGCIMzT_&g7mdt}rz}Suz0Q;*{LJeTEmRn!c
zNB|tK=mNctqGn&+M8Rlics=C5!D;2jbNgvqWyPC!{&!gYqx-h7&$NhICM7Zj%gRg!
zms=EeqzUm<+OLK>R7=q$03sEkcLvaib^y)DmwiTrAHfnRXp&+naYfd`cSGSF9$`Nu%=NlBV0
zHx*gJk05=*7s;2xH;aW|mCHh;sv{paU+S$JNMSDAZIdJAfa2jLeI5>DDeHAw
z%RG~iENq?q5ZK$17JV{h&_sJswt@iR+UQOZ<(
z4V?xYR+l}EJlWZH$fq-IQ3NesT}vp_T>(oWelcR*Nn)nwrmaKu%^1TRy~^VLtlq7I
zg;jK`{V5G^!-~GIYa`Gj{JYQnr$^org3$1@>NC~?jyiXKxrGa>FvY-sjMgn;ZhX*X
z+JNT7<%R}XG0sx)iZ#~ZSxq&j&uOdGwd1&KnWnW(8Lvm@Yh=vlGL)t>*~y}5xX!P$9dgSc4UGv?kQEqD}L`=>@Na~V37j`G!nHIXX84)Y$<
ze8irglW0tL1U?`M9&SI&{5!b7Xs>sQUb&nD*pZEe*B@t$8Cfq9_lEHOdOZ%<#M@S!
z%9`Y%^{EjINPk}rwPe+gUgsLLzDed#E=E-K%vyj>t*oG940eCMvGw|4BW{(c!u-l%
zOKR;Ei^$VvSkHvCC=d9DNS9-LL~<@M0X%}RBaRMKP4m4AXh||>Dx$Qb#8WJ*t2DZJt5m$7PT=h47e&Yc
z4=H@AuPBflK@nFT`0#hiOrtVT35U&xB2b%@;0?OB^cuB{1WOo4{p+uK1l%I52L!IA
z)KaC(pL3+)TEorhxRE)(b)Oz0CF{+8MA+CR<%!qahW63P-V5>_h_FEF?sqeF2Jp(5
z@ATpLd?8Bsu)l^?SedzrTGXoMyRE=7lb_If-qj&4{WrdM%T@kD0|P-gCEBBKO@w|Z
zzKVJJtzzp;KkvoLy53#2mN=p7>!cd{dAn!pktJmhO+x~@8_Ik1GX{R_Co
zNxMPbk>oMp-F)l9797kf>W6B#PPR^bJBfX?@?KOeaR_u%!Tm?58rg4ATdBvrm~5h<
zZN2U$Ipt3Ey**r29JEhHu7>e
zjH9rcMhf(Eyj6JK*Hx`4HHozqt=}>RQ0&oO4RABez3ytAYu9rcs5YIPEohcg8eI?%
zjCf^4a=Pis__^NA3=ejSUBJRSHc7I{+eCm$GaV$%V|e>-9ze?`L|2^C!{Oz7+HPoG&Mia`J!9^>l&bbt}KUiY9hif
zJ^LB6q<86Yeog_wJHDmJq>i@{m}N@WxOvUI@$U)KUvoR$txWf-ix(4?VC1Pf9Ur|y
z6Gx)_CNU-y+-fUq4`9{wz;qZqZ&whgg?u}jOEyZJhd;`T(5KZi*9v^@?sT?x0|km{
zzagB0e{H61S7iXkv3
zL%^{C)iz{*{qD$>Sqo*XYDQVGS^%k>R$TQ9%5;cJ1HO}%bZ(k+b3zkU(lj+nK;3(&Gxcw9nM)oUT{_X!|bNr
z@25+-pOut*H{m%Jo5o#iudWTCz8qYQv*TG04PJ+qCzfO>@SeL)g5x5_hFMQ9l{73n
zwGc1IDpceJTn$!~DRs0xOtTF=gjG-#XSimy4Z+U)H#q$hZ@@QqPZCt$#Wmf-N15re
zMhOllbKa1Nj>$Pf!6I|if6uDTHr|kbg{&zhB=fL|{TuD?<}YS#St0>lT#s3S)?IDK
zS=^(bqZjW#Fwr`czK*^VtCrTQeO6N9aU@e&Be**wdk3%S1d~rkb5YMRFuoJ;CmNf?FBd8iiqbvB|RqJBAeb2x{S^ZmK{?{8?{arE|Dak$2bRFOAyT)V1IPu{==7A@R-b1xZ<@Zw15#uEs>kyS>iPZ}~
zeotI`!obBU;sb??WW6aPxuBRZaE}v+%b>L_uq=)3zcGIWs+sdQAkasd%Yk(<69%VZ
z62VQLs8Wv=#i)BBG=0#=XN}+rY(-sAk`8iF3jFTHr}g2A`nJnmU)a~62-RnNHTS)$
zxzzqJMhnY!YNvm01r|!ARud}J`+92;GBaVaMH0y;Dyg3>rq{xVgDwiBAGS)FGMJU#
z*D`<{E6Y@#>ar={XR!qhF{Ay+6wkUWRSMYyk1f22g-j$Ey7~~mVk%SFlYNITJ_g_>
zjF#ViKGz#+szu}H;=~e7=uD7%Sv5r6vgf?D+C1apc`Nb0Jn^^ohr||dXe)>)1iKOWy@RA7K;|iCowru^hZ!;vs42q>e%U*7nDGd|
zlffMA>xg
z40X~#Qf+UQbz)L7(vm}Y5~taegil_yUy{HUk{f||kW)||Ic)T*M9wMz{W
z;o;9HZo~Z#CRo47siTDKPfQKqJv{aXx1$2Edyg!U~?O8k8=8Eh_$%HSzyY
z;Qe?XOp7uC^%I4I3j~U)=Hic=m&&5sbjgLtL@m1&s}&B>Z7b?8BiVS6^e_
zs>iLUDyHQ1&RXcv<|`BlQ@^-EJ?i;u}r@8Berr5pa+e>XQE?p@m^>;CaVEeL@C
zgiRh;uZXKYBy=9GQYG>U(+W%6aEZP_Non2CUO+#xLYHJ)CLnKMHrne?!$marc1}pg
z`8E6y-hdR3CV~OR)1K9d1jXMz<0q*dY3l|;nMO3jCaj6Pzzgv#uxJ(ziVsW@G{zyS
zc~h}}ZVox`Cp#)lr3C!}{i-G0uVPKm2Ys;5Dy{fMa`&sX+$b
z2R?Z9^VX3t+dY(_05#i2`^lXGzr6XVzt~`wCS4H`1d%3tzbL~!5gtOcpV&KyJijKn
z%2j6?+WK+0?P7s!zdXxFUv;~6Bj?LP1?VMLQS+g`*5H`t#)b#?5!g@D@K*1#=$&U{
z>CHrJEUBo)q{EOJwFfGyL!JwcE#}=cLBL5R!bR1YxA?#hMm(k6;iPgA#9M5?KS347
zeMD=zZ$F*|3ew=17btjTt`&E-+)t^hiUKg&c`H+wZjnmggTph`jed{-^+0dcg?-MS
z;wjx}rHw(%*t2`HK(hSLr91?ZwEC#O+UDPcnGA9(S!kOw?wk?NxUGd3m;11BgT~SZ
zS*SH3MK|c;c7quPCG|1u(*7ytiTk9xr5}|iYO#fLGi8kiQ7;#X4Fq_m`l9vjb01^C
zB5usf!2>c3p8c}6FfZ1o2~1%~AD`04?;P8DXB7$I&YZEJuOQRY!(H8J4xYC{d@1Z<
zoe`s@bRYrP6{^YVOfkV}D9KS44)o5ncqe05+cNk1{3Ck*-`9$xqDnln!|N{@WS3*6
z#7k}EJ(`XNj6GmUT76eSCsvIvs7rH-?^Yo1SDUsl
z|AX1;W~NIg^1Q~2yYaB0=}wV-;1%y~nv0op&sx1xpbtsIpnD&$h14~-`q=#IIIiFQX~Yj?
z#t7-t@=oopmhFUO%*e@HYRSb6YONDR2O_na;Zrm{SNYU=8S{V91OCm@y4n@J^xsW-
zIB%2`n$I!1`;E}BUVm4$!1La%^8=6{>cRuN-35fuBSMz7!ltf^^?_|MZse-BW4U7$*pBM4Y4px#
zFiWN8|K|U#J>JlH`Sf&hTTqPoNXu6x8UG%F>RXOtE%DYQUir>9jH2&5#q*W3!)y#~
z9xKCX7W{Gnf7~$(*RWe>tVr)*G4~5rx}j8+{laQ7HKM66dsm$?Rj%eKS9tReqm+L6?QJ`b}}>deKTVi{Y~^S3MUG8B5oBt%2NoK0dXwOvI1ey%@z`usDE
z69O8!qk(;$6ix4oYpIyr6IO?(4Jd`r+6Y?KVBynqj#{GqM3%C^V=$2>4VgpZRK%;K
zT$GlE36b`SE(Lc$(aqFEM{J*`DEr{sWaWp&%n1gzgwE3Egx9vGMZ%)RHLASoBQo|Pdw4j%VA`w#M|Gow>5tjxmn9k<
z=$hT3r(epTvf7@OnYzq4`zRMU(=^oI5D+Klw;2|N5(72gL-*#o?f^Gn3$#AP$YaUk
z05{g_Be+=z8)@R=azk<(`P-`&C(-vNIPYP5!srW&FY)q+VNPgl_E}e37uQ{w?RPi$
z@_3YAD;(o0J#8Z@?=1B+Hj(4tSlAz_JqEcqEW%Z*e`U
zc-fke1T4fqw5)wSda&n@a@^xm1=QY50X}h$GZcgyN&tkKtF>`;P$!44BSpm}-kddl
zRhO!x>FjvKglL?D5zXdc6~9KwV}Uwdq0VE@W`7w&yX%>G$3Xw34Dk>g99|h%o3|{6
z9i`gHqp+q?osjbsmnUg*DPjwc#?a)Rv+8>}R{4`xfDBAO`XY*2yfz1TsSvdvPMD{F
zntr%gO|G7}+ct`Sq9Tz(ACar_4CgqOF83603-eXGYce(_=7iEbXGn=$?^va*$8fk6
zyweo{_QTFw^#rirJ?)7a=O%Bx(6Q&TQu1D{6qOd9iDQ3N)k<7_5l}O@B@&kz84+j6
z_T#3&=FhKD=oMdsn|qnV`@pplxK(*zU{@xT>JRf?uK!;~ErbVa+tXQ>;y}}_y~)ob
zqp>~J)fY8$WYhQMa%02{!{Bm?T7ne+Ky!mFN+Zok=~%nmYs$G0_f$8kF$ew0bML)u
z&v~n{(ab+-QeJc!;i+r!lKB}6fpb=n9bPyYOE8MQZMGZlVGcsBeK)uyT{roiuB57D
zaSEGJo9+Jcx7_F|Ro`Ra@~({!O-4mNec0hGEBOKhqTiaTz}RoMV9E=f-uA*WRm$J?
zxJSuXOvfz(dfff63?rNDB_`t!Bey0k+J;1DB^`ft#*H5FtZi!w(M5WCY~Qvll5y}*I|QGhnw
zgB7z>?a}V)WJb(16FSUwbsI{%QII%4_tPwPoC|8Yx#-X3gzDAb%$#GzjPnL59fLE1
zlPF{b^PjFWi?=2DY0{M)soE+sxKu&aX@%B@ks(}{^vUdF?w2GlSlJXtJu4qoo!Wzi$OOb`H)T)69UimK
ze67Gu{bc);pMWBDOsf1G~DGK&`#&{k)ww6HgHb)N5O5oIcG
znzEsM?(=EJop7;{)SxZ;XI9_-1$0fx**wK&HdNkeCLpBi=ZV)~_+W?BSBme&e0;i$+;+#eKF4*}YQ(wiHG-#ER8(&)+r=c%=E)h!
zm29REVXPd-?Ug*5^f5*Tgp{7EM-J1Fa%z6$VgL|#N52yz>&|v%Sic^FnYSObxc(iA
zGFD*4kR4!7-DoCwK2AVuG-F%Vcyn(awi2d0TR%zr$ziPyzNFK=(C&fN_OF<#Q)(2q
zD>s*+o@B~OV0HBb_ZSV|vBM_mSL7}$oz(LUgK;^?sY^_>n>B^m*N&Co+)oa37bL;c
zmJ<1zWjhbFsif5M3O9-w$>?XT+IUG}C7e@yqYax4Hy6p|x1>A0%@NiiX7Je1TNb5T
z^FOE83&y|PUVODWZHZ(Q`cb5&_Tn^l?l(r8B-GoEG!O;vWu5gfv$dYwz)grquRGOf
z(!T~8x@Yjjcu0(3m^VvY1IFzYZrFjVt#az58A9q1GQkV#7f+r%Ay8FO(0lR(Lj(PO7zYdenwZ{o
zg8uW=T~Ar=N#!{09{K~OovfzplP5JXc=w>^=+C&HRZQKVJRyWV{yrUWDSrRtNdum$
zf~6Jnh<2Tv7uRn`rFN8vM
zZOniLN*F=mZ@Rud3t|fTk2jb3g)2*;Xam{r
z>8V-xqzWrIPv5pbwtd2uE+AO=U!xFW8)}};OW4yy%gTLd4SsAsWL|us|9?kIok}i(
zqHU~?5jKl;^7s}C-O3$nc>L$Im|s1!lV}5yLry6mHC~Nr94U#9ePl3q9~1J^hTRM*
zOY{2<>u2)&BG0orcj_p&cSHgYmesUJ=FDfWkC4S=TH@5yTVS#VW=((J?G
z1oCioW_=QI@0@)fBabq;yPeg3n4K!KeAt)D+WYt1^5643?b~>5G3XyegXLYrxXeu>
zZe-a
z568z6$Q=mM?xH3J{OO{bDBv^iHgVJe?{vIMN8P#%azmztU!%tbx$WZV(XR551$94x
zYP%MUs-+LO34?fF#L3*o`DrT$qhe4uG1uF-m0sl-UdK!J)(JLC{Oh4!{<-fq=t-mK~Xg8JVNZ&K*HIq0};+x
zXS2mKOXP6X{cz?MN^Dw>t+j%&KDwSD`$gNzgZ9iC2U9a}{C1fm=qwEeF0
z^4+x@l<#8oz-&i6kM}l~_mAIONx2XrVg*X7zidnr+(`7PoWG=Pf>t%cakJOC{DYAl+@#W+&3r-?FTTr{D-x(
z5QQ#?Lg!_^{&e5{l8mgHewp$dDOKZ2Gv5>AfGuNs!*ObPWS#Z0h=cO#sbA-{Umiv0
zO`kax>IC)BnFmK6!Rg!gG+h?2Th}8wTW;!R=OrhjF`j*uZreAkT6|ntOt1*0_a9dZ
zOgWV(_Xa`#>DTIC8E=p$DCENzp}?=+DwNM&VIF>W{*u>DIV0N<&b@WN&Wl{1q6qj)
z5qWQBx&Lg>%f~t?{IJFDnf@X0#+KY$EvvjgUZ}9w4%(r0RLN
zEy#5duIcO+mv_JJ9B`iI<>bB$;Wi{=xaq?7Jfh3LMjlwA5P3AqYgj9OvsK
zkX`v(Boj!Uswk!;mEtVzSJftJp^VLZOryZxXwOVtNZzmYCd2Qz*-v^P7m2E4++a$O
zK^@!j`u*AUsPZ$PCj?$(ibc(efBxZu9uQGVYS`>#^%kW_MC<|!kT5b%TiPe<$KFT`
z!?WNP%O7*xAxc2|9_8#EIvks*ADlsF$m>o>V^&|?T+QR+;#X4HSC9FeeMF+CZT4o0
z;bDr$Kb5QykwJ-TufCavu$t3eXv6$;i_AHhxO-XQzwk1?$%yR)-IF63memTqQV9-N
zaX`@ZK-Cw@m1T^enf5u%JH>U&p4DuiI_>t75Pq;9K7B|xon8SaRZINo<9N0>nysSm
zsB~IaDd=8oG=1(rSD@fDs0sLUQJb<~nw4nuBLT9(cYP8aGvT{aeNf6Ypj}DYcPGxquULP+{+UgZQ=M|DmZz5g
zzN`~b<|nQE;}>y}dBVS#8yb0%mz;&@r|~(
zzOyUe%YsOj`GK`Q4!OPIlh+Rq1NSk~ArXuZyxl~uQD2pS(4QI|I=`FmLTudw!Y7~9
zWlPIb5;5J*ay%3d`1AvHlU{c}2?mzBtkEFO@IoF2WA0U4Xb_LBzsmnz2TtP6atB8>8)E!$rcw~C^=pO2
zCfv;TnSx@j@+$GpI3W7fn|_hwTYPz{_$B0%AJJ+v%(?+DS7LRqj{CV@Yl*&hr+G2
zF(;dBaw;BAla(c9_ILTk#9#XBVF9~g;;3ZNB8R<{gStaIk0S=;UxpUH(RIPe&R(M6
zOcZ6vE$(vC1NX+eWEl^bZZjFL6Vu&4hs#a`_^FI@YKedPf7~9pnQF_)0damU
zmi_NX6w6nD1WtFcA4my6W)uWa3J2>QN|#x00OYJ`<$6CG$!rJKhqHwcsn+;uXw7yL
zM(Qb+e*p=v=l+U&AP2)?@PMSR)J&b!;kR!+c6q#-)d${OmPlW2{XCO3h;V4&;WYF>
zlrL%qfrZvhFKb+a_jPB*AH9J#8?N#-??yYMk?`FQLrGg6wtFF-_KRr?$e@GPo^^4)
zM%G@wU8-`N@$JR4W!DOhfCAkvJf`gNaQjs(8tcQbG
zEx+?^GppoUO!IG~no={=U!OeuZwMopr1s3QZ5M-ucC`#1K_N5%oU!eYy`Pb8$g=-I
zCKSbGbzicD74p0XmpQkk(7)MG-Sye~N`TWFF_bhL=`#k9e*^T0xO9xvU1+c&DuhoQ=AgV_(+(OFFW0c
zP*R&8BZFVTP;W8b7;M+q{aS+n&crpo4=Cg>^)mWWyjV~PSkF{{zs0|mJojCmYCtW<
z>wOgw3dn2%N%JJ4kKitA}i9C{`f%i7LXvrNs9C38vNSTBLGya
zelbT1m2czcdJQ&8z307d5NbKI@HR6gI?dZo@v}1Pd0~AvXxL;}4isE#<j<791
zb(4gREO6>=KXvlEL~O^962T9Aw=oemgF%s5WIP^ksq5^~UJn$Z0rUNQh%-GoSv|)w
z=UyzKTOj-6eGpNOrk)w$;0*rwkQa$sZc<)lh?TtAYrF)O!X)*&RknOw5POxXZCc?W
z8^B|g?*dtl`QB3b)$@r~w+iFr{hduAXUoWc{NMdB-+$jcTKj9Vaj=wZv6Dnrr-~Ct
zGqY)E6!sJSL>z?WwB>3#LBOsx@3%nPE5L?^H0Phf+4C1byq5&wN|Ty<~DRc5$TOP$QW
zrBU4?eSQ)Y@@)ilHo|+7IRHw8%vO8XBV0_#qUkcIsej>Lezo`5s(z;bJ~swW?%#mo
zQGrV>mB`b%+h^+;md!CQcfZLH}>Q4m$
zoWKrlKfeaIj0F6oG=DM?q0hpJXBPhH8f?@*>`%%2Sv#XtfpS}K#VuCN0_ii0SrXg)
z8e@G$N~o(GSW`&h_-V^j@kd*(8bwo#dU|<4e?m0{-Y^+^I4JPUGNh>yv6+<^73Wp(
zV28pBNVoNSGJ40m-|*|m1AoYziMg-B
z;b^+=^i{0IglwqcL*nfm%{~9v`qlgnj)%{woq#fz9P*tBBYgz9g~`5^#z6xvVi*Y|
zLVrhi(ja*Y+4OXIjMjnx66sPb=gdCwXm4ReN}A~d;Gj;f#mDfhP}bn^Fmz8oT&hF68Q9Bpp++mheZ86r$b+
zL+n-LJBI9VY{8r64WY1Jsw87@Hqh>}rB@VMGGXRRc}Q8sF|znsw7LY<*3fqe@)kt<
z#|zZ&bG_DBLI(4#ZRdK}@8;XKh3-xPg=|m7ju_J~WT)GA6?qql&W}}+n_Uw}po}ZB
z#y_ogTLB9=_J02%tWZ#XE9anc%!E;9W6~d2ifrYQZ)O6D`OWwCr3ApPP12lT51*#D
zbHLvxO&x}{Z$#y!bRd5wa-#m&KkfM~T?{B5cCu6hjD&jl
zy&`%>xM2_1k0_Vx3w0eFW)x~ub-F*Sn^;9D;~a{2B-EeLEs8Zr-(B?^**ZRaAZHWuH=!`eRL&kzRBdVY-QuLLbC
zcvD(I6eFfTd4k_?=ZZMIZ(#ie_2oVwfBH6So+Lc1$rH%R9t8SoKY4uuqzec33Oplt
zs;oKqf;=dFvvES4R%3=dpF3hf8lMXAM$j#MoQaIe=o*mr=Z$60d*_7EeUk@*SFI3I
zq1U(h2q|)*`i1_B~Mv-fKUhTq6^hh?PbW
z(`4T(!+r9IGl~9&3PYP>t^*DmxWsKAnhnF=e6$R?J9bpdtp(6jN;Ok~C;(G3xdp{nw9i>&a^pQGYD
zbsuuw=01yNXC){RJi;%u{SNB~3TcD_HJl8sgpv&=j%3i@^rLa%U1@9O{qi<>JPeee
zpGQFH``-T@e8Iomz2oW_?fOGjIxQ*w7aA&B4d13ZR;K)Uw!ofCdjlPPE%JZI5iF-c
zUoW~x3(w;5x5W!S{SW*Rgb_S`yYNOZ$orb_NXFSI=h6OF+pM^QY|xnM7f!2!q=-`X
z|Gv%v(Ns_2&$Qr_I{(0b{={ftx_6|hH9;1m8_>(nV
zRjtOsO~6Ui5?Of&h`O}ehtr)(#%c+&Upp)lf6{W`xP&r>A*xlK?DU8Al5EJf&Z0FD
z6lozo2e!YzV3(k-PRPGO&{S@BRJ7{F%zdX~pD8P1RiqLhmve(Qe-vAjW
zU60=FQvfl8CT%=pt*e)nQ%kE?ziN)rhrU)uvzJa0-<1Ok
z5#RGPxTNn)+Uo3zgw4N42&RONS3AX94r@o0I!|dj`4Ery@PCMN3QbaYqb;s#lRWm&
zJSU(){XDJnHqD%N{QMF9dBN)m%fE!$7yrBfB{qHQZCPz~;yBo2^!QbADW%;!e_G+Q
z!*#Oy8&dn~&vl30sn&Y(CiViZ}#=cZ62Bg
zMt}4fkXW6n2&yFza)MtuAL*{+*X$!brIYouz>qO22Z
z&BRU|i=(W-9Q3m{qBoLtSm4^R^U5(}7I!MlL_via!PC4Mn-{JaVn(}u+=It^7_O$k
zn0qpSc0-gY%s$I1zhP#D91aAOpL>z*>}f-Ml@0otkbp1RKEwLrJyT>%gUzT%1Pjjn
zhpX)^r@X-QjNxu!z;j$GY~c=#UlGwyHUXhU8J=&w6e-n(zsNRZ
zj}tbUHlk_FQHc4I{wOq+oH(MCz3wO6_{P^~xNwBVpFGPZfPNy3SEI?UBkxvg@wAsE
z;J4#>XeyPtB6>w;c}li2=N-!D@vvC+usD?jxlQu2Np-aHC;eb1=xpt)Ep<8Td?+Yw
z9ilCLyLpTp={Ou|IVCaU8%8Gr;FFxwevy13$a5BJSf2T78Jo&%psGMzmS{@cc`vts{FC)ys@&z!lxRg9xwnj!$=J&sbbskjWNI9H0;q
zMV&JHx-t8eF+QU<;_T#4gFgN?N^$ZK9%>T)PLOA+G(^`>=beTg4z_K0JQ(=hTliA
z8>~gS_J7{zO()~p5Cw(0W(bIwdCVE+aaOg}wkk(`v<#u{!Q~r$t_yd~+9`hev>OKy
z<$q|yaBz&PruKd{;)kM`)t~xM7Y^Ki(A(-mlpxV>!$QS&FXCISTEhOVhW!?LUwG+=
zt~E1k)>t%7mOWoXhc#dHRy3p(NSbOlkNdR^Qs!0ty$U1RbroWXLkgtE=L^UOnaG^$Ju22tNN8Rm^<3B=2L8z6JfNQWv
zWSo|GiK9BxAmGztz9-gkgZ#u|k=>DQtHO^V>=1i6tG2D5_T60J%1bjiW3yb_9w~yr
zT2n^!;bNv$^u9uraU0-(BN9SuuTQBELKUGm_R(4+>$2SLh}4W#ifNen=r4nP3@0<*
z(+>sg;yumJ>|=Hwx0?NM-dKj?hAOaA5>!TrNqjKLGT>Ghw20mF?F&xMHlkmo!_^X!
zLeJlyCPSgBha+JRM=$H1AvC!$^1D92&NfpMibZ?rnJ2sx<|+X$nZz#312V|d=t(?X
z-&_5#~R-;x48aS0Vv+&(3SkYsWixrH?v!OR+
zQeeQPUyt78O50R9{*?O-F@-JtFVOjUQDO%-O<2h}*T%cBv-B(TRs&R63HRK;qg$j?
zahPpXt{sQ=J>9<_-s6Gf`8wE%;bIZ&X}X2hscRvxmqROx5_lz-@yrHE@TtgAniUVU1SC>Dh}B%;^BuHKVF5^mc4PN;w~`SbmyZ8SvV##+SmR
z32&38cS&cmA5df1Bk6HSeV^qa=Eq1w9s`4m)1RwW6R+ijYwR+xk2m<53;1!OH7t13
z%vVVh9T^ap%UFDwQoJLl8xVWh?!wsvDXmy=g{y
z&4@xS8M}r)zJ`yd)M2Ub>?{Ibr=pb`nESkZ%%Mu?ra=2MLUH(TIF+ZY89z2542wwY
zw#{?XTOF|da7BF0fQ
z9A$E5zK_%HqcH*!;|5~x8|A7!JfuPvL143%H!nm}uL+
zn!Ay2C#>23u|pl*t|GHDoX6;p#8(03gLa;$MKN$SliXL64`h*<{)e*A!6siIF8KN|t?Xk;ZScN+YoM!
z(w9=$EpnSA|f^IbOfM}$@1;<8N
z^}QsAd2+1%8crlNCBv;KX$2;f6W=tV&Dh5cn!zGn3?#n)(Is&*Zu$jh$Q)Z~YF`hw
z&FJ*2s!EA$B5=NP@kq4$sa^Du{Fw@TYMZW*uH3QwqX|9~3Fk*T=GA)QBo=695-7h(
zRevB126ZV=Ud+XiF}GCCepFK-y%cekRJKeFSvY@`7kn`;4G_ASSXc93LTAZ4EW?4*
zd~bAo3LOBmdoo(eoUN5`1+MOQ(GSAa@4vX*v47W+=B()&9m#6#2oh^8d3xwr)s4IPY
zM+KT*YVrtuEwKWc|5VG$yKH|Px^H1QaVmjbizl1)>|Z^^NE|mEzb&QF4K5k`L!I7m
zTAN{)P>R*?6j^ET^t{r|_7%-rr>_-r9*N&gg|n+joizT?0)%Jxi$;1TA(mhKIL_U*
zg*dpj=;TO7N|K5)d-o)27Lk8vPr&of(@8gE6
z)jxjd6Cv{GEct1;*pjh|cBGE(pDTg$DNYQi@{SCCBn$4*Be4co|3+gl00~`uH*huqZklYprIQSz|TGZ+bJG=3hH(
z(297Y6)>KG3y?I}zey@nC_gwo2=@9JIrrD#;l}k*LliKIEHli$oPpZ^{AE4S&4mRZ
z4>fEsENersl35tz|4i6UYTIO65h(H2V5>{riR>J1v7Y2Z;@)w=U`&_sUe*Ra}~
z*Yub37h_Q}LrbOT1Q0`1($?yqzvLnq)PL)x>swC3&Xs@~Mjur27|YZHyUzlN{H^S0
z*B?<%OpS1;Zp2g=y4l~X8Ng5zpsZPlDdR_;Z2%kEH<-oHLI)=g!0g`xu|%Ds6K6$!
zVC3zN*N485&*S_0jzk1$__1*N(R~+AfaRaYVr>im)4mn35j1DH&U;4!-rPELqJ
zmTY?x`k+kJdFW1ZU0PPTpJ`K3XTU~iohpWtV^8b;KG2Ung$S>|0(jJuZ12L|h&LHl
z+$0bF>@<6{hR)O)UN47TaB|jFf?_YI94Z2V
zcGXo~rG)k;JO1N4hrGA%6y?_Z|55~iD4?b}2lzM%>G+wN3+uLUz$u+p-#v)K!GKSW
z%{!qO_D9`+E>Aoui#sAxhLEsNdQ}A*$Lb!fdKo3`
z#4{N<^a2F?z+Ae!wg$S^-TR(BO?x0+jf&|cd##aw=UbI!$mNG{qm(4QBOr*YcFkia
z3(*cZiwleXA&T?c(6~T#(IWvg?H7jgVok