From fbfb0f13591d37170efa24804140072cdda51de5 Mon Sep 17 00:00:00 2001 From: Benjamin Scholtes <88310985+bscholtes1A@users.noreply.github.com> Date: Mon, 13 Mar 2023 09:57:07 +0100 Subject: [PATCH] docs: ADR for support of Gaia-X Participant Self-Description in IdentityHub (#7) ADR for support of Gaia-X Participant Self-Description in IdentityHub --- .../README.md | 34 ++++++++++++ .../gaiax-participant-self-description.png | Bin 0 -> 63490 bytes .../gaiax-participant-self-description.puml | 51 ++++++++++++++++++ docs/developer/decision-records/README.md | 4 +- 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/README.md create mode 100644 docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.png create mode 100644 docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.puml diff --git a/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/README.md b/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/README.md new file mode 100644 index 0000000..a212d78 --- /dev/null +++ b/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/README.md @@ -0,0 +1,34 @@ +# Gaia-X Participant Self-Description + +## Decision + +Provide an extension for the [IdentityHub](https://github.com/eclipse-edc/IdentityHub) component enabling creation, signature and +exposure of Gaia-X participant self-description. + +## Rationale + +In a Gaia-X dataspace, participants must describe themselves using standardised, machine comprehensible metadata called self-description (SD; cf. [definition in the Gaia-X Glossary](https://gaia-x.gitlab.io/glossary/self_description/)). +According to the specification of the [Gaia-X credential format](https://gaia-x.gitlab.io/technical-committee/federation-services/icam/credential_format/), +a SD is essentially a [W3C Verifiable Presentation (VP)](https://www.w3.org/TR/vc-data-model/), comprising one or more Verifiable Credentials (VC), each composed of a set of standardised claims describing the Gaia-X entity +(e.g., in the case of a Participant, its name, LEI number, headquarter localisation, …). These VCs are signed by an authority endorsed by Gaia-X called a Trust Anchor (cf. the [Gaia-X Trust Framework](https://gaia-x.gitlab.io/policy-rules-committee/trust-framework/trust_anchors/)).. + +## Approach + +As described [here](https://gitlab.com/gaia-x/gaia-x-community/gaia-x-catalogue/catalogue-document/-/blob/85c23d34a6b1a37ab5982ec511493ce3ac8d54c6/01_self-descriptions.md), +the signature process can either be performed directly by the participant using an identity (certificate) provided by a Trust Anchor, or by the Trust Anchor itself. Both flavours +should be supported by the extension. + +After the Self-Description has been created, it is sent to the [Gaia-X Compliance service](https://compliance.gaia-x.eu/docs/#/Participant/ParticipantController_signContent) which validates +the format of the VC claims and asserts that is has been signed by an endorsed Trust Anchor. If successful, the API returns a compliance credential, which is another VC containing a hash of the SD. + +Both the SD and the compliance credential are then persisted into the store of the Identity Hub. +Then, when a participant requests another participant SD, the SD and the associated compliance credential are +retrieved from the store, assembled, and returned back to the caller. + +## Diagram + +As depicted below, the proposed extension will build the SD and verify it against the Gaia-X compliance API in one single step. +Thus, the VP sent to the Gaia-X compliance service will contain a single VC whose claims are the one provided in input. + +![](gaiax-participant-self-description.png) + diff --git a/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.png b/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.png new file mode 100644 index 0000000000000000000000000000000000000000..b31b21c9c4cf987b56b3cc929223ede30490d0d8 GIT binary patch literal 63490 zcmeFZXIPV2*ajFtU_=3xCIVum7b(&qDhf*Py(2`5^j-pjNC%Y~DWP|y_bwfQi1ZGj zDZLXQz#biEoSE<2{js}0_Q&SBywoJ``=0WY`?;U{Bv3(4l9=ck5d;Due)jaS5(I*G zAN+an2QGLg!Em4x{Kf3>M8m<@+Q!w=#MA*IX<}t!XXs$^{DzV1jTa6MHbR`7HkO7~ z4vsG^IgG7eUcM(t3xVMFn5k$u{PjKr2i(RbK2)_&Zu}m(XGNq}Ev^vu(ijKA#ZYIl+F%!>1x!c(%5jCz4i(WON9^=EEc<~gOEJmHZCI^-&S zw2uz&r9S)ggsAzIWLBS2tVb)kLw%kc0ih%zUAW8hyYxvs;sW8W5B=Vhka)yyJEX#N zCT?>KUAc)#y*senE21=@kkBch6%_pXe9zvTdWqd$nML>=m3|6#Y6tU*7^5(3w<@QR z^Zp-X=aW8CxmI*VGRd^iWIHYQQW&Qs8}=$cEK|Iwi5T0iL_2O0O)iRM#_w-9hB+Aq3$-W^6ME#qaAzM$WV3AAd;|$YEJ=fx7MubU~?#klutIm}`q*yZ^$8o7$ z$H_|Xsua}NtXtQY|C73c#c}1OnyP2yDM+4Fn(*ftRqoBHK;d1O(P_I!99?Lyt)1;LB+2} z1z%vAv-wM5-39@hpDclNPUM{e;;CNUN^Q9k+7};KqQ4T2ZNvGIQOOiAZM7Z(PWdDD zrZq}bk%jB=kk4ByRCtmPcYLPkGBbKIGq#&M@6=Y*k6k(arI5%rVZ9gcZjJrz8HS-5 zuXA3PE}k?(-@M>%z}NnAdva%#T*{1GO4=n*`D2L5#yjci^v%hn@_78K77QHi>NPa? zE^B{G>rfP~($Q(4r1e_%*YQ1Z8y(Pz;L=u(Fniqc^;GiQB?|Gg68Q|3v^N<~d(Q>l zxsuxs;b532EwQ)osIli1!JF_G!`!(POw;eL1Aq+p4jv%+7m=PY{5MC5`3zb0@N$x9E>zg}sL@;j9@D9-dk<|3 z*)-mk*~~f^B(Uw>v@euN6orjMY8q^>RxOL$7uZ=tQ*GyaPltgce+wXi^I3O)-H4%t zl^$!p^TN_;h?7F&;tocKA#j4{O)FN+w)%lHjY;c0+S5~NH!?=guSn%pKp*O#BAmaV z+WpJFZLCNa#X=fI`-V}G&ha?`a;XWeJHs0N=c#s*N%UYEQ=}~ zqft(}XzIKKRfwEr6w?ryFaJfgDO_vmex3POmiz6jVGdMf4iep@}CW#ViJiAsw#Z{ZESIu9eC_t<^1(Kp9z)%RVo z&(ZRpyR=?D1G`4vu4$+{g8)tgo=8`@9m-4a@Q|2XJ=?jVm=Y}itAuQ}Q`>fUkhqUe z3op&4Xsk~t-M0e+cdfxXSBs+xuW=G1T*$#=IJBfswONnYOf`YS@!Rwpd0uj|)h3BE zr(2mw*@O?Pj>GXGb3^(4CZD6v6B7%1oid$BZ}r4w{utX5tR+WjABe&%nmaN3AP`_QQ(z6cM@vWH$7aT_Xs^J7>r@K zBbskcL2@LexVK**S|GP3dV@nGMdblxZ|5L%T=hI#FM^wuO`uZu_VP@rvB!JmgD^O+^0VuerUnWc3NDXax;~Oe*J5f~Un-9gydik=*iS@cYxZtM z^kxDp=kx45xLT^jt+gd8{o1=9Z*l0uQ;pk)nwrwFCnw8;xwe>1N;Q;T!Wu0_t~x56 zAyVSZ6o$G?R%)Du%y(b8*ou=bRniI!a=_vc!hVD~RL#?~Up%6%e-^PHKJa4Xb*mJk z)B{VXd)d-vW^+o)37&5jam?}S|vVF7fuN_j_-02mcbKl=Wi^0s*>J}Hzn>DNpdDtCl6lHFOZ^kc33we(i+Hm$>sWdsh!E+=W+sl8LURr%Y9j4=n)Z%WP1S3 zf}vRg4S#B-bi|_G6D!6H90MAvUHLxZae1|nKTiQA>4L2I@FJZ3Z-q{G3(D~)K)FiYlbCi zpLQWwcXmjWM42y7KgYfwT$w(N-FQfG;AwiRwHYQFS8phcKX{F|I2LO&-JnQvL}_T)-Zd)I$mw)6Uv*7Y3W7au~Z~Gok*p4CcV?D@=$%v zow&4oCqJo3h2qEO>jU4nQML+jF+`&`DmEziLEv-cx8GN|M0GtmZFFQkKi&trPrJu5 zW>_SDog13tb<^=yD`$pWia?cxGZ!&rymADUc!JjCdKf4z8JTgT+{tp<#B<5(zJB-o z&D0dPuC&UH?RxTxYePZS+)F!x!B%YBEVYDKF*W+cOLD>X1>FnBhMm+)Je1RHSnb@` z&ga$W)ozARmT;K9^H)^hD56Cc)V@u(J07L?(y6u|uGUbzGUe$!jM;itW}%+i_5QAO zv6Q==N@W4km7<4~i9#vkWw=<}^qGvNu=Tj!`*IA+AanBL&i5W9KoYMK0ewuGr|o%)3pgnYDBfSC$5c!QJh*&TW}f9 z&fBbtizz+W7RgC=Q)PgZ+ZG|;;bmWmp3qBa@f{-G=3GNj;)&ypvY&NnT{ow=Lh%UQ zD%SGB-b^m={oSlL%c`=Nk@f%1>#n{E z_rzi`yj-tZ$5FbsnKrlffOC}_Ta4ezO%-6mcvTEF0qZH`QO#qN!aw&V2WfXe=J6pX zuuOGzhv&-edU>wH&+M+?-wWOg?hbvmY?rA%|V$zjJ)OA@6b>yV3`XGQ@%fIynjgDNjn`?HebADQWqo!{amXc zz^-^W6@fDB_zpuL{Q9p9fAmz#HgxYrE2aA|oqo?OIj3*!MWS8nxZ)iN=R555m0!V8dIZ%-&z{t;QI`-i_HKIyb#m6igFN9G9^qyvr~KBT@;%^n zdYe2q7*}N|Rsx9@ZkY|f6AVVuiNwn*-)AOM!ARabu8z=;n)3Ril{KQhmdgttzb9u{ z1q8y!OOnGPqOW}VCf&vwbj22(9~f?von+aq&)i98Fn%z5Vx#PKu+$Gyh3O%+a{4@W z-U(Hztfp$N6zDT6*v!}M*r#)CW0bq78NnXhxm6 zwgm6X)a2|{HX?etL1 zLW67L_T}Y|{600@3#WDcJ_@@)TBc+zPZC}O)fc~Wiy=&{N2}pwVNDgw9j&FkLeoTGGJ<*}JxJtTKnhPIrpZF2!6ASJhc$SDcc#>_gb zd=!l=18aBT=h`Lom)!dNTEZ_{c6}@XES{?wdiRFcndCJ-#rz{CVjlkjA0$o$As^lB4!u&P$|@r$a}_mw=~djY&uO*Sp1z zKC--Oea5r&-ayfQp{jD9xpV-9NgBs!ukCYz~C~02=GT(9o%BuEs z1$Nzc9d3H7*0}0Ah8nWTGjqKWRf-4YxrRaLHKHKiNSp%*JcAB{=xapn;=&0akaZla zjPNE;>ed}74;8ouQc1YUv(|_TA%JI4ZSws1e?>Wk&S>GD9%$l#<=Fqy;0N9S%sXO6mXm8ikGq zBE3muna$HBtDv{{%_d6ak*8#g8SEN`BEs&*@KZyARuvx8?zE}8V?`2a4tlELOx^Z; z<$kY8M~zh-s^52$*)Ne^(bL@Oe(fqB?q2>)KPX#51`h(6!*Dr!4Sl&h$jbQMbTC`j z8H>s0Y>4;TUmdgc!xbFrn^i*F_?VP zT+jelq79CJ;%&M{-jUt(Sq2|^$*mL@**EX<(^NN8C| z#DpH5^sBwlMw1BqGK5#i?|!)_tLW-{i|Bj`Nv>c8hK1k+P;yGVuQ`yC$ul~;16fKs zHDfJhw zw3PtSpN9J9_$+%zn9&#$ye=wXup#VuG|;Gcv-OE5=-8hR8EOmcZ=JLu|Gg6G$DV)Tt5bBNws%P7Kk)kckkDQ4J3HVP z7I`G9d{#<?V!FMXyt-i{)hTntjc4-hdmo$!HZCxH|1i zbiov4?t{3p_q`u!r(t)vz2$jKGEyse&=nQuQL)LB?frKg^EUE-0#&Yb_e9^MmI zQL5k2Q1+rPs3n*>Hb+4;Kb`hR$hhl-4~-!H9YC3!M)rB$g^N{h?~l_nBawgV8L)|8uiJn1%$=ZI&2a_%-WF1B0RX7 z2IMI|R>p997qMGT;XKacveL|h7fo`n7p3-5M?=Kl zE%B3~SFa2Pu?_}u(_(^r>kbD)H#NWNUstw;u-PI-1N9JfAv+~`c@DP0t#1YGzs|y{ zLApF=N4|BDgP{@Sjcr8Dz~rc=P#w}O?3ChQVIkmSu&~@aQ^jTTGOn(KEo2(bFF-UL zOR1y@!-d-8Vh|UARpDT}FM;gX(M?5D5y6wMSNBZhm7{<8qwy5>pqg2xO&&&XWEJGk zmBN7&cz0uSX9iyrQA9+v2QU_{e*ryh^*PB18BgSDh)0m7F%)31R1;O<0 zx;L3i4w6n_^NmI}NbrB%7%)A0(Lt@MQ&VD`wVT}2(WhbbLJrSmWbzssyz;diLu+;j z-~7B+YDJc@6QYYx(aWo?D@^XY*2FM2JjD+SWxYH?i@1gJeuBhPct*v|wF2hf+ zc^8@F{O8MBr8Pv3N%1nEry}cn%`ovCl zbFbYu?@1IrYbNE?sdX`48Pe_R<6>2-W!g`r!%*AYE`Aes!*BV^>FlsRlsU0mPP|SL zIl!~WX*FO55Wa4;gS+J=+MBx1RmJsv&+4;uF`X8 zv~(m>lUMZF(F(oOw=c{rEMx8M{9Hw2)s6*)&(pJnmZ+FJdPFZ>*ZZhh65W;YIhr^) zAb|G1d3O|R1x8K8^boP8c(CDhCU)OZsme~#Azr)mg+023F)vYX5#2hvTm9`tfligx z^1$xfx7=8+wAV|C+Se&56*FYM%``Pb&#>C*dK4NWV{A?6GZM$a64-QOW25@`;icJFMu>gfdcO zX_oL6`~jk@+ge!!Z^xz=(@>5oKdZ$}GkQm1v#%G6$yEJwV)fIKU?{PH{Yht3ANp&0 zE=U+2Tj)?87)QUALU#q4>odwSyt+RV))Oyy@X60QptQ6b0LBtGH-xC$ZU#>fTMr7= zpkBcEU1O{L?Ufvr?9=7kjjzc!nrVa_(v%8_ENNc`p9$ZIEbWtyv3h&v9 zMYFG!W*bu{Z6SzKgQo4()zHI3e`<2&o|Zr}&!gQ;+Gqfa;Q;U+mryQmGZ6<@ensuC zxwDJar-X-Zh?6>Yck8@GdOg)lzsN>>jn{3br=P92lX=EJHC1w&V#ihN3_E_jUL!A~ zaCgV^x)?T0Nj^?YGSSIdaqIl$5^VQ=mh`?vTQj;ple4ug8pc)ET`_(7O{;G!8B=%A z%ep63=xWaqY{tHKo1xHK(y^5NbmQ&*mVcz-lI>{n3RgdXWj1gB8 z9ak@^MT#ajvJ05V=a>dEGGG}56A9B!^sZiqV}r&F#4Fnxac@GO)yBTcCi($ulV!Rx z)r{1Sz~Sw);0Y5)Bzak`j*Kua(y9DeG-dj03*R#sLrJ=CARDn8rQigXK#LXBhQ zl01r~Phwb9rDP16?ypFW1Cw6!6;N#Jox2F)<<3dSd(MyJQaC3o3gU=&Jt*_RoSj}_ z`kmY#A!Z4w&&k(Eg1zW+{ht*Ms2+H(Q5{pu>rFk}O8xLP-B%ELtdy-zEZK#|9G!Y_;FyH!|*%x=VED91zW9{=h z;BxT-pNBP?*`Ot&%R?V^!_VN#uAc&ajNTtayW-fe2hY=vu8aAH@il0qOF6b;$yY^s z-(yDeR*7l&KoUni?oF(T7P&1wq3V9GA4Sru8Od)Smh;{`OHam$Q|6$AO3wvx`tjBi z<6sy{Pxk54`1>oP%9$LAP%qEX;<3+sy)Y^XCww#~WTkj^=ICr~BmE=^=c)??v`hxOE3Qzb+43yU62Z zfztGDW`Q# z)E>Bv^n!ctE#KEnPiWV?0+p8ieCeRa;YC4dekG9O&t z&Aj~`_b^Ba>S*q!pm2#;c6eRvYS!bxD|h%g>nl||755Gg8oZG4BGDoK*UGKWIyxh~ z;0kw)qLI2Kg3Dh|!)Xs?Y;2xBeTuM}bYr0x-{$N$lEI;?4hVQ^^zF;LE=E1{t750p z{F9Bh%uegrETsNysskylON8o}Yy91<5-zinR!<(fF;-jkwI*62654*-FShlp!9ET0ZCJx3Aie;{+OOyo_oOw*LdX9;Z(_Y;L zq!PVogWjMok@^uLHD1V35%HRdg5d~p+2v&L;~h|B;W=-YAh$_mR-hPtcT3ranPrjU z2sBFt2zcI~6&zrr0WfZYizlv2$-$iUI-EBZv!_LFvb*mJT*;0TbRP;u$P|6uY^vS^ z;OXlb2 zieO};ST=5MbKniYY6aZ)mzCx3hF{$(jWrhfiPB15jbjieXp``^XQ1;6iAnw@m&!6& zUwvG4+*cJGb(Aq^ep)%_B_FIR21$KgGD_15w>%!*&!(ok#;bJYn#xDJlo#(KV$yFp zWi9WF)TXm#h}J@jSda|2;*bmTrAfUl8d=&7T7ce*mDc6}Eya^noeB%as?OIJ-cPU6*dA z*E>9zv94hg5gB^JH~LX#1Nz*?Uygj&Gifp>^2}2^=g!CrX}9*_v-e&Bt))xpxVS2! zS>8xN0KD-VQI<0V@WowU9yYNz;&vb`5|Y#!!qP23X+@R#O)kRxzLn)7<1CAX@YU&^}J@cXaj6q(;9sK_^cVWQ9*wKV9J5+S}mNZAKTA&#Q)oDefiV z{sqfRY73N<=OJS!T~-l(U;Ie z_H~h%dQ18=nUl}bLai=C2`TC}G12twtXtTH2ZoA&_-t*NU**0EI{_ga+>#=6s*j~pze9D!{ex`6Xp*q`5!LS;c z07C1Rq%^yQ6b}y%R*<#s-IT>XxxrXyZ)r=?dD2ZsnjN5x867QA_a~vFCL;rFXw1cT zgSq_7xslBayS6{(HHLCHoMl*mB~9Q0ziE9#$@-Ep00iTEGqA?iO`}qSk*p5xWW%N= zR*7_$y|YPY52=k)6-|~KN!tCC^WsM0@OO8@xqY!GUsD(X4Kh{Pt)qEo{^-npB8hcTR@ zKkbnn)V^Ju&pTWv%6H7TjaYI!d2^2>IXP4Q?%J62%R z3#)w#{-{w@mY4HExO!(%JL;oO)qR7;F987^Sy|uGrH41qYK+_En6>#r)IzV_e{+^U z;kpyu*4i4wr1)uke94bW&ooL(QD})ZS2efEI-ys3j5ZXXEkZI|F(17$?XlxfVI?XZ z#d6Y!w?;zerag#<2PX)^)3+RnzT_BQaNDun0lIT=aJE`f5cQ;bz|YT*HF${NF;#0*3j@-eliM0`d=9%%MC5v6+5EZ`fLBVwYm7#GZ z2nXSrDi0cc9amQNVlq!+*I~!|b(Hk_eeLZB$^Js7rW`X~&BJYtj+jkhHZhx-9^g+S z#$SQ?P}689p6r)%cc^45C2X`fp`312A*<$YQoNf+;o{`whVr{K2rI+8ZmUfYzU_%22 z?F7J!swnU|$ko^1;ZFJA2&unY*FK9d{X!3)nwsK)^_uMQ5pXQ{3kSA^#(|nD(x)}J zWW3D%ai<|p*_Dm3ilLH(r|YociOrwZ^Xkr zGk*Y}=^(F-Kw{NkkGj?_P{N9AJ%$op_uSnQw5JR_&o{Pxz@=a_`-$Iq#hL&gKika! za1!_apvH#ypU&rMl?er}(N?PEk0~TSy30*qUTHhWr%Dpaa)&kNdfuKTBiPe$ZCa(v zhbMVz`9d4DJ6!rZ-!t_^&#-Qkz>2|oB?2SWf$Y?!mVj}JZ8aoc;w?_%yv5Ci+b@`VXqNvuk+GC5LK%b z^}R{dr%#^_>1|V>BT_LWrbP*ORL75@qMmw|maeTdk?}05IsK~2gT7^nYmfg9FzFd` zUEMm3!`*Qec_yC;HQ4k{^XP85bF{F`!0Zgek?gwFZp#A>Zv5{DroFt3)8XqAtr3i< zH0J>XPYk2%hntBHa$1$rr5cWwYa%W4-+vn`lgw2k-CyBLYO^Ksw@leJ5u_BYjVpb;0`u^~^T zKVKx}l!SGzj_yRc9pNzvy0WPPQz)}O`{VHK$Xoq8ovGc8jSnoMTEgg#%?3|T3W9rD zukkUa1JLQf2P|6cw56v@>!~p1rAuF`9mfx*gbS8`x!b1J=o*u0VsUsl7d>?PFRR`GW8bVL}e{?sw_PomqdX$ZL1~ zY18eOBu}tJ^z?2sjdA7f}F@k4|c4Vk@7lff%zMFb`j(uJl790Ex+w zwq3Hb)Znq4JrBGsAopjD?W0A(BFgWOw!MN7>F&OI0V$;yAGs}kdef+>P*FSxPMNT9 z(Ix9P^;DUx@H+WPsmlI0+aIDC03fQlBA6*_20`=b{0xi(P&s(Oo1QMffIbhzhH96- zPb%bqcEhQdncpruugFzDB?go-+6a-wwI?XnTo>r=P-VFN&Uk(eOJuN$otR$P!)F#+ z`HSJgrXzRv&~m1(Bb3?`o13n{V@HJbkutPVlwNBy+&9Uis>c5QUF>F6ap-z-%zSNk>V7xSyD>Pt@m{o zy579T*b3_52Fa3+5pby(u1zuSEd z3$|50(B@*%@(1&|&dwV?Sks|EwZb(STXlq1wcQ^h8Zursnyo+!Nw$GzHhFWcD z-w{gpZd>ezbjQf)T{`H${(P&Xf(jNK)hK9l59i(=_R~5N7(_6&vrW9lcPWPho_^Qk zwFIN|z}OX-8y6=mT;sdZ^DQ364-ktP16+eki}h8YsiorVTXh|^Q{s0aGdPL?O%3O> z>|!hW3hY(n60Hp6;-?9Is=xb+pvi>S)O4=#Mz^PZ(?9y=|I1hX*x;t?x)s+6NEjdl zhU;;k@vs+n@Eizt@IoLvp!*CN2`0oKzPltMJKw-Ch>IXc0->q*-(62&eGqT=-#ubr z`Vh!Jdh?Gcp*#m4wMp>^$soS>4tf@F;BO9bs(lY}B)kuCCMxG#$P9>oO(2F4L!DTV zEbLPM=JL$pwSRy3|CQM#UA6U?D%Lz9#N$slUg0Y#jWS(}6XiakDF z6WcveVpw1y3IW~X@WiNMM~3EqD8`QB#VSsaTW=&q`x-V;vUpuFlX?2BwAOi z+|n!vIeU1m+IPv~Do$d-7Bv0^Zr&^3^Lb6!5DwIID*48vCD0qG!iARnDO|Yz2MI$V z0rsLFXn*#D&Ku27jl_?=HXz1O6R~dcWP<)1A81j(ZAIBg*MtGHvH;>{4Zu3zgFbM+ z2W|Z09uxwZQJR4<<;5<*GUi<23^a+eFm6EKBwaOZMt#(+;j zn`*@uw+|NMthdj*QNUq&Q9eFCYWZ44BZ(d*K^OMP;EN8gkfXn(9zmD+ux$74 zy;VyPw3n#+l6Bdmx8C!ZX??h0T3=a59h2~`s?q>D3)*5B#7m%WxEYL` zjdr2~o-{6y%Ps)mM!gM)*)`LZ*}5X%&y2Cs@cs6dA$ zij`bFPvafC*6KcHYpy4bpOlD*h=jyy_#@p;t98SP)9OeO7Z;bxbotBiaIvGO->al! zIC?(ZSAH4Lx-yi{s$IT{M=G*;xP)YllKOB(Az3yvE$#K2Hxf^t$bvjSl&|dp6?R@v zlWlKp1$jPnaHloVvjiiR4G5s150MkrAq1(<5Ew+n@;y z29%`3?O}AOZc40bs1LzK(I+Yti!df8rgiNBCkc24JT)~bsq&ejx=Aox!sP7q1oRXP zHn2dc&Zb)(IT*vKpJ)zR3Og&q1@5-=-bFH8ix>3I)+(lzR_ErLDcPN9E?<6VyEax9 z!>*k%(G~sn?E_Gw=okj)6(#}aC%J7K*H>M&7?oEo@?=O#O6t%ba3TPQ z2yCbAP`TS{;}!bw!v&yKR@QQG;LY9L+cP0(463N$&xHjWbyL-!mY~FT&|-IsN7kwx zSEPVdm_HI1=eL@88U?(m)MaO}r>2gQGCEbI_=(u*$1E3H0fHXg ze-0^~+j>ew%W}H@Bw5^lgyq+es+JJmK0dcx700RTryoDGJpg0kK6YUMzQHabA@LPG zn5%yF!9?}Kx>cslyMpO@PvKV3;4usysy;bdDX6d<{hF)JS#ayg@##8DC5A&6-H%CB z4Q3N_UZ*|At|m^?fI|fCwn%AEB&&AM8rP4MSP$u$0dh7s)99tPN1h2(6@S_~C8^RK z3}KP5gA_!nH=&0(t8qP4`W{0)N-) zOGv6${QNxrvuDrp#O~Z_Sy>+r^Ed_NTW#fWHPg)T<)6c()c=0q+;Gs1LLmk18KzqT zfYEi6+EfF7c?p6dXFP&F>Eop!G9WFp!QsQMM#zhOpQ>|z{P-NRN|oKhQ!5Y>+thUH z+@da~${@HwDGD4@)Nz?Sw?guQMxA=!OPJ&Gz$~LbhzYBsB?-dL3=hu}5t&a`-`BjR zI#p?V`|jPl+}!V3o^8t^#qxLacH20MU7CFG2jpv<);RR*yO)RaG{whLuBnRcLG9+B z@^RXAMKV`dPcQyG1Li2;U;Q|lsiKx6_v!;LA7`_GuIj&XHIu~1CXYOelaQ1x$L~A< zlD0yKH!`^pbor|R#rQ)g2BZM3fBc`O3vx23copnl31h}fpzoXp$m<$-@Hd}=G~q+6 zB{2Zeh@eoE9Pu1#9|B;Q(L&~u7AYz`=*|P1d#~=tBFijC?YO13I2=d-`~{h5{HJ_x z@zsx%bPu?VAy5fC{yUPBo&$HED_e?AKcL5r&oEBSFiQXYZKPVZy8LUNCyyQXpE;Kc z$fJNf0@NG(&|mrOCv2jWi~D%}B^}#y#+2g9E8V1D=(o#*?bF$v||3Z72_5h7BDGQ)*L{8@c(3Xe%eQ)4g0lY9BTLm#=$xoRN!x574n^tD+nkqv4`7WsLp%S`f&k-@-S5Dpng-_CXPr zZ!x^b!h+VKkS~SXOufAfT^*6sa$?Oi&0EW~P}sOG$@JRr4KcS|7p4PJ|MDwGYbg3w!OA+e^=eanG9naQFv16&9# zz`OqgE*d*WTxZt;XQT`=k%Ku3%=sG+f~U<+BWoI9pZRV+d^j0baVj~5qxQ`6qpRDa zg>P5stv9gLnt9u%y@~$Ilk}j!VzhiGnC8T=U2H7(0rU*CV>}Bj^S@GDn9_YeSu2qb zl)m4J4ddG6mGjdLnn##tn{KwOBkV~{Ig)tcE5ezuzLbUn>wfe5)3FVYCaMEYz=qEJ zK=8k1o)ak4Ri~rT&IJpy6eFWgpOElUMrxEKsz6;WU2JFtsDeTFXw`2ZknH+Ku7hy3 zHVWx{y-WJ@9af{L=IiV41#LzOYDkm~Y*U+s9mmD)&mBxkX0s~srn6EGFzMgqf4L71 zUFFg6AnwSNMf)_-3B9|q9vj`4WEZu2Dh^JJy`2`q&sA!BXQcGVNG7k+@vgjtPqI!1|enHyYG_i)sYUx1DOS*ik zKqpVGqlq-OO`Z2@n5S1#4MLoa?XVP>NHvx}6&BxGdx@WOZfwm;R+|=4qA~IMKCNgh z1R~6J(DU2Y0sInl8_qw0x9u$YL@nIzDjET&+Z-RY4v+h*ZhNv6Id{HKQzOR~EoHTa zzTZEYt{+y3l3E0(H@aUnyOmoiGqY%A&*P=%x8_HPm1paQ@89c~KAYc$Hi(pkrh=U? zVEnU|`VD#;U1QY)_gFsp_Go+&(4xD;&M{0ZT>rNMirtG3!q7=M^=t*}zj zt{ybG6jfOe`R0R&O_yn(T^LlatSJQ?M^?#6D8% z+l~+HdQs6Dli^36gFLXs`&%6Ssrh6T*tcBhhv@SxKN^mI)$U&$-L;#Hd$gj6{-}f& zEmsZ3MZz&+nwxWBC*i!7S7<2Z5}(_$&g+S4mnVPx(ROoN5K`TlC>;gr_3T4*8hN_X z#THE4kS?bz!tr@;ire`>K$X0Yf0x319^#EA_`4eQt2xr-noYPndY^?cW7h>;R};Pl zfsg}n-(TWuQ104qR7W9h??gw3hlU1*nN23mjul0CjTFguD}vg``{Dl*D{O0@ZM`CA z=iuYJS&z%CWz;HlfE6JAN1eH3@r@+0!0?<)Jpuo^z*L$>6FEDORu-r?JPiH7CnneY zKT71-MVQQeg?NrAH0zfJRTecNKCddb1cjD4Qiu(%I|2XP@4^?T0|t63anlvHdf%@u zN0G6rXLWe63JFyMNm2F*VF?Na;=c{?{za=coPUIKd%W0qRW|)Z5@{I+2mg$o@NVrc zMv(nxt^upO9ZR1i97}I-uGI|=iTot@w3j71JUlE24ZWufR^fqdBObQf0VLSx%{*8c z0wB&*-tE*};9%Fv75nv#-#TW%g>$YR;IY9CGH?mWywQ-qHw4fFWQ|Sdk_7%)w(p$# zIbJY=%fE9;p;i(($&dB7D1_PYkbpcRqA%{e=|OzEap!&>C6k}{&!MkUPlWuoIM7i% z|9|7{f6gDQLD>Ul+Mnb0{ty2kf&=J+AiUq%5C9y=|35*16#ie^!A~;K65SSt#%q55 zpWQ$?{DAY{JN$_ksvIsH#*ae;4p!*+R^6uf+qQo3N$Wt41Q|A1fBFx;M|rRGLEn_rd>g41kSiu65I8|M$s1XY;RQg>WCvufhBMfWOLZ132Uhz=M!h z9N;hgTOvSajoRd)1|9w8_FO&?&Y4NmrDODr>b?Lu`n||1-#47pr=>KuFZ)ThL_!2tnGhBJLcv{T=D^<2zVQ7!bG8?%`K^he_Ww9o z@@I5)BwvI%aGhQUUpGM|iaJ=)A}eG>Ud})7+{~PX?Hm7VtNvO)vRBAt4FJXh z05gah{z50B-~0!N09HV~9vCRF2HU7R&^z8=^Y!rojUCKm;& za&XvO(R!D&b$Rd_Q9}eMrrGrCMP8;TXUci?C{eL<%1Ucb0*0!D%Q?;GAH<@duRYx9 zaC;#jAfU3c(s{~tsU?tXYiq02W%d)k@~@TEasWb3tC*_%%ro1O=gu$JD>I{&@bFIx;l$0Jog>L9d$Xd#gu zzS}2R8XFtiL5Ud3)2{evIa&-@o<`6S|EN-&!d8sks6XZaWgssvFAIw~x+So}Y7%`s zT4fKDk&)5SnE-5&hNyo1$^Q7vi~$tdV87Jc*KqUZO_gS~tvH3Qt-1C%e(USxhJGA1RYAwo!y_kqEt}xBwQNNv{-~QJ`RDx*_?z(}Q&Xpbhr*p@AqVt$@O+tcThDyvB<1 zG`IQlSuX1Slk;2g?==hCrr|4hF{6GL zsD5!f7xg*YC|FdIFzD9cffi{D?fMQ1+F(0Jfd50{xaVP5Tx>bY9R&C!xvfIO=7DEA zfdK(Y@nCJ0$xO~Z$8e(f98QiLiCEO~I+hO;=8e-eRzp!Cp`j+CNMUEWzem}Q4zqJ2 zgfFW7KKKNR-6laOP()lQ6Y@Ob)y87x!p({Rooe~+S+nz#R_RSXF4OYNUz|=}iqSw}X-jAkSWo`#NwOmqvV^`iqW-yXRY z@dg-I5ekJyqcLt=Vd3EiXfY^gg6G6Gw@V4y&Hn+8y{1Zr=Wrix?+xo)j~4s&u-wQ_ z`OwkvGzj=fPS^7~&EV0L5gH^l9i1!}oqq`owY{fh1WZh6LcJGM=M$h8{_pCU4p`Rh z1ELETaut$45z>2X?vGoyx3s+W_xIW#g;}ykya7~VM5E%{$jFvu@kftdYyriZf}O_6 zpIi>=Czq3+mXV>f5JJrp`GHwEL!l>@%ecPcYud921{Fj^gm{hYLm-36vTO9l(R(sJ zS>w!!|ARgJWne4^L3=C1C@t%-wxOc|y$P)!1Ep>GGuHj?f>heJZ!s_c*H&~rJ2{|t zoqv~?Oc@k1T62}X?sGp{Wh3htxJ(+iD_S7-_8>1px70OI02h|pVB#|1ne>)2%$gRcjvwX zA!_&@u86)bjWeya(Ji@SMChl_=ZILr15%71F=Xl`Cx08sBJ9rzjaX%Bv$)N z_L40BqBd;Q7fG(k#gu|fCn9EzxERT((zPZ_dF8M2^ zj&hiRv#Gqr3El7iPZH?6wfCm+$iB}LA~$7KZ)bcD_}Z{fOqW>lZT5|9i`$%y15$Wu zI@U=k&-v~@?((0?rRDMSnl$QVm?Nv|DG(IaOUU$JraQKd)mYo@ax|(F`Lf<87qs{B zae0KM-G89VkE!)2K;6Y$S4+k4FxR+bC3lz45}xFOpPgVI`YiGJgQHyRQ53?Gv1IQpe3G%%uX3{UN-3wcwWJHMOb3>u40o8a z+;@h~I)ocpToYYax6+-@eBmQS1(Lx-ui&SkPk&@Es-XJsQ9)4X&9uBlfl9Z7 z5i;f?y=+aFk@DNM=h3vlRQ^YNdGd4o5@+>CtMA*j#Tthvn6a1ru78#g*#SS)vC<|Z zw?3w;S;Jy7;asq4x-~L=dC9??a z1XRzYlD<^gmL&9_@g@(nyLr}{H#b}et9vVC`)STo72$k(w6M4-H(4&d z95qxfR;?}Xrig`Wxu+XtkR4-Zx2d{Mf|P&l7-;bRgOt$yVKk-4%b@ZWM-NSk07bJLjceERI_s)f zgd#)MfPB@lCM_A|sr2cYRkCvOm{7wRTj5ev4(=P#V=O54lhdVk@^wNi8F>m{{V%Tb z;R1HG>nOfWHTMj*VVm9tC>cuTB(Fo#w?BUVfzr4Lr7eh$!1I51s2UVRN#Sq3y%1g7 z)yEY?I>|g%Jv@nCSxX&Yb&2^uD0}Zftl#f{9F>YB6{1iH*-4TSElEN~M)pot_FfgT zviB-Nva~&jZuej|k`{w?gI~9%B`}_I*(;wmaysqncUFST`<2=r}m})d$yy}%) zzV%`G%UVYlBQbkqhjy1x*8`fWrE2qwdrto5EiqdU(4RH3V4IjbPI>C$)F2Cdlk+2U zAK9{393RjR1%&0z9av6mff-WQJ$GMQ@q`L=_QCm*ed7rGqQ}o9=y5IFOK5C$zM5+K zz97Iyw@1mWkrRK5sV2Vmq+zZ@E{Xi3mF>7sJZ#AwU7n<7F3E?t!)>{v!!(1Za;WeoU6g%Az8580cVwF z^j_$L1T~zbtYS019CRReIwH&8D@j^Lv*2i_sFuoKL^K6vtDD%z&vmC#e>1M_-PCyD zntMd8byeqX1568KG58BB4tc7_+$&HvmH9fENfi}UF3zl?cZrAv4<3zCE6V%GU}(r_ znJkwCa*h=`>8rWc{w?_*J1C1uY2x08oJ$4@HK6B}F|lTg<8;bm`es_2n_YZlM8~91 z9Ai6mcMTI4cm$xje^MABRArbbi;W0uB>Co)$_S1%7bw5VAI#Lr;=23 zw6MHhxa5cV`A3-c{Q(bAQ?Qf_f~58xnGBi{d0$czgMHrePTv!Kv@#=>%vwJa-Pmd$>4(ii{3bm~A42&s!3 zT8kj3cGtabbnP!2yUQ0eu5}`p(pERtaaY%cwrEaYIR0Z)e?aQ(uXPzV^f!ht-jQch zTV9ZI<~A!BJn?odrX#nIS2xK7tA=~|&p4UA+FZz_5dj@2tT(e?a5cVGmmwFomu;oI zG?P;~qIIUb=8)cQQpW@rR=;sA)TmmW;qbKE&6>01;o;7hqrOulj|qb??qyVamZio( zDOTF2)WNj#y~t2P`d#bkZKGRR)y?B@nzkvTAHT>JMY_6F7jQh5}e} zB;#;=!&;JD1wI&8K=omO3DXI4z_BuVDds?ipbPs%LIe&1T9p_ z#u$F$F`;HzO^_$niqX+nOs9V1&$~${@fJFh0r%_#UL*m?B7@QXg@7)pG@MY{MF4z2;~LzLID#c_Ct)1fuezgtM@$J zvYQp`0Z!0V{TpVU1%G{oUvd>}mDM;Ae>SM{mXSfcc&W*V^f7HryB(HyweG&+Q|jy) z>0tk)6TgYE2mrzEuvO1hx+hqv$2wtbDEDns#=Goy_u?`z{=nzytWsy>5#rdk#gtXV zoRsbwb<^wXvD<8Xh=V{*xUk3n;{-xGr`<$*SIoEb7(QO(!goGifM5Gq5U6!X9|HE9i$i@JLzh_)2v8ldfbTrPE?S z^;r0SV4xkI1)Kl-9#W`fn z#rj4xYZE&Pv#o?*{z(sPp9@GG(FLbLR;c7P1&@3HB@N&PI}o*%&hl};t5YYLJ{PC! zy_q>Gd808v&WwTfeJvC((62-jJVw9p+FA?2nV6=s+E2n4i24?LRW5G3>H)GOR1*7ao_MiuPuvbPAg%&J__sTYO-OG6bPJr3tf>`or!wn$R;7_u?j%Z&K{BL}|@{QfZBk$8S%Kv@lQktBSNlgf9 zdQzU*oZazeegg#^08qhj=H@D8v0DbN&5%{D?xz zKoGjq^G4fe+AqEt0bqJIjy@CWglJM*8n5Oat{3<>z*){*2}+@udonr^$XJ?L{iuKDL~2RP%Y zIySo>>py<%1=Tv+kKfq{+iC%B_nqT~0ZP9^l5IA3=bU{HsNjI^O80EDAn@6LM9TjR zHUIzrY!`g`&ro`1*Vt9|{L5|(p{Bs%(<|CQ^R30DWg$e@g}gG(*lg{tw^* zoE|1hF|sEam|Q^=J*)l7$vP_dJb=%6l1=bKoQAOUk;PLW>pT4U6^G@9NKSW#RMnmPK~dS(B9+~N@KgZ8+3 z|C6AAVCC`|23lGs)VQFHUz6=Ol(lAH%teqG$n#xXs-oD~Z!uQB(K%*t)d9-$pe9t~ z&Q$2pw-|)ucR$wF8PdX~)7%*b^}}-mN2G;xW#T-k1$)?-so7}1+%}=~P?YOQQYEyg zfsfLz=t>VsmhOLNWxm7x$~Ch2-!%Bcm(uP<)l3ivx z0RQM#_UMB+znpI1C8$kE{JlCmdmhS=tS}Vlbp*>V%%IHB9)$k|FI?8i5aIaJLEh)9 z)C4r|bajxva+u<(4fkoOjrk^fFE3EihwF(f;8X?y0mi`o;*3I(X=~8IgYF%WL3VRQ zm6{BRyj3uh&|!lo=KI~_3H5w#CZT*Jn@)yW4XL5 zQkinx3GhpQY85&HwSNX=|Fi<5sAT9S8n*{$B_6?p31v?`JZ|D*I(BKO=6bY-;W_pV zW8prNn}W0!(~Z*f42$*Z-UzaQZ;~@xfNMH0pP}?Pc+O!55itgG3^5u&bJN+U>UuGb zUL(9Dg&7_0O3eX%n?g4Q&8+IxWTJjLOo;Gy@??&M7%#%bFL`<;CivL!ENd$4+62ki zcumM0?ntjZkDg<7-XJMJ)dWcF^(>Pun1YAdMu3R3vp0YOZU@yPT7RYnNCYCf{x0LTa z{iiX890kTJS0J{0Ee4=UV;l)}z>#@hD9uF?cVD>AuPoWU?c0RfQTKz_{<0~t{sjq`sQ;Gk^&%chPg6Ae*mhMQz1ab%s#MWJcifjfcHU7=eb=fo! zK?OXZBhlteeW*A!{F6Lo>?q~89t>kvn5Ou; zWq;k)N_Vh_zr+OHxjy;=iQ9*Yem90!JGjdD_!zsc)DDTF{&u5{&Myty$3W4FEx`Gbk)A)m=^uk^eiek z{EN~)e7#xbeb0DIW0-#zwwa5q#nI!9JwgFbdH0T|8*=6PK8L;K5B5+^tU@Go?!iqS zb7_Xap@^33D(GuVJMiGR4wYfRlxkhcESny-hVq^a2A=Dtr+mc%-0-o9_FlhFf-P|E zh=#1dUec#$_8xtD_CTN9Hxmn#M(U7th4^*sD*ZO2h@RlK`$39!jWy#l+`S2l4$=KX zi%}ErCY)P8^KY1%ed)8T%e5hFzP-So9w%SjzA#acLa^r6s-vtmun+1Ert=Vp2p1lx zaRUMCK$dVAH@~ol*lOy8PrT1^WdBf&=v^(sRNvdfac^`UZzZkEiJMyHuSlCM<(6{~ zkCc8Z)2dZgDvUGJA}O@GeM|7xmPtRm@i78s^)UPF(bIKTr=8<(S?I1cw%|%O_J6Ho zJT%^BCgt7d8k`a&^Fg=vOuN;}Yr2UELpL{vJyBGn5yQvLT|MuyQJ-lRJ~JDk$C{(V zUVYB;*We>pL5b_|zXi=9xTqbxHr&isTTc z6{T!XP&T;B(7sRnuBp7v+mPJV+OOCFO%7D0n=DFwml;RX!YvlOhac-nB)BxuimZC> z7qj_rbXNZ4*{S3_d|tYWDVa9k<+HRG7Xr=DoAXkn>G?%tRTI=^OC;yF2rTEXpf}36 zZpNV(@Cux5ncIlbCU2FVbOn=HLhgzZ1a|}4Q02+~w3S6?0>#A6CS?EFd5mm){vi6D zy|m*}9(nq%i5M{ql++s|NwKC)yzjhYXIGN||HJ8M18(zLxH_(+&LEBctMP`B}^;R@w?>$@cl_6^b=>fC8-aYkdFAe(;t-ju*&VpiSBr@9)W zAHU3S!zp^|X~7@sg(_G`d{7#GQUBYO{4Ih{x90^LQYmahgKzY?n=4yrCE+I6g;KmM zrVfO@8H;~MqM-_k3ZRK}O z`LE_y<0+D#AW((!ni_Fcbjd8tLxB#hhAO7z4(R6r28^N6y551`SV#<`*zVL>=NJeV z6TgWwjAoNDxKn>Ve_^ZT;;*r<;U{sL*E1f_Z+SlKdE8584u8TcCn(3~FusGHs6sC( z^7E&{B~LfcqAX#H+T!C2(rtrN^QE7Y?^MERb5)=q>_7M~t_y zr8$;P*AL3hXlD&Y;^QHW$$l&pF{++-j{S2P0_xGV_QLZAvPLigLpLvPy$S3pZ`H}OUJ`zx?N!MU4yGDVRHdJ~YuaRIju z^7RAK@YBU{?PZsu4`p26kLCargHf!kg|!pjX*y-waIsNsbsYw#x=J%|p1%w$i`srq{i2t=begSOcm zd)2?!*LIz(R5d6#(myOLOo9sACzE?MbjawR){AemzR!pA#FhQ9x12!K^>Z~}WPq;7Bl~5c_V6uKc0M<% zLepOU3Jyn%e~3d_p-^+7nyoW5bd8Ja{-yh)McW(G*eQB&lRW6zitbyi+4duq6zK4d z7ht&vR@iY%Bh3xAv)G>W2ZkB(~;i?~paNnP9bS zj-Ox!ItM#2T7;h)b=R&7{l?xD^7A+HG5OLmW5}8A3!yra{9d@LL#ZO*iWBI>)T5pS z)rw%LG_{|wCt=Ei>Xs@y`;kjMQ050E|L(q(GF-|hxR%aNkyD_5 ziCR3BC1rr)c)%_WIm`8geD~%&S+=N+bqR#Gzkdb-5Vm0L#r@|RJAy*+^aYp|jCszU zpzgy4hm_-r?)S5Twcj51n#%j#1^|RI7@1?4%Iuxp3zd%zf+uc zZk3oJ)o&@~9r@{<=%4Zz=18S>#~ zc0z7+vx5fOPm|{I#esNiW7X5Isb6u?(uqbiDSaw(X~nn^j0-7MdFAHSBun-5+UX-N z2E4O%+aIT?Dt*$y7!1sQTiv%uMDO`pCsf0rFTn<1h;C!OUm5kN*!8y`jT5L zhfb)w98%O}S@)h$Ha2wgGNt@1$8zYL>E6}m6FlZjsCwgVAb_*TPQHRTd*ncspqUv* zoJc*9o?-pJkLk zf0-knGAPPvL$A*2Z?3=a^kiaTv7gRv&kDq$44R6hiL`VRq_jH6&dz@JtXju=RkhSd z#l*zKot>Rs5`r$F)INcM+1dz7{X{ct{vmAsXWNENbUt$+j7p^*(dU5PEH5vI+H%kc zZb7e}SGq^-P~H7o@hK~lZxa*8yK`CV8WeCU1~w!3?AFt(C}WGDlC&UT$jOO zNuw9M0umBOm(aD0X|@YBbeI7M2nZaby>~@-%(7Nhh%V}5J<%&Wz4p||oVJ4ZO^9vp z@^XCxdj@06F?M_}VZD&fcmYAn|Ky!XqO zTV}+WuhlZI3Y=~?`>>C6&de>}{d6Q=VyR_B_9H6h@p8$KaoeSd&uz;CAD(sXBXM@N z*J1^q(QOnR%|&1VeGD*AG9(%~Ix3k|y0w%xHKe??K)Nn_|9%-?MqM|EpWsBUugs$R zY-Z2C92i(pSsDN4O?}kWjc?mqN(wLaD6St;J%3lycSD#_33IV2vS&u&8 znQaj1KIU%jy{shIN6Kc}y_FHKykEJz3uIW2D?Q2DtnS@Aq<>-arsQB1m4oflXPK(1 zs)YD>DC3J<*AA4sX@8{rv_*n|Dd6nZF+UxuxK7v z{+#s4Ya11WHQ)ULo@xfezM{}&HdaQv%gYLg7;H*FQs^F@AudT}G9 z^_s$AmL2m0R`$eVCW!DJSFqMc+pp8xyR6#1s9DknhgHQ1=cWs=aL7reoJUI%1vF&|$O-F`1)i?SZ&prLIhELK+~S zI4b7sRgin)3ZErkv~vR8=QSZ!)iX&`n|CsbE!U92^s^o5)bbko@2UAW7y7H|jGF-9 z?+QplqMcn`C6k~t>vKEkwj=doSlcwkdZpKbUPxH@SRIm=hbMdiRK%`f&+n`Z!hS0D zrxTMf9&{$nFlMvlm(uRc&b{e#~Yzz>5Z;b z_HVnNA3pAO1L~*+jOJUsBW(IFTPc^%^?k943Jw-r105sm-0J%JLy5}cus`kziHaU( z)FxQFeuSEjFKUH4O?V}5o|lcy*AKQ|!SY;MgskK-rNha#uS_j`9?&+UL5h4Hu87h^ z_IaP{#(%gEnVz0r#F_L_#8`Sie6(;#$VonZA3diKfi4PM48%D(7sD#JtR6B z0Y~Ta=n~OctMCZ+?xCgFn3!R1H5M1yMiws==Pj|p#BLY8$^~Q{Jr%Fz925)>+m9Ku zaK6r)&gmW-inQpf5iVMx9wq3!%trdDKSxazZGPsXeYy(8!od1RzQ+uiuefcAk}7LC zL{?*N74$Rv7{J2BcTSw#p%O?aFM%8ZsH*pRz< znVOc?Wx;#mlO%tbH)y>Xgs>>~cJV5`KC}74>Sm5eeZ^dEN=Rn6@V8lb+#UE5iT#%8 zbIGFwuU>d~#0r2%x-w~{cw8jx(!oU1SA=}4*A#BK&NK^BQSjT_RvVLL8|*nE5C)>aPjBA3a?{Svhb_pYuk zpGAbdqDccsGS#xBbb@H)uuIrjOPuhX;*98}B5!R(_fd)lW~C7y^5{T5M%D(J5>Z@w)C7$K5Vf3!eWySYOjC52k>6@zScJ2;JiekKl4qqp zlwFPAm<5-SFwr6AMUDn^4}e}pFZ0IQKW8J=W^~xg8~Q*BucoFZA<;5i<9~H2cCFf& zGPy~TpW(1?seVO7S5ROe4IN!;I>nVIr#A#Pp#SJu0o~3F8vO}J>^-aaPFMBIIu}_r zR1G8Nvb>KEKQNVDSX^A0?MIOM&L5)UizpG!BB-dS(9qd6@3;&EbjE=*}F-6&Exb3}VGx|5K|{)mOq`#NZNRF#E~B8)SZ)?V2K+@82ccW$($ zl$IfmIJtp@R>@{MyGx>d-?aK@V`O&Rmg{4#q)eMPzd^Utva0sd4UA8g!Q2 zf=Q|93Jr~b{6xVkJB17lx12VF3hV0!4B9zEe};V_(Pxev5Ogj?La?H>?^g`^+$Ocy zsc|APwu(Z&t5MX;Wbv8*nN@Hzbgd%!}yA92wcZG2ocrFHkN`*Q!a z7be1Sv{;U>_WXj4Kdlec@-$t+V5r^D^V)WZhk=!J5IKXlFH-(w4A7T&V3T~CHTd~= zJ8>_jdK*fBjMRRIy<{IK?3dTq_4n|Y8&FdCHx*S33k%vxu4O5VCSBcMcRT1!WreG& z3or((p;y-W_rI+9On#VxGygv6EJrcxzH3Ckh3-G87amkH5I{t#s%V6}8G@-W+I%#A zP<@zN=D2bOs^Da4@>?2a9z`Yg%;DO68Bw1kjtCc<2cL9tj$HUV6o30NnKtp~@<99mJ25g&}~*0W!@k##4nPSz&Ko>|JY>PkknWxa1|dRG{f@sYJQ zsgp2~P^46`y#OL%=5fVS6hv|XksAwL%teersM#>D;;t+YH_tcBJx1NU4H9>A5Fz1B zMf=hnK3vUWl@d|d=;H})sj8lvqfF`AQmuHl(1m?~GYnYU=yg(KE9v6n*BCr~EF!NNEYk zZaE%Q8HBg5 zcE0NuIhcsnTx_jct`*kY$}_gpQaf4)tmutKLCZ%c7>~!fkG>WO^LZ$~puR+uj^mmo zmUB~S(bTE|mZ)lJJUHC17Qf0r4z7S^DogHnq_JG4<#?IuExgx)R_#>b;xsJ#uAVl4~j^Sg^ zk#0w{eQBy(mZdIuaE5=qxT95t5D~)2`c;8bqeHQ@co}_}?}iqJ3!N?8il?Wp$`JU$ zV`>?*bkw$*y+N#u zkJG5Q6~0{TRI4J#0>EZlF4F6ZK{D`de z+edtsH|y-esl%KFjZ>*)t(k_cZ{IfVbFSi?R&iFN<3$Tre5ixF6}-hxi?t}?=eOta zZN5zsT_Y_nu@8@5i(0eDt*wq3NfNHJd>vs~t1MfbuC8?bkw5J@ZP>XuShx_f8^4TZ z-t2Cf%u&cieL^mroh?H!LBI_7?83}yfB9`N3|Ls-1I(AvMC^nO^*VvA4r*vQL9H6$ ztJwURr&dGp2DD36W+ijCaDJFRT>xkv4F>S&F?zeq|qJjdW zKhJgRIQcR(H4S!bXvtaTYxgGr z(#3n@CqeN6@B1=>Y1|#J!X+nI2Y@=-VN8f%gpOr!-^xxn^5-x8@I64GJ65_CL&0o4 z?|&=@hT&ORBm0dn_4ozttxIPWk#pty5;F3L;h*;V%B$Z_$vQ*KPn zzw>-v9+^4fAi4H!UW5lSQifsH;YB1d!q=19+YSBe$Uf+*^c}<}NGZ@A7bet;?+p&d zsru8&zh+w{8!dcyGbml=Xsmw?ZB{+-n zs=6YC<%=tZW4-ZrSVs5uA#gHpmjv9Uk|4krK){N`kn zeQfH{shu5Q(pt*f@>VHw;eLxajSbKIgAMXWAnCIB%`Z^Ot2b7Sc)2e>fbX`8>&m0g z%Y=-S$8)bgBjt}30OwsSCuM3R?kXuZHRKF-X6*ibdo7EG>Y3tj!75L1HdFrlW%uP@ z7`APT++Y!jdv-bv|H`p#;|F}+&qM&ZcQo=`LQ~X8LcFg=wJ_r->o}y%9E#q2su1h3 zpBW(|BBq=-LrOwM@T+$?=b@8J!xSD49S$0k-#XtsO7`hK8rl!m&Y#tw(Cn~Kh!#DK zzssRm4(WRN9(r_)z_HYg_ywIVUgL|>PJRTM>}b1z6A#Yc5hjIsSn!8mc`^o2+)ql8 z-}DOWn<)PN?C6CIUm9J*B4l^5>m%v}&r@{_V`2zM-WG0lk6vEt80xba43Y2V62vA_+GXN{)R{ln z|A3-J%13`(`7^@(VdXLNo0AD)u>mIG!^AG86Ws3vXFt_R*Ch>bAblo_HkyuM@}&}L zLzZVsgKu-!&GSu%QFoJ>-Y4?BVK!H8AIYT)`(~}h7snH3`;DU zZ~awW^Qwi*(@cEKFEg^qDM?vu(Pxpi>pc#RtTT)v%6(aUBZBH0 zd3%DsO}^EQMG{m4MW~z50zOY()i?ci`!7hD&rAg?4Fuh0oA(T2Y9=SB61utVE|)IF zd06moY{UkdEoI!1XKY8@xucO=JNAku*KwGZGeS4!$I_bywSY>8*I{#4P;nHR&uJ>*Suu9m^@gUDg>EMkz%fFTA!1<0 zxBUtEvuKL`EcH7HsbC-_hrW&~bNHh1=obMv`t?a z8fr7d8($;@C7yT9lfc(Rsl&oDO%u9xT?(J&X$1BW1wi?`@yv~;wN7~2xBeK9 zherIu!Xm|KS)N;Q=e5yFkR7nF6t&NRJ8?|b-aRlIz4hS^pM8yG%kgzXm4)NVf593| zYA=*6L3uQ_*S$-*D^tu|iPOxi?Jv3={kV5;} z2$Qp$?!8ns4BZ;KbVJ&og#DuW^RamyApcah4*?0(Ra9uYW3(0KeRJ%bnCPEvx5DIm z#>)$G**_R3XGs)O-pKwd(9-mKA`J4%BX3KoRG1=0ez?Q$=}9bTJn}tz25V{3wt?_; zhIG@e#l$}KS0W8cOfX3>oM+px>?dn70%^YOq~7i^)b}MAJcFy-evSc}+5Qa5R0zJO z(tz;To!AOtgv@6`nCuQM8_%7)rKG_e_CSiYh%-@hYGvcF?z>G{yK`6hUfa&x zsO|4t7<(~O93~(zdM*KFUwbHD42v9=YX^FsyfCCq*mH&X4d1Z9m$PXxCf5gpVzMY_P5irZ@}CFNaM9j z(jjImiQkWfQ&$homwJUzu`^0mNtWa(V=n*B9r-ts$&Uy!`E7CwRTz|;T7{RB7 z3O|{HmNGE~Oa!7JcVY=bNkOj-^V!$6Yr=1d86#}RU(g(*LxZp?U@Y}119F$B|QFA4Q;ejV50>%jC)N`jtTP{V6953xP^n?<`oC z3yqS#-u*;#9_#K{sdv9UDXU?4;9`3N&zhhy$K}Lhf4pPc!e8zHw!Q~?y_%iCplP%9 zseq0v%WPNqoaBPzIk^(TsHQFb{2-goyM&0kVPn(~4+tJLLS{7C!C1bA{l;j@fC}sK zwyguFTnC;1z%gUJ$5pqloIk4#PTssfeGIUiUJMpvk@$<_%H;iw)SK=Z5APWW}Ur=NWQxWfHorEh~_?!;a zw=%r=L$7oa$Ty#$61z%;{4-cykUX|JHK|P}Rvdu4^rewgMvgY=PNcBT2w%{w%ZPR`)?+vDm7nZXP1zaEHsG2W$Epk13(J+`ijfS4j|3R zcSV{wSNJv$IRP#3fpXuzH9_wnUEw&NNP3^|Ql=5y39&ogMh1y(;7u?@ObF7EK2gWr`#24ySb3>?^4C(5=1%+U?9;7sV7o}66o zcC1P_ihuFyfUq6z(O=@H%N_G}1wc)2vn=14Ws5tF)itmV6(_aGZ3$N;{I7jIjDd72 z1SMiJi5UO$U6SL!=~;}vSE3sKVa1V^IJIThMrgCV*G%ySc>kvpaz}diX z7FS{3v`*y|m=@>XneMXRrvh4|A>VRdUjdo*O7(ICDjx- zE*Q}X5J^VcTC|gMn9pe|!R2sJ@wKouX`Kg-3z@)s{5{ee0!?|0#ULR}{0CS+!Ywz6Y;nLmW3>2g4&x*Ziuoa(}E55G_ zzl$`V6K+WPDOdUVMZfxYSD}Man`}nD)uxVaMYSVl}xS+G3=d4W)46@GbPj)_eu6`!Wx7UW#`z6`u*p*H?!uK~O z9{ z8fwKvj`6hh=A#l$7(kJYCI;Ht4m;3V2}kAGVcTJsOGlZzQ&Ao6JP`=^ zBsjQ@r6f&6YZ;MUb)NMe!gi>g6O~t!lCR1z?VESt$)Ai1f%*1U16rOrU7&7sw*S5H zLW3!Gl$>##!st#mKrfOn{J9HpkQbAj%@A|{%+;*vFI-^aHJ#f&y*cw~%w6eMKH%l^ zG~=zK1vFVaj@~7U)8&3=@k`P1RE0V8G z@SV($KHbX4UdZp>m z2kGv$c0&X{2S1+O{UhuPoFHC?b0mwohh)scvLo6S&k887|Hd{#+PM)3Sv z`uZKk&57ZY!o0t6B(=g7J*_#;5#BDdzIpQnS24brPfCWL-`CL5K%_*f-VEPvhTio{ zV?^Sal=6nwO>IBj#}Cu5;;k)-*6jBZXEU4+tk`q@HJZ#^Sa-5&hE7FYGPmL#jzjTQhsV8iNlT;{qvw9#-_jLy`mDsNI~~)n-8~Yj}@epZ<*P=`si)WD^%k~K@3uD zkzSF{%-`}8B0xDl_KM>@F~Vz;eXWO{VCugZn;?hpG)vrn4fdw|I?0|> zvun&~K_V#Yg`3q*mgW0A%!lTh4U_wCJO4=3^ts1&-6dPLLs z(RJh3e)DPD@#as1QItJTB#{*_E^gEiCPu}sRFVYyq1#9y+FmLFco!7W64){*y(K$F zW~CE66OehM*P}Q@65JJ;83(A&w=M4ayK{f9mN^nM?i9HqNlXC~vWJzdOQPckWV#7v8tEupOAU z_u8*?x_P|sotFY7RMYEimg-KKo~HYr)(4%>wq|t%_q!dfbfRHoneHsakU8ecM1$H| zV<9qS{a;Ahnv_g2Y!3ELejXFimWZ`0x1(c7iqRKd zJzM@dPQ!?V{%C*r&n4T2J;KroEphUX8QkRX*5txbICRxySg+vb_TSaHC#P0<71szd z0~VVZ_^FI>9ZP?OgS>qEZS%jI3rJyMxVODeY@B}GiI%n^te4%OY6AU!HE(}zC??rXd(niICEJpICY@6HG+{9XM;`ocF?DILX9O+=& zDLg@YcKUhc4Qz$t(&{(p6k8VS+#YpG1!0cY9}A%MYF9=!)+E>_1`={ z)wNguAbI}wf2bw)!-bJ9Za7$%jsRTV)?YV9ql;u%vWR}{36PTP6lnU?_trJD6meD!Mp3U7kO$b}o1^xzzIR{|GCGMX{P7HHE1n*v+(5 zqNegUz9>EUun#}AWZ9dsz3SHO!{coaQe%aI`Zj*8S`-q5YgF7PZ^m-I$GA>UWN?|x zq+1J#Qm~oItV+6g^r%H+7+M6_49@8>pYT$h34LQatSbb6RAgbI>XYpWRC0~A z#;jdJBw9l~Yk9(XWx=njVkNt#ek*_Z1k!mt6l{HbBI2l(1NM`{zjH|=+UL&FryIrE zET17b>-^Q=O=9M2y^&JFQy605G;<`evC!Gt+d;|2^Fcshb(v2_fQwkbYnxb9+?bp& zlrH{F5il}_Mj9j*DT@nk&HEiD^+%-hGVtDL zKR(Gj#fo)!r-?inp|-Kv{a7vHz#apu7RE~+-~B0L5(K)C=PegPL( zn^|eSxNr}tdU@ObqGB=|KW*WZZ40gbtjEB5$;Lk^(d1q~0-j8$`Ml6$GRAh*`_3t? z+6m>A>E1Dfn&-}CY{&xs3$ZQPpMJyI7N?a}>^@SAs$00m;(@ENq=ejSguzwh+5bc* z>94gMum`rY6TeD`49Y^H8%iIa4Q+VFDV7G3AHS2X-a(UD4Yi$iRWX7nG()pH@ygrvz zImJ!DlTl-et3lwbNV?mA4PEiEL^MNjLO5>yB8DI|8pdpSy z^@U!+kzE=N#y3pKbDW#Fw*_xypga~P279e5Z{1evisL~h-#;D?C$RF{R5v7ffJ=p> zHf9%x39O8qO9=S3rTH|$Aor{F$uVtAve=*^T>DTck@GHL_HI?VAt{E;Oy6Ic$mxn^d63?c`@QXG1-j> zi>c{LznE z_cF=waC}@mTYqh1{Z!MtrDv^L85`O!x$}RkSo^_q#Il^h+Dmk=5ttmPP`cR4o=RyP zI`#?onNb_fUPl$DVJ1fEXT$f3fYuSGBi&WBGlF}{>>&2(^D49a{)Qns zPugmB*bun%8(UEE2G$ck0`vwpjORD+4A;Os!we?x;P$I`&Nr6s6L>2Y=ipoax<4d) zoC9xR(gq*@HHb2iD-*-J)r>ukzn;HiVG}SgFyw=H@DZ$@=dq$J+kjwqL6+mt&vyia zQsgfp8#CYk+pB~^$)frKD=t8#EyD9Dukf{1q1V;cj11c8XJaRzux;t&5 z=!IX}8%)hnNc7Tlx5Z%`RUN3-fc`+ZsCob>P)Cf(j;Pq*mTApA@I3CiGHAO_%&~)% zDj9S+;PACzSFe)Y5SN|YRsV=73&K=R4QL+_P)*rgptk!b&_;dl?zhYhYlGZ7gxAVg zLP7!>WE&eB3klUghwyiav2H%=Dr?lIL8 zjo_feWFc+a^cB>-W7|W7PC_t-GXH2rqY7dv(Xb`BcX+xd-`}`}UW7vAg^cx4o?2xq zWFS-|+{$ePF*N_9rqh0<{9E(hYWtFI^qdeAhl7x7s2s%k#{T~EJjtlD7kCc;8aALQ zK+R;|-yk3;D7kjhu;?}Y%F(ZZTTk&>nu;ep%pU9N(!-6sNe+rMPtF*4>c*Vm`Rv0z z^64RljokUHt7I_wwY4=Vs8Em*7k@4HZN7@iU#j9~*~%vL!PZ8i-XV@|i62UzgOZI` zyl{7)UEB0>N4k2k^^&`rn@(TR+NZg1q%U!yrwosNuLPR7kC3Pzh$<529Yfy!J|7BNA zU)c+cRuq zo%2mAby=>uL|3nqoN!ZUf}l5L+zkoF{Ffo&okm>W7265UUmB|sSqZE-PVad-1f-VP z-J!3#`9zyrB!U!_{%|>9SuGTmB@P#_^ld=z@SD$1swBrpKqW*p^oCw||Na6@r@OrT zR;`D-JKP9fN2LiHH})e`G&tI6e6ZevZq*guYNBf2W(sE|{DOi;5)ap9W@gemj7D0# zJxH@}-##^pu8&X<ylZ4w5{zQw($GBXc{E2|Evq zYj7F~jF~M9bLZXZQz!aZW3(G1tWfh+^0@{gW?<;$R4py96slw%z*MwM#bSnB3JvYg zd=#PRHOSTP{*o-mE`9Xm$&G4i@B6B7y_y{g3Sb&ntXX6!l&bmM*D!S~J?Z|F?<4dN zrcn_S)4-eAWb+fu;I^FA#)&V(6xIk#%l0*>Fe9Yk9!}g|*CL1PBL|)kix%C|9<30=rt z51ch?;Anr|#vf-oP=9&MDZ$1H734y}rKOXYkIX^go}VWz^e;+=HYR$yx>(6kD(OVnIfU+C1SQwhy61EHr#%V8m8O`+M!+s-zLNqqs6k*9yi~*5s zeI4S#lWj68x=#AWp`^y2&gRE#2DHO|6C6aL>P4EL#9g3rQV9M8_tzX;4TXmJ&^O|{ z9)LgdGEP2=>;7N%9^;ZgaDclCS9!>t#QY7$(Dp<5JH+qA1JINW(3(>vxFz|I4}Y)6 z$DlKeA1gy#f_qxvMr$a+$M{8z3;WYisn~x38_D&b{%}P5!1I{*wYv(S=kRgEFuDg` zi~cUq?Cl9^&C+QVh#KmVNOa?NAz5iPaEfj=c_Ma^dC$F+P=>;n*t-gmQBR#{F;V|D zB0x#f4TX}0`|NQ$-IAG{K&{6$$4*>^*k%TPL6g5R*dLe#GR2?;IP|jMIo1H}DKq2W zs=kIV8fUcoW0`7O@ckF+l(4WBXpP2JI`r83b|M4pL zfMvgs+-{T%#m)7z2C7*{AlqZspVSF!=-+ts#p9!4xjy)l_WGg_-{nD}2&2dT>d&V0 zZ3)~(X+}UH__I>56=+jg5goYj8w$px5#I{Gc+A`Tp(VhfboNQ>+w=KhEK%!HuE8Ak zMJ8epCh9xfzHt_5yzj^z_=r1;jG1|=@ByL9ZC(PJ$H;j>`wxM8_1nxu1w(|bnlgHs zG@*iy_wt6Q!MT{QIfdLcs5)_RcG*$GYAngkQ4Xh`fCxJB=*g-Dv|?tuOt?8{fFY5= zV-Q|7nd#O3t;Qb;0w8TDD0quRbF`$$+yhjqy9BhO4$0rLVj5btkO}e4B~rcF0f8@c z+ulF<_@;BnLAWM@F;(f(Aa_2_fpg}O3UJxwF7gtyRSH?oXq-4%t7TuJ%a75vIGB7| zhS=30lFtSdlj)d5Q!gYPLFX!Z;=(PG(`@bfqBm}CLid?;cPkHks7V<)tHwpvS6jm= zM#1sYPR~EISbM7%qm6(x7RvSiYwWAzqTIf(M^O>PLPA8~qJ(sVm%G$lG-4-@Q4x#It^XQvQx2+L@}1 z05SZ(_zT+I2XjXA#OsT`l`1cVxP zQG$dQWr_3O0zr`U(?qo|rbZa0W}xDlS^?)cNSy}-Of5??GbSD(=COY&1DU!f@~|*@ zD5TGb8XX?%{6u*h+xadS^Q+jOCE_h&zKBIFNniDAm!aNd zhJ2#euKT^XTBpuBwaATkAa4;UfiuzqqA#AAA#sL0-grz*nQ8s2x`GQE58uw+^6#N!U^oc} z<%*nE)X>Jiq5hhYzB?GGA9u9(F#?I}f&O5~tJu+Q!E?^^8_p0*vgMb~ZUf8*71FQF zcR<|!R1xFU`;xZCKy8h57DR02U7fI`y*%3!WuIXXodNX#ex`k2Fv|z+z5_PJKaV!- zewd=3Uqc>pcdJ&Yc= z&jC%4KlnL_A$Vt7n_4wl&j=y!5BNJ?_)eIQ)$+M3Zp=#3qy0+`Wa>hPx&RkGj{m!T zkd|!wp}bK1`OokExrlA#6B`@-^#Xu7p49ig@FMJMp^>#SB~FxD?Vq8OSh0FAw|6cT zy`0Bgy#u+0;VDV4{p+_*Zz#c#_kecthi5}YI$p>RC^7d^nwD*~#*fB48{gBo)7{pQ zdu_=fn&)U%1ji%tJ3t+ahG~DDHC{xwIc`ELC$+Y$GEQMWW z8a;)g4&)H_(V0cY(wv~`zal(m?|agdO2oz1D;|R6dRrN1reukdBBZ0eLRMr&=Jjp2 z*nlSBi~p8sm^Fu8sX<8iTMD1~=zVn!3z4^80jjl!AUm<`J-bvy5InrrL^r$gkA#Gs zOBJZZ=bmhfweO*C6NWQrm_8eJFL<(DEMh5HW8+Z-H5N6Ay)yJir_83Vs304`7Qb!YSk z(emHkJ1V1}TpMAAO$lp$dM{+Q%bf+$0*9#k$0ZG3mI>7503U`2o)C0z#c zmStDJR87XlWvL2jwakCgVU7V(WbdLw{A)2m8hbBEAx?zX_YCy{nkC1C;yZ(mmffLv z@P8b2zAsXcFY&EEQa@N=8iZ0duAyY!`sabg0o%EB9YbEbyCL4|Ur=TK^PBg@>%Zj@ zYC865izq$6x0m_|szB1lMiwpf#?3AA>Z}j0JG*}6q1NXfwMW(qpVe2UXh(5N(u500 z2HC!uG%mf3Qz&`AC4vzV&OcRW>bw%KC20tI>w7p?N^vp+U<&?BnYCjeJ;^RK+Hsdw z&|=9!1qO&c0jhds+NVom)rchQ@lM_^DO`NJh*kr6S}{yN(pAXW(d_ZSlUtK|=_l+*0<@YUVdy{>QSz zL*Bbas_mMBqJjXxr=yZ7FJJA2%a7wg(e#8@CXbcHK>0zTT!@!y!Hhyjv_n60d%NFI zfx_ZtNX3e+d4oj9sOug`RxR6uN!}G+g75IOPf~!o%%U@JOp-urPRJO*|wb=>p(N?H#ixfR2FsNK(L`-qrCVAp8&i!{CGA zg6e{gq<@g>zrWYXAN``S#g=Uonj}ubDKLP@|<$BDtpE#O;cSd>M6~Ddef2ZUO zg!LSV3;Z(6pbF%_+E>nAMbmwRT?34ll>|VqMkeF~u}O;An=Cd-o9h~gDOB+TX^%w( z@}#2nw0hwyIpaC7BW_;>IYLR2AGLz{u_kP9NEn$>g}#wq!a|qjRVW6 z+EoSiPi3-LU#5rd8Ms$(>zqJgnF*Daxbkf4MVxP z?Es~(b$*cVWw+yOM=}8m$PI~?*#T-HhpQpwk-X)#CroyLlMXKeC2M15W|ljs~ z5flNmAu?KXunKf&Ehsg- z9<&~gC!?clks}I*!C-Qd5keC8sP5gnHun`Tn#b1P{}MyV`yj)y<=M0F|Mdm$uX}&S9d#*W>X!%2y*uGhHVstb4`zTX9A$I)WpTeowAqaXkYC zdjp)MmY$bf?ChH#gotA*mzQ5CRNi4_4Sb?UGO6bM?%hS|qgcLbuFnp$8BtsRST)Tq z3v9|XLo=_6CKV-e(ZWldJxFkh*S8q1*q?Sd)8*`UeD19RZCtRyJPsR^?W{RaHLI@`HS(Iyv}i zAHYG@!w!mR6jt#&^{eA`euzC7pVNF(Vw)iD~QmX6XqwLu9Q8N5MhEn_kAt58Tsn|eT{ItJ}lf~BiespDJz@?P2h(8DFyrE7DH*NEh9j4 zPQ&fxQA>3{4-YDOdJ3u7N)QTo=N+Tl6bzbfqFunU0UB~jlkRG*!$3mp@L&(9zh$Zx zNS-vSs)`h z?{40m)!}E08xeq$c8e@fNp*0cSq=-Og{s-prb=cXWRq3o%pij^~{r3}4R@lsuAH@G&YGY2p`o2}vg4I}EUA=Sn zZdFwkC{@`6!6rKf)2E?E#3Mkc$Sv|b&~-pv9zQ+xA5)GJK6Kq7IQvYIzxC|jOi-Vt4I76zHwP`39*4u<0S8JP!}&1^7W@Q* zr`IzGVLvAWVB?pb5&8Bp_A>K?6Fk?ti>mL#_&dDOJ7>M!TgSZ>xK8hD*u|5tj{r5` z4y(`O)#@lI;XRc2*p~Ja0%*V0`87KIfAks#Fd*(sR_0V-fqqJLvbb{Z8-a?rTznwe zLXIA*^CFSnoCr?FYD$W)A~x+>NmtO^g<}F|DgcxbNYdxCE1|wiYBrs=0~l5Z`*zMs&vkWVhOUS{=|6N}w-A)I&{H3QM{^C#H(MolfM)4ibg+89;%@9!N{1 z3X=g95pNr%qTpxVM+J&w3Stl_fug|7kE&rIP3h4pIp#*0TB4xxT(NkYZ;Dtc847FO(@#h4i+FynatX`&)5gPb^SF>6kb!S#%yCh47)yZRO8=)l&zk7U;|X zwOcTFlz$7jNs;G6u7%Hf?yV9Q`6j6WnJMp?-U1+@4$kp-gjH7M@H*j5qU%(OQ$;4J zpr9iW^Jr;GsI=n)V9}LCmb6x;2wvx=!RGRF2|(uAM0m+Bt`$|wNMU`^SqgQ?L17#! zV{q-Lz?yhOCUA#DNLb)j3>iQ5n`{3FUq5$7|J6lLVf+UV&L#UpFzBucIKRK9?@sN3 zGjo&7h5x&tv{cqp^iTJMjcjJAtb@5Xoc5jcKoY`K6kTtawYAmO9v_?%S-iAA#JtqX zz1J|`N?)c~b4wGl#1k`G0_b*F#CdBM}r0cZ{;5NAy6J(f%cDJD&dVA*NLO0 zp?r4LN-a(L2`a!%JE%bFfSN2!#5Td=)vvEX-g??uNTG7VbDy!M zS@ZB@ybyHMw-|2^kUYJ}uJ~C=kX>(uW$P?>&AN~GR0cysmve9kt~Y2(vUHAt7FiaY zpu4;t0Dm~kEJ821p`Zx?i~qHZJ)C_Vgb{LwCVU~Muo#u03pnjGxO!*@+- zkKpjL;1yiqGay}xa63#UvP0%;%!Q`UKO&gqM|+y597dP?Cn)YMA$ zZozB3@SEkql%m?J?y+H^4`)6*9XuEn2u+W4jclQ*0Y(HAak)RWi1&H|CiHk^G+dMM z@b|@`%PhSBT7ZnFi{K6{IVVR4?oP)MSdI&vz)g7{YYYARmnj!=g)@+z*Z<>vj^{Y! zX-duH8OJGe9wf3EI5$6*R*doYp@JUlKt9PC^<~i54QMK{gZ}lP+aF5Qis8%e`{x-R zwCdo@t1R269#0^U&68hu-$TPf-$K9X+7d*s@WBVP+;X9&uO{4|hYP-a%=;DbIOu(7 zc%B~bW_6~WpBK~S!}fR`tCq&iwH2bTD;i9XarOV{>MtoP?P(PjDa@A(Szo+)1*`Lr zviq9?fmhQr(BEzO;FkOArEbP^5j5&)cfji0wRsH`7uq5=&8C~1QjnOMn}V-=wbPUduM^x9^eSbt3O&0*+)s%-sj^B=HsH1{N3f(|0O(zm+O zhd(D+nF~?oz4L;V(h$tXit;~AOlT>mx0@DYBMaU!5fVYNFX#)G_T?Y#dF}OdO;d=c zlUz?$J1>uEtDzZgZ9Pr_dT3o|6X1{t(~l3HqF;Ny7#J^O9Ljo^_7inB%&Ijet)_!} zIHa&!G=^IHXoRgUVaI;uc~?pWuS7WAbICxxPxs{~!}6S@g1j+N%k%3bf`dIk@)11( zJy@xR;`P#k=w6|&!ETp6;@-Givj5G83~y2cD2~dOs$0XtRzApxJ~M}(AxRrrR&5Y7 z3`mr4*p`Wxw)dGJ*r|A^{7}gMqOAM*=lOBHZHX@HdyE zWc8kh>^b$=KAj0&xx2XZ1+!OJi7y#eKB-N4SU9)58#v>^yO)zbZnu$G8M{t<3nR7W z`E9uZMu#DW8lhx7JD3FG=lCx#ZT_Q=*&@=kdwJ@L?JC%~+hu7>Y)w5-o0e>SK24tR zyzN90#Q7GFZ{8iZQ>Fq8^`(@_{Jd)>8Hq<=h0ux@z*dmm5+1`5DMg97&+f&+Jxro%`GA*4wHKbnUoPY}p^;pVVY#SMh>XD)Uz zWJ@oVFL6I0*fr$!pYC_{Pm8&`XZ>A`fyZ@8J}thei6@*}S6_ZCdewH$u7!E?>d?0y z>H*Pk_Dp3jk`ld3;Wy$58uC|dTLdEP8t>Yf1zq}S5P==NUILVw20nXPZH`{qdKZD? zNX7S=-S$>7;|<(f6pjRMHxwVFm>aiy1yT*>2B0SPBHR*VfY&!5N1W`HTJmq>(3P$`H{$FphfHg=G3qfc7_>4UHD{XI zc5)p5dXr+Z)ho9| z0u$KjXlr;fI$yjwTeQZjeYc0Gwn+rhL%c;JzZRFv3NP5_85dBSH@`0Jp)7TOxnL46 z5uNhj0Zbun$8q}b`qtLh0o~y40bSyjDC+K{w57cJJbUPwoa`;rUP1`G;j)t{Pv(?w zq3oWDUaePByMp%fa$xj=j~+sJdw8;{sd?4~@?O^7K8)b;=#I9{*FCrpkB3tX~nmzfHN13i<;-aJ0+@ia=bHXOpF#9TtorpkzxlC8+JkQtCClN_s8E4-e zZ~D7FR?l%rT0k> ziAM0a&8*!L?2aL7Ad31_)I^(kyr-UI$S4mRn%Qh#1#1jk+nz) zm&$12oop*A^sWK@8^9fQ1z?raTL!TmhW145UEOvsVN*BRh84d;zZpQ?HRTn z#7b)^JLX&b5Uju6Pld&BhjNRfaFKTI+(H)SJ9oIKXD4e?tJ!(6msoL^1`OlwEsgnO z{&58@&cPbbBMLviTr%jRrDo2Nw9MVA@0BoRJN|x_lNl#a=Q#xds69W>itITL_+>&i za%1V&e#FJGcD%&q7|@jPMdm zyK@!v2n`vxb<|@&1(^kFEOB;v)hU>A1%} zH-c{%;{sec4r&j?M2X_yB-P(S$(Fs<>I6jXjkNO2APPAJOB4bUF72c5-oub5)8jzg&Wh;f(wi}eT>i}Pe)tbInDIt&91bTP2&qUeb?;H zVWI5NuZjK*kO{^B6gj+bZ}cEdMVfK)C~vw4pdc!_IMH`Xb9+&H$y!f!j}l(amFC&| zfV*SesGX0DF-ft1)5*yUE-OrD^anr$_z_?a+NbK~20_jhk`fV44s+@}?4jW1+y!?! z+r6Zv!KgzSOX=QfKLsr5Y(oY1m(xqr-T7?`nY1bZcYaGqaj4}uZ&y5EM!7)b)Aed8 zoY$cBW?ld{SF)fQ&zyQg62&6`XtP;IkrJUQ&^!Kcosa0J))qjm(UC*Q>8WM%f^$lr zXFT@Phz}>rWotYGkC2A}=XC9;i(e^yzm>xPL>UIAUV0I zA6(Gg{UBG>VVK`&;l(8Nm0l%FC5f&a^Xu=(+*iS}KAWVqIEIIcuaDtjx@s!>lTTP8 z;%YXZ3{vAE(I#}NTL%4y-}luVD*%=y^;me+aq+-j?7D6SkLJ_UcZ|4Aj$~G#c!N}h zzj#77!pH^e=6oTeHkOs0pt~kbV(ky%{tpNy1GdSy z?CH7^nAt@g`O37o!_V;ONJd2rJ&17KKR~8!ulWeJsH7>AR{;#U+M&5coQUNUjB5Z8 zf83P!lds{Cm746aUT;OwLH_04N2Ay<}VT8sf zZ)Q4$J{jqaBu?!s;uqlz-EYv|qOifQ3+Z>$c)T=l_GPn11`=+w8o7o*5u)YLoA3_A zu#2r1=#H#(0?h&|nXYbXk-WXtmB(!uwj|gr=dQ9R)b@ou4x4g)F|&^=UubDdAwALe zC*JF>n@%+@PCvIiph0OR)Hg6Jsv*mlZyJvWCCiSgj&^`y-4=LK%iB@6yUc3W5y`Yi z`DR!bPdNhv{YspL8G+Z|D3_Ca!!1!jS#}ldaMrALO|T4AsokMH)6Z7q5zw85t-r;OB)}U2w?=ZcX5vs zMmG(A!nra#K%SLT9t4U01^YZ7R_dI*IEfYU_n{OC`R6x_LN-SAH^D4#N?j~(qRmme zapm@7)C&JZ5#p0DWclXd1Ub^gcFwg>#O;_`_<1VC&)ya|Pf>03leO|m-uG6@iX+Q- zP$fBNM}MyeP+BM6*bnPmL&h&8|5Tva{U^T?+Jf|K#Gy-&j9Py8Zr2ApTD;|JNu=H> z8?$!q*rEhLh-6$am*F&=&2~ zrLJN#Wj;z7kDuIw_B_1(uxM3%&q`fklN>)#v23=of0Y$&G#=M3Kn?h&fOVPBejFH7PrxS zjmLsc{y*pS2c^@E#1SzkjkZ1zH@my`v~Lc^+3y94dvRD&hZ$oYjQ2+jcUswRVyi(B zE@)36zu}hC%RICliNopT?QJknA{f>4s?^0rq#3>;DFBVY5>FF-hao$6NKp;K92An$d(LlKbRK7qUi)ViGHYmJq&~)ocMul-| z=Wo4_3eVOV>j1ZRO)muUUC13yw{O{2IFAu9EeU6axl=OfOU{OJj#Cgxmq!^C!lUkI z)38{W=uPn~k#XA%`IConm_)L9z$eSHtXG?xJCv36p3bJtSFfj~!{|N7bHTgdU?T90 z?aMyquA`fd@4tmlNrv8$ya?fkGVjxp+szhP#E+?LV&R!6bFJ=tSlv&{dNEk*!(HuI z>bW*8W?{k7G6F*=n%X$NE{gWO+8XQ|5kz;T6U?e?C{+LRHjgbv?$Q{jetBGiFpr9I zlYHzBk4LuRC}!6!H^7|cI1=GJ&_y z+39cmR}8QxGq<{0eH zCv`ibDMrTQVIFFjK*IF?WwBuGJ9?Y| zMXbyF@r`yGK5}z64hwJXM@EuXRSBegO8|f|fl*&-}rsSM_{gPk9wz{&?Ny57qrU+osQFh z@F+fDk|Qs)M*+t~kB@JxPW>%IdcT#B8V}7d4;!!Pz7BRW@ToJT!X#}KR)(hN=raa) z;Rlpn-w?uW@|Ra_gNqWCy&fuiDOY@+=y;}HoNAz)LKDp4vln3u z3A$E*96O(zHaue4>xU`-RaEPB3cIFCmUu(^#U*dk`nMjywSpY?Ra5}6)JuSEmwY`V z34kjA4~nb%gub1wuC}n%tu<|26#v_ErRg~y;8kShpZB1ra!4O`)})4ar!sWq$Scww z3AMq8@wfNNZjib>NWqi;+fQFvf{OfG zqH5Iou(g=7bI|8c*7iHVqoA?9W&48PIpsWV^ehbhYS|sUTfl^%R^WCO5CS4?KvF*^ zZ;{~RD>Lji8J`2Cu*TKz67SrN+dnvnVAYR?mx~w;UjsGB4f2KY+{U-q%F0TW8sM+= z*l0|z<2wNgOMyCtcy%(|P19shuyw0pjiDn6+dOU=X)XCAT{*?hY(b%HzeN{GwZo8) z)9Lq4KJQ~?n4{I1Wn5w zR=&m0fm%bMM~^bpiX@GMK=@)rCv?#$I=pP8Asf2DXaBOw*9xNmv0AbcVBzj}2y2T0 zd##m(eYXrRT^{$z)rV(aw@#YIJ{5DTu8?$^>C5T-zQ|iMtK|W9eui@IQLmH#gtx(p zV^`4(k&Yc$l}LcE0WqAcB0VY&wfi1ZW-(2_y<8SxFsS|Rt2~rX4Uc zK;&ga$A(FT$6Rf}p!4BF0R>+%y~(43qiS!Lhe?e0|M>{qqlt%Ff`_Cc#DW)g_Ef3K zG&FKu*-J~c(v{R{WlXN5+o;yK%P`d-rq>)djmF4sDS^!jptw_hk#wgkCTusXy!^=R zl4j1^^%Nl1n=rA1X!#_5wHYlKB!It(R|xTsC-)%3%{j`Cxkg>(SBc zWo3>lD?VMBP7g5jL^|&uy=QiFL$9hd08KqzUaH4Ee%=zESLY*EWIm}{hKHJgUFEHI zsiWw~NR?ED`z;oGn^98mLusnS!RD5hxP#bUjXVPfmA(Pc#Bjwz_{=5zjEk4kmD5!= zMyu-V_gA{p)PmX~jmi1fdSeoHx13lR8M9>KYQe8aV~Q+pQb8)pxu93>h=zPs*#obxbGvM9MPt+2twOG0;VjG?uT_+A6d%M{wX%+xCerygMW6F2vR!j=Z8z0*%MC zYDMfEH1D>PwnoPj6|mZcw`ZU(3NQlN+#C27)OO^lTA8(%d^x3A;<7)MT`EP6In-W?-DX!1wlm{ka zGc_+TM!?zhzs+|fU)`1f)zUQxBp-u9+f@+R6uIAvwDI)3;t^tyB9Ae;KW`zH`DA`H zR**(pdmMEBD}y1k+Y_N3-qUM3)Zt9$Y%wwo6j zLJjQ`0e8I4h}K5;PLW(VfBwUVwFuFL=pQHJwivgG{-*pS&*C&p(}<>3IDCD+F>imG z@SYU8yd+=RNQDtlvu*`sHp4^VIZOi2lJU;X@X!jH&Koh2Fx=dpdvl8`$;xw$@ru=gNW zn}l^CKTAXmeJL+*D2w{?O@4VT%dnf2T#7}yIDePLelpzn@Y(AN7|r{?rdQJUcw?lP z6LYK~tXDbWr9=>x*`S3GP0c&p!Sf+|y?uH8-;bzeStmz(5#1nZdb-(mH_Dp+!#M`c zvV>O~xAxIRu|VgcfhcQ*j2o9)oLLTNsq~pkKN0c13U8io;ed*YHQA4O$TU(|<;Soz zB*}QJ$4Ulw#nzAv6UJgn^LqREsOHlitxnFNUnyxGmb!LZZE}018&@;th!id59D^JY|Z z9N3Z`V8Ol_slKvG5DyE3mwSxC9X5B~yy*}6b-F3*j!*aDO@&cO$IY7jvGoR)Y6s~D zOpA87647uE5sLtGUvQQ49Xwkay4rqJ?c(B+u3FHatqt!f1L}RwsxRV}`DKxgfHga? zw;#V7m*eic?=Xy^E2pce$uxuoRyIT9z*i${hHVJk&a`P=;QE?hAhzlw1*yIYzy^ng zeg+2lqcD@Rlai86*0ZW}yWJlwT{Qktwgo2ppK-W8&|IVaYo_#U7|cs=4)V_r_0a))(wu3Z(KMt9jgvIO|?8UzYP+7u?-T z`dtE4VJtc}O2VDXvup`a=IsLikZR%$ZFXp?IyaCNVFQX5P`k}Ou=}*@B(G_!0m%Rq zXd7X7%-5O~Z(-o+cyotJ!>D>6;8{jaiPWo^*=5+%33Q==?0EMFvm5-PMGS*GeJlo5P;E}ZxL+-i3{1Gnx1|+ zSq2Zj%&W_Y(l#rNz^;Hy9ne*grqBmIx*Ilnn`hfI$_+?6UKseGh@WX-J{OC>1Ovdj z8F^T`rBu^T?aA~g$eCZGo9ve>^u>7JXfiO@+~Lq0wY+|~(A1}+?P$S`#+79~S%HRc z7&;!!OVU!AIs^Mxcpj|vUU#(iJc_qhyo@QkT4IOd#GRZ195&n=kt)?Sn*Hn3>1eAj zK))4E+n%hpJOj7A-QAknT8XG|`olZ#(Ryr6%&-FX!nh@qFP_YDNS7&6GyCzt8Hszx zd(4mJKpYXP7qbD${#0@X6WrT)pDx?;jAuV1nKCA0*|QgGtGq5nzB!+2go%O06;dwJ zmb1Six4nl39E;5Aq&Y}}lDno?U`o%KSWu_&onnpqhNq}eZp(5ojdepmbWXf+GFlcH?D zQ*n5qGu7$Eiy)wvaPCWiN==I>U%BXMF@Jwq!&P=&&|pFK>{m#OdqX#vT2KWJ>#&j zuuBwDl5s&ht4*eB(6a1fKuGV=VYlRvW3xiti14%?9$cAdVCl|q$h5D?PkF$HWM1fd z*^?9h?mTEp4&+(ubRq9R*Mcjdwt=l6!c$^Jf`>#0_O z;!}QMpN?VAM5}zop1Gn?6`rk?lx0A5{p~!ylB;x#e za?$9=J-IVP_BYWSFYx%8S_i82W{u|!@SJay^SDVt2(I$O1IoD$kByCuxo?w)X=ye4 zrrRoqmA94)QeUn!@Iv*3xg&l8h?{W!<4iM@0^t5! zt1*0Axt~)dEiDTbV$J(RnQ%l_gi zAxF2-bm=wrXBBoh9y|aX10aVgBzE#9wq54Qr8d7mq2zkZl$CFt2U<7R=jzV@x2L|T zztC>$I#>}AQPJ57m)BH}F?>Bdi7kf@`rD@t)$AV`4O{~r70)_@Ch)05hgxrR&vp{d zcBKo|^5b$0?IvCGia}sDc&403jb`V-yN)j5cr^HXy-rB($xJQ1`4t2nol5CiD>=Co z%wAy#_?wew^Wr^I-m)LeH-}xyy>+zPy#?IB)(nNd8PHiHdbCLl1Rz#TOJBOQUOXAb z!gkCu|K_`FjE!*-L^zuuqo+M+(PAu@4Q7NuZx2j*m#jPrFsbPKoei?8INh(<#IZ>el$N@7^!4VjU zh>Cn6h5`Txr8A~aua!&WD_m7d}FG^b7z@;yyD@npYd0z4={TAZWr-p`xWFf!kgd5!vrjCKZ z!8_GA;sPbCq6;r_*?o2LZck{@BB#}B3=G@ZiJ;dkJDf)#Dai&*N_DxJir_`#fu10P z76J_b2jcOkM3|dfXNpE?ZHcXy66XP0VCa1h%-622pRE=o`N$L|Nc<;cbe=x_7%!kT z-HMhwQ{fVV;zi6Yp4WKdj*pFXr}ww+DO+t~-%{e|=TDS$vK{wXJ6R>4dSWJa9v}(a zjjrLi<88ypjg|M5k<>2L{2M>6P;ubcQYo#lguIyTKnK38=OkFKGuF?PwJ@nV z3e6hE(33VEqMpaMamQ-mCjAzRHOf!`Z}NEb$@}yBJ4hiP(MZ;0`*QImM$~m1X=h>~ zZn^$7=5Doi4}X%wtlKU&`UoHt(E*tW@?SuBTNZHoKtOHK!MaW?#Jfbb?)aW2+a&t> z58u#X1myPXzC?{A1~Ui>rJV4t4G>3)^Kv_30f2f~TQh7}Dg2xb>W#+E7~Su2O^?keRq3PNa0I`0VZHc&qBISWM zLZ^-iWdXG^v>M96@F;&Sz@cxwXR&>}xGe$_Ts;wIoRg*ZX{j3thMgXlhV~-yG*s_v z9VS&bV~kJvZZW#I5b@1akaZs3nuAr-WX?CXM)Nuysx6UGQnGMZFZvL|Mq%ziCJSOi zU+FC;7Opr2<`J$J$~6Br_`W8{*s@v)#KmC?qS#a<4sI)q32?3889j5C%2? zsDU{1BOwO@(Li5gF;BishWoP!BJGU!QIbN=VS_$Rv?+YYAtAGm{(l=MQcUbMb$`k;+S=&*Rs7oSuDk zunH-D{zvNc8A!>MAUKuUXG@39lnsYnp4&u3H#CC#a`ic0jEn>ZcGP$&PD~nqvH_;P z0oeZ67cR%#B)?CQ&>H8*S7vK53h>@?OXa_QQ39&1R<^%U=D;> zGn86}(>VU7=O>#Ka(1A}3X(Wavd1q#mbudQ!s_>yG;J61wt6>MP*+$2XcPqa?&BPO zz@b;n-OGf}0Im*HYNPVY&jUYe1k~A=fPnk2d01x2JpcQ2?l&9$Ouz@r094jg{{H9B zFrj-z+x2nkBp=JiC?F6$uQBZ3zbW)JL^nuTMw!i#t&D{ zrc*Hi_NaLZo(dNA=ToO(;2dYY8k5hC{Ak`s9gGHX27da_hu(tj8Hves1!z~BUjWmZ zeH#J+S>8X!=XPm-{&Cxvu!rtPpSKDNJszl1x!rzupWOWcTD56!R#>dWC;M+E9xV48M7(*$n`YxY$_t zt0bj{-J^!xW%v$FlBgpIzSBXGM{AV`f^t75+7eh3NWj{|QJ4Aa+Jx0LZg1am7$iVHzkEx8N%Te3_fSf^b-wqd)$cREef`((9gT+Y z3Jt4eQ$WdIPCRtrDlmEY@6)VH`)m5ZS%vhB^b?UQvd;svE#^@v&q>(MtcOiYix4SC*Z literal 0 HcmV?d00001 diff --git a/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.puml b/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.puml new file mode 100644 index 0000000..20d4fb0 --- /dev/null +++ b/docs/developer/decision-records/2023-01-03-gaiax-participant-self-description/gaiax-participant-self-description.puml @@ -0,0 +1,51 @@ +@startuml +skinparam BoxPadding 10 +autonumber "0'.'" + +box "Participant A" #LightPink +actor " " as ParticipantA +participant "EDC\nIdentityHub" as IdentityHub +database "IdentityHub\nStore" as VcStore +end box + +box "Trust Anchor" #LightGreen +participant "Signature\nService" as TrustAnchor +end box + +box "Gaia-X" #LightYellow +Participant "Compliance\nService" as GaiaX +end box + +box "Participant B" #LightBlue +Participant "Client" as ParticipantB +end box + +== Self-Description creation == + +ParticipantA -> IdentityHub ++: Send claims +activate ParticipantA +deactivate ParticipantA +group Option A: self-signing + autonumber 2 + IdentityHub -> IdentityHub: Normalize (canonize)\nand compute hash + IdentityHub -> IdentityHub: Sign hash and\ncreate VC (claims + proof) +end +group Option B: notarization officer (trust anchor) + autonumber 2 + IdentityHub -> TrustAnchor ++: Send claims + return VC (claims + proof) +end +IdentityHub -> GaiaX ++: send VC +return compliance credential (another VC) +IdentityHub -> VcStore ++: store both VCs + +== Self-Description presentation == + +ParticipantB -> IdentityHub : request Participant A \nsigned self-description +activate ParticipantB +group self-description aggregation + IdentityHub -> VcStore : retrieve VCs + VcStore --> IdentityHub : self-description and compliance credential +end +IdentityHub --> ParticipantB : complete self-description +@enduml \ No newline at end of file diff --git a/docs/developer/decision-records/README.md b/docs/developer/decision-records/README.md index c9ee51d..7d6f878 100644 --- a/docs/developer/decision-records/README.md +++ b/docs/developer/decision-records/README.md @@ -1 +1,3 @@ -# Decision Records \ No newline at end of file +# Decision Records + +- [2023-01-03 Gaia-X Participant Self-Description](2023-01-03-gaiax-participant-self-description/) \ No newline at end of file