From cc7fe89330f19a9d1564a3ecbaafe90aa575452e Mon Sep 17 00:00:00 2001 From: grim Date: Wed, 22 Oct 2025 20:14:50 +0200 Subject: [PATCH] SubjectValidator validates for supported attributes and OID --- BuildOutput/bin/Debug/net9.0/certmgr.dll | Bin 126464 -> 126464 bytes BuildOutput/bin/Debug/net9.0/certmgr.exe | Bin 156160 -> 156160 bytes BuildOutput/bin/Debug/net9.0/certmgr.pdb | Bin 65692 -> 66936 bytes certmgr/CertGen/CertificateGeneratorBase.cs | 18 +- certmgr/CertGen/EcdsaCertificateGenerator.cs | 10 +- certmgr/CertGen/RsaCertificateGenerator.cs | 10 +- certmgr/CertGen/Utils/SubjectValidator.cs | 211 +++++++++++++++++- .../Utils/{AsyncResult.cs => AsyncResultT.cs} | 15 ++ certmgr/Program.cs | 32 +-- certmgrTest/SubjectValidatorTest.cs | 21 ++ certmgrTest/certmgrTest.csproj | 19 ++ 11 files changed, 302 insertions(+), 34 deletions(-) rename certmgr/Core/Utils/{AsyncResult.cs => AsyncResultT.cs} (57%) create mode 100644 certmgrTest/SubjectValidatorTest.cs create mode 100644 certmgrTest/certmgrTest.csproj diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.dll b/BuildOutput/bin/Debug/net9.0/certmgr.dll index 52c1c9035c571ed596467d55e8937d79880315a5..0503a3e9fb02f8fa263849a100a3be91895ea10c 100644 GIT binary patch literal 126464 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 B-?ab$ literal 126464 zcmb@v2Y6h?)&D=byV{jjb+yt;F4(fM?2A^C8#a=$!Sr5ChtLTD(=O}+Nm#Ejqz6Mn zLIN=f1P9WAbW#bayvdv5R8qj{$(v4kLf$C<&-cu|yDMXoy#MFt$GS6f=FFKhXJ*cv zse8;BuXHKrT$;as{?oY+;_Bae`~K_C7NWc7f4JMdulid^xnk4FD=92s&5L(Ro1?aGG3FHS+*~6Av&C0J@9^mJ6P`$6bD6Ormnu`hE6aI4AvmSzR7n6d^2>Dg1>wnH4o$aoWT&VqMUYLV zknT%|rw}tXs|i5TTu3gZ;&e-?Ww5J#>^SJJ68!`C4Bp&LqZlbRQj8dl@$};UQh#_l zsSB-rt<%LL$R;|2;K+Dparq{aZjae=ldm@(nwcA%ZYgB)nW-B+dtG9$t*z5QKx|-;YeX@?BQH11%J9gimw* zhUbY^cgf|u>1%=8AK@XIeC6}Lzn)KY?Ezr)*LTTD)sT?7?fr5#DT=;GOQG8;5I&m} zqt+Ky5tLGG?LvT&Dyyr#qpu}=4#Bab@u*RCwhc}!D!I0yiJ&wYqt@G&no{LR@lsk5 z$61}wK0?)FvL`4mCCSm z0lnx5Rp3>k(3Wo-Q|w?IdvL0JVm-1w-)@mZapaOz`K)@R+M80&iX(IQJx85Bn$ollRgs}sG4B#GikP`#EIN7SYzwm0YZ9YpRX zKfotb{>jYjO!g;P`7J|=Xclqo>#10hNa6~=_pE@aIe~F5L*@epSUm0 zkJ%V3-%3jBuuX-dvy2`Xq|)JL$@lpPje0pWNVggw6<+5d*TrL_WAsAfrh{}1b&?KR zYm9km4Q_(U6vjNo+_=(AR=M(FFf%J2-t(>7M+Wm9 zk(y31ynyfak)eD#_J(f(KxyXGN#)b|Y`(1$0*`KnCTvgMCFb+3<1;wWfVLL3-anlx zbmzOr^7yTbBsAx_^5Za)sEb|mgrG0d<>aCw_2hfTR=e`DbQALlpA>;|4DA?`V!nk0 zGx?{N44&52-ge8z{qLD((p3H!M3Ri-ntKJQw%&lrv)xybA9H)D`(7JEMkpgaG4Im- z8+?*fpEI$dR$FPS8(jK$3frlE53a_YU*XbgElq3xhE#6y?Ld&+E6I#%zs-kkCDfUT zUWL=uzN3_s!4E-Fu&dpU@dVmd+!nnWOl!5>E=_ntYun(q4d`z|cv=Ob(k9z?EJ;!| zhO>pcqa~%<=4q9d8i(o#>LBU}V|}R|6ureHYY^23x^vC)fBy5Il-hTfc4XB)ItRU^ zDF9kZJt7rR$lQj(oO_}hXr~+2Ohf7rDOWnatmz%qu3zLsK0cBQuH zH6-;lxuLIRFb2L>^!i$c;^6HBrQHTf!7UrD0*Rbuk>MR4b+)X$QuI1Pi(OmfQ)Cuv zQo*=i#QZoY-CD`e^DGR8D4pb(b8*u5~8&o*&FKpYtDXq%DDX9iD`vdFjIvT?=x zF(^>M&22p$B8k$5Vs2+g`&hO;nnx=4xZ6qDz03~Sn|ea*^ZEM&e|?Auomu}!P{L#| zqzw`{ipr3!G)&m*|A%37*M=P4Nj|3D&#tSiR1F#$V+zt*qVZj5KpXqd+dQ=9PFMaW z^eR~Ix$7!#5S1XJljp|f2iA1Q1_NuYY8Ae}S^J_@bheEZFm`VRxwx$>(;nT8j~s&N zjd%*_VxhHkE;^)jTOor&@YIIzsPR9YoEcYp3DHw5v}N*b(LJJ0HAyjcI6>lE&>7SO z>O7yOCho`-D1AP*bD0lFe)-BT{5XX5n5!*qq2mU%RdP}_X0aNFmdk0at&r25uB|k; zwYIn1f!c(eO-hLRh9EfEQ3qedz{Kznmx}U)P(M^3V~P(loRk*&u_UM} zWj^gwB_m!(T`#U+NHO&l+v5AppRRlliX%a-2Yyg!a~RLw1}_8Rh2cOAD10kyq9vwV zsP|!4{ynXxp;m=q2FLcwVmiciZs)=-*Z#~%C@Urd*GSVb1W%_D^KykNpP6x24kZ&( z%i0qj8Eh!V=B%zpcbhtYEgk1ZQ^9|98{i5s-ON`Dx#rbT6o<|^&IDR ztV()o)8$)2NnpttlcQ+z;VajnIWQ7_X1f8jffe=)YZ( z!)v!I29<9j$F51K$pE_=5jPA(v7C0<93%RJVoio*!3}1jcM*yc(zfCOe~gG%5wT-s zQlLa@TA7$5CTh+nEnPywH;QhS(YAD?46kj4b_Ur*ZMHuXJ(+(n0_LrxFK&wo&Z68X zNQSq376ti0Qo53BXR6}Y=rj*`H;FXUFc<#kEX%rUpQgRc zPP%6J9%UDsk%Ou6RDY>6)dZ|hJ!GtjO0%&x!s^s}Nx!{fnjk>My^mmQP$m7iqtl(G zeq3Kud~Fls1N6F}wcF3RYIJc8b@V!$Hz`u35?HRmvD4CS8D;b1=71YMKhXA5LrZz4Yjcpei@|0FcoKd|>kdbk&jZ!Nr@`iV0zfaqL;$H?Iwi-aGJ_z_EucP17{ZT zkBuTKMhjh~km8jrO+$uv)vIrCu<|gB*3cyBAgKHa0wMlVjp~-3$++jh8^#lTwJN0O z>P||I`cQN^9c|~wkXD9MxO)_GOf%FYoR1$BASaJ zQL;97pt{0m0nvsY#ZjA4P_Bio?VJEl*lo=5j*x7^{{n+n^DHl~jRyN1FlKurSE^0lvh@BN03dilt7OJ)hKlC?8uB| zGqH7P`b~W%pk>clDBX(C$O#DHLWiORyn(9$s~dh-`xVq|>Q;>};g zGoASo-^!N-+oG7xHZ*!S4LVrd+M5od9l#jcBjn&`*{8Wwx;^>|!RV{{e2vfIIKH*C z98|>>un#RsYl_)px;tHJY4xb7G$vmoB}2I^!EvNM!-PgeHogaLgS+@cjWQk#e4&-m z+q8^y8Q0H%we;yi)KX|B5n)>)Jwu9&Z(fG8-Q3llzQ#L-WVdG%eJ{a3kgK7xi}peE^|}yJ^CzNjNE!lH@f5u?|J>-CLVBzTbFIe=qHh80EW-aNBW`gzuz`j} z$@yb3t+sr68!Js#6j0Fd3{6aTr_;8G@wwFe{bJ10@oqESJ{|OBqi;jj<~m(2#k9sM z$(1Ht+AQmT$9RmdwZ=K<&~35X|9p5-3=BplP>@sjAc?ZEp{2qpl^4~xh5}B z1hx#^l*V!?)|ustXO@U9lbvo!tbCthk`%7kNxNh6_8pk7e3wrbLRSOC*gqkk^9`%R z1Y?@bX(b}-82CC%%iHrEeVx(cLf4{1zXOo(96W8L&>1}e6b?EC8;o{Zi0Okh z(ee9sb}^>55kvuL_LlOQ_LNS}_xMbESt_V!n$PDg)6+Xkd$;F%qwgupzI@-;OR;38Odhn1_x1fjq&Z|+e5xRNxvQ+Yma_F%;q2Ru_5J0c&0Ny z=3DuRU|SRu!lnt6hEQK$Z=uHruIkSDj+Uk5f6|?QLW}t|7rX@6i0Uvka8fZBTyrQA zG*jGcp;R{dDU?rQE??R|xaJi4URS&9DVagtF4e9@Bp*E-Tyq#{)eM9nlTB@`HTqeM zk*uoub&|i3?_%<;{14GN4C0^Tx*e)OZ}`29Fl~YEw7`{X=+s7>w>H8%!Kgf+&vnI) zM&ypIbyMpX#IX`cdl0*$E;W`--BO%RsllnW4!BfiI`d1B`4yiK>6beAJHutFV#jJW zWLkjQaw%_;t&&OhCb4N|SrbZ*)qvbN`3%{0eKt^dwN1+40Ic^t(;a8|u)XH9>E!Lx0-@eN`R$w(JI* zBe&b?&_WaRHFfA7O;8k`x6;ddH9>E$L-%Qd-cg4h)C7H99eQFD^m%pYSxwMwb?Bu{ zP#QtZ!!=FN?mG1P26T&*;OM-ekTzdm|2~&?7@7|2Z0pDlo_W&<#=lx#*7unHBy?fj?WIGuT>$O1#(AC0kqe*D$2$FW554_HL^y zc9gmU+kVkJBV$&8`XzlsYBtYeVn|<6SFnjyv9r{>c~5Ec=&#Bv6WhxF0sSkQ=`T>R zM4wKN9{wA&=<%J5icjHXKbfXyjDzAJD7|l6B)>*3fp1)^BAMuO`>BxS02JDmY8f6(*)p zPQ^>Ro$1AH=lRgr%3m((6f{$s#8U2(SBuvXtHVel7;n#esc3Z5GAX2bSSYn3My%*z zf0B+dE;s&hER2j=Wn$ULQfgy;VE^Z^x*wRF7BQh>(J|MQKC_t>$7TTS4~3QQKvDVj zv&?m_b!ll|o!C0$Hg9uCpB+V!msd;{q!wWXeHFNqahEB->(TD%{%`@E zNz0a6E$z}&e-o{P?YGkM&1iTQ*dkiE_7R8N^^D2sa2CPEO?d4=Wj3H#-I`9!lgD!3 zCm6Ca6^@_zNwx8ia#!Q7uy{YoqDC$XqB&66jCxN`2dExkCkD}6WoDeRB#-(mkpNzZ zT+4|G(XIg>|;sRJNoh~O`%rZvvSYisMNj=&ZJZQ|=ov{l6os**%wO(<6!<$r^xDe=Ui zxOzD+R=z>)QaP#GMmgyk6H4*K!4`ND20YQ<;Yoo8PrjUML^Iz+^BkoMYUj&I)y|cZ zuAL`mpmw&LO~QaC)d)=m8Z^`Hpn5sC>{8C?W-6a0q2?vD=$5C!8pW?KZT<(xN1B&y z>2lV-j-h|6>(vCHebHQP!PDYdyt1&`atA!`iyYi$G(*}i4$g$54eIbf`xhQR7|(82 zR4L06@*Nb#(w;q7xn1pC#ERZ4BprGQ6=6K>rRH{|j=?Bh0|Z|drMVD&&#e_-sqyxp zSQ#ZrsVyj`DkXfLO>3{3xEfwCXh;^d!VUJLcHS=PqbuA{b6{3;VD^lFPU<9Sg8q8I z_Ps79pLL#}?C=%>rPg6tMKc!UvgOZP#gD;bIL;?xt1uTXl@D3x!gq=zTeZ7izQ8Zr zg%2n&W7R2Mb1J$+&-6NJRC?6#G*@hOn_*!;@zWDb7tuiebYU@CPByuKrIeW)>6xvX zTGhAEds5}6;51}|v$2uhlMdPF%*~1R_E5ir-qUK(SqZdxC*AsIN^_Wa%t*IJt4J)J zonpW!!q#eqgOussXdeYMk3pt^Cmr(0*gR2e-gqX<(0BX<&X&uGBj> zSL&QiGh>ZBJxdMACOi`rb*3%iZS<1*O10Nw;bRc2t%DP-2q*4-3hOAcd8EVA>NBwp z?C+8e+#j4ET+i1QgZ<>=X8YGSyh$Cb7j}Yt{dODrnvaIRu93`6%?J{gA^{iVxIF zk*YOgb*H=i$+Vi#IDU4xuql|3*XtodshiIx5wy8KW%1GU5CY*G|T95zwn3WP`S@n>O0i?);3Sys_Hp9-lRg&$f+ z%SqLakuy-k;DDB*pvAZiEd}c5YFo`tU`(KW+YSu|iPv1}zp^2oDNc4|5{FnS^@NNH z47YZOUTs{w9xPrNaO=D>I*V6EXYtCAEnZKSvq@3#%5V&?3ex`14n&GvWN>@}3 zUdgKMHsS_%iSy;~>4-Zt@R}HyEc|Y(`-)fg{}H9)GZ6Y9e_cfEuYnGedZ?2 zUNa65Vd;EuF9*J>j<>XR74M1EPf0a6tDlYXESt6g=Jk4rnZr)HEA2@pPm+lzW274- zVpdYNmF`b&|1c<@(&Mg7(a*(fDdRPMJ=~GCSXAZNvZs|-^zJnOI9If{8 zAE-JEbLnNRim8oK+m0s1-1_@aVe#|^#BD3bJJ8(miNNRw#4XM=3bF&!VV5|@(l{L^ z=gc^pCpEQa48&XwCN#;E-a8&1juH>7p;ZM>MHr9TmmGGjG_^r?Ck>pg>`6u-OiOu0oDlGRod>YYi)!thj;A*NLAScw6(Y%b{&y+K;(KMaGP zt6sGET(5DRDYyk((&X)EieKta+gU=)2abAfr%fg2RGTIa@p%-F&q0FZkkRAhah>=f zzvoCcJ6CqPw(>HS5v?_0T1$cONs(JFIY`6CoLIfs=Tk*%0`GO5AvDst}3wAsNM z+nVWhZC6_}Sqgg`ch2>Pu`fROTqcDEcFhfBHlZVQr=S8DNh~9k^$zOxYQt2URo$N8 z@vc#u$;{srE*EBYAYR^L#bPfSPROcAiG{55`dl#^UJHS)K9?Ol&7b8@w`+$|+lJ+R z^XNg*3YlP(#)HxxIszSpf27(}c&&4_d77P^9yQ`xp-D1e#VhWsuWoVfM3Zy>h9OpR zJ!f6*a3(^CcZyNfxt^9{yKz)#?P=i%v9Z+2rIx?Ig)p_T)y^7GBAp}8xLG6`b>-J2@uYt= z@rTz@#-`)mhzPp_Nu^L%eau?MnFZLiAX|A6^|xWLfW4jXQje&{ZOETdImx#n=B|F7 z1%yq8Kry9fu%flTr}jvd=EfOoYQ(dQDo(YG%3Yt#^gu|4oIq#pOB0{$AXR+Pg=R<3 zRE-XvZk64Uib&nsGP%B#FMmlwgm)iu?Xfgq!0tD^5W4Q^!>{Dr>X?4H zQzYl|f2)$2O_lsXc^2#{tj1@UscAX;hZNqHvj+<4_VS;=ja~#@>nd3{#5#7V*k1m7 z9j-%qY*g5NhayYs+7sb83hM=~ef~NYyI-u-)T1KRJLa;1o{lgEkv5yG6*gfqS|VpC zDqWzXzk{dIGu5usKsE?l(9`W`1+~)JZVd!#Iv6laJcouoz3xoDGv8fdf2U5dm-EG) z&3RC@$@=&J>*M8rQj$d1ax@1%Y@m#95oE%BV4~22hfmWcG#6wn4X5e0ia@5-6G9al z4Gg4brqODYo{^9d)WEMo$h89ae)%fso~HH^gaJY^LYj?_ar!blI5ALKQ$D9pli?O( zLvL1`Q+`Dq%vyR!@Ha`6)O6^McNsvz8E+|ssD z$h7USA38JxOzKkDC%>AC;^d;={rzY206>|0fO!C*bv(d40BG_aU>*RpGY>G2Z+~}D z4rGtM+NZ#DiK~;?DRWTvb~PjjdtqdQ?qznvRuC2l&RnA<(%&%&LUx6D>2DbY(N13)!@1A=DGVM3AoE5^TP~@p^DrBzXf)Y?Cp# zx-(VQ@GgK>Wk^MMlCVcq9Wu{$XMtC_TWFc^jX1S?_+Z0smy@c!NlvO;am7v-huY<{5gh{R{ON6hVeekrny4VTS3H7qM>uC zk6hR~?l+-BYuCDIcs~hQp?mPsd=Ot}_%6P>K)NTW{Co1_;k$u!)#0g#)yPcv z9-+}`<09MWcB~8ED{z(tPr<|YDb&^$i{kx+@@*Q8ve5?=)9!+Ndp3FqKZmKiWW91= zd!CB>xQ?L-H~OH(x}5`ATPhsu^lq|)74A!=B-dPQ-!*VAaow*;&Uf{?d*7!k8wi#$ z9MQUSP2MT3=w`wXiMkG2e;7|k70M zkQ_Wl9|aNm9xJ+xXf9uDJ|P0B zXg@I`(_k)Jk&5@AVzF5HWE~B>_2B7@fDGN)byR~^KGi_X#zw1OgFeq)`^F87VTpbgfaV=KEhn3m6B+67QGnrp8LHu`l}&Ad zE(t!T1lUeWAd`u6amQ0_i6w%}-a|u@v^Y<{2gSKgRrGnKYA?UJ8MEC^>0?&b6V%7i zIOSqDJ$tb$|B+O_`z9Bw{67E7-PEUC`XKA7_#bs$s8l;AG6t)xp>lS)^XA)t<--4l z0k(lN(HHROG%q(avPomM?Q}289@jZ1SW8^50K|`lxO)c zFl7tCh1ml8fft0**6|Jb@GH=69@+;(k0Tuz?hm@z1s*1z^isxGNwf8}G;lKoeB4^% zo@P+Yj)_SRJuPxhxE}Jh2x~oIA{b1CUxT!kIVndA1#k||Wm6v^cD_!ex9}97vbC9u z6`!Kje1k~c`>ET2fhnhrK0bV`9^+}#hIIZ{^JrF-Zat!|zr9JmnKpYYL;1F>zn8r z-F1^3cEbu(Y(y$`4(3X;hS=a^KaV+*P@k5wwU6bb@H!zqD4oEbOU86UQzF}a$(UWy z*r`9T-g8;~6N5DR#DziM8_Z+%v$&qmWxM9X&>R#0JltEQP6R`#@NtAUqy8`V)DZ9X|bIP%9Z8~yJ3ZC1NF4_h)T1CwmBGTw1KPRHgKkjS#JY^CT)P( zguBvs-Gz%8)!$F`_fq|xsi);(0t(8t zu;r6-3vhiti-y$37@55t6NKlgko9Ue{J{3CuJZC0s>iDQP&I}ED^ksKq8|~mX+)f+ z4|i`%lez|t8ida#Wvn2i9~kER9)-qH%yc_(yw>xQGRw*qKp90XhS5r_rOZZ~6aJXo zu;pzvnv=?Djqs^bBcm(BPra8^>L?f^KUG;KH-eLiex{OO7+pg% z>1^B0(=%7QzM$#p89NiExwEq4Z5|)B%gZm`VErFRFJ`^imDeEn#6Wt6B=zg9lRJ=A z+ioAFxe8YNOEV#b<0b;(RLC^4JHwKoou%y!HnCr(qdY>B&nCrDlPl8N|QlN zrSU4n^Wf80npW-;R)&(OUFbH1>RFjlX)(23lGItzYc#&n)I1uM*78h6-KEk}bxORC zrU{dmdrJ2cWDa<_GuCj&o4YG~908-_J;cQfW>zwA(a+z2~===@P5^RP+mV z*W^xuzhjC%)_Rk*jb9SIm7(q#?wD#`Xqrf4&@g52y3p@2)*II@Yf0jrRhw96rQ=%< zgPo<})L2HB6Zr5SmEvIU0T@v6Ie(?qxK7h#JRDCIOCzbxzk*4-Gxcjc)0yA! zt^8K7Es6;bRPq_Sl+6SD^|4krm-%#?y94^y8vW!Bhn|G0P}E}ip;@s_+ISMGgXgDQ zs`5Ls>hx%Xb|A(dK|neCXSh0c9@14O^KHl^d!VVt#B5}+J$em|*;b<118t8mKbh$@ z5kWWmeaw*3l{0d}Z-|$}76gfJ(@{~aSbZs1n zowLKg6XlWpjq~V#0gPU|d$`UHw-ghCGfC~r=7GEL5})p!ndr#oe0p!!1E8-sLE3QE_xV1CEVfO(LyymU5C zERGD8&og(Z{E)e`%0Du9cDa3y;^&kXm^-(8jJbQ1tLDxt-)Zjr_VTB^Cs%HtOA34G zGnjQrcq3x2{DV*JC2-(82NwkudSa&bQb0k~e_w2VAw|=mN8=zAqkrP<;(-T7lboKU z@k+{yEWrowdVgUG9nPbf=)I*v?>+oaq5Zm^r~fk`!vZ zewwSjTm*uuoZ8Feuj<>e^MFioX@5`^M`NAdjn@_mt-<_hpMSpdjF#SFN^OmU`%OD_p0w@Mqe8gYqyBoV(k@j25YaB z(^xLwN>FBF;@+(ALOPpyh)`++m?lB4KwJGW-eYW z1P~MVwj_ahh!DQzVIBb65`cLC+?fE(1K{-uz&rrnkO0gB;I0H<9sqYI0P_HNV*)S_ zfO`^vd0tFOL>;k;W?;K!HQ_com~7IYGw`tD&Y2T*oj*g8(}TCA4oiVz{sj84t9^5p z%C@nh4bOCjni}qjMmveQ;eZ$BU=0O^O;*8NwN)n9n%BK zJ>OBRbb(dqoIDY>LXPt1Dm?fUx{8JF$-mIB@?H7vZFcV{JPKlk z-h3}3VWF5Wje zoFF;2S%WLIPcr#Il5Nq6g3is)t$vsV!&%hn9{D}6?YNvaxB4+aURaYK1U*Kgwmf!x z++kjR-qamNZEkeDsLe;P^ZSOQadM|d3yboLFh<+T7pWfRRzCvO@=In`#^hT`~?X>jcQoW)`m+VQdn3l z>{*Ib?30xd_t6$xArtibK(Amc@;(PXn=BTVl;-D`*j%v?&g3Z{dWMLe&uBXSEp`Kz zup6)>*8llEX+wJ|w^PWCh&}TQr+IIpSlBDS*P3hD$Op23GXbOd(XrFo`bzT`4~5Ig zy{}ZhUGiCh-}RMZnT0ETu>6+hxCL5-ErC`3auYb@S<$$iTP>fY;*RCV*0k#>LiQ_G z6JHpg{0NPpZ#>*bp$V6t@M3%mh4%+rhA8nwqZT6iqN-G7Sejotws~ffDUn&0UsgYG zx;(#p>~xo3mJr^Zd{-df6<)q8XXch)8OwJ?L%u5ztW{4hQ(<*}_0$d!T^y@(ETzIe`F*tAF`1tn8%|=fcIiI9 zPqZ(YOJtnLxxJCl?Bnv!RUQANU5xFKWG4-|0}h*1pCmbzpW2mnxDHgCn0WG~eW77Z z{BG)|uqMA|Y)M=BZ)8y(*@IpcM@lV*`;j!#fH4k*p0>>8 z2TT`lY*cf?rG)EW#5yQ{(Abn1Q?B{-_CiF6X2}%}hWNq7Xbg&qmv)Kk@?bA#9gLkB zu|AIAy%5+{%PxUHNixP=;gFf=ha~7brwWIn^Y)^4d=;(r^;fT=@;<7#Lv0Qf9xCQv zjuFfDlvRRNSmY~g-x(EVH@Q=V!}5nsb*To}zE!WxXEq;((=;|6PB0#K6ce5V>nNMU z^M{YI+O>|{eU8P#5tH|*=6F8hh&R0e$&OTyBthZG>QQoz(qM2zbTt0_k$#j{y%dhl z9~lep=(x~3PbnPZq{q7IdhB|#sq3+$qPMGoCJIXesK*`S1rh7GX8nag@<*UakH{ZE z**7lj!u4hL%JkU$v1`_&0C*%JhU>MO)T@TB(c|3V7Z03{IP?HTc6x&dxzSQPpA-f@)SXHc>bYiZ%13vB7w%(tzd;jhS zxLp!6|Fq^c(CXm_;5Nfw$!PT@;?D-&BV_&w|GC1W!e7W*b2EGvhCdD39fF&{mFBD9 z%>n<{z_o6z`GDxW0l0?iRc$lzKR~!d{10$XiSY}Zm)=66>!<=(IgWDXiX2?flfh>K z_Rl=>?jdVkdoglupjV8{s>zZV$){@?=;fLjfn|V}#Li)p*-q%0ZnQHDyj{>SiNTx1 z__KQ~VNLxAK7h_&XYUkgDUt(uGAY>CpL(f}EHb`6MqOd;rrA5!TXS8UsN>I$+~vFC zLwFrAf5n);T+E-nP&^c44|(L;M`igK%e$1SBTm)PR4QJ*O$wh7uNPjs`Oi$8o3A}o z1rn*BO~krN8{kk;1hth(L;y>wl9 zIgvqmgHSY)iTMcM0rie-c$4Jc(-LCS$`oX=sB17@B?`88u;)qKsl?5SPUGu$ zij>w-4{FGqe|ivJNY}@UzVE_YIbDd8Kae!yr+ypHRr*JN?d?#y1FQS}q`H+61zdTZ!kyYt{ zgunPH;<~9*e^gT^l=8c9SjrXqJ+Iok(pogrJNp+j&MJ@ZA2gJ}_|m}o-{8co*t0AZ zlsXKXo1B!0fK)~tXhBs33_5xft&?$Pv*g^g)?kx9_DViNt@=SfTmGDC7%iTQ&f-)4 za#G<*e9Qa>ZmRCb9-9q13j^uNfEwkv*fv%SSj@6@0d_dFE?{kH@^Q*o9v~?vsOn}9 zy(D9E{jn8zG=1X9V~OBwFwG1*2hVioT)y!Vfnxj;!Fe-r&KJ(GU|SU9mk2JHiSumX_$30x*b+f! zTX-ssRENr^exnxUC6ZL(Rfxs=d4c>w60w?tuFyL?&k=EN=Jj|puQxkqc15#K{eDdO zCX&XsnHFc7?6%JGtDEC`Y_^k#2h{tYRx?eJ?`W!@-bkV5`biL*gbb^iTdz4nGdvcd znErJq^ShaaeOI_iYw$9JMzih_Tb^K2WD#Ry8iuTjF0P)OHkd;+MTU`w@$uE z0u46Z3nV_cSy=(YHMDj*m|v{DMQ+tX)%%2WA&f?ISdZ2U^hHQ=ytDD+QKg|^H&_>g z73~XE)}TdcFk06Llz*Zk`SVsyX$$1Ql(egTY7aUf0b8x_7Ii)ub3T$9Jt$Hw`GkP&V0&j>06ImkF z@I19eGS%}SGox)WsP=X;C@m*a9$U1i(V>*JYR}HB230|#i^*d#XXh+F##c)o|721u zkx;RWRJ~XV#pF76E}(R5Ay_T+`-W#VfVR2{IZ^!GMrXsaVn^Kp&!!}l=5zc#%HJ!g zuI4?1_XC^e@4dk1;wEzhZg#o@3DbyY;3FsZa$vXew;;xEx?ainlXag;zjq&*9rj#PW>LdBtWLUgr} z@HvvJej==3KO4nH&~))&NZMVmru|F0peRQjB;2}~W*T3ZN%E$CGPU=B;du$F7%KJ( z8r`IVM6H`#EsxsuHF)A~qLQkcd{nNw3Dy=Ubd%Gqn|zQlIjAaD-9+y6z%5BPvBc1O zF7#^Dh<2Ie)ZQz9zXw&8)1GSY6Qt_D7F+e)ich`w0iVwkd-`#+=gX7jSo3wB&p|e{ zJfGRx$3&;jXBIxsFg|;YPsP&kHp!hHz}E8J+4GqVtK#z^Q3$GXY9Ell-#{)ibo$_G z?H(RQf$J3-4I)`}FwNW8)UfJSvRTbYw9HJjNz^|mie8<42rpD8IFFE-HNoRArE?~K z2LZ?{DyRxKtdYuBSF{#YdcT^fZPp`i*qkt65Z%SGmDz=X7z$TOw?>wUzb<246%utomFS6v-a^B zY<0rcna0-h=pjK>u?2Q1|kbT>{NICf%WDZQ?*(r+g^c`6mGxeny5I{kW`%9c+>_%Az`ZK>PlX% zL8x*YsMfTs9hKj*0E>j`DTOaU z)08r!6BW*XXSO^-N!ikjcj8A=(Q&?Z8Zh)}#@$L@H<&*CBne{M!A8+iEA$s z`gPS2fVKYu=D3H>uJ;$@4XSd=ze9k@NwlVf{xnDY{C!nvvEZ2{jkxmih5srA3N&*a zEPRF}F+F6JsZ8>zG2#I9-_PQY_61suUW`Odi@ro2Y0;PBiM6Q8CoTF_x$2ys!ed(W zEb9dtd4j59rA6gV54#YAmwUb6osHFr}laI`#q?tfF8!qL??#psH{A5hN0rkRnDB%&9uT&7UCN%>GC4OlQ7K700jbD@H%k z=wG4tZ_Igmy0XJLL0GNRiB5xVZ3jt8=K+@|x=CgF3O9opHJ<+nBmzY}$#Y~?8%zC2#i50l4x5Dy~aG{I* znc9C_0)69OJkw&v2qo|lYG{qtsN!#rwo*<`P42@pK9FgsqdNKc)WDL zOvlc>JJrdpLG)W^p!%&P_9uNs_!v#5><+tc*IBKmcSzrADpnRZmhr7?DHw0{3Jgwte4p-Xg-%??hN@}=ib zE+v=A>-2eBLD2R^Dyb@QF7VNs@*o-no zf&5gCx*MH_JM?t0bF43Jgo~i6SOz3H(*v(dx}qh8+N+>edt3y9s+`()Sx76%Q!hs-OlFpg`zMs5>c7S}(uMC=L)mPb+vLeGPQFH*9~#KWvF!7i z+Rv1>&Uyyc&o$N`fPPR_taOar>48I&FF5QU&Br}jPh`wirFo>S-u@*TAw0)v#C zUB-o(h25@UMRTQpkLfJ{ZZs+X?~6Y6nq+ddEALA+H#)l*GWD65-&JGL#3Wk-F}+^W zk+p<$Z9yWu3l9}6YsrhLQxCQ`iK!DYoo{0LB3&WS`{`ya$(R~NRxL*&gQ`j%y%FMD_oYq6C6u)ziaXEu z;{OSLSN=0Z8%k~_(cO{>s!CXX&dBbi*|5P(p8Zw}C5|)SH6y{UHT)K^2*ce5T1=rBOSMM^glpO zPQN93_RZAn+vsh_1$L*_^ejR5VZ!~yeTlA38>qvx_}_%4dOLp%O0oUbe2L;0Vk}+z zC63OYDJa*%b=%DBu&vO3f$8I4frK5V83_xOrQGDpAw9VP9=P^a!!%Pn`m>y%`bRm{ z-|*Er;Y{r>7Jia1?|89PMv|v*mzz#kD*8etqI8 zf&GF|by7wmD1!N=ioaW;m?s5-s^>@91=T3o(HYWG2{_7Bkss&Z=oEB_{Wrw867 z>`j7%Zx$OmH9rfIDsl{e3vhoffV>PfPS#)Z#j-Nb$4*)EckQ9a3rT{?va#5CiDjb@ ze2BcSwLz;x^#qfBzX^Mi>9q>xE3__lKP3D|VzdFv=7^^rXI{15P*rEByp{Yqc7_aHXbCHP+)Mg>uds&1F8$lUi%-Qq6IM2S zyO2hcGqE%k#G@W_KW^M(M3^4aAxAw1TO!@39`kJL zF&{PRilxWMnI3p^(qk+s)EO`QruGQ*KcJc-yi=)ASp;IsXNHs{+ z0&Oflx9Z6kYkAS^j1j%$JU_Pu6x_;KJZIG3H{FL~ zzPK)f`O_;gE+jvb0`pG3M!nOAR%_gQ5Eds7n{=$!s1KXQRP}Hr;@9)|>M0QV*}oc@ zR4Dq{m>l)90X){vo@4#&bYoJn^fNh4Bado1Wvc@upqNPT3Qx&+e# z#`xV9bc`(qN$GU*#~L@C*-dhq(oNE+Bq0?ig01*Rj&1c}lSMVf>Cu`@ZN4&Yf;Q}D zBSMqTY!BauV6X0ia&1`XCbZ}=qHJoyHat;5Riuj1`@z*+n@nwi;p*#gwJQ4wP+`!> zY_cM1eDI==4l&Vx0D!HmJ|vGOF(1Se&$>*2`CM&WwClppq2w+y;q$ZGkXNi$R^?6) zyd%+aUi!K4L(r@3DGEVVPHmz5{T^hk!xnFXs^HN{a0StR!xWYl86cHa2aFNm8=Bw>k3uG-9`#;ZgW4SD|ydGz-6Ci2ky&C8>A7kTv7 z`q$;=3N zT68x2h+;>Ry~bH|bc{roMKO|3{oe*^^^?SLTEt1dwL3O#j1xg!3zlEX=s(Xv#{-z=S)!-x!8JzZ$BmKy#ogbVo zHvRZ#Qv!-*aFWwBI9bwUa9Se*K~+v|O8!mqCWDh8^}%UuA4(*qgDSHZFfG<5Pis|Y z%mnHXFR?+B7=o|}Pt@p4p;JH1+OL7gSUCkYsn)J^r5%i@V3<22&lX zY5kawje=vGg7B4Z)0SfS?Q})Ie0?;PR$B|Qmrp#l2;db)`KO>Z#$6-p$6f3+KlBLM z|4y^DuV@yzCL5ifwkFloZ2aiE&N4J&!nWNtd&)l@sX_Tuc{;qeU}o(#GKh~`m(F(O ziLhC(G&t14R6Ps-%uL5K{3dc!-ihY&#Zy1>%=&JmK2@K^*}(*Bm~m(8uUUVwcFp;O zrdixGVb!M(cDGT&!rF9t+5L^SA@!IfmYE*&p6yRGVw>k}M|8 z%g_znYW@vk)el6Je~q*nRnKE|Ir^SIqG)fWFo$r@wKT~+<=>LjZf8$aevfy{dgW7} zK+f}Lsi z{e(#)9=`SVT{rFc70~0cQj*8x(<14klL*@n5XIgSvsZqL`m?aF-%dyt@lHm13i7_D zeNW^YJu2ba9*EW%v<0HQ8`}Xnz)o!`Gxlyyk)v${w4&d;*{Gpr=VqR_1j5FRoTkkW zrGt`fe$+SSmAwoHxs8o^g~B_j(2kw68O^X8EK|#h!=RsoDc%p93D1U~7nlanGM6ES zUj}=@2a+K_>mJ+bX3Hj+ImUY#zS3lPDtR``@L7ao8Jbrz94dMlo=IH15Gom-PB5qn z7*x;T`|o9_%#b0o3NORc@Yw#>C5a3bg$(61$x!K@CPQT`8Om+QP@$PJv`p<6vS!M# z0ssFa!!~y~?eJEU;o0QbkYN=?n~vyV+6w1vHIJ1&PRH;n@-=|3i)DBmG88Uvw%PYQ zrF#_!(SK8=YKC9HjhDNW2bRurI&!85-bHt@BQ};4 zYF~s}?E(>~>f5pNxiqqTYwg(t)P3ZZhewKTtULNTL4xRpi{PZG zPA(PGXrV@(+($uoUnjy1svGTliPF(ic3UUPgF1=is7@}%V|8*_Q=KT5I+4>#lqN*`3^)V?l%zXw$n&?L=PN-ashN3g7TxzitT zvPs(0qMOb#`S)3}?zTIVwc5Hl!jKe0D&GcT?GBSiV&PPt*mGHXaeuDYpODY-vhoq{Jv3$M={IPexix? z_5+dgqgVr;4Sy(b{Cl;%?yd*ifxh2o-Or!g-58d23y~k{l)lcmnaGs)b~a%KS1!iRdBU9}{Ep#Z2(>jZD7pH2EqP`O0b93AdzB zvz_pthyeS`IJKY3-(NFORe_G3CwTe(i~#cW3@WgTR25-AG`2nbA4?ZY)v~f5fI_Oi zotkaXfHxYbYy+J}zU#woGLh>qf4@7qrrf*1M5QCwm!LV~wt74qzTDJ_zTwwty1dnb zSCnI54R|^9jLZFVZw(DZ zkL3>2-ze)HRcT%YmdKsdPEh10PJ3kEMjz9{|_>sPt_8%Ks<%H_7YuOHdWWW=b797klk& zi8l!z<5BDht#kc8`+{|00y;_VM<2yT!hJG^C{86aO9Dzs_WIAH|AgbS?$j zu0mJe#5ek@h&4mF`2jrq8}R5UK9bkpabtOj67u?AAd=TT1Z@l}o4ouOrby%^XL{g6 ziM%W&#HIn){;BjqRZh*N@b`OARe|~#W=Z-zf@Ot(T0n>w8lM);ucj%sSvK!{@9xI1 zlzTDycALrOZrZ!argicg2uyYg@=0HFq&mZ!@o{s5ukG{dNjo2`Fid6i5Ivi!8#{77_~UX4pbT(8E-wSFqSYCv1_DUt`~JYz^J2;-f0 zhEU!N_f6raSW{p$Gx|-InI4qj(zSQVX|26mPItQY9&=l3?=_ce8gk=v-4i=rM7y!y zg;TyF08vj#0Fg3)c>sv00n7tH)D2)B0LsPy<^iDm3}7D0BiXIT)mla+1N*s5`EiuJ z{~_y4`B!y+kO>cCgcxhj%pZ>EA^hU_{95d>1r)olN;fwdg;{8&%73gUPX*x`l1FX8 z7pKbUu_O;7);2{9HAn161WQ%ZMb-~mEECUHs=T%tZGBVvGn*q0Y>L?29C7e75FQ+z z;A!V0h}AOJDM4zYCm3tz7ZZ*KL@jeO+y9;k4B5Z1o$~PGA<8I+cX+RpPrmPrutQL* z!iZb8xzl2Bmw{D(QFjx#$H1z^hzBK)UFN@(SNXlAjWbmPwj!KfU25WR;;m->y$ErALw;QY^VxQGe zMla8$?|Ggx-~Bu{z7Kj1d_VNL`o8FMvi|5szZy5z4fIX5%?+)A-pa|G&<#M1Z9_K@ zHLeZaJPe@5bi(K-xl04fP4~3hJfzg?-TCW^cG11K&7L0{JvOkb#`eHMq65z6u*%1w z(zIUvFu~E!a;FEkxT4@a+&m%}4Is!BseZ1~TiC}%MW9K2FF{7qSsJfIfdeN--vUik zrt80>owDBprhWh0G`r8)mO{Up4NNcD{_U|z!DuZOTWk_ z1VXP@M%VfjLn{-64>k~rqpMS?@M=cd3fr1FLUvag+gplcg%8=~=ux%;qzO6D^D>P; zN!dkyEwS+~Q(Ek@zx>jd9_fxag% z()UZlqFjS#b_osgy-~q0So&mV&Rw+bzWux1?X6$$%DDeo@RBg&BI9jQwr8~49i0_? z>r(MQVmPNR@7w2Yw`P@ic+DYy**D`pe`wEWpF4hq(x%hG|68hOwCMWMe^{DvOVY|~ zpY`JZsb#rCGj0zk!>wWd)i?=4mHN2S?aVEXoVsx`^slh zIV!omqfPK@=jq#T_4|bJw#B}i#{RPJLU-4p-`cm^t%QEgT{Us%x{SL4`7d^7&YCl} z*lpNH->I=VW25f0^qhk-uG{2)i{;o&S>Qj^_xXGDj83>ME0x!iR<6%1Q|XSi60N7T z%y#QWUwGJT_rP3z%ZEq;f27UKc89FGku`|Nm+AYeF2#PWQ{T_p_rt5?KO5=IcKeOU zzjUri&ua5Rlg#%QE8olEYK41rU-=)hR&;~qe&y69V-LD%xjT(eBy5At(@8TVt_&uaJUHTUhm z+Wq+O`}SY#E}<@R?o)@|xo)wWx1Z|e4(esGThDi)TebFE)ca|@s`u?{CHaS;yvCim z?xxlIxu5skzIdMd*{a(YPq?!_lGVk+wesIkQjNdH z>iU6o%H@Iis?EDv6?^osBv~~I_+`{L*K= zu6OQ}!wRKb3vu^PZC?F8LTL-Vw`=q29PfXjXo(q4!$u$EGh^Jw=>qyVspCe%b1c?jZLe3%z!|;tpcxNO9|0 zFI#;tzx@6wOE;LkZ1n`cE&f>x{Q;V*34PH*_e?3>k?w0Ir7x~g=qUG?QTf{V(Q7yI zdmG=j(CkCMympGvcdSIqCcaGEG5kW9%J;Ry6?Y784JuSx;zQrJbVbrV!V5(|w(_05 z;>&CG8`M9w&_B~Y^fTk-9O9;k`yUIrRv-GM(R}}k?{k{?IQLr%{gBXsgnnl&axX%M z68eM1-AL$2eu4VW7Wx#SV+sA$c=`4C^-DGqddlKHvHbcaQ-uC*p@{>0=pPp9+E1Yq zT)IUi>RI@%$s72!wU)GcdyxN^%>3(4OUE|KS(0>n!=JPGY z&u-6Eew*UZxA#$Kv%Ao!d@TJC{pfnfFMv{pKd>@w?BRHR#xaA zw73IlNmH!LJ=pRB(rslDGv&6sM=b7nZ9ep3GIriHGt^8Lzv+d>=A#c1J{$1U{24uv{fzGtEFoI?FA zKeNz1?Fvn_{Gug*<~LEXQ*Qs3UpMixzU6m@c^@j4UflAhrnrM!{$e4$`7z}VZF$N< z->}f(E&s4|cUb7i78ghozcN0LY6$}6_s}w>JDO0V?8mmW1uEZs!#uvF!$MbC8BT5K zw$S&i3}?6GE%Zt&!$mFqJ`OW<%3awqXdy4N=eEpl3SHl_hlMs-x|g&JTWB`AZOUzJ z+0#Ng;XdVVX<2Nc<;KhHEqht$0jr0*TgIBWen-pFU;y~HX+1}@+~2aoFf}?;w{hq$ ztJ?=#CW&+I@gcRB_qQBxm^-b7d^isMx5@h9mJ^zCc%B{h1bbTXD;9i~CLgOZi^X|0=%Q`d`ntec;V}pEWc)+v5H*@Gkr>>=XWn`{cjG z{73e^Z}^lgKkw|%EO2ivoYb|zec!&b`{n=MnumuMxOHp(i|_3Dg3K)l^J@Es1M>eW zKRdg?J+|(P;B*gvlkY>zzsq;-px`I=?~z^Z4x9Y(a3*s@S6k;PTb{r6H{^Kb9{L{9 ztM6+|zZqWc?)?9#d-M1xs_cFE-m31TvoD0~2_3SLK!7X|KoSy?01*%r+)>gd0iq!R z5)>3QEdfMuK^atpF_Gw?GKz{jqlpB>0rv$LMiT*-5x0@A%E*kr=R8$e7-zn}dEfW1 z7e4j$dCoca+;f+@Ro%5@(%*nn;(h{tm*EP`Rta&gz%VtpRB%J7P8zLVE#HaArRh>{ zX{=9DPt5X3K1t^_olAV#Epo%qKI^GC|D@RM=N zAj=HQ)$4t4K+YfQ1mrB3r2H}ye0|h0^uLda&R&z`qb7}$zB*~#0=&=Xc9DHufm;2^ zPjHR73DKTsf8K?etkqkX$y%jHi?x`T895rIIyujOh!TCDXHOd!lx;<}XT}P?mbq2@ zqwWKKM7%gsO0|WHzGEe$Hn% zv_uc1^=tFutHe}or}L-2ge=ObXQOQIF{bwMuh7x^83 znFBil1YZp}2K|gcsijbb0DskjYs@c!p}v0uwz+-*cKW@BJ#lKF8XSppKj+}S+Cv}@ z9~})W#EQ|EiS&G(5f8lHCw?&EyWGG@eyKpGzqIIEf6aZFO9u|oE>y&f652VV^gOg|I& z{jgZf#upOB=RT~Qec4J6d}YW?xZEcKwI{f)hsNJe_F}hxGvseMzNG;&zF!5bh32+E zL4PIqs}@{i-qx>Ar1pyGb3Nq$y~eFBsdtTe58}wo!CxsXxexN~A+qmG9VZz! znU4bfxWD+jo`f9ZC#~z5Y0p9KnQ7vG*pLzQ^W6jN^VcfK|6OQy`%BI{*cSi54JPCY#(7Qlubo%GK){yvb_{dls_m$aF?I(E_Fxz`LGpktRF9DLL^trYE$oxNn z`G1yn0)NC_kfc^;pByaue?XI~jbxDhe*arzAlCz=+Uftqums zY=1h`6(~Ll$&qS{8l2qM&qE>apO6Ra$$TtIy=@c#*O(r(t7k;S(-r&QdY&G0BBC{! zvcF&EBfVPhn#A~L{!1pO$Nz6i^Q=0=p{A^^e!hZh%qfHVY7zf?MvMQHaUb?en<|Smlzk7yHeJT)-7u;>c|IJX}`bzl108*ay#0S(hFe_#|3X7FnCz zvr@@d-={53KCkKGGQq#+2zI9|MlXF5Em$^5){`p|1iP`eB&ofH zS0aZM>DF9r!d#tZtO8!AS8=v~8WE|!@jC=;_7~ixW)F;1ql|ljQ+>LDuli1pj8tE_ z>VZiC_YRa+oF5&DU(&@hf}WZ1oax5b8JsJx82T(~+-NaZOW>YlL+v749sS`b`OT^Q zG={FgztygW3EOcuMXb%PpAZU9bO&wE=f9GS8y{@;ZvI=zPL*e~q|C!;`FNX+$oyRT z!Df?Ee@OOK(``00^`Btp+3dAc{}h+H)MkH49SAnxX7e(WQv6iC&6Z^j16yXZTg&UP zsyEr}q4FA8<84-$J0>MSZLnE+ZUNY4n~jdyZUn0PdTcSFxW@3X%^G9Jqy(uaY}OQ8 z0Jhs^@hBIpI&GGLa>43VoBbGFk`kicwV7YcSzujcooZO{MJb{9tzUYuQ!Ni(ni#I8 zk$KfW$5y8dP={^yZSWOf>8b2%j!}dfN!F>Rhb&8pP~rHA4`W1Il#1(Rp(;uZA={^h z2j7f8>H0^x5U5tdb2IL#dZCxKro{8_a9Fm7QU@}9;v zSrA~!P5M~4cVY_q$= z>hPP_Ofsu?FI94*j5T{SY^`LU`JG!@qc2sDoL25b%TwitzM6We`fD$HJ9V!5yUlJ3 z`#7~i1>x5O#8iI-t5j~X&vgE%&rq29PiDoeQOC(Pse8))ky^v+pK>SZJ!J#Z z7AiNds&2v_Ff46}Y9ia9ni6x<8r8;eQr{+ZqNpJ4Ds=&V(UOtAzV!UGtJNE1o7A~! z)oCl#JMu7_+7R6}>cN2P)O0)`igK>A<9(dhsS7NoJn{8u*QrjMeKu~LalQJkmn}_e zQYl3&rw;h7GrVeMFI$>+gKDzbkN)e7m1;*XTbkCa4%=+qly$}`bQv4=;jOIxR+%E;KF^=c&9CUtVq z#A*1%Wd{th_Dr8ooY((Gie*uT{in?&@*Y9)Gjh> z9PU!>WHOibr`@IAC$nO1RzKQIVs2KBDN?%?bF;d@W)gFY+CgT`rQeGi{_S&~iQ4;^ z0&Bq)GTQtk=6&jOn@Jn)Q^(0Z(^Bp}#z1{eX+xVTDi_6P_~P+Q+5^2dseQZJNSjsr zL+S{btQuN9q>htWM}&veKYCef$_^EBrUa6<*QiI8yO+J5wo{F<826mVRguj~v))U4 zTumX{r2Gm#0;{lDhFjROUe*nE51G~1PpBuzq`u;SC)D0vHYMOm^}fYi>xx$5?xilW zO)A6vW!f{!HC6JI`hH4#UM1OVK)RW}TMf5a>j*Rb1$Bna-b*vn+tn1C-JffwzogFX zW&Y`%>N14#OF#W<63|1|&Y3yQ|--OHTU;JlzeyE@@xbv4Ub0A!>cXa`6-TGYg z*)OV%tQm7+P5LR-ZnF&cn)F}Q;a*mlXy}s`L+!ZrMmu-_mKv5O`sltImL~e@nY2mF z=VDyC)@B**=VJWzjlHZjF;KTzj4?y>A5UX1k*#)h6l_Wl(FZMt^Rr_qAv&6e_)g8U zLp_r04wVvrPkOknvRP7mYx)4a@f^ub_LZ?JQoq{Ew2IR2ky(3Hl>U^=8tEwgLoaJh ziP6qk5=CqpSGz*VR;$XQhtuQrwWrxO+P2OKkHPkx&3-@Ox%5GL&TNTdjb@U*kxXL7 zsw90k*=pBFIajp%bDwiYNN0L~mJpPt+vxe37F%X-&rb&%u3x0hn)5k&f3IgkP>yaq zS8B(Z06a(cE0+*7PQOZ1ON#pg*m=|Qa~>J?;S`!s!`zNeq9Ot@Ws7hIf7OsGoku3;bxlL&={aQfd7W+~vof2f zTdZ#N)fGC%X6F~-I<8J3v$C$$uUR%` zU8_InWt&qL>c94~+lJKZAIW6=ZV6kgLo1~A&vZoao%n0*>13;2p^4dH4SEDwGuHX% zLK^fKvd{GR;E{tG^m?*R-7z*}&{DnM@>Dlv?g+zmTmI{G#!g--S8;8&s%%+kA1jmtGa$6~HYsRAZpNMZ5zEuHEORW_Gh|kjyX?8N&nffsF8x>9q8Lj%H z#au6?He}qV9ar?UZ#mdBGApxfdM%lhyCGwnZnc=}?dY2_?$;06tU6`8alhWxuiX9m zsLeuRYxMm(x>jn~r?!q;1vZB4Gre`(Z5a>f+sLe=%pdgjUiMb^{5PkP!>@^ZIGqc74WD{U`mZ&0fp6TED2@vDw|Jb*e)jvRNgL z0Ui27i|ItHSRK0CW@RI_dP#p_vy?Md>6f%>koI-!ytF30MmrN!{k^0{zoJWQb|&WID|)ug_QCdNeZI{yk>{WFMHbWF zh3tgQW3z$C^MGDpv+u_}r4Q(9Z1&Ue-TI)u$!1@tJf&aL8!YCRfcjq7_t~s96dy~*+Kobe#K^2qDAlOH^{6R@}53y+w>%jyJwzRYW33F32w0G$i%Zy z9nxJEbDc3}-H`Y77dCrg#CGF-{hiHT9ucbE*C%bZHM9=*;OHwQ=4#hNp*3LsHoLgI zMt`WoZMLA?sXo+kHd_kYM>^SNH^BCh9%eJ&ybm%C>pYtc%=-&ifz5tJE`QNwHuE1D zs{W$SvKZRn#MSV5wykMWjs8T}*-YB-iN4Zi(uPm;^){0>bm=uVlQwke+idns*{2!Z z`YxNjRQ3f}tIZC=_Nji*W`|(=R6lOB-;b`*NAzwV;e4#^Z_CRzfuK7k=41K26mwG(eCUvhnB=bxCvscP(P`{=Q$~>-{n=SVB z@L`!>YsYGfoe`Rw`K>Op*$cx;GQZc;)>yVnM*kA|gWgWIN&PW)X66a~#!X_gX5``=lMVSEHdl6(~tThGOOH=x{_?A z`ja|0^G99R&-RmEMrOtQNmt$37xO1QkIahlvtDG|r1qcn!7Y8BKkL`X#Pj0Jlln7@ zxn3Vur+(4j*sKBHq<+yq_IhgA)K)8s#Qa4cZ0U>ni++vFs{NFH-?oY8DLs-uBU!z4 zO6QP?r&IkyPq%GeTHrC*mIPtQ~f9i`YreB{R*U~+1K`zd6NW9PMRKr}`M?qY}j$cb5@DX4U61qRCdO^YyuzF2ijz1?FcA zwHWGKndxtgC;LoqM4ts1Gs&!&0md9MD`tREZIx5w_1eq;V_`qfAY*wy&mg1O_Kefl z`UV*X`gw*Jhx&Pj7+tpK75Wlai1ArJTd47^ZEMj_=}^P9Q(7zMV0UDO8S!LR*5SrX zo5}Z%aHElIHGYfTZiE~AE#`W7#fR^Ncsq z@Wl}j=j$yTa&aA$6k@p!Lorygv) zMAq#mD@wBQy3PJLaV6OM7So@W)q(xpX0j6D9@Gwnf8APEuw=tYCiOj%nQWXv=5hu-Sw`pJfg+*4a$f@+{*Ho2`T`%h+PGL1 z#wjwdS~vb%JO|V9lC*Y{YkK*QnInx?ZB`7HV;m*hr{w!ep0RF^cv|0A@{BEH@_j`O z9c5H>ify&h$`>y+UqB{TRD!_v+P2##L=4S0{%$ds?~v_AfiZM1%fS=(R2UO_S?16J z<9v&`jFQnq3yt*_Q*tCJG}>*pf4JCu_gS@XNfFz4GHbpR8dEGAYbZ3%CR?e_HC}TR z8VxpEqhE7OFn-ssT#?b*uUwJwknQ=C-&YYu#$lV??Eh6nvGI4CeW7XwPBdIEOD-#s z$KwO>?i`!V_Bk=I%t*G`d%hP%PBMnt?1bz3$SFpS%`yWXA6RZoAhX(VrZJVwn)7EG zvu)2+sP9bUGMgo$zG=oHo8_TCd1?}O_l@hr&r>8f`KNL3)Bjg|zd)Yg^bD0a{qbW& zHq=>z@PN3j|6RQJ+)BOWdALw~1~Ip!;UbI1v^A-TqKRXK1wgA6J#`HqE!IMmwc_`* z=rBAD)tJziPh)}s%|Awo=I|hqHzXP;WyO37ZzM2O_875BG^<9fzDDgmF(awJdxX^W zI^sKU_nJHj+rPc;!4fAhy{A-9S@E>=c#Fy~DfI>>h{_ zPfNBuElmKjGE`_$C|+=|CEJQ7eZH<#WUB{$mgR2i%q_Xqar`}_Pi`v2t9KTiLA z{>}cy@lEBZ-GRLicdZj;^zoKeTKi;^)}Fa)>HGXoZ+riG|C20bPv76$hx~huc$(~6 zhrKdbo~PJ{G8Tr)Ll2uu^bYj~_EV?Y86x}FAAr_K8O;Ab$C0w9uVB_p?w|i}`*1&N ze-dR+kKA7``8$}u)6U1%~SxTKgURJ68>%Xkn*i*2&$_gxN)VCa?>#UUux&7zW{!x@Q)F+9ucVBC-021dr ztcRM%k)FBNvj$2_C5QjN==)ah|6AsGH*l7;{eJY`e`?)tqn*AF$`QY3&9RP#f`)y> zx8#tql8H6XEzOHg(Jb=iIC4$sReNO7SaJRnT6?RYVV{jydy}QNR(mj-GhaAatS7MA8%pG!o-xb*T`9{)t0&!Jl?WR5_e$9*h~INg@}IK(t=^jL z|9w7nsZyhbeaGnkx2^k$(JVX~-8YVRb1crbkA_lX-+1A^eXN8%n)@b6slRYctx~@| zH;`7#oWXA>DjzWobqV8J^6wAu)1ST~>{F zE`ZT)0`_QrTZ`pyMedWeI>OPP&2xj_X7XE&75TUN|5nq}50mhc7WBY)$=NysZ{!+S z#8z1H(-@;3e@oxSvkNO{3(v>A?P-OjkuynyXNjllkGXrI_5VEG#~OEOOV9eyU(RPQ zUBDXGa9*w9G48Luk$d|8A|6{OvMtsb(QELu{%K{+vHq?2Z{$yS1o^G!l%l?I{{}r~ zsB@5^sg9x_9I6E8z)rOZhM!@-vr6zjWIWM1LPqnP(Q;fn zI?Q0b2J6MEc^Vc`ziVLAPnfl+aW|w0{W|LAl_L)EGCu{ z&n8|-^bl)+PSpG1sDWxNFcw!FBu*Bvr4WEh(1kyN&QLSFcqdh9F?PD zfLav;oy4(t9$Bttl^b#|qz8yzG2~a?#fJQjF-#dHDr zzjWUXe|c(>F->X9V?d{R%#iz|A2aI0>L7RH`sQQCWL($u>br0~)2lznbxf~*9M>kd9^y+E29tkV1LwfaYT&+9G+K(%Ve?r}b>wc#w zpHdR%6s|Gvght|=QUzx`1$pv_-N5|Rr?dmLw*r%7g-_)YH4YNe%bxC zj?mwf{s{au-C@M*Q`vDwir$a=GZ(WzhoQ%I>OA6j;s?60u*@i>++pr5$Nj_l)$-en zVR|u2<>?*x)hAEO-PcKaRp>oN9`%d)WWh9Ar_nl%`tj6^r)E4g-TJHa4r4ZRo6X#2 zGq*Wf?uQ&k|0-ImXsx0(g4uTK9Yxd4SIn)6Ri;-JmtSEf=`HRC;HuDT&1rVdTgNq< z@$^pthT`!Jx!e9tQxAQ}>@ZV{9x~rF7pLzsYxUDHubFSsNALr)+mt)6I?Qnsj+%|k zp^-T>G6%1EY&^zSy*NivUNWH$`e#$_bgaNUX@TZQ+;+$^2fV5vQQ~(M?1w%vOQJoJ`5MYb zjM?vaQw_oIkZ&rvZ}UQm6cYhA~rOdD4(~12HZ-_vKZCajGUd(LUwDf!%uH~fr>|#E<*wWpQC;6N-_YIi_ zz2vq_JK`!t9<>zu9|qkFTvhr9A20UDCxF2ruljWBqqtsskY(S|a*y$s+BfkFpJK<< zqHkcWNltxdd^_~x(c65z>MlG#B=TP04s&|iLEz_UZ$f_pBjqq;Gy{#PMUk!u zWSapLO@#4zMhj3zIl@>r`6;}$;jWA=z7fWWG5M|(L!OCDG35Ek6hp2B4MW*UK6zYi z#uH1q7L^+E++>a8n!(SxN)5R(G>x9pmT5kV9eZ4_xg7L#u&ywNJdM!pNWt9bc6>MG zbJv%SDBMl;y<>jua5q^ z-v>r)q4xj4D9-ow?>6R)3G(-I=8qcSUxgKTCEiuExFFqs4lXpWAV0F(PeDX0L>38~S=&W}Up1r$3gA$OSG@mIp<!9pyv*F)(7sO=MH+-(kI(|*?mi3wkf@oZGM{ms*e}fDW3@(YfdkJ z2{;2Q;aGEb%E3VC=QjhrsulU~V&q-i7j|*)*u@#Ui~Gwi&iUQO^pJ$0PI?|>>pGE1 zDKt~ZO$EyHshx&ApW4Z+I+@i$w)7xdnxyY_FAZA3JpCN^y4MFaQ+^YB?w^8W&3`B8 zP4l85T|u&@g$2K9ZXLG^$A$fc?%?(G+(_&&WgmIPF+2CV;1A%rGT6_t#k~P?$LOuV z{bK}Aj4v~`*#3*t+k<6&*bDqTttsFgw8E(b@y-FXbf-SdHojxXT6fZXyzJZHqgWH} z)5qx}=v2q)bKH<)$8oM0$JtlMjr`O*p^^3EID70kSCSJrd&$5nk)#$cS6zoG@2GH? z^7e}`Tpeb`E(3Ck7!7+`%m^ut?OrKn* z9H!jAdbW9?|4YDwF2R?bFNJ)mPvF;Dhbecd!UuPmdd#JhegZx<`X9jjP)Df4lsilv zrrdR^jj!V4LN7!PNzlmss~4J$_>tLR%6+E}Q|@nF%sdyHUARv)#pKzVd2PW>@LYDr z23XfeZwVcS$UF67=ZB+qgf0i}3iUdDC%+e3W3CPQBy_Fw^GRQXZg4*7{2rP=2mTa# zxAVP8W|%g9o)j3i0ky{i-x-sJ6<~3CMwr8tdv)_r?@s-JKAw4gSgTW>qWwUREW9af z7e@A$u;nPV6|&r&dm%g@5A!;QPTm8J^vr|KD*w;J9&{dZ3HlnJhwWx5FG?BVyL(Id zg|9`aC}^ZqDdMy^7V}zP2WH?U;nUdm*`^$W=CJM4&{C}Srkop0Gi8m1X4JFcwWd7% zTx-gc(6y#qi)}<%Ii9|oc{2P#$f4?4=Ot;W1DP*#lOX^1hH} z`0Uhc_1={F0k5DBwR)4d-jt)*dgOEMfNr$nZeZEamI3iPvgm;U8_iSMPYu{&%27B% zzZ$w1vYbgq=&Io#4T#Wh746h=&hSb^n<>vjw;{t%fpQgZ2QzFl`~PuTuN=%5tN`eRxj1a+6YxSRFhDDt;7h*jT&rwlrraWcdX3Et~Igcuc zig!pK#yg}B-{G1gkuO2ySIZ-OQjob;DGu4QYLWk4tnuEcS9tvT5_2PzGb9x6C6)7k zheOW)JIw5&SECN1Pg)$q5J6_(<7MAOopi1nS{{AUDfe*aIpi7lJcm5*p68HjsChUW zx)&%{Q1cw})O(&ouAh!~$jmQgyGr>jpp<8BC%LjsbI1&w?T{Hb$00MYiZgJILuTMf zos~VoU;7059Eh&sY^>sJtYWEJmTF|F*(}w_QY&a}rgc57>#1*bdde2YY;>d+T^r+P zo*8^oOqg*h`|cP&L+bT2_7~yJ24;TN_LvAhWi*>L&Ss5U7_*HrcQ9rnYuv%eyV$xU zpBZt%v5hR%$Wpsms*|M-veZHPcVoZ1GByLXUmKgv+Ot{vJM=$H|D*IjO8>D&)uhK_ zkJEaB)>E{evaKDVhhrU1>B&H+^kjrnTC|ZFMmVJ>M%cny zwy+kjvD{swtGFUnIpr+9mU1oR*{(*XoDVPNecW;$cw@Yr>9xgY_{b~`!)!bd?`Iwf z{vdvZA#2nMLsq91hOAE0&?j+5GwW?;z3cJx-qi^kkx!hlh59x_-p{dx);2@l*wJRl z+dJ0t3AT;Qzm56tp#MhrM<#AzT{~E6BTH>$sf~ublVc9g-_|=b+=cLze6}#3U5L3f zaR(yY0F-xl>_90&DYXm!t%=?E&i+hd23Or|Q(BaPRadKQQ{rTsZ$aM8{5zRXC!+nF zc#!#YGM`RFPVntCgdDE+ zQoo;?gYb0Wj%$f_n3^t@Jw~4|s6S49Hue}7-Z&yS$B?Wl3@KG*1h@^g+;JV`_kBcv z*hlnTK9b2%pHR0OzY!*6xp4!1GVmI-HwkZ96~rxRIq9lW{gRWRu68+chpPbShvV=2 zoI7kd-e7boFj-v-9I93Wb5$qs4D}|kL>&fBRbK*UQGYQoSFKbBvWi$svD&8ma*A13 zG3zRYH6g1E`dgFBX)Q;+vvOy#l!u-kdR8Lm16h^OZ%(cz*1+>o+{`cWz4Y|bb0s}j z(x;g*S26xt_-Ev`(6fd4v{G(mscr0&ZS-toDcli>tR6(Ead}U$mUjBLvup?D4wl`^ zx?X|j^1QbxchTBK&u+@y^gO~^jxh2udVYyg59BE={jao)g{G{vjD@LXq)aWX_S09p zzRDW_`9PMNK5qIaQBIAx2KPmQ{R{w?%r zq5n4eJVBp!>f5RBpxnVYd)d0T>C;7h7k#=Zchlzx;~b&SG2)lN16j&oZyW4wyl>$^ zmZk>xJ)_T^hV+}88aI8C4H<=Gcy3NkrL~CGB3esmEupoHSV3zAt(CM^QeRDM0HS~B z(?lOHWiM-AN&l7fTt&Qt{w?%rp?@poR{C$F|2BGVGh}aVr?s7)9h5uhxtE#0&1hZJ zchRStayNaBFxnADJ4SzHvad|(E7Rm`G^HOLzyn!MlYK=WH+@oREuyA~ni7^Op}q|M zEy)$MR?zC9>@lV1E9qHD&nj~dYOH4b2G-R?&nA}gQueacD*E3+Y+;0L#3xv)-E2@L zS?w&fhx$GA>}346DIcN!2<0D$_#;s2`YilSTI4XmAuUaIa1KD;oSZ^UF6AQXOMnOP z+pSp3X`My6lGaMf+bHj)e1!55%140*vW`*KPLZ`U7wf#~WN$;WIoU~cJ7p}~PRS~n z)@15aiAA&)(OLp4@}a(rSPndpRY83PJuB#0$vBlx8OLgRHqdh=^((1wrl#3>1be|M zXm%vuK~0OZLA{yP!Z_RLzl{;vfC*XmQ*MWkF}$5Vd+4)=`c6jM%V@`_ar#J0lYQ9F zlv9ai#7gQbDOdYQwkxSwNzE$aT3|v}3-kxFT79IiT76_*ZKG!!O5K_BAbmQ32eLZo z(?OrTjL=O@H#NtoF?~4-z8nQ&GBwG*l0zyrMZOJc)bJu-8J99@Dxhf?UO`PIJ*%l- z$+9b{Sw+oSAaeHoO5H!a4f27kHec!I`)Tcj=eC@^l)Dh~+u>b|c@+9PbBSDGoW=l+RNk1gHq#u%LO{PBCb%tJ&lS;XmKE?DYfe&U5^_BFmq};^#t@LcA z=Qdim(b`VAgVqjOJ6)3DURt}U@236;;~$}3`EhOWlgzcBv|Ur9{Ulq{k8Saj6~jSm z60J$J7E>;!Tt%xFh@Parg)!SHw^Qz*+(G{?%3ahSVJ$~k%TX%_f5}SwOAbktlPIV7 zONJg`0#JNB)K~gTo|VvVPOhSlmp)$lcDeA23PnmxoL#G}E|=Vpk+bcBfP7s9zmO$y}_%9TW~jf_dT)ke{5 zqudt4S%+xP=d_1N>-Hed=HzZ#yFP;dh6N`x@L=SOWsFdvpm9=_LsPw=Q zYVf!8)cg@DjB93?taxUac)Fo)8R4crIZWc05G#pZ_#|X`ZCNsDrQ8}OatGxO%3X-_ z{)jHd>88G$dL1q?b-4Ju!y8nyD94ku0IiM zQ3P8=*&V?aQBI=1B0|Q|1OLs*t;7zZ9w?e5V(~y3BM;@Ofov%>Xess0(BpVbYbULp zwCYHXS|n?vTudwl;%q09^-|*{wnR#{E%a}trk$F0YC5RtqNaYITFvRW9eh0$86Z;x(J1tZ(3>15eXmhGlh z#WbjeBUKD*k74b^lo-|?BefS(;~`c7(GQecP`j*%Rb#!D4HLdjNrv4}py%fhe55(xiNt~28W*El|sqqlK#8zSl zv5Td;DeHK)k(d(C2=Rb=x71F;`b?xfsJSq)-_gQToukd#WITtt2GAj!OfvWI#vH13>c$T-uc+(GPQ z*>1{5Y1MAY+3l7#y4})>6t~1LqNa$NV)~T2*~35_!HLZ}{IUU4q;H}9zg>?ZBWI0kK ze|HK;Dn&9$qP2*cB5I1MDNT{ADpDF$b9M#w9_qcsR$>RSlb+p_b*j{rL@Xwjrb-+S zWiRB2oL1ni$(_`9Q=`&2c4-Z2U$#nP|D-Vvv6xtz#(d~mktX?9(9=U}6E#iLv`}uL z+)8UZHSN@NP}9k1UDS6`uhKa>>8w3nYIjrPrY0#}dbNm}B5I1MDFvdJsIQ>j!?I1( zG*RQFriGdoYFepjr>32n4#bJb>14Dn>bt1#rrez_>xLS_42LkoA9&MQbe5bDc|1Vo~nHh*Oa(z3rik}#P?FuLb;W4JLQgC$)}6*QRs05&l7() zv4~hfY$CQ0+lgI7HA?)8h{dBMS_Ng#D9NpfvX^o*tbREy)U*=YsA;F%LF^)S+sM6X zw8YmoipDWo@^n*^WTWVdC>Pr(no@dJP~)NOv1PF~QTEy>n+&ANq}c48M%<+D$S zDfzOW7EvyxT#+w*UO`P2HBHnsQR9UM=X;b}DYp^Zsp+7<9wU9_03OInqMSmxm~ts) z59KP#UdpY+HflP?e56WqI;iQSrkk2>YV=sK>anb4tbChuk9`=ungkhhn|cp?&du>q zZlcvoxtad0uvX=?Qqw`XgL2nc`5xCzO*b_~<0Ntmv2&dCRo6J_y{>VxmmM7^d!jl+ zH0lh|RGcCH?Zhsk8ZVk6Vg<2@*g|Y4x(mc7rQjpAFDIoy_Jt;D+6yFddx1nwDf~!v z<)jpfwW3h+Y$CP*acrGH4Y6~A?7v4Ruz!l=S3Y-RTwcQEsQ)IfY|KS(Wn}P&p%0 zc2iC%mpM~JxfF6$P6e$M)HG3UqTEbt3*|P-?UcKSMQ3tErb>H@h%Ll+Vi!?OV{Z_P zh!w;pVi!?OrwMXh4UV0TrycJ&vYi(= z>zp?@Z+5mi|LA!$oDDVF5f!WovycCAG=PtPP+X3 z(){l9JK&e&Kh6I-|7QPt{oDNi=>L}g_x{d+uz-YsjDY-rvjb`aZV7li;FW-=z=?sE z1l|yMW8mh%mcTy*9uE92@TWi>qIDZD=XuJA{~ z-wY2L5IVP`c)x_4gjor1B+N+Mk@#}rdx@cgY6d+q$f0nD4gP*=0REa{5S}#&!IL*( zxbhs1=UXE17fPe>yi2T#!~X<4p)*J&;s0QjtWt5We>yM&n2F~-vhY7o4Oc~K1fIpo zRujR>@Qlu6HC~;Gzm_@`Y$n(&H3iS(oQdafrs7$fY52>L=i|wjOYv$^51!Vk!T&4p z49!A3`BR6daq4k5!D2iM)1cPi$(b9~H8Ro@#^VXu5AutE8#2p*3sPqTyHn=^Z_d0N z_(=Iu;Pl+(f-&O1HCE(Vl!IcfgPf4K78o>0@Dk#e`L{q`8!!GAo|ho<7eg5#Ok%Do zy%V^Va$JFEx>N1}R>ijfok^m3Aw;mh++SmrT06WAKJOMu*(+F!g+b#)(;4(2@S!16 z*NIr>Lw~ERRcdd+qp+4RbE~XttmJQHXtl+WxeFT0+Lix2&NZvV)YRv*g|yr!rf zcxX^3FlgMLfgj|*4*Zq^ z0Q@BSB(OV0^0%_GdbPDg+LgpU+*~TPdxCxiHl|8sA7)rXpW#6cJPkLN@|%;zYEm<8 zjI`yz2#NeisOW3UCFW}4*gSuf3LYueTPKOWzvsR(dAGwy#79PpbwX?eG@lKZIQybw zA(xGH10RZ(2uFvBeiQq7TyX~UKNU;PR$D@|^Pzc@bLsP#f?n(1Vj0J26QqZ~8BqfL zIit&gRy1qWteET5B!0jUsmrHi2A;xmD*UBmJpX0l**sq`yj1~cU_bSR><=`szxqKA z1RC6X@x}`14D7!_(96DTaBtSwlS3d60K2k>qb_!{`jv_paCU_~&n zzmEW3iWR}YKAsE26LY{OJjG|=4%D&0)#?o38dU(iSxo@mf;GfYcdHWMW~>|ro=lqz zd<=i%*HBMl?J(3+s1twJ3TUW5p-w}+fWN0~s25SEq1y2mKny(JcRp}0UOa8!S;32e z$FSPq$wxgGXlM`6M^^%Ubv4kX=Od;c5O3wcvwi48eFZe(K=h$r2sr|XKGgM)BZ25c zy%=&d5Phf{Ajbj?m86#f2kWbVxq3M;4|hvwJmq%{>miTB z(?eRF0W@%z(@Mw%K)e@5YJfI8)&GD^{v3U zdIPXR-vOMje+O*PcLJ~0cLT4{_W)Put-$N_y(oJ<5Tm18fnL20c$2;#xK958xL!X9 zyjedCyhHyH{u_aY+M*u?Zq<)L^LwD7?$u8~ZUJKK^plY90~%_Zej0Kc5bpxec=k{| z05sGewEQLK?Lb34r2hnbSicC(4xoX*cG>~?5ukzhukL}o6Nves_dn?>S=ud@-sj~J*!`Z{2b6w&+FGA?*?N2=rvw^l>O;Vz z`UBuM`Xiu^@fTnU{{G@MkjsD=P2+!nvy7jx4?m8XKUCeOtMnM;c2F1NO={&h zl70xhNd1j?!k7j5N8?=J&&K({zZ(|*lhw0RXU)?5yZH?ILEn%4r|=JmkArWcrEt^}r; ztAIoBmr^cLndVyHFmoMnxOp@7$Q&~jm}jQr_T>lKN?oDegM5X0AM%wd+K~#3b)@6j-9*S&DL3S0xNkcZm3HV%EXdcZnUI^*Y{*UOJjm!X z$X+!Ea?goemY9Kb%q|Li}jg$mY$<;(zol)db{q#^B14%fkujvY2+H?jcLXX<5k1g z9B965{?nY|_|`Ggd8xC}8RV1VGs>sH=X#&FeY$)G_+I9_(s#Y@M&Coe!7jHe&sE~O z%(cdKtLt&sUe~35xA-OcFYy1f|4;rS0y+ZT4frG=IdFd9vA}^rqk{^A-VE*zJ{4?+ z3Pn!p(SArVY9;Lh2IpuA$(8xyW!u3&mAy-z|sLb2fR4o^@zVk z7z4uw#tkeOc=f=Jfo5c7d~oe}4Wn;*9@ zZf)GDI7fUye0Y3S{NniK@jK!Z5*8(_OSm)Pp9%hn3lsmE_vw0`Z*}kgn>ylfM)I$9#FhM3r}3V%)BWBbbpMop)xADwE8eJcy5H-A@(X^e z+ZQ6bi?O=R!CB5F*e=C37h45356*Tj!&ZrNohoeA*yiC}XFj$C*lMs{j_nF;wK&&V zi1o1!XEXKK7U4{0F}5Yx8gM4lh;y5zIE%Rw=P*}cTZV5j%duUJ)$|%{EAZXrTAZm| zhjWwb@kW6rg*OPONq7sux%f_bKK8eZ@cp9#=O`68L#e=bkP19WU!iWowho*8i&vU& ziAc0RhuELE&$dYH)A$*Rv!iP{_OosMdH9rbwezSCRTtRyTD$xr`|~Ch$v*&clWl*< z*6*}GAGbeu*`GK*G9Mfp`HABnKXL5CXSBj`kG#wN{M6PTwfPA8CKid39JI|kO z{XcDgrLFvww%X^=R(uyfLvhAr@ksmgYa=yV_MEScU)ew3+WcGcP~|l(|C{l72i~sx zpt{p|Ox=g=No>y>FROQrH&udpNL^_D1-e7(e)A6XH}fCL$1yqHKR)M5YE)N%hA#;@1{0%jOd*pdS_7y*GVtI^n&1wLkM4E)5nAn1^~ z7Te{nuZ#oud_Cw}e12~n_dlfS9fwpy@F8^|IL@p`j`fb|=Di_@)U?p)WG(Yz{k)&p)e!;oauJ@MGo}-_Oml1HLq84EPG0)A7cDAjcTrkMyaC^{}Nn@&`JN zTLv!IZx1YYjEtP>czfW5j`qkJ$K|e6hl*O~sCV1}-A6jj`LrX=c_;ina=Z}zwd0JK zuN@WG?#1@Um;ug{F?TrbH=T}}Sf^tpwl-|9$Cf*X#g#i7;!+(ek}(=GFHamh?zhEvad&KBu~2X>DVVs>BL&o~L$cb#cS;y2`>T zD_miN^;s>RIf!34Rupp~O|Gu1UV@s=ZSc&mF1)NqEe^C#s$a6u(ARWI^LURBd- z8d!a=L#~vaR$qBVZ_U(5*->JeU)?yjyaAn1Qzen9D_gv@27Ovx$52#>{}}NDHl*Ge_l!5?NtjApN_6>2VNyzh1S~V?_P$TLZ)8 z^_Q_`HNFvZs*01uR`gE4{>thlOX`uFkcmlU5~-MFB>YU0wGT4V_KKCj+gt8#fs{X*=tw3kcPwKa|X zb-gKD9;XkGq%g~xG%(2GS1&z=E8?x1vvdZF9_TO1kibrMV zs96g<@-cTVI=-={l9QsmuBK5I@mV!jR~NuIzTcDw;~d0asjc@^F>H=Hx4f<~H%Cpa zUM@w(WRDduYgK^s?^cB#hq(~?tqNe)df)H(!akRM491>a)E-n@ivet?<}NPfxx!g{ zJgBuhLzq|V>6NQ{CH4r0$BuN`o{90oJ_*eF*L@h_q!Z)=J7SKEY(MfQmZIWTUw!5w4{C!8n?XX zNDo!z(uT(Rg}v*SU9xAXg+tHq*%qq;uB$LE>=7#MH5Iz*Wwxuexc2KIj2Rc}-o+8# zGA8nYF+umpXh;Z&kez3DTb`O-FSB)YUe8XDJH`@uJQIRFLO$%?fzYpaz!(poG9t2* zNO(}YX~m5=J-7@FE4;B<@RQ6~t9r&kc63ix z5c*{W#;ow^sck&Vv#^IPNkLmSQOKYnO?UPw_{t}!zH&&M~#40Rjv^ccY*OgW`dTMGL3RUT> zVrAupZwlvtEc8?^kTaqlVWKK8MeG@B*761%LWh^nP~|gK=~=VzBd@LMJDF%0&Xv8U zaySp%<7XERZ(LB*aPcMot834(S`OX+dl5$M35kAMT0M7eU;1Swr41fcR#^p{v8WN} zJRY92agV}r$@c8Ga*7het>!jdhBj9IFIn1UQJ`49nW=uG%cH-o#c5}KgS7}L&iWqj z^ZGAXcCa2>->l{_5~st%<#c#BDr*=n2i@WQ54x!OG-}TXRA7H=lru>AI(ph1QU7)^ zMC$hUFgqn24yu>bd1|fHO6nIapIvXuOXLe{XzN%+e}UT7MdqC9u4T<2Kz>hi|r3vlpQLDqB}#oge?JX?$Vr+_^P4VXN`f_WC#W z6vPTG-(h+}cyK`RR4IE3TkcpmhFcP=wyUu<|J!8m+XH0&7FYGg?K7YQWPV%5ML4xC zpLbSubyam0j?T5U%g>h6?Rhnz9D-Vm3*@;A>#wXnt9n^ui3eYAtL#CVRb4x8R?Yl6 zac(HBo`>DFN)=b)JMxn1S(P{yv3l;DYHF$!7JHmK+hlH)HAgLUdBZI1NC;Sm^W^`lH)q7@CAiz5gX@YD@u9SUHomUSS zkG-n!|Frk*F>+n!edo?TW_Fhx?hMITlxL|CMMspWU6B+?i83j9#3jwO`LcE?$FY_5 z?Cg*`=I+dBW|rhSZajA-15R555-KAWU;#Fuv=V9o79jl*q-sLg0%E`dV$=rg!Ujyh zDe9nVDj){pB98m}ecw6v+<7cTJ86odhivXX|{qQK|JA>pZ;JtF=a-nwe&EwcOaa9?GEH z3mbhbhKqVu1C^+Oq@J2HV4c2Q#J=chZiT}Jm8%P%My#fP<;g|`RJ6R-zt$No{cFYe z>VXAY-M=D|Mg6Otfa_m7S8RYL``4*S)xXZVt^F%O2(UPNRscbCrBAUnV0zm>)+}yV zH`9EyR$D#^53sl23GdkSz))De1V(Eut@L)ITYr=455pBwzmL(mo`ES}qS#$e?TKrp za$UlDJyp|Mj&#kulmd{id;fD8) z(u64@A+NRG$}^Q}0gThHrg&|G8t??HC>ty(tRi;TcLaDps<|WvWab)`l@nFf+Ey=# z?ssWb(4rryoup0@vxT!%Oj09>x!PsLq}MMEYseLJ#_w&{dvtC-OP{FJM+wbcfCH}wlxawjJOEj6z!O%f+7%jGB` zAx_D`zC){7SY1YquTBTR>S;t)Rbk7(F5LtsU7EwY^of;vYt3bvwqr-!QHF7l^^)Z0SBlq;*H){oa~BzSZO&AW!>`0r z<;2K_EVXF9BsDP4fK(D2WO4;oA$?WI<_bgSQOrFGD6?>eQT|#}8qA0v5i5WM?-y!^ z_q58s&>XGGN?F+F6qwf+Q8U{T0K?qLMs3BGXz1Ax-`>8hHfzY9xK^auEXXDOfgRT{ z0IUzmA*#6#;4wI{T4^qo7o~J&Q6P}C;9k9N$)od`Shk;NSAx)xhx7qaaE53+`WBMu z(9u!#bZrGEUXry@MVPZSEx_JRSDR5&JH6zE^t=&gnz1xjajMo7>yEn_rCAX-?u76< z3fLlU;2F4V5?7T;IZ%~&orWJehrM$fV7JoJ>uGpHMqC3)am=&jtCEINLVt@>qZGqX ze^dmX@5qDmedSCO&T?_tb+>U6-EN!%OM=uQ32SpQxFBU`ikCI$T`5IvW|}rw5|s!o zNY3(aRKqyAWJEzrN~O6nloZ&#moyN60lKQOyasBJl2Q~%wOMC#NtS4eY@S$qSR0bN zqT!30=A!U@)EAf|-8H3P-a?`|fD$$HMzidGEZd6AX~Cbjpbg@GQ0dVSG5cA@i03g? zJX_X)mvogwg&Lw8RX>!YHEG~zO)@R+qX^X{NHudF>W1GRTf*_4^RzoeH6lpmm0}%w z+VQ;;$xgkTM7#|Lf3iBdq7ZD=)^V(ih4y$3n=JJ>N30+SGjpkm@s6_;E7P4WR2Lt^ zx>#oY>zEXrQu!w!Nc5@uEX7pBUyK5mO_e1fbg18imwb^!$f?TWV!7(e&(>PR9w;|fc;XuP zfM+Vcox>W*_Hl&k`c^XJ&Fdrr&W5d==9PAS21H~#2DNy_0qsJ$;hQ~HzDRqh1>bJD z-1OygifFl;`XE+CXEv6lEmCp8spaA|fg@J$mWusbTrIWy6pqZWfEHqIz9M!>z!!qS ziYszP?8|1FE|%@f+;n0hRo8rl)mu{Dsw`A^-0o{INCX{DXej~1?+0|-uwN5X| z6^(!X~0wd=!P^*EPJX2m3fXg$uC3bXKqXLlE&B&t2RYG}pl1S;CzN@Bu=> z(d86N`7G6CxG0W*>VrCN3YEuD$p(iy3>FuuXwDZGp;<1uMwSAnEGx6-W5q_5-|ljk zf!)^>qa9}jD5vU(qWh<7DBuUE1;^tm;oy^gL2j&Ef^T^Bm#F9?)0K*7*~~Je z4#)Ha@8Gz-igOZHiTEi!$XNAC9ad=7mSR)n?w5e>!+OSFT>y%4H_Q~4mrV(Kx`IQe zMWo?StH$U;upZXPIS%lkwowa5GAnkauuhnPOuYoL*bnF)rVu)Yb9mFnPM*56!JBnb zQE;;sJupz{&_V47gANz95SO-y7y`ufIUIq&on4f!^A$gUnTrCUf_k6hI6hZsuC1(; z!B-_;7PHEHAy?Dky9vK{mV8J<55Ci^vqcf?Sdp+0_7!@FVgQB}{aFLc&9bFt#hw7S zuL#^TO%w}^A&b^`Q#VcrF7Wq=g(e0BI#pD(RnZLH?i3%i#&5*f7 zk`kWiOi4>hJtgOGz+@0lgYduy93b^yWfbTO-kGx{AFiPRZT`sAk(`Tjbe6)os+52X z$T^JLYWiAYzaxC@7XZtA3Q~aQ{tzD~4y+?4M6sr#NLFMyA<_d0(QM6}hldU42C)%e zXKnfqE!P$>_Gff#TL{^2ueiqV{^=bnFCA_+d`GL!TeEi8V=aX6W3hSo4zXHbGM2Mp zCOL}~Yn2+)G8-MLSOtf5Hmyt=MfiDj%xC;+IRLNE_&Sw;*4c@bLv+nLtH`&uzO*k; zWxI;llmxGQ1!8cny9jt+0|nzVP<6QVSrxcg z2qrzLq${UKQm+R|{T3VP9FH>E$;TmB8~xg=+Rr}Zf;SkQ$gZmN7%$K6_S%kS-$CqI-VC4#g3NGeVmobI09ADCYxA)K>(j3C{ z&_}RklXJDxwX5h#>VTKwEK_NMDaw}+H32K|&Ih-Ofhf&jF4k)X(vHhuBQbpq&bO?p zM$siOgU?YN`J67s=Xic5J?XIgMy=0 z1Y!QwvV=rjiPx7?4(k+v_gYlyjj|}b(468vz|o6J9)1{i_i*+izh^)&>{bDSD0|m_ zZk@0_yBbqoMc%2bx5&9MVxQ8Pn9%TT!5MwaHHrX2>b`Ssp!FAPD`!`!KKwWZTtUZ0 zNz6V~(ogw11J90G7$?)w?Nr9~V>vZ(+|^Z5Chy;s8?h$-W~-Vx{OJ)!CG~I%gm5Hr zg+j|j8mqvQddCmCiGakHNX8Pybft)hF^-r@c%Cr^wzmjmY?p@3Ia>xRFE$PBewPNq z;R!~@Dq!caYm*xh9lAChNw~0q)YR&5YOml-wWpf$jltijUSpIXI(n`;_IXRI2%^Gg zkEV*15`yz;4|kTva$Ky$1QnkhcO(?EokeWlrQ-C2Soyb8`Pmwcnpu|QhRXu19MB*7 zNr_fzYZv;{vX*p$#c!dMD;Q>;#j?w&fRTd8zBaIKf^`yfI-Y^~0=w&oPCKudU20kor; zIV-+&xF|zu9%aB9Q933eqB6I4Q2``LBo3lN5hK0D>h<=PH?1{f>=8MP^rrbVRAqDn zN=oK6Vg@v_{^-L8=jVA*+HqKnlfmkKZQ6?KTheN!~%nnprLU3-3^ zg&W^qlt4lO{3$I3t~7y-(}YAdz?6D{5+}h9HYir>hTg>T$2Idx|1Q?NMPN@_OwSf# zdlPxyO@=M|SC9t#*U0_v{#9MaC9!!lP!}t(Ts2p|)?oBLr*Pi| zDMcGD~#(3o!$G4-9t%v~{npqP@bK*;F<*isMQke4;RkN=*%!$bH_r z6-_1*W_pMg?Gc5LI?X^4fAn`iae10@N%3K20CpBeBMxJmW*$2&2|#19Sp}36Da%)xl&edAQ<>}&@Vp0-p4B@BsofqFkLUt8d^z~&z7bDdp zmO`r^$13|pE#_OaR`8QN>r|>8?}V4l*#lDwaa+3^VRZ@O;ZV&#Z@B}f8D_UP)#xr-N>#c|5%^2HWH>G(h_e@U>Z4y5>p z44m?ZH#ls-Zcq?FpprrP8w>ul6x@mr(t!1QWnC_m@s+&OF4;-xXU3$gW z8gF{^;REyYrHye!DYJ2H1dC@siIMRJVLyyV?cL$RE%xgSJigoDorB71e?x$7+BXiA zZ#ZA)*$ZMFgp$QpC)OHTq#lN*OVVh53E}VMT3>|4=a@yv@3Gpux8tO~Ee~H!9d{=y zB|e0J=7NN0Zn`~ABjFM)+xJmks*h|vh=h(ae(8z;6GS8LH<*(MqL|bCh?#cwS4X(b zsWQ^#WjM$!8)MPOk5G=`<|S;F20pngx%MrhR#Pm~JKs`hll{Q;0g@>fICsmU#n>5O zqdH^Z42=aJ3~&5Pl73r453-CL_SO}2A@_;VZf`j5vGgbmXV!68hh?PBwJ-QA|+a2ob0TXh2ypJ%K zy%c7OF2NbC0eP~xQdy1$^IX57f8($DI0)jMEJ;TPpZ(fI0?c=$z#~w%GI&=z>!iU{ zuC8Hk{nHfO)av9Y>HFU*CvD!p+sN5{VkcG0_L(CxB0>`K;|KvV%5bhT_Gc4X<1&hp zn23meHer|9x61u~KrYR5i8iXVhUYtNnZ*;@@cUpq=dFb2wVAtCkZ&TD$5Y*E^1Xn% zJpQlX`ED&dzs-ytN1Fzo>Q**p<_ew|w~VL4EuxL4SEaolNBcL?n{!m;Nz-Mte+WJJ z%*K6q2Hf3vn%PmzxQels&BMlQe+*C*@vPZ0W}HQ@&%|ca8U9hTz4sJGhvSE5-7e$V zb~UW0g4HcymBdL)N{Xn#8e=%wXf1f<0@iU5&#*Hi2a!5r4kPuT*^d++C3s(dSU1G* z$TXf;Hwz4zCmAnR}6Iq8$DW z`r}v^xqhwp3x%<@u7On6>f7>w(&BxmF*8@KqvpXMghcya65PWV0%cCgU(^0KAGQtR zTeKu3md7UOgcU4yS(Z@|W@4HfR0S|aSwaozCWg%8xdUs$Fx=$$m_@W8tFcU%#nvYQ z62j{kBaa6y66h%t%$~%k6`7GeNYZ&BXk~6Cjyy^)qTDU;BF3o!Dz;Y$;`0aXe|58k z>L8Pt-VN@-%maU`0wB4JdszZ##p~0+z9c5{EC{KOK@HPWOofUj~Vn z@JTUR!ARWeNt7rcTsFyDmv;|#@b~dpOgyG~#|Tmsl72L8W8Tx-m+j1ZJrj|xDBK)9 znM%KP@nN=Qtf?i)A@WH}q&31z^mB|}W^>fz*4{}g|L&h_DrFd@Di2Dhgj6#3wVpDA z_8SGP?h?qsabtWPc@QFZn*_@}quOf-rW7OHYRwZm6$<~sVmC;L zH4ott$M47gDdZoqC7*!FH;D%e7x9UQhvV}I9)hf``_+9CEuIhr-wUITMAEO-6EcIJ zb!vlF|5Wqnsvf~ggR5~ub1bM5n_EHxpa4f~@tO}p;{Z+fDiToCRB)P^O~=hTGDN#0OzDLo;{`y=lLovR?fmmCLlG%itg) z(1Wg0t<&aWt!|N;sA@hsxvHLy^T?<{sP4QMNCGK>L|Ooh9P5{$TMHS!D(F;KeiLHRg9bw+0#J>8m_Vwjqq>ai1{4rTq+ph6LRt6I_RiqGC}ES)E4|JfX*q00VFtxPk73-$w%ushq3k>gUhQAfpqb7@@ky}Qif|hsO!*MP&9qNADqb??uhPR00{Z*@`#yGtAT_^l2}8Gk1#PL0aovLW%zUE=MGPvyn)Lq>E#BV-wzi@Te z=pO$vo1@PHfORQ85v>r%A7x1>e8GKWKm+(zZO2d;PnATgj841h! zPS2yAg4)RkbAf_6j&!fvIuSzmk8z03z@%dkk__9c<_q@Ia?mL6G4$|qfl-ovaxJ*P z9&zEYQOjeZr)f`p7VG{j#-sDjxG&9bT1f|ByVOx~%>;XUN2QBN5p-3Az#^1UQT_(+ zW7|#NbE zd<;Ev(es}vNXo-F8{+r<_|Na)4z}(U8^;Qi%U0hgwcCAil-OV3!TE3a{?n<3cy%JR!{y> z+7AZs;;+qdh|CbnO<|)kerCt~4946XRAr8C`&giQ&w0$uRurSe+YPJ;GaeznHV0*3 zkd$|8<0-6wYwM{P4lIW6BL?YzC^QT@Q={v8X*N;Tu$Hk!t{Hy90Ag&2^byO{^JZY5 zF|w1(fSLHOn~wv=D}Ya92cU-SIuB=cQ9kbM9B^GnnVC^2lnRLVMZrGjC-qg$FJt4f zHgD&Od$B@On=fEi7tk_8d5*q6kFXp4D1X561j;`lb5J3=a$VCC1}~Azoa<3ug~r;E^6*0*2rD#1CS{hQ_ihIdrEV`?PiPJ!)h7;l+z3p)?) zeJgM2^t0cb6Zdkzb$kDv>+~9KqgDGDg>pExxW-&)j4FMS7H(#;Iltbuc4nw91NwgE zcwdb3u-E$ydb&UzcoFEOUQ>6@uL0KmBmLIQ%_0osKXQn38Qr0!oXBGUiK?}M#b^YZ+n}oM5wKJ6cs4$}_Kw0vSC<$uBI7$pqBG{y>C<`G9FKLIHG1fv)_l@svzj1I;Vj2jzh+*_XQzvn_2v;vqy#v!` z*HdFXURe}7$DKJ)0&y9Be-s>!<4B7;OP%Eo3zZJYR5~(iC@Nw*Yp=!V@r#Za`OEFs zJGp=t|C}PHNTf`U3q{HS9l`-Z43j<_am}K?>-i`UMt7g*qxexj5XeJvwpI15B3Gj_ z>ei^zUX-08=h8H%ROFmA?nu&5=kJ}xNJ@u`rgIi^ymLivL@E}-7B^2E@4GfGf@a!J z^W?;sF4&@u%^6S%O*=XmzmFbf%X#!9&8WR>wo*$L z(1zP#%kE;?45;ilTGEsxvr^5|Nwsb6V4FFNO#Q<-=0L4vK3jh$>rY5u+Ho{3yIRNy zoaIrB%Xv=XKaF5J!U%a}8Dp9)dh3c7A|WsXOU68T?LU9`fBr%1#2-Dg?dn(m{Kz-V z0Q}a$d=R9D@R8ZhWSSpC%x4So`2;^Fq$IO8jC7{`dA7+(c{;T{+x}sYUEh{O;u}GB zd^5g(5^T@3zZ+!2>7nh}qdH~+lO@Jc`8q3KPGsA!X2aBA9&f=$O^!8h#cM|LMjCIW zr`f-K;k^!wOgQe6_ItM* z4y}l-uYhu8oTqi1Fel?YeNS>MYFUWEJxwgRngsuh0b&;J#7m(^N25BRCtJuCk|vSh z_sDoKkVq$h{$VM}4dE-DzCAgzJriz59f!zH6IYT=BnGif(<6uzNkKYm&_ z*3@WT+khxY4C!oTAPG(}gXwfGmy^XkCyRPc($83gY1uQGWGWkG0Al-9t_JCmJb5&o z34cC9P{FS4SBLYUnM^_o&^pY3f3pQr|0{`fcJ~;GDf|VxPf zsT{g}8^{8#hvW;Ux9fOphzbHM<87& zlR(OpEbTWaapXHYEh{^+0|WT}@nOhWoQ-87I8%a!Lz_Vk?RONm@DQ~``yGni6D-E| z9|EXgCR8B?+5Wkp;m)1=0+Dcp(ze`ba;VO%zc0IfCuronU?DLuO!)~yOb?p@vd{>o z6M9O6B6gbFk||j*SDKc!VZ~fE!F4ME1mT~f@dy>oUvaP$QYaEhomRypBM_}zAirP7 z_b?|pf&&4;UyoX z2{*OO`aOiz05wP{aIdgRHxl{`^s&mve#NLMJW@3rraEQVNlt zBEr!60$M}7e4LQ{jOhf&U@053 z*%_opZ5wQx4ty6TbZL%_Km6jL3C@RXB?Um!gb|Bl?NpMKFK|s{!xhN#m2CK=?shg@ zZmV ztbcJdNqLFN8;MbH@=gO4r#43W23NL5ItHyK#zFcfNR6k2?f){F91_ZuNp5U{dbC}4 z8f;Y>=nN91?G&blN>eUKKzXLq6S-6#tWF`Vbe2ntm;ukXpQeatKMh5NuQxO6&x2<( zb(!)6v@JCYi1Cb~{kn~R_{ZmQ*MAAQDx(&-9+x`M5TV)wj)U#j-fWa^9N)m)X zl|zXWeo-jy1^N8iNHQ^?`Uk5SpcR;=sSS2j)iaSxCI>R%vpKFU$c^I*rgr!&s2Vhd zV;3fJ>Es~FGVN#hFMO5|y@aX9NcG`=6OJ5-Qm|a0fV9OX2(~CQN@o4Kv>qIW=t~Tz z#$d6y5p=Zw8jYqYFt!?4+SFDHyAg!({1E4&@eRR&y%8*h{{wkIDc>R^zJY=fnT%C} z*cS!We=9h9UJ(AbQvS{`I5-V5r!Dt_B2PpfEtBwt$TA6EKn}Rff+TX#y zQ9wm`kPZJ1Z)eeFa2bqZSczmb2-pD{Dy=anYZhV?Qdu<79OR9*oJgiK^-Nudg*+BZGLfkh zKuQ!^pjrn0-44a4x%j6=TKXWwv^3REP&Zw^_S^V}F*MDkxipl+z(8afx8KH!2L@sS z7yZV(_)UTSQ8N18f~}uAvzw@4{x0zLa|gb23-(+{Y71YH9!D;SmH7oBLz<8yOLzJTdL zsDvTpv=_y3`2DSU41$vHqfm#P7?OcdhWS8i_|^*H+u(gk*z}y{Ptu@SQ6Hz_3`1FD z!c+JM8bdWjUigZ&eu(PR00!Lfyl9{GSD~(7M+rX39GXw&2SLoK1ocfOd@HeoYsUKC z;E31x@h1NNG0IX<_w>{QNwA3|uA>Ai&#r$PR3=@oBP~^LvWg4-W7v4a+qV(#K-2Ks zq#UpXCQU%xyp2ZKUJ9r6K`wZm6c;W9FqsFlSe)Sc6qHT^2qjL@<`m3nkjY{IBlB%g zq$Je`L7Dmnr{UpZC%CeGLOKrUH!|UOMLNDBQ@;!&9*$jz;+Lg3khO3(*n<>|g}))h z@?AL2^6$H{-`|x&kdGD~lp!HB179Ni6rKjEA$*e(+F4H_9huxI%4R77B(TWPiOvc$6a-QR`x2|t{hKDe zLzOG%Ov7Vmv;_Y~#uG>}Gdv0dXJ-I$sc=el3LxwZX#8k%8o!_oQ5fsv_!dXWn%O7? zO;J~FO%5}7Qih9@DF!gyma`SI1E__24$VWqzKH$_XdJYV&`g=*Nw3j;34#RxgHd|6 z7>F?+GE}AgUy>iq7G#Z(hFB?F*YzB}DZtjZ*@A5ovT5}2!ZQj7#^E=OlxA!tcDF@(U8_z&xQu%lw$!14w#vh{m_D`1obBtWeZ_RRt3AXh9( zB*WXRR@9I>h^%eEJ{OEANJ`WPd=3$Hb?piahOq1esvp38B+j*QIxYa&MkB? z&lc*o_G?5(Al@shL&bU~(pW|;pOIl=1&PfPd9u;fR__QYjG&NXu58%q86jm|mG3KS z#5e@>PWpf8y|r6g}vAr?4%;;07IIB{}SoZ0rbGgD8YCf1D2l4B4h(HgusO>%-IRbD>ifu$1Y?B` z_iBrZSo`hdc7c!-slgs7G7N!_)Br6{P3eA;^&8T*U`d;)`ZgLsQHp1zH4rUt#Q6o(G1@6yK=BW{y z08ecWhBg_@jl@=iFn&4@05Cf%Ao4}o4i1^P)w>phX0~iSJDYhEIpUw&zVEwxQiA)*+mknQ{2oOX~3ofP;m>g)EM$pqHDxHA8lr#yrpNKZVIJpxN4!jEP zng&r~2l>VBW0tir&P%(KW3k0`L-2JV4ls01^7Tqp%-zb@~x(JTe%F??<%3FdpW-pmOIY?77Y?*EAZZgkhB8ns6D5QGBRb9!<5<|QI5)Ze$Wofu!+bbViB@{ zjO#=Kx-ihAaTNxCHtEvQf}5iR*M4!_3G)|i2ZkG8gu8=J85}eL|Km&9@NdCZbi=+R zyT^hw4pAha15(7X$X09t*no$Z7)zos6`^v_n-(YS_ZG!x)b2KJ9#sOi8(&%Ld#gPT zt+B-(goIQffL=*NJ$UJo)dAz3v5qj-Xo?+%WOn8ckKOfV%B#M|A9w6Y5o@wzkG#E56JdtMbXB_Rr^Bm%B zX5Zom0EC~+4*&-@Spa~zh1WWqS>L1~#1tlb694xw3nz{(uW|A(37TNvl37+rdT6x` z)$L!f`j=7-FU#@L)2J3G?jN}-2ZnOa;lBMei$9P4%S`+s64&tmvxG-<1Xqls5{M_(Kgf?g z{P-Y0>Zn-1O%P7sl2}+Lp^NKNNQ?%CTnNT6L*z*_78r7*36R?qC<{r3*8xD@Df%k> zluI0pbi!MutVfEWG|N=*vw&1u*x|S@#$kO_yxSK~$BL(Y@xfT}!9m2zS`uMsMJ*7# zjmAURRu%9m2uTQQ+_7*{U*zUC4Xs<4rZvEhBY0uiX_)Xor(vb%JBVWNFadEd#u~B( z+YF0Fvy2Wz19&$?07~el@fw4oBm|F&EBX$qB#1Z8O9}((T2M1`c?Z{)N zq2x*47y?Zte1hKFs7Y;28ayEf4g&Z0&=99fh^Z9xJU{$$go5lebx?|-y97`q`+*&^ z1OUs6u|mNeUG&#M`wryr5ISxj4+iP;#awH6dAE%RL!=;`SdtWIk2AZkQ7LkIJySi zf`;4Q+pH{*QzqKt7~)yY+uD@o?2%TsrCG3&-HGvR%eLf|9HB@#{8A1@*jftVqzZ@f zI0kJPH%TLi11eK(m>&0OEumEt8ivmqUS<%Ed2kxfu0uoNA(R>7wt$&H2o3vN;acGY zByj-(k|W64B_Ty;`(BwD73YbPFwij>zK619249dw0w~3g*6)$VZ^*&nD-59P(FKP` z+?-JIz(5B1t`4$WGP_YHCoa3Sbf1(S)Qo&Vw9DAnqp`2Y#=b6NU$<~V|4aXAH!66P zG5=G#kOp(pLfg9qk{pg88uS@?jkW#2TE=Ym0)Qw|!&809uJcOTqd!c3j^kGb8?pS-@AX zf{vZHcIaHrPDrn5FHbPd!Rt0GFXbp7i6>$ z8VfB_D8X??%A{FU8Nx^VIVMjH?*Xw&F`|8YOb%5zG-C6Bt-u!iWEvKzRK6vjyXEts zd``>fslh$GiAp~rg^>nONFw2Q*ChSCt`C&4Sr+BCQ7Ui9=lA6ERepwbey-sbr4A3qqR?e}&+%|Rg#2nv1g_rl>(6?tqyq<*b=)s@z&$Tp-qI2EK4{GTz;wQQu%|a)#uN28 zgx^00X8Pvy`R8-veQ|uCyd5)o0TA*1fH6k{^T5qVvQIk4A8R^_6B*d|Q%zy%|a5V|>DYv~&RcKwu8sN=Lr#BI<_+YWM7_on$JStaGZq z`(j~?x^zr}XLa8fnD=)8C*+ThPaWt>Y9|By{NHktqs``&ZEq_kSux3hCTH+D*-f#0 zF!+Yk?(aM8;lS+gJFO$Uy+^TQd|$UmJ@Byv++@+cUUISujfK%C(rNeZWPN=k)?@~n#cF(_9d07B!BqSmwQGSHDK1~CK};;I zV7QMa?Hivi>~?+l-9W*%%jLDnCf=Y8Jslf4@4%5IJk~7Yr5v+p70q!k?8K#Fa|tN2%fSGBv6EOTPQyN^ zG$%_~nq`W~;woMS&X-%pv9J+>2P@4|@uLCEsAhAu+=vg<33jI@jDWQWv4Suv-WHfG zcEmbf9|HSi(U=RQCY783r-z!N&cEJN;GvYCV;&P?AakfRfmmE`1PrCMKYVfgeQ-xoOkc(b)yuYU8De6zN?fcKxx zB~pCHPNh*^G*hl$Ej2k=TWz5u%{S?oef*nmbae#@=`^j8$;s9d%%;U=G|~3+wQqf~ z+{#~B{^r;467Kw-hmY;Qr(-slblQDocye+D>>kav`g;w~j66Ypb6r z=bM!kya2LPo|;RgqL+}MBeU+!Bgn!y>7w=uTw{*|Ou>I;+zxv$Vz)1AQ>3gYF`6t5vR>-x<%e5805;=cgzId5yjqSCx zHqX5N*FQGFne*I;)A)ZakucYOszb2_Q(N)>Zv6ii>b@1LLy;NhN9@mIv(vMmygc;7 zf4k$Qvu~XE_rG^E{qy&8jOm9yxmdpPNlE~i`O$Z6;nSZKYyXqgatp42tC*@UE|}R< zg#(8U8#~-T{L&6bkYE4r&-}};zwzV4M@xslvvq*L>z_%c^Dfuf#!P_D)n;XI11_)wGv#?j}~&fo{L{B1t}>^6h=oI@>tuHKZN z+q$3iN(1wa!A}9)05JKVulJ60RNCyrLs0bZK|IO@CK&!B)*(L{=8FwD#~N0o4|3u7 z?r}gX_>nI>Ts#wv?cMl%x-nQ+gD0sZ(C;+*T#_FAIdmOsB7~Rl6aE(3v*zR0P5urxn28iEO;F3#drtt_W)pc z5a}X5kC;RF`vB4xQGOVyMX4!aCl90S2y*x1FIz66WIxJT$EWeb(8nL$y8?EM4LX^XTT$qwZyAc??l)9^19rs6NyzEtOY_&B>KYsZndz zF1991wUvj8&6TMu`*-D`2Pzlw8dn#Zk@+xKJ|7J>vslKfj$3OTFfsbFD^Kh9*se2c z2=3rDf%5v>sbamp>pmT!)xdkOXQ~%#w+PRHUD6M8H|;CVZ5|~J7$bnQyvUct!Mnax zZr4-_~)UA|IY&M))x*sfv|FF&naE;n}NS1bCy<72xn7MGi4yC@mt rzCO@6(C_Pj{pfuW642o2eQt;FShW8$e-hwM@F)UH|Nqbbdl>j%DJQI$ diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.exe b/BuildOutput/bin/Debug/net9.0/certmgr.exe index 2326a6c1d282e90e8a4c95516a796fcbb4f337bf..327056e211085a49ee4dd44d1eab97dae9b1fc46 100644 GIT binary patch delta 99 zcmZoT!r1^sEsR^3zQp;PGNdphG8i)$F<1bx0gy~)uw*c0FbC49Ky1R01Z0~5RU|PO h0%cNxa!EjSi9nt?kTwMJ4S?7btj2V^b3D^tCIA-A5;_0? delta 99 zcmZoT!r1^sEsR^3zQp+_GnfFO5ko421w%4JB9OFXFa<($AUh2xZU$tffMt>yl7PH4 epnNieF%W`OrT|3@f#M)JBcMvd?auK`dzk<}P!n$e diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.pdb b/BuildOutput/bin/Debug/net9.0/certmgr.pdb index 0df438c9224c24725d5981e9b145a90eec9f37e0..18bafc10ed469a6d410ad17ac67db9383b8958c6 100644 GIT binary patch delta 21525 zcmb8X2Yij^8$W#A&pF9CStJO8$jJ~Zk|0Qo3=yOD-XtPstRzOPb50U_d+gOvEow`t zEmpNPswi5mMs?^wrPpRNJE}kwBbFz--_=$Qy7rRj4^Nfx*i_R1e_| zl*SP^0JVTozny zXh*mS;SPk~A$*9idO1OL%PEwNa9TOVN=Ko50K+MNK^OcLil`u{VFiWiMhI#Wp^$GK zL6zz#WQY{x6RA*9l%Qi#3O$V$M2wZBWQk%LN^h9k8o=PK?fQrbflr6 zj~b%!x?d+U59~zYsh!AL2OWHh-bz0XE>EEuwI~Ld1{47EfTbDEM71ez z2k`f{|> zW@V)vtsT>jz8>Syzn5VL3LM*kngK0mNaz-wGbsxmH_ z8UO|3T2L`?9rz0P7WfNr&uT#xvQj7lm}P~C%}$|wU|~)Qi3uq*9~d&R6^#PCC$*vh zz)au(@CD$P+lm?hqk*Ns5#Z$HR`lT%#F^TPjMG|^H?SQz3e=n4nz{hfrnjMm(;HKa zwK1gt?Eq_6h{3>kYZICZtOPd5Ug6$oLhrfscsgs1rwcC5e*VSNAJUe9p-jL~CXvyW zM3sOBKvN(Y=mul}6Ku^X4_F24vNgBTekdQ<8qp1)vb_;S0L_37z(8Ouumv~>Tm=ky zjVJ*q%#)>SB8s-;MbRoHMu2I2Xyx5v=U{22NXcp~i$$g7|Mbu8dG4XAHHL&^ls7u2MQ zGuT#{=FF&q%2YvR0%`G#K>Bz_Rr(W%wa%i}g|5S0aL&f*08t4`4_y#^(@boNPsOszx`b_GfA(meJk_7-0OJ-4 zDgc%P?<_RX`#{7ZgO!>sGEj>}Tw?=uhdx*8%$+|2U4cDov4KV{F;MbS15E+0E_M3d zsJiM#DzFCF2y6v*0|$U(z!~5?a0U1rC;@%|9;j9~YP!swx&fKv z4EP>!f2Rla+R}rb10h?H5in;fH=#4F-{x#eXZrYEr_Nz*3f|!eYs%1}t2;T2qc*$a zC<7R^+rh`nu%d&M?BUS)i=+N~RX@*));PMk_l2>+d#tyoCHvdc7GM|f@qVYjBi-8H zk-piVOg{m1z-dn=KbM|D6?M8r>M2y?Kx>KyS^_!1Jm56&vDFp14Sgx~CUnc4S{%|4=@PG z1(ry^BhG5@jXJ&!d=KzGa2z-bTmY^DU+Cg}1O5~6`%!`B2zgQ@iX|$#>od*W>Vw?V zFoz;E2lGKM@pK*U0{>u&a>cI;o&g@Ir9Z3VZ$O`{@hJEQK<}mTXz-~-R^kkXAcMME z27HVj3Lc|zcN|`wJP5vJn!f@3e8y?2@rK|$D?0(hkiLX5ceX zKDE&d@i6=jy*n@*5fZcvMrb?^AI2hyrV9I@j4y>{{-+(n!h3{%)ASDDtxOne|PX==v*Q8V`b1e=s_Cq zNy1A1fRxq@y%52K%$QF^g5Kc#;{urX1Lvbfb%1$)aNg&-YJ33rY3O|S#QuTcA42B_ zF;4|okXI@2N#JQ@brkT8W*CGB{?Hd_JRLj$`W%f92JZ|V%SUFA0nX#gW15Q$hk*01 zt&a088Rt0}{$ZM*`4mjiVOGu19fqke4A;0H_%t2Q0iO;&LYILRe5A%L@Y{5}GPoW6 z;Ph|Qaqiv48nd?Rt(|ju#nl7rprsFVu0)aN|pSla6zR-qP_h z;F|$`fp6>lmEiMvM`!R+(<&ucyqfcf7=R>i97DcY%-9W)2VBZXKTvz6X4q z=C299SI3)y?*q?r_^onNErKCiOThi|KC0>DT$n;E5nX!T9gbok zo$-0#j=6X!5qIQqY#Po8)xb~acpdd*Wq<6PPCr-R6rkt44e9wAU3%`JvpQZ2`~zJD z%Y&cO@rvNQjp_6I$cn|~G$g=z{w01v$GL?UU*eZ^oEv;u$2q?%I?g-B)t9*Sn$Exl zT&EOQh01~70Gt)%9=fUXa{-_0I1lj`xZpYCbC2HwAFoY;Fl?*LCxG*O>C7jGFHwPs zS_IyZZ|gW`_%)(B{anEk9p@I`!4=Ty=k4wr9Zv(li()2e`E!H5)p0yRBKi)7TrI*t zMED+jvc@goKVS@;IIeVY8SLPH z;z~GOi%=H)5sq8VD-37&H+X^OSJ9=+XM+d9*HPnhz&nCh1%HhE=4$bI8~9hpt%-=h zhDC@l4Ng9xKSLKU))H`wpW~A49_^F3>x4}AEs`!1X;ORcq;3%^8Q&~$Jvjkwg2Pi6Phy@ z_6O)Vr>~^r?B_?)&iL%F@`77szXrZA5J#x0tL6sqAW_qm0q>_49p{-BtmC{Hgot!k ze7=x|>Nxv(hjCO$8`x?tgJYn>bqV;WP+iBPz-#DuI(QxMb=tUG*Z6vH-f4<8z5$#o zyGi34!F%$;Zl@XEf`M;xcK_E~U{=J$%0lXggK8^Ftt1pJQczf^$ zVz`TUSA#BnIF9A;xnJ&&VtEGuk$B^cK|=2#jgwAQTRK!5yV$L8Ri&>F383i zjoaDP84Y?k&>huq`ng>_be!AOQ^)zl(o4s=S-o|fo7D&WeMhydxYNUKhI$^NuP%NoPN%4kc(p=*pRME5DY$8$N5B(q2qkG z9-`yCVuy+>R{^~D57Y4$I?juSdu%xThq(bLpLlN`;WR+!B|H-RsMbQxFcbWk#&f|( zfuGR%M}rsZ{A0jR>HK5CPiveHnd3Ch<;x0W=^|KQ%NEUC38KMsz|UwI@Kl;0Cb&3n zWE0UCr=NRtlFt8?j`O8AL*wW8DS!&n8puV0548e#ZA{kjOoM};hd&*@?-d8X2+pfK zPm6yE{7Z1V#ybegjp1&2VE+A225-I;p-{&;gN-`Q8En#V_P?d$ z?BA^8?0;Lw+5e7J*TumwY|-%_ak*uF2b1s+e7|Y_Z@`P8|D^GI;N6gMD~%fzk$CG9;ET#!I$HbaYW;PfPV@;UE_a( zS8#g~|1a>V;7>IFBk;GuFKhg7@J;SSSP@oPqkmx74#QNfhL6GTf`6_hcmiG-{pYOE zzu+Umd8u*(o`N3-=d%j)XW;k2`C7sJIXGTu$y;gW|ADUuU(5S18-&2O12ELo5-8wz zzCoObAV2l#jDxHpE4xi8WWf$yp2_XE#_{z&8H!7HQk*6lFt z79M!e>Zs8v829P;M;PY=qN2;sC+>qfju(`4M8}O7=VPL(D?T^sII?!;k5Qo$FSz3% zc2bvMJ~BL`<9zD-P{;XZ@e>{IhIw*D$B!fZHQX{d3*?K_XDlY&2#kt0}bewzOOHs?^=K{XcaZX>N|qkKY-(LJXDIv=5a z6pdU7xPYH@yqb>l*?|2&!(T~j0AJsK(ec*c_rWV`e!jhapm8o=UjKg+O?tAnSf2`xJ;eYxP|4%e^rRQa=C@;7L@!cF;mXBLB+%79At^|9Lz*Fh$;@mh3J@Z)Q7MWvZ5LOs|5lw23* zyD(lZ&J4K%RdgI%1qJFj`>X0W`-60x{TAj{t%e*S_@xLTI?n!39p?NwBxMmin?-dM+j!J8<# zR#%s@Azl}O3rNs$J~}7rINw+#y~LaAIG?JMb)0*og^pv}pcKXWVvIRKYh46+L-rDX zL&rHj|C(WkbPNtIDwszK#b678=)L3+t6A$ES5QC}oe=x^u-dHYXPh-?(9i2@8**_>T2EGGG^1*akuV88ocB5=*;ZvRdZ zI1X3BK>bl&H|h@QP6ATzRWQU{^({zc+42v6Wl6KSt_S(?VL-4xO2;}C0{RMjpr9tN#b(R^h;AzE0 zsDdJ7CG>iR8dyKd%B?IdyP9vuIp!zGRG|>WH&H1_5BYA_OZJVod>i15&%J1%X~@Ay z+0adRip|5ZRNBix8i{Xp9p7l;k$|k+5!i(+QK9=hKMb;C_1%b>FRRPfN*tr5gVzi)J`bxxTv1#@q&yFcpf^z!1;-rB4+HI$EqEj| z`UVjN{Q;>^lC0c*M0KNDkR}|w_~*#tB;qS{2bmgV)<(H5JhW=XN_(2j`HIY;0Mb(q zjklDgI3~|e$8vH=M;+V9s_c|98OiXam26pS=muPDx%F*fG0AhUnQkMd2gSgPT~fB2 zV=8nHaSZZM=Pp-=iDt__;P?XH9uTRm8L9*>21DYWKz8GAh_6sOD(xow#$EP}i9BI3 z)31o>LCs{IQIO95s-Q0h!i=n0R|fI5j<5K5eUi?{ zReorPylu9bow@pUAVe@F037QP7M zTb40F2rWRckbF@=ON6a}){<|W@diS^ z-)bkh=S;p;>IifKngLA#-1pAzhOj%(1L!Gj|IX`;un*8z@+J%VqYvbBxq;H~aA6w4 zK~n#2>0pEzQtzwso-s`78Ouf>94Yk{%SRy`E%iTFjz!2*AGe5WvJvJ0<0W78CNBoQ zk+k7lxLa6oD^?Y^TajcvBI?jdk$_vHMBENF!!1w~oGKdQ(mo$&^Lg}GEW;UmDg7tT zUjrC-_5oN5NdCc<(% zJsSv~{RvXCMkY?ItErh-~Be9H$u38hznCUC44f#CJ=&aD#Y7Kh*dW!Jg^+*EEQZ{iVNDI>pcr!MtP;oqNK|E3VpS9UHp>PXFuNG? z(CiY(J98{SvS7$-bBiIv<|kTAv}b;*l*N$UClv;p=<=Ji>R83K3Y@=*?n;_WXh5f$ZAU|+(bD`Es!5BO@u@r zK$cZg!_5?|rq(b~y=6AYj?0Q6QM{B?Qx*)_etIILWqBdw!R5s@G5?W8EtbVnmPkpp zWdg{aD-t2st|){=0%=c;V6P3bMpmKJiy^PAq&g-VzA6#&>Z(-8o-1sST~-%Ly%_S7 z)g@A=NSS{m=08SDl2ph6Yiv@tMS4)~8j3Pe_*x4j;y^ZEp9*vpU4cZNdrP2~daoqTlM<{&B`{?cB{nwE zr2UDFJ*fty7d6^n49nU5C6H)+GZT$DkP3-y2lDWNVn_^JyonOtPmTAa>X2U4@cm*~ z)iP{}X zO!TBMNH3~?s1TMjke;*-(u=kqq9hYNhxDX}hiuT-A1;Qx59vvtL3+`*hb_&q>m9K) z_oQG*FN!{5gXMEbPuh0GRsp7iM=Z&Ff+}puZ7P;hJ(V~;FgqiC%;>>MS?QEMJ}WC@ zbPlUShG%87q9!B-yQO7jj+vIX)hK$L|NFI|pCX3Rg95Z}yN>&zVhLnRdveUDMkIjK0Eeqg`GX^K+ZWXX14liN`$*3 zrurx)t|+?Yd|~<8R50fI2b1#uTn!KyZfX-hJ8QA4~@PYvw8TN z2P&m3UjD(sl>HIq?>#z@mlb#*Cg)ty=GLo4$h^?eU*C#rI`B8|hACyOvokLySOUgO536H{kYI8YSU?wMlgT=mxK^S$;hD-K=p zL+@XHX&xH6A^%jPmYYBBx8P>t(_McTC3U>vW?5joc0X;xA>)?c-yg6){P^f&%H6>5 zF?nY%|9J1~Z!#a=DT?i$s`MzGl$|>|y-P;+_{^Mck?Gl9{e;nMo)K2CWbrD?g;6P$ z&WJ&ESAKDQRFeJ3?{oLri^jFvvF-lGCN~-`3V-08GASnmws#`JKI)X-2?*D#$9gwI__g}1cf7$z4N~L# zz^t+;3UDy4hPKeruRQlZ0u_xnv*_j^X*pwGThFZ2lxxoG+3 zz9}lfJ^tA9L3_`9w$1*_;`#j_%szi@P1B`wMsL14xQ|-8uSNK((S3v4S+pscl$n!} zH99RPqeI%Lj2@V+gLx{VEgrHL=5<)s#nNHQh?9+{cOKfQ@$deg?f&ula`mCOxSNv? z7G0h-`L-$IOLczVYK9HVwiLbB*B}fVmhUM#+;1q9mBB?}0~CM5h8_m*+n~JtiXbEM{&qaSu%!9IT=v%qDN=U9{!Yu2ifV#cT%=CX6QrG_X zrU5%1{BqOuTsd$pCtzmau}Vt%toZShMsaI12mECb#aDLT`^UY{!96>hlqvPl+n(uV#5)?bZ`;$+<<5QWcH;EO z>M7UX`T3`Y{z=v6md=a))bv|$`;JEvBbTnL@$At%YnRQb;2xR#@ka?KvfHmIb>Q%X ziC4;X$h9;XcDe9w!DpXexw&)Jj6W^b%o)F4YWAm6qi;##^>;U~ylqPE654drA6M4g z?R;wKy6--Z3GfL>U%%_drSf0K+zS<3|LD|qMq#d3o@tR~!JbPSEj7lS{Ce~F;`VM2 zyKEaKGMd?UOsQ07tbck~+%Nh4W=vS~eDSRVZ4VwPdo;%9Lf?*CJ07p9PTA4DU3mHL zHmmX353QY7zT511Wa~=_4~O(Pk#%)L*|^^Br=B&lFU-07sMLUlEm!qv7(66!=g7jg z5y?ey-`9HdebJVYiz6m9dT_CBqjwH;h)TcnQ-#}UoqwAe8?bNAs`BafLERQE`n}%T zL7nSuSkSx2o=veI&%5~5?YO>fN&juTn;$mgKk>BxvG0}**!|y*(HjEB{7@n3UC#~c z!q%O=b3E(lr^CzzbK}(qUzv(pT64o2bri)kpa+X_ET*uS#bPCktt?J>i-IIkuuK%3 z2rRhZhTHan^Xj9wZ?t-K+JSYD!N5coomdQEF`dO)7CTv-Dk`_-j%fbs%+gkIbj~d8 z1J*c;wA-w4K4}ltM%$+Q#*6%k?gchcVB?DBO;^uuyIu3udCP3mSE(1?jd_jOX%D&7 zQ)!>4l40zq{&e($DGY+vh z%hhyslUC~@-<{#2*{e$(8p>I?GSlZ%l)Y<;A@$W+j5vlYMqK7v@I;U~j`-f0t(*ZbS775gC7wErW;K1;o_|H^BOsH`6bT<98(v+UljF<4k(R=I;MeR zEvZ=thbPri%$}GdxxPWDYz0)jy53L)h8j+T1u=qQ7_6A_|BjSg1HL(}7Oehwux9;N zlss{VDTtq3bhI*d2%)r#6387D-zdi>}-QC)rG*iBJG z4LzRO_|>^j%s~+ott{5F*aMOFLF=08N5?z6)k3`|tI@^&r9<3vc~#^Z74Pz*Mr}3u zM3g&wZHw5gE;!*KBGi>98j4!#r4ymhe?Jimy>@Y^sI7J^t|{siL77I#(HA+!C}tlywvE)_4{nFzL7J!p zb7=+7P({LIz*GF9u~MmeMyy>gUp$q2tv*NE!a!uqsR|GJPa z+N-@Us%7x(RJfxL60}Zf+);ggv8^(wv)cAjmEH>X6Pkz6h^Lwr6>MD6Qo+cNo?!#0 zsfxKW4Rg=M?xk766?16{bI+9t8YZEB;7BNSX{Q5)aB>ZxmUML)IuXZF{aA99Vz?P}o_-lX_SllFmcf7N`w2DX~I z*JH#$b;$MB6;n}8N0d{SXJDAQ6dsK#+4zi7{or~OcAiJq6T?pnyN|HPY?RR6D2bP@~uW*c{{&AyD&BMa>M6pM@+ph@x%WoQ%S6{)u ze3MeJRGIMIdi?-sV(f%XH)hV1+6WARn>a^pr~3S#5(qEI8=B$ra~6dWH=coY88j30lS zVJ3WUVa5lcN^YaqE7ox>m1RFf3T>rVXe<|eK!_t~CWFe=9YJ#$1co|-co_tRJAx#K zF}RitgHvP>TGJ7G0&ghfMsCqA z4Ziqa1i~L#wsuaw5iszcUQfG7`{PB1+|wf!vx&+matY_gXTpkWjQY{7)OxS3gQLSf zkS+2JiXWx+{qpU2ycPMs*Ckys`|~95AEOnGb^4-cqwp&);>W7-Ukw-I)U96)A5;lL zo$TWrYHyAlpx})ovXCW~ttt(dE_+cyh_Ko~+5bBHwXVhn+yHt$e~ z(Go9_aCGQ(dr0)Fn<>|}+=$X1CS|J+Z&$G@*ay>j5{?o0u*q?m#EZHqwLJMPB4(yA zcQm>ui)5~%ccp;-cqb%lRF?PB8s22Ww=Z~yikFIVA_utgz^0p^cxoPegk4$hk=t>A z(cDj7m+=PBNN(I5AMCYuqhb$L?7Okg@==8+6pm;<s*$225 z$-(6d4?d&jE6@L1>0K1tb*=O%F3?|8IxJgil<{Cx3}Q%r`Tg4RMg zU#u`-F$8jwIGzn=7`zlSUb$jS)WSRUt@yY@o*Z!CisWc+iolm`{ut5P<($(J*L|J_ z|G%~v$AwMaI-Kf-7liUOg0Xth72OqcFkaL0G(ykYPVrURwwd?2WFx=u)vmW#-Ib}W zdu~-KYs|%f@s?&zwnKZ zXab9mf{#p6cs%eYycGW4#%d;>UHIrno&?;@@7biBd$DbwafTROUG>L^UXbmPJ}4-^({#2MY0q0RnM z&9t@E+30L-kU1CgPBWu?&LtP03Qd?o;haqyPr_?_XZ?)ud+;E&G3V;cS~C1mHTH#^ z=*-(B8gF|KqY-i<3a^Giy=~VWdqy`AD<%osO2uARvHv6T^Tdpm^f%6#VY0wgp;QAMZ(^S zxr}3I>$&Gvaph;5qnLvn_PTt>=IkLp#Ax;ao@h?HACD}0R!-;u#Z&WOyvn#d_=-#R zK0akHpTu>?i)j4GGgltA8Cu?M?*g#BG%f2i2*VwL7~5(TTUub}_)W+?gHl!DR9j5-UH8BdhFQp(JQ%B%^>Y(8ta z8@=5UrXU^)#?WHV@@k=&hf?ntb^AB5xLyAC8;iK0y4|f4`k_@~Xns&4o>#L&uSQ&0VzVYq0s7uEd5PZ&P8<*7~Y zhp6fI4|m2Mfu~3~sO^sC)||ov4`;Xs${zrKHiRK`{VE|2e>UP*Mc}`xD)vu9@~ogr zK~vj7TfRE_!I_|a{68BGa<=qI&;*LCjM>|NEJ^qTcu?SIk#CKdvMushN*Ehz07A$92R)^~c9` zDlWn*9O)qsC-U&AW`M1BH{izoxQ@lfLyYRh`ZH1cnG`fQQ zKlF~{+f=j6wFbWRv8_~RJ#CB5y!td;tWuvm?IhgPw$G}G)#|us5yGr)cor_!sAr$e z7i-ln&+C>iB{O-9j2xL@+SIbGQ&&H4DE!pR&&!GR>UYnxL^-wBfA!G%dH+oc;DesM Z4~D~yjHNJw-sQ0fBP!T7EUzML{|9W%2-5%n delta 20266 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 : ICerti return han; } - protected abstract TAlgorithm CreatePrivateKey(); + protected abstract TAlgorithm CreateKeyPair(); - protected abstract CertificateRequest DoCreateRequest(string subjectName, TAlgorithm privateKey); + protected abstract CertificateRequest DoCreateRequest(string subjectName, TAlgorithm keypair); - protected abstract X509Certificate2 JoinPrivateKey(X509Certificate2 publicOnlyCert, TAlgorithm privateKey); + protected abstract X509Certificate2 JoinPrivateKey(X509Certificate2 publicOnlyCert, TAlgorithm keypair); protected abstract TAlgorithm? GetPrivateKey(X509Certificate2 cert); @@ -81,9 +81,9 @@ internal abstract class CertificateGeneratorBase : ICerti X509Certificate2 cert; - using (TAlgorithm privateKey = CreatePrivateKey()) + using (TAlgorithm keypair = CreateKeyPair()) { - CertificateRequest request = CreateRequest(settings, privateKey); + CertificateRequest request = CreateRequest(settings, keypair); DateTimeOffset notBefore = DateTimeOffset.UtcNow.AddSeconds(-1); DateTimeOffset notAfter = DateTimeOffset.UtcNow.Add(settings.ValidityPeriod); @@ -93,7 +93,7 @@ internal abstract class CertificateGeneratorBase : ICerti X509SignatureGenerator sgen = GetSignatureGenerator(settings.Issuer); using (X509Certificate2 publicOnlyCert = request.Create(settings.Issuer.SubjectName, sgen, notBefore, notAfter, serial)) { - cert = JoinPrivateKey(publicOnlyCert, privateKey); + cert = JoinPrivateKey(publicOnlyCert, keypair); } } else @@ -105,10 +105,10 @@ internal abstract class CertificateGeneratorBase : ICerti return Task.FromResult(cert); } - private CertificateRequest CreateRequest(CertificateSettings settings, TAlgorithm privateKey) + private CertificateRequest CreateRequest(CertificateSettings settings, TAlgorithm keys) { string commonName = CreateCommonName(settings.SubjectName); - CertificateRequest request = DoCreateRequest(commonName, privateKey); + CertificateRequest request = DoCreateRequest(commonName, keys); SubjectAlternativeNameBuilder altNames = new SubjectAlternativeNameBuilder(); string subj = commonName.Substring("CN=".Length); @@ -138,6 +138,8 @@ internal abstract class CertificateGeneratorBase : ICerti if (settings.IsCertificateAuthority) { + request.CertificateExtensions.Add(new X509SubjectKeyIdentifierExtension(request.PublicKey, X509SubjectKeyIdentifierHashAlgorithm.Sha1, false)); + request.CertificateExtensions.Add(new X509BasicConstraintsExtension(settings.IsCertificateAuthority, false, 0, false)); } diff --git a/certmgr/CertGen/EcdsaCertificateGenerator.cs b/certmgr/CertGen/EcdsaCertificateGenerator.cs index 32d024c..92aaaed 100644 --- a/certmgr/CertGen/EcdsaCertificateGenerator.cs +++ b/certmgr/CertGen/EcdsaCertificateGenerator.cs @@ -12,19 +12,19 @@ internal sealed class EcdsaCertificateGenerator : CertificateGeneratorBase { + // the list contains most used attributes, but more of them exists. Extend the list if needed. + private static readonly HashSet AllowedAttributes = new HashSet(StringComparer.OrdinalIgnoreCase) + { + "cn", "o", "ou", "c", "l", "st", "s", + "street", "sn", "gn", "givenName", "surname", + "title", "initials", "serialNumber", + "dc", "uid", "emailAddress", "postalCode", "poBox" + }; + public SubjectValidator(string settingName) { SettingName = settingName; @@ -23,7 +33,14 @@ public sealed class SubjectValidator : ISettingValidator try { - X500DistinguishedName dn = new X500DistinguishedName(settingValue); + X500DistinguishedName dn = new X500DistinguishedName(settingValue, X500DistinguishedNameFlags.UseCommas | X500DistinguishedNameFlags.DoNotUseQuotes | X500DistinguishedNameFlags.UseUTF8Encoding); + + string normalizedSubject = dn.Decode(X500DistinguishedNameFlags.UseCommas | X500DistinguishedNameFlags.DoNotUseQuotes | X500DistinguishedNameFlags.UseUTF8Encoding); + + if (!EnsureAllowedAttributes(normalizedSubject, out string? error)) + { + return Task.FromResult(new ValidationResult(SettingName, false, error)); + } return Task.FromResult(new ValidationResult(SettingName, true, "success")); } @@ -37,4 +54,196 @@ public sealed class SubjectValidator : ISettingValidator { return ValidateAsync(value as string, cancellationToken); } + + private bool EnsureAllowedAttributes(string normalizedSubjectStr, [NotNullWhen(false)] out string? error) + { + error = null; + + ReadOnlySpan normalizedSubject = normalizedSubjectStr.AsSpan(); + int currentIndex = 0; + int totalLength = normalizedSubject.Length; + + while (currentIndex < totalLength) + { + // skip whitespaces and commas + while (currentIndex < totalLength && (normalizedSubject[currentIndex] == ' ' || normalizedSubject[currentIndex] == ',')) + { + currentIndex++; + } + + if (currentIndex >= totalLength) + { + break; + } + + // reached start or RDN (relative distinguished name) + // note that single RDN might contain multiple values (rare cases), in such a case they are split by '+' (e.g. 'CN=pankrac + OU=machinists') + while (currentIndex < totalLength) + { + int equalsIndex = normalizedSubject[currentIndex..].IndexOf('='); + if (equalsIndex < 0) + { + error = string.Format("Name-value separator (char '=') not found. Search started at index {0}, searched substring = '{1}'", currentIndex, normalizedSubject[currentIndex..].ToString()); + return false; + } + + equalsIndex += currentIndex; + + ReadOnlySpan attrName = normalizedSubject[currentIndex..equalsIndex].Trim(); + if (attrName.IsEmpty) + { + error = string.Format("Name of attribute is empty (index = {0}, equals-index = {1})", currentIndex, equalsIndex); + return false; + } + + // validate name of attribute: + if (attrName.StartsWith("OID.", StringComparison.OrdinalIgnoreCase)) + { + // explicit OID + if (attrName.Length < 4) + { + error = string.Format("Name of attribute '{0}' is too short (length = {1}, index = {2})", attrName.ToString(), attrName.Length, currentIndex); + return false; + } + if (!IsValidOid(attrName.Slice(4), out string? oidError)) + { + error = string.Format("OID of attribute '{0}' is not valid. Error = '{1}' (with OID. prefix)", attrName.ToString(), oidError); + return false; + } + } + else if (char.IsLetter(attrName[0])) + { + // regular name (like 'cn', 'o', 'ou' etc) - validate against list of allowed attributes: + bool allowed = false; + + foreach (string allowedAttr in AllowedAttributes) + { + if (attrName.Equals(allowedAttr, StringComparison.OrdinalIgnoreCase)) + { + allowed = true; + break; + } + } + + if (!allowed) + { + error = string.Format("Attribute '{0}' is not supported", attrName.ToString()); + return false; + } + } + else if (char.IsDigit(attrName[0])) + { + // explicit OID without prefix. Not according to the spec, but used by some tools + if (!IsValidOid(attrName, out string? oidError)) + { + error = string.Format("OID of attribute '{0}' is not valid. Error = '{1}' (without OID. prefix)", attrName.ToString(), oidError); + return false; + } + } + else + { + // invalid attribute name + error = string.Format("Attribute '{0}' is not well formed", attrName.ToString()); + return false; + } + + // we do not care for a value here, so find its end. It is marked by '+' (rare cases) or ',' or by end of span/string/value + currentIndex = equalsIndex + 1; + while (currentIndex < totalLength && normalizedSubject[currentIndex] != '+' && normalizedSubject[currentIndex] != ',') + { + currentIndex++; + } + + if (currentIndex < totalLength && normalizedSubject[currentIndex] == '+') + { + // current RDN is multi-value RDN, continue to validate next part in inner while-loop (e.g.: CN=pankrac + OU=machinists) + currentIndex++; + continue; + } + + // end of RDN, break to proceed with outer while-loop on next RDN (if available) + if (currentIndex < totalLength && normalizedSubject[currentIndex] == ',') + { + currentIndex++; + } + break; + } + } + + return true; + } + + private static bool IsValidOid(ReadOnlySpan oid, [NotNullWhen(false)] out string? errorMessage) + { + // OID must have at least three parts ('arcs') + // arcs are separated by dot char ('.') + // the type of arc is ulong, so the value must be in ulong's range + + errorMessage = null; + + if (oid.IsEmpty) + { + errorMessage = "OID must not be empty"; + return false; + } + + int currentArcIndex = 0; + ulong firstArc = 0; + ulong secondArc = 0; + + MemoryExtensions.SpanSplitEnumerator enu = oid.Split('.'); + while (enu.MoveNext()) + { + ReadOnlySpan currentArc = oid[enu.Current].Trim(); + + if (currentArc.IsEmpty) + { + errorMessage = string.Format("Arc must not be empty (arc index = {0})", currentArcIndex); + return false; + } + + if (currentArc.Length > 1 && currentArc[0] == '0') + { + errorMessage = string.Format("Arc must not have leading zeros (value = '{0}', arc index = {1})", currentArc.ToString(), currentArcIndex); + return false; + } + + if (!ulong.TryParse(currentArc, out ulong value)) + { + errorMessage = string.Format("Value of arc must be in ulong's range (value = '{0}', arc index = {1})", currentArc.ToString(), currentArcIndex); + return false; + } + + if (currentArcIndex == 0) + { + firstArc = value; + } + else if (currentArcIndex == 1) + { + secondArc = value; + } + + currentArcIndex++; + } + + if (currentArcIndex < 3) + { + errorMessage = string.Format("OID must have at least three arcs (value = '{0}', arcs count = {1})", oid.ToString(), currentArcIndex); + return false; + } + + if (firstArc > 2) + { + errorMessage = string.Format("Value of first arc must be from range [0;2] (first arc value = '{0}')", firstArc); + return false; + } + + if (firstArc < 2 && secondArc > 39) + { + errorMessage = string.Format("If first arc has value < 2 then second arc must be from range [0..39] (first arc value = '{0}', second arc value = '{1}')", firstArc, secondArc); + return false; + } + + return true; + } } diff --git a/certmgr/Core/Utils/AsyncResult.cs b/certmgr/Core/Utils/AsyncResultT.cs similarity index 57% rename from certmgr/Core/Utils/AsyncResult.cs rename to certmgr/Core/Utils/AsyncResultT.cs index c8fbaab..2c2f1c2 100644 --- a/certmgr/Core/Utils/AsyncResult.cs +++ b/certmgr/Core/Utils/AsyncResultT.cs @@ -14,6 +14,21 @@ public struct AsyncResult public T Value { [DebuggerStepThrough] get; } + public static AsyncResult Create(bool success, T value) + { + return new AsyncResult(success, value); + } + + public static AsyncResult Success(T value) + { + return new AsyncResult(true, value); + } + + public static AsyncResult Failure(T value) + { + return new AsyncResult(false, value); + } + public override string ToString() { return string.Format("{0}: {1}", IsSuccess ? "Succeeded" : "Failed", Value?.ToString() ?? ""); diff --git a/certmgr/Program.cs b/certmgr/Program.cs index 758ab4e..19a8a48 100644 --- a/certmgr/Program.cs +++ b/certmgr/Program.cs @@ -6,17 +6,6 @@ internal static class Program { private static async Task Main(string[] args) { - // args = [ - // "--job=create-certificate", - // "--issuer-certificate=file|o|c:\\friend2.pfx", - // "--issuer-password=aaa", - // "--subject=hello", - // "--san=world", - // "--algorithm=ecdsa", - // "--ecdsa-curve=p384", - // "--storage=file|w|c:\\mycert.pfx", - // "--validity-period=2d" ]; - args = [ "--job=create-certificate", "--issuer-certificate=file|o|c:\\friend2.pfx", @@ -25,10 +14,23 @@ internal static class Program "--san=world", "--san=DNS:zdrastvujte", "--san=IP:192.168.131.1", - "--algorithm=rsa", - "--rsa-key-size=2048", - "--storage=file|w|c:\\friend-rsa.pfx", - "--validity-period=2d" ]; + "--algorithm=ecdsa", + "--ecdsa-curve=p384", + "--storage=file|w|c:\\mycert-ecdsa.pfx", + "--validity-period=2d" ]; + + // args = [ + // "--job=create-certificate", + // "--issuer-certificate=file|o|c:\\friend2.pfx", + // "--issuer-password=aaa", + // "--subject=CN=hello", + // "--san=world", + // "--san=DNS:zdrastvujte", + // "--san=IP:192.168.131.1", + // "--algorithm=rsa", + // "--rsa-key-size=2048", + // "--storage=file|w|c:\\friend-rsa.pfx", + // "--validity-period=2d" ]; using CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromMinutes(3)); diff --git a/certmgrTest/SubjectValidatorTest.cs b/certmgrTest/SubjectValidatorTest.cs new file mode 100644 index 0000000..bfd3012 --- /dev/null +++ b/certmgrTest/SubjectValidatorTest.cs @@ -0,0 +1,21 @@ +using CertMgr.CertGen.Utils; +using CertMgr.Core.Validation; + +using NUnit.Framework; + +namespace certmgrTest; + +public class SubjectValidatorTest +{ + [TestCase("CN=www.example.com, O=Example Corp, OU=IT Department, L=Prague, ST=Czech Republic, C=CZ", true)] + [TestCase("CN=John Doe + OU=Engineering", true)] + [TestCase("1.2.3.4=John Doe", true)] + [TestCase("OID.1.2.3.4=John Doe", true)] + [TestCase("OID.1.2=John Doe", false)] + public async Task First(string subj, bool expectedSuccess) + { + SubjectValidator validator = new SubjectValidator("TestSetting"); + ValidationResult result = await validator.ValidateAsync(subj, CancellationToken.None); + Assert.That(result.IsValid, Is.EqualTo(expectedSuccess), result.Justification); + } +} diff --git a/certmgrTest/certmgrTest.csproj b/certmgrTest/certmgrTest.csproj new file mode 100644 index 0000000..b957529 --- /dev/null +++ b/certmgrTest/certmgrTest.csproj @@ -0,0 +1,19 @@ + + + + net9.0 + enable + enable + + + + + + + + + + + + +