qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219
@ 2017-12-19  4:29 David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 01/14] target-ppc: optimize cmp translation David Gibson
                   ` (14 more replies)
  0 siblings, 15 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

The following changes since commit eaefea537b476cb853e2edbdc68e969ec777e4bb:

  Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging (2017-12-18 14:17:42 +0000)

are available in the Git repository at:

  git://github.com/dgibson/qemu.git tags/ppc-for-2.12-20171219

for you to fetch changes up to eec745d4366076dee068750ea80245e1a46e9c13:

  hw/ide: Emulate SiI3112 SATA controller (2017-12-19 15:24:28 +1100)

----------------------------------------------------------------
ppc patch queue 2017-12-19

Here's a second batch of patches for qemu-2.12.  Highlights are:

  * Optional capabilities for the "pseries" machine.  This removes
    some places where we were changing guest visible properties based
    on host capabilities, which makes life very bad for migration.
  * SLOF update
  * Significant TCG speedup from Paolo
  * Several new devices for embedded platforms
  * Some minor cleanups

----------------------------------------------------------------
Alexey Kardashevskiy (1):
      pseries: Update SLOF firmware image to qemu-slof-20171214

BALATON Zoltan (4):
      sm501: Add panel hardware cursor registers also to read function
      sm501: Add some more unimplemented registers
      ppc4xx_i2c: Implement basic I2C functions
      hw/ide: Emulate SiI3112 SATA controller

Cédric Le Goater (1):
      ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency

David Gibson (6):
      spapr: Capabilities infrastructure
      spapr: Treat Hardware Transactional Memory (HTM) as an optional capability
      spapr: Validate capabilities on migration
      target/ppc: Clean up probing of VMX, VSX and DFP availability on KVM
      spapr: Handle VMX/VSX presence as an spapr capability flag
      spapr: Handle Decimal Floating Point (DFP) as an optional capability

Greg Kurz (1):
      spapr_pci: use warn_report()

pbonzini@redhat.com (1):
      target-ppc: optimize cmp translation

 MAINTAINERS                        |   6 +
 default-configs/ppcemb-softmmu.mak |   1 +
 hw/display/sm501.c                 |  30 +++
 hw/i2c/ppc4xx_i2c.c                | 198 +++++++++++++++++---
 hw/ide/Makefile.objs               |   1 +
 hw/ide/sii3112.c                   | 368 +++++++++++++++++++++++++++++++++++++
 hw/ide/trace-events                |   5 +
 hw/ppc/Makefile.objs               |   2 +-
 hw/ppc/pnv.c                       |  94 +++++-----
 hw/ppc/pnv_bmc.c                   |   2 +-
 hw/ppc/pnv_core.c                  |   8 +-
 hw/ppc/pnv_lpc.c                   |   6 +-
 hw/ppc/pnv_psi.c                   |   4 +-
 hw/ppc/pnv_xscom.c                 |  10 +-
 hw/ppc/spapr.c                     |  47 +++--
 hw/ppc/spapr_caps.c                | 341 ++++++++++++++++++++++++++++++++++
 hw/ppc/spapr_pci.c                 |   6 +-
 hw/ppc/spapr_pci_vfio.c            |   2 +-
 include/hw/i2c/ppc4xx_i2c.h        |   3 +
 include/hw/ppc/pnv.h               |  10 +-
 include/hw/ppc/pnv_xscom.h         |   4 +-
 include/hw/ppc/spapr.h             |  46 +++++
 pc-bios/README                     |   2 +-
 pc-bios/slof.bin                   | Bin 905200 -> 913880 bytes
 roms/SLOF                          |   2 +-
 target/ppc/kvm.c                   |  27 +--
 target/ppc/kvm_ppc.h               |   2 -
 target/ppc/translate.c             |  29 ++-
 28 files changed, 1095 insertions(+), 161 deletions(-)
 create mode 100644 hw/ide/sii3112.c
 create mode 100644 hw/ppc/spapr_caps.c

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 01/14] target-ppc: optimize cmp translation
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 02/14] pseries: Update SLOF firmware image to qemu-slof-20171214 David Gibson
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, pbonzini@redhat.com,
	David Gibson

From: "pbonzini@redhat.com" <pbonzini@redhat.com>

We know that only one bit (in addition to SO) is going to be set in
the condition register, so do two movconds instead of three setconds,
three shifts and two ORs.

For ppc64-linux-user, the code size reduction is around 5% and the
performance improvement slightly less than 10%.  For softmmu, the
improvement is around 5%.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/translate.c | 29 ++++++++++++-----------------
 1 file changed, 12 insertions(+), 17 deletions(-)

diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index 4075fc8589..8a6bd329d0 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -605,27 +605,22 @@ static opc_handler_t invalid_handler = {
 static inline void gen_op_cmp(TCGv arg0, TCGv arg1, int s, int crf)
 {
     TCGv t0 = tcg_temp_new();
-    TCGv_i32 t1 = tcg_temp_new_i32();
-
-    tcg_gen_trunc_tl_i32(cpu_crf[crf], cpu_so);
-
-    tcg_gen_setcond_tl((s ? TCG_COND_LT: TCG_COND_LTU), t0, arg0, arg1);
-    tcg_gen_trunc_tl_i32(t1, t0);
-    tcg_gen_shli_i32(t1, t1, CRF_LT_BIT);
-    tcg_gen_or_i32(cpu_crf[crf], cpu_crf[crf], t1);
+    TCGv t1 = tcg_temp_new();
+    TCGv_i32 t = tcg_temp_new_i32();
 
-    tcg_gen_setcond_tl((s ? TCG_COND_GT: TCG_COND_GTU), t0, arg0, arg1);
-    tcg_gen_trunc_tl_i32(t1, t0);
-    tcg_gen_shli_i32(t1, t1, CRF_GT_BIT);
-    tcg_gen_or_i32(cpu_crf[crf], cpu_crf[crf], t1);
+    tcg_gen_movi_tl(t0, CRF_EQ);
+    tcg_gen_movi_tl(t1, CRF_LT);
+    tcg_gen_movcond_tl((s ? TCG_COND_LT : TCG_COND_LTU), t0, arg0, arg1, t1, t0);
+    tcg_gen_movi_tl(t1, CRF_GT);
+    tcg_gen_movcond_tl((s ? TCG_COND_GT : TCG_COND_GTU), t0, arg0, arg1, t1, t0);
 
-    tcg_gen_setcond_tl(TCG_COND_EQ, t0, arg0, arg1);
-    tcg_gen_trunc_tl_i32(t1, t0);
-    tcg_gen_shli_i32(t1, t1, CRF_EQ_BIT);
-    tcg_gen_or_i32(cpu_crf[crf], cpu_crf[crf], t1);
+    tcg_gen_trunc_tl_i32(t, t0);
+    tcg_gen_trunc_tl_i32(cpu_crf[crf], cpu_so);
+    tcg_gen_or_i32(cpu_crf[crf], cpu_crf[crf], t);
 
     tcg_temp_free(t0);
-    tcg_temp_free_i32(t1);
+    tcg_temp_free(t1);
+    tcg_temp_free_i32(t);
 }
 
 static inline void gen_op_cmpi(TCGv arg0, target_ulong arg1, int s, int crf)
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 02/14] pseries: Update SLOF firmware image to qemu-slof-20171214
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 01/14] target-ppc: optimize cmp translation David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 03/14] sm501: Add panel hardware cursor registers also to read function David Gibson
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, Alexey Kardashevskiy,
	David Gibson

From: Alexey Kardashevskiy <aik@ozlabs.ru>

The main changes are:
- able to handle more devices with specified bootindex;
- implements flatten device tree rendering, for both QEMU and guest kernel.

The full list is:
  > boot: use a temporary bootdev-buf
  > boot: do not concatenate bootdev
  > libvirtio: Mark struct virtio_scsi_req_cmd as packed
  > fdt: Implement "fdt-fetch" method for client interface
  > rtas: Store RTAS address and entry in the device tree
  > board-qemu: Fix slof-build-id length
  > fdt: Pass the resulting device tree to QEMU
  > fdt: Fix version and add a word for FDT header size
  > tree: Rework set-chosen-cpu and store /chosen ihandle and phandle
  > node: Add some documentation
  > Revert various SLOF-to-QEMU private hypercalls
  > Use input-device and output-device
  > netboot: Create bootp-response when bootp is used
  > libnet/ipv6: assign times_asked value directly
  > usb-xhci: Reset ERSTSZ together with ERSTBA
  > virtio-net: rework the driver to support multiple open
  > board-qemu: add private hcall to inform host on "phandle" update

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 pc-bios/README   |   2 +-
 pc-bios/slof.bin | Bin 905200 -> 913880 bytes
 roms/SLOF        |   2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pc-bios/README b/pc-bios/README
index 25fc6ce63f..a843e1e8b1 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -17,7 +17,7 @@
 - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware
   implementation for certain IBM POWER hardware.  The sources are at
   https://github.com/aik/SLOF, and the image currently in qemu is
-  built from git tag qemu-slof-20170724.
+  built from git tag qemu-slof-20171214.
 
 - sgabios (the Serial Graphics Adapter option ROM) provides a means for
   legacy x86 software to communicate with an attached serial console as
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index 6bb48d40a0929bc9d1e2846a97a91f96d321d60c..d46c83efb706e4664fec834234ba69d96ede3473 100644
GIT binary patch
delta 225096
zcmbTf3s{uZ7C-#%J%A%AfuZ3IM^pqv!D|BpIGE_jSm7P-BVN)@o~Z0JCO89XfoVZr
zHY)0%fLNwjdN9+%E{17EWo74-;iVIFIpOJsH|G1T{m#J5)c^l{-{<qt`>wUuUVH7e
z*IIk+%R4pizURV~dx}Q!YZr?3BmBCA-K8zg4)r_R)m$j-XFGS>6vvE*FYXx~yktRw
ze(3OF@e777j!zh+U-W8`@d($CUA#~?RIeKrKlC2m(BX;k`o#G7&VjmdGj!7zKlb>t
zNB*u$);+jv#o#~H&bjxKHv|7@QRrXCKWas$hTYG9sTEZkHY%{Zm&Cs^R4*DeZ0i7{
z(qdDT(G5W*3!Rgcmfi9_Y@xHS((;Xbzk8vxS?u*=gMy|M=^ct<QtTs53geslGKa|V
zXMrqUJmb%t%qE@*V0}7HHRkltR5p&8Dh>s(yV?Ew-V0#=|2rd`TJ|JgGE)RU%ygop
zBkRGJ^d+FbxX_VxVW-6p9ocwxMhp*R0|CtrWcLpHTuIuatkYLa57t{0mYk*dC0z#m
z-E?g-civ9WhG$ry1pPM}rRZ;G6n*|atEdlT;mP~5ubV#%yWa6bZSokUA|c%xoX}UX
z+V*D{jipLxa)jcS7yY3wu24}@cQMQ3W`(EbE4_eUmk>Q&47!8$Vbg{A4i?24#fm%F
z5<vgHgFPNJT}$m5oZ4VRL`9>R(}_ilJYFJY$hS9}xZx7LC+HyS7{#wR=0ly?*=kSb
z;H#Y;+yog^`Dch%JF(#%rw0S{*MIlB_}LR2=K-R#OFh6p6L)AYb>7y0ceexsrw5ZD
zjh9DhMRO-MtQ`)Pu-Y;yQhXG|?r8%b^Z?P+J>Fn|c>Yc{9J+WLkIvJzjb)0})i<FD
zW(!fWJD3d%P`gX-_W<>U`nWShLU;@n)(|!XCHq3y3_P46lIh>Nupxn|?HmE$!>3Dm
zL&dQ!ETRo)?!v-R@6Nl}XgnUciw(l#c_Zs8itb{O7$j1(Tj?S=l<DtEdJATAS{(wn
z$ajXa(Vaa<WxALh$_!8j8Aw9(=VG@CVvzjw-+eBwgtB`=rfXd$NL2m_(RYhMUD@~$
z4CNjSWyRf!t0}RjtID3b<T9*}x-tVqoqsnQAmY2pPCU?!-RnjjQ&A`$C|bL*UMhZ|
z7<0G#-9<W3yx)czD1yS=#RJ9UFs4Jb$HSyb9~cjvoCsr)Kwa@b#depdDc#$tN>$X`
z9;i+|B$X$xoE|I!ymt41r%o5&^<WR+fpO?7GJCR7cz?bpn~%rOJ=ttL(76F3yBCYW
z`;J~L4v(|FWSyS9r3E!XIc|N;?k!7R>doS{N8Dp{1$3x&cQ_ltGQ`Ai7D2YE4yJfA
zoEZn`8()N>Kjdu5?O<%l)kbCHeAgq?w$BJpAATVr-PwG7oT7+~aMnHGvJ4&KX1E-M
zd-_O$9#kKq59^19U`5@;$9>qC5Jy~<;%D5&8`P*Ve5vTKV~K2f&3qkO!E{H+zha{m
zb~HfY3DHicG2i(soV{iA9%Y^3<aF^%Ult#dR8XKO1^X1mwoYeEEsggRBO+L2mw3O8
z2)rBiDa^J$%9y${?woiyf(=9ayCbAfA4RbEj&szOhx!R^KdIc&{a8jw|3Ui|ZrnL!
zV%&a`Puod2`oZVa2r24g5LX{86B)x<sIZS<0pNLOf7XXTxLCyZXWamf@6QZf9~?>Y
z+s<ez@3;Hu+%k*)P_spx>(6?04;~;Xs*8*{k8igccR8<OO#BkGzY8b$flr?SY&c)M
zSOmvPwtpMIdh*3-UM;J*WKlanl6*0M8G0|;>2A3t*V#<1lM%SbJ1&w9?7C>Cn}muH
zN!KN$PZ!_B!I+97SwQziuer;?qQ#TuP$V;SU-+&^v24NJKg~dCmh%Uq1095IARCzc
zyJGWy+p4!K$`4J7HX&NkUPtiw0W+qF2TpJ^l41hy5|hF<B7zLt(H-0Z9vaLB3u6@P
z)^+|9o)z7#KcB+7i{=L~FeOo#Ps>F$XraiD2EpdOj$&gl+32EWWPBi+J<vOAsGAGA
z+2E_GpVL@GH^p+)P2;Hsa2(BNed!*W(J?T91<`H;cru0=xaGRL^emNHcFI!B6Eqr_
zY_%ezKa0KFq*xyHYJtnCOgu1%8G2aydKS?;Y%;*OE3%hx3}R7ozH=!jc=g_wFgKHR
z&U?AtMku5M87h)uSzzx48{Pa`auscx&RygGd;;sCQ5HVowx&Zv*`V$V7qnOLHU*eV
zxVRq6x<}4y@}QCSK(PBy6}f*7iA<By{K1%Z9_cC^6Xf7vQ19hS+LZOc2w3@}6(S>^
z^#HLt2#@=_8<2w#p=J@QhOqJ7AG_`@!WcGs7XMooZ~H$L!veaBj5s!gTbB!aoQ%Y3
zYb&q0>v#@1x_eLWr`iN*^DQ!3mjb2iwx7IZ&ui1U54Uh}DxRfv&uI%3V0nRP+~(Y8
zDC{N=7C%%5Csnw0ll~9Fh4;)=l<R>=j(R(r8&5i0>Ai8Mv)QDq`_`>&8naRVN4kPP
z`L&$qJ$twQ1Ml8#yw6J<t{N{QS9kHwFc!`?PI7yJRL=9g+f5UrD{;l^2p7rE&K0G@
zSznEEF@atpc;9KFcDS?=>bgeRQ|Jxv?d`>TU*Vs5@4NPA+^-$IaB(9sxi9cSNwI#5
z{xfdh;XmW5mbv|<%^|v%cXVsTZ6@vnMOvMH6dT9)9u@XcvUku{S8)LET@Amv>v`G=
zg3VyzxQBJ=niTC--mdN5B6|?))Te40=Ep`_co@F)qI3;mJ10YhS9v?9aPjRutZP?8
z+a%&C$(?#Oh#L|_lAeu<Fih}d;WAn^1>fUz>MNF)h|PKoqv0oUOwWb{xe~#*P<9$+
zzXHdT%BU<#OiaMy2#IO}#^O;g9ZS@8FBIZbPd>nVWC_<jvdJwG!kgmhN|=zk3R5Br
z;{8sFhD4bdO56s*_22J>t0&xmEpD7Mk@e$|d2aAt0~^SrI*Nx4tS9?%Ym&^pUNx{d
z9`mS*w7ZallGp<ggU^smi1`JLmlS(bGD7%^ielUqT1~k@!UW6%*(r$6OGjh;htG9)
zz*BfkYdyqINo)X*yDmbLWrL%W*+PELeo>yx61xr`{8!Z^Nus~VOi>fZ6l4>FuZwq5
zB!iz*n3>=6s7M;k#&nJLYBwcIS(o_ubg^kPNQS>G8b-sBf1bP5C}Sj~8BSfDW0d(6
z^0}cMe64$s{`Z#sh(0Hs|82n%5K*Y1WtpPntnF~55kbzxCbyZNJLtJ%===<r*y6rI
zHw;SIkjlF7rZ%@nw%t>Fl8O`xp(CC36ES007`=~2xS2CXX3n-TGWV3EpO2BbIz)^R
z-S1`H-J}!mm2*qn1h80tZ##<<DqhlG_n?m*E9oVE*;v*Ud~9Q7GYCxmx+b*EF`mBS
zjs`)ZPa3;}C-(M?!8C8G1>FtH-Gk?j74G<tA?hafr?HSOMoB})6Wb3f>iob4aSkC7
za!3KjPII%60=S%6YAAhNd-rn2$!<VH{lxJ$d{6P;aZ*ipj#pQE<K@x=F|hj}v$J-i
zo3-1eOiKIIPG#<a`)E8e!vSq!$K4qZ(+C%-CN`k^fZTSL>WuAL?+KfUt#Xf1=mhr|
z(Gu6K%<f#**+Y*5`oNr8Op4CK@x7B2M7(g(J)QOK8j<R5)<;RSV3ZbAo-UhwGu>@L
z-9@NbmBQSPTC1XVd!T+*QFl&kr&=^o)wKueyo&nS12y(ONj3jIS#igGaslsp+;P8L
zn2o-l-P>(&N0Pm1t~&lL50MSLfjyr4r477(zq*ch=Xo8mhLja3!nhN?wqYWLOn88e
z>>A`1HQeRW|5C7`ctFlg@OGI}596bkiT)Y1J`<9}P+YSigXOcp-xag-ldlqt3KPc3
zSU@CCW<v&KG^Hup+~~=nX6M;Oa*YVH!Fx6JBR4t%_;c~1Xfl=wT2Vcj^@x1!$6Wt=
ztxbWFtS-01<WSpwT4FkD<FLBRjZO?r-St|XXr2rsEfDcjSiixGh}nkk6;|4$urZ3W
z#q4}7qrK+2%^o%N!afBHKQuOlb>qjHMcowEr+a;FV4|y?4_n%)j~&}OmBob=#J#F0
z-$y$eZx%WmQ+FM+3gc8%%G~g%!c43|E(~(Ads;U<CgBQUoyulmf9=z$h?_mO2;DRm
z5!6Fw_XRem)1>rREHb9Cag+1HppCI4z5CDXJhC8XcXNi`fz39H;%{hG7;yL5)?Bfg
z*q2*~&bID~HD^&zT07i<vY}W~1=_CMMEQl0qH!8x^q13wb~+0m_UgBW%XvE6JHJ@n
z{LIc*KUQhK>@InId((s0t4BrVbau~zTq2=juslUist#6Bu4etgW+vezYlsPWf=h&A
zqPKao9W0x-%PwKWU+pcLr!zCF7fCZ%WXx$L=U>CEH}jkgH%~d64GoIMq9{sPM81)p
zO=I%WQ9OBmyx1^<-9IK@YkT__^!AIDgtxu>i$@P$>FV9oEB-k-Jy)jYvlT?!$EJko
z^YbjCS0)UuNF-&lezuqO3zTfbTY0r6_PI>>i9>rw4{wwmU3-P}jgB79Ra^i3UE=87
z`r!rMtskBgx0mL4<(LmX!42oEj*tThtsEX;d#A$@6a?tkI&b8xi3qjb`za0j;H@*+
zz5ewk_VZC;n#snD%G2Xr&ID$sQ;w6N0m)QW-csP@6ac)1#B<?GfQKi~#Qc9+yf=%*
zPH3`Sz1e0IL}_*&`mAx6q9wr$m-9_(XAhlHNA)u`jI@txPtaH7EbMSZ80WJvVV}nQ
zM8PbU;^yD|FZla|f3P?IgV$94=MzW<532$HgP-~E&zy}tg$!|IHjC-@sXBL5{NNsY
zs?c5hI-4!CmBCSANI5(ES#Mr)w$M=Kyg5kfNvfUP>aF~xElde+>Fa#d?0i{eR{leq
zMu1x;C6b2r$;<NH%g|n)AaNdAM4gd@o7nC=pFBYbs8cd-x2cyq6JG85C+a$`UA6G(
z13yu@zOPawg1<smoN<X`_1<3-keFXUwOpd-nb^nQN>1Lj^JHxYIN04TcVM}2%wao5
zmbf+GW?^=|bW*aA0pw#Q-@Vwqv{PiyWz)G;5y5jY)(vwpAy~y9bJ+^<w=8zos24Z3
zGx+G^KQnl7IpJi(cDFn)&LpNdkeJ8%rB=5K^P<13?-jB3ORrS5^^sJuhoL}Q`#%=O
zS9q*gI-lJo{<aVj?N<j>cIiVIz<g@V{j)^-CwNFy-!4(rZ-17k>XO8%{0GQ)FO^lD
zQYErl*o%B$lW17Ly4}A|ss_f;;2n_nz1Gg`-0eRz+qaEy-s;=8jv9y;#}=?i(VB%V
zwr>}(ki>mmi4;vVdpA+3vX%0lOC=g_eN=ue;<H$y*uI#Bj;iz+&a;0poRxnuoR#k3
z%wk>A*GMO)0Mf3-%FeP?DZ$xEf0m%)C&GDmvf@kEh)AZoKU;2vhotZSg`^dKA!&tM
z(uJ5O*Tjpk#aIQsFYaB;(#7&ctoxWX#&)U8)fvXi8p{{A_vFm}Klh|OO&yx0i&*%W
zH5u*9_BKgkFJ^l`^I+Ef&&;qlAji32F}rJm<<A<}D-Bt7jk>bGsGm$YZ?*1?R@JIq
z!eaQIFQsuN?vY+%xV*;dZ8>|?9?EfhPmYm?<sjx_D<*pl(`)s6))bhXzm|yV)4Y3!
zJ!?t;SVeFk3*8i-?k`R*VSn#hg<NSc$s=XTT5|z#Z()3pjqccJ$lBg$$lu&73LeBx
z!8eD+fd|>-m~UkFFqy4Y^Pg|-qpE=AY_88*8)ahOBoIy%9j7?Cls(Vx6AeqTqwwC&
zn&4&Zzr4%Z_}sBm+#$2r#QuFBorMlz)|$}|vo8Yq@vfWfQ+sRJYfo%)OfBj}+`t(V
z??;8NCQXawTc2Y8;r~qAl#$t8!;bFX^l;{8H_<T@JNw$EPBVWLML8@YU|pCYe{IXF
zx><KK|5p8X#r3Zy%}!t%R(D@bu#LUJ`00%`^>&udr>`@$+r_#HYSLTn>xv~#s{KXP
zM!W*dx<{$pdtBGet-(+vYWRz+=D^eJbI$U`nnIkl<cocUNO$sU-YdlVjv+@}k8|H-
z5&SHc8UFN$64}pUpL|PA0X@2IB<4A}GH<GdACE9QKVK$}Y+!Mdq_VSDD^8r^mQo^Q
z`=-MY6!)bnQx^uL#H~>};s~Q&Z&NhDca->?fE2)fX6I+uCA><)TC?+flNhlP$8t!S
zH?oW2pT0}QMY+n-#ylmP&UgscXRWiC*s-RX70<CpI<T4I>J~PNZ!Z?Twz3EP?Iu?J
znJCzbqwdTz?5?!D#zjgPrCq7Jl-Rufindpw(q(0IpZ*Ea!J3uPepmHtgEiK*ephqW
zrX%aBlZFpX#?xe}deXL+$wQ)Qs<yJznl9?8GbMWZ{B_8}4s;gw?MUd|r_t*iCic?T
zHPzeMo0^V|5Vpm{sum0DE}YMethum@9b_p#9hDtH3pr2pv{EZ(=YOTYQmZ*nx^Ze&
zCvjFct~pw~<6r}mDzP%FERHIPl84@0skAOU7Ev5i65F!0B!0$BZIT@q5pXnGnVaxQ
zsJ;OwUePaY)z>2Bswfcy%dlCpK+Gw_n!dXzFN2f){F|sNV~<7te2HYkl4&MA^$YJR
zu-X(I7ACz2&Qbghpe$Kf_OMYgPb0%DPnC4|4`}))W#N2gp-V?tnCSDLHk#Pp4@B)A
zHgDR~TF`fQ)5CE~>7D+lGY>AaD+%c(Q8_thKH0lV;W+cD%+*bcP1Z4GM*7$x=xpqa
z38z!2qq)&j=uD_GL0cjo-^+56WhjuE`Uf=C?<_R>gS1YGBP~nZkN(tJo0e7FDG^)F
zo+L$-LlHkh5#{VL{^KQ)RKY$Ct&~d<R~AVbWL`{(=vN6(DiPx=*&^uiKqV~CWKw#i
ziLiZaRY!+9?7LG%=|1*&=gLOpmOr2-hDYC)HTemB73-s|rf%e+8}qB!=D}Z*csVxm
zHDw~b%fvbBX@r)Y9}sNMV^MO&q3Grc-F`&2aO|D$XFa=K0LgN1l0LVEeLseHv8db6
z`gCnJvC?Zk6nVrXN@na@tbA}PFyOX`f01>Id<KJ6Dg%!_Pia=$?9<n$dPsZqPNY?p
zML($WMfO128KOoApdML=zzMN#e~0p3!t1l1(VN%~>Ekek5w<sfz@Rx}sZ8zlGdh%4
z2>nYeKjm_stYcSr&SMzNh5rWa71>=h%caXm+*S9W^PH#LbXR{9EiWOg3>QfUu-Km@
z9zK9Q6l}a5U{7|G27%Q=uF$=V9N^$wVSJhG;a9#CS6_xTTsbPV2iY)wB~K(BWM>m3
zxoa6$hd9CXd5S~z;BV!O?kYQgGLEurSJ?-`c!=!@d?rIRjjh+jkB3;<-B_5&Mak-(
z)*F|c$8ItwMc4*W+lhzSupAkRWrSp_+Js+l+#B+mi<0P6f{RBhol<vcR-mbDnlM&h
zdEIJaww0tQdN(`&(^+cG0d4PA>?-ccb;7A)YG?t#P*&|K``V){ItQv{YQeXQso;k`
zN)W=0rns+?9d}H|)FdoR>P5x}e1r|u8W**U^Le9{V7lppvwS^j1(J`GjSvkyA<69g
zR$3#r0xR>POOg_z{l8z?PalN^k7_tD7)(3X7MoI(x{Hq(4LXAn32m*y3=qeVP?Ch0
zBQM+lv?)KlsTA42#J;jkDM9oLw$&j>WB<Ug%jq;+RQQZizm$YX|L=1a{wp*$`s2@6
zMk_ko$@EYg){SQ8H?oUOqfz%Y_!;W!S1G{>3Ut?ip{zx{Wj#W3D!#`wp=KG>!Gu`~
zTV=Yle8~Dvik*5329DHS;@~Un?mn|R95Jj?bTcmcrMy~*O9NY-85BUNUekQVAsSy{
zy=?$;qm>cUqQ6|d4A&a)UOz3`FB>P~b|N|)qj0w-0auj)#@#78T&zU2H0J7N!~$QR
zfG7!CB>@^D4I933Iw4E_;R&dZ@mdhA_~rKRaD>JVuA@e6J4QzxvWsO<p}asvR%P?U
z(L5}}5au?3?}k!&T!|833+r&CbhW}Tt$)=%_(?8Pv94Wn)v{L6VQ@c|HOT9CDI;J2
zos!;y0l+1s0Ys7kT#@!^cHTZfw1@}=CicR9dMA;I4r1He#l9>vKyoP<QiIv~;s-=)
zXi!9lJ9&_p`2io4L9LKN4o8+4(JJ=KT8luvM(yXNpQwfh2gwl}D32_nGDu-DvEtw8
z-R!)zLIfXW{iA3L!JVWbHtR4XomAsiVo4U&&G%oUl~XU9;Tu?wU9nTtG&?V)5ii&K
zHhPC#N>aX3X<u8C)Clt?o$J^7e{Wq&=D&Z7n})oW>R~LD>!Xz-v$H{Zx7%w~o(<A+
zA^#$<rhj5a2i{Gb9L%-i+smxGjsF-|PTtC|=FL}v8=Xp3&W?Uo!*2NJdTgzYSGaK(
z%OpQ6i!L$R)|-qgV-y|e7v=R)3UKaFx#na^lC?t7<;L8*H8(o-^W5l+3}jKJ+=1z#
zYtATs_GP%kk%A=SWLSpn%)MJ}JEM%NPQtw|rhaa-T{LB^x(J3l`NJ5Ql2vCSujZ^b
z#gN}oBsZ~@CoK@0%$zcorap?p?o<lO(n^e^<FY8+^hsCPVZbo`Bhw<s4w)8nIwd!K
zxK)4A>6|vfFJ<aQz!MBxr@lLOi0$GaEBRb*dcx<q>86a#mFbFZW%`}vxu(gXufDJN
zNhgFR;A4y$gTJMaCXgeB5@TwBm=oi}Xq=WC7*3eOzuqN5ZF{jZ*B1_49mD(E+<Kd4
zLd|igsYT5|zm#@8GR6LlQecHXT$6oLZp?7#aj2Ib^|)6AiL|-K*w|d%#8~QbZj>p*
z_Wtm#w!%iE3|AM2er~&%A=PQzsa$|G1IS{lP3$@83o^F!fsWsgyh^&uDaeRP-PM{S
zeyw2xX3z%NRf9|ER_T2IZ<KD_)jE}wYk;yn6-#=Bdp#_Y>bT4yv=gCD*>-NS*-CB0
zD!q2J^%kcSRTkx(90bpBLYeX(v-_)wV2+ko${7(kkf<KQd(kX7DK(${s+utSF>W0q
z@rgm!oNX{+n-ZM5la){>RBvQCqsL&Hm{l@{EXiI`l0*ZiZk_%^#yE=X6c~x$UR>#-
zL7%bzbjpk>3|;iS)@jLpDR7fxGv3gWZ`$f?X`j+vxk~%#k|f(1Ii)b$#VK2D7bjsX
zRMVdEFTa#k7bCAG^iWvN!vBR%)B2@g$_X|*zmTR4Ms?J%YdTR@Jq_O&aMnt+ppiiV
zCVve6MpHw5Zn9x(Tmc<$*kHrajc_({NJt7Jn=zh@%wV0?!!KoJG|W0CJ@nNHF0+Ov
z3@2gMU^3$*%o;ZES3P|7MPyBwi=Z8*W>a50VZl&HQ}3%(%apaRv+f5ma~bO+>JPC_
zI+tcAV*Cn-mi}OS4JP*Nm-N1=d2zf}9bo4QVZ6%wixIE0o*^5l5KFknY<p><{daF+
z0h%$9^E&I(mr<!}g_cS0^rz1+0Bc%1t-mHt5OsyP@H!hZ?q4!4kH&CNOf+09$t0$f
z{g|B>UZbjNX5-A!TR0qckBq%Ee1y+ghIC>{$x<=#1Qxp;#o80h>|fbrDzVDBSX?{7
zdS{hbY0i}~B3WITG^Llwxm}%mT`?kxVg$?uF+yfG4kS{$6g`P^IHm;KA788^aVT*!
z=C_)pqGkU-$rafr*}dJ*P%*MSnxXp3_pE|26DznR&YfiUbe4f$omMV<AcEguSt%b$
zJ0VUvE8WR$y=+C|XpJb7;EyLsc0|{f1b@<5RKJ0J+fUXB?VD^##3#8#V|MP43iVj$
zg;CFe|5_Bi$>s$Wm`v<xsaQn3YEjgT%j((Fc_*Q-Ws##E*-2dT=0Q&p2;9*nc2c$e
zbV;V1Svo4@UX9Z_ATkDy9YQYYs3<8An`_xWhCL!v3c^u+9QIZ=epg~G8&Fap>vo{)
zoe27XT^XW9B%NY${*{jJz#{t;n?CIC(q{iZv1mEPreMg^G2|I<VfpkCZh5`M=0_9i
z|2oJ?SrC39TGqbJbUG5LWm!qBd={3}$>;u(digw4a$%EYL1+e5X<S%RuXpI=n$wj)
zVAttkIcl!*3+{5@my<q;NkVi<1KAbCs)y#YuTQ|dZtsX4_xOjIUz9se(uC5aRpp>6
zqc1C!lvy;cEvYv+OKSi54jaeVLt^~9xZk-<Mto|4(lC8i!BP{;6KmeZQF4KMOAH4f
zx3>`&)NT-8y~`d-R`0ClSbmPBd;?jwf(XNJ;%Q<Jb|-e^e>sa`elTzoTlSg6f!4&9
zh&88Ke<(b<<bpVGnhn$z<T&n+rGkH-W@6NmjzmlA!^YK0u!$|cPH<ida0_pQ>K7_^
z+18kFQ<vGz&YK^!$yN0pdm78yxH<%o#e=DeZPC9yM0l`?aA1i=>|*gq9RkQA@hnj<
zl4+?AwHl$M0E@)gI(EQc>R;rXVLx=QG=!BjP+CnaX_acgi(yPbQH}k5##xW72~?m)
zFlSC<OPep$i_)`fG8+E*EbAq0u3iM6W2+M_Ke=llHNHT}pnIfm-a-@Dl|Tf#)9n0X
z0Nv}r1?OzC2&uxlbIj=y?%W6LS(jqxe8`@6VVgf>JN#+*FNmU#aG}W}4t>OOT!r!V
z>~U9>s(LoxzY+noQFQtko8I%pJs&eYR>j#LvqvO(qqzDp`$$^?J83kr6*aGa!ZMjG
zX%=DU*?d1l=f}jV^DN4RtUAxO`xn9}9u?z1V^7N0Z1MJItVmm>GRdx){W&Y)+G8rX
zyyoTw_KY82y-eMMuKF4~w7Jtn$wjuBuU;&|zQI0B&H}OF8@83_ekuAlu!xile^MT1
zd<*i2Y<j0Z$|W&r)a$bfVMR;S0Ehy_*0D7E+i+rQcIK`WYa2*wj<qE%BJ>io`Bzq-
z!E4DS_OlDS;WB%RO%xAYVbAlN+oItL>((vjTWSLn_(V+PI_uiVt7hlQYogOtc9EHD
zez?jC*i6-spQNoDuB<M9Nha+eE2gTeD*)SJ)YzS(g@}nwSVnj{yeGVx22YqqIGWf<
zTs4-joFvZuhh64Rd?2d7!v=-*K2cB4!lk15JKVdNCk8dL*&Pd`&~t|g;PZ{_b^chH
znApTd-T&lF;s~Lu_4Z&WV})$BaX0K$t_YO=D67&t_)@d;N$E#`5vvGZkxX@6OQl+~
z^ND0p-^BLyZdipiE#+v%d5Si1b4_OAp28MnX?@Mk>?X1Kdp3(_Zxqenv(;?2c;p8*
zReQ`}q*yUaoc)2_#E$KIKeBynOwA)du`d{Zc%(4>j2-CCBKv3dhW~mD-*hp&nLXgY
zKAv8mX~rDA9vYh_zG!AqoeFYlr^f2@3yp-i;~KsjDKzS{)>{aC;2L|W+u!m?Zn;FV
zEAh00V0Qk!vk3klydhb{{g2(vmw#4c`X6@iScrJ|7u+#@5OV**V&)cRf>SN-p~*>+
z*hp4c>n|9-!c7e}`D=m`dnp|fBi1+4yZdj$F07RMJqs}>%gNGK-E71P`9~_(XKii<
zUiAExJ<cD#PZa%%?X`zT$|CGE+i=pXE>0irOE?Omu!(rHbJ<XF?pL;*KXg<q{f)iH
znnnEYtVdABqq3?+!JsT1DKdX&5iCKh`W^QXmwYW803)A;>K>4tXv}qw=Ys=eHM>$v
zEuiWE(fB)#AC_X*{SO@eEZQh6f3WAeE}Bbpa4z|&g+A+9%o6ttO$(dd^`4g{3x{0Y
zD*7DUB4+p0Jl=w10-gmwy$)d)yepz^;3De+q&YWOPygz~%g@${q8r#m!&UeLH!*{K
zb%TA#%;Ke+*mX@8{cd5bpGBZf7f;?|WBu%K4)NwKTqmr#Ab!0C*B_QgXEdS0aT{Yb
zEKU8At?@RShfkWux3XvGYI}VvoMORX(cH@3;2Xn4wUhN2Fz%X^*P_6j=N+Z@oYmx@
ze$_CKrQ~=fq%%J|*?2xXZHt~y=CiJC*}%u}IWKRi=iOrF%R!=K3wfH+?3^Q~ZFMhB
z^P|hefS(WZV!Rt0A_g-4B%h5@0N8!rV%fYyF-qTG<(?pih>sX|^5?Xop7U1%GNn_B
zX3j%JsfN?mWW9zTWMhQQkKgUT5o0+<?C|6F+BRmISn8L=6tlF<!Sz`i9l*UyINMmn
zIZPgU2f6y}j|oR^Pw~&}%)CS}>SaiL*2W8{CnrAIZMA9Sjt}}Wdz&n`D@HZ>%-pZm
zbCz2I!2k_rqoR1wpBtkpu@`=evNS9+820pTVNGfza{ANfZ)nhGJ*PJ@qxi_5@8~j1
z+ARW1rW%Z9<cXXB-orL4jmUx5K~0cg#xx1<#=%W{kTOEsD4W&YMH}X#jds!MJ!msj
z4a}6&Ecoix_NLz^T30}WMa+<Jg6P_T@9#3@Bo(^zV6$@yOsWH4&8G|&8CrgP+*B#N
zdJLvn>Kb~B**X2XtmjZHa*Qc2mq}2hs(uGn1$ITN#`5VO)MRwzfs9Y;E9M092%dor
z`amATGd>mv0(norA`>%+vw{4cY18B=um1LREA7Rte*0C7;52oV5iVBsgRamdaEE2{
zcEzGP_2g3oyN_$=-OxaT_8ct7AZFab*J_&q9W&v4|H>Ua3K6hVC;pWGb5_DU+lha{
zBK9rp%o&bD76tK0KJl8^5X2wqxRIEk+C9P<#Mh3f$D4Ex#EBe_W}1QTO)&8CBA(j(
z^I=r8=1y+l$MoXYJNc*a^>8VF<UW4bkt{H`{vijQ2FJvDNfY!qTD}A2;*VfHXw383
z=r^sJs47-YP6stcf0WW1E<a!7QO;3r_bIOyi$eIUfFhlVjkr!}2SP<KmNShZ=<I~A
zMQ|4$=Z}16#7d9CP92%{4t@Uf*u5`8pc)}ob>TY7vbHJ0(S=V*t!(<+Hf`KXa+7UN
zVLwHAG)9TQK4BOob_wa*b%imCGA+8pjcs@mj+RLUr?&;`uP7`b9c)J2#kb=i=A*l~
z!@n|d@^+nA5z2?~O*&B?%8#dP&ZK@MWNm6rL2bFpcww7zec3iGMS_$Fr805ocHR0(
zit^B8g>A<ZeK)!BHKkqocrEyXrlzqs$JfSKLG|Mgu}<RO{rE5J4)IZcJ|##$lUf;_
zkL<s6dz6SDz$*s?x`)|FWuAZf{2~(+Vlm;c_2vMc5rU+7dlbyw-nfj~zo$&hiR9+a
zl?4m81(V2y(c8kskw`v&WMyG`JBrpY7*QobyG^kbX3%~`SV9aozp!0LWd#o@x@}S0
zf@@3z`BMzHTi%Z1nK*sx70s6f4qHYdnVmynr_nrx4?Qf-Me||dL#6Wr{{)pwzs^;3
zF4_g6R}6oQ^%Bp=@O_bC{)ATd4Q@9>Z?dQ8S%Hc5l<eiw*I38(o4%UVQS2PVhw?bY
zhe3Q4k9$IBWBCJq7fh^2&Fol?$j&awU0`7v!h^aDTSv^1I_eRKqRh^?En?{q{wiZN
zz2bNP>k<DNm8ZU-gh^+oTtGT|e3?j!=d*a+I#CkO_wd+Mku;RYbZf03dhn8W^VGmL
zq)g-t<x3)mTz8epuy1z8b|e@MfdHrmK9kbwFHf^Y{4hR?-4@Rd<GXpxBoR9t#uj_3
zX3lV)!r0B49V2*-Mq8)PD$X#`m2^Fi;{y;1^*o#p#DTb;ztXM0v=-_b`5caE(7niS
zg+76A@`DF;5+5b-p8mz~v`#fYCvY3%y01mHfj{55<%ic5UEE1>7gj1dCGqL^_g_h}
zHrkw+mTCIxTPWe(PCIY~YC!KVV+3Hki)Jy=7@Rl~eWQiat+hYgMr!h=5+#fQJe2F-
z6bF-dd_=!*C9m8OwQ4=xZv^XeM`RdoDPg#qQn59e-_1^luw>qkEfYz}e8`Y~vUiQS
zBaC{x76R#1ORy-z%+B!ph=H1@jU-{`ijrhpz{15xZ71u~A!DtloAb#5#rb4DqhlpL
zYt-e9-5xJSq+m#Y{7Dq0@Oj;?B}*|J7)ra!&7?Fp3BS>NE8iYpQ#u+$GNyYm5sl7*
zOJYCAuxfj}wB^<6nLJ#jdeaWF|L#&e+nQ!9mX(Ly49(7_M@6SGd~#qh;;LT)@e<9y
zLDZ5l{2N^Nu-*&X!cljxvHU%3h+Q4a|HfVx8EO1M_O3XV#)o$-R`-L}H;G@<_~=Zj
z71dXi4UJnAZQ~PAxy(3vEGPDW(H|PZyK@OvQ`;YgHtql|PSjkqsgib88?AVD9Pj1t
zFe%P!;=niz!_J!ear`0PrHfR6?2yc3E)NwA<9TR}WdeVbrPaGn=Usa%lT6A@sR?ZH
zVwxDKtc>o^A4ew;=PsFDyAnVgnvR5*&{TP~P&7O71&Phfn;8srB7XxGA9o*L7=Gs&
zl9GDcvU-FO##*g+XkFDVCyVO)kn?pB@7;%R^nuXb&-dY?d)@tfJliOOAK)<&A$hWw
zsH@sgkn9WL^jR+$P0AmsV$K6RJ>Z34lkz+I{Q&QWxkvf^453E|Z3gesyR+1kONLq;
z%GAmkPHOnhntL+%K+eDWNmwRxgLwUCETf7hqvg&`u9j=nu?W0QuzCsN;>*}eX`o%a
z&@kFZN|Kj0j+MB#r_4_K$*oiPXn!2bZr6*kQ}{SO;#;v{3Lh>}N#dO;+|apll~d8t
zArIyXz34QR3s-5?R6fx4dVVT5bd<r}a1ume)A;v%*mB`FonsLW?nz?vbdG%pyc$Kz
zbc){zLO%m)sLV?T$})o|M#g_eveN`YHQ-kAjsW2#ehlzLTMOEtcp2{9v_hN7XLqi=
zk>_;WD05ax8L~4Glq%Oa(RPu1m10z9@+JKI01-Bm&*;vGFWT8myWwW%jbxg!(MFOe
zn90|;qz#@0X@~R`8MFBPeDKG@G0RhGT#TK?BgPDtE`cff0yxq?X77wei0hDpwzEhO
zgR|{$5!-Lqw^%?3+qCKTY_1h!XY=tRD~pzG*Hf>G3bz~ObN}`vdbXU|Zo1#D=uo5W
zUt8~MXY;rLQfc&|ylt<^eVOsml02mjabl{gV@44=hvUm8kvT_pf(FJuhxb8OwHUVY
zIec7)L2@E<h~g=HNE_2uPo~u>(+rxkQO_vG&gChAF>)ft3|iE_eW`5|v3jm-B^|At
zpUcx}D$>pKkouNq14X`4ub79mTJ&q4VmHidW9T;@45KkZ^F0{0crtA9WmrBR45JDq
z!`@PJq#-15dRt)_en>!xCCLk;w`Yhb3m@-axh)2-86B}WEwG^Kw|&Jq3s2;g_~c>%
z$Jv53uFM5|en;G0a5|BI>1%2iV2<VQZ``_&f5Q9k6z3Nr2A|y`tc&=JXjy|!o2|RB
z%Yti1qxUH86EW+JQ_gC-Cn62GWf8gAv#TIL|HXVek2ox97b9YxDHE|v_-F+8hnMgN
zRPSpn+@4bN&Jz9yHt?iKwM%JUvaV2ciASM(-7<cVhnLmVFXLxfUrDlhXhz29EKEDA
z(D`Dy2Wui_6sB*_s5$XBM85EzJ1sCe+wKCz=In3;^KX@VFH@?e`C*RzHR(4imdlVp
zZt7SL{opg0ua@(ET`Q@lw3kHr-{^*AStO_k{X2g?q~7ejCg*K^?VZi=gcfn+@1$}2
z!tF`_d;}9jNM+9PLGn&NsR==7sTh%sMb(>6h|FxhkbNvpWb^6##7YtRD7S(7OV?*5
zXbzoPD#{<l`tEgnzw{U;<<~pc*dOEJe*B+1YaIVTV#kjh6&I}hEq?W|C|$`T6aP7Z
zdYd;#J-(MoD}u1zqEm`flum||rP;;v6m7E6t`wU}vq@FOF{LZat=}#Xw^s5V>7`b(
zo$C`y?ZC;Im}puaDlJIDXaAOkxDnZUHH6xr1C7QCmA++JX;EB-LP_ye^^By{E-X)B
ztD^HsapWn4=FU%uTTk&Zwk<l7a#r$9%A#|JQY%dwsE4ZvI>p?oUYBx}6||ROs&2h9
zNw%xjD{_^ECSm1@%N&sF%1|noR}t(u)oi^Y=Tbv0;uOxo3EwDAuHut=Y{50S_m>ed
z;%7WP^;ugm$-X~LMCBk*UY@2dtBP`XmsxjwKm>m+?d8rMWj@kgy5>>#7t&t(Slr6t
zv%*VPjDAb0TzFC|CklCJO!poxmS!8qY_W<Jx%~bfb*~XGd#R$O=}d3I?Tv3~cPtPV
znhX0ld|1p`4gU;`-fH9bcC4arXiUm`L&ZcJ&krhf*c!rPUE@_H9Fwqx(`@72cxjc;
z+F?AU4sp(o>i<d>*?C|GxH*rnr}CV9J|>_f%A~ygns_H476;s|eC!6`8MTH_!3R+}
zYxrce;r6QQF(~?K4IeYB)ZuoVmL;WCaGqdy{$p<am$V_A{9&U@a~{b8T}8nVytGnk
z4P#0Pgk`N!CwC=U|NW@Mt2S39tZP*f%GbhAKmR~9tmRMh7Z=woUB|;2-=9`f@HC&y
z_~+NeSI?jWxGbZ*F;ny}P-|rrAZdk^_5$7`=u;_4n|9)#;i3KA5M)MDgxjLEFp-L=
zu(65~;Vu&ms7+jSPeY%<g*<?OutGj8sI+P{hLkE}7#$+BkcW5sWTfnX#Sb=jeHqFE
z&8?sG6&q02L;Z$}6zJObk+<f|t)F$ItMns8OQ9-n)Osxc!7yVz&!Xp%_54}nbjD{f
zmgNX2&+->Z2EPqZ3ZBLdRLvo>H}GM6?=n%ofvQ)Da~t@l7&pg8K0Tt;LH-S02jsjx
z+?w;va4U_UYn<{-O4(5{=U;T5_Z-H4d!|_W9FLiIKn9rv9Qf%^v3fey(5+$ee2i|N
znUrcdi2B{m8$?52PTSt@Fe0ZApH8-3mYJe{fs$=fb}b;Cpz&hsBA7LB=<{vS{2bpi
zYfH91YkRFp`R65~F)5QJPm}VrbZWwl9;5gTNmi7>JCy)K{`RGYS;sRC*s4iv0PI96
zfxL)9KJ6TW&o-6MJCnqZ&+{Q&a`OnLGeLQ*p*+n*Y!QzMpFDu@aci(+giZNWOcw-0
zmMZY*C{`5lEZd|C!l|3~&P;lzKZAolXxol{9hF%KVoQ#@jGpqoTGn<u(Sb(x9W-tA
ziAJBl9mh`8@1v;%o0N<%>4_7frSz14qGLyP2Tm8ZW0OphN(%;w-lRM!%?v6HmY;5|
zR{WsmJh7pe$J)riZuWK7-Ar}X(>x<*rUlLmv^vSbzOUXAaExXt%0zQY`&o1TFjy%g
zr3pPZ>|S~J>h@?lR%z*bGqt#{Uk35L-q%l$Kcl(z++Y$?-GjUngBx&6_3WL|GG(Mf
zLj!4aht8xNDJEF&VDbixY85+|3*!sC+qk!mQW-{~HRqw8_>CcDsYy9?Sj8zlF=ebx
z7%ew-19L}rI06{c*!z!Cxw-Ys8TI*oh$wx5hiAPtNv)^y!l*iEgu%0f@On!;G`~ZS
zuvv;#M;dk}<y{9VbN_)RK%c*>88kaU(^qc~I3{;9ThGdVi8-73L|b8BzxxWA-^7AT
ze&&Kxe(6-Zpv-SVL7pFWp>|{zr!v^lD{@NFFYq(rI(7)r<i?Jvv@h^W&smsmwJxM(
z^WN@+$6ZFnxKmS(rxV-Oy$A;hu7j5Yd}QiDbC}^2tHw_i*{rLtVl$QwwUzDBM4Z5s
zY#CUzZ-pkF;#eBu!%jOEyx70lre{WzvZI*j)H>ayVGrqt@xwh0;|qQ{hz@>DF~?^m
z7#08GR81)M(EU<(b+q6akh&}Ioy1F;c<>KId1!H}IKGK@O6NxiQ`}c$L2G^_kvgzD
zq{+KEs+|1isGN9GUSCb<phCqzb!R}Q<S|ZXLi+w=B6u_JX7m3MOOnm_vnsgbisuCg
z9A+;A|5^-Q9xfKkv!WXzbVMJw8~H>j-;CVHuPN&IEVZ2uBV6rN8JvpWpxp{H?(EQ5
z*q2uWkISEa<wTFQj-SDKJhRD!dh4mD9X7<>u^#aR`c2)X4Hdn%@NnB=>6=3|P!k$V
zEoS9pO{u$rCX%({X~pw4o>TF>mAb2Q6`nWoEWq;yo=fq(j;9IF7CevP`3IgQ3H_8i
zNeOh5%DA)B3E(dP?}z6Xc-G<hd8%z!X9sBulH=w|hxo<?>_v0yqswU=Q;Tl3xXLup
z<O-rOmdYnC!`}L;-E2QfCVE^Rt#fJ8uU(TZhpA(TC=SCZzYH2h3Y7W<8W`;MG#gc<
z^b2Z(aXFpX9A7J$xQ4={BpoIi7n3<)Lc4FlE+z<5+nK9;B?*rdpiZBsf&Wp&`-e0_
zG#=|y4_>j2{MzPfTvG=-!#!_JsH+D7?LGM8n%em72C_q}ZKvieo-PmKK~tsA+KGk^
z^(G<OHR<1|YBGBO;UT~YUym^<B?%U^Pj_Se$@Hmlyh~%pGZgS5sI)O|w~Q{Ei4h_P
zLv(3SBggNu$L7{YPN|LDoaoa_Xs1N_wW?ulqlf08fs!*8Gnl%v-w{-Z9u;70sPJWC
z>M9FU%QQ5x7MK(v8}#-*-b(~;g@>(_DyO<~h_XtfOv=mGB(L4hR@lt}dzrG9V04D-
z^Gi+W%=W2O0V&pfrz5PDPe)iQ#^E62w~eX>|Na@#VpGDBSf;6mmo9SOEl}f3m*1$I
z{^*y#^tSvRbr605Ayna6X<K3bj(U`(xyy{Z{LdqRF=7Oba~c7Y5+cjVg$-d&=c+LL
zss>yi+h|re0NmK`9G(F~^f(vCs9}F<V(JSwL*2sJe59L6jTQFQ)T0uNTyx$%#MCG?
zZc>6}4+oXt_8J;NBs6;V(xi0h>dk}Sa+`-+c<_*sx2dmYW)@Vn8N=mV{m!ctEUQe)
z=8?nzm6UCL**?rTV?A9_Ue8drN-tCGMESKnfHJ)rKo3Q!0hB=}x1#W;#a|u%mO7m`
zs_?~(>JV9_%G75tluu(Q*I_8vj^jwgr47Pyesv2BS?CtvTEK9g$7H!lS^g8rNv0+f
zjs?mJld=U)B8NZ2(1526cHoY*sk?5uY}Rd;TRIalnB$C1gL|eoYrzb$NMnK`)<O}o
z0pPK}-WG?#&`1T<Q_ZEdrJa8(9eGpzFse@i*uZ2z5tBC6My?+tSW4%-egJrlduYji
zRGSKtJw#am*%jGTan$il8g8<q)E6{s6Z14n<*={YOJ?DkM1y6AAb@W5n!T8aS75u-
z=-@qVI@O%~Gfc{+cd7lv7G$X|lX~h8n)QR`5<ad5u@mjU)@gEu1;~k8E|K8qh!C6B
z5glor+669y>>BvxgvY4){n=V<o7)@=HXZ7%&CO|4Q8gug%)Wrq^Y9Rr*-Zxo_c!kP
zeMS51Q71jv?EIbP_&^eZJQ-2uHr1hDL7-2niWX=V8B1^Bxa!tbyUiU!WB@M3)WWKL
zLx@S)FExNo2*0KY$7h+HE$U4G3oh;Ems$~awqVPpqZ(!&nxqQ&+gAjel<}^Z+EV8u
z)H0&8c}Qh}R5(+))rkt!8KLxoNpXE7FXuXnnJXTpa{5!_Vga;Lb&}ww`3mCQA4f=w
zt|16B0B=%?rM;4gxQC9026Qteq3XHCG>_5vxhtDc@hIV7=o3}@a#sDdeRbX`>%zcQ
z`wE#WLU-~A8?OhCX;hYY%)_pZl3m>)g^D|>+7<HOiFyjk?;_gR-FDkKn(C4xt$zPi
zD=vY@;nxol{*+$$IZ~-8D&L4RPr@VLZb7Cp2ODb5+XAJRI~$2WM)dq0(B=y=j;bDd
zYlVB}L8j=DNjm)~Fq4LiyKWdUB5R=(w^8d<jTYq*Us4LnzmiJJQ`W-h!_eU;sEpdM
zrS7^-p{33BO-fNA6~Y^2-c0ZG=VBng+yR4;gmVdbfy&ww)}jeihDK}Y>Hc$jtVs#n
zMz}#+<RoCjEYPY*wYtKA>XLVSMnuF^9j-gK5UhHd(jT+TQYnxfG*@1y>55cdZc?7#
zNOT^J4JJ5Yq_dThLmC2g=DA(2wrTT>L3c=3ry%NTv@cb5H5%{PDAZ`8MlqhjXtX=g
z!RxB=-kILp1?c!P!PF?qi%iOMKM{=8hdN}oJY|I%oSv6~Q&s67e&`)C6pbFy7*oS@
z*VRhD%S&hU?*4;o)AG5+q*PR>H2;G)Jtv3I*7a>PdV4D1l~iWC8yA6m3>Z;9a5)wJ
zg$2U{6tD9b4=bicN4pg}osI21)}ADOgM@pMzwxl=@S2p4x2c>u2QB+sF&W;bNFOno
zK2hCxlnOnVO(Qtr9^di15$ws7=)qX_8jLg4;agrPjyQOvZDT6&AiF~3J&!hq65QTK
zhmYOm>M;FYO|blue9ZPJddCvhh#by8=S5QtG%oN3@^VTXhV+4X$o0gHrD||p<Qj$M
zc$2c>4AsR%?$q1Mm}Ckjp<sp?-uXP3M8ghF$ObI&cj@zYUI4xb_z>XBUHC4*9|OMF
z?EL;Z@EctC5a1oazX1Ft;MHGBu*3%gUjY0j;LiX*$L6XKhK9pX@GJ@rqhPEHe>W;L
z1HS?IZNSIcPq7ma_?WA_8|sk&8&SRz<(*Kb-XFBYcSRXB_8iLQBF$+=UWT-+xxiId
z1Kv}jKmf+yCxf6~7L;Kzk-sw=+UN-U0F-Y=nacE(QYEj>=I<nx`=P7^G?YVOF)ROR
z?43m7d-!za%w8UzFp@Z`%U8cJx>%&Hml%BU*_l)(cia|WrQdXeRvpT=(X@aM=q+^R
zJTByGBGKm|RgklH;7(yF=Y2w?*Lt9ri=uLV_k;mNO<P#7KBK-2TX}X^65R?@0+vyk
zz6^)BdHjgVt-}+9Q+-+!1zM)k`h6{$%XwtXdVeaXKYdo2)}%P3_2^G=nu-<Ttw*7`
z^-!`fR`5~X9GROg(N>7#KA@4n@H$w1vDi?7vyn#JBCg<f+tR40Jxg^s{+y-mzC<)8
zrRz3&!sziC3(J<hrI|n`kcF}d@KF~qS&oLk;3Ml3jlA5Y^adP2^8T~0m{`eUrXQ8w
z>$x!md1X*Vo+JlH)eY-pZaun^grWS0n5FJ?ULY8kcI!>b?#}eCdYA?0aFyJEE5X`*
zypOB9a_qW%NmT#$uJ4i~Vp2i}6D@T;HNUll-t}3ITI~8si3y(ZUO>vK)2Aa=z58^;
zs&~dkpd6Cy8cAg^#zpkBC_UW6=RgSF)t!*4nDYmV+I@V`P#JsL4XFbo5_L+s?MLtW
ztlb#Vov+FFzPx#BH%%`+nTj4ZiyT4?Y98iBpZ}5xniT$ltkh<_0UJej74L~FoExh6
zplI1uG<{4p#sDe0s&J>iJ^U#@iH0iPXQ<Q&>`vyTYD9fjcBp6pKY;|RZSH~H9l=^H
zSH$n<Jts+9!ZcH-cE%B9Qc9Q0cMI+L-G11GhrN|b<>E6k>=)ji>cXQRrOEWJ>TT{M
zQM#Y^+BzIxxYFIcnq&L<r<@hlY&d{}(15RC@pk$DxCq5(_q>Zl*pAA3!`h@Q<)D7y
zS9QXE2z&Q<9yx^l_kAJwARi7=7B7OUarp4nS0c6=r-#QaHEXN+IL0d(u0+Ic$~OCp
z+lTqKn9H?>S}b|+MD}&ifO|)VlS#pV-yyig^=o2)>qPA<JTW+?juwt|44#m_a_RL6
zBIqj?gAU+lAYSEfg@>OXO>AaeuC+a6Y@rXJ@MV7~vC2yiuNPrQ_&i>w7uF*<X8=pb
z5y%#PPP821{|LHVm#myShr_{x_U|sgBXW+SA4GGM|2@2ay}7k=0%^|NT2V$%I9iws
zz9eG*$qy!8K9{(sOb>0>5+3V=gL%>6=ZgC)osgfEy5+(K-oZ7_%XRqTy%W(HA|Ov_
z4fG8;s%v;em&@<CWT?Zr@xe8#!Y_!cHGFG|oBu5x)$`<oPx}1~3CEZAaRw;1?{8p<
z+Dad`Q=iYd<fyMXb_`c$dys%Pz9I%GZz%^8Kfip=(17_Gf{U+SLx;o9Z9R^=X^=&C
zoTns)*CWej+d3RyN}pUpE<e04!}~nf`$M$yl<%hFe?yyoB@Z57zAfhX!=mIkj|n)w
zw0I!&UUwX}5njLbbz*%%=+vhQp2ug5gg#$mf1NJ%f_%dX3=c#&a)MtB$55^}QN}sK
zmDI=5#6q#UIO=k(s6NT(1@-@`EF62I`55|A;Cj7*I|ThN3CkP2lJ~z*qkWTKWP#!5
za0lR^;pFAon&w)ZKk+i7h<zIrK%9S@n#N1RJAAT+Z^;%T>i8Qxre6G7$3N#Wb>iF^
z{!boXE7rab-gwr%5254hMC1Ete@iwUzSGZ67*3+j)U#k;W)ekbd5<1t873ubF2q#~
zZ!4Uh<nM-vHBsW7vv8fVOwn={r+#IYn*Qf_ALf6-q*$L24}ZjsqTmBuvS|j~Rl-^*
z_)uOtT5tXU2WP{66uJ-ju)ya!5?6EUM*I}bhrn;dY08H<xvv(@A4<le*GGJ7K-p64
zT;etZF>d(?y&K*vj@9EZ6@2s`L*p^^HI|S0D8`31ijq&zg*~`U@(CZ(ZBMWPJ1aL*
zokeu;l30u7(B(Z#McAikY(%p#eagQNDu^Z_67!UQnp>aA6~^=M{(RhAJ&z;yXXc9P
z^HAF!qxkhaKTdV3KO;E1=GV{o8ybE*yXMH3yj2r4q9rLGvm(umYk{o&n*W{i5iKIV
z0e4Xo8+Uv^GIU4d$gT-Sx#e+an`vY>(n)d5Nc>!41AmMs{wRKJz(H|hqxuUm)t7i=
z4-Aj%egsZE57BoBH*u(BxCqA0mw0-35|;nBzlK@S|Muq4wwR<AbL&%`Ri&<6EHW?i
z%5F)wRP$pa=%*jlfk0!SS8(Ye>6XZ*r!`fayMhx=@U>p$F)@j9xv94)1v}n{;C1bS
z>+`o{dkKFI^pS}_5?{T;FHEK*m}t>4ok^K+n`D6}AIghPRz$CF`KZ8TB?*18pN0%`
zzU9XQ6C0^-vQN7I;I#F4w$T3v(JiS(6#a)^>|&rp77e`h5V_8_sHBz}`**lN6R0*?
z9D`2OHS$pr$+Rn=AtfYbp@D^oKboEOO(X!pjSG{Sg{}$1l60%4sEL2hxFK6C{eeH!
z1zL079$|PRpoNI3hvMoFh_`r-{SjyN$$_H&N8Y1Lawi%Mq9La-ytT(JZv99NYss;H
zK$-d@Kgpc{b7;gbN2|dlkmFV{^(TIR_)fb?$?Qt?ks!NL1F0SSPmw@V`x6`!&xW6H
zZ7EqRV*iV<meNIJ{1;{cN4ETr_Yrsf%m?w5Fk$=|=hPr7{~4G4_LLCQvWPvU#i>g6
z;l8vQ94*b7hNUS6Oqzctw<r>^&A8`==jLYE9QbIjsn48ia0$Q%t|6|Vv8n&#4+W)!
z8JN0}Y1o50=l+Ka9H8m-3tZqhZlV0bV}_-~(3vL<4gIPnop&PmA2O^;*1G1v1vr%N
zZEjt<pJc?7i4(uT#ZqF$g<tr8x}_KsjLy$7-G5%xq-YV44;7D3i5KU8MTAM2D73#J
z5TNZ5zwupNQicpF^xu@aQ}b)m9_5gu0z9t%#?ymRWMrkj9*#*FB9eYr6=(S!g9w`1
z-(gnZdEs{`7|#~hGwcr)*1MjWuBY`6{*+7M*u-z)qk>Y5B$)lX6jM`RN{pD=!ehFm
zV4-+x4s}W@IX%TFidt|b5Q?d9;o+lFVja8iOT6;<>^JG3W$7tH%2MR4b11JvN)&$J
z;SQQ2a5?YS+~_f(#RF5KME~nNWmt-lc;=<2BvHGh+`K5PQSgHhP!4`52T#D55Z97#
zHAQ1kHlrSO_WX4o5tu@IoA@9nW#ZNwe3UJPeiY>p0@R`62Qm9RsQ9%kNeLrdQF)4q
z@UF4SE5=W;k*iTz%T;t6WyPkHU=oM$hnJ*`pt9mc5RJ+nN{Oek;-x83R1SC|#?yIt
z9L5CCVpDRbWHS*w1TQgi<?z^)A;z8Tyx!rzIc}YzHR9q8qNaBAW#tg*(%?+i=2YP4
zHS%{g>TN8{ZOBxn&)VbIdXx8vIBqw$E|BS<tn${LW9C-NMtW~kN779=k!77IxXEV)
zT2@k-xpn@>;>Vk?VGL2yE&f#Eal4vhD<c|rvk2HAeww0L=HBv?J;n4b)kE1R`nZT@
za_V#ABA7t)Egr`jgzh%a=X;}S%5U=z8Q&W(RycXw&<2w-&gJK=SBZsse_>CHNlB9t
z5qZuz!mGb?wbvrfJNZC{>p%3U+tObX$@ki~Or(eD=n4(e&y-AYf@!{|XBF3sqh~YM
z;0mgxW}-$jibc-&k{Fs>XUKhv_9SnH+-Ic~6V$#zRQZ8vinXTRPorlkuo8c|6TB@!
z=}s1dXAhj4pCneJ_rQ%$rdSXgzak67a|O`!kJ&rWil$~<fTjwfS!<d*Xy$RqRFe^?
z;XE=W)0Od9)bSXbeX~iS>#K*5|JuQf-E110Ev%h1V`RrVX%LI7BEGXGd`OBFc{P3;
zuywIC{qM#eqXdrXCPa^=-{Cl<KOIw-v<JC#MNX8+>8$Ayn6i{?@OofMws3UTq=es}
zYe5}z>wTZm6T0X{Px>>r-X9`vb=G82yOto$xNa#{1Y_)KI6k0qnu>n7h#s8?(mcXg
zi---@^x)-6jVV|&k98~8(XWvh#*~L`>yJ_8<yymAWfpNFL{rJjqr{>vnuVxS*F_V~
z%i~337tLf|t`|vnX?g;kd6y;~$&x6)3*8=DThn-#CXvOYK|bBP)He08WLX+cz;s6m
zhOV*+M?b{@JQua}^}ppa{I>Gau9}!}V{4N!WYlx~ND_CiIA~pLxOlwadd%25s@+nU
zhEIfAJ7ahQK#Tu3-f?_wHBNeqxi#%uaiJ@uOv6&3n`Q}#wYi(-IOE3)L`InAG=;&i
z?waX=?w>a-HwtTa%_yGMrKY;OrVI0rsl)fHqE8>qAo0H*n%H*2?3$>anjVagJytWe
zmu3j#X~8usdTS~fc-Hjlqe*A&w75v6(@gJ?78duS+%AoEP4}$Hl%~5Lm8KI7I!%u*
zX<>xNFCj#c4M}{bzMA)WT9~-dSF@F#*%6w5^hk^P3qJ9nkKfvl*vL=?HaZuZcoEx=
z*hGnzewytNLz+`en$Go%ay{eerY|mRz0LgOLhytBnn2w4y3k(}(e<+QJA^X#j!dZe
z_GNMB0Jzx&VHyC6OQ+<hdQn^wwgH;QBh&PTi1LOXn$i+!7!AD?ts$$tkuD6u-i9VN
zAU}PpyhVgXYQ`Yw%#PIb!^0M->C?4A4y1Rp4dT^E4MnFbk(%%LFnka-5Jo&~i)b8(
zksF5J4UEzZ`+G&0>fvd6x9Pyc<-U+Ut3rqO1SxJ-1-|OJJ(x@>FFH-H?q_qk0t6kF
z2)*-&&a)i1X)J^@e2soI;F(`x7qwBE)A+jLnP^R)h_BaCF^we^H$|l-5?i{Xo*RQ-
zD2qzdi@IpdLH3n+GDb6ySH#yiVl?;P!H*Y-=8^C%JcCE6&-hUYhU4uu)=`?@k^c|I
zmr3a3(BDLr9%hY#TYAkE|E?EuJ{@i~tVIL2S6Q#8D%FW&DvDmsdGI)^IcU`M_vgot
zZQ8IPT>LLhW5l}{F-{W^e#a9eCjCLbIGV3$psingdd1DHcg)-rn}z>X!H4k1s&O!$
zkZ7@DJemyttfp?f=ARJu0{-6unwgs0w{cT)isnVz_h6(bLBamb^4Y}=2k3lYiw|7w
z4NuDOhNlGkz&`w^+hw_}t-%>S3^H}z3}zCj1hvu6@`bZ~%Im%1*+w6@h+tbg!`Thq
z1ak=VXmF0*8=f2N151YO{O0Mr%jY?~;rSN8Hjf4f_H58%_l6e`=s~~0?hR-82$bdU
zE?*e$16Nb~9t;;*ya^WBePD+-yd=XLelXh`UZ(SgAM%0y-l6u}1R!Gi7ZmJwK|Wn$
zEs+xcP{Cj0vn`(Zpx{T1-tc2S<&PJ+%c*@dxI*VfsPI36ec-kVuJUT{@+X_U;gt>E
z@KY9Vc(t2ewhsa9wcZ5w25&geM}V~%-sJ@jZ@AEhe!UO<hHRC-&Hp#}Fxcn=KWA4f
zxZ}g~J`9U=-sMF;^u?|Q-Ss!AaJ&C+F7jruCD;e{VX(!Aeyh%#Uij26iT5twCSec%
z-{J5kD9!MOcQ$*&yNurO9s=8pIViY1+Z(Pl`oIprp8mhT)|=pf4}8$!U4GC<pjUkw
zJd)u}Ut{-%U#s=;{}Vn0C+fW`yx{|%@@eoC7<y{pRI@kymc<)>C*I5dgM#1nY2dvE
z?+SHA-tak{H~fJQ{Gkv1M|N-edW-7+ZIeoUtvA8P79Y658~()Z4S%ZhfqgV^-r`;U
zna!udXVu;WpU3;azUB4a<zLi#!xxIY;V*so*}n8)@Gl<*|F(ED_;-Uh{FM*GZ;amM
z-(+~hmn>eeE%<V?7b5t(B5%0S2mZnCUEUn*4gcyxf79Y!elyz>wgm;>toB3zuJwj*
zc~uAsZVmP-5ApMXeKM(#4)NafcX-0^|BxVyH$hOg4_xgH2M2q@Av$k3!srA0)bH<T
zFNggHg$(dvIKbXcK;@AHwnw&*$Rclepili6op*Vx(HkDzUQYfO6cXp~CWtrsz_s4+
zP#*z?>AcH_`Oxc|y~`6VZdmpIkR%_5quU51VMuDNyMhX*IlSQsKJcV!@AAn6dT4O6
z-380`p@Atr0!+*Bt}wmX8=l$V4bSqSpJn$cul9!B*|2;551HNIO)w|h8}`X|L*_cX
z%jX$=;CgR(e!LHyA>p?9Kg1I3O_0^>4KFP6h8Np?V23xn#E0LK2Jdn;S#6*HLzY>*
z36@oR!w=Vb!^?fjm;07Cc+>yA-W$%22kbHbhdkQsP4IYzH~a*F9!6v(1|IOLU>~@_
z8_u<R!>duB{NFwMh2&Lx6XffB;976^83H}(7u0&g>mA<k1|NYp;#Z(R(JsKoX736`
z+1~J89|rr4-sStNz2O&q=wEbrm%mi2`hS}S4*E2Bu*kc@Ap$)FKBV)84;y`8yEps_
zfgbf=vDJDbUbFka4j;JI8$NFLfgL_@?f=8uyMRYg-uvUT*-f$pSSA|?As`HwVg!QW
zqNa$rKmq|H#1J6jh1^LnB-<p=Xg%HNp*6Ms+9;4WUaG0JHT77V+E!AvHl=D)Yc<E8
zZF4NOTWcl9TAO-2Hnmp&pZD^enVp?c&v|~&f1U^4yx;rnz05nayN-T5u^)Sk_iYwE
zW;ps?j{az3e^^iK|D-Ij|74Y;-<8mhWjgkJnNJ%D1es4e1U?;g;JXt0BfM*K=$VM4
z-*4~7LYdDG+X11>7YY*lzwA%!|H{!HizniLYb5r6*Pqyr$8CMS{{KE=1EBv0I|2HC
zbl~4`MC8w1iTr=zU0Vd+iYNB}Zi^rv|CxX9Pb7G6IH4cb5+f4!8Hsq`XktIr(NDK2
z<c6j9nDlb|2OR{#36lVSgu+w09R1P6en!O6?@#Pcb>OE}5nhdd$CfJ`8YBYQ>hZ*W
zR#{?yW{;ykk=W1XT`MKw*@PGRftXW}NHC`?v7bu}91MCRBHPz_!~27Y{e=$xg%18j
zRg#|8|L~&GL;;JViTx$IqhIFe4=46NQIOa_JL2dMi@v%3hnH0)5-gJhG&P5pI}BLf
zpGd!gcWohF;V>}YfzR*Z0BijZuM_}tF$%97<pfs$T;0*{PwW>MiTza$`c)AJp6j!%
z|KU}`4uXlq{+j;8{&`VHf6&n%P3(WN%hB&oT>r!Cj6{O<dSd^gh@(G|*e`MzP~^ZD
zJNS$H6W9OnmV!iqTdExW{>1*)(Zv2`U5Wj2hXK1d+LqE?M!Eu=TyTy52H%4EmfF_3
z`uv(}JL=mxroFx+zqYZpy}pI_w3GKV`+dH%YFb-6qWNw0?a|hj_IgdLYpk`pC%<yY
zzcHM0V<n5n{MorTMm0^|un7t1@HP~_v5V<l9N!PnwF<`@!Vj~Ez{dglOfvpoH5TRg
ze>H&5wBdvN?@$;&8`v-K5#Y~u!I!a7fv?iEOc4b|6W}fQqrEq9@m*lgQYhY}@c)4B
zVFd!;5Bw1hQy1X}S(U&K1K&wVw1gjJJpvyGewGdI<9|c`I2#uDN#JKE<BtaMjTQdv
zl%qMfUY2vxxY3`Mvg`{vlJ^S*sx4D(qiVZU+sDd|`ukIh%gc9`vw~0i=fbFyuOIcl
zn33{c6&wDte}3%0qmuUaG1>N4$@a-Y*&d6lzDifGYJZj|;nXL-pG+ve5!t@iDce&@
z&pV3$Co+ApaNmF=xP4N#CnO?FijNI)IG%co|3hIW`l0YKAsE0sjtGU1M^r2OS+r0b
ztK@K8h5SG8#Z@chtXFU#k_1abvgRv;{@y4VKj@O}OB&0$6_3GQLS|+LLRki)jeZ6>
zbgYVX-ioJTx8h|(PIv1V8@&~kcI%{;ws~85@m4WNL;94{Qr>NP?`<HvEsq(ZEy0%s
z@O~q!5^Xo@5-q;xM6`IbRkY(Q&f8<b-ebH0`!UqZu@Y9u`?um-I?(1G>(czC+bXy!
zTp^tn{$u^D2lTnehBSYXycrkx8HS(>9~))E0za+=%C>F3ghM(1j2_X3kK+sNIR1E!
z7TC3SW0^p6{Cf&tz>MP@k5{3~H%Kh!*N-ZE6)O|?PA#?ER1ng`MGBAatrGYFEv=}y
ztfFM0fa{qetw=kf3w+A)F*b4>ejcCDe9K7<^n`Dba!%;ICt${jJk7VvhR&L)&=FQ3
z@ReFx`L2>}TSTNnde&VEA7xbn->vyK?hv*C5z=QaQFw$=;1R~ko$?e!;2%_Ygi+wf
zHJ|W+gTX&b@%JK(9N(LxrEE3{fIlwzdlAN7jz<{x+VI%{g+~|#zEevnwc|S!9$^&t
z0WGD{j(=6*5yoDWOD~F4w0Omlw=9S0jJJiXfI&a2)KYe1(8w#K=R7O<8R8@G-FPR0
z(C}|gslp>Z0zae$igp(5B>p+03Xk{*{5aCQvvlW9QAi;@w@>2x5Fc(wAMEMlE$k6(
zB`fPg`ujRrqv-drZnU|5gIeIyoqLK&&pcssDBK4<pwI1to=eM#BBXz!MC!R6dN}^}
z94&3%=AFBDs5)32S9s*%cK_1c+e`5MBO7-KE}qAQISP+B+z$J0$7toPk;D2$AEQ;Y
z7_Gd$BiMTfZ!lU#i@`2h40h3iU9=eNq6NEX!Oq(|gS~g+O`<#VSl*qyTgFO6i&rW|
ziztY8kPV<syK_`aId=zp@J@ej@XiS>u(`Ojls$B(KPPsVuKCa1Od}$sPb-ps+}S1D
z6EY9xEPYo2==ZwN_j}M+fxgs*ept}Q!bu8xz)<PJ5cg0p4Ei0(^kUp%R!@>Yq4_s&
zq!|LI;^gsN5v9P8EluNJF*N^PlfgzG^`I}qMC(T1??TUa#b4>dl;OsphQ<j)GMWYr
zYW^KA^k3m*++#zwCVd<U-?&P-Y&pPFjJvXAhP!nwu-A>DUkY|AxI3Z+O5Ny(J?Nua
zpi<I9KL!t_;Lf-Q1K#W2;iACIu_5`$<GV+-)XgOu%caYf{JR}=_h`NM__Jeo#}nD_
z$&>8rM#?g;OVXWCI|)*EPZ{VjqMY=mc~1H+DPL{U=b8$r1Wmz%Y!C*nqs*G{G3+4V
z-!9>x<=<Bd5*_K+di(v^2kCh(vG?ckIk>`{gDL#SRYl*U>^&Bj;*M7;zb9o&c-s1z
za?4m(Kem)!a!6ipo|0$C_Shi4(~4h8{)s^eC%vZp0en`&+@n}-lU%hUL`?;i;J9o_
zz*h||P_f(E!<ddoB;7G(fJtAa1y;K$RCG!7Jz8K*QEYb^7iTZ*I|@ZVd|a39NA*nu
zhPBkySjE&+6|+$8sC3A)_xYSc0`Aozpr~A~rnZrGT%~|olOCnK=3~$&@nH_zu}%8T
z?zq=KE!VLfw=5dMj}h|)R>ko6sC31&V4O_=zl@S^%84qMBZ>51!wZ35<Mayd#YghL
zR>`7*UWM#yjY_VPPkoafzoHKMb*5b68%X4%qW_wLoBU(F_hF8q8vSa4WHawxRR3#~
z5GDSO97#uW&9O>3L_Qdja4$Kg8Okjs2kUI1QtS{!cHW0cFTZ?eso1aCD#g?A5-E@3
zVmjc+lf>in$<w3$kLM93*i(**jOkEZ^RM2ZcH$Tl=HM|y<On$_AdjdefnUeEyV|^k
zNtQ=)sWl@~sn%IiKmxy^ae)!;KCTZD*e&p3nr_H2y8^zBC&|ZPzF6K;%@7I}AC-c>
zG06JAfiY-?QWcA7*a#a<z;{VL6F=E|zn#4=5q&>?x&ZifCmdq$$GyV_+btkXzb72x
z@9$z=;6Hf6DHpeZ+jd|!tPuLlgwoN)iMYd#QA|oZ1u+m-eD8PA4QRas*hCLtFD_c_
z#RuRXg_Akl7-+;Nc<uNuNVm<o1AVNY;|Dq=oQ*i}h%U#|c|#I@viF-Dt<*Zv-$Zmd
zo+i+Nu|)CT#GCbY{5OLRd^hW{<H<})F20*?*pB~Zp@Sb2G{+ANNVwC!2XdJ40Jp!(
z17E_*fR9o2(gZ_&(r3<)Ia1EORk9tZlx<(P>UYZ4q}M&@68-RpAHc6pK7j3tISLHP
z_<#~j0r@u_CnKwq?=ZeGrW8-gmi5V&W?CAiL`U<2DYr}u>@Hf(KKF0_%oq{hud;Pq
z89}FC+QmwEqiRQFOG1gy6h6R>K9>{WvTEN$&xPTSttc^!;RkhA_8<l;l_QNBiUJw*
zU?&bvHpwlo-5^RoMbAv53dDmd5T=|#HVS>~zS=Jw3)3)h@{t|Royvog_@#L}f0vZ=
zarwVh!lHJ58a^MJzmE-rKX#%_>LtIvHLj)5J(@i}&gvxkhjh@(I}Ql45^T~t^7K$d
zOIb~~y;>+{&YrXvJz*pogf|56LO+M`%cejHb|&~C+@uxnDc<3vf5;I0VRM!q<o#*Z
z9`&J77JtZ}eFZIVWC&%DJpOi2^Y7Xq&L<$iGRRp$CVfOpFWOPObz?;_`|AV#S=;ZA
zgO9J1m9nMMG6gus6dB<3^xIK3_-)&s&Z~64?I_)Ek7+5FS}8CyKzhh7vWNN<5EC91
z_Ad|96ibr;333`dXt3y@ZBIQ|paLNUC7l=yV$TcuTykJ=K+;oW2gg_(cyrPs!zd7B
z_`g*p>M_TNuHY&_PJ2ktcaZVjmnP4=YOaZeX|rxlUJ)snCL<P?{qN++wog~P=yBP1
zP7dGcLWW46t;A@up&f>F@Jd@L4J&~vq7SP6cX|@x6d^MbL5ZhGo1RawvWNdS5uQ}~
zRAe7erG8>W!cDyeicaCpSwqpOii(A49ioz=QX@kj?$pwDUwZDPJH@!P4az~T09S<n
z7YaKw@~|?{D<iU$ZL`F8@w><0<%5nqRF+e%eS2IgB7-Rd-&F>X;a(Y_$-tA&5b~FY
zO+qEu*{8^Sw~rNk&o)btq0U+&g9!iK0inp;?SHdR_Q^0h9dV}ep)y6M>{9gCn4_C!
z2iiE1K<6O%UZs}0n=)z}1e8LOLy;wizi+UD@7rdXZ<9e$Y1sD~Woy#oP8{^P-&gQ^
zM;v(UqwRR7o!`ek+OF?m&d#TIFMX3te+2p-2}(MrzDEjK<Prb;%`}_cp(>36PJZ8^
z65_mVd8AQGFWtMV3{Tm_db5rM-I*g5CJ7o+@GjX>U>+G}6Lv%Hj3~N6*_wuoDR`G`
ziT`8{4B2EEa^WM2kV@<k#Xymwz9}H8rB~WKx$tCx)L;rAfhyFbz!WeH0X7Q`It85U
zRsxj(>XU#WT}#`vcl*w5Vmo0?D`xCf&CtAN@>Q|u5O$+?P-wmA`XIkFS^ki+ha5Hg
z3O+QD80w)>HUWM6D1ww4;v>6$fX7Ltd$*LzBQnb$3Y^L3kpF`+R`mnOzk^ck;m;4c
zwY198Wcg;?Bhv04^d;K=gJCub`7w$=*+HjR)E|mF_$IZqy_GKUQ}&zjqrQrtQ~#s*
zLYB(CTUh<0xCc6^oFt`ABOWbFG~!V>y~)i8Wvpog^}UQ3g%O*!u>Xb;W~o0Kl*-5$
z>N`Dn41;ZB>9(yqii_l^r&E8Lk53p<5W#7^pxJ;*<gqH&^BA8#m6f!Rkpbk5Nk7C!
zLBG$WCq8Ps6CEIar#xrhlt0NLkMk`E$#b-HKTdLq@9{=0Wx4GMGoA8$Rq>ygly*^E
zNPn*`;ijBHJhs|-Df{K){>*icPip?1TefftT-NxZ!vHTKKh&A=LpU)|DEQ1HGN-a1
zmT3O<dn23(mnFZqQuM<#l^+`v1X`D9LSe7N3PtCW)S)ZP<5%+ThuCSZj!3j!At|~?
z8BEb42dQt$nPB=8xSb_F$_6<|*&}%bC;lf2@oiWB`8D6p;kMu<m`P<*MD`yWku3${
z2YC*-%Icl{65dy!cG$zJKOoyDx>@{V=}}etgDS~q>hG8RJBMZKrRPUMR`sKg<B!rq
z!}@=$2mX94Jwwvo$DDB+RsO_3+@E3iGyHM<QF<QjQ~E|^+xv0#z@Pt#o*yW=X52oe
zo*%=XAERD>+^wZ<D&4r_5^kn#z|jEH3;_@SSoza8p!)r65d4cwIu1tNCee+t@gL(2
ziBme$Px+U|P8H&r>&A-BC6eB{_f~PEadS%LiN+bhkB>_|gg3|0h=kKPbK(_zZkTqj
zw@*q2a_CeQ8$E>?D(QhvRiZ*N=tS^iDKuv~(*czrvV#m(cB~1Xn#3=ZY}zRg*KHZ0
za~t)-p7|i}Cq1n1Cpb3$$uJv2oBk6#Z&|!;6Fcjae@@Di8k_tH!vCbfj3@osXVY7O
zPwLWo@`j@DB<9}@+jc1CF4p;^fBwE(mC4Rm3xA^EB!q-gPAJ60_hg||YAWkz6Of<s
z6y7Czinn-|NVIsDNVJ_S`V@?Rs*m-dAAD+9OW9nmY3%N&@W#wjaXdu6yv%&Fh}O5H
z8B|r$W2!>vsrOULdh^bAEYZ5BH7ynI5^#mMtflCwZqbj0Nx)Ns0$}#Zy{D_R)Lms8
zH%kj`0+d0-Z_@W`X@XuH&RX;oMsrEX;rj3-?`fsj^k7^XVhS9^Sff{`Y#z`Wb&oFT
zX-%WZ5dTl{m>%}aslmyADZj(3lmh5zkpz(f+B)?{lwon%I%+=r(<;{gQ;a?0Gbfd5
zNpJSAll^~F5j@t(`?y3z@Jgu&2>J#G;)R+**_sZG;FX}wn>i4d6=9|K3QNF7L16Xw
z$^OSyY)E=iJQ86&BdG9^AvP#lyxk{Syxqs!pJ4?23<3CAQ1bmuIY=Xk<ov7<Z$%bw
z*(RS3TMp33qGv#6U{nB}tW<JKWJ@LWWRL7CJ=cV3e@15$B$y^2dRAsCP$fkBKjNcI
z)T_6zos-tjqD+4Vjz5DTk9N_WRnm}Wlz~pipTQZ$GyMK*=p*R*wA7uOD>gcxp5M{;
z5qvoNhWurQ3Ow2G<7~W=4B1j5eja4T&+*JEsbZ%{x}>KOITB8CHSvPHCD()(NV+6_
zC3sEJJPa}uA2T<^G!(zD1kezpAxU^TEF!$=5Z+8&znClMm#HB9b22<G;Nir?1VZ6w
z3s~e?fA)4KAuS4Y`$e}MWDp7JjYz>{$g_>CAM)1GahzFcWXK?=$0Z(#Kz}FiSWhvY
z9bprkpDKy$_<3B?(c{gZSINGU{}=dD$zNb7{z6rPc}zGW=}mi7<(n^rC_MS`3*3G!
zc6rEtuhQ!kFBK>2MG;fru;$NOc@DP%mzAMsBch*F33TvEWBnH@P?Y&+$0Xk`MrBKS
zp2GvJ-HTbpbN+Br5Y6gRI=zDUTqo;)4oP^fJJB}J;5ltT5;;F@l0G6>NfZ6^NaFLD
zE+{t7DPNz@OZ4^mM$Na9gT!UU^f`kAu)?Y&n=9>rgg=knFXV53eo*!)cF*I<(r#0r
zCGU9^doOvT8q-HnbTl|fKNTw#VbViZ<qsXk(}MSOT-tT4lDD{m{68$%ik|EsyGIN0
zfM;bn`}!z<1RjyZWc2@UMvQ1FD~mLC-oL{L=kO(?o{1{sROE?{rW5k$-|>#i$`Ve?
zFDny7Pt$@acR<jERYvEAi7-j<AdCMyPt}lQpcNo#zEY(_A*Yp*h9jHg{J0|gKcq&<
zdu&AZDU~#T9#`^A1I=CEuw)?5UkI|E7jV2z9y)9E1-w@Ry!im<r(=?z962T;3)ug5
z4<tU@Wo^Dpc?D9Ba?Dz~sJ<vNloERX!<;k>DS)0A&|bwXa!16?J&8)~3*%b)h8?>v
z-6US)WN$y<51Z?E(#9z$by3!6fYBD2s)K_3g2<-r!%!-l<O?mojy|62RZ2xpf!|UB
ziNT4d2bvT-+Az@UPQe^h&J*0+^GCVf6`?TI7p-IOk4uBhx>W-HFAlhVY1{E6Ma)R#
zBYw&fMUot*a-%*))+`sbzMDJFxR8&s>EwUl60P-^DbX{VV{uN56SWc9n*4dPPlh^M
zcf)bpMHW+tsihE8`(jWkpn6R*pwMAJMD|Ss75{_X5-#fbJa}S;(!&GO@&U>C%R(0a
zm2GoNwW99JvuM*xGsv&8x&5_`o~A%LIsbKzlxxzLu&M<5h{WI7CEFzWZq}bbFKRIq
zrnAc=`VkgSpzl}mhu!6m!TvG3{iBLL?m-XxLBEgUKz`EDpeF=oVhkyV694Ny*{31&
z!JzC@e8#%jDCEaz74MBmyjii-AC~Z>6O0lGry)Z_<*^Y7cgmxe2<}nx)EVvE4?Y-@
z3{>i-fs?H3KXA}P0ifBA?(0bqCFVbZQV#L|2R;z6Lw!`tzSt7}R{UTA<Y(O4DEVH(
zY1B(tqFz!X;2zZy{Y!W?@g>|H-r9I<q3?R!WW3bLCIHBINk#fMIV|Tln2el^zlmt6
zJ2qZgEce~ks!x%2Mvxrr*QH^PbtXFYn<&nJw(YpYDepIxf-Wokn=S_fepmvA<&wgm
z7C7(|y{F;WX}sck8mFPBaa&hXys=1ru)wl+O!{e#%$KCTFfBK~R{hh3Qap`NXGQ+U
zu*55Q=9%H?C_hKo!=5_r&nzb)BwRTcKCQBRx=IRh(veZ5oU(U%oaOx%$@*=XmX^0=
z+m51hSpQS_Xy9-0p*X<JHP;+Yol-u{t29jL^vG$?Z&ekU{5g`J?yPA3HK)m_#4G=n
zhs|-S5cl>-0_TR|xA@5U%P{yiDv4A*WavwZk6!LE4N`EYBNSk&TI&C{OX^QLdd?H@
zSeRB2YRN-$9Cu3r1iwcaU^*H}#FN8RE|j^KE4B2zB_d^<L0#;<2mBfPUXJpv?PJ>_
zYXB8UIAw`~L?eSXFf?g77pLD<vBBT@vuh|=zf;v<22;r=UnvIEl00)4sH)bP%-@Z%
zyf_Y%<7KQYjuWT2sv?@)>Gd9pMZA;sfUcaXoRUS!BR|P6Q{IS-hv|1j_D#7%y}w6I
z5t>rKCOH|dVg4V&Ec&7FV@li!L&8ZN;mM4r@+98eE>U`NB%Iz(S7C~ow}eRyD&C~{
zaUm#_RD%?E8fE6~NJJ{6d{LX256tPm#~k<yzmckx4CbSW9@(dWljlEE9ul0+E~$T_
zQ1VeB(O~#}M8cf~r3&a0^WcP*O;YHrC<-+xetcL8rp&%l()$PaLw-2zb+VJ)11i9#
zeNkoaq-;qY(UW;p36y!2;a%1SSp|&zB0*%gIXhHIMU*LO$*(`;vGG4(#QZ@8m=wNJ
zDfx)*Rh{L%iV^lIM%b$e#H|w&|7xRb$$?{oyl;Jx#ECNAv(7@D^khFdPJtvjnlAYr
zm5dTs2y%$V8YyrtT(5TG^R_$7i?}%ZHs;lC(Kk2#<Tx2Z3srAK(#icBzf*`x01?uQ
zH0EGe5vAP%jX6p!4RR7}j<FGCkjgM+;Exf!s)5g=axBhAt^LHSijX2f3W)JFoIkyW
z9kUryam*MBlc%(_n)HRN4D{Qnq$sttV<tF7_^Cl@u&2CEHuxI$MX%wx2;}CzHZJLZ
zXvo&oJK1~2W~Ps0Q8`3T>WKVI9*cl}JK@PpbEpNC_-@&nAAnWQnVe58&fskNjDLQZ
zwqK?mya5S4>nO~pyOg{U(V7pr&%`DCjLN&okIzDkV^MH!`;L7~{_zr@??NtGTvpo8
zbaDU|6Dh~s{+)?S_~}X6o(YQ9`VN@!eqYMwMI6X47l9(5KnWVFPDoMzu;2@yiOZG-
z0Np7i-QnbMI*gddl%-Ul#9&tbm=x&T(2h^|Qg*o*?3sC?FckhzE{-C^Kd?(1_A_yb
zpykaR8BUKC9j#(CSCGd9r}e&%=+)FfQv@%CG;Ya%_Or<Am_7ef4H;U_P8iZ4n#4#T
z%?&iPsit0U^rfu)-$X>}#j>bU@w6@#pNY%%qas4|rXj=3_>*nWYL2<ZN&hF@jsM9%
ze<MZ4x#6NgO!iQON#CFFMoUFWad|OYaLPYB_NTa(x*YGXm2vBBrR=N>T4e}su99L5
zfi)=j>F~w8HT%<qgwxz}Tb1mq!<Cpt*e?*~WI*=5f%gpZT@0j0u1<rfPjT>?%>E?w
z6<NncWGOK^kAKMWK9zXWz<!qVXaD?lMxOMHRwYUdZM@8iR0Tu)e~z%|pHb0oC^!|C
z++T%gk}v~B6@Dfz^_g<|d@0+ua2UU=NhwLLn)S}a1s%zqYku}YA<XIU&lAje69&?B
z`R7W(7=B|=wq(GYCB8s$>8_+VPKfV+>KFw~>6>aA^d^2M1_tGlXA}|B5PbCWO{^DA
z#WV+ygI_I>4wxmPGWbxLgp&bpDu>M-;jqLz1Mrs|U&>A^1ML6&#XrR~g3eNCJetv%
zl)}!$WlM0{t`YoAj;5&?t<xEr4=4zK8SteR?<iukCj6PpC=#Un%^oSt$uxnD%LF1v
zwd}0nGjYjBN+vpeshf(o%GckMYmREm%-qDVFLmSAjY;%mpK>0j*ec|ta6%dE4Ee-_
zFBM;Yw9WZKgF~R&^qYez>?QB75nt-wlC|4Poo^+PKuQDE21VkpJ*@w)n8u0juRKsl
z6V;AMH-b0pi#P5m-o*^OPnYr*-az{+BL0>x>1p;!s!dgsv~Uugvcrrt%|2eUj#<Nf
zLLc!hH=hxoiAzJsAey+zfwv4c{1#4wY48!9GKd74>myV0NG=Ul;!Bc0&I<kuAC2&k
zZ^=y@H>8)^uv0$iB|FHU|Egqz(6^2fN8_(gC4}hTD%5a=l4iaC8tZ-AjlDpUe-!)M
zd8`cl`;yeFe4G5r9A}uFZW2AY_jV^6c9kD>*!RDck97Sv>X&8`y1l2FhF*F!>s1YG
zdUJ~CoW}tKr&}c_KjD?1{_uZSvQfJsWDp6UIwLqKbi&oLA2tnCfg(q|=#}GH=4~)#
z;J@+o;2n(gcLrGBJGhB^2QQ+&gL8m);w;YFzXe(FZ~m1je=A^xf8+fsR`oZWC(s6m
z4EkHA%oxf28y*u0IyDeH=|)%_blZvFx!O@AseK_w>Y+eUOL`}RtYi|0^E4BgcZK5X
zpIpA5vQWySf%P{-_UTrFHn>ksD7|VGHaF672|qT-Tk~Ax!sIW)R3%I+BMJCh8E3Oz
zftrl6yuYJl>8%xVB<TU9GGx+_{N%tpL#kiNTU_K|oOkdU(lOaGVX*C?cY%Z}IkE6N
ziqIJe^JGmKP6nEhe&0iZGUSxvqcP)@F9U>!+oqzR6gb%<TS^6`{O@Hf`Ys|yH(N=E
z&`M!k@tY-PNO|fk(L5wIx6s`Ze<rTzs$@%<BYnS=@@uWLJ3|su?U<2KHAp8DlrmX6
z*7AQQF8Q4YH}Ceb=s!NpQB@K$g2|`8PRAS$d|dmNhsgmNlw_!LF#e;D6}|_9X?1hX
zc68)omQW{m9GA+N=iO2cCkln%9h9xJQvPAW#ph`7?6gM`lA%;OU&dbiJ%4ssplyTj
zpLj(1PZ&=7D6?c#gsFyUx-~PbYTpcyq9=X-jQG;T#{=X+gn2ueaFPK#{#hyP&7#{Y
zbBp@VK{oPFOvC@2U=wI#bYel7pptq&s3H@WEgi|2`}}SRCkM@w4F#u+IQdQ(34GT1
zyLpVNJT?iHz}|>tG!;cve?YeH=dk$uxQ(Nd_}#dKCrx{XqF1vCJ;@+PROHNneGt?F
zm+hvn?6vMYsU%MXr9AT#?a3htIIdcH1B)hjO*~ExnI9OSdHQEvlFuxaGTA3QW#+w3
z38$}erbz$2k;D14*Qq}Ir3lSEafxK4TKXV*!U%lApQV+YC=qS+L{zkWC;9?s#j><2
zNl&AkN`%^^W4r-LPlK2;N|7Z#f}4BzZp9a|>%(#2Q-c!ldxbC~6O?e8cPRp-fCeKO
zLN#lCTCGy@6JE7hnleNLD5Qn5G<<-1+m6kpyNl#^m*lGA%F@Q91Qp6G{LJixFEGFS
zbeDvyT<OzP3eLn6;Nh2a*}tbywrAq9r6XCAn}VM@P6=e2dQ%D{or%Y{NTmekZz4}f
zp7UY-Z$>2_;c412<qYA6v;+7&*NC9YN>TJ@;*yW({5dSoADC|rvLt`UB|Y&`>-5Wy
z??l_Pv2?fdHk1ahQ|@#lLGE00T1yg)_cLMOE>A%{34)Rig`DyNK`njL?k!u2%h!p|
z6?=L<T}I9{j9!*W5{P$7ii#nR+hIFW@G^K>qFlVbpa4JV7XnO$Ns309o*KyB?kRXI
zk^h67#J*ErY9Wh4o*6MJiBx<%D-|ViJWukQ@L?@=%eLauA`bo-j!v(X{Ac2_JvJ#@
zdfGzkL6Th)zI6Uw59g%?<}9P&$hkIoLqx`<RkF^s!2DdN(<UBocmr={o2Ee88UAk<
z71}{2@vCud+AotFGqY<(C9xb#yklRIl{V%}yMjLqyh=pT+$X%Ii+)yGR7RH^P9OC7
zuQ*!}13|0Y+EADx<gm<Cd?xM?6z>fNtj}`M-kbtwPT?hzjb31->T#~d6fl!7DES`j
zR%%sizF#2w=3#19Fpu@apo8Rx=Z-K>3M4=2cJoYJ!l|XbyVpz_9AU;3tOSIon-mK4
zloBm<!={}@mvgaZpz*z&g`yw6XI!>a?j~Os>zRTXI*Cs4nRG*J1p4PXhshKSlk(!t
zyUTaUrEHnk5^*Lj4IqIT28(1Mqco2^Q=$x1<C7L$dNp56u-Jjpl0@{*B_{(<s2Ue@
zS^T1k3xz%OTxcFVJTo8|!XH}^Cc>$K>~asmmfZONOzzY|);TpWKV@n^>k};wK13U5
zW4xV)qfgNqEN2?;M_8d~t5_x4jHMkyU)D5y&*n6&@zVx0fBB|`9EdBVpM6@iS<{Bu
zAn>tiW5Am~IuO#05rv-syfnf)xI+3;1)m<|aGSh<z-M7C^_N#hcn25sRERcfIz9zb
zZvH3%;3B}Gtm$Q%-gqRR6;BT=TsOT@OGBr&x?M7#L(DzeG{6r>>#95I^Xr6bTzFoU
z5<bBCrw0~Hk=2?teT0qhu6WlLDsVHxyJM0#gqx=jy1ME{SR@o!ni6VcjiT*gJ)#|A
zL!yndIB#d*q-h3k3s`|@D_Nyz5n#~{uz?v!#EelkBKpwE`#L^;se?~1WQC%|36*HO
zS+@=|x}+I8z6P9kM^$%>jp<0^xk1^_)Os_470X>HD-%Bnz`H7jnRqD%U0tOnvs265
zy=zncPWF6eAZH2}fZb+hKkMf_OH>yz;@uL}g|(T1*;ATjHw>f0=nkkZK1s>Duc|IS
zL(RMMR2Ltm=3SMna3AXl2NuL`QP?4E8n>oo_on=9JFGjMRZl8>T;ea?wK)<0p2TP2
zdjvT@#}`*x{Hxb0ydk}<DBrka7j{1Rn=8sofnqDO0#nGJEF?KAu;84>6;Gp<!GHGX
zQ2T-W+9-$dE2OU}5N%c#ep&(KQv@oMm4)17!9itl7G5ODLT=VhQ`D1el2cd7?o7OZ
zJQH1I|I89r!n-PzGovgz6S53Nj9>v9>r&kzE!c9Tt@==YZG=PQ71GapgZ~xEni)6o
zH1s%JKmS>YpM^)slK;~Y4v`n|D(kZh6Q95zyFllpp{!XEB500CW&zjFzf!bWv#Lyd
zf`AKD@@I7szB7^kxZ>|O@pk^H`UQQ80Q1}|gsV(-G5Tg9Tq+aU!QSjZcE);TZ8l!>
z%ML7<dRh`^muPd?KeN;4Fnx9)kj;UJO(CxaxRxE&vRdjt-8(xlbB08yd}d>0WCzZk
z(xK?^!VQE@DNtQxmv={GcQ&#+8{M_4i|q1lTy>FM-tAFc>|S|SIX`=t4Wk=V$(lW`
zg%02+xn#m>s`-y^af2_Zl-xPG9pBz`9pRPqoC1k&Xs&K=%(wWrt7$N&%#OGCW80%j
zK~$T@4LDTOX|i(zwyRpr!L(btZPT9Oijw@DW!ATTZjUSeL2WwWH<#{I53fVI{DgEU
zD`(W=FUOncoD1?}`o?bYM^?^+C17v)whFpo+o-1MIl2}sUUi90x!}_`<w^cI1=<vj
zx0EY<m%^7xeoHxr<M%)=<t=JrPE-o8lnc0Cs?s~BN1M(ST)J^{{;uMR-DQ$bFYQ$P
zgIaJ$aYcUVPV!FjU(~4ZqY_`XZO2x@%KzivQ+`pL{{;gkv?+Wh%0E=!a+rg}71B4T
z0h_C9sU_Qr3gln`yo3{kvT_R~JVNw$DL6KOpkHOuzo_6<63*%I@?uE8c&0*h3dCAs
zxLA#r+#U(%41)d^(Prfi2>5v>y&6QhxFLh$^CFy#%YRR_S-E5Qjh<cQ5#HnQNVEKv
zysX>_fsk@ILWO*85Z`Q3RK6-g3~F%CH6)xANA42>v*s4!izN0~3N|Xo=Hi=|%eGnY
ziwYEdV+`Nzv5B@csCKC+Yi<{Z?~aHr4BFPC81S+GqK%uBq>x@RsNjPVP6lloQScES
ziJd0>HbcSV621`e#|1&-3W4ug+f`P+wICwlTP7rY9=;z>z=Z}Fq~?Wrc@i!|6w<d=
zDSCX*8mE`Z2Ru)~D<yn&MD+F8)=`DPCp9?3YNcRnpMrNw_!`AfBHOHa;!8xzx2{q2
zB|$|$q@|Zw9&jM8kiO}0(PqsXCA?si{)-5xVKi?-5vZ&SehApSLJBxbC%h0K(OkjX
z3SWR9J1O2Ak%*99tQ<TGH2}C`0$ey)8p=8g8_i2E-CQom6%^GeL0wvE*`=G!;@hl>
z?5sX5ux<0EZKPmxT+$nbtp6-5Pb$)9;TN3F3am^q8rj5Ifu$K0x+I&AuS=gFSQ?vO
zDEj6{ZRjp&ehGf-Wh4JW7=hP|o>Y9@TE?!5jpY^j<rN!uaTvcsdQnugS@Zj~j4h?R
zca?13xVc15o&sNNDEzRNx#`k;NZyI>McT=pnjgr_*rKvFA4}_e*j_1V7X*731ZFS1
zOZD>b^)BV~+gH$7rQrC*xdnmw`xaE;C%ow6uCPdbK~B~JX_@I^Z$$7}Uv}bCaunU;
z!xB%CSkT1=7X(&@BOI)S`cxafeSl3Yz{;=sS!WG0-9Uu*bb$=>;aTG>!u!q2xdme^
zYT$^4Zn)_LfNs2>8WnuzdDm|TWS{W#u^HmOw<-~TTJ_aYP}V}_kLqWC^)f-f#{8@W
z9Y>SE9*)P2tU71US}-a5eFG;W3j=H#tJ{-0m))=@^@5YX&JRQi7aCU@(blGxj&`G?
z)%bK%osoB-tv<^C+R##csJ{K2ld~HFH~%HO?r_v-Xlum|vc03NspWuCZ5(Q9VfXG%
zJ#}(uPiph@P%VDvv!lAD!#KC0uA}i}UR~<RfN#~wcw_1pavS$-EZ??qQ)#gwe<&2&
z<HPw)jnyr6&Gi}U4C@y}Il{;@^7D;zGTIjz=c0?Ip{b=VzXd-!Y8c#(f{P6KI7#A-
zmevlVq4jV}-J%S3*{{=P?QkLDlI(;9MuE`=zSd}cix8c`nUbwD78)l$lfH24Iy>%g
zOH+rmvaP<uILD4sP8ktH{k0(~-843EuKOGQHT5&>p7&E%vR}QQx`EC9AobwM|M(#F
zpL1gchB#a{5WR-x{JQ#@!v`|Vut^|7f4H{89h%=*-&XH}Lay39z_=r>Z6ux;l4EM&
zOdlo?zw3Iqy}k~`BkVL<Tbi%6D`|!YhuRa->$v#*_G_A=`KpBSjM~F(JlDL5onu^A
zizId!%Ms7&w&jMg)>vHK+;pG?iY`QzTqoHsG7x(FX*Acj2pE@u&FTS^%xa!Q@JEb-
z^&5<BTQb(vwY8#ftDD>FGx%*@241t>k<tF?YUH~05HF<+E*h4_@<o-Irt#`G_<vjt
zH1I!L8yXCxpx(G%iiF05kQtE-@#dYVr38!&HL7BL#@-UV$p*t<sp%0cWqMQk%$NuX
zcP>e?k)Od;+q`guGo!q?taxLEbU8!1tbF4E&#!K7M!n~Wu<`Nbl5HavLG&;YB-+j^
zOJqQ3gs9pTki(NC2C5r%#8}0_HpR6I6GVu_@=S75%qYhA)FLYnvE(7*|7>+2GM8^~
zMq!os5#s!g*8KW5+~`0Or_aa0&JX}D*s_6AEg*uE`+>usY6=R9(8cwL(R!r5&Eb!*
z<PZ=EZe7>W#${4@Qk?A?3rs->BPFQ1u8z~h_{^FoYR#?otU%f0B>g2%xdk@2F?`JE
z3MSNGz8MI9n+CO})|hL_t8v9O*vANpmPguH&BvHhBBujjMEWrcNa^h~VJu%LN1!zp
zxm4wSQ%mfCX_|MrVhR*<6Ff;QRue%{^{P{okjhjlt6dng62d2*r26F3uhRYhsyc;g
z@;WAeRohvXwyLxYu!>SzpIne$#i&YO7NV^Pn^#<n;_GO=M$UNdTALRd=QfKHmTD>1
zHT4Iu9~itoFe|om%l@K@{bDBEzhh^SSXc6!SICIfA8D$s&+llfuSfna!W?agDH^N%
zB7?uFjzzkze#584^eZN7ULa;si)n+Rm0wTW0y&KsQgIBgSljiQIgRqQAkPpDpVggH
z{5cs?KpB4YPIw5Lxpvzq!OX*pB0&US70$^pr-<gD<Z52QejH7k8547h7`ZCBLS~X9
zkSb;iX#!kO7MRx8wnneb=ZfpwI<5tEb5qMTa`xnN9`9{1>O1Re4|mjO@Ci^rTB_Nz
z_XdoZ2=rPJX+HD}9$75Ud^L{p(T~-<xxT&KSj1zpNLa{K$w;?~#UuaIt!;JfP|SCU
zogLEJEBRlI)$K-m6Q8)68>*#A8`?5z>zkXGBgecBSo7BcdaNx%1_G>BtF{el{-8Rt
zyV+FF_0a}OtQ6c=^#k<SwHhcJg~l!ssS-wu3R02cA|e@hN@z61fVWG(7Mn(!XJ%Ci
z8nN5NOw2c(P;9PIa)MiB@ZE)2oTReqjz**7+GxE|+a_WwYMmP-hK1Z<p2cnFFuM`3
zFQc}xskx4Q`)&-KHsr4j3t6-t3yumAO|NFTlcl!lHQH9++**y@y9__V(pG;!hQyp)
z4~UV*x7FCEcZhv8j7dPpkaFP9Uz=ak)ZxjV5b*?l$=+0RXvL93ou2$0U)K<I!7Kgk
z%{BS_V9|xb(hxn|*5*lY1XBZ&+f?UCQ70#&L<+J0FvEl!ocsfAxTWzFQj0UvcI30p
z+f=^ItnO&4Y4#>TA=kIH9gcRi$GkP+h6$UH_NLYrPnyL%X8C;FA&0!sJaW@k|Ea}?
z+M8TxRQ%fz8?Nc2<F}s|y^A23rbE@8`OSE?)>3<|Ck-zK41lQ675fmYqYc=rd{j|<
zWaS|3nCkM|F~D4EBgW@E1dkil+*<qLnQcE@(|&DxNByA>4U^pYe}v^k6#Fp$79*W)
zn4~`<!?iH{n*0VN`S6DZUflfUW0k14jEi}dOtd<`p&pY4^nYk34_%vI*H)X4`}KP7
z@n5IhP1Ma*UqHK2G3W6_c#<YivIWlsW?$n`JfyBh1m?p_NU8fsQdYGxEqkV$LiVZO
zPR;qSI&QB&fKz!aRn-S%<Uc&3(I^k6njrGq>)S93EdB_VwpeQ|3I!7&DdS#$1XF^Z
z10Sx47VGLLj!)|H5w036Jz`%eZ{`IA>n6XmKS$o|ihBiflbRv+BFkwh%f}6T2PO)+
zF%+wq*dm^jv8sSy2H$Mf;&H|yvFIZ3a`7{_!wdO@XToB}!jE9I?lWzi90*P+$-I>j
z`()c%tIj?aW*lm2Zf<I?$H5o&MGbZ8(1YLMU<<0G(EX2EpdC<g4;!&e7gmXZ2{Y6R
zrMAkv*36xW*q|ZumN+vILR!p>1a?~a7M10-Ln$Xi24O81#5c!eIRD!`SP@5i#&X0K
zw_aBo<@KUWj8*5W++#y!RJR!Qu|rYpQ88KYa;-DOa8g#7VdW<v87mhVTZ$@pbzZc{
zSXpPFzf0VYw%hx#Npv}RxjcD-c>tL?7mlgKM2wXe)_Ej{yD8NiYG0I5+a~Wu`NqsF
zF!rhTKo%SRd?0n9TP!+SJF1&SgrJ;ltedu2(3XBUZJRh_LLlY#UVed=xS7Cz*cWer
zu*Us|st+{P8qEvYVCHn}1qs~2;{$Mp48I8eY9rcIdkwN+Qpw!y=XWECq@*T+6ah;l
zHL1iOkh)&l)Yg9FP<51OSFK8<<2};?wLjtN+3&YZn;9`Nauc+l6L75Um{lC5CP?AW
zE%)=&TEyW~)zh+yZ5m`z?x%RDAS9S%>QwPiwCu7&X$wWBmbzui%n#UQl-Xs!OPj^Y
z0%@r+_d&s@Hj}MD-i<Fb<Xul<H*x%7sPVCEn>sB#OiM<`#9ZklQu89#`FcJrT4+8L
zAjFAp+u%Ca@{K}0M!uSD`ACp?S49V7Gf2gS87F(@OfL>D<@VbrY;m_^f0N3%7=qaT
zWofgg>@F+9uW05MRj?bDrOnSZZ|Uv)!ibZ(OVUPCW9=QSZT0zW9o6mmnDJp*bsb+q
zuy~!zff)1V!vNf5Cf*9RH@7yd5Ul*Q1>6Hg#G?heY0eNRQ4n5y?X$!V40omcnS{y6
zUOp#nSt!vo_QSKMFU}Dnv7EPIy5lx;#h7E3pZw0Uw1!`P|E}~cyJGU>yP>|Lwvn%r
zhcQ6q35$4oz%!Q+O<v9xSzSjB+!uLi%W$Md6uw0&JVQxJ7I7B79=EA6K5Z74m+vfJ
zXS873i-Q(91*&tPj>dX!R0Hlfn{WbPM~Z{}MYySzC78b|gCEgkv@}I|Y{iPsk3cgD
z<UES7Ih{dj{q^-3C*!-)J2E#QeN8RV!yS0M!H<C!8TCi1n-Aj-L9FUHHiV_Sv1lOr
z&Goe%u+>h^{=FtWcQ@ykX2^p_d7{6_Xg%EVKa!k4&qdEk6(IJVI|DOM?x{~-G^KSd
z-+FA`xdTs2cT^aBW`f~jyPQFfYY2!4;z5F3MQku+Qk+{5NaV;|Ys5IQo@cRDpZ3p;
zDN>b_g^NV;6ZqxXHqPk@%9V>f86T=Ppi?`qJwgjh%;}?mANvbb7Ca<*M9Ug}87SPs
zi*OCCJA@KqHqZk(1;ud?R;-Rzh-^9l59GX!&2>k{h3wNU=?}(|0wvy@lVxG7j>y2E
zAjF1|baC_5oG;4G4i|)|FBC9=ZCXXyiY=!^P8U8Js&3g=TGHpUhSv0pFG}XcJ_kEI
zm|ow)3$>=TqmlcAU}T8s5eJMr`McKiHeW0w*}4BmZmdp_<M2-&q*j!y=TEpWdvU|m
zK%?OD#NxrHcs7Q|xsGDtBkAO4K9ycPJ(kg4eFS$Wt%uuc@z6DY6|WB2!_98S66LcP
zwTqi-@Q}1UihbWgPS#X|v9X~EJ#p+7t;Ts4rg9ukA%>U%u`3i)yb|8g*w*@KQM{Zc
zzoi}rih1n)&!%5=;KPmJ)%gEJH@j-lv^gicV(Ci)>K&T!5&677d_<Rz&yVD&Hczz?
z)t0EXO10{F{gE!!7tiBE;UoR3Pwk-U536=mw&h3EABWX*`zuEz;>vE-j;U5DzH&(Q
zJ5@WN+D6q@vgpzD>`m83WdEu>)fTFj_$F1qQnfj%RdTKh-g;RU`_0kxsp0Dt%l<-1
za`pJFm(5%f3SX^AuO5-`{XvCSBCnog1)ob_nR0zMtNL8}{FLkaSeI)1McdDYMLWde
zyltE8{X8ebXA?v_#v-B}XH~rY7frJNOAhP*eEN~JReey0&qN<hpUDbtN>5w4YMcYO
z4Y&gM$KT-cZ{4w5+x*RQedix5eDsd5Tv+|voA0T6;@HnMR(DhSL0<)X{-*TVa}G{$
z9=iN^Rha)B${u7N0G-=hKq$2QtK*fYxAd`s?)2=G8+uqtclyfQBrzGBFO>cDd8`Nc
zl$uI54Eo$gZaTk;@NZ36(^7dS6uulkwF7*tc8K?J<>22Q3tti8Kuz1u->$jJf*&Xm
zV9m!PaE%4OLcuk>2bB303x1H`SAxFN2G0|6*yp~Go|)T1MsnDfEuzXXHuwcNF)V1+
z?--r5@Kv2G&hZspiU7*BXDobmkm)xAU&)>0*Ngb~zJ;&LV-b$884y@aYsA+L%+irc
z-Vf=mr&*NaD=23OqVHUbzZPGB$ML(tA}*AHZ)+wcE&IMcHp=nQN`*(`tF!p`_4R%c
z=%%1T_W*s^LRaA(c8;%8>^`pkHp{&3PFBV7dnXk?-aYgEo5jByACUomdqbzf9|itt
z3x8l-!I9&sb1nFuJ_SeP`;`UXhtGCHUaUGt;Sm<!TNb{uTfwi_w3KuUUJ+ODX27#7
z_~m&DUJCe9giQ?vBJTn^WtByLmGl!6X&n%oEyV6YB?ufTms{{!au5cm9JJtjsuVp0
zrhM9hUoocOeSjY|4Vq2lT|lRth*=Dmk0=HdR?62ccq0UhYdzo(TJXIPEUx<if82uC
zD0u37fd3d7mXR2$!Jqsx@Gs>BMbE#N?_ebd<GKZiUt59>j7hN84EU=S{0cJkS-{`5
z;QNRkk@Bb5;Ehs_?@7QjEqD|3%7ttR5OXX<ZKqP41NbrvUKLbu)L81Pa7PWTYfvL}
z`7gBSn}#IRKLFBA7JPS)qV9rzzb(g?_eq2=4u&R+;UEm*SK9XgZ@1u=S4y~V1n?Uz
zcr6(k1^hM(UOBGl(fA+caN&O_yjLMo3?NQf3|A<{8a(trZ^8GKNI_Zw;BgCH*QnsY
z`~PAUU0i_?GtK`Gi@qt=DKWl5tUZ39RY+4518?w!!sb-JXH3y!b_&e1;EgI0DM(G=
z6BfLV9E$>8V8N@prJR`755z`unhXESghXidfbX&x>Qp2Gg@Et3;1v+euM`w-puzNb
z=tiZOuX%wMi+*pXr1y;iel(2u(;}uU;sFR8*Ud<DE5)2GaK9yJ4@krXe885nJxZ}J
z5AZRIzF|_5rxc)_PH=n>fA4@oJProiFl$h7trBqCLRQfu>G|pyu;sD_3i;(jk*21S
z0<6v?rxbAeDC3Ta`okZo=U5E8g&6!-1h{RPZz@p;4qtDkEc?DO1vdcSYRRc1dM^Jm
z3*OW%>3Irbsg)L@u2TuZe2~hQHdTxV6$8hnHe2)!LyEo+@avHeMc-VZ;GF&orlH|~
zAvvh6)Z2v|?tdt}Z$vWq>VWvFrQiSriwiSgs%`46npE%-z-_s|YTQQue=RxmR=w5*
z`d4g*21WcOQ|ezWhAJh<_XZ}Npas8tOw#&S06yD-S5+#-^8mM{a*v_lIe>4r6nC#z
zaISxbP0*e$g+P-rVJWC6lW^ZK1nsrpR}3loSFu$)+kzh~RB#ksS`!rect50zMxoN$
zbw2+}L^FASZrW!pK?m{_HSlS+y<lUb4St_RUq7bc;7j|S1+OAGn4r?0GU2iCUS+8d
zZQ5^4M7Ww5V0_vc+r%=V6a)c(!$v<M;Xbb5@3x{d6g`SA-L{db$>DIsKM(;zw**}=
zt{D0NKg$M(LUBPsx@}dwyi<bxn3B^!Y0)2025F6e+lJqPN=fgF03NgLWa_&mB0T`a
z5lc{Ip@eG?n0|`|uNjx{lmWo+vfz6lm|wnmfPdGF+-wRQpOVwnsDb~XaO0R{(B4MT
z{ktWosZYUSK>E)t_-;eNy8yRMu?HZSUnzVT+YGAc7hp|`gZ@>^puej5PeY2e^tUYq
zRV9j{0^4ufRN6SC;P(M;&f%D18x_0~aKn;wd5(np`T@7?^{-ZjY8~)Dc#*}>IHCmI
z0(h|nuk2KUATYSkf;Z(U`d0z3x8VE76ubxUBc{hWH2e&pgExUbrdGdw-I5_C0K~19
zpvp=m2+0e6-Gc8QSMWZ-zi%m6sK7kO!5`b`M--v}Dc)qkWA#dq-vEOx_q#zTE*^>B
zSq#+!5}fiP;I`pcGo<J{0Jp7*^^+3ruhX<CQ!P3BBt7B}f+<-RqPkNu_$mQksGEyQ
zD{6tRDJv}crW^%@;wft^`kT6l8t{uP`m4GXyb$oqmRN|rgqR6LttBX`vv?owln#J_
zU%qL;+lFVwsDx`*0)C?<@4%#jW4@TuW5H_(&h_+J@P<l7e;RPxj9S?!;4#hjHW1&p
z80sZLOF0g>?FM9bR0$da{8@|s$~*-x1N;>WzK7@`Z^{`9zBef8`64*wAGSNCy(JbR
zV}`}BdqOGbLXp{4!Aj*ZpBFMNwCL+cBz+ocEMuz$Zx~l{)&ss%!TFuiRbvvtEy}2}
zs=h$cWAJDh9Tq$y;a$AR_!kp?YNk@mM@h!#EX9qaxDasLOxw^%GZjQ-*m71yg3x9>
zXen6P$yMTt0R96@!M>n?YFa7aqZYhrK*4hWx80>z4k>syR;r9~i=lc<A;6gNj;UCE
zU<o)VnyOj!S4=8;L~g2W=DfO4!u<%{)LhW3?LdI!13mR@E(ar(uN4h>is3yVR_Q_!
z;OY}d5*HE-lK$X`gz+<}saq_A>Xd?11902w*wClwQ7cocEc(h-@KjtFHd8yGcpC48
zPDOa5uBq2s4104}|6Lfik)T4Now62u%0v77Ftx`9f03kNP5P82uclMNQ_xPeEp9c1
z67B=v)UR7|S_=eRgiV_&ZZ<gpt8KSr;J5ozZMAXvkc0<103WdwA5iqEMS$CCW3Qr5
z83FwFHhLJyFW+&%|7jbx^_3E#RUmltEQTu)8F7I@yVim?jVU-%G3^}7vzst1>6*6I
zqOVbghQ9~;^$O01ZM8!9?gL`G#juYIY6jePA96*b63+!SSoD{Zp#y+_#xf`sk)&(d
z|1k%{&{2biE!N#>y_TRWa};?8;P*k05FAn;o0GU{CoMrY#uYv2rafxOsUkT&fZJ!<
zaYbK<VLR<*%hH?56avk(|Fi^MSt#KtZv$>S)ZC}w{Cs-)OpCs5Qqubox#@h^s%=Dl
zr-b_|02hm-8ny=zGI8|*vCd+sB?W5%FSZPAg&}nLzHCOKF9H&AArjMfTXL>a@_iiM
zW|I@Up2Prgy~R*7CgDB<@S_&I4hD(~GNvE1;Csp>*!Ljdwp+ygITG%Nyy@Sz=o?BT
zJjN%U>BFW6Lr3!@g6Dkt&n<?1ol3!Rz-`0qiUCDG5Abow0Uw5O_I*PNZUAoEyIx)>
z;r?MzrP~fTniN7?0>li{pi?VJ5Q;Q3$7YZ+G^G!4+vc@)OexL*JYvyT7uw)EDFyhp
zfz}rl0!`>Di(wCe;bF*jAJQ-)5x$v#AF=4GVF<tc+yPt4uBeo7EeiOprel2@IhfZU
zY|%oulSLstx|U<)6?(u@aG+5Exo7s7aa_Vvz!$RJhwK9#zxZKU$hJp4FeJd5b{F)A
z{$wf+@9I$q&hV~f>16~C;%+?EGHCy#LSTZKkqtPlj!zN;;L9xfsxbwJo*D8`jr$)8
zf3{K~>VdGWc2#{6?wbJoD$`KCyF$^UnPEFUtAv5#dK+-t)LyCNXwWm`R?DFMC35`{
z-*Y_UYZjueP|D%sb;h@B@NT7GCg4LhI4Ldx{3jN?aX`_R0sf2yuNzVDSQQYqqnM^f
zg+LL_u-)$OQ-b_Q0sn&~sCr1zj{^Qz3tm~G;P6;au_AX<j)J4naa$3isc}CEDga`>
z#gJ-P45_wTxIKdk4uQIuN_iiPnR3AQIN-LKba$1a?*iOPaV*@}sSu?=*jBl{l?vVg
zc(dhMV^G1@0&aVPR6D8QR|5Vei~fp21@8l#|J)XBaNgi>m4E%a7Q<fUL7*E9>KuT3
z)-WaorN98)ma+;%!nO5)pSI-GmMC}>aNFMWiaZ792F2d77}WQdhzA`r{$#-`3KT;T
z4zU832hGP798KnQ3w{$KLsw>wC8t&?PRRlNQVECuc*3GQ<1<v|xz@NZS5hEa%d}0U
zHOey|iZOG$rJ!;|F(9<Tmn?V_!RLX#&VpAAYg;7;SKMYHDwU=DNGJ0P7QAXeDd2*R
z+u)5S8}Cnl*EjP>Q(H$<>wdhlf4F`>UiLn;|H!9KR(~`7t0}p=O7YI9d|z!pfA1o?
zA8$}Z@nQS=lfDPj8+~)^1a*zIHhkl^(r5Ti-tbU*O-Ah3ut4l4lqLMoFb#imcz|HM
z1w4dZ<`Vqrq=(@G?xfEJ?Sn4#^A#NQG+zM%1xwMOijov8Q*ft(b%68ZbEiT4TZuW`
zNzcE0C6S*0))*A;@L(v1XN!SzD!^LmTg>J?n!a_;vp{pZ%`2q)gXnBv*FT!Re-)R!
zLg9otA)P-d)Y|Y*Joi^PSdmtUzmKwMkEQ>54o|^qLh&}Fr>}(4H1^(O>F3V*gA1BF
z{RdX`c=|41H|u*GRNacP1}&c@l)$B3EdF@<R$mv(`(gTpb2y(<)#m|&13ygPy3Ng!
zhq)ynDZoGTf`!j1xKrE<!t!ZPq%Zd2ZI36?XQL^3BK<-);XzpICOilsnv37TUvW5l
zRtlex!h=6bzlQnm3x?U}ew2QG%*BT(BAQ@z_%P*ss6PvEhYwRwYXa`1Kd8)g(zjS{
z;7__j`jj^O&A(m6$#6u$oeI9;q2K{a0ZHd&GUXvQF%q2R*QY$p%Kjdl71O7@;vwNR
z4+*aWzQe`BHx=ArVFt#t$e6>Uj71#IN4S$=DPW(p6m;QFZhFQtG#swzyYQ!g@AFV_
zwSqh4^Mbz{|F}Wc3<CuX3gKkv^-yq!hXOAAUzGwh@`C((@fU~N<Rb_`yx^e##fvfB
zaVmY$hVNq;6SOa*;lnk8f4B%fHRLXXpRz*6i;xlfzQH*{`qW%Bb{PcU?jZx|b{lk4
z%OQs^1w4}G1^Ii>;c%Oy&>PdI-t3{^OCAbt1AGYtITi4XaCo8ued;qF@}J{yms*?p
z0)+5I$f*F47jTDyX&LScrcv~r^kK;1YZjMpueE8}3gKkf0{9;k0~&eZJB^SU0e8}0
zr{E3;rhPV<9{M5Z^Bx{hYMcsQ_n?1M!5#F|QPFP0efm=P?^Z<9J%;b}t34Fl=AnSs
zL>jzy8uSd&Tk!`~NS`i>BAFqyj2M73uaF*E>8>DjBZyp57DA*GQYQ67&?6oS9`#T_
zp?2gr^p-pQjHT}KV>8GzM~G%ns2vJs)OaZHNWlz`6wG)*$btV(1;6r8@V>hTdWt)}
zzRo=b`UZOn%>0LReT#>J?H&q{OSh`lZ}y-^gpz84f7hap5G51^y1W>58KR^J=^hc%
zUsiG)5!GK&a7T(Wb2Tm3&4bMO+yfT)88)kF;C0B$6eYmwfR4G;c;>wx>b~I~ugnMB
z<CXak<nY@ar}~E#9PXIu<MGOT$3wxp9tu!VZVJMvC;@lGE6ih&=rGqG(!&`F;bhq2
zZcx~xqQd1#3Z(o!9`e5g{cZ^i-{$Ud_yrGokBZ95cBjum<p{kohsRm_JQ%K4a3}rU
z9`vXop}<N1N+P|=e@M@I&7EQ9(nJOX5?4r{xy*z9pa*@6D}79#i7ItV!Aw-Cn+G#J
zigcz&k<KDRS4-37{~>+WN-m%K?+DSX26uyIk!Mc&J3QzqHBNe}6>gA<KmLM6FS&c1
zo#Cz^JLEy{F>126C(}cJNYB2`L&0a083g?!9`uiT(7*0M|E9<GW%eR>hS^k%j*!l#
z)HrfH+r8-Y*<|QyEB+z{v!8JHfFFUm6=@EQZ-+rSZ65ST9P*|9ke>6L2g3^v2AIiH
zFlW9y{Tzy%!=O1k-05R;$~_cN^{y5g)qhazF|o{np^mv-8j5OnTbt*+EcC*ErvjRx
z93JGZboU?^{BH9^E{3t2LAj_E%OErVAwBmF4+ccSV!+?x0{vSa2EF59(7RwvT>bd?
zhoJWr!r}4U&$=*xe(sGP^k!89Z(g8(!rh>`7?!ali@1U}!Obmo7&I@}-Q#)l-4)E+
z;6cC1q&MRaZ6SRg<=#;f^IkI<Ousn&d>T#;`uW$n(=S-095d;K{*b-^6N{V23(B1g
zTtDddc+j76_jtk6?gkk#2y&ZPjC~#qolsnbe;N2^UidYS+dSm-ddT@6n5#5xQ<9)(
zJOt4M<*12;LDu!h^z79OJ!)g2M{O)@W`p11M`a6dge7b6&&&z_Mu-=FUcsFT?{znD
z;WykpT{s3gf5ksX#1^8+eQErh*s1s}cR`D$G2<0@x(K!6ma;|5Jot)O&jZ0(YxG5w
zQ-{JuS9>t_vG|2kIOD?}8XxgsJS`Yw`Xb?DvWts6TwIKYBHAC5W3?C-yScphe0KvD
zM*+Wty?Wu4%vyah66wl(vj_7l9`vud(=Q3I$Ul&mC5XRUAuU;{;EqCCQo<r%<Q2Gt
z;_t}Ik{S<%4IYXPdMKhX=#+m4m(OP)r)8%BdjtP6@Xx$L`Vx<HF7Zg`C$_ss@)J93
zj$LF^@QD{Z7=C4Au+cAF!lLtn*|DV_6aCUn9(;9xUjRW42bUgk*T3{S4>?1SQKzwA
z{xqn^^rg>vaFbV#FfW||cU7_#XQ#Q#IUClBLUzbGy9hEq%Z~mL@1mUTF~-lP8gueq
z?_tAj9yU-dIpsXdZP3`~{+OP*`s|lIm}z7=nDgezIXn-A?KV>L4!S#@*R3X~yn8(u
zzv037B-2Y#H+de0=6M;)ALE^ae~!92C+x2OoNRaf=R^Qs&Tqb)g7$a_qO>|9cTNwC
z$#XG?99RvUd4=?IUb7oCjW8j7**rG9lF#+az~PpIW#`*DZH%3)e`hdz^|CK{@KGT-
zEMN8@>l)y*-?FDY7@zS_$R{T5mLqh_-glR?JjGqk@)E%L%Ue!C%W0@MVz<1;LlBO*
zd|?+kPbhk)oKrSA)4?aNkiH_o$`Fz@`if=loGVt^IEfEil@(=d^bdFub_H4J(71xe
zl_Li$?t+k8@y`*;6_0r6f7C<&i;%HhW3#>%)M5Rb9^7xabLY=wRX^fx=Pz|<%%^ZT
z%+J4t=`Uj8&A-=!?;9QppJWANobO!^KB^>#zLf^+S%FetiSW7&k(C}pWMwlOeF^$j
z-sr*id3QTkKF$Wu;bU^;uRIuE@?d<s_xI3uZpfXDziH^Uj-0!ejq=s>+$|n_+dcTY
z0Oub|ag@=yy&iJz@Q{Oh0^clcbF!f4JOsVqA?S_XZ}G?B1vA;i<-zQf0(>(63_e+3
za3$#TlMO9sbC+Lm#9e+t9~*oneRk|254MLr*f31^C$^k%DtO&P4h<wn9j*#OMxo2S
z)2c=8f>zPMateyDvYEWVR_*g(q^Z!!*va$-7zwLx^WdY*JNX7#{~XTuj0Ybj+Q~Q0
zx)x8tVzD~KopE)Vf;$*j8weG@0dth*>UAD+Hh9RXgp9xNeU?*Di-#a8DW^dLtpB$d
zo2xw*ht;Rt4Olae_4AvIHLKnAtvTO=uZnf$AmVGt9`IWievr_k#MgX}>93{FUiGwx
zI!d6!y*2N#=v-b=YeVjgYs2n#t}SC-SMlw@+8PhW1`ozQz~?6?X6*wWavt)K!>i;`
z)=?S^$IjF7_u^!k=Xs2;^E}4ac`G4fJ^nd@eje|0xFdS!RRFdJo9H*wGh^r7=<dLI
zpLciQye}!CPGz@wC>sVG!FE>kd2b2%%ag5s$6fLHIx}{l#Li#lZt(etg4=R)ehKRu
zM~QhP{CtmupWnqsb*xh7(<<Wd_x!s()D6Mc?qq+@f6l|~7d+&=4H@@q>=S1PGgn^_
zc4xjI+nxD>LRR)C4C4#-c<|9g?5K<ju4h%h#18KQ52r8iaQcE_7>nw3Ci#MwJ@mig
zZg(MHa&k2G)a$s%+~Lk!Snk2w1>Vb(Z76)&LypJX^2r>~pN-#LedOlgj7#)S;vQZ*
zH(Bf_X-0F@#V4<GH}8`}Z17JgL-O3o_L@7}x)K(BkWX0aj>3kUlkHg7>+aq<N}(gg
z>)r$X++;Zy!XUTZ=7r~T_)IW31YOw33W6Aq7vAQ<NQOE2;;d(TFnjy@CE(*TQ3n2*
zS4dwk6awIg(E4>sk3-)2qrFe@UD*2j<oVco%Bz!~2B3rgB8?fxg0pJ%i##H55gFuU
zJm~KDMJ?`zUi2)BZ^Ddnkw*z!<WT|}bOeJRUpWG`p%AdWE^v>5v!Ptrg<DaFBO7Q`
zJ0iB>UUx?}yyWiq1{&=S`4?x~>G`d&xbWMWx$X)smX;=!z{Pt!=)YuFV3U8F3q5}n
zb+Jc{T<lRJ7r*bWAd=#u0P-VLtB#09HsDc|+aeXAnsG9;c_?_m!=Q&e=qWX;`Du`O
z!BQ$lN6t1T<ct{bleiu!+gR>y(8i>c3H=b%35N3^*iqFRZ}t#GId&TQBxKy;BFCdh
zH&#<99D+9SIqp}<f;KI4H)zvJ1$WA+V8btC?cMZw4?c3x$@d_OKEr4FO;30*p7K!m
zt_S`5?)00<a7V3eM&I?Ee)B<h1)Ezu6nw*j{s9kqn)tXu{6iG-!mpXW?#@u;;X#q`
z0Njqy7L~H$|H9ha=5ANf5f3%^x%9bM;fkL2;CsfMuXvi^ixn?&=PO?7!FRU@{k<Oa
zFL=<SiZRLHfWr}oEg9|%TSD#%wiL0*ll;hR%RUdrt34RIS>$2C=;6{950|#YS%e=k
zZh6Z?;XCdMw|Z2>R*#C<TH`K%YlDC%uaR3l9NFsO$X1WsY?Zl5N=*r+00!G$m%@)L
zhuu9c+2rm)$rca#&w9|`=t9re$dZRW7#?w9;Ph{L(7)wQzip8_{Wgpa*EMn*6`Kf=
zoFn)X^lddB3U2dI(Cb0}oJpU!Ms9n-ond>5$w1bi#Sd|(dC+h0px@-AS8L?<BOVOb
zIT^TqD1OL;{$UULS3Kxruemc^k_SD5_=kzax<dLT9;vy+BQ=*$3LL4t<PNEKpL6EA
z1b5ZG*)EE$oLTlD5|?<StaJ%0dmD>$>G|%Sm#%YnytJ-Y=jTnO6nTf?r8K%6Gj8b!
z8+;e~F7+stOFc^E(t_SaQ*ckR1DSJs*uUcu1$XGX4A0tp{4Enlf-b{(uq*rsi~a*2
zn!AqmKc1dla~a=E@f%Gi`?v?3A5yr`mm`egLqZfLUN=Zf`G(&2pskD*@TQJcy_Y_h
zZT?4kR!Vu7gx$i1=S{)gT=|3IZZ5a{X@?}?FeE)I=*8=JevnWc2pyN=#)XuW^7okW
zPiR~#n+>dt_aYLxYX|G%-AajUlucA2kIL?G*~De@J~JM}*DhCNu*m!Ps@;nDuz-J%
zlibzuH{7jQ#G>!x+ntv>(EOBxqnELMj$Vl#_d#*{BKVu5SF=%$MrkFWaXul?H}-x2
ztFhAJz&54gE>^(14~mA}|3SLWT0ck+W}Z^q6rd;@{UCk8oR<=XYW?VQov*NAF6LF%
z^8uvpPGJ*hPwWWJ@r6zpc*e0?m-==uIZ+lwK*j&-6|7A3s>J`D;{RLt|8wqxZ2oar
zM^){9h3P(^UkA#b!#Mh|W%nCwB74fLx%!@Eih#mfA_?}aW>N4XtDMfS@7cuqxxDR)
zoLt782A8*|l;rJG1SD@j5!CdiKwKS(yMq<*{@o(UDSJj(74N>p%KQk#p3}1XI_nbM
z3E7>Lq1Zc(O>p9avQYN6FvE{-pM*ZZMetk+nn$^W*}h@f8&LvI^8(IJsocZjz|J9)
zl~2AZX>#RJNnY8<`U4O$pG5+}?A*&KVnnV&aQRwERwA1U$$WXE>|QULIX5Rp$JZ@Y
zU4DzA?(I#5ru!t%paSAqC(K>FFT=syCz<z!6r2nq_&mwKuR!qo_OWv@Go<W0+WTiX
zzptM+tM@sI)u-~c?-hqog1^m-G?=JK*;mYz-3l%&_X;dk;?vtQ`8Pbw4McTZ(ZYIC
z5xOhx@W9_K@F`ae2-B{_&u6D2FJVyIYL|ceE|+%Y5*7j4S0GKe5*umWt(46jte^AV
z>);($yqNkp@vv;3RU*WUmYs4{F6#*byNC_*X00rftJGX}RfX!~aE_PHRVcM7sMf0<
zW?iCvT){_Gds<4rYJwS4g0pk@(*j;AJdNfR(ywN%S;5)4SJwgNhQ>GMgBwF5&KpdU
zXxQ(j1cRBB?+Gpqf+m@s0g`}JyFW*ESIFk5Y<gLg)7&L`bG`vaTZB`%AV}JeCr6wL
zQR4I8{uf!nRCF_Xry_~`>%J10bjeh;L{h1=R29i?rEG3yJrFVHHV3bvc<+-`s^Y6q
z@m%2;E1SmkG6RjX98!e)A-x*g4o;=?Ru{=`rD)i<rv>Z8D#(^j$3(l7MW#a(tqLlF
zDP_`(nnD%@+E*$YR1|l=rdf1X@ofPQ)@n|S@3X1m|A+LNC(zh~NbnIU1>b1TWvbP(
z<~>#w3eH}&PBD?NDEbgqyGg;xGJ;nKHeZ!AskTFQ@#6~+hB)!Yoa;%Znp|ozeRA}>
z4$%r-7nJ2%H&e>SSM>Ap-d<Ou=t-QKR_YoYatPiCIIke8??L<xm+Ee0!=YeyP2K0w
zwZ}=#D0SQp7ruI$)=2-5l*hmQB|#3sXEI$!Wchx<o~Cidw#dOo@FjvRR-VXq)}&(F
zlL((f@O_DJe!#`Ot#?GnlygwgtHhdeS|mJ7yDU>skFX271@4vaZ8m`*u5RFgvU%q(
zL?3D!(iB{YH{n6Sm)r0p@SXTa$-$q3?``n{>l(f3W%TWWBa)!$H3cWZ1eXS-99+cu
z@hC6%;8M^9@K4g+@Nf`+!?1(*_0Hk@hii&t+q{IgF}-;J=%e`OFsS*o2b{;<h5ita
zmm8eh;RY||aDETyP<*J-gMkZi6V&ekf7}B;W`kSzz#;vR$3DMBw=v*Pd4=?r75K}=
zpq3I3cwI6acW4mQm5ku<)+!HpBa38VAh$+6@I4;zJ`Z@m2Yf*2$!#6<zz?wkyli%f
z-a70-FyaA63iwxPIaA*nXYt=*`_lS`!cPT_c_AS0NqiK%g5QCU&QtjNz{Iyej?#)w
zu&%#C{-=20Y%^U7w-W*X)F|sZjfLh@Z?NI}_~W)VgGKO;&73wKITwaD_M=n5Y|u%@
z)otT2Y%^#birbd}_KFJ}I~vH(ZRZBN$Zvm<4WA0)?x3C5ri*}%_t@YpY<&)6i;4H&
z=jw+a2BCfW=tdu|9e#vGvpM0An1@n2pOuWASPsFsM!)t(2cwF~wVzk;0xk%$3EnLP
z#jd-K1MyF-4uL#Q71FQ!tOFiY@H-S-$usHicEA<=XZUK5@A@P8*N)<E$p6fv0-i+^
zokoc3)r9!j@5!0E>s=7q4Xl&`Zs76ea59A8)8sOIgQ40Layh;sqWWt0d9+7;<lv@U
z7|6eN#qljiH_cb@09Qy?NWW<j{{9>OIqCV#&EZb^3cya{pQEU5YT&ed+LeO7`ht$X
z5t^G0GJOvA88>sh3;IhE{eTDhAvTD&oMPS20>2Ia9BR9HDgHDW{slfAy1|<Pcad}R
zQNTNs<=o82+Ibo~{6tXq>o;Tb_5>e_H^=FZN%hAUgW``h`WJKDHGHuYaGqu50hR6-
zuO!BPcY<5^9fFI=x0JKtvoKt5p}h!|P89SA{4JGok^fSiL++Twe+f6kxd`o-ur%S7
zb<;48<@{eRL}NEt@qPJv(C-4yk%}+h;x4C$j~y2|w=EI$(CiR&tlwSGu@N>g6SKx~
zP1L$yKR#2up<Z*`aJT3<kH`u9b0|2@Yt=pod(el+#}6tvMUvpna+*3m%A#26QjWi>
z=C>0aP|PdMp`fpnMer77N?#Ql#o<6oAJ$0pxA!4*+Am$`k9)}J_n?1)=|95K(Dy4=
zfD%~U_Y&yr4#m-jLw&C(I5|Y{S9`^Za(kMT^Z(KHJ@8Q#SKG@5VH085yJ83dam6T+
zm(mz4BBk~gQPY4lB87;ED<GtlVoDKGr0hz0C7)W1lya#eE)*dG#VsNrrMNGpG)2TT
zB2ufkQi_oxt`rd|#qT*YXKrT4yZQZY=FW5e&N*l1{@J^Ce_bH;{MtCVZl9ETer=pw
zyLea9Gd#3{W)<l+;;@2B#Unl|mgm5CI?=!5rs#?T(4~*(9Qqi~ik58r5?+>99AaFJ
zQ}L^~Fz)idE2qW^@Ok<7Y^luKvqPN3M>s@3OQr2Gj%Sz4JU_c#e8*yV=-I<?#3R8g
z;i#8_m9$`{u^E9|*(em|g;wqtJ3T@xPeOyoEPc)=W^ws*(Bw5MpDTrSk2&z%C@0Yy
zR}f>IW@^Sc8M@c_+{9&9W38rnKx?%O+o~2CI>P_l3@0VHaPOLg7PC;wiQtaAKM~-z
zpJ<B{2}rHSW(+PN@8=};h+9pGv*6HjeMueqFqXK;xXK;lt1w_(^Y~YVW$msil(oAG
z2fi#lRZ`EY-i989mr(5v2(4OR$Q7}iajJ2N!f~o0?tQLWO;La&>tz^LZFQoEPVuU}
zP~Z{0Rfn7g(92g*QR;Ltz+h<gXzvWKu8|pDonzfy-2i<a8U78Y<2N!L<-bXQ&m$dc
zX0t!?oM~0dAoP)dHIFU37D?Vj|G&EhP#T+&$~Aku>v|1%z3P3<1v#;v4~dCY`Fzxy
z@A+x4MaK+2kGrG-`|#=cxr~dL;ao%E^PJEjIxs&kSCH8A2f^qu5uZN|T(7ny`lQ&b
zLQGhJpGQOd%An#mtCRWHlGtTF=d)nInz%ONJ-W5kIq=C4PGd8oyf#OM)-G@|SEB;g
z;v}gL?s4pbsP1bDeT;4GZZuSIMuOMwmE!B<H^e4|)=@Mm5QhDA<Zl-boU)_`vk83|
zTsM<(6*Ps<T6P^OYM~SFgM;BZs;L*Snb!8Pw90)e`lPjmaivw^2Zh#SLaV<K)qWLb
zSz~3kmJXx@S{g?(&RSf&N-isnc&r}Y`5W=^6CNEbZ={TBW9-1oK;tGukHV9zC&hYj
zF$R6bF9g8<5;kMBFH}2;lepvl0_9k@Q-MDGeSs=oOKJy&&y#juSmHE4OO^k^(@wk$
zj=!)%5Q^7FkTj12#`+uNa<U$Zybc)a$HSn<a<aZztm^GHI9Hy>@1t&@Q<?SHjPY!c
zpCfEoBktL6tdNI<jnlbJh_-y=G4C1hTPXBeH+~xtCkDm89RvoCY5m)3xvu<nx>#5I
zzpdvMpPAqQ9^2H_Tkoc!(5FW|iaw&g>9%ZKoj7b#Ri&y&@f%g;@>f9*F9)$rwK<&F
zo&(3?>a`raSPHxjn-TgKtATlZ==Y*rR&a4@3e?Fcy|`4g6JOlu?MO0^1Mdxk`ob~<
zeMB$WpK%$bRV@lH6IqHS2j`HxIfoq8yvKl(6LaXH^@sd2?eD}m2I2w#^BpaJvQ?Jk
z@0K}HeD}})yQi0xW4`~c*?X+NOGDp!Y(@+>`}j<4b5xY5v-SFb^#dO8<^>S&aAfmB
z;2veXc?od69G9byfNoyKxEzqLgTnFYCeDS5H)ARFnl_vFhzk~{e|f-i9_$zB=zl4U
zQFiNI;?4ik4T8V?C8PX1)Ji{Isx<si_z1Zey_6906JOe&L;qpOr?DA9eCaqaij!RO
z-GX`P1mkktZ8*M+gbT6qEk&Rc&Cs`nPFTJ0l`_{`R#UDkw`^tghS@DU7&pwmj8(*I
zg1y{Zs(raXsrA2nGd0C8quRVG=H=7OeU{k5TYH&KIEilry4}Pjv~>o^dP$_vM@ej@
z8rP2t3ZErQV(T8zJr;wlEz<hdBf{6Mr>L2@?HzFI37~ZmR<<2sTt!0RM-6`VcAHA1
z;#YWvZ|rSXOM?;e?bIg+48iS_<t*J^FWT5Eoxrmmo00KXMzOroI|6+S;FU3qE4>Pz
z2wV?qhWV#3F8O^O6kY?I7xKzij-ivrW;$`kyX<#_a^PiR$r!qWqN+L55&Y!*4r3as
zqsop-=4U7I;7R5t6y7BPConj0<^9uhm|Fock5y;KTHt!}tI;R(n;4g7R<$U6yEt5w
z@7ND|9X2BjI}Wj&$_2%a^c{8V{&4g6MKY(qpW>8#1I73IY0PgEpKnzQ=>-4pm0vdX
zHQb!GaUz3XO<SA#;Ez)S{2eC>JH@|0fv#R-^-Mo04}UvB^ExBiiNlZA>bi3r<n^?b
zN_{&gFs{<0@Ti!Yl{=T`(6<J1X>3M3{}2Gb$C=z8ddf4oKfsQc-+veeT^?t0e^?>n
zU%ZQAvHq*}c6AcxZo5jTDc-dJ9Qr7^3U)o}#BqY`-z9Io`*+FD3@3$N^+SMEtMtdQ
zk2Jj60S)0cHZ47`(r|TtHt=eYaijcRy;h{N{MEh&y&iqClR)FK^1ZrV$oXI0EXuC(
zRaHhd__gwSRh5yltMu*z7x`)82b}cRP+qUL81yLm@F(S${-)IU4f)h~uzC2Knj-y8
z%@F?fP0a+K9zUKYso9LXdYz;lC@g4Uzf+G%|5A$$z9{<S-%&XYQ^%QZ6W%u6{*R7&
z9%b@>%C3>;|C<Yb-Oo7su=9UUi}A$%Zza=Rf0@3UaiuTC_+G|s>cg)THPEN>q4=8^
zKY&)ZukaRu<3m;@(98md3;~6|!?@x<%>3%0Xj2~!Df}#YWLWVlJ?9y>(fT?;fC;-h
z@lkPiA#*56*0{TvaT~2>X*ZsA5-*tA-5>COut`B;!e217oBD*8QD6N5ABcSq7k3Y4
z+!nlT9!@j(Q$&ZJ8HCg4)iyRQDZ6K)=jG6B#!ZLj0@oc%p-%?p8@LMD0>*8$*N|aF
zc$5j!fLkSh#KT+&RbJ?iXPl}{bi?nD7s077XgrVh(EKEvUF@jvfIPX~Q|V;zElU5M
zkxpbdwbf3;wKxggGXXLlL*6ryan^?({(_-B@Q5BD+Jg@}(H8Hy0Qj5O3W%=$f}uYJ
zB;TJRP697OnfNElwH_)il0Q+d3AeFnMe?UH=;`BJPGsmE$G94&!lO<IFEH@`i65xk
z%l7w{$Z_uN3ptN*?o~BtjC1c6>Hpq?a-4fxA@4EHy*O}CJpLTwRz9*-{O4ib{C}=u
zz7--a{y(3S{{5Nq>fv9LpK-&#rdd+Hsa42NY&w-g{&Wuc^T74^CeTNG|6<k=<NE?4
zzOjA1z^3Q1S<3C}&A3hdw#wc&3q6mx?OOueOV2XKZM3?cM)Yp+InN)&)$eOvMG(th
zqojH$c}*3Y4Z5b}HGCpMZ{~Te5~wc6#rWDt#%;7(G498!3Td+JC%Q+H_K#xRNYegh
zX>b1#&^_$!Kgzg`R<rjyPtMn80`;)>dXDwzKzm`Y@<14J9`+6tGH#>Q>>aoPJ&z<E
z*eJ(+U^D0*ejM1!xH0ZGdI~=#zG3Ev<NSu1AB8W5zI(BiV{`w4p*NPGL%3;Yr&t~*
zh2A&=VjZ>uZ0=t$)I0?p4~5Os7&jFDl?>~%f~pR);;#dpvMQV<{gsY1`YNmFH#<?#
z{eQK^YCEyzY4AOc%@|0_O2!SlEyipN1i%NoEwn0V_7wi6{1~bHO$xAwoi{1Kgd29=
z-0P(7f}d~hb26gcFOLofhf4h5Z4y6N!FY=kuK@o+d{j&0JNS;16#XM|ya&^Ayl>5e
zt<SI-@qdes4j%ZS9Q=oNdh@?M(+PbS_TQc@^YHdu@M&@B*n~df_4a(}*V}R7SL|>E
za052Oufui@JemVf1Ah&hq33ULU~|5Tzq1h7ckt%1(tzdvdnYGd0_XpZN2<_P{+)`(
zBPf4A2b`9BHlhyU?*j6~15Pu(G&wx<Zao-0M)~dvLy-6orFY4YhXe2R6bc7~-lMY7
zJz>H3C~Z2v9DOK!Z^g22(YKx6+n$4-!{CvSFqjuQ(&!}din$)4BXm{nu@W6Q;-v1t
z1Uy13rZzzX5%l4~krPfv&`&X)3*V(@WI?|l5Qbu*_tkMm&d^mY<RTQkPcxU6PN~4f
z)5VM%{AqPOH26OVdh>q}CcNuc4SawT4V>!vLr0zWM+Un2kIr+_BT+R+8-&Msp?}o!
zx!|#L6z#mwKk+f-O=72%DgPXzcB+_k{07N;e6#=tgpN;uX+3~-=wsZ+>5!t$sDQ%d
zCqlhHRObb}q6G#?xeuvWg+8bL&cGE;=c+)y|HH5ozZ0L8b(KN?u$j}`8jxdZE#fh?
z-oU^x1&kK=Mq{nCQ0i`Gq`B73S$O+_HH`1h!hQJx#?1wk^?XF>X&bJq=Oao_9`2Q?
zl~XDDs7Tya_-K}F&WMo}pBS2LHqa!^o~U$^cOrQws$>NI#kZLMg|kI*KL7E4q37c>
z)Ks482{CP61(r)Sr?N-u%a1Tl$K5vX+i>|rV)-YeON(B<E#*E@$&$tDbMa2X&GJu1
z8FKY3H;!>7r||JYZsI4Zc*=<%zjn_4f3g4_&5uA8QG=mR9%WqVQ~ZmwahJbAhVhdv
zP72RZP5fjp^RYdbZ(lZ^UyDB3JHR;GbNO4cahLy~llVUBH!denW+~66%oa{xW<MjJ
zW<(xOi|Uwo`exRr{Hj48_D>sSlHbhuZOpIyQv8+KxXVAnsTzyt8OAVKg}as2sWd74
z9OG)vvzdIwKUt{jKGU$K#Oek4dRh^+B+}X?2BoGbYjyF2)VdQ~9yR^%u5!x%yC1hU
zw^h6Z{2Mnk#j<v0y^|b^HUErJ?Nr3%z!{ufSL5TLchRfECUK(SFBtmF$I1GvL>`?!
zQ_<$|6xhsYMBBxA(tb9cJ^Kt_nxQA?KEo|!;o)b;_y~M<7F1o2&G6x@F#!t5PxyA$
zm;f#=Z$}oNrQkJq=#$Ux<%Q1TGFL1l=hPwe+(uqx&z%uFlR{sRGg{&bQs~3@7i#TO
zaX8F)7%lO0LS6ns16TYNZ1H@VoSx_L{Up3BFE4by&Pi?%J5M-C+_nJHC|8*CXIYoB
zU4%Y-I)C1<q3{b*?mx!NDxly%?muc~DW4TSjOAvtUTLrWKra3N%+0dbhU4qI^bq(3
zT+WO5UckeUa!1{Y`R{1CD*ShrsDd7$i+!_f_&SxM58o~hbV3to@E7G#p!ni=;C0xH
zD!Dj|ZCu<bR+BG7vSCAC;;{fxZePxmmcLZ%(U%)Zu+Z-l6`p7LaD7XhmT$Bml(#d&
z)>($tYBvU6XsK4XUz}1F`u(FRwT12c&iC%cxrkrn6Yx?>XQ4l@y_3F|+G3~dK0MQ(
z*DG6HCmVfV(8_b(hj@A3L?(06JJm3G3getS7q1cO%k#36=j)VYx$NY%;W%XyZZ#}}
zSN^;N&D+BAyiJCASp!zyX2ZO~w+J=u@|-UxVDNc|S<P`nO&on1<O#;rC=`BDsF~Ql
zKj`|!_yzPK*Pf!GpJ^(ba^{5_%h#nD)`N46Nf>7Pk?3nVb?KwB@y-=2H(ExkeTJgd
z?h@z4MvV57o+5Ua^b>>jUs55v)!dyWy9>FylomwPTZdt&SZe7zv(z4xZN~;tu~tXC
zUQ`rj$CRwtjyS>!Adn_bzm@NNi3f@Dto$-5nSYzpJQ<6BzA>uK3F&=)m6M)?#lIF^
z?I@GagUhcMj^?kBO;R=~naTVX2x$vr=Ni`e4&$6j7k^hos<>c;x3Pk8P7-xjSunxS
z+a&cCsQOnGLNF>o{06L+vCfKL*1x}?frE5u2d8#2&PReyf|`&_+@-h$OS8XIs|;CZ
zS~f0^S;B3Pm~=L$Q%JheSxqM@Nc<@`I?qQ(bFY))UyzNv{0o6!<{Y~>5H1greLci!
z^fBb1Iwq+QD;(Fz2w{1!7;Ktcki<x?H{&el;w3CczUy+OEH~JYQ}_^;%Z^F=8!K2&
z#YEa`!^QF8@^Y)oP{Uwa3U)E-HK=gs$|;y$U25pgC1yyMc}`>s>buKoLr<Lbtas9&
z`@8IRG7sQ;4qf&!p9(;N`HnKq$qS|!H&!KuhYY{F2z^0|exy=Qwu@6hF7rA6yf<JK
zhvMjbfsL~0{y})DI9ybQk^ueKn9kP$R%kacJv-+}7;<|VSA$Y`lgLhS=(HghMW5u(
zI`QcUPUyUoq#%VZI!WqVJ|P#gdV@_{a^EB|$XVAiZd2d4%Ec+$I)8x3;HMctxQ&hY
z6}}8T@|A;5M8W?wnsfBVJRXq1Nzr=j=>`M=_$C7n5drvS#-*NBZz_C;ffGCU!=uo+
z-|WI~--f0$VGI+bqBi_2aE}p$&oeIhNeTXf)@2mAUtlvvd|6+{b$+}J%DU_*94hq?
zIL^2(K>R1bJI;gu6yqlUY2Y3ay$l13Wf3@Mm(j@dT%s#RcG19@ziS8J9uewFwN1F;
zP}g2Af7>@<$v{^sMh}6W(_8`UsK21qa|ZT3_^+Z7{{)+nf~zQ%gu4#$2zp25@u7FE
z6W@TtQ}2af@?)bB;4gnW{SR7K6aQCl2U=I#IdFM$S$y@<9P~zUy=7g!8L19}$8h-S
zt&F=4g9m<;lsTbN+yt~rhN17_XvugvppuzRb1eo`G8=r_veKoN70qRw4Rony+&G}Q
z{Bf~t_)AiBgZA<PR!NJu=Ou@7c%Bv~7O`teU`ThoNgBSUKU%6i83}hfUqgMurK4^5
zK!cxZ3lX|zFyo3};gku#_PZ_l%J9=HU>aU&C<>uZ238yV%D`HKU*YR@{#e_Jdd+4-
z09|2VFXN^|2N+i)V~4J-0`5_p*B<u3FTn`<REQcW@3YW@f#?(wy=EHGCw#RN{V`5J
z`jBERg$1ROE*c##Vw|s-O2x@n536)Y4*4oNIRky3L05VfibJTs^a*(~S4yw4A^x2P
zzw#$d*V={tQhaL}liPnCZmUrLy2;`aZQ^yN9hSQe`r37ZPF@7Chrgh8T?-mLF3TB5
z$qQU2#@9vRho!x~e8%5b_&vbt`;MWfRqE+`#L%PgwA9ltDd%>-cg3lCzmxI`<7){%
z1@4bK2@hd>{Tl_ne@Zl8#|Mq#GUDqgd7<(3lTuBYj|pWpg0T!&u(%fVmpvir*Nf}>
zLjUziDR(`-=s@bPPqSP(E_DeQ5D@~!Hw=USdj7Y|aeV{75e2^3z#Q~}OL*L};C)>V
zOSyr|vhh%qahjQw2NiF{Pcu`)UH&z|aensMtU$QkK{=R#XLt}dE|sIYQLM;$){Q#_
zVYoHOhLk><M)XkygGQp!tKb~tqZn6SDO_GdRt}1S?xk-A%kk(#LLPQzX6tkDS)v+Z
zH=P0ftM}8a!Q`iIhodt%W#IMbV?2YKa^TH5aMI_e+y6X03Y4N&QAUH$$ujz8C(-?8
zPwvi>UDPPuaQNm5Z|&cd+P|WFNI-}WDU#ZTl*pxEh<KhIhod1a(AOTDjN+<;9K|6t
z*9ezcaq(~6AZoYxTXb0X>W698w;E+l-#pY?-may!XMknTWx8S4UXVj>xm>$!yayL^
zqWn9QDXp499L(>~sg+*K3J-|v7Z2?Tx}N3j=p&m$Q%>zqaLsfJ@$2+PNx$WcpqCFD
zZ_rtOSVIncxm-(!9hPh9urnebx3(AgD84mhh_So3MkHIA%=)cE!KRNki9Wo(Rm~}x
zC7-xRA{=)xXvMyDmb|HUds?Rb_Kb{P#SPvo^>=p|cGA+$clSD>dC>P=xiWYEZU%TA
zHe;o)biVyKZpsbs3X&c~Do(gH{2&^SsW)PfTwF%Tvp@d`c~^3{HDZsUh_i7AU4rNa
z6u!m4Ih=Q-ML6%k@M#j=aUN`1IISx5;olt>8Ru{+e56l=vwUQwAs0a(awCm2SPGYE
zC?BboBw6gf&^eZyjaDyKh1bdSjpQTG$alrs+QYh&W~4rD4(y$HcUcVixwDkpIx*fm
z>&190?_6q#aaiu$%J!vS?Qi5T-l@t!#-R=0LwB$-dq>eM(^ri_=pzuLs2=oHL*WPn
zepYpoHR@4Aa0m-NW(X?WIHx<P6t)=rjNgTqTG4&0yC#b^cGom-dw0>nLwA(z-9?8^
zeP9ZIItTwDgJ1bUrzGv$KI>hj93SnI4vy~Ulsy4QM=#|*ZcB&=eSeIhkv;hSIByTW
zPr1@Pw$Vo_zQ2ocnZs2F6@EeffTT61H#5lOy9{Hl^%fixWe>;Xi0POdF&(oYhapu9
zhKFNP!cfc_v(FIZP>eZXc*ywJz6L)hW9&eKU*X0**GucbhtQ23Mf`N7twN&=sN5)z
z6+Rxk+O%{P%_K!0dS)|j>UkH-vRWUV;s5DakY`ojAfkaCydV%2GqJkTTWK{dLLMbu
z-D2?D=wp=ChZt8*Fn%}A_ECv>*4>lE&H(G~$Cy)vLvb$7p+VL1-6sq|j@R9%3_*oo
z0PYdTafE5>^<~ZIV+i94oLUDb$m5C(x#dhBg;tM0Cw`onM}@07W(;)P1lD7OYTQJD
zqf(Rr4`kdFLqOrv42LSvr-961+@`*7)j@?XKu;fl(vvlH@ZkJGMM#L{r0=+`IRw>e
zp++*q2|XGp?0wJ%KRNOa%PBhJ_w*FCFv+@SC^Hx%zUMYWkR7^5MMCj&sP9pcP=*wq
z6o&rCy61QfL#n2f;E-jDv;mASF#NF5$H2x{@BqfoWCrCBJ34+g<E~y7TxRgIqvM}8
z_!WMP4c%L42(qDjiw!}A4>b5~^x^rvgBe$jDSVzXw3-==5#77i5LAZt8vN|}z55J)
z#wW-HVUjiBHbamVPN*~l6+Xq_x6#LlCQM`87}11{Vni`(LJKn(Bbso?5LAX#)hd4F
zxjYKDUBoE-grUC*eR52!OT)0QJY&LrW^NR2=0@QSj$MzV`+fVJ=nt`GM^(<1gY0;;
z7dxWtDSSTTik}^iK5FnQ{IEQmxSvmd?w8Ae|NcGnWIfjMiSm5NKXJJTaSv+}S@O7k
zn>5}@KZYfB(lWyX_H5GAh6f5?Z}78clXe;W3O{b}bL1w;)Zi*vg@g%{7YfhwtjQU=
z!ld`t(qU?V^+1j_@`1<Lf{m8eRQB|NC!EaRDJBmzshw8dnNqRr322@!x-n}?9CCha
z1=#R+>2mrXw5F^;qvL$qJe5}MzhYy4?BOqHP0iuqR5P3G;Z#w!{UB?kf2s<aiVX*|
zX0$wstXax2s!8#PYMPxW4e6xl_poX*(CXp(4;He(w1~|Aw25H!IPy%J!nksQeV(R{
zV1~=nW*YqL@-(x;InC2#tiGE6X}AVjjFEI=M}H_Qd4To9&4#C}>4#el%ZyJiVhz*r
zXb}n_W=%I|H;-w$IlC23nmmFy-He$HKIDJ888d|^aJo0#IrhzbYk)O<FL*ryKK&iW
zg-}}=PnSg-vwl<r2HhL3(jS>;w+gQ|`0LS!mp_W;z{z|4<SUIn@lPY1&XUUrz@5T0
z{RaUT=k30aU1J*jh)O|I)HT5Ta~WqnF1`@B*TBeOg?|hCmp0-b8QzV?BZNOvp_K;Q
zm0(6!Couu5^o${*EuV41kgt(?XPjqT$us_-c$;UT|H1K6&x3JZZ67==b_Q6r<GeN2
zQtZf6Lu2husj0S=HT`&)*y&--90YDPXzZ#dZDu~<MEcNUGBY=-os(i`fb|nfxQED3
zHX1k;1j6?dJa~$56#wKTy3b)V@;9qgIyVcitbxfM)+|cUJP$^^Xh*ED4^`vm5b-k8
z$>PC;;nqXM?BUTv4F=90J(K|M;mJd-(v#WvP7)<>c0X=aFlO)MV9b`m=wZ$21XUis
z&gsXTbMT6Haj2~8O22Yh7^{myq7Iu8hPp?AX;pTp7JY=Tj>^*Gh+6k_4*vCwa}Bt9
z<hpf>TO2N7hoNW|`efKR#2!*O4gy{AW0F?gK0}a3MS|iugI$~YzEy`5eiS`@gmEH+
z|2X3|^}!#f1~`@?7>ZeSr_t91DI~;jmT{Z<5M=zP)bj}OPbuWO9(L@fLB?&gn!`U0
zqt|{s{*@CB15{8j{L?}-q{zmm<Gs<-4aA8I{%aYxsoyrjpW=p`xF-Ioyf-nxn(GH$
zU(7@ngVx**jLWS0x++}We=eUZTm_Hvl!rFg^i<&`;xRZF><=N`Wsc!oQlt-2;kFX2
zGz2*|b4MD23Xk%GcXMl%h8A$@W35IX(VBaRaWz(jAC|XE=Tg1sav_#GVaO?5KGo=d
zcnEv&a1Ed1Jv<W<`rtV_56@=YMynOX!wcE<hZh6Z1vxqoFJat9OM(g)@9Du=<-_X%
z>w+Aehc_{9qtz<vVSIjo#}#ANykfw*AkW5my%?9lTBT;`JhK#QNpH}a*B6Z*Joa$j
zKtqq>A58pR@lP7?byWiO@@De9ga~F2>t_)#c`Q^v+vBA1ac}v2Rl-zR`0Kiz{s*o3
z1!%}4WkBH}VIVeN#Z=0zI+Oq}$t^=e5s`9j_)5kVe<S+DznXEI`pAvK_o1gpR^bN(
zeoNadXF}{zLm+`Z48)Y9hC}fi#HS>&_-1dp_*TYkwB%TVnxOT_&1gIvdt@l%Hd<{U
zk1Rk>OKrD7M1~&nSO0>LOOPpyJ+cc7UWRrvZll!=oj}iv{}kgkT8)2!s39OSBfhR_
zA_uJnG>|;)*)x}5POk(DsFd5(Z;RA|94TM08eHV4jZJq*rj{L=-c}0>-T|9FvINP&
zQ(AHeH&VOcG~+f}&A`v8M~ey7w)+>feqJO$%l~<q_~d1h^>Yf1Zjfv2=PLKMkammp
z=Tma<Ph;HVUn6R-_~&Op_hVy+I=5mU16$ZnI`qFIWc#REs2)8Ex>ij5Ml$PBiUi?2
zTV1?W%+`sE!k~E!Xi*{KHd-xGi-w}-#eW;)Hd>t@Z+OOI{;@@Bz_O;?04<sUZqjFC
z)8!sT&&$qZjN52+{?+Jt@vjv)u1{?2=mI$=(W2ep@^Z*5HO~B^Bi{V=LB_>^wVJJ0
z5x2phIaIGAt|F8ma?q;pg@zn5YPtRfV18_>M9yKK_=m_6s;|gFuM%{BeXaO#u)dy;
zSoJ5s?-9ZJQ;geaHGlt~8i(QU|5M{I{QZA3A+76Akh-At|K<|j5C05-$B5bE0QH!>
z-ikf8mjtmX2RI{-?PJ_Vt2z8Q1<Ql~@eYjJXm$Sn=;{0kA_uL<2MQb|WjOqJ4G10%
zKfYK9e8thnmoRRl)eJu|0X=Olt7Z0yDU1ud({V^n1As?QY)0eZ=@Y8PZQ^TNf1gk_
zZba^h7I2Xs8=LOXyJEGee1b|$FS%A?3tGRp7LDd`cM1gI6hUqAadG^v;VHWJ_KP~F
z?1<RG*F1XAr%k^|h>OIS^@}aIeb629T;8OSbS@r+Mzhs5&iI&Yyn8d_;~1C8^11vf
z$c(%EQSi&J82A_0IEl}3DZIEA*#BZPeVOZI*5E18#q&XH^Qrw!JpRRxF|KUTA%@04
z1<@9lHvUGjC>JkIg8m*h(_VVnYq-u`oN;RVQm~%v=|o1;RsWOaPNWN6i$6)V*{0do
zeLMQF_~amY_V?rpAu+&ul1iq{WncF=GwxtqxvcP=LP7bHR3f@u1Iy9!s2f&zn&nO#
za!o9E*1($?Kkt;SL+GEp$aLio(;IwpKn($rqVk5`*?Nje4F=v|mZp;L>qPJjNO6N%
zqKc0D%6N39vSA3yurpK{sc5JI<}ueBjsd4MoBS8V6e@p;78@;o#bxNj&!>Wni@wk2
z;vxAqb?YhdN~^;1r{Iu}u5k?mPmx0&HS<*MvR6?vPt`do#IyXVIM}9nh$nz~somwI
zx8V5w)LziF{1#WBPk!%5qb&(RF8!yDGJiSo`Fy>^fAF8cj;6=OGr+y{TtNIQ@cSZ{
z1wsR?B@<biwHC9rB{Q<My7(+7vH^FC<4#pCyvD*>vK)K|u^GWzvf0p^L?5GDV$6nO
zh4197EWvN>(bpA!>67PUzwG2B@PK*D`epAdjqVixrK(4pEcn{+TJ${X>6deXx7AA<
zzglu^&~-g4(GxFYlp$*O6t4ikTulUQW!SLi;&>)ZT(SQ0G+-}FYKGb**XHrk93xz+
zMkpO{Jzm-u(ruY<!^I5j3ZjioH-Hxge?bR_rDvSf&oEbiRRZ$;*o^G`$`(V&vwk(+
zsX9s$zluBd*Jy?O6}~Ahk)2}c{1x&g`pbMm#_9YbUZ2u4<V0S?8v%QU$bq1>tVAv@
z%Z3QU{$<r7yT!{M1Gz0kzTyn?FLA1H$y~gQ%FB<99aNKHS%UTKRMuTL@X|H-6SEvL
z?U8?n7P2;zZqyu_IE35Sw4gb(JgmTG#K^e~SeqVSk3r~TsLn{jDf+T5+6eeYaS|^A
zm_l@HGMm00)z~LFW5&7oLXbT|;NVx3kwd?;(W(7R40tOTHO0k;S@AB$*&i2A0bh&F
z99RqUvxCKH^vS_@7*~1}{x0yfG+<NFg=H^cfn45!<&5%O9%kG|s|9>{g&0ttwR}3s
z`<FkV`bpW}FIR}=8IkG#v3?zdxcfyaUpuFi^aU;P8#3AibxNH$-o10RuLqR|F;t?V
zh^b5|9G}(FQ=Y$`M<qV-*T{g^5$o4foE{bS>peN}V>$2(Vjw-Nr^#^-g-?$cfqZ%z
z$ZZLBEBEP{jLTuP;W!0EW#m~;uW_pS(d2!4zg$$GKITNWh|m1Qmr<XQM?(KIHqWMK
z)U<!5)(L$?DxP`5X&#b~1^<~fFh-?nB>S1YS<d--B+*BVpE<y|im}3vi5SP8Ih7^n
zI{(aR#%;7(bv$z(y|y6udejp+Xsw_rqUTcK0pK3fXGI7}{jSgX)6cM6t%x|$w*!S8
zR?r-t;q2cM=<OW&eIVeR-4X~D^k@Z2CZh5TW<@Q!9xK9%>?4b>W1Qs{pw(P+@rAO?
zR;-a(S<%F;yg2Yb+n)3HEFKi;L1(4-bs&+jXYm_sTamvy!4R{aRa0C}F<&uz{H#g}
z2j9h;;E~7Fe^yO#smD#mvqyLYHd-wiD-lHB8_uxD17ZKleq6;XD*$>_@yh9np*{yg
zqnO|L0U}wpE8pc|Ki6Ik`?;=y;W?Wbo~u#}b<D7k+oh6`1N)pjN?c|=M@wRsYfk+4
zc*v<Z02~>9P8FAmm%{Nz3;Y6)-%5z*u>A?Xi<P*6JxMGS1`}&ke+$pJ1m`k=pH$q5
zj1@7%s#0cHRV7_s73H>8Fp68OR5P5>?o^rZaMfZoS}nQw62_VTiYn$`md)?tG>tu`
z#j2fRTKJs3KMREXtGFUpz2n&11BHE89W}H?(I>B3(PU|J8va0sf5M4=-idF+Iqz!f
zX7Ne-YFbRR(e`X&Jj^)f!^Mk$d+F(I=t;7kz5>6+UFmx&0x9-VG}utIoD~gq%3h&?
zROFBwl`VHgDa(yxoCo6KQQ%(ovzL0`6{H4%Ts;$we#6)$)Pdlo=rJMS*3lIzvP&3O
z4k?@l>ZONP3pYc~ycYrmvDKRl9V$p$a_CU2Q90=N>p6)2V^GE+!o?4Q?B$DGjhqKw
z30Se!$HAmch@NruN$E*6UczdMD<`TX|8F{=)%7Sm<gMp7<AJ~7b8dYc-?9Hq9XeU-
z3i@#3H%rCEOP=+cJv{G!bC8#;-<)A&O?yVx^b~8z8vOP*j@mt}H6x&drY}tn_b+Iz
znJoF_x8lmzs2R=!iWCtq*q%nC4amh;ILQ=V!a+%*F__wqI`I_Fyw|AXG8f2|HQ*(+
zXXHWad7rof%(I@yH=o4&M4rbZuQ*reVLe|7PPbNkzAKYb^!bra6;=iR^YS=a{yeE1
zh|O@}`GvqdqWSz1C;fN0_PiRgaxKI9<;@=d^V^;1Kgdo>T&O>fr56|K;y32oQA`bU
zYn?Cu7U)*Fmf|+egWMmOHk$l2`Uu2YinkVD7snU5{)m;{7N_UsYv+N@V=!x1V4*Dp
z&Ge>`qque}>*u_xD6ZWhqqugzu=8D-BpyLrtLB9gZw4Q^eS+1h;3*tm-h|uE`+vb3
zFV+<}b~7TlPQKy8zpl4a_8#@Gb;{DzmdYYncZ0kJSr_GEURNuMd4RQU0h?j-y|zp9
z>mJQE@8b2Wal0t)bqAF~oF<A>pGKb`;K#P)$wA`~MHnp!vv}Gx*2BUKY(`)k*EsQC
z<Ni})3be2Ow3yX+0JxUtD+i&EfHk%-t^%fT%w$|7lsB4z4zZjWXod5K@r@Uq#4c3x
z3$#dSb#x{954$g5U4Z^}FF3FM3@O=AEv|YhH=JU24s6GSWZxKOoZWPBxZCbB(2Q_w
z#MS5zk;;uV+%6URi#I00>k+<<=Oq2NGz<?qelJVDB;~jGA<3R}vGLoK+BqpN*ftH}
z79X|YeJU|)(=6zs$!z$xX+5y^*yI@37dBxZA=$KvaXH2|oP73}W1A>-UV7dkyes~h
zisaea#1|<i9)d5@L4t5Y?#2E&_y_0Um$yIKz39aD;%j{`E(V)cdJ!9ajQ2%~jaC{i
zzCxTyPqJQA0a1Z^mjySY)%|2VN#klW)c&Sg$)BVIv>9r{LwrG)lqdIjR<epu;*)WR
z^u%W5E{TVu=r;53K=Qr%Rr>Fs;C)K|?{XyVcY7e@k<86u;95?4rqD-_HW%l>doj+r
za`~?%+}ZeApkSJd^)+;m52TwGRxOS_6+YPD=K|e)o58Q}$>QYx`pxq}KY&f<3p?}&
zI}6YdE`22sf54q9u^h)XQ+-6R8RVBpofeX6Iu=0eB~quk?c$GS^Q+;%^jJ2(i$5*!
zdz8QHtD6CkftA?;E`AnxTYdQ=70iE;aUOuex5)Y$U~TEm3b~NgiT)OmEYPIjdKZ^(
zjPP&4Du(y!PO`Sl%~nuNchTYL78N2^;NlG+dsNw$#vJ$-VJOeqvVYl}K;h6WX)LQ0
zVx#=GoCc<)#C4b=qot&0)3P@Lg`-qKy-X8RC+|TY?!VlNaU(7-=ZMS8d^Pzpeu<mj
zH*CFJOYT;_Tn{}S!+m*4w*Cpt=#yPqc{G1qe7QKKdKtH0G09^uC&4xin-PVV;l9_Y
z*48oL^{9`n6WE*@CTDN!M8-LLJrzDh=)r&_!7ViL8)f7-D^ls+Iy+lYHBO#zf)i7f
zzE#Z(Whe!H#9^zN8Okx9&|7InYVlEN-b!)v8X(Q2wgp!Cn`doZ!-?9OqC~~E(iHYc
z)Yg;U^|p;1^BC~9fsFHjR3Nrd1~h(EfZN6i-2DiCy-P4t!x7kKrbgkE8qGlUVe}En
zZB!;&#9aI=a5rMGuhxcb7g<1so^!w5oGJ?Mz>18L*d8|Yu%p`x8CNMMoZf=9o#veD
z5k8)&L!a>8j7xzwJVy$)=Sac!!O){esG0TO?DG|7g-8+P(IfT>7&OP+NWD^-<yad&
zDhIz=102CuWDTfEwO-A(S18r`O$U{tR~CSvk3=alW|JzuSL(q}>Eq=>z2oVX)j9O6
zWn4r&=3DP7I%EiNq+WRkxJT+<Ij$>$9>sr(`GtYDRKIf8&_fSYQ*FF*-VhK^S_iEi
zG%DTjT=c=eBfBWu-=uJgfX@Fg^9K$5XN;qWV?scAsssuRfq5)Y%(&uLid1ncT=5SE
zzn;ow*3(vV-zLPZdgB)X+whUBNE&cMy+fYz#&(!BqYRlfqj0k}cs+4{LQvUJcq8mn
zHjEnEv0M0srIn^DeqKy1Ks)vdf?M@2ew1;=f6ys=3oEobncC3`x`(0P6Q)O!Ps)Bz
zr9ilHnDL#Ia-E+Cz7r|W;+J^L+Bwh=;90j*rBE4Q{0~YI52R-b@~F)}P>E;`xwz8L
zdR%-7@neNn5uCtR6@OTkt;oe!GHx1Poz3qWFd{zT1Mrcf$2ES~U#|$e`hnnau-r8Z
zcpq$B1K7h~(AuSHj2)W5HM46m$XX;^yaBkOA6bN=q!WJx7dfw%ewBgfui`E2hl#!i
z^ikLhM_xVYl+DE_i>Ya#>AB~WrDia0q|*ICJ|m*3+1dOmqA7e~NSp?yHu8nsZhov{
zcYrCoBXr*3-(4#DF>7}es*Ewykap8i&<jV5yiSC7uLXbG3g?Sdp-*}?GcJeLhHnSH
z)fs)XqXj1@F<!<lc;kNzc{}mPG2qwYtK#y<ag0kR*1I^(Y593pyFJeL4&%0<_)Rqr
z6?>+5tJp)XS7S3$j^9+v>_njdgm=9S58$JuKRNG1zyD8XoY2XR_+a(VkntMxpH;wQ
z&V60u#2B>xyaNpdm;>qJJDujg!B7(}k#Lt~fYqdmLn_!XxmhY`nv0f3CKa^d_>T4C
zxbf8Fyn*|o{-$QWvGbRJ6Tzp*G3zfqA>@&rzmy;g9#3}t#RfkaHA3<iI#e9M#v{WX
z{({zDMxh~GIz}M=fK&D#bV~Zs*E;uMB5JAKFfD~XnD&toZB#BEaU%c5^1ZK;=^PE0
zPR@AAsXQzGCh(D+83w<?>wtR%XP->hJ??0`#=%I6_MsueY(S-FA4R|;zx&={ej{zK
zwHJ9Wel5syQlBqE#RxmE6*|rDi%%fwzMuRVHhq3ZnT^CWvk`^gAnp^Ezc!TVtlmF}
z<tVP2oQv~)#@FP1#`4#w8g;uhEI&V6KB91Zftv19zJ{et_-(E$wJg8hkXJY!EEDnv
zWxKztya~C#Oiq*i_(&boB+uH9n`-pn+5X*5{212m{gfANK#^8yX#akBr~36Gp`iTr
z-pt1Vxr*2j@7Mb>F7xDb@qR*n;_EX(*Yd6k@pUy_IlnHxESrD&N%YAM1w<=c7sqc)
z&^qw?b}_&n*6Vb_;m1~h4S%8S^dAZii);GV)AE}BKnUnGY|KVX#CD(rvwH+~O`Ph>
zL+t^YAbO%x=#w5*034Ty!s|d*FRea6gVlv=(I?^MJeUKknL%k$3`v>h1A7GHaO*$@
zj2`px4OQoywg{Prg*OHpiWNS@Df<ULHfzYCu2C$Sv1St2vic)354Fv79<61`#i`8o
z=ruC`R_2%PZBSWl-j%J##g7R5mai-$&BwC^)bjGz2yhR>f3=-ZQ9eG!`|A^6@Ce*r
z@f~b1OtSt;%dv-smO|iK2&VJIY3apy8CsujgNu(uPs{aH6+{kNEqFu!rTK*uTZ}@w
ziZjwO-;j&2++&POJHD$FzS6*zp6yQZSfJbWyFu36p23-GIl#D$7H+$Evk+@{K|Z(f
zCVpZZ#~1&bW#TBAXT3Q>&c8QDi!-Yp)|-@SkAS{8Pn<0J-%PTm?P5N@xkt=L|C?zi
zz8CA!!5bj%F)t7Dr>O^NJ<-Ehg+9V~a4zF2914%ib?mK>@Xv3(<$UjG$HL*(TU2r$
zfp}{m<2G6?5N}bwJjV4_ja(q#nhm<{SR8#g_Lk|G!WYT~Qv42~hu%XGh<o8fyz#?1
z;(mCilRSZp{jF5Qz5H)9?lwQ$-xNn5e*P_cMQFq2({eHE?>PeSZX@J99DT1pa6Q21
zq@nlJ+95NwVTQtQ2HnH4_iiJ+AO1-J*R%IV1M@Kaepg;S-=|vgVi?b>=KJ$<Fl++u
z;rjb(xiVaT|DaqJ-#?Nq_h47_5!?5V8u;amt5u7azgew}pJ0Br<Km~XaaaFof#af)
z1s+re&a(g;c#sw?a_A!Cil6Z`Ep*zzA1spm=?(_J!UMp6fK41NoeST}&+lQSdjjwX
zd%8?SsW@E?y0)TPgV2Xl>FHuk8DOPpDrsKK;&XsBO(nurSQOqM7o{{F0LAsFKb>)!
zyX2$2Alldm#fCl(^9Q{QeF`55ysZ-5YmpBoFfQ%4;j~_9{;G=pK#l_+OS8i+VTF_a
z7$>P4MHAbaEj~MgKH~9#TB>d8`!=}v9`yA1RS+5c2heD4%s$6>3*+pCiys7z^EIc#
zt9S_RgLlP3T>Jro;B^9Yv{p=-N!HN?h8a3Q!u-)k8CPZ$zAT$xW%KCM+59dp&*;jJ
z%A$4;^|O_}v)OVA{|A0<jLroA(Nj2@XZ_;_@$5to>mOB+@HnRYqrpjBN$(^5hf>MY
zMCIup#xzm*F|06;<0|WzDj+qzc)lO&ojqhV9gkg`jjMTmtZ(*^T)aPUk3u{)Q1EN>
zT^Synt;jVzlyT)~A^OPKvD?s)0hu$mqK{Pq(`K4lH;&QFa7(Pjw?Qos$3__fyg(eo
zuXQ0Q?T$I0d@H{&W*w^qpU2v8OigWeP!+?m`Pq71+$h2aBjBR}Ey?D0@uk4!Esx4$
zE18FF(U0T`+0~450lWBi;C^fc*zl*;t7H4cdNs*9b_l2&72gI|@EyiYg-5da-9a7A
z=6CUoT;KlLUaoKd#J5yXetrL`W{?URuV4RE17y3iTAk+8_!w4|??2aO+i~%&z}w2r
zJ<$Gh7voZ28@@-}ZoAC-CoRN!gi4(<oF(>FE6s5#H?5pp90L(orN<lPRq6321soGV
z?D%Px<RLy(i$3yv{A{*H7r&UzuPlk*i1qN`!_naPsK*cMf$Kk8VR1o!xKR+=ilG#J
zIMg~2jaCCHcdazTG{Y{gW*84ltzxZehKX2r!m7{9UTYPHrnN@w#H`l&*(O!lwJylU
zRSa4m&347*U!0A*{7bU+xUMfFoK_rFUwj;HT`nH#gJ-L=CDoCuRTZ8Mx^_fsO`+$J
zg;pHF+EIXb=3x(iLF=P18ZFo=Mjwef(>!wtc(4a|Jt{w{f}mcgoYjw}=fJ59JRJLI
zr<j5MkKX00o{uu#j3?R)#>x|s9P~js@X5e+M~M$3KT*fmT_={yHQ@wqdDA)1iFd^a
z%TJsDpB5T5F;1LfoO7n|fAy0`&3{#hcH+OrWXr2!_}92>c^97oylu^Jk0Ae=#<;ZC
zhS#z^oU0)t<^S57Lw;Wl`DT{S@N_uYNv;$pBM|U-;PGTX)DYE$Q9~z30n-9CCxAX8
zd{PC#ral&Ph0j1w=kG*h@Xr+ZE$(a(uL>gq9n!SOT-Cq=G(8FD$hdeyToA@iZURj=
zq#W36;L3p=jB{pPhbe-jN8yUU1z4M3?QfzQCx71&xO=wRMmQ<Hbw9xRxObMMuP2Y_
z<GzgZh+JIW1B`t<G)vA^{PAsBa&7p89Q>-*q@6bY_2Bo2*vB$r?ugu6evHEm4xr^9
zQz$gSx)AyZ#m9#jx2f;j;Ns`_3gr|Sy*>jtMboqyn^A11s`yml)NBwBU@OPw{spa5
zR4jzcp)m#cZtUtF@`81WrVZgXHu6y6_{tlOy!U@n3{;a-Mezxxig0Pijfna4+E+D#
z2a))MW`ka=3U|7k4|FU3gfi6un{t~}lNgRs6yQ&0qN}-~0x5o#n{XSO7T`}BcvgRs
z5Ia4rPiQu@Rjco+1PQ>xW~a)+HQp!kzHgrOi8^)o1m!Be2AB!3j!f8FN2XZn$dt0x
z%pkQ>A$BHN8Jr(@B{~y_N{>Wm9s{lqnDdfZ%(#tK%U4F;>CLk;jmoqdPzK*(6emX+
zoc>`z1FVd3a-)*|sUIr!XtL2yLqfxF>(df2cpSz)?azX;8r>@Tl=@x@ReU~`@#$fG
z8qJ}3Iy?WVJjDa&(j1&J(|OjXTZBl=`m`wrC(TNlBhp*!&|lE{lol?+RS^;lT>P}T
zM=nm&vg0wj(<6b4uQaoPs}cZ6(I{Cbr=vWm)3s_xjxNtSy;L9rtkWwY;$?I-<2G8Y
z08Z}_6E=4GDA2Y#Z+}w*vBCCn#%=23!4!p`r5-lv>xQ~gA_uL1hZ(o2kA*?u*P^HK
zs|DfTazXeX6+L%F`1cJEpu*y%%vz3pGB8NoxBWN1_<?65!~Y%yRMT6BGp#&a>DA$|
zE7)7mw8JL-Z1?F&#wnSE%cQyZnW4aReKz_qd&W$f!fAoh`GvmVB<svLCP)Jt>LkHB
zGs6%Vfj${nZ15|5EAY0&xC_u3d_jd4pfgSU{QntzvLwC{K)>!TChlkW5Kg=_;4`_v
z#H`P3D8rJXf{H!-1+C92(deV-&$u}Vg-<c~Ioh91V_Xed;j@7I>7f>tO<u=8+nhrY
zjhY-X740(kl|#D?euW<f{suO(>kNN9aB2BxRO$LyL+DcssL~0yv1!MIv+4u+v*e2(
zn=yv7LxJfEdC+H7$rxie>s>O|Svr{MV-|8j>+Ed8e~5pwhTT#+J3oiOGR94QwKgb+
zlmQiN#qZn~$nWN_D|1qT{K9foxo3~$Fn888=fv~#yWPavKgW=~4q=~Dn3}P1II)Mn
zp!NAMakz<DpVPPxV3TeU6@Orui-vGH3<B{7d@mY354`kzzR$pI^ogHz5WkI$5-wWc
zE$C@aU~Q<YAUX(#h=5HRZo}VU+(xUdd7ocIPj`qTa;^j8N{_<B8b2nB>(RMFCfI0o
zd=z?ZYlFKupBuxtjTSDbMf+S0dLGB&b2EtxTRAq;kJP|^&^kvc&_~RreJ&2%V=A0`
zl=+n+o`&ZhGxR8YiNVh)JGYGN>xLC!y`f0qY2aQC9XAZv=+nSXFfRI9q)#zkPKy<V
zVhA-5IE_YkNa1H0S0iTp3p2+GSE*F|e6I9GG3&9>lHGho7$gtSUr<hs9Fb#RjAL9C
z6Q}5lnFc=>*%xySd<6QWC&yy)g-j{Jp$sU2&4!{XR<w(8#jo()2EQ8MUIVXSJuQse
z)Q=$~O5hL^R0szV14f{xp)#x#sdY>7+sv<OK=CU*ZVeD0?1u249!vh>G<Nh9&?ySx
zss?Q8LqN2^&!eaFs~S-2f-+17pyxalu+A^&z)?&34>!9fRp$#>Kq+E}&Ib)eTodQR
z20uG=-YiO<p682QelZ=~BhUF>h5@dL^SxaG>>v_6J<ng8&9ClJobPM!D?OAdii8?i
zKVcuC7@SRT72V7@=UAOyo*!!P2hgWbS7zgNYQz&6H}#nB6T0FYE1H(A$Td6@I4#X`
z1U{F)j&Ek1U%(8~lJBY{`s5kSH%-vR<yUtr&o2kvkBxGVKXqPwekD2{$Aa^#8Mo0Q
zsOng7ehr;Rm!IDRuuaT&RTFW+jm?a+|1Q2oKEHH+7wCGe7O~uJ#%=1iP1^IMS9g0m
zkzwaB&JHN+JRCv^|4%106k8Lgvse9RNUcTyBv2!+3;u%_d*HgD@;~t$deyjO*xhja
zhy12E*x0l%{pXyM3gvgRsBW^{cgifhsK=GRKn3U_f1%0{r1Zhv3$&bTaqsGL8gM#a
z(3QwUA1~})KNCGY%%x18&A3hdwuyFO^|H(IyNNI1lX8{33^74zqf-WQJD*eAonCbF
z-y(Sv^uN79)|}}*Nb>);FXODo#qo3G;>QO5Tfx^H|DCRO7OI^UV#ja&S3cnS-*?4_
zojt7oo`KR8*o@3xluuUrFNU1x)#Tm9(X8s?EVa|XuXDNBDDT2v+#+}fSQk&Tr!uX+
z-ZuIe@kLsKwMg`~(FgvePd=9OWhYkfr5OSa*_UPr6fW;A`oA3P#F4k+FNZ>}Zioto
z3=LyLqZ~U-eB%thTIP!~-*n~BTxL`w;tBKR0z-kq`K$e3F6Hojx!S3{iXJiha=jsO
zm`x_x<W6OBpJB3r8Cwhm3YRa+_kVdzDKN88%?ivcNIZ;7vP=-E4*O&phKGGoNPP7S
zHQdfv-|JXII|@6^4;vfJ1BKU!OW)yPe+aOLLceiDQi6Uu5a>r9R_Grh6b=acXEH-M
zTFs*0oRLZp&p#c;hx}px0YflK^1-mbh4C`#V+c`dfQ!#|3jO{IPU`D;31m1g$58UH
zCU|@|Ae=WDdj5bdd!mK&;_|jYI4_}g_Bfeicse(nx1T;wD)i^I3Y*2@ybF-`2w!{W
zxyx~h*goV$uE5=v_7Sj6`>Lt-I3e*^-NWrifmdJF>d?oS+taG3r&Hlk;9hPl1g;+q
z!gAV$+b20)m-O_Oyu=ogZg7;~CFAAV7`|i{-9o;+NBENZ92(X*X?(?Cc=!@JgzAHd
zqL0B`vYBxsu^ozl)8)L8mkzkz?up=cm`tlOEO&^5X~tI>JE9iBkQeSa!buLwFRbi1
z6HK}X9JY>TO)7jl`2B5)!{iY>4s>$t%aP6iofm%fn?2z`61Ybi0(-pi{2UdVUy_5r
zLg4to#0X7(!fEK9U+CQ2BR_=Kv3;*cezyWOV+%%e#tLxH7a7Y77wlBXLC#@8tGB^|
zjHvf^1<sS*^ShN_N+%s2<GXY`aF2LhiZ{d2fi!$6J~x2rSoqRr6nrtbjR9PG2$-Is
zYV;BDOW$GKrheP{b?I^RH2(RuL<au}#%=2RHn{j{^x6-@zjDGg!bS8*k&R8mI}Jro
z!&Njp;WdzANS*M3fEZFIRmQBjj*F<%Rzrirn}B-+u~Q54n|f4eY|tqLO3%9#N;>a1
zV%g~^2y~t#6_F7Bg5gexnZU~=BL4$Fg*`HE@}Fkh<Ub3X7Hi@c*Bxku0XmEk!4#kv
z{~eoQpfi;W;Rb(aDiAHXbv5W?0G)d=Zc`tT06s+!dZVig)Dj&6>L6xQ9|8);{Pn8B
z&fshJZEzY9?L5K>^`tuPJlbjafDQzmCp!tO1noLIS6+dM(K!yGX&!=0q429`@8QlX
zgq}&^&d61k=Un%lRejr_ljn>F`=Y0hl#3zQpK%+lRwO}uUj_%P@}PNspyY;vTQ75k
zSBVA1A5_P};7MLQf;imLD%_=1wB=paLxXm1e06{v2!^|CW}K7j;`kWpdvv_-veys{
zu^?5DcBXi>!kg)d|3ZHVuWrHW9t(%4EU1JyTj4=cL8u<B#{>&4&%wVj2Y*uzekybE
z%XnPRSBoJA!y&43Jrt$rBNP@nspCbAcgV&gwTx3T^$4(jYoLbHH{7mP25xq$uEWW*
zMcLE@U4>Qhz5HPdXV3U4ue`9;sCEttQhC@q%Cc%u98K#)w$7^+?tJ@ufx-dd@NI@%
z0DTNPJkpR;c$KgW!D)t|jXnv^U|ftEgH$-4UZRVta5yP6^azJ{FsE|40)5i3+X;OQ
zl@i9!qoQKU!?c3x@mH=KVO&{KI9{FoH!9J~dS?r&cwW{wThPV(@z^e-v1!wEehPhf
zb{UP0aA|Rai_a6Y3l<k*!T9Qz7sHn&Ak>Vl0Gs;<h1==FfWqR-4g&P3`OD6U`Cr^M
z$C111c&A|v6-3t+^ei^U+;uH9X|Br!J{a!0o^f{F#ql_>6x?bE(x-<Qb63ieHs+YZ
z@eNT3#=>3q8G<xjNU+5aWc+fPHkyYjh?j?fx23uLP0P`Tp3BwY#HKzD{V8gIQ+D;w
zG3GZhL7!(}aTN_F0c<w$L6PD&7S|Zp(d9$IrSZG?FyJ&8O6Iq)T~>sD<dK>)vY^`x
zj{>=EUbo?+#ZkzA`FL@eG4b*m@59aINytybMh4x#V7M@djz=U5Rm6-kEtD5|dEr95
z=UlA8-Ds$ru^F1XH3IXf$8ITjNTW0PTY!1wuA7>=(i3;&MIrE4IJ3G3tO4PoLEe+5
zXf&9bziO<gPE3l*q9;J}aI)xW;0LggqwZfYT(lA$!lg4z0lr^c-}}Qw&Vzk$)mL=Z
ziC{S{FFFsFwn6!>t|AfetK$UgQFwRXGR(yR;qGKtOG_*y<+@W{>h+{>b(-B>o@NgZ
zcW?HNNcWS_0Gb*8V$$RhiQ*C&sbWOflTM4jN2H1?881WY{sqIub@Jv*xEMEI`r!Pj
z*tzn${BFg?>%pW)Do#S+-{hpO$4XwDq{zg=JxHI2pFL<sdErUKfu^}pZaww__c%rF
zv5#@X@18<GEqR8bo@=}f_oTX|RLK(Bpi<bAN`i1{z{Rh~F|aG>N>kmVxCZ<3FBra}
z8haiiz5?%l#`VeY@D*FUOW+DzHh7i56=%E^_G&MWAiZdf@-Wz|nh#yQqTU93&B`G-
zPu5nih8%P?+l*P*Yc=>iW??V<7B=pS#==)dycJ$aXZ;j=BZuOhvOo5~>wvxQf!70j
zzynVJ`{pnY0!}c!E;p`h0&hPLe%v?2os+!ql_$h3@n3mLE+|)?2D3g*lIUZaTzQsp
zSyjHP6@HGUO<p(>auUb!w!?6wCm0{XW`rP82~00nN;VWnMlx<w-?t&A@Nwwr{1GC9
ze<I^H^}!#Z2KW>-;ul<P0yM$`^hlA7O*il;dR_*WFm9vO_25md;<7v<uTx^-tBCGV
zuUFBu_rlE~@ldat0Dcb-uUZOxA2uVDS5c1IPscx5w{Fa?q9l1J>OGBd#b1g(V%B?x
z!LRVS20w0#mFE{ui;3hzPKC|}AB9NaG;ehKO5a+>m3_s(+2B|BNe=bZ;@Npr)zws0
z9wEK@h8(y#0`}zU`G!S>ZvpNR>XJg@r&U?G&N(Y7HWVqm7vqXQf<8iB(wlLc`fb%&
zaxHp#6|zGmeHpjW{)hw=p}!%(F)Ja1dh8WWMW;{bH2UNa6&>M%57$6x>=Qm++|cxw
z#GM8l7u%IMPhOAP4<!^FT}>;q(=w^6QTV&8CL`4NuW2vZ%4=>0zdqhUQqMJ&tVhPp
zR}x^HmIvK#hVgMu`WyM(V$;y|Qm67SN4FuS%uxPyca=JGkx=}L4gPa%ex=02DtxZL
zO?(}EO_~Ruk%72Y2Ec!9i2Egye(fM`M{vzwTO)wtYv;j)N6Gi;N<Yz1=<kEqk>e6F
zFWjeU*~fSrdALs$0)A`-*zni2i2et|eWo)#fv!&Hit4k5=_-{f1&aQTQ#%m1r28C!
zyhp729A(^ybsstt)a`Lh`<w=@rL;uI!B685<Kh%^{S$_+O3_6pIv9~C^*aq{W2NMr
zhrv<`h==2)LB<WoOKEQF4o1;OAWM5OF8O^W3XcH)w$J&jFyAUK?Te0=vHpyk#s)i)
zU6j7k+rXfeW=RA3WEGbZK|0+krNe<fJkD=vA_tChf-HW{=XITA#a&k<EAhI1qF;I4
zK=6Bbe%;NC+h}Pe;_zQL5<TKKMsywS0O2fYK=``-AnFcRppOw<*KFWCkn1i8N6P#5
z23?Q8jXvc1(psrUNa1*;7tM&ib#g#`pWvDCwUh+DhBsK?LmGeoB5{8w7A~v9>Cymb
z<Eer@`~|~h_1^e5W`f-2QTv+`lK&gC8MmpA%lHH}!SFX8MdQW4jBq-f*w}P|&FFav
zY-QX=tMi|r9yU2wH#`!@J{i7<M$3u9Z#)Bh4>lUG^Gw%3L0)(e@{T)o1HyyUVreKF
zw1Ab_XpwlO?54wxT~C7FjCzM_2yl;QoWtMRDDn`yc>?HdqxF@vq7UzHo@n3+#-}hY
zE3J*6949>rPhcN<Y#IpN1Cj&s-#mhGs_=I7fr1op3E!d92tPKihs)1Nf$xkqaCY=N
zNdss8p`jf3FdZ-P`ILd73qc?wMj;MeDk4>ROOY;!*QN&0#|UpR9b*S>neNR$Y`^%m
z)L8gdC~S8Jm<)rrjsb1~mm$Lr{RP9fj$@od?BaDf^q^op_3R+LE5uDjO=6@IZ+#cE
zI5yL<<G}P<$)Hb;onoBzl_;Dd5yxiex$T^jc!~~}w~r7zv2evuaA{R?+j#V$x#Bj)
zrDngvzf0b0MN){xg808X$iNXAfs;Nj{&|F>2$YM3N?^GmP~$|to!{+Fwo^IGAhTE{
z+41-=yHeQE%qTthT@<W_6DylQo6$zc9{z&i%429e{2os6&~dgue6oSFo#6{*4G&+F
zgH9Rq&^IDSoJWih%lf47h#U$>obgt8M<?VNpJ=OiV-J79@E!fo=nk;scgWB5C*JXd
zLFWPA(P-c`=##!C16TZJKo$Q<5un(}YHzubvkaW&MlLsSwli{zfiwU2;s(zA-`gl~
zEQdT-R7F>r8DN2`67N7(4KobXqmO`8B@A5Y*{S2OuMFP_16dhifje&i?or}*jyCw&
z@Ti3bz8rlxG|DVF;=cogyQmDNV>6b&yE-r~*8+6t5Bvc%9;I_vg;-|?gzt)iA&$*h
zhR9*D=v+%XSlJTvKNubzaFUgHY%qi#tx1YZ4ig#YYDA8pr;*!JpU9<>OkV2bD3b?C
zvTcx)Os<gRs%-N2s87nPB{`Z+zB9z+8cD7-$QdT%q>Ma|XOl-$pOn{2azi%x`&CR{
zF3E{(@|Xyd8zniJO&&{BQodc1Q|M`7sU|9sn<Tl}AlEYauq3AqGO?3%t0ZT#$#>gK
zKIf$Gz__WW*}l6$lD{92<d8v5Gr35TBiUpejPVx?f4@|c%M5ay$%7=>&L-bO#z?wC
zlB*1I1Cy&IIhsu#A7OHhB-a|`1e5C|Ii5|vH_GICNhVubSm=aMxVBu96X@yWIQryy
zqa-J@$@dYJ$lE13g`OsTUmSfRH%W4HHaQw%@?l9%8{`C&TO~P@O}@X3$>*HVonOuO
z{Ygn46Od%GrMWgS%4A%bkaWZ#$C+Fz$z)5HPB3|pB-`2K$yH3QkYws=(ht-!xmuE=
z+2pAaCf7(Zacj~wid-kjaZqW|;)M%)_zQ-|)C+RE<xayJ1vvW}laTC5P)Vc7zFm-=
zj(6pE@z01lMR(=*FL=-fBk4*@;#3d|YNHHhB<K+M;|2+i#rH2q=XZ1dOyJB2gZM5q
zfu9pNE5u+#f_+BA;H(B`&}bN(Mc%>SSX&YofmrZRhQTTcZX<9`n!%_9KP0d&%3!So
zyL}(J=VhGI??d<e6ch158hJAZ#De*01``roM_{ah!K4J=CU8L&gDDAi90Tyt1cS{I
zyb+*(QG-)41_tYuL`D)Fl6b6EN>t-H^sy8u0kWFvkOV&`@Nor3B-m#xz$fA?UM9h@
z0R6wHa%#rH;Nl1qt0Zw7Ni0?p_yILC_#uH$Dlcj!*sU7iQwoer@OFUyB@Iq>HFW<n
z#JUrbxQ--#sU(sTd|QAG%$bs4$GgF~G{RuB1aBnpS4wAEf>Qzdmz6nncf+7lCME9n
zIf-!;D3bVff<b)fLEz^EK3&CNM1p<B0emLIV3`ER61c)<(3apLfc}KfSw0R1SJyHz
zDv2MG#2O`0E5UB}5SU=jxCCz}a9xVQ1_{mq=wF|5>hFQ>jY=XZiEop{M&)8kf*r>L
z{GIZmS%NnbxVegTrzJR*z?b6;W+dp0&kyGLwxyiL@%dl7)VG7l<8a$^JcSBmpv_Wf
zTtuRM?j>}mLdzsNR-mu4E8}d5E|O@9HB?D-8_+!8s~M;1UNW1CGPzcgyG<YiyUQ4j
zOZ0Yu{!y82kmwwN{wdA835l))n&;cw;B22j2KGgmoRZ{@_mP3u6xuA&8wI+*fqBys
zohs1R<BVn`>In2eRHFCb+Y$Fsy#dYh9Y{Hc?<2EsC~`!S`$Wm?8)+6QljvB1HpdyY
zCAvtUe~mC&CDCmX%`h63=!Zb_d@WJuT$Iedsf6N^eEa=m_RS;<HAr-hKo6ENnvm!^
zi7MWtMBfIQ=R4T!wBAn!-b%4hvn1a*kqjJaU^Fe!sRDgl8OTV~k!Z8z9q)5OlPGWk
zJ<NK?ha~zr&^+JYqE28Enf+Uuh45_}5*j;+%)Y}0#^Vjagf0^3dp7e{Npzb;s~C++
z^h2O|zV{J0VIZAha$J&cpG*e+*}!OnMCS<fxIz;WT_@0w;>??r=-UFNx6jZKYJ5tf
z9UmaGryHE22WVVhM46nH<f$M7tz|SLQAeUliQemT>?ssDiKZA0N%V7po@WjBMkLy2
zN`BDqyWre7CI9OM;(H$O>0VnB7fr$Pke6XSRTA7r;3Z`YMkV+mf%yuom0-82`CZy|
za{5e#>Q2gTgQU#?t)NqqwIn3Cj=*4u!K4J=Ca_C{!IT6$)&Pvy3^q&fMu7fE(y6Gy
zO4&QX#Ec|5BylzCp5Sw8e?XBEU|e!e2ubjB0_ifA(la3<!9G7Auz|rc362Hmzb53=
z`~U_^BTTH4#BC(e*Jdy(!4C=iAH`WK!EVz4el5YAaS7fI(BI#7s;5DB{}dAwlDLi}
zzOKAUO7Lw0%OcE~l3>Rl5~#$RC3qu&12fE-mf%!?{y|Zv?uRfqn04Rha}v`jP$coK
zsFb)bB*D)K{5I>pFCxJ{(*fR+V9qiLjwSGR1=<o^1knGzq_ccF3|5f<;(cFK5<et~
zsyKtS672RPfOjg_;u5@_z`KMz#2X|y2cUm+#;N}ibdOE5nxrJYO%l~gA|=6&GYC`$
zn<aRo0Fx}9mf%zZ)kWfc83{T7{dcFG#u+d;u2xD!Lr!uAqW3vTsB5=qM1p-DBrw68
zWfB}q;CP!sTY`%O*vw#+1h)b7-&^K1JqUyM@?fI1lGv>lY9@qOA}+z(35;eKY>?m_
z0`G5NFd@Np0R5BV&h}d9o|Ir>N)kK%7!s3}?q&(zD8MvxrX@I)Ky{50%}CH8aB5U?
z-tTkLKc?~m=%1Q&4*wVir=^$}k;FbTA@Rc`gJlvND?r6*OK_0@)67{V!EFRiZ)Pwm
z!4CoYXOubTX2Rfu879Uh@%EoU;>T4CHb`&|fj=P(ReFCyg6jyJUB+Nif^P%#|1{*Z
z{sg*znr33NB;Gg+5)a22OiOSof%BA_j07D5V@b(5(dUF7qCgQCk1!aL;O7AS@styI
z2nPR`XmD|2nIw*V2ojH`7_=q0h`{;;gH;mTM&M)Y#l)xtKP2$+5OdZ_u-j}Hd>ofU
zvte*?EfX6gaSn(DtCX6A1lJL`&SuV}1m6~5lEIV&JI=vDqtWR$2M3MD1k=)zHWjpj
z7g7vnB<Re+k+I!I_F|IHvFj*M5^a#YlR^^xT%f-t5Fwfrk!YVf9D3W~SAhrB;n3Ue
zMVraCBrgIPXq?e1iEb09aGq2}CHkR6Q_Nc{(QZE_4cnB4xI}LUn%8by!m0i#ncb#@
z5|X@52yItFNr}EK(S#3wFq@KS$GK!+dy3I!iQWh_uif^vQ!$qeyh2nG%1E*!gkFhA
zbh6K>eV76#(Kw?aiGD88W=10t?ej31-4$ZAOrm3f`rG}VGxg#8{+G7f9c5~jq;3;3
zyW@;TCHkR2)p`8nT8Va>NBZ|fm^Uub+a+4XXoE!O0L^Q+r`D;TM}yrHXL3@K-xfl9
z2}B4crzG0(XJnwsX0%zNH%c_YXj-CEf%@CM?#%fa4Xe3KQXlX+iTM;ZA@e57JP?xT
z=K?*b(1<|0mqN51wrjCr?@*eWVEBPDDKvIIIraAlqqamB0nKaoUcy;EpT>72&E%*g
ze<+0Bw;8RKXtx-t`ato<C3?F+|DkvrBsxc+CpfGRBqX{HXkNR2;aCtOvmcXw@--#N
z9phvmlV-G8qBjck^IAsJ5}hj11fv;=;x$Jwa2{8iaWZg`<2oheB;$zd=R)Yqh!mO<
zk!YVs$n2NRjFw4s>?2qn@)T%Ga1nu*uq#ulB)AQr|B?o$=@Beo9Tc%v61y#cM28IP
zj!W=%0z1YTY>?m_0V;zD39chBU^8b@f^P%#2NF)}0vOC!#AZpn@#l~zh_Xalf>Q}p
zXU$VG5_ANZl$=w2PWtCmdI0^wv~&39&}~&QF(Qe57D7$9fx$8fjul{rL0f{02<%E2
z@;kLkg4+nZTyaJv_#r@lHyk_{!eBRLFfNI=|1TtplthCB=MdP-X59$^c5g(tZ5sG{
zC7GO*<n7tyE0vv;BsUpkWwBY34`-7jQS@nCX-RH1$jwa7Nb<RC@>R8xT;p>>L-9qL
znm{(acZlgBrWYCXDyB!6UTV-&OfO^lpltfpWlXo3UXe||#%6jI)2j`7is@0N*JRU6
zqfD=5dYwT}F+I-o`fU1jYWxjMUvAJ7ET3R{V>Z1nk&&I6B-6JWbQQl8)0?vC|3l&=
z-^}#G2EBplX{NVk)B7oUhUw=Fdb5=OfltzZ5Xh!~EyVN?(~Asxg6R>amuA!ZN0?s5
z^g-G5uPgmF(<=<R&GJ=DuQupBz8^%HUSrTxEMLp?I)k2JdYtL?+4SoZOmATN@@)Em
zTBawM-e}O1Oiwa>yFqVedWz{y+4LLZOmAlTVS}DvdYb92+4MmXre~ObE}K3$B<a(9
zl0GevP5-9N^bpgF40?v?5vG@B(}(i-r<E~%kU>}SHq$Gz>9^SEqyDE=F}>QLCzu{(
zdQCQcSQ*o6nO<kmqfC!8z22ZFnBKtj<=OOGo0*<qdSf>IdvT^GnZ7-nUZuvLVtP|H
z{Z106@i#O5utAS7JuT?5SQ`C2Z1N1u*Nx%<`PexFk4rorGVlh*OAS29xNYFgj8_XB
z%at;mVM1-TfcWMb9E#(!^+)py!|{Ycx1CTuo|i4EVtF#44X7x}c&mYv9q4_88l68*
z0PrFMZ(zL4z!L(`3qMlf)GmS}k3<cIlwb%yQfJ`gC>bKfx&vv(8x1_ec*?*jQ>5px
z!0`YIN3?r@2_&c)=uRVpzyhM{c&Wq}Qmf&;6kcZFHuDeCaXfcI-)tfS3vD#IqB_Pa
z44fiB{8a|tDDfv-vvKvIT7z#{0&gp62xOBVi%YSFP&VG5)WA#wjbC%?8?}t%w_fuK
z3S$kW+4Ry3)625)yCaNejo;@}_cR;qZ2k$vNA@eSahJbJ;B5(X9jne3xEo!eD2hfK
zNa<n5YqIgD>KUhjYW!p4jMwQn>^~l1LR=@{2Xc!TCxx1#uWe_%AshdCfbr$ocweO_
zk&TN;UqT^jbP^4Cf`IgDcKW5zCvwV3ZN|xGLvuF$I*K6C4?7J{QDvmF=`W|yCwgl(
zURuNWIRno~{3#!~Q&{{|D4VYQd8$bGGx4d?Z2C()&Zo+<@x^tlcThI||Lgh^c&Dms
z{mVrm_oxt(3gK$?$ZIuRK;l&~rGilrQ?zZg7NfQrR5b0g8WlCRedXA`YWiwl<G|g~
zIs`$CfEby)&T%NlIZhboIANSq2fWtl|E+WOKJ2ymKYu^mcYohnYp=cbc=j1`c~RmC
zj-Ns0!tYDcqVw0Dv3-|h44%p*p6qJzT2~RpOYxbTQRSXM?<FNpsz$q{EMlivW4kZG
zuVY_K#v72^axv01QW<Y@{oNZPbs2&(@?_vt_>jT3h2!#NkH3^Ep*golKvcmm9Ql&u
zjo|HJOFV&8^Cu9IcoL~@FD~&6QeFNiiD!}O@@W?r=Um=1W??`^{?dXWl$Xk7q`J{Z
zC0;?Q8!bt^hE$X92}rz-RF@xgak1|rIMFjp3bhTPriWifiEi}2B~He5qeBw6k?Qgf
zNIZ&ElaEGR{IJkv3H+fcSlhTn=&~eIT_G;<G?(9=V04AcGQ#;Mn)b51!BfG+J4iHp
zyH_P%LaLR&J;{-L8Hpwzm92Fd>FM&y&Y&y5WhRX(qHZX(k*5M0u7baGMoEtF780$1
z9c<(YCq3Pvmc)mU`tm4$hqOmrPKmBSf-rP>5Q(n<`J%)lNHuwNS$TQXkeB`N@|Yn{
za`?t<=<<Z2@D=ieCz0p{BqUA_YYvTyOFV;AmnS*0lS87*%RYH|9xPMHiC77JVpKya
zQcZP(1&NoDY6gR|Bwj(P%aa^AFo;BxAN?JP*O2P+B-b_Su+Zh?fUclw(liv5qisX}
zD&(nP9FSmg?OPNu_>RXf3L@1U=<5>p6__uB7fU{B@U}>~yexN7!r<e=A>MuO0Oc<t
zzjga5QFVD)pG7%?&x)4IOaB)Y4BipJE73q>TENME8HsMcB=IUzEq<ZzNqo?dCpofH
zN21GTCEh@)+b6lMQIkT8T1a(;l`aul)JCc+;4qaO4s|?!fD)Y_l6VlQW-lxq9*A)H
zNhAk{2cm|2M&dD~n*B*6*EQ<6&_DvIUVuB=VJHb)S0FhmAdN(qZ%90YRF_YS%s)`U
z?`$Layus%rUO=kZ`%XgQMWnhtlB4p=NObuH60acD<w=fOWMB}fu26M}&_E5Tt}rM%
zaJct7Z%V#t@C{*K1%5|c@<RsS7Acp{dc25mesVxK;H@3WA5=udMfoo5Z`NPc6ST$#
zC5Whrp0URYGNL&>HYa&XHK!-5!W=_hPOYL~$YY#bjaC^)&XE&kgD*+Eic~9q+~E=@
z=k@YQj_lNt=<>==!;mLAY8BB!sw<En8EPZZ3&1!bha;0c-nFaqLlO@n)$B#21EmPJ
zr;hkaF+;v1?ZgfFsEaQQl~P<`{O_eg+E7SJJZH!cN<44KXC+?X^53;3UPL<lDEv=e
z8BZZWM5<IlqSg4j<RIZyBwB=~lqFtAs>%08gncdTudnP0^p#o$xxZ9uBh`)Jm%*Xb
z|J|C$UqOk^4@o?TR4eR1lA;B@-aQG2lUGDJKjCr_#O3hxJqag1!TH@<$P=DKqLsI2
zLgE?GdC0<xkXPgk0csvnbdYEc?HZAILDX;pbI=uK&QFl@>=hN@dVwXWS2N_(qPQ5N
zd!4F4({*U4&=qaNKvNnRas|SnD+7kWkVsvJ+d<zxWQ`DizOHACHC6h0Wn9|4GRak@
z#yy)?rj^aCA%O3;EKxSkSwc4RQl+G9Rt%Mr6c|)C>xRIfh%Hq%=PxCjO{p^EstgbP
zBOo#uyxsqZ$U^=R<u+mwPvaj6C6F=%;!?nCU$O3bloQKH&{0}NL(7o@WhGEG1j<sN
z<_d`Gmyy|;1Y1h013+v0Sj!W*s!Ix7732bY5s%JxmF<~bbOX%pWlIoeeHFURcLVOB
z#flP4i3YAC#pWA&f)mt5?Nu3&TDf~Aq%e+kVPQ<3(=mMBw*nilT-FolzpB7V-zF8P
z+ssLuWzVZyE96x}f>qb6&{cz6Y098zp(JasvXsL)EjiTWVlh0Ja3gB^>SaA6Lszvq
z2^+Z^$%ZWJ>Ml`(uzTL8`xo?zxH{;$a&=@YGYvA+Phtr9)%Y+9%#4Y1vAt3vwj8c3
zBv-CZauTj&mXnQ`w2^Ub2(cWo*vpY1o?)OC+OS+}p{t41yzS3O;i6ZW5~ug7O1kXX
z+I@v?i%8v8Q3~Unh-y^l^j?^OSHPb?ptVC+8<9tisvxcYnzYgJ{2Agl`hy;QO_%4-
z*p-?;*AS`u(~-iq$gG4vQBKG3+{Q}j&zNhB@J|ufLdDwKmL~8yNHUQ&OjHMMk{0@}
z$#PEh-)nLl-#aBuI<84^>P=ezy#_u}o5AdsQFTq(u;54w_`)PPHOOgn;*RnvbdAvn
zh_k&4ao)QsZM0k)<J;WEUO`EBJbx}+g{_{d(Y0Lz=)m3A21VxPo^d~laMitIp6azW
z$9-+18TOGyT^o1Ji9>Jh89ia|jx>_|Ka8YA;y|39U7PWgZh+E}YHGSR$CdiX2u9kq
zd5-%YIUL_7gFML>UE}Ugb7<Xaub_xku_N%!R=7G1PVm+~MQNty`6#MAqkH#CNwBe%
zQq5JWNxtnW{iwsmRR6zrh~ug%WzyDs-KR~!s8BgbXZE48(N_Hl;oQ<Q)}O!2QLesk
zP^!m0^#rH)?h-AgPL<P2-#0GRGo&tNukIN$-jPs_i|&KlI5=BAQJwmiNlr60F)Q^7
z9G?`Bc#-4#Bqd(r_#|62P|lVbS2(|KM(WjEm#3}i3HDBOB-TKx`2?RcYkJ1*){%6J
z(|%QOBD;vjG;Fz(Uw0Yb5x~K=*g(iNmt#6y9OSwav!b&`b91rH`F#hGN4qYLk(<4X
zDbSi{s_4ZD_k=vOIA!v}S*x4RaDG}0c`~1K+kJ7K(-TvowH9mB0heHHT5Plkx_@vT
zy8pDCv{5D--HY*~CAc}zy}0V8;@oxG47a$(3z$}xx(%=VCa0(3SEf-!??hXQwM~9t
zJ+}HjJ!I0J+I5s@QJZLs81($Uah=g9(;89_M@H+nUQedtqf3Ct+fpjdt%I)Vbdu8u
zTL*<(`ziH|TgWgNrLbL>b5k+*RxNDTIo!s68RXGy*A-n|aqF!;qs29s^aQ%E!<YAA
zMr?w*i}YVt<+^GHxo(i-`xT|lx@Ysy!Jc4GN@Cs(A8{_QEm1QXW52o-MyJ0Wo#weg
ztas`b)slcnp`Z6J3Gz~vH%lTM-*3n>wj}Brn;7G?nkAMPu}6o^+}1O8yc)?%jNnfc
zf4{9~oL_|{X>K+im8E9gQpe;t4eK3P|FvJbWAakHVBjQ&=2}wZxL^4a$KzQkkK1$<
z$%}698Qt#}I%o*zrErbo6Y)6V?HD_8#Wy&Qe%JzU#Vb<3?G-le4y;~&VMAOA(^cXQ
zG-I5cK#i6L4BnA=(8NU!dcD4$&3QOe2HzcTi@`g3_Uu*j+R`MKo0b^36TSQK)jffO
zmS#8?k0Vb$QS|iDPI<zO)|?s@85sM4THcpB5YzP3UCX6Lt4&Klj_iqhR^y{`ODkMW
zb-krkj;nT9N}<z=nHoi&%+)yVyH)47?^e^rx7%{+f*l`D>#QHBIACXeN6)y4Lxz3_
zd6aiOC7K`8utm5Fo$ZO$JtM{XyLy5rs!njd%_UW!uP4tn3##VV#|%7$Je5d}>GF74
z{BCp#6@lxMobSW0MiZ}Ue0_%V@HhwF?G0kt-95pDz6TDMR5z}#FL2y1xyW%9`|C>_
z_dTg_Tn=Qh?>)Gh{(%ZGwu5&gpr_tL1ImF0#h}48<8e{E2iqY()-BHap0^D=i#*w*
z!dOftZnQeBIw;4QUi0{6*xTNV&Ji)x9ZB0JE>bl#g{sD~80S$92mFz$8p{%#SJhaS
z<hYsvm!&xV!yxjg-m;AA<`}B2UQ3)2-;3J#?&L)Z_lmlgIo_UQ_Pw;5lObAG<jU|h
z2jzu6U*^2;YlY*!uT_r!FoQh#T0^3p-|hC_$P->iqB;M=nu`w)Eo*v}YjGa)QtUo-
z>ru2{T-M<v+A#yt`eD;G61pKEVh><1Lh;hdP#yb*h=^SdTO01v7VaCOTzLP0v=w)4
zjY)7C{@C}U?fWPmsLu^4&cmhD{XOG);*!p~R)*yUP;mbZc~e+QIUL_VEAgVME#AH#
zJDQmkfg8$P62%1{KwIx$6wwE;RQPVyx01_2&f0%aT5fr@Yjd$Z+oA!n-aZO6)ozIM
zQw9fct6e;PkQL~zxEEJq+CQ<k`tVNpR<TWCk%6=|gPH@zDsg!XS4ncg88TRvv?~w}
zRjB@21I|bbdqdCEVfb;84e)L<g^>&vxfp`sfVXBSzC!zGv3>*fe`+Vv8RR;Xi=qV`
ze-l(O0ym=~^_uRUywc+8GYTT{Ai30(ViY*dbGVcPZ_SYWjR8@65Hk&hL=#ib_S_gT
z@TO=$-S_UsDCcJekVma<jJsyd&N?|SVs)I-EAMWkAZW#^L40GH<1^#ZEH>}(R){*b
zTx#=rW1b7oXiH&-<EVNKg<CVTk}tW&=9RgaZ??kmnG_1DT9xCz&x0JFS(5T~FBA<<
zPsQE5htN<n3R0}ad3aj|Z_TVreu&z8;&RGq5mVkS4{&^@82vD=iIsE9$$3p}<`CH#
z6<RL7y|!muXnBm&Gtf&O*4k-#g7d!FB*zbkB2Q-1Zb#qva8K|^^-TTpESFV%V0n(?
zzU@564@e_VwhL~@UtZ)i){V>~n9|hVba~n2ktg*E$7d!*5qjP>Wy2$wJMK<cfjP_T
zTx<q;PwGZ9PAN&eX~-8O-tsQ}mv;;vKdJaA+*SH3NL*{68A(rnMS$bz77p~R1El>G
zQIUHTD@=@wsTF1gR#O~ghE^mve?UnDAJfM1iWKJ)Hu9+Mii~GI%jqAsC7tt56ISGf
zjmKNWvd1v9sqNVca#5=iu1*>#^GIKrLZ|bNG+O4k>JTd`98YABCm+#S5rQ!_<aBdc
zk$D`E+CL)2@WdYNLRK`rQ=fsy(bn!NzQSmmzNV-_)89_5Bm<h|{Uf3S-k$_l205P?
z^h#W5yQ5(46Ik8Vc4no~P|CZNanHMz3D3LrP;$NNTbbt8`<l{vhU2)RY&`+5_fJYb
z$9eReU<2_u(3ZSAj>PN+noP|iD@$Alm()4v_)WUfXad+QyEY5brh8l$T3P32qMd;!
z(L44m;Rs}9Q?wpOYqhz^fhCcF%$ArA8GH?SH1<uHHlKvL5%OtOQG>drR${!v>pmlU
zlM!yU>fVHnJq}{}Z%V+b*0idx-IV0`K>_5c__SNRxacXIj!&yfFw2G2jCWJc8~Zmo
zoTqcUrw|W15(?c^<RmrI)2PWo)a+DZ#Vv6nm8CiAmp#aFtp7Qv%d4)Zal62;vUf_<
ze^ZNV_*FJq<e&=V$N_iZ>0Z_4-A7wRk<c80zp-af;OQ@+aaXxLzIRoW%c$9CRZQMi
zc}Cmsu1av>gKgwd?y8hK&#$65XyswQ+d+ALmt2+QJp8erMf?s<Ni&XTrohE;cIiOO
zy9>6e#7Wqwx;7kXqe?dVRvEFLnv`@6spcZCjDs67CzCi;q`~Qft0J+nXV30~5si)T
zbkDYw8xlpj8d$bbi_XmfL%HP%-y9K%CU!z2pTj&s2f*DoV<o^;FQx&Rpc?(=I9FGV
zeKRi3F<Erqj2k#)Mm&epK(%z<obhJ!4P?pJ$Z<=vWPESNh7%TsVcUx1n$XQgC^6}$
zniyyY5{_WpT;XQ?GOHY)+!PM<{5kmM8s{;Fs^F)q#pY%s$iCZ6t~bj;p8RNg6(9G!
zUhyHf;@#CQk$7?INoH0_<et~&sHzQ9TD#AZ4Oxx3^Zv%?wQYVi!DT0A2VQ_FRsAYO
zQ!}NOi)van>I<;t3ug^sM`T{;8MjvvFsfF~o3z9o1IMp6!UumORY_m-0i&P>-Z~^E
z^($1ZIn^o`^IaX}_#p|YR^zxj6{yy|s?B{->t$7=xelT3LUn4pAzcsI-dQDy4ROPV
z;K=kvt$A(<7`$wrTOuO$GWz_XFJTT>-ro}C!YbCc#JsU^?n~5|S+C?<5?nZex9nfS
zHMS$^lsoTt--3Gw*l~yvFGE*_<CYxP#j+iHS@)WZXss|iB8}o^0=zcwg5olw2z5)H
zU*3X4Y24H5yJe7@Q7il{HI7flU1}<RHq{@2zNNwWDYnG%8yHwH#oSkL^N?(lYzK+%
zYEd|^U}D2!Tz!Q)7V(f<O;yn3FekLY`)B5>jo2SZK9F9_(8IaXtFY_y3C_>P2Q$F?
z=T58fLzdW;cCSu*>+ou7KFtq|=Q8B|DQ<P1^M@kq`cV*ei{{#v)?rqcxUlLltIJ-8
znbztFj#nLKb(ISz#0fCC#nGC#jb4qLJLoX|t0@4QqX)=-x4Ox3wG~_~FEUnlIFCSg
zS_qh0f7gK4?P8;AzorFjP0;JGb6>-Co0?hI*j!1C-!(?7sTp^T(Q1blsMJxRH3@GB
z!?sve><NfXuc0diB$+{~)fn9}_&S>AP>M1s=Qyvr<r@674Z3CD8Y)E7SL@%JBF8bO
z<zUxJCV-P&cTVeGQ}s?JH@>co@-;Px=r*$hZ$Nd{kW}@qCwkWyjiP$z8vHIOrXw-!
z4cde`QmNzhj#B`7do<V#_Nvu!ZO|yv5jB+Q?VQ(od)m-iBf!`?cOc}SD6LI!BjD{f
zbw0&;#3TjYN>+d)CTlS~-{={4V2+Ea4!$<ean;AyIvl52fXu2{U~SQ>`ldIv7_TjJ
zr6hL0Z=u37X=}W;%E_4(kpSrjb8XGtFm<oR3Cn8iJ=Pj6ad1YIA-^RsZEg=!Z-WY>
zC!zY*QnTu<O;JKL)={G2Q%VDyG#}Oly?JrkCT$g4XLFq&WyuI^#YE>V%;9lP(;V*F
zR7K*xI`y0l%x0P^&522y7~`-h_IO*n3%M@Og=b}?u)}dgAoVsP^dpid2aB9X*KojF
zb5sQ?Zeixd$Q-3U$kq45wI0;{33gqb^K&Z5Q?X624u`g}8S{;`-N=U4b+{4@;Wqiy
z^pw{JM5n#=W{pl8Al83qP>R{yj2e;aqa6QHe&8L=<@Iq+9~M9!F0W6zrHWJELD&zA
zNHEQX_fsxrIF2e5QHXU|QtCOLvCm=5--WNoS^H>ftl0fsOcnHWO5gf2H=`!G^%O>}
zi%zYG)Vnl@=zxCxASbCwL0X69fm1~gdxTHC{jOd%K8St|R?hYK$uGJj8T%fM*_5Yo
zD<yhyb&+^a6?ZFzTO+BpKw5`2q;gCoKG=E)L_4BEVlh<)PUWcJ5%22-8{wVW7P0sJ
zg0ou{oB?Sa9+d^-I)w@@a<RkOq6RU4Yj<ne;EST;@(yr>>(=U4y#0aJUv8~&{%{9*
z(!&q!Q1LC~wD26B5Dwt+<UC1rI1TTru<l<4QCsTj;9F3)U3^q%Fv#h{8zc|hJ>?a%
zKSVGOPe?3|RPzMmCHEnUI=m$Lq`^C)41T)Lr#Y{d|G^B$e{3U9KIGixf5b;v4X0Kl
z=FnXzF%4L++RF?U!D)V>17$u!JN`H)b=(y@G+5<gQ?Uj>%sn!j<9`24v*FvWb0yzr
zijyY)W946qd=3q^4H~m%N9!|#LtF6<_#@O5b6ddR2a!ieZVPf;xpP~D<3Da8Px9Vj
z{cSN$A668>e~~*WDVE^;j~$Wt*Oudm+el2S>`!oR0Co2@>0@upa`G^$Iu)JcxL;PD
z<3Cnab2yGxY@iV9CmG;muSAjUy{(L#=F3!7T!lJD-)&V+t9HDNO3~D)k9<tlOTfu`
zgRCEWTa$~au76vL<9=nRbj|EfD#(+$4#!bk$1Sem@wW%uuD$ywJ;DCNr3<%5xQ;60
zcAMjIY`#9BYoV01732JmsciUgdz|C&!GWIj(}3ht<U`->X)dPP<Ms^4G1^;D@Adhd
z!Q)cvQ}8MTw>z9i@d@zOPnFwld-mO4=3<A-_Pm`UsYMp2H)S%f9yq#va4Wt+{7*B$
zsrGfw<F@Z-RC-C$?l?W@b}CIP#g84uP{Y-Z_4Xl-|F|PEFx#)j?HvKmt6<y_<T!#+
zblqtIhqre`Md~xm^)W7nxxNFj-k(OKSc3BiioF@d`#i-~bK5UI&2bc;f}WL%0;l5h
zZt>!x&A41uPmteH;7SK)kSF1ycM7w9Gv;7lxC~A!8CMW3l;Axhdq<U%C_eZ(%^#ol
z^bErVENVW!!A1OlHofc1b3e!RrRwo_7_FvS=Z+3HGG!2X^4Ms#RNcex#1|EY5cMEe
zqfI{C^Ow*&ZId4ug7?Q?ioMdEF@sBq7)XC}aA#sGJ_FuA$hb3Q^2o#GJB=2@=qr+4
zRi!(#T<?g0s0{V&>376CjmA^)ytBylP}dGshVEd7?kpQ5euC@^ZKrZ)mGejBktb(s
zZXCr$U(hWMM}iHcT923%ka$yepD*b7E~-9RXdA+|#5)}Kt8cXE5j9W#E-FNOWM}6E
z5)UHPoH^2SW_ai>+ntDK{~LW--LSnY#)UD;a{opbwWX~Dr_r0s|HfcCQt@fm<VKjB
zGb1T=vRp^i`>q_vCn*~gS<PR}USCoXX}}2AT}8KuX<uTW|KTEZ!@J5{9-HF~6ueUt
zs0OW>%9EOR(s&oXw~13fu^FU)Bz{+$n^EDu%V>rpi;#mKcjMIiD-56jS3~Kkuh7ZW
zqx^SAIIp_G-8RP&Xa{=JecosY<<8x4uJ<!!U3Ze6J1I`XofgdcWAg3{=kaDi@N0Ss
z*a1$p%5mPWMxNuUvF>&_?z>sw_|Ie$+>Jv=MD0fvPS1)WPsLX`J|!UW8pl&jiPuGI
z5n6KD*XYAPq0o>KBDD^b!c#b?WA7wK@@>w?ssrEP>TOCw#E|-z-}g}2nwg)KJoS6r
zVH3KCT-NAWQBiZv-~t<IuX6F8B$u0n^QCXmL4HD!hPU^mIq&ObI6kQ=Qqb#FFAd&f
zv=rQTz;AKC!1a%cAW!9$Y5aulsc?E$bP-;Q@17D^l(01C>s)G5X;BWeT66E&D$<L}
z*4R0ds1>QGHrMuD?{Iud0(r>SDA7WSkw45DYaJy6UqfH*w#F@taw*k!YB7$hzEewZ
zTm`t6<oG12D|wOPcq%UOw1<mphFO7yzLgA@p438~tYkSJqdF6w<G5dU$G``XC;0-$
ze;#r1;h|dDjmCi$&im1*a@>zbjpG;`sctl>U;75<e_9a^_$~Eqao(?Qo8x|csor{<
zCXh$H?xjS>Wqt1raQx>b5*#%=bg#EsjU8?U`&A|Hjd5XB$$JwVM<sLkTAN?VdsCeM
z3BGy&e!Obbdo!G$B%T;<jXP4+>E0ZtRU6*x7`UpF(S~!qHVoZc5<!}r?=5q^xn7+^
z_f~1BcHfId7R%L~d+UZ+1$hc(gX3xrzPHKoxm79O_RQi-(lC3_eS~T)F;|+sFTinS
z_P!v;=e9*>8=Sn&{2Ct)yD!ekqiy8j<9*m0(j0tW23f7Jqmz=)iP#7WZ-;DajTWPp
z;P~!7hfAuB?tKN09~~FfZK-X^T`Gx!r<Fk0Zs5gCeAle+z6vLgCU;4RLZd0svN(d2
z=wl7{)i|lv%KPdZhbIXr^{Tb;J|q6vZ|2CT`yk7GZLW+{?J@$OZWi7*#Ob4RqA|k4
z&BDaMNSL5^M#Qv{7z(Ne_s6(`3dj9aL#<|g5s`rff3tjllJma36vq*fBGb!oUhV4c
z&l-4E)X3xG*WiJd`}6K0^_=@1Lx}QdhWiT~S6%M@BFEDKDetajVs5|+_NwPX?l+n;
z9T85z+OjU*Uo&i#rLBhBL&YW-v(gO-c7%f^NX+gbu;YOb1U<=R1RfKVVBD4LeZYw4
zF)_*Gu4<1pZcGMQtvT@PYB9?id*m^;6w7g5HRA($j;qK#;BfqyH1de#14VDVJy16I
zqU7<k0=ZM;^zJRufjj;Ck{e{E!TDndCcMe<bW7OV(aJ9y=7Bcn{pxi%u7=73LmbCw
zNWq?^{P-s}RhXc~h1*$Mp0W97gex6WMIO%mGb$fc|7V;F92=DaNhOdr1gP=ILRJan
z4S}o_C@6uFAyAM4RV7d}1S(Ph*C5+r!W+4RHQG9s!c66&yIqV~asy?xUUDpj4g7|n
zd+jr@gSG~4u(_;S12@Dtjy15e148(}bj`FO!O3IMexopTO|gMfK}KNc&;-2yV>}yj
z<VfEJGdvUxQg@K({^R5PP(Sk68gSx^CNFU#nyQy?D0BJaa#FrZZk)JbkkiM;C0#S{
zmc;8E_ls$8{J5%=Z@FPVceE9pr=ASi(BZNw><^NPR`ug*1dIwj7~r^y^n(!t7vGMy
z##zU;0FzqG4fKOlBh9M1yZm5+<NMemgKfP36yt*_`4)H3@}EO_FvE3z5fil_mKIzp
zcA)DY&pb$7Su6A481m#&k>hj_HwI<;K9${LtKJ8xr)&C?Qc}MvGFPJWJZQ9<T2>#d
zaXs`shwT3%C-s|dYpfq*jp^w~2(No$E7Sepkel|_jbJBaho}d=1Aw~i%JtP_yeRb$
zN8JcFT*!sUg{D_tJw+~r>S?Zy2sT0((>E9K*5Qb-C7;}whQBP|g@SYePt(vD!~luW
zE%h<=Dz`R8+!IDm_+?6#S@-6KI{Bc5^_O+Yw_SdGeaPV39{-S7cyZ6T-iIQbKAu8_
zR(%LBYGH#W#_kAbkB>?)Ij|$@bLfuPl)W;_3QT;+sPXY}DVRa3IW<X~v7;4Ho0*4l
zoIO4%$~#(nif@Kn0kIJU_DpU{JML?!p@%A5;TXJzH5Sv;@l-rHJIHw~7a8#V$CM>s
z=e$~G9%^uW2JV|e&ze$_dRYEwnb|NF%Z%DkJk;SzlWS6V$Zg5Khbe+u-PKXr!$FQu
z!G-@g7^kOsLJw1fH6`p)QXu`S_lM)0Ki)weHGeqit?Lg{BsBdKl9JE4^Toq?PRFPP
zNZsN132BjtXj|5Yi=3y958gT<3!L;TZpVMP%EfRyu|Z}|Ag@TQ#`#J1!1yhD+lL#R
zJ)t6E<1qnEt%%Hc-O3P`qb(?SKSqxjfj^-Id6fQ0L<D=$Z9gB6rFC6gf>Ce0?cOWL
zTj-Gl7%haf#`U7EnTXWLcxEo@g&8%uJ(BZgm`5D0tlmp{q%g3PHEx(UxVs;zc;~&d
zcT#h~x%3we_x?xf+=5z!9x<YmNlSNHo;%O&WR3QpZGEJ}jo>-ioiPsPBs`r*DbcE^
zrr1Y~$YBbPLC;dxSdT`$M`}*l85?U~Dawr@UPUN%XYlKNJ6n79W{5}lA5C#NT2~-9
zT@AuVGn`iye>BVSc?smnUS3ppMspthT~ypJq`-wyi1S_4Tx~!fEph(f4Dw{Gj6{pb
zG<;Y9dj8$uN2{DipKB4X7OzKZoJSCXyC8D&^1#V{({uLFT`*<3Z*V-?_9pyCy|qa!
z+r<iwpGWRP{IMVs&7CRYiCr+~&udB=H=Av1ocX~BHOwB1bL~k15!)5cW~f(?^(5!%
zr7xGyNj}Z_c?D4f?+>uYj21aDD)sWNTVouqeqvm7puU@W+2XMx=hgk_$J|MNug5B!
zj#6pl^&rPp|9DJ%6tTv2Kh|&y7q{AouzTy~u@+azL`BO+7}S`3jKZM>8DR?U243B*
zc^tIP_u(iVydQ?ggPcFHK?<WnkJ}<O0oPCz70vv-lqm0p*^WvjDWj2a9?_uE4^&o?
zTzzU_U;^k93sT)^BOD^c!1vE<OFqlhPi#p%$8mJj4D_s%Y{?f~=O-4qnCe=OmpG1?
z)yS<m38`M;JZ6v%xs{<}sn$j#st*5njqAZJ`#;F7g4DxtB*nDF#ZD>-=Rd4*Jsm04
z5w-6@igH@yqd4k;G5<BrCnB6bsp+Xd;XWDC{Y1=r7;*OZtl)`iVtFFLbyO#MBFS+z
z(L9mjxaw3-q&bdGRsNpVsh-Gk{^Tg~2;38ScL9IG;q*KzhG>eDR^^l01K-EodU9OS
zB~Gic^F*2BC+DSn)m_h@807RxF_D4U{^M*ZR_DCBsClBnaat0fXPsP?dhSVM=!p&&
z!_NqIAm$G+vZ7b&<hG~Y2)f=iA_k4FySwIHgF>gpM0wYUaU9+`(6i<TrTHY8Kd6!7
zV(KKTk>>bGWDZTx$Z#C9Y71t2)wI{haei`M1oy!DMc*RnZWQE49rnP=sxCJgC9ZK?
zN96Xv%8LG6M(Q3I_BD()Qf<?yab?u90VQjG5;(c*UM__iEiOh&eiUAxT##ZN&eK{!
zysFicB&G!!wJJtst;B{Xb~Wxp$WPi_4Bfs1GZT&@^YG@$80Xcb|75}&i*qL;E~;uz
zrnoRQ;6$ogQyR;PSRa<h92Zk_*pqpVV-9OU-CygUq^fIGI>8aaJ{)45Tmw$N8qMO{
zErZtd)W+t?3diAY0`{y^vcSn6-diAd>s-t?+u%6dEkk{ayDiS2fQBaCcei8k>48b0
zm3L2p)xCyyG4R$YH6liZo{G?D5T{H+Q_=x^=&2}ht(w?k6`|nmYMzRV;AAxagOjid
zy9e4&nT=Hv9f(g*2PRKtxH)xT@>FhM39hA|G8zlVRjJ8vUyYHc3S1pet2@L`w1JcR
zMq^=)slvfw*uO!{pK6{O<YrEdNcFl~``J^_{nXU{RFlinub)oQZM8XnYF*kIB3s>0
z<7gKzTZoOYIpG&13pbw*avin2JRNbbE4rWdE>l8J$GKbr!x29k>3z^>U{7^9u>pTs
zDnw6Xx}YP4%>ezlJ?(HqXhnM};ufa@$e|+V>Eso>|4QW3WzHW^LZ0+0?zT4c^dRT)
z5POyM)zcqOQ&99?l$H8TZ@`a@S;6V*lKE+hk|wN{ucwW!ed>^B<e7kQ_QF13tDuT<
z3|(8DDm>%83ex*b%rGzO@=V-osS$fwW5nMV;q!pcB)KH6lVf|)U<$~B)11%Z00O*w
zUncZSj+2;bi=?csuAXtW;%kgA8az&;!Jnumif784_noS6{9xs5mE&rGd&X!wR5I0%
zjjK|tb2Yp#=JX?~s^>g|o2v8%?fQP4Myrd&XWCpzjs9mk9H+MrVa&g{d=|9c@;Jy0
z?yd7d&SUr|_Qr-VOM0V1&qlr8bnf2T{efrWT<2FLOTsA{pZ(7oZK#Igvl&Qfoly0n
zXS3dg+_PBuXk1U*2cyuP`kpOt4IC?F_Q3{49V<Os;=Jkz&z3n(Gc5G{%kXEb-s$ZI
zD#?8bY%~7qom_(&)uXYMy1lRJgwGlcf$N48$liTysXWA$!8_omADr>{jRDT9=xj6^
zLPcj|#EZ^G*%F)fmC@<m7?&e`8hlsN!p0;wkHfLVH1u&5nvF)|_&B+zHIC|E8?*lh
zp5r*GSw=Z?RDa#*aQ;^j<PqDA1&;66lz5Tjc=5Ucd+xyR-dJ&K+PksJh17uCh?{Qo
z=GDeJ=kdU3W<Q!UsS;E;6{b~E^`ng~*M9fLwinTX{bY>iY#ibmD$LK3LEX|I0i#0C
z1vvieq{MM_7RMA|b9!A|(m0R6kU#Oc80Xb(y5~qvE6&$Ta9qvn&rz|O{Am&7$-T7e
z#=;DzeRC8iO-*fao--O-J)rwsp39#WMV^XrIPSYu@bHlO4T#gy07#+a`gLI0;}z}u
zRpGcgG<weH5BP?+9miPo{itz0Y|T>Ot<y@tso17lthgwS6EMH9HdmU2lPoeCqrymO
zi1Vl6R0O=g6KVzwzUk>TF_3>?jXTihv?{h4<@h97Tr<Y;7>;Rvpw+RN;5_PB25<c)
z0vzr(({8b2GF)t3Tr|kcq!w@z%W*!|8JLb)OGUEja9Xu!v%vA+q>(3cCAZWcl{xKK
zw!(4Mp_)`_tpgsML7vPFdaqbEy$4N?Z8iXFa%#3}Qmi%nG%APmTO3zcN6ik$5xfqn
zZT+SM9D2_OXhjP>ALL?qr!@6L3SLTz*__8B>kzNzr{`k^-w;*s(`QkeQ!xq7t1bNV
zWM8X}S}UGUd+XQO{W0^WsLo_0%Y`T5n;QGW3AHdipXWTjV3GqrVV{Q7FK}KxeD!?E
zn-n+hzvWiv^AuOjvC{(sGcZ}xPaKYazRo$-=Ff|%m*7jN&l^po?tVVs;%dHIZH}uR
z`Fw}tr$>;dFbr{A_0$)L9^NHB8?eT7zYuhHDld?ZRt;a)=J@W^4zT?~+<g`$^g_bm
z^TM8qZgWOV%B9J?m^%~Ab4F5PS+28BQaCfMak~vlI?w4d(h~QcHxZj)Yr^g%1V3Jk
z7{UdK$2|XDj2k@GPdt5U<)Tu~^)K{dhKs?a4#fPK?8O}Cb21DsI$re-giES-y;$V3
zs;j<O^1AAU5bjlN{bGd+?`w<df!NojR6PbcuiE9s8pm^vXdQ?fTseFr_8^R>963Sp
zX>&PWzr*od!;^o>8|E(sIgMdlhS}a<B&3+ldCV3K@Yb0`qu7^lxkJz5y_Do~XHs(z
zpYiTAzmzlhwB)_GZa5hG{@+lDNT<kU)o6OD#PKt5Epsp)Cso%hFOk01wNJ|;Pxh)D
zKa+eV+z7c^`d_MXc{S6%ROh&yX-^8h)ZoPFl&1ok9QP~O;<#$7m)aaZ(?Oo>47pSC
z%aqgVcV<#lXQA(^`oA3Hd`{N?<%not>OJUXoAYPpkcat~qXwRoc#PvXL<$~)zHx@K
zn=p7=B*6Q>lJPPg=D-x$|1!xB!@u3}5C2VgpZ<?>seG+IXJsVrczx#OqQN_ouTVI8
zU#@am4ZoM=&iLgz=W(;7I2-OwBRwh}r$U!v%Gxj+=N^8n+HS1GW&+R3OUWVcdgK+n
z=Y+{(%qu~|viRwt);RwX?G@Xg9pq8qD^ZRko(}ZJ%W%Gu;PifFQ9TslRy+AuQk=(7
zY=O7VDg!6;Ik%U*LQZQ@%_T%4x#bqpD+Nv?D!C*zY8g0LDRKS)90Y;)P9t71LXJ&A
z1GdEpm*Sk`l^WNa6d3ps46C<3UTK)Lh!KBQ5jYjx;ygZLodNGXo(fCBUUl8{Dk*3+
z#4%9~lK#gjUJZJy_hu;hjq<9^mDEMst45>jgOA9}@y^RrNc}^FSCd>Ht>b{7t|o_9
z)0|gh`qd1_&z7zIYMxrF|5eAJDUWEpYBZDT+^-fzVh$pH=waBtt4{lBg&V=Of9^2&
zuGWTE2RV;Jq%wH#@x52;oWy}c1EjwqzS`vcf*kVXVcYF)uXZ?%E)hE%jj@0#0I^n=
zH+EXGQ3ei2qo|f_*<9Jjqa24%H5eTh6(1dLjq{KAT1hUZV%|z|d_fy|@&yY9erax}
zP%F;`&dEpt>^y#g=-&EcJf?9D36WOW`yj%mALDd!W<`Qkq*@>Ji#9@iPC?2yT+0)U
zV5+IK)#BzbH6(t57F2_$Wki`;7`)qpeXmgwnlH-n*8&{JH;2lo-FS))>h)TL)7U&W
zVAF5-*P@(1r!Msp)bM?;B{{7&{;wIqr{}4DiVmSR_^;tc3mth4{1h{++Q`3#rvT{u
zZv#NLQr)k~n_HWKOjo`CwGuB=J)HSknd9nI>$S?j5ope%Q`YGI8Ewc=wQF2fT^GI9
z;P_-5`lk@$QAb!k;%!*)-{^SFXpAGoXq4i2>epdMZw}R|Uk`8`ojP#@#hWSx$6hzu
zV~Q>Ds5hN0J3^k&Onf~KMr&}jLcE^fIGzB3W7fGOP6glrt)JnZQHD#Y<FMDW9H+<0
zk3=6lrVO0a^PEQ?%^Zp7y1&o%dV!P2<Dd@8{xdYMmpJbmEpr@3Yow>{L%d$)yjr|p
zALKaB;yTc?&ZXW*&eq*&r|<P9m-8E=#c>R%)X$)=zSs3S1{ih73x8$>>E3A-r2i1e
z8$qsoOj)#uKcWE~g}-5Q9xHY5C>TF4E%`W&poMQFxR`n%{*5HZ)q|05P~Eg<SNpy<
z$gGB|(eg%y<0|HFcn!Vf2Qm=!GWj=y8j<|Zdvo?1-WUwMQ8Wz={2bzb`DHg&-EUO9
z>z-*p$6~F9<{L&s&1j1Zl)e4L8x%0jb6lSnLHb?pjTYyRXo%X+x17|!F(emy6zHCw
z_rDq73Tj$@Gsy9L9C_6AO%!-E4ya-VO)Wq)iD~|+O1+uj_<333%-wQf`(}#M=iA7W
zIZS<YvGiu%;4_jhxZa3EkH+G@2VtaCLZbO_KBmf}wdlWD@$UA$i7PYevCED|Fx+1l
ze6zllW&@i3ji)!8oSzyUNTX#u-8SbiK4L`DorB)D!09fj>GmxQUYtn_n2~og-m<wQ
z7K0kh^qx-<K;_;t0*^=JI^g{^=&c0TKffULaL{uMZq}s@x+GG^VD?Z`+FM!9pGSEr
zHpg+)&VioyDT22gPGViGg6vf%S8o+LkEy2xU&eO;lkGARt-azH{KrCFt$%L~avoRQ
ziDS{HsWC{s?hT@Ik3|gWF^K-Rh|vtH6S%ip99QebTe$P%-YbR$KaiUss~h=kihxm}
zP41~sXj6pK=i{>eI0S@lNp)|Ex-Nw_#kdfrwG4!;-vy<uBu#7Go3OjYt>fNJ87{7Z
zzX`J`uA;=|<8=S>T=;iMX|q5!#oS+DN>TIIrV^LM^yT~l5k5F0bt;_4^jsx=k}df`
z&L3M7E%27_VBK{vw5h@6Xd3?|)wdw+w7tjN&;2EKGQVqk;M)Pw`Q_HPk$*QN8ql47
zB*hSMf7?c)HL9AZ-i~to_W|Td9?wI<tk~~(bPIYXAoO;MOQM9#@p$i4)$;8O=ckCj
zA8$o^;y}q>-nHjm1!->lZb;HpMGZ%YJ238DjO~5`>Z^7wZ+p{^m<w=vIwI9;T-~o-
zo#VgHOL;sikJ|mH&1rRj^LB^hzB%$%^YZsi&s-b3=MxdEaT&~`=f@=&;lgL)N-Bfa
zj4Gw5r*s~a#PMnT5J8(Xb@NGSDZz2&PMdg5{=WiJ9`~2wjyox7v^ouH=eXLs_`p2f
zFURw1zj@NHP`k(#evezk(D284yUh9jN+XXpZ&zJQ!v;kR%YfK04`a%&eVyx|uXkY6
z4MeC-A<{fQD<JF>F`#}Qk%rrxhjI$M^<Pzwf2Yfx7~ToE1$Vy_bSH>0@7P@JJn<^R
z<h%4vjMMuzMDQf(Qr|lXPO3f6J4ue8RuKs(`EPl@L$T1RqGsiHvK+@FLuD$=eZ%dY
zJSSna0kV6FJ#aE?tA>21#Kly<c&E(qKVV~hGLCR*#6sWSN4?|iSwrtM4f&v`L2gT6
zjBx)VAv)mQw(5Onh%2jc`fisS^w7IO&SUG6n!jcBde`POj)$E2DEoY>8~V_@Mx$Wm
ztb+GHxBG6w&=;@5x;UNQeSSA(a1QchGi~A`c#77a-!<Ci4^^p`A2<cJ&pQR9{0}vW
z6}T-NN0ed9+tj>EmCza=yO9PJq%K|Gt#DqgwC`5E6?Md^+KTmVjSDZ#BTuzyxL%!l
zsx^9onoi$saapx<ez)yzm_qLkasCgu=XWX^r3n}&-wSa1IP8*6l?@(xFTzQBH7E<x
zea2&M7GqqkYwyLmB+NLF^yiKDlAK@IK%R<Ei*go^zh&GWbmDtCF6Nuhb6h=n`JTgZ
zH7wpUn#xH-j*2V0#fkHNg?3fPbnj7{YfXpyHsxPo$K8=SHBPGlzgHJ2+O}@|72=?F
zh3_@FFg^|PYslO^55Hvf9`?D|qKDomyIOe;J_Ph@Z_E}U?C+u9k8(L&!PJOXE&sj|
zb6ml6s4(}X``!N&Ua0~4K2={U5qGOo{|QSMkS7Ss`&rIotLzZJ2Q>%rdCu>f6IJjN
z)ZLT!&2UphNv}wgbN~A#uC7|?{W8Zd2qI5vRd-`H`!rNx&$h&BNVO_pg3FzTO^>=R
ze!pSzQm@Hz)q3x@yy5YFhx6#-4cP5<WEDOjGg`U$Q1EZG$bCRAYcw`9G4TG2=^xmf
zR}uTbXxlw<A_G15Lk^)2;#>)9UJ+#X1yxb|4LS;%uj2~S=afIlabfgc`*e7yPB}hs
zIFAF`6!B^=_d${KD9i!h{l}CjosQR~F0jF)Q9c+%qSZ9o6s^;@TrYnhN5j}N&}e=w
zjo@QaOq_vQ(iW)y18P~#pz0MLbU6OU3i5E^LwBVY%cy`0Y>64+hf@tIfQCT#hj{M=
z1GN7`Bi72h4`VQ*IWRRKjbe1rz@C=VrsNNkT=-8UOJ1ej{l|wHcmHwhhgmN6N6M2}
zj^h{9B%bHE3c`mD$N!WTwH#hWoq4ns5S!tczhZw_;gV5&5bjJF<Gv4#M)Rv)<4S0l
zlu`<P*x)33j03XQuS<*b=rL9B)}M;Nsjfp5lD>~9r-k<dn}AWFj{-<E9AyX3(w2&k
zBAoxzkkpI0k^TsmkF>>Hb{4J_qD{#q-Bq;vBXn+eP9}0%LXsJ8sDEU%0iMl_osD{_
zCHf-=@|t6R%8CqlI-)Bg9k1H#qcWGn3(#ldDD=OhfT@0io}V?>&(KG8E{)%Zu@_LO
zSt(9c&`L!YPJwr?&$~Zrd-b_+f!5+5Q9v{eI!z`G8daf=5#2upMGK@KsZPY(Z;U+$
z&k&!Gwnm0J<hN!HXAX&TwD#!4Ise~-$fKT}qzImer8_0t;~coCD%Htwoj;XD12+97
zw_`K~mdSGw=|3k$>|Aex%OLOHqUcn(IlQe=JQv$D&wuhq^B>)@24(Bd1>oc-_V(~|
zVv~zqU?Wd-3yG$V$<;njuYQN~e{LWTy?=Sr(S_&Hk=S`w&sGn2;{kKnv7%Wi@6ASH
z6BK&?T$W%AsaE&}H4)5Xb0$OluLP$r>=KE*HB~G;53|5|c`MjMl_F=d-s#w~ylT~d
z<+<vg(E@pdRCVHiQFOGD(E{gVHcv@=Ww#Iit0Hm;ojCP;YxI$S3QCTg(=^ra`B#nO
zYAX9zo#Pjlktd&<REF4az6xO5kPC{=`SAEpDu6?rM?2fUMSw4qG59#>9hqGCTa5jS
zq_ZDmw)h=t@b+)9;k(F&1(f`8l3T)}9sC_EsR`p_Ot$p=>&H~GR#RM%Bp~N+&^|U|
zjEOQwcGN8UalyMCwd{9ja<v|RT;fKd)PPdIT8}@ja9;JFj|Vx9ej58d3iIvC1^ATT
zqcFdw6dSDu*w_`J<ZsJAZgc)3>W>s5cM2DqVQb+9wugNZK&shNWqd-R)^N4M`Xs_}
z6_rnHj;lHRlPJe0caWzqs(ljkCc)kR%L@KlEz+MPxU}z0lH)3@pQJdhdgmu;j$br{
zJR<N(mU`zwpX4}wfsH)Tc_dn;{o);tqid!93jy~lS>(JrBlx7`*72ZE%AEIuR{1~h
zD#tIv&YjBht6k%~A3m?Q^ncReydRb(#|v5HsorgOV)z7?GFXH|pHQ^4FwmwD#amNs
zPyAC<pVs5Cf1plDO#>UBMv!PqnDi2V&^qO(QO+0IQV-kSKhQ<_A8=Yl8=?MB$)aXS
zMfuYd$JMi!pQb%`Ho~1FeRr~4Sj~{1<~XiG^QqDFe~Ckms#S2^!%wEU`;%!4QDxtu
zvSBMDG7Hs`{pr?iSOn=$GoRMDGDdz4`~=nKJ~i4<wf(2qNg(+BpSHNZUlEF{7QMd|
zkf(~cgTMPT93|04Yj+3RU{#UNf?Q{c<LP`B@gh4H!v5^@S(FQ7FgOk>raJX!6gkZS
zblxg>OI6^rq-S)KV~tS{c7B%TI)53G4&>a`WcCHxOFo}DTvpu#{fsKAl}pblT>!t1
zv4JB1pOrWdzsunL_gy}#xSwA+_A{g5)b8iAL9VZEvVK<MxSA<Ht8*M*$M_?;QwB`#
zG&v1-V&MHdQJ=Lr@4M0AI2Ozd^sN8M0*BqrK?+%DbA*dw|5u~p)$z#YDCcp@qeI23
zR@xlryswwwIBwh9e}Y|KFU5J3n*#5DOKo$;jdEx+xvRI9BOJ)}A7cZjYUDZZ+jlq)
z`&H6YFM(_>a$fb0%_WYbceKcFHEcFlIR95%)c!Z@{&f&I`O`A^hKGM1FmTMFe@1;T
zjz}JtS@co0&of-^;)LY$-Z%bszYzPIi*pimH)?&K8$PL1lh3Q%77lKl3sIMg3sSwt
zdAgJXZ(U3=KwUm>xua_AMcT^yd57z$cz!;_aa9Jvdi$w34jJ*dxJiPeLPNIOEr+69
z?c#zcUxeA8UQZVr;gEl^F_h$z7(NBm@l-NE_R<FJh#2_ks-F&JIq&;NA=dic-y+D9
zy`tw|iPP8|)?n5<8{J$$8%?fB1zeC|J9*Gh-Ox}KZgBkKnA9U)a{y=YslT9N>hN=@
z&H3ZHgah7t*KcTulQ`F^{skL+YCKfp3ruPB4(_JEXpVk?2ect0#{G|cS-S6wxM@YI
zCpdm_MkM}6Tf)CcasF=(@>DDiC;o~OZa@kB>iY*@<hiiA-|_`1Y4xXf*ieXA^%p!f
zHS(|4=!Jiik@}*{CDm&6MTO&kr4}GJsvK8)>@R8tuA*hMoE%<a{$H&zelvf8+d7Ee
zM59%FU&xkLo4?|G{;z1wUnGFTr+-tT@pKSRyz=ee5zeE(*%zz+Huqw!8UKxa(%-Cc
z^O9WQ=nV2yP>SPf75aCY<Gy1Vj;rqXZybxzvjFQ+_8i|!hYSC$j64-u;P`O_6JF#v
zCZHB-W&LkP@>O>Nn*BG7clCVMziV7)K|$pHhDdz#H}s1e{zi{imZf&fjl>uu^!qgj
z{ugEJ*Yu>m#6|}n`V-Us7eQ1<=3fTAy~im4z0dc2X+vCVAdILY%=m778RPt~aqI-%
zJC5H>wpHZ5^qykq|1!fh($vHV%9mM=t1k3q&K<PfU*<jEF8n)uqf?*mFALst59@*W
z7k6KlxS79Kq<MVUut>wah-+dM)GupX7(q=GrT5)mHoc}kw}@u&!`9{+cvQMf8uTsV
z(3eA;q+@lEesNy~IRER+z$J2W4}E2G4kICU2@Jb;oldy~HB^E6D#0by&gZM77Y^9m
z@?Eg6(p(r_tp>AJQHJHKygRRd<!~_^PuiE#cB2d&jq{b!W7T%!D<j%?%q0aq|BGy2
zRoqpe@2f#>U)|05s>X5JEJNSzK7C&`Ir(=ICTChmv_2Wd^Dj`EP^<wbe#qoK{Of@C
z7|Pc{&eQONe$V$v5BgtwzfJYE(Y3!H6v4~1>Hg~kH*;xJs;4QWy<cZItxk--#?I<;
zJkOHn^wAkSZ3ZV)WWN^I7JJ5pzAkaGbVS6UEw07SWQV?{M$`g<iexTF^e;^Tr;60b
zlfJL(T<i~2f1(>4$8~JYRnJPk<&C(_m*YtkwL$p0!<8<rdBWdBIDQ$yDCC>C$P8HH
zj!7V=xvFk|f0N|6>dfCz6*PG@8+?=I_+=3h9MC%4H(Bp#uh|2bdep08-(c#%iz&U|
zI9ypZ$u|Y}qo?9rD7lZU^?qZ7U9HaFl)WdnzA++?^X&%Q@a~F#GiVkwAaoaT3IT7#
zG=b9Saft43<i{FLA%uRtr}vvSH=%Bve}lWGG;71)mNEV<Wc66l7^ea+ixM#^^lgN?
z!9m~JT<rX~q)AK*^@1UZ$2g9ih+UFnQ_L;Ffy<Io(r7F^i0weqzsK-xhFiK61Gco~
z!1vo6r!S9)RtX2<bdTf;nCXkiVoF@@_Ysi*Zyi&Ye1$$%)BA0ei>XiWd^_kaB%yCf
zT&piWuUv+i32JBdZIkoI7o~ac=BXHQC93WVQ?N8+7(=lu@iFB~3a(PPE5P}q9f=1y
zE<0Gbi|VS```^5jw`n5XaZ<P|#s%aaB;1wYI66TGj#!sFz`I6;yE3ABHG<id<8q7A
zk}pWUWblsUtCFu7d`0q2k%IkDSIgjYB6ro6H89-O;XE!h%f!opA09^Lv;fSCiUxT6
z_Q?Rut5=f3!*FBa(w-f~zE@jg)Z-@MVMc6xo3tuHcs_*H(Q$Yf&RGat1W@(V@Gy#o
zRyv+`sZrF9t&v-!!o#whKNnxt15fMKNb&t^U`cKi!o#QoXqK>ZO<jW()%VGW^Y??Y
zgfiE|1-wIgaxM!Gt8!kR@`Z=hI1arQ^wfbycvyq;i%KGR?UvOnJgjB#Bu_OSa@)19
zo3dJc<m?gdHahsCwkTigkL_@GgsTm7MB`eF?K5#biRP5kdbm4@eSgo6!^7R~y-f7;
zZlfi9$qYAm20p4ymgI{);qDwQT4W&41<xW!QK4>!<1|~60TGpa$?M47WiE%UjlCFG
z&>|t_%!U}0IHg*kL`mWe*RHs5@s_DO+}+~Bc#ffpLVC|kN~I3xu|H~o7q2Y00tZnc
zdPyn-!;L19TZ-`TAeTqYgV#~b>ttwDczD$Huzz@r%c;;0k8@nKkS9G{q9f#chli8b
zTGi#AAv`?A@lsSOX1%^OJjZ#}w}$6Aj!v^g>omi0_WTfnF>Q%=MKE%BcsLplu88?d
zFcejb53g`DsCSX<lrq4{|C-k_8(>F0-5MU=;7WM9wZjT;(ZSS?;`>Xj5Z#g;fx<Dw
zsqmjK)e7H+%3v`O&QdD8M#QM_HaLD*itQkUL=!`AYe8(nnMEmP#9p<@Hi>~pF*|O9
z$qYq@!`m34#u}Qq9x=iN(@3xxUJ9N&&4E=HPvLEhhPWakOUE%3oSaC`FefEl;yBuA
znbuC*;35E1xR|y~w$r5WHiKN_G}$Azsc{?*W?*WIgALAK;UG^@#2O9<#e>VN(bHA;
z*`~vV{a6lhT*Y$RE_aFR-ZtR1<M(esJNhJrLaTeaDpEJdz)lKpYc!wgdfUdh7P_7T
zE$fOFaQM9~+70VR-?k|(r>d}Rn&aq&tsDGz8^YUWMFW$(7+dk~fR6}=x6N~n%cCMu
z@jJk_1<q0j0PDwh+Y;xmOd?NyR-~U*&dWP%;cW*wj(Rp=*SfMI^_#AK_qOgwk}y?l
z+cp)XpwVVmHavVpm&mL@1B)ARhNhx3BFK%X1|AXNI9=G>2yeDaOJh;5fj_$uVZ$pS
z7#SntT;(*J*)2!d@b1pY!@?sd3|ix><{gpZxSH@rP(hmfKaiy`j=%$NsKxj^r&S*t
z;m{5htKf)&>mdFp%5goS#8nXB7W}jRk(HKl=|}N7bOla=E{{sEuCytNnm^Fatsw2H
z6vSl(X+H;Te+C>$oTfCbI<OK;lY9?3Jkkh0E)Qbhy{*vvmDZSkd3g{X8RLd#P&5&Z
zkw(n%P(YDNxK!3@B*|$GoKqGx@aoHf;gM-~PaF=9Bn3?n?QP!#K^51Ld9S^HeiPc;
zn+Zo2wo-AR;<CfTBfVt=f0XISU`MeIn*JaeNm0{^`$rpjs!vUnZ$cEutwI!kXG^ew
zR2RmBMys?DH?qa~t7^!Tv5sf#1{j;J8Z<zhW=vHuK*awK4|)}Uc9pDne>h-sQPpJw
zQI22LK^}et#80ob#vK$$a9Ulj1d<&81<8?GisLw0i`^`H$4=ouma}o{38a;yBR4GH
zH(O(-t8Nl-xUjrx4+jbyKc|d587aEm;^1(A04*v9(ikFv3diN?XE;#h_zXN>1fQq-
ze2w#d=;|E5TGhsz^yUOwocCL^&2f1s77kG8HNWLqbvQ62uK{}kTtIb$o*>6@<11D5
zJ9Q5(ncO`>Pn3({n9_lm`c>3$k1;OQ{;?-v=;6K@^sK9!z!BG;jJHViWVxK$m-gg1
zj?HZF7Huf>IGn#GjXc@KBuI;7Pl@wWlaeoUd>=d|4ZH5#y?40BXjRo}J%e29nxeFZ
zNfV_V)YIU+UmDd`Yn^?Dq+W~TcwDc+YS-cXHFZx954E|qvx1ygYm61)IOguyY8(_^
zOX`S@<qpu0l|W8&3*WNIKuo<06SnZg6&8$cEA94zy~9?9E2y|wM(bT0gB+EENtEJZ
zIb2UI##VvjC!~=ly&}ia>NPl~J|-Eq%A7yJL7wy~99I{}R+Z!Oj%L^z<oF3`(Lp)W
zRqwUxocHV7;P|z9<f;6YTVJvJ8hn7>uVjY{`;{ExxEiwCku9xN)YboX0gmHy(Wx~E
zimK#x5zebhZfA2`mA_q-<Eqlz#W;@6<DeYt+7@tBa=WD0`L;`OIaObG$E5j>pjOFG
zzkXS+=hrXC@e?R+R2~Iav**{>;W(XMpqwN9`V~3v*RRBJ)u`K*IbKd8PvzrcAFFTg
zb~S^qO1>#NF5fcvhUABYP0QH1YjM0>mX+E*B2oZ*x3{^{;-IIreOx#$pD_5C<PlVt
z&lr44@_Eq$KWBT#;B%5MBc*e*-6`MI^}Pl3|54%XD@e3pFD^<PpFYRDJ!kux!4FEl
zfmE~i{g))(G~`K+%E6Hj?DcNnG5EH}@6aV0;Khb@c(C$1!l1N61c_G2_v#Y2k!ns~
zM{*<|L!!xl-@UK~9yjDkj^vYu{827`Sa^pN{?H2`K~l&d(F-U_Jd0G9CpnTYh#Kbi
zz8y$T=kt;;Bh~Efag=b@V?Mf$aMG_K(fHjn$P-S1(CrOMye(|ZXA5`e7<|*?M+K4U
z_O6n6gv&1>80CzLBhlrRodj^L{3TK3Nj`&QSl1-Ko9#gb5@7^rNlM}c5yTi4%WlP3
zS(29^UYP~hJ8BSly_B-#aVx~-TLw>2L1Cl2M49-}0fVQg5Rc<xmydCNX+-j=fwj~X
z2jSDwgv9b92C#RugS_U`QmPo)EQ^fGR}8)=`MM~&e8b?Wj-=lfHJ2wJb^9%k58|0`
z;)CR)#$Qh~^n-YLVjb~ugO5rcOS;Qv3_dA&93i`W!QgX}uZSx6g~6)9mn2X1(t65d
zN8(MSy1zAv4<Xg%NgwqXLy0cmmbi^{Sl560J!?up5>cd@!m^;mldi%R`B@TA8S)e`
zDmaHkb7)FY6z@QVmt`bR71jB=#LGza@(U8LA=TvfB$&z}Jzc&k@itOj{(CMyDQrHY
zv5X=LLm{fDu7DeAccKT}Ks50&gFj7F!7scaD*2SbS0tWBsyTQ=QsOy7{!NMJ4f(9Z
zi(G!{&Mv+%9HL0-1r(%0)ll$e<8WxukXMd24f%_uot7bAm-rCUVf*8Mat)mNfJcNW
z(H-hYJc3k<@YJtF<1R$75|n(L^Ray-o<OSEtHdOpL8{q{ohEULm@c1^I0Z(RzthDR
zhQmceAukmuGMd6(s^F?2UzYL>Lp~?*CQ{v@n#4Ouhb_eaWCZt85gY=hE3`d@??gyp
zi+um~61S0R@;3$~o<OS0XC$6Ps^qEs8)K5lBGnbXk~q~wDd5i=(-JQt)#WP^FCo?C
z9f?<wYVv#AU0o=DRQNlCAan&~sA(uT$dh~vi7sE4_z+UPfcHIoM@n@0j>IEWzNWCx
zqmr<>!t$WR<4ARRZ(a%Sm@wpHQa;V)_f>W>N}l46|CXod|D(b?=8@<H{6gXmQmqEd
za}qBh)#Ue;!+giGAzzg8gIs=}d6!F~hEy-0D)A;#y#OkZ9Bm=d<r^M8mJ&^Vzm%xm
zi-~l3NAfo3<2lhGenmv`3C>Rs3j026oma#qZ}ic9Uy^tZspij$w8Y6@&7Wz9iz@6b
zT;WK*X7F+lj-@W8+mrDaOZCv~?Y97V#AED`A>Z`yaS^1N{10L-J}ErT#vfV%D+4YO
z9+yC>DNL^qJOF=JdV1k;M*XMDX>wf7Fqf9*irn0OEs2+q>cu+}A4IAZ{{zzR8YMn^
zz#6k~Wkm|LkZMA4*@?!rf$K&ao_vJrrpf<E4zozmkROurQA6IV%%pH6#uaX|r9#qB
zD2m_)MD3=8<g=Vl#wDIZsyTd9M&bpen!`zwLn}v$NOXBe;uWO2JmnF!XEz{fH<jH?
zI8sNd3$-NPK&l(9NxY3zlRw~aiFc6d@+}V^A3&<h7hGH{dJs;mqQ6mt@lhnYP*dVD
zq?*xHw#1W2HTeYTlbsY2T|Oc4EK*(Gaq)%W@j3jVD`Z?EJidTbQ#g!ZDxio&mv<yy
zL8{5mkpp0S)sQbs`8vt(kN?SKc1~Ur4WxPjHHo*8Y6bi-D}uP`y>L~_<9h=Jukavn
z&ECx<j*9d~k!bezmup6E47e_DBTw=PB)WXk#TSNq=?`6j1W6%{L|3><;u)m6Jjs!K
z4v8-RjKnE0x;)8|d;y8RQJL`_NfeRl3M5DhWh7bwGi1l@tpL~MNsi<Pk?8UlOT30u
z$<so4GYOJH1BtF6C+*%QaHW7hZzegCZzIv=zmj+dsV+})kl%?CO@8KSU0uh!L;!@Q
zP$fZ9h#=7wWT)K82CmDK9LdL!=<+WK`w{f9D&fQ@4SuP_Q%H4tBuDZYB$~YgWDD(-
z1+L4J9LeXAX!1Yw$`yZp1XD$oND?Y?A-62TOTcxbBu99K%O9%nsv%EuBws_KIWe2$
zx<)Mw?^H*s7f^GF@J>ynn!=$ZM}}HRba|2^yn{rSw<SJ=RF@|?$nP9LqE8jG+mZ+(
z)f8?aK~k`hXa&r|vsRDdzRoR#6CdaNp=pUHkm~m01CL>kb4W(gB&O3TiD!{&#T^or
zc+QZ=7bReC;UNvl7YyE!cnPU)kMiVp8HrxL!mGeF`Pm8NNq!KCE>Ch@qYe)5Tt})a
z1Y9D#GdZR!kQ^CmBhlm&cMAJ)Yz}W}dHi=tU*l)v4hiwAiH81nqntl*vZ%VeE%_wp
z6Q7FU6A1k3gyb`vKbZU^yICZfzpFD6&m-0RIk+Usu06s@ugLiWPnI|ZRJTWRBws<I
z**kElh&8OSzg|r^@il{QAy0T6iDqwIQsOP7n!SUf5^p2b<X1O6e3yXt$muQ-&aad8
z*#)osU@7e1B>|qEPn1h)R}g>0k6ox-&F&gm-Y!}9rpLlvat2TGq(}BOJ$18V7l-5O
zX2UK8j;~20Pj*U3^!mzmVV5%S;dHGh9bQ9%q%ep?S0D!ouOZPKT2qyH6R9SDur2Wx
zQeD2`;k#1e%cJ~R0ZCA*D|94oBlQ&^pO$zOsV2WRBJl)LU0$yJyCx0!IP&|VX1kI>
zP2r#n@`O{W7oZBx(c^BtyE+Cf1GTGnr+Ch;C4(n<GFwKXnN=;jYsJ7*$df!ic83RY
zP73c@;{t0P<Vm2;art4c@U9JxtFE$ZljCcP$djERx2w;w1IRvxf2u1J4c-nS*@8QS
zx_AVMR-ruyB_4I3PTVPM#{j&Bf2Kh^&H6BI2iv$yN@K{*K!!Ford$@7R>0~Z<jEoL
z*~@;LDsVpjnR+E)n%>$r@}yUF$6l{Zj%vJmgu$-4Pk<~8+eT#N3%6mr!4;2fAy0;z
z9QO?puN8C_6-@HvkcRvAJA_Zh|74BMq8gII5D{B&Rlsg|Y7mbI?H%4Nzy*}W-GUrH
zGlx73?iO)7*G}QxY~)|UKO=^_MU_Ad<iGzv0&)7(%8m=eyCpzszV#)Mry?lTaNp+?
z$JK4v-O?OaZ!7GU;rKeLD%sBxu5}yP&&Mt{3~d*26~->kkOKb6s=D{HyGD&&>>ASW
zDE=m#Vx`N+C7##t@8j?7s79pVAkh`b5yJ7h<dfKhxc5MHp5%!yA<^-o#LEUwd6KUf
zcva$*>UI=9=;8>Ks(DQ+P^v35Bwjc0mc)tI<rUsE@PL#j-d`NWoljd<@8Y(Ob#=K<
zQc<Nk!g(5#!r~zjdkX1wT_T12!t2PEZv*mq<RO1u(7-Daj~IAX;<kaOB_2nr)oD~p
z;t8bPT?hL?bDvzIf|D+>1t$Z9lcMHmPhR3_VY?N{7`$?T9Mtt9QZHxVsv=}pmk&t!
z5>l-qV+s;4Bh@RiU0f0sm+&iMwIyCN@T|n^BJm8S>+2ev-!35eCdaL`#9N|80ay}5
zUU!fjM&Opj44nKTJoSIzIRmds`J#c>B~HA)<#C@_qyid-0#$(Uj)Av5d}+|Yha?{3
zxO)c;c9y1e9M{32s8k@&w!uGdJg&GvMq()yq~q;d2cNY@4eNfcOVl@7vxniwNuIOz
zvzl45(>3fuJoNUQwP)xkH`~=M)2^`{QGCvtW*txE;J;Zp(SV%wYpNJJ!>>D+95GJp
z+O&2JZGl{Bo9UB9s%cH@UJ@4tq}KI2yZDIfcNX=gHM9Hrq^tToRI4u21<L(n#UJBh
z{5HdO694(UwNv*eDN%UdnrU61^rY;dXgm*l|4e)NF-tEBzJQO0y|CS_!56ka;Q;Tu
zYF%BUZ@4u-eurNMc0c9h1yfErZQg<f^G~0$;H>%ct&`8m+1YcaoRd3w-h%m4PF`Ri
z07RV7H)34R&r`DwJnE1svyKuM^o`i1_o(C{Ke0^xDW|~5t-aqHQQvmq*$d7%YyOn8
z7R)<)%4uhuWJm3JC!b|cw9cMjPbF}Ieaf#+KY7aOXPi9Wo_Urv|MZja*OXtKzQ6``
z_GxFFGTBu<ao*YUC)j5t?6c=Dn36l|jNJUQ7MyRn)Y-rK?R@+H(mQ)cuuz=I6~!wP
zNA!*2u8F($*x^4SuF3hQFF5Ob+b`IjVowsc^o`hYSl6vibcdszo`e_JZ3DNqDm$Dx
gTr^hf5EMtO+~E-SuUiLJ?lAX1w)yS0KOO%60IKNqssI20

delta 223423
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
CkeoFD

diff --git a/roms/SLOF b/roms/SLOF
index 89f519f09b..fa981320a1 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit 89f519f09bf850918b60526e50409afb663418aa
+Subproject commit fa981320a1e0968d6fc1b8de319723ff8212b337
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 03/14] sm501: Add panel hardware cursor registers also to read function
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 01/14] target-ppc: optimize cmp translation David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 02/14] pseries: Update SLOF firmware image to qemu-slof-20171214 David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 04/14] sm501: Add some more unimplemented registers David Gibson
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, BALATON Zoltan, David Gibson

From: BALATON Zoltan <balaton@eik.bme.hu>

These were forgotten when adding panel layer support in ffd39257018
"SM501 emulation for R2D-SH4".

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
[dwg: Added reference to earlier commit in message]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/display/sm501.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 7f1822421a..b9b611131e 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -956,6 +956,19 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwaddr addr,
         ret = s->dc_panel_v_sync;
         break;
 
+    case SM501_DC_PANEL_HWC_ADDR:
+        ret = s->dc_panel_hwc_addr;
+        break;
+    case SM501_DC_PANEL_HWC_LOC:
+        ret = s->dc_panel_hwc_location;
+        break;
+    case SM501_DC_PANEL_HWC_COLOR_1_2:
+        ret = s->dc_panel_hwc_color_1_2;
+        break;
+    case SM501_DC_PANEL_HWC_COLOR_3:
+        ret = s->dc_panel_hwc_color_3;
+        break;
+
     case SM501_DC_VIDEO_CONTROL:
         ret = s->dc_video_control;
         break;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 04/14] sm501: Add some more unimplemented registers
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (2 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 03/14] sm501: Add panel hardware cursor registers also to read function David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 05/14] ppc4xx_i2c: Implement basic I2C functions David Gibson
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, BALATON Zoltan, David Gibson

From: BALATON Zoltan <balaton@eik.bme.hu>

These are not really implemented (just return zero or default values)
but add these so guests accessing them can run.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/display/sm501.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index b9b611131e..4f7dc59b25 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -795,6 +795,8 @@ static uint64_t sm501_system_config_read(void *opaque, hwaddr addr,
     case SM501_ARBTRTN_CONTROL:
         ret = s->arbitration_control;
         break;
+    case SM501_COMMAND_LIST_STATUS:
+        ret = 0x00180002; /* FIFOs are empty, everything idle */
     case SM501_IRQ_MASK:
         ret = s->irq_mask;
         break;
@@ -812,6 +814,9 @@ static uint64_t sm501_system_config_read(void *opaque, hwaddr addr,
     case SM501_POWER_MODE_CONTROL:
         ret = s->power_mode_control;
         break;
+    case SM501_ENDIAN_CONTROL:
+        ret = 0; /* Only default little endian mode is supported */
+        break;
 
     default:
         printf("sm501 system config : not implemented register read."
@@ -865,6 +870,12 @@ static void sm501_system_config_write(void *opaque, hwaddr addr,
     case SM501_POWER_MODE_CONTROL:
         s->power_mode_control = value & 0x00000003;
         break;
+    case SM501_ENDIAN_CONTROL:
+        if (value & 0x00000001) {
+            printf("sm501 system config : big endian mode not implemented.\n");
+            abort();
+        }
+        break;
 
     default:
         printf("sm501 system config : not implemented register write."
@@ -924,6 +935,9 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwaddr addr,
     case SM501_DC_PANEL_PANNING_CONTROL:
         ret = s->dc_panel_panning_control;
         break;
+    case SM501_DC_PANEL_COLOR_KEY:
+        /* Not implemented yet */
+        break;
     case SM501_DC_PANEL_FB_ADDR:
         ret = s->dc_panel_fb_addr;
         break;
@@ -1035,6 +1049,9 @@ static void sm501_disp_ctrl_write(void *opaque, hwaddr addr,
     case SM501_DC_PANEL_PANNING_CONTROL:
         s->dc_panel_panning_control = value & 0xFF3FFF3F;
         break;
+    case SM501_DC_PANEL_COLOR_KEY:
+        /* Not implemented yet */
+        break;
     case SM501_DC_PANEL_FB_ADDR:
         s->dc_panel_fb_addr = value & 0x8FFFFFF0;
         break;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 05/14] ppc4xx_i2c: Implement basic I2C functions
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (3 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 04/14] sm501: Add some more unimplemented registers David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 06/14] ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency David Gibson
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, BALATON Zoltan,
	François Revol, David Gibson

From: BALATON Zoltan <balaton@eik.bme.hu>

Enough to please U-Boot and make it able to detect SDRAM SPD EEPROMs

Signed-off-by: François Revol <revol@free.fr>
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/i2c/ppc4xx_i2c.c         | 198 +++++++++++++++++++++++++++++++++++++-------
 include/hw/i2c/ppc4xx_i2c.h |   3 +
 2 files changed, 171 insertions(+), 30 deletions(-)

diff --git a/hw/i2c/ppc4xx_i2c.c b/hw/i2c/ppc4xx_i2c.c
index 5a6bde951e..e873a445da 100644
--- a/hw/i2c/ppc4xx_i2c.c
+++ b/hw/i2c/ppc4xx_i2c.c
@@ -2,6 +2,8 @@
  * PPC4xx I2C controller emulation
  *
  * Copyright (c) 2007 Jocelyn Mayer
+ * Copyright (c) 2012 François Revol
+ * Copyright (c) 2016 BALATON Zoltan
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -25,26 +27,118 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
+#include "qemu/log.h"
 #include "cpu.h"
 #include "hw/hw.h"
 #include "hw/i2c/ppc4xx_i2c.h"
 
-/*#define DEBUG_I2C*/
+#define PPC4xx_I2C_MEM_SIZE 0x12
 
-#define PPC4xx_I2C_MEM_SIZE 0x11
+#define IIC_CNTL_PT         (1 << 0)
+#define IIC_CNTL_READ       (1 << 1)
+#define IIC_CNTL_CHT        (1 << 2)
+#define IIC_CNTL_RPST       (1 << 3)
+
+#define IIC_STS_PT          (1 << 0)
+#define IIC_STS_ERR         (1 << 2)
+#define IIC_STS_MDBS        (1 << 5)
+
+#define IIC_EXTSTS_XFRA     (1 << 0)
+
+#define IIC_XTCNTLSS_SRST   (1 << 0)
+
+static void ppc4xx_i2c_reset(DeviceState *s)
+{
+    PPC4xxI2CState *i2c = PPC4xx_I2C(s);
+
+    /* FIXME: Should also reset bus?
+     *if (s->address != ADDR_RESET) {
+     *    i2c_end_transfer(s->bus);
+     *}
+     */
+
+    i2c->mdata = 0;
+    i2c->lmadr = 0;
+    i2c->hmadr = 0;
+    i2c->cntl = 0;
+    i2c->mdcntl = 0;
+    i2c->sts = 0;
+    i2c->extsts = 0x8f;
+    i2c->sdata = 0;
+    i2c->lsadr = 0;
+    i2c->hsadr = 0;
+    i2c->clkdiv = 0;
+    i2c->intrmsk = 0;
+    i2c->xfrcnt = 0;
+    i2c->xtcntlss = 0;
+    i2c->directcntl = 0x0f;
+    i2c->intr = 0;
+}
+
+static inline bool ppc4xx_i2c_is_master(PPC4xxI2CState *i2c)
+{
+    return true;
+}
 
 static uint64_t ppc4xx_i2c_readb(void *opaque, hwaddr addr, unsigned int size)
 {
     PPC4xxI2CState *i2c = PPC4xx_I2C(opaque);
     uint64_t ret;
 
-#ifdef DEBUG_I2C
-    printf("%s: addr " TARGET_FMT_plx "\n", __func__, addr);
-#endif
     switch (addr) {
     case 0x00:
-        /*i2c_readbyte(&i2c->mdata);*/
         ret = i2c->mdata;
+        if (ppc4xx_i2c_is_master(i2c)) {
+            ret = 0xff;
+
+            if (!(i2c->sts & IIC_STS_MDBS)) {
+                qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Trying to read "
+                              "without starting transfer\n",
+                              TYPE_PPC4xx_I2C, __func__);
+            } else {
+                int pending = (i2c->cntl >> 4) & 3;
+
+                /* get the next byte */
+                int byte = i2c_recv(i2c->bus);
+
+                if (byte < 0) {
+                    qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: read failed "
+                                  "for device 0x%02x\n", TYPE_PPC4xx_I2C,
+                                  __func__, i2c->lmadr);
+                    ret = 0xff;
+                } else {
+                    ret = byte;
+                    /* Raise interrupt if enabled */
+                    /*ppc4xx_i2c_raise_interrupt(i2c)*/;
+                }
+
+                if (!pending) {
+                    i2c->sts &= ~IIC_STS_MDBS;
+                    /*i2c_end_transfer(i2c->bus);*/
+                /*} else if (i2c->cntl & (IIC_CNTL_RPST | IIC_CNTL_CHT)) {*/
+                } else if (pending) {
+                    /* current smbus implementation doesn't like
+                       multibyte xfer repeated start */
+                    i2c_end_transfer(i2c->bus);
+                    if (i2c_start_transfer(i2c->bus, i2c->lmadr >> 1, 1)) {
+                        /* if non zero is returned, the adress is not valid */
+                        i2c->sts &= ~IIC_STS_PT;
+                        i2c->sts |= IIC_STS_ERR;
+                        i2c->extsts |= IIC_EXTSTS_XFRA;
+                    } else {
+                        /*i2c->sts |= IIC_STS_PT;*/
+                        i2c->sts |= IIC_STS_MDBS;
+                        i2c->sts &= ~IIC_STS_ERR;
+                        i2c->extsts = 0;
+                    }
+                }
+                pending--;
+                i2c->cntl = (i2c->cntl & 0xcf) | (pending << 4);
+            }
+        } else {
+            qemu_log_mask(LOG_UNIMP, "[%s]%s: slave mode not implemented\n",
+                          TYPE_PPC4xx_I2C, __func__);
+        }
         break;
     case 0x02:
         ret = i2c->sdata;
@@ -88,13 +182,15 @@ static uint64_t ppc4xx_i2c_readb(void *opaque, hwaddr addr, unsigned int size)
     case 0x10:
         ret = i2c->directcntl;
         break;
+    case 0x11:
+        ret = i2c->intr;
+        break;
     default:
-        ret = 0x00;
+        qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad address at offset 0x%"
+                      HWADDR_PRIx "\n", TYPE_PPC4xx_I2C, __func__, addr);
+        ret = 0;
         break;
     }
-#ifdef DEBUG_I2C
-    printf("%s: addr " TARGET_FMT_plx " %02" PRIx64 "\n", __func__, addr, ret);
-#endif
 
     return ret;
 }
@@ -103,26 +199,70 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr addr, uint64_t value,
                               unsigned int size)
 {
     PPC4xxI2CState *i2c = opaque;
-#ifdef DEBUG_I2C
-    printf("%s: addr " TARGET_FMT_plx " val %08" PRIx64 "\n",
-           __func__, addr, value);
-#endif
+
     switch (addr) {
     case 0x00:
         i2c->mdata = value;
-        /*i2c_sendbyte(&i2c->mdata);*/
+        if (!i2c_bus_busy(i2c->bus)) {
+            /* assume we start a write transfer */
+            if (i2c_start_transfer(i2c->bus, i2c->lmadr >> 1, 0)) {
+                /* if non zero is returned, the adress is not valid */
+                i2c->sts &= ~IIC_STS_PT;
+                i2c->sts |= IIC_STS_ERR;
+                i2c->extsts |= IIC_EXTSTS_XFRA;
+            } else {
+                i2c->sts |= IIC_STS_PT;
+                i2c->sts &= ~IIC_STS_ERR;
+                i2c->extsts = 0;
+            }
+        }
+        if (i2c_bus_busy(i2c->bus)) {
+            if (i2c_send(i2c->bus, i2c->mdata)) {
+                /* if the target return non zero then end the transfer */
+                i2c->sts &= ~IIC_STS_PT;
+                i2c->sts |= IIC_STS_ERR;
+                i2c->extsts |= IIC_EXTSTS_XFRA;
+                i2c_end_transfer(i2c->bus);
+            }
+        }
         break;
     case 0x02:
         i2c->sdata = value;
         break;
     case 0x04:
         i2c->lmadr = value;
+        if (i2c_bus_busy(i2c->bus)) {
+            i2c_end_transfer(i2c->bus);
+        }
         break;
     case 0x05:
         i2c->hmadr = value;
         break;
     case 0x06:
         i2c->cntl = value;
+        if (i2c->cntl & IIC_CNTL_PT) {
+            if (i2c->cntl & IIC_CNTL_READ) {
+                if (i2c_bus_busy(i2c->bus)) {
+                    /* end previous transfer */
+                    i2c->sts &= ~IIC_STS_PT;
+                    i2c_end_transfer(i2c->bus);
+                }
+                if (i2c_start_transfer(i2c->bus, i2c->lmadr >> 1, 1)) {
+                    /* if non zero is returned, the adress is not valid */
+                    i2c->sts &= ~IIC_STS_PT;
+                    i2c->sts |= IIC_STS_ERR;
+                    i2c->extsts |= IIC_EXTSTS_XFRA;
+                } else {
+                    /*i2c->sts |= IIC_STS_PT;*/
+                    i2c->sts |= IIC_STS_MDBS;
+                    i2c->sts &= ~IIC_STS_ERR;
+                    i2c->extsts = 0;
+                }
+            } else {
+                /* we actually already did the write transfer... */
+                i2c->sts &= ~IIC_STS_PT;
+            }
+        }
         break;
     case 0x07:
         i2c->mdcntl = value & 0xDF;
@@ -135,6 +275,7 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr addr, uint64_t value,
         break;
     case 0x0A:
         i2c->lsadr = value;
+        /*i2c_set_slave_address(i2c->bus, i2c->lsadr);*/
         break;
     case 0x0B:
         i2c->hsadr = value;
@@ -149,11 +290,23 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr addr, uint64_t value,
         i2c->xfrcnt = value & 0x77;
         break;
     case 0x0F:
+        if (value & IIC_XTCNTLSS_SRST) {
+            /* Is it actually a full reset? U-Boot sets some regs before */
+            ppc4xx_i2c_reset(DEVICE(i2c));
+            break;
+        }
         i2c->xtcntlss = value;
         break;
     case 0x10:
         i2c->directcntl = value & 0x7;
         break;
+    case 0x11:
+        i2c->intr = value;
+        break;
+    default:
+        qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad address at offset 0x%"
+                      HWADDR_PRIx "\n", TYPE_PPC4xx_I2C, __func__, addr);
+        break;
     }
 }
 
@@ -167,21 +320,6 @@ static const MemoryRegionOps ppc4xx_i2c_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void ppc4xx_i2c_reset(DeviceState *s)
-{
-    PPC4xxI2CState *i2c = PPC4xx_I2C(s);
-
-    i2c->mdata = 0x00;
-    i2c->sdata = 0x00;
-    i2c->cntl = 0x00;
-    i2c->mdcntl = 0x00;
-    i2c->sts = 0x00;
-    i2c->extsts = 0x00;
-    i2c->clkdiv = 0x00;
-    i2c->xfrcnt = 0x00;
-    i2c->directcntl = 0x0F;
-}
-
 static void ppc4xx_i2c_init(Object *o)
 {
     PPC4xxI2CState *s = PPC4xx_I2C(o);
diff --git a/include/hw/i2c/ppc4xx_i2c.h b/include/hw/i2c/ppc4xx_i2c.h
index 3450bda577..3c603071bd 100644
--- a/include/hw/i2c/ppc4xx_i2c.h
+++ b/include/hw/i2c/ppc4xx_i2c.h
@@ -2,6 +2,8 @@
  * PPC4xx I2C controller emulation
  *
  * Copyright (c) 2007 Jocelyn Mayer
+ * Copyright (c) 2012 François Revol
+ * Copyright (c) 2016 BALATON Zoltan
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -55,6 +57,7 @@ typedef struct PPC4xxI2CState {
     uint8_t xfrcnt;
     uint8_t xtcntlss;
     uint8_t directcntl;
+    uint8_t intr;
 } PPC4xxI2CState;
 
 #endif /* PPC4XX_I2C_H */
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 06/14] ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (4 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 05/14] ppc4xx_i2c: Implement basic I2C functions David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 07/14] spapr: Capabilities infrastructure David Gibson
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, Cédric Le Goater,
	David Gibson

From: Cédric Le Goater <clg@kaod.org>

The 'pnv' prefix is now used for all and the routines populating the
device tree start with 'pnv_dt'. The handler of the PnvXScomInterface
is also renamed to 'dt_xscom' which should reflect that it is
populating the device tree under the 'xscom@' node of the chip.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/pnv.c               | 94 ++++++++++++++++++++++------------------------
 hw/ppc/pnv_bmc.c           |  2 +-
 hw/ppc/pnv_core.c          |  8 ++--
 hw/ppc/pnv_lpc.c           |  6 +--
 hw/ppc/pnv_psi.c           |  4 +-
 hw/ppc/pnv_xscom.c         | 10 ++---
 include/hw/ppc/pnv.h       | 10 ++---
 include/hw/ppc/pnv_xscom.h |  4 +-
 8 files changed, 67 insertions(+), 71 deletions(-)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 94ffc8e137..9475e8479c 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -77,8 +77,7 @@ static const char *pnv_chip_core_typename(const PnvChip *o)
  * that has a different "affinity". In practice, it means one range
  * per chip.
  */
-static void powernv_populate_memory_node(void *fdt, int chip_id, hwaddr start,
-                                         hwaddr size)
+static void pnv_dt_memory(void *fdt, int chip_id, hwaddr start, hwaddr size)
 {
     char *mem_name;
     uint64_t mem_reg_property[2];
@@ -119,7 +118,7 @@ static int get_cpus_node(void *fdt)
  * device tree, used in XSCOM to address cores and in interrupt
  * servers.
  */
-static void powernv_create_core_node(PnvChip *chip, PnvCore *pc, void *fdt)
+static void pnv_dt_core(PnvChip *chip, PnvCore *pc, void *fdt)
 {
     CPUState *cs = CPU(DEVICE(pc->threads));
     DeviceClass *dc = DEVICE_GET_CLASS(cs);
@@ -228,8 +227,8 @@ static void powernv_create_core_node(PnvChip *chip, PnvCore *pc, void *fdt)
                        servers_prop, sizeof(servers_prop))));
 }
 
-static void powernv_populate_icp(PnvChip *chip, void *fdt, uint32_t pir,
-                                 uint32_t nr_threads)
+static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir,
+                       uint32_t nr_threads)
 {
     uint64_t addr = PNV_ICP_BASE(chip) | (pir << 12);
     char *name;
@@ -277,13 +276,13 @@ static int pnv_chip_lpc_offset(PnvChip *chip, void *fdt)
     return offset;
 }
 
-static void powernv_populate_chip(PnvChip *chip, void *fdt)
+static void pnv_dt_chip(PnvChip *chip, void *fdt)
 {
     const char *typename = pnv_chip_core_typename(chip);
     size_t typesize = object_type_get_instance_size(typename);
     int i;
 
-    pnv_xscom_populate(chip, fdt, 0);
+    pnv_dt_xscom(chip, fdt, 0);
 
     /* The default LPC bus of a multichip system is on chip 0. It's
      * recognized by the firmware (skiboot) using a "primary"
@@ -298,20 +297,18 @@ static void powernv_populate_chip(PnvChip *chip, void *fdt)
     for (i = 0; i < chip->nr_cores; i++) {
         PnvCore *pnv_core = PNV_CORE(chip->cores + i * typesize);
 
-        powernv_create_core_node(chip, pnv_core, fdt);
+        pnv_dt_core(chip, pnv_core, fdt);
 
         /* Interrupt Control Presenters (ICP). One per core. */
-        powernv_populate_icp(chip, fdt, pnv_core->pir,
-                             CPU_CORE(pnv_core)->nr_threads);
+        pnv_dt_icp(chip, fdt, pnv_core->pir, CPU_CORE(pnv_core)->nr_threads);
     }
 
     if (chip->ram_size) {
-        powernv_populate_memory_node(fdt, chip->chip_id, chip->ram_start,
-                                     chip->ram_size);
+        pnv_dt_memory(fdt, chip->chip_id, chip->ram_start, chip->ram_size);
     }
 }
 
-static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off)
+static void pnv_dt_rtc(ISADevice *d, void *fdt, int lpc_off)
 {
     uint32_t io_base = d->ioport_id;
     uint32_t io_regs[] = {
@@ -331,7 +328,7 @@ static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off)
     _FDT((fdt_setprop_string(fdt, node, "compatible", "pnpPNP,b00")));
 }
 
-static void powernv_populate_serial(ISADevice *d, void *fdt, int lpc_off)
+static void pnv_dt_serial(ISADevice *d, void *fdt, int lpc_off)
 {
     const char compatible[] = "ns16550\0pnpPNP,501";
     uint32_t io_base = d->ioport_id;
@@ -362,7 +359,7 @@ static void powernv_populate_serial(ISADevice *d, void *fdt, int lpc_off)
     _FDT((fdt_setprop_string(fdt, node, "device_type", "serial")));
 }
 
-static void powernv_populate_ipmi_bt(ISADevice *d, void *fdt, int lpc_off)
+static void pnv_dt_ipmi_bt(ISADevice *d, void *fdt, int lpc_off)
 {
     const char compatible[] = "bt\0ipmi-bt";
     uint32_t io_base;
@@ -401,17 +398,17 @@ typedef struct ForeachPopulateArgs {
     int offset;
 } ForeachPopulateArgs;
 
-static int powernv_populate_isa_device(DeviceState *dev, void *opaque)
+static int pnv_dt_isa_device(DeviceState *dev, void *opaque)
 {
     ForeachPopulateArgs *args = opaque;
     ISADevice *d = ISA_DEVICE(dev);
 
     if (object_dynamic_cast(OBJECT(dev), TYPE_MC146818_RTC)) {
-        powernv_populate_rtc(d, args->fdt, args->offset);
+        pnv_dt_rtc(d, args->fdt, args->offset);
     } else if (object_dynamic_cast(OBJECT(dev), TYPE_ISA_SERIAL)) {
-        powernv_populate_serial(d, args->fdt, args->offset);
+        pnv_dt_serial(d, args->fdt, args->offset);
     } else if (object_dynamic_cast(OBJECT(dev), "isa-ipmi-bt")) {
-        powernv_populate_ipmi_bt(d, args->fdt, args->offset);
+        pnv_dt_ipmi_bt(d, args->fdt, args->offset);
     } else {
         error_report("unknown isa device %s@i%x", qdev_fw_name(dev),
                      d->ioport_id);
@@ -420,7 +417,7 @@ static int powernv_populate_isa_device(DeviceState *dev, void *opaque)
     return 0;
 }
 
-static void powernv_populate_isa(ISABus *bus, void *fdt, int lpc_offset)
+static void pnv_dt_isa(ISABus *bus, void *fdt, int lpc_offset)
 {
     ForeachPopulateArgs args = {
         .fdt = fdt,
@@ -429,14 +426,13 @@ static void powernv_populate_isa(ISABus *bus, void *fdt, int lpc_offset)
 
     /* ISA devices are not necessarily parented to the ISA bus so we
      * can not use object_child_foreach() */
-    qbus_walk_children(BUS(bus), powernv_populate_isa_device,
-                       NULL, NULL, NULL, &args);
+    qbus_walk_children(BUS(bus), pnv_dt_isa_device, NULL, NULL, NULL, &args);
 }
 
-static void *powernv_create_fdt(MachineState *machine)
+static void *pnv_dt_create(MachineState *machine)
 {
     const char plat_compat[] = "qemu,powernv\0ibm,powernv";
-    PnvMachineState *pnv = POWERNV_MACHINE(machine);
+    PnvMachineState *pnv = PNV_MACHINE(machine);
     void *fdt;
     char *buf;
     int off;
@@ -479,15 +475,15 @@ static void *powernv_create_fdt(MachineState *machine)
 
     /* Populate device tree for each chip */
     for (i = 0; i < pnv->num_chips; i++) {
-        powernv_populate_chip(pnv->chips[i], fdt);
+        pnv_dt_chip(pnv->chips[i], fdt);
     }
 
     /* Populate ISA devices on chip 0 */
     lpc_offset = pnv_chip_lpc_offset(pnv->chips[0], fdt);
-    powernv_populate_isa(pnv->isa_bus, fdt, lpc_offset);
+    pnv_dt_isa(pnv->isa_bus, fdt, lpc_offset);
 
     if (pnv->bmc) {
-        pnv_bmc_populate_sensors(pnv->bmc, fdt);
+        pnv_dt_bmc_sensors(pnv->bmc, fdt);
     }
 
     return fdt;
@@ -495,17 +491,17 @@ static void *powernv_create_fdt(MachineState *machine)
 
 static void pnv_powerdown_notify(Notifier *n, void *opaque)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(qdev_get_machine());
+    PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine());
 
     if (pnv->bmc) {
         pnv_bmc_powerdown(pnv->bmc);
     }
 }
 
-static void ppc_powernv_reset(void)
+static void pnv_reset(void)
 {
     MachineState *machine = MACHINE(qdev_get_machine());
-    PnvMachineState *pnv = POWERNV_MACHINE(machine);
+    PnvMachineState *pnv = PNV_MACHINE(machine);
     void *fdt;
     Object *obj;
 
@@ -524,7 +520,7 @@ static void ppc_powernv_reset(void)
         pnv->bmc = IPMI_BMC(obj);
     }
 
-    fdt = powernv_create_fdt(machine);
+    fdt = pnv_dt_create(machine);
 
     /* Pack resulting tree */
     _FDT((fdt_pack(fdt)));
@@ -552,9 +548,9 @@ static ISABus *pnv_isa_create(PnvChip *chip)
     return isa_bus;
 }
 
-static void ppc_powernv_init(MachineState *machine)
+static void pnv_init(MachineState *machine)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(machine);
+    PnvMachineState *pnv = PNV_MACHINE(machine);
     MemoryRegion *ram;
     char *fw_filename;
     long fw_size;
@@ -567,7 +563,7 @@ static void ppc_powernv_init(MachineState *machine)
     }
 
     ram = g_new(MemoryRegion, 1);
-    memory_region_allocate_system_memory(ram, NULL, "ppc_powernv.ram",
+    memory_region_allocate_system_memory(ram, NULL, "pnv.ram",
                                          machine->ram_size);
     memory_region_add_subregion(get_system_memory(), 0, ram);
 
@@ -974,7 +970,7 @@ static void pnv_chip_class_init(ObjectClass *klass, void *data)
 
 static ICSState *pnv_ics_get(XICSFabric *xi, int irq)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(xi);
+    PnvMachineState *pnv = PNV_MACHINE(xi);
     int i;
 
     for (i = 0; i < pnv->num_chips; i++) {
@@ -987,7 +983,7 @@ static ICSState *pnv_ics_get(XICSFabric *xi, int irq)
 
 static void pnv_ics_resend(XICSFabric *xi)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(xi);
+    PnvMachineState *pnv = PNV_MACHINE(xi);
     int i;
 
     for (i = 0; i < pnv->num_chips; i++) {
@@ -1021,7 +1017,7 @@ static ICPState *pnv_icp_get(XICSFabric *xi, int pir)
 static void pnv_pic_print_info(InterruptStatsProvider *obj,
                                Monitor *mon)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(obj);
+    PnvMachineState *pnv = PNV_MACHINE(obj);
     int i;
     CPUState *cs;
 
@@ -1039,13 +1035,13 @@ static void pnv_pic_print_info(InterruptStatsProvider *obj,
 static void pnv_get_num_chips(Object *obj, Visitor *v, const char *name,
                               void *opaque, Error **errp)
 {
-    visit_type_uint32(v, name, &POWERNV_MACHINE(obj)->num_chips, errp);
+    visit_type_uint32(v, name, &PNV_MACHINE(obj)->num_chips, errp);
 }
 
 static void pnv_set_num_chips(Object *obj, Visitor *v, const char *name,
                               void *opaque, Error **errp)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(obj);
+    PnvMachineState *pnv = PNV_MACHINE(obj);
     uint32_t num_chips;
     Error *local_err = NULL;
 
@@ -1067,13 +1063,13 @@ static void pnv_set_num_chips(Object *obj, Visitor *v, const char *name,
     pnv->num_chips = num_chips;
 }
 
-static void powernv_machine_initfn(Object *obj)
+static void pnv_machine_initfn(Object *obj)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(obj);
+    PnvMachineState *pnv = PNV_MACHINE(obj);
     pnv->num_chips = 1;
 }
 
-static void powernv_machine_class_props_init(ObjectClass *oc)
+static void pnv_machine_class_props_init(ObjectClass *oc)
 {
     object_class_property_add(oc, "num-chips", "uint32",
                               pnv_get_num_chips, pnv_set_num_chips,
@@ -1083,15 +1079,15 @@ static void powernv_machine_class_props_init(ObjectClass *oc)
                               NULL);
 }
 
-static void powernv_machine_class_init(ObjectClass *oc, void *data)
+static void pnv_machine_class_init(ObjectClass *oc, void *data)
 {
     MachineClass *mc = MACHINE_CLASS(oc);
     XICSFabricClass *xic = XICS_FABRIC_CLASS(oc);
     InterruptStatsProviderClass *ispc = INTERRUPT_STATS_PROVIDER_CLASS(oc);
 
     mc->desc = "IBM PowerNV (Non-Virtualized)";
-    mc->init = ppc_powernv_init;
-    mc->reset = ppc_powernv_reset;
+    mc->init = pnv_init;
+    mc->reset = pnv_reset;
     mc->max_cpus = MAX_CPUS;
     mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
     mc->block_default_type = IF_IDE; /* Pnv provides a AHCI device for
@@ -1104,7 +1100,7 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
     xic->ics_resend = pnv_ics_resend;
     ispc->print_info = pnv_pic_print_info;
 
-    powernv_machine_class_props_init(oc);
+    pnv_machine_class_props_init(oc);
 }
 
 #define DEFINE_PNV_CHIP_TYPE(type, class_initfn) \
@@ -1116,11 +1112,11 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
 
 static const TypeInfo types[] = {
     {
-        .name          = TYPE_POWERNV_MACHINE,
+        .name          = TYPE_PNV_MACHINE,
         .parent        = TYPE_MACHINE,
         .instance_size = sizeof(PnvMachineState),
-        .instance_init = powernv_machine_initfn,
-        .class_init    = powernv_machine_class_init,
+        .instance_init = pnv_machine_initfn,
+        .class_init    = pnv_machine_class_init,
         .interfaces = (InterfaceInfo[]) {
             { TYPE_XICS_FABRIC },
             { TYPE_INTERRUPT_STATS_PROVIDER },
diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c
index 7b60b4c360..b2cf441ee7 100644
--- a/hw/ppc/pnv_bmc.c
+++ b/hw/ppc/pnv_bmc.c
@@ -73,7 +73,7 @@ void pnv_bmc_powerdown(IPMIBmc *bmc)
     pnv_gen_oem_sel(bmc, SOFT_OFF);
 }
 
-void pnv_bmc_populate_sensors(IPMIBmc *bmc, void *fdt)
+void pnv_dt_bmc_sensors(IPMIBmc *bmc, void *fdt)
 {
     int offset;
     int i;
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index 03317db853..7e8a76df44 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -37,7 +37,7 @@ static const char *pnv_core_cpu_typename(PnvCore *pc)
     return cpu_type;
 }
 
-static void powernv_cpu_reset(void *opaque)
+static void pnv_cpu_reset(void *opaque)
 {
     PowerPCCPU *cpu = opaque;
     CPUState *cs = CPU(cpu);
@@ -54,7 +54,7 @@ static void powernv_cpu_reset(void *opaque)
     env->msr |= MSR_HVB; /* Hypervisor mode */
 }
 
-static void powernv_cpu_init(PowerPCCPU *cpu, Error **errp)
+static void pnv_cpu_init(PowerPCCPU *cpu, Error **errp)
 {
     CPUPPCState *env = &cpu->env;
     int core_pir;
@@ -73,7 +73,7 @@ static void powernv_cpu_init(PowerPCCPU *cpu, Error **errp)
     /* Set time-base frequency to 512 MHz */
     cpu_ppc_tb_init(env, PNV_TIMEBASE_FREQ);
 
-    qemu_register_reset(powernv_cpu_reset, cpu);
+    qemu_register_reset(pnv_cpu_reset, cpu);
 }
 
 /*
@@ -139,7 +139,7 @@ static void pnv_core_realize_child(Object *child, XICSFabric *xi, Error **errp)
         return;
     }
 
-    powernv_cpu_init(cpu, &local_err);
+    pnv_cpu_init(cpu, &local_err);
     if (local_err) {
         error_propagate(errp, local_err);
         return;
diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c
index f03a80a29b..b777b78e18 100644
--- a/hw/ppc/pnv_lpc.c
+++ b/hw/ppc/pnv_lpc.c
@@ -92,7 +92,7 @@ enum {
 #define LPC_HC_REGS_OPB_SIZE    0x00001000
 
 
-static int pnv_lpc_populate(PnvXScomInterface *dev, void *fdt, int xscom_offset)
+static int pnv_lpc_dt_xscom(PnvXScomInterface *dev, void *fdt, int xscom_offset)
 {
     const char compat[] = "ibm,power8-lpc\0ibm,lpc";
     char *name;
@@ -482,7 +482,7 @@ static void pnv_lpc_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     PnvXScomInterfaceClass *xdc = PNV_XSCOM_INTERFACE_CLASS(klass);
 
-    xdc->populate = pnv_lpc_populate;
+    xdc->dt_xscom = pnv_lpc_dt_xscom;
 
     dc->realize = pnv_lpc_realize;
 }
@@ -515,7 +515,7 @@ type_init(pnv_lpc_register_types)
  */
 static void pnv_lpc_isa_irq_handler_cpld(void *opaque, int n, int level)
 {
-    PnvMachineState *pnv = POWERNV_MACHINE(qdev_get_machine());
+    PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine());
     uint32_t old_state = pnv->cpld_irqstate;
     PnvLpcController *lpc = PNV_LPC(opaque);
 
diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
index 9876c26622..5b969127c3 100644
--- a/hw/ppc/pnv_psi.c
+++ b/hw/ppc/pnv_psi.c
@@ -510,7 +510,7 @@ static void pnv_psi_realize(DeviceState *dev, Error **errp)
     }
 }
 
-static int pnv_psi_populate(PnvXScomInterface *dev, void *fdt, int xscom_offset)
+static int pnv_psi_dt_xscom(PnvXScomInterface *dev, void *fdt, int xscom_offset)
 {
     const char compat[] = "ibm,power8-psihb-x\0ibm,psihb-x";
     char *name;
@@ -546,7 +546,7 @@ static void pnv_psi_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     PnvXScomInterfaceClass *xdc = PNV_XSCOM_INTERFACE_CLASS(klass);
 
-    xdc->populate = pnv_psi_populate;
+    xdc->dt_xscom = pnv_psi_dt_xscom;
 
     dc->realize = pnv_psi_realize;
     dc->props = pnv_psi_properties;
diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index 38bc85f117..e51d634f40 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -207,15 +207,15 @@ typedef struct ForeachPopulateArgs {
     int xscom_offset;
 } ForeachPopulateArgs;
 
-static int xscom_populate_child(Object *child, void *opaque)
+static int xscom_dt_child(Object *child, void *opaque)
 {
     if (object_dynamic_cast(child, TYPE_PNV_XSCOM_INTERFACE)) {
         ForeachPopulateArgs *args = opaque;
         PnvXScomInterface *xd = PNV_XSCOM_INTERFACE(child);
         PnvXScomInterfaceClass *xc = PNV_XSCOM_INTERFACE_GET_CLASS(xd);
 
-        if (xc->populate) {
-            _FDT((xc->populate(xd, args->fdt, args->xscom_offset)));
+        if (xc->dt_xscom) {
+            _FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset)));
         }
     }
     return 0;
@@ -224,7 +224,7 @@ static int xscom_populate_child(Object *child, void *opaque)
 static const char compat_p8[] = "ibm,power8-xscom\0ibm,xscom";
 static const char compat_p9[] = "ibm,power9-xscom\0ibm,xscom";
 
-int pnv_xscom_populate(PnvChip *chip, void *fdt, int root_offset)
+int pnv_dt_xscom(PnvChip *chip, void *fdt, int root_offset)
 {
     uint64_t reg[] = { cpu_to_be64(PNV_XSCOM_BASE(chip)),
                        cpu_to_be64(PNV_XSCOM_SIZE) };
@@ -255,7 +255,7 @@ int pnv_xscom_populate(PnvChip *chip, void *fdt, int root_offset)
     args.fdt = fdt;
     args.xscom_offset = xscom_offset;
 
-    object_child_foreach(OBJECT(chip), xscom_populate_child, &args);
+    object_child_foreach(OBJECT(chip), xscom_dt_child, &args);
     return 0;
 }
 
diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
index 59524cd42b..61896f9fd7 100644
--- a/include/hw/ppc/pnv.h
+++ b/include/hw/ppc/pnv.h
@@ -26,7 +26,7 @@
 #include "hw/ppc/pnv_psi.h"
 #include "hw/ppc/pnv_occ.h"
 
-#define TYPE_PNV_CHIP "powernv-chip"
+#define TYPE_PNV_CHIP "pnv-chip"
 #define PNV_CHIP(obj) OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP)
 #define PNV_CHIP_CLASS(klass) \
      OBJECT_CLASS_CHECK(PnvChipClass, (klass), TYPE_PNV_CHIP)
@@ -117,9 +117,9 @@ typedef struct PnvChipClass {
 #define PNV_CHIP_INDEX(chip)                                    \
     (((chip)->chip_id >> 2) * 2 + ((chip)->chip_id & 0x3))
 
-#define TYPE_POWERNV_MACHINE       MACHINE_TYPE_NAME("powernv")
-#define POWERNV_MACHINE(obj) \
-    OBJECT_CHECK(PnvMachineState, (obj), TYPE_POWERNV_MACHINE)
+#define TYPE_PNV_MACHINE       MACHINE_TYPE_NAME("powernv")
+#define PNV_MACHINE(obj) \
+    OBJECT_CHECK(PnvMachineState, (obj), TYPE_PNV_MACHINE)
 
 typedef struct PnvMachineState {
     /*< private >*/
@@ -144,7 +144,7 @@ typedef struct PnvMachineState {
 /*
  * BMC helpers
  */
-void pnv_bmc_populate_sensors(IPMIBmc *bmc, void *fdt);
+void pnv_dt_bmc_sensors(IPMIBmc *bmc, void *fdt);
 void pnv_bmc_powerdown(IPMIBmc *bmc);
 
 /*
diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h
index 38077b4796..7252e219e2 100644
--- a/include/hw/ppc/pnv_xscom.h
+++ b/include/hw/ppc/pnv_xscom.h
@@ -36,7 +36,7 @@ typedef struct PnvXScomInterface {
 
 typedef struct PnvXScomInterfaceClass {
     InterfaceClass parent;
-    int (*populate)(PnvXScomInterface *dev, void *fdt, int offset);
+    int (*dt_xscom)(PnvXScomInterface *dev, void *fdt, int offset);
 } PnvXScomInterfaceClass;
 
 /*
@@ -67,7 +67,7 @@ typedef struct PnvXScomInterfaceClass {
 #define PNV_XSCOM_OCC_SIZE        0x6000
 
 extern void pnv_xscom_realize(PnvChip *chip, Error **errp);
-extern int pnv_xscom_populate(PnvChip *chip, void *fdt, int offset);
+extern int pnv_dt_xscom(PnvChip *chip, void *fdt, int offset);
 
 extern void pnv_xscom_add_subregion(PnvChip *chip, hwaddr offset,
                                     MemoryRegion *mr);
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 07/14] spapr: Capabilities infrastructure
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (5 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 06/14] ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 08/14] spapr: Treat Hardware Transactional Memory (HTM) as an optional capability David Gibson
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

Because PAPR is a paravirtual environment access to certain CPU (or other)
facilities can be blocked by the hypervisor.  PAPR provides ways to
advertise in the device tree whether or not those features are available to
the guest.

In some places we automatically determine whether to make a feature
available based on whether our host can support it, in most cases this is
based on limitations in the available KVM implementation.

Although we correctly advertise this to the guest, it means that host
factors might make changes to the guest visible environment which is bad:
as well as generaly reducing reproducibility, it means that a migration
between different host environments can easily go bad.

We've mostly gotten away with it because the environments considered mature
enough to be well supported (basically, KVM on POWER8) have had consistent
feature availability.  But, it's still not right and some limitations on
POWER9 is going to make it more of an issue in future.

This introduces an infrastructure for defining "sPAPR capabilities".  These
are set by default based on the machine version, masked by the capabilities
of the chosen cpu, but can be overriden with machine properties.

The intention is at reset time we verify that the requested capabilities
can be supported on the host (considering TCG, KVM and/or host cpu
limitations).  If not we simply fail, rather than silently modifying the
advertised featureset to the guest.

This does mean that certain configurations that "worked" may now fail, but
such configurations were already more subtly broken.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/Makefile.objs   |   2 +-
 hw/ppc/spapr.c         |   7 ++
 hw/ppc/spapr_caps.c    | 181 +++++++++++++++++++++++++++++++++++++++++++++++++
 include/hw/ppc/spapr.h |  31 +++++++++
 4 files changed, 220 insertions(+), 1 deletion(-)
 create mode 100644 hw/ppc/spapr_caps.c

diff --git a/hw/ppc/Makefile.objs b/hw/ppc/Makefile.objs
index 7efc686748..1faff853b7 100644
--- a/hw/ppc/Makefile.objs
+++ b/hw/ppc/Makefile.objs
@@ -1,7 +1,7 @@
 # shared objects
 obj-y += ppc.o ppc_booke.o fdt.o
 # IBM pSeries (sPAPR)
-obj-$(CONFIG_PSERIES) += spapr.o spapr_vio.o spapr_events.o
+obj-$(CONFIG_PSERIES) += spapr.o spapr_caps.o spapr_vio.o spapr_events.o
 obj-$(CONFIG_PSERIES) += spapr_hcall.o spapr_iommu.o spapr_rtas.o
 obj-$(CONFIG_PSERIES) += spapr_pci.o spapr_rtc.o spapr_drc.o spapr_rng.o
 obj-$(CONFIG_PSERIES) += spapr_cpu_core.o spapr_ovec.o
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 6785a90c60..d472baef8d 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1466,6 +1466,8 @@ static void spapr_machine_reset(void)
     /* Check for unknown sysbus devices */
     foreach_dynamic_sysbus_device(find_unknown_sysbus_device, NULL);
 
+    spapr_caps_reset(spapr);
+
     first_ppc_cpu = POWERPC_CPU(first_cpu);
     if (kvm_enabled() && kvmppc_has_cap_mmu_radix() &&
         ppc_check_compat(first_ppc_cpu, CPU_POWERPC_LOGICAL_3_00, 0,
@@ -2311,6 +2313,8 @@ static void spapr_machine_init(MachineState *machine)
     char *filename;
     Error *resize_hpt_err = NULL;
 
+    spapr_caps_validate(spapr, &error_fatal);
+
     msi_nonbroken = true;
 
     QLIST_INIT(&spapr->phbs);
@@ -3819,6 +3823,9 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
      * in which LMBs are represented and hot-added
      */
     mc->numa_mem_align_shift = 28;
+
+    smc->default_caps = spapr_caps(0);
+    spapr_caps_add_properties(smc, &error_abort);
 }
 
 static const TypeInfo spapr_machine_info = {
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
new file mode 100644
index 0000000000..968ba7b857
--- /dev/null
+++ b/hw/ppc/spapr_caps.c
@@ -0,0 +1,181 @@
+/*
+ * QEMU PowerPC pSeries Logical Partition capabilities handling
+ *
+ * Copyright (c) 2017 David Gibson, Red Hat Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "qapi/visitor.h"
+
+#include "hw/ppc/spapr.h"
+
+typedef struct sPAPRCapabilityInfo {
+    const char *name;
+    const char *description;
+    uint64_t flag;
+
+    /* Make sure the virtual hardware can support this capability */
+    void (*allow)(sPAPRMachineState *spapr, Error **errp);
+
+    /* If possible, tell the virtual hardware not to allow the cap to
+     * be used at all */
+    void (*disallow)(sPAPRMachineState *spapr, Error **errp);
+} sPAPRCapabilityInfo;
+
+static sPAPRCapabilityInfo capability_table[] = {
+};
+
+static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
+                                               CPUState *cs)
+{
+    sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
+    sPAPRCapabilities caps;
+
+    caps = smc->default_caps;
+
+    /* TODO: clamp according to cpu model */
+
+    return caps;
+}
+
+void spapr_caps_reset(sPAPRMachineState *spapr)
+{
+    Error *local_err = NULL;
+    sPAPRCapabilities caps;
+    int i;
+
+    /* First compute the actual set of caps we're running with.. */
+    caps = default_caps_with_cpu(spapr, first_cpu);
+
+    caps.mask |= spapr->forced_caps.mask;
+    caps.mask &= ~spapr->forbidden_caps.mask;
+
+    spapr->effective_caps = caps;
+
+    /* .. then apply those caps to the virtual hardware */
+
+    for (i = 0; i < ARRAY_SIZE(capability_table); i++) {
+        sPAPRCapabilityInfo *info = &capability_table[i];
+
+        if (spapr->effective_caps.mask & info->flag) {
+            /* Failure to allow a cap is fatal - if the guest doesn't
+             * have it, we'll be supplying an incorrect environment */
+            if (info->allow) {
+                info->allow(spapr, &error_fatal);
+            }
+        } else {
+            /* Failure to enforce a cap is only a warning.  The guest
+             * shouldn't be using it, since it's not advertised, so it
+             * doesn't get to complain about weird behaviour if it
+             * goes ahead anyway */
+            if (info->disallow) {
+                info->disallow(spapr, &local_err);
+            }
+            if (local_err) {
+                warn_report_err(local_err);
+                local_err = NULL;
+            }
+        }
+    }
+}
+
+static void spapr_cap_get(Object *obj, Visitor *v, const char *name,
+                          void *opaque, Error **errp)
+{
+    sPAPRCapabilityInfo *cap = opaque;
+    sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
+    bool value = spapr_has_cap(spapr, cap->flag);
+
+    /* TODO: Could this get called before effective_caps is finalized
+     * in spapr_caps_reset()? */
+
+    visit_type_bool(v, name, &value, errp);
+}
+
+static void spapr_cap_set(Object *obj, Visitor *v, const char *name,
+                          void *opaque, Error **errp)
+{
+    sPAPRCapabilityInfo *cap = opaque;
+    sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
+    bool value;
+    Error *local_err = NULL;
+
+    visit_type_bool(v, name, &value, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return;
+    }
+
+    if (value) {
+        spapr->forced_caps.mask |= cap->flag;
+    } else {
+        spapr->forbidden_caps.mask |= cap->flag;
+    }
+}
+
+void spapr_caps_validate(sPAPRMachineState *spapr, Error **errp)
+{
+    uint64_t allcaps = 0;
+    int i;
+
+    for (i = 0; i < ARRAY_SIZE(capability_table); i++) {
+        g_assert((allcaps & capability_table[i].flag) == 0);
+        allcaps |= capability_table[i].flag;
+    }
+
+    g_assert((spapr->forced_caps.mask & ~allcaps) == 0);
+    g_assert((spapr->forbidden_caps.mask & ~allcaps) == 0);
+
+    if (spapr->forced_caps.mask & spapr->forbidden_caps.mask) {
+        error_setg(errp, "Some sPAPR capabilities set both on and off");
+        return;
+    }
+
+    /* Check for any caps incompatible with other caps.  Nothing to do
+     * yet */
+}
+
+void spapr_caps_add_properties(sPAPRMachineClass *smc, Error **errp)
+{
+    Error *local_err = NULL;
+    ObjectClass *klass = OBJECT_CLASS(smc);
+    int i;
+
+    for (i = 0; i < ARRAY_SIZE(capability_table); i++) {
+        sPAPRCapabilityInfo *cap = &capability_table[i];
+        const char *name = g_strdup_printf("cap-%s", cap->name);
+
+        object_class_property_add(klass, name, "bool",
+                                  spapr_cap_get, spapr_cap_set, NULL,
+                                  cap, &local_err);
+        if (local_err) {
+            error_propagate(errp, local_err);
+            return;
+        }
+
+        object_class_property_set_description(klass, name, cap->description,
+                                              &local_err);
+        if (local_err) {
+            error_propagate(errp, local_err);
+            return;
+        }
+    }
+}
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 14757b805e..5569caf1d4 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -50,6 +50,15 @@ typedef enum {
     SPAPR_RESIZE_HPT_REQUIRED,
 } sPAPRResizeHPT;
 
+/**
+ * Capabilities
+ */
+
+typedef struct sPAPRCapabilities sPAPRCapabilities;
+struct sPAPRCapabilities {
+    uint64_t mask;
+};
+
 /**
  * sPAPRMachineClass:
  */
@@ -66,6 +75,7 @@ struct sPAPRMachineClass {
                           hwaddr *mmio32, hwaddr *mmio64,
                           unsigned n_dma, uint32_t *liobns, Error **errp);
     sPAPRResizeHPT resize_hpt_default;
+    sPAPRCapabilities default_caps;
 };
 
 /**
@@ -127,6 +137,9 @@ struct sPAPRMachineState {
     MemoryHotplugState hotplug_memory;
 
     const char *icp_type;
+
+    sPAPRCapabilities forced_caps, forbidden_caps;
+    sPAPRCapabilities effective_caps;
 };
 
 #define H_SUCCESS         0
@@ -724,4 +737,22 @@ int spapr_irq_alloc_block(sPAPRMachineState *spapr, int num, bool lsi,
 void spapr_irq_free(sPAPRMachineState *spapr, int irq, int num);
 qemu_irq spapr_qirq(sPAPRMachineState *spapr, int irq);
 
+/*
+ * Handling of optional capabilities
+ */
+static inline sPAPRCapabilities spapr_caps(uint64_t mask)
+{
+    sPAPRCapabilities caps = { mask };
+    return caps;
+}
+
+static inline bool spapr_has_cap(sPAPRMachineState *spapr, uint64_t cap)
+{
+    return !!(spapr->effective_caps.mask & cap);
+}
+
+void spapr_caps_reset(sPAPRMachineState *spapr);
+void spapr_caps_validate(sPAPRMachineState *spapr, Error **errp);
+void spapr_caps_add_properties(sPAPRMachineClass *smc, Error **errp);
+
 #endif /* HW_SPAPR_H */
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 08/14] spapr: Treat Hardware Transactional Memory (HTM) as an optional capability
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (6 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 07/14] spapr: Capabilities infrastructure David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 09/14] spapr: Validate capabilities on migration David Gibson
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

This adds an spapr capability bit for Hardware Transactional Memory.  It is
enabled by default for pseries-2.11 and earlier machine types. with POWER8
or later CPUs (as it must be, since earlier qemu versions would implicitly
allow it).  However it is disabled by default for the latest pseries-2.12
machine type.

This means that with the latest machine type, HTM will not be available,
regardless of CPU, unless it is explicitly enabled on the command line.
That change is made on the basis that:

 * This way running with -M pseries,accel=tcg will start with whatever cpu
   and will provide the same guest visible model as with accel=kvm.
     - More specifically, this means existing make check tests don't have
       to be modified to use cap-htm=off in order to run with TCG

 * We hope to add a new "HTM without suspend" feature in the not too
   distant future which could work on both POWER8 and POWER9 cpus, and
   could be enabled by default.

 * Best guesses suggest that future POWER cpus may well only support the
   HTM-without-suspend model, not the (frankly, horribly overcomplicated)
   POWER8 style HTM with suspend.

 * Anecdotal evidence suggests problems with HTM being enabled when it
   wasn't wanted are more common than being missing when it was.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/spapr.c         | 15 ++++++++++-----
 hw/ppc/spapr_caps.c    | 29 ++++++++++++++++++++++++++++-
 include/hw/ppc/spapr.h |  3 +++
 3 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index d472baef8d..f8fee8ebcf 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -253,7 +253,9 @@ static int spapr_fixup_cpu_numa_dt(void *fdt, int offset, PowerPCCPU *cpu)
 }
 
 /* Populate the "ibm,pa-features" property */
-static void spapr_populate_pa_features(PowerPCCPU *cpu, void *fdt, int offset,
+static void spapr_populate_pa_features(sPAPRMachineState *spapr,
+                                       PowerPCCPU *cpu,
+                                       void *fdt, int offset,
                                        bool legacy_guest)
 {
     CPUPPCState *env = &cpu->env;
@@ -318,7 +320,7 @@ static void spapr_populate_pa_features(PowerPCCPU *cpu, void *fdt, int offset,
          */
         pa_features[3] |= 0x20;
     }
-    if (kvmppc_has_cap_htm() && pa_size > 24) {
+    if (spapr_has_cap(spapr, SPAPR_CAP_HTM) && pa_size > 24) {
         pa_features[24] |= 0x80;    /* Transactional memory support */
     }
     if (legacy_guest && pa_size > 40) {
@@ -384,8 +386,8 @@ static int spapr_fixup_cpu_dt(void *fdt, sPAPRMachineState *spapr)
             return ret;
         }
 
-        spapr_populate_pa_features(cpu, fdt, offset,
-                                         spapr->cas_legacy_guest_workaround);
+        spapr_populate_pa_features(spapr, cpu, fdt, offset,
+                                   spapr->cas_legacy_guest_workaround);
     }
     return ret;
 }
@@ -579,7 +581,7 @@ static void spapr_populate_cpu_dt(CPUState *cs, void *fdt, int offset,
                           page_sizes_prop, page_sizes_prop_size)));
     }
 
-    spapr_populate_pa_features(cpu, fdt, offset, false);
+    spapr_populate_pa_features(spapr, cpu, fdt, offset, false);
 
     _FDT((fdt_setprop_cell(fdt, offset, "ibm,chip-id",
                            cs->cpu_index / vcpus_per_socket)));
@@ -3903,7 +3905,10 @@ static void spapr_machine_2_11_instance_options(MachineState *machine)
 
 static void spapr_machine_2_11_class_options(MachineClass *mc)
 {
+    sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
+
     spapr_machine_2_12_class_options(mc);
+    smc->default_caps = spapr_caps(SPAPR_CAP_HTM);
     SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_11);
 }
 
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index 968ba7b857..3b35b91a5b 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -24,6 +24,10 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
+#include "sysemu/hw_accel.h"
+#include "target/ppc/cpu.h"
+#include "cpu-models.h"
+#include "kvm_ppc.h"
 
 #include "hw/ppc/spapr.h"
 
@@ -40,18 +44,41 @@ typedef struct sPAPRCapabilityInfo {
     void (*disallow)(sPAPRMachineState *spapr, Error **errp);
 } sPAPRCapabilityInfo;
 
+static void cap_htm_allow(sPAPRMachineState *spapr, Error **errp)
+{
+    if (tcg_enabled()) {
+        error_setg(errp,
+                   "No Transactional Memory support in TCG, try cap-htm=off");
+    } else if (kvm_enabled() && !kvmppc_has_cap_htm()) {
+        error_setg(errp,
+"KVM implementation does not support Transactional Memory, try cap-htm=off"
+            );
+    }
+}
+
 static sPAPRCapabilityInfo capability_table[] = {
+    {
+        .name = "htm",
+        .description = "Allow Hardware Transactional Memory (HTM)",
+        .flag = SPAPR_CAP_HTM,
+        .allow = cap_htm_allow,
+        /* TODO: add cap_htm_disallow */
+    },
 };
 
 static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
                                                CPUState *cs)
 {
     sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
+    PowerPCCPU *cpu = POWERPC_CPU(cs);
     sPAPRCapabilities caps;
 
     caps = smc->default_caps;
 
-    /* TODO: clamp according to cpu model */
+    if (!ppc_check_compat(cpu, CPU_POWERPC_LOGICAL_2_07,
+                          0, spapr->max_compat_pvr)) {
+        caps.mask &= ~SPAPR_CAP_HTM;
+    }
 
     return caps;
 }
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 5569caf1d4..dc64f4ebcb 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -54,6 +54,9 @@ typedef enum {
  * Capabilities
  */
 
+/* Hardware Transactional Memory */
+#define SPAPR_CAP_HTM               0x0000000000000001ULL
+
 typedef struct sPAPRCapabilities sPAPRCapabilities;
 struct sPAPRCapabilities {
     uint64_t mask;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 09/14] spapr: Validate capabilities on migration
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (7 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 08/14] spapr: Treat Hardware Transactional Memory (HTM) as an optional capability David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 10/14] target/ppc: Clean up probing of VMX, VSX and DFP availability on KVM David Gibson
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

Now that the "pseries" machine type implements optional capabilities (well,
one so far) there's the possibility of having different capabilities
available at either end of a migration.  Although arguably a user error,
it would be nice to catch this situation and fail as gracefully as we can.

This adds code to migrate the capabilities flags.  These aren't pulled
directly into the destination's configuration since what the user has
specified on the destination command line should take precedence.  However,
they are checked against the destination capabilities.

If the source was using a capability which is absent on the destination,
we fail the migration, since that could easily cause a guest crash or other
bad behaviour.  If the source lacked a capability which is present on the
destination we warn, but allow the migration to proceed.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/spapr.c         |  6 ++++
 hw/ppc/spapr_caps.c    | 96 ++++++++++++++++++++++++++++++++++++++++++++++++--
 include/hw/ppc/spapr.h |  6 ++++
 3 files changed, 105 insertions(+), 3 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f8fee8ebcf..86fc83f9c2 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1589,6 +1589,11 @@ static int spapr_post_load(void *opaque, int version_id)
     sPAPRMachineState *spapr = (sPAPRMachineState *)opaque;
     int err = 0;
 
+    err = spapr_caps_post_migration(spapr);
+    if (err) {
+        return err;
+    }
+
     if (!object_dynamic_cast(OBJECT(spapr->ics), TYPE_ICS_KVM)) {
         CPUState *cs;
         CPU_FOREACH(cs) {
@@ -1755,6 +1760,7 @@ static const VMStateDescription vmstate_spapr = {
         &vmstate_spapr_ov5_cas,
         &vmstate_spapr_patb_entry,
         &vmstate_spapr_pending_events,
+        &vmstate_spapr_caps,
         NULL
     }
 };
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index 3b35b91a5b..cad40fe49a 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
 #include "sysemu/hw_accel.h"
@@ -83,6 +84,93 @@ static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
     return caps;
 }
 
+static bool spapr_caps_needed(void *opaque)
+{
+    sPAPRMachineState *spapr = opaque;
+
+    return (spapr->forced_caps.mask != 0) || (spapr->forbidden_caps.mask != 0);
+}
+
+/* This has to be called from the top-level spapr post_load, not the
+ * caps specific one.  Otherwise it wouldn't be called when the source
+ * caps are all defaults, which could still conflict with overridden
+ * caps on the destination */
+int spapr_caps_post_migration(sPAPRMachineState *spapr)
+{
+    uint64_t allcaps = 0;
+    int i;
+    bool ok = true;
+    sPAPRCapabilities dstcaps = spapr->effective_caps;
+    sPAPRCapabilities srccaps;
+
+    srccaps = default_caps_with_cpu(spapr, first_cpu);
+    srccaps.mask |= spapr->mig_forced_caps.mask;
+    srccaps.mask &= ~spapr->mig_forbidden_caps.mask;
+
+    for (i = 0; i < ARRAY_SIZE(capability_table); i++) {
+        sPAPRCapabilityInfo *info = &capability_table[i];
+
+        allcaps |= info->flag;
+
+        if ((srccaps.mask & info->flag) && !(dstcaps.mask & info->flag)) {
+            error_report("cap-%s=on in incoming stream, but off in destination",
+                         info->name);
+            ok = false;
+        }
+
+        if (!(srccaps.mask & info->flag) && (dstcaps.mask & info->flag)) {
+            warn_report("cap-%s=off in incoming stream, but on in destination",
+                         info->name);
+        }
+    }
+
+    if (spapr->mig_forced_caps.mask & ~allcaps) {
+        error_report(
+            "Unknown capabilities 0x%"PRIx64" enabled in incoming stream",
+            spapr->mig_forced_caps.mask & ~allcaps);
+        ok = false;
+    }
+    if (spapr->mig_forbidden_caps.mask & ~allcaps) {
+        warn_report(
+            "Unknown capabilities 0x%"PRIx64" disabled in incoming stream",
+            spapr->mig_forbidden_caps.mask & ~allcaps);
+    }
+
+    return ok ? 0 : -EINVAL;
+}
+
+static int spapr_caps_pre_save(void *opaque)
+{
+    sPAPRMachineState *spapr = opaque;
+
+    spapr->mig_forced_caps = spapr->forced_caps;
+    spapr->mig_forbidden_caps = spapr->forbidden_caps;
+    return 0;
+}
+
+static int spapr_caps_pre_load(void *opaque)
+{
+    sPAPRMachineState *spapr = opaque;
+
+    spapr->mig_forced_caps = spapr_caps(0);
+    spapr->mig_forbidden_caps = spapr_caps(0);
+    return 0;
+}
+
+const VMStateDescription vmstate_spapr_caps = {
+    .name = "spapr/caps",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .needed = spapr_caps_needed,
+    .pre_save = spapr_caps_pre_save,
+    .pre_load = spapr_caps_pre_load,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT64(mig_forced_caps.mask, sPAPRMachineState),
+        VMSTATE_UINT64(mig_forbidden_caps.mask, sPAPRMachineState),
+        VMSTATE_END_OF_LIST()
+    },
+};
+
 void spapr_caps_reset(sPAPRMachineState *spapr)
 {
     Error *local_err = NULL;
@@ -92,6 +180,11 @@ void spapr_caps_reset(sPAPRMachineState *spapr)
     /* First compute the actual set of caps we're running with.. */
     caps = default_caps_with_cpu(spapr, first_cpu);
 
+    /* Remove unnecessary forced/forbidden bits (this will help us
+     * with migration) */
+    spapr->forced_caps.mask &= ~caps.mask;
+    spapr->forbidden_caps.mask &= caps.mask;
+
     caps.mask |= spapr->forced_caps.mask;
     caps.mask &= ~spapr->forbidden_caps.mask;
 
@@ -175,9 +268,6 @@ void spapr_caps_validate(sPAPRMachineState *spapr, Error **errp)
         error_setg(errp, "Some sPAPR capabilities set both on and off");
         return;
     }
-
-    /* Check for any caps incompatible with other caps.  Nothing to do
-     * yet */
 }
 
 void spapr_caps_add_properties(sPAPRMachineClass *smc, Error **errp)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index dc64f4ebcb..5c85f39c3b 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -54,6 +54,8 @@ typedef enum {
  * Capabilities
  */
 
+/* These bits go in the migration stream, so they can't be reassigned */
+
 /* Hardware Transactional Memory */
 #define SPAPR_CAP_HTM               0x0000000000000001ULL
 
@@ -142,6 +144,7 @@ struct sPAPRMachineState {
     const char *icp_type;
 
     sPAPRCapabilities forced_caps, forbidden_caps;
+    sPAPRCapabilities mig_forced_caps, mig_forbidden_caps;
     sPAPRCapabilities effective_caps;
 };
 
@@ -743,6 +746,8 @@ qemu_irq spapr_qirq(sPAPRMachineState *spapr, int irq);
 /*
  * Handling of optional capabilities
  */
+extern const VMStateDescription vmstate_spapr_caps;
+
 static inline sPAPRCapabilities spapr_caps(uint64_t mask)
 {
     sPAPRCapabilities caps = { mask };
@@ -757,5 +762,6 @@ static inline bool spapr_has_cap(sPAPRMachineState *spapr, uint64_t cap)
 void spapr_caps_reset(sPAPRMachineState *spapr);
 void spapr_caps_validate(sPAPRMachineState *spapr, Error **errp);
 void spapr_caps_add_properties(sPAPRMachineClass *smc, Error **errp);
+int spapr_caps_post_migration(sPAPRMachineState *spapr);
 
 #endif /* HW_SPAPR_H */
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 10/14] target/ppc: Clean up probing of VMX, VSX and DFP availability on KVM
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (8 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 09/14] spapr: Validate capabilities on migration David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 11/14] spapr: Handle VMX/VSX presence as an spapr capability flag David Gibson
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

When constructing the "host" cpu class we modify whether the VMX and VSX
vector extensions and DFP (Decimal Floating Point) are available
based on whether KVM can support those instructions.  This can depend on
policy in the host kernel as well as on the actual host cpu capabilities.

However, the way we probe for this is not very nice: we explicitly check
the host's device tree.  That works in practice, but it's not really
correct, since the device tree is a property of the host kernel's platform
which we don't really know about.  We get away with it because the only
modern POWER platforms happen to encode VMX, VSX and DFP availability in
the device tree in the same way.

Arguably we should have an explicit KVM capability for this, but we haven't
needed one so far.  Barring specific KVM policies which don't yet exist,
each of these instruction classes will be available in the guest if and
only if they're available in the qemu userspace process.  We can determine
that from the ELF AUX vector we're supplied with.

Once reworked like this, there are no more callers for kvmppc_get_vmx() and
kvmppc_get_dfp() so remove them.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
---
 target/ppc/kvm.c     | 27 ++++++---------------------
 target/ppc/kvm_ppc.h |  2 --
 2 files changed, 6 insertions(+), 23 deletions(-)

diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 4664a3ce9d..518dd06e98 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2011,16 +2011,6 @@ uint64_t kvmppc_get_clockfreq(void)
     return kvmppc_read_int_cpu_dt("clock-frequency");
 }
 
-uint32_t kvmppc_get_vmx(void)
-{
-    return kvmppc_read_int_cpu_dt("ibm,vmx");
-}
-
-uint32_t kvmppc_get_dfp(void)
-{
-    return kvmppc_read_int_cpu_dt("ibm,dfp");
-}
-
 static int kvmppc_get_pvinfo(CPUPPCState *env, struct kvm_ppc_pvinfo *pvinfo)
  {
      PowerPCCPU *cpu = ppc_env_get_cpu(env);
@@ -2404,23 +2394,18 @@ static void alter_insns(uint64_t *word, uint64_t flags, bool on)
 static void kvmppc_host_cpu_class_init(ObjectClass *oc, void *data)
 {
     PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);
-    uint32_t vmx = kvmppc_get_vmx();
-    uint32_t dfp = kvmppc_get_dfp();
     uint32_t dcache_size = kvmppc_read_int_cpu_dt("d-cache-size");
     uint32_t icache_size = kvmppc_read_int_cpu_dt("i-cache-size");
 
     /* Now fix up the class with information we can query from the host */
     pcc->pvr = mfpvr();
 
-    if (vmx != -1) {
-        /* Only override when we know what the host supports */
-        alter_insns(&pcc->insns_flags, PPC_ALTIVEC, vmx > 0);
-        alter_insns(&pcc->insns_flags2, PPC2_VSX, vmx > 1);
-    }
-    if (dfp != -1) {
-        /* Only override when we know what the host supports */
-        alter_insns(&pcc->insns_flags2, PPC2_DFP, dfp);
-    }
+    alter_insns(&pcc->insns_flags, PPC_ALTIVEC,
+                qemu_getauxval(AT_HWCAP) & PPC_FEATURE_HAS_ALTIVEC);
+    alter_insns(&pcc->insns_flags2, PPC2_VSX,
+                qemu_getauxval(AT_HWCAP) & PPC_FEATURE_HAS_VSX);
+    alter_insns(&pcc->insns_flags2, PPC2_DFP,
+                qemu_getauxval(AT_HWCAP) & PPC_FEATURE_HAS_DFP);
 
     if (dcache_size != -1) {
         pcc->l1_dcache_size = dcache_size;
diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
index d6be38ecaf..ecb55493cc 100644
--- a/target/ppc/kvm_ppc.h
+++ b/target/ppc/kvm_ppc.h
@@ -15,8 +15,6 @@
 
 uint32_t kvmppc_get_tbfreq(void);
 uint64_t kvmppc_get_clockfreq(void);
-uint32_t kvmppc_get_vmx(void);
-uint32_t kvmppc_get_dfp(void);
 bool kvmppc_get_host_model(char **buf);
 bool kvmppc_get_host_serial(char **buf);
 int kvmppc_get_hasidle(CPUPPCState *env);
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 11/14] spapr: Handle VMX/VSX presence as an spapr capability flag
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (9 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 10/14] target/ppc: Clean up probing of VMX, VSX and DFP availability on KVM David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 12/14] spapr: Handle Decimal Floating Point (DFP) as an optional capability David Gibson
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

We currently have some conditionals in the spapr device tree code to decide
whether or not to advertise the availability of the VMX (aka Altivec) and
VSX vector extensions to the guest, based on whether the guest cpu has
those features.

This can lead to confusion and subtle failures on migration, since it makes
a guest visible change based only on host capabilities.  We now have a
better mechanism for this, in spapr capabilities flags, which explicitly
depend on user options rather than host capabilities.

Rework the advertisement of VSX and VMX based on a new VSX capability.  We
no longer bother with a conditional for VMX support, because every CPU
that's ever been supported by the pseries machine type supports VMX.

NOTE: Some userspace distributions (e.g. RHEL7.4) already rely on
availability of VSX in libc, so using cap-vsx=off may lead to a fatal
SIGILL in init.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/spapr.c         | 20 +++++++++++---------
 hw/ppc/spapr_caps.c    | 25 +++++++++++++++++++++++++
 include/hw/ppc/spapr.h |  3 +++
 3 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 86fc83f9c2..693dd6f7b3 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -557,14 +557,16 @@ static void spapr_populate_cpu_dt(CPUState *cs, void *fdt, int offset,
                           segs, sizeof(segs))));
     }
 
-    /* Advertise VMX/VSX (vector extensions) if available
-     *   0 / no property == no vector extensions
+    /* Advertise VSX (vector extensions) if available
      *   1               == VMX / Altivec available
-     *   2               == VSX available */
-    if (env->insns_flags & PPC_ALTIVEC) {
-        uint32_t vmx = (env->insns_flags2 & PPC2_VSX) ? 2 : 1;
-
-        _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", vmx)));
+     *   2               == VSX available
+     *
+     * Only CPUs for which we create core types in spapr_cpu_core.c
+     * are possible, and all of those have VMX */
+    if (spapr_has_cap(spapr, SPAPR_CAP_VSX)) {
+        _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", 2)));
+    } else {
+        _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", 1)));
     }
 
     /* Advertise DFP (Decimal Floating Point) if available
@@ -3832,7 +3834,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
      */
     mc->numa_mem_align_shift = 28;
 
-    smc->default_caps = spapr_caps(0);
+    smc->default_caps = spapr_caps(SPAPR_CAP_VSX);
     spapr_caps_add_properties(smc, &error_abort);
 }
 
@@ -3914,7 +3916,7 @@ static void spapr_machine_2_11_class_options(MachineClass *mc)
     sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
 
     spapr_machine_2_12_class_options(mc);
-    smc->default_caps = spapr_caps(SPAPR_CAP_HTM);
+    smc->default_caps = spapr_caps(SPAPR_CAP_HTM | SPAPR_CAP_VSX);
     SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_11);
 }
 
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index cad40fe49a..7c855c67ad 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -57,6 +57,19 @@ static void cap_htm_allow(sPAPRMachineState *spapr, Error **errp)
     }
 }
 
+static void cap_vsx_allow(sPAPRMachineState *spapr, Error **errp)
+{
+    PowerPCCPU *cpu = POWERPC_CPU(first_cpu);
+    CPUPPCState *env = &cpu->env;
+
+    /* Allowable CPUs in spapr_cpu_core.c should already have gotten
+     * rid of anything that doesn't do VMX */
+    g_assert(env->insns_flags & PPC_ALTIVEC);
+    if (!(env->insns_flags2 & PPC2_VSX)) {
+        error_setg(errp, "VSX support not available, try cap-vsx=off");
+    }
+}
+
 static sPAPRCapabilityInfo capability_table[] = {
     {
         .name = "htm",
@@ -65,6 +78,13 @@ static sPAPRCapabilityInfo capability_table[] = {
         .allow = cap_htm_allow,
         /* TODO: add cap_htm_disallow */
     },
+    {
+        .name = "vsx",
+        .description = "Allow Vector Scalar Extensions (VSX)",
+        .flag = SPAPR_CAP_VSX,
+        .allow = cap_vsx_allow,
+        /* TODO: add cap_vsx_disallow */
+    },
 };
 
 static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
@@ -81,6 +101,11 @@ static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
         caps.mask &= ~SPAPR_CAP_HTM;
     }
 
+    if (!ppc_check_compat(cpu, CPU_POWERPC_LOGICAL_2_06,
+                          0, spapr->max_compat_pvr)) {
+        caps.mask &= ~SPAPR_CAP_VSX;
+    }
+
     return caps;
 }
 
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 5c85f39c3b..148a03d189 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -59,6 +59,9 @@ typedef enum {
 /* Hardware Transactional Memory */
 #define SPAPR_CAP_HTM               0x0000000000000001ULL
 
+/* Vector Scalar Extensions */
+#define SPAPR_CAP_VSX               0x0000000000000002ULL
+
 typedef struct sPAPRCapabilities sPAPRCapabilities;
 struct sPAPRCapabilities {
     uint64_t mask;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 12/14] spapr: Handle Decimal Floating Point (DFP) as an optional capability
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (10 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 11/14] spapr: Handle VMX/VSX presence as an spapr capability flag David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 13/14] spapr_pci: use warn_report() David Gibson
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

Decimal Floating Point has been available on POWER7 and later (server)
cpus.  However, it can be disabled on the hypervisor, meaning that it's
not available to guests.

We currently handle this by conditionally advertising DFP support in the
device tree depending on whether the guest CPU model supports it - which
can also depend on what's allowed in the host for -cpu host.  That can lead
to confusion on migration, since host properties are silently affecting
guest visible properties.

This patch handles it by treating it as an optional capability for the
pseries machine type.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/spapr.c         |  7 ++++---
 hw/ppc/spapr_caps.c    | 18 ++++++++++++++++++
 include/hw/ppc/spapr.h |  3 +++
 3 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 693dd6f7b3..e22888ba06 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -572,7 +572,7 @@ static void spapr_populate_cpu_dt(CPUState *cs, void *fdt, int offset,
     /* Advertise DFP (Decimal Floating Point) if available
      *   0 / no property == no DFP
      *   1               == DFP available */
-    if (env->insns_flags2 & PPC2_DFP) {
+    if (spapr_has_cap(spapr, SPAPR_CAP_DFP)) {
         _FDT((fdt_setprop_cell(fdt, offset, "ibm,dfp", 1)));
     }
 
@@ -3834,7 +3834,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
      */
     mc->numa_mem_align_shift = 28;
 
-    smc->default_caps = spapr_caps(SPAPR_CAP_VSX);
+    smc->default_caps = spapr_caps(SPAPR_CAP_VSX | SPAPR_CAP_DFP);
     spapr_caps_add_properties(smc, &error_abort);
 }
 
@@ -3916,7 +3916,8 @@ static void spapr_machine_2_11_class_options(MachineClass *mc)
     sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
 
     spapr_machine_2_12_class_options(mc);
-    smc->default_caps = spapr_caps(SPAPR_CAP_HTM | SPAPR_CAP_VSX);
+    smc->default_caps = spapr_caps(SPAPR_CAP_HTM | SPAPR_CAP_VSX
+                                   | SPAPR_CAP_DFP);
     SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_11);
 }
 
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index 7c855c67ad..9d070a306c 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -70,6 +70,16 @@ static void cap_vsx_allow(sPAPRMachineState *spapr, Error **errp)
     }
 }
 
+static void cap_dfp_allow(sPAPRMachineState *spapr, Error **errp)
+{
+    PowerPCCPU *cpu = POWERPC_CPU(first_cpu);
+    CPUPPCState *env = &cpu->env;
+
+    if (!(env->insns_flags2 & PPC2_DFP)) {
+        error_setg(errp, "DFP support not available, try cap-dfp=off");
+    }
+}
+
 static sPAPRCapabilityInfo capability_table[] = {
     {
         .name = "htm",
@@ -85,6 +95,13 @@ static sPAPRCapabilityInfo capability_table[] = {
         .allow = cap_vsx_allow,
         /* TODO: add cap_vsx_disallow */
     },
+    {
+        .name = "dfp",
+        .description = "Allow Decimal Floating Point (DFP)",
+        .flag = SPAPR_CAP_DFP,
+        .allow = cap_dfp_allow,
+        /* TODO: add cap_dfp_disallow */
+    },
 };
 
 static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
@@ -104,6 +121,7 @@ static sPAPRCapabilities default_caps_with_cpu(sPAPRMachineState *spapr,
     if (!ppc_check_compat(cpu, CPU_POWERPC_LOGICAL_2_06,
                           0, spapr->max_compat_pvr)) {
         caps.mask &= ~SPAPR_CAP_VSX;
+        caps.mask &= ~SPAPR_CAP_DFP;
     }
 
     return caps;
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 148a03d189..26ac17e641 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -62,6 +62,9 @@ typedef enum {
 /* Vector Scalar Extensions */
 #define SPAPR_CAP_VSX               0x0000000000000002ULL
 
+/* Decimal Floating Point */
+#define SPAPR_CAP_DFP               0x0000000000000004ULL
+
 typedef struct sPAPRCapabilities sPAPRCapabilities;
 struct sPAPRCapabilities {
     uint64_t mask;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 13/14] spapr_pci: use warn_report()
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (11 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 12/14] spapr: Handle Decimal Floating Point (DFP) as an optional capability David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-19  4:29 ` [Qemu-devel] [PULL 14/14] hw/ide: Emulate SiI3112 SATA controller David Gibson
  2017-12-20 11:29 ` [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 Peter Maydell
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell; +Cc: groug, qemu-ppc, qemu-devel, mdroth, David Gibson

From: Greg Kurz <groug@kaod.org>

These two are definitely warnings. Let's use the appropriate API.

Signed-off-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_pci.c      | 6 +++---
 hw/ppc/spapr_pci_vfio.c | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 88797b3d36..695c820911 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1696,9 +1696,9 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
     /* DMA setup */
     if (((sphb->page_size_mask & qemu_getrampagesize()) == 0)
         && kvm_enabled()) {
-        error_report("System page size 0x%lx is not enabled in page_size_mask "
-                     "(0x%"PRIx64"). Performance may be slow",
-                     qemu_getrampagesize(), sphb->page_size_mask);
+        warn_report("System page size 0x%lx is not enabled in page_size_mask "
+                    "(0x%"PRIx64"). Performance may be slow",
+                    qemu_getrampagesize(), sphb->page_size_mask);
     }
 
     for (i = 0; i < windows_supported; ++i) {
diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c
index 8448e0b024..1f775ea93d 100644
--- a/hw/ppc/spapr_pci_vfio.c
+++ b/hw/ppc/spapr_pci_vfio.c
@@ -50,7 +50,7 @@ static Property spapr_phb_vfio_properties[] = {
 static void spapr_phb_vfio_instance_init(Object *obj)
 {
     if (!qtest_enabled()) {
-        error_report("spapr-pci-vfio-host-bridge is deprecated");
+        warn_report("spapr-pci-vfio-host-bridge is deprecated");
     }
 }
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 14/14] hw/ide: Emulate SiI3112 SATA controller
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (12 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 13/14] spapr_pci: use warn_report() David Gibson
@ 2017-12-19  4:29 ` David Gibson
  2017-12-20 11:29 ` [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 Peter Maydell
  14 siblings, 0 replies; 19+ messages in thread
From: David Gibson @ 2017-12-19  4:29 UTC (permalink / raw)
  To: peter.maydell
  Cc: groug, qemu-ppc, qemu-devel, mdroth, BALATON Zoltan, David Gibson

From: BALATON Zoltan <balaton@eik.bme.hu>

This is a common generic PCI SATA controller that is also used in PCs
but more importantly guests running on the Sam460ex board prefer this
card and have a driver for it (unlike for other SATA controllers
already emulated).

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 MAINTAINERS                        |   6 +
 default-configs/ppcemb-softmmu.mak |   1 +
 hw/ide/Makefile.objs               |   1 +
 hw/ide/sii3112.c                   | 368 +++++++++++++++++++++++++++++++++++++
 hw/ide/trace-events                |   5 +
 5 files changed, 381 insertions(+)
 create mode 100644 hw/ide/sii3112.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 8859a50c36..399ba2c94b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -765,6 +765,12 @@ L: qemu-ppc@nongnu.org
 S: Odd Fixes
 F: hw/ppc/virtex_ml507.c
 
+sam460ex
+M: BALATON Zoltan <balaton@eik.bme.hu>
+L: qemu-ppc@nongnu.org
+S: Maintained
+F: hw/ide/sii3112.c
+
 SH4 Machines
 ------------
 R2D
diff --git a/default-configs/ppcemb-softmmu.mak b/default-configs/ppcemb-softmmu.mak
index 13917fb7a3..5db4618a5a 100644
--- a/default-configs/ppcemb-softmmu.mak
+++ b/default-configs/ppcemb-softmmu.mak
@@ -16,3 +16,4 @@ CONFIG_I8259=y
 CONFIG_XILINX=y
 CONFIG_XILINX_ETHLITE=y
 CONFIG_SM501=y
+CONFIG_IDE_SII3112=y
diff --git a/hw/ide/Makefile.objs b/hw/ide/Makefile.objs
index f0edca3300..fc328ffbe8 100644
--- a/hw/ide/Makefile.objs
+++ b/hw/ide/Makefile.objs
@@ -11,3 +11,4 @@ common-obj-$(CONFIG_MICRODRIVE) += microdrive.o
 common-obj-$(CONFIG_AHCI) += ahci.o
 common-obj-$(CONFIG_AHCI) += ich.o
 common-obj-$(CONFIG_ALLWINNER_A10) += ahci-allwinner.o
+common-obj-$(CONFIG_IDE_SII3112) += sii3112.o
diff --git a/hw/ide/sii3112.c b/hw/ide/sii3112.c
new file mode 100644
index 0000000000..e2f5562bb7
--- /dev/null
+++ b/hw/ide/sii3112.c
@@ -0,0 +1,368 @@
+/*
+ * QEMU SiI3112A PCI to Serial ATA Controller Emulation
+ *
+ * Copyright (C) 2017 BALATON Zoltan <balaton@eik.bme.hu>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+/* For documentation on this and similar cards see:
+ * http://wiki.osdev.org/User:Quok/Silicon_Image_Datasheets
+ */
+
+#include <qemu/osdep.h>
+#include <hw/ide/pci.h>
+#include "trace.h"
+
+#define TYPE_SII3112_PCI "sii3112"
+#define SII3112_PCI(obj) OBJECT_CHECK(SiI3112PCIState, (obj), \
+                         TYPE_SII3112_PCI)
+
+typedef struct SiI3112Regs {
+    uint32_t confstat;
+    uint32_t scontrol;
+    uint16_t sien;
+    uint8_t swdata;
+} SiI3112Regs;
+
+typedef struct SiI3112PCIState {
+    PCIIDEState i;
+    MemoryRegion mmio;
+    SiI3112Regs regs[2];
+} SiI3112PCIState;
+
+/* The sii3112_reg_read and sii3112_reg_write functions implement the
+ * Internal Register Space - BAR5 (section 6.7 of the data sheet).
+ */
+
+static uint64_t sii3112_reg_read(void *opaque, hwaddr addr,
+                                unsigned int size)
+{
+    SiI3112PCIState *d = opaque;
+    uint64_t val = 0;
+
+    switch (addr) {
+    case 0x00:
+        val = d->i.bmdma[0].cmd;
+        break;
+    case 0x01:
+        val = d->regs[0].swdata;
+        break;
+    case 0x02:
+        val = d->i.bmdma[0].status;
+        break;
+    case 0x03:
+        val = 0;
+        break;
+    case 0x04 ... 0x07:
+        val = bmdma_addr_ioport_ops.read(&d->i.bmdma[0], addr - 4, size);
+        break;
+    case 0x08:
+        val = d->i.bmdma[1].cmd;
+        break;
+    case 0x09:
+        val = d->regs[1].swdata;
+        break;
+    case 0x0a:
+        val = d->i.bmdma[1].status;
+        break;
+    case 0x0b:
+        val = 0;
+        break;
+    case 0x0c ... 0x0f:
+        val = bmdma_addr_ioport_ops.read(&d->i.bmdma[1], addr - 12, size);
+        break;
+    case 0x10:
+        val = d->i.bmdma[0].cmd;
+        val |= (d->regs[0].confstat & (1UL << 11) ? (1 << 4) : 0); /*SATAINT0*/
+        val |= (d->regs[1].confstat & (1UL << 11) ? (1 << 6) : 0); /*SATAINT1*/
+        val |= (d->i.bmdma[1].status & BM_STATUS_INT ? (1 << 14) : 0);
+        val |= d->i.bmdma[0].status << 16;
+        val |= d->i.bmdma[1].status << 24;
+        break;
+    case 0x18:
+        val = d->i.bmdma[1].cmd;
+        val |= (d->regs[1].confstat & (1UL << 11) ? (1 << 4) : 0);
+        val |= d->i.bmdma[1].status << 16;
+        break;
+    case 0x80 ... 0x87:
+        if (size == 1) {
+            val = ide_ioport_read(&d->i.bus[0], addr - 0x80);
+        } else if (addr == 0x80) {
+            val = (size == 2) ? ide_data_readw(&d->i.bus[0], 0) :
+                                ide_data_readl(&d->i.bus[0], 0);
+        } else {
+            val = (1ULL << (size * 8)) - 1;
+        }
+        break;
+    case 0x8a:
+        val = (size == 1) ? ide_status_read(&d->i.bus[0], 4) :
+                            (1ULL << (size * 8)) - 1;
+        break;
+    case 0xa0:
+        val = d->regs[0].confstat;
+        break;
+    case 0xc0 ... 0xc7:
+        if (size == 1) {
+            val = ide_ioport_read(&d->i.bus[1], addr - 0xc0);
+        } else if (addr == 0xc0) {
+            val = (size == 2) ? ide_data_readw(&d->i.bus[1], 0) :
+                                ide_data_readl(&d->i.bus[1], 0);
+        } else {
+            val = (1ULL << (size * 8)) - 1;
+        }
+        break;
+    case 0xca:
+        val = (size == 1) ? ide_status_read(&d->i.bus[0], 4) :
+                            (1ULL << (size * 8)) - 1;
+        break;
+    case 0xe0:
+        val = d->regs[1].confstat;
+        break;
+    case 0x100:
+        val = d->regs[0].scontrol;
+        break;
+    case 0x104:
+        val = (d->i.bus[0].ifs[0].blk) ? 0x113 : 0;
+        break;
+    case 0x148:
+        val = d->regs[0].sien << 16;
+        break;
+    case 0x180:
+        val = d->regs[1].scontrol;
+        break;
+    case 0x184:
+        val = (d->i.bus[1].ifs[0].blk) ? 0x113 : 0;
+        break;
+    case 0x1c8:
+        val = d->regs[1].sien << 16;
+        break;
+    default:
+        val = 0;
+    }
+    trace_sii3112_read(size, addr, val);
+    return val;
+}
+
+static void sii3112_reg_write(void *opaque, hwaddr addr,
+                              uint64_t val, unsigned int size)
+{
+    SiI3112PCIState *d = opaque;
+
+    trace_sii3112_write(size, addr, val);
+    switch (addr) {
+    case 0x00:
+    case 0x10:
+        bmdma_cmd_writeb(&d->i.bmdma[0], val);
+        break;
+    case 0x01:
+    case 0x11:
+        d->regs[0].swdata = val & 0x3f;
+        break;
+    case 0x02:
+    case 0x12:
+        d->i.bmdma[0].status = (val & 0x60) | (d->i.bmdma[0].status & 1) |
+                               (d->i.bmdma[0].status & ~val & 6);
+        break;
+    case 0x04 ... 0x07:
+        bmdma_addr_ioport_ops.write(&d->i.bmdma[0], addr - 4, val, size);
+        break;
+    case 0x08:
+    case 0x18:
+        bmdma_cmd_writeb(&d->i.bmdma[1], val);
+        break;
+    case 0x09:
+    case 0x19:
+        d->regs[1].swdata = val & 0x3f;
+        break;
+    case 0x0a:
+    case 0x1a:
+        d->i.bmdma[1].status = (val & 0x60) | (d->i.bmdma[1].status & 1) |
+                               (d->i.bmdma[1].status & ~val & 6);
+        break;
+    case 0x0c ... 0x0f:
+        bmdma_addr_ioport_ops.write(&d->i.bmdma[1], addr - 12, val, size);
+        break;
+    case 0x80 ... 0x87:
+        if (size == 1) {
+            ide_ioport_write(&d->i.bus[0], addr - 0x80, val);
+        } else if (addr == 0x80) {
+            if (size == 2) {
+                ide_data_writew(&d->i.bus[0], 0, val);
+            } else {
+                ide_data_writel(&d->i.bus[0], 0, val);
+            }
+        }
+        break;
+    case 0x8a:
+        if (size == 1) {
+            ide_cmd_write(&d->i.bus[0], 4, val);
+        }
+        break;
+    case 0xc0 ... 0xc7:
+        if (size == 1) {
+            ide_ioport_write(&d->i.bus[1], addr - 0xc0, val);
+        } else if (addr == 0xc0) {
+            if (size == 2) {
+                ide_data_writew(&d->i.bus[1], 0, val);
+            } else {
+                ide_data_writel(&d->i.bus[1], 0, val);
+            }
+        }
+        break;
+    case 0xca:
+        if (size == 1) {
+            ide_cmd_write(&d->i.bus[1], 4, val);
+        }
+        break;
+    case 0x100:
+        d->regs[0].scontrol = val & 0xfff;
+        if (val & 1) {
+            ide_bus_reset(&d->i.bus[0]);
+        }
+        break;
+    case 0x148:
+        d->regs[0].sien = (val >> 16) & 0x3eed;
+        break;
+    case 0x180:
+        d->regs[1].scontrol = val & 0xfff;
+        if (val & 1) {
+            ide_bus_reset(&d->i.bus[1]);
+        }
+        break;
+    case 0x1c8:
+        d->regs[1].sien = (val >> 16) & 0x3eed;
+        break;
+    default:
+        val = 0;
+    }
+}
+
+static const MemoryRegionOps sii3112_reg_ops = {
+    .read = sii3112_reg_read,
+    .write = sii3112_reg_write,
+    .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+/* the PCI irq level is the logical OR of the two channels */
+static void sii3112_update_irq(SiI3112PCIState *s)
+{
+    int i, set = 0;
+
+    for (i = 0; i < 2; i++) {
+        set |= s->regs[i].confstat & (1UL << 11);
+    }
+    pci_set_irq(PCI_DEVICE(s), (set ? 1 : 0));
+}
+
+static void sii3112_set_irq(void *opaque, int channel, int level)
+{
+    SiI3112PCIState *s = opaque;
+
+    trace_sii3112_set_irq(channel, level);
+    if (level) {
+        s->regs[channel].confstat |= (1UL << 11);
+    } else {
+        s->regs[channel].confstat &= ~(1UL << 11);
+    }
+
+    sii3112_update_irq(s);
+}
+
+static void sii3112_reset(void *opaque)
+{
+    SiI3112PCIState *s = opaque;
+    int i;
+
+    for (i = 0; i < 2; i++) {
+        s->regs[i].confstat = 0x6515 << 16;
+        ide_bus_reset(&s->i.bus[i]);
+    }
+}
+
+static void sii3112_pci_realize(PCIDevice *dev, Error **errp)
+{
+    SiI3112PCIState *d = SII3112_PCI(dev);
+    PCIIDEState *s = PCI_IDE(dev);
+    MemoryRegion *mr;
+    qemu_irq *irq;
+    int i;
+
+    pci_config_set_interrupt_pin(dev->config, 1);
+    pci_set_byte(dev->config + PCI_CACHE_LINE_SIZE, 8);
+
+    /* BAR5 is in PCI memory space */
+    memory_region_init_io(&d->mmio, OBJECT(d), &sii3112_reg_ops, d,
+                         "sii3112.bar5", 0x200);
+    pci_register_bar(dev, 5, PCI_BASE_ADDRESS_SPACE_MEMORY, &d->mmio);
+
+    /* BAR0-BAR4 are PCI I/O space aliases into BAR5 */
+    mr = g_new(MemoryRegion, 1);
+    memory_region_init_alias(mr, OBJECT(d), "sii3112.bar0", &d->mmio, 0x80, 8);
+    pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, mr);
+    mr = g_new(MemoryRegion, 1);
+    memory_region_init_alias(mr, OBJECT(d), "sii3112.bar1", &d->mmio, 0x88, 4);
+    pci_register_bar(dev, 1, PCI_BASE_ADDRESS_SPACE_IO, mr);
+    mr = g_new(MemoryRegion, 1);
+    memory_region_init_alias(mr, OBJECT(d), "sii3112.bar2", &d->mmio, 0xc0, 8);
+    pci_register_bar(dev, 2, PCI_BASE_ADDRESS_SPACE_IO, mr);
+    mr = g_new(MemoryRegion, 1);
+    memory_region_init_alias(mr, OBJECT(d), "sii3112.bar3", &d->mmio, 0xc8, 4);
+    pci_register_bar(dev, 3, PCI_BASE_ADDRESS_SPACE_IO, mr);
+    mr = g_new(MemoryRegion, 1);
+    memory_region_init_alias(mr, OBJECT(d), "sii3112.bar4", &d->mmio, 0, 16);
+    pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, mr);
+
+    irq = qemu_allocate_irqs(sii3112_set_irq, d, 2);
+    for (i = 0; i < 2; i++) {
+        ide_bus_new(&s->bus[i], sizeof(s->bus[i]), DEVICE(dev), i, 1);
+        ide_init2(&s->bus[i], irq[i]);
+
+        bmdma_init(&s->bus[i], &s->bmdma[i], s);
+        s->bmdma[i].bus = &s->bus[i];
+        ide_register_restart_cb(&s->bus[i]);
+    }
+    qemu_register_reset(sii3112_reset, s);
+}
+
+static void sii3112_pci_exitfn(PCIDevice *dev)
+{
+    PCIIDEState *d = PCI_IDE(dev);
+    int i;
+
+    for (i = 0; i < 2; ++i) {
+        memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io);
+        memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].addr_ioport);
+    }
+}
+
+static void sii3112_pci_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    PCIDeviceClass *pd = PCI_DEVICE_CLASS(klass);
+
+    pd->vendor_id = 0x1095;
+    pd->device_id = 0x3112;
+    pd->class_id = PCI_CLASS_STORAGE_RAID;
+    pd->revision = 1;
+    pd->realize = sii3112_pci_realize;
+    pd->exit = sii3112_pci_exitfn;
+    dc->desc = "SiI3112A SATA controller";
+    set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
+}
+
+static const TypeInfo sii3112_pci_info = {
+    .name = TYPE_SII3112_PCI,
+    .parent = TYPE_PCI_IDE,
+    .instance_size = sizeof(SiI3112PCIState),
+    .class_init = sii3112_pci_class_init,
+};
+
+static void sii3112_register_types(void)
+{
+    type_register_static(&sii3112_pci_info);
+}
+
+type_init(sii3112_register_types)
diff --git a/hw/ide/trace-events b/hw/ide/trace-events
index 601bd97d81..0c39cabe72 100644
--- a/hw/ide/trace-events
+++ b/hw/ide/trace-events
@@ -37,6 +37,11 @@ bmdma_addr_write(uint64_t data) "data: 0x%016"PRIx64
 bmdma_read(uint64_t addr, uint8_t val) "bmdma: readb 0x%"PRIx64" : 0x%02x"
 bmdma_write(uint64_t addr, uint64_t val) "bmdma: writeb 0x%"PRIx64" : 0x%02"PRIx64
 
+# hw/ide/sii3112.c
+sii3112_read(int size, uint64_t addr, uint64_t val) "bmdma: read (size %d) 0x%"PRIx64" : 0x%02"PRIx64
+sii3112_write(int size, uint64_t addr, uint64_t val) "bmdma: write (size %d) 0x%"PRIx64" : 0x%02"PRIx64
+sii3112_set_irq(int channel, int level) "channel %d level %d"
+
 # hw/ide/via.c
 bmdma_read_via(uint64_t addr, uint32_t val) "bmdma: readb 0x%"PRIx64" : 0x%02x"
 bmdma_write_via(uint64_t addr, uint64_t val) "bmdma: writeb 0x%"PRIx64" : 0x%02"PRIx64
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219
  2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
                   ` (13 preceding siblings ...)
  2017-12-19  4:29 ` [Qemu-devel] [PULL 14/14] hw/ide: Emulate SiI3112 SATA controller David Gibson
@ 2017-12-20 11:29 ` Peter Maydell
  2017-12-20 13:45   ` David Gibson
  14 siblings, 1 reply; 19+ messages in thread
From: Peter Maydell @ 2017-12-20 11:29 UTC (permalink / raw)
  To: David Gibson; +Cc: Greg Kurz, qemu-ppc, QEMU Developers, Michael Roth

On 19 December 2017 at 04:29, David Gibson <david@gibson.dropbear.id.au> wrote:
> The following changes since commit eaefea537b476cb853e2edbdc68e969ec777e4bb:
>
>   Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging (2017-12-18 14:17:42 +0000)
>
> are available in the Git repository at:
>
>   git://github.com/dgibson/qemu.git tags/ppc-for-2.12-20171219
>
> for you to fetch changes up to eec745d4366076dee068750ea80245e1a46e9c13:
>
>   hw/ide: Emulate SiI3112 SATA controller (2017-12-19 15:24:28 +1100)
>
> ----------------------------------------------------------------
> ppc patch queue 2017-12-19
>
> Here's a second batch of patches for qemu-2.12.  Highlights are:
>
>   * Optional capabilities for the "pseries" machine.  This removes
>     some places where we were changing guest visible properties based
>     on host capabilities, which makes life very bad for migration.
>   * SLOF update
>   * Significant TCG speedup from Paolo
>   * Several new devices for embedded platforms
>   * Some minor cleanups
>

Migration test hangs on aarch32 host/ppc guest:

peter.m+  3942  0.0  0.0   1452   412 pts/0    S+   Dec19   0:00  |
                   \_ /bin/sh -c
QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
QTEST_QEMU_IMG=qemu-img MALLOC_PERTURB_=${MALLOC_PERTURB_:-$((
${RANDOM:-0} % 255 + 1))} gtester -k --verbose -m=quick
tests/spapr-phb-test tests/endianness-test tests/boot-order-test
tests/prom-env-test tests/pnv-xscom-test tests/drive_del-test
tests/migration-test tests/boot-serial-test tests/rtas-test
tests/pxe-test tests/usb-hcd-ohci-test tests/usb-hcd-uhci-test
tests/usb-hcd-xhci-test tests/virtio-net-test
tests/virtio-balloon-test tests/virtio-blk-test tests/virtio-rng-test
tests/virtio-scsi-test tests/virtio-9p-test tests/virtio-serial-test
tests/virtio-console-test tests/test-netfilter
tests/test-filter-mirror tests/test-filter-redirector
tests/display-vga-test tests/numa-test tests/ivshmem-test
tests/qmp-test tests/device-introspect-test tests/qom-test
tests/test-hmp
peter.m+  3943  0.0  0.0  11984  1828 pts/0    Sl+  Dec19   0:00  |
                       \_ gtester -k --verbose -m=quick
tests/spapr-phb-test tests/endianness-test tests/boot-order-test
tests/prom-env-test tests/pnv-xscom-test tests/drive_del-test
tests/migration-test tests/boot-serial-test tests/rtas-test
tests/pxe-test tests/usb-hcd-ohci-test tests/usb-hcd-uhci-test
tests/usb-hcd-xhci-test tests/virtio-net-test
tests/virtio-balloon-test tests/virtio-blk-test tests/virtio-rng-test
tests/virtio-scsi-test tests/virtio-9p-test tests/virtio-serial-test
tests/virtio-console-test tests/test-netfilter
tests/test-filter-mirror tests/test-filter-redirector
tests/display-vga-test tests/numa-test tests/ivshmem-test
tests/qmp-test tests/device-introspect-test tests/qom-test
tests/test-hmp
peter.m+  4041 99.9  0.0   3460   824 pts/0    R+   Dec19 809:16  |
                           \_ tests/migration-test --quiet
--keep-going -m=quick --GTestLogFD=6
peter.m+  4042 99.9  0.4 607804 72924 pts/0    Sl+  Dec19 809:50  |
                               \_ ppc64-softmmu/qemu-system-ppc64
-qtest unix:/tmp/qtest-4041.sock,nowait -qtest-log /dev/null -qmp
unix:/tmp/qtest-4041.qmp,nowait -machine accel=qtest -display none
-machine accel=tcg -m 256M -name pcsource,debug-threads=on -serial
file:/tmp/migration-test-vxvkIZ/src_serial -drive
file=/tmp/migration-test-vxvkIZ/bootsect,if=pflash,format=raw
peter.m+  4046  0.0  0.3 596596 49696 pts/0    Sl+  Dec19   0:01  |
                               \_ ppc64-softmmu/qemu-system-ppc64
-qtest unix:/tmp/qtest-4041.sock,nowait -qtest-log /dev/null -qmp
unix:/tmp/qtest-4041.qmp,nowait -machine accel=qtest -display none
-machine accel=tcg -m 256M -name pcdest,debug-threads=on -serial
file:/tmp/migration-test-vxvkIZ/dest_serial -incoming
unix:/tmp/migration-test-vxvkIZ/migsocket


Process 4041/4042 are using 100% CPU.

$ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 gtester -k
--verbose -m=quick tests/migration-test
TEST: tests/migration-test... (pid=5441)
  /ppc64/migration/postcopy/unix:
[hangs]

My first guess is that this is a general 32-bit host issue
rather than an arm-host specific one; arm just happens to
be the only 32-bit system in my test set.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219
  2017-12-20 11:29 ` [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 Peter Maydell
@ 2017-12-20 13:45   ` David Gibson
  2017-12-21  8:40     ` David Gibson
  0 siblings, 1 reply; 19+ messages in thread
From: David Gibson @ 2017-12-20 13:45 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Greg Kurz, qemu-ppc, QEMU Developers, Michael Roth

[-- Attachment #1: Type: text/plain, Size: 5105 bytes --]

On Wed, Dec 20, 2017 at 11:29:36AM +0000, Peter Maydell wrote:
> On 19 December 2017 at 04:29, David Gibson <david@gibson.dropbear.id.au> wrote:
> > The following changes since commit eaefea537b476cb853e2edbdc68e969ec777e4bb:
> >
> >   Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging (2017-12-18 14:17:42 +0000)
> >
> > are available in the Git repository at:
> >
> >   git://github.com/dgibson/qemu.git tags/ppc-for-2.12-20171219
> >
> > for you to fetch changes up to eec745d4366076dee068750ea80245e1a46e9c13:
> >
> >   hw/ide: Emulate SiI3112 SATA controller (2017-12-19 15:24:28 +1100)
> >
> > ----------------------------------------------------------------
> > ppc patch queue 2017-12-19
> >
> > Here's a second batch of patches for qemu-2.12.  Highlights are:
> >
> >   * Optional capabilities for the "pseries" machine.  This removes
> >     some places where we were changing guest visible properties based
> >     on host capabilities, which makes life very bad for migration.
> >   * SLOF update
> >   * Significant TCG speedup from Paolo
> >   * Several new devices for embedded platforms
> >   * Some minor cleanups
> >
> 
> Migration test hangs on aarch32 host/ppc guest:
> 
> peter.m+  3942  0.0  0.0   1452   412 pts/0    S+   Dec19   0:00  |
>                    \_ /bin/sh -c
> QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
> QTEST_QEMU_IMG=qemu-img MALLOC_PERTURB_=${MALLOC_PERTURB_:-$((
> ${RANDOM:-0} % 255 + 1))} gtester -k --verbose -m=quick
> tests/spapr-phb-test tests/endianness-test tests/boot-order-test
> tests/prom-env-test tests/pnv-xscom-test tests/drive_del-test
> tests/migration-test tests/boot-serial-test tests/rtas-test
> tests/pxe-test tests/usb-hcd-ohci-test tests/usb-hcd-uhci-test
> tests/usb-hcd-xhci-test tests/virtio-net-test
> tests/virtio-balloon-test tests/virtio-blk-test tests/virtio-rng-test
> tests/virtio-scsi-test tests/virtio-9p-test tests/virtio-serial-test
> tests/virtio-console-test tests/test-netfilter
> tests/test-filter-mirror tests/test-filter-redirector
> tests/display-vga-test tests/numa-test tests/ivshmem-test
> tests/qmp-test tests/device-introspect-test tests/qom-test
> tests/test-hmp
> peter.m+  3943  0.0  0.0  11984  1828 pts/0    Sl+  Dec19   0:00  |
>                        \_ gtester -k --verbose -m=quick
> tests/spapr-phb-test tests/endianness-test tests/boot-order-test
> tests/prom-env-test tests/pnv-xscom-test tests/drive_del-test
> tests/migration-test tests/boot-serial-test tests/rtas-test
> tests/pxe-test tests/usb-hcd-ohci-test tests/usb-hcd-uhci-test
> tests/usb-hcd-xhci-test tests/virtio-net-test
> tests/virtio-balloon-test tests/virtio-blk-test tests/virtio-rng-test
> tests/virtio-scsi-test tests/virtio-9p-test tests/virtio-serial-test
> tests/virtio-console-test tests/test-netfilter
> tests/test-filter-mirror tests/test-filter-redirector
> tests/display-vga-test tests/numa-test tests/ivshmem-test
> tests/qmp-test tests/device-introspect-test tests/qom-test
> tests/test-hmp
> peter.m+  4041 99.9  0.0   3460   824 pts/0    R+   Dec19 809:16  |
>                            \_ tests/migration-test --quiet
> --keep-going -m=quick --GTestLogFD=6
> peter.m+  4042 99.9  0.4 607804 72924 pts/0    Sl+  Dec19 809:50  |
>                                \_ ppc64-softmmu/qemu-system-ppc64
> -qtest unix:/tmp/qtest-4041.sock,nowait -qtest-log /dev/null -qmp
> unix:/tmp/qtest-4041.qmp,nowait -machine accel=qtest -display none
> -machine accel=tcg -m 256M -name pcsource,debug-threads=on -serial
> file:/tmp/migration-test-vxvkIZ/src_serial -drive
> file=/tmp/migration-test-vxvkIZ/bootsect,if=pflash,format=raw
> peter.m+  4046  0.0  0.3 596596 49696 pts/0    Sl+  Dec19   0:01  |
>                                \_ ppc64-softmmu/qemu-system-ppc64
> -qtest unix:/tmp/qtest-4041.sock,nowait -qtest-log /dev/null -qmp
> unix:/tmp/qtest-4041.qmp,nowait -machine accel=qtest -display none
> -machine accel=tcg -m 256M -name pcdest,debug-threads=on -serial
> file:/tmp/migration-test-vxvkIZ/dest_serial -incoming
> unix:/tmp/migration-test-vxvkIZ/migsocket
> 
> 
> Process 4041/4042 are using 100% CPU.
> 
> $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 gtester -k
> --verbose -m=quick tests/migration-test
> TEST: tests/migration-test... (pid=5441)
>   /ppc64/migration/postcopy/unix:
> [hangs]
> 
> My first guess is that this is a general 32-bit host issue
> rather than an arm-host specific one; arm just happens to
> be the only 32-bit system in my test set.

Oh :(.  I ran make check SPEED=slow in a 32-bit x86 container before
sending the pull request, and I just retried it now, so that doesn't
appear to be the case.

I haven't the foggiest what could be broken in an arm host specific
way, though.  Nor do I have easy access to an arm system to track it
down on.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219
  2017-12-20 13:45   ` David Gibson
@ 2017-12-21  8:40     ` David Gibson
  2017-12-21 13:09       ` Peter Maydell
  0 siblings, 1 reply; 19+ messages in thread
From: David Gibson @ 2017-12-21  8:40 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Greg Kurz, qemu-ppc, QEMU Developers, Michael Roth

[-- Attachment #1: Type: text/plain, Size: 5767 bytes --]

On Thu, Dec 21, 2017 at 12:45:50AM +1100, David Gibson wrote:
> On Wed, Dec 20, 2017 at 11:29:36AM +0000, Peter Maydell wrote:
> > On 19 December 2017 at 04:29, David Gibson <david@gibson.dropbear.id.au> wrote:
> > > The following changes since commit eaefea537b476cb853e2edbdc68e969ec777e4bb:
> > >
> > >   Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging (2017-12-18 14:17:42 +0000)
> > >
> > > are available in the Git repository at:
> > >
> > >   git://github.com/dgibson/qemu.git tags/ppc-for-2.12-20171219
> > >
> > > for you to fetch changes up to eec745d4366076dee068750ea80245e1a46e9c13:
> > >
> > >   hw/ide: Emulate SiI3112 SATA controller (2017-12-19 15:24:28 +1100)
> > >
> > > ----------------------------------------------------------------
> > > ppc patch queue 2017-12-19
> > >
> > > Here's a second batch of patches for qemu-2.12.  Highlights are:
> > >
> > >   * Optional capabilities for the "pseries" machine.  This removes
> > >     some places where we were changing guest visible properties based
> > >     on host capabilities, which makes life very bad for migration.
> > >   * SLOF update
> > >   * Significant TCG speedup from Paolo
> > >   * Several new devices for embedded platforms
> > >   * Some minor cleanups
> > >
> > 
> > Migration test hangs on aarch32 host/ppc guest:
> > 
> > peter.m+  3942  0.0  0.0   1452   412 pts/0    S+   Dec19   0:00  |
> >                    \_ /bin/sh -c
> > QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
> > QTEST_QEMU_IMG=qemu-img MALLOC_PERTURB_=${MALLOC_PERTURB_:-$((
> > ${RANDOM:-0} % 255 + 1))} gtester -k --verbose -m=quick
> > tests/spapr-phb-test tests/endianness-test tests/boot-order-test
> > tests/prom-env-test tests/pnv-xscom-test tests/drive_del-test
> > tests/migration-test tests/boot-serial-test tests/rtas-test
> > tests/pxe-test tests/usb-hcd-ohci-test tests/usb-hcd-uhci-test
> > tests/usb-hcd-xhci-test tests/virtio-net-test
> > tests/virtio-balloon-test tests/virtio-blk-test tests/virtio-rng-test
> > tests/virtio-scsi-test tests/virtio-9p-test tests/virtio-serial-test
> > tests/virtio-console-test tests/test-netfilter
> > tests/test-filter-mirror tests/test-filter-redirector
> > tests/display-vga-test tests/numa-test tests/ivshmem-test
> > tests/qmp-test tests/device-introspect-test tests/qom-test
> > tests/test-hmp
> > peter.m+  3943  0.0  0.0  11984  1828 pts/0    Sl+  Dec19   0:00  |
> >                        \_ gtester -k --verbose -m=quick
> > tests/spapr-phb-test tests/endianness-test tests/boot-order-test
> > tests/prom-env-test tests/pnv-xscom-test tests/drive_del-test
> > tests/migration-test tests/boot-serial-test tests/rtas-test
> > tests/pxe-test tests/usb-hcd-ohci-test tests/usb-hcd-uhci-test
> > tests/usb-hcd-xhci-test tests/virtio-net-test
> > tests/virtio-balloon-test tests/virtio-blk-test tests/virtio-rng-test
> > tests/virtio-scsi-test tests/virtio-9p-test tests/virtio-serial-test
> > tests/virtio-console-test tests/test-netfilter
> > tests/test-filter-mirror tests/test-filter-redirector
> > tests/display-vga-test tests/numa-test tests/ivshmem-test
> > tests/qmp-test tests/device-introspect-test tests/qom-test
> > tests/test-hmp
> > peter.m+  4041 99.9  0.0   3460   824 pts/0    R+   Dec19 809:16  |
> >                            \_ tests/migration-test --quiet
> > --keep-going -m=quick --GTestLogFD=6
> > peter.m+  4042 99.9  0.4 607804 72924 pts/0    Sl+  Dec19 809:50  |
> >                                \_ ppc64-softmmu/qemu-system-ppc64
> > -qtest unix:/tmp/qtest-4041.sock,nowait -qtest-log /dev/null -qmp
> > unix:/tmp/qtest-4041.qmp,nowait -machine accel=qtest -display none
> > -machine accel=tcg -m 256M -name pcsource,debug-threads=on -serial
> > file:/tmp/migration-test-vxvkIZ/src_serial -drive
> > file=/tmp/migration-test-vxvkIZ/bootsect,if=pflash,format=raw
> > peter.m+  4046  0.0  0.3 596596 49696 pts/0    Sl+  Dec19   0:01  |
> >                                \_ ppc64-softmmu/qemu-system-ppc64
> > -qtest unix:/tmp/qtest-4041.sock,nowait -qtest-log /dev/null -qmp
> > unix:/tmp/qtest-4041.qmp,nowait -machine accel=qtest -display none
> > -machine accel=tcg -m 256M -name pcdest,debug-threads=on -serial
> > file:/tmp/migration-test-vxvkIZ/dest_serial -incoming
> > unix:/tmp/migration-test-vxvkIZ/migsocket
> > 
> > 
> > Process 4041/4042 are using 100% CPU.
> > 
> > $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 gtester -k
> > --verbose -m=quick tests/migration-test
> > TEST: tests/migration-test... (pid=5441)
> >   /ppc64/migration/postcopy/unix:
> > [hangs]
> > 
> > My first guess is that this is a general 32-bit host issue
> > rather than an arm-host specific one; arm just happens to
> > be the only 32-bit system in my test set.
> 
> Oh :(.  I ran make check SPEED=slow in a 32-bit x86 container before
> sending the pull request, and I just retried it now, so that doesn't
> appear to be the case.
> 
> I haven't the foggiest what could be broken in an arm host specific
> way, though.  Nor do I have easy access to an arm system to track it
> down on.

After I sent that I remembered my Raspberry Pi.  Unfortunately, after
spending most of the day getting it compiled, I wasn't able to
reproduce the problem.  The migration-test completed just fine with my
ppc-for-2.12 tree.

I'm not sure where to go from here, I don't even have a guess as to
which patch in the series might be causing the problem, since none of
them seem likely candidates.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219
  2017-12-21  8:40     ` David Gibson
@ 2017-12-21 13:09       ` Peter Maydell
  0 siblings, 0 replies; 19+ messages in thread
From: Peter Maydell @ 2017-12-21 13:09 UTC (permalink / raw)
  To: David Gibson; +Cc: Greg Kurz, qemu-ppc, QEMU Developers, Michael Roth

On 21 December 2017 at 08:40, David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Dec 21, 2017 at 12:45:50AM +1100, David Gibson wrote:
>> Oh :(.  I ran make check SPEED=slow in a 32-bit x86 container before
>> sending the pull request, and I just retried it now, so that doesn't
>> appear to be the case.
>>
>> I haven't the foggiest what could be broken in an arm host specific
>> way, though.  Nor do I have easy access to an arm system to track it
>> down on.
>
> After I sent that I remembered my Raspberry Pi.  Unfortunately, after
> spending most of the day getting it compiled, I wasn't able to
> reproduce the problem.  The migration-test completed just fine with my
> ppc-for-2.12 tree.
>
> I'm not sure where to go from here, I don't even have a guess as to
> which patch in the series might be causing the problem, since none of
> them seem likely candidates.

I can have another look with the setup that failed, but that won't be
until the new year, I'm afraid.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2017-12-21 13:09 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-19  4:29 [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 01/14] target-ppc: optimize cmp translation David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 02/14] pseries: Update SLOF firmware image to qemu-slof-20171214 David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 03/14] sm501: Add panel hardware cursor registers also to read function David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 04/14] sm501: Add some more unimplemented registers David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 05/14] ppc4xx_i2c: Implement basic I2C functions David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 06/14] ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 07/14] spapr: Capabilities infrastructure David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 08/14] spapr: Treat Hardware Transactional Memory (HTM) as an optional capability David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 09/14] spapr: Validate capabilities on migration David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 10/14] target/ppc: Clean up probing of VMX, VSX and DFP availability on KVM David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 11/14] spapr: Handle VMX/VSX presence as an spapr capability flag David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 12/14] spapr: Handle Decimal Floating Point (DFP) as an optional capability David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 13/14] spapr_pci: use warn_report() David Gibson
2017-12-19  4:29 ` [Qemu-devel] [PULL 14/14] hw/ide: Emulate SiI3112 SATA controller David Gibson
2017-12-20 11:29 ` [Qemu-devel] [PULL 00/14] ppc-for-2.12 queue 20171219 Peter Maydell
2017-12-20 13:45   ` David Gibson
2017-12-21  8:40     ` David Gibson
2017-12-21 13:09       ` Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).