From ec043eb1d851621e911fd44241ee822f4aa226b3 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 13:30:10 -0500 Subject: [PATCH 01/17] Add initial source and toml --- pycosign/__init__.py | 0 pyproject.toml | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 pycosign/__init__.py create mode 100644 pyproject.toml diff --git a/pycosign/__init__.py b/pycosign/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..0451907 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,16 @@ +[project] +name = "pycosign" +version = "0.1.0" +description = "" +authors = [ + {name = "interwebshack",email = "22042209+interwebshack@users.noreply.github.com"} +] +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ +] + + +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" From 306fd825b135033cefc60cfe71010d57f60932e1 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 13:31:10 -0500 Subject: [PATCH 02/17] Design Specification - TOC and Purpose --- documentation/design_specification.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 documentation/design_specification.md diff --git a/documentation/design_specification.md b/documentation/design_specification.md new file mode 100644 index 0000000..79e4216 --- /dev/null +++ b/documentation/design_specification.md @@ -0,0 +1,25 @@ +# pyCosign Design Specification + +> **Version 0.1 – June 2025** +> This living document captures the architecture, roles, and primary use‑cases for _pyCosign_ — a Python façade around the `cosign` executable and Sigstore services. + +## Table of Contents +1. [Purpose & Scope](#purpose--scope) +2. [Reference Architecture](#reference-architecture) +3. [Role Overview](#role-overview) +4. [Signer](#signer) +5. [Verifier](#verifier) +6. [Attester](#attester) +7. [Glossary](#glossary) + +## Purpose & Scope +_pyCosign_ offers a **thin, class-based wrapper** that orchestrates the trusted `cosign` CLI while hiding subprocess and storage details from application developers. The project supports: + +* Detached signatures & attestations for any local file +* OCI-native signatures/attestations for container images and other OCI artifacts +* Rekor transparency-log integration (optional or offline bundle) +* Multiple key sources (file, Fulcio keyless, HSM/PKCS#11) + +> ⚠️ This document intentionally limits itself to the _foundational_ use-cases required in sprint 1. More advanced flows (HSM, batch, policy-verify) appear only as placeholders. + + From f9f7a21f685af359d26353f5466e2b70e9d5a0b8 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 13:54:01 -0500 Subject: [PATCH 03/17] Add Component Views --- documentation/component_pycosign_attester.png | Bin 0 -> 31698 bytes documentation/component_pycosign_signer.png | Bin 0 -> 31677 bytes documentation/component_pycosign_verifier.png | Bin 0 -> 28802 bytes documentation/design_specification.md | 17 +++++++++++++++ .../puml/component_pycosign_attester.puml | 20 ++++++++++++++++++ .../puml/component_pycosign_signer.puml | 20 ++++++++++++++++++ .../puml/component_pycosign_verifier.puml | 18 ++++++++++++++++ 7 files changed, 75 insertions(+) create mode 100644 documentation/component_pycosign_attester.png create mode 100644 documentation/component_pycosign_signer.png create mode 100644 documentation/component_pycosign_verifier.png create mode 100644 documentation/puml/component_pycosign_attester.puml create mode 100644 documentation/puml/component_pycosign_signer.puml create mode 100644 documentation/puml/component_pycosign_verifier.puml diff --git a/documentation/component_pycosign_attester.png b/documentation/component_pycosign_attester.png new file mode 100644 index 0000000000000000000000000000000000000000..dd05e22dfda002d427f40e8eaaf2641256978cc8 GIT binary patch literal 31698 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 literal 0 HcmV?d00001 diff --git a/documentation/component_pycosign_signer.png b/documentation/component_pycosign_signer.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa95974a3a0ef48f3ee83e13f1ad0bfe777c78f GIT binary patch literal 31677 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 literal 0 HcmV?d00001 diff --git a/documentation/component_pycosign_verifier.png b/documentation/component_pycosign_verifier.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc1b62e0b1240727c87b0a35370e9dd340e47e1 GIT binary patch literal 28802 zcmdSBbySsW`!%|3MM6(%qdRASEE((t;pJceiv4NT+l+oNKxF z{=NG>-*?71=ZtawID70d*c;Y**7Mx=6?4vO-pfZuN*Du;01bgaV2Fwc$RQAys1b+@ z-q$a}Z~FPC3g8E=m7ucKTT?T8BW)ckgs`@WwuPpZw$}YO_V@LytjsLA7#PfqG)=6m zjg20^H8r;BY$Jus#Oli{TmAEU#09vHUF@pjsL2f5E$1O6iS5w4AC^;Mk}%%g|8CPK zIVj~%ElN7#{5j)$do-oOr@Um`vwchox=#${F@8uidAG}EcJpSBg&%fhy=~IIgYUE; z#PM8&;ts6{K571CO{xxlW5Fbw$ppmY{xz02)ZI>d9@3Hfkq?wPD;foqb+=^DD>FJ8bpt#V3?^1;CuXo6s75EjJnrC5*;inn3 zq0`3mD^a<`McyXQpLM*W@d8J<7K!nW%Sx|MD#F9GeRVxy@X7N{qD$HAFI~R~V!p)c zREksVqbgKb$C3M*>(u}`h7H)E9} z#CcMgurug>-{?;Cr4rJm#VkxQ(;=VAjV$eM3oCMe*d4MO9sGhiERt5~9^X7o^f#Fq zw79U#T6GE+P0I;y@G9y(BDz~d!t5hsCg8zY`F;Lp!*VKmP=5cRSZK0>myKo|-UOMp z=RAJR?Ysk(XH>BbRI$>$*skP6Brf%R)nd(IhJjCgMcED|8%!?q6^&k*p7j>wzQ~R1 zd%1?v%)~$5x-j&?fPTIetCnT;@56l#ttczQ09F2-g5DJFkDGVc`lHC~*>Yb!5fBv> z>SXj5l~Pf8Bsk`_BdYbzFO+6T*PLGd;1+nMc=&z%qQ>tfTka#OCQr+^KMdbJE>%2jR2h8#D75(dBf~Qx zi6}=uJ{<4ayVdbzgd(-bIhSlCm2XUK!d*+6an|6@h@!Z%GPNMf*-SaU^8}T>94n_P zoNzNbdeWjgi&C8MW%k_eHPYUJZx72IdvrF>DfalBeOATGl*abUcn9Atf3_ax^7c!y{{1v7EiNrdizZ0K4l5s%Gt>JyHx&9y{Sr@M{E*EVD>lJy7Ox}W&|zM$$m zdHuwzp$`(Td=NoAPZ5=sxh>6kNF-##PH8T}dctNf>~PD1(UN@*0707T8>u>(|TL5PrwRG@yYT=v0(A8v8? zH&MUOz4K55^=q4V4L9LOjZ}~ws&owBz-B=Gn)~_m75MR*>hCuTaBhxNySkd0<;Iw6 zcg0sKd{yMOS(!v~!i(I#h2F{e{Q2|ZqFz=1GZJ2>gVo}RaBA5%ow1xJT&Sy^Qd4QH zt*z0}&^TpGsaL!F8XZ0ENftgqRYOD^{L#du&DuXvGKS3$k6~UMbt6_uvGPmtc5%GU z4u@NF)hAm&zP&1s=X34MQJmTC;tTxnA(GFPxB5j04xJ*4e(!q*)a`crSjeTmoi4Op zANR$f^JOsVN`Po_J!>7xSAnbOlfNprnN!mH6cjW$H)nmkXY7J{mm5iF2yG=cLt9y% zZkLqWk53fhUlp^jViFCPSugY0Z>7wQR$4C)K6+JVHBse!f|gC~?dR(|{pU7!KF7+N z`wXQgxDb$#@S2WSEG{kv1qBt4J1j5fR7;78B`Lg2mr7NbaM})#i3;;4c^XZU?H`B?-55;rrB!~6jgQ=U)&K|yeLw~PZO z76}idPdxh9@Yq-$mlM0p!CXy#2Z!y2uJl5WYgjslo^4;1a?;S`1LA2}Z|}WeGZ|CP z*O4^8fqFy@c`A*S(aJi{n|%{mD*1V)=*N4j;$NwUG(Dd@c~Wq2a=2Y#zb)4ae|xM^ z(PB_!I3!iUS{wP~t@0HttU!qJej+_s$$ z4>Qec+%6cAulO7u9`;NyX}9GTW--y-m563pI!|!NpVPc@6Su-@=~KxqxS?lw1a}z3 z0zVRQehLlk&v;1{zBpE5?vWS%K+v~)`e1V=WB&KR*I(_$Q~?12zw)$iid!`W5K@g3 zSZ>cthSPd_d-n-ZuWxQ{CN|D@#Pp5)D!0vl%Imo2kNfiF%l(y~+Z$8-eak+0PcIbR zZd=8^b0?6LZ*6I5iBh!UOD9}ueXR6lk&%jO)~oWO4VHUi4<7M~qSlF}H`4BVXp2@= z&eI=X26K?oexZ5YGc`5O!~(f&*CYbDtrnlnjTRZd9T56RL^Dp1?{sKU6mCJU*qbbj zrP?0FO!f4mkB=svw=A0??4`@;k?}-ToWdO{jh)NGLN;q-t%F4-zeXfK*?D?-s?9 zs}}lZbD2#d3%Wp%gfPHIDNQ2koredv?OJ=)MrV~~6+w=54XkL}E9Fy`t zUmYp@)!vG~zwXX%GWOxahn8USYlb4@F2}2Hn?Lqs9`CRBvE^&E*0ohuR(fJJLCM0s zcaNH-6}5)S!+q(}lAqLnPt|+JaakuheSPMBF?1Uh$|I2a-wTVVG*Tc2V7KS~)Rx|7 zZ>Jl3@x**Onq*8-)i%+v%!VH#CKFYwb8}%qK{Yw3mv;+rW?1}e@Ppc})#!`kM1y)Q zCA^l7N&~{rq%REviE1C8q2$k9MKmd7%4a0+!9!j~2$`>qmBL1a zKT_MGLm=)GQ&TBGOY>j-nXd~S33b_&OLHk`K6q|Znvs_f!`@p)e)#w`8;tE25G(xl zMUDRGukG&5BM^IuJfm-ft}^nVTOtt0GV#Vw$S>U^@!~|dIa7BPMFw9$$Eqhn)bNJt zsQbGyPwG%*VIqXQ#EbwUAOamiGNO`f>Wn zoJjSjy--)e`*S5TqUX<__w@8QWqeKg_8D_ZoVE5pSLVR9wcQU5y<63vJ2UvN zyKZ*Zn_V0rb1=S!K+MvhZnxI_J^`nL^#_en*jxL*ukPh9#2!{sG%eV%GXiy> z#9=T<`}f^kOA1a_@?I~RoyfcHp_+1rGGqx4Pv4wcjxw8by7 z$riIM=F<%~iZW%Bg#enYSMFpG#pK0o0j;+6<2X@!M^Y<~CqJWb=t zfSQ+)kzpho`${sBF%io6%6Gf4OpM=x|I2fD=^2d_=mW4^tc6_!cvRqW>Y(WIyPsx6 z71mogfPfVq0UF$UFE6wRSK0WT&1TY@gx@JPMh>#`>!19z7+t4KqX(N(sBWl zg5Sl(1<-ZYNlx`yQnvHnPu)8LfQy<3<>Fb4h8Z=(oyE|}7is2K1dLVvp<^RsvBE6NN9ArF?{g+jE zf8!j$;~VJccfYyvIqt1My&ZlF?-cF0x|@{EpYq@LjvD}-Db=gcaA>|Qf!BE?Tdf#? z=RBZwSoNL#^7X2>UkfNSicDn~Mz{pT{vCH8cRn;xNyo%uWXz5RiP%N1-{I%vSXO)ayS5u%Aq=*o64W8-YrPU5mN4-Mvv$*Ud&e zLUt2>Kfjr;Z7-TH{?ihOpe&HD1-*a&9-;v@D-+`41$Gg@1KqB8A5~?qk5~Sw@f?@} zDoD zv6BL@zH5J%^bbN(s$8?1GtGvBS@;}guT#as^te$_(ASsC`G^IHg+S~i^BAUU>s;%` z`&0P3ZD8{T^L4v`2jSAne}TN^JK3n8`w?;I02Ps~Ex$;EnfuuY*`NMl#~o@aJ1AI+ zr~NwAd-wN%A@Hp4-@hmQhQ|xu%E}&U#|*N8FfFWKos7F;eZ~4ZGSjC})8%Mq2^t*= zra{>OHc8B8Gz_1cb!zw!fuPRg8TD0(3BItBBjAHQhV`nP={MT%TUGLR8a3l%V=Dk6 zL7+#U8fqmA1yD*vnk{ydRRNl4k&85zWP|o=!)!F1yFcMN5tL9eY!UPF$?wa*(JEc+ z)CL#>{ruFbT~4VIoaDZ#bDEm2eJRfv+g^m`)5-k~-yVQ1ke7wnH z21o{|CnVO_CxoL*^oi#I{Gm{@fWZ5l9MdQ!Z748Me^m?llrJMDxuE5AK%*y*WHVL` zejo@1y*)=}9nuk!)G0&iBgs?M0=*tUY+H0IFCsKuR))WehETGajB&tHz!DNN>$D?X zPs5_4+lDS7%rx8bvme9tPE%7-cA$DgWrn<47}B>`>`u&7__~#Pl-Tf1wa@?n`m|%) zsCQL84==AvUz#Mp7dj2Hs-n2qHeD(X_mQgAOcMqyliRXvyzy=vtnN%}2o;cS=lx%{ zOBbr8zOot)78nfpG7R9P(yxvd=P2a>cHTd*UZOem;+#_pwYFXv4rXF(tLHu4>4T(N z-o>Cnxb?y1`b>qcicmp~27m%VKd?W3XM4V5`BynRGPAh9zaQ#aD80(o%Fq0hGOM@V zno>Cc$Il3ubtHb3S#Qs_Zg+C83kV9nDlv19xrl|a6;N%6iuxCy8|?5}GO&ehCe7VkCB;JJ2}hu|a1?KY=@ksQEX zWE5lAcd;SNwBcFEAtpb5hMim5#7L`v;>W7rn*ya{$-$Cdm=IM#;#l_fv-w3GC>;qjX@T} znrE}EA+Q>@%Y)fwQ+4nZ_)JgsbS z+XpyHlf9|p7cN|I%5cuss2mv@vW1Ft;>%+BP16N1Ei9LifWRzNcMcA_gN-R@-!7Ze zSD^INY{KO_S;;+?QIZk$O%*7{)eoFuHPaQdRh=?^5p!Ckhy*`)nIY$dssOE!S;|kiO6t9_&LOW+5AOi5|CJeB<;CG;ZJfRHY!az&>ZQHA!j8R* zN4v`)b^Y#34=f^VEjwW3v)i~&p#kAaqgp_n`ewA)bZ9UDf$)WR#Y+e#yVTQ~1Bza# zbjpPE-0&g@hxS{uQ{u$!khIZk#z$-A>jomXp0r0*pPxBGF@-jMfV+rs>=pWLuf~x2sKK7q9My(YY{p|fBOJ3D4D;dvI3cHY5 z72C*IJP&yanUlhf2z6&Q9e3(U5`?>&fy5q`_;WjZ`%u3c{qVL^@fVs&T~8)Guny#| z6}@RhLn0?I2-!C1vT7KW?&9I?|6r)LTI_ab%Dsv~&>sI(ZME4KfuIBpx9A?9%gI85 zYi9%(3U1)g%Inp>yK;gi&e(1o5fqebvpUk!(gOP4P_|kGQ!d~gR9(yZi@@$I4>8cv z`Z8GCK^#eE$fZ(iOGrx24OL>+t9wAK@|_(dLudm?hw_%dZaNNK;ShE==MSm7^xo6+ z^k_N9DTBGhc3lHvh|6Y$`h3Fv-n{;EXXuC{k6)F|cEl8G)_dK=rLVDmjd&gKXYqQ~ z)YZp8{5g~pmV*|4dc41#D)oSjED;1+=zxwJlNYMjaL_GZ$tdNh7G^>*h6U8`o%JSl z`4A8QmC?=c&mHiWm6^{7$;fm=JFm+zdno98w-ksF@;8r0h20aamY_WCAF9U}5a^c9 zjm^zD%HQ9;@bhWfbS)4_I60$`Q$`R4 zGYbp0fH7RIc-fcP@2vm_`7u&tERL`2hx-V{(S%DFh!I-%|G>GFJA2EWA6-}b0o8(# z(h$Lw4nS8f;boWQ+`ajw)uq04K-t@l>y^Uz%AlJlW+?{;1=T2BMBsf!u}!a?TR1p# z>+7z6a(srjS|40@~ zn(dKKfF41X^hUE9LLG06;K~Qx1d7NJgwkCx#`aYPN=lup#O{O*`asN z1;o{)KYSUF9YFV!w@n+VoeWSG>FKk8lmQKGVzj;NjYUerq9-#|=Lu>xFQ8IX!D2jxhzh1TFEae8wkotZm36qtT*O*rt_wPBG#5r;avo%Mg#^)!AvE zh`DV*WAoA=p!4zbyJMm&h5_BJljP+U2MO1oS4p96K@7nM<`v>oQ&4CFet<~p0G%EF zE8>xw*N=@0{!p&1XYui48vzv^K3KR-K!6G^7->*S$4k_ofY^58>o24t3-a&j$w@Se zJ~k1N#I<*59`D{kdA@k@A_}^b3u8KLy*P!G!=?}e?iDl$ohVlJdD2 zF;QuRKKx$30lIhJuV1Irjec404*Ie{Np=FhvvUBC3?Tg!AoG$rL>rKP4#zzs2Oij3 zNaODqa*E9+IfX!x0GixP2HR?&%Jf~OT7l&!DYLH zJ?=<;YHm*ZfYc>XvkK&hcUNwnE%2RB4QUgJr9cj`xttupzFzkXb@eCaR#Z+=7d!B$ zWo3mJ$Oi2Y1rLERLyd21GaSfdbv<)x8`zrr(QJ|?=xP1C{}AY!~yZ9+Dq#eTl<7da1vKN7)6 zDp%75k{lLAI-11?8D|d5(x0WmEG^wtQ&R(Dtq@LW)e^HrnM9}%NatM~$1%8hfPk*2 zyF;?FvT@wD-(-`o(vbp@^u{E1Io(ytblP8gC00%H)M0jQt#gZW1O<^)I^Mqr9&+ux zx(*5q${o|{V}gvTqx~R`>pr!BouOWnK1Fni>XD`J)kRfSX(m0WSb-3-+BiI zN`t-t#9E(8R~7b(9-6G$vXxJS+ou+&MK7@`Hk$|mUfK?0{YE^K;LHFWj^G5Ac6!|- z7B4P;dEjev#7GwG2~@-o-uZ^6rp^Su1cpK>otGmYygBC{gT{+_^QK>5Af7@i0;&$D z>lu$@1+;8>mAr<=M%nn;_4Te#{?M0Uj3JXJ5(twKv7BjuEtHmJ>bb9Ho>bDkHjHE6#3tgg3+ioy?p18`)1o7q71M&wsYBM_+-q+WQV5ne^pRTl zY0UK!`adFWN#6O%0w1XB)8fWL3umDIXdEd6J52lmsb1|8r!(8%FHh)NYH@O~2{3eC zyw8nr9#{*!&;_)8=Dle)v7(BK3g5dla#c?D4)@hR4ZxrUBBL4>DOAd5eFxQ5h&U}O z4(DSE3?^&bUrcK=og31ozFFBsiA_2Cs9B8PRgsE&VxbZADlddPy1GmO_4Ya%4@b>Y z7jnoMCE5q>-NwODC^Q%lk9hp6+BE@r?HlObu<+lE00mib;o)Zg5}>7|oCk2eVlF0z zMj;m}7-b|<0ZjGQ?b}aY*SG}*-Eydgi6hUFtt13krBIjN66FCn7z#EoMamNuEO86K-v&ay~v7Sn?9DNMRRG{*cO!zB4wgYjO7w zUNB9dN~E$i^R8%nKE@Q2m@5yZ?a=a_E$$E z#tFV#m}x8Os=2qroP){rL~1+k;4K+>28=}yGK25au?OebIWYbVviok@JwwTrf>EqvAk*W#|O%n);Xy;NYskDcGR$dzPPGlLj*Qxi}eU~mP5OXtaI_ss}9(Q^;?Bz8a|=Y|`; zZ>F_B5#s?Vx@8)^ic*=FRO|^}NV*qlJ~lBiW*BUf6sefR@%%ZcRqv1fcp0Smo!wp5 zjVtUR1Cx-D)D>1zZnqn5Qp&*+Xq4MLqT{ic{V>uX9(?fUzTl>&DUaISI)#=(?QV04 z_AQ^zhDg)9aEG`M&5~T0PS3 zjpntyB5&F8$rd`}?%+P+4NxLHCN->A9~&Fd$O?-Iva6*7*7%5-spK=XD;#>|?qS=G zD#!hAfq{V~4^b;tS62s`xeimp4KAz2`>`Y-wF3HxVl$3zZG+v-G0lV=DQF%ZR?buh z6u%>0(E@b$_fQVl9~{k@qR0Qf)yU(EGF42_ZJaR2e?;A7@bTgCt>7*JmGsVR(a`tI$0G%4TPu`+cNzZLYm6YZ&3;!&C9f57p=LU zpX_9>^>Sast-L!0;Wdv+L*JQcXios7wsv=S_x93QKAZ}awI20NDih96&r>ctepme1 zaPuB$7JER^U%LQLwH>z?R2-U=h^|3fyOJ-X~2Y}c$FznGok|x z5$!HDOx&+3QZ4Q}Ub`;M?}S8TKI6t&qZd?pS6Q`f-Muk@L|X6Xeg%n(&{C72o)*06HtE z2)cd+`?eF#Lt5kV(Ca;KI(%VSVHQok;A9uV(W2fjv_;peH2 zcpXCeO6a$N$a#p9qg;V>D?BfbfPgp&V18#*B3X01UM(#e-x_-kmX>Vg?{!*LO|i59 zp|^+W0DnIpyj%{T*TpjmwzlP@y0ZQ0#aYu> z%^!u_u$(|vNCmf`YHfj{5gDn+#8(gPn%$YW{0H^^ckjXmKkR0RxrtIsU62_-=EttG zVetZ-39KUm)Fzlsg=UT%lB!-n2g*CZL++t@vePFGl9f#@CyG_Rs&;vbG!W3op9hMz zx4o^F`}#ul^uVvjC4cVb>Dx_`3tQ}+xfGj8prT(|M%ta{EKcdH!xP!(PDIifymXXS9^a3Bd0Dd_AfseDoHVq zeEE16HBAK00LsPw&D_27y{-N0jIHAw_2CVE=%l={dts21{N9*1JV6&Rg4rU^GK&|ml%e@HgIU<1G^_1Uk%LnmNryqIal87mMJ^|Df4bUNB5NHR4 z7Wi&K?-!UYKHeJX<89AKR_3BO%N7j@`*&v5H#PX7>Ejq9)kR8Q1Krol2cfDJ`ihwu zV|j?@st;bJmcs~S7`B-IYJ<-mV4^8K&)3^xPo;DadoZy{a~8U)E3mB(BPNIshV6-w zCLw!W=w=u;tshy-(6>uUNUm%? z_~1bj^t}OePLJPkju*l$eMhPv#o{CrvRk{Zzh($H>naBb=2 z(NB=d`!f~%7+9%^y*VkC{~jnD@a~p%&o$wf-Mo2oxhJ_9MAk!`Z?k8o$DrjT8I=Il zhJnMh(j~VKTSi}J{Lv=`l9H2uo<^y=uhl!j6ch{{+?Mm`)ffGjfp~(9_ZZ}85JYTI zk_Rgy5~P5#t`>xpCQONd%>nzNed=|{P<`^i)lq>l1rneuia8ymc3>V&#v&I|LUl)X zz=A@>L!8NrK&rlj(Q8jUx@7YyA{q8{ z!XN$PB+vqYqr^;F*XISKV0%$Es0af2GR$qjA`xJKgl=_$W`+-p6Q!T%XR73BiCS1N zRTI>Nf$+V=Mb6&@A%O%f#FJa$-7ukPMeV6-zI*CEW3~0NBIGcb5Et9nsZmu6bY<%M z_g}-*;@jbN4odp_M$g5C65D5*0#48vw|91CO%C*5+uWN6FqjEKH{gSx&QrD8#2jXy zfqU(Qo5IqsL_{OheL)-c#>ZbV1qA}N7xr5Zt1q_0Qh+V8F@hk%*~|XLixuBZjowP*z!#v--dQsQNhHxGt4b}n7UnoP~ zq4lH#@RjaLM_U-Pfd*LGvYvDiHIRYH9#J!B7ySJEhjKG{+l(mY3^Mbp6O;A(B``?? zWv8;D;wt*R&&OCK2o3^hl%1%NnsR}jtd`b8q=EV#={$tlBe|68RV!C(fq{dr@_ThP zAi??aTaX4<`N%J6m4F0=Djf{0-_Y^rfdVop=T3swetxI~mEu$EBW~LNb3kwV2#^8K29V@BLxugQFCeZ(G!SmvCw=<}h$Rr8e7&_FJkfC_; z#Qf~!(B0h~=RD;AaflIV3^54WWcoRb1lp%4j<%pz*YS2 z($qx|M0=ob9~>OO%RmVqvv$e4(Xh8ZK}tllaut&v90M#On{lS95FI8T!C5uj0SFj^ zxD(zugT5Ua8Vbd2q|k6iS4&+6{;{%RK^h1e82p9}%MgVjkW#j4V~*F(=EhV#Y61k* z3UKMvkh?L!$>u23th0E+1?ts|I7Ua0*C9+~6hSqMC~L?3P+nf{m2&_I^9rzOTaDiA z*7AMlf4h`(-M5UE^_ZESIl%1D20-wk9KU6aCNGR3+}zwC*SG0vN_w%qALGur^@-Bb z(nvVWCacd+*Fj$@G9JYxB&5qqGA97W589Wk^@2#XmPY7D`n|x9pc?n2h~BBXYg8j# z8fx{>jlUH9Bv3MV&ko*VkoI^8k~(eF!U+EW?sZtR3V;PLOD@h$x|$Cq92HQ_An`jQ ztj@bYnEE*a?6U6-sv1Z}0?r+YbO`{bauJHLx(Jp9yUKEXS|WV~*xAnB{#TWA4Dx~) ztSh^4T(CQ6A*d1EpPA4z0v3aQJ>c_B8Ht=*jDSU`<}|9$j_9f{qI>(*12&Wuh1r+G z?r&DWu@DL{U0eW=rE3UcgYcnmJMpT@5e^X%eTa)Q%9`p2Hkl2&-hdOo-rzUqDa6{= zptd>DPy@6hwimK7XUXoqA*v&F!Fb$hTTKHm2AXh!YB}guN)AkQ4&dVGBg%xL#X@`+p|FX1wBCjZ7K-g z$_4wi!7=DkP{YFLRX*7SgJx~UJoWfSXdy^=DC;3S5)3h_oer7k@YZc19${_-1M>7b z)C2{pH;lzW?>hlOSG($IsH-gHa?Gc-h)*Q6_^^E4;bBmw)YXy7<-m_oQ`m3nQCmGQ z9|4T3s;q6CP9+ul!QX%ONK&s5Bk(V5Yn@HJuA^P5y-|Tm{ve;VJ!wERd-f_ZVwB=z;g{40UyNtqusQ zgwoBnh56y;YyVJ867YekX!i`fUN*iq`ugy|G>kzt{ea_w;lYC0^%+G9jZt+0agnba zJDRv+g3SV$!m-369-o5sS}}qAJV}d<;@3K;l4I>T`|vFCWHdCbqoXlml#>+R4hpJU-+rb?UeR9OR7{oTCVCR)t9hWyN$710nkUqI+a)TP7Cut?8OaKLM zqtPs-G#if;Xnt)tB{x!m#@{Yg>H^+5Qf)`|ZE%h#evxsfyKL_iDqboobkPk3V*+%v zs`?jW^&W5(O`F(oL}UT7sAcc??0DUBSKm-ufO`8a zj+PmNn9IvCmnewl@05_>I~yCHuK|sC{pZf3GJRtFlvKtt3MNWiEkz|IF|J?dFrR*3 za%)y4z`{LdHyH7n2jz?dM0F^a47LWT^e^Bgbhx=@5HXEUg6B;xpp1(R0f!4{7gLdH%3uB|b zN1% z&4L-p)ufTJw0l$+4ku;A6E)SFU=>%*|*x`Td?@iUBfN&wrQcN0s1303@1g+owMh#gP|eip@kaF zb;Kw+1q_v1E}Wd6f)nd0*e*dQ<3d(BnatCr>J6aG?sT@cw$N|(kO5H9z?VNNAS#6N z<>!Lo%kP*1gMj5THUmQrI3=XOHwjk>-Sas&m6bRXY&8-qL+XIh(};XF##f z<3r%kso%cHrTUtgR~E*#?Zga&xC|Gr zxea!Kz8exJIcJmoB^)Wm&sJ=(BtRiiE6_7PKXWb$7pI34OT%yirL7n=5=L;zZfuyT zs%6Mgs9M8F0FHia+JImd&+9Dqb?f;5qoNCf}X57=|{dehNkvK_MZX zAK?MUoB)GR7~*Tzs(ji62S{AQ<+cn+G({9D>f|IRmZM%;m*cVX{Eo>V zAY|3a-43w{&m`+aVuX%66U5|&D%?yv2b*tQ;#yGBO(Bxf@{SGn4Y9`eXrWPYtRX)! zQ||-cp-4r7=3fS63RV;bJEk+P7BUwF%nzW4@WF5iNkw*^ByTJhc5q-f!n7JqVg|R@ zAMOGk$=I)_RmQ5yA1ppL1|w{4;o%9dzlX8tgF9=V%b|LJ$KD%Nq)Fxh(74{jp)GJd zcX7GG5mV4G1>R;a1$nOU7+|eJ@7^C&2%P&-mJ{xOo4=ZE`c>#7975<^Rlw zuGqK9#)k(Zq5*wyb8wUZTDz{zee?Qtv)bbeT*r(Pxtbn;(BU)!Aar@aVpcn#dBig7 zcEZsm9BLUi)PaPENvM6$71B$hIn0xGw#g=8%4Z3s)`>>(m01cDkoN*k$VGbVPiXe{@-n#W{-P^cg z_Q$|jmGkJ2A2)4>@;xm=xmQFG-M_%K`Lp_YDM3B@HdOa%D&n{ZkLD@p5kSrW@pORu zWMjET%b+*qhC>r>o9x;o`Gse~t|yz`8y*iIH;UAs091z;p>!Ugu^X`uFxibqGH+Y39p^g;hRfHk?JxCtBQMx&!nou{AjCDw@#>>khBkw- z4KdFO4y$ojwG$;D&}KFTClRr9nBb|dK3*#aNmp1vfclJ%W&Bb}G&CBp!t@LcDMdTd z2$xz0To%T?bEh6JN&>D4_Nzr$%tM^l3@|&xIdd<7IV0qkqjRM=<1C}Jgv3gBB0ucu zPt#r>>!n^#x(mXS{^keZ2Xv^PpP6Aco2-GI+5C#UU0r)==s6W$^t+N5bJVs?!IP2T zt!W4Y?eb%<=34W3Z6{Ev6*wq3-;VDvmZ?Cu$O#cxFilznGaXQ{ z_X%2>uqePP8!0BQ$FgI>$aNGZIAYaJABm4welol4E}L%DSObLaHmb*=6)xTWc-b2O zN&PPG@s%c+m;2r%VEE53sD! zgmy3EoF9>JT-Ob(2a{7VP;fAp?sx^1@3U6c{z%~CbM(0OSdd`gBrmi8L$5nqjr|)H z7=~STe=C^Z&kdIlA+g5JSwG@CPOYNymeySd=4eh!op3uS7Ca6+A96JHAhJ*%Nf-)v+VaK%Hk-kA^q$t~=6J}G zin43KP#E+tT{t7>i^uTMuTuRzOXi_AjXq)SE0})3naYx-_{1%!6Jn;>SMgJ=mU^w! zw`N=K5EFOgFmti4^prB?UzskG%y18h{!* zusx$ZOyiS1G46Y-quYhGAO3l!RS@UMoyNjIBLt4cW;kdB{uk(AwK*l+(LkJfg3)f= zm{KZ1;Nhbl$7HnVQRMdCN%?qLSVCX@GL!`yoy)=0wJM5x zA7dW={YbJB68`Dwx-hYW3bflN&G!nhQ_h8tC{H^$Wvqe;ZOzpUBAdaL5cwooK0~gm zsw&id3fmD*_;92|xk3*IrI-{fN6=cof(`~6oT;fP78aHRJFFeL^k2~%Pyzhy+O=yp zBYwC!%Xq&m9$h8f1g!>!!(!==&+MNGC40Q^_QJg7+OAcaK{StEhu|2glb%eY#JuhD zT6d&wR1*77wgpst{(K*=LZIokO!3Qw?bIc5s0$AsOhcnML2J>ol3DC7F#7okNhZF^ zsOx|GDwySQU4?O2x^Z1DDwyl}Z(O2EdQ_46SKzc*+S)dEpBXGOkEps&>0_cRU??bD z?e-g~2^n1Y=aNK!4u>`Fye%d!WjYg~n;P-O!^z0*(lfjwi9!k6?d`4#@89G~u?8+zY&1xQlO`T~k|0;>xcmJ68W&;tlYk3}QNL_vqgP1({#cKE*Ml2>z3;oLo%r(h54m2pt^UDl?xV{G z1L0-^Mn+*aHlx9Yd9Dw?{CP&qwcW-1rCXNp7mC!(#LPBC`*M%*%j@Q-Uj+SYnG}d4 zo7}qF;cm4vxi|xYKmS>Ojw=e+*aN1h{@Q~l3bi3k8{z+X*Tv$Y&99H9GJg)!uEG)x zX`PG6s3r6aq7jWP_vrSK&BI^B#1!}y!Y)J(C6A`vnnwNNes&kCz_h$nBfUKRE&n@V z-@RMWKaGXIwVwU+u^h+V3D5q#@7}R@aRF~NJ%us3w6XK8lFE;NAK%m0g&n0l7JfH! z& z_)QDSF>nQx@dyUO&~KF!?W%3;F#jk0Q(rk)9RuD3_1$cBgw@6KQVgSJ9SD*Ka?FI~ zdQjx=PC4mE|6L<=3OZgeoo3;B;yYfH15`d|=#h#}R-f_j3Ili#QNX(FFal(bFrXXq&Y!mz;|Q%!n{I?~Gw*U4u++VQMz|9Tl6JMTaS1-t+szTcZSzh9M_ewy=brBTGefm%f`yyd-sD>RJ zZdClH-kKvq*x{atDpLMMDk5nKeQ#jkXjL^MK4mRZVU$!<)twEq)YL3jfX>r}Alan5 z-zFjg4sr~!m0LIAdR_^BxoHE?;qEc(__tQDiskCXO2n`QWFNud1mIRgw{Md@)PTmG zW&n$pqwsYwh>RboG_{c~c<|2;yIkQs-#OR_hrTMA!bG}`)-W3;3(rlZ!P2RkE=4>t z1VX`=((bnDZT2YJ9dISL$8kp#4Fc;(!VL=J}9%lLAz=+mZ-vh0{>vR2&U|@lTh6aYLn{jtl5_ekQ zYBo{VzYng;p@ycdsI!tUd>Z-f*TbG+knYI6^efx>1ms`7NEP05X%8FCe zjpqyom!wq_kl~+-g42t5tqsBBggVUtjy3?VN)^6ktl+Ke_W{9)7!W)_M40J4p98@k zzU|}(95!prq@bWUJUW7JGAK4OWbvVYRaO9B0Aciq_+E5>gU=AezW#I?x+$3RVLp&n znQswd?}h_p3<4GuWPCmsClFQihqkg8eR`PF`NiD_UDE)Q(UQmgAf(Qqinz1;n0|RiP;qJIS``~ zZ@lruk0Y1Nu|0;VMwVa?;5F2D4KUwTYrLJ%+YqR&;aOOccks|UaSwq4C3?Fc!oY0D z^>8jCbh(@5QEZo9kX&E~e5VPh{cu6l+8ol=- zU9_mJspTOAcoMdGZl#w3s#PE<1b$|1H~I$HzbWCu(JoxX-oY^xkjcN^g!)iAgc8VDm@f zWDJ6ReIoqag15S zD(0P!?vOG4>a+)c3d+pAr+g;Ui(mX5KklL4r$Z2^U|Sqp2eBDKu7cq$y)R z<2_!}~;b zui{9%)`GlEBW>gU76HF|c(11yl841{69Nm#UK=0HDN9sjSy!FB|BUzVil0!nn+@Og z18H;V;>CvZL37lBZh2t;H12SC?cuJzo}L~|<%U(oEMOqn`tgqBJD8AT7d2ti|2A|$ zzQCxjtJ9N>wfhBfxgSFnjK!Wq7lT=~v_5HSlM#;RN4vIUb_`J2gY_Hd={L{CtKjU? z3gZtx*OA-C>Uybog>gAiUc^0#o8U9szCe7PfRN?4-m_>eZm~2+$(#gLIKumElmF$7 z%H%gOtSVgY=D$oH`7S;sS{)kkWWc?{5T&H~DS&P%q~G%|rcg8h>Oh9i!3?ff9PJk@ z&rfiOsaUV4ZX_6|>=o||t+F`&?JlVG!*37yMd6UYq-nDL)mvwMl4(AL5m~gGc^rq4 z?F=$4c&$*E^>N~iB-n&0ORbl26^089BV<0=7+m82{HHT{skCUVEr8N3=R8Fy6teqS zJJ2|4>Jg=eI-Q|+yh72v@j;;g2`GCv_nq!KwoY$6H(1U$afb7HfCt1wsmW$Fz?+X}?E6CZ-3K$l>*e>t$E~3I1SieHw6$(f`Ca39 zoD6O|uLyiI52y{v>?Lp#C&>*CJ!F-aAHyvTXA0#Y1w@(gFl3_?=~KYlNY8RR&+c%c zYgL57fE&pS9XybftIf*F3yaj`(<*h;8hptP0%lXF)3hMCc7{-4UAZdg+1h)U_4L?*Den?+;kR`PH57+WE z(JsX!zF|Wb2j0=>ku2xm&tTYh7mmpYN00km_k1xe2sX62-3jy|aPN?FRaZ7=2IV0hSsnSZh!fywyl%U__DkPiUS?#BO7-j&Bw zxvuS(Qih}?gb2GRM9Q2YA|i!kC_^@7ENw%qBnfS$WX_Znks%VBM8@5)3|od|+!>OY z3>h+<>#g=Vd!O@t=lh+1zTfxzegD;3*1OjGyw7t#_kG>hbv@&dCq4KYbOxqZYO3tk z1zp_E-g4vo%$T^j$cX!OJ!{E?1zU@De{pQ6-CHMj=!7m_OVRxEG{;@_f|LW31rIrGo&uoqy*P0ru6XK_NLUd73ho-8<{-$*b; zo72@JDhda$AD!ao%dLN?aS+i_ZmOQjUU7V{eTMq=YV!iKclFxk_r|?4m}$bM2aKx0 zP0pPBAoNcgLHC*DG7Au|uq&EF;=m4>ma6CN@%3A6x{0S)h3%I!vVHPFvezT9O)3e!)wrL;M=lGVM2OI;F=fR4~N5c1N+lw#A zh>RiGJ91>*mzi|Pn4@2C6c_*EZvAV=&ac}7i6?>t<6mWAy>{!ff+aMW_oOtOI6T0m zU@v({^m#A8T0l4iZ&(41aaO_ld|h@f{QSG;>X?!OhIbWvwO)6=u$x=3!P;9LPoIO` zEslY}A2qDFO#o({#+6WH#xh~sNa9|f-YwNksUPFsYj%gLz`!oTQZO$&dq;>w?| z#{SB0nWMCL?F~P6{#Lp5k-Wx3|C*G^u%giUq1QaT*nQ~j4OZir4G+KckAdzwQxe%% zp>=j&YRnM<-J;4$3n~4A(5|)X4?Kl%0p9c-RVR^glQ#qLR4UK zA(Dvx)ZgouEkrX}9!I=MeH~{@1xvGDYC>JiR>1MklaRPPS+ec=x8hNq(rh0by z&=4fr`3^Q*kfI#c*}%S;GGJn{VBBZ;sxo3qYf$xDu~B!eGtC`6z*Aa$e0=iO;TGZqK^cu&OELbSJ_V7>`|3TbLOf!dQw`>;ZkBeG~a`h-;7S7B6R;AFWv_3cJpa zo;az;@#i#ZZ4ww89BAlV46xp1n|vrkPp3%dEek@`x<7UcB+2jIX+LNtpG&E6tT&xm zjf^_Sk10Pn#Eb9d?^kzvul0Ad$7uh{Ac4RfkAabh?XCbcD>k#=6k)UQzxW4? z7F{hfd{?HX{qTio^UeF+@4RPplFOM`FL1W^RS0B@98tEi;gW}v#N_}>|0K$NDM{0N z;;D0&?<|Gmx~Nh<@Zm4>^Epg$Zb@)(QZo~FbeVdm|~-PEAh{}qJs;71Jo=Ao$*~Ir5@nQ`!jLqzXH!_i-3TyB;}gr z^U&gVDU*lX+w}_FvwHT2j5hLa`HHYjB^&wGT^L39YrVZ{(~Hu}E1q(j4XV0WrrM{b zNop!Try39JSsaw&e|6-~n?N3EiUZ)j;YaF`AyAYP6B9vGLtBG^g(YffEI_g4zy7v} zN9$=@ZNDLp0m!|BH!DPn*T~{4T2HF}ssyp;2$72*(h^%c18i& zQF=4A;$hpv$+?~orEloFDHII<0sPMFQ-(P%h@B6Tl|G|_HEUd)SN^Of!TbGp6B-i> zb1qQXqJIe&klVbI>1Hbe;xrPZ=#gQWz8lRi zNPl28FdlJ&_~);y5QYVTIw@E(9yLU<04d1TtX^7)>az7))|PpEZ@3Vg6~I4)ixl^g z&EtJ6pqxdZ0fO>5UhzU?mc1)y-+TIXS1tE`ZvqfOiQuc@q1?}?n%YsjeTIsT5Qsu^ zX&Nx6yGfj*eMW2wpU39|+q=Jx*xsGIA9pTIlgT*Ns~Vi zH@xY5I=Wm}XjnP98!ELx!UN9{<5`o9ghVLZSC}`;?}7ai-yGq7wSk#4Ft5c>?h~yu z-I+)8q&e=p4Z6~VI6vu+t5EuS)%&faMXu#)*%qS6k95f$CWN?sqDZ4$pUv;BSB$fg zesb9>;v5NcNH^i7>l4OYs!e**m9BNpq48k&dQqDH-HRrPeX{Q;oJIkh6fB4463IEx z&J1f|BM4b3F(GcE=S`$XQ>tDMc$ZO1>^#uWpu-49p)oLJK&S<9Nj1#2{X-y217*IQ zTnoX;qFsbhoIN0=-j0Wt2&rOf~J7p zuOb@O&|PW{eV6Y;Zky4InsRE7A0to+(t8G4xm2+c(?X1)Gdsr5+$s>RHtRlU!Bhr1 z@7E!MFVQJ(F@-w{mQeP~@cAPjKtzs#AXcX@Df63J^vgg>LV;npDvUkf{`OlIER|rU zh|MSCMA7zxG@z5Csyl`bW3bZv&+ZqI!7n@ELB}z&iu*+QRi*=#295CUOHeyq&z~>x z_;hbOb6_*L#BV_=0r_jUq@?7I9cdu^<6g^KVLaDc9c?h{JcMFx_;U8c-rip13RsQ) zyeSVJxDV9ReRV%n>!uqIz2$KO@^;}2{bW>ZE;_I+L|D=3+XlAXI(E9Fqy-7CVo~6{ z@5D~WL11lYo?ih_1iou?u3B6t-*PQf;|* zq}%3RMMdyF!DKZ_%zlVex{n&6oeB`phMdW|@MA31R_&Ius-#cM2D*pTbF-qbS>Y6j z)h1og)KnGRkvPLI)KInV1IY?WE!U7lX74jB(rPh&f2N@2T1f(E(G1U zkxT`msPX5!1S=ktfLX{Px&{X3&{NOO19esSL_u~!f<>aLKa>MeFDlc4XCXV6j1Ch6 zlMEu@aB+(}yk0Hcje*Kl_uBlP)#z?+h zDaIHtAHJ34Ezdz+{&#HqynM3rc5ObXbeXon!SCd~%%GtaN{dSEyU*s|-$J*!c-(uj zY;@7PWG1d^t|xBh{ZFZxnTFmQ-}!?mn%q3(U~exUY9J>k2Vl}5n3fP--9?ux$s#`8 zE{L&tgwlK%dIY?Ql2!N6AwxK%8m}#9vQ74DM%729QX5@@kGi?JIXXJR3k8f|9lr6^ zgt73~KS5wy-o8^>MWmdGxJ&bY_#gd=pg!9y9o=Z2W1zdCc1^hTDJNft$5EHhKV0<9|addKm znL-o!E+gK3gv?s|?DW|07OmR6nrt!7J|Nz%0WZaspF%rYuBzlrUCW=AaTRPD~LKb z@efsf)nc0WO6fT&kt9j6zKV1{Ebz~a7 zrBoq&rM@4BXl$8f-Ow})w{2`}T3T96OiVZI348lI6q$| zlMTHvDmzj$fuL}+q~zq+qt~uqw`rD=l7fx)pv-Eb^!N4V*#xEvtBk%JA~E>%07qv& ze~$biM=EqRP=W^%riHE#kCIZ9NW7~Tt*5T;-&qYrtNQ#WAnGD4*6m&`*efEUqQb+4 zxgnG&c2wTAOYieWUf!KwA|%6R-uL$Y@TRZ3`(DFCe4H8-oNE%&ST(GZr!bEj?h=%Ck>heD@ zhL{>^fSu;^_&BGewWf-S&(y(FrylfbU%XgM$@{esnj=F)!;>dZf?;WGofH)n<@F@g z3bzl9PneZK2@Hux)|q?kiHVIpKl~2XF!BhZ%E~1ucejV4m-?{T?L69>HLqU-Aqk;v z7;r_X7TvLG+7Vnk&>c0$a~1bB8rsA*(q z_|S+TM0vXCMjGF~g-#N~G1l_rBkG|+yY`0q`p|@gv7sTT=X8qAv+k@Sj77_txLPnJ zVT?0(_~&KKlP42(Q>v<}3=ZQu8@lMkkOci+QPG1HGsv*F8r2^vb^}w>v^xkQTgsVC zZ_A#uGBJs!ux%D>!aPgnrTg}Jc215Y=bAx1*B~BwIiEp2!iTQgajlr9%=m_^OPRU3 z;p4PEqnDq^FHOlT(JhM`OlNHt?ttbdcq@)yaV|bW=!KyNi6U`FH3h9mnYxWCEOMm z7#TxlkE6{AToiU?Pl90LNexQ+ICaX@)U@&0u24=%3-_shy$>JI%%iSCPAA?5LS*SiPw_V)JrV*?5Oy)-L{z1w7C)tHve zWH{HXdVPOl;wQWN2z?CqH)^0m$*O^cXfS#X#pAP=_^G2AE4V!(5lRow(ywV<(3b`7<`=~m(TS7 zuy)J$8B~}UChJ4gDLVg~4Zt!4#4QES-D2to4_+%$o9@4qab@*7V*GXw`NWgBQCD>#j~g5u#1aGT z9SYmmKhODszwo-CxVRX+WYFedExCb*C!>AgA{c;KMHAQNtTsdsqDSJ`QdYLFGaxwl zH_#CpuP+6nj{Au0&8LFh<5)0lDH{k=rO_VV~H4Z z%k|_88#%9LU=St>58EsDdj%nfB^{LzPEC#pVLQn4EjG3o1T(-qd3h=pR})yM*=)SSnU<-BIIbMhi1*;_Ozl){Nz zv3~@H+~1jD8Wn=IPnY%yJ?N@}q-rp0W=rX|ja+TUfdI`JCSh@LJUl#(4i2%gu_8Sf zH`o|C+uNtv0U)VF!a2ruo!Z$+TC`GUfjq~@$B(gO6&A{S8ucZ7GHPE=*I>v3Vdu8@ zi5Ymg#Qd`DtVZ|YfhX>{moRxEeGzl(yk*E{4twv14-a2}0WH>}Z{{Q>VW(Ua7Z;Zl ziSC!%>+OMeA|oT8z4)D#DvgvLiTwsv)<|&+UObcT>*7>E>nYZ0zx?tRt;L219en1Y zXT*!fePd(WAPHpQk-h8q`3!egp2sJvhKBC$ZlLHQkEdH5vPcScRK{nGw8}_-PY7a@?lv7XuKmFwdDSDiEloTCW zLuM(BsD5k?W;Mr3TP^M0Vc^jr^?WiY2pWM?Yp@o8mqIc7v`xbU-L>dDoljj3u&1P? zR8brphWNZ^%N$3pzmmGo=alq-113KmG#wiQb*gLN{&q#nN%f5L#~7$XUnb zSfYgKdy+QJiX?;=Du^|Zu#|Z%T<*<&MRSzQ-q&H*1$X#yMuv`}{e!eLdmM~Hic%*| z`ydTNRVpdaL-mb`;aa`=Ds*P|3k&BT?W%$rb`0fC@EM_V%^pl|f!%CB$;Qqu4f~&l z)q^%w51tvpx=S-B3;tBkpD!U5g9K`Mv5N#h5d1oyUp&sM{o*y{!)LP`Zy^7Wmfqqr zP-=F&D>4$dVt#XR{%;b*}22g|0g%b_8O>==Rd!IyCNy+!-6IQAcgird9y5*}Tknkm}W zZP5~$iwOxy%m_Kf2*h_HtPIf^tc#xe!Abzty4(OQq}-uU-@ZL|P*+;mVa=*5K?!m$ zIJx1#J$yO%Wd`T@*v!e(gOFZ(y=R`U(JH;MX}3nJwj#~f-@7LV6(S;etanl)`#=!# zZ7FH#G@;Qsn8+r1AaHR^SC+sTc4NzXMB?xZ`JIPf90=lk^L8_z_tM;H&p8+tG;Ls+ z#OR5`Tt#vIyuZJ{eEjI;5*Fk>0_9At4>L32B|J4V19wb)Z?&0s^6+Livbae4&ww|D zvs>g96rdd+8&qG8G|&32x|%$|WsXlb<{9*v-rmolMFI3(quj$nWV>R7kC~V}wJf6r z?g;92eZ79*n(1pVRgjISsFWgRxXGJoYHFI9#Z%OU!12AwB}H}pav`j*uMZC!_dp&B z0H4?gzva^qh0Ntl!2wfm(e1*>Z#}cHuz;i&fn40IFv+~R18AVMkdP3}9Wl_Xp5O9N z{l!n)h`ViDipKj%>n1_LAHfHMmJ>2Q26}p=UNzO#q9P*cSy@I|zZioTl%AFr`dmj# zD=;W%YGNYv>@kYSjve;MhG%}K;Unr6kqj4ct_eT}GBq^?6bO2Oc-_;dPYYQrE-s=v z0l@LY8%9P(YE{)VWf4KHDeF>WQUbQEt(&mf6++Io{S`dS05lpI8G(3B9zAplCY>Mq z`jEWmWG>G!6aA0q#f^Os7`37^GBV(00^U3<>n>cl@a*Z+7OvMT;Lr!RnU!>OT5;s@ zOkhqRf}3a{ZL`s+ccJWd>Zmicdi8J0mFdaJul0(xjm?MuJ}Y7%>L%BjXFH-^nMf@v zI?*bupm4n07JW?C|2ZMD^4I%ILR2dzK@dmQ0gxfM_{pQW_NbCaZ`t~d1CFYrN5V|p tU5{FwP!UApOZaHe17##`{0ARcVp;ttVz!}B7&rkzXsPS&f23;Z`!_V2Wmy0K literal 0 HcmV?d00001 diff --git a/documentation/design_specification.md b/documentation/design_specification.md index 79e4216..eb8cbc6 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -22,4 +22,21 @@ _pyCosign_ offers a **thin, class-based wrapper** that orchestrates the trusted > ⚠️ This document intentionally limits itself to the _foundational_ use-cases required in sprint 1. More advanced flows (HSM, batch, policy-verify) appear only as placeholders. +## Reference Architecture +The _pyCosign_ runtime is organized around **three orthogonal roles — Signer, Verifier, and Attester** — that share a `KeyManager` for credential handling and a `RegistryClient` for OCI I/O. Each role calls the local `cosign` executable to perform cryptographic work; the Python layer concentrates on orchestration, storage decisions (local FS / OCI registry / Rekor), and observable logging. +### Component Views +#### Signer +The **Signer** produces tamper-evident signatures for files or OCI digests. It discovers keys (or fetches a keyless Fulcio cert), invokes `cosign sign`/`sign-blob`, and persists detached `*.sig` layers to the chosen backend—filesystem, OCI registry, and/or Rekor bundle. + +![Component pyCosign Signer](./component_pycosign_signer.png) + +#### Verifier +The **Verifier** confirms artifact integrity by fetching signatures (local or OCI), calling `cosign verify`/`verify-blob`, applying optional policy filters (cert identity, issuer, annotations), and—if online—checking Rekor inclusion proofs. It returns a structured `VerificationResult` with verdict and log indexes. + +![Component pyCosign Verifier](./component_pycosign_verifier.png) + +#### Attester +The **Attester** attaches supply-chain metadata (SPDX, CycloneDX, in-toto predicates). Given a predicate file, it calls `cosign attest`/`attest-blob` to create a signed `*.att` layer, which can be saved locally, pushed to an OCI registry, and/or bundled into Rekor for transparency. + +![Component pyCosign Attester](./component_pycosign_attester.png) diff --git a/documentation/puml/component_pycosign_attester.puml b/documentation/puml/component_pycosign_attester.puml new file mode 100644 index 0000000..1cf5bef --- /dev/null +++ b/documentation/puml/component_pycosign_attester.puml @@ -0,0 +1,20 @@ +@startuml Component_pyCosign_Attester +!theme plain +package "pyCosign" { + [Attester] + [KeyManager] + [RegistryClient] +} +component "cosign (executable)" as CosignCLI +package "Sigstore Services" { + [Fulcio CA] + [Rekor Transparency Log] +} +database "OCI Registry" as Registry +[Attester] ..> [KeyManager] +[Attester] --> CosignCLI : spawn\ncosign attest +[Attester] --> [RegistryClient] : push *.att +[KeyManager] ..> [Fulcio CA] : keyless cert (opt.) +[Attester] ..> [Rekor Transparency Log] : upload bundle +[RegistryClient] <--> Registry : push *.att +@enduml diff --git a/documentation/puml/component_pycosign_signer.puml b/documentation/puml/component_pycosign_signer.puml new file mode 100644 index 0000000..54016b6 --- /dev/null +++ b/documentation/puml/component_pycosign_signer.puml @@ -0,0 +1,20 @@ +@startuml Component_pyCosign_Signer +!theme plain +package "pyCosign" { + [Signer] + [KeyManager] + [RegistryClient] +} +component "cosign (executable)" as CosignCLI +package "Sigstore Services" { + [Fulcio CA] + [Rekor Transparency Log] +} +database "OCI Registry" as Registry +[Signer] ..> [KeyManager] +[Signer] --> CosignCLI : spawn\ncosign sign +[Signer] --> [RegistryClient] : push *.sig +[KeyManager] ..> [Fulcio CA] : keyless cert (opt.) +[Signer] ..> [Rekor Transparency Log] : upload bundle +[RegistryClient] <--> Registry : push *.sig +@enduml diff --git a/documentation/puml/component_pycosign_verifier.puml b/documentation/puml/component_pycosign_verifier.puml new file mode 100644 index 0000000..1e08d24 --- /dev/null +++ b/documentation/puml/component_pycosign_verifier.puml @@ -0,0 +1,18 @@ +@startuml Component_pyCosign_Verifier +!theme plain +package "pyCosign" { + [Verifier] + [KeyManager] + [RegistryClient] +} +component "cosign (executable)" as CosignCLI +package "Sigstore Services" { + [Rekor Transparency Log] +} +database "OCI Registry" as Registry +[Verifier] ..> [KeyManager] +[Verifier] --> CosignCLI : spawn\ncosign verify +[Verifier] --> [RegistryClient] : pull *.sig +[Verifier] --> [Rekor Transparency Log] : inclusion proof +[RegistryClient] <--> Registry : pull *.sig +@enduml From fcdb590e5d1d0609310b7016f0bfd2709bfcc7b3 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 13:59:55 -0500 Subject: [PATCH 04/17] Add Role Overview --- documentation/design_specification.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/documentation/design_specification.md b/documentation/design_specification.md index eb8cbc6..86d2e70 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -40,3 +40,12 @@ The **Verifier** confirms artifact integrity by fetching signatures (local or OC The **Attester** attaches supply-chain metadata (SPDX, CycloneDX, in-toto predicates). Given a predicate file, it calls `cosign attest`/`attest-blob` to create a signed `*.att` layer, which can be saved locally, pushed to an OCI registry, and/or bundled into Rekor for transparency. ![Component pyCosign Attester](./component_pycosign_attester.png) + +## Role Overview + +| Role | Responsibility | Primary Public Methods | +|------|----------------|------------------------| +| **Signer** | Produce signatures for local files or OCI digests and store them per configuration (filesystem, registry, Rekor). | `sign_blob_local` · `sign_blob_and_push` · `sign_artifact` | +| **Verifier** | Validate signatures / attestations—including optional policy checks—and, when online, confirm Rekor inclusion proofs. | `verify_local` · `verify_registry` · `verify_attestation` | +| **Attester** | Attach supply-chain metadata (SPDX, CycloneDX, in-toto predicates) to artifacts and persist detached `*.att` layers. | `attest_blob_local` · `attest_blob_and_push` · `attest_artifact` | + From 98ed2472c54aadd9c1a7d95657cff01af0bada9d Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 14:11:26 -0500 Subject: [PATCH 05/17] Add initial Signer --- documentation/design_specification.md | 35 ++++++++++++++++++++++++ documentation/puml/seq_signer_s1.puml | 13 +++++++++ documentation/puml/seq_signer_s2.puml | 18 ++++++++++++ documentation/puml/use_case_signer.puml | 25 +++++++++++++++++ documentation/seq_signer_s1.png | Bin 0 -> 22375 bytes documentation/seq_signer_s2.png | Bin 0 -> 36615 bytes documentation/use_case_signer.png | Bin 0 -> 46640 bytes 7 files changed, 91 insertions(+) create mode 100644 documentation/puml/seq_signer_s1.puml create mode 100644 documentation/puml/seq_signer_s2.puml create mode 100644 documentation/puml/use_case_signer.puml create mode 100644 documentation/seq_signer_s1.png create mode 100644 documentation/seq_signer_s2.png create mode 100644 documentation/use_case_signer.png diff --git a/documentation/design_specification.md b/documentation/design_specification.md index 86d2e70..e428cd6 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -49,3 +49,38 @@ The **Attester** attaches supply-chain metadata (SPDX, CycloneDX, in-toto predic | **Verifier** | Validate signatures / attestations—including optional policy checks—and, when online, confirm Rekor inclusion proofs. | `verify_local` · `verify_registry` · `verify_attestation` | | **Attester** | Attach supply-chain metadata (SPDX, CycloneDX, in-toto predicates) to artifacts and persist detached `*.att` layers. | `attest_blob_local` · `attest_blob_and_push` · `attest_artifact` | +## Signer + +### Role Description +The **Signer** generates tamper-evident signatures for files or OCI digests. +It discovers key material (file-based, keyless Fulcio cert, or HSM), spawns `cosign sign` / `sign-blob`, and stores detached `*.sig` layers according to runtime configuration—local filesystem, OCI registry, and/or a Rekor bundle. + +> **Component diagram:** see §Reference Architecture → Signer. + +--- + +### Use Cases + +| UC-ID | Title | Storage Target | Key Source | +|-------|-------|----------------|------------| +| **S-1** | Sign local file & save `.sig` locally | Filesystem | Key file | +| **S-2** | Sign local file & push `.sig` to OCI registry | OCI registry | Key file | +| S-3 | Sign OCI image already in registry | OCI registry | Key file | +| S-4 | Sign local file & upload **only** Rekor bundle | Rekor | Key file | +| S-5 | Keyless sign local file & save `.sig` locally | Filesystem | Fulcio cert | +| S-6 | HSM sign local file & push `.sig` to registry | OCI registry | PKCS #11 | +| S-7 | Parallel-sign multiple artifacts (async pool) | User-selected | any | + +![Signer Use Case](./use_case_signer.png) + +--- + +### Sequence Diagrams + +#### UC S-1 — Sign local file & save `.sig` locally + +![Signer UC S-1](./seq_signer_s1.png) + +#### UC S-2 — Sign local file & push `.sig` to OCI registry + +![Signer UC S-2](./seq_signer_s2.png) diff --git a/documentation/puml/seq_signer_s1.puml b/documentation/puml/seq_signer_s1.puml new file mode 100644 index 0000000..e8ab4a4 --- /dev/null +++ b/documentation/puml/seq_signer_s1.puml @@ -0,0 +1,13 @@ +@startuml Seq_Signer_S1 +!theme plain +actor Developer +participant Signer as "pyCosign.Signer" +participant CosignCLI as "cosign sign-blob" +participant FS as "File System" + +Developer -> Signer : sign_blob_local(path, key) +Signer -> CosignCLI : cosign sign-blob --key key.pem path +CosignCLI --> Signer : base64_sig +Signer -> FS : write path.sig +Signer --> Developer : Signature{sig_path} +@enduml diff --git a/documentation/puml/seq_signer_s2.puml b/documentation/puml/seq_signer_s2.puml new file mode 100644 index 0000000..3c39dd8 --- /dev/null +++ b/documentation/puml/seq_signer_s2.puml @@ -0,0 +1,18 @@ +@startuml Seq_Signer_S2 +!theme plain +actor Developer +participant Signer as "pyCosign.Signer" +participant CosignCLI as "cosign sign-blob" +participant FS as "File System" +participant RegistryCLI as "pyCosign.RegistryClient" +database Registry as "OCI Registry" + +Developer -> Signer : sign_blob_and_push(path, key, ref) +Signer -> CosignCLI : cosign sign-blob --key key.pem path +CosignCLI --> Signer : base64_sig +Signer -> FS : write path.sig +Signer -> RegistryCLI : push(path.sig, ref) +RegistryCLI -> Registry : PUT .sig +Registry --> RegistryCLI : 201 Created +Signer --> Developer : Signature{sig_ref} +@enduml diff --git a/documentation/puml/use_case_signer.puml b/documentation/puml/use_case_signer.puml new file mode 100644 index 0000000..ce98010 --- /dev/null +++ b/documentation/puml/use_case_signer.puml @@ -0,0 +1,25 @@ +@startuml UC_Signer +!theme plain +actor Developer +actor "CI/CD Runner" as CICD + +package "pyCosign::Signer" { + usecase "S-1 Sign & save locally" as S1 + usecase "S-2 Sign & push to registry" as S2 + usecase "S-3 Sign OCI image in-place" as S3 + usecase "S-4 Sign & Rekor only" as S4 + usecase "S-5 Keyless sign, save locally" as S5 + usecase "S-6 HSM sign\npush to registry" as S6 + usecase "S-7 Batch parallel sign" as S7 +} + +Developer --> S1 +Developer --> S2 +Developer --> S4 +Developer --> S5 +Developer --> S6 +CICD --> S2 +CICD --> S3 +CICD --> S4 +CICD --> S7 +@enduml diff --git a/documentation/seq_signer_s1.png b/documentation/seq_signer_s1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccc75fb6f2573b034f5051515f86261f4209c11 GIT binary patch literal 22375 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
  • JQBu9L-%PmqkVV9;fA4(XV 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 a7HI4<9tuu8Rg@&&c3`iTYL@bm3;zRaj~p2Q literal 0 HcmV?d00001 diff --git a/documentation/use_case_signer.png b/documentation/use_case_signer.png new file mode 100644 index 0000000000000000000000000000000000000000..de7bd375c616fa93f60aa7bb958570cf55d75e77 GIT binary patch literal 46640 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 U#|K)^=)|kr?VM@XZM@_E3ull9tpET3 literal 0 HcmV?d00001 From dc9524557b11b84b9c6870d92048ea5725de82c8 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 14:26:10 -0500 Subject: [PATCH 06/17] Add initial Verifier --- documentation/design_specification.md | 36 ++++++++++++++++++++++ documentation/puml/seq_verifier_v1.puml | 13 ++++++++ documentation/puml/seq_verifier_v2.puml | 17 ++++++++++ documentation/puml/use_case_signer.puml | 21 ++++++++----- documentation/puml/use_case_verifier.puml | 30 ++++++++++++++++++ documentation/seq_verifier_v1.png | Bin 0 -> 22823 bytes documentation/seq_verifier_v2.png | Bin 0 -> 30104 bytes documentation/use_case_signer.png | Bin 46640 -> 78460 bytes documentation/use_case_verifier.png | Bin 0 -> 70881 bytes 9 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 documentation/puml/seq_verifier_v1.puml create mode 100644 documentation/puml/seq_verifier_v2.puml create mode 100644 documentation/puml/use_case_verifier.puml create mode 100644 documentation/seq_verifier_v1.png create mode 100644 documentation/seq_verifier_v2.png create mode 100644 documentation/use_case_verifier.png diff --git a/documentation/design_specification.md b/documentation/design_specification.md index e428cd6..8a8fc55 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -84,3 +84,39 @@ It discovers key material (file-based, keyless Fulcio cert, or HSM), spawns `cos #### UC S-2 — Sign local file & push `.sig` to OCI registry ![Signer UC S-2](./seq_signer_s2.png) + +## Verifier + +### Role Description +The **Verifier** confirms artifact integrity and authenticity. +It retrieves detached signatures or attestations—either from the local filesystem or an OCI registry—then invokes `cosign verify` / `verify-blob` / `verify-attestation`. Optional policy filters (certificate identity, OIDC issuer, annotation key-value) and Rekor inclusion proofs can be enforced to meet stricter supply-chain requirements. Results are returned as a structured `VerificationResult` object. + +> **Component diagram:** see §Reference Architecture → Verifier. + +--- + +### Use Cases + +| UC-ID | Title | Inputs | Notes | +|-------|-------|--------|-------| +| **V-1** | Verify local file with detached `.sig` | `file`, `file.sig` | Offline verification, no registry required | +| **V-2** | Verify OCI image signature in registry | Image reference | Uses registry-native `.sig` layer | +| V-3 | Verify local bundle offline (`.sig.bundle`) | `file`, `file.sig.bundle` | No Rekor connectivity needed | +| V-4 | Verify OCI attestation in registry | Image reference | `cosign verify-attestation` | +| V-5 | Verify attestation bundle offline | `.att`, `.bundle` | Works in air-gapped mode | +| V-6 | Policy-based verify (cert/email/issuer/annotations) | Artifact ref + policy | Extends V-1/2/4 | +| V-7 | Batch / parallel verify many refs | List of refs | Async pool | + +![Verifier Use Case](./use_case_verifier.png) + +--- + +### Sequence Diagrams + +#### UC V-1 — Verify local file with detached `.sig` + +![Verifier UC S-1](./seq_verifier_v1.png) + +#### UC V-2 — Verify OCI image signature in registry + +![Verifier UC S-2](./seq_verifier_v2.png) diff --git a/documentation/puml/seq_verifier_v1.puml b/documentation/puml/seq_verifier_v1.puml new file mode 100644 index 0000000..418fb83 --- /dev/null +++ b/documentation/puml/seq_verifier_v1.puml @@ -0,0 +1,13 @@ +@startuml Seq_Verifier_V1 +!theme plain +actor User +participant Verifier as "pyCosign.Verifier" +participant CosignCLI as "cosign verify-blob" +participant FS as "File System" + +User -> Verifier : verify_local(path, path.sig) +Verifier -> FS : read file + sig +Verifier -> CosignCLI : cosign verify-blob --signature path.sig path +CosignCLI --> Verifier : exit 0 / err +Verifier --> User : VerificationResult{verified} +@enduml diff --git a/documentation/puml/seq_verifier_v2.puml b/documentation/puml/seq_verifier_v2.puml new file mode 100644 index 0000000..d438727 --- /dev/null +++ b/documentation/puml/seq_verifier_v2.puml @@ -0,0 +1,17 @@ +@startuml Seq_Verifier_V2 +!theme plain +actor User +participant Verifier as "pyCosign.Verifier" +participant RegistryCLI as "pyCosign.RegistryClient" +database Registry as "OCI Registry" +participant CosignCLI as "cosign verify" + +User -> Verifier : verify_registry(ref) +Verifier -> RegistryCLI : pull_signature(ref) +RegistryCLI -> Registry : GET .sig +Registry --> RegistryCLI : *.sig +RegistryCLI --> Verifier : sig bytes +Verifier -> CosignCLI : cosign verify ref +CosignCLI --> Verifier : verified? +Verifier --> User : VerificationResult{verified} +@enduml diff --git a/documentation/puml/use_case_signer.puml b/documentation/puml/use_case_signer.puml index ce98010..b9aea65 100644 --- a/documentation/puml/use_case_signer.puml +++ b/documentation/puml/use_case_signer.puml @@ -1,16 +1,23 @@ @startuml UC_Signer !theme plain +skinparam usecase { + BackgroundColor<> LightGray + BackgroundColor<> Wheat + BackgroundColor<> LightBlue + BackgroundColor<> Thistle +} + actor Developer actor "CI/CD Runner" as CICD package "pyCosign::Signer" { - usecase "S-1 Sign & save locally" as S1 - usecase "S-2 Sign & push to registry" as S2 - usecase "S-3 Sign OCI image in-place" as S3 - usecase "S-4 Sign & Rekor only" as S4 - usecase "S-5 Keyless sign, save locally" as S5 - usecase "S-6 HSM sign\npush to registry" as S6 - usecase "S-7 Batch parallel sign" as S7 + usecase "S-1 Sign & save locally\n📁 file + .sig\n🕵️ Offline mode" as S1 <> + usecase "S-2 Sign & push to registry\n📦 Image ref\n🔐 Push .sig layer" as S2 <> + usecase "S-3 Sign OCI image in-place\n📦 Image ref\n⚠️ Requires writable registry" as S3 <> + usecase "S-4 Sign & Rekor only\n📄 Metadata + log\n📝 No file output" as S4 <> + usecase "S-5 Keyless sign, save locally\n🔑 Sigstore OIDC\n📁 file.sig" as S5 <> + usecase "S-6 HSM sign\n📦 Registry push\n🔐 Hardware key" as S6 <> + usecase "S-7 Batch parallel sign\n🧾 List of targets\n⚙️ Async pool" as S7 <> } Developer --> S1 diff --git a/documentation/puml/use_case_verifier.puml b/documentation/puml/use_case_verifier.puml new file mode 100644 index 0000000..b2fcee3 --- /dev/null +++ b/documentation/puml/use_case_verifier.puml @@ -0,0 +1,30 @@ +@startuml UC_Verifier +!theme plain +skinparam usecase { + BackgroundColor<> LightGray + BackgroundColor<> Wheat + BackgroundColor<> LightBlue + BackgroundColor<> Thistle +} + +actor User +actor Auditor + +package "pyCosign::Verifier" { + usecase "V-1 Verify local sig\n📁 file + .sig\n🕵️ Offline mode" as V1 <> + usecase "V-2 Verify registry sig\n📦 Image ref\n🔐 .sig layer in registry" as V2 <> + usecase "V-3 Verify bundle offline\n📁 file + .sig.bundle\n🕵️ Air-gapped OK" as V3 <> + usecase "V-4 Verify registry attestation\n📦 Image ref\n📜 Attestation in registry" as V4 <> + usecase "V-5 Verify attestation bundle\n📁 .att + .bundle\n🕵️ Air-gapped OK" as V5 <> + usecase "V-6 Policy-based verify\n📋 Policy + Ref\n✅ Cert/email/issuer match" as V6 <> + usecase "V-7 Batch verify\n🧾 List of refs\n⚙️ Parallel pool" as V7 <> +} + +User --> V1 +User --> V2 +User --> V3 +Auditor --> V4 +Auditor --> V5 +Auditor --> V6 +Auditor --> V7 +@enduml diff --git a/documentation/seq_verifier_v1.png b/documentation/seq_verifier_v1.png new file mode 100644 index 0000000000000000000000000000000000000000..ae581f3cf8c62d33d682c5ad1385050d84446d7c GIT binary patch literal 22823 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 K=d#Wzp$Py>N3Kl( literal 0 HcmV?d00001 diff --git a/documentation/seq_verifier_v2.png b/documentation/seq_verifier_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..75b1cc4ff77779ca1688e003ad1226aecc11bf61 GIT binary patch literal 30104 zcmeFZcRbeXA3v^yhS8wR2&JNs+uj)&86h(yBRAQyS1BU0M|bw#A|yL2BlEUGX0kWg z{9d=t>FA8d@B8QH`*?iMKj)m=J>J*#zOL8nxvsaDyzDK4shG=|pJ=2kq+%;t}D zOsyZAJi4xHW@6LaK#hfk9fMR-wf^&UEX?=VMa(J>%Js3FbXn6LUOW=iaGV0Id;z!V zzI(p>o%?=46xxc}S&?64)i_sO2e}1N&q7&a{L+J^K5We`f8BUz<=MqL8t6sO+<)|v zkZ%1mS|;n>R^t;M)f4ApU%a+l!Sx|M&VtxsmF65#i^+V^VKdyDf^+XCeFodR7%K

    1F` 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 Date: Sun, 8 Jun 2025 14:31:14 -0500 Subject: [PATCH 07/17] Move images to folder --- documentation/design_specification.md | 24 +++++++++--------- .../component_pycosign_attester.png | Bin .../component_pycosign_signer.png | Bin .../component_pycosign_verifier.png | Bin documentation/{ => images}/seq_signer_s1.png | Bin documentation/{ => images}/seq_signer_s2.png | Bin .../{ => images}/seq_verifier_v1.png | Bin .../{ => images}/seq_verifier_v2.png | Bin .../{ => images}/use_case_signer.png | Bin .../{ => images}/use_case_verifier.png | Bin 10 files changed, 12 insertions(+), 12 deletions(-) rename documentation/{ => images}/component_pycosign_attester.png (100%) rename documentation/{ => images}/component_pycosign_signer.png (100%) rename documentation/{ => images}/component_pycosign_verifier.png (100%) rename documentation/{ => images}/seq_signer_s1.png (100%) rename documentation/{ => images}/seq_signer_s2.png (100%) rename documentation/{ => images}/seq_verifier_v1.png (100%) rename documentation/{ => images}/seq_verifier_v2.png (100%) rename documentation/{ => images}/use_case_signer.png (100%) rename documentation/{ => images}/use_case_verifier.png (100%) diff --git a/documentation/design_specification.md b/documentation/design_specification.md index 8a8fc55..15f68c2 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -7,9 +7,9 @@ 1. [Purpose & Scope](#purpose--scope) 2. [Reference Architecture](#reference-architecture) 3. [Role Overview](#role-overview) -4. [Signer](#signer) -5. [Verifier](#verifier) -6. [Attester](#attester) +4. [Signer](#signer-1) +5. [Verifier](#verifier-1) +6. [Attester](#attester-1) 7. [Glossary](#glossary) ## Purpose & Scope @@ -29,17 +29,17 @@ The _pyCosign_ runtime is organized around **three orthogonal roles — Signer, #### Signer The **Signer** produces tamper-evident signatures for files or OCI digests. It discovers keys (or fetches a keyless Fulcio cert), invokes `cosign sign`/`sign-blob`, and persists detached `*.sig` layers to the chosen backend—filesystem, OCI registry, and/or Rekor bundle. -![Component pyCosign Signer](./component_pycosign_signer.png) +![Component pyCosign Signer](./images/component_pycosign_signer.png) #### Verifier The **Verifier** confirms artifact integrity by fetching signatures (local or OCI), calling `cosign verify`/`verify-blob`, applying optional policy filters (cert identity, issuer, annotations), and—if online—checking Rekor inclusion proofs. It returns a structured `VerificationResult` with verdict and log indexes. -![Component pyCosign Verifier](./component_pycosign_verifier.png) +![Component pyCosign Verifier](./images/component_pycosign_verifier.png) #### Attester The **Attester** attaches supply-chain metadata (SPDX, CycloneDX, in-toto predicates). Given a predicate file, it calls `cosign attest`/`attest-blob` to create a signed `*.att` layer, which can be saved locally, pushed to an OCI registry, and/or bundled into Rekor for transparency. -![Component pyCosign Attester](./component_pycosign_attester.png) +![Component pyCosign Attester](./images/component_pycosign_attester.png) ## Role Overview @@ -71,7 +71,7 @@ It discovers key material (file-based, keyless Fulcio cert, or HSM), spawns `cos | S-6 | HSM sign local file & push `.sig` to registry | OCI registry | PKCS #11 | | S-7 | Parallel-sign multiple artifacts (async pool) | User-selected | any | -![Signer Use Case](./use_case_signer.png) +![Signer Use Case](./images/use_case_signer.png) --- @@ -79,11 +79,11 @@ It discovers key material (file-based, keyless Fulcio cert, or HSM), spawns `cos #### UC S-1 — Sign local file & save `.sig` locally -![Signer UC S-1](./seq_signer_s1.png) +![Signer UC S-1](./images/seq_signer_s1.png) #### UC S-2 — Sign local file & push `.sig` to OCI registry -![Signer UC S-2](./seq_signer_s2.png) +![Signer UC S-2](./images/seq_signer_s2.png) ## Verifier @@ -107,7 +107,7 @@ It retrieves detached signatures or attestations—either from the local filesys | V-6 | Policy-based verify (cert/email/issuer/annotations) | Artifact ref + policy | Extends V-1/2/4 | | V-7 | Batch / parallel verify many refs | List of refs | Async pool | -![Verifier Use Case](./use_case_verifier.png) +![Verifier Use Case](./images/use_case_verifier.png) --- @@ -115,8 +115,8 @@ It retrieves detached signatures or attestations—either from the local filesys #### UC V-1 — Verify local file with detached `.sig` -![Verifier UC S-1](./seq_verifier_v1.png) +![Verifier UC V-1](./images/seq_verifier_v1.png) #### UC V-2 — Verify OCI image signature in registry -![Verifier UC S-2](./seq_verifier_v2.png) +![Verifier UC V-2](./images/seq_verifier_v2.png) diff --git a/documentation/component_pycosign_attester.png b/documentation/images/component_pycosign_attester.png similarity index 100% rename from documentation/component_pycosign_attester.png rename to documentation/images/component_pycosign_attester.png diff --git a/documentation/component_pycosign_signer.png b/documentation/images/component_pycosign_signer.png similarity index 100% rename from documentation/component_pycosign_signer.png rename to documentation/images/component_pycosign_signer.png diff --git a/documentation/component_pycosign_verifier.png b/documentation/images/component_pycosign_verifier.png similarity index 100% rename from documentation/component_pycosign_verifier.png rename to documentation/images/component_pycosign_verifier.png diff --git a/documentation/seq_signer_s1.png b/documentation/images/seq_signer_s1.png similarity index 100% rename from documentation/seq_signer_s1.png rename to documentation/images/seq_signer_s1.png diff --git a/documentation/seq_signer_s2.png b/documentation/images/seq_signer_s2.png similarity index 100% rename from documentation/seq_signer_s2.png rename to documentation/images/seq_signer_s2.png diff --git a/documentation/seq_verifier_v1.png b/documentation/images/seq_verifier_v1.png similarity index 100% rename from documentation/seq_verifier_v1.png rename to documentation/images/seq_verifier_v1.png diff --git a/documentation/seq_verifier_v2.png b/documentation/images/seq_verifier_v2.png similarity index 100% rename from documentation/seq_verifier_v2.png rename to documentation/images/seq_verifier_v2.png diff --git a/documentation/use_case_signer.png b/documentation/images/use_case_signer.png similarity index 100% rename from documentation/use_case_signer.png rename to documentation/images/use_case_signer.png diff --git a/documentation/use_case_verifier.png b/documentation/images/use_case_verifier.png similarity index 100% rename from documentation/use_case_verifier.png rename to documentation/images/use_case_verifier.png From a928ded72e4857336781b2c8371e84f60e9e3fbc Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 14:42:12 -0500 Subject: [PATCH 08/17] Add initial Attester --- documentation/design_specification.md | 36 +++++++++++++++++++++ documentation/images/seq_attester_a1.png | Bin 0 -> 24372 bytes documentation/images/seq_attester_a2.png | Bin 0 -> 38963 bytes documentation/images/use_case_attester.png | Bin 0 -> 81339 bytes documentation/puml/seq_attester_a1.puml | 13 ++++++++ documentation/puml/seq_attester_a2.puml | 18 +++++++++++ documentation/puml/use_case_attester.puml | 32 ++++++++++++++++++ 7 files changed, 99 insertions(+) create mode 100644 documentation/images/seq_attester_a1.png create mode 100644 documentation/images/seq_attester_a2.png create mode 100644 documentation/images/use_case_attester.png create mode 100644 documentation/puml/seq_attester_a1.puml create mode 100644 documentation/puml/seq_attester_a2.puml create mode 100644 documentation/puml/use_case_attester.puml diff --git a/documentation/design_specification.md b/documentation/design_specification.md index 15f68c2..6a637d8 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -120,3 +120,39 @@ It retrieves detached signatures or attestations—either from the local filesys #### UC V-2 — Verify OCI image signature in registry ![Verifier UC V-2](./images/seq_verifier_v2.png) + +## Attester + +### Role Description +The **Attester** enriches artifacts with cryptographically signed **supply-chain metadata**. +Given a predicate (e.g., SPDX SBOM, CycloneDX, in-toto statement), it spawns `cosign attest` / `attest-blob` to create a detached `*.att` layer. The attestation can be saved locally, pushed to an OCI registry alongside the artifact digest, and/or bundled into Rekor for transparency. Down-stream consumers can then validate provenance and SBOM data via the Verifier role. + +> **Component diagram:** see §Reference Architecture → Attester. + +--- + +### Use Cases + +| UC-ID | Title | Predicate Example | Storage Target | Key Source | +|-------|-------|-------------------|----------------|------------| +| **A-1** | Create attestation for local file, save `.att` locally | Custom JSON | Filesystem | Key file | +| **A-2** | Create attestation for local file & push `.att` to OCI registry | SPDX SBOM | OCI registry | Key file | +| A-3 | Create attestation & upload **only** Rekor bundle | Any | Rekor | Key file | +| A-4 | Attest OCI image already in registry | CycloneDX | OCI registry | Key file | +| A-5 | Keyless attestation, save `.att` locally | Any | Filesystem | Fulcio cert | +| A-6 | Batch generate attestations for many digests | Any | User-selected | any | +| A-7 | Attest with HSM & push `.att` to registry | Any | OCI registry | PKCS #11 | + +![Attester Use Case](./images/use_case_attester.png) + +--- + +### Sequence Diagrams + +#### UC A-1 — Create attestation for local file, save `.att` locally + +![Attester UC A-1](./images/seq_attester_a1.png) + +#### UC A-2 — Create attestation for local file & push `.att` to OCI registry + +![Attester UC A-2](./images/seq_attester_a2.png) diff --git a/documentation/images/seq_attester_a1.png b/documentation/images/seq_attester_a1.png new file mode 100644 index 0000000000000000000000000000000000000000..878c35f6e958ae07bd1176d17c8553f6e7d6e08f GIT binary patch literal 24372 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�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 &zX{% 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®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 RTBTI*qotvD7O!?K_&>A-rw9N5 literal 0 HcmV?d00001 diff --git a/documentation/puml/seq_attester_a1.puml b/documentation/puml/seq_attester_a1.puml new file mode 100644 index 0000000..89d16a2 --- /dev/null +++ b/documentation/puml/seq_attester_a1.puml @@ -0,0 +1,13 @@ +@startuml Seq_Attester_A1 +!theme plain +actor Developer +participant Attester as "pyCosign.Attester" +participant CosignCLI as "cosign attest-blob" +participant FS as "File System" + +Developer -> Attester : attest_blob_local(path,\npredicate.json,key) +Attester -> CosignCLI : cosign attest-blob --predicate predicate.json path +CosignCLI --> Attester : base64_att +Attester -> FS : write path.att +Attester --> Developer : Attestation{att_path} +@enduml diff --git a/documentation/puml/seq_attester_a2.puml b/documentation/puml/seq_attester_a2.puml new file mode 100644 index 0000000..03c97c3 --- /dev/null +++ b/documentation/puml/seq_attester_a2.puml @@ -0,0 +1,18 @@ +@startuml Seq_Attester_A2 +!theme plain +actor Developer +participant Attester as "pyCosign.Attester" +participant CosignCLI as "cosign attest-blob" +participant FS as "File System" +participant RegistryCLI as "pyCosign.RegistryClient" +database Registry as "OCI Registry" + +Developer -> Attester : attest_blob_and_push(path,\npredicate.json,key,ref) +Attester -> CosignCLI : cosign attest-blob --predicate predicate.json path +CosignCLI --> Attester : base64_att +Attester -> FS : write path.att +Attester -> RegistryCLI : push_attestation(path.att, ref) +RegistryCLI -> Registry : PUT .att +Registry --> RegistryCLI : 201 Created +Attester --> Developer : Attestation{att_ref} +@enduml diff --git a/documentation/puml/use_case_attester.puml b/documentation/puml/use_case_attester.puml new file mode 100644 index 0000000..837ea15 --- /dev/null +++ b/documentation/puml/use_case_attester.puml @@ -0,0 +1,32 @@ +@startuml UC_Attester +!theme plain +skinparam usecase { + BackgroundColor<> LightGray + BackgroundColor<> Wheat + BackgroundColor<> LightBlue + BackgroundColor<> Thistle + BackgroundColor<> Moccasin +} + +actor Developer +actor BuildSystem + +package "pyCosign::Attester" { + usecase "A-1 Local attestation\n📄 JSON → .att\n🗂️ FS storage, key file" as A1 <> + usecase "A-2 Attest & push registry\n🧾 SPDX SBOM\n📦 Push .att to OCI" as A2 <> + usecase "A-3 Rekor-only attestation\n📄 Any format\n📤 Upload to Rekor" as A3 <> + usecase "A-4 Attest OCI image\n📦 CycloneDX SBOM\n🖋️ Sign existing image" as A4 <> + usecase "A-5 Keyless attestation local\n📄 Any\n🔑 Fulcio cert + .att" as A5 <> + usecase "A-6 Batch attest\n🧾 List of digests\n⚙️ Parallel attest, any store" as A6 <> + usecase "A-7 HSM attest & push\n📦 OCI registry\n🔐 PKCS #11 key" as A7 <> +} + +Developer --> A1 +Developer --> A2 +Developer --> A3 +Developer --> A5 +BuildSystem --> A2 +BuildSystem --> A4 +BuildSystem --> A6 +BuildSystem --> A7 +@enduml From 0c9e4b2965ddbd00803eeb565499880a467d9060 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 14:44:31 -0500 Subject: [PATCH 09/17] Add Glossary --- documentation/design_specification.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/documentation/design_specification.md b/documentation/design_specification.md index 6a637d8..956ccc9 100644 --- a/documentation/design_specification.md +++ b/documentation/design_specification.md @@ -156,3 +156,19 @@ Given a predicate (e.g., SPDX SBOM, CycloneDX, in-toto statement), it spawns `co #### UC A-2 — Create attestation for local file & push `.att` to OCI registry ![Attester UC A-2](./images/seq_attester_a2.png) + +## Glossary + +| Term | Definition | +|------|------------| +| **Artifact** | Any file (e.g., binary, SBOM) or OCI manifest digest that can be signed or attested. | +| **Detached signature (`*.sig`)** | Base-64 SLSA signature stored separately from the artifact—produced by `cosign sign`/`sign-blob`. | +| **Attestation (`*.att`)** | A signed statement—often SBOM or in-toto predicate—linking metadata to an artifact via `cosign attest`. | +| **Predicate** | JSON document that describes the attestation content (SPDX, CycloneDX, provenance, etc.). | +| **Bundle (`*.bundle`)** | Rekor inclusion proof packaged with a signature/attestation for offline verification. | +| **Fulcio** | Sigstore certificate authority that issues short-lived keyless X.509 certificates. | +| **Rekor** | Sigstore transparency log—an append-only Merkle tree that stores signature/attestation bundles. | +| **Keyless Signing** | Flow where a signer obtains an ephemeral certificate from Fulcio instead of using a local key pair. | +| **PKCS #11 / HSM** | Hardware Security Module interface allowing cosign to use hardware-protected private keys. | +| **OCI Registry** | Container registry that can store arbitrary blobs, signatures (`.sig`) and attestations (`.att`). | +| **`cosign`** | CLI tool from the Sigstore project used for signing, verifying, and attesting artifacts. | From 13298c04f6cc8662176f1e7c906c351f520dd259 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 14:47:32 -0500 Subject: [PATCH 10/17] Add primer documentation --- documentation/signing-attesting-verifying.md | 64 ++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 documentation/signing-attesting-verifying.md diff --git a/documentation/signing-attesting-verifying.md b/documentation/signing-attesting-verifying.md new file mode 100644 index 0000000..20fc112 --- /dev/null +++ b/documentation/signing-attesting-verifying.md @@ -0,0 +1,64 @@ +# Understanding Signing, Attesting, and Verifying + +This primer clarifies the three core actions in Sigstore-based supply-chain security—**signing**, **attesting**, and **verifying**—and how they relate to each other. + +--- + +## Signing + +**What it is** +“Signing” produces a cryptographic **detached signature** (`*.sig`) that binds an artifact’s cryptographic digest (SHA-256) to a signer’s private key or keyless certificate. + +**Why it matters** +* Proves *integrity*: the artifact has not changed since it was signed. +* Provides *authenticity*: the signature can be traced to a specific key or X.509 identity. + +**Key points** +* Implemented in Sigstore via `cosign sign` (images) or `cosign sign-blob` (files). +* Output can be stored locally, in an OCI registry, and/or uploaded to Rekor for public transparency. +* Keys can live in files, cloud KMS, HSM/PKCS#11, or be issued on-demand by Fulcio (keyless). + +--- + +## Attesting + +**What it is** +“Attesting” creates a **signed statement** (`*.att`) that couples an artifact digest with **metadata**—typically supply-chain information such as an SPDX SBOM, CycloneDX BOM, or in-toto provenance. + +**Why it matters** +* Captures *how* the artifact was built (compiler flags, build environment, dependencies). +* Enables downstream consumers to enforce policy (e.g., “only run images with SBOM and provenance”). + +**Key points** +* Implemented via `cosign attest` (images) or `cosign attest-blob` (files). +* The metadata payload is called a **predicate**; its schema is application-specific. +* Like signatures, attestations can be stored locally, in registries, and/or logged in Rekor. + +--- + +## Verifying + +**What it is** +“Verifying” checks that a detached signature or attestation: + +1. Cryptographically matches the artifact’s digest. +2. Chains back to a trusted root (key, Fulcio CA, or hardware-backed key). +3. Optionally appears in Rekor (proving it hasn’t been hidden or altered). +4. (Optional) Satisfies policy filters—certificate identity, issuer, annotations, etc. + +**Why it matters** +* Prevents tampered or untrusted artifacts from entering production. +* Enables automated policy gates in CI/CD pipelines and Kubernetes admission controllers. + +**Key points** +* Implemented via `cosign verify`, `cosign verify-blob`, and `cosign verify-attestation`. +* Offline verification is possible using the `.bundle` file generated at signing time. +* Verification returns a machine-readable exit code plus structured JSON output when `--output json` is used. + +--- + +## How They Fit Together + +1. **Signer** generates a detached `*.sig` layer for an artifact. +2. **Attester** (often the same CI pipeline) attaches additional `*.att` metadata. +3. **Verifier** runs in downstream environments (release gates, runtime policy engines) to ensure both the signature and attestation are present, valid, and policy-compliant before the artifact is trusted. From 207de3a3b586eb601d279de9625677c9290d0a0a Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 15:15:19 -0500 Subject: [PATCH 11/17] Update primer with examples --- documentation/signing-attesting-verifying.md | 157 +++++++++++++++++-- 1 file changed, 148 insertions(+), 9 deletions(-) diff --git a/documentation/signing-attesting-verifying.md b/documentation/signing-attesting-verifying.md index 20fc112..3915298 100644 --- a/documentation/signing-attesting-verifying.md +++ b/documentation/signing-attesting-verifying.md @@ -1,6 +1,13 @@ # Understanding Signing, Attesting, and Verifying -This primer clarifies the three core actions in Sigstore-based supply-chain security—**signing**, **attesting**, and **verifying**—and how they relate to each other. +This primer clarifies the three core actions in Sigstore-based supply-chain security — **signing**, **attesting**, and **verifying** — and how they relate to each other. Below we cover a Sigstore / _cosign_ workflow and shows concrete, copy-paste-ready examples for each action. + +--- + +## Table of Contents +1. [Signing](#signing) +2. [Attesting](#attesting) +3. [Verifying](#verifying) --- @@ -14,25 +21,105 @@ This primer clarifies the three core actions in Sigstore-based supply-chain secu * Provides *authenticity*: the signature can be traced to a specific key or X.509 identity. **Key points** -* Implemented in Sigstore via `cosign sign` (images) or `cosign sign-blob` (files). -* Output can be stored locally, in an OCI registry, and/or uploaded to Rekor for public transparency. +* `cosign sign` → images | `cosign sign-blob` → files +* Signatures can be stored on disk, in an OCI registry, and/or uploaded to Rekor for public transparency. * Keys can live in files, cloud KMS, HSM/PKCS#11, or be issued on-demand by Fulcio (keyless). --- +### Examples + +#### S-1 — Sign a local file, save `.sig` locally +```bash +cosign sign-blob --key cosign.key ./hello.tgz > hello.tgz.sig +``` +`hello.tgz.sig` (truncated): +```bash +MEUCIQDn4Qv7lF1pRc0X...lWbQIoimLxEcQIgI4lR+Q5e6b6w... +``` + +#### S-2 — Sign an OCI image already in a registry +```bash +cosign sign --key cosign.key registry.local/hello:1.0 +``` +The registry now contains: +```bash +sha256: (manifest) +└── sha256:.sig (signature layer) +``` +#### S-3 — Keyless sign a local file (OIDC + Fulcio) +```bash +# environment must have $COSIGN_EXPERIMENTAL=1 and $OIDC_TOKEN +cosign sign-blob --keyless ./hello.tgz > hello.tgz.sig +``` + ## Attesting **What it is** -“Attesting” creates a **signed statement** (`*.att`) that couples an artifact digest with **metadata**—typically supply-chain information such as an SPDX SBOM, CycloneDX BOM, or in-toto provenance. +“Attesting” creates a detached **signed statement** (`*.att`) that couples an artifact digest with **metadata** — typically supply-chain information such as an SPDX SBOM, CycloneDX BOM, or in-toto provenance. **Why it matters** -* Captures *how* the artifact was built (compiler flags, build environment, dependencies). +* Captures *how* the artifact was built (compiler flags, build environment, dependencies, source). * Enables downstream consumers to enforce policy (e.g., “only run images with SBOM and provenance”). **Key points** -* Implemented via `cosign attest` (images) or `cosign attest-blob` (files). -* The metadata payload is called a **predicate**; its schema is application-specific. -* Like signatures, attestations can be stored locally, in registries, and/or logged in Rekor. +* `cosign attest` → images | `cosign attest-blob` → files +* The metadata payload is called a **predicate**; its schema is application-specific (SPDX, CycloneDX, in-toto, custom JSON). +* Like signatures, attestations can be stored locally, in registries, and/or logged in Rekor for public transparency. + +--- + +### Examples + +#### Predicate file (`sbom.json`) + +```json +{ + "predicateType": "https://spdx.dev/Document", + "predicate": { + "SPDXID": "SPDXRef-DOCUMENT", + "name": "hello-archive", + "packages": [ + { "SPDXID": "SPDXRef-Pkg-1", "name": "libfoo", "versionInfo": "1.2.3" } + ] + } +} +``` + +#### A-1 — Attest a local file, save `.att` locally + +```bash +cosign attest-blob \ + --key cosign.key \ + --predicate sbom.json \ + ./hello.tgz > hello.tgz.att +``` +`hello.tgz.att` (truncated DSSE envelope): +```bash +eyJhc3NlcnRpb24iOnsidHlwZSI6ImNoYXJnZSIsInJlZGF0Y... +``` + +#### A-2 — Attest an OCI image & push to registry + +```bash +cosign attest \ + --key cosign.key \ + --predicate cyclonedx.json \ + registry.local/hello:1.0 +``` +The registry now stores: +```bash +sha256:.att (attestation layer) +``` + +#### A-3 — Rekor-only attestation (no registry push) + +```bash +cosign attest-blob --key cosign.key \ + --predicate provenance.json \ + --bundle ./hello.tgz > hello.tgz.att +``` +A `.bundle` inclusion proof is embedded for offline verification. --- @@ -49,9 +136,10 @@ This primer clarifies the three core actions in Sigstore-based supply-chain secu **Why it matters** * Prevents tampered or untrusted artifacts from entering production. * Enables automated policy gates in CI/CD pipelines and Kubernetes admission controllers. +* Provides audit evidence for compliance (SLSA, NIST SSDF). **Key points** -* Implemented via `cosign verify`, `cosign verify-blob`, and `cosign verify-attestation`. +* `cosign verify(-blob)` → signatures | `cosign verify-attestation` → attestations * Offline verification is possible using the `.bundle` file generated at signing time. * Verification returns a machine-readable exit code plus structured JSON output when `--output json` is used. @@ -62,3 +150,54 @@ This primer clarifies the three core actions in Sigstore-based supply-chain secu 1. **Signer** generates a detached `*.sig` layer for an artifact. 2. **Attester** (often the same CI pipeline) attaches additional `*.att` metadata. 3. **Verifier** runs in downstream environments (release gates, runtime policy engines) to ensure both the signature and attestation are present, valid, and policy-compliant before the artifact is trusted. + +--- + +### Examples + +#### V-1 — Verify local file with detached `.sig` + +```bash +cosign verify-blob \ + --signature hello.tgz.sig \ + ./hello.tgz +``` +Output: Verified OK (exit 0) + +#### V-2 — Verify OCI image signature in registry + +```bash +cosign verify registry.local/hello:1.0 +``` +JSON output (truncated): +```json +{ + "critical": { "...": "..." }, + "optional": { "tlogIndex": 654321 } +} +``` + +#### V-3 — Verify attestation bundle offline + +```bash +cosign verify-attestation \ + --type https://spdx.dev/Document \ + --signature hello.tgz.att \ + ./hello.tgz +``` +Output: +```json +{"verified":true,"tlogIndex":54321,"attestation_type":"spdx"} +``` + +## Putting It Together + +| Artifact | Produced by | Purpose | +|--------------------------|--------------------|-----------------------------------------------------| +| `hello.tgz` | build step | Primary binary blob | +| `hello.tgz.sig` | Signer | Detached integrity/authenticity proof | +| `sbom.json` | build step | Human-readable SBOM | +| `hello.tgz.att` | Attester | Signed DSSE envelope of SBOM | +| `bundle.json` (optional) | Signer / Attester | Rekor inclusion proof for offline verification | + +Armed with these artifacts, any consumer (human or pipeline) can reproduce the verifying commands above to establish full trust in both the artifact and its supply-chain metadata. From aa2d28809fd301cf465da86fc65011190080fc66 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 18:28:24 -0500 Subject: [PATCH 12/17] Update README and add other root documents --- CHANGELOG.md | 7 +++ CONTRIBUTING.md | 145 ++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 2 +- README.md | 100 ++++++++++++++++++++++++++++++++- 4 files changed, 252 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..3a919b3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d6b930b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,145 @@ +# Contributing to pyCosign + +First off, **thank you for taking the time to contribute!** +The following guidelines help keep the project consistent and maintainable. + +--- + +## Table of Contents +1. [Code of Conduct](#code-of-conduct) +2. [Getting Started](#getting-started) +3. [Branching & Workflow](#branching--workflow) +4. [Commit Conventions](#commit-conventions) +5. [Developer Certificate of Origin (DCO)](#developer-certificate-of-origin-dco) +6. [Coding Style](#coding-style) +7. [Testing](#testing) +8. [Pull-Request Checklist](#pull-request-checklist) +9. [Release Process](#release-process) + +--- + +## Code of Conduct +We follow the [Contributor Covenant](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) v2.1. +Please be respectful and inclusive in all interactions. + +--- + +### Getting Started (Poetry) + +```bash +# clone +git clone https://github.com/your-org/pycosign.git +cd pycosign + +# install Poetry (if not already) +curl -sSL https://install.python-poetry.org | python3 - + +# create & activate venv + install deps +poetry install --with dev + +# drop into project shell +poetry shell + +# install git hooks +pre-commit install + +*Poetry automatically selects Python ≥ 3.10 on your system or the one specified in pyproject.toml. All dev tools—ruff, black, mypy, pytest, invoke—are declared under [tool.poetry.group.dev].* + +### Prerequisites + +| Tool | Required Version | Notes | +|------------------|------------------|-------| +| **Poetry** | 1.8 or newer | Dependency & virtual-env manager | +| **Python** | 3.10 – 3.12 | Poetry will auto-select within this range | +| **cosign CLI** | ≥ 2.2 | `brew install sigstore/tap/cosign` or download release binary | +| **plantuml** | _optional_ | Render `.puml` diagrams locally (`brew install plantuml`) | +| **Docker** | _optional_ | Quick PlantUML preview, OCI registry tests | + +## Branching & Workflow + +* **`main`** — always releasable; tagged releases are cut from here. +* **Feature branches** — name `feature/` (e.g., `feature/registry-push`). +* **Bug-fix branches** — name `bugfix/` (e.g., `bugfix/42-null-sig-path`). +* **Documentation-only branches** — name `docs/`. + +Workflow: + +1. Create an **Issue** if one doesn’t exist. +2. Branch from `main` with the naming rules above. +3. Work locally in a Poetry shell: + ```bash + poetry shell + git checkout -b feature/my-cool-thing + ``` +4. Keep commits small, descriptive, and signed (`git commit -s`). +5. Push to your fork / to the repo: `git push -u origin feature/my-cool-thing`. +6. Open a **pull request** against `main`. GitHub Actions will run: + * lint → test → type-check → coverage → packaging checks. +7. Address review comments; squash-merge once approved. +> **Tip:** Use `git rebase -i main` to keep history clean before opening the PR. + +## Commit Conventions + +We follow **Conventional Commits**: +```bash +feature(signer): add --push flag for sign-blob +bugfix(verifier): handle missing Rekor bundle gracefully +docs: update README diagrams +``` + +## Developer Certificate of Origin (DCO) + +By submitting a PR you certify you have the right to submit the work under the project’s [MIT license](LICENSE). +Sign your commits: + +```bash +git commit -s -m "bugfix: correct typo" +``` +The `-s` flag adds the required `Signed-off-by` line. + +## Coding Style + +* **ruff** for linting (`black`, `isort`, `flake8` rules) +* **black** for formatting (PEP 8 compliant) +* **mypy** for static typing +* Docstrings follow **Google style**. + +Run all checks: + +```bash +invoke style +``` + +## Testing + +* **pytest** with **pytest-asyncio** for async routines. +* 90%+ coverage target. + +```bash +pytest -q +``` +CI will fail if coverage drops below the threshold. + +## Pull-Request Checklist + +Before requesting a review, make sure you can check **every** box below: + +- [ ] **Issue linked** (e.g., “Closes #123”) or marked N/A for trivial docs fixes. +- [ ] **Unit / integration tests** added or updated; `poetry run pytest` passes locally. +- [ ] **Docs updated** (`README`, `docs/`, or inline docstrings) if behavior changed. +- [ ] **Changelog entry** added under `## [Unreleased]` in `CHANGELOG.md`. +- [ ] `pre-commit run --all-files` passes (ruff, black, mypy, etc.). +- [ ] All commits are **signed** (`git commit -s`) to satisfy the DCO. +- [ ] PR title follows **Conventional Commits** (e.g., `feat(verifier): add policy flag`). +- [ ] CI status is green (GitHub Actions). + +> 🔒 PRs without a Signed-off-by line will be blocked by the DCO GitHub check. + +## Release Process + +1. Merge all features into `main`. +2. Bump version with `bumpver update --push-tag`. +3. GitHub Action builds sdist & wheels and uploads to PyPI. +4. Draft release notes in `CHANGELOG.md`. + +Happy hacking! 💙 diff --git a/LICENSE b/LICENSE index 2428e66..4412de6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 interwebshack +Copyright (c) 2025 **pyCosign contributors** Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index ee1455c..e657788 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,100 @@ # pyCosign -Python Wrapper for Sigstor Cosign + +> A Pythonic façade around the 🎯 **Sigstore `cosign` CLI** — sign, attest, and verify artifacts from pure Python or the command line. + +[![Build](https://img.shields.io/github/actions/workflow/status/your-org/pycosign/ci.yml?branch=main)](https://github.com/your-org/pycosign/actions) +[![License](https://img.shields.io/github/license/your-org/pycosign)](LICENSE) + +--- + +## Table of Contents +1. [Motivation](#motivation) +2. [Features](#features) +3. [Quick Start](#quick-start) +4. [CLI Examples](#cli-examples) +5. [Library Usage](#library-usage) +6. [Documentation](#documentation) +7. [Contributing](#contributing) +8. [License](#license) + +--- + +## Motivation +`cosign` is the gold-standard CLI for software signing, but orchestration in Python projects often requires boilerplate subprocess calls, error parsing, and registry plumbing. **pyCosign** wraps those concerns in a class-based API with async support—letting you focus on *why* you sign, not *how*. + +--- + +## Features +* 📜 **Sign, verify, attest** files or OCI artifacts +* 🔑 **Key sources**: PEM file, Fulcio keyless, HSM / PKCS #11 +* 🌐 **Storage targets**: Local filesystem, OCI registry, Rekor log +* ⚡ **Async orchestration** for batch pipelines +* 📝 **Rich logging** and typed return objects (`Signature`, `VerificationResult`, `Attestation`) +* 🐍 Python 3.10+ & MIT-licensed + +--- + +## Quick Start + +```bash +# install cosign (v2.2+) first +brew install sigstore/tap/cosign # macOS example + +# install pyCosign +pip install pycosign +``` + +Create a signature for hello.tgz: + +```bash +pycosign sign-blob --key cosign.key ./hello.tgz # → hello.tgz.sig +``` + +Verify it: + +```bash +pycosign verify-blob --signature hello.tgz.sig ./hello.tgz +``` + +--- + +## CLI Examples + +| Task | Command | +|------|---------| +| **Sign OCI image** | `pycosign sign registry.local/hello:1.0` | +| **Sign local file → push signature to registry** | `pycosign sign-blob --push registry.local/hello:1.0 ./hello.tgz` | +| **Attest local file with SPDX SBOM** | `pycosign attest-blob --predicate sbom.json ./hello.tgz` | +| **Verify local file with detached `.sig`** | `pycosign verify-blob --signature hello.tgz.sig ./hello.tgz` | +| **Verify attestation bundle offline** | `pycosign verify-attestation --type https://spdx.dev/Document --signature hello.tgz.att ./hello.tgz` | + +>See `pycosign --help` for the full option matrix. + +## Library Usage + +```python +from pycosign import Signer, Verifier, KeyManager + +signer = Signer(key_manager=KeyManager.from_key_file("cosign.key")) +sig_obj = signer.sign_blob_local("hello.tgz") +print(sig_obj.sig_path) # Path('hello.tgz.sig') + +verifier = Verifier() +result = verifier.verify_local("hello.tgz", sig_obj.sig_path) +assert result.verified +``` + +Async batch signing example in `/examples/async_batch.py`. + +## Documentation + +* **Design Specification** - high-level architecture & diagrams + → [pyCosign/documentation/design_specification.md](./documentation/design_specification.md) +* **Signing · Attesting · Verifying Primer** - conceptual deep-dive with sample artifacts + → [pyCosign/documentation/signing-attesting-verifying.md](./documentation/signing-attesting-verifying.md) + +## Contributing +Bug reports, feature requests, and PRs are welcome! Please see `[CONTRIBUTING.md](CONTRIBUTING.md)` for the workflow, coding style, and DCO sign-off requirements. + +## License +Released under the [MIT License](LICENSE). From d67cedbdfdb6d32853c3d285e339cfbe908461fa Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 18:30:17 -0500 Subject: [PATCH 13/17] Update badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e657788..cf67b9f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # pyCosign -> A Pythonic façade around the 🎯 **Sigstore `cosign` CLI** — sign, attest, and verify artifacts from pure Python or the command line. +> A Pythonic façade around the **Sigstore `cosign` CLI** — sign, attest, and verify artifacts from pure Python or the command line. -[![Build](https://img.shields.io/github/actions/workflow/status/your-org/pycosign/ci.yml?branch=main)](https://github.com/your-org/pycosign/actions) -[![License](https://img.shields.io/github/license/your-org/pycosign)](LICENSE) +[![Build](https://img.shields.io/github/actions/workflow/status/interwebshack/pycosign/ci.yml?branch=main)](https://github.com/interwebshack/pycosign/actions) +[![License](https://img.shields.io/github/license/interwebshack/pycosign)](LICENSE) --- From 2e03103a93a9c051a14f12035587d32fe9433837 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 18:58:48 -0500 Subject: [PATCH 14/17] Add tests folder --- tests/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/__init__.py diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 From 59785d551c7a45f012a7a5c97c0eb8ec350b53ec Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:01:59 -0500 Subject: [PATCH 15/17] Add poetry files --- poetry.lock | 548 +++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 31 ++- 2 files changed, 571 insertions(+), 8 deletions(-) create mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..417b0f1 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,548 @@ +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + +[[package]] +name = "astroid" +version = "3.3.10" +description = "An abstract syntax tree for Python with inference support." +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + {file = "astroid-3.3.10-py3-none-any.whl", hash = "sha256:104fb9cb9b27ea95e847a94c003be03a9e039334a8ebca5ee27dafaf5c5711eb"}, + {file = "astroid-3.3.10.tar.gz", hash = "sha256:c332157953060c6deb9caa57303ae0d20b0fbdb2e59b4a4f2a6ba49d0a7961ce"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} + +[[package]] +name = "black" +version = "25.1.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, + {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, + {file = "black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7"}, + {file = "black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9"}, + {file = "black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0"}, + {file = "black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299"}, + {file = "black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096"}, + {file = "black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2"}, + {file = "black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b"}, + {file = "black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc"}, + {file = "black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f"}, + {file = "black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba"}, + {file = "black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f"}, + {file = "black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3"}, + {file = "black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171"}, + {file = "black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18"}, + {file = "black-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0"}, + {file = "black-25.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"}, + {file = "black-25.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e"}, + {file = "black-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355"}, + {file = "black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717"}, + {file = "black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "click" +version = "8.2.1" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "coverage" +version = "7.8.2" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "coverage-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd8ec21e1443fd7a447881332f7ce9d35b8fbd2849e761bb290b584535636b0a"}, + {file = "coverage-7.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c26c2396674816deaeae7ded0e2b42c26537280f8fe313335858ffff35019be"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1aec326ed237e5880bfe69ad41616d333712c7937bcefc1343145e972938f9b3"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e818796f71702d7a13e50c70de2a1924f729228580bcba1607cccf32eea46e6"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:546e537d9e24efc765c9c891328f30f826e3e4808e31f5d0f87c4ba12bbd1622"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab9b09a2349f58e73f8ebc06fac546dd623e23b063e5398343c5270072e3201c"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd51355ab8a372d89fb0e6a31719e825cf8df8b6724bee942fb5b92c3f016ba3"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0774df1e093acb6c9e4d58bce7f86656aeed6c132a16e2337692c12786b32404"}, + {file = "coverage-7.8.2-cp310-cp310-win32.whl", hash = "sha256:00f2e2f2e37f47e5f54423aeefd6c32a7dbcedc033fcd3928a4f4948e8b96af7"}, + {file = "coverage-7.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:145b07bea229821d51811bf15eeab346c236d523838eda395ea969d120d13347"}, + {file = "coverage-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b99058eef42e6a8dcd135afb068b3d53aff3921ce699e127602efff9956457a9"}, + {file = "coverage-7.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5feb7f2c3e6ea94d3b877def0270dff0947b8d8c04cfa34a17be0a4dc1836879"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:670a13249b957bb9050fab12d86acef7bf8f6a879b9d1a883799276e0d4c674a"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bdc8bf760459a4a4187b452213e04d039990211f98644c7292adf1e471162b5"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07a989c867986c2a75f158f03fdb413128aad29aca9d4dbce5fc755672d96f11"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2db10dedeb619a771ef0e2949ccba7b75e33905de959c2643a4607bef2f3fb3a"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e6ea7dba4e92926b7b5f0990634b78ea02f208d04af520c73a7c876d5a8d36cb"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ef2f22795a7aca99fc3c84393a55a53dd18ab8c93fb431004e4d8f0774150f54"}, + {file = "coverage-7.8.2-cp311-cp311-win32.whl", hash = "sha256:641988828bc18a6368fe72355df5f1703e44411adbe49bba5644b941ce6f2e3a"}, + {file = "coverage-7.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8ab4a51cb39dc1933ba627e0875046d150e88478dbe22ce145a68393e9652975"}, + {file = "coverage-7.8.2-cp311-cp311-win_arm64.whl", hash = "sha256:8966a821e2083c74d88cca5b7dcccc0a3a888a596a04c0b9668a891de3a0cc53"}, + {file = "coverage-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2f6fe3654468d061942591aef56686131335b7a8325684eda85dacdf311356c"}, + {file = "coverage-7.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76090fab50610798cc05241bf83b603477c40ee87acd358b66196ab0ca44ffa1"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bd0a0a5054be160777a7920b731a0570284db5142abaaf81bcbb282b8d99279"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da23ce9a3d356d0affe9c7036030b5c8f14556bd970c9b224f9c8205505e3b99"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9392773cffeb8d7e042a7b15b82a414011e9d2b5fdbbd3f7e6a6b17d5e21b20"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:876cbfd0b09ce09d81585d266c07a32657beb3eaec896f39484b631555be0fe2"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3da9b771c98977a13fbc3830f6caa85cae6c9c83911d24cb2d218e9394259c57"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a990f6510b3292686713bfef26d0049cd63b9c7bb17e0864f133cbfd2e6167f"}, + {file = "coverage-7.8.2-cp312-cp312-win32.whl", hash = "sha256:bf8111cddd0f2b54d34e96613e7fbdd59a673f0cf5574b61134ae75b6f5a33b8"}, + {file = "coverage-7.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:86a323a275e9e44cdf228af9b71c5030861d4d2610886ab920d9945672a81223"}, + {file = "coverage-7.8.2-cp312-cp312-win_arm64.whl", hash = "sha256:820157de3a589e992689ffcda8639fbabb313b323d26388d02e154164c57b07f"}, + {file = "coverage-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea561010914ec1c26ab4188aef8b1567272ef6de096312716f90e5baa79ef8ca"}, + {file = "coverage-7.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cb86337a4fcdd0e598ff2caeb513ac604d2f3da6d53df2c8e368e07ee38e277d"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a4636ddb666971345541b59899e969f3b301143dd86b0ddbb570bd591f1e85"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5040536cf9b13fb033f76bcb5e1e5cb3b57c4807fef37db9e0ed129c6a094257"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc67994df9bcd7e0150a47ef41278b9e0a0ea187caba72414b71dc590b99a108"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e6c86888fd076d9e0fe848af0a2142bf606044dc5ceee0aa9eddb56e26895a0"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:684ca9f58119b8e26bef860db33524ae0365601492e86ba0b71d513f525e7050"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8165584ddedb49204c4e18da083913bdf6a982bfb558632a79bdaadcdafd0d48"}, + {file = "coverage-7.8.2-cp313-cp313-win32.whl", hash = "sha256:34759ee2c65362163699cc917bdb2a54114dd06d19bab860725f94ef45a3d9b7"}, + {file = "coverage-7.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:2f9bc608fbafaee40eb60a9a53dbfb90f53cc66d3d32c2849dc27cf5638a21e3"}, + {file = "coverage-7.8.2-cp313-cp313-win_arm64.whl", hash = "sha256:9fe449ee461a3b0c7105690419d0b0aba1232f4ff6d120a9e241e58a556733f7"}, + {file = "coverage-7.8.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8369a7c8ef66bded2b6484053749ff220dbf83cba84f3398c84c51a6f748a008"}, + {file = "coverage-7.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:159b81df53a5fcbc7d45dae3adad554fdbde9829a994e15227b3f9d816d00b36"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6fcbbd35a96192d042c691c9e0c49ef54bd7ed865846a3c9d624c30bb67ce46"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05364b9cc82f138cc86128dc4e2e1251c2981a2218bfcd556fe6b0fbaa3501be"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46d532db4e5ff3979ce47d18e2fe8ecad283eeb7367726da0e5ef88e4fe64740"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4000a31c34932e7e4fa0381a3d6deb43dc0c8f458e3e7ea6502e6238e10be625"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:43ff5033d657cd51f83015c3b7a443287250dc14e69910577c3e03bd2e06f27b"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94316e13f0981cbbba132c1f9f365cac1d26716aaac130866ca812006f662199"}, + {file = "coverage-7.8.2-cp313-cp313t-win32.whl", hash = "sha256:3f5673888d3676d0a745c3d0e16da338c5eea300cb1f4ada9c872981265e76d8"}, + {file = "coverage-7.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:2c08b05ee8d7861e45dc5a2cc4195c8c66dca5ac613144eb6ebeaff2d502e73d"}, + {file = "coverage-7.8.2-cp313-cp313t-win_arm64.whl", hash = "sha256:1e1448bb72b387755e1ff3ef1268a06617afd94188164960dba8d0245a46004b"}, + {file = "coverage-7.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:496948261eaac5ac9cf43f5d0a9f6eb7a6d4cb3bedb2c5d294138142f5c18f2a"}, + {file = "coverage-7.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eacd2de0d30871eff893bab0b67840a96445edcb3c8fd915e6b11ac4b2f3fa6d"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b039ffddc99ad65d5078ef300e0c7eed08c270dc26570440e3ef18beb816c1ca"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e49824808d4375ede9dd84e9961a59c47f9113039f1a525e6be170aa4f5c34d"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b069938961dfad881dc2f8d02b47645cd2f455d3809ba92a8a687bf513839787"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:de77c3ba8bb686d1c411e78ee1b97e6e0b963fb98b1637658dd9ad2c875cf9d7"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1676628065a498943bd3f64f099bb573e08cf1bc6088bbe33cf4424e0876f4b3"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8e1a26e7e50076e35f7afafde570ca2b4d7900a491174ca357d29dece5aacee7"}, + {file = "coverage-7.8.2-cp39-cp39-win32.whl", hash = "sha256:6782a12bf76fa61ad9350d5a6ef5f3f020b57f5e6305cbc663803f2ebd0f270a"}, + {file = "coverage-7.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1efa4166ba75ccefd647f2d78b64f53f14fb82622bc94c5a5cb0a622f50f1c9e"}, + {file = "coverage-7.8.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:ec455eedf3ba0bbdf8f5a570012617eb305c63cb9f03428d39bf544cb2b94837"}, + {file = "coverage-7.8.2-py3-none-any.whl", hash = "sha256:726f32ee3713f7359696331a18daf0c3b3a70bb0ae71141b9d3c52be7c595e32"}, + {file = "coverage-7.8.2.tar.gz", hash = "sha256:a886d531373a1f6ff9fad2a2ba4a045b68467b779ae729ee0b3b10ac20033b27"}, +] + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] + +[[package]] +name = "dill" +version = "0.4.0" +description = "serialize all of Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049"}, + {file = "dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version == \"3.10\"" +files = [ + {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, + {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, +] + +[[package]] +name = "isort" +version = "6.0.1" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + {file = "isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"}, + {file = "isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450"}, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mypy" +version = "1.16.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "mypy-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7909541fef256527e5ee9c0a7e2aeed78b6cda72ba44298d1334fe7881b05c5c"}, + {file = "mypy-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e71d6f0090c2256c713ed3d52711d01859c82608b5d68d4fa01a3fe30df95571"}, + {file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:936ccfdd749af4766be824268bfe22d1db9eb2f34a3ea1d00ffbe5b5265f5491"}, + {file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4086883a73166631307fdd330c4a9080ce24913d4f4c5ec596c601b3a4bdd777"}, + {file = "mypy-1.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:feec38097f71797da0231997e0de3a58108c51845399669ebc532c815f93866b"}, + {file = "mypy-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:09a8da6a0ee9a9770b8ff61b39c0bb07971cda90e7297f4213741b48a0cc8d93"}, + {file = "mypy-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9f826aaa7ff8443bac6a494cf743f591488ea940dd360e7dd330e30dd772a5ab"}, + {file = "mypy-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82d056e6faa508501af333a6af192c700b33e15865bda49611e3d7d8358ebea2"}, + {file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:089bedc02307c2548eb51f426e085546db1fa7dd87fbb7c9fa561575cf6eb1ff"}, + {file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6a2322896003ba66bbd1318c10d3afdfe24e78ef12ea10e2acd985e9d684a666"}, + {file = "mypy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:021a68568082c5b36e977d54e8f1de978baf401a33884ffcea09bd8e88a98f4c"}, + {file = "mypy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:54066fed302d83bf5128632d05b4ec68412e1f03ef2c300434057d66866cea4b"}, + {file = "mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13"}, + {file = "mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090"}, + {file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d045d33c284e10a038f5e29faca055b90eee87da3fc63b8889085744ebabb5a1"}, + {file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8"}, + {file = "mypy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb14a4a871bb8efb1e4a50360d4e3c8d6c601e7a31028a2c79f9bb659b63d730"}, + {file = "mypy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec"}, + {file = "mypy-1.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a9e056237c89f1587a3be1a3a70a06a698d25e2479b9a2f57325ddaaffc3567b"}, + {file = "mypy-1.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b07e107affb9ee6ce1f342c07f51552d126c32cd62955f59a7db94a51ad12c0"}, + {file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6fb60cbd85dc65d4d63d37cb5c86f4e3a301ec605f606ae3a9173e5cf34997b"}, + {file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7e32297a437cc915599e0578fa6bc68ae6a8dc059c9e009c628e1c47f91495d"}, + {file = "mypy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:afe420c9380ccec31e744e8baff0d406c846683681025db3531b32db56962d52"}, + {file = "mypy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:55f9076c6ce55dd3f8cd0c6fff26a008ca8e5131b89d5ba6d86bd3f47e736eeb"}, + {file = "mypy-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f56236114c425620875c7cf71700e3d60004858da856c6fc78998ffe767b73d3"}, + {file = "mypy-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:15486beea80be24ff067d7d0ede673b001d0d684d0095803b3e6e17a886a2a92"}, + {file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2ed0e0847a80655afa2c121835b848ed101cc7b8d8d6ecc5205aedc732b1436"}, + {file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb5fbc8063cb4fde7787e4c0406aa63094a34a2daf4673f359a1fb64050e9cb2"}, + {file = "mypy-1.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a5fcfdb7318c6a8dd127b14b1052743b83e97a970f0edb6c913211507a255e20"}, + {file = "mypy-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e7e0ad35275e02797323a5aa1be0b14a4d03ffdb2e5f2b0489fa07b89c67b21"}, + {file = "mypy-1.16.0-py3-none-any.whl", hash = "sha256:29e1499864a3888bca5c1542f2d7232c6e586295183320caa95758fc84034031"}, + {file = "mypy-1.16.0.tar.gz", hash = "sha256:84b94283f817e2aa6350a14b4a8fb2a35a53c286f97c9d30f53b63620e7af8ab"}, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, +] + +[[package]] +name = "packaging" +version = "25.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] + +[[package]] +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] + +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pylint" +version = "3.3.7" +description = "python code static checker" +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + {file = "pylint-3.3.7-py3-none-any.whl", hash = "sha256:43860aafefce92fca4cf6b61fe199cdc5ae54ea28f9bf4cd49de267b5195803d"}, + {file = "pylint-3.3.7.tar.gz", hash = "sha256:2b11de8bde49f9c5059452e0c310c079c746a0a8eeaa789e5aa966ecc23e4559"}, +] + +[package.dependencies] +astroid = ">=3.3.8,<=3.4.0.dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version == \"3.11\""}, +] +isort = ">=4.2.5,<5.13 || >5.13,<7" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2" +tomli = {version = ">=1.1", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pytest" +version = "8.4.0" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"}, + {file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"}, +] + +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "6.1.1" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_cov-6.1.1-py3-none-any.whl", hash = "sha256:bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde"}, + {file = "pytest_cov-6.1.1.tar.gz", hash = "sha256:46935f7aaefba760e716c2ebfbe1c216240b9592966e7da99ea8292d4d3e2a0a"}, +] + +[package.dependencies] +coverage = {version = ">=7.5", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version == \"3.10\"" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "tomlkit" +version = "0.13.3" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0"}, + {file = "tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1"}, +] + +[[package]] +name = "typing-extensions" +version = "4.14.0" +description = "Backported and Experimental Type Hints for Python 3.9+" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"}, + {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"}, +] + +[[package]] +name = "vulture" +version = "2.14" +description = "Find dead code" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "vulture-2.14-py2.py3-none-any.whl", hash = "sha256:d9a90dba89607489548a49d557f8bac8112bd25d3cbc8aeef23e860811bd5ed9"}, + {file = "vulture-2.14.tar.gz", hash = "sha256:cb8277902a1138deeab796ec5bef7076a6e0248ca3607a3f3dee0b6d9e9b8415"}, +] + +[package.dependencies] +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} + +[metadata] +lock-version = "2.1" +python-versions = ">=3.10,<4.0" +content-hash = "f74ac8b23cb67d8f73eb3c0372773ef3779756255b8e57d96bc2f9dcda4223c4" diff --git a/pyproject.toml b/pyproject.toml index 0451907..ea3f74e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,16 +1,31 @@ [project] name = "pycosign" -version = "0.1.0" -description = "" -authors = [ - {name = "interwebshack",email = "22042209+interwebshack@users.noreply.github.com"} -] +version = "0.0.0" +description = "Python Wrapper for Sigstor Cosign" +authors = [{ name = "interwebshack", email = "22042209+interwebshack@users.noreply.github.com" }] +license = "MIT License" readme = "README.md" -requires-python = ">=3.10" -dependencies = [ -] +packages = [{ include = "pycosign" }] +exclude = ["tests/*"] +[tool.poetry.dependencies] +python = ">=3.10,<4.0" + +[tool.poetry.group.dev.dependencies] +black = "^25.1.0" +isort = "^6.0.1" +mypy = "^1.16.0" +pylint = "^3.3.7" +pytest-cov = "^6.1.1" +vulture = "^2.14" [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.poetry.scripts] +pycosign = "pycosign.cli:main" + +[tool.black] +line-length = 100 +target-version = ['py310', 'py311', 'py312'] From 5baf1a14b5b0bea2a80c31a3171d41a6e533e671 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:02:08 -0500 Subject: [PATCH 16/17] Add CICD pipeline --- .github/workflows/ci.yml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..eed45e5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,38 @@ +# .github/workflows/ci.yml +name: CI +on: + push: + branches: [feature/initial-design] + pull_request: + branches: [main] + +jobs: + ci: + name: "pyCosign CI Pipeline | (Python ${{ matrix.python-version }})" + strategy: + matrix: + python-version: ["3.10"] + poetry-version: ["2.1.3"] + os: [ubuntu-22.04] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install poetry + uses: abatilo/actions-poetry@v4 + - name: Setup a local virtual environment (if no poetry.toml file) + run: | + poetry config virtualenvs.create true --local + poetry config virtualenvs.in-project true --local + - uses: actions/cache@v3 + name: Define a cache for the virtual environment based on the dependencies lock file + with: + path: ./.venv + key: venv-${{ hashFiles('poetry.lock') }} + - name: Install the project dependencies + run: poetry install + - name: Run Black in check mode + run: poetry run black --check --verbose pycosign From c06383cc6294cd1b8689af7042c99f73e43d3ef4 Mon Sep 17 00:00:00 2001 From: interwebshack <22042209+interwebshack@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:30:43 -0500 Subject: [PATCH 17/17] Add isort to the pipeline and contributing page --- .github/workflows/ci.yml | 2 ++ CONTRIBUTING.md | 10 +++++++--- pyproject.toml | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eed45e5..922087d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,3 +36,5 @@ jobs: run: poetry install - name: Run Black in check mode run: poetry run black --check --verbose pycosign + - name: Run Isort in check mode + run: poetry run isort --verbose pycosign \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d6b930b..3aab2d7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -100,14 +100,18 @@ The `-s` flag adds the required `Signed-off-by` line. ## Coding Style * **ruff** for linting (`black`, `isort`, `flake8` rules) -* **black** for formatting (PEP 8 compliant) -* **mypy** for static typing * Docstrings follow **Google style**. Run all checks: +* **black** for formatting (PEP 8 compliant). ```bash -invoke style +poetry run black --verbose pycosign +``` + +* **isort** your imports, so you don't have to. +```bash +poetry run isort --verbose pycosign ``` ## Testing diff --git a/pyproject.toml b/pyproject.toml index ea3f74e..ddcd090 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,3 +29,7 @@ pycosign = "pycosign.cli:main" [tool.black] line-length = 100 target-version = ['py310', 'py311', 'py312'] + +[tool.isort] +# https://pycqa.github.io/isort/docs/configuration/black_compatibility/ +profile = "black"

    )vx#r=C2<>m$u~Yp*@M+(=F{miExw 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 literal 0 HcmV?d00001 diff --git a/documentation/use_case_signer.png b/documentation/use_case_signer.png index de7bd375c616fa93f60aa7bb958570cf55d75e77..21dbd68694235492166650434dd5af31d5e2a168 100644 GIT binary patch literal 78460 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%0A>uO!b0CNS{SEmo- zC)=;T?{@DFwgWXE9uc8tIl-lTZLc8|AUYsUjEWnHME|IyEw0|#)?o8$c@#?XfT_FqM4b8^>}s}gPgnv;?Hk3@YkjK&tJFuFs$ep=B+TS z&GdVSPC7EXX{-X?o~QJF%9b}Hr^*n~Q~MC1_$>yJenvOyQAv@6Lp}ndDxWtBpJ3dY;sXL`T2py1CO^uDnX7E&#$f5pH*jo}pih91TRZtN-I=$Ye zJ80W&Ky>*2kB+5|mLpRZ@Aby(9buTUilQl4EO90)LY$BwT@@2+M&w~4Aq(Wn zA+hiOMlO_9RPJ-V-#uHRPUb+2AUO6Q?IUi*C_}qYs<~Q6r8# zL=r2^JH~L*{-L&oa^*o=`bwzH7n86Q47n|DJ-B|uHp^5WkYxwGEK0wbA%EOgRr|?^ z;xCo0;A+`Vd7+j1J9C{!7_M0A7#-$yxu=eCcAicxJ#KiMv9-s1#6j59OV%GWr}Wm+Z-q z?oSvW{ zz2iTV^xx76^HpYaxSaivWEZf}*7>Z%j4$MrzTis1z%%OG`aH*>IkI3M0e(2szdlf5 zw7Nq*XHGO0JNM5Cc|&Bl6O!Z#IpmBDYZ&svkVOz5dPUu_d6ZdC6x;;$h(>OU#(&A` z>$J}*!4#F=U_aMhpNK)IA>r1tr1h;@D-6wA3-j);i!L(45WO&_0N-epD^u4Yb$&~_ zsU0c`eCoDUag}IBEfITo?n0ze0Uv~~r*=_38PtkF7E4 ztIqw>-jGrsk0vz{zh{j{1GVX!ssnP;B*HmSF*;mpA&{+>pO&EE-Tw zC9nJ4Bj7@lQ~q`iTl}#|jaYHYfOKMN3QnCyjtHH^khrDc0a%L+j_UYGN=gD7-nV&S zB_$t0xL4);9AMZ|($Rg3iKzy$4uA*(63^c7@exSMr*YY=w7Zj*Mh8sG6U=^JUPfjP z@_g;uzmSmE@G!`RO41L?*89Qvb3%65{)&j1tGee?-JQrI9iK%?ku+35h(%>&q`JMH z`TOQ?@-cx70viVKMizQx+O2;3()_T{Nr7OuBR$VIHeMo)m&WX8iW`T7dA=6$%rsO)5`rZ3u8V!h13 zL3rFDaw!)k;m5Ov2Rh_EUd5t^J)*3-jQv6Ni(=Jq$Lc!v^nK%1I|n(y9+>tG6cUl_ zp@9#bMZluz77vr%;QoyvIBq+45?nlY)&s5_-O-dx{#$w@E>=W9D7^9$jN8avbyAPL6A@#58k$<6h3*3Ups*+aaUj!(YS?)yafuY!?CGb- z&A~}q4;k3np48Nuo`B6Dn4A>QT0p)}0=?=U`8zOAYf|p^`)WR48WAKkOp{U1Pp=ys=mpdwE%M$jPbQPoDel1C2%W6WC<$9@m@3 z50`4Vk#BU4hlh_A_{o}r3@9!MU9EM3#1L<&bkh#OMtGWDIH}HTIE5McO{aK~)6gK# zZG^snuVpc*t%qUeKDi7DAjLp#h`8BEDzO8S!gL~;EV#LSBWO~vF zTj}F4O?+mFOU$A1Ln7ECUaqfjyO5P?>^D}K@iopG->JL>`iIXZRAec z4j=vJOfZ^Lo^%Xaws>?|xiJRk-nS8s#VOs$CXv8kz0A`tNnwz*}crNwqGkfSle zB%^d-zV7Vo1S&&7jsogor13YKwvp{aI>1-|FV31w8!+{O18Fm&7B{yyc zId{FF$Dj3_uUSe%ZC1>X*O_gI&SovHvgY$`>9fw$sQba&!A*-Y!EDfItGr-%Y*uuX z22SgQq`#*Ov`n#~4su_LeA<_ah{581~`qVFI(TyLY4V&V&N zsExR(zbq}p5y0uQFUL1ime7~H+0=-uM{Qzr8fD>RbM_o{aaz{;&a?EXF(oIZA;tN$ ze2u@sm0i=4;SJrP)xo{O135n9DmYxWtcZvIz)EYcboC$v_zbYuzQV)O`8 zEbn?8Sf@t&M+cW_xELE7Y7$ipIzC(h!Xi+SVI95DKqG7sBM#nA447vy?-2Ygn zGE28qMbu))7dn~_X#pkPYd;#@f8N}^Ow4}@Ae{eB23LY}iRID5qD;$7{kkSF^I z=Ei#o#=~@d@ai74YiX8qa81k?H!g8;*l0m{nOEK-pw{-2+ORl1m}A- zmqB(*N=5TlF8=BtdLSdt(++n-#!W3TEuhpO7{oGAQSk|rY!|8_KuZ@3gsnguvMGV8 zh!~n+2n?=)@gndX^tvGt^r$}+PmT6TkB_GW=|J9XfYAt&@qj1`aHAPWlh~C;t12qw z4Ge??1lpUMZ-JW`kd5Fn>w)8rOs69&%fP{bRqpKQsH&!hjEee1hD(Cu=y(Ba+}8~T zi0_tGpJ zHB`}oJ)mQz7NlgX-8xp4b?=MCiV6D`l%La35fxkFmmTvpT3F5^=H~x{gPIQrZgLYB$j-xoT2GAo}1roGGFNoc_* z(2qtNC%s3Tfh*iZS`0r~?J7-9j9pIdz?SUc&aY2^mg|hjEDha!z-J{JMPop6QPKa* zGxt+zrJ5o))Ls_7X?%sWDe~J#fu)=^*VqsV|{Huu?Vpi@d9!u zW7+jw>$oO=FMq6vWgh#-H^LP0kbkq4tGCiLtTA6>$m=F)G}lef4yXduz__n(^g;G{ z|4GM6CkDE=hRQ6HFpevqrZDMCPb_Y`-d*FgXcWoDx9 zF#nUZ*)sH-w(ZU6n~>WOvh9Cym*)qon11UbS{W_eZCseyGkyxk=Y_0(TLT zzs2!vu#4*9eM@F5ms|Yh)bd90niUn_94}|o!5PiYDK9LwY%_3%evfMKL18XdVR`mu zwJI&e||q)dFE zlmfN?M|CHlBL=FQ2A>C3(Zj$5KmYA|?&}Eugo%&;x=kn}U(JmaxFhaX$mWD5toT~& zvSs{Go1X)$zM^XyA(zcF09&ZoWc$@V}A6i8sGy`SD%2bC;vUp zxZiIXQ`vJ(SO)2FRzqq$Wq*0L=_d)I7+zYO?8kYA-+C3 zGE&NZBws6&5F6!sxb@X5aM3z$^YKhZsKBh$8x5z);5aey{$=z1-_q~({CES1W4_N$ zr_X;JkEijrZ*CM1Ip?tHg`$4P%#d7Ds+B0b;#s}J`t>2FL%1Oe!rTguZQ8Y#^RfNv z60r7j4#8p`DljLDoS7!B%M=Dj5&{zu{*)4yc-)UdgV{qE#cF$lOk6OMWoc66DF&+8 z-yN9-g@5}ddAA{sa$)_IcBA#LIBGfYNZpvZ(Rbb7do+XKlwM3MED$A^8WXd&v0-9n zCQ*<}1^S~~?w7qgI(oK(VmgoiCto^ZVq%aN3YOFsn>MK7oO;G?aG8}r z`lQ-6^2Py;ai!e`P|DuXR-Lu}Jt6~REafNuskPG$eqwaItQK(tZApF2)j3zx?9*#3 z_@MG}+P1yaZ}KScIVa!weVq>u1n=b78wr;d^6Y`5oPvLeN8t{jxVIfL$A>^5Gt%y- zX`A?m{A|RUs3=witOm$$3=}jZ*j+@_K@1TyY~Fa`CoZG(bY4$)yDxVF{HjMZSHeiP z``=9bQqeiDPbo)WfI$PkoooQo#|~>Xwk7DkKfvXQKyv*x-+7;vr5*% zA4>ib84kaKnYwk@Bja?;e)Xdf+3+uTIUplm1kLeRuQ^pqpE@$-_Plq)lG2otxVouw ze{P&0HDHyK!@zo=+FM3aN2(1kYdZ?2d&-fbZ@X4K8F-ns=SAklcEC#K$$*;JAIzEsfh`cuFB;EFxmm4hmhOpD@!N0 z_aVvW{Ej=wZpzlyM^>r%MMbJ5bS?IqQdhPnz~J9*UF_fzjDyWwpw)c7aMPUYc-HK7Vu#qy+%-yays}a{FAL3I zv#UbWBJub*G{a7$bua}eylo2D_({xzO83e0brZd`mfBk`CjS5MB{L~hm@mODmrZ zQSQs%n_QoJOor$L9s@zht-bJ0?Mn_Fpj8TFOqrBFej8kCr6ZawHQ-dt_1}>V+!_T2AMB&OJF+G=A8vq#vo?K%66s$o>IRNb-(tJZ}Ha?w=`R zIwx3~&fBCpClmHuD?}}Qcj{G^|NEoI!ZKHDx9ytMA<8!SMiC?%j`s)~Bt8%2Jqt>{ z{TA{RK)bA=q2l9khA?tsht>!Fw2Ns=b@OJ5u4&Bl%q0bd!PjIK*$L;vgm zma>n!bQzfy5Mf zoiBJEy(2{gfm-fgoJN4mqFj02Xyl&QzeTOwP!P`yX+02rzEgatToa)||Bu4yCtw%z zCJsn^M(uGQ3dXwRH%r)tR}a#>ktJtph&u6O9r(o{bP#AG$f}faGI=<(=gUg*a9Ice zx$hf8fjmGpS>qz92S9Zn{T9a9*jUiO49F0Z#IF}T951(k8_{LEDkK|;g}>Kt&??|{ ztE8yN!o}72)dJQl5*{A@#fx|!@T*EoO27$bVPHV?dO^0wKwf%rQB~L39zvY%y1AXg z-JfD>wYi_cv|V4m-BNK!&v~Ag&`I2>3wXbwA#ZUS`;6_@xapg}y@j!z3@CwAW-YTY z-X^wyMHu&;eTF`*M3vfkVmjZ<$!hAFq~=Ts%A zy#JzxXtQ6YFs~&6#0Bne>n~lxoF!jZDFGhBbFCfc4c@6NVpxeg2*BOzMuG2y7y{hA z9NX6yy($8#L0a4_5yihEKOvkJy(@I( zwNaFP&EzEM>GV_S3XF}N`&tTsdgkZ?c? zY$e*gh(<5mkG#WaP-G(b4-HLZNNEqS+4k_9L>w(7oEFX-a>jlJ(NOEQDa^5P6<|^v z@%y6u_({sx-<$IjU70Fmvdp=vFXpcrh?+<4&OvG|7$>G9A z_Ssw{ft2HQZ?_OD`dg=%4pbL}XFwXi%(Qgl`MlDOe=~y-3mkOS&8hEk#{0ekutoCE zjA+pVp2dg}hd!Q$*YnYn4B&a&eFRIlQ^EUwgMaGZ3&gS_#1Qy50hl#Q=|GMa6qy5r zMeg?4y`nN|2iP^(ove3yUH`HK$}Ygqif2Si2IJ+__x{>DGY**gb27<0|6h`A;hBcM zPqooPvl{aTgk3mMxc`G6mZ75>9gvlrH6npkzxn4_zHQwYRO)4hA|wU-zP+-wx|R$Ns?!*M^qwA_g1r5su|xo6OuAIPaiEmlxg39|AF9NKSq zxGcEFl&TA%Xpl-eDhfXMA>?DBZ(=+Lg)O>?3cI_vPQ>y%|BBGV_cA}|4|a00yB+a* z@>@Yn`w!c_!!R=1>5tJGca{10s!OGbOK@slYeh~r_sa}5Q)uM>c;E=XPvm<~TkQcu z;UP3K_+Yth;pfkn-xXV_z_VUg4_L#{@UXDJ%PBY{J;8>E8lLG-)&PH=H z7tqcE+e^Ta0r{7*vLhhO$-%?82gtm329uuw5NJRj^^uX1LX5|I2k*`Y(ojI8)H)xF zukHRM6&->09dspNt;&1a-_WU%5>xuumxD~c_COuc1F#s2iv+}IAVS?btVFAJlF2yw zKu(pPlW&)|#Rp%g=;=119e`g%`9j}pZ8tO$ywA@9hTbOSw)+t%+RvdHHQxn+G>V!; znG)jN@v!+;%~{G6nuy}We4DK>zRM#PLzi=+XK}Jj`f`$D7eKwmib4C( z+0|tY!J(R~cSudm#gm8teQ(YKxjQA0KQfp+OO5<|(|n_|qEo6G|L?Fc$CWh{;|jcUWDem{)T+vJ$-HF>^6AF?BhZWqg)~ zx8Lp4U>I~Kl%#J)Fh|-voStOuWdTwep!A+{`{?~gs7mq7Z*6s-S7NVzwXy1foiPc3b2Mwy60f4hFGPiLz?{eXKvNM5&#I%;*jq(-*^oI@U8C8dchN`Cn0f2dQaTmiN1@;1ATWrrA>$$XP$Ax*%rzV>hy>u`OPuc#D!kLrn2@xaa|?>q zK}dz$VekN;<$(yl5zL2njp-z4_C^dY4iXNv>Ua34ETqus)`)AX^;>8F-Ug8}i`-&z zPp45{fX1LqxFVIpZXe$9kQ9Zim5%D4o$m@#-^bZk-2Lu{#QPwBAFW{Af+h`$Nte3b zf;Pb>7_gf_gGI>3Lz;{2t?)L0!_9t8UQc2JloWmR*Ugm%UzqW^L`$`Xp9QQI(sld$rVoVJ!T(ZV3UqIQ5jZFT z3l&f8lNTI4Q1r@2%#4h;Aj~jKckFu%u#DEw)_w#ZoTIl3&-UhI4TRwm74!iaSCGtY zL^H5(GcYm&4w#9Fi6DuludiLEr1!2P@Sz*4pjF+8H|P>#0Fqc^;Y5`0HFZpV!ufP4!4AOLn&Fso%> z0I(g?`&q8h5RDeN{5Pz6c=ziq>7c-v=>RKvtRk~-fv^)`pguo6-BMvCk>&ykEV#%y zIr%~sb2eFfDuxnd7?Llg08z#|Wi71!bzqvd`vVD7Clx{X8FOuQAH?<;5b+j<)1uUx zbfgse-K!DSFNx)}KF>RrV4B zML5hF>0W%%FijkZtF?E5zS@2B8Yv%I^;jkMv{3}*Gc+n}uo+*S>+uO%JA6ha7_q{l zp`ik{N~?s-)n`Xb+y-P@;~x2>8_WlkvpOG*dhl=Zt0+81?Olw8%3P_?_|}RD5DXHFh(OnqRxgSLP#9MqbCq3N3qnf zC9KCw(p0TyPlswuVKi$72eXfgKmEJ^m(d4HotHI6F|0VE9o*F$`!Ku|#sy%Pyy2f` z)bW%iysH+w_5m7NG_CaJv<6xXW&yw{4;qnWix4ke0fFq+R(vB@=T9lAse3Jd-e#p@;zQCE`AV` z0Fh+hzU5sT;5o5>#p}iH1dEsy9N9&Xg>pobO9K4l6cv=XRP7@-Jp!>*`zuG;i$t;< z8*YTwJ3|ma&jMg?R}I(p3HQo4Z4w7(W8eiN!Ezt_-R=?Ky#g)?k;Utr&@?}XYts@eSj4uoozf6bAn;> z0?zC4JYxZ9K&E{)~v|^W2f@%jQ^k5a)zwM99dT}q%)3^W=OEOMt*TV zE45q970s9Uz~;NBG>pv!Bm50)$A=sBt`ag5!vb<$_tQ5=VY$=*;j^n^{d=X(YI4rO z$M&#sd7GR;4_Yffom`LE{G1#?Ws%FXy#dmD=E$hG6xZo-vGFZ-J4i=lxzy_F$>f2} z&youE$t;^v&*MN0luI&oX5NG3nZ}OaL7V4iR$YA%Il}aOpi|*C9(84l96GG+#s|b$L8CYK`p_67`LI2ij$+G|3+)5WBQ(u5i z(^*|6mWTwD7^W5#{Bu3d0>ABR2{;Ml)I)b~_WS0d=Z-|&X0j$ieWgukKBy&#lh;=;g6fPJ)jxt?Mi)OXj+921d#s`J5vW!&>N#c{^2%&qFz79XrQ^!I~ zV}E7;!WIyR=+s#_+LYDnG1LXh7Mo)R0hYHHNU+?FuX$#G>}|HjG-ukkF485~{U0k+ z2m~c(6jff&U^(cQV|UyNa&E+}d|W@DW+Ef&2IJ%db!3c^swxdN^>Y@pkw?##Ui{#o z6j&qxfzw8NCms;_l}fO&>D0WI0sJdl##ZlI-&n=%!2n%&AoHuqeYoq+Xr__Syaq$j zNO|kWZhkclnG7SEr|-{e_j6m z&Q+on;y7OPB8C0E^LDKXA>`o<;rR#v*SLMt{fPVsQW%!VC>XGN0+S3K9bKc>i8nrv z^(SrV+p8vzO$%0z!Am>0QTx$O;p@rl$p-={FR5>vLZh^*LLP7TYr$wBVKbH%msC() zj;A^V=y9I2?y#LerXLrFypS2IrkS>Oq+bk}bn^H4Ue*Xz~P3ToIvY28*mJ*|!6w0^z4VaI|Bq-`Z~Id$WFyL|O8 z)N#tqUId{zGm!?`lzvp!v#`iWy-ee%LG^T{41Fn#Q<2N7N=*mzp=HD>M}#^KS{^8P58)%*i+l+oU$cbE)dY<8KtkKZE?57ErIT6(W|w1%{pJ^|D_hlQN37 zDaH{6(Q>r-aunt;0(DM9R6nM_6wEt4aXwmoyI)!>fZeb*W2Kbe)TAyi&&bbDwBzY4 z1UA9;2eUuG1doA^URz)P?FS$(fw0-@^Ya$_Jyge(n3z|^(YTLEFl4}*pPL)+9f1w7 z9@J{I&Mqn02f=FA3~OXQI`^R%G?T1#Oz;EZqK1>-0RZGNp$TP*5b3kt5s*4vp{QJI zKY2;sd^hYfD3K0Wme2kZp66_DM7mpBc^0W$WIZ2Fdz{7o_@X_ zpPel#&Q|}fE5IbMaf4mO_qDAx?E#npSdXmYyu?ygh+|m3e(G|k>YAz{g zx&j-vj}u!hJLZY7eueoN_4`+~9L}j-y^U4Tt9xC?{NrBE9y0PehO&k{`S}0i8*bgJ zURE>3+*c>&bnx?+$0fvILv6u~oP#R&G4b-E$Hv(n((dF7Zv-dg5%I_w!s`*$(&)k` zhfwsyuagPWWg52fj`P>&JiIQR7Q$#lV=R%vY_6*JF_~o`l0YuaPo`4<<;`sJ^tAl7KTN%Iy~U zKcqfw01Pu27#PP|9D*uQ&)8R!biMZ<>9z4Wg1Fcp8>w!vF-ZiM!z2j96~x2E#)#-! zGd6XfR3*twviX~pXUT}T=G^ao8)|D45FR)_cS6$A7MJ@|9B{whP*GE-aM08gV0}5=;lr2@U>3w<_WOa9*xbz{7neH=Zf}r zPcs-v#5oDiRVjC{E8MYPV0HeS?woO&eujV->6}GDXdB2@{Xye_)dv%S4N&aLIJ@TU zrLaE?rtqc}s#+AeJ@n%V`CA2BF>8xL*L6q1-mswiJvy>nq;Qs6#rruq`;pvyTesQl zcT2cXhpJsx6vEvoV0Rwwx!qZOmA&hlK;?RUB9+S5t)d_}Xx02-(>sSyn+q{&sQY`( z>IYs6gJ0kc);VIsByW3ntHbA0|MYN#&o%;Vv!0Km1l$-EQrU$1-7toS- zZ*`om>TK?MZ@lj)(bV8LeGbtXYRjnStuSbWHGYe!w zo&1uIj$Qt7`l#s5c`NsO`(8Q-oM>lj4;E4YAm@Xl78Uib;X0bv{pJLu?Cp^>SgjZ~ z;aSPcqwrLL{XH-vY`N>n0udRAg763k-vvRKOLjI%epEWp$`U5Z7e0VZA)tu?c*M=s z6%>lEFU^3bDsg2NHiWTse~vq*0H>EDFml{Y+w&Zgvb3lJ&7_h1Rd^mSPad4_H=Rag zKRR@rVcDIDoqJI6?4Hcp^{|49k))h=C3r(K({2YkQ;&E5kkT|^>{(e%J$ z<%@h_T?RNio&+=%@hY0Qt#Q@OeMw%(Q2p1YaP$EwSGDqW;XOpGW=leLrb$T<>@+7| z6bCR5)Ae5=2whl?b@tyEkyYhw8rRhaYJdinQJ#^5SJ%BAFtU_#bAbZ|M|pca9}cVI z+SWb>4z@&~9UMEg6~`Q>i_H1vPcjs>ez4)MB{t1S{;^E41H;+pWTnyxcHX;5xPI@V zgdJ09$L?Q){;;FawZHnKy=$o_gY)YC&6m3)ofC1FQG4W0{x;3e224f;%-sD}6`6Pv zGMC8dFpdV77jy&G)_<71tSG1?Yw6YZQo6) z>aJz*>i=K7$p_y3QO3b(+gdvM<)!>Vc|;b`rQQvJRbY7;4Vg5G_guTP+tMx|`F$jiJ}n{4Jf7FOWzWlgc+(gc!G3j*&7rVx^5 z!ik_b?2j{6C?N|wR|4-aJvb+*_)kn3<<|g^kX;H#By$oXIV=_!Y2)k- zA>rY*)m7{6wM(O?je9?ef{P-WB1&SYZ?f<8oq(-F(JG}vEE2Gu?29EwI6+9`bx#N< z$iixEms&-SwqCTggZZwSkGe+GXkDin}^8;vJ|`)ZYUI3}%A zjl$7j>=_IBhf38~RGE<$uz6AuWWILs5Mr(&k*CQQYz<0MTmmXKGHO zWVXh!#>+H?I3ns-FI~xjYm-`F+Txp?U)!jqG}ex}Gz-vG(zH^|#^8FI%S{fUDKTfGyh(Hmw(zmmBNr zz*RE*T&Rl#U%?X@7V8_3p{qHAy@9{q_kZNGDJdzyF_G8xg3@vRl4MJa9~iCx{4br= zY#In6Rm(NHM@Do3u$lu*Zo%pxHa3=ol#x+hSU9h~9#drOjjf!#JRB^n_p-jdeXY0m zCpo#%XV)hd9v&^QWC#~a`NFRcdYxC~K5uPp+wg1!IMBfm{T)OOXJ#I+u4WY#iOYN9 z&wr#HA07Q-V8CiJo(Hl$S3N&YZ-P{J85tS!ZA_eAnV7|)S&``wYU$UxA=@hG7elmQ z@AbtLY#cC<(cz^(M~?KGgT) z^y1)hY*h2m$senwYtgzTuL450`X4=XjLqo^?emQ& z{`GcN(ao0Qb_B#E=I-uDKI*T#tD|jhp1BXMcU&FDtTdr#_iLA&yU>ahjj-&{2Qc#h{Q9`NH?+}zwyGC`U8M`k;{ zysFaLh&RwK%6T4jtzRUf_BZR);K9E!0|K~zrw@HFeH<&Id?m4AMA?4S5$C!6dzcQR zhTb<{A4M6ONAg+bJu$4foUiapk(f{IK!b}V ze_}694#Q1Tcj{4lQp9r3G)x zYO(SAZ?QH75a`!=rsqx|+6UaWy1KeRMohis(%sderY%Ae09jd!i%R;bXw@KgP8NTe z7yFa#=c@`kS$PuJ3J*+)_?{|t1ylUXcywC7O3^_o1q@UzE8(?!yLxvH)|uXvS*L+* zI1Lr`zDa3j@j{?(RgVPX6}z0#Yi%8Qm<=TZSKHd&@V$xR4W}_?q}_l3(HW=7kpj_& zk7KG`e=W#Ebd)D8|D1d;38EE5rMl^h&K3-0H$(ifI=xXo^9~71zYGHf)7sYF`C=EP ziC0<>gtiAj?QB}yWm`Kc$ryP0MV95#}ofL zyhkp3Ih#4z$h6pW$)d&0>Z2ghUD=#6v)MN7HqIb>~K&2 zv|UNi?_=Jjfr0KnriU8e6@ReXSydTX5BMZprCjYvO_({&pq^i(?+Klgijkv9Sg=}T za|&XLVg_i!&y?%*vP2Y{yW#Z9M#wxOCoRx@(Y@lUjbp7aJDDO5JwH83#!bSsqKiC> z5)`RMs}8ALpXsR?{5FSN{nEpr_E&Ifr$^h~-N)N&zOb!Cj7+i)24qxJCYQgg+0WbR zWEZ=kaMqx3{!in%r5N8jA3RG{5UI>2$mrQ5PZb((qf>Et%*dH-BA%Kmhr514IiP}Q zfLS&5Q6n7<*dMf$VP7&B{lYpUhb3!ev3QR-yk*3SV4ElB%hUw#r%n=9q6hYkhcml+ zSz}!Si;#&lXiB#9L;VB~8N~A$lg5&EM8JfegpYV}UdSXVU0O_r)=2|o)pxL+tdlB}vpX_0I zHS;&3K>-N5MNrjLecl#QO}RKfvMxPIVLUYcL76eZNo64V{%4UJZa|IM-r0$o=<-l{ z@|knmWI@s~)aP+I69!@h?#mAqD-@UVyXu}@H$$)0!a(jP(M=Kp-=OcwmB2_Sd5Ffz z!`k8Qq&JsnIQn1Gnp>eNg|K`>Lz*WL19#?`a+1bjBdDS>JvkYNjp$VNW%SI<*!YtL zEd@nTTvTZ816UC+B=z<-Zi%(tO0FIp07Exla)9KAn~L&wgH();jt&rsK_;1yMfWK^ z7QQ$TxY7gDdxcmaKmv`o@hgi@N+cx-cky5(_3`<6y3s5D^h2+==+;=kf2;R~D?AD0 zGXqQn1qFqfxu)3WZ=jzB?LK3eqk4NG31wCNrsmn@K_vve^B1%h`RM2dSS5IKoQXR7Bxl7_ z(<`^bywo}xHrcJsJ@bQ$Q>pb(1?F9UlC}CxOtts6yCt%rU|?jEDee`$XQy7gpktH} z7ElU=a`5i&@8A9`frDe5UOv!Ssij8`eUDdE<3s-l65UaA>=I}dK0QL2W}&+Fylkr) z-My3fLtbWcpSeoX75raiFcDekD!_`>_m(M&UK_#{qHVmqfm@2*EC>h=gDd~2?RYrP zYRjB5_#6zV_oErGu*(-%zx`7iAU*;Vs@m#-rne}Soui_D@E5hhL(rA}C<9hESSm%h zp4k_Ix@#)wB#$2zE~s&;GsbpXD*9howQ$aZPDApMzJOro!XeWq%Aerkx6+ItA4K z)FddqqgT?B5)Z%Q$jb~PLeZ)EYtByrV`Tn?_Ip%J=c~@289y)1LN*&UJmYWUsY9v3 zj}5rn?~e~81^^K;J~{bk?*PH7$!+7t3r}%R=F}tUwu>9IJT)tKgcSqU3x2P5jRSRER}O=k>)^%%|6C_?S-N<}Nx9(Gx)_gGsa?WpU!}nsS#C z9_X$KD=$1CE-#oj0)H&SU|av(ql0aD*i|1R9m5oUB;+H6KefCS3u88BgEY?=|Io79 z`dsSu_kLxQmqo(){>lPOC{NI zS+2vb9N!(Lw33QS4(2Y{Q3?nN3chlXq0YkvEjxf0izI*_>v~^1V7)7SwXBoFu0I~GU?!FrGhaP1a^+=>)VbeX9L{Jk(xZQg5heO zIIO)F?cuvYN(U{n=&V?|gSGJ7^Li%sZI zP%&k|{JvM1`J2up)K}(s*Pob-su-d#uibak{=WZ<*Xv_*Io5ESkNRrH3cbV~U7fbc zAhez)yOMm!T)V>wLw-96K zNv+h+slj=%`4j5_VId~9flLZa?|t8U(tF-lUtgy0eK-qiz#K75mY#K&oJ`DmKRI7J zRm*$GTP&e!He=vAAh%_VA|@H7aJ~nJQRq?QtUJv&ndAmwqwNo;ny_=Jb9knB;{y~0 zy?tlgiY`5izte(Jjlha|m`BB7ytqn<95IFesAL3ppMys!L`%oOwdfiaokY) z+0^sS#?YmS)2orSOyIIyy&~X@ z@JqybE1Svp+;-Lvq1=d){BkDR%Eeu_0w3#=?-gTvmQR%W7}3+Jy*ytrm?99nKcs+`8SW( zD;w+I0-$b~*>5MFdLJadRk^%-SUSVQM*PMK+Mutu*?F9aMsLm-&Y z#cpS-U^CLf8}jM;)8tiA2G(il(b#w{v*BRUFw5ion3*#Q0}R7Od`b>337kCKq2 z2>bMd`BuxCkP0|%nwF&K+2nraYv>g$(Fu@@L>XdeIlJ(wTv}5)^(tSR9gkg)V551- z!MNNw_h1Z-`snM9fV2vRQns&gT~r*t0NSr{xTd*glM>Va9qGlh7CEnmgG5_64T zH}VLd!ca2!y^bI~i9xBT_49^2qAP?yMsK5C>0du)~zU~1^0ZMVd$V(NjGmKN!Jx8ER(V!F3CC^3=!>>l+#vbldT_vfRG~{-}FE1}bYHOr2a~0yeoC0DJ_klV1W+=i(wh*;q>M9$1A> zE)|!R2~X?>QBqL>oB!LZRb(On$WN|uV{5@c3tXGKxVQj}9wcoVuY1WhW*R$RfBzO(SX$#dc z|75hzbiNZDtbYH7;;=M(NlsYVg@PZkT*%|%orLs?F{-+!+XA<0rL2OS4ka~tMpDwv z&8eQP-7PhUwWz79+gjU(zp@kd;CN_e!)4qJ0qyZWbCTic8O?BH-u6Uk=(H#fxdLl> zkw{>OgrMH}r3_3GGC5$};LpqO&>*q*FnLh=3)LVhSL#&Z%ii1jB*ZiQs4S zG$Pya%fU0Zd6(#P3%02$FNjj-`2>vW>=n^ zCHg zaP3G8+tpf|SDJu9NVBz0P3;p08THoL+Q7|&htZvLqw~Sg0rNUj5h@Bg+!<`ASq2T? z%t&{XxG0S9z(}m_Mzg5A%y-9n5;{m^0aAg96nBhc^!~4a&=2yl#&w*t9HYO6(AdXJ z998G(_f^B*L=pL^~h=+0`q7yg+GE?PYw=Yb=Zoa{Z$Rqf%Sok(qE1ai)k z$6H*5@T4IMBuf2pve~t}rw8zh8=IRI${S>TZ3d37R*4Bg|F!#m2*gqG z#mB|TAzdyoHau`~ahaQ&7szJHWXl zwBW;;rl#i3NG88t4UaZ4lyz?k{BFf0UF1zxxz`@dK4sKYzBv+$`-G?ih9hN0fa3+P=3Xjk-v^4A-AU1vF zC(OS89#SdizfWL!@`sGL#KoISAM2dKe%sNp9(2j=?R@*T zmlqe&Zz=BFW46Ssf$|6B6|Ji`jl9^uW(RVg+SmG;O8Wgk`s{qSep#`lHN#y zTy~azlHBtPJyunUnmZiHffqfQdt{y=NgP#K*^xhm&qLJS66L%4%-=Lwas5sW&)Xp^ zk6d=@Qik>I?bEX}L9yN$bJLH%0WEp7xT~)(Buvnznzfw%v%5nj3S^nFg7H*1kP%4~ z4KszbrxceD)WpCj2|)%WSUNTHCwZq76#`>RqD)Ak*MJY^qVpYT zyg5zNl&zWK4S9k(t<%Dh3YLZJo{5H9k!&lm<){9JXmHlniv|hSv(Q1J>yZzVhcSgv&ikEjk*Zf+h8JH*2x<;^wAU5xLM8f_(L5Rf_ z6#x@ih$RTJ;u}qZb$Dwr_!hIc6y#2Xw_X-f?)vMfs{>bVT1rZ6WMpqkl)mi=IdpV% zH4P2S(W+;@5FNiaN`+2aN>Wl$PEO~*03IQs=kYS{8Pe;(br6ID9#GudRWJ^qwW4ZffEBWdh+9o=?tftMU;S6q-uiRtR+()OoRHXzJw6xv>*O>Bh3+e#% z8*{LfF3HRLHEGYu@U9`KMptg{)^n_zxl@pE3N_EEVElGWb>QDoSlN6{;Q{Tt0se1q8bw zhz0Vlj^0Fp^tYUEcU*V3nrC}&s|K>TQn+x#a8Dm(r<&&Nr1Pa`QY&K5Se02-)hj!9 zh(tl6Cbx!bob!7tae0ESgx7SnD0fBgRRX77@cF!;O6ZFmb@m2-4u5T4to`xB<}=bL z1Zuut<*gMlHhvtt=9X^>+y`!HX)z!A^JS!3ZepvIp!$V*v zrTI1I@2V+hJC#7Lyo*lRDt`O!?r!C|ZZEhG1$lYm5)#?a3BdBzJr4rJZ{tW}l2sn} zj%V&K^guB%128CXLI&>@NJIui8(oWzcKK(A;Mz;z%mwx4O}>G?md8xq5gq@e3z1VC zUt!PmS?PhNzWxr6#~q?0{7l(g*)H>!bCq?P!cj^UBpH_P6O;Yj1N?r;$+F@}F56OX zV=>}+SE5U}CND=vd%g$6zn%J0!-YLmGfolRe8G@Yl3}Gtz0cE?i$yoKwYsWhs$UBb zZZH}}J28KJuLJSamY4r(VKFq&rDtZMkcM{tu-%*KmuuSZ{9X^QIOV$>N$yN)keIBp z0o46$a40MY!7J0obA5Vn0eJ){I&H4;fZkJ9`$^g5DKc*LxTW-D2mx0$y=2(_2lLh! zBPVNXV=F6)+x`ok`< zHheeq^9+6ocdu`3ki0(;6L9KzN;+LgF&dnRf95GcIrgha)>b{Ur zSipMZbH9mRtZ!#&^bnKTST*QL14NU8{QRFAo_ds%nB`Iq@#q+!dH9`r|7Qa%3UzdJ zK%oNv0(ccsO0X4qGrp>80FLtZFvCMbZN_6ci;Ihyo_8Uw{NCRM5#4~MdZf3vFsI-M z1HC!l`LE9(C+k9!*6ysWYY8sra{(E}KNW5U2U%JKjl>Y6ZK9EwfxdivI=km|Y<4oE1##Vg|OBsU%{^@Kx zG4$o?XZ7s@V)f*v^KFUTg@j|s-;7pCZ^-%i2tUZW(Ut(|k4m(^DT+L;crBGYP^f-W ziidtK=q=dLjZmOLR29AvS-ssTWR5rb=J$Q*ekcilAoU+tY_c8jR+172BNW8I+`!SSv5Mgw$<(J zPk`N!NUILSj;|S$dhj}*YHDgW*4DnqCOTc5Xh1BC)ZHX-`8Ho0$Hn{y{fA zs@7mhz}59|_os4`7bctn{9tW>p~*$Cx4(aKdZwm{Z6$kq(nI4}4&}kd+p3_GM$pu6 znH)_F>A?4V=hOfq%Q_$edfgozpTKG<+lPk6*Rm=# zH8sf*odJc}rpF8SaF}<5KoM_dY6>pbedBH1F)hSno9#%)2U}H7Uav^D2&7O22%cVC z@OVCOv`R6%67snxB{aMIxa)jZsMu?8NfyFz98PKuYfN2ytaUo=&&rj8&_tOAmR@3! z_{ld`vg`liBK&ejyv)q8QBmx)Uobv=EfFA{!mx@-jA!~d`seVF%u35U5cE)$x)4v` zmIuZ{&@=s|Wq2YN5NY(b|4w7~awchodAcGlLj3k!+y@jtZ}0g7{Mtb22RUs_ZI zk`(F2Ca&RhTAH$qoz7hr({RxaxjX_Ky|o1=vzgoDY@;$Yi}Z+z$w_F*%Jte&%Sri0 z)Zmocv$KA&5(_Jic>Be^C#E#k(*s5TWApRyvggvsPd6J;dcBcA3`<4%``x^ks3w}< z0$%mn*P_#DP@F0WN0yRtH`f{kWkf?$!@il-FtM{^xsq@610D}Z^KS06$KfZ6swtOH zw;YshFgtB~{Y{QY=Rp@Ds;&Ip&ktNEf^?}41sq;5DvSWuL9;zofZ&ghb>b^Yp7m$6 zM@Bw@lihb=>Zj_%)5G81f3wTq78MrGqKDyGW+VhWGjlPS`s{W#3YZ0^*OvrT0*@!3 z#%JlG+(<^nf zRvsgByf>HVEU%UzS}IL$LbIma1kxDObF}Aq`8 zDbw&>=S}+HS!k8`^{f$7R7AtZ zrlg^vA*0$l+RTWJnb4Vtyw}ogs$kb1ksfw%vd(08B4l`1>DTs}t1>4Q>kRr$PY}D+ z^5oRCt6MWX{K>!|hW3VGWQBb$4lx4D_kcTp&eYd*iGQqZtISM`tYl=`LF{Ccv=p@U zePmkC&jEKrKo$LBWyL^3-|XZ@`#`}TUV%SQ$2K8^SCW&n{=9`gg#9R`s|&p#gsM-_tXyLQYOjU~*7Uhylxvm>5(%ywv)7N8ot@y8OR48}H6A zp~wmU0-jB!PFpizzXS)v0>2}$o#ONK1QJ+PB1q9@ZTUUYp+ysm)In>dB0%^g==rdl zsiu~@G!4E(2ZW_Yqp@b%sxDV z8`KBz4`53M&VvSS*!Ic!yau)*1&kxh&Ib2|*>tH}#8A-qMkf#JWW2hXAr3CCzP|pa z;J%SQKx!YO3r|eM+Rq6N3#nw$Y%*CYcJl*MQVt&7|0Nk@#)6uayP))y#D@;=weCfSz@^vS4!iWOuwIq0vX+#-n9T4m986c! z(S-#~kl=)i8+vpOn10U@P@OM%tXDe#O54{ni@pv$E!C8m|$+- z+}_q{aeSLHhrS9d8-Vy;n2wW;Z5pI$)E$C&+OROmU0iG~H&?M=6#1CwTT=uy{42LE zov%EprmpxG9PauP9vv7LY&|~csd810Pfh`a*QZ1tK)D7qd;6Q6tu0n|c7B&L|5g+q zs$b6t-u!&1jE#VR0HDGyYH6KsZL4cyiv_vHZS`nd&cj)WJ&o(GjHN;N`RU1L=S%}K z!Y_ilguk|z`L!)2&}jl7@9toZ`ONSQIkweutBI*8Jc4E^F+=ZAcawXuidK=?(6YZ( z<#F%zO&nHpZ|U!qD#wVh`ao(J7;df;kSFd1R@^rX=V9k3YeM!A0vw#;($ayRo`R3M zKl`SsILVtltsa#eURc#Fa%s79(2);yjS0EH4ffxfTY*K;~8OVh4_ zdhsR9G6CbirIL>yG;_d0a&2o(G;yZ|OY$`RT6u3PJutmkpn4oN46Ar*a&~YX&sxU>tvb>QaqjUrzp9YI9@X-vfAf&T@Qo zG%^B07`U`ti$E6$$R3QRuj5|nb%I0voF{y;Dq#Qm`1ly&erpSE-XykvfC#3Eaf*gU zlk;uhFU!SRUjEWnTh)z_(DU>u?RVBh7J|hW3L_PYSPjaA%W*9f)D~u+E?gIsj|OPV zfRMxAKVU2$ln?j57&4$!+x;X8^NI@}RG}9}N-qeIfR6+~$F43eloXYLV`fsXRClPdp3ccA-dRu$B8I(nu&HMplT$@q-7)x@T=z*}d3l%( zxS4_f!Il=cFJHV{r@Z^Rz-^I-ka2R(^>?O4C5j2FeaTPuG)R=j1r>#>%S#c0V<5h|vGcG! z1>d@M#ZRq%_X!T?WCqZqGO(G?ehkW7neQwzmF-l$sXq?*z$u_Z0~*c) zb5)QRm)z>(J<<)N#G}j0GOe^g9!CG+L)YM7I3FmVpm_WF`N_*R1H=b(t?&Kcv^t-D z6B2r@u@D!BUTX=sKY&vJ7>VHNMa9BmXJiD|xNl&9+hHG_X9z0#=CqfnQo99^7?gB$ zA~gW&*BBHOl%1Uonki81o4J5}!boD`%-F=t^hAS`jh))o5e_ygY6~NWqn@qh*YV-b z@-5{iR(k;X-}iwM@phh^c`s}PDRThLT4Cn*gi~RDl0zGx!UsC@Hh*fR!Y|+qWWrfLTpD=&(VT z11A~>%@+bZMV1?Fa)Cw?yhX&sUvAF~n9lQz29rog=u0YVX6GzLk|2_+84d2C%s`*2Q^!Z$G0qoH6hZS*L5Hj~sq)Jp60b;l%6!RzAZ zQCM=Sz~u#>0dq>^lzZ{OL$JeWw#!ZT;tZTSlx`6$>mzNhvVNq9C2UAdG zB?vAo2IUDjbO3%zQBhGsLIQBf1--}`T%f;y9>B2+3y<;gz@l>NSgXl4U~@4Wf1C%{ z=?b3$T8k3i{)_As`A0T3wqNUDV`(^?*4Ncl^X2C&0H6cE4q%ZDKz5LLSl!To^&}1@ zIs)E0XHbZ*1b~m%XrBvsrgxFWrKBzhp_UAAkaEh(XhTSNZfXgT`YA@JsX~w_bEuUl zwM5&pK-}A)77r!1>H){?Pvlxc;XEs7)woZpU3$jChr}f z<&gOBn!|{x1?sZ7zAJ3FZ+vL$oaV?OYo1Te$^S5vO7pWzI+@R-InO_7dtC%`n`RUR z7`g-B7hq5jfRtv{ehW=#^9K336LUPo-KPerj+*Kz1AT+3tY!tRX|*BQ35j7M?s>f# z7Hhp%g^rnXkBYhk%Lb3;cRw1o4JFsc&V~XOrpbhFojEjdag6)=2SvTJ7iIw_@Qf2^ z7Xa~~CV1o3YzFbiv?~xjuc3;R=@JzUZEn{H{pIKHS%gllnWEfG_f^x>+*JRQewHe6 z$%=b2r$$1K?|XhC{(ZMxnK0m+3<|!MmKH!cgoL^PQs8xe$bR>kF&%S+I2ZFUxh57mU(e+W=uX&s=UU)Nf z0vi${URPm`u^=P@L8EN~ZpW;1{$>U;9|rHo@U%PLD5#+f5m;|fC<%s3+Vm18YS*0CSU zzH0VQ*!f|8_&(2kzu)JX=lZ-q@6Y>#;KUw94I8y|beMJ)!t>*k1RCEZ0LV3whHq+p z(!spu;FLBpk z)fU?UDjf_)NNeD>!RC-iCP($+@OXI@T$+=;vvX#4whSofsqc|HAU8#6uBp+yut!7h z%07~|VyYiR`x%pAP08E@_eCKELfr(a_NF!fW?^Ar;W+kYS%LS}Rq4^O=gO>Wq|u4q zq?!5$-;&&HeO`I=DKSsujSyOs%ON$zy?=^eV#=iL-9xL$q^X01YdEKI!TfK$WLgp$ zw6xPI`BbKd##clWci=clArSHokBTCt$Vr_!`C;r9Arn86urYGyoF6zNibjBW2+QAb z4P@X&8<4>uVg@)6+aDsT4*t;j_pg}{uCI~>t~tO?Kof&`ze=cSlf4P*g+Z%*>y-nBzl_O+^o5r0;yaVsDtGMO`F4T*GA5=hWVM9EGpH& zAbRDlS0}R_mTada#VanignznV=S$z@7gYjC zT9hv4KW=#_T&{Ng5qDvFdM)hJvf|Yllws&b5WU_H2MKqkq#jxuR`Shct2;yr6N9E zy$GFfRExtUddye+CO1l|u||FNBzs@yw)n!9F-J$R4rga)H{dYWh!I}Z`nT<}0~P+v zt}b(9;}1haveGBio`z`?f|ALk_IiAAL^(^k!SlYzL@^OaMOdzypx_dNSdVCF9`m?S zR*xmn^N-HDdykG@2V3%z$>(lB*g0%R-VoMTe+QW1p?oEY#MP`D={+{DuOF_x_=nBd z)VQ;25e;h*64QZHM&02>DcrO|@l)JkbV?c$!T>W>#Zg}CI-z7P};n4Fu-fpo}*hTh(uX67bN zWHoC`9jvxXWnSfj9~luWVDiPV)lOK7@ev4(Tskqp7PI1dgPfWqfrL`;@ zm1Q4HRy|_!)Ryv6T$K<5MWOc)7jq1y#%F3)4pU{i>&W7Sj787q5imYF` zsV@U$)DQaDAR#mwwzFF7KBt-$wByD3Vz5CG5ry0_6a>F~9|S^j@2;82emU{j?&M{= zH^MG>m*Vh$yE%|G<_9WHOd#31VIdvH3B*T9I0p7FT9@E&8W`{>^RrbU$~D2>1mI>e znT-1+TD%VKOaRSjwY5tJ*eW6Nw;X_Bx5C n#4#?mUtK}xuCraR)BSymqfWauc`?4}{B{XW+fXY?Gf1dmGeSPoh*5&hgzt3?T$9bG?Yip{}Qn64G2n5>Gr&M$a1ab%b zx}S0z{(sJQ-&6dH&qLM7!^+vk$HC^32SLro$;QpX!^WE3(udvF!^6d0N=V4X!NSSI z)6qfD%GuHDOT$3|fwa_4-^krV}gxnM#M?UUwgM?Ww!-ym%QtEH;qbt{&m3Ay_|C?oN@aeoorkC zd{r z6Os+7rmX`CiR_nmuu;Ua1W5-E9kS5do_8YJEl!8*g-B`D^*TEd@+a?xPjP-dItJJ#=hafKjN#xnEt9X&t2v?`>m(&jtxeMkjC%i>z6x4Sz2FNdMNS zrMYD*ccAECtn6Kq-ljR>+NNCs4NX2IvWwr7U)pci=Swlo5~o=>t8CTY(l5H-r{HSE z+Ujbd%K(q*LEj^}N=F!Gtg{}D|FE*mQ%d3C&3N(o+O)`M^n=zsDu02znw?e_!qO+& z8w4Gcr<$#8Dy=iCr9}_v9X+1h%+sH&9lbwEkn+>bN87)69pCGhZu-Rj;j`wZQ#>vk z58EX=WFoc4N!<3HPwSi;;#L+b`BF0E+YmmrDC!b%be%Vq@!TlYkEorsfs_lYdy=Q0 zcqCLV_DIlYwGMHVT1h@Vcf9uFQlpo5y$a8fJW9>T)}68fSz(^0M+aDnE6soYr5h~K z?|pXC@zAQtK9sY468!AU=w{{+T1k8S4y*HOT=0;{8MCxYlO0T<8Z;Zi8)FqW19zzp z9tpa#H(WGWzR@G<0ZX9KovxhZfo~lqhePu|nY8V#(iyR4C|`X@vAoJ zT!a}u`Tx~vfzn(s+q&Pt#F0{}rf81uv^ka^%#h;~`IUk{;18)jVtFDJ+S8Hi> zU;p*p`2A>C`1%#q01wpzr+Q7C)?^dXPxnU|`x-v~`e=qlxmV2I*{M@yl7h@st;ogq zR@m&brSH!bckaGM=6eVY(S67Er27w%&7Z${Kv)umX5FyA`k@!COCN3_=Y{;IQS6?Dk z;!$_ZvVibm8hn?7|2z@pKi@@{goH%- z7M)Fe0Qrl|#a}4o1o~Tpy9f#lX~e@YX!!b7TvRmX!s@<`sNNC{9GuGjYsv(I&Q0Qx z=<|AdE-(q16>7-eFwyn(;za<2DLYdV*u#mZ6vStcqnY&jwT#!~Wo-@nW$hk4oAdzqL%k~gG^6Q7HCpZ~{W z3rI>D85%Av{Ood2pj6GHePR92;gJvz@6&${FZkZQoi=1CYvjpsdNI9)#E%fZPW-;5 z|Aay3VNOn!vu7PY-9MC;me!mipTjjDeV~1}iKdPhUV~6{gZQ;K|MRun$B(=J?tLLH zE*{Au78MnhPQ2BN-j6eacS{O6bYa{K*A2tiEucjAvzCAJfWkMGa;=MTjHfBA#j+D8)3Q5qMj z{7w|>Yiny?%wyy~=N&&cKku<(I5YU>*`|%HZLUD(rO%0?Vb66k$k(L#^bE3T=W|>G zQ)kVe<>VY$R&a21Bsz+e@`Gd7nOEW{w{-279iuyk$Cnh#*;u?dT^DC$(Hm`sn#P1s5t$R+Y!sVoAXuh zGP$!?z_$MWA?1_z4xDv7_uPz)nb~`)BX442;@h`x2;W7|k>mHp{cau6N_H_!J0N>4 zM*Q`7V|@EbN&60-BS(((9*vBQeDUH%;Ob<~E6<;8H_9CQ+LV}>n66&EYF}p8o;^H# zaXO~1>$!P}5L!tmu`&`;Mwn>{Q9tXWj~Eu1qC*Y5_9=P!a%rM9V{Lx&eUjoiRC97# zmKIWe{wInz$X)dssl(}Z9*{Y8`m}{PUBFvB0Iy?eiUWa9NmEl32kGGOtHS*UF>sz5 zA2wxh>MhMnPv`L8M3oc~70u*2d@{o2>Q(c?izH%l0qc^#x$8Sc^$rk%R1|TqZ{5+T zgCsT1o_*swR##;8v0P-|RmI1MvcyCdT3s?)m!>PP&UDA4p*aVm>IZERo7;ob|J6Bg$J|_sjN5Uhj+%|h(T;b>AW7)UQ6Q9fr-Rpdy_|Gv$-4&58sk-9_+6Ulot_kLy}chRh3-&?B?oPgqUbe4|)7}|8LjQ zp^ep_&u@^^CW_j%rK{d4-+dmrf3tasg5Xydy;eF~BJr*M7AfKFLE^dDeyXoe(_cr5 zpD%OxGdDM?yTpAqaee)7b3;Qzc6K%*@9*sF^516p3f|7>=;*(5bKQm{$@R_6FN=yE zir9o-+<_-cpf+b{J)pLBL0@10)G11vpnm^T6(_d;?0POFAn@$@^PwyaCKE~L!Pk+j z5}~1?bss)hNQo12Ef2~EMBKi;gOZY2_F5^*0$Wo48~xhm!TWN1S6wC!yLozMWvn7x zCNr#9NeHKy0k(q7i%Uvo1}d2j9H_E*Pp+kym&Ogy>kc@h71gk`W z;d8T?N4z{d9ZwAJEjkrc)eT$_<=`0I+*mU&sn_nhizZEr_TU3GW=`{z$j$>ruOjd+)ZEF+V` zi@_BYK3-npC69@CP^3}O)PH?h_|Tz|`N{UaGRLuLLHjFLG(HBK2dt=?nGM#~-V~|l z)yvlY;iP34tAvyOn$Kk# z`YGDUj7p!s+-y%|Wn_*XJvzbTc=4iwvZTCx^~8kj;~a8A6afG+*8@#v=Rr9c*U{QU zu`9M6olgv(#|fPO`s}=+fx!#BmFVK!+*~iR{KFk4^D4jk0vgNk%`qt{sg%lk-v7W> zc8kF(e^!*9+2MEi`|Yh6&O=ovPo6~MYinzZVP2XZ=o=XDA8&}gMaP!@diwpXoxfHI z?EAvQ!zb7aeg1y`GxqT%N|xE1Yuw!2PEJmEi`M}gQbYNdYE)iHWZv7r;{!e@mF3>j^UGY0v9e^ z@bz80z30g4>M9E9{Ffx@-dN9*nWCg_YIS~fY2u3=&E;UE4I&6Hm6>^0TKSyzA2l1=AZOc; zL^wt(6A=+H)%ASq=ksdK6uFJzcQ>?B=Gsw+{8vGily!!FpL3AfYdC)F!MN*dO`H5C5AT8YJy@&{g$p`x> z8$W->2R?uH>{(P)8v@XI;MIq+T=pRewYeXcOgHK6?CfyzX)#Z6YUn))5n9`Je79$) zT6_(3Iv>6JH8Q}lzx>bo%3sMA68$1%>%LJ>A^W4||!KKJJdG zSZQZHcUWrMOz(@vfq^$?ABk75&r#EgO=`bJFygIB&H|+piRSVaF**0`J6-?Hxq5>L zyiS~`K()~3K4DcC@%HUoT-v2emx_M|O;q}?iANeUGBW=D^-D=fiO-X6I6XZ*U}H6M z|A{DCKQfa$U$YD^lFCPvIZ8-K`1q{I`LEs#4c)tUZ?S+v)VCi$hHytXV~u#htk(k_ z9iy+NlSqCNZ0d=gS}QTvWl#>Njfn_~G5PpYYnaf%U!S;$HKzm{=Mn6rsk#dLEC*-=En2%a<*;ThV$xpam7$f>;;RM{lw3o zOTYW#=hlHb@jqJg;{?BGgk^WPk-7O$Feycwoa#q23JMB&dHLQ)wckBTnn&E7KkaEw zmZhen%NDjrwI@~r3kzZN3&4xfQdhz-Dc-2o+|~6DN(ep-pk@%=<76aDeM5uSRLAYz zH7M^FUU~4!$|hZ)sMR+$?FVHU|Mm^I?0gbNpW#^ zCxP?)rAyxd7J-qj*x4CZ2l!iAjiHWC5575{UiETU?BIQQz&h{E^%Zov#mROxGcz+a zwU71nc0eDo5)0c2Z{r~|u!qk5{foj^)CSv1zdPUOuF{4)sWrQz&^v@OJ>jFkbQ^W z2BXc)|L!w1G<=CXL?!`oJgu${1PLNSRz^atlAGHc8i<`9N^<;z2a|Z`Vw=YFj0~>z zezOPDv@4SkNp9^tm@MU)|M1~Hwu{nUzfN87vbCMK_jrPWpe=~FQ_($nvMz+02`%bz zQqp-;;OAy<#2tHqtDNw9K;)M0Ke(5jN@>>@y3CPGiHV5@fm8c3EOWY_bQ`X*tgNh1 z(CsgL`4VB4h`+e8w$!tiU>8il3&5jQJGG4;ldk}pTL^HFpR8>@-npQ-SXQSKW&7Hdn*dlk9ISpLHO=Oy}1ESnO zPNVB1UUT>^%SLYptVgD0ueY?dxd94D3eyI(wC89kD=WtfUYG)pvb8k=F#-nJ$tLCT zA)N8!UA8BKy%Gu)yZ7v|+a-bktczp?wUs<^!g28R!&UY&Hib?;@Xg4`EaBs{H?48y z-7-%7l2b2)Q+5#aDRJc9Xxz)+KR*H&0l>{nPEIZ@6&?Srm!nBbMfJ-4hi0dF426uE zavh2i8h>7X{+EZxe*jQAQ0KCfk&#jCJn#$WidF;o_&``mwf^(xHwcltY|=>Kx}=rd z)YO&?wVk~g#L_zYf!d2Kh>ythK0lI>K5@d%)>hQ1-y6shw|(}^8S6fhS#sK(jg1Z5 z<0%RQU?%Wth#VRnzmF19Es@1<52J&jp~nb$PPS#CvV79U{v1y1GiIU;YP5QTH+Zn;?7W zvaSG3h{fLC-i(ux={giuSGNZ_U*}*^@Z|G-^)M-kZCvAs=Hs_dbF~Zp{%8gTHd0i4 zH!zS?7vfNUy`^rYT}!^z`9XB_6XTNXh=?X2D1N)B2UY%SnvW$PTxf8PktU;{fF8lm z&+mKf8aEeLkpO{@(&id55oLY7UOEkY8y{!IY2p32G~%@5gZmg1K3rQ{bUbzH6Y9F1 zOL}hZ#PG0!6=RY7pGBO`)YKF$f(7Ieh|0dJ;B26z;YxY|f>yV@C?g{SoTK83zdr?^ z?U~P+nVC{vzm~_A{@fHQ58RS->=eC=mTTWzI+-AB8=)uE!_7egBTC5gzcOtV}%1Xv@x!UZp6E`~Lm=#~gb_8^kL; ze-f!lO^s3+nL@}l^dOYEOHB!iZ+6%WfFJlXq`Lv742g}@{+YR zr+~l!iYn-W#+Tu5z&tPPI}-tSG&Sj7eghwLb#vq6;o;%cQ)z5&&bc>%3^T7jSHYI+ zGFDrwV*eExyHy&bzUSaUt;76MHyauoe@;$D9+a1plw6M9;wBJ~V|;9y5;wxPSgg)>4j~xVjf01&S0n6}o`uL`!hu4kfM>9~-Aw^lBYn zRPB*P#yfMlKnbnRtt~CHi;HzK=d^8h@7}#QJ)lwVhls|VcE9#`_)bCH1BKl9i+58|(VrCLF=$q}sPEEiLCN_yr#p%mQSZn3!-4m7lB6kFI&GuwCuey2*#i0D-{7hfT<(;yQLshcBH*5SynUuIX2QJL*rR_yh z`YueV`l>tMJKx`)Rve{W7PM>j#4k@cQcP*+zk ze5aTE6=M{Z*Z_;zsI9%NJj$u#rRv_^-cZ?i;&+)Aeud}&RR9WKA{GGr_fMuLQLh={i2BBV;SOlq`JU@(H2+izF{a>N#bxUh&QHz?J zsj2Lyt~6X(OBCJZu7}xF0f9_j*o*nEdh8I|^V)x{3@9rgAi!bR{EXo#-{@PnKE5pY zKtHVzA{;qcodE#gtzJ1B&d9%AYf=?@-DlZsx&kOxnDU$eJh^vI3%Dzf;;2Mz%5>CA z+hYgW*xtB|C>7K?*x0(=@nhQ|9Ye#M z^~d6$@Yt?QNx__{bT%NSpkbY@t%&SYt2JmSs4?AMyC;#W_!WvbPPFF2Ay2M(5~8H@ z=wP)op6fSK?6>qRz#-1e*GF0V(RO&K4g)E#7lgYr9PGX1W;eU z&l%iNh2M$@Yk^Wq6N&A9sFS+7*UG4~b^&pu$Op>(ri8v*Qc`kd;FVYiz~?E)a)u<` zB@}YEp8*z(iu3})!Vh}2HQqU+)&1^#!nBkSx(wb#f0KiQ!@eW;K~mC2h+(z?_n8EC zqpT@aHMRCz?EL&1Go~(`Gzu?Hojoh-w|wmPhw9DMC*V?%k)Qi3+_fG{{()9r#v4}E z-QA6@*}9b|vgI`J3NXrGFw$0~3pg@&P10qUz`7joV(1N(Ln=XUX7TKm9h6eq!c}i|)#axtMn!z)FutR`v~^8DJ=*>G2|idT)hibzyjFnAhL$XYKzk|FL@K z{8-d3>ctDOr35coRA5CODXB!3_S8k{=VzXHU%N(iE>95c&#cUWI3{Exv1FeOp1aupy^q-faXv_3xxV6D2UdYwm4g;mD8(1reN`Hc)G{n=-oKa|#I z1XVu(aDwAqgRWC(p$tWmrD6j>U-CVZ!fT}L?2FN{F#sa~2LWiJ85zfM?O){7o`yx}5IX5HJF=|Jc5yH`w|wS31H;CMrDt!Dq7^46d3qo_Id6o>3S z@lImupG0l^^a*UG?!jTT?P;i8)L-O&>Z&3iKOHHM^WVh z=O^g1^v@1; z5kzS(=CA21kK43{61~45cke<`AJHyesQ`H4=N7r95&UJZJ@0m~h2}4=R3vX+=$lZJ5?+%B%LQ{@2bX ziqfB{TC6bqe)*gNMKsv|1*ipWg~)I#I+o$sm(D|NX5yYx`UO1iFD&>#`G5NKXc@15 z3bY~rwZ#+C()>I;rFQM1n`%sgrV6cprL_+pIefSs;Cb53aFqs=u`_4Rl<(Bj9s$M? zUbyn`;Y0I^ukq5_7H8-MgoK`>6@&4`kW;fDD7} zOdeF9RE8EY`8OgwyvA$?yEwY+MVrf)Q-HDD=5UWZyu3t+hhwdYk0sHM;WsRxIUtiD za@qMvBVVIPf|1<- z2pnZ^patUyhl#yCU)CPzWHGU^8{_fjH>+Rf9FpVO86()XmPS4wx841O|8(riV@7Rp zMrLMPU}KyK($LC`aX1aCU04{UkdRO>KdY#13uZOorH@azhh95_lia})x4g2_`rxdI z$t!>YK#6N0^nH|7I(~jK{+S)mI-Z@6e_bD_S)Ok!Qp5hWhzGt0bHaO5Y^DIYiP)PHl*wn60RKg zj&fPG`E|y;geohf<2!<-hMG)y9r!$;`0a++^Co4{jsxNj36CEWWtPc}5(`4Wr!QZS z^uJKSr9G!qR%Eg^VmOlJ12?0ObSaP_4PLp7)Ie{TUs%A|e~j4YK0l%JeU?&QP(UE^ z?%R|{(J`T6I2_CPxR>WbcmxHr1)p0U*-hVy*Mo>pl!XA9W8&hbThiVG79`9tktpcH zfUr9=FQH)4vbl_BrTonFLG7L5yNWILgTU$o_05%W!dp z)O|(5$Hm2A9JSSdf|}q584-$89$4ggBO~17+q$~YvO!35mX*&GM344BQV63zTuv?i zqdDcC&`Q1z^6}a=sY-_7Cy+;zPPkvf-v;=&(vjN=%&bF8u}gp_J(yGd%o%7(Vv!43 zSy}ju1G{$30(6(rD}(^=&CSlvGmIG#jHY&)&VEB-{0a0b^)E z>U4BmQMqHUrQOPnj#7%B-+^M`kULt zt5O-;x*^!GzJ5$jPEK<2fvfK>+1m1OCy(7g+S*>Za_4jTgUwy5?%QAf47QJd_|Ru| zSP_H(LYu$;25>RvBcm~9gaDY-zf8jyl&#gf@gz$U&HTo;y7s0D?DobBzysl`{mzq>(!Q32TPMbh+Nh;6*o?c28<2>E@;c95Nxf(z2>X8YOL zz}6qc#np*#3!1tSK~}5h=2ratxidZ)_?et;KQW17Vi<7CLQV+Zgayo6(2C!2qDM@{7^8Ktl2|GWIYtebbWH0_njyvbqjJDW`$dn ztgMd^B%|D~34TF%SamSTF&`KN}4y9ecy@A~52m)hFfQCFnhzMW!Zj74>BdVJz98lsPnkAt-9JRlQ9 zchBFwvAeC*?_K@fyFf&A^s}Unxwu)NTN~2Rn!diu|1d@e!ZN3{G*RT}m_fHmc=QO& zaT&bW?~{?jeibz}2nCSN^v|F7MV9I4=#)<$(l3IV-&%G=NNDEQFF&XQ;xy(Y zs-@1ciHRsSN(iQgy7x6TkUk-|rL#kge0QA;urEF??f`HgPU^$l&8Of)lwTeo1D8S2 zYcE|FaE*QR=!&Bwd>-$}Ya1a6yt+Dbx8%F35&|03+%Xy&3(_1k1XL`(`y@fT{(ezV zE=ru#)oEfqM17;BrG4}I^|79P`gfL>m+23m1Y2)P5LQ0Ar<(5uNAFU7VRH6C#|-YRGQ@i8rI@rK}qS1PFJ{=I6BQ_ z4^HM?^zfKR!8rfIUiD))(*9OR2xRuc-`=?W%Mf3R3kxy80FOh;np#*K>Z9~-8W3IyeDLfAI-khr79miG4QYK=SgaJRIQcZvq7heVL6)M1*6Yk3Ow z-NE6^g%9XIxIqIh4vw1MUK2I7%K&ESv0Z=mh1)WYLV|}bXrQg_;^u~{wt7!U=jP?D zhu%w90b~!cbqEPV)VEH)2Ed{Y4BUd6-6|)ExJTK`@Zt{l^YgPU<<&92*Xq=X7KP9) zBH6{}Q3{BLA*3VZ2Fy0UB+K3z+o@oqP`AyGY0sYH;1)oAtSl^orsXjA+;X4}%GcG` z_dq3so2QorQ6I8Hg>NsOG0d$R6LmX#dlO^hkkC-eSE9Q}Ar}&h8X$LRsRzo&7SteU zH)T3vKCo55v~pBH00(PoYO0wm^Drf)S$rFP5ez!e9#>O}NnDq}Av`@jr$lg)iEzch zPVnf_BYs2(oAe@Xi@A84KD+hNw|YBv>~R0_rSt38uU%b4Qa7zg+Igof4XM}q)z-qo z6>V6Yh7ox~rFP>xs@4m~zH?ey&VXf-S9aGbJ2_3`ga`Wj;UzICwH+BB2P76K(~14m z)I>u=Q~KgXEc&LGmz>ux=I_#bJTYA})YFUZe(nHWBR@0KV`a`poRB_=58*%ebhv;& z<(LI(4^#JE!tC$+MTF|i?CjOGwMTF@K6%odAdG1NEAc27{*0+XI>PVz`ugBmDYnR! zYo!6qK>^DUml+@aNpq$j{t&`jg1ZE z*tVH!#}3616PeoD+7?$4aq&3XQ&F?CE`VGRiVI10*=QxpV5SSdz>Dl`ZnonOEJ)TV zadyL#!StjBq}{9yPL~n_rS;?QDP!zR^b-ns6&sKIfmH~L?jK3M)WtLeL+CMnv0V& zH$Ol0)~ynf`u7)F!ktZPby2I4Z=OiIg#|RAptTYbKML!k+DTv$c-gVhQ4Wk?KL)c0{s%Qhm9=>owbnUv}y*so?d%X(;0EX z=qTFPfddE7I58^)7s!KP1D`(G_7vMVC=|mO)6>^Cws+rXq;%T5&Q1d}vnl`@MMXv2COXQp z5DqVk#}T66z5k4(G3#;~s`^|;$mNEgA?f(#yC`_*Mv(EELeu8b!p<##G2FOu0}a#4 z*0$X0BORv(dmM=G=s%w>dtB2?S#q2j+aLaNABE4vuuZA8~@au<&6)n!Nx;8{?mX^mI!Li;`6hApmJiof_dp17+_FW4o?6Oeu)5qlTl=E?$MZtidV1NC?Pec z{R3VIol}rvP~%~cc!Va}7%$XwOrL_G)q51;S@p&u>u1iIp8_bRM^~R;P53;i_ zfkGn{VDbrVf56!g#iapy>r!P=0besJ;N1hV4de>jV3pf1?d1Uc7Sj%Y6A?@SoYw;g z@)o{ssdJ5WRZ|^Du(U6c36jysy<91{{10y4<_15}| zyEsiJt*Yn&TXoXnm#ZsQH*u4AZh#IgFXZs7>) zTE-1`0|SFU3vVS(1gw`QCiZ5i-RmZtN~21VbY$AW-7GARjF&1Ri}s3pqHXJ^6~RyfIaq8FIkyB@(17y zRL7iW&m6B@@ty8JAx`sF0~QKoIF6{8sk>Rt4J)~UZO5S|W%DiatgKxx4dg5Jqf`fhFd zD<}j72a{yo!nuBijr2SrjNba_tRs(q`e7@?uaxK1&G{Y6x7~735G3q7!pMElHyxOl zsZ>Sjl_vEN_<(@WLzI-2dyXkA_^d7dMs>`k2FQ8Zz0U;JAsO2icGLsol1n3HUpS8Z zQ@O*+XvGObJWz{34bVs&2&tKzC~F{=n4w^p74T=2jFo&BHO}b@G@-S%H8hlRJY@MB z;aNSr1!xtB_azX^NloJN2gj|&atN0!AU+8R`$7F_N%fy0L@=}0L}BjiTtH-CSjox7 zbv9YX7-#{m$GHG%{ii5I7)!2xEFxJJoSd9|X7U2l5Jpx4Pi#WMC$=L%6nKdyw06^# zebkOiqH=ND%<|8_gr(LB5@%1~`H;~|vAQ}s`;J{yAX0kr;adn3R8eCiql;zS^jskv ziJzn}8Oh7DgO-JyH#arK=ke)5$8-#ahXum~b2!ongfrfH0-mTDf^3nf76dkINUAYcikCNam}j;1CD&@(9JC`+yS0d-2J?XWFV z$*>$;=K_P_L20j}F!p#9p0D(JhPDj@83080F@n5`s;cL&Zp*c7QeLpgY=_jmq&PEJYiLFJWZOiwUj0EgG~=OmseY<++Q4XL*7s%?T$x%TXY1p&M;x~fXF^Zhy>`N zzDQYmL}k9Vw&KwlS%bor4;B{`I6;?WB`l-TGfeaEg0uZ`E(u3IPO7FP5ybNT{aq{u z?b?SWB;siUse4IpLE^A$=N8vKL1aRfmYAbfqJ0AYSxVv_sQnY2f*v{wCq~b$pmL_9#pd`#Ow$e zB4kuJ3@+`EAc4uv(`U~>hs$8hh-u4jMU=Wm>31f`2UdaXp~dtN-lBM0KQ$^+x^Mwc zG7V=b%GOXrvk~91Cpb7K;LNQ{AK)pEkI$hO@0)%C?%HzaAB?1b{o6O|@1LU)Ev~Kk zen)J;is0_f%FHYbcK!qA1)%`gza?R39^I_orAyf_U%tG4y{02iZ{@M#yQK&D<(H=u?~vcFf=vPM;gtkre_l5M}M7=jToiZtjz(Pv71dzp73N zrw0%d$BiIoJlso|v@jKhe;G2X#Tto@PC%Wmj`3L!4-ZK56P@tnbwZJYGkG2?#l&P) ztw1?bk&*T+Fj*}*pCYUc6Q2>;cUdLw?)F~YGx6CO^Nu^`#-&#>0fq~VOF}QKdcq1s z95*XRqWD{UH5kr;^$1AjNq#=Dr8;-bD5&P;PLnTB;w9lPL~SU)am0^HY7UJ7b5Q^! zZft-tXy|}fjul*?Lw5);BF@!q-@1&}?hq%$hAu)BtJF*sy-iDqxfQw{CBX?^AT~bU zij(40>xKb!HP&LsFEv43$aIK1c^pS0`t;A@;&*ONlL|Mkki8iD+cpUp1N+Hh?<+e# zA6AdqyvwMV$b|l}!a`!0;B9;R`yW4annnADIi>VU>z(eNo>t#e8XElc*N&T(T)(~z ziD-Yx%1YVU8IxLuBymR;CPq;?w{MhUsh8%@kwsVQs{J%lKUT53MCIhk(7`Q?n#*lZ zPp+6>@5?nDmgeQ%=!7sVDk75ZN5qdcU6E8@WicG|-vq4w7MCL96U9QE=+7l}sdZK# zK&Z2m(S0Amxm6Qj;yA3&PzH*HcOB+QKYbmXaB3XNh9@|@IQi^z^a7SCTZo#uGl(At zqmGuAmni0<1$%B(hiv^vc2gcZkMsP6q8js2XYnIBp-L0m0`OYH3t5VKcJT51j#S;) zl%iwCv{whxvAnUdj(LQ-kbO*|q^sp=yYxnZZ{KG!&!+Ipz_bfwlyKz)dgO@V9wSu7 zu2gU$IAQMd$^PJ%lS@_t7{~0oR7F|&2Hj`q8}rLJXf7MU^m&vNvzxwFs6q33T3Yw+ zxJ6ckYy;-~kxrC^qcEt}5^Tkw^W(fb(xCL#acM8Is%T&xH;r7`CE^OkI+{(*&$i*9 zwHRz!)CdUi@M!DkoK{yKO%8~Ja9awV0fhj|1U6QLb(hU`pX0|%pdoF3@*HC4%hXnh zW=6K>Z1lpwjWXvz!^ukf3bAV&(NTHTS-5iV3?QgzIyL~R-G9)r-k^#~PR7QPij|!> z!C(|iSTXz|H*Xe_1U)AzSRhH-Lc=pNLZ_NYytCFLLh9|yIW!^tfbzmJ3Aa3-feGL0 zkCZ^bADp&|mcO50?l{tD!WGGgvTzmNs)A#saEFW-j-jPq=NHFXRofkOeO^AkHoa-l zC)Hb@d~pIgoV|TMdW`Jv z?xMp?S#L_u@hW;o7#I8ey;R`zAbaxGh=U#I#k?%xiJBLE-rk3RWKkTFrx`Nh+NI3fQ|^(Cd5iAOau)# z(_EDRuCT4(a*ggjP%3~h!~#0zW5Yzr#OP?trxWb#L7`p%;Ms=`vW6a1KJ0bn$`#C( zak>-8Kwznusv?pgXT>)PuqWiHfhoMmJrlAcD&xOS_wF!X4I;)}jBUE{8=O}yRt>&) z?%YXw{CMII(Ymajb8|RxN4R1Q&}Mn=aFB)-bzYkiqig_Lmc+wEFiupQBk-N%?%xq# zFhT1gw40IfgX-GC&m#ue9zbp%WuaNc^7%jMZ-4FzqZ}G2h6b+HVW7E@)CL{WJs5cm z$5z}qUBQuv(Z}p7C<^_07O+vE%Kd8Ff^iT!NS2lxQXQZQU4#PX{eHmD9Sal*dll19 zrG;_(*p?PL56PiWqfv2Q*!>gPDH@bn>x*^PD3`c%nA*_32Zw|ECM7oZL+D5)a00Dh zNX3u*0r(zW&GmD40mmG`o}!~BRI9hGyO;kxB057Be%_6;VE)zZ6cq6>m#P8SvvMF; zK)B7M01V;dm0h?k9oYz_a=B9ynDd(%kuLS`o_70`60myPSN)?Uyl>M=nsgHJ;VzR? zXkn&2+}xq(?+j)l&SHndHDDmWmY1jVOYi9DxO%TJI1npqkYpk@$*%iM5WKl0B(QIog((x!{g6zxi}NN!xNTH^ zVIda&v@!D=9F!x9VKl&a29i5#o9eOyzm(C2cg1NGc zS{~p^?#A)}TbuBRh<+F_2slh`ZmxFX{f7_hLrL<9usFKYMRh+==`_s)&{Q|ogNhrC z2=A$(9n~xnPDhue!YV7d{`~#B=XEb+3)^x(SU3b3cJ0#EHKDcz(R2T1(h0@S`}@NYuc`cw%-6T*VF7};BT%=!prAmsmZ6_KRU;*kYGI903|} zM|E^{)9LTdKI`T(#?mo9`^Js;m`n69#~e9!?7kaSlki7nKm@4j?{3Fw2crOD$cB+F zyeG$gQtQV9fpb3@3772ny!5Ll`pF(K=fTI7hS>@zm|5!7j!mCAwqTdSh#Padd*>ez zSAHK!gZ;joPXtgOjl*DxQqu@(?mpV1+n*4H1kBI-Ra?)fPNM4p%@N1`w$|d#gEGDE zczR!XUJ+a!Z!@S+EyXxe+^+5Bc@BeBaV%V_IzPH%8axAwrX$3R{@-Moo6ihSs;Kz6 z4HVPR(!y+7@evwj#^4<@j624*9Le5N!-V5G&d!ntv3%7A~?3l37rYkk1?)=!-cOFw%41caa;Yc+lnr`RMzs9WN;^oT{ zuA?gAgjp-6!PloBN^(^oB$y;#?p841lee-cW*Oo5f~x}lH}u-n#5$pUJE+g46Bw4= zd-V!wTYTg~dlar!r}UTMUZ~a8hWWotwt?F+{89yq>*vZMo{965gGxdW1~#xb8aUz@ zqhBkXwjL~(jwK`Kq|LzkC@xcT#{K)BW@n3I+1ONyPDX`w5ogPDK2>Jl@dN^es^~?y zBR?n0o;NcKfc53N^D_m8)^2BnjOcz?)mzZvdXBCC1ZRlZ2T=o3b6lk2KFB}BfWb1Y z_YDzl>!eRK7v5Vlv4<8T^;)85#w zOiwGv%f)4b1!??ec&&$4KkU}8#O4Vmqi9$Q2*Ju_LW3uUCs4$RGLC4IkT=$|Be`6P z$hKN9!B=$pGzTjoml7Nh)>418?uk$Jbp$@Oe+s0LiAjELE*u1uLJY$NXY_S-|B)G< z_@RS{2nz#B1VD+LkOd6MwVyg?V=yMYW9Lp{h*QuovzH4p2FZhW!G-b{+gn&XEfT)( z&6EC)3D5?fopwrV@Lx%P15Ql)D9Ff&lEBxmi#R?9<|-a(>AuEB4a61P`sJ@mp2EjE zH8J6`ho5wd=wZD(C`ySR7{N$1{$dV^g$AOUYDHjtwjMG5s2E*7z1YxFsT1>H78qUO zPQ#Yo4^77Hxq?uop-hzelT%QX2nXp7bqoYqzk&xC8>%S$>s{u77O&r3#%M3oFB{JiG;yBAEDv_Eu?=AQf;((|%fZE^3j5>bbP_EX;IJB?rl@Gqny%V?bcDKP;H_c! z?b}6VWlpW>A27G;Vb*_%C*7d7=EvWpEd0}uCZgf07N$Y1vnxS=rmN0{O)lgHT z(DOma@$eW`2fWG8pF)FlA+^orL?QoV?=2`VKZHFMD2dBbvtU;+lbPo-DlBxDT-Jh! ziro>&I`8TTo74lee$n6>)22DpOoD~Nxpe=Uyh#@IFFjW?(XPd7{8e7P#Wpu>x?2)xE<{5L5%%`UTT+8@9sIxE~S_sY4_Q~7auNX$NiQc$7Cio)jk;|rTOjREEu zHZ?bQ05xC_k2o@6=KBOtWOwDDuw^YInC=AY+1c5`va-6TVH}PqUC3ayB({77d;2Nu z(1lj*-~$G@!+^#AfBp&Do{KVrWf8d*w%>+~t=+2HTvfA-pTQL10)m0~*6BULhDb9w zq7hniea=MBOOZv;)~mp+s#(44N{e)YdEA2s7(HgCrXGVa`L?W94qq#e4Q7RqZLm!0 zw>rk#diHX;KD;Tv<0{#MA{DxNFLr}=NjUNzDTr6_z z7=E(CWh+7oe$Yb+20PHGiakr`sI4(;jBg&;i8DxE47_~#@);h&Yo+r?X>SLh^>%oT z@B@{oFMsi`8K4!&$sOi>Yq;CAvdE!F#PqL$4@S12SQ?0_{j*Or0s=O%nq#XsROZOa zx+{aP6f7xR--d~NrzK+IOt1_; z{}rg#C?Lxmbjum#<=&w8xB`r0nm>KI_?|F62~>tLSA`Ty*8r&fS9sj+20Q2lIWr)Y zv57e)0drwDvtK2COhaWwh0bUZcJkDfu%;3XPAR{+tbF$DZxBj{GxM&VaTo@aknEyH zoTUqY!x7+)xiqx2w&10~kEDP@<)$y)+xS?4u%hNhzDhcMah4por;Z5;X%&7$6#%<{ zaT)cC-kwrB$+o4PD32sb5$j$nDM%NNb#2TTP_R@J&D07D-Z7qEbo<+sY=L7P*+%5y}_`+6&;q%E&cL^ z{346Vgcp5`ZMuRR%HVl{2lrh&@IAs9U2^L=nZh_APtOlsb(W0E%1S6mmbTRLVWCHH zLR}cDW$gEqK&ObtYTV!(={~w)ik38o_o1{NpWM8>Hv1Wt;b<|&jzgusWy{cJ#STj# zDvUv7u~YyrW0CN1G@uP+q|uox~ub>lwDQXtdaCRNILfj+N%m;@g%j z06+VGOK)MSS$sqiHqiP{pU@Z1WVyG$W~8TA96O0+ zOuSriQQOb)l@m+X-@JJh-PJ9Ow>Z|^G%{Boz1$kG-6YRPYK8mMFc5ZgzNB-*YpZ;oK?GC%(n{H@=u&*Q%9 zWvHVz?N=3U#uK+~P`MFp@KM$z?NgznWd{Z?z@oobejb=;Q<8MNvC(gg*RXMZ*jxQk zKX4Fl?1!==M7>xog1Pm%x%@~pm)#SdwGax0aijxrDhf3fZq|u%&i(MogAs0gi{Hb( z_`lzYk#=;iH~PGP>v%fwkTfSXAn1EGTjK8m>Q^* zFjUDH8-#R(8K5dwrQ$G&uc`__{kxbJ9IOcF17}_cOSt^1@8olF5s}g4Hu?ZaKPVuW z*h&rG`&jN=EKq&wt82fNM%D_V^G;>^%iO5i53c39x&Zm8S&0WZKdbYD_27O+j? z*s;Q*q7lt*S8N0dCajv%Cnau3x0tI-vvHAQm_Lsx&R-zQ?46uwH;z;s6JWiNtFbbw zb^0{@QJgs&+>hE%rhdTfaY`ai@Phh{UG+T_ibklfxNMZSTG^~;>6nghId0Qd#aOrv zLrti2_>nnLZLAi=AJK5`+}`Mn)2aWvU|>K{lXN#NGgC$SSxJezf`S5mAVWZaTpvT~ z|03(nXo9`@HY_-}#(V$C&4N?&Z3#>$*=Yqtd*?a^mHQlH%e75v>x?xY0km zgH)@4u?cEbRoCidZibyDkb@!8lwG?98T<+S)?5EB-$tK9VHbE6T2yrNnn=G6YQ@+mRkP5B*#E_$c0m67>x*sEX~UXfs=;#y4}`CEDFh5s&< zzki(?A4|$Ge^e)M3RMsu5_Sr53e_pZDR?L=tS&56hzl=WTk7UvA9O$a)%us!KR1^9 zpDTY)EC0RMyJznj-G)^^7g>3`zjUEDKl4sQU+V~jS|F=okb{aKQ^BFByF1Y~-Oh-| z(&ysk%NGoTp()Xevfvv9#+OWiew3dXFlw(Ni8PlC#uCUVrLGT76kBDSH_B9Wd7r_xh=PX(V>D$W&Z=hL=y*3V}a!brCrynYif{I#r1=1 z=8u@oF;pcBn1Gr87FiPXHawGywlX^?i=b|y{R{)~NTCwUi-8>&eQe&>iO3XN1Gx@^ zLwG(sA&$OnXZW+t*FlY~Z0hI^7*S-;!Mdg0Y~+3NVP+PVlsL?T@^jI+mfo)B-%Aol z|Fi|U3*@COTee8;LriQf@~d!b%r@03q~+ zVFv{j4{xtCQuuaD%ZRF`D{yEN(X=z>EwXbn5vHhq&Vbr5sBTkIsvv_%ZR~aY~Cfgaj753F=x5Re;Tz5|a z4W0<`4%qO-2=#dq4!1ra@d7f`BT~S;LpYZc`U*CBxduL7hh_x|V+`nli zYo;Q>x<+8QqD2+lv4Q}I08^chn)#@uAG8Rcb$&-}POhR!a_2mK zwYFG8wwbEs@ z_xG=!9R0TRE>~qD@%&B(llY}%JuOG$jtg1~LY^h`me~Ik8@)~(4gkW<-@Td?ilZ;R zUKLv7AQRKT+>qX!4+o%YfcFUpHQhM=)T6hE%!@av36n(F6e>$DpH0l~RsjBKtvSP;|2UFcT2SE65I{ z$!k=TCEdNVl8dHgLJm`%=Szx0&VDvxQe&hsLmPH3Jqz#dWoc`;9b3 z;rnvTEig(s-wn4Al-O;#(G1yMhJ;$o#tZFYulRQIUigF28^$tP$KKq*E!+gQ{(%D$ zN&G>4Bie_Vnp7 z$mPKin04sA;PFynPs0|FwS7Q@MH>wak;$(L4b+r$Zv>|IxJNCcU!Gk}f>j^zAGfF! z{yE_1KM>pcyo3~xW=?~8GGq-$7)*|bB}}CNx(%O00qlql-lN}gY4#e@(dtQ#n)4SV z5mA2w>J0QJc5=`2b8UJqOtW#A?&*l8;4e><3mN&uv?n}g_E$Xn77--&z0aCe=&yVS zt_yw82MvyGb*M9mRM4PdGz8baZKT&gC`_wo6msNt-*VkNrBFqUIQmQ*sXk#j;kBz)dXdrKUL$oE z9Kq6^*HR%!DJxSx{TqfKEef{RB$fL>8!p%jqGP@XKCb0{MlKOeO4m(U=U9dmx$+Hb zvsru$B)Ky%*}ABB8-U!H32JS*ti;$@DU&T$&N@%+~Xej|tA zNAMSRDyWLLc^ms&FE8i4J3TW~=hH{j-Sxp$+-n#>0-YpiV?)Uh)9@f+9NfE|kYwBk z@~#}}T7ttbu!|Rz zg=FWzlsjqEQ=FS-tcA-;IYai#k00($E#PLPF}Fn5vJbQRmb#)AbL)g)bnCav9n3_{ zZAR~8lV7rzjsOY$cs*WF4An0CsE~w2Qq1S^@d0@Kz%W(8bZs>#LN(yhEG=msH2uKO z%&{l!cmI#;Lw(!!2n07lr{V=>+SOog1Y8#@6FrSfTzeDKDmHUfuI z@4~%pG$tLdXtQV*?_fmRLEOEVKkp*Yuyf1;#v&jWD zsI!{O9{&Yw4{93?EL^lYv45&VzL)rHO^*Qo3S`i;m?OXp)5y+zIZ}s6lak{m-Mb9r=j5zI+GU!z*E8eFgKD26tS2Lpe^B2`x( zg9#HZ5y!}p@b`@MHAi1pQG<5h4$36CSw7~g37YBTQrqL=;%LeXxHc@&ww(dTiYe!z zPSSf7FsH<>;+dveH}Bi~=l3oN#(lvXKU|MDX{N(oxmz9rVf>H|mm>lbMg4JqQVmqB zJb(A>*+clY7K)^X_XiF|R;Lb-(VlqK4x!d?G^`-}Y2GKDbRt_5ZcU~JlfaE#g==_D zO6t4mTFDn(iLOxb9Aqthge=UP{w31b@NoL&%V$wdf15d z%=@Vg8H6y13R}TamJaUW2`$L0so7EwsdO%*l*faJc+dH9?Cqno)8xvp57RH4wk~aOS9o}3*xVTVqUd8l1o^+o z<{(vjCL}$0u$k5Y--rQVs~>tH3Zoll?&Wy8d#_bH?(Vbx{)sLcQ!`Uul?_dkZEpcr zU-?KepwHxP$wE(H#O${=3$lrAY>7kc#%Pfu+GtlDNPaWLMchk&fw(j#4NP7G1*WX1 zTuT)x+PwpuYg8<(toVOhyqiVBhR_IVd1$aiKP0dgl$1p8VR`I<>^OThzR6^j7gJ}< zt3cfzoLkJm<57SMa#tAi^z>$D%6493v@5}E0->fYa$WnyJKbkxqZd2ZRG%2<*f=lg zSrq>8NDm}DG))vC*4ws8ZXN4~*Quz&+ams5Q5{;DUmRoKn1sR5L~kY6V=FQ&T_PnT zgPxn&EAGAV4sk-`2w&P_eJ?xk1W)hBcy^yZefmHP`q;7R z7}AU^++HD?yAxoy^3GCwU<{;GI5M19-a$BEtgJeAck65Bw6okVIy*Vyig8QveiHl3 zdy+)74xzHCcuVHwwR(94%(V+@79Z(yd|(j{f6<<%gxIJjLa8Uoq%CWeUb>^0!(#$T zmwUaQwv3Dnj8Xx=nnW*>s<=H4>dJ$aP1qVpW@Tjstko{QbOv`DQv!G##IZf_QOgAB zUu)@&@yEjFV0ZGa)4744K+fjd4H?!*m>6x7pZJBB_#UUai06$ZU|c9KLm;xsGR(Xz zG~z7%&b6I;F1}0Fge+{{-3VbK^N^19U&;H-%)IZ z-)gAlq;g_!EUAifh-bkLwH_UJZ%d4FGQO&Cx}kL|dDtkJ?z`2DhNT3O=YoP&PF;h8 z>*OR7<@745qaE1n1K5s0UzeroGV%2*KAE@f7jglpzmbm&;5i!TEt7vcc6l{7)ki=) z3^hUf<6<@ngpEMNOyq?W1C97*Uf*V2dVn7aq8y5Qvpv*TU-29Q`wKh4I_@*h&!poU zI>#`UffUHr+4&7B2{eD5oj^wj*63c|ynFWu{WMOd?JvTPutXslG5;Re>Yz+vv<@Sr z7XVq{5DPl!G`9~j8NCwMb`hFML+DFSXZG_1Fov`glWknyRDmiR@>-j0b$7f5YMI$r zwKK^b^*BO+W27^%zs|YQ|Ecdv8%kD;MezZYM9Xa=UY^1j6vSY3KyYAgT>AX^v)1iX z9fb>pi}&{H;_fC~xByO|`ld~gz@I?2CcFcY#q#p-0rDd5EIk5bOS7R`)HzK85gn{m z7{;BG6%qWvL+z`7K>n^kV2;Bmz?5|gx%}uQUAN0+4R<*p`MYz6GVW3vtnp!!p4rGa z$|`)%&eddhGQ?2APgY1N9!;i0ppmVk0o#;*9#1N zAc>X?N^WWl`}>FWfXKvJjtW$2;NvWegERfJodbr><~}W44d?y&GF1=H?)lW(=*VV0d6>bT`=f8}uwQ45#UtZ97;gPcamBMCd=;87H;K)s z=M|j8{XYiZO02bbji&IgSEfb&9GMV7_$|3r-3cSff}{yXOe(_fqYq3--@C4t$ks&Yd0ICP2ouv#1j)BOBQTv7)evweQ;s^S` zVFA;BQ z=%#WFLaN}bkJyY14W#8GDJmYdU8BGu!-_9cQ+vXL_Nv*yr(gwVK^8`_9Z%i|wV>#= zso*3GV}!!yx5-^MC879&+KTnSMO!C@h53&H zCY!;Bq|73&z`lrNS0oTCXi0ws0K`!upeDL_=~9yDMvmjA@0gSRdp<|gva{LVmqH>~ zv1@*FWBx#IdG>2%1kcn>S)V|J0j!VOPI7DC7n9DDVgd4$#u26h7PkcQ zlf9y(CkM$J{vn^DeR&Z4jTl-J9?q(Lxb~=`b zpH6iGzqv(7naG8N0v`c0b>2x&B)Gj7yUWKKgrhoOonBc{5#E7K8WERH<9LZ16X;^A6#-w)#OPr~z6i-NFq=%YIX=IJ zn2wGL^Ki45OF}pQ_U-y#Wge1H=MiWSh#JIdlTFy0;BVkWs%%gLL9MY0o<8uhztM2h4xI;mjOl*dE#LhVX~SMh z3@}hsQq7&sj&$g5)m=9JYbWC`TmaAEAbtsC4)&K2*_H(o`Nkt}_!${FVAg`-oq6@@ zHS?Al_75;4gg7WeY1bzV*@%pOhz8=H2(H$`dA@Fba2RzJanva2#e54OTQW*+>&5Qz3XRU6<$Q!QNl=|E^G30SDI*zyABqD6Du4j`_!|ZnXr`XRz#dp{@+E#* zD@h-3jvgJtLx6#WZ}0iNx6N~ugAejr0f9&cF76MLlTN+sMfucbxg-Zs5JFO6#A~&E z`}j{?S!N|Qpw6NUO%KlfIX%RZV?rYNOV-d8sjxr$M=NKSx7!ff`QEE`5^x*CC36@| zilfd3K#PhQp02I>676_&nE`AIF*L4%DjVqi?E7I?p&|bUVmFX-d@;s`J^08sp`9YF z1QKPVZC1>v4wW8e6kfJ1B;jIpe>6IXD@X)VKVjT+(wOED49#ctQYn3^3Fl$!yfu6s z9DvwGb;)ix)oqDl*JcN{{u_D3N9g3EsV<;<9Mfw7OlWIqncnQo+VCFMF{JB(aqj^K z=dTA&@etD#OhK1Hz%3H^)4}lZ(IMAtW9{6sG~+u!S(^=uuU;J;$xz!Tswx>km_Zq- zKq^^vXm#JCbAOyMx!Rd4X5K;Fl5KnkmreahxPzhAm&^ci63XgQom&=pPyE2#VPF-V zF)|20I(~!i`U8?2vKgNlKga+%pWaBl*IlE(M{|b@(QBQ+D`KIzkjF1Aw^LEeh^uu)w-T$v?CDXYYns=x%b3w#Q{87V?)HghmMQ=tDL;1GfP=cUbGW@g^rblC)s z@+n|=LW_5A}Z;DGf}Nr{~EG<0?)011N#lrzD>J8wFlM9l8Ix1ua9eFZlZ zotN2jQl0=`hcfy(+)UM1>x(a5{f-<3UTMRtn^4V(nG+n?{$iyDzMdcR^TX~+gH#5Q z=g0r?=Z3--56t2!K~be4&CbT==!+X7f?pAkGRRK)y4DbC_V@ON|Cafp;!qR}0(6rs znnH{Kichf1^xvIfqwy8AwYCaTcgYc1QosO)Vw}x=6cwppm4nc!f5%XC9;;bhz#}K8 zl7*!u7`O0ea*Z5$_#R^y)~ogrh~(;usM1nW!$^J%Uvqt2v&*daMEbNB78gU7O4@JN zAx28GsB3^;5{f$HCX)>Hv>&+cYYkj4);)Ur`ZZ02bP0<^0>nP1#4lb`z~m|_Zv1yl zf3H3IAc}1GGZkBRg%1t$zyMLV3WvtjZWE261 zC+`U_Od8y&-d))RlL;!zqz?2Qu0+oW|FoQpW&4Qc^N?D!TiSykU!U<~(-J(FI^1IF4v z2WZCHZtm`@o|&zFImTV6AqoH4fwqKo=I1mceSpJ3O%9ER*5;MbHeN6tYsE-RKrpp8 zZR%-DDnZNBi|pUrY#K7r5<3RM&kz)XX=q(m&e^Sz605m)`?l6fK~F4oOoEL@cns>) z_^3<{z7t@dc&ppyZd|2OP4IGUP@KTj@%yQ5Ow0RUF+xQ%F48B^aS$FjgVp}P7Zx8q zz<8ks@?L~}q3U$YqT%xl*HQK1_32@kQK%a4BCI9R{loD5dV^{%i9{hoi-I-}q7?&q z(~ke5YREtW#nypLi>;%j<>fv5 z85IRqjI~$FZnO5Sq?xSHGZ*Lr@H(F>W+4qjF=P{8xm9I&d_2mr`UCnkG!W#{z8l8Vkrh9|{~&OKO(n+oqGvGd!W?_C>gOUlKESRbdVvZ( zWrrfxGoP=6r30LLynLBdLZZB{$ZE+RnEwef7TtT~iq*E`ckbEX=>s1BiuP*aWeE*y zMbx)}(z(o2V^Epi0qUeXAI1FA97j*WRY}(g_v=*OhmfOzrDK|x8L3G<_45t4TreOw z!s-S2`3JQ`Il0wB!+#C44SWl#PybLF+`4Ld{h_f&gL!;o#^FK_Ln<}fqh(ygZ!~yP zRAkq*qXppGVQerZ5YhykL{#S}Royk$fGyq9GsYF6pWP$5Sg3QZvnQb>S{5=R(@N^R z*R83TBa~NbGUz){>;%V`eo}@?J#FoSLk0Is3bTbHZX%L&g*cfE|6A|O3J40)DdJ0| z=Zz*mqU@rxYtt1R00ut4i2!Qw_3ZF7*tnFSeg=m36+Q|!4u_hzQXhw%{3$8A4xxN% z5w#2IGPHQkxQP2)UDr+~ZJ|cX!{-Y~Zb?Bw1eL90`OhEO5Pj-T^iwFF=rTRSlqb;C z4}hE+wq^t@a=RU?n~K%y=XJ)J+7AL<(_E+H*M8@&(4IP=AwaX=bacdq ztySI>E)`yj>>FqJP2RvmF%9Ka<37GA+wX$8A06A3_NInpE6u|lZu`PW_4=K5?LO5; z-@12I-8?DVUnvht&DoIV7y{Ru)UeWcb7uuN!?lyl!|cSu0s((FaXko0BfhG7W|SEn z%jc?+>d0hORu?fId7C+lJ{$c(^GuQ5m?qf-`v#F|w&yJ*kZEEN;E^it3Cftds*onX zrvoH%Nu+wLh_d5|fK#)3du4vqJf&*Rm|ZPd`K;1P(DZ z*ffB*aLAXiJ$P|5>r3c-iHj2FQ|iQX*NvqfeiF?|OoQ4Mp&D)reex#+7E-!|%{+;& zCx)LkB=(zYMIQ4R$pRLS$@R^!qIQnWzF~Zpw>G+Uv-X8!Z|7y(C7ZX+C0_4D@{EUGZGpxHL`m<#T&Ly}gw*I+|O52B)2 z#J7Z=H_dFB19F6R6x}r=YhTsQV4jZDuG`xOfV3d7ee3;eA;lT-A*XDN^qEoN7Knd0 zVW?@CatYHHX}KQllJ?v?lAj`0+ge%{*pc0~&ZB;yuff2g#SZQBgi`KwV;z~-b8akh zPmU4xNY%nZj4zb9DZ+YqW@fvDmz1j;BYX^e&)sVH(uMY6)dGo4sjSbxdj+_1c}0`v0)nnwe^3 z&uj=w5rbIo5fC4wNh}QF@PC+@`2yi`iWI_lrw5ho$14w*3~u7cpIq+iT+PAOBm#fD zykWBiNzt%H1X7Z}saZ6I(jW&7O(4>ukL<*cQN;OS_tC3$b)mpu7lrD;F>bhTn#?+1 z1!M)931eY60NW7P%Zf?bE}5@D0NNYm!`9lPv%8y(7B zL_Gto9YRmgwGcLbD|Z}C5sMS!DFopaFv;AQqY{^j-)+@f?~xQ(?XI>4vChq zS_;05UF*5up+tM`6d`u`g`0Fm5?P;0vc1VRgf=8bf!9JhFh03bK8oS$8h_2O+Vo7+f%hQ?oys=XY*I>;6N=v~W(3(N3$%<58xs@8 zMMb;t2mIDjTGBoHCP|<9Q4TWqklMTSqZowQvP{jd*e$cy-}?^||TR z;91FA7KfbLZ=Z5KCYf?jBdXMpy}T;JiB(S6C2mYM^J63bnC0DCcg9=C)5lEidqvK2 z6sCIr9+wJ-&7{}k3)P-3a;pSaU=#51N?6l@M;@2J(2mB4;3|&^8(e`KmXo|y{XPqY zMEXoyrCv0$l2R{~U!-n_8CDV9;|Yd8ZYMg@_U8_!w+p-J3@v%S(d2)(zvIjLx$E1L zudSgxr;XtIBRh`V=$F_0zn9!uN?w3SQh;Lw09MYKgI-=N51U5kCUg*hg1|OTn&5%Z z>gi5-esr0=PxJGm{9enQC2VhUF?=?16~-f*L_aaDhYuIMqxXET7yJAb_=x}Z^T4by zYkCEMMWVPO+zweX^O`;#F8v=!;HO}<5Crp#mW^~9h;%wP8WVY#kM@HDl$vYv=%5Zy z_$SIb=3~k!OX<}_ZN@oP`Wo6J8dV_sQ`!J51)2ezD(-oX94FzyqHIm9Vl zF~MLxiCDi;fillW!#`c!y|Z%jv?TeSr22f{kUK;(fUpaaP7vN1uO;{nTY{ENHEfKy zN{+J5F{;~cR9Ve&TF;Zoge4^0)Y4Y!p7&Q8LqJkzdz$Btoh2J7No;NFbH@)U!e2C5 z{<5n*wb9myUslCEwb$ z)T`1d-B0;6sd6K#24P;gaqLpdvxhqV8kn?l6-vEny9rK6YUMidRV9=dG0)_zl*wBG zr6<`POKe1dDvL+<>-FkEajXy10Fu#mirN(^|k(*9cA9&MxlUHn2hvSZ2#jF1t* z5$@GPuz{e_j*VZGZeJ-=Z18dX!FKUghfD|LpJhtT&RYdV%w1Pa8MWZNp|!618hQ7} zE42Sciz5XHwREy(Qk>vfTz`x!j3u6~2MdJxobd#P5@-Vm4n7I!sWs|SVpO;bzopyh z8B8CD;t)cnwBb74upZOMxY<`Hl`Fb%itl6V=^E!6Ejr)Q`RLc8z zw?8RKOQIFF72Ypy!Ku-Bm2qzT|4ta3RSS+jf_5W9@E4%J+DB8K|YeNFLc-BdMmems`mEI8ZhzKjvoCJ>C+ zcu&)k{k600_IRY*g)-CrR(2k7`6->5wXbBj!@xpn19yOf*-7H+5GT*(%x$=`O@pF> zw4Z!Z^lO|nRuO6B3e*@!6`A}_s>6y^%E$uR%ju~pg|B~9*X1?|DW7cmp|h$L$e5<% zW)!KcS+UC-0tgA_sVpy&>rAY2$txQ+a;6`^g2o+&cILx=+e+?^zh%1{9v|vpqEqw- zxMhgkjJn>?%hhwkeAYT_Y*MyGHz~Y@-vkkqc^z43ZLi^VR{h`surZDvhbHBn{Jvg< z^^G^KL{m%JjnA!`;NWGl+m`#VyWoXvL&j6B9%fgchCgBl^?BJ0Gxo?B%~w<=Y6_lS#aJ@fN#n4Zlc#?=v#KA?FK z|6VbK2NO;}ek+ntMB;7m>*mt9rRxmtcWh{Yr4!;YbMAh{+ovp6rUNwx&d=)IevqeH zUi}|WHzo!yQ|z$}W*lPMv)qiaPW^`^$#`e*4f`#KBL&z#-Sq2{Y5f+I_lWs=@}3#f zJAa^S&3kG>)URP{jrC4_&@4HAG_W& z-Qxa*k4k@5vuK!9Pr)V#1A!5HbdE0`Kc4t?a)nihtx}j1kTHGeO8oKLKTiK=kE1e8 zjSV}FBZ~NV?;=xyBR!_O6<7r2Rj+vftLv2VS2cBJT57X2jsKc+Tb-5$6K`@F$TIM4 zHRXSmC-Nce#@w4s->}?iO%}TeV~!Bt?0BW?0vhcP3k`hJUmMHR-ZW0}l}LGMEHigR z)?MgQGY_Nxu6ysKQU;92e()HG!WdlFrR(>A&Bz+tMCIL|D4&lp#z7Fn_FW)xqxh!1 zOG*KR?YT16%rBGIXLSnLPROrI@9CNu|H!sX53sfCMtBMx1mZFdywUpODzxs_o*kM= zg!UINGWQk|kqU`rfz)FDW9JDyGQDaGE=^kFUX-tBLtDd2W%R(;lU z?7?TT!}}Or_fpJos#4bd3XaZWzHadRH!t#(7+J+jU)KDq7@hyBn;Z^Oi5y9F2ahm` z$9H^he>JP%lB-89w%G4M6IZF{RfatGA(t&U32{ zH9Ja_cvbf#UUjPCOy7GfR_v~1ZTHctNqNChu7Ae*vkaTEMEZmkZ4@SLv^n533A(XK zT`n-(w|=EFg>hc~gamHKM`NdASYDMZ5q2zO_o6F z(bd(ZOUi6j|Lk7fbnYKm4`BrX!ijkD*vL2rD+N}F(WYByyq8h$-U8tTwRiLYojbqz z9Nc+a1rMF!;iTnV^4vLybdeI}nm9Z<%Cu2F<;(dCjzjnJ4eq9XJa17H#Is3AL?o8e z_+;nVh>r1lfo&d3K3^oqZi+?`I%F`81C#jNyaP{5?}vytfD*H_)kl4nlXmSN)ST(b z`!{lGA#z3q5;GBDh`c#?QFWl1p-xn{n?$q(u((CF>=N?9iVQw<0j|q1l_)hTf zsIs=z8UA!EmRO`#cG`ugx+cT@TvJy8bGq~hSK&yerI)8w6=@H*Y}n)CIZE1MNA$jb zqUXJ#&RV`NlA^y$WL~HKJQJcX0QaDS^A7Iq>5CBSv`}<6T5$vdjN81Da{tqA@lNUQ z)7gX|fF(yj&f?!+kZPg)438C^=xyO`-#FEsg4YIX&JCU9xvRD+)L`A2+(Su6tq+#0 zum_gM#dU(4w1>8kznZc4G|qzRCtLe7@g{e$id>KM!R9MRLq0WR5JO^Le`s9p*)TAz za@6zFHkKe4n!=!scASk@Y5__?&u?ck+hw_9&0}+${;**io=+^l?67+(GYZ0;{|lMZ z^ex<;&{uTX-P<7Lcsk^G+JW%bv(ICEMZVk~{g^S$=(XF0Xs*guu61cTr1k$$2MvZT zL6t}_yw04z{hD2ul9aof-LalJ83x=LIs}$oZtb8KB z9*AcWN`|gLkCro2nS1*m@PE92B7Z-o1KZD~=2s&4sv9i-I)59HG3E;$<^J*+!GBEm z^+c>cr%Zo2A6+!?qa3`ckY_Ac#e~O0B$^sZb)E~{&x5h!W%};6bnzB0%&<&8=w+US+kRA0Q*J9Ep z!#BIf>z?Yf71|+r_48RDjX8ouCki<}lI94n%&U>2t2fFpE>XL9h?DEt6D&|7%Jb5mK6r52rI78~ljwKHWuq2F*00}(ieqkTjh2Y3( zhLrsuYYT4K{@-4YE=k$x((*9b_#Vi-a;Ru5(@1gEPwy?&d^co1_vdDvDO_Awu*o%` z87gtnG$FNWEl}yr?wwhPp@=j&h|{imm`oLFdUYCvE~T57%G4_djJ2l#qDSAG9J$P> z;uy?kAQJLLFUC2GKp+fHPMYIOh{oQ8voVG`nr10aF$92FRftaX)qHWi=hfIr3Q$Mu z?x_np$=({WwMiEe47{EkV7*SxZ8`eQZDlg+Fl{M$`+hx(XLC68Y6%+8VS7)dG_LCR zfW&*vwWPDOi%5E9oZ_5k-YkHXHA3$}a+jw;M2agenb6oOq)U~v`#-nNeE$=Rv0ql~ zWkw+bne7goO`p3C0pshemUo7tG}%`$gf}VFi%Gg=?Q|_`gxKwkNj7tpr!lPR+~$+M zrPq5n(`#uY8^|*_fxkcuZn;DEn#JBEy3kI39DUczVxwGOZ82e<=e8wthb`K~fH!mg z9H|O2161HBC=JW>oQQ9a-3NzgOqKZjG;9Vx`MSB0lWsGyobLcOT~#Dj!;}?mG5p0U zQ^j&y(7XDu_ZYrqv;LHHhS>r>?+9bn0gRg8OYrDvY5fEy*0m}7b;U_9D0>R>EuVo# zHKNpY{2}$EgGg01lg=m{bC>DikpQid#PfS#c~t~-8H>+q7f`*rBRaXsM_}7$aA0yQ zON`@A53uELMh709jZNn2$@z0^eMkkj>YIB=S3b+&hgfT#xuH3j`F3Tl>WQEMjrDJN z@B4P^=0`q1_4wSqsB3XlE_ro1kf7@g5tWb2 z5(z>1^W`RewpuYbsvx`-)~))IV>>Uu95w0s=@r|{L1sbh`ZCGgpcYrAwFZv763*jz zvj8!h4w`B1+*Tr^WyXF@>dO<%A3=C36}QSn-&8smLdOa;Z>oOXR{E)9{#ljGOvv)d zZV*zMoc>44IL}nSr_*%!gzZYxcc+PK*@RsX)rpEIkMJp#XeQf%z9UB(<8z}mHA`;z z7Z{k8?A=Z9!$&3`c=dAgVzHTAh2-;JmWv{if2!UcQ$(8*`CO{=>2vv_I}tYViX)+( zN5>RhR`l$nzRMhnk0J2JSv{7t+oW`FaL3rUmzx~|p67X+d1rcR8W@PZTLHX?of0U! z60X(;e%ztgmp7YL{;Fi#2-z7^kZlv)rjsa+v zdS}v8xOZfB&}sEy|A?xT0|Ta0P|se;du&^-2R3?G^lySR;XFI`_t%hr<5R1A%`uhZL zQ!FGp)2197_^2{5(H2bl;n=3)=JED`z1W?`^FgCP4lEm^&C|x(uh!`Xv=$wiqeW6T zVP0Ky{d(L*=`AbU%*-^rMPAj+A^rD$EtMy--m!f3HEFF?(S|c1lgD;qxpIM=XER@} zb4P$Nn|(UO|AJMGtZyWqw*C>dz10tD8}y-l=3&hnHVandScC^P9{_m1GP6@e!SpwF zlpGRMeb&}_%q8gelP7A9v!3FfakBqjZN6oB+Cy^ZLt>J4=d>jM;!R_zqNH~G(>rI4 z)`_CX2J?s*bd}qqdDeGs6|x9sZ5%!Lar!Us;NEohu#wGKdOH7WrJBBg1S6pt?uw& z0)m^#V*l#7|6fTU)e>2ls_{=%dbAf7FZT>2s9oIlVd76O%hD*xMoP*29T20# z3P0@6l9~LHz{;G^yXQb?@87;{Dhm)kygoTh%w3*7IkGYZ2CN7mfbpZp{v>}Pxrlw1 z*X8C`_sPr^XHDvaFlTeyg$6rE|F2SYLZxc%?3N=ke5LbJWRKl{k~Q9~fUf~XZwS?P z>AJX)Q%bf*?}I5;m10hwG8zn@i5ZVnsdLfel7At2V+rCZ;pD%d<8^3ViuVOi%wEvY zdB=I&hIFsR0l~1YDA~cY2xhGmdm>ND1H%Jz4|C!DTPh=9F#WD>9gjT-xL9@Z>dz#8 zrzur?cly*I6wEJ0$3-}Ymv{{Q53D)9V+a3_Dj$fRK}hqI=n$WBGqA1>V45PeoU1Ok zanb-iiMwQzv~;Atl$n(0wX>8DU}^5%_qlC$@w@lbZYh_)U{0#nDm=iU9E_b?4e!p zHWce_Og8&S)mb+CR*lRW?3OyFyy2nE{~%rq(etym%sE`&?IivrbSWRQ6CJ<1ns;uA z?S7<1)h=ZzUI*gF!_;dlLKSi*5oiA_30>EJ7G>6?Z=utEc%-Q~F`iuabm1aATt7TI zLi*KaT%~p?!N#(ieU75#s5yh)Dtl%fA92Q~4)7e7CU-2?THay|!`FA2=F?!hyH(TL z^DcQMrZtI7>q)nXinG4QqB|(UZZeh}zEBIg(%hpx7t5d!*#(00Z+Hyeu!?8wNUclr z)re{+KYDv-jEbzB=dSBfpC4ZibcvleA+u-mr5TK(4g?;)?DsJ0$r#wz1z}LDDpZ89 zH$9ObtGEVet9wHYs3wi3^ravl1vq3KKW2nn+AHK1G5gC(XL%s=+8X8;7}vgrm{{mEf(1hE&W)6Whm28&P4(xdHm6Be|VckkTs{G=;*tGxU@2)0mSxjGTop9ZJh zG{-*!9JT_&pDGMcw7N<`yp?vEdw9C;OxbJs>ja_eRjs;15*04_>3<9kmj8dP#RvuC{ z_`dp;AH2Pz6lx4ig9j%xUVkQmF47t3e_+IP!IV;5wySJS5^vU-h9AB#_rUaJorg!}oq zxh1y+^uCfbDs{fAbVk*LuSi|d#q8uDI5$K>cUC2$myUv1DyY>gk5qT-#vMK^D_?(H zE9}fT5-G;A@YTjf@O4X<)&I+Mv=d+7ZGrn5v>UzhRcsdrpFdB(A;b#JQrZ5x8q$iS z=wjjzM9geQE`{qzST-+@!Q%MT?weyhKT_d109e6Wjgkkd20-k;)_>Ls?g!*mLN2<2 zc}j4wZkijw-`QE2{=P~MAtjXqk1mVRWfPuR`c%2E+p6=bJPtU`O=gi$vSNqLPvfQS zUyd@pBGC{*yPDWn=%X?x9z3O3a?-=p6`Y(Gz2>tgK&%cVLNRLT1Nq{?e2J=9zoQ_Lpj1Kbt z!`OJ4@gwqW$cB>;{eZh#n6!p`;;u-P#cy~P4zo3Go(TJUd2k4(pnZKgYmh_BE zk>B!#O4~m*@1f*f-gGiT5~m|^W*m^aTRsxCB6-UroBxi+gub~B^#B$Tgc6nS93F_P zJ9-lOH{^KpS|vZi49Z+k%-{}$(;5WWe`ZcF&VzR=h?}Qi1iRSLAYM$A-s`mI5;&)) zHJ{AA&L<1DFO$}Iiovw$AK;3Kkx}vnA_4!$2@l=Yb6IrR))&c(|3iB!%av1(C&8~H zM3WrNhV|F+p*m$4+LfR>U;M%i%IhJVElA+t$Q1R&3TpHU54W4BNG(>h&3`nQ#5@a^ zigM=Z^l4>cYCU+KO!t^dX4 zn38tC?~z5p7>Zi*0^bh+B)=X8M$Vp{#GeI|7-JSFqK2I2h-MTJe4o;^SW`FSaT&aO zWh_UwhV2dbXT$4yCrP9etEgZhJ%Qit?WNc~YX322A}$+-iguGq%8v*83|!ABFW>MT z3uQ-3xsD2Lq+<2A-61g!J))9QXKQOQ2A`PPbX{~g%u`Ss`t{Y7oiI6W8Glt41nMcs ztR2gq`5bKt(xYIwO;kwoeg(*&d-CtEpy<@ClZg%w*PZaA=u@|Czd#uveQ0mDC<5~@ z*!FS#Fd>^pW2ZgL-9+DD1^#gGJQlZfjge9cnaz7o>mj9mm2b>+Sa@)G9M=zX01X|TXsvvikzxyDR-S$k-A3GDqqaHb*^E#( zu8YH_>S;uoHFG1jDU46il3@cbmQTS#E-fiuXY3mQN5qbK!3B9Xqp4@aC}9if5BA_H zU`8JF{2G^$AQT4C*=q6**QpjIc(2YbE)T1#6^c0jqcc+iV55R4EFqCMy*=;9|82RK zpJCl3xFzas2>mpFh1CmtaJKRi^C{%Vmq5}QkzD+Fk5ps64}CQjxzcV=&1!C)G7{ps zva663i;}P+by>oP6()wLM$+=Yc~sZdPTx#@-0+Am=!eYZ&-}x61K6bA)~E7ZF=82p zW$*?I3JRi~BP)H~95|JnmWGv!yTG8*v?1|#FhMu72@6{h`S4HPqnBDjn$aD@k-6RF zy}|FIIx5=;P<3P?B#8V|Z<+t@fvB3*G7v}3NlX;gWK98@mVK_L9i}`?1V1xF7j&e z+qb(&lJ*{Sog9B8E6Bg6$6wZPQ56Y$jhIYDv0RVOQ|Wum0a8^b9-b5p5fi1&g~Y_} zcVig_t5YUGZs6;K@Z|)!dYy|L_C*Ze=$&;bGV$Tfy1EU+{Z|84|62vguLG&=Ho_$I z*zNtFMYBtBPKaCwtgY!h+NpzM0aw9IE_b||2sG~EMQ42LaJ=l$eU9%E-xpL^yKtEJ zBJsM^^A7XtQlpLP(4c`R-@FeX?H_zb>WKeGe5g@3OhR&uIZml_b{@eJs#2+=yHHbq z6Xwmhy!7jR*a%zUgf7*HF~iePr;F>qW8!y{hHx}{7Yn|g0SxHqyuExCBhZ?drkQU< zp&xxS3*zzzA7?3sq>~U0B)g;e_x7GdEiY7EN*A7DT`U+cU^>A~dgsJ9pA<$88>yol z7o=@4mpj_{Ng7HSnqg=S>~F4I8AY~k_2nZPGz`F2f#b$m;6_00(%oI)PAioZ8w<~) z^IGiXLLPtT#;x^Is8x*8P|~e{|8ByA=2U#`+S24!<3*Mtx?_ud{cM$F0)iv|)gEDc zAS;j!?gtn5l_PdagolR%Rqu^W7jHRE&X7t*jfPZ1_+`e|u^RSDphG2NLltJKp0>fA zoBva~Oe6Lkf$0Zi1oMQ5QT;B-K71vmAqrC`bmu@y`f1Eq^B$+;zj=uiB*k)Q^w~%C zo$U+5jZ7iy3`VQLg@r^d)WqtZUlD2q+`y|zos%dw02sX-7=ZGC{r3?r7M52RAcfm_ z^p!nUaKg$9B$N*)3K-k)=b^=X0jmPwJ(y5{9<;-E>w9TJU@=UBQ3g5PbQU^o^ZKX1 zfFe~g(|Y@MSpk>XO_O;I-3LIi(}vckGRJ^$LrRj$_IPoIbjrw&op9PJWe9leF2~^5R0ahhJ{?o2RvhpDV0>lmR++%8e@(D z;w#wM5S`!%CO!=+{>S6Bt;Pc1`MX%?0)e$w=oJOOl3fvUTegJaXnRjV5@6y8ix)-v z?L+lpTlMsu;R%voY+i+TeTB!qk!HvpGT0K&q zVT;W^h9;J-ta$$XC}uAt5-DQOL)AiZ`;9nIe8E)0YL$k~oAJH7?;HLOt8cW|e(2Oe z0Haby?l;&VquUSbA4+lk0Jc4z01`L$Woc<^Q(QoAIxM^F5$>@FZCrtA49vMNZt~;t zy>tJ*`E17J%QqTkNis2#M_oZ@oA zsNK*{(rDaj7uOUdch^rufXAfw;`_kZM&#>t+)wMj#RF1-4= z6$YKUP0CG7#QRXK)l^p-#Y)`+2gZG5|3t$L8x2j(^HS?zmW#{J`HWn^mW8mF1ABdJ zoWap02k7fRr0WX%ow0GkdlF`&{A^`~^^)u?sA}xR|9*8`^V&Aff*b zA&xPQK}z;bA&v@C(76`|aSF+RNH)Mp20VQ**7m}lsqu}a{26*}jUS0}pk+&I!kLf| z=ojewA)|f>-QR(%9FN6stC^YM&;AHA8*~6@UC8Y?CnwKiBM@v3b2rGton{B39Igmb zy16{RVk+G{4P_*C3RDKy0+T5Gd(*u_jV~);-w|=`gulP>9vA!#TyUw&3-rD}kjRou z7fb-nN3=(kA=5a5hk_+-oJ;)YqGl1?K)Xl0lXAOPSsC%H9~w0Dh^o*Se=B;$a)OPK zdnywdLyF-uB)YM&>^I1eP|s>MO1e-M%JEEn&6`#l;t2KpA`&b_#U^>_;cI4sxvg`v5Lbx{+CM$52u} z$JZqIXmiqLIvWR9#VnlJ=^cEg9Rz9zmNj{ai!Afs5smxI>2Xn^81a)j#UpN@U~3{p z-;|5PMdW$*{5f{OOfjA)#_K{t#`Sz}N#%(7J(_Ia} zvU;7D#$QvVKCGCOE|R`72$feKx*tRWDDpwCj<${d69<`wGiJ_;IorqVFxB-(xzD^F z?8+bCzkhyJc?GA5dFjoYs*HEAPZ0Sg{u|Yx_ZsRZlg!(aEk+0SgSuMtVBy+plV*Sx zvsCxFVfh9Z2!Ek;c$S29o?q28{;Q(0sf&f|F9nX z6hTw#My?k;HRR3oGEL+g-8hl5I$;PFR#5$*X%yyJGsIHaI`$1Y3%?s=^D!|ozn7Na zyVBUzbpzK2b+82d5krotJ$fnBjSG!0C!qu^W|&$}!Pa5Vo>#CDjc*FpPcI3@ zw_NN>K8AJUm_I`tV)@8Om6(JUI9W)|^Xn6w>d#LDNAPt6RaNSJ|3ukS{kBpzy9zo3 zY7jv}Trbc<>`xavRSHThqb5I?Vv|zUAL2UVEvz#LRzIHrN;67qn2y&?-O)O`FZc+3 z+TXsNrdflg!S5U$moe9`^h!zThx>t@jycoA;VH9?#YtZf}U++x%ErR{}cT z1VP91Q4QA9b90Fv`PMOBQGI);Y}jyk6~cvG*}c({;F=FqV67b8J4`!A2Z{5tGrf=j z#lR;Pg;64H35<@eM+IQLrve`BmKOSifZ>pa%vC|v<%Z=1Z;jsN;pSuaI^cx5h&nPS zEB;UfgzRtM)`49`#12;88CM1aISs*Sqw=OIM9rxcJ54O9W)Z+B*FNOoz_=AJqVDNh zTCF+yLp25WKH%u8#qF-Hoyf^G(uO|_E(lD{;AtesUEhjUffF0k1HN>+Cyy1XU^Q=u zg{~jTwTd?Pw72X8@>D8L$D@S4V(OH~B*0}6`l#k2{T_Uv&Os;vzFz7)XMdYWq+eZmt z*Wa4nlHV>7C}E3;W@$?aW;P7VY0a));chA8qlhU8vJrYROW`J2QlVL(`K%7jM#((a z!HUQ(6!_5KQ{bbj2+yAcIa*N=7E$(=NDSzs4W} zBlJH(|NaOG;!HIfc{9|Rs~{ZY*k45}>7^3EmSyS)04GUt$!-|=y3FCdU>iTHM&0(N zXGNE_gY7#TGpB3}m1xL|N=iNoFB*5{0N$0pAv-6h7;IVa7!=>_#U$o+)QjHQL;wy| zY#N~v!(Lk4GTV+}C=51C4i1tm4h9CoPC|s-y80Q28KwDI?aFX}Fr4>Lv}e`A*(F#D z-xqw1fY!15xqP8Z^}n^GPpUmF1RQOQ@@dm_T^%)WsF>#=9vp^v0OahZH$kW7I?k{v ze2~eOs!E%|J%kVhF)h{mzCF8Ly(KI|7xjMk#4czd#IDW^cJ3q>=~!Aetp*TM`lb4NeHI0YLmz$>g)h*K0<%#B z0z8X@7{DJJTe&*L!DY7W^Jx@>z=?9Q{glGr^m~PA(&;GsktbcN=vmOFT#`WY%9+-T4e zM+pzN>q#`$y)m`0NFNf^Ht~~~{yC|Y!`doax|y_Uo9;4xrY93AO8KP{zu*1?xRt9( zXz|gr@zr-&vrT8#I_umf`wRY&=|JFr6{IPR_4LBN!|UJ1Zr-J9>gJR^{cFofK)6qh zH`LgxAhEE$a^ixTk!;OX0g;Amuseg}nc7$PmnK82zy>4r2$JZ#cF8_ZO_TPJW?RNA zuE}qNSI5yqiuMfXNaW!(Z34v6eXS33$U}yuWo7c7nO^^bmeXs~LgJ8<+(AKyyIX1r zg%Y$jL6ANMr_KCe(}dA|U|bVT$#adMTBMf)!pzv%~R-ZiV0nz6oKGq-hFy$`E z`A$oL9F^1K2Noi|U3%_%`&^ULmT?uCBN!e-(RKZk<85Yyff1=dgp5$-7d9Kf&Nj3_ z?d%>teR>lf2KAxXG_>S(!2REv1`DHV(`?_C%8isfZ!RGR9Z!v8p^cE3T6o0J~ zn}r|y<3waihHEZD)9**WjpC@oZa37>2YA`yS#_tODpL2&COmC^Rm{+SYPNb1Swcdq zOVh?aRJZ`aFxO#-Aci5zXZFy+_yjSTJM`YCb#){;spEOz+{gAAQm(T_zs?j&)YTso zrcpzJp3pInkYI*C8z?NruEeQbpi;mRu_PE5v1ah55m5QDnTt;Lz4$jdnd+r@`es9) zh7<72W22+Hz!MA;ik248K!}XuZ#e{LtE-Fe0IP|lq`h}yD!gRMPq%K}N~nd6jvRZs zHq@;K-`5geTcZ5TXaqoc$a)d}Tt#M?aSv2b=&>O-eK$3w2K7$rU)Ux5hbp~$seG_% z=|XdxLh(gC!(W;Mkzm9r#6&v(Ji_LLBxt!x5f2KW&(gu25F_|43 z^uP-9obx>U<2HYt{r5RRjXMoYOdic3$x0uy274Lh3${5=VI8pwT-m*d(uBkSlJ3G$ zds1Mn)+{@x(q+PKEG;kJAyhH*~D$~B~Zfysl2AFpaD02CV(C(c=DPjuz0yVzs4H*lO5yt{uyOy6YrG~GT4F=EXuDaTof%b)KF~I zM_mLql}mtjkwqe?K4SiJ{%3q!OhBt-T(6T975xM?0x*uO@k9ZJ^#Ng`qFLBm*mhKm z+%x2_Cvmyj1a(gX70qK7QWC(pl#PO91;$W0U-b;~WX{I*6W!O8d*wvhKyN4^N>IkM zcyvaH1bpuqA1SM-Xtw|N=Imr6=r}>gewBO?ZVE%1S5p(vkz>~^?`_cZPMJb)@$QDL zlXMIS-|8&)y_ZvSg}Rx)oE}eN?DpUikqRw^+|?7iIbEP;u+QG-$dShxABTpv>Y|FS z_rtQA`y+s6`jF@yyK8sUj23E+6w0|^GzhVEb}Q_eZ+@#nFe-t(ahWY0Xa}I|uik}v zcl+(UJe5?;lh&JqRxU9(ZzaG*^Gj3p{=pOWgKr{pqC!uKMJ8DPv5#2V)#?_02>Zpt zf5ybxp+7ZBU!~T%8|)0I@gp2#b@!cr2i(iNw+d&T`VN^c)(ir?tx!j`wJo{8j3Up- z^sWwrElIlo3qfJf76G|xlH181XEHA4CG#E~YKo|j7t&@Us;+iK8a=qEv?D782kR8Q z*I9TTt?qk}Yor}ncnuvj8f}ON6|Shna4d@dYeJyB<(LD^Pkh@I1k}t!0B}slz`d+7 zQ+9L7(v8w|41w36iKs5r9J?S^Tb%x0%@YNe^=8mg@YFRo&$%oZl@nLXU(__>{A$+$ z;>YBekfMpnNh^YEJvBM`yWMt`CnIfRmtGF2jFigJd`QM;<10u?8}})RxqJId{@^N8 zMLn{qezgbnv64HZw#Ye=rGj0CpMJgk;^$wdII=~MP&|TN>8X|7?#fi|c172SF z&K=O`jFOAF((GcrCp^#jO$OE4($dM=#3?#5@~6m6;tMuYQ&ZzNl-TKcwp1DCrR-UJyDR=iy~vDMDO}$_Wzxog{HBt0VmX{DG3Lo+QZ7P$HgLcz+_0cyzVp3KNe;|MTM_X`jY1 U#|K)^=)|kr?VM@XZM@_E3ull9tpET3 diff --git a/documentation/use_case_verifier.png b/documentation/use_case_verifier.png new file mode 100644 index 0000000000000000000000000000000000000000..749d1f818ee4019122586062d385c6ca3ef411ad GIT binary patch literal 70881 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