[llvm] [llvm-readobj][COFF] Add support for more CET and hotpatch flags (PR #150967)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 29 02:13:06 PDT 2025


https://github.com/kkent030315 updated https://github.com/llvm/llvm-project/pull/150967

>From 50cfe1d113ba02acdce41c0503df2f7c0738af81 Mon Sep 17 00:00:00 2001
From: kkent030315 <hrn832 at protonmail.com>
Date: Tue, 29 Jul 2025 00:04:40 +0900
Subject: [PATCH 1/4] [llvm-readobj][COFF] Add support for more CET and
 hotpatch flags

Split out the COFF dumper from issue #150761.

- Decreased the size of existing `has-cet.exe`.
- Added `IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE`
- Added `IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE`
- Added `IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY`
- Added `IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_1`
- Added `IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_2`
- Added `IMAGE_DLL_CHARACTERISTICS_EX_FORWARD_CFI_COMPAT`
- Added `IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE`
---
 llvm/include/llvm/BinaryFormat/COFF.h         |  19 +++++++++++++++++-
 .../llvm-readobj/COFF/Inputs/has-cet.exe      | Bin 94720 -> 10240 bytes
 .../COFF/Inputs/has-cetdynamicapisinproc.exe  | Bin 0 -> 10240 bytes
 .../Inputs/has-cetipvalidationrelaxed.exe     | Bin 0 -> 10240 bytes
 .../COFF/Inputs/has-cetstrict.exe             | Bin 0 -> 10240 bytes
 .../COFF/Inputs/has-hotpatchcompatible.exe    | Bin 0 -> 10752 bytes
 .../llvm-readobj/COFF/cetcompatstrict.test    |  16 +++++++++++++++
 .../COFF/cetdynamicapisinproc.test            |  16 +++++++++++++++
 .../COFF/cetipvalidationrelaxed.test          |  16 +++++++++++++++
 .../llvm-readobj/COFF/hotpatchcompatible.test |  16 +++++++++++++++
 llvm/tools/llvm-readobj/COFFDumper.cpp        |  11 +++++++++-
 11 files changed, 92 insertions(+), 2 deletions(-)
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetdynamicapisinproc.exe
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetipvalidationrelaxed.exe
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetstrict.exe
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-hotpatchcompatible.exe
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test

diff --git a/llvm/include/llvm/BinaryFormat/COFF.h b/llvm/include/llvm/BinaryFormat/COFF.h
index f3b5d5e3f23c6..64fe2160f9970 100644
--- a/llvm/include/llvm/BinaryFormat/COFF.h
+++ b/llvm/include/llvm/BinaryFormat/COFF.h
@@ -694,7 +694,24 @@ enum DLLCharacteristics : unsigned {
 
 enum ExtendedDLLCharacteristics : unsigned {
   /// Image is CET compatible
-  IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT = 0x0001
+  IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT = 0x0001,
+  /// Image is CET compatible in strict mode
+  IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE = 0x0002,
+  /// Image is CET compatible in such a way that context IP validation is
+  /// relaxed
+  IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE =
+      0x0004,
+  /// Image is CET compatible in such a way that the use of
+  /// dynamic APIs is restricted to processes only
+  IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY = 0x0008,
+  /// Reserved for future use. Not used by MSVC link.exe
+  IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_1 = 0x0010,
+  /// Reserved for future use. Not used by MSVC link.exe
+  IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_2 = 0x0020,
+  /// Image is CFI compatible.
+  IMAGE_DLL_CHARACTERISTICS_EX_FORWARD_CFI_COMPAT = 0x0040,
+  /// Image is hotpatch compatible.
+  IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE = 0x0080,
 };
 
 enum DebugType : unsigned {
diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cet.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cet.exe
index c77060d976d2ff57dd628bc97ce1261aba5ab399..08d8a2efc3b2e124e263f9c9d666e210e4ba01bb 100644
GIT binary patch
literal 10240
zcmeHN4R934mF|@^(h4C~##$rdzX4Vj{t*aPN5GO`1rli-k&=<HU1!<LvKomEtKH4c
zEI$spNM6adJhx|jP8_?A%YjHGj?3kfbG}&M)ZGeURx&szu&WM^oGt&9Jy_gXcCPpf
z_T2YoX2l|#<SJFEim%+%^!NJp>({SecfamlvGy<7ADujC*;vn5>qEKh`~wefN-LUR
zb6G*wjN8}@aIQ1CyJrH64BBHOAUcb&T!VE9Sp<w6lbOvnbfp_vZBbz=Ndrk*9HY^T
zrHt(+s*$lV>d3=bi_sx5kv1?^0qC5^STmKckUVqIG_#$^*v`!Ily(agX`2Gx#X at 9c
z5RKg$2Ph+n=zT%7)u;I2mg!)DVaSnhGLi>fFEGVeCpm}=hOZ2HKstFCOD>3*g2ouZ
zFyvr+X7Z4}s2uf!Y4`-bG2~pCQV=raq+l3=)Ft`Kkh_Trmy(CEm6u9iQD0^cxRXOi
zKA+m!95;3w!{SwiCvIdcR>TJfi`vc(>UzvJ#0N);PCbhidE|(viN{Zi`)Frq&tpw%
zuVcZg!`gA8|3TMv^|*Esv?0-3qE%u~bSD*AtIB7LCki6~?cW4se`_|3LAWOwTW6HD
zqhR(VmFbXN2W8rwr1r1D)E=g6Idw3sJx1Ip7|<+e%c$fc={&okE0 at O)iuVrf%OfLy
z1~Cj6R?pY&2JKFwcK(o2c0*qK at H5g$%u_YcM6$gtE<5j4Tt#<7til}Z!ffi!(Y*vi
z_bfi+c|>uE+MDpnqsP_4C$Y2Q=WUMed8q9fiQSPBz7H08i6 at +$hz}T$51{?Hz!>1P
z0UdRxPM88KOo90%uoVI+p%$&7n~mE&zqA>BJ$hK14qs|7!*^Ug&f`m&as!7m?l%lm
zX4botwTZ?o_Xt<Bb?1u?$o?opwwPoWo3eJU7HD<oNXtgX)pJ^@fhF23V1t_C>g%dq
z8~xOn&V8n%*L%9p#01R-3HPxVY+4_5sYBzlG2uTlC8|1ixI_k-cc)PmS6f^jt|~4L
z=T>;F`IrTpcA8T&9i)0#dmPd`fsYXy^OAyUV?v^soAjFF>IwIV?z|TPm#c?$=N%w)
zXR}cp-k+btXkx{CxnBAR at p>CDhw;-(_sxPEb!QMfEUdhJ<ki=1#&pcQ0ptHUO at LbG
zTFQHc^I-4<(eWgvU+AT>D!fC`D>PkiN_s%w4OU7h2Zy>%31y&Yu2aGyiyFYnVtjLw
z=KW at BnaZ(I&zJaW;dgLU!ps~o&9rf~a95g%h7p`8nhqDhD+iYjVej2V3lcs(p*!PP
zt6cr3b5QEmG50*t?ApN9U+c~}RD-crbCp<$2G=H@!muETxg93YR5YlEs3Jmz`B*Yo
z at uKeh2y?5a;(FGO=h36bd;h)WK6%X8SIQiTt2w0=P{UPj9~XGluu|+!PH at Kyg}de;
zX#DqLb943E#?M-N4x1tGkkEr#o7Ru{)?S7ix|6Y-#mVtv?Rm41?;g?if*k*_-$wI}
z5M{=h&YA|aWa^1nJGR%>Z)<{S$^4#^F&8|v1hv`|1`iP{QMjDSaZ_didT_Tn!oo6I
z4)J0Aw~p@%0t7IDGXPX1L~$12knpw$BMk#6c)(VseH%s at v7@9x9UNGTyHndTVc&-c
zircuq at H7Z)@1GN7zuL8o?nW{1Kmi)HEvqewH8<RP!12<Z#XNqXgl8Xhyi}XZ6Vp2z
z64PJhy~VCIRY#Q)^^WNcRfExK>Pma|U_(_hibZ>1{`gz&W4z~>>81DsF7`e0*EIMw
z7no(Zxn#)n(W57{k0`Dk!;}|vpN!@4hn+Jp6k|77GMzQq;IKzeC^_B7V$(GWVhAV;
z0qFr_zD#{QUh^hS03E9=mZz;m5FK|Q9>BZ9U~9L6L49#Y-RoREVD at 6g*Ow85`Pt*w
zCeI$%jfgsA#L|-WTs=*Z6uW81Y*_a4;=Z at apS~4T)lh6JPpmECsd at xI+NgW!oKWkF
zcyIlL?p%wKn&gX!e%hoHYfH at X<5aFMLGuYdI3{v8Xm|YtcMtM?Fa!yj=Aq!e)ElfG
z#Dt$Ip-x&{jr{B=ie+RJV$^*@M+V>$hV?hVJO*Oe`4~2$N*201a-`ojbmRaCo)B!{
z4^1MSFCU;!9=E%+_e~<pT+Hs|GGP=wI)0EO`HvAj2;U}535NibOkdg8^Tcy5&+nk9
z>vWO=<OwT+J!>xO9QE*PH}6A$WLgrvV4Yz6wF9GcHe3aHD(X%N!d(4(4Prd;!{ew#
z%tVyXo!L}_rLuynCO?rFqw3E`2-uj=sET5Q;bjma#o!dy09Sj4sS;77k at xmcPh^Y1
ztQ~lYIyS;+&m&~&R>K0bMQ@#J1A1$8;vfY!lgD-E-$AE(9H9si7z*ofbR;mDAh_;q
zqYlxNM|U=X#C at SK{yUpuPw;GQKLR9IcezGs at LdPVXPC!RSD&S$!#MZJ<Vw<jVc)*b
z+{N}-1^4snu4<dHYv=7ZcWtw+BsMGlD_b{gnz5x2)HzVh at x%14qu4}i0!*xlUt{B;
zO!ozf%pzB3bM<^zm0#`{i at D<8Ey;=9pf-tJ7ewKS*@~EW at U08M_v7bmTbx}NnCEGm
zQb?<?!nl)&-XX1y4!+(Ju6pg-a+B5$0Wa$#as64Glsr*00T`c&<DLeVt2>i4#`ut(
zSG^TIWhkcI=^e_jFLC{0v+cntZM%O at +alf@bd}JBNTg8~xs&b at M_<>+Aw>#yeG&*s
zYYL94nz3`be)|n66f1Z=!F5NUdOmi4>BI`%!BfH*W}9`wzLfBvAhB}wnq;nxDf4SK
z<YqBtPECa1YeN6|i+cQ=xYfmR at 1lQb<JdbW7uTu6&#q;xHa={t>lJo^9M1#q2 at v(}
zky`cRdi7|%dLsU5-VRS~qBf6gR6nUx4?Fh1n=cojT^8E4LL3vYqi_HNW(j`5(O0J)
z8*rgerR^{p)u|^DsOG^+9v}NGC0q}R%t#5dKq0u(k&y$^vHyc&`9=tRloHMrPgb1*
znG(j4V|9?wwT`$O3Sf|Jln=fm@`6#`+w2lib)6%Akrd(zBD!*`a~(bZg`z6FfY!el
zix1mV!jD1HcE^}O)t(s?m5uRXF(ve%h{cYIIH-M)8in1PLD$V2fmNTv%=@TRH4^)}
z(Zk#Ww;za=LTEME at xpH+_dxJuN>~PxtVNSsK#u1 at XbuR+{`Y6e)45~+1m<6GfK%((
z|IXF&9hda2s8tWw;<h(<s;E at Q6FB~MF78qkQM*QNhUfU%qkLZB8&{L^!q))Rwk-ub
z{`SA3_%A4uLZ|FB6r!WCtL1#aU-Y30R<z)HlH_X8g~LOktJ%RKFTG$WrtXFab|w`k
zlV18PoTZoUGV;GM^4&)Mp^=|9a at tdRX(NJ?Ub at oA>7AmN-elw at Mn28RFB+1o4SLL=
zj~V$vBmbq5KV#$@jl99gXBhI281yGb{+yB1U0p9NK|X1)L0o!&>0_7In5B&R(*Hnf
z&w4Z3e8|<KT+LVWwd=5<=$a at Z_Muiqjm<sMwG;~^>G;8*ItV`ImpzG7m(u=QOnk#a
z&B7e3ey)WR7XHS<Ll!<~;ZLo0omRQc!aFQnVxid^W7o{LC=0bRvs`JFXWo{UG;t at E
zP-c2yN;#U=X9=CL>KiToMhp8beuIT8EnI5hEf!v9p=M#Og`Zh^CM<l<!UGoWw(ubf
zk67)}w(qveGp6wCW|==brE&N5W;r<p(|R7X`029!s>^@2O7lHMCjXp;Y5pI=&I+ at g
zxX45b)S1ack?>EEtbV7e-Z{s#W4DD<>y60#Ip&{`;WF)++QU<pea~3fZ{dK2Neii6
z`nOX$O4j3RapAj$YA)5$&xuo0x*ei0;w)n?qTP#DyQ#8QD&rc;vOBXoOVG9wbOVrX
z-d7`*K8Ein_-fEW6TWwG#;rkv at 8WwH=jN06&f(*DqdtufYmDv2WAhLmxJ#g8T~l4t
zLw~jT)ss!G`p4gV<-rU8>^Yea{;Jzs*2_{<Zjoc5_LjP^Kh`0I6uHG8Zk1a65`IaQ
z{4Lv-RJN>>f|5_3<l(o at jcERVnqpd(Hrya`7iU%2a%?PTB_8LFT;^!aXO2ocbF3?f
zjKOB|`P!>sD}I9|y9pn{_f$sN($i?mx3PR!V6*2ido(AKy&<b2pLEZ~@2b#6eOAFo
zui$$Rx(IDqHkQ>0EX-krmD5<^y4*&aQ((@@{mf|_V7XL>qh(rUE}OPEH)1Qcv*Ok~
zR@|J+iYo<HJhLbQwUc9}K91i+95XFPeCZS!TWZBk;$|TRkAXKogXaQo6ui+4ULAPb
z<}g;0!D|IC2|0TP?;-H|!Mi7;-yDj|;9V(wb*`A6`Exl}?9A(3<&`6nKhPHNdpG$)
ztwAZu*tOvMW6>x!pjX=Fmm*3a9Ks)MzJTlXhjGKlUpbbu4yi+y6vpmawQl{ln%AtY
zUsPGKpfwmo3}9Ya+T?8u1QjU?jS~J;0FL7IMIv5hdqiUS&<#cm5un4TY?7j|qJ)w1
zwm^F<DtSY`Xf(Xl>x;H;!6lh_1EGKt at C5@8Ojb#uErDn_L{S5)oO#=!-;zqV&J<Z<
z>VQEV?CY0kuY_nTZ3{rhJO)!iG at G`zbs!Q^O!ayrUN2eVr>pg333gori_Nx9P-g2I
z=8a120hvawY>G<0RxkdR;tP at +ygs-tpm<RXZuI##V~3^3Y>FC^66qyxg`}-s!w8$%
zt3TXf+EjU&Kf)nHsp8uhguT at n{aZC{v5?=G(HqcP6tiGh!P*%)BM?H7`67Yx4!L}5
zAXE;C@@Ooi1UjVh;G*(H<>sVLk)T=2te&btR$2q$Oo1uw&5>pbOx3VS@<lGIw+ri(
z;3{84!TMNbt->PWHH5>PW0BR?DC<K?bUS0SsOGLfREhb5>q8h=D`OXg^&xZ7x7MeZ
z`D$a4GWL?tBq>*{_GEoSQdXH;q%j)yOR~)VU1(1GFU?{vWv`K~LO8lw@{z5LQAwsn
z+L?1_Op0!Al%j26too22qkx~W0c$_6eN8K?&)_y2D+x?CI~$fXZO8iRXvP%P${2t|
z6ni>*&EzI&YQPHQSbXdsVNsp5G1lHLMbno2gfy=Wx5k1JH)6oujD53y-M8u++>6Z}
zTur;%AAujgO8@^okpAWMj~(f2_ld{a-Y{PTHYiEI4Tz?@6~#F#8AalMmHvD at AQmyU
z9N%%=`|19E2H$T$<DJOxmSpdNCY)o at E+GA1j?>^1{sJG#ya?3rQCq^7 at ou=Sl(Am{
zEAV!x1Wg#gNAf}7Pc8Zxpc{8(YFi0Bg3kka!U>B{I2&&plDQ6emqp(L4C5o65#WvZ
z^WG-3y$2}cBmOSn2Y9n6;7<To;>RfBHv?b7*A4yv at P90tu;ObbpYRpj?RP>3Z*kU#
z?-|f|j~nlWe$e!8p!>cHG~q>j8$f^gk_|U8x{a~U%WXG*cdhsWKK|gzID|JeGWNYM
z*xc1Cwsi!>EqLwWURhJNXhB7pD24FS3xwKh%GNipE?-(E$_kDmUl4benzHSZT()9)
z;k0U>EK405gWE+Y2+1{Nv1sUa*}qBZ at X6&J0e>_shuf5LT#Rn_$sG%}EGiRmum;*B
zS-C5-H>eWDY9$(zl{KNZu%&J8AJFEWYqUd4S;F-=plr9w;6$bG#L$b>+87ON!3o?h
z$&;0t)%AGB#_00ZAZ?L?VvzEhGM~IAv?aV*ik6A7K&_vy6E$URzMw3Xi3=z7R4=@8
zFVzb#v#EOF<lxY}dSTjcC|o{?UtAK+|Le1J&r^GL?|EiV|DNQY(LLIpi9KT9{Jy99
e`uhg at JbUliyJ7F9y^+1!_I|OFuee`U5Bx9Hi8NFI

literal 94720
zcmeFadwf*I`S`z^WRoRiIYC(nBC=x8XuL!tl60Z$!UoR5M&kvgUSko|YL&t+U=>Z=
zM6)?=OIvO2r?&d({VukOfVT~iT)2Zb5Eazgo^`!MP)I=8 at B5jvn*`LpzOUcw`{$1r
zCue5P%ri63%slhlX14aq6}DWP&6dZLPTOp&dCNba`upGi^zwPwxV6J<PY&69@@ji%
z^U0Upbn{}*!bP{=xaj)tdgfh!+ikapJ>Q=1Sroa=bMtMUz(tpOzI*!(^Urp<3QIGf
z?;cSW`$lBO>)Ge}vD0=}5WjwG&F-n{J$?6c>OFIJwaPd1_1k!ROQ!E0r{2?cpP}A0
zyU*j at Q!;J0SG@!3eaX%9ZW7qX_N1=HX1n3OeA_EKzjJN&TaRtLZD`K0QMTtvS!bo*
za2)Sq753TXCE*;KEng)KylpG_DoEsCuC2Z?TPRbOR0~M<CHXQb6145T%x)`Fq0FBK
zyX_{|poGWxPNj(&yRB+a@|S`$>^7%rXy(f{o6SRezwY1J;rYwLd at O!W{_sfOGyNc>
z{&{S+`m-0^aDDiCo9(0rNCKwq2Rs=Z5mNtrOq;W<Y__g3B-PW9Lf&<Q8>Hq|;_QW1
zM%739Y8ytrE5DS_ciklc|7Cug?Lj`<R`6Z=a?_XdoxN!Ot+&s!DID3rmCZ at M?|doW
zGy(Jf{~N$SWukqP?@~SbfoF{%%UpQ^e{OWxY(|&)=>)<TNqDFE*VAk^l_OSSb}<G`
ziSS~xy})ME<E~y_<~$~id8$=#)L5IXIT5);#m)I7HYdVG<jf&x{!OazNN9}w`G|s4
z_Lox$=aT?rhxy*g#9kJVKV#AZD_ at Vk=((zW4OQ99No3o!X%nq3GgD-$Oz^d=UB%nU
zZ~l*hDT&EW;7Z=u)um277A`Hmf@~F5Xa7l;n-W^n1-yOd9q_e;OFibdiL~xCT<^@a
z+oFATt?3jJn!6*jIvpEHB0`_tliO6+9lXrno~$}pxElItOYX8Vyqi!NHt{mYk)hKO
zr?kx8l+(A$uIg&tXg)@Yc at fRkjh%Y5$`(FJ2O0b93J=HCR3`lKx}3^x-N;S5mkF%$
zL3u|=-VQ6TQ#Xd1hfX2Kw>$!^*Zf_nyi3f7c!!Km-FV4xnng#_X@)asA$pFl=|IF`
z{()kZJD#wc7tk7`JvEvfr&&3?4R at 7#Y~)!?9;011t}gZIMz~Z5xfR!C#^VpUtW9fZ
z9wBIKH2+5K6}+#Jw;GqL0IddO5iQ7!-A@=zX2!|$bt7*=1*p*t-I;Re-mdV7%0!Q@
zJ>k0H3cD at x(RtPYue7HQGM3hS)mAw!;$w67Ga$gG1=?F2Q;D0ur{U(eh6n;9dFLfk
zBTUa3Dl(+9+q{|d)cdVW6`4)_uo|Z1QPgJairmPMFa3_$r)FKata*2&lzIEn<p7=n
zeP$*W6F(sFvs65MHg!}k&~A5p?*-{$S9-s8kK;Kq=rKnJFNw;V=vH1Gj-T__zS3?r
zVGXUdnF~OU!bwTUXj@%-rOmdW+Hw5{>2ze7KF{?a0jAu=^2*)NSS@>3<hs>EDYT&4
zUlO at 2RK8Ao+CM^%UtFT+ZX=kl$BP<5 at uCfSY(#0$yFFZD%qj|b+ZGiX)10|&A#Y-l
zQ;)7IOYN!Lp*Qca at D%-iscpGntPnis^UhIdFKM^%-MY(sm&R7^V8n(t?T!@a_q#jh
z&@Y8bD^J6eXGpQN?h5BM?T8eaYe5l{d_Uuy?QlQN_2`tJk~yt|^#b!jmT5|3j)L6=
zlFfr8NL{)Xcu6<bWd}^nrDxJ$;^59PiGw at SU3@8PSL at p|M>jqogGV<Uq1m+Tne%?V
z=d7QXGc4ZrNLY`~FJbA{mZaS$JtK3irbLg`6sO%zVn#wgSHhpJRpEH8$BMrp at fr`s
ziuJa=9=(!qWlgbO*`}|d75oFzDMTs<s-nqljCS`dn!tL|^@H1p{zIbR>Y8?;xvOQ;
zG67fHeCkcN+h76o^n_Mw+_Y(>y?xU<0(#uBhV=ISx6r)*P^}(ymYV;z0y!2ADihU?
z3Tn|FOi2E>=Ue5r%R4%u5ir0JIygs<|FzV27$A)wBp6d;*P2l>4K-*Bqnl at J+<f{P
z7P8G;PX$bocx{h=^)|kmCo+^0O}pP;BRKq}Nj5$H&`v(;#zqKM+Pzc00B5ouy`i*<
zukpR=tI8BIy7XA6v?2sCiN{U(K(tI?O2AXuopwK}KsR^E$9Sl;PLDN9HPR53=wJP?
z)EZ4d(VJVOoz1LQ-LOi;0;TnxfzmoRM4h*E+m?1;3e0G)U61ocCyP&y*Ys!)f{;L|
zE|pG`N~z74cArC#m0rXwcgFQx^94wjZah-D4P5DsFAB=8VeFEXij=8+NFbC51p57r
zHP#AtMk at 4q`eZ$~E3;-#9$2#@qidRI*RUn7=o;apZQ(ptoweea&WyVYQYG`@&#M(}
zka3f(%cC2kb)&D*J8$uK_eM^P-dU0t8EIVViQl{T(5?TD_U0^cHy*P2er^xDWb#$0
zz0q at ByLm*Rx<ogwbE<t-XD7d8!ZEPpV}EikvoJp80bZ%&*mk5t`Dyp((zj^4Q}^y!
zlvIFaE?;NOC#zlYu{T;}>yIg$_%CIPWlt^<0L7Jw%5Lq~0i&&^a(BSk=x^+~Ej<5L
zf8!@J=ie3y7(0xf%5Hyry1iy-m-cIa<G!13n;(qjmDUX10B-V(K4y<Ic3Ejrq)v~z
zDrZ7kCiF~AYf}>Wc3Ze?N_~EgEqwBnh4MPVv9j;;bhOvAv{Z)`$n5IcZ`u}*2pEp5
zFSgtK(Jp%+=D3((s(>_|z-nPW0&)GYx96@?rLEK+Fm_Ar*}Ap0?+#g9STnSZvTllW
zIv#}~ml+s{xgH^?t^LmkEh=-Cg!@T&hM8-Njcu^Ljaj^q949XR4&d$E^tN|A`p|7U
zy<*q{rJnKa-)N6qXgDq*ceKmd>F^Vfg&K2ACFDQQ?g`7}&E3}NIF$q at D)~HtQ+CB1
zClL>LcSW>lmoGN9h*-=~$X^-EGG+;zdIe)zd>!<u+VSA^wDqAxdwRk*R`t&jJ$7qp
zX24*|=lC!8%fR_`BUx+o1&ywt(Hk<}H#afUYK<G6wZ^2Naa~ny`KJeJ@)r1wrMlMq
z1}zdW6?*Kh(kgGI7HtJP#t}U?Z3GVIg}go5y?-VT5vN3=zmzWAb-383HT~EM7TLq2
z_zXV at 842dT7&Kl<Z);90TYh)Aak)(`i!wHsPo5?_>{Q%k5;9-<lcH_I*2-Y$#^$tp
zJIO}qaIs&};$ZG30GV%q&7d*U7c$lxmmMw+8k++~tu2`Qve1b#zLZJ8lXiQb0_a=h
zPIn|H3YAPG*8 at 3d+~WxtLxbg?`@NrN(Z7*YW3(Bs`XPI{JB+|fRu^Rg5Ron}z9(Q@
zljo1V>j?*HDtFYd-p=<M8}!_6Bd{?~_x3ItOMr#fyLbdeimL+~iz9`EiU<{jo&NN?
z8t=A6oBT$1jdy$Go010 at MHGmX*1*7=nHn3PVSmEzkImErQjUJs=Dz4pZ=<1<N_Vj4
zXzab0(+!1-P#i8VXk1khG;XO18jA_P>%Y!_t^XST)z`7t${ut-gPh^8jx&c at kplB~
z1X3TUz24%-o4O-~<|I<hR{mr at 2tVH39lo*UGNx1X1HG|YjoPKrJ0NDYhTn6R$MKWV
z(6Xh>Eq{fOph^0?y1eEc;o*Aj#Z|fyEHh#1Y$;Fbqyx6%Fci^WrW;Oy3fZ&khL62m
zXNZ{5y6|~=`khR>;hNYvJl2+Jr7gD7m^H#me8s;73$$@f)Mv9 at 0V|^B`u;x$jdqZs
z{tbK&8N0MqJA!NMnSUYe at eRRfZ?SgYK1weLYPYp5(CQPx#@+_vON*1YNb*4W1CBRC
zhzXIOX~XTI+%`Sh28Q1536;0ivcB4q1>q?nuj|@rtj_!EDXN`r*G~5r>y2#<D&~KT
z=*nQan^%Ho8_(Va{OO6j9E|S0$AXd<K3*Fq1#DC!bx<JkDc`kl{xofPz}`dW+O=^$
zn^tbu$_L<=1HasYUk?0o;FtUN^7KSr(f-~mHKZP)JN at _y8rws0*H7P0r>7fDjUvH^
za=U{3H`@K_w->C?V;6rCySQ&b?BXw4E>5>g{L|RQpR=!Ad{7d2?~h%4Sc2NPfY6SM
z_r)$gME)auE0$+Ltj^g|SD5{-;*zeD{-yB|9s{o7veJ?O>$o`B*(Osh<;;xZifn=G
zcuO31^0R+Xb=>`(126*Kb>UM6Nh~qNi+J_oMfti{cP=SdBWjz?r(5epX5?^~u at S<L
zBG)*~BM8UVL{sbNcrwcbcc?V;vXg|`Qm5?q{qm|OI^|v;8(O3QGP8mbX?OcdD2VI3
zq$28F0v*z$8`6~rq;)r1 at Qj|+HHK?8In3|#ojNXD+d$d)tVXkjY7Eyod=t5oPo=uC
z&Aimg#<t(yIei(-4P4J#I&fTuE0?^LJIo5H3Bj(4UKm@`?f}iujSh<=U<;|D8?Xgx
zT|s*L0AiN1ykd at ZQ`xh6)8Pr=F&{1!(e+(EQ1`G-$IT>2eegg9rjtfyBt8YlaNQ?m
z`_kbe(?gM{D?*&Sne{4ogz==hvjMaAF%4?-h6TDX?U+WI0xSGf7Hmd_G{%<lH8qw2
z+8+euM&zbn at N}i!(Z|8E%fV+z=$?M*B{MExwGVoXzEFJ1U*1ZmYmK*qhRIeKG at 8;Y
zZ?W5g(Jkqqw?k{{qYa>2YZhuy>uuAT;P!1sgni?YgAbEaZ{8gq7WBTQHHpS6*(%wL
zXAeHSSJ>a6vDLp?G+SwRDb2HnE;1?YUiEijZm)=(5r|JOAQvdU1!>g$6{7@#j|V%d
zblUv^IVqRQsoYItkG#nc(?3_x=m_55q*{<d1JRz1$kZ6Zc&FXJk%D9$p-0!}1-&0=
z%`;@z+bs<~i5*2{x=&?F2o3HE-v5B=d#bSZ{wGyPn2f98zKvT;=L)+~FLPzkzGBIc
z$b(Rf7oVrY-J!VSp9JX6lf2A(m?F|5<iw3q_A1!pd4h;ccn{kxYsZ44z&u1TrRxDw
zqXp?+fiw|FzyMZJw(tpq0R3G78U*JWfy0!t0Vim|nI&*O{NhV+b_fnK4Z2*xQFA84
zyT4A~$|z~{(W!9)l?5eGhYGk~0Z#NZTcu^rv|I3*g8Lo`oIy<Ym+6Dw=mGG5o&zv7
zI9?^dHboUL6I#R0Ycr=wQxT;V?4bdpBkevd1OCy!X2B0y!9s<y{|4y!6_-P~tsO9E
z?A!m_YqMKmW<O#73mH3P$6In4e?3di*2}jqcFm6G6+`~Cdu3f_Hb3n?jmQDV2Q_SX
zTGJ&kW~s-t;+$z(aVV#UjftHoWbe_9w)TPgiP6y+yJbIlps|kqB$(UHM$%8OwWkXg
z#GEv-Q0GM~pskvgLsFo{m(#ATDr|AK at 7He6K`mozU$7!%<Y-UNa*}CQVJK!>5Yx%1
z7q%OPQhJ=tQ04Pf at jUWN{OM`L7X)Iyy!LEd%I9YiDWBgCT*Cre1Xv4dQKr6Cvz(;0
z=+1%qGgY at sdnjiWk@~Z6o<@J8;83p)plp8!eWwkV3>%aw&{8+7T`SHTp5Y^q4m9 at t
zGBhS{_ei>I{C;it&;jN`YZAs(xCNMuPpa*<C8Lt-NEyJtuoK$pK~<h{8a{~gXdr!s
zRvZ}4Aclr#c#y|PTq%hONfd4*LCQ8s*()hMk-rH at VH~uwwp3BJUBReXoaI$c9K=s(
z!~Lr6EYtF_Vp?3Y;(2z!6*Fyg9{(WzMc5PCThcUKw66kR>g{iLxxaz$$Fy6qIY+gd
z;yx*^xSpfh|4aCuWEHef at h7l0(zhNxnk<$+9B9+RqnNZ7&iO|5!<}gPYRlWR9NkUY
z>GqV1A%(vI8O7S^Llg{Y=U%-r*<g*yLJ(IkAL`_T&*JgwNc2f!g(P|?UO|dSQi`?W
zqT!Lh3&ae1vj{z5(0B^}mn3W6aNz-a6gr)Lt+-HT28&P_!7Lf*e-D(Gy;tdTgr}+!
zp30{iFc59#kKvWl+stQ#WkUEd_{<moYOrWCBa%A6ZU5iEn`Xhg<>-<}*MCec+R=H1
zpFKK%NZK2KCDakpq|tAFCao1E&^FU9r86zhH2Zn^teSl+9{^mBZtOGq%vo5zYD8l%
ze3jPpO~{%^CPKFw6ZAa at 7wD?4l8q-(9P}n4`-9XiS&t`c$nZI9C6Z4B0_upkLQoHX
z-1m9%GbxP at E8;}Uocs?l-M9rNaj`SHEYGPm3oF68sL<m-5*{%H83{UNq3GTXk^PNT
zam<ItoyFnrH&*?CVEC5CsvpYx>c%SaC&IOjRX>vVHyf)EwG-iU8moRHZ%<>@lR3PH
zH&#8x+juSFTMH~(>Vmbvv8B#g+bplLwZg5WPF~w2uM^fb%Io;G_sOehZB$;4wfFLh
zU0S?Gc)XyIfUo!i33nE!iVZzada4qCK%ySI#hE-_c#K4byS!CqP?!nE?kd}k;W){U
zYI9S}HB!BG!#!srjO7Ns(p^MK^zEtoOB>K{iz0)$tH)fQ!NsySxX&UVi%?~Ko3#F{
zkzBO1s4_(5oSu+RJ2q_!8ICW`m;Bv+W7`@ZEswr4wR}VHrS96wu29VNm;e>{#*2Dv
zE(3BCvd2P{%ga2dNh~FaCuH1JTCW(xogrhN?4Z%pY{5=D!wg at wBV3@zP6$RjoWAou
zY?wMeqWPLW^sO52(;i%}r#n-Vg6RU`v<g}aT5@${q30)&Y-};j^A(48+%ezzh-oK$
zB2XeLeGNxE;e7rMiTqZ84C$Djwxs~G6{A;cfmpzH(u&ERaNgu0==IZ`tp%x1B)N^`
z+U5h{f?(_<X<RU!SE>{!l?lu=>CSYbRcq+GI{axv-}uP+P3t05cpyAXk6&bOs2(42
z(9P74${i%qk&f+Vsu+DeEy(Z4y_#OoXw<A9NE5;{#1!SE4O1o$30H%Vvs8aoZ(9qr
z=ex`=DhIln?i`E_>3q5~`E4dk20DsUfu1~xB<Vn2FnX#@S}#+{Cmg6QQwd)5E_hMq
zlVU@!&e}rt)s&Ne<3dakZ`a}}=$=`0!Gmm!U5n4r+uqKt)gEV-w4vM&dfS$q2pgg>
zV{TymtL1N2ohU1`9bP*jRVaItq8oEAzd}t5Wv!^FOb3iln!B~8OPLFCKWa()l9A>-
zz{IZ`iITSZ1h~4xNoK6g44wnX_}B}eD*n}Zq`)m=*7`Tb65W`14`PuX8#`BCblTyo
z`er0oH}<3I*7ewOUnpMdQ|c>`mSW3wI>i*KfiVmj%YBv}OgHA}ND$_J;k6YFi<FqJ
z(u8M<m<*NOG^n1YCBFl9E{x~(Dw7T1jV=Aq&HbOJ)BflYJBsNVA0r+c`w9(?IXd}U
z*`2yskI$*1epd5FQ=35VdSG|a;nY@{dB7I#p08%Fbo at waDorBmR#}qO-w->p&#9-|
z^y;d}r!m)J1yezbxo;z4woxn#;wcrry0jkqCk9Iy<?F5$-TeShUYXXbr+hdC9dRDB
zS~vfF7I^;oc>+Tyc*GIinogZ2O=YQp*G$SVOgdXB#cL%m1|ewGYx<?xm|Ic4Ta at b9
zy&^*rFoAqhdBE6GYjpTqN2W>}4o%VHe!H?BL4cTUdOG2+I^PyK7)&QZxe0%3F;=ym
z^nI<6PqTh>wvpjmLq at N^HJ^2KogUpx!Sxh8J93b~<SF5aS*53WmMYRqFTxY3R~Nah
z%e==WBTLWpU~FnI+UYcxlP{F}S?Vv+Z`cy)-_4{!HH`g)uTgN6Fb5D3<&;pDMRB`q
zfGGAoO7Jv)HcH85q6_g3AYSR|b_t0<p6fCT1!Vjlr*1&$pbAp+ffDIqKOz+kAFLPg
z>Bf|AOqSW6)|y3N7Nl7+W>~Fj9~KH_gz`tb*|~2ht$>Utc$bMaiML03c6<fZ%#%s@
zLIzV?%v at Eq(v4hnEQrb-A)|n$5XNpL+F)}B%aYQk%7WTx-ZW9+t6Cs{Oshj$^I}#^
z@>>2#o)h_)ypV|WNq8t at i0*aW?PVG|%$H>CS=`aUw=1o0PapfuaV{SOW2frXj<X0y
zWFC(;PheTorXglGCHVY4YOH+8YVj{pXWaGKH&`%tNt@!XPbB<+YM+%JlBx{X+oVgO
z<YZN~wAJy7qye;=@DrJ^)c-fanfm_+BB1II4%C02WQ{p~CNHah$;D(F7}tKiittmF
zAL_;-y}S>N0C+4gKGWMi&V`rJwV7Wq;^7kp%v0AqD!9fxmG02J2P6NsCJl3PFvl=>
z>KziG-VNa~85o6W_h?|yrJ)%!SL)p?;{okfQm!f=f?M<`VLoW=!r);Pnq6#6D<Dv&
z=<-(JhA|XMF=*QM>opptJc&$Y)0(NtrZnyMJAOh6E5UH$Vsbv%{K=W38WVoRaNi@}
zyxYRZ>y_*Dm%7wq5<}zdzXE>TwUW=NA{-VXE at Eqmnb#DkrsU#D5;-36|2Zq?PkEU?
zm*I=M*IG$`k)-?72v2uP_F)~4k$^yVKE1eum)fz+3bbY`7 at x{SW1lGLm2FvclL01v
z2|Rys#^_#W?80;rnI-Mh9-)1V{gi$~Xyws{(9!`z=;*8=v^Z-BEns>4F9>4SD(R>x
zW5U$zWp8<zxQDPAir4HV%+jmrVJF$CBns at u+hR2@$7*((bLdobxyKeBDq~PjN9wL=
z2PT-e_3MVrC={NZHe9Aux%GTARy at n!w)dR}*4ZP&)9&OiWE8uMm(uQ!2m)cK<U$wr
z8c}eP8COMLLfDn7m{M`~xBn)qKkZ&eCU7uL#EGg*dfI)1043QeaQ+~8QlFuWsClN!
zM}>FcRU0S4R<0Fssj at o|pO#KG(Xq-MDq>GAB|;mR6XGG1yh%oqH4U$N at fk9sw)>65
z8XtwDd#9Fng{mFr0WNYJ3~{h>n;vtYLR76mvz9p{a4L5s$19)$C*EjFq|<*&PsIo2
zxW+zP0$W<){jTlI5U7jWeDOG3nrtJ1Z~lBZlUYIvoUCQar`;R=hm at Ejbpd)+_j)Vx
zZzBC_Tk&mpiUjdhu-^ST at BT%G1*(q~wg3XX0={Q~Y`F1>|2dl%nLU)eN|L-gVIQh1
z;XI93g}RQMDs|_|N>06MXy*5Yz%v<qvRCP}6W1ktFJwmC at A#IqA!NKE&0a04vfB9U
z;@bFhCo{Y%7{9bcgv4Ncw$r>yh@(ZfvbsTY50fHbH2e`Y9 at 0U>J2?klAJZK at oDN?A
zpIaS0Y!7>)hjYSi^T(hmgRvWn)lQWf>yPgJB8Ba*D<=?BAW{WUS4jmJi~Gf?!{QkY
z$6A;_OQ+6iU*a}r48R(bf#tm4^`HnpXd0A1OxzKZLSIL-MzCWknsq51hKda}FDK<F
zw#DL+`iH{PPw#e~ohjQ10#(@)zOpP*(5<D2LGS?<zpG?qd*z2ARFg&tth&}DuACvm
z{mautzM75nw@<IEtgYOj8&?%$1%(a<D__ at N+Ni&@1$isv-KaGqliBq0w^oZfM{hgK
zj<8cV4znrr3W3Na6zJ8xhZmg`h}W?Bz9u~G+tXzgg^V8aH{c72Aj0l<XP$qxFjAR3
z&-LfI$I7EMZQv`dOP^|IQWU)vjGuTUXdGaM1<Sh;tPAwEWG-!@?#;s76bFrUOxXSU
zUnsPJLjKi0AOz!gII;iwjdf}*Vnn7{^e&+m<Bni#IJEv3WLNzyZ)?RmRzQdKO5{YR
z9y?cz$A<e3$&m%Y_pN#*yBJ9RKH%I}Wxoc>6BPHib_v$No#7N_|69eW+zfN13$KRc
zV{u4I^2zvd47TrQ#8$<mePWH4rFYn>aN<Z!pnJ;XuUC52c6F7LHU%qpO1<%!ER^0a
zwEJbJBU`P}L!OWUKatX-Ddk4O#*vFrB>Zu(G7*YZvcaX at 5B*FK?)U+~bt9jG3UYDC
zDAe&>L)<1W^MJgy-mS=&-u2;?%J+Z?Wr|(n*LpOa76ZXnbImXXYnlZMJcMFwZuu(U
z2W6QMekU2y&@U9S at RXz=a)Pm)y>-TUc3W~jT|pP{Mld!Tt;z?GhUv~=Y`O`#C{cS5
zG{b~mc%T<`(2HW;bIqsWZ&;F50*fs^k3m2Ifkn024mCC$zbO at 3X4hjhDdwj!taI5`
zm7y}TxBA%bNRX|smU&wverxFaYs}2nH;4VO))T8KW2ZC=tqOhD2wi>dbb;<TyGrOT
zO|W>)xGQol%)+e}-`6PNdcs-CEQHY9jjAh?kmX;-9>f(^$m_?2vS>D%1=FneyP5Yd
zKBBLrPwmT;wdhx6ck+`x>{eMguBp at r9(uGkyQs6+B3);a1cBcyHF!5-=sS$KiQqVb
z^sMns+C|puh0%FKJ{zuU2<y=awY+R*mz8!i^piBdN_#Ss&q}N1Wiua>wCDs~BK>`i
zySM+I<hX0Y at 8Hb8=VPp;zNYT*NSsOj1p<XLKYeC at 5w`S4tr8DYLa1)?87XDq*z9yj
z1AS0AWyyIK=_G~TlR2~kr!)u*q?32 at cp5_)3pZj;>qf#AeGpo}$e5PV=9O$P&&c+Q
z<b5`X$NZu;2Gmg~?x(lrIsGm6V7d+24=3sO?MO~|bnc?0M at o*TWa>rL7jvkeHqoBK
zHEQDy5k26j9*_AYe1`G>OuIv9{>V|Fym>dDZs`Qpx@|U}Kd$GPKZjSaJOiT#75|ak
zO_QY0{d>3KjXV6fT8aVcd-!DR2s<$Aq>7_cK4jyzMO<33<E}F08JnNF(EKHPt{y8;
zTX)L}nybgy$6Le_p~o&N7TNGsov at +l@hghWBUadGlr8s<IT07TXG}#pW|pwPMOu`7
zY`_*x^N#s9NZ(w(9Ylw}bFht`*}`MBRrYV>6-KT>$PT8v!k2*63w7&b<lW#i4Vizz
zwdo_)zj$8ZgtTU}P3h&&(uB}UF94oqdvIa^a4yl<IdVixbV^&Wxjnp<6|Rp-Al|F>
zD5G3LlJ>NH0qr<`fj1{IjI!+h>vAY>kG#hx%vj}ZU%Qv<r>XrI3_{f!1#dlR8#{Uv
z=@veiFfcq{#|t>E@|sAmL(Jc^t%?vc<CxN!G5!jEpbPC2yoB1-WRyhzKg7H?1Lp`|
z2e;zu;WSuqtbWAQ__G>L8bm3MgQWd=oREmFaK5?IX|?o`V`}haMG`$$yAyJ`GebH(
zYngr6TA`aPPFt)-NM`0ck_1vktfp6SfUz18CaCN)2tTQNV;76G{P<(i6 at lj@cCs{t
zSZsyNL at Qm*+W4$#Di)tpwjkCbLWM*LuA_b^b&2{Kee5xcab^OZ8 at j%Yc8NGct+gfQ
zj}$vEf(tWOXu=8Vj0Qrh$*u;xjppkGycH$L_SZ)rO!~|tpxic^dvs6bOSXr5V>SO$
zvvnN=hc(tJ at C*tY!G-4Xfyi8Q;XtI`oHr1;$-I0ZqMN~iNS!%(AhOInr#}*FkS>oK
zh$p~-sSyVSo(u{=H7Iyh)ROU9M8BF|@bWK}SWP0GW^)s~2+dLCMo5hTs}ob?19Y8f
zrq7k`{7 at x$U1zb4V26u4{tC5|*)ueHN3k4h*a_#V#~!uH?GCem at NJPaMMnm$n*m>(
zw0mY8GVB^Y7Jh7}xTTCU- at HJID7{({j88hUxDsca)I!6RI*|%-%`tN(Da!hvwOw?1
zjm$*zQKq5c>Xsa;Y@`?uo7Vw_PU<k<QfpyN&2AE)62}>?N6AT!)vB_ssolcmXkdiw
zo5-#k2SuuU;sJsO_Xv?Wr6UaeR1~qF9Gai7J7?u!R|t^Og)!y{3aV0g!QSAgvpn@(
z_T_Bzr>j<kZyMBm@#;2Qg{t{dPBniF`Do8%X}%Zbuvw at IO7r)QQO)l|JqDVk`5VnT
zxD~Ryr1 at f+KwoZ6YIBw}^VoeQ?cQier4Iori~H*pysyIj?c`FpzmF_X*TJ|yMK!)w
zatz at 9TJq7Fd-!JIzE%~K#-Cy}ezK}8gZrQ0LQnQO*}yE^Po#Ag!m|S~Xd_bmOWbu9
zT{cfdMHF*vIRWf5TjbP*+bkA-3^d9?6}SRhDw*X at zyrL9;rf;2SAI~Xl#jaN#IszQ
zg)7)Z{Hf<4Z|U*BmKIw+{yl1PII764S7M`TmXY%#x$QG{2{?!O=2lTHh)3;0%emgH
ze9cO!#XnYg{*Na?yyq8+%2Q`G7DH~R4rVv)elsS#_ESzp;4VX4HnyNqNV_+aE*!@N
zmI_rWm at 7tFU-lS)D4|KL7j{?HJpeO at 0RBgc8qH2=d#u at lY{l^Vr<1g!`Hx_!KTk~q
zF2&)r`(_GOb{oCu$pi$@^|bqHf-*y!(~%;P&PB;&ZV`6XI-F3s$!xn at sL&&&f-Rh1
z%W!-}{qQap1E>x9nC~HBS$psxIf-$p at GC_i)?XZ<&Dlbs=<yWYXjm=#0^xI|%k}uQ
zD^G5977H~6F37)cmG&QPky6SD<j2+${Izj|H#SfpRO#M_93$c|7ER;TT9_&}S`dfG
zsZf^syLgD#1J+VWp8{%xMk1(KdTvzm83m#_NhVrGCShJ>Sig(eacOLUI+E1S`i;u7
zp<&YP$~P(Pewj?{7HcIL5M>xix08f^5VxEkqQAo7Gk}4{TNo}+CxW@#qP=G=+86hK
z80{UtG=DXQ23vb$TYv^Al~J^Bm|vTbX!jd|w!EWhI;QlrOkY_L5bnQ>LfM&z&Ac>L
zW&T?}a8`jd!Ec@(pX-4ZE(I)FpFyPC;(MPS1ZQ499BDqp23hB4gT7DAe)p*F7GE9$
z$td^OScb_enYLFyxF6H~qUk~H at tsPI1o1-eu#;7MAwm#sLQ>gie#9yzd?J#{E$DSQ
z^P(&_Y4>yYTQg&O%4Oa`t2=G7;E_bthMw8;C#gLjGqo^gt}_6Tc0WKtFfz)VE at Noy
zOuNOv&h~vL9D``QvUW!AhQ&(O1g3X`_A at bnf0cdua+$!DyZs_PqfPikWYqChSC$D+
zFss;%P)o~oWqRy77Up%xo!5Di!&u~1qa$<l>MKhkGY0Yot-Q)j&dd{@EH;zfXQQ0d
z+Hr74^qnH@!8VNX4<=e>0`Z~}k#daJlh3O~JQKg&lGLxnPQ$j29<xKXcaO2zAHTTJ
zbdO|hiiIXJGVShaRz2R%N;AbKVU(nn>&8VTA at 3(krdM63+I~^7xrR@)eRjO)0y8q<
zE1DD30$Yx5kJhYYVq<2pY6m2Vc4StRY6naemZC0k&<M)_q%m_{<Wcryaf{1n80)fT
z<qH3`{{`>9%H1_a&sXC83;K2}-r-z0?>9Pf*|CV<W at WZ`3ZwKZdivFf-=0By3wRe~
zS1BVI0W6apG6<DB{KghF3}(*=>A1-NjE4VdQUf4+xA_czjFKcn0$sSMME53_OdA-3
ziJ5*Fo6UVtq%X|~*39N(hd`O}Gee-7m6;0_l{;jUP)!P8bh}11NsYzLM~}r^Yb+QB
zWtqII^d{DY&l(H*<x~n5F~VmLu_!})J(gfu<U1lG&G(=Pmi7IaL-emb`54I8u1M&y
zZ@@F-J1D}!@*W{RY_xOg7IfCsoiP={=xbSiiTNK<KN~~&8YvbQR?%HE4v16{?Cf6g
zwJu<95W6?TP3%@iZt5Q)W4?(Yes8iDWJ(}pY?ZX2 at mf$^OP1FK%R6N=FnWS*M{<MM
zy5hRhLDqUd*R`2jb=-`FNKFWd2-cy@$CGo!e2i9joil{nJ%(g&TVzitR$FJu_RwoK
zYcp?;A}7+JC9~oqdTNb>dTb7gRd$y-bAeAkMeVs2`C?nGksmTX3Z~ajubNzjk-2;u
zVLf+FT`g+`T6E(SAyQg%R85K+cKq6H81Z+`ishXf%v~>@BnTov{WS6<vJkuzhtXhq
z3cz~Mc!Row<$FL2eM{w9ecL14;fSCy%zTFd!P}!Yz634e;m8N#tguA}2}ATFrH at IK
z(HHCc-HNgHD`Parn6ulTQ*o9SzeGd&ZI1oZ0g@<IbX2*O2hd#N$Q?4?#+2@>I{);@
z!L^Jd+gyj9`@Wp)^qNaN at o5=b6PneVWY#UD4a(cVIx<rmUuF;Gej!c$3zb8+#VKWU
ztr-8;GrWSd^CnwJ+X?jA@*}h2MU{LB8Jla37fpBO<1^Ad<05AuzRVdimf}CQMQi at 0
zBvwy~l>3d>;(DH`Q$;0&slZ&ND$`_6OvAUp1F at pRGmBH-4V6#ocXGK$W)mlomg4!X
z&5oaWfzAOTqtpEBnZRX+j%R3YRggBCH}HO5?N#08T*5|2GKa-SYkNe8Bk<!zChuYj
zO;UxV%F!YFJ<b%zLkGD9km2rwSsvdrcsatk3Qgm5s&(AJakrM`Ts>$NY7JJ<C;BsX
zCmr|DMh-ZSZ_PRLoXKY`E!4H=IWzp5_C>{__n+e9v%w&BMBWOt=J*?WzY*a`*bJ03
z+rsWz!?Jrx&X1`uc{$Mi4dywOX>y*mv?!PXw$i>R*Vo#qm%qv?d`wTXD3<^60D6Gs
zD}}$TAh5c2%!j-Zp;O+626Q2&CFQ&}JXw|hh2$3)iK>?sMM`{Cca`e0xduurqK}E<
z;ENigGxZH~KN}{v9`h9$tc98y`4yi6MknOwG3mfby;5E6N(juh<^-&8nH;h6=vvKI
z&|bMC?XJH^kij(rNF1XE_g(yTjNT+iCc$mE)LC18eyPj}_zplUlrGjuXc--B;A!Dm
zK`$RR9hpAP9q8RnR`2SL>YaN~?~chZxOc~VQoXxO8c_SWxr+Wl6dRfoa=?LJHB_G+
z8Q$u*qoVUnK0A`{tGXj6Jd%E~reKlHv8q?#^s36VuWI?jVXRAA&EJSuXM7Iy2vPZR
zSbl4Cgj~6p$U!5oGzhougsAClhgcT-!lwtzUzG_Chx<E9TSg;u2fSTsSi|y%Z5H5J
z%3TzopDef88kTq2M3}8zX`V+qqh!Qo>gtu7%x^7{VR)ppg~8`Eu}ty7)QWS(SFmof
z`i(*K304i3;V4#Zw6I^fEmtzuSHhuP35Ry2C;1%fLO6vA#VIIuPV$%<I{h`{`51Fr
z%teW at OC2Y|xKa!kz_k8KE<iXScri1@!q?|9yMzmyc9&uTW`7D3u!=u$VY<ZuY+q6+
z9KZ_dNEzq_6*Kh}JGp?Bjr>6cwu`OjPlFh$qc?H(?|vT)I(io}t_ZjbMNiiF!3sgG
z;kaUGmP|A-l at V}J3i($%2<vgCQQAF>Hq-hMX?N3|s`c^xkjg~zF>oSMQoRxvJ)%FR
z!#<h+BJ1*Jt|ZiT1WIqRnZ-$KVVC(=TMOG)6mfG;2Df+2RL68PQ$JO0jy*+HctRCq
zz*-lc%*X7sx5_Dkkp09yCGGXex?5--fG}B-U0ix4GicO8OH!3?BdL}IjXOO^s{MX#
zgLSl=%iW0uy%dY_3h{O6*AXL1l^|C9M#)g!;oD{FzsB-&uEAItue)30(Cu*C>h)r6
zcn}wHp9jx+T+8(e;`p2Ue8h1+*XxMa5w9m+&lMFUEhMQ&&s`UcChd_`t+p0>>NMEN
z)#C4JzShB<xp$w4J at EB5^NLSoRnZxnRC{zQ9iyewoIlI7^IB<V=>JXA(5|majg at BE
zq**>`R*JS{nw990ah?uy#{c1#8agM6!3w7#D>d#oaR^hc+AfO2A?8fFq*~A3lPPvD
z!m&;4dxKFg>Uqt44}-x`vZ|6bea0 at P9V72C|H$<Y(FvnR(zfW~Ba!1e9fgF6AqPHr
z2h_(MJ^V#vM5klFJDdCv$yh;0MGt=-fdvedmUTK_$$T~D7WGdyz(@aA?LJE1<{R)$
zJ(}Kl^!T@!C7(Pe;|9qL80*>DMsY2K%+b4x^w^BNHTkNG_X&N|o=z;-{}=8L$U|YH
zmmg`(8>c*Y_2`H8$UZ&(0~yV=(udZ(>K41Waf-<b&52S{e%W7(wJ!QBS?dkLO*DSc
zfU=mieoH}ituLg07<VI>*VrfPQES5g)g~(l#ngk#6j#-R at GRoBtf=Ru`WAaSLG9j-
zMW3|>O5x!zE4`f6z0i{yF9(L~+N!RU%e!UqFr%#_P_)pKZu5J)mV6{unbsW6J-=>D
z&l8`Yg;0$O^fX(b5oL-q)Z@(y!Gv%+Lfo#x_mMn4R7=!NDNbJL#!m!Uco0Gs(4sA*
zj}?-=jDW|S>^-Ik^ONkylxki`H;yitOF>H;5r0V9a3IGX9 at -EpDJgCZIc`t659H*8
zhe_Pi`heqhigV#acgq7MXqq5@>v9kn^yo+SNM~w#<qn0W_$)iFM~`y+z!U8qy|l0)
zG`gfXKFyOl&fg!0``s%ySF|*Z7C<mZ;Pur-vgN6vfnY7T#UfZTb{4@}oFQ03Rx!*o
zALT4Y30$Cchl|hGigHp3Ctc<*0E;%|4K{SP)C##}K$*GxUSFO%61$oixTcIAn-7S9
zt{iu at riWx+8Z{Mb(RLEph(=CUBOSWy{~P^KhkNve!Q6zRZZdOM9SsSKFHE){Wz@;X
zi}Kq|n~YvzxF(oC`Y=mb at F=D^W(k at i;S4M%HJ>;pixa%VoVQy#T2qm+f(|l(p-Jjb
zMk)3yT)@Se;V?G|@Lcd at b+iVZjvljYsFXOMoQrZIu>+2^?2-0J1GA19Ctd`#SXOGP
z2=~G{_Qa<<;EqhO4I#MVa$x?MWk<8LCeiOueU*^In5(@Imxv2U8mxED7-Lw at efXhK
zQ?oM6;=mYPBPJHb6a8EUA$5aw^U(vCkJ*<VwaBCp0q;rSZ;G%t-s*O)5ZsaU^&j+3
zG at j&;4)0c+XTBc0-zo|}4Ovxm#DaVukOdCopfoeIyZ`Kn`QhGldWGoz8m2r~4Avqc
z40<c_sUhb2ISJG^P3nugZh?K!V~z(TG3JW!G852cc)>de<4pVy`x<uWw0RzXI~=!@
zXkG4<(Jj94o?xvDb6ikBpmR)a5~hWDFSC7+%;|%wJ(NQpQPB%wF!q^AkYBmm=!HFP
zx|F#Til23eRt5|X4XuygVy~{!nl7aMf!xp7&ns}ccPvUZrcFf#&*FpjG>5d8F1Cmu
zmKvL4S-2YFY$4rx>{mjFV%L@|h+TW45OnS7c16#HiX&9qfnc3{hhjn?nbm3c^bD*Q
z8ARErE-cAx>Nzj4TOn}d#O}_*wS2OL=$=}2b?K?$GpoL351*#3@<U#Sd$%neQNAwz
zeS3UFSwm=2NnY+3dig7nPsR9+dJ#M5j1$%zp_T at xQ_o$mmv4 at IW?Y!pnEWjabNK9N
zG7rzXq$_-!cQc3QIc6~){KfBMYK<mvmju{`9k)oJfWVam^qAVEQaMH{cAGOflyR#b
zy9R}(*8CYYG2 at a4kL}kP&%>M;9ktjdI5B-I)4~6|5R_2-L|?G&-Mre|jgTpS)#&gy
ztFE+%tJywsWCsa&6H7~L;&pa^<008S7mxC{76fwF`<;RFN&>mBWb!Q8E0nkDgb1us
z8!DPFLgk-D{tgalVB^QCuct>p&I^x;e(VanykA7<=Gfn(Zj)|~eMkayb8M3Y=;qkP
z1VZI+WkyzyUtXlfb9Q`kx%PBmRPTaVjvl`xN6`6ka<t4uhB*h>irtabRVDo8)ANOl
zJW{HxqM|v=-u<DDP8?&C^TA__`4xxL9*b}3c~hXWAhlI5`I_#^867zRZ3nGngM)Zz
zPv>2HN{5_^fs=En{pu_D5?RT0vSj6Wj>Y>^g*wWt3>nEKiuN at 2O=Ko6^~4)r_A>u^
zhb%4ful)ma+OPd)-6BV{?~KSfl{- at 9jeQTl%Czw`_WkKCn{COM#=d{b`(KTHvR1-x
zSgb=NH~J1f<P#RaV2e*qys-rBM!?t(5%Oz4ZLi#&sc+0ceT8eJI_?fyRPB!*IwMui
zc&ob3AYfHSK-E at 4Kvky^5LP9eudUrzz;xtXHfE}tCTyYs7=Nv%od<IfiE<YV<iIC~
z-Cw<3+VypMd>?iNGSqMjL}my4E%TK78x{nrD=<PZz1iW3oIfLSK#!k4Lyvak5WOJs
zuMmtxm0rGI-srwMa`f#-uvWm=1V}*<EFU~*Y)qLkq6ZGo#?)kv#Ty}G_dZ*}poD@!
zVH9f=%<@5xQ;<^d$p?cR>d94plv~Xa++}7(EbA}wvz<O<MjuY8|7-~-wFcC<Y7ScN
z=SR`d3J%n~F7Bn6F-Dl<Ak-EwFMUrw!#J&-0!o5L+T6W>b%NDHC~G4hg5FN8X&Hf#
zF>wz}eaJhphnKJQChlsywRB<RI8l at SPG#s}LwJUd{%2X&;!UbGKSh8ZOx3F={)sQ)
z3(RZ9x+u_3v4FN(K!3qYYi?An*kaD<hj$C<sqb=LPiwN1sO&^RW0QF&`-kArF^df5
zd&FqqHwlXqE4t&&>Eug7pQ|UHOJbzFzu>fN!O>Fiud)qQPjnFuV^Ey<IsCckAfFE!
z`L)J-wdMZ_a at 7X|bUx}vG-jeIxd9gnq-7RvuD at Y&-juM$p`tw08X1N4wjgu{2i#O)
zCZHdb>mZh05v;x-d`ZwKddr+hwe$&9TWs=MNnyx>M&K>nCiC8s6MEI>zZLl?>xBD~
zAh at bTvCdpTdFWq)zun;lcmZBWYg5-K<e0#adg7Pn=-!tWTNrpn68q2Wq1#(*T2KY#
zdvM^E at 9!S~DV^RZtqI1$Z^3y^+$VyBailt2x=d^OfdB%hA>%XD>(i^wpOn at 2#xKk<
zKYo`csihU3iGnm3zdT1Yx4xa~fXz}ip<uk$j*^}$-ws at j-fGMa{gmy#mhVw&qj{Ev
zPM6sN7~``}+Zj?BABt&KYLxjsfsO{>nz6=5#%J<~kB8K2ska+c`v$3&v+8YDXI8y^
z`a3XXimw*gsaPpXa0d{jwzV+uH<R_{lf|Wrsj5zCtFLWmp23e+Yuw*~U?#`x<Y35t
zBG!SkkAa-&KT^6J(+Xc4GWLhc4=T$;x}#xo1*g?AV$g+l^LYwXb~D=FG|TA&Qv%km
zJM8E96g!jM%*UsI88&9%m{jB`h)i15)1JH>68|OR^(^iZ+GL(dNmOK;lKZh4 at b34Y
zjJx|_kdz8VUFEXDx({aO at iLdg!_$sJmO#2adU)8Pm$(*2d at V{r>Ul^$Vmj65(eWbK
zW5+*)8;loqL3VGvS=rL9I*hShG8^U2m>-g5 at SQOikuUA~6Q7U1Go~NrwF5B642D at L
zm&jGj*SQ9 at UPjo^J=NcG-o?d1 at VjP9F|5g5r4{zD;~611N at SO|itKcZyuMZ^Lwr`R
zIUO`*H-hk0di;+zPHc$3G at S0T3Qp*514kBao|P}ri+a(EUNlUPO)@$<XF9pLxv*nq
zQDMW4u3lfuxk_5*IQpXfj1}G=GtsH9kF2&%171X3it|=C0ST9l9R#<7?71n1eAd8(
zw1kBC6RJTN+?bT!En&13aF?!|q$yP3Jremy*2bqW>KV}e9!vwEthp@!D~wM#rQ)&K
z7M*UEQRbN;-~o@>&);I{3|M9dO?U3OOUExNFbmn3Rv3E>hh4OXpwz?leiy*%eZpV`
zt0(UX=cLA)E6Bw>#tg;z&-k*U)Cj||4G}1s at Nuq{0OTyywg&muX5F#dnQGPNarc$u
z&obut?Y}csZ|jwdS-Hk1FOiv9t{a(IR=#`xTfPt3t-f+id-Qp`n!A at R@{XNGBNl%L
z8Wf68yZ~67HISpfZAYkca)LS!90>GQ*-=qO at 9Hf}ho_p)CWK?MM^1yvjx6699_rm0
z8M6jeZaP)8232u7<yeFA8poit`z{(PF!X4M!W;n_X|{pdPMhG_{3*exCwux5IwNBR
zVe!cvu<WkLTG75E5x4mrE3bKPfAQ3X^x!<NtAUld_zZoXT>BFivCC)^_kV at 85#55d
z1A%Sy05&(Utt at q-IW7ZgQa>oONO(_SbP%*Ky?+g_gvOX=V?Aw2yDx#+g=K;d3YUIc
zYvQ016$juoWbb}JV)IJ$_`<vwWOnJfZy|DpsvycskoUY(HnG^Xi>9oXHJ=XG`wdh?
z-n1audnD{XkZ%u9K9KL^fSxgw^IeQ0MCc6NSWg#!B*Hs7 at V35u#tPbqkT at bCio#f6
zds%CKOJI8yMn^f)C>w6{V|(N`;-4f<M~T8=lUvaIiX!Dse3kH1`uhILVafx-7tY&)
zZmvXCJb>F1A^VfjLj?AeAw=SN%mH*XJ$tGel0T%bj=-L(Mq>;6=17#e;X;leeZ?e6
zyZ`qF!JG+J?YbOO8p__7cFzXA8D8ImQVnvohl!9ADUb?$sdJ-!xsfv^>`YBiNqQ&k
zI3kqaaNNd>kX>ddgP-5&E0N at MhuDv!M{>31vsA95HHXYPJu~YpdTp)AQUuw`-4Od1
z*e_VaMdmw<pSc-`|Fm0K=8&cTW at trY6s1Cu5})#($mK?nS9Y&Lvm6+DwA2f!Vqh8%
z+w!105Hea~omJpGjU4C~MPt@)7q?oRBV14R!Sy at Lv2RHKW_w8avz0Q`N+~1dF)O8S
zx5|UQ!}U`u<v&(R6)6u`DX&;5K2q+rQrfK)D5z_hmGXp at auX@{St*ZNDGN!t%Swq`
zDa%M%WTo7xQj7*B0EzRh#06Gji<LOnO1#)gR4dBsnr$UcmPECqvIargf&o0pLFb2h
z6&gmWqO+Z(7*<N2l~PPfqm{Dnb%lnxq&#h<?6p$rN%@<VvPDv?{oC3T;d`vXV^7Q5
zE^Zxo=dF?1!@qI*DWAxpF>U5Sxh8>I)Q6f62n24Gh;xdGz2}23?Kv`@qK(LGJ~#~s
zOXYb^D86W)Uojg2t;c6q5fs at p9&s425?^TEq&^ti$cb6<N-I{u+=$OPY|fUbVfcue
z1*&6)F5$zwRC=9+KbCOZs3#2Y(H4M*t(fRA__j at AubN*lpNUl<K at j`ciiw#>s at f}2
z!+4CS`G^Jnj}l&Cg;z?r$qI`x#$2Yt{mTpdUTgWwrFKXymmw({nFAZ5mV*;M8&+G0
zClS_$P+)5f$^b<B_AZ^wR8RuHZu!cM?^HtJ1lj4=;Ty<OAC0YND#RZFQudt(>w!q}
z%PE&x2cLbcqnvNfAPri*9>0~kW7pK{vB*srsTV>+rhN>A%Jn+#{sH6t8l|cb4}y5D
z&783r?%+9@&iIA0t<*S;Wkm;nDO0(|*oq`%Y#p-$?LCK(`O60Pjx)W^Z21@=OgW<!
zRHl<#$SlHaE+X{|=53EYrdvOyD}1RALjqw~dM=(9n(l4GH(@mvCHbf6(Y-yU=L%X@
zPD=#E?7_Ep=5E>qwLISJP$Q*$v4?fq-h7jM(e`4wv`_NQ#32gR8#w#HU(#tBs$_JL
z+k|^j+&BBvJC+~f2_YliKobKTH#A=Ii`Qx5I%Y>N(3E at ylR3Mmv05rY_1pws-LSkw
z9iFbSWo(tAq~=2O%FX64FQq94_%*<<0e<82``uiWPkv9DqisgxUTTzK%T+qr#-5|2
z=Fw3hll__F{wn|Ke8~`Z-}ou7>bf2|$z3exhycg-w9K at LEwv7p?`%@S6O^+u8#w~t
z0b247{$%;3e*Yd>ue1%4K_77RN`&t~!CNSmc-z9?)s5)hOvA1hx#w!uiq&w=fJLiq
zk>TcoSJes<2<8cgRM_fEe~!SQ9C?RT4gqSOIVjzu!qIHEXG&$$s0<zghk&F|8T0d3
zR9RHUwig;m(95@)rj;f}7K!e%q5{U;Y=x!o=I<nX{GVlnpR*8oCq^d63HwQ|p4lVU
zCMb`f<D^e6^T(>_Ftb(O(R;ux8uN?5Ejyj$aF`3#7ksv&ogQV#dxE)_A&^H|?2<Fc
zY0-O>$&R}3Q6tLwVzuNs?bmoUZAvHFMN+>9pK7Y8u=a(x;}prvsE~h at p)#^dyUZqq
z<&EYCFH7qz=T<3q0`PklTJVR#@AX6P%0j0d at SNn;ntlpK#J900U=I$Sop~gnkm{eF
z*?4w-X5-nBvf_hh==x6tsmxI3qne?TrO=w9 at O;)3&7@`KD9o0cqvk}gporuEuVMa3
z2vUm}X7%`LAw$is!hLL&v~nCvKXRsZm*eFasaJ65_j2ZnC<soKAvbnfALD!!GQlA_
zCHSDv6G6=EgV?SZs7w4#SwAxbn|`@e-ut>-*wmT2K#x at m&~wGy2Aq^onw3zb=$#yy
zc at xCnC?u6L_iU^i&7YDj)oG~|GF1uReT-~6h)P3-xhQqwy|F<TrOq}UIFbkp)p!3m
z32-cA9G4CnJM_x!FvqPNX67EI*R-aqm_gEP5V9^Qn`5o_MXhNU{kJYrJ>UU~)qC$A
zt?93PNdB5XwZ at YNd|*<pLEVzQM0L-%6xyH!k&Dvq?-7$rRHwz~t|U_c?8V)s-(f{v
z(WSPj)2$?XgAn{Jrr%1<Uaq<&?f#(!Pv|rq{NEOZKjHm5xldKKEPJ_XrkM%x5kloT
zLkcpybNVk=J)6k^GURs;ETTUvd&lZ{l{XPSk8{!s_`KFf_pFoB<=b019I(y0<6-vw
z4=R+V&H~O9GNx7&IG+HRT_c6mX>@gF`_SzBpH-QyVXPDReXgZ at W$yH={}C|y_j3$j
z593d^=0pG?%(RGaS=`;s%aogZg}RPp!_hn2Si#oPMU(OrjbA;1OXT|3GHVo2a`r-9
z_xdCO;5^04Tn&dVaJZ4>MLB4&ObRpPOb;d89XrQZ?{(H$3}YWKV*<)Z(zvA-&}F>V
zNO|+x4CG5fMpNlyq{!I}<AKtL2^z1eTLJO274<t}>;sk^gh&P97P1g5lk^6{lF5S@
zmv--(3y#l|jd`>AC-^6$3#h=C5<nC4J`5oVR<VHGB0q&PLP_fd<2MP$7t*=9>oUK&
z0zsrBJD1aLNP^(`MZ)0ccZlQW!)k#ZeI4#)0#N8A_}X^4&1Q|40`qeL14ANUnk_I(
z1kA;Nq5B}ZC|h#aASk~EN_N~8oNoynhXtp`g7Zy*Gvv!~I)uZ?v}TrqGnoF!UAQ9v
z0818k9}fs+siJiUanmx_s at -$oF5K?}OYXug1dg@&0Jz^L3_Vzu=eO>{Z5Q`6xeNCn
z1VqOacXutI3UpnJKd_mb_z}wVQg`8w$$<aKoGf^y#5kso!Mw!axps}JMCRIT3B}zZ
zUTbhrx0(B72cw$*r*rMQAR#-~rclfO&0O1+>Dia&+Q66?hZvGS-6<H at MJFC5q>hTy
zFN3gos<j(ScM6Ty((Zo)GUYHQotVX$LYHXeoCwYJy at CqI&3(MQu#k?Y-z5Zhd~kd8
z?eY8dzle&+Y28a;%~O6Y;2h5N+<#Eu;Xlun8psW4xf|z{%Sel!!h^^icjO6d^i?~v
zmjisoo+JETP!6`dt`4^B2;=HCaCm32W~Mg|2ox#5$byCD7}XbxJJue56YHq>arjlL
z^7kK!*ZJb%Iu7dbqADe&m<5k9#G;_ at mz9`1KAHH|{Dj7(-QSiD at Owrvhv0=PDfuow
z0u$<ps at oYd^ej7%)qyf}qZ`7P$#9?-611~V0SKR0F~cBkycKzmKO8ah?%~W)w7pl4
z-q~vtYpcrdl&grQD%@cw=Ee#}BJzg(xD$x8+IzHK)zZ!i%2d at bi__K7N(JbEu>Vm2
zdG}=Q*y`7J#9TjO)CTC5Ii6lgixIEc;hv==kpe}(MIWTdLRLORFB3HtOEdN-Z!?=W
zir%ks>{OWtFKy)O8omlU14=V`@1uMiad4cTDSzpp@}sQs_}bl(DX)5*9hdB#KSEl+
z_RgOlX1O%sX<SbophYp)D(m&M^;*qK>E1;A%9<mYe7N$}RDKvZ`PR~9{#Eus3&b7G
zSNP;;UtTyA?aL33iuO6f)1rMt!&9PtTG$!)r_jAET^>zxANJ$43MU7xi6f;1hFCYk
zN0a$l)4h_?XAg%FKYvKreDy`)7Q~ntDG}wTco&lnx;XWsjvyepBa$1gzkZwKwzu=J
zP^E at c&&`v~HNkkcMfNc!lt0c)c4e)m=JT+O94zFpLCtvwR0r^~h);RpGnV~m0)LkP
z(`w3762PW2<v{{^^tYuARBx-{GSH#cbrHYC6uUy=Ooxe&?_rF$s4<?zJvXUb-I%0v
zU!>JV)}huUu1x-Ci_tDe4-Z{B1#A8ri}^K~8tDAM23iq}&Ucc*8M)NFVjU#iCwHza
z<MEg?iFf*nMS&|B&V&4{zFzviH!ql5BdB;nMHMQ<z+NUo;8;Cc at 1z5X;uLJJBcFzH
ztRa<eHAUKAX!WOz{z#LR``H7+98<|?b9)=Ds4Et3q67Y{qmEvrx21-u1Q_<GNJ#IH
zE_JCct;_NQ!B~w`Ks;goKtP1(g<hQcjnwFjUzlsI#*k{&T=*oIwD{|z)&PFKTzYN}
zWrs&JxD*B%w5k<&rJ;{7+S*LlAMN1_jkeNU&ICCQv?U^i+S<2=F3L;iq$aV<iyM$b
zIaEq9r{N#5-6Z=sD{8*SaLAc(piXykd29jilBkoJrkTGJX=U)jQglqUjm02ZvihL$
ziFH-pFEMq}y0H(5Fgnk1AFojSd}Yb1QonkjrY%j7G1QGwLO at O))O`2g<_}ZNcZy1Y
zd%m90jVqvfoHj8E#4}Sl6#4{^E<9SD9QuN%6}W1&`BNc2nXsRDS6J$-xW(U at zhXdB
zf8wx_pZ3aXYG4|%n(F2H(Ds&){Dhi1Gv<rVM>oV}bkX at 9dQ!U=HIrOWhZejB%d5K4
zLHz5eQ*JS+Em`dZl3XZJ^DpydYH3(rY~%Okw3- at -_uzXC2KX6>zY$~r)ws=O+`=;q
zZ~2|h=)7X^zL*tJ*_^(c3C_J|48E`eY__kOv2iw=w>Mna6P-Px7^;vOZcHE1X67)g
zj-Kee5np6ww!w@}KY!2W8$pnT-X at D6f#!|;fjpe7U<?HYT7r#g?9uz3F;b|zy7*Du
zG9|^@H$7obZl{Z1V}oIHHXO~!&y~Ah5DHBB0_EqLa^Q*)>eT0TDXTO4C7H~{kT~TB
zaizrGB&Ju7y^wI^94p(DY9b=H2D3RUB<DY^oTZY}Ay|m$TtO9|xceQMdJ~`J6^vh4
z(QgcW{4*JG$EQ7tPyX<If%yt2LGnYf^H~||#jF-DN??%KhR;qHqb7H?^yMtg at 64yO
zD3RrS8%|4NvXM7tn_u-~x?f!~$V`!usgy0keB@*$@ENYfG(b0shMM0TF9F9qE6xeu
zwu-d-y;&rxDh`)K5W`&oKAWBG)E}KNiLlI883W0VDDXS-XT$%i!pF$xB0E)n7|a|;
zl~a&fQx%I|-9>&50bkV_k>N_4B8sI2vD1^HY{K(RXAM=DpFb^V!)vi|S&?`)MaIKP
zcA_Vc!<%xzZKHX;>PQ!3fKEp5VgsrEqf`+&L*(^*ZB at a7Sgw-Kd{ws|dq~P?Oa6mi
zX{)#d=(5r(v+HEVPh6sW)&fS*>1RW{`y76B>#j45U=b&Pns*~~trhbmyq2}%*`Cdf
zN~w)t$9&WDdEC0??OF6qU)AmQa1~%uQDePdHNparDa+ws=!!UH${ug%MP?K at SO}YE
z%i>rC%|^duxpX9_$TWzZ)%_7enGniYf2?#T_cnGX<rj9c>&;<&AjAB+Ud<UM>u#fF
zhqf2&IL$Zk?bQdJ?d~sg at VzgW+0B+knFi6>4JyO<iY^TMYawmT9B|n40?lSg<Qo1G
z=8G6iEj<lx_SU5qj=Y^zAr7fcrNs~zE-+UIB9j8^1X0Ae%{7>jGXQ at 8z@*M<7B8EB
z*Eatv{I(uFl%w5yzU&dPM at n^I=rMkLQoWxnty1r2ODlMXV$YVA$vgi2G?!~13FY?5
zf=9d_^!pE at zv&E?uMZwX-98sX<6)<E{|W}V*89bh`LpBapB*${+K&Xi2bX&I{R~k-
z7+X0$n|4<RWy<K<MSFs|d`~ZVm&+&QY%QGgNgO!U)bB5d^JdZUEqTYc6yhgoS8C<=
zIgbharN5Qg=8;Rk<=nRfnE^i#V at t@mbrYwipWWmklDtAD!1feB9>@IvZ&CRyyf0Y=
zY4=mQwBc@?thO*aL*9?Wr^~Mr4BSWM*H*Epw&~?B$xoH!_*=MhJ)sWKyr+%<Z&qEo
z%>r|V)qz^TjN|BSZTZ#}IG+NdXt=*6Z}^}d$Qj}+9?rE2pOx)>Iy|0(#uS#8e0}*h
zgT}!HD-eE`c!IfaAptBdu@<&!(Hk>W$B;!1FCD{okh+u|LKeRI{%rO;=Z4Gqm8yeF
ztgl<t*I%ix_q?Nf_b;lFD?yA`!zYD|jiK at _U)Lb4bRrOFHSBf0$@zkD?-v-u%Rkb+
zA1|?*W+BV3fQM<?7mLR5J?Q-~Q at Qp1<ji+DRtViF=aln$ctJJRca?{{A1-!>Vhk_y
zRt>NCM#<pQMJ+1FMngs_c>`|}7P}!3%!HUV6S7$WqD5a+S-(iCJB$o#&g({I4H%g<
z0k0uzgsG&~f at qm!-HBK3$=~4J_ at XRKi>c4b9M&C3{B|HLV90pAmZf>7tWW;z2#+vF
zKZiRE8??B?eE5vGv$7<RR8a%UCZTNA;a#=R;FqPSBhWHDg)880E0oa7kv+H9;@c*_
zS<sh`jA&(Xa8_g;LTH&<A0MSWgVKs5P41#&=R+h(M{)x#$H_fsF;#rnjF!trr*Vv~
zOGX$qYBQHUOAFZ at Y{_qt!anr at jG80%lJpzW1AE5xBE|+B6Fl68v3O}mAkTxtO+pgx
z>S at hMjnh_fTJ!x}ZB-(=w?JDJ8sX9Y!Ub+^Erk5791)GYnHtB!Xj9fP0^QNKIbCk%
zzVuGhWqF>+I96FrtFs0L#4e%P`~rxe{O?sXA^PH6`kqK7&5hNf3OnlG(K0(E;B|P5
zKP-~_ at 85-&J`^lJ3{|Jq+7-LGFp?jKz8&LV at 35tdji&o<fN<%#9cg}`Z}BdBs$O0>
zsc*?EH+6};@=~+q<wynOm7kg-uY%MC@^Yrmk=Kw^nY;>9C(CPS>I8WerH+ at ED^(<~
zVJU~aG%he$tAXYPT9{uUd at Ug!F0um$v}d~*|44oye#yR+o0;S{+SU}4Gg!WnrQp|o
zyv|tXFK_d%)9&9&vhl!ukEynAk)K{#+-Dc?_T-Za_Ts)AiRL7Kmx<;|G&lLvOf*lT
zdCB`TQPng@>P}Mo^5s*0>UIeiNVp(1Pr^<KJ5yIkc!-3DD7^F)O1LmJRnmt_c&Pjo
z_u at X)>!Q?Y66S|>1QBB-JWRsFQksP2&n_*Mt6kAu1Gm%MLwgvVD~kCo?{#2^-&hh1
zMSN at _L8D8S3_<ajjB<T&@(Nb7;A~T%>N*5hVNTRub9AnA$pvzawqQBR3j}R`7;EX@
z%eO}lX-mIvJn+-K78Z?l3Xg~Esrj_(P)_PvdF84OAIeMBNz9Q7$}2xLO<n~lue_Y8
z^W`-pb(XveQ>V&nXlk6iic%%=a;1jLYgkH<bx3u1#{w<2oo;TB-G)_s!NC5*f%gU4
zZ9MgvXJKN{bcviq2_LsjCRkA~Tg=TMq_is}u~r7~)XpA!UmX7fo(Fk;!SidLKk=;O
zd79^Wp7lJNcwXXpo#$;HlV=(pxfk=)^W4sJH%}|iPkDaL^LHNk6`Bs79XxOGyw7uh
zCkNd~E6<O39_D$J=l48+<9U+j8J=}K-8|cPUgLR-=RKYec=q!k7hsQKY=vJI-5A|f
zx-lr_2=jTk-VE#WlU2wkiB!Gtvi}hk;Xc{M;f+1!-oLUrK~gGkT24praN3weY0O!N
zmKL(R9SAr_=P74Ly&UV!OVPLO{A3y#zVc863IjP8fvAX$;7h&_2)Wnz at O?nyU0w$X
zow0?ME8hpFKJS`(Zp!604_q5ew0q6F??xBH)b2L#EJ0Fihn>1B$JiM#BFk#<El0%X
zhmRNH4$(mWF=gQK%-t(r;SaG4PxsKgy+Tbcfc;@d4-Pmw<R)+k69tpy3 at vUEhm>2y
z*{EW1i&(dmqX1BH{2_`jpta%;AwSF_N}w&!rp|oj6M-#hgZcQIf=H!>?RSgl5Vwc}
zD*K~C%3?Q^mRXGz3EJ|8pxNe2SXQNl-zSqebNE05JIxK8+7=OoKm~@eSGZw7j%$|D
zi>;Q=hiMnx;XHK&i at U}-y~+k0XnsF at iBYpqAf7>@w^#e2$V2}HvWOsx#i+SSX*bM2
z{Rc&lfK at +ko_t$o8I|UC>v4Q2yj}f%B;E~6CzAG+J|u6PpTU{T3b{~Q{1^NENbY_^
z5cYL`B#ZuAYq>u{S}Wp?nMT=#BIaDlUnQr$PR92qU~B~eD8RukWO6=fW%9vezPQQi
zSfu_a*OJqpVufG|IUqlXdf|Y}$#Bv|V^QlA4- at aXf(B->!7MhI#qs&YSp(!X?Se$y
zbSw;}9vTGy4`w%tvD9Pi&PVUb3(=!<b-6mAgbD^tka^LcsIjRuAs8oNu5cJ|n<T9!
z3H1pHRq&uBtR#V0h3M)2DEXxYgdelgJ?2uZUaZucluHW0GsmjsCzKajUYd*X(tKA8
z0V0E$_oGs+?B>Un9&F3r)gGPl%4>krnyzpQ!RbzlIz;**9z6rUCneOUUKs_FO6=Bm
zqEj=Ye`JWod#Q4FQW~W<f5>q-*6%3O^Ur?j^w|?|SnyW&r0!8KVdIZ8)Bott at G==v
z^F+i2>nkc`DsvIiC{d8<VhR<@<z_RV26DXIYxqV8;shC(KsICVsqnA17YlkgEku;N
zBA_Wu3zzvn{gtG0<8zOItGNnS;5_4AB)F;<{&KKSD;VqV|3Xx0%Sx=@8;{@gzeuOj
z)0#>+?|qndLb2te<b=}lacI~&d7s8}j^9Z0niObRK9%=>cs}Mi$Rp_mq-*AkKgjy1
z+4_vAEUM=gMMegymhTaFqngf4<FNUsE->f3t+ZdGzx0`I)0EVRFMZ%v7Y@>nlGAlf
zU_h366FJ2KRoiK9{=HSP)Ooxrivv)9ovDfDzwluPeI;Llt4;uXMSXr_k8)3#!$F=c
z=5VTH^&AAma8}l7O88s}`^xC$O4h37*c%`>=1&-SVpG*^C8wE9M8(Ni5Uhs8gNreg
z;LZvrv8+S9ykK%eNCd!^A4~IdIdLr~3V9!28^0<i?tg)!;emLNbKx%pw3*$+;<G$(
zl-kS<<!zCnHJJ7CmE7=R=1$^4XBaZSjRc=BSJ7eNke{i&0_Eci at 6w`p-Z=m2IRt)A
zC(GAu at 8u|(sOLB)lZ*88;A{2Aan|W-COYKm_&Xf&<tR7e*Vw&#?tW1e9YgWb^BYYE
zZz3DN7(a5#zksz^(;wDz6Qp<AdKpVGPFc(zS}5UUWV=;P5G-O@!y;RaHrGAgzj%K3
zcd!k7@|E#R64rfv-+zPUKmyvg+pDbgoaG at r13W~b>}#*#5SAJzB3FT#yOJ<J&3Sn5
zlC#WfRUJh%(rQzMv;<e4_kXE+xJT4#t^ZPCWI9&?Rf^PXbc*YwomxeIzMbp8zuI1a
zxnS;ArI63n=P?^lB({mWeJJku^c58T99f8u0Iylc`%-h_Hkntrb^mpe=qZ^3|A)Qz
z0E_DC{zeBWB7!p(lvv`Zs8~=E8;YDWqo9LA#8`sSM35pVAfYHG77&ww6Qb#+lcuIh
zIvNwfipCh!6pSfYVg at nEfQneTzqR)|!^oTWpYJ~3eV*?=&%IlRb$)y8y3RhkthLWR
zx7(hl+S5sdK^VV_Ty1Xy%l85bzHWwnpck^hN*yBQ;$!g)-RSvXy!TLW^(MNAWsVqi
zsdyD2Cd4=AIPME(Fb7eT6e<erfmp7}7by5ufJ(dy5NIhzKLX8uG->y#x59uydVcgw
zMqvdI{gl`ji+z<H92wb8V^St>86C|p<>UN5Hg=L8M at J*Je&PFndmu|%i-z~M#Q%hT
zmvj$BQO(c>hg)m0i|~^KJU2z*e?+<3FbBIFX+0fTl=eAn8|4ud*FC0K*Pb+Fxag)>
z!|VY_WM{K)7KBBe0ZLpHzS*|pbrK at RBJ^rlf1!ukir;f|tn75}qFL`ogxt^<j3O<X
zb+`4t7lkB>!v9{^!Mu|?AebcZ9m|>iVe-9F{llx^izlZSie<JQjj}$rpYo5eUY%O(
zRv#8TGg!%PPbW3tvuMrkEB?X=qJR8PBsA5!_74gfX$}88a>%|3SWDZLN&2sLjIBz>
z3y;nF!>xaZ4LKJT|4URzwSIlFnC~4$^i}>abF_^dQaP=-OFjCywm1g{I)Vx7!a6EA
z=p*FE73WZ|@Q43g<x5=X6D+RKxBOr`_$c<UlI}vJ(i=BCIlj3W8^UU+95NNC4C)n1
zgX}78Ba3EXZ%+8Pu(x1Fx(nUxx8{OoH<D!-PM2&h$6nVk42?ta;9$YktY7;bifJwm
z$9R$UIi_+J*PFFRQCa<G9<-|pr#qp7!BjzfxRBle!#a089o+y+Ei(I&GAYXW4QV6G
zAE9?Bo`ud91R3H@#Xaq{d{PkyiHBLQ!OT$X{^|mpjAngWRAj=s$cE6y3b*V&5J`iQ
zck)_cxLzK5v(95eA(%*2Ul?wv!+E4fv1<GbM~x<p?P6Kk33o}{{_k*4ad<@=oQWq#
zWXj+65l$l#mHZoQYt&{)s2lZ~Vg6w>5yIBbW%#-T9zJXo#+L^I+^IJa2OAk}-C;10
zhYRdMWDFEL#eh$Bqlq64V9mZq?xeByC{1;rp;l#GxfPvn)E^UydyXx- at 5Qlr;X=QL
zrkxntO<p-+l#ID}f{#cl2 at j$vym*33Bw8mD#IZ)rzN=eO#JSw`Zkxp=b1oWJ^KNSR
zNK|NWFJ(=}p!m0S*1NS`u#Tp74Bcs<1+N<x_nH`ow>8|9=3P^)kDZn+<y#19LSYzM
zO8hRI&bp!o4~p5f8p(wP&stAgG;vlj59>&{xj}CT#}gK{wL#yJKGBTJ-lX*@!*)tC
z`k6>3`Fp4f&}N`?Mn^a_Q4b$oH35z3a+Gyfl=XXa!S8AWOhk7T_oQb?7v=hkd7WF3
zxw!((_($>JiK7=$xZ_HMXkROSg-Bh0s-2IqY8`dBS+OmRzIivwENX(sQMR7ENPDOo
zYEe515%4{wAhIGpm$!1guC|}>`B?e{-?zTD6FhhhjPLJ|4Yn-03zpNR0jLkwS6267
z<+!5mY^}cuoXGg2SP<eQVKe$N(Z~8+{1%nQ01)8{)v?`Tb*q?)p&-(lT@`?#sHknx
zWY5Tuy;)0W^Sa3raw*Gyod at 1j8t;|Uu6eTOK3BX!x?7(7Q at qw+MIP9!llh}uQHef#
zNHw(&tRk?>5{&}md9&|A)ByulC)}qXm&tA+yEC!oxs>^0ooBP}vEit3TY5j$`j{v*
z-Kh@!sh4}npQ?xHBjzfL#XN<qwA`oD+`>r)?+w&sFnH&`$-s`)^S{eLU$6$Z+#!cM
z^q)iZiTCOYn!Iuh1(QA7Z1Vv>sR$b_cDI3ri--k6QCKKYYbN*`kpLbP3rodv<eHF*
z>j}sOBEok$Q2l=pO(BV<Y}h}D=0d;!Ni^CTNy<iiq_!*r1+qOxZC|tzudf{Pi3LZr
zk>hA1;h34pHd6JCluwi^jtgxPgQC_<5 at a*M;hp=6CVJ`%AW2cf=!lS;S%Lb`p#$9y
z5nb`h@!l at QV}N=L;=#lKZ=e-F=HKLj7$FszhvlME43u<<4>&?n(Uu_<)S1mfWD2co
z3ySF=>E*+$mD^}OkAteleTDwb2DwFyXvE(Uny8-^5$KbpG;Tua?}|fE4}}fc*X(;b
zPzc)36+5`l_P&AAW61uZiEb!(?MU&YMIZ!jBTZ=@^C!_zOI+JmikpOpmWWok7;Re2
zn9cLh8tHk&Dh6j+(d at _h*cT(t0FK07?D*q!$d{jO%3J8qjXK)`P&thfdwei2$_nXq
zUlry>i$&hz)lQrTGvyF^&>A(e*uNa_)?d<1Xbh{t%xDs(h7avUQs3gWYlk=4{~YPs
zetT17Ri_UZhA_l1<38bB_^)lrh>E at 7J#1gdFt%f${I=(oHxP|>8O{6WO~PXAaGp!a
z<8|d($C2?T at tr{Z+UIDf#1hkJo5MLgAadx664)lm9BQ)>2<jxvuM)l%wT!Z!kEpnT
z{&IZz6svdbgmu|h#uiU%9`CZO9nNUET!noJTOoie!A3f%+l+gP at zVAv2534s5v~5d
z8e1S{QB(rjVuV533n@>ry4fZK&ua?S7yn85d%Z%lG5K!O*yn|jx+{YIcCaPrSpC{v
zqEWja5We1+n#{6Ku|{6OUcXm{$}CC{0%s>>uQc5}jPEbI=pPm5kTu>_>^}xGimFH)
zh7oc->mKWU-(mUWq5r%x342Ctzj<M9 at _Cd!3EQ&nM0Zhi-*@6!=^?rjTRGUWQvtsd
z4Hn;tmm=HXK;5kNb)Vu~`N1?iR9Sx&M)Pnh-ulD`Mo546ovqWQW*Yf)))>#)=VcAr
zat$DYE5R$Lne<;Brc&QYuY2AGyL!&@Ta$PL+d%8SxYh4nY^kl=e5>EGEAV?t$OIE7
z=!?<LEPXIDC&M7hhp#m@`(~o7SVy#L_O%a^rM|D4M&>Gv%5+pReib$&Ld034YOo|6
zTyVubr-yAKCd}L({lq2BYijpno?t6`4OZwcafMqp^Z?&7dimLu?VhK0$LBgcL=5cd
z)Y(oTFdnzsVuZJbpBW-Q*NoA>jAYa5Bw-#?ND~tzdTsF?bKCx%SVVn+W~IYZ?jO=?
zE4n+pPZST+kNdm0wphLCeVUv$bu+QCN^Zou4ePb_l6S at SK|8c=Y_D=_7Q%5~sznl;
zJ(_6T#&@r@&^0JBQl3t at z`qHn8Pq*03-Tlig25B=rBS&+e&&$(mmp{CB$AmA6vgns
z)6xs?rFz;PM~e3R_%1uKBY}o at Y!fYVEt-fvS?ssOnwQ?)_OTttMpr5Hx(VozhK2YX
z!qbyA0Pk#LyKwn_Drd`k#ol<;#ch}Vv#`qGf*Mm at C);{QbX&r!A}3lf%kr7f0a7P#
zw0-ytUY?xj5=!$fvLU0J$Bs0d8Z at WBE>Et{G1ClYg`0McA&P3keiyMf0@^xGi^PH@
zfZMX}R!l!}P?t`ZkH(9~Yw{7&)Vn4XbtXAE&ObySjWO|-{@G$3hi#nV)9pB(yFs2V
zqhI?MwGS)orszsu!*y8j at ElK82lWcWeiB0HzjSr_b(7mPR!8+HkGNbNQBaQAJ3f6$
zD^+~l#g7UILjm3W99pd}#3C>{9}f;rCmL%hxZ$#Na()Fi4dQ at IT{SxA3XC7o6*ezR
z^EXN6_T`vRlr^K}CH1SMiA9+XDuAT+=tiLGxGJU^IC)Y3 at cd?&r-%F&QKZn+0xGQ@
z5!M??VMRmgYT;*VM1RNUk+gK|so1xI`|p_gLP7V-|Gi3Df5g_^(KIwu^`58d70}(l
zN6GOKJl7^VGvR&uwk*c04p?+S2i07jH{Mg1(?DzT)_SJTykLFm{2%(Ih~`}p&AXvu
zf}-i4v`qWN`kvZwXc~3dIiu-W>~3=rl@{a84=>?+6cEvBR2X}*VKzS*k>5lf%c{w%
z_5obe;nj4FX6bmhkoRh1sIP80$G at 9x)5|1Jk at Q1a()jE-(mjLM#YMXGCa2gicQ@~$
zGTO?Xq~{vVJ<^(IKrUFGVoHrAco$r at rNs?)cHk3`P@;JuDNHl#TylQ;r)L3=KU$ab
z*;%GpGqjz_=6j&mC`2XbZCM0!H-3U^VI>N%#J^kuPWXs3k=FOO;0h+Au%d7 at QL-F)
z!e(S(o6%%+70~+BwZqp`^pBlDL$}0#T8bDCH&U1%u=&N-PlT}}%uR&(9AUz&pHjc-
zY+u4t=t(CiZGwNuullt`2u6E>*IVI%@29S|U|==C$k6P&-(L=^X$XR%j4fDcXp=bz
z3tp&g6T4>j4hxROfMs5%ALp6bZk)wM|HybM7iN at U!N#1E^f?w??VS|4an(2xd9Wk0
zQAF-;UKgcv#J-7}pvA5cir(6b at N%*-MZ(-<6r0S*#<T<qcQ%9_L^w<-oeg2=BB#Ty
zb5PiI4rWJd?+3#WCT%+oLs;7$$d?RZD{z0HnOQprsqJseF9*N9izF{L<vXlk`^gGM
zb^!faI`z+~g!D2-ixun}=!L1n@<bpEU;(%xVuEeNjo$01$7Y0zloqewATruJ<O)^Q
z6qNo5oAG9AX1qHzGhXYrn<sSVN=VC8_A0hY2}|DZ6{7V}kKm|7%L~pk!cb^f at eb2T
z-lT|-yEY(UA5s47J82?sa<<?>k40+(>nt?YD14k6 at kLDAj|VU$+NF)~L^gC!j+dR=
z*`9j=^Alk`Y$lu3v=*DxN^q?E>e|T;Txf)&0?0h|5*})pq=Fs2;{9{Qd(V^^22Jh{
zVq4psOtuq`BSp3$q4Q_c3E7-VAYy5A3KC|Pwc<523P6UY4d9Y8(>6{Tnxydr%N8~?
z(NLd3&w4I8r`Ugb9|{92ed`HZ(i?0!+aY&!#(0;x&GXt=PO9s=8L;Qk$_g59n0lb$
zJ=KREwj6!4Z;TP+PNgkwBcug2Glil4yb?VD6c-0~qA5XBj0|v+iBuSSSLP)g3BDn9
zz9?HT$_BkP`gEc208L^gaDZ(SMnE(JDE?qf5;vL##~|BH>EBlWd6<7tojbZ`dKhWG
zAY at H*Fe8og=*xX=qfj>PaJ`-rtCPCvnB!paBPTrLY at 3f#i~AaC!9N?tm8}+9cU0>j
z=3Wn%FLy`SI?Ohvl6oKS0X>8iEd}w|-Hp|d7Zwntd2pz(MHw(xptYP+L2kFbhupa!
z`Oi9*NnC$1>+;5|tF5gJbNITGHq6{<Km6CW01OJGRsPyG8(vs>Rm!=hf!0y-Tf8Q8
z)j1zP2&A}yOrSuDEbg@!nrUp?!mAgj1HiNH!dfy)A5J at X&BcpcEc)=PVb)9VvEw^D
zmL82b`+`o6^S10SNAKKRI}1HQQux>z9yw`Y>+~38um>s^J3AY*J!qR$Q3qhN{+V4^
z`PU9YSo69H|C;eQ1j$_5rtWq^_VG1 at T<Z*kn#SAp57XSpT<V4d%C}+o*A1z(et+zg
zd0q98 at 8MU`uc~fP__~R1W@~5jy15=WUHInsHu^_tWH62UMZab%MITqKFQ73&|5;r`
z$X{XD-l(5=7#q!~jL4^ae4hT{N5HpYhKb!=YDJBQ^+@|Fdf9de^raP<-$#aglhu>T
zU><xt$&59;{<GagJ<LU&Yp<jB#cOnsduTI?xKzQm1YJj6)@X_V)q*h(X at mOf&<;t}
zpu>DLWae7G%q}FHHbq at 8{}hGEBYkCWZ(S!`+Db8Tb)H4hjt{5?QaaInnI|4l6ZIRU
zM8qQ?92!qdl72OIDinmiyNjy(a4iO?Bz-_Nel^&#b8KXiMZXHWajx}Rzf5p!N&1<A
zGsN}qz^S16wGYcURTuPUFC^*j`7=pBe6RkI;llTX?=pmG(9i4NEaQxNG?(I3)1BAP
z?0+1HKF8M2eLnb+{d|%^B95GlaIHYj>6J*Ue-6c1LxTYpV?(ih$al9$tIp>Oic{<}
zvPficu)(aK<BiQ_0oY#@Pyxm@#Kdy0m#d^cUn6{je$G$$9mEeitpaKq^fA4T3I7<M
z7bPElB1|RmHcK9b{~7peq!-v(hV%J)sYvfH)UOtq8{BYyoA0x at c?i^H7yk4=E<>C}
z%su#hj~{Yf0+FLTiP??K#ZLQ+5y7`oM40DZC1^|)iil#|kL(To4~c9IfoDMBZ%2{p
zk>CMbAHg;KPT_YBe*HJdVh3)KMb&smIUK?me22<Ben;_9K*K0+V5Ehcf1;O+KW{hE
zs(~Liqy-$}^ii=nhw=LrJgQU$e&DxM3U{cZtcGtpK at I1Sq;Fadl1FnwowB~i*0HOB
zR&dd3F4fj!0i3iU=XR9B=WI3&N$$N-aN9Yw|2m7l_gdV1Ayprn<hm305OD{$>>sm)
zxNid+-`WguFQJRWmiF%ZaY0R~JZXbd8TGW^+A^Yi at 5!vHk$X;FS%s@>z1~IGy;sj(
z*n8zf;1asNGCXi0sD7;(t$FW}zyE{}+V*L*UWD;|k-}V?*S{ZX2F|E=L2-_w<oXng
z6i)PdhUm$x3od(4es_TKs@!}0ME~Dpoc_;IoHZY!depl2*4Fv{PT}k8e0~8%Bc6?p
zX77c02lrHDp>@NfKcu$z!kmh|*9^S|Q7YFAf%OQx=T!aMy*%MT7lE(B2jZ*|zNaY3
zYjXgOY^&UJ>g2XVNWjNi_!<JkMC1eSwzT1+E4dBtt&917&#433+zldZ%&xsx9QSzx
zGWPWo{`1_8MC)Rz_FlXHApH9qxnRM9&Z*yfA?5(`JhJCh?c4n?hzx7r4)h{!-JBzP
zPs}+5dQ at B=n{#gOiJ0H_o|tzQLhj`uQkb_Jel-Z^laz%xC+74|Cwh90yTGUC^ty}i
zwU|BlK{PSDok~hlT}|w|dEz|ky+^W+j@(;&!uO|4cwPzEwfD%?z?&4{DjK5+y|ZW^
zIm1vBpV<h5_P8Epw%zMN;T;l?k8hIJJ}I<ChEAl=LvIbe0nPF at u(Jo^LPr<WJ_q7L
zbalvM1jTBEGO5mu_QN~nr0FTF?$2SJgHss_nr_lD+L#oC6;E^p4S=HZ8mfSmVi?WY
zwxdPC+*RU-hE?PqhgdXm(m%5sx?`!XkoyU&KH-9Q<;F6+>AakR(?rLy|0NkSjSN4U
zXqYSovDKK6H$_=1tqozYOTuD9c6%RJq|og9a#sw9)tI&|!g*}CE@<+|nGf#o7*g?;
zl1TqHkv`3qQQSxrS1bg~Vs+H2<Y&84v;>$Z at P+_pg{Z}gNJ)Ic;QMCZ;UYJ2SOjUq
zdC?h5brbuYXinVv9YyRpI0Gv at CO!YL=OFJ>Ig`9)&p|ueH;^J0njLJ>m_keKliXOa
z2kFRsd1C=aRGwC9dkcJR*NTOH&(_%yxh`AoG3dChWsiY7W&OXo$G`{EDJaa>afYvh
zvVwBiV{#@~u%~6Oft)tRU%?if8q`Bf%H2kssJj=lyk(z2!HeEbSJ3Q|)6TTEtP<Bb
zJ|S0fjE#ADxOU0zW_t&*<cmr$LBC8%gzV1#3dub|*EE9<!tFs*c&FL-*)AkP at V32A
zydN=b?~FXewEbJ>Y5P8$IY{Ridt)N{fGoAPAErgd1rdHiO9->F*|P|H6^qP0 at e6p=
z+=bdKo#+#dZf~tW71eqimye0pk++v)3SVTwx<MYP0R^uK<9tVp4S!;)Ba2K`Hh<C<
zVg7Hl%}%GKY7Tv<btfKTq!K1{n$ZqjUCVmQNc;O53QqU7UTLiG%<cm1^>V!sj%^we
zEI56+?jCXUg=y^-tn~ET&$i3*vW*n1YjxvIjr(12S_!<pvh-4u>L++N>x|&F!D&O_
zwa at AdV89!|2Gq;eh(Z;dz9GE25Z^n?XPc2YKMT&^v?vS4A?GK=x&fO9 at LY&R5M(5@
zF|#ej$p at f|u_KaxPzL1U{><yBzSw8-H)$H{g~+z$^~QXd47AlYH>7QinokP=6Lmc#
zXflUEy=j6Ju{N`vMBfSDoMn)nsbJ;mHaQ)w;X4azPJ^GbwV=`!`%l8G;q%GjXc5ay
zVQYjYWC>{lApBVJHQEelg0{`6&CS>%J`$%}2GQEjgx7OKp4dDFdfyW3tc7AZB61JF
zUrelQmoS;A>xl;EhMtu6wU|UrY~g at 1HkRps)9iRE1g#JF#J>hYfU%uqK{I5zs^)V?
z4A_NDU8?&dpQCfd`I4mOd%egFI(man7}WYzLKbe=V&EN8nKN|60lf>}2RUW5U_BuA
z9iZSwbncT7-```rN4P$$0?Ca51Q`het#`p51I`wpeM!acIgg+i+n|O)$4#O at vC$FY
z at ufbw;CwP}mrWl~Z?+!6T+K}Hy9_qt)%~25up(2n{vJ&6I!0H8TQP0yXsX<AD({2%
z`%U8I-?~7oCTME`eNR#dE!Zp`c3fj9p`}J&3XN>tDA$&U1#A3BR3z8-1*EGF*ryMW
zd()B~s|j9I9CDhE6`c3ff6&w4>gJE~d+w(GQU3wHZ?;?i0eWY8cdxmR!!Joc%zfR%
z=oY)sRUxjHdNo+|ftC0(xPr1l<!L~`*g++ctp`^bQcP%^Bqj^i=#W!Uj2O4DchhLW
z_6mMw+KA0>W^4V3qdR?cy7HpwZZPo}ilRLw at isS>8*u(K{C2Jfzrf<=0<Sjg^_28#
z11}f$dO~`+!OM-k9+zI8 at bYA@4bsbiW{00E=6P*#62RrE5oXVV8p9oU4b;JCS5f22
z49{B_UKKTMnBjH{qrGc6`?rBVQm3>kY~JkY0#Dl?c$lE*$KqdPRS at BAXx!!I0G^Gz
zJPCvw3M}4kjk^pE(57*h(E(hnuG at 66NU2{1zLFBEGhzla0MrBu4SGcmo>3&>=~_2X
zTp00^9N{)~*ole at BXlx^UFZ#d!q<u9pKaFbbQNda^Nqc6coTWG6A57xc5s2k=u)uK
zq=WSw{@YJdgNepX3=gu(dxqWpl$0eF2a1Fn`b5VPv34l3MAunJ66Uhgh+{Py&Hc&?
zD%%v9MP!(CC>$DwQ}kH|>x5ViHbJCgv39i-MMvAtqh*o4Bg$a?7B*d%X5YabNT9%G
z&n+Y^{q_-U>6*ld>vnWa^2N0mUAK|f?dckCz>~kX)uo`uH9Lr&-`@1613kk5mi+c4
zW9-O87$5u@(gB(wTz8;rABZl$U-PRN(n%`FGrGuw#A%MU6nRizkFDd_JV1xrKvA~G
zDD{KFhUSv(TWr3GOqTiC);vt}1A5f!+S_sjpk4wopyFbioh=kfKYZu at v}%i at E1EXa
zTisGO<R{*6VEq%llw#{Zf$Zq9f~{X)K9YZ6bzXCGzsi2s+JB4ZJ}58r&$p06cK^l-
zQ?}7oPZrxg``oL^6J2yr!O5MrpW#X4R-GrI!-T}SHmFXvtPb8gk!SW<kK0}WABAhb
z8&g9nS?$a45OZ1^%mTDKlB=V2Oot-l&Eql2jC8Gtv>t`c+tejo|9K2d8RdTXtWr3p
z9=BVgy(2 at 8W_npIo~{QYLyly2z(y(r2nY}PI`b5E96J(YIkc$YibIEn&;;jO+ep+2
zTE)I}P7l5B_^oXX8X at VM^;VOAg{}AHs)8Dq|D4;DMcs?Fz*v_YBi;=kZ*i^24~`DU
z<g4Sh_IQAk##;PxJcK1+w=4+y!+<EO8Mpi(>^L at bX*$8y>TQ}4ZuO%cui$i3r1gNg
zQRjxe)7hQPR+DE`e6-u;>PXikmiWrZen%qWcTcf)!P79&fU1LdHio&l>a*L!g6iUm
z7i1z`D<elBn*(!eeUXoo7 at Ye15TEHUV2sV_WT~hyBwdD{y&<Pf!){B(0YmK=8Ow41
z=xm^=P((uQ*z7wF7tOvG1+3iO&P_)nqBuv)PJY_NT6`?t_WKO6>A0;JxW0i2#^<S0
zOcu!MK?6gurO5q3tfy&;0o`XgW at _$UgmI1mks|l+XhDLICR|q|>VEeR;6u6Yci)05
zBm}>Y_(}|%mc`|?VtI#R?sub)WawJ_tv>f+GXqNLX4E{<9r=W6o`^_i%-LW_#ax@`
z;kb8lw#VZZ9z3pQfUM at tyG1oUQP3c3rKsn-$liwaq9}a;O8+EEPxTDodiEu3b$^IR
zk^6ZlZ1=k##a~&sL%5Q4`+={t;!@oX!w)mLAWKmf7eGCg_%2N6WNV`No>8s>t;d^v
zQ=odWSifkZvS15cG#WYPNzJ}<$R7<|7)gS`!>(eQA4ZdskNN?6pF_^_BJqV5yvdGa
z(VvRs=E;w&2wlAiCPTDu6SVBjzSl5Mvsgc-+-Qe#Ib|7(w;P&$Yl(yWV69GoS)P(k
zru<@C^23L!@$oy#yd}Twh}OKnpt;S84^cgQ{Y><0vQay==YsQw$f7R(ktn2R6zyxB
z>F*agq$)~3;aFm%wP$|=3KSJ`tRbsgk~#mB&K_0#q7J9*n)kU1 at 0`CQt%!|Y*%P at K
zgk9O`!Qo4%{DvHfC}{G`?Aut;HoHsGhIKCE+&bb->Snx6TnWFNzp(O-sHk<#=?%+&
zwqEkRB|oPg>a5*8$_uKScW*$THrZn=R_uL73Ue_&;HZhPj-L3`n3dk|3hQXd3B at H&
z1rO`!2Sq|bg)yS}K+ZQ21vPk^Uu2T~q81;Y$f&?k00(mZ0=sQp0YS&l>W$AHS6cK3
zFawaeAJTsYLqJ6sKIDRq!(4F+-MK!jJ-+#H0LGqUHA!ZDI&_E`l{5(j$cEA};|TsN
zIY<ca+txwv`{R**RXKgIWx+rU4(Z9kWdPWrf79<c8sS<M7ThUPABOHp%oA^waf^JL
zYi{M3aO5S~an4aitw*e$w%6|`?SLFN!4;el2l9j6F at qB?O<_DW&7f!j#4L(JXA>2a
zw-Sc2REzjJ9(o%X>#X4c`N8p7X*D=i6W0Z~er`Eag>SCW=>F7gbPg_p<Qn at BpcyBD
zz5qG?wz!!zj3AXF3knw=WWjDJTO at fF#RS-TWTJ at s!;NTqba)Rvo%f;jI at KlIg6R#_
zp|<%&jEGJg7gTX;@-0==1P~shMLKv(ByrfHOzp#48F++f!hmcx-pUXw2f<i<3j<HP
z at J+eJH*aNzPCKY;8aPhk*UA=U!3R!d+)uaNTBC<Ik{GzUhFcPb=p2IRiail6g0MzK
z%hZ}*a`qP8v1IIn3AQCXZbp#wAKfZ at 7uhtjz4L>6p^0R>;VoSGRWT9%me~U4RZi{g
zmR7}q>6ZR~$pzd)qY>V-W*WmZooOM{SD1dp^bpe;rWctSVq|*5n3|Z*W7>g^fQDPe
z_%Wt0F at 2Be9;QDty~woZ92q}=>1d{5Oz&bkk7+v7Jf=@FeVyqCO!qLYW_p(CRi=h}
zWxjoxj$~?L8p$+<X)4ndOdn^uk?EUEOPTIt`ZLo;rUp9j7;Z4raZD{t?`4|GbOqDL
znZCeu3)3A;4>A3fX#-Oo-ye}F{=DR?6S|6wgOY0ghYYu3&EJjvcQ8$TMutmRD{0AB
z{~XVAjP%djCMmvWDDu_P{cjZ0xm#Rr&s*cw9G4iA8{zDXspllu)Qa!<lMIhd0mAt)
z#uQk%fL1t|u{ZNAt>VvQOfyV!v90(St#BS=t$c-ywfr|S#)bspwzP`>5o2cSK4DA)
z0=aU=TKbiYWh=v?f-%jm$yK$&-?a)~-HQKnD_qkG+Zb#2<6<j*6JxDB*IV&*C*=Ln
z%IC&d3-8$qd$+;{#<UfTT$fgSzgD<sD{N$}<?r8$AJB?Fv=u+76 at O$aesC*1z7;mL
ziXYYrTUz1BRyev9p4ke=w8HZkYx0V1g%etZPi}=%Tj31G+Vhpy3U6Snwa<-=wf3 at w
zF$@~QmAB$oG48~C8)Mq*P0sUY*?urp5H5hR#<#TMC%57kGVaImOBr`(T*cVPxQQ_|
z_`>=9BJ&@>*u+?iAIn(J{0zpL{IeNjHY{9TtMD5bYvucdvDW{TGuGr^#kd2fSHoB<
zkM37lUQIqm#{D_Gg|R>5j8^=OjE6A4lChS)jj at sWhTmj<eHjNc4q%+jcrfFQj7e2b
zu8gtPA6GK&DA~Fi##;Z`y1%ry3h!AX%cG?qz*uWvCdQh4Vj17Y`L#~Jb^q47e`@`F
zx9$)8xIJtAUF-Ir$N7_jh}``73*xd86EyJw$0sDlr-Ek0WyQy(%1{(8D?0&L^O!$B
zJ2`~{u*dxQNpV@(&Uk5JeD;z|%?IhGYGD5S#JB}1GG(N at EF~#>{vDi=hVOLXjO@(O
zBawe*Vpeu$N_ at 5!FDE at NHDzIXVuJ9{xKt5idg3yUt}`YirY2 at 5>O$e6C_3Hv at j6`}
zT!+G=4}Np+lOdO6Bxc5;yo3S~j at r)<G|Iq0{OB4#dL{#v!Mfp~)V`6FZamUJaGe4=
z6f|HE=B}Xk<F^980f at 8$7lXkcf?pth!}05npMpr^k-z|4ufXqq{9>0TWydW at O&o~0
z<YJdDXoX3l19h?4%QF&}Bx%8Pv8hYIFlJ at PWv9d&7v{ueCJ0_E2`znLOSq+UzabU)
z=g<vePOQ9LQe248Iz((jVp3dAYPK<cNxBx*7 at xW%D<@NwHI~{!T;_j|&*?iyPsx at t
zry{iE??~O5?cmGe|F={qos`V%97rM|B`YH}E<Q0WF+JOu7MG#bGcnotFGZ1ZZwc2T
zD`QKMVq5tCW07Lxmt-veZ$hJb=OknsGZV9OGSkIviVe5uV(*?gGeVRCe0g6Tt>RYv
z&k0le*V?tbA&DB)#V$!pPcc#(%1WVD5!)gp`J_1CR4QL<{@nX+2@#tXmmaq;G2!2Y
z+B)1n3YGF}k?Vg*u0{H{gwy2TO3u!q5k6sgdR!VFjg<71>=g7I4<=?Bla^!}wRWNL
z<FXTTQ?i|!zjG+0<7hnpV|I>k|4W6VdjE$U|0Vrfp7-qJ%*40^r^jBW^=HPueT_)I
z1;;O$AGa(ng}YIQ|M*bq#n5-oM89GTOU#PTOvz~J9(2YD)NM>mjmye%;u_<!jdJL4
z=9 at D!<Ce2rIf^9(k9uZ&@^YuhB7||`lC%u!p^eiPEW(Ikj6^@?ly7WY`jYhJX-jgl
zjJSV^Ss8ewDPk#)V|J!NC*?RCr_0c#pvO+rW#R8KT&IJ^>y}_MS0b*G;IjZ%nS!6H
zy90jmC#tXexA<AQ<w!AJmyCEa_MNy2l9BOuu}C`|e^YfMblNDUYn84HPHTiosafV!
z+)GCSxM2TDnTd(QoAKnt?AdXtIns|9>_5ZVpT>Rik8m{eiJ55dc;IJ1x+zQ2!*eOB
z!?|P0r_FW9vlp<o79{*^D_jihNep(6x5DdN;SH_u6Rq%*tuPtzozwpW-vV;RpSHr@
zTn=sitIb>K{%dzVQ8!GNfcrsHm5EC-!|{AaXD*3P%);KbpF?E3(dy$r{#HD5g~WwS
zH?qD%qxfcw&_fJeC~3k<N%NR$=_YWxso|2ph3U_!68oh|I&-w7TKd=LNvx%#QH`(R
z_c(nGr!v;UbzyAh`fC2vUa$>Jv>9qQBuApu2K?|t`_TE|N9zNUZCm_E=5$Ypk{?mh
zKM;@FlE$NSDK1exev~emW5|!@+nxAF{xl~e|55l6HZz{cI2x4V+|B+onBD_Q>CeHB
z@}_%C>7?Oj#4iKCp7>?rM`g{!kII_QbPXu^7vM+fti_Mwqn+vo;r9yT*FdRUZ{kP!
zY{rkmeU2ZM>o9)A{}Dgp&w&7G4oUmONIuEG%lnwiw2<jWri;)+1nQ>fsGj5=6g|vD
z-CYu*Us(eFR8jvH{!AU!-`Qo at WIowU@hwErK36c!W4e}UA=Ag0KFzd*=@zDCO!qLY
zV)`@F8m4EM+L)eaYG-<pX%o}yOm(%goNi1#nHre-G4*FUl&O~fNXFxthB1w18p|}9
zX)e>XObeNAU|PbojHwF?xsq`e(`u$QOl?f<Oq-bM&dK^2m>QV|F|{y_WtzdXkm&}d
z8=00c-NLk#X&KXUrj<;qm{v2bVQORA#MDqH%V}h)r60uD#59^|EYn=3g-lDBe!_GI
z(@Lf_Og+zYeoSZNr0b%Vr0Zs4oVy2WyP3&3x=EQSx*2iVI`9(WmcyL8L{hpX2$w~k
z2%9di<c&hSOu+y|d=Za0NGB(g(UiD!-K4|?x~RBJojD^Dbh&N{@}H8Esx#*-)XhlD
z&`raF^R6XJbzzC|B4NbA+G;t)%M=&zMf~_=P^6JU{SVR*gEZ1XY2lx<Fei&ATu3uJ
zF>OI2^+)88{t`mS!`Ykib6|6nP8W?Ixu~e&2?@iOi*yMmzzsD<!5QgdIUITGES7O;
zY2#>wlWvAC2lE!hM?XSzCNLH99{f!ZI2k^W6?)1P&>85DsK_#20+38s#&5wgoh+mw
zL&)@K{?p=zWRM at FPqQv9B>8IjwfM<=DP)Tug`0x(soay0@&eE(V3MI3Jv>puRKh7-
zPoi`$%%BTFXCNMp1=BDqpnBZ}IV=SYgFoF_nSPE)mC}*<WFj`@BkK-t&X?wY(#iZ&
zL|)`0^B1>Y1d!!ui7(5O13AbBA<LDGQl#;`RHiG-xy0co%iB7XR{mT4%_t?gXr^=>
zg at 3~#(**oo?o=Q0p?^a$T2dJLXLR^bNEzCqv*^a5jA{6rg at 2k$#9ay0&4PUYe at 7B9
z{>Q%no%ZiPdH?BS!3^nt`nMJ{l-B=l4WEy>jrPw)_rLbfIfXU4mVa$9r}<y`r^Pq^
zf4&jq<*zAN`|u-=78b3uK34qr`VCJ!`P9?TJp0_n=U;g7rI%lMwdA$e-+1$_O`Es8
z{m#4Zz5l`1(hooS_>)gR`@C%1_AhpP`PI(yie0<+?A^D&^1#8b4}Ej^+o~f+kA3(3
z4?k8P|LMffzx?`J&B;@z&-{M&4_ocIy7Pbj^|!sg;ljmBjhCCQT)lQ3Uw7BJv~hKF
z_h{?c&a1t*PY1oBW2eqte7kn at yRCbVp1p4GZS2#xpMU=W0|N#P9x^m=*zlk`?i?|4
z)aWt6W5<O+2cVkb7C-@<v at khk(c;v!^d%V&WM*aOEM1nn{K2{N?z?|}?0 at G!v|{C|
z)&HmK|9?9F|84o3Crk_rpETJLF=c9G)Lqk}r{6teCf at OmnRBm{|9|KIze4^wSgAO>
zng%()E3M&q-UUfxnU*p&Tx5Tyb`D>{xQ40m5{F}2%GA)v{!B}mYI>nc#x+a>F3a%$
zrthIy2#wC!m=&dgYFZynXY_CJN#B&}6pyq;cRC5^-{PlYo)V8Tq#~UMMOjkB3{EQt
zrFX~wBk9pxBMWI$X{pA}IRrU!__y-XY>Y}w^FNy7Bm*a++zCKhiX=Nt2LF~Gr9m^&
zbj;$M<7*}Q_xQ_^GsRCrxwI5or1o#|r3Nt*rO at J1>9yQj>-GLq-<T_;Alne7Aaia>
z;h*!T{50)VAj+PNd1w~on2Ee)9to(;vVSPkKc`1=<B<kQG8;3xK%_=;k at L<Za7d>~
zZJbsIx8A9ix>6%Z)a4>vYyIl2B}_m%)MA(5o-M%N+<z#i)}a1Z(sQmcm6 at b@>r>Ej
zPpG9WMF`RYJL_MmgqjXe%bVyw%Zq$7 at VqZU9Ma?lLUJUdf9eHfOV;j>mglYYl6o)7
z&zzY!DJ3=0oRN}czH3H=(5o5XPipYE%)}YOS_d7i3;f9czfsb)5#N<*<ix1B3`cAy
ze=-Xu-UZe9%q5W%Bf=0|=-td28PQ8pQ{tCHtIW#KnTeTcDe15uE=i9{%uZfH%R-Sq
zQIm&@iONDcE^-#els~y>#!!0+7sHtJhvbqOYx at i`7*jpS<uWGSA-O!pq?;pG$e46@
z<TfxST^qTLj7ir<u7ok^=*Vqh+(ANJDPz)0k}G3OG9_2em~?yODj9c at P*=scGvjK;
zT^QFe*6i#y#-w8;XJ<@0R&q^@Z<7$pR4H$5AA~1kZJ&XGG3hqR`7wt6UN|G;+ZhKi
z*7lhMF*Y(km~kJ*CdPdk2k|)GkFkaM{*0p;_h%f#m~7_cVi^yVP?yY at bgbku7?aMF
zTrT4w66*384`p1)IFRuM#$=l(w~_H^33Vlm$1vW)IGAxM<FSm(7)z at d+5=;i`IU at K
zjH?)%8CNr&$hd~FcmUyNV?2rZcE*z#H!+T2tn-xZVG3hU##0#^7~jR%kMT6dM#j;M
z0~pU{9K=}DCkHdWm-!~fnr6eocs28*8M|-?5W~0)<7CFJjB^>gG1m0p?u-kW at 1gM-
zw`IJAu_xm)#(0ZHI3w#5>2t^ADw*%ixSFvKV;kcRjGGwi8GE*q@~4mOk at I8Rk+G)V
z at 5ETs?{{V#z~Q?v4rc7j*ut2;&`U0cu^;1P#<wxfW!#-{A>$s5H!|+YcnjlRjLR6`
z&bX3sZ^qS(jf`!K`!H@|+?TPZmy}OG#(s?b83!=#&p4Rz0LB)^0~yCK9>h4A at nFWe
zjE68TWIUAdM#h1ROBoMmT+aAT##M|*GOl4fim{#XXvVtsvc6*&8yM3EOUW4-k7XRh
zcpPIB;}FKtj1|VQj8(=Nj7^O57 at HYyU_6m=3F9!vWsJiaS2CW&xSH`~#x}+gjGGuw
zVeIKG>pzvTALB^I0gUfr9L#tcV+&*YS|zy{#&<JLW;~m5F5`O`7c#z=@kYjpjJGge
z%(#qkD&tDV`HZU>yYK|W#@LOqX18n0xQY4g7<>9id3Z7QW9-d1fU$vbFyqdQEsVP`
zj$z!DaWdoXjB^?HV!VOzP{t*ULl~DaRv1?@p2)bG at nXhy#xB}~s)MYb8)F0Gwv3I8
z+c6Ge?8Vr`*qd=Q<L-=O8HX^=WxSYiA!GW86uFIz at jiiYTNt-xT*kN^<4VR}jH?-Y
zGqy4A&bWzj2xCvZtiKCS at cbCNF%DqdmT at rSc8o2Iy%@(Z_GX;SxI5!q#vzP1Fm~Yy
zV+rGSj7u4NF)nB9&A5tjcg8i0Ll`$PcHs%7r$N at Y9b-SnUW@}6cV`^TID~ODV;7^m
zKe3G4G0tG@#TW<LiuFYZ;|*GTe;L0-i_f at Ji_f@Ri_f at 9iyt84*J$w>+qL+NbshQs
z4wc~zjN36bGWKE|q=gTX;Z0h2#?e}M#<5!XkurRS7M^jQ7M}42Eqt&HU!w6Dmumd+
zl3%Xz8CPk1ljPTEe8zSShe^J!ldQj&MPh at 7BPBL!I9lQ$#%?PlHZktbIGVAv(&?ZF
zSSSLLE{mMDzrn(mqj+c?$dSHHQaRJ4)i*h^Gf67LkzS2l5?1Eqk`Y2uvSRAMmElO=
zL5}uUkfVJR<kC6abjBHs at uH*PlNO5{t^3K59*bNS>o>D>4=^SxA`VSJ2uWo)(zTFF
zL5;}Ko-=Y;j{3-aQiT<g_N_>q#N}Md^-G4HhFlyZMlO-dlg8zUg9OMe=6Iy#BA3kZ
zX&)51#T<Syr<Voo5xE>rH=Fa%;B*#pKBR3SN17sXi}^mJIpiVvY3#p{>ql~4jPRsq
zB1w==NJ@%Qq56<6Ylhh8Lzvn}pl*UrTmMiy3Dku<?26Pr0(BF0+IocANg%AZ+WLp|
zG=#$`F*vEUne5mvL+vFHR$Xm9MeT<0-7>gnKY`$Ka|g}=-vY~~bkv at RKf{4Z3l;&p
zwsh2<0%29w;-{lVgthe-wXZ-}WHmmuGpetaKee|&AT2z#JHlH2)c&YET6k)QBtNbG
z)E)yNO)dQ_NSpYYJg9vJqO|;YBX>$~rXxLSuT(xQJ!-d9KdpNpy*}A_&0Jq<&s6?7
zjHz8yewutqhfMcR%b(hLAWEmLH>tf7*5pU+p7PV`N9{ilp|$laJqJ`j-Uflt4+?xQ
z{zd|2JNgHbTT8p4=OhrZw0cpvK(r#Q9=Sp;E%-qp_ZCdgmveY}&H~X&wR%ad at +8N7
zqvww5p_MyL)HBLaPtwFXw+p#XHOe7JdQNGdm)6edc_pkp7xdf`*7B$4m+nhzIneX$
z+<q2_dbgB|o^$7N((~?&>AAlZQ at LB>Q$OI0)5QI6;Zy(M%+G3-9`zS=Uo<(zi+WB*
zi;|A|5$F3T`;(RwWxql#PPRbVzfg*@g*|}!kYpzCosnAYmiw9}?$cckIm`YiLN}fB
zm;K2^$MYihIkc3I>>HF at 42PHf$ppuJp>c=$EA4rc{X+{sUDV&Xf1vQuPVI!`Hv>Mm
zwr}}dxAbGq&%s2|*QSaR$#&NA{L6MW!69$wcH<mRlUq2-PEN`t+|mBzxNUJfPf|{1
zN4ce(%#MCb%BkgflyaKrc>c0PJCXHtE{80COFgx6MYDuuxgs6UjV#v;M>%D=BAv=X
z?X4wWS+2>Ba%<(%?w9OuCpeWe4ReT=Cs*bl=4d}M|0qX4pyl7vA5#7;?M>!C(b3<@
z{9DRPwm53NX8d*T-?CtppmJz;R+b~mQBEoU2uC}V`9wSTGM^~EyEHyiJNxH+s0Ywm
zsLW at kqy5NyTAnAFPne_r&gtHIU(-ZSaBKOe;YpHCraQ$6lN at F{>O=J>AFXA`a?Nq@
zW&DYbengYAHm*{9x)Zm?*Lo2-&m?(h{jVlJt-qD|O>xvy<~P&Pj%0YV<G#x9kxu2I
z-0yYl+m+$9r%ij_raJK{e6*t<(dwg(^D=$2Q~gOgvmDQb<WFc7Ke`ovx}$x_^tE1-
z<U#4paE#j$Tb$Yf@$YgP_X$Tk>fbWYmm at v33umY4jkSJX)6);-KqW at GE|IhC7CV%d
zMk({F*`u8CPmHS=f5^CoaS3BP<MoVnePn*$GBz;&p0SbfQN}@x-)3xLyp3@*<2{UH
z8UM^UgRy2O$YXqn`5PGTWL(0ylCfq78N|4h`7biAWW1QMh3yJ`7}qdAUgNVJ%7w9=
z`Pw{C*H_ACCG!o8KW7}x at ijYP0Q0ryCz<(f96p%&+Wf}C_)+F(aCmpdG0fNc>0IV(
zcEx1ozs})v89%|ekg?V;Z)E&2^S3a5m$8NI0NQ-9jQLjPYj(=Ej4PS1*=Y*7e4fm&
zX8s$DZH&KR+{E}j#-9D8ybmz;WBerJ0LI%H2Q%Kw*uwY|#xab4V4Tdjig7MuZN6N{
zxSaVL86RW3f$P_f at fPMEVO+-e7si#0e`H+E_#k5&<4+kkF|J_j=`ZE+9b-SnZ!!*G
z{66Dg#=kMPFn)@04C5Nc$&9~XoXhwy<3h$K8E<5Kg7Fr{zcMake4KG5<9&={_<8Kd
zxSIKij5WKaW*4<FKb83z9De}gCgvwI-pKdIi?L^aDZfa at r5t}4V?X9+G1lzp?HLC!
z|7pg-jNf8xVf+E(7{=Q8p3L|&=I1ir!C13HYIfH`<`*(wvx|;lypj2u9dZlT*PHoU
zn6Irf%DBG6nP0~IY{s6<_hVei{H=_u8Ef-{QqIqZ`8MWHW1Pq71u$-6{vyUE=J#go
zIY8c at IL2k1eh0>W%x5*6W1oVa`2oy-hH)_C>5MBmJp*G4^R;#N7A{X9^JAE=joOvW
zzk~V7%+F<P;Qn$P<6P#iVO- at Q>(`NSFo#ze7jpO_#v2*W(BgCccQW3>{N;?3nctsr
z8S at u1j%B_-<4WdBEt*bO&G>QVZ{+Yp7~7bi#<+=b0pkF!Pbg#0fwI1jF!p19h=!TJ
zmT@`f7sNP#`7bjLW-PUL*oVV7hxsv#XECn!kok9FoXq at Z8Rs&d$+(d5bBwipES(u|
zWPUMYZQsIZ##@-bim{FJ at 4~o@`Lnh7%=cwn$^3g5S2Nzo*v9xV#!ZZ0W$YOs>$^qc
zbNXEw`!PR;v97HQ-;Hqq^QBe+c3i$+<C!1K{D&D^7;k1A!+0s<WX3NsHgJBoG0tWF
zT*lGN at 5{K5`3a0SGX9G37RI|7moYA7T*<hMaW&(w8QU1|XY9xMcW2zh{CSKuz5Z#&
zo`a<Pb}=?G{*rMp<4sz8#?NcvIlmr^lbQbl<6Oq~F|OwDBN!Jl|3SvuJ{1$=jm%%i
zSm!Cr8_akM^Ya*cGJh=NGUn$q4&eNIGOlF){fw&_r!x-X at Vyw@m_J{`%pb+LiTNwE
z_`L7R$k=nREdK(=!5sf~#(vC?Wn9Djk&FYF{|aLh<A)gMa`=IaW0;@9IGOPhEj(ja
z#)XVeG2X~{1LG}>Ut?Ux_#?)ZjNf5g&3F=H8{-VdQa?*OqotGU-8igUo$&%_d7W_r
zTRpV(b|PD+G at QcL9StvHtBQsfv-L#7snGU2r=JQ<oHHh!hcjLRErc_EpcS9ArOtfP
zb~<BC+pXol+^N2#^^{t{cqe_J^pSs4!Pioddi({B^ram}v(}MahV&1#e_A at Jms)@n
zXg709I?`T4+5zdLy(ZovXDUme*bglE(teWwZMTL=zf9>l<CgdAq&|)QI`e5){H<6U
z2Q__g8e5&DJ!qjr`yll;anKS=C-DMDc_r4Ym6~2C-f^ELpY}I9$4_yTPx2Qz?z6<{
zt<ukMv`fj?tZ-U>w5!-T{g!qv!$0U~hf*&?tzQdIdKlV$?Tq7b&u+!7`M1WWUFOc=
z<-3yPBlByy-x4o$+&_tv9qmTqH0%X;PA}bY|0G|tK5FS_ILVXhBj5FG$v?x<Ze at JZ
zjytEH(~7^;DLvA+CpuxWe^4sYNqba^L!Q!ps9BxK?o9SN&DtvM&?IlIeM&uROZ(BV
z)(=Tcf3^Hb51Z;}kCLCJi)X&HhqRPW+G|>#OR|5{bE at 56X@_#=Q~LDWN+<Q(npK<Z
z#Z-U!4lsp~_O>`j`<3=U&6+Lk>y)1+FKO>+d0r*ftnbqP9th2~)^AHY+CqoCq}^+=
z<N1*GrIzw*_8-lMa3FdQO at 7i&w%E~+OZ%c`RVVv8*&j7)JDm?fcDk15QQ8SLt2*(?
z{-otbnEFBbE1k4&IrHW7*1{*8=4gM?4oH8cllEb4_krAx;M{(sy-3 at oKzz#IIXtD`
z(jQ2BUQ2nTy;<AUK<8jkdtcy?m&Dp`2OY*cX%W(T3=L~fyoR+WQrfGvT at rGignUav
z)=%2|TFN8sIW5nR#4YuanEq<<$quURwvhWK2y6X4>G5d{(o)c{mI7h2lQ{DUJM&4R
zT8St;Nwfu%J)PcS(aNJeKXjT9?P-u4Y3KOQ at lg6_LGJ$)Uiv$apVF?U<xcgb_NtYZ
zFxh?SbRn%gR0awmX9m(<+ahoI2A4A?`@gnJh4yn$?OWQ9+z&v1rIYq!ZTAc96QTP-
zZ^KI`_X}h=#&6kr<X>m`IQu)-SK9ZNq7>3eJA6xdq}_n}6WPPGVEF`TSc at -lvZFi_
z(;Ga}Nu1^AA0*CpjGxl(-;zH^V`6V^g;(E-n_BTb9qeXpV$41+4vxH#hZE~>^|iOc
zEy?LR{64_<p|4M<&Jl8*@Tg}V2pIGB7R8Al-8t--BYb~l!LRDyuFiZ4YH|vXOS>by
z^si~btt%h`#J2DSZV5k2xbIu>s~q at +=gA##U>Sa|1B>LE)|U&4KR4QHSI)Hb*6_N&
zTH*Ru*x-oFheNN{JkHLf5`5|i|J}arC|{8SzdF6XZNG>G4s36}uX1GGcn79*C`~Or
z5?34iv}Q07mP4|s&Vt2I(?N0A4X=DTm(t1jZtG&AvCnMFCR(!e>4yZ38ktWt+VjP=
zM9Uwz`6$u64fk7#+82HCIMI><uP2DseER8=M5Cw8f10RnM%!nJR_%WOIimJA?|z=B
z at yewah-U15?j at on9>K2=E#3RWs{*@hFCl6?`RHpz%iGL)UC at Pn-XOZ6<DY`&xs<(0
zxF&ebTSN`prfwo?D(JGAX!*vU1+BXJ#ukC!S at bs1s<(sQA&PPcs(WGkyM#9suX>ND
z;d}G at L`xoU`+#Uh!ahMuKX`O2;qm}~asTZD)(X1e=xITNhEDvD_@<Gs3yPy^J|b+m
zd%mDG$zKW at 9n|Av@~_#FD`?QM?*%Q{dgmwPU!|-U)R<o<Xwb6BqJ6~nc|%ZB-c3oL
zp7R-nx8L`PpryZb_?)n=ONyYeF1rN{+SId5_`5C at G|2B;K}}}|ZX^E<X?cQ{d{8YY
z<g=apOXe2}no;$eprzMGe?k6LXNm<4Dmo*m>D;&-<e%aBgrJ5qX9X=;IsQxX&-?xf
zL3QWP3R+ST@)h})&fXws$-8F+EiVt=DZ)Sdn4m#{HG-Dxx~*KKKW(C*v0tVNn&<tj
zpt{hVf*PjT1hr4-SV7 at S{Kg5ISG7RU4U4RT8vgiL(4a{_OI+x-i^A8uH&oE7Pi6{g
ze|3eRdFgKoT53Eb=!VZO2#Wi-o8lQCpCD;filBLo8w8DYDHF8D{;Qxtd)@bldaN2M
zXjRV{5|=EOv|Wjyx|n@}20eCOP}8PPqJIk76f9`;WA_WXA!e<hruOd$n(^kh68m2g
zv}#@VeUx8xwJK<pccP$q0qZ0kvQ^L;-|r;<k0wDgUhB1A$Ya6;K~0B}1T6`*3L5m>
zRzVHNj|m#>+9as4YtKrGw*j9RBwBtcUeKCdj|!?={;r^Ce}a~jGzgl}sjKLZOVh>*
zn)lH>L3Jlr3mSdpbwM+(?G?2251XL&FWVoaeDYQe6Et?vbU{nL$`Uj~c~(&SmNG$&
zH-8c|NVy?tO7E{JzG<~t(2TrzLG7sz3tAesS>m<_1TFvUoS;F|y$?~m=pO?mjhH5=
zX>*34LG at 2aJn&;d^CG?z)DUw?P~D8K-%$M6abqOy5F at DW+gw32Ry;3gN!RUyR=xa_
zp!SZ}1P#jSahT%cITAGb##}*T2dogZX8cQ%nsx}9cjwQ7R&~5C{eSK8Eyb^TK19%x
z33CO_JN}@c8TY>+=!PTP1hwCJT+os=O at c<(w67BRFYO^{klPSJ4MpPwHMvg_v?h0s
zp!U<rf at Vz06*RBpQ9%t2&k7n8vPn?;L!Sy7{mC9dW6vCueDBkOmJewV)G*QI2<30O
z+aT$j-hu|j3=>p0EmY8|&`3c`{O1aq;kroB=$~>0HNE|)ps^Xx3R*J!EkV&g2wMK^
zE<sC`BZAt0{Y}t}Wq%18>v==ak|)|9rSe2~?k;FXae$x(-55cG7KaO3b$EuLx*-cB
zUY#MR>6=x8#&#|i)Oh!cf|eA$EojZQ&m}#zSI|<o?*xtReM->sJMDrR)tiE5gn5hk
zSLuZAg4T=;5Y#Yuw4k at l&rojR)*C<SyTj|F(C>VPjY!dd7<$jqRW_ez4u__sEeHv_
za4hs5W%OI;?!6e=e&@;Y$rJa4c6 at 7J>^DVMLSG%$+qh)GjnHqt{He at 3tv1v*Xu{vs
zg*xT^<wG`gcJoyB9Q&)h+jH(pn~3k;UpD3a&<;Uk?CR1E%I-#w$v-YQ8QNt>RPRGB
z9?H(&8>iP?I2T%Xq5JLaA8e=WZ&RL8^hSB;^!>2R3^OPl(!cpjH`iC$`l)NiphtcS
zO?zYX$J_2PDAUe)OsSmOS$TiQYp?t?v8yup+~rR;C-qYPzJ58l=A*{YLVL!(nY9-}
zKR!6FUAs&-W%GRl|5%^VOZj8l1Iu3dt+x{E;k9|^Ku<-MqpLFa{zZnyF&@g)1uN=1
zFY2U>Tab77Bc+}4>(joqM}oR2ca*F*7#8<Z%njSyzw~HVWyp?A_q%vDho&yv_f6<$
zgOs7~?%6T4%@8Fl at t2iV-L8bbGRF0uSd*_3+vCBftw+3-Rd25tnD~A-<?Z>e?u{z!
zsH~~-h~3k%o6_WY$M|9GhAZPv4mrKIOE=|(X<0Wme=$HQSX=Yy`inP0pJ^Yp|Ha|`
zl+NDEEw-#Hq3JREJa-(rUD-J0?klyveU!30?wDihHe4AMoY3F;Z4V{yPiwC&^Ls02
zjt{yLHN{_f+PiPHabqW?-D$U{EbRv?HxoC#J3Fek5<h+PZ5zD%D5D3?xtXhP3O(4f
zvVY;-24zup+R7Qv)Pzd;_$lL`3O~Q4)I)ju#HAih_Zk%6?`I9Tda9eU^UMc3&(HBu
z-cXZ&8gA{Sj2ScT#xG_5id&}-;#RHcth}nPjd<v>p-Qhg&-vQV4N^uwbVvH8cWzT=
zd1SVmojFXI`QC%qNAw(^-2Hmow?mQ!DM17GbgZ1{r;Psk-u7Q47?n3&2CnrU>81Rz
zeEp}h9`CNa at bdjH^$DyEU36o$&)IlY=@LKvc!w8<Dc++N+_s_LASM6)+~C3`cPd*q
zy&Jh`Ziv!z>Ek~y>T3`Ev-`L^ew;F1=~kSz!j|Bx_$95YKfiv2lC*T$rB|K|Rmw_=
z?ID)2%7B=6{_5~ch_Zc5n>oMi8LR9+SXWbfp}X>)&%iY^4v$i{ZyP)#d)ioK<|BpA
z3>?{3u}?kSUU#oI-^YPU(_?>r(qGqKDLLA3*m?x@%klCa7SKmIxOvWq3mHC2f76!E
zt5y$DZZGPyJ3VNG5}jkE;ZsTI_2XlsN);vh>4*DPE*+<we&pA?_jL$Ww#GbCbLh?C
z$}3*wM_*qXq8ypKtD*EQqw;*?+`h3tgeqg~FFvgQ&{H}2^@dOT6)H;Ov$tR9*m<<_
zg8ub+kM<s>ytQp?MCLO?l~XawgU`4JD<fTBJvX3!xYBO+<8v;}7^_(J%x+pzF<QA8
z*P!qFwZHQEjL`3mCr2r>8;asq-#t#zzw}-6_1VG7Pd^5%8Ri|N)ch9qbXDj2&`opB
zb%;0gS33T9r#^Ss0Oi{zL-*s#pP>(bGj-LJ#C}Sj_wyoh=ejEi=^uU<IJ}SIeQE6R
z_xFrZuID|lU~RVmB`)IR{sq&|h06AKhf=uowINaC$0+%swKZ?q1}j_pbhYm*9jqkH
z{UzIadyw+<%rDL_G2*2BL(?*?pV&hOor-JUyFgX8?r6K`x$aG&?|lAs&(r`#dCIGA
zMEm#vW!})&D}38GhfZqO^N;YEqm+l!Jeq>ehA3lGkK2EHzQ2-Ry8gq54~<qTx7 at Bv
zn><qKeXQ#%h3XjP(ZS1o4EKys8eQT(Sbii#In}s(w&4wL<(lV93o-(5VAaB-dBNMq
zDVtUf`g+9Zp-P)`e?K3*wvTew)A;g%Lm^7^u`k2ib-~KXMX>{RJuyW2ZOCT>etU4R
zav*(8<+P=KialBXd+4;@%IRm8=Nyc^96EV=-mz6l*F%^5w&=FT5o46a1<D1(=fjoG
zhJ@|ug=3ZOk8Q0=o^dVofkDMRQXU(Ha-{W5eEMeSb2`;yRm=#*@6}Fi{_q>k&(UaQ
zO04JFO>I at B&&;RK>>N2>X&+?nVE-^!iSO~l+6fa?Wpwt~``g8jQ+~Z|+w4asj8rxq
z|H$RZgQJz6PYoWoCU~F{^klaVg&oH$H}6g>{yFpxrCV*^qVNAgJN;$x+9&4>Qmg}q
z&5t_aqwE>wF}VJ%`p}W%hZfo=Oj7Qj+_?G0zXmI3Vy6_Wo;pAowtV8L2|j}qmua0n
zjRPZ<x!?ZKby)5c#gg>X at _Er=N}q3{&VBcGq_X4t6$?UF4pKV5v*XIV4~@z%OTUdb
z&b>pi41DLp*@8jJ)3wbP6Czbbf3I!D_OB)>Wt;B0k at 8ZA^6s1S3*K5ZL^<-Oe);Z0
z6P222rah76gOr!6a~_<UWl}nIt=Z!i)<b#Pa(GwbUX$|8sN?1?`$s5ug)E-+<eQnH
z6Mr_lw!3OnE*?MKE at S;LC48NmwXw%kW%k=wf4loHMfo!EjIQ0{aPA+Xl-N^a9(g_8
zqS#;euHTwCNy$EM*?ObnaAp6IHy`QoRiu)*bj!`TrTvv&Q at VTYI&4;6ebMAK{~NQC
z5j~)C_ULdWwr{|w>Q!TuquWeDJG%KR4Sz3x=<ml(O6@&Ak6p4qO1bBv_vWYEA{FmV
zZyo-jV2ZN+p1nR9KLjaWU)nmQ9tcx>`<;I3wxOZQgf;U!_u1c9S(*J)l=8wrWyof8
z%BxM+L+|jcZ?id~k8&a>f5p`I?^3+}h`$+>a+fmvuj5~NoHQ#>_N-qsBsox7@#cxb
z`nKbg#>|SqkylL0f78zxYkK2fvuba9-DP!ov)bvZ%R4<^YgUa-`MsO+o7GQGl)Pt%
zZ&n|eFy)oRFkr8KVU7KpRnOil>=kXB)i#fZH|?*zsg|F2`MB+&n`)iQ_6PGmxT!Au
z-2UzzPux_`L_had_w1W$_U|qS#@%yM&FcR1 at +ZdKRBsm!w8jPhZ>sAaX*&JG?>E$g
zy-I#|Ie0 at ok-u$e><2g0b*pdh*YM;Gb>z^pnV&7Yp?;K^llR`d8)~ob%=mvp?LPPV
z8$$=)P_xU^*MI7LL*2JCY+ic9b+!GAu0^w}ud9E2?ec8eSJ%}iPTueS at tfDx3G1%i
zJHUEf?YaK}{J*X~65(^?>6q)Py=k}0dKLa9!^VC(;JR8<p6}YW!*$hK{K#Jgm#(Ro
zJ)SNa^2;^#A*C?!#-3|x)%J=mSKhm(_G|VVa{DvaRO^VJLQ_{>Q{Dgi>h!6^YwENf
zwomf!x~3lXsGedOb4@*-muebqyr#a{_xK%C+g(!ww!XIGk%p`4{TrTMZ98#Q?UAv!
zd&b_Y>W#WbhxgigRsAY{QS9Fvuc~uS22DS^=Bk?3y=s$7+EsPRy5zRzd#<Y8-!$X@
zRkft&-bV)yy{fjE`rwsgUEyEig8x_5<0A~uJbwO)8koGe+p9lbQQN$B=B^{VuBbm5
zW}Wl@;EF2sV^`GX^2dFKKYT^aEc0$UlW|4;VA<*RU(CCr*3|xRz0`6=Jv;Qp)%!+X
zQ3su>inwOHqJF=@rPDN at E9zChm)2KYX;RfO^$*^Cwn;ta7gX$WtVtc$jEU6FCiR^Q
zi}l;yYf at h-a%n7ozDb=@`mX)=N1D`aPnPc(nBAoMJraliO==g9++Dh9P3kXSee~dS
z<D1lyH`lmK84SK~O{#}qY at UlplWJP+a>M=NWwqC|d#Cq5by>aWzS2Cu>ax1RW!RG+
ze|1^ieZI!C at B5ck>)6j0zw_c{wero}{K$2eRiAw?bo5+)S^e<sk!OBhcv(%$aoKfn
z_GNWaxBIe>gkM&RZ<_boM_yKU{5olMfd6H+-HMmeaywsEGxFQd!&leUZm|trV;dUP
z{bMFBzI?J#jjPNbu<1yn+AX!BYidQK8ruC0uZRyD)eV_5j*Ne;Q7x}395?w1 at RReq
zCg(S*-50uye)WMy^-ACAi_XV2s&7mQd3f60jcP)l_H!yHG^)RruPd89qER(1a9MV>
zU!(f;2X`cY+@(?V=o%B7 at 7}0h4;(Zyq4ARXhi_Hc+&?a<Z=E{7dtvn@^&Z1hLkbUE
zQlGdwdEbuhm(=omT^75)cS(KcP`~=PmoKS*#^eVbef*Ld>mK7WJMWS at ZgKSZKOeZH
zp1OO*_UGa+sZt+$Nxiw|i?jVFUsCJz7cK3^UQ(yJZ<*aZ_>$_|bn0B&UYFFpdpe%%
zs|SvD!T(F at i;=%9SbyQ7I at W#o=9=Fxs*yu~{%T_NMKyhE|3}LXUQ|!6-}H;}<wbSw
z&bv!~*m_Z&;<EJp)vsSv7gl|Adh9b7)jW$!U-!a`>O);Vn0)fVi)vEroRNpqE~+nl
zdujjIu@}{YOZT5TKI5W#?f8Pkrb!posK4F~8aVEv`e^U(`zHlnRHx6mf54~4i)t6)
z5I?cQku_}*zH_PSa_xfJcI#Uc*8g=uZS(e-9YarDQ1|7$^ThG*FQ|XK`_P-u9Jrv)
z8r1K2?3WkRE+HRw4*Bqc+PCt-VE?x+sPU`)hW32^g8H~;(y_k9;0Nb-4$i-z{uO at U
z$lRO at s-^9(7m8CZs7- at koqzbg3u;B~kZV2fzMxL(T=U-YNf*?QcHA at f%(x5c)n1GK
zoHzV}y3;UZ%ISU=)X(Z_W0v_{P&XV2a=Fdtf*RXq&)`az3u^N4*S=ia*q}~5a`Uyj
z>KfGN@}`#euW3+Aq61yLz6TweA9d|OgW7S-y^mk{szEgkae3eElLpnj;=+?X-)>M}
z>2zk0`IQFsEw{3{nNKySol6Tll@>OrQHNg(zPhqO9W^k&EIO+}9q97IijR{U)cPm$
zGWy=%pnkOMiB&JpXi%T at kHG&1b#838=RQ{&)ZcczkUM*1gF3iVNne-24QlSSKKY;b
zZcxw8vg9rIZBUPwFZ7<=zCrC|biw}yHKTXMO1I1PYGm2!@fXk6tJ!60$ls^x)i0+E
zTX?CuUhS3t`uiT=)~j=BdS36lw_Y9e=OojVFY49P+Zz_H_^@7m_Mz@^+cwv$uXL=r
z&E=JP^`+Mz%bW3Zy?SEEhJw;{^=c=-{EmM4_3GLmdfc{dS-rYEYeJDndcEp$=k at 5~
zgnHFyV9xy8=hmwSzQ6Itw(0e1$Twac=3DAj|H&hZJE-+)$I4OoU$4Gb{%4VOXuUcj
z=)ON<`qirgESql&>JGke^(xK>`083)VEavj{ia=gz5mBo|GZ>ZH at tLq@ul;2wPWm>
zSsrKX>a&y9Z!w;*tK(i7H9PF6T at CqZ$Fv6y*wqKj)<-s%+ttdK`=3Aixn2GA{IJa7
zTkYy*L$X)?Cc7G2uyxakm+k7zb}nPpXYA^!#GH at ceax<|HB9jAvljSV*`QY+va9<p
zPxcy+Wmm6tTK>|fi|p$4x9g8aEwHPP<YbooHOH>Hjr{TQbJOkW-h{4)A|mXn!Oe{S
z2se4n=lg=~YWMqlfBHm_U9BCo?0Q0gUG;QplW#KG)iDoFAMNjl at WR>EJRBtI=4mHA
z2AoD=$6m7Vjv(nN{!06WI+5va)Bn}p`9Q~2l?nXLq)8|Lnn|0|Nt at CEi$;VpgeVdJ
zrT;M1Qin9PS*$uOlagXdhcsowAIr29jaqvmRyG0$CX-1r|0mR<u~c`|icyOWiffir
zVLSqxa~5 at UkqsWi{eAD<X_7W9xVz}C>pSP`@0;)4ckg$<``!0m=Dp6n$$UR7t0{$k
zGJgF>gyl#t4<l^vwJ6)$%?CO8eO2t6gY>PlsJ?ehJ>;=XsqFoq+iE?gpJ&$S{E_*)
zoVA)~?pLpqKWDWwn}Nqho at 0Fd!4g4T%Wp6qJ$k;!7tWN;+m^dr%8yOrY}$C^B|{nc
z%+JtwZC!4>>PJ6~-|t)Da$URqI;C8EmdAW6RyVgSZ(Y4onr}G6CdS5 at wriwZ(+t}>
z<5>3 at HZiuIVOx#OgUtcWcGrnXb<ZqkwBes&a~o~+V3Q|l=CSTpIks<RxmGC{m}xWW
z3(v5%81;?JsISE+m&Vq_Bi|MLXn)sMGk5zWmd5Ahx7>1zcN^hT0rJ*}UuV~~%h#<m
z>I=`XU1QWYGTqi<mK&X6Gs~s1Ir&cyE4s~gvn>`Sb3~6}9jbbMrtLDZ**0<9)L7Sx
zP1aC;fyt$heVf>n$6_o*vcjyM7i27IjF;k9Y}3El at 3*LSChQ8IF3 at XHhdJz{&1+Ul
zv^e at TZI&XdDyp-(EORVs&MMYAsVGtv-eOfzZ&MY`rM}w5=JUx)+CFDKU*40u!uKIt
zrhV4+xQnHp^XU`Ei4UJ&z?wk>=6;S7TC5gjbwhqwt-QWimDd$<M^dO3)*n*~Eu*SP
z_La<0CG|zBq^`(kG5o=&`a)GPztksnT58Hvjn}SfS}Igc{XA9E>Byavt;)<#+kM65
z7FE7~s{IFf5jTx|nf8U2xdm$OssgvwWroLUDNxpPRFTEUKB;@U7;Vp`ZQ8G+ZKGY<
zZYibR5>-<-)vnb#M-@<y)nhSz)bY&6^(^v3PE}r{Wv;5C{;E2=&%%#AEvPS33!2Mv
zC0Uzqu7}txEmKRoO4U+tiCWrHtd=q^OY5q0i?R#T7Jhv0v~P|Q<?xm%2fjJ*&Cy(y
zo1djlqYtH&D^V4l^no9cJBK#TxvRomtj9h-R(F!2k0aZ8`Fk0eSvjr#e3^CZZ${SZ
z7sM at dEyR<uRrG<pslvaiX1kF$63ZCb{0n4XzWjWvn%`OKwv<{_={DkR_>Ipk_)I=H
z>a^d69UFaiP-osgn@@kZoS(yNnDS}1GH+-9>S<++JjL&PzqY at Ncc>8YIZsQ8RdUc}
zDYmNOyR2 at 5omTg3^~)2ke at 60gnXSyaM&>8-pOyI>`@iujWs2FqXj&N~w}@r+3i88y
zf*kplT59>anwKr}l`@|izs<waLi%RpTnRZhHBOf55>-upRg+)U*sF<kb at RfkX)niK
zhMoQ7Pjx5u8uGrrO4S@$m|Kvo%v7YyePtfT)0i8~#g=mRGe?@I=0>%vlzh5TEwgM_
z_8eYiO44R_o4z at D`JwtPbJgOm530rWo77 at Uv&#GJx90sW!|zh^3;#RqzUnu?`uU>I
zs8RaLFe~GH)M<598u`z;te$zy9L|sTom<Ft<lcN<Ru|Dn`r0|)SLw044S&4P<Ilh0
zPwuooKHe{xZESzJiR&VdKJsI0oaZ>l82Mdq&(FuqyfkCtDdC)FQwzIF)I#RWLSnwK
zxiV|o(7ki96{&@F*o=8Kb&jY!`?y at bPjh+sZ3A*t_o?!X`TZ+iNh{>V^89{F4d=10
zMVw2|VcZs)<7%0&7H09=$P4m;b5u3wsA~MFu4DY?S=GF{5|_nM#N3?A+=O*ip6ZLs
z- at 2@;N-gm&P>UFs1((e`Qj)V}i!yW4a=w>w0jhG^xjpaq!@Okus7QV+3azTJ%cApj
z9^+olSTp{2*?njB>Cj%*+(Mqs_qo!hD(fp%WoJ2$J&V(GeMKH=hcr?*_*q|dpHeUB
zvJaqtW!mT2#`Oo({WNlVT+6Jgtg~>|bHG1Q*L(JJojXZmY?bqi)O^N%{t;s)8h%)?
zcTuM14)Ro&t6o;9$}OK(McFwSYub#Jo%@0FYD-k@^LHv|*C#l)e^S|7dX%mHQ_9}M
z?<^r}uC^HKqD}v7p6{ow-_;Aa9tX`j8)@6Tww9=p&iu8tlDT156+bHVF@~FFjN!(!
z$FNoEsFG`!opGsPTo|7tTxXUs$GaA*W!`G$x`Vl1rHnH<gKpuE1lzXR=S|@~-0C2k
z at -bUdLJpOwCH19hN!_B{!t8=fWxC?@ynT8=sf8idtJLK!i%Q71MQYKJndgD(3*{PJ
zt7<IHS<g9>^rQOXVzs2D*Se(skadaW(^hkobgZ~nslJpxwcKr8R)5&K%yP&&KWERH
z^Vclnp^TZ&HdWGGblS)F4fA`l$S3kX$~<i59!q>}DZ}4VwWw}Et}<JZDNl1vHqKEM
zjKe%tafESrQ|YGaja8OPRh}!&7H8(B3w?7u1+M%&>XtDmwy5G&`Iyc;w;gy;sYA#E
zr}N9E?DZAO-Z^z&A at h;b6Zue}O4_YPj?9+-Hy=~#t4Mx)EH<mM-8IKm{YI|K?To$U
zTveQvSyt$pqvv@>>Xkmvr_ZGYs<gdO&HW}uvCDmtRdYXFVpB`H7zfTXOE^a_sjG6&
zxCfnf&i?(kD1U-EOTUE0vz$vF#jfaEPWldIz8U#Ptc;j#gT`^?<{aP$f^D61d<7o!
zj?nOr`&v0pHo0HVZ at yM^>D(-v+{4SZO0!k7L$gQoe$6AACpEL0&uiMHEw&Y!jhb6D
z=WQ|f at 713VYTl<A*F2$lO7nTmn!huTuho2;<{Hfnnp-qGH2s=)X$CcunkO{JHJ{b|
zy{7#dv)%JG>oprS*K4+F?$o?Z^N?nrW=L~H^AXKcnlEVDKV-Ihq2?8uO`6we?$o?Z
z^N{8}nqkf3nkO}%)cmcc(&J+cBLBGOT)n5Q^JaHjCyNTRmhZJ~t9R|`V1a9Ou9ctI
zU%jWZlZB}DFYT}Ms`IB=Ta49vF{+$cH{QIPCE{9k+|agix2zQ)n%Y?~wW90B^*eTV
zHL>8Y`th9RuAQs5`dHJB_GqrVOFbdB^}BX`Y>)5CJsswnuN_ at 1S*Lz3dp>BckG-km
z?{{?2;{JklyVtaB+jHG at ZJllwQO8Mjyl_)T`_>Nc&NlDb?rT}FjuioLL^`8xEo8ab
zSKR$m!~d?WEWzzt*Rg%qX7wrR*S+4=d1afdzSov-XRnmLYL|D<&bB6_Iqt9CzqWb9
z+Vz*!t?<gq@>%iNbd at y`u9NcXS!RB1XQ!;x{vPpV+UK`g)=I?BSn!s=3k%k_ZM~`O
zEPJJ8jj=fVnLFC2#rlkWD?7X!eLFggu~qTHmeZ^ECPl|RbA{fNd^)`@Z$ds9tNA`?
z5v<>_jm3~}Ru4&kBseR*UP8ZHsYeRd at 7n6s``60-=Jq+wTX*bkJ3S8k6=KHNYle)w
zh@#D`@N29pp>COqsASFtmVKa(rDC0#fy!%{z6|a?g)MsV2L?y4jQjDay3D2we@<DX
zu3a~f;`rIowo?7<49jM<p at 8J{nadhC8 at joa@vW9C$+^`m8sDb&8TyqwSY1jyHR`_0
zux%iT#k5%+B6o=A4)5w+-ZnR at jH^*;YvpRLL-&h!A6R>p=-)9sa7)6e-xgfOD)l>7
z-Q2~37n^r at +g7)4?NsGOd9`KN>HX^6Qpeg3R*c`(A<M*@%V+E+Vk5>l&9>`&$+>Ae
zKDf1W$JTA)?Pl4tvFr4>Y?9igBeJ5ldQv`_4ajHOxOe87A6SkSte;xNgU=7kF?u{C
zqO8_vL~|pHmvhB7^yW4*&V!aKckbEUF72(_vweG8C)t!UN2X)<uAOZXC#%%QX+l0T
z?Wp5Y at mY>>@7f_#M;3?vzFN&<;$}i^R-aJDc<E$wnz^Ryz{S69f8`O7=L&LV72&o{
zUE<^)+2jVB?a>cAf3*GaKmM^U_|(N;e9O%L`yl(}nCY9;SB62pt9^Yp^GV8V|C;SO
zUvYbV{rYp&{>lsWnI63ILUMmD5C1al%$5<R&GhFL)57_e@%MFZ_5XO9$Wzkk5eo5L
zqi6rk`_I$Hp{Goxf6(N<2eL1T*0|SiFiiPx3_LO5G<To%@4lB!Q={fXud)0}UH;3I
z|6%ay;9~Vma3Yxhm6xezPS?M;-#FsxLZz;L;v-Ku)kmMW{)xJ&f?C`6<MAi6FLLGH
zYaZ$PrTM(n{Of1x?^-FIx1CkVEC$<kvp<i`7yV1`&-;<5{T2Kj`L!7j*KbUYJYzC{
z+-qf^&5Vb~V{)}VFs$3n>@n^CUEZ#@xUTncUGJaD75FFeGS}Bv>!Zc_Y9;<_`>oXb
zr{vsgZN<9$?E8q<dhB0YIm at eT)-$#Oz2)N|`5{~W^O at tdr!T+9q^z%U43X#I$Kgq2
z3|;t))+eBs at 6<Bbg*PEmrW-z}^`r0)h}5GNDD at dc^n-9Y-?Q4^XEE4>E_UIKTIaEY
zN@{%seg~2I$6(h&zGvsy5%_&X>^XSFBECPzz6Rcnh&>Do9IQo;eGY8Yy6`rw3#%4$
z4WW!YSGcT(Hqh(g7DVb1?$LTTd<N;I%yaN%ZCCu@(|knAyI>=dri>eA&n1rNIcQr(
z+|cc?5_ufm3C}~u(YL@`5vk`k_yw)^!Oc#kPEn>6K7dG>0Q{!bPrw(nJ_#>5&y1}L
ze&&3op5xeq at G(SU{y1Fx22-zr+qCY54<Qn_QCQ7<ly+TkHDY@|{el<N5<B!p=tmsr
zz3>>~L{GzKky`W|y!_34M~&V9k6p+(qOa#~h>DAeKe`>>fQWBC_yQ-m_1Gt&_Y%_|
z;q at -ohs3@UCXn0EN8r9oc`pS00K6YD;scLq{W$!0txrN%ogOc^SL;3SIYfLDzWFk<
z-HV_XIfY$#LA_GP(d%Ij89^6b at mACScfx<r`blWxnYs8=1+Uh63%ptD2jTA#+j^d@
zT&~pH5QW|V`w at vr9R3uMda`gy1OMrlGBt2Bau~f8+O8n~q#k(gJ9rNW-36~l8qg2J
zQ-}*a2N%3k`v#Y5UAPsIc6Y+K)`fH5WtOjjS8Kfmb|ItG*#rLtkz*&|yWee=Z-T!-
zB$w2Cl=?U_PWd?eSLAv0=ir+g$%m^f>LPd};y~|$KSth({y6Mk$#Xo)hu{h16uR)M
zs~A7@<M0iu&9Pe!ClP5^_`n*|w*cI^*0c);5s7UWeoyNs;hWy8)Ir*H!6%V8dKSKn
z96*;J+kP)1$M(V}5t%z#C_j`fcA-=2!Y?2apFa2#MErjaZhJp=>h!{2ttUR{Ir!oR
z@(leYc!!%Y-awwiyEZar==Z at y3pt8D0)Maxx6m{2)0>Gc`axLS$~#-=W$->k@?3cP
zHME7 at 4_9r$XY at 7jB_x0@-11?wFT!rE3orHXnKJb-g2)`K*{akL#PI=(Itm}!X7*)N
z*hVa{3%|w>aW<fjLHl)POfG`gYTXZyYhAdt-SpWDk0KtaA8y&fTtJV*?bkDP(A(k9
z5M#c;M?Xeg*fa1H-!_k<3m4r$EYKaW6_K$MZtEcC*u5}=$QTK0cbPdObot0F$_PJ-
zNLwEGbwtKD4X^5Cyxg<}o4ZW^Z-Yk=sq+*(u*W=Bm_uBY7jC*q`vX^Wo9A#B+>1#4
zes~O#c8|k8zW3k4vBE4OWrT0M#nfwIht_ at Y8;JDx1iau at -7hHXJV`ym77 at w_?-U(-
z5Bx47^`C at WKd#3G`VsNxAS~N!)+ua4q#ifC9WnfeM-d-&3SUG{qQ3+$yq)<&eAdI!
zeOz;~3!C>7bMzKie+SRrd2TNJ9FoI+7|uIjwrhtULZmG(yyH%D+z-H~5V23fn?7mw
z*AE{=#C{Y$qxA_mugC1y^yl;P-2Q>ja4bFuzlQkH)9~{L&Hf&Sb)RKkU~h!Z&(Rn3
zT6i28K^H!Dn7*Sw4zK?L`_Om7I}nNIeek}!nakLPm-UfX&Ex>Q<cs<|4|gC^ekXhu
zk(f`wu6vZai1Nb1dpU2Q+u-;E<PEy;i2&`QpMt;ZH}y%_K0rLN3pa*%{)OHGR}9l%
zbQk<NqBdI8({Op%jG^!jMEp4be~8HWCj*Nkl%sqZ+#kg^^a*%*%q-skpF!k&G6C17
z=nG|<;A6-d^vB^1Bj#9l!!IG-*pI@?A2j>k0PjKk*zbegU*a7TbU%E{SMd}5BDfb3
z-~8}C#E3b(=9qb2-2xv)PEtMtZ+zH{VHdpgxY?E)K7`~bGYUJuX8P6z at BKP?i#-7C
z|H!$K_eq5=M6M&kM-V6WEX*M;bXS_|JJNvO3fsQL^&Pz(-i?T#eefYf@^%!~pTHl=
z2sa{PZ-H%yluyI*Z*%WN8F_c$!-&{D at L@#G+Zp&9BtV(xVeKPkJ;E1}IQExd#dpkO
z?J$Ofu*YHb7;_uF27VSvqX*z`kPN#0yWGzp<LJKc5i7(;uF5;9 at _wleT`2E*y3mF4
z-p&ZRP~K~lGD3MDQFNia117pq-i;DnDDNYQE__z&LV15k>_U0hM|7dQ&m+1}-j@(v
zDDSF>E|hmdL>J2Y8KMj2od(f`ztFn8!(e~Zv@=uwS8j*S<!=S#E6692!$=4 at iX1?W
zBYj8)Nh7^T02x92$T%{6%Pd#w*T`eYQ;6dN@*8m>jmS7QAM_&%=|x(R0Fp+2$Ns-<
zf5r%8Xv at MF1#5#1L3gk<=n1w5eZih!Z?G?z31)-2pc=3bI0sw<jRWoh&wy{hKhQf6
z7#JBy4`c?i1GxbevWJ`@SEw=M4tYYpkU!KL3WP>N=};z=4dp^=&_3uKbPYBRx(7Xj
zzCr(B?_gkXWH3FL8O#pm2Gx*#$T{R1Y8-M8d4_yL{-NHXz|hE0dMGoL9m)-<Vf(Oi
z*frcZ>>l<E`-c6)y~Bawk>T`kW;i>X8&+X^*co<(8^i9fC+rLR!@c1^cqE(-XTsTV
zF03N<h%@4fG)CMJPsA7TM|vZH$Vem|$wX9^b2K673j_k;K-TE3js805aV>pr7-*u`
zt at OK{o_EvtzJc(-D19HJ_u~Ui^r at 9zjSP;`pD}tgPM;>|)g=A0(K82qtEG1h^sk8?
zw$jITdf81sd+2E&eGSvwQTjVZkH_ir1ihX#`t6|Swe-D#-Z#<zRwB?&47!Oz4{_)t
z5 at BL7N;JlZ$2bw0ASRPU#YS8lM5dP5G!UI8;?qim+QW1>$DCx`8-q>LM!h at e*CQVY
zhJz!)(O^0_Miz_*ZPZjtElt$W9_|kJg!{tb at Mw4}JRY71Pljy~N2E5=5NV3EM%p9Y
zk)B9jBpexyj77#H6OqY?E$WEYMjN6{(bi~tv^&}p?Tdz^qtUVGcyuB<8MVb6vD#Qe
ztSQzSYmarudSZRCaBMU-78{RE#3p05xFcR0Z-_U=TjTBV?s!kUFCLDM#>e90 at rn3k
z+?H at 8Y7-5KrbKI^J<*-$N%SSciP6MZVmvXCm`vD`j%01JA=#8{O|~bylRe44WH>pR
z97~QTCz6v%Tgs8DO*N#NQmv`>RClT;)t3sVMpI*{@zg|WlDiJBkA%$@a0F at t4S}XW
zYoI;Q9q0-4kvF4(vA}p>A}|@S^*j1&`y2Y3`dj<k`@8#l`uqCB{iFS3{p0-;{geH+
zpu?DHP0Y0RU^mh3BhsTpd7S45lR+DqS8HTlD;d{4(4+Hhj9i--m>jT$9HH7!L#Qd#
z8fp)9hk8PNp>Sw4G!_~UO at t;xwn4{W?O?-T6It0l*ge=Y*f$s^H^<1!33Ad#KGu?p
z%FaC~<L_av`<d$jMmzogV7_M~xrmC|qt2)++8A|5JyBoOAMK3>q9f6CG!xB6b5Rwu
z$DA=&tTE<}d1AhpKh_%y#71K2SSFT@<zgysk2~Y8cw^ih_r!g1f4nyyh>yh6 at k~4$
z&&5^3o^U2yiN=IG;Ys)s{zPvgkQhm%6PZLdkxQtgJ?Tukl8s4s(v$Qh{mI^BAUTpu
zCo{=xGM7{-d&-$|r5aQ2lqcm&`BS~AKx!nFPGwTrR4%2Q++&f8Dqs&d1Fk at 0z#Z at e
zd;x!;Hy}?#s at NsxqgLZA!v_z4+e>jWz{cn|asKJkXPj3$%ba<R;qbq0e}xhF4^N!D
Ap#T5?

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetdynamicapisinproc.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetdynamicapisinproc.exe
new file mode 100644
index 0000000000000000000000000000000000000000..a4e0fa8ab553993bb92c7839668cd92761cb522a
GIT binary patch
literal 10240
zcmeHN4{%gPn(s;Sk_jP9#EgXX-vcHF{{#Y)W5FaafrM?`uoX#A>x>S=<R#29nVFsU
zCV<P{CQhQpcXQ&o>uMdh2Vra1wJb00d27I}y9q%i5!?%C)xoi+ at lWZ)aA$O{09o|i
z?|bh}7^0q4TeVf|l})|=ef{;<Uw{2|_t)JM*8e5 at qmu_M8|xWseIS?J-}&H{w4zBi
zpA}@yx`oXG=Ngl{XEw0NpglGMqO%ywHCUIBMZm~0nb~Ypce;_)78RzFG?1jlF&aHz
z%Ge&F8W|g>jy#OD7#$K5X%k}=fUX6MHB<Qul4m}eX0{U<+m%_K)^3p^ZCAj%Scr at a
zqOn`!0A(Z*y)TNk`V=4BG7~H?3_0>mM)IKRMWz_*A_tMd at RcDCNGA_t$wd)U&=?~a
zh8%3qOdiq~m7{(z4WGa_hMX%?3POgQ6bwU<x+Gs2ayL-nQt~ji`cmm@>Z|MlcXIgX
zXH#37<N6+BSiGw6<n at fjiulk_QQNs8U60v@`Os+5>8G(Gj~?|j@%R~WKkW?dS*&U8
zRV-L_L_0zBKj^xyp3p9WHYEB=v`XxWo}?mcRr!qZL}3J={hNU7Z_S1=2=^vq8;r7c
z49wo7G82*;piH}+)c!S?+Jls>qz*>3M~E8*1DXYG1(jSRoo6?6<?{F;@$TXMd1T}-
zAcg_M>V?{!pxsH-E*v(>Zpdrze at Z%udAbIgNVc!VW#@g0tLRRMRhWZaoK4+1dX{16
zo~36!4=FBDdmTP`_=H;cICfV2W1FLA0cv|kW4EP*AA&_*;t6LL;sXZc186 at jFa|hd
zP)FVAlcvBbQ(z$pY=b~bs6}h&W)pVLuWd$O4<FHH!k5~M at EuoA@c443T*u*zdkw>s
z+4b&ZZK5&DJ<8Q=-TAx&vOmd?EhgEermUT-1zH_C(z20p^}JSUV2L&d*r2Ak`l at Qz
z#y&BobHC~6jh>#fF+sCI!hQTXo7N9q>hQ!|O!!YsiK?!hE|Edz?HN?X)fShBtBQ-m
zxfNb(KIXutUFOux1gRd;9)<KS;3I^_yriJon2;#uCcWmkdeS|rJMTuo<?0dLc^e4b
z*=!U?4&>)Bnpp8}u9rSUyuJp^Vf at VU{d3?(-5CTA3oCCwdG(bWF&(q7!}xzm6QI_)
zmh(R0V=#Dv=y(#-FZ5Aa72YD~6Pm6yB|V_;1S=(!gG1e>gfdVx*C}C%MGazQF}^iP
z^L`_>Oy$_9=SzIG at OwBaVP=k)X4<$~xI4{6!wAk4O@|BMl|##ivG?wv1qq*?)SYpx
zRj&Tic_?-3n0uaRc5UM7Z*}K9s=-*Rxk{`=gKG;<VOWsF+>VfEDjL+oR1u-VLM$1q
zcu{wLfVtIEaXoA2v*^*|z4vZ&pFCphD`lR<)tu4_sNpKNPYAqfL at 9PBC%NOf!rk)_
zH2!<3xw!^x6X&cwhs}_8Sm;HqO&h>`YcIkLJ;_+k(&R+3_N-aRcaLiOKu)|rV550Q
zh%)0$S4{(2GWBGv9ouW$cQwJZWMS{Am<t|ShFa}0gNKNfC|pV9xGA#;J-FK(VPOR=
zhxmy8d&dt20Rou7SpX^$qBsX|Sa?%}k%j>jJYXx+z6+y_*iq7;4h^oy-KlMbu>XAo
z#qHc*cm at Qv_b&;uU+!K(ccYkhumFwPR at 9cnnj3CD=y>7wVje$O!n2P#UZ~CGiJ4su
ziJ33+zGBz9s$)utdfUu~s-fr%b+tWvsG%wu#iBj9aN-U3ao&5}^iupj7yAMEYX<z9
z3(PXyTrzC>=;4#v2Nc(iW6BG9PQ~*0gU(qPim at 9knXZ~_aM;5qm7JdAv6&hLF$9#w
zfb at VdU#31DuX!COfR0rb%hOgPh)y^V58&Mqu(g}PpuV`H?p3ZHG<&h)>x&4&{M?DF
zljlz8MnoMpVrj`nuAZStirutxE-ZU-Y5yDLPu>iwYB;uyC)OA7R6T+pZPa~qPN?-o
zysv&zcdkcCP4Xo~KWWm5^(AKcQ7YG$p!p;p8W*`6w7Y(iyNCFG7=i>%3s7)h>J3&8
zVZzUrP$w;}Mt*J##WFGqG3uV-ql0h>!}=R!9s at D#d<+{=B at 5jhJvv|;K6(%YPY5>f
zho_Lvm-o;okK0|^yC#ukE at pRfg)oL59Y0Ev{D+7hgl`h2gu?(zrmyT9dEyzD=MPZS
zeI`i(@}w2Po;H_tj(X&k8}}nXGA)T-uud at k+QBh88?Jyn6?LZsVXpqY1~H!a at d;ES
zW+F=H&TOi|Qdz}Slb=Y8Q}t&f1Z+%bR7Eku at G=OIVsHv;fUCVDREa3k$oqP!C$hz0
z)($>F9UEb^_aQQMn_+?3qOZ=i3B5HsagYL=$>X~7 at 1RpXfl!19425+#Iue*n5L|b*
zQHSWsqdS{G;=WKA|AS4jCwR7Y00EM#yIo^6`0hjGGtA at ZE6>r<VVwJ9awTcNuy5UO
z?qYkag8O-OceTyfwF?fIySCX at 5}OnMjjabZ&FU-!bsiLR{5ZYqC^pfW026ECx7c_n
z(|v&=v&hxCT>ZGa$}e|}$6WF6m*m8*Q=7!@3!?DYTt!UW|Hg&jyYch3PG|Q8=6TYl
z6w)fJFzzIxcUY^VgRifIt6sad(xkP+z{~nbTzd{DB~R2$0w!kTxTk^T>dqvMF+ObP
zRc}O38;WUndWSRYOI&-zY<p;0+n)cUZ4vJax=QFmB+ at 90+)4MSqrdyZkRk=UKMI7T
zbp^*%&Dc5JzyFpLiWR(?;JTw<{Wx}S>EtTi!BfIGW}9`vzLfBvAhB}wnq;nxDGO^h
z<z_KuUQLAH8^XZH7xnmgahr?d-bMe=#<6cmF0NCBUtG;tZG6O5*C*@-Igtn6V<76?
zqqXXX_3E*D^<?~$yq%ufL~S0~sD4zZ9&sFaJ6|q9yDYS8g*YZ)XW<|Q%o6;9qrXl)
zKIlTBO515Ps#8xPP%VI!JU;$uO1KsjnUNCafI at JmBO?c-<G_2x^7Rn<ASIkHo~k+x
zG9^qP$Lb)Vs~vGS6u=<c7$15|<OO5Auh}J{>KaG<A}PcbM0Dj==Q?`-3q at 6U4y}JR
z9v`u%gr9<>?T#^nsy#a-Dx2dYVoK;m5sMuaaZvjqH3qx4g05RI3adVWnfFksYBcsu
zqlftiZ#@_*h0t2C<AvWw?t$Q`l&}IMS&Jq&ft<*L&^!>11Mkj}XL84ZNzA|C0H at Y*
z;H at j=+b-!_RjVGU#cglsbWy2}Cvg1DT->E7qIQqo2+#3z$M}N6*RCYxg|7grZJh-?
z{^q};_%A4uLZ|FB6r!W?E9HE^U-Y92R<z)HlH_X8g~LOktJ$F<FTG$WrtX0Vb|w|4
zl3w~WoTZoUHuAqQ@;yfWzLB3Xa at tdRX(NJ?Ub@=I>7AmN-eBY<Mn1#HFB+0-4SL+5
zj~n?RBmcFLKV{^bjl99gXBqMj8T3a+{)~~+U0p9NK|W=$L0o!&>EoBzn5B&R(*Hnf
z&qg!aywBBRT+LVWwQI1U=$a at Z_Muiqjm<sUy&MZ9>G;u*Is`uEmpzVCm(qcoOnl8k
z&B7e3e!hj17XHq{!xlbc;m at shT~@ix!rLrdW}(>|V^=M-C=0bRvs`JFXWx>RG;tS}
zP-ePsS~;55X9=CP>KiToW(x-_euIUpEnIHlO%`5bp=M#Og`Zk_CM|r&!h;s>vG4&4
zk6P{0w(qgZv!?Ou=9oV_rE$--W;r<x(|Yc=`029!ipzhtO7lHMCjY#JY5tdCSB2S5
zTw)>x>dfS!Ncg8nR=?9#@0w at YvB$#c^+sg=4D(OOaGCZ@@8Jo{zNai4uyD}Aq=nQj
z{o5%WB^&XzxbR&?HJ9q>=fvqL-40P0ah9>?(e8Px-E`S6D&rc;vb(aoO3=0vbOVrX
z-d7@)K7#LO_-fEW6TY``#;rqx at 8f$A=jP-1&g0{FqdtibYmDu|WAiW`xXYkpLsMPT
z1An#k<x@?r`bS at X>HZ7<>^VhtuDP{kqbx<`7C9DbZ>bCWV;xdRkz4%XR;k4=;g?j&
z-?DvKWy=OBDEZ_m9)9cGjONTv*_R|*mNwiVa+hXR*m7(vXEh$@j$Gzw&1a5EJ9BI(
zh>XK#^7;BJU at LxuCA$e9!1qK(+0xT!%eS$7SYWf~Fncs7lD#RbBA;~6$M34pMSWJm
zM=#-f2f7GtSvHo{2rSHDg_Sc{;fCBsn^R!U$^*=48)UguhofaiWiFesG&f=^wzJ~a
zJXYMC%Ze)nRy?~XLPJe&Gr|)$5XVd_5nsAQ#+F-glek%k!Q<d9%;34e8v}1FgI5RM
z_IZqzWbj(SOG3_`!FvF_0r2k1=r at PrGI(E<zCKq>&-}TZD|Y7fuJOtd$scG7_`O?v
zq1K=jW$bG3{jq2i8_+9l_e&8a5DwvwHlM at w`op;4<F6bmS%=giOA2Fmtl6;fJI(9X
z*DtB8SkxK}A_g$8EN$_&1%iqcg+>W~Dga0E`XUjpvLhm~eCP%vh6vE%Q?^J^SW&`A
zd0U`87L~jqUo;xt=JiF}J8?;7-asgz1bo53eN$CZs51}^hbU at bl{0TU^jlKt)|n#9
zOdT+&gMIT7?UfL1rR at ReSioQ^h-TB)whlxhim6_2#OozX{B*URD#5O+V6oZO3Ce6;
z!@N<cJs{J_l`T=p*XqUJQhY&jgVzVw1r#re!OcGZR*GWQm`zbbQX;+Nt&p_MYZzfO
zd-aDqOq(h%^G7&jC{=u$gRr+cqkpTWEf(?{GkP6*i((cGD_A=tX9PkhGG8Q6-XWK7
z3xvucQ67zjlt7169$Zqsq}-g;X%aMRnbp%Z$VzJ<oGCD^y*biMf$18yNWREr^>$%{
z5?tepC|DnBtW{V<yoPXiYb>(X8fAS*iSA%*4%OTdh$=B(aAODqYh~<$urXvV`qujN
zGGA*fQpR2onk3~5t36rYl9V;(7HN!z{gN!Re;1n5{!6pi3)$;rs}PQ^m3(AtV^or9
zk#^<W9+RRw8l`Ak7^^<y$0*=uY{1&jYG2pN>NB{_#!3Q{&CP}-O*^o at I+`&>wK4`E
z5yhU&UN^N#ni{YIITj!LM_5!RZH~3KOVP9?KO at cS!>zHP#ElqmCu85P-|(IK2KQ2P
z2UpYX_DA5yuhaj352Sy2{bNV^%01%ow%5!TfelL1Zv&#~Zk2IcGm6CjI{o>0KrCWx
zCB755_tX9TEWY1?#ygSWEy>;iO*qe at T|oN39B05M{1rZuc^;_Yqqc-E;@xmdDPz9@
zR^aVW37Rl~kK}{EpIh`(KsWBn)V30M6rTt3gp(GZa4z09By$b$4vW4E7{*6BBf#tN
z=e;dxdlyi~NBrHu_wZ&>z at G%J#*b0NZw9`AuLt}=;Qv at OVZ}F0KH*Ea+wX!5-r}qu
z-&3IR9yi_#1EA^MK=*wYXu^y5Hi7=?B^z#HbQ at z`m)mas?ppCVeEh+aaR_f}Wb6l@
zv$?BRZSM$*op|lxURhJNWKl(#D24FS3xwKh$~HEyEni+H$_kDmUl4benz9{|T()Xu
z;f!jZEK41mgF8eh2+1{Nv1sU4*}p~V at X6&J0e>_shuf5LT#Rn@$sLP2mz0S(SOaa6
ztlW{=8&rv6wGxfV%DPZn*wQxtOSHM?8|~0imT)}|C_Ah&I8o_)G4vv}Hbw)TIDy+G
zd8#tAx*pHi7+t;^q)sU)1}U#8^U3Q%o#Cxgv`mZzYW;Mbs3~jn1!bvBTs)<xdhr+c
zQoZ;xo2nO24Gzt#7pMJ(!sV0r`6bc(zdpP6KCySt-lz5s>`m?++pF!J+$;7k?0=$v
epntI6v+u5boAzzl7umOc-{&j&n)_At!2bebax!WF

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetipvalidationrelaxed.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetipvalidationrelaxed.exe
new file mode 100644
index 0000000000000000000000000000000000000000..f85bd9bb1839e090515d2c763279ec3328695fff
GIT binary patch
literal 10240
zcmeHN4{%e*nP1s{wu~`yh!srpPk<bgKL&$*6k;1>u<4STj)P5-xi}F*el{wyr0P8x
zNa at v%>?F=RUC5<PlR2&jrqiaGOwQ@$8bdmFGA76lq-RKG4vt>p{F&qta~CJQ0YXW1
zzi;1 at 5l+(1bfz;+C(FG3ef#aV-+ue;?zg)#>;Ibl(aDXLjrEMRK9I|v>wIuaTG1q%
z&kC|;-NI&pbB)2>GaFbWXt#xc=q$!^1?v*BFc>)oGn;MdPB${!qQX#;29h*6qS5oE
zjO`(+k+E^=$jw-b=#ZF5n;5GAbS+ at 4naW>~-1E^ivz>#nU76)+?G~x>b``vfg~-St
z8oN0TP$D_d`=UszSM|azGr<Bw$dPX{k{ewwGQ?OHIfx8~uY^1xo!pEi7KIH#F-9<i
z9Bj`_ZqgS~B0eyMPv9FN=ggFXkdTuDAqY~J<SQX}0~IbMH)E?WmA<0B%pPzhhL3(W
zwYAx<?-9e|RfQ+7XDnL8hlYyU&JCqfQOhtN8ZA2gG*;x%qwXdiJLA|-J41gKYg&I5
z3sxJ^PZ0f2sZ>fkp<e_oB>GD9O6-ZAgsSLO`Hb;+VHlwQhlK3!jfPPO_a>qnL|H!u
zW^Y2B3CRsmrr%C#{}xRBLCRKA2P66;#EpOf&62)?N=}l_vkG0gJa))&_wfEaGV*5-
z!+>G+Lj6wAt^{fq4vVr2^7{Lql1^ftu7M_!?Q3ybd7tVmx)Wj*#$Xp`Q+KwWWf;19
z=~?$fs?(vr4xc=HLMwb6J1h3F#n!U`wY{U!+mh1v!6Gm5xV;PU0R!>^^dA?90nQjq
zq3-laLtvF5u#g0{K_DsBqBV5039I{;7SY$kNA#KSrT!v($F&nYww$TgaX8~%VVF9*
z-j%40H)gp;xt5)>KW~HVk1}M7Np`6rYvo#jUWbnKY-C(Jua^oe(dPggv?SMF)vWs1
zCt^DH8;;)S?l~KkbPFV0$Dgz4{m`WiPt3)H|HzQ2>e}gaFvz?;gQ~dJ;&gLOb#gej
z!eh?I9N4tWn3|a&wIlkYklqD+giy>&5~{_7L at +n$HOIA+uF;hJZUkJe9ZA`51Cg>f
zi{i+E{2WFT>$sbzN*^L#Ujybac4qnhIdEgj9smyuD{nt}^_3ej9kZ{)_<v3lpw&5-
z^FHZgFnFBkSOU{8^-)=q-XiFenyxh at -JtITD=C$OL)|8&GEg+vNok2m4Ps?6zBNJf
zej~L^=2)obOMI>HJ2)y~W{xAxv~aC(cbbWYVVo&?3NC<G4lN(X-n)YqBz$@@WshO4
za_wKvL#Zo;x##g_=O(WGI%S_nH5h9(*N7EwaBksA3=5K&+Y$0iMT2&jD#BD)h$Vv+
z??~A{z}%*iu~gR1XVIhEbMM{8K6ym!D|MdCwVculsNov7PDs3JL at jnDCb{jo!rk)_
zH2!y~vAG5;6X(o5hs}_8Sn5TsMIXR?>o39$J&9<}(!@lu{;W~Rca7@%Ku)|rV4-<O
zh%(|#S4{(2GVNrv9ouW$w{^*|WMS{As1qJqhFbkG!9&D~7p|mo%#c}x9$am<khFr9
zLu at 4VTif>~2?ChFSpX^$qBsX|SbEa|BZUDJJYXx+zYU{A>?mo_h6dN;?$owI+W$U+
z;&$#UJOcvT`{xANFL$q?yHV6LSb#=tD{4!k%?&pnw7qb9F^?TA;n~M*FVyDp_{^?`
z_{^7iU$Jvt)iJe1yKQDe)lg)Hw%VFK)KHa(V9_32IPr$-IPX1fcqw+DlYNi;H3NRl
z1!f61mkb*|dibRN0mZfBnDT<2Q_(#BpnVpGB6fo*(^ZoV4tw~dn$vSUI#Z`0hJdmd
zkRCAR%h1PTHLv3YNMV&l^YqmSq7yd619*1?Z2e|1s4s4-dzEVkjb6<7`XYibKX>Bl
z#JLkG5mARlEG^l{wKEh+v72_zg=H@;?SG^E$(un{4M(@}`1&HAtVi&pjk=G{39Y_}
z_tj6P?CVj|5_}2KPa1T5eTh+il*;ubXg<k@#vR-R+EqWvT|<073_*gX1t_>K^#-el
zFyUuQsFN0FBR at BWVi_5Q7<JF^(LuO`Vf_s<w?GU#AHzme$wGHWj}BOdj~)cU<B|pZ
z;VGo^<vsMtV^*jBu0doOi`kV}A&sF&+Yb^X{~@9W;hTg>=`etj;VbJ#9)HH^{v8x`
zpGi=FJZVO-r;TNuqaAtW#{CG8Oi!Q}tP_mCc5sZ&hASXX#gtu!FxUQ3hZv9l at B}Im
zGZ7_H_H3%bQdz|{gCCENQ}t&f1Z<4!R7EjDco~F)VsH{`fNQ-YREa3k$oqP!C$dE_
zYX_g8jzt*leTYomCM+;o^wl{xp|?gm4pLw<c|2wR2k6vJAQT}2Lt!0`jyNV01W(!9
zs6+JRPT8A4;=WKA`<+F##(B1W00EL~yPab+`0hjGGtA at ZE6>r<A<lg=xso(s*thOC
zcCj^D!F{~CyV at dl?Sccwu5GrIMCZhQW$A%UvpNewod?BiKTPjBicPd8z{HyPH8vi~
zbYGyz?BLp5u6^8H<x at Jwqt4iOOLC&uX-$sq3l8bAxvC?6{~H$q at 5atsI_=#TnEOeK
zT1cy~LflClo?*R?4!*t;u6eBbN`ux9125|%e(gD&lssND37D9T<DLeVo3bZpjIm)W
zuX-bLS}3O7=^4(jFMjP2qwS$-ZF_!C+alf<aF)=8$U&nlawS}&w*Kx9gQ^_p{>UGc
z*A*Pobg^@~fBOwN7%g};&QrF2?c?aZrIV{tHlCEmG25&Q_9dnN28orMs!8Npn7XiL
zQ*IVh=hcJ>z9tQPd@&U}@7U(#xOdS%w6X0QQi|&|>1S6nRvR0!)b&ZbK~Cg>_ZWzJ
z*J!QwVZC;&UOO54ByXp?HeQ=YHfkT$X-8}a-p*GF&@Kz at S|N at J*jYG;0kb&2VC%2b
zjt at FfsM2?eMs?aL1gZtFlE=nBO-k2-A~TZG98d`EbY$d!v>kY_Sh*fTA0(yo#Zy(M
zK_;aM<X9afbhRz!f&v(18RJ85Ie5Vs?`w8CP<4$hc99g~3gU3)R_EG!{|7})dJe6B
zF&-PSCZ!*Pr0tF|gQ`6{<WM)qMjT107ey>~RK!5-htwGC-U_;I!6>Zy1ZLhtrK-{B
z*F_KW58iq(S_+}HV8;r-iQEmrQ%PwBNU|19ZUQ-x2cdZ&YzN+*qs-*C1CyA4$p%iX
z?Z8`CDz{zIx2je<Qj6Q((CMPm6rRAbH*;~9qKMi(dLul?&mH3n3SYaDlo!4NsJ3(#
z at YtLGj^e+eNDA$WT_{9H<5w#AfWPWT6|88%^(4WyfD?y at N>{T(MIL&=P)ywe5$sGV
zPNh`o({NU*bhpU=PUL$;{=Uf1h at AFRs<aV7DOI{!<n&HSmEIuo5|Pgk`9&eQR?y>u
zJ}&Y at BLAhxpAz|IkvE8ZmXLo)&>xBX8IjXnJylwQe9B-!TzY?{#xJiiN*VQ~|Ap4>
zjYhP2pKHgsmapaO*I+}@HPM0ChguCa7T0L^ax9R9?FU2J5crs1_Bc*mN(XK- at HG>4
z6LZY^`6f=9_!|=soA`{0KQ-HRndLSUZ!>Y3iAHaXUA54pOw`Maa-~_GeM?%>z+G5E
znd!c1<w#neDRkDXZ#4OvO&l=!4JNKOak+^%nRtzfx{0|aeroEOH1Qo151P2g#0N|~
zYPL(;zQ-)jn#Ql2WBlxt#y!^><-{~h>$%_Lr_0tWF8|po&36|W{PQNJ`F{wzDvWlH
zB?eNU&P;BKgnx=;_B&nmu6c$XdrX{OFCz12n14cs)39fH4^No(J!Rs6iGwC4Or&<{
z-%jZ$*@&;jiSH_^xl~6#Cr(f4c8J1=vy45DcF&vbrpta&8P`yj-Id){g0_{Q8-R54
zz7nzY5qv+vSA!0k at V$*QZXFtY7vF<8Hy_7$9v{aW^+|kKV{8u|n}_khT?QQ+n(CS!
z_?xXSpK5Z}Kl=Jh_h0x|_bED{*4)~%QIR7`ixLgCx73Av(GEGNDlNWHtK8y~@k^@g
zYuUc6vSouDkiE(j55IM8MsqP%!rzx at Sz2&|$X%LMVac(uoYi=o+j5z$HJ{lkt<1Ke
zAUqD6$>-~@fUWoqmh2{c0N)cCWm8Y1CEvpGVS&Y(!>o~<aQ3FGihR;NAHS<Y7xh^M
zAH9U{9q1yoWLa2NBd{=s6;{q*g&T4kEq007D-STcWsv1k9gdb6mAP!j(%i76*vg7q
z^H_0nE-S8-Sn=$lFpV?4%?MB2KpZ2jM11LTFt*%`o5amR3?2t>VFu3$-WYge8N531
zw$Ed%B!kxqUIKE~4Bi9a4S;u7M!z`}m%;m@^wqgyc;?ULT(L5bXN^Y*%RYab-{;xl
z4Ymg42xC`+?~6tv*nl2+yH5_Q{!kEqwD}ya#}~p4AAjXo$vWf?MOGQRW6g$*-)dgB
zzJ5t%#iG_g05O1h6nTrM%^y(Z2sFz0Qvo=t#~TiN)E!}&<wG|ZQAB_auewE!z={$^
z%G><y(TMB`dLxn0Hjg*b-ib>x^Z0{))$a}X at 0+TUgPs0JC`eHQtDJe-q2H8Bx6Tw<
zX6S%H9qj9uXpf9&D{uEh#{vdZK{Ok-wsjy9QJnF3!X6J<;-jneR0(!n1&fWgc2Gv^
z8s>?}?S6$uu5O9Q-c}F(mf{VN8$4dP&aZk<3~cuLwql2+$83lSNtyJLw}SFEk1)bw
z^y&+B7&cX2=8sTNC{?|i1F*L`qkpreEgJNR8NCj at MKBA(3f9iZ8U7%O%p3NXcPQoC
z{K0Zalt-dL)!!kP2bPpCDK{o{ngq>SX7zLpirVTAWeQAdZ;UikV7i7avNwELy;a(v
z2G)4PD%Qsua}^d5uOSrL8V#>CM_C_KBRd$ILp68!BWlze*cimXS{b__Z44TVzO_ER
z%-4!V%Ge81ldOJWwL9w at vbx6DB8`!dPgWH6pHg$$e`ywbA$y%-7DAD=vX^XajK~Tt
z(ypA_qjF?Nqa0}qVbuqH7zO-{4OshG?dw`ueFnE#tRyhm+-z9Vv;*s_qZw0Ft6%^!
zQS8a=byJ(9sR1jHWAU+nhDCMq=4gAn97$X96Vkjs)EW)QT*QDo8T)4ahHuq3xRx3_
zxSDpiFAP6^mHzTQkpAWMj~(eN_c)HXy=J@!EKrhu8xT!*D~fYw5=G*FmHvD@;3#5j
zCB755_tX9TEWY1>#ygSWEy>;iO*qe_ok04(9B05M`~^Oec^;_aqqc-E;@xmdDPz9^
zR^aVW37XK4kK_ZupPKYjKo{=H)V30M6rUUNgp($pa4z09By$b$4wJqM7{W(7!@%qD
z=e;dxdlyi_NBrHu_wZ&>!Jh=K#*b0NZw9`AuLt}=;QyI4Va3-BKH*Ea+wX!5-r}qu
z-&3IR9vAP00nqerp!>cPG~q>jn?Qg0k_9(0x{a}}%WXG)cdhswKK|gzID|JfGWNaC
z+1%Buws!;^op|lxURhJNWKl(#Lk{Al=MT2mlx=KYTfV%^p{O{DyaC)<YRY!VO4+KF
zg)^$XiXwMx4(xD1K~SkFi$;RCD!wgphgT`@@cSYmCDf*t<6?BHSLs;Pxund2gVo<A
zE9xDYy+M`3QLRRzin=b?7BaQX{{z}w^F=$fRAgL_{pt?03{FJ;P87Y!t&I_XCr;pY
zS(&QLtggp1HcFST2DwuXI0BT{lzEkP!OqZDIa20``fGi3ov0~m^9B^T%&~Y%Pxaz2
z?xlM1Wj0kWo*EpQS1(Tc4TZ}m@$*X#<Nx~X+WW-bJ$s+pJFqvgcWke|cXF?ze_{U<
f{R91j{qB8t?c20(%f9fw?fX7o$yeMjs|WrcnRzoK

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetstrict.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetstrict.exe
new file mode 100644
index 0000000000000000000000000000000000000000..18c51736ec8a033fe5df46f1ff7ad28e2ef37716
GIT binary patch
literal 10240
zcmeHN4{%e*nP1s{whS0K#0sYQCqRzLAA><Y3b73`*mOxv$H8`zxi}F*el{wyr0P8x
zNa at v%>?F=RUC5<PlR2&jrqiaGOwQ@$8bdmFGA76lq-RKG4vt>p{F&qta~CJQ0YXW1
zzi;1 at 5l+(1bfz;+C(FG3ef#aV-+ue;?zg)#8~&R8(aDXL4RwsQK9I|rJ0IMVRy4^L
zu$fu2Z(*~+xyIn`nFA~owA(^JbQWW|f^`X57>pc)nawtJryH4VQDG=a14)`3(dhXS
z#`X}^z}Pr-<YufzbVy93O^lTTx)w6lMCC6??geO?+0Mb(uFUeZc8gVcy9(aL0%T+m
zjolmvD3KiKeQ~7Kt9s#<Szv)7<j6M}$&IcT8)B at B97G1gS3(|;PHx5$i^GPX7$X=$
z4z_0|H|dKg5g(YsC-9Asb7o3GNXW^75Co}9@|BRgfeM$Bo3S;QN?%c5W)HX$!$&`x
z+S+W__lRNf%7T;EGZro6Lqmma=Y~?LsAZTBjTWAM8Y}YXQFkMcopJ1^ouNOAHLbsj
z1*?tdCy4&1R4S#N&@X}(5`D#b1@=TwLRIw2e8zaZAPms|LqhiVM#CtCdlS)(qO2bS
zvp1p6g5*Xh({CrWe+#DmAZ4qlgAx4^;zq!LW=UU3B_~PeS%t1#9y{c?dw72y8Tm7a
zVZg9 at k$xv=R|2(*hDF&0dHwxQNhdK+S3?uY_O&>zyiau&-U+dCW3WrIsXJTGatz(Q
z?5z7C)#=b*hff|pp%pxiofZ4oV(VFm+TPLVZAt0-V3C)2+}?%wfB|^{`j2Od0nQjq
zq3-laLtwQbu!sb<K_DsBpfz-}39I{;7SY$kNAy|nrT!v($F&nYwt}hGaX8~%VVF9n
z&XuT%H)Od+xt5)>KW~HVk1}M7NOqYaYvtNZy%rtm*~qwdUM~??tj`73Ye}xXs#*21
zPsDWYHyqvU?l~KkbPFV0$Dgz4{m`WiPt3!F|HzQ2?AqycFvz?;gQ~dJ;&gLOb#gej
z++)tiT-dbBn3`E2wIlkYklqD+giy>&5~{_7L at +n$HOIA+uF;hJZUkJe9ZA`51Cg>f
ziQ>qC{2WFT>$sbzN**F!Up?k9c4o!?xo~639smyuD{nt}^_3ej9doY3_<v3lpw&88
z at IL8dFnFBkSOU{8^-)=q-XiFe8m~1Z-JtITD=C$ML)|8&QcyJ4NolD`4Ps?6zBNJf
zej~L^=2)obOMI>1J2)y~W{xAxv~aCpcbbWYVVo&?3NC<G4y_o*-n)YqBz$@@WshO4
za_wKvL#Zo;x##gF=O(WGI%S_vH5h9Z*N7FbcW&WH3=5K&+Y$0idA)X+D#BD)ge8L&
z??~A{z}%*iu~gR1XVIhEbMM{8K6ym!D|NoiwVaZ2sNov7PDs3RL at jb9Cb{jog5C2G
zH2!y)vAG5;6X(o5hs}_8Sn5TsMIXR?>o39$J&9<}vcyD@{;W~Rca7@%Ku)|rV4-<O
zh%(|#S9LvFGVNrv9ouW$w{^*|WKr*_s1qJqj#~XO!9&D~7p$Uk%#c}(9$am<khGGP
zLu at 4VTif>~2?ChF*#IgMqBs|DSbEa|BZUDJJYXx+zYU{A>?p3+h6Xp_?$owY+W$U+
z;&$#UI0FLP`{xANFL$q`yHV6LI1`Q9R at M|po9b^qXnW!IA|5+f%(IW#UZ~0C at mXE<
z at mVkPz9Q%P%42G=cH6A_%Av>%ZH+a1sJ=20!J<95XyOgmao&5}@KWqPC;J}xYX<z9
z3(OL3E*>^~^zcdj1Bz?MG37IRPDS(hgZ9}Nir5XNOjmU_IPBq*YEIAb=q#Or7y`-?
zKzhKKFGC-XRlklCAca*H&C}N)h)&oL58&Mqu=Sh4puV`R_EoMOG<q at P>x&4&{M?DF
z6X#B(L_{4Hv9!3EYiB5uVmIxa2g_bu*8fJ?lQ)B^9FA_|@ePGMS%=_98+9L at 6Ixv%
z at 2i_k**Bo1CHPXJpET(BhGL`qD3$Aq(R`8*jXSstw5x8CyN39F7=i>%3sG=g>J3&8
zVZzTAQztFX27Yb~#Zoc~G3uV-ql0h>!}=R!Zh;tfK8B5`l7;S$9v!d at A3X?y$0ZB+
z!&6A-%X{dP$E;5MU4zIn7PBj{QW`^#wjU%&{zF6$!Z!(%(qRB4!&la39)HH^{v8x`
zpGi=FJZVO-r;TNuqaAtW#{CG8Oi!Q}tP_mCW^jzohASXX#gtu!FxUQ3hZv9l at B}Im
zGZ7_H_H3%bQd!M4gCCENQ}t&f1Z<4!R7EjDco~F)VsH{`fNQ-YREa3k!25csC$dE_
zYX+a7jzt*leTYomCM+;o^wl~yp|=J*4pLwfc|2wR2k6vJAQT}2Lt!nBjyNV01W(!9
zs6+JRPT3nl;=WK2`<+F##(B1W00EL~yPab+`0hjGGtA at ZE6>r<A<lg=xq>uc*thOC
zcCj^D&V9V9yUHSV?ZN}bu5GduN9V?VW$A%UvpWkwod?BiKTPjBicPd8z{HyPH8vi~
zbYGyz?BLowu6^8H=~Ft!qt4iOi*usaX^oEV3l8bAd8#9R{~H$q at 5atsI_=#TnEOeK
zT0pC?T--?<o?*R~4!*u(u6eBbDudP!125|%e(gD&lssNN37D9J<DLeVo3bZpjIm)W
zuY4nNS}3O7=^4(jFMjP2qwS$-ZF_!C+d|$Ka2C^r$U&nlbR}G)w*Kx9gQ^_p{>UGc
z*Uvnr>0;+}|MnYlFgo+qI8WL7wU49smQ1cr*?3YK$857M*q4<48zfe4sydNtVd|pl
zO}SZ2onIX$_?k5E at x@f^yknb_<K9L8(8jiJNGYn-q at P{QSWRriQrjo(204)j-eVx@
zT%$GGhjrSqI_+falf0eons`kf*{FR~s~xc&cspO2iFR3N*9vh=z|Mj}44B3F1zUfu
zc6`u at LZ!Y_G^*83Ay6%Zl{_~7X;Qit6q%8f=7K_Srz0Z=r0u|aMauOM`XDKtFPf at 4
z4KgWBAjj$;p{s2%7ZkuC%NQSe%fV-k at xCUf169}9Vi!pvt{@I)ZdI<W_kU2-r03B3
z7vr%JYf}0#NZRfgGpL%gLk at LwY{Ze2dQrq;M at 0<Oen^eM?yaC}7mmWJPhjRfRH__}
zeqHpi;NYzXqa_ep2X?IBo5<Y|Je8DIf+TCv<R*|4c at UZp!gk=@xymeVJ1~j)mu%qF
z*bcmPrE=RPeXDD<BQ?0~4V^A5N#O|`dovezDT=7wqc_5H{M<3Vu;8^TNqNC5fGSJp
zOdfml-%<QG6iK07u?vOhX#7egAMjWGsDc$OxSk}q7I5P5Q0Z!RsL(?%7>cQTAcCDq
z#i^7kc^b}2mFyPz--&#W$ln+F8IjYTN|iJqD5Xl)h at 9RjsgfH+UM%t%BEKjk*9m%D
z(8oo7NaVj1`BNg_Eb at Ah&ld6z3Hl?EKO=IwtEWnekxv;ch)eIU)cEB!Mk%Ad<iF6`
z-E2gg_qleAYx!EfehoGhT at xLMeW=w?V{wgkufPIH*nTji4S|pOWsl?3rF7sX179;y
zH!;VoUtr>-iN7)Nu!+x at _*1i8msxHz at ir5en`rdL*j0;6%0#`?C|8)}Ik%)G4cvt#
zl$q|ER*t0gnL=mH`UaD~*~9^pUvJ_X6IYmclZn at usGFE;;-{vbNfX~O at t}!&Onkt^
zqh`Cb?R(7f>}mYkxyH{<Y20(IQBF+5w4VD-e!6VE;_{!Z(tLNJ!9Q<en*WEetK4Yk
zSZW{z>dfS(Ncg8nX1~)_ at 0xGevB$*e^&&EVhWRICI1PKI_wa;i-%}<Im^f%+!bED9
z{_T{Gl4g7 at PJCBU&80f}IdOVQw?h<0oMr5Jw0qucH(mCN%D9HI?5^ytVzjLQT at R$2
z_mzmHkKp?WzG`&Pi0^HjaqH3GyZ9c&x%oK0^Y}R4s88a<8e at C#*gT8}?sDkZ*jU^6
zz~5|r`BbB`?$Os at y8ptzx=$fkv9-6hG%IpMX;GrV_Lka^FWMmoRi(ujYL#1jGJZ*w
zeJ$IUSF~)D1F~0{;^DW>&1f!;T*BX%XjxitgUDT$Rc^_#u$(n`oZE7ltu>$7Dy+=5
zab|cNHj~dcTmf708!XvP_yE2qGRmf&21~w$<--DtHHTRvIpOS0S>^epdjWn|g)Zu|
z5<Yqf-#gGnXvwm$tOj5~4lAgb!3s9!HdyQuvsWBocFQ2kr8*ofGb(b~jAglDOOcfo
zwdS#+rd(E3A+e%4g<%?JdYciRxPdrET7~%1<zQ at u88?ZWg%~^z-l7bi6TC6-#xi)d
z;BBAJSaAlg6}$xGtQouqz#9PXu8e+jC at zEdMd_<^#qi9Z%ei7 at 9?x2j5|(}bHowoa
z#T#r5$Pvb_2HzKrM6dxp@^+sbR{fzM{%G?#T#qk=8$SNZv5Ixb9g3_ncE{R{&EINT
zzoBkvMfu{^Kmaj-c@%kzr_CQw<p?y&_)`Hms>d4+d(<6andL(_7*Rxk4zIdJj=+jy
zM#|g#?a_$r33?-u&^C`Z(%y+nGV}O at e%0>{`0tyll7pT8NGM2A1FM{Q+M(Z+O1I7w
zS#IcnK^^StmuQcSXe)2`L&rh}Q$aKtwzhR35>ZU`c)}hJS>mIs^;8LVT?LDcwsufP
z>uTnS$nAcGMy_s&$lg{D{+8kmkQ+Q+xX!P7Pz-GL`nF<+rN?ZD3Q3vtlDC5LHjgmE
zV)W_ at br?2PT;`8ZP$*Tsn**@7Dx-h1rY#!ui5a~Py+tq!!V1>T$Qk}1ip(4Kmvty*
z+x)>YNR&mQLDk<Omj#xVEiE%9b(#dtT4wch4T{?84`m8WYj2D+Q((G=EwVR!S-n--
zs0P-0!z$LtT5}Z^60bfK+8Pb7Ge=n$R3keWn at cr!_#<l68)yz<V6BW at keY+WqHnEB
zFY|R`kuvsz)F`W8SnbaGhODkNwn#%H<dYSJ{ioEF_FtOCUdUdrn1xVeo$MuB8zQno
zi?l1}_NW}$(I7|KLRj at dA4UN`V*}QFR{Q!^R+qtT5-SNzHZL2NH15Fq>S)3g)hHN%
zOcZ-Ed;QcVX{^Tz<XC*{pJ7q0ygAz5E=SUq{Dd at b2(?B7G8Zx6PR71jxA9wb^{!>c
z4z8lz?F++?U!}i%52Sy2{bNV^$~}(bZLb+G0t=L+-v&g}-HPIznM9HJU!^}E4>$@L
zTZQig?)`LsKa1}-pz%&*cuTT(Koib4X(y2WFUJ}134ei)WS$4=_^2)6i+DHOQo`7;
zfaQ2QRDdS*<0JV1 at TVsI6wrmcGPSJ$9>wQ|JmI9tC!B}34ar;syu+mL0*3IB&M@$L
z{CRH++TI0J at DYDE@IAa)RPZN(Yw%+f at tc4z;OhZ at 5cq#4O<4XlgHQMp?)JMNgSR;A
z$M+OyyvN0RVE{C}8|c381WkAm-zLyszGT5ojBaDB>vG$T-(AZ;hmSvaG7jNQ4UB#7
zb2fL?>g^o?M<-r;xK~z}E?rz+>X3tY>G^~0)uqi%>&jM?IusR0kvD)lOLgfESt(t;
zs$fQyS5f4S&4C>bC<rRmrO`<6R>ikP?(iyQ9e!UVq=eekGF*&q^(q~UJC~L^aIpH@
zWJSFrvp1-6II7f0R8iLl+d`(c1%E)BYk_EomWqt)v0vR`mcfb0--)6ZxwRqU at 5Bk*
zE-O=&nbmc8#zyJ#RWEnS0Y`xH>Qb+=KG+%BDo08kQGbn(t`pUzZQg()mpYbA>8V=s
z#l2K5xy+`jB~yb#^Qt9jzoBsXBz}I$Vf<g8U3;I{yJzoHdk6L=_Kxk<_fGD0^e^gv
gqJN-&u;0D!u6>*KZP^#zw|(E|EBT81W%a=S13V)!uK)l5

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-hotpatchcompatible.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-hotpatchcompatible.exe
new file mode 100644
index 0000000000000000000000000000000000000000..bb554c7ef89b2bb16e87977d8161c6c857d8bd9f
GIT binary patch
literal 10752
zcmeHN4RBOdmcE_zOFD$u8BI$Nkq0!BC<X$ZQ6PzSB*BXl+(;6&#yCyWc}aTcbhq8F
z1GvmgGM%X5O;_RHtd{Psz|<}^H8tX_vjn7^4mfrqxEs*jfx%UrvD}AY9n at O+@u&AY
z at 4fE4M5vjXDyzmVZ|c7DbI(2Z+;h)8_rBLz^BwjV7dLt~H89rxKpuN#<AYrpMQ7MN
zR+w|y^{g12t99<-%K?dI%x$43;W>=u5ss39EDXY`u~;r!*O%#J^hJZNBm+p&;Aowm
zU%=Qigf%gCk_K`!)}{?eOq6wuRRZ+RXRL+jOBDCKjG=~r$k;Zso+<qn$<ihnyj^xY
z$RMi5Jb-CM#ORA6?Oxdnw at e2M40ai6396~MG4vu`jP;UZ$YA&iZk<%zj3pO^bwO>8
zU}$pANn+#z_o7HN;saarNs}S>&5OxNfe-{~Nb;4Yubha9;%4lY3F>R?tL%ZpQ;I8j
za0-XWjt={rer=k(x at dF`W3ggBJY3vyb~v4mSq}2y(c)7_5utilcQcQl7WdL_QC}>=
zV`V;L%7}UmVqJYIolYyq)Ch1*Vz5*VW1sXV<)}Ji8e=?B)B>O`MBuBR<AIJ3L&-og
zwpPu9BK1Bz29ol0NZt-*Y9|dbom%qgv4RE|QO^_iJ at kiWLA{44k);3Krs>M#@t4GV
z4(>${rgq|K%o>)LtK;bAN<yMM>kN&57Jb#<eNOtR at zi!`&GZ{=bK3Zz>@2<uqLupO
z at 5-g&?fo~v74D at UyC0IBqM8Hd)?-Rh1iLhT-eT{ckJf?F*lj7{9<a!3JmF|V{=ful
z0n`J?6`1g}p)}e~9oGeB=>k>~cpL&LVK#bW4cNHN{jU~ntgVMs4&SQHm=9Nu@%S<(
zU&G;?M>NCa%NtzDx<pfsYm_UwX~#C?F7-x}YzfJB=(0Ah6sk{PAaxcVTsfz9YOqvo
z25eMPTzO5gsrx_EmNy2E!tt%{{*PmVx*8I$qt98?ccDu;I6e~r(5y>T_ik~D3^Gd~
zqa5T)o72q|*~#JHN{_KVDFMk>U#k5;l|$+ah2Q}GnxL at +hqX1j0u$C2=X+Qub3Ah8
zxN9`+Sco;_%AvI5Dj;cxQzJ+A6<8T9xOfjwFSvVRSr7BUMyzZ6^s>D(;M%mK3T;@6
z{JrGqSFgnq{cbjV@*FLSQtw>G2ZiBlfF}r#ClM0D9Yia_&j<_(vmj2AZs2pkN(ujq
zBa((s34a7e>z at +N8`uycj`0miiiHor<0-3!MxNj+Mazjl*k~0qObb_v+A~aaTt at ru
zEZngTGhCJp>BH{kJ1JP*@J!mVQd`Y`IS1vgG~$9MTAb^+@^5L!+wd{RoNKs3tVE-;
zi>EL>NMhYb$U~Kl%FEOcCZZhSgxw&f9nYd?Iu%dnZ21L7c6+{iPj+x^t-f8LIdiVW
z73+dZsN)K^jSIYbL at se9&v5&5MJ;oYY~Ek0Z^qr0 at w1uzhJA`nlmD`?91<3_9bv0}
z0 at w5>W7eg~@e=iYohWdPs(%1F{@!j2#f4#ko}+qeKNT^oay-_Ft+?@f>Rv57$mIhk
zVorGOU9_sNX;vcRC5qlB`k-$0B8=kdu!n?G<hl4r`Xl=fg<nAc3;QAfkpw}e0A3az
z#?zu1L5T-(%rqM_(R-NUx3p0i9$JGtS;un0`yP_(ChjYG3<y%f9RzY;>03^Bu9#=2
z5VPu7URN4xX<T@~zUPh-9zRgZbC1~f)aCKS^xnqA^jG*`iF0-J5xG>kZF*z%aAcZt
zi!FD!u{s$+P#-8Cf6H~04;<A!7Qf%gzE8fJ20!Nk=4fs&&90g5v#rO~N3nNZM-dW*
z{U>7i{6WVra3pBEXNqiZ?NexBTaU}u{-d$!>UR*`NJ`BB8Alk?*LCxFZ3G?Ch{#yJ
z8o^?W+mTn``8KfCRxoH>Zm)lhD+kOYYVouO37(%lHY<7dSX#@_S#z+D+nlAXTsaNF
zO6*4KOj!KF(j9MAJh>29^}*Oio>)`NQw>O{w9yx0mATST%m*9Jq#gf(k(DH0Lik*?
z08gwb)#;f;H<W^Lh7X?<xeK_f;S6^T^Sv+#1)AoAa7~Pc84M#Zeo#t-v^ksj*)fpM
z5{bNb?}Xh$a1}GiA?D8Fa7iB}l=Oo8VVds5-Ij at d2Qo}F at q{2jHrojL-bpl_dB267
zJZ^KUZ|X>nX|q6wE4f^_8s^y_o46oA&$lM&NeHvebV|5 at WJe`Cw6+emR-X8|)BOns
z>^q&Lgnrz}uK$U^LReXqL$6-D7iR at ihhPn26uzw+8l$tU74k%;9S=j8D}S#-j3*vH
zMtNU3gv^z8ET$IdxtS|EKan^|&0ow~2YDi)QWNDZZ3TgdbWVJvor41-)QHU1#0Ljx
zB(g<g)(t&D18XUM;2|>g1<eAz$6&p49Y$+%;NS;rp;b&fQqZX!LwdyN0EKi2BoHV-
zc-rv at 4TzE4X~z$N;=WT9|HLBO5<FM^C6YH+o_3DW<ojMCpP6Fh)U6+9jymlOB=cKH
z8(gqrubxe8u}bdaHGMS}Eql!0r)Q5AOKEIIe7~h1_FdLf1ne9zW`8`h`!o3x at rIL+
z;_W>QuE!hgDI1+2B3EW|<$PbYFWP-F=8XSssWo<u(k%8}5QRr)%3|V2Z(Rty8$W01
zar9ka?k6pB5k-BacE=Ju2h}dDH6JYHipQ40)n2$$ABUc%u at bZMwR>VM0~o&?R~MRS
zUfMB6bB-Uh@#?oCr?demLwK^mH%SL&b)Kj_3}Dvr<3B at 3F&_*#OX;#F((H>}N!O at -
zN8blQSqk)h=nqP(3y&zOwsZSFx>X9s3SUd`w0(ziKK9)OXKqg0c}h4*?|i*5Atn45
zP(*pUHkoH(a(V5#yc{Oatql{nO4xn=({%itxY5aRr=&mhvF{v?meec4KVQXIU3|n+
zKPWs6bUYutM}aiBM(dOh8k8dq%JKMT`CHs|iMo8UQTec5Ib`4Whk|G!`sJWsJH)Xt
zTZ)FTXIO$?u<xi>jt)6NRI6LGPW8$OB+U7+lE+Vej(a9BG9x9-0ER<|jyNk&`@a7!
ziOzx0A5+4)E3!?efTo0TJmFgsnq`l>pa2G0#`y5>MP4|@2V0yXny$9TKP82 at Ac@Yr
znmqf!|A174=g|9?C*vcwl<*HgDK%iu!0J987UlKv5iunUfJAJfAr5RWq{d+P2H^Gc
zM`6`xF!Nrbsz+ltY9q`$u;M^$0fbh89WVMeo^A-9ND0e<lC|h^9nkT72+ajz-}ml}
z=yY!1cLwV(*ukl@@B94~(c32U-CU;}s>4lo_*C(NG(G{u-_9Ep&QoUZ8@(2u<7bcX
z`9-hedk7yadKI9?(o at LeZ~q$Piy%p%BkIr;VxW^(L<<1EwF6DCq7B!pBv%4X9AYwE
zF<&aq1~}#Dry+*jn~iyW2c;MM6zi11x0&!QCj222e%OSMnDD1fxQJ!Q=$vlC&zWT2
zG2vq-e7_0bWx`LJ at Lm%hFyVKb at Ol$oX~N$@fMskOG2#6tnR6z7n~7g+!uOkG!dZOc
zeK>tmA7%2>)V^RvR-3z3&z0|S<p@^_lmhiJ<5DhWvpHlGv|C)GeajHcN&92N$}n0H
zi(g9l32r}B_FbpL*A1u|&}y{LGvFBmzG1+Z4ft~d{*%$K*PuHLc$)!lFrYpfV^@|N
zm;u!?ovt$I%dgK!>Tnyjkh$DHg^pzO8A2Z$?M()My#aR{{6+)bV!&kvyv~4E8&EZ1
zo&i5M^qeu^I|e*pz-J8jfB_F1{W7*cW6+mP;UAl!e;>_2_Z*#GHw9+&Txakzbon=o
z at 2eSx0b7c7e(@#Rr-*0C-b%fnxI~9^P??Jxd*Vwe#<){;Z=0*z at r(hdwreNT7noln
z!>QXdb%ZAj`*s;{w*iL?m^2{u%X~XWqF}A4Z8&|~a9~i$w9#kcsU_2fqZj84W6z`C
z^G3g^vX`PsJhwNuw-kM=fHwlt8xWm^DbzPm2Qa`>s4K5zY&PDT{s#3yd|&tp>N)z(
zfLs2PsE9H42yTf1ysOnf$J*xl<_CVT;gu83&W4BI{LPOp{K|d82L8$wZLLu$5^amd
zf}L&kAz!Rp3d+$oU#MMb^GW!UF8SIv-B8uGRtiYoXqJa>-Rsev_0r={6befVZcuqk
zb1E%X3$xyWk1X~)W^XTG_9`2*uPqF}3!BO3_kDx09-NzGH^HBw?l;kfo+e9yg%!X8
zi_OYx5o<ViT~1{I>7K_J>7p?o#f^V9{Im_a2wHM1ET;*u$jXYUrm>>6c}*6Fz#LWk
zn8Px}@~CZ^l})S4W7C%Ag)JpER??o&N^pTMsS;Sp<;7u|YG#`eJoZiE=;bElmtK*v
zWk%j4ZVqzrN$|=|JSTW#;EkDh_26xq%UG$2*A8A1ayAq10q}N%ceiO=E9GVIE>*rh
zS9H((wVW$9=JBlbM8lHL-{JRpy1c>mfD~bD7WlqcB!Ug-kv93Hu<Q>7 at uS^ExE@~!
zZ#ejs>n7GMbw?$cu{&3;ZN0r^^_qqyRh5g{0|DHhnI|fBc{=<7S&BfTgrADQkv-mU
z*duQaORNC8!H6LPbbIA4DFQ1>87c4Zcg7-;C+LktLK{8aNM{dT5}3yy^viy4z<+<X
zNecG(BcUK=4MaKfbV9!&mFaC3xk1+fgSy#`6Szl0wv{&dp<_OSsX$tETRXaui72Of
zJYkQAEb-B+MV5kHSHfbwuLGFgyOwz(Ql~#kGncy}lDFN1-_pDRa)ZYU*ZE}+$iRB9
zZv%E%X3n~(CMl6#@>WpV=+TU@=%e~V-MURxll&11YD#7A`T*>$F^zAubi{%_ZAGua
zXc4S}W(DhH<P3ihB=d&-72VN_js9Q-Bq}1YpzQCKDgsL?mQ?7AIz at t3&D=ayLsV|}
zhs**~`s*__3ry9}C3(Y>+HJyGIk3_jmJuH-jVLT8USlY<Ar at X`%(5XUM>aDygIezN
zN933{&>F<V+8Mhbv<CH{Z*Rzi`6?|)8QUW?OY$X~-8r{P@=AS+G(|!_DH>(J6<RX>
z%dps<+|^No2t`&&Ub3|*B1I`kd#!iGq{!wbDbf)_)CYZ-1^kQ+SocNktJ_(FiQA$@
z5}0geE-Y!@jQHwq!4lO)F#(A%_GIqr>?Ub$L<DjKAA1%S)l2JRot;u7W64iR^O{h5
zEFf_$2i%3TzG3a{4UMj)`VOw4-R%p*k6)Mn{~pME0sl*9`s%&n(T>;kHv$WkWZn%3
zr at Iy9IiqMK@xLyAJszkmX6$y<W4QOz{e2ql!fyb_dm<B2-vN$yN>*p!9PlOFjZcG5
z|I_m(D#^S9SW52;z(v51P_JLW*r$MDygO6 at -vsy^D#;H4erVw50OPnfQ{Nv0I&p7y
zL;iZeCRF0z4cKSk4*?!9 at DaebP)Vl>_;>i3whMi&c(Iv-O8hY33wURd!5;&hhi{(5
zuL1l=)PC at H5zoL+1D4Oy`IUgb!QFlvWbiJ|Zb97z9Pi_-19dlWdT-c@>I6>r{#~f+
zfPeLh1vfFejj`Uzw(H-WD=)&w57&%CcwG}?- at nM_uDN+rcR=jH+aB(fwPi~dRhEfT
z5N~?^U}tSvYs;#NWo2Si#!=)A;LcK8wpogn-F#Egv>I<TDs`_9Y!;y)7_BXfMS?4$
zzAmZT8?ET}`y!!es6(#6#b|{$+P$b}NtuX))!!jS<vY!zL6s=h$dOo7ULEWR8QSLk
z32m-<T0iuRO1K{T<;?~SPDHvdhEb&Urii}>Cvc|}%{H2w8}J$%qsv#L)FTDN06lBV
zywTOcp3nv<QYOaybw0XI)RuL415v3=T%6TYv-r}Z)GVH4Q_bS+<j}olamH^TCNJW}
zDN+AluWj3(*#6A+UE6nWPi`OEu5LfGUEEQ=<B1)+cMR=t at 4S2Gx}9A+!#g+ayttCD
JxnETe{2y#fidg^v

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
new file mode 100644
index 0000000000000..5b75bcd3db9ad
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
@@ -0,0 +1,16 @@
+# To regenerate has-cetstrict.exe
+# $ echo int main() { return 0; } > has-cetstrict.c
+# $ cl has-cetstruct.c /link /cetcompatstrict
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetstrict.exe | FileCheck %s
+
+CHECK:  DebugEntry {
+CHECK:    Characteristics: 0x0
+CHECK:    Type: ExtendedDLLCharacteristics (0x14)
+CHECK:    ExtendedCharacteristics [ (0x2)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE (0x2)
+CHECK:    ]
+CHECK:    RawData (
+CHECK:      0000: 02000000                             |....|
+CHECK:    )
+CHECK:  }
+
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test b/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
new file mode 100644
index 0000000000000..18b3ec70177cb
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
@@ -0,0 +1,16 @@
+# To regenerate has-cetdynamicapisinproc.exe
+# $ echo int main() { return 0; } > has-cetdynamicapisinproc.c
+# $ cl has-cetdynamicapisinproc.c /link /cetdynamicapisinproc
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetdynamicapisinproc.exe | FileCheck %s
+
+CHECK:  DebugEntry {
+CHECK:    Characteristics: 0x0
+CHECK:    Type: ExtendedDLLCharacteristics (0x14)
+CHECK:    ExtendedCharacteristics [ (0x8)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY (0x8)
+CHECK:    ]
+CHECK:    RawData (
+CHECK:      0000: 08000000                             |....|
+CHECK:    )
+CHECK:  }
+
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test b/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
new file mode 100644
index 0000000000000..25cf1db3464f7
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
@@ -0,0 +1,16 @@
+# To regenerate has-cetipvalidationrelaxed.exe
+# $ echo int main() { return 0; } > has-cetipvalidationrelaxed.c
+# $ cl has-cetipvalidationrelaxed.c /link /cetipvalidationrelaxed
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetipvalidationrelaxed.exe | FileCheck %s
+
+CHECK:  DebugEntry {
+CHECK:    Characteristics: 0x0
+CHECK:    Type: ExtendedDLLCharacteristics (0x14)
+CHECK:    ExtendedCharacteristics [ (0x4)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x4)
+CHECK:    ]
+CHECK:    RawData (
+CHECK:      0000: 04000000                             |....|
+CHECK:    )
+CHECK:  }
+
diff --git a/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test b/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
new file mode 100644
index 0000000000000..87208d24f9fee
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
@@ -0,0 +1,16 @@
+# To regenerate has-hotpatchcompatible.exe
+# $ echo int main() { return 0; } > has-hotpatchcompatible.c
+# $ cl has-hotpatchcompatible.c /link /hotpatchcompatible
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-hotpatchcompatible.exe | FileCheck %s
+
+CHECK:  DebugEntry {
+CHECK:    Characteristics: 0x0
+CHECK:    Type: ExtendedDLLCharacteristics (0x14)
+CHECK:    ExtendedCharacteristics [ (0x80)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)
+CHECK:    ]
+CHECK:    RawData (
+CHECK:      0000: 80000000                             |....|
+CHECK:    )
+CHECK:  }
+
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index dce8e60bda1ef..96e0a634648e4 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -412,10 +412,19 @@ const EnumEntry<COFF::DLLCharacteristics> PEDLLCharacteristics[] = {
   LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE),
 };
 
+// clang-format off
 static const EnumEntry<COFF::ExtendedDLLCharacteristics>
     PEExtendedDLLCharacteristics[] = {
-        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT                                ),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE                    ),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY       ),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_1                            ),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_CET_RESERVED_2                            ),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_FORWARD_CFI_COMPAT                        ),
+        LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE                       ),
 };
+// clang-format on
 
 static const EnumEntry<COFF::SectionCharacteristics>
 ImageSectionCharacteristics[] = {

>From 15b1cae4ea7bf7da2376f0436dcdbff273ae3332 Mon Sep 17 00:00:00 2001
From: kkent030315 <hrn832 at gmail.com>
Date: Mon, 28 Jul 2025 08:14:40 -0700
Subject: [PATCH 2/4] fix typo

---
 llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
index 5b75bcd3db9ad..9807bfe5686ee 100644
--- a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
+++ b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
@@ -1,6 +1,6 @@
 # To regenerate has-cetstrict.exe
 # $ echo int main() { return 0; } > has-cetstrict.c
-# $ cl has-cetstruct.c /link /cetcompatstrict
+# $ cl has-cetstrict.c /link /cetcompatstrict
 RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetstrict.exe | FileCheck %s
 
 CHECK:  DebugEntry {

>From da5f522438ddc1b512924f3f246c0de233583146 Mon Sep 17 00:00:00 2001
From: kkent030315 <hrn832 at protonmail.com>
Date: Tue, 29 Jul 2025 14:37:36 +0900
Subject: [PATCH 3/4] squash has-*.exe into the one

---
 .../tools/llvm-readobj/COFF/Inputs/has-cet.exe  | Bin 10240 -> 0 bytes
 .../COFF/Inputs/has-cetdynamicapisinproc.exe    | Bin 10240 -> 0 bytes
 .../COFF/Inputs/has-cetipvalidationrelaxed.exe  | Bin 10240 -> 0 bytes
 .../llvm-readobj/COFF/Inputs/has-cetstrict.exe  | Bin 10240 -> 0 bytes
 .../COFF/Inputs/has-exdllcharacteristics.exe    | Bin 0 -> 5120 bytes
 .../COFF/Inputs/has-hotpatchcompatible.exe      | Bin 10752 -> 0 bytes
 .../test/tools/llvm-readobj/COFF/cetcompat.test |  14 ++++++++------
 .../llvm-readobj/COFF/cetcompatstrict.test      |  14 ++++++++------
 .../llvm-readobj/COFF/cetdynamicapisinproc.test |  14 ++++++++------
 .../COFF/cetipvalidationrelaxed.test            |  14 ++++++++------
 .../llvm-readobj/COFF/hotpatchcompatible.test   |  14 ++++++++------
 11 files changed, 40 insertions(+), 30 deletions(-)
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cet.exe
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetdynamicapisinproc.exe
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetipvalidationrelaxed.exe
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetstrict.exe
 create mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-exdllcharacteristics.exe
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/Inputs/has-hotpatchcompatible.exe

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cet.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cet.exe
deleted file mode 100644
index 08d8a2efc3b2e124e263f9c9d666e210e4ba01bb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10240
zcmeHN4R934mF|@^(h4C~##$rdzX4Vj{t*aPN5GO`1rli-k&=<HU1!<LvKomEtKH4c
zEI$spNM6adJhx|jP8_?A%YjHGj?3kfbG}&M)ZGeURx&szu&WM^oGt&9Jy_gXcCPpf
z_T2YoX2l|#<SJFEim%+%^!NJp>({SecfamlvGy<7ADujC*;vn5>qEKh`~wefN-LUR
zb6G*wjN8}@aIQ1CyJrH64BBHOAUcb&T!VE9Sp<w6lbOvnbfp_vZBbz=Ndrk*9HY^T
zrHt(+s*$lV>d3=bi_sx5kv1?^0qC5^STmKckUVqIG_#$^*v`!Ily(agX`2Gx#X at 9c
z5RKg$2Ph+n=zT%7)u;I2mg!)DVaSnhGLi>fFEGVeCpm}=hOZ2HKstFCOD>3*g2ouZ
zFyvr+X7Z4}s2uf!Y4`-bG2~pCQV=raq+l3=)Ft`Kkh_Trmy(CEm6u9iQD0^cxRXOi
zKA+m!95;3w!{SwiCvIdcR>TJfi`vc(>UzvJ#0N);PCbhidE|(viN{Zi`)Frq&tpw%
zuVcZg!`gA8|3TMv^|*Esv?0-3qE%u~bSD*AtIB7LCki6~?cW4se`_|3LAWOwTW6HD
zqhR(VmFbXN2W8rwr1r1D)E=g6Idw3sJx1Ip7|<+e%c$fc={&okE0 at O)iuVrf%OfLy
z1~Cj6R?pY&2JKFwcK(o2c0*qK at H5g$%u_YcM6$gtE<5j4Tt#<7til}Z!ffi!(Y*vi
z_bfi+c|>uE+MDpnqsP_4C$Y2Q=WUMed8q9fiQSPBz7H08i6 at +$hz}T$51{?Hz!>1P
z0UdRxPM88KOo90%uoVI+p%$&7n~mE&zqA>BJ$hK14qs|7!*^Ug&f`m&as!7m?l%lm
zX4botwTZ?o_Xt<Bb?1u?$o?opwwPoWo3eJU7HD<oNXtgX)pJ^@fhF23V1t_C>g%dq
z8~xOn&V8n%*L%9p#01R-3HPxVY+4_5sYBzlG2uTlC8|1ixI_k-cc)PmS6f^jt|~4L
z=T>;F`IrTpcA8T&9i)0#dmPd`fsYXy^OAyUV?v^soAjFF>IwIV?z|TPm#c?$=N%w)
zXR}cp-k+btXkx{CxnBAR at p>CDhw;-(_sxPEb!QMfEUdhJ<ki=1#&pcQ0ptHUO at LbG
zTFQHc^I-4<(eWgvU+AT>D!fC`D>PkiN_s%w4OU7h2Zy>%31y&Yu2aGyiyFYnVtjLw
z=KW at BnaZ(I&zJaW;dgLU!ps~o&9rf~a95g%h7p`8nhqDhD+iYjVej2V3lcs(p*!PP
zt6cr3b5QEmG50*t?ApN9U+c~}RD-crbCp<$2G=H@!muETxg93YR5YlEs3Jmz`B*Yo
z at uKeh2y?5a;(FGO=h36bd;h)WK6%X8SIQiTt2w0=P{UPj9~XGluu|+!PH at Kyg}de;
zX#DqLb943E#?M-N4x1tGkkEr#o7Ru{)?S7ix|6Y-#mVtv?Rm41?;g?if*k*_-$wI}
z5M{=h&YA|aWa^1nJGR%>Z)<{S$^4#^F&8|v1hv`|1`iP{QMjDSaZ_didT_Tn!oo6I
z4)J0Aw~p@%0t7IDGXPX1L~$12knpw$BMk#6c)(VseH%s at v7@9x9UNGTyHndTVc&-c
zircuq at H7Z)@1GN7zuL8o?nW{1Kmi)HEvqewH8<RP!12<Z#XNqXgl8Xhyi}XZ6Vp2z
z64PJhy~VCIRY#Q)^^WNcRfExK>Pma|U_(_hibZ>1{`gz&W4z~>>81DsF7`e0*EIMw
z7no(Zxn#)n(W57{k0`Dk!;}|vpN!@4hn+Jp6k|77GMzQq;IKzeC^_B7V$(GWVhAV;
z0qFr_zD#{QUh^hS03E9=mZz;m5FK|Q9>BZ9U~9L6L49#Y-RoREVD at 6g*Ow85`Pt*w
zCeI$%jfgsA#L|-WTs=*Z6uW81Y*_a4;=Z at apS~4T)lh6JPpmECsd at xI+NgW!oKWkF
zcyIlL?p%wKn&gX!e%hoHYfH at X<5aFMLGuYdI3{v8Xm|YtcMtM?Fa!yj=Aq!e)ElfG
z#Dt$Ip-x&{jr{B=ie+RJV$^*@M+V>$hV?hVJO*Oe`4~2$N*201a-`ojbmRaCo)B!{
z4^1MSFCU;!9=E%+_e~<pT+Hs|GGP=wI)0EO`HvAj2;U}535NibOkdg8^Tcy5&+nk9
z>vWO=<OwT+J!>xO9QE*PH}6A$WLgrvV4Yz6wF9GcHe3aHD(X%N!d(4(4Prd;!{ew#
z%tVyXo!L}_rLuynCO?rFqw3E`2-uj=sET5Q;bjma#o!dy09Sj4sS;77k at xmcPh^Y1
ztQ~lYIyS;+&m&~&R>K0bMQ@#J1A1$8;vfY!lgD-E-$AE(9H9si7z*ofbR;mDAh_;q
zqYlxNM|U=X#C at SK{yUpuPw;GQKLR9IcezGs at LdPVXPC!RSD&S$!#MZJ<Vw<jVc)*b
z+{N}-1^4snu4<dHYv=7ZcWtw+BsMGlD_b{gnz5x2)HzVh at x%14qu4}i0!*xlUt{B;
zO!ozf%pzB3bM<^zm0#`{i at D<8Ey;=9pf-tJ7ewKS*@~EW at U08M_v7bmTbx}NnCEGm
zQb?<?!nl)&-XX1y4!+(Ju6pg-a+B5$0Wa$#as64Glsr*00T`c&<DLeVt2>i4#`ut(
zSG^TIWhkcI=^e_jFLC{0v+cntZM%O at +alf@bd}JBNTg8~xs&b at M_<>+Aw>#yeG&*s
zYYL94nz3`be)|n66f1Z=!F5NUdOmi4>BI`%!BfH*W}9`wzLfBvAhB}wnq;nxDf4SK
z<YqBtPECa1YeN6|i+cQ=xYfmR at 1lQb<JdbW7uTu6&#q;xHa={t>lJo^9M1#q2 at v(}
zky`cRdi7|%dLsU5-VRS~qBf6gR6nUx4?Fh1n=cojT^8E4LL3vYqi_HNW(j`5(O0J)
z8*rgerR^{p)u|^DsOG^+9v}NGC0q}R%t#5dKq0u(k&y$^vHyc&`9=tRloHMrPgb1*
znG(j4V|9?wwT`$O3Sf|Jln=fm@`6#`+w2lib)6%Akrd(zBD!*`a~(bZg`z6FfY!el
zix1mV!jD1HcE^}O)t(s?m5uRXF(ve%h{cYIIH-M)8in1PLD$V2fmNTv%=@TRH4^)}
z(Zk#Ww;za=LTEME at xpH+_dxJuN>~PxtVNSsK#u1 at XbuR+{`Y6e)45~+1m<6GfK%((
z|IXF&9hda2s8tWw;<h(<s;E at Q6FB~MF78qkQM*QNhUfU%qkLZB8&{L^!q))Rwk-ub
z{`SA3_%A4uLZ|FB6r!WCtL1#aU-Y30R<z)HlH_X8g~LOktJ%RKFTG$WrtXFab|w`k
zlV18PoTZoUGV;GM^4&)Mp^=|9a at tdRX(NJ?Ub at oA>7AmN-elw at Mn28RFB+1o4SLL=
zj~V$vBmbq5KV#$@jl99gXBhI281yGb{+yB1U0p9NK|X1)L0o!&>0_7In5B&R(*Hnf
z&w4Z3e8|<KT+LVWwd=5<=$a at Z_Muiqjm<sMwG;~^>G;8*ItV`ImpzG7m(u=QOnk#a
z&B7e3ey)WR7XHS<Ll!<~;ZLo0omRQc!aFQnVxid^W7o{LC=0bRvs`JFXWo{UG;t at E
zP-c2yN;#U=X9=CL>KiToMhp8beuIT8EnI5hEf!v9p=M#Og`Zh^CM<l<!UGoWw(ubf
zk67)}w(qveGp6wCW|==brE&N5W;r<p(|R7X`029!s>^@2O7lHMCjXp;Y5pI=&I+ at g
zxX45b)S1ack?>EEtbV7e-Z{s#W4DD<>y60#Ip&{`;WF)++QU<pea~3fZ{dK2Neii6
z`nOX$O4j3RapAj$YA)5$&xuo0x*ei0;w)n?qTP#DyQ#8QD&rc;vOBXoOVG9wbOVrX
z-d7`*K8Ein_-fEW6TWwG#;rkv at 8WwH=jN06&f(*DqdtufYmDv2WAhLmxJ#g8T~l4t
zLw~jT)ss!G`p4gV<-rU8>^Yea{;Jzs*2_{<Zjoc5_LjP^Kh`0I6uHG8Zk1a65`IaQ
z{4Lv-RJN>>f|5_3<l(o at jcERVnqpd(Hrya`7iU%2a%?PTB_8LFT;^!aXO2ocbF3?f
zjKOB|`P!>sD}I9|y9pn{_f$sN($i?mx3PR!V6*2ido(AKy&<b2pLEZ~@2b#6eOAFo
zui$$Rx(IDqHkQ>0EX-krmD5<^y4*&aQ((@@{mf|_V7XL>qh(rUE}OPEH)1Qcv*Ok~
zR@|J+iYo<HJhLbQwUc9}K91i+95XFPeCZS!TWZBk;$|TRkAXKogXaQo6ui+4ULAPb
z<}g;0!D|IC2|0TP?;-H|!Mi7;-yDj|;9V(wb*`A6`Exl}?9A(3<&`6nKhPHNdpG$)
ztwAZu*tOvMW6>x!pjX=Fmm*3a9Ks)MzJTlXhjGKlUpbbu4yi+y6vpmawQl{ln%AtY
zUsPGKpfwmo3}9Ya+T?8u1QjU?jS~J;0FL7IMIv5hdqiUS&<#cm5un4TY?7j|qJ)w1
zwm^F<DtSY`Xf(Xl>x;H;!6lh_1EGKt at C5@8Ojb#uErDn_L{S5)oO#=!-;zqV&J<Z<
z>VQEV?CY0kuY_nTZ3{rhJO)!iG at G`zbs!Q^O!ayrUN2eVr>pg333gori_Nx9P-g2I
z=8a120hvawY>G<0RxkdR;tP at +ygs-tpm<RXZuI##V~3^3Y>FC^66qyxg`}-s!w8$%
zt3TXf+EjU&Kf)nHsp8uhguT at n{aZC{v5?=G(HqcP6tiGh!P*%)BM?H7`67Yx4!L}5
zAXE;C@@Ooi1UjVh;G*(H<>sVLk)T=2te&btR$2q$Oo1uw&5>pbOx3VS@<lGIw+ri(
z;3{84!TMNbt->PWHH5>PW0BR?DC<K?bUS0SsOGLfREhb5>q8h=D`OXg^&xZ7x7MeZ
z`D$a4GWL?tBq>*{_GEoSQdXH;q%j)yOR~)VU1(1GFU?{vWv`K~LO8lw@{z5LQAwsn
z+L?1_Op0!Al%j26too22qkx~W0c$_6eN8K?&)_y2D+x?CI~$fXZO8iRXvP%P${2t|
z6ni>*&EzI&YQPHQSbXdsVNsp5G1lHLMbno2gfy=Wx5k1JH)6oujD53y-M8u++>6Z}
zTur;%AAujgO8@^okpAWMj~(f2_ld{a-Y{PTHYiEI4Tz?@6~#F#8AalMmHvD at AQmyU
z9N%%=`|19E2H$T$<DJOxmSpdNCY)o at E+GA1j?>^1{sJG#ya?3rQCq^7 at ou=Sl(Am{
zEAV!x1Wg#gNAf}7Pc8Zxpc{8(YFi0Bg3kka!U>B{I2&&plDQ6emqp(L4C5o65#WvZ
z^WG-3y$2}cBmOSn2Y9n6;7<To;>RfBHv?b7*A4yv at P90tu;ObbpYRpj?RP>3Z*kU#
z?-|f|j~nlWe$e!8p!>cHG~q>j8$f^gk_|U8x{a~U%WXG*cdhsWKK|gzID|JeGWNYM
z*xc1Cwsi!>EqLwWURhJNXhB7pD24FS3xwKh%GNipE?-(E$_kDmUl4benzHSZT()9)
z;k0U>EK405gWE+Y2+1{Nv1sUa*}qBZ at X6&J0e>_shuf5LT#Rn_$sG%}EGiRmum;*B
zS-C5-H>eWDY9$(zl{KNZu%&J8AJFEWYqUd4S;F-=plr9w;6$bG#L$b>+87ON!3o?h
z$&;0t)%AGB#_00ZAZ?L?VvzEhGM~IAv?aV*ik6A7K&_vy6E$URzMw3Xi3=z7R4=@8
zFVzb#v#EOF<lxY}dSTjcC|o{?UtAK+|Le1J&r^GL?|EiV|DNQY(LLIpi9KT9{Jy99
e`uhg at JbUliyJ7F9y^+1!_I|OFuee`U5Bx9Hi8NFI

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetdynamicapisinproc.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetdynamicapisinproc.exe
deleted file mode 100644
index a4e0fa8ab553993bb92c7839668cd92761cb522a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10240
zcmeHN4{%gPn(s;Sk_jP9#EgXX-vcHF{{#Y)W5FaafrM?`uoX#A>x>S=<R#29nVFsU
zCV<P{CQhQpcXQ&o>uMdh2Vra1wJb00d27I}y9q%i5!?%C)xoi+ at lWZ)aA$O{09o|i
z?|bh}7^0q4TeVf|l})|=ef{;<Uw{2|_t)JM*8e5 at qmu_M8|xWseIS?J-}&H{w4zBi
zpA}@yx`oXG=Ngl{XEw0NpglGMqO%ywHCUIBMZm~0nb~Ypce;_)78RzFG?1jlF&aHz
z%Ge&F8W|g>jy#OD7#$K5X%k}=fUX6MHB<Qul4m}eX0{U<+m%_K)^3p^ZCAj%Scr at a
zqOn`!0A(Z*y)TNk`V=4BG7~H?3_0>mM)IKRMWz_*A_tMd at RcDCNGA_t$wd)U&=?~a
zh8%3qOdiq~m7{(z4WGa_hMX%?3POgQ6bwU<x+Gs2ayL-nQt~ji`cmm@>Z|MlcXIgX
zXH#37<N6+BSiGw6<n at fjiulk_QQNs8U60v@`Os+5>8G(Gj~?|j@%R~WKkW?dS*&U8
zRV-L_L_0zBKj^xyp3p9WHYEB=v`XxWo}?mcRr!qZL}3J={hNU7Z_S1=2=^vq8;r7c
z49wo7G82*;piH}+)c!S?+Jls>qz*>3M~E8*1DXYG1(jSRoo6?6<?{F;@$TXMd1T}-
zAcg_M>V?{!pxsH-E*v(>Zpdrze at Z%udAbIgNVc!VW#@g0tLRRMRhWZaoK4+1dX{16
zo~36!4=FBDdmTP`_=H;cICfV2W1FLA0cv|kW4EP*AA&_*;t6LL;sXZc186 at jFa|hd
zP)FVAlcvBbQ(z$pY=b~bs6}h&W)pVLuWd$O4<FHH!k5~M at EuoA@c443T*u*zdkw>s
z+4b&ZZK5&DJ<8Q=-TAx&vOmd?EhgEermUT-1zH_C(z20p^}JSUV2L&d*r2Ak`l at Qz
z#y&BobHC~6jh>#fF+sCI!hQTXo7N9q>hQ!|O!!YsiK?!hE|Edz?HN?X)fShBtBQ-m
zxfNb(KIXutUFOux1gRd;9)<KS;3I^_yriJon2;#uCcWmkdeS|rJMTuo<?0dLc^e4b
z*=!U?4&>)Bnpp8}u9rSUyuJp^Vf at VU{d3?(-5CTA3oCCwdG(bWF&(q7!}xzm6QI_)
zmh(R0V=#Dv=y(#-FZ5Aa72YD~6Pm6yB|V_;1S=(!gG1e>gfdVx*C}C%MGazQF}^iP
z^L`_>Oy$_9=SzIG at OwBaVP=k)X4<$~xI4{6!wAk4O@|BMl|##ivG?wv1qq*?)SYpx
zRj&Tic_?-3n0uaRc5UM7Z*}K9s=-*Rxk{`=gKG;<VOWsF+>VfEDjL+oR1u-VLM$1q
zcu{wLfVtIEaXoA2v*^*|z4vZ&pFCphD`lR<)tu4_sNpKNPYAqfL at 9PBC%NOf!rk)_
zH2!<3xw!^x6X&cwhs}_8Sm;HqO&h>`YcIkLJ;_+k(&R+3_N-aRcaLiOKu)|rV550Q
zh%)0$S4{(2GWBGv9ouW$cQwJZWMS{Am<t|ShFa}0gNKNfC|pV9xGA#;J-FK(VPOR=
zhxmy8d&dt20Rou7SpX^$qBsX|Sa?%}k%j>jJYXx+z6+y_*iq7;4h^oy-KlMbu>XAo
z#qHc*cm at Qv_b&;uU+!K(ccYkhumFwPR at 9cnnj3CD=y>7wVje$O!n2P#UZ~CGiJ4su
ziJ33+zGBz9s$)utdfUu~s-fr%b+tWvsG%wu#iBj9aN-U3ao&5}^iupj7yAMEYX<z9
z3(PXyTrzC>=;4#v2Nc(iW6BG9PQ~*0gU(qPim at 9knXZ~_aM;5qm7JdAv6&hLF$9#w
zfb at VdU#31DuX!COfR0rb%hOgPh)y^V58&Mqu(g}PpuV`H?p3ZHG<&h)>x&4&{M?DF
zljlz8MnoMpVrj`nuAZStirutxE-ZU-Y5yDLPu>iwYB;uyC)OA7R6T+pZPa~qPN?-o
zysv&zcdkcCP4Xo~KWWm5^(AKcQ7YG$p!p;p8W*`6w7Y(iyNCFG7=i>%3s7)h>J3&8
zVZzUrP$w;}Mt*J##WFGqG3uV-ql0h>!}=R!9s at D#d<+{=B at 5jhJvv|;K6(%YPY5>f
zho_Lvm-o;okK0|^yC#ukE at pRfg)oL59Y0Ev{D+7hgl`h2gu?(zrmyT9dEyzD=MPZS
zeI`i(@}w2Po;H_tj(X&k8}}nXGA)T-uud at k+QBh88?Jyn6?LZsVXpqY1~H!a at d;ES
zW+F=H&TOi|Qdz}Slb=Y8Q}t&f1Z+%bR7Eku at G=OIVsHv;fUCVDREa3k$oqP!C$hz0
z)($>F9UEb^_aQQMn_+?3qOZ=i3B5HsagYL=$>X~7 at 1RpXfl!19425+#Iue*n5L|b*
zQHSWsqdS{G;=WKA|AS4jCwR7Y00EM#yIo^6`0hjGGtA at ZE6>r<VVwJ9awTcNuy5UO
z?qYkag8O-OceTyfwF?fIySCX at 5}OnMjjabZ&FU-!bsiLR{5ZYqC^pfW026ECx7c_n
z(|v&=v&hxCT>ZGa$}e|}$6WF6m*m8*Q=7!@3!?DYTt!UW|Hg&jyYch3PG|Q8=6TYl
z6w)fJFzzIxcUY^VgRifIt6sad(xkP+z{~nbTzd{DB~R2$0w!kTxTk^T>dqvMF+ObP
zRc}O38;WUndWSRYOI&-zY<p;0+n)cUZ4vJax=QFmB+ at 90+)4MSqrdyZkRk=UKMI7T
zbp^*%&Dc5JzyFpLiWR(?;JTw<{Wx}S>EtTi!BfIGW}9`vzLfBvAhB}wnq;nxDGO^h
z<z_KuUQLAH8^XZH7xnmgahr?d-bMe=#<6cmF0NCBUtG;tZG6O5*C*@-Igtn6V<76?
zqqXXX_3E*D^<?~$yq%ufL~S0~sD4zZ9&sFaJ6|q9yDYS8g*YZ)XW<|Q%o6;9qrXl)
zKIlTBO515Ps#8xPP%VI!JU;$uO1KsjnUNCafI at JmBO?c-<G_2x^7Rn<ASIkHo~k+x
zG9^qP$Lb)Vs~vGS6u=<c7$15|<OO5Auh}J{>KaG<A}PcbM0Dj==Q?`-3q at 6U4y}JR
z9v`u%gr9<>?T#^nsy#a-Dx2dYVoK;m5sMuaaZvjqH3qx4g05RI3adVWnfFksYBcsu
zqlftiZ#@_*h0t2C<AvWw?t$Q`l&}IMS&Jq&ft<*L&^!>11Mkj}XL84ZNzA|C0H at Y*
z;H at j=+b-!_RjVGU#cglsbWy2}Cvg1DT->E7qIQqo2+#3z$M}N6*RCYxg|7grZJh-?
z{^q};_%A4uLZ|FB6r!W?E9HE^U-Y92R<z)HlH_X8g~LOktJ$F<FTG$WrtX0Vb|w|4
zl3w~WoTZoUHuAqQ@;yfWzLB3Xa at tdRX(NJ?Ub@=I>7AmN-eBY<Mn1#HFB+0-4SL+5
zj~n?RBmcFLKV{^bjl99gXBqMj8T3a+{)~~+U0p9NK|W=$L0o!&>EoBzn5B&R(*Hnf
z&qg!aywBBRT+LVWwQI1U=$a at Z_Muiqjm<sUy&MZ9>G;u*Is`uEmpzVCm(qcoOnl8k
z&B7e3e!hj17XHq{!xlbc;m at shT~@ix!rLrdW}(>|V^=M-C=0bRvs`JFXWx>RG;tS}
zP-ePsS~;55X9=CP>KiToW(x-_euIUpEnIHlO%`5bp=M#Og`Zk_CM|r&!h;s>vG4&4
zk6P{0w(qgZv!?Ou=9oV_rE$--W;r<x(|Yc=`029!ipzhtO7lHMCjY#JY5tdCSB2S5
zTw)>x>dfS!Ncg8nR=?9#@0w at YvB$#c^+sg=4D(OOaGCZ@@8Jo{zNai4uyD}Aq=nQj
z{o5%WB^&XzxbR&?HJ9q>=fvqL-40P0ah9>?(e8Px-E`S6D&rc;vb(aoO3=0vbOVrX
z-d7@)K7#LO_-fEW6TY``#;rqx at 8f$A=jP-1&g0{FqdtibYmDu|WAiW`xXYkpLsMPT
z1An#k<x@?r`bS at X>HZ7<>^VhtuDP{kqbx<`7C9DbZ>bCWV;xdRkz4%XR;k4=;g?j&
z-?DvKWy=OBDEZ_m9)9cGjONTv*_R|*mNwiVa+hXR*m7(vXEh$@j$Gzw&1a5EJ9BI(
zh>XK#^7;BJU at LxuCA$e9!1qK(+0xT!%eS$7SYWf~Fncs7lD#RbBA;~6$M34pMSWJm
zM=#-f2f7GtSvHo{2rSHDg_Sc{;fCBsn^R!U$^*=48)UguhofaiWiFesG&f=^wzJ~a
zJXYMC%Ze)nRy?~XLPJe&Gr|)$5XVd_5nsAQ#+F-glek%k!Q<d9%;34e8v}1FgI5RM
z_IZqzWbj(SOG3_`!FvF_0r2k1=r at PrGI(E<zCKq>&-}TZD|Y7fuJOtd$scG7_`O?v
zq1K=jW$bG3{jq2i8_+9l_e&8a5DwvwHlM at w`op;4<F6bmS%=giOA2Fmtl6;fJI(9X
z*DtB8SkxK}A_g$8EN$_&1%iqcg+>W~Dga0E`XUjpvLhm~eCP%vh6vE%Q?^J^SW&`A
zd0U`87L~jqUo;xt=JiF}J8?;7-asgz1bo53eN$CZs51}^hbU at bl{0TU^jlKt)|n#9
zOdT+&gMIT7?UfL1rR at ReSioQ^h-TB)whlxhim6_2#OozX{B*URD#5O+V6oZO3Ce6;
z!@N<cJs{J_l`T=p*XqUJQhY&jgVzVw1r#re!OcGZR*GWQm`zbbQX;+Nt&p_MYZzfO
zd-aDqOq(h%^G7&jC{=u$gRr+cqkpTWEf(?{GkP6*i((cGD_A=tX9PkhGG8Q6-XWK7
z3xvucQ67zjlt7169$Zqsq}-g;X%aMRnbp%Z$VzJ<oGCD^y*biMf$18yNWREr^>$%{
z5?tepC|DnBtW{V<yoPXiYb>(X8fAS*iSA%*4%OTdh$=B(aAODqYh~<$urXvV`qujN
zGGA*fQpR2onk3~5t36rYl9V;(7HN!z{gN!Re;1n5{!6pi3)$;rs}PQ^m3(AtV^or9
zk#^<W9+RRw8l`Ak7^^<y$0*=uY{1&jYG2pN>NB{_#!3Q{&CP}-O*^o at I+`&>wK4`E
z5yhU&UN^N#ni{YIITj!LM_5!RZH~3KOVP9?KO at cS!>zHP#ElqmCu85P-|(IK2KQ2P
z2UpYX_DA5yuhaj352Sy2{bNV^%01%ow%5!TfelL1Zv&#~Zk2IcGm6CjI{o>0KrCWx
zCB755_tX9TEWY1?#ygSWEy>;iO*qe at T|oN39B05M{1rZuc^;_Yqqc-E;@xmdDPz9@
zR^aVW37Rl~kK}{EpIh`(KsWBn)V30M6rTt3gp(GZa4z09By$b$4vW4E7{*6BBf#tN
z=e;dxdlyi~NBrHu_wZ&>z at G%J#*b0NZw9`AuLt}=;Qv at OVZ}F0KH*Ea+wX!5-r}qu
z-&3IR9yi_#1EA^MK=*wYXu^y5Hi7=?B^z#HbQ at z`m)mas?ppCVeEh+aaR_f}Wb6l@
zv$?BRZSM$*op|lxURhJNWKl(#D24FS3xwKh$~HEyEni+H$_kDmUl4benz9{|T()Xu
z;f!jZEK41mgF8eh2+1{Nv1sU4*}p~V at X6&J0e>_shuf5LT#Rn@$sLP2mz0S(SOaa6
ztlW{=8&rv6wGxfV%DPZn*wQxtOSHM?8|~0imT)}|C_Ah&I8o_)G4vv}Hbw)TIDy+G
zd8#tAx*pHi7+t;^q)sU)1}U#8^U3Q%o#Cxgv`mZzYW;Mbs3~jn1!bvBTs)<xdhr+c
zQoZ;xo2nO24Gzt#7pMJ(!sV0r`6bc(zdpP6KCySt-lz5s>`m?++pF!J+$;7k?0=$v
epntI6v+u5boAzzl7umOc-{&j&n)_At!2bebax!WF

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetipvalidationrelaxed.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetipvalidationrelaxed.exe
deleted file mode 100644
index f85bd9bb1839e090515d2c763279ec3328695fff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10240
zcmeHN4{%e*nP1s{wu~`yh!srpPk<bgKL&$*6k;1>u<4STj)P5-xi}F*el{wyr0P8x
zNa at v%>?F=RUC5<PlR2&jrqiaGOwQ@$8bdmFGA76lq-RKG4vt>p{F&qta~CJQ0YXW1
zzi;1 at 5l+(1bfz;+C(FG3ef#aV-+ue;?zg)#>;Ibl(aDXLjrEMRK9I|v>wIuaTG1q%
z&kC|;-NI&pbB)2>GaFbWXt#xc=q$!^1?v*BFc>)oGn;MdPB${!qQX#;29h*6qS5oE
zjO`(+k+E^=$jw-b=#ZF5n;5GAbS+ at 4naW>~-1E^ivz>#nU76)+?G~x>b``vfg~-St
z8oN0TP$D_d`=UszSM|azGr<Bw$dPX{k{ewwGQ?OHIfx8~uY^1xo!pEi7KIH#F-9<i
z9Bj`_ZqgS~B0eyMPv9FN=ggFXkdTuDAqY~J<SQX}0~IbMH)E?WmA<0B%pPzhhL3(W
zwYAx<?-9e|RfQ+7XDnL8hlYyU&JCqfQOhtN8ZA2gG*;x%qwXdiJLA|-J41gKYg&I5
z3sxJ^PZ0f2sZ>fkp<e_oB>GD9O6-ZAgsSLO`Hb;+VHlwQhlK3!jfPPO_a>qnL|H!u
zW^Y2B3CRsmrr%C#{}xRBLCRKA2P66;#EpOf&62)?N=}l_vkG0gJa))&_wfEaGV*5-
z!+>G+Lj6wAt^{fq4vVr2^7{Lql1^ftu7M_!?Q3ybd7tVmx)Wj*#$Xp`Q+KwWWf;19
z=~?$fs?(vr4xc=HLMwb6J1h3F#n!U`wY{U!+mh1v!6Gm5xV;PU0R!>^^dA?90nQjq
zq3-laLtvF5u#g0{K_DsBqBV5039I{;7SY$kNA#KSrT!v($F&nYww$TgaX8~%VVF9*
z-j%40H)gp;xt5)>KW~HVk1}M7Np`6rYvo#jUWbnKY-C(Jua^oe(dPggv?SMF)vWs1
zCt^DH8;;)S?l~KkbPFV0$Dgz4{m`WiPt3)H|HzQ2>e}gaFvz?;gQ~dJ;&gLOb#gej
z!eh?I9N4tWn3|a&wIlkYklqD+giy>&5~{_7L at +n$HOIA+uF;hJZUkJe9ZA`51Cg>f
zi{i+E{2WFT>$sbzN*^L#Ujybac4qnhIdEgj9smyuD{nt}^_3ej9kZ{)_<v3lpw&5-
z^FHZgFnFBkSOU{8^-)=q-XiFenyxh at -JtITD=C$OL)|8&GEg+vNok2m4Ps?6zBNJf
zej~L^=2)obOMI>HJ2)y~W{xAxv~aC(cbbWYVVo&?3NC<G4lN(X-n)YqBz$@@WshO4
za_wKvL#Zo;x##g_=O(WGI%S_nH5h9(*N7EwaBksA3=5K&+Y$0iMT2&jD#BD)h$Vv+
z??~A{z}%*iu~gR1XVIhEbMM{8K6ym!D|MdCwVculsNov7PDs3JL at jnDCb{jo!rk)_
zH2!y~vAG5;6X(o5hs}_8Sn5TsMIXR?>o39$J&9<}(!@lu{;W~Rca7@%Ku)|rV4-<O
zh%(|#S4{(2GVNrv9ouW$w{^*|WMS{As1qJqhFbkG!9&D~7p|mo%#c}x9$am<khFr9
zLu at 4VTif>~2?ChFSpX^$qBsX|SbEa|BZUDJJYXx+zYU{A>?mo_h6dN;?$owI+W$U+
z;&$#UJOcvT`{xANFL$q?yHV6LSb#=tD{4!k%?&pnw7qb9F^?TA;n~M*FVyDp_{^?`
z_{^7iU$Jvt)iJe1yKQDe)lg)Hw%VFK)KHa(V9_32IPr$-IPX1fcqw+DlYNi;H3NRl
z1!f61mkb*|dibRN0mZfBnDT<2Q_(#BpnVpGB6fo*(^ZoV4tw~dn$vSUI#Z`0hJdmd
zkRCAR%h1PTHLv3YNMV&l^YqmSq7yd619*1?Z2e|1s4s4-dzEVkjb6<7`XYibKX>Bl
z#JLkG5mARlEG^l{wKEh+v72_zg=H@;?SG^E$(un{4M(@}`1&HAtVi&pjk=G{39Y_}
z_tj6P?CVj|5_}2KPa1T5eTh+il*;ubXg<k@#vR-R+EqWvT|<073_*gX1t_>K^#-el
zFyUuQsFN0FBR at BWVi_5Q7<JF^(LuO`Vf_s<w?GU#AHzme$wGHWj}BOdj~)cU<B|pZ
z;VGo^<vsMtV^*jBu0doOi`kV}A&sF&+Yb^X{~@9W;hTg>=`etj;VbJ#9)HH^{v8x`
zpGi=FJZVO-r;TNuqaAtW#{CG8Oi!Q}tP_mCc5sZ&hASXX#gtu!FxUQ3hZv9l at B}Im
zGZ7_H_H3%bQdz|{gCCENQ}t&f1Z<4!R7EjDco~F)VsH{`fNQ-YREa3k$oqP!C$dE_
zYX_g8jzt*leTYomCM+;o^wl{xp|?gm4pLw<c|2wR2k6vJAQT}2Lt!0`jyNV01W(!9
zs6+JRPT8A4;=WKA`<+F##(B1W00EL~yPab+`0hjGGtA at ZE6>r<A<lg=xso(s*thOC
zcCj^D!F{~CyV at dl?Sccwu5GrIMCZhQW$A%UvpNewod?BiKTPjBicPd8z{HyPH8vi~
zbYGyz?BLp5u6^8H<x at Jwqt4iOOLC&uX-$sq3l8bAxvC?6{~H$q at 5atsI_=#TnEOeK
zT1cy~LflClo?*R?4!*t;u6eBbN`ux9125|%e(gD&lssND37D9T<DLeVo3bZpjIm)W
zuX-bLS}3O7=^4(jFMjP2qwS$-ZF_!C+alf<aF)=8$U&nlawS}&w*Kx9gQ^_p{>UGc
z*A*Pobg^@~fBOwN7%g};&QrF2?c?aZrIV{tHlCEmG25&Q_9dnN28orMs!8Npn7XiL
zQ*IVh=hcJ>z9tQPd@&U}@7U(#xOdS%w6X0QQi|&|>1S6nRvR0!)b&ZbK~Cg>_ZWzJ
z*J!QwVZC;&UOO54ByXp?HeQ=YHfkT$X-8}a-p*GF&@Kz at S|N at J*jYG;0kb&2VC%2b
zjt at FfsM2?eMs?aL1gZtFlE=nBO-k2-A~TZG98d`EbY$d!v>kY_Sh*fTA0(yo#Zy(M
zK_;aM<X9afbhRz!f&v(18RJ85Ie5Vs?`w8CP<4$hc99g~3gU3)R_EG!{|7})dJe6B
zF&-PSCZ!*Pr0tF|gQ`6{<WM)qMjT107ey>~RK!5-htwGC-U_;I!6>Zy1ZLhtrK-{B
z*F_KW58iq(S_+}HV8;r-iQEmrQ%PwBNU|19ZUQ-x2cdZ&YzN+*qs-*C1CyA4$p%iX
z?Z8`CDz{zIx2je<Qj6Q((CMPm6rRAbH*;~9qKMi(dLul?&mH3n3SYaDlo!4NsJ3(#
z at YtLGj^e+eNDA$WT_{9H<5w#AfWPWT6|88%^(4WyfD?y at N>{T(MIL&=P)ywe5$sGV
zPNh`o({NU*bhpU=PUL$;{=Uf1h at AFRs<aV7DOI{!<n&HSmEIuo5|Pgk`9&eQR?y>u
zJ}&Y at BLAhxpAz|IkvE8ZmXLo)&>xBX8IjXnJylwQe9B-!TzY?{#xJiiN*VQ~|Ap4>
zjYhP2pKHgsmapaO*I+}@HPM0ChguCa7T0L^ax9R9?FU2J5crs1_Bc*mN(XK- at HG>4
z6LZY^`6f=9_!|=soA`{0KQ-HRndLSUZ!>Y3iAHaXUA54pOw`Maa-~_GeM?%>z+G5E
znd!c1<w#neDRkDXZ#4OvO&l=!4JNKOak+^%nRtzfx{0|aeroEOH1Qo151P2g#0N|~
zYPL(;zQ-)jn#Ql2WBlxt#y!^><-{~h>$%_Lr_0tWF8|po&36|W{PQNJ`F{wzDvWlH
zB?eNU&P;BKgnx=;_B&nmu6c$XdrX{OFCz12n14cs)39fH4^No(J!Rs6iGwC4Or&<{
z-%jZ$*@&;jiSH_^xl~6#Cr(f4c8J1=vy45DcF&vbrpta&8P`yj-Id){g0_{Q8-R54
zz7nzY5qv+vSA!0k at V$*QZXFtY7vF<8Hy_7$9v{aW^+|kKV{8u|n}_khT?QQ+n(CS!
z_?xXSpK5Z}Kl=Jh_h0x|_bED{*4)~%QIR7`ixLgCx73Av(GEGNDlNWHtK8y~@k^@g
zYuUc6vSouDkiE(j55IM8MsqP%!rzx at Sz2&|$X%LMVac(uoYi=o+j5z$HJ{lkt<1Ke
zAUqD6$>-~@fUWoqmh2{c0N)cCWm8Y1CEvpGVS&Y(!>o~<aQ3FGihR;NAHS<Y7xh^M
zAH9U{9q1yoWLa2NBd{=s6;{q*g&T4kEq007D-STcWsv1k9gdb6mAP!j(%i76*vg7q
z^H_0nE-S8-Sn=$lFpV?4%?MB2KpZ2jM11LTFt*%`o5amR3?2t>VFu3$-WYge8N531
zw$Ed%B!kxqUIKE~4Bi9a4S;u7M!z`}m%;m@^wqgyc;?ULT(L5bXN^Y*%RYab-{;xl
z4Ymg42xC`+?~6tv*nl2+yH5_Q{!kEqwD}ya#}~p4AAjXo$vWf?MOGQRW6g$*-)dgB
zzJ5t%#iG_g05O1h6nTrM%^y(Z2sFz0Qvo=t#~TiN)E!}&<wG|ZQAB_auewE!z={$^
z%G><y(TMB`dLxn0Hjg*b-ib>x^Z0{))$a}X at 0+TUgPs0JC`eHQtDJe-q2H8Bx6Tw<
zX6S%H9qj9uXpf9&D{uEh#{vdZK{Ok-wsjy9QJnF3!X6J<;-jneR0(!n1&fWgc2Gv^
z8s>?}?S6$uu5O9Q-c}F(mf{VN8$4dP&aZk<3~cuLwql2+$83lSNtyJLw}SFEk1)bw
z^y&+B7&cX2=8sTNC{?|i1F*L`qkpreEgJNR8NCj at MKBA(3f9iZ8U7%O%p3NXcPQoC
z{K0Zalt-dL)!!kP2bPpCDK{o{ngq>SX7zLpirVTAWeQAdZ;UikV7i7avNwELy;a(v
z2G)4PD%Qsua}^d5uOSrL8V#>CM_C_KBRd$ILp68!BWlze*cimXS{b__Z44TVzO_ER
z%-4!V%Ge81ldOJWwL9w at vbx6DB8`!dPgWH6pHg$$e`ywbA$y%-7DAD=vX^XajK~Tt
z(ypA_qjF?Nqa0}qVbuqH7zO-{4OshG?dw`ueFnE#tRyhm+-z9Vv;*s_qZw0Ft6%^!
zQS8a=byJ(9sR1jHWAU+nhDCMq=4gAn97$X96Vkjs)EW)QT*QDo8T)4ahHuq3xRx3_
zxSDpiFAP6^mHzTQkpAWMj~(eN_c)HXy=J@!EKrhu8xT!*D~fYw5=G*FmHvD@;3#5j
zCB755_tX9TEWY1>#ygSWEy>;iO*qe_ok04(9B05M`~^Oec^;_aqqc-E;@xmdDPz9^
zR^aVW37XK4kK_ZupPKYjKo{=H)V30M6rUUNgp($pa4z09By$b$4wJqM7{W(7!@%qD
z=e;dxdlyi_NBrHu_wZ&>!Jh=K#*b0NZw9`AuLt}=;QyI4Va3-BKH*Ea+wX!5-r}qu
z-&3IR9vAP00nqerp!>cPG~q>jn?Qg0k_9(0x{a}}%WXG)cdhswKK|gzID|JfGWNaC
z+1%Buws!;^op|lxURhJNWKl(#Lk{Al=MT2mlx=KYTfV%^p{O{DyaC)<YRY!VO4+KF
zg)^$XiXwMx4(xD1K~SkFi$;RCD!wgphgT`@@cSYmCDf*t<6?BHSLs;Pxund2gVo<A
zE9xDYy+M`3QLRRzin=b?7BaQX{{z}w^F=$fRAgL_{pt?03{FJ;P87Y!t&I_XCr;pY
zS(&QLtggp1HcFST2DwuXI0BT{lzEkP!OqZDIa20``fGi3ov0~m^9B^T%&~Y%Pxaz2
z?xlM1Wj0kWo*EpQS1(Tc4TZ}m@$*X#<Nx~X+WW-bJ$s+pJFqvgcWke|cXF?ze_{U<
f{R91j{qB8t?c20(%f9fw?fX7o$yeMjs|WrcnRzoK

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetstrict.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-cetstrict.exe
deleted file mode 100644
index 18c51736ec8a033fe5df46f1ff7ad28e2ef37716..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10240
zcmeHN4{%e*nP1s{whS0K#0sYQCqRzLAA><Y3b73`*mOxv$H8`zxi}F*el{wyr0P8x
zNa at v%>?F=RUC5<PlR2&jrqiaGOwQ@$8bdmFGA76lq-RKG4vt>p{F&qta~CJQ0YXW1
zzi;1 at 5l+(1bfz;+C(FG3ef#aV-+ue;?zg)#8~&R8(aDXL4RwsQK9I|rJ0IMVRy4^L
zu$fu2Z(*~+xyIn`nFA~owA(^JbQWW|f^`X57>pc)nawtJryH4VQDG=a14)`3(dhXS
z#`X}^z}Pr-<YufzbVy93O^lTTx)w6lMCC6??geO?+0Mb(uFUeZc8gVcy9(aL0%T+m
zjolmvD3KiKeQ~7Kt9s#<Szv)7<j6M}$&IcT8)B at B97G1gS3(|;PHx5$i^GPX7$X=$
z4z_0|H|dKg5g(YsC-9Asb7o3GNXW^75Co}9@|BRgfeM$Bo3S;QN?%c5W)HX$!$&`x
z+S+W__lRNf%7T;EGZro6Lqmma=Y~?LsAZTBjTWAM8Y}YXQFkMcopJ1^ouNOAHLbsj
z1*?tdCy4&1R4S#N&@X}(5`D#b1@=TwLRIw2e8zaZAPms|LqhiVM#CtCdlS)(qO2bS
zvp1p6g5*Xh({CrWe+#DmAZ4qlgAx4^;zq!LW=UU3B_~PeS%t1#9y{c?dw72y8Tm7a
zVZg9 at k$xv=R|2(*hDF&0dHwxQNhdK+S3?uY_O&>zyiau&-U+dCW3WrIsXJTGatz(Q
z?5z7C)#=b*hff|pp%pxiofZ4oV(VFm+TPLVZAt0-V3C)2+}?%wfB|^{`j2Od0nQjq
zq3-laLtwQbu!sb<K_DsBpfz-}39I{;7SY$kNAy|nrT!v($F&nYwt}hGaX8~%VVF9n
z&XuT%H)Od+xt5)>KW~HVk1}M7NOqYaYvtNZy%rtm*~qwdUM~??tj`73Ye}xXs#*21
zPsDWYHyqvU?l~KkbPFV0$Dgz4{m`WiPt3!F|HzQ2?AqycFvz?;gQ~dJ;&gLOb#gej
z++)tiT-dbBn3`E2wIlkYklqD+giy>&5~{_7L at +n$HOIA+uF;hJZUkJe9ZA`51Cg>f
ziQ>qC{2WFT>$sbzN**F!Up?k9c4o!?xo~639smyuD{nt}^_3ej9doY3_<v3lpw&88
z at IL8dFnFBkSOU{8^-)=q-XiFe8m~1Z-JtITD=C$ML)|8&QcyJ4NolD`4Ps?6zBNJf
zej~L^=2)obOMI>1J2)y~W{xAxv~aCpcbbWYVVo&?3NC<G4y_o*-n)YqBz$@@WshO4
za_wKvL#Zo;x##gF=O(WGI%S_vH5h9Z*N7FbcW&WH3=5K&+Y$0idA)X+D#BD)ge8L&
z??~A{z}%*iu~gR1XVIhEbMM{8K6ym!D|NoiwVaZ2sNov7PDs3RL at jb9Cb{jog5C2G
zH2!y)vAG5;6X(o5hs}_8Sn5TsMIXR?>o39$J&9<}vcyD@{;W~Rca7@%Ku)|rV4-<O
zh%(|#S9LvFGVNrv9ouW$w{^*|WKr*_s1qJqj#~XO!9&D~7p$Uk%#c}(9$am<khGGP
zLu at 4VTif>~2?ChF*#IgMqBs|DSbEa|BZUDJJYXx+zYU{A>?p3+h6Xp_?$owY+W$U+
z;&$#UI0FLP`{xANFL$q`yHV6LI1`Q9R at M|po9b^qXnW!IA|5+f%(IW#UZ~0C at mXE<
z at mVkPz9Q%P%42G=cH6A_%Av>%ZH+a1sJ=20!J<95XyOgmao&5}@KWqPC;J}xYX<z9
z3(OL3E*>^~^zcdj1Bz?MG37IRPDS(hgZ9}Nir5XNOjmU_IPBq*YEIAb=q#Or7y`-?
zKzhKKFGC-XRlklCAca*H&C}N)h)&oL58&Mqu=Sh4puV`R_EoMOG<q at P>x&4&{M?DF
z6X#B(L_{4Hv9!3EYiB5uVmIxa2g_bu*8fJ?lQ)B^9FA_|@ePGMS%=_98+9L at 6Ixv%
z at 2i_k**Bo1CHPXJpET(BhGL`qD3$Aq(R`8*jXSstw5x8CyN39F7=i>%3sG=g>J3&8
zVZzTAQztFX27Yb~#Zoc~G3uV-ql0h>!}=R!Zh;tfK8B5`l7;S$9v!d at A3X?y$0ZB+
z!&6A-%X{dP$E;5MU4zIn7PBj{QW`^#wjU%&{zF6$!Z!(%(qRB4!&la39)HH^{v8x`
zpGi=FJZVO-r;TNuqaAtW#{CG8Oi!Q}tP_mCW^jzohASXX#gtu!FxUQ3hZv9l at B}Im
zGZ7_H_H3%bQd!M4gCCENQ}t&f1Z<4!R7EjDco~F)VsH{`fNQ-YREa3k!25csC$dE_
zYX+a7jzt*leTYomCM+;o^wl~yp|=J*4pLwfc|2wR2k6vJAQT}2Lt!nBjyNV01W(!9
zs6+JRPT3nl;=WK2`<+F##(B1W00EL~yPab+`0hjGGtA at ZE6>r<A<lg=xq>uc*thOC
zcCj^D&V9V9yUHSV?ZN}bu5GduN9V?VW$A%UvpWkwod?BiKTPjBicPd8z{HyPH8vi~
zbYGyz?BLowu6^8H=~Ft!qt4iOi*usaX^oEV3l8bAd8#9R{~H$q at 5atsI_=#TnEOeK
zT0pC?T--?<o?*R~4!*u(u6eBbDudP!125|%e(gD&lssNN37D9J<DLeVo3bZpjIm)W
zuY4nNS}3O7=^4(jFMjP2qwS$-ZF_!C+d|$Ka2C^r$U&nlbR}G)w*Kx9gQ^_p{>UGc
z*Uvnr>0;+}|MnYlFgo+qI8WL7wU49smQ1cr*?3YK$857M*q4<48zfe4sydNtVd|pl
zO}SZ2onIX$_?k5E at x@f^yknb_<K9L8(8jiJNGYn-q at P{QSWRriQrjo(204)j-eVx@
zT%$GGhjrSqI_+falf0eons`kf*{FR~s~xc&cspO2iFR3N*9vh=z|Mj}44B3F1zUfu
zc6`u at LZ!Y_G^*83Ay6%Zl{_~7X;Qit6q%8f=7K_Srz0Z=r0u|aMauOM`XDKtFPf at 4
z4KgWBAjj$;p{s2%7ZkuC%NQSe%fV-k at xCUf169}9Vi!pvt{@I)ZdI<W_kU2-r03B3
z7vr%JYf}0#NZRfgGpL%gLk at LwY{Ze2dQrq;M at 0<Oen^eM?yaC}7mmWJPhjRfRH__}
zeqHpi;NYzXqa_ep2X?IBo5<Y|Je8DIf+TCv<R*|4c at UZp!gk=@xymeVJ1~j)mu%qF
z*bcmPrE=RPeXDD<BQ?0~4V^A5N#O|`dovezDT=7wqc_5H{M<3Vu;8^TNqNC5fGSJp
zOdfml-%<QG6iK07u?vOhX#7egAMjWGsDc$OxSk}q7I5P5Q0Z!RsL(?%7>cQTAcCDq
z#i^7kc^b}2mFyPz--&#W$ln+F8IjYTN|iJqD5Xl)h at 9RjsgfH+UM%t%BEKjk*9m%D
z(8oo7NaVj1`BNg_Eb at Ah&ld6z3Hl?EKO=IwtEWnekxv;ch)eIU)cEB!Mk%Ad<iF6`
z-E2gg_qleAYx!EfehoGhT at xLMeW=w?V{wgkufPIH*nTji4S|pOWsl?3rF7sX179;y
zH!;VoUtr>-iN7)Nu!+x at _*1i8msxHz at ir5en`rdL*j0;6%0#`?C|8)}Ik%)G4cvt#
zl$q|ER*t0gnL=mH`UaD~*~9^pUvJ_X6IYmclZn at usGFE;;-{vbNfX~O at t}!&Onkt^
zqh`Cb?R(7f>}mYkxyH{<Y20(IQBF+5w4VD-e!6VE;_{!Z(tLNJ!9Q<en*WEetK4Yk
zSZW{z>dfS(Ncg8nX1~)_ at 0xGevB$*e^&&EVhWRICI1PKI_wa;i-%}<Im^f%+!bED9
z{_T{Gl4g7 at PJCBU&80f}IdOVQw?h<0oMr5Jw0qucH(mCN%D9HI?5^ytVzjLQT at R$2
z_mzmHkKp?WzG`&Pi0^HjaqH3GyZ9c&x%oK0^Y}R4s88a<8e at C#*gT8}?sDkZ*jU^6
zz~5|r`BbB`?$Os at y8ptzx=$fkv9-6hG%IpMX;GrV_Lka^FWMmoRi(ujYL#1jGJZ*w
zeJ$IUSF~)D1F~0{;^DW>&1f!;T*BX%XjxitgUDT$Rc^_#u$(n`oZE7ltu>$7Dy+=5
zab|cNHj~dcTmf708!XvP_yE2qGRmf&21~w$<--DtHHTRvIpOS0S>^epdjWn|g)Zu|
z5<Yqf-#gGnXvwm$tOj5~4lAgb!3s9!HdyQuvsWBocFQ2kr8*ofGb(b~jAglDOOcfo
zwdS#+rd(E3A+e%4g<%?JdYciRxPdrET7~%1<zQ at u88?ZWg%~^z-l7bi6TC6-#xi)d
z;BBAJSaAlg6}$xGtQouqz#9PXu8e+jC at zEdMd_<^#qi9Z%ei7 at 9?x2j5|(}bHowoa
z#T#r5$Pvb_2HzKrM6dxp@^+sbR{fzM{%G?#T#qk=8$SNZv5Ixb9g3_ncE{R{&EINT
zzoBkvMfu{^Kmaj-c@%kzr_CQw<p?y&_)`Hms>d4+d(<6andL(_7*Rxk4zIdJj=+jy
zM#|g#?a_$r33?-u&^C`Z(%y+nGV}O at e%0>{`0tyll7pT8NGM2A1FM{Q+M(Z+O1I7w
zS#IcnK^^StmuQcSXe)2`L&rh}Q$aKtwzhR35>ZU`c)}hJS>mIs^;8LVT?LDcwsufP
z>uTnS$nAcGMy_s&$lg{D{+8kmkQ+Q+xX!P7Pz-GL`nF<+rN?ZD3Q3vtlDC5LHjgmE
zV)W_ at br?2PT;`8ZP$*Tsn**@7Dx-h1rY#!ui5a~Py+tq!!V1>T$Qk}1ip(4Kmvty*
z+x)>YNR&mQLDk<Omj#xVEiE%9b(#dtT4wch4T{?84`m8WYj2D+Q((G=EwVR!S-n--
zs0P-0!z$LtT5}Z^60bfK+8Pb7Ge=n$R3keWn at cr!_#<l68)yz<V6BW at keY+WqHnEB
zFY|R`kuvsz)F`W8SnbaGhODkNwn#%H<dYSJ{ioEF_FtOCUdUdrn1xVeo$MuB8zQno
zi?l1}_NW}$(I7|KLRj at dA4UN`V*}QFR{Q!^R+qtT5-SNzHZL2NH15Fq>S)3g)hHN%
zOcZ-Ed;QcVX{^Tz<XC*{pJ7q0ygAz5E=SUq{Dd at b2(?B7G8Zx6PR71jxA9wb^{!>c
z4z8lz?F++?U!}i%52Sy2{bNV^$~}(bZLb+G0t=L+-v&g}-HPIznM9HJU!^}E4>$@L
zTZQig?)`LsKa1}-pz%&*cuTT(Koib4X(y2WFUJ}134ei)WS$4=_^2)6i+DHOQo`7;
zfaQ2QRDdS*<0JV1 at TVsI6wrmcGPSJ$9>wQ|JmI9tC!B}34ar;syu+mL0*3IB&M@$L
z{CRH++TI0J at DYDE@IAa)RPZN(Yw%+f at tc4z;OhZ at 5cq#4O<4XlgHQMp?)JMNgSR;A
z$M+OyyvN0RVE{C}8|c381WkAm-zLyszGT5ojBaDB>vG$T-(AZ;hmSvaG7jNQ4UB#7
zb2fL?>g^o?M<-r;xK~z}E?rz+>X3tY>G^~0)uqi%>&jM?IusR0kvD)lOLgfESt(t;
zs$fQyS5f4S&4C>bC<rRmrO`<6R>ikP?(iyQ9e!UVq=eekGF*&q^(q~UJC~L^aIpH@
zWJSFrvp1-6II7f0R8iLl+d`(c1%E)BYk_EomWqt)v0vR`mcfb0--)6ZxwRqU at 5Bk*
zE-O=&nbmc8#zyJ#RWEnS0Y`xH>Qb+=KG+%BDo08kQGbn(t`pUzZQg()mpYbA>8V=s
z#l2K5xy+`jB~yb#^Qt9jzoBsXBz}I$Vf<g8U3;I{yJzoHdk6L=_Kxk<_fGD0^e^gv
gqJN-&u;0D!u6>*KZP^#zw|(E|EBT81W%a=S13V)!uK)l5

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-exdllcharacteristics.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-exdllcharacteristics.exe
new file mode 100644
index 0000000000000000000000000000000000000000..9c36817b6a4744f837f4b3c405b9b45ddbec7965
GIT binary patch
literal 5120
zcmeHLUuauZ82|F;)^uC8Y%I(tcUQAfQA22omMM6#O+8|qv1#Y#q9!J{rZl^WH#b^Q
zv|1f4mtqAU6nsdA4 at E>An{0DFq)yGMPDDhJf$p)24|@<Md+_=@_fP+16`^d5jU4#$
zec$i<bH4NCo^x*U at Z+@RAt5pmBg!2TsC)lp-br+UI%vIn;~nG$60pz!=awwFIK*W)
zQ5%;r98PH{JPyM{=~tZ~C(q^jB4WmL-%8YJO7 at 3D#Fpy`%l`ciqQT{OlRP65S%umL
z=qvIx`G+-mOarzHYcgx)Yp~bhxQaySu$s$g8KUR74S>0DANaB%Vd}8uMs)#(2#Dw1
z2wFBIqI$SwIhwTrF#W7PFM0x&!m3;-X6 at df2d3YaMHf?m-~B6*mUg3e;M=AVt)Ff}
zxH>$%Y5VJDE7(2$`RzoN0Gpc&3}2ixjEd_to0|{(&L15sR7$dmKSieh5}h}Kr#4~Z
z=-(K at 4<H!9W2SoM({?Y_*~Ay(0cPx+1?Ei3rs5$V!h23`Lp~$;Hf(RywVO`z=l|?&
zY}&tDBw9EEjp==%9yTTHz*c6{T%M@=pdWz)(}i^$o)TU}wcJyJ{0b}$VF(DHz9BpU
z$%RY}VZSY%;9HT6){)TvD35G-U3}&xT=&o40(>g&6&=vUbpKxth`>(Nym0X!!<fMe
zdzShsCHFptrAg?F5uCtgX8O^;kvwX|qIEVs7)mq!J0tikw_wfpGMz)y at lc*MusnED
zTtCA*6p8C!aYKnKozZzVl?sVQ at IFKujS0j3(npwCdg{poi<5u8)Z!K2r*Yot{BpkZ
zeH%Nwnob>FMr+(C9hk*^$;W3l|H<Zm*t{)d*+Vw(v3cC)mKD$YX6w3iIBl_Xv57nW
z4o^fZzY8{BapyWtSAyI5n^Q5-ntz|oo9*WLa2a^@fbkBip5_ at 6c717^=WSkErEce4
zj2~P>pbtAh>#U59ZM9A9*tWve%L&hbcfA#NwLWh~V$Zl|{2kP|0rLCc{0u&YcbL03
z<G=$ALVgeD^gyyNdFbWQug at hzvA2Hx^0iB!Nay%EdUvOW%CcHcl`G0KslH;ia!^*Z
zaw=QQ$*HW2H#0e#8oR4IH6Rz{OnDK*yVKJMr#C_T8gR9{s2zyQ=Ov%&EqT)Jh^x&_
zZC&8p5rgxzy*Id?=lek9((2<%?Ju7&pcQ&EC9R^$y+y@*+YE3lUM!AQO8pfjtBn+u
zn4+mK5N+d at y(6kt$rOf^=SP$r(IsI>$!C;YLC(d-vT}*L_m31bStU9yBxUVC&64{8
zS?jH+D!Q6bi&?o`rk{mDSv@$SWHi}<=(y*>vaJ-=emTQyO{j7iVf0XJU{5R_?F#1#
zh1EONLa#*!x(@$#=exJBede=Ih(8SfXc%kH(2Bg49f;s;-2?LBOylS5BuIoj1D?g%
zy8&_m{5)tYKlkvP(GBW^jJut7fg&7ljq9 at mqV=But0t=Zs_AOJI$oWuE>x-JtIgDA
UYaiE6)ateCb7`%r|GxwO0^lp8hX4Qo

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-readobj/COFF/Inputs/has-hotpatchcompatible.exe b/llvm/test/tools/llvm-readobj/COFF/Inputs/has-hotpatchcompatible.exe
deleted file mode 100644
index bb554c7ef89b2bb16e87977d8161c6c857d8bd9f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10752
zcmeHN4RBOdmcE_zOFD$u8BI$Nkq0!BC<X$ZQ6PzSB*BXl+(;6&#yCyWc}aTcbhq8F
z1GvmgGM%X5O;_RHtd{Psz|<}^H8tX_vjn7^4mfrqxEs*jfx%UrvD}AY9n at O+@u&AY
z at 4fE4M5vjXDyzmVZ|c7DbI(2Z+;h)8_rBLz^BwjV7dLt~H89rxKpuN#<AYrpMQ7MN
zR+w|y^{g12t99<-%K?dI%x$43;W>=u5ss39EDXY`u~;r!*O%#J^hJZNBm+p&;Aowm
zU%=Qigf%gCk_K`!)}{?eOq6wuRRZ+RXRL+jOBDCKjG=~r$k;Zso+<qn$<ihnyj^xY
z$RMi5Jb-CM#ORA6?Oxdnw at e2M40ai6396~MG4vu`jP;UZ$YA&iZk<%zj3pO^bwO>8
zU}$pANn+#z_o7HN;saarNs}S>&5OxNfe-{~Nb;4Yubha9;%4lY3F>R?tL%ZpQ;I8j
za0-XWjt={rer=k(x at dF`W3ggBJY3vyb~v4mSq}2y(c)7_5utilcQcQl7WdL_QC}>=
zV`V;L%7}UmVqJYIolYyq)Ch1*Vz5*VW1sXV<)}Ji8e=?B)B>O`MBuBR<AIJ3L&-og
zwpPu9BK1Bz29ol0NZt-*Y9|dbom%qgv4RE|QO^_iJ at kiWLA{44k);3Krs>M#@t4GV
z4(>${rgq|K%o>)LtK;bAN<yMM>kN&57Jb#<eNOtR at zi!`&GZ{=bK3Zz>@2<uqLupO
z at 5-g&?fo~v74D at UyC0IBqM8Hd)?-Rh1iLhT-eT{ckJf?F*lj7{9<a!3JmF|V{=ful
z0n`J?6`1g}p)}e~9oGeB=>k>~cpL&LVK#bW4cNHN{jU~ntgVMs4&SQHm=9Nu@%S<(
zU&G;?M>NCa%NtzDx<pfsYm_UwX~#C?F7-x}YzfJB=(0Ah6sk{PAaxcVTsfz9YOqvo
z25eMPTzO5gsrx_EmNy2E!tt%{{*PmVx*8I$qt98?ccDu;I6e~r(5y>T_ik~D3^Gd~
zqa5T)o72q|*~#JHN{_KVDFMk>U#k5;l|$+ah2Q}GnxL at +hqX1j0u$C2=X+Qub3Ah8
zxN9`+Sco;_%AvI5Dj;cxQzJ+A6<8T9xOfjwFSvVRSr7BUMyzZ6^s>D(;M%mK3T;@6
z{JrGqSFgnq{cbjV@*FLSQtw>G2ZiBlfF}r#ClM0D9Yia_&j<_(vmj2AZs2pkN(ujq
zBa((s34a7e>z at +N8`uycj`0miiiHor<0-3!MxNj+Mazjl*k~0qObb_v+A~aaTt at ru
zEZngTGhCJp>BH{kJ1JP*@J!mVQd`Y`IS1vgG~$9MTAb^+@^5L!+wd{RoNKs3tVE-;
zi>EL>NMhYb$U~Kl%FEOcCZZhSgxw&f9nYd?Iu%dnZ21L7c6+{iPj+x^t-f8LIdiVW
z73+dZsN)K^jSIYbL at se9&v5&5MJ;oYY~Ek0Z^qr0 at w1uzhJA`nlmD`?91<3_9bv0}
z0 at w5>W7eg~@e=iYohWdPs(%1F{@!j2#f4#ko}+qeKNT^oay-_Ft+?@f>Rv57$mIhk
zVorGOU9_sNX;vcRC5qlB`k-$0B8=kdu!n?G<hl4r`Xl=fg<nAc3;QAfkpw}e0A3az
z#?zu1L5T-(%rqM_(R-NUx3p0i9$JGtS;un0`yP_(ChjYG3<y%f9RzY;>03^Bu9#=2
z5VPu7URN4xX<T@~zUPh-9zRgZbC1~f)aCKS^xnqA^jG*`iF0-J5xG>kZF*z%aAcZt
zi!FD!u{s$+P#-8Cf6H~04;<A!7Qf%gzE8fJ20!Nk=4fs&&90g5v#rO~N3nNZM-dW*
z{U>7i{6WVra3pBEXNqiZ?NexBTaU}u{-d$!>UR*`NJ`BB8Alk?*LCxFZ3G?Ch{#yJ
z8o^?W+mTn``8KfCRxoH>Zm)lhD+kOYYVouO37(%lHY<7dSX#@_S#z+D+nlAXTsaNF
zO6*4KOj!KF(j9MAJh>29^}*Oio>)`NQw>O{w9yx0mATST%m*9Jq#gf(k(DH0Lik*?
z08gwb)#;f;H<W^Lh7X?<xeK_f;S6^T^Sv+#1)AoAa7~Pc84M#Zeo#t-v^ksj*)fpM
z5{bNb?}Xh$a1}GiA?D8Fa7iB}l=Oo8VVds5-Ij at d2Qo}F at q{2jHrojL-bpl_dB267
zJZ^KUZ|X>nX|q6wE4f^_8s^y_o46oA&$lM&NeHvebV|5 at WJe`Cw6+emR-X8|)BOns
z>^q&Lgnrz}uK$U^LReXqL$6-D7iR at ihhPn26uzw+8l$tU74k%;9S=j8D}S#-j3*vH
zMtNU3gv^z8ET$IdxtS|EKan^|&0ow~2YDi)QWNDZZ3TgdbWVJvor41-)QHU1#0Ljx
zB(g<g)(t&D18XUM;2|>g1<eAz$6&p49Y$+%;NS;rp;b&fQqZX!LwdyN0EKi2BoHV-
zc-rv at 4TzE4X~z$N;=WT9|HLBO5<FM^C6YH+o_3DW<ojMCpP6Fh)U6+9jymlOB=cKH
z8(gqrubxe8u}bdaHGMS}Eql!0r)Q5AOKEIIe7~h1_FdLf1ne9zW`8`h`!o3x at rIL+
z;_W>QuE!hgDI1+2B3EW|<$PbYFWP-F=8XSssWo<u(k%8}5QRr)%3|V2Z(Rty8$W01
zar9ka?k6pB5k-BacE=Ju2h}dDH6JYHipQ40)n2$$ABUc%u at bZMwR>VM0~o&?R~MRS
zUfMB6bB-Uh@#?oCr?demLwK^mH%SL&b)Kj_3}Dvr<3B at 3F&_*#OX;#F((H>}N!O at -
zN8blQSqk)h=nqP(3y&zOwsZSFx>X9s3SUd`w0(ziKK9)OXKqg0c}h4*?|i*5Atn45
zP(*pUHkoH(a(V5#yc{Oatql{nO4xn=({%itxY5aRr=&mhvF{v?meec4KVQXIU3|n+
zKPWs6bUYutM}aiBM(dOh8k8dq%JKMT`CHs|iMo8UQTec5Ib`4Whk|G!`sJWsJH)Xt
zTZ)FTXIO$?u<xi>jt)6NRI6LGPW8$OB+U7+lE+Vej(a9BG9x9-0ER<|jyNk&`@a7!
ziOzx0A5+4)E3!?efTo0TJmFgsnq`l>pa2G0#`y5>MP4|@2V0yXny$9TKP82 at Ac@Yr
znmqf!|A174=g|9?C*vcwl<*HgDK%iu!0J987UlKv5iunUfJAJfAr5RWq{d+P2H^Gc
zM`6`xF!Nrbsz+ltY9q`$u;M^$0fbh89WVMeo^A-9ND0e<lC|h^9nkT72+ajz-}ml}
z=yY!1cLwV(*ukl@@B94~(c32U-CU;}s>4lo_*C(NG(G{u-_9Ep&QoUZ8@(2u<7bcX
z`9-hedk7yadKI9?(o at LeZ~q$Piy%p%BkIr;VxW^(L<<1EwF6DCq7B!pBv%4X9AYwE
zF<&aq1~}#Dry+*jn~iyW2c;MM6zi11x0&!QCj222e%OSMnDD1fxQJ!Q=$vlC&zWT2
zG2vq-e7_0bWx`LJ at Lm%hFyVKb at Ol$oX~N$@fMskOG2#6tnR6z7n~7g+!uOkG!dZOc
zeK>tmA7%2>)V^RvR-3z3&z0|S<p@^_lmhiJ<5DhWvpHlGv|C)GeajHcN&92N$}n0H
zi(g9l32r}B_FbpL*A1u|&}y{LGvFBmzG1+Z4ft~d{*%$K*PuHLc$)!lFrYpfV^@|N
zm;u!?ovt$I%dgK!>Tnyjkh$DHg^pzO8A2Z$?M()My#aR{{6+)bV!&kvyv~4E8&EZ1
zo&i5M^qeu^I|e*pz-J8jfB_F1{W7*cW6+mP;UAl!e;>_2_Z*#GHw9+&Txakzbon=o
z at 2eSx0b7c7e(@#Rr-*0C-b%fnxI~9^P??Jxd*Vwe#<){;Z=0*z at r(hdwreNT7noln
z!>QXdb%ZAj`*s;{w*iL?m^2{u%X~XWqF}A4Z8&|~a9~i$w9#kcsU_2fqZj84W6z`C
z^G3g^vX`PsJhwNuw-kM=fHwlt8xWm^DbzPm2Qa`>s4K5zY&PDT{s#3yd|&tp>N)z(
zfLs2PsE9H42yTf1ysOnf$J*xl<_CVT;gu83&W4BI{LPOp{K|d82L8$wZLLu$5^amd
zf}L&kAz!Rp3d+$oU#MMb^GW!UF8SIv-B8uGRtiYoXqJa>-Rsev_0r={6befVZcuqk
zb1E%X3$xyWk1X~)W^XTG_9`2*uPqF}3!BO3_kDx09-NzGH^HBw?l;kfo+e9yg%!X8
zi_OYx5o<ViT~1{I>7K_J>7p?o#f^V9{Im_a2wHM1ET;*u$jXYUrm>>6c}*6Fz#LWk
zn8Px}@~CZ^l})S4W7C%Ag)JpER??o&N^pTMsS;Sp<;7u|YG#`eJoZiE=;bElmtK*v
zWk%j4ZVqzrN$|=|JSTW#;EkDh_26xq%UG$2*A8A1ayAq10q}N%ceiO=E9GVIE>*rh
zS9H((wVW$9=JBlbM8lHL-{JRpy1c>mfD~bD7WlqcB!Ug-kv93Hu<Q>7 at uS^ExE@~!
zZ#ejs>n7GMbw?$cu{&3;ZN0r^^_qqyRh5g{0|DHhnI|fBc{=<7S&BfTgrADQkv-mU
z*duQaORNC8!H6LPbbIA4DFQ1>87c4Zcg7-;C+LktLK{8aNM{dT5}3yy^viy4z<+<X
zNecG(BcUK=4MaKfbV9!&mFaC3xk1+fgSy#`6Szl0wv{&dp<_OSsX$tETRXaui72Of
zJYkQAEb-B+MV5kHSHfbwuLGFgyOwz(Ql~#kGncy}lDFN1-_pDRa)ZYU*ZE}+$iRB9
zZv%E%X3n~(CMl6#@>WpV=+TU@=%e~V-MURxll&11YD#7A`T*>$F^zAubi{%_ZAGua
zXc4S}W(DhH<P3ihB=d&-72VN_js9Q-Bq}1YpzQCKDgsL?mQ?7AIz at t3&D=ayLsV|}
zhs**~`s*__3ry9}C3(Y>+HJyGIk3_jmJuH-jVLT8USlY<Ar at X`%(5XUM>aDygIezN
zN933{&>F<V+8Mhbv<CH{Z*Rzi`6?|)8QUW?OY$X~-8r{P@=AS+G(|!_DH>(J6<RX>
z%dps<+|^No2t`&&Ub3|*B1I`kd#!iGq{!wbDbf)_)CYZ-1^kQ+SocNktJ_(FiQA$@
z5}0geE-Y!@jQHwq!4lO)F#(A%_GIqr>?Ub$L<DjKAA1%S)l2JRot;u7W64iR^O{h5
zEFf_$2i%3TzG3a{4UMj)`VOw4-R%p*k6)Mn{~pME0sl*9`s%&n(T>;kHv$WkWZn%3
zr at Iy9IiqMK@xLyAJszkmX6$y<W4QOz{e2ql!fyb_dm<B2-vN$yN>*p!9PlOFjZcG5
z|I_m(D#^S9SW52;z(v51P_JLW*r$MDygO6 at -vsy^D#;H4erVw50OPnfQ{Nv0I&p7y
zL;iZeCRF0z4cKSk4*?!9 at DaebP)Vl>_;>i3whMi&c(Iv-O8hY33wURd!5;&hhi{(5
zuL1l=)PC at H5zoL+1D4Oy`IUgb!QFlvWbiJ|Zb97z9Pi_-19dlWdT-c@>I6>r{#~f+
zfPeLh1vfFejj`Uzw(H-WD=)&w57&%CcwG}?- at nM_uDN+rcR=jH+aB(fwPi~dRhEfT
z5N~?^U}tSvYs;#NWo2Si#!=)A;LcK8wpogn-F#Egv>I<TDs`_9Y!;y)7_BXfMS?4$
zzAmZT8?ET}`y!!es6(#6#b|{$+P$b}NtuX))!!jS<vY!zL6s=h$dOo7ULEWR8QSLk
z32m-<T0iuRO1K{T<;?~SPDHvdhEb&Urii}>Cvc|}%{H2w8}J$%qsv#L)FTDN06lBV
zywTOcp3nv<QYOaybw0XI)RuL415v3=T%6TYv-r}Z)GVH4Q_bS+<j}olamH^TCNJW}
zDN+AluWj3(*#6A+UE6nWPi`OEu5LfGUEEQ=<B1)+cMR=t at 4S2Gx}9A+!#g+ayttCD
JxnETe{2y#fidg^v

diff --git a/llvm/test/tools/llvm-readobj/COFF/cetcompat.test b/llvm/test/tools/llvm-readobj/COFF/cetcompat.test
index a973b5c0a2080..0bdc7bc3aa52d 100644
--- a/llvm/test/tools/llvm-readobj/COFF/cetcompat.test
+++ b/llvm/test/tools/llvm-readobj/COFF/cetcompat.test
@@ -1,16 +1,18 @@
-# To regenerate has-cet.exe
-# $ echo int main() { return 0; } > has-cet.c
-# $ cl has-cet.c /link /cetcompat
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cet.exe | FileCheck %s
+# To regenerate has-exdllcharacteristics.exe
+# $ echo int main() { return 0; } > has-exdllcharacteristics.c
+# To make minimum possible stub file (to decrease the binary size)
+# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
+# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
 
 CHECK:  DebugEntry {
 CHECK:    Characteristics: 0x0
 CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x1)
+CHECK:    ExtendedCharacteristics [ (0x8F)
 CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT (0x1)
 CHECK:    ]
 CHECK:    RawData (
-CHECK:      0000: 01000000                             |....|
+CHECK:      0000: 8F000000                             |....|
 CHECK:    )
 CHECK:  }
 
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
index 9807bfe5686ee..049aeef096bdc 100644
--- a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
+++ b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
@@ -1,16 +1,18 @@
-# To regenerate has-cetstrict.exe
-# $ echo int main() { return 0; } > has-cetstrict.c
-# $ cl has-cetstrict.c /link /cetcompatstrict
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetstrict.exe | FileCheck %s
+# To regenerate has-exdllcharacteristics.exe
+# $ echo int main() { return 0; } > has-exdllcharacteristics.c
+# To make minimum possible stub file (to decrease the binary size)
+# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
+# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
 
 CHECK:  DebugEntry {
 CHECK:    Characteristics: 0x0
 CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x2)
+CHECK:    ExtendedCharacteristics [ (0x8F)
 CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE (0x2)
 CHECK:    ]
 CHECK:    RawData (
-CHECK:      0000: 02000000                             |....|
+CHECK:      0000: 8F000000                             |....|
 CHECK:    )
 CHECK:  }
 
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test b/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
index 18b3ec70177cb..73f5448e39703 100644
--- a/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
+++ b/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
@@ -1,16 +1,18 @@
-# To regenerate has-cetdynamicapisinproc.exe
-# $ echo int main() { return 0; } > has-cetdynamicapisinproc.c
-# $ cl has-cetdynamicapisinproc.c /link /cetdynamicapisinproc
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetdynamicapisinproc.exe | FileCheck %s
+# To regenerate has-exdllcharacteristics.exe
+# $ echo int main() { return 0; } > has-exdllcharacteristics.c
+# To make minimum possible stub file (to decrease the binary size)
+# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
+# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
 
 CHECK:  DebugEntry {
 CHECK:    Characteristics: 0x0
 CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x8)
+CHECK:    ExtendedCharacteristics [ (0x8F)
 CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY (0x8)
 CHECK:    ]
 CHECK:    RawData (
-CHECK:      0000: 08000000                             |....|
+CHECK:      0000: 8F000000                             |....|
 CHECK:    )
 CHECK:  }
 
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test b/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
index 25cf1db3464f7..0723853fb1c4c 100644
--- a/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
+++ b/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
@@ -1,16 +1,18 @@
-# To regenerate has-cetipvalidationrelaxed.exe
-# $ echo int main() { return 0; } > has-cetipvalidationrelaxed.c
-# $ cl has-cetipvalidationrelaxed.c /link /cetipvalidationrelaxed
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-cetipvalidationrelaxed.exe | FileCheck %s
+# To regenerate has-exdllcharacteristics.exe
+# $ echo int main() { return 0; } > has-exdllcharacteristics.c
+# To make minimum possible stub file (to decrease the binary size)
+# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
+# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
 
 CHECK:  DebugEntry {
 CHECK:    Characteristics: 0x0
 CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x4)
+CHECK:    ExtendedCharacteristics [ (0x8F)
 CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x4)
 CHECK:    ]
 CHECK:    RawData (
-CHECK:      0000: 04000000                             |....|
+CHECK:      0000: 8F000000                             |....|
 CHECK:    )
 CHECK:  }
 
diff --git a/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test b/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
index 87208d24f9fee..4f5d0e22eaf61 100644
--- a/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
+++ b/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
@@ -1,16 +1,18 @@
-# To regenerate has-hotpatchcompatible.exe
-# $ echo int main() { return 0; } > has-hotpatchcompatible.c
-# $ cl has-hotpatchcompatible.c /link /hotpatchcompatible
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-hotpatchcompatible.exe | FileCheck %s
+# To regenerate has-exdllcharacteristics.exe
+# $ echo int main() { return 0; } > has-exdllcharacteristics.c
+# To make minimum possible stub file (to decrease the binary size)
+# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
+# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
+RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
 
 CHECK:  DebugEntry {
 CHECK:    Characteristics: 0x0
 CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x80)
+CHECK:    ExtendedCharacteristics [ (0x8F)
 CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)
 CHECK:    ]
 CHECK:    RawData (
-CHECK:      0000: 80000000                             |....|
+CHECK:      0000: 8F000000                             |....|
 CHECK:    )
 CHECK:  }
 

>From 3fb3e31799db91c2eec18a25a91dfb7b40b0fb6c Mon Sep 17 00:00:00 2001
From: kkent030315 <hrn832 at protonmail.com>
Date: Tue, 29 Jul 2025 18:12:55 +0900
Subject: [PATCH 4/4] squash tests into the one

---
 .../tools/llvm-readobj/COFF/cetcompat.test     | 18 ------------------
 .../llvm-readobj/COFF/cetcompatstrict.test     | 18 ------------------
 .../COFF/cetdynamicapisinproc.test             | 18 ------------------
 ...nrelaxed.test => exdllcharacteristics.test} |  4 ++++
 .../llvm-readobj/COFF/hotpatchcompatible.test  | 18 ------------------
 5 files changed, 4 insertions(+), 72 deletions(-)
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/cetcompat.test
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
 rename llvm/test/tools/llvm-readobj/COFF/{cetipvalidationrelaxed.test => exdllcharacteristics.test} (78%)
 delete mode 100644 llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test

diff --git a/llvm/test/tools/llvm-readobj/COFF/cetcompat.test b/llvm/test/tools/llvm-readobj/COFF/cetcompat.test
deleted file mode 100644
index 0bdc7bc3aa52d..0000000000000
--- a/llvm/test/tools/llvm-readobj/COFF/cetcompat.test
+++ /dev/null
@@ -1,18 +0,0 @@
-# To regenerate has-exdllcharacteristics.exe
-# $ echo int main() { return 0; } > has-exdllcharacteristics.c
-# To make minimum possible stub file (to decrease the binary size)
-# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
-# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
-
-CHECK:  DebugEntry {
-CHECK:    Characteristics: 0x0
-CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x8F)
-CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT (0x1)
-CHECK:    ]
-CHECK:    RawData (
-CHECK:      0000: 8F000000                             |....|
-CHECK:    )
-CHECK:  }
-
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test b/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
deleted file mode 100644
index 049aeef096bdc..0000000000000
--- a/llvm/test/tools/llvm-readobj/COFF/cetcompatstrict.test
+++ /dev/null
@@ -1,18 +0,0 @@
-# To regenerate has-exdllcharacteristics.exe
-# $ echo int main() { return 0; } > has-exdllcharacteristics.c
-# To make minimum possible stub file (to decrease the binary size)
-# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
-# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
-
-CHECK:  DebugEntry {
-CHECK:    Characteristics: 0x0
-CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x8F)
-CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE (0x2)
-CHECK:    ]
-CHECK:    RawData (
-CHECK:      0000: 8F000000                             |....|
-CHECK:    )
-CHECK:  }
-
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test b/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
deleted file mode 100644
index 73f5448e39703..0000000000000
--- a/llvm/test/tools/llvm-readobj/COFF/cetdynamicapisinproc.test
+++ /dev/null
@@ -1,18 +0,0 @@
-# To regenerate has-exdllcharacteristics.exe
-# $ echo int main() { return 0; } > has-exdllcharacteristics.c
-# To make minimum possible stub file (to decrease the binary size)
-# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
-# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
-
-CHECK:  DebugEntry {
-CHECK:    Characteristics: 0x0
-CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x8F)
-CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY (0x8)
-CHECK:    ]
-CHECK:    RawData (
-CHECK:      0000: 8F000000                             |....|
-CHECK:    )
-CHECK:  }
-
diff --git a/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test b/llvm/test/tools/llvm-readobj/COFF/exdllcharacteristics.test
similarity index 78%
rename from llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
rename to llvm/test/tools/llvm-readobj/COFF/exdllcharacteristics.test
index 0723853fb1c4c..c2379c81dd9ee 100644
--- a/llvm/test/tools/llvm-readobj/COFF/cetipvalidationrelaxed.test
+++ b/llvm/test/tools/llvm-readobj/COFF/exdllcharacteristics.test
@@ -9,7 +9,11 @@ CHECK:  DebugEntry {
 CHECK:    Characteristics: 0x0
 CHECK:    Type: ExtendedDLLCharacteristics (0x14)
 CHECK:    ExtendedCharacteristics [ (0x8F)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT (0x1)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE (0x2)
 CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x4)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY (0x8)
+CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)
 CHECK:    ]
 CHECK:    RawData (
 CHECK:      0000: 8F000000                             |....|
diff --git a/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test b/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
deleted file mode 100644
index 4f5d0e22eaf61..0000000000000
--- a/llvm/test/tools/llvm-readobj/COFF/hotpatchcompatible.test
+++ /dev/null
@@ -1,18 +0,0 @@
-# To regenerate has-exdllcharacteristics.exe
-# $ echo int main() { return 0; } > has-exdllcharacteristics.c
-# To make minimum possible stub file (to decrease the binary size)
-# $ echo -n '4D5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' | xxd -r -p > stub
-# $ cl has-exdllcharacteristics.c /entry:main /STUB:stub /NOCOFFGRPINFO /EMITTOOLVERSIONINFO:NO /EMITPOGOPHASEINFO /NOVCFEATURE /MANIFEST:NO /cetcompat /cetcompatstrict /cetdynamicapisinproc /cetipvalidationrelaxed /hotpatchcompatible /functionpadmin:6
-RUN: llvm-readobj --coff-debug-directory %p/Inputs/has-exdllcharacteristics.exe | FileCheck %s
-
-CHECK:  DebugEntry {
-CHECK:    Characteristics: 0x0
-CHECK:    Type: ExtendedDLLCharacteristics (0x14)
-CHECK:    ExtendedCharacteristics [ (0x8F)
-CHECK:      IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)
-CHECK:    ]
-CHECK:    RawData (
-CHECK:      0000: 8F000000                             |....|
-CHECK:    )
-CHECK:  }
-



More information about the llvm-commits mailing list