From ac211fab94601a46469346b1d7cf9123a58a47b8 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 10:33:12 +0100 Subject: [PATCH 1/9] docs: OIDC support This needs https://github.com/prefix-dev/rattler-build-action/pull/51 in order to actually test the workflow --- docs/authentication_and_upload.md | 41 +++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index a7809396c..a704f3794 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -56,8 +56,45 @@ authenticate with the server. ### prefix.dev -To upload to [prefix.dev](https://prefix.dev), you need to have an account and a -token. You can create a token in the settings of your account. The token is used +#### OpenID Connect (OIDC) + +`rattler-build` also supports OIDC with GitHub and prefix.dev. +That way you don't need to manually retrieve and store a token. +You only have to set up a specific repository and workflow under "Trusted Publishers" on prefix.dev. + +Here you can find an example GitHub Actions workflow + +```yaml +permissions: + contents: read + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build conda package + uses: prefix-dev/rattler-build-action@v0.2.18 + + - name: Upload all packages + shell: bash + run: | + shopt -s nullglob + EXIT_CODE=0 + for pkg in $(find output -type f \( -name "*.conda" -o -name "*.tar.bz2" \) ); do + if ! rattler-build upload prefix -c my-channel "$file"; then + EXIT_CODE=1 + fi + done + exit $EXIT_CODE +``` + + +#### Token + +To upload to [prefix.dev](https://prefix.dev), you need to have an account. +You can then create a token in the settings of your account. The token is used to authenticate the upload. ```bash From 54d8df1d2e11b93b73a1888292b0c874f8c13e5e Mon Sep 17 00:00:00 2001 From: Hofer-Julian <30049909+Hofer-Julian@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:41:58 +0100 Subject: [PATCH 2/9] Update docs/authentication_and_upload.md Co-authored-by: Bas Zalmstra --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index a704f3794..6d9a929ee 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -58,7 +58,7 @@ authenticate with the server. #### OpenID Connect (OIDC) -`rattler-build` also supports OIDC with GitHub and prefix.dev. +`rattler-build` supports authentication with https://prefix.dev through OIDC with GitHub Actions. That way you don't need to manually retrieve and store a token. You only have to set up a specific repository and workflow under "Trusted Publishers" on prefix.dev. From 43e8250e92e371558236b09a5302145283f231fe Mon Sep 17 00:00:00 2001 From: Hofer-Julian <30049909+Hofer-Julian@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:43:55 +0100 Subject: [PATCH 3/9] Update docs/authentication_and_upload.md Co-authored-by: Bas Zalmstra --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index 6d9a929ee..6870f9246 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -59,7 +59,7 @@ authenticate with the server. #### OpenID Connect (OIDC) `rattler-build` supports authentication with https://prefix.dev through OIDC with GitHub Actions. -That way you don't need to manually retrieve and store a token. +An API key is no longer required, rattler-build can manage the complete authentication workflow for you. You only have to set up a specific repository and workflow under "Trusted Publishers" on prefix.dev. Here you can find an example GitHub Actions workflow From 052f50af9aa09af366e7763744ba51c4725958e4 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 11:13:46 +0100 Subject: [PATCH 4/9] Newest action version --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index 6870f9246..3dc191ca2 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -75,7 +75,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Build conda package - uses: prefix-dev/rattler-build-action@v0.2.18 + uses: prefix-dev/rattler-build-action@v0.2.19 - name: Upload all packages shell: bash From 528f2db4332c0fc103f3b80f08645485e24f07f6 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 11:18:10 +0100 Subject: [PATCH 5/9] Fix typo --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index 3dc191ca2..3951b9cc5 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -83,7 +83,7 @@ jobs: shopt -s nullglob EXIT_CODE=0 for pkg in $(find output -type f \( -name "*.conda" -o -name "*.tar.bz2" \) ); do - if ! rattler-build upload prefix -c my-channel "$file"; then + if ! rattler-build upload prefix -c my-channel "${pkg}"; then EXIT_CODE=1 fi done From dad5a5309da7da1a2b7a50537aaaca4eb1813f45 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 13:37:27 +0100 Subject: [PATCH 6/9] Adapt heading --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index 3951b9cc5..f9b81b75e 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -56,7 +56,7 @@ authenticate with the server. ### prefix.dev -#### OpenID Connect (OIDC) +#### Trusted publishing via OIDC `rattler-build` supports authentication with https://prefix.dev through OIDC with GitHub Actions. An API key is no longer required, rattler-build can manage the complete authentication workflow for you. From add575fc610b42f7cb241388ebea07f8871910d7 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 14:45:36 +0100 Subject: [PATCH 7/9] Add screenshot --- docs/assets/trusted_publisher.png | Bin 0 -> 29565 bytes docs/authentication_and_upload.md | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 docs/assets/trusted_publisher.png diff --git a/docs/assets/trusted_publisher.png b/docs/assets/trusted_publisher.png new file mode 100644 index 0000000000000000000000000000000000000000..63477d1c2f63525739b0b7e4297734f790d67efd GIT binary patch literal 29565 zcmdSBWmJ{j*FL%lC8WDk1?dLq5|BXOH3Iv-iGT_r2ztYtCz4^IAJZSy37tl>`+6fuO&YkyM315GWuJxF+PM z;FA>Q3{CJCqNDg*b!71JLjD*G-V-~$(Q;C={p93o=wJddwXwA}VRkfjFfp-lG_!R& zLTC{N7rlU8B;jCU=wxndL#1wRZ32jrawt)4S`TW z-b#w8yM5nZbk)_^q(nL%esXAnISc;wD0H*YRtUiB^Q=^q|puJmo{ul&$2S>3w#IF}uA8@d$SdcE#B^lZ3r2dOH37T{ICHf&{w; zJD(gE^WQb90xv24UGvlBf8Rily`2&|I;6At)V~$c+oUPwOI>fCoSIS#a3kiQ@RGg| z9t$@$6u_k9mzm&&SgRijc`aEH^a#_7D1SHIS7100;+ zPy1ww<#LlBa%SGRl-#hg?=lSC9CePpNN=C(6CbBG>P}JnU~3wN-SM;|OF}>)NCFu3 ztdlFoO`c3d_3+5vIFS3Qq@-Sfh!>s}?J#$TEjd=glXtznS13_rOHU!_N9)WCvOdM3 zn`^f^;uA7IS5wT0ZpV!);@~bE$u~XJOoFmm<*@Y?Lg!D`+U`8bf@KcYkOTOM zcwMeIzqxH}Zg%|sjdkHttyTGf=MVIuI7gyDQ;rT?r{Ex#cFfFk@IpEKORh$>A#rl<2iY zd>xUQ4OpI0X&xCI zn@i^@vXQtf;&7^%#P_t9{j*FYN@vRW%if6Fy{I^tufBfNL)VU)Q*VMm|6D01CMAD3 zA6}+n+U63sNfW12avexNP1|2YLO_7ddaZY(eM2u@!td?uBuXDh3z5scq!y-uTplg9 z9$5C2n=dM{adNk1d{li(uU%ED0PW~`kiRub} zk4=f~yN>kO1q|*mJ~3?r3o*N6c}jv#PL=F71Im!r2frRT$n9OE;qMILvhr%lqqL=3 zyPf0(LDH!^UzByJ-w!+-9G$?(&397BV8lgPZ5tZ(ukscGO}|K zzZ2u2EVNm>Xi`tE0B`UE*L+3I$YfutPrF&8#|%-=gg@%JH-4 z)(4j3F1KI3vR%LGbwo9Jh6sOmya=C|NR*XVOO(!fL%|yE_2iV$3+(2*r#;E(2ELeE zOz@CO^F>rgi?=QXOo_bDD9GnC!POGdEvSVAX+->=7#ti=KNwqwD1916gzTRd%GCOc zlb`J_J%MB};uwB-)UT+xIoo~NkaxJTgTcv(3-Mjf%uR9I-rH*%oFqoVxHcY*!N2mp zCi%Fv!IOtJ9C={!wr7k|Gpl%7wDNF-P@+e^>nzEUI!@O9!V9vm?M}MG+ikgju*T~X^90<7!4{};0IyL_DJek_HE*Zrwt zY8|4w@S7x|z2Y7Q+l55KvI;Kg_en%*IZ)qtYmfG$!CnbTg+Jt7d5mL_eupa{&;!Q`tyZ=E8)g@c@KHRm38?wD7Sf{g0% zz_p7T^)_y?2;O!<%0ZR^LM1>)Xv(Vlc{rn)NN5bnQA7v6TnirJ=Kfa;BKpn+0|Z-9 zmxQaku0k2PMrO_GltRvWmlH(DU8Ms#EYd>k4sMvWbaae{f^2#DmcE&?7|jnMBy!lJ z2|p~O?TfgP8Lq0x8nF17^o2oug>ECMRr6hVp8Fs6XBJOr1x%d(bJ9iD|VzANT z6`AdLpTnbs^j7%)$N|GP3a=Z_F28#huT{OF1`$o+VF?b8>`25GX5--zcXxjs&!qRl zv-IQY+NPWPnAUcvM^9+Dw%VAinOL zoM_wgYCKUXmW+_rh?F)5J+;1m{FcAt_0Ej5Etbv7diwegGxk0gn;e2}i5Qv6NG&B= zMQ1{II;4zToSaV}jr=Cx7wVhNyYV1jo0gSzRlj7#86+3%Qf%yTLLg0(|WF4cbK4fB%wQF0^5=xhNOY|5NYybujUKF?1_ zu4iH9^zW9|CmVF2*51$)b8&DXGPH07_OU=gxHdVbAa@YsvDR4By!?3(2!eH*NW?{_ z@fkAZ_TJ8SP|q&bbJZhAi2X1!(n};TM_8)pj=iKOXlP*(UbE~)JgyH# z5vJAePF*Rh?>7^@7aBa!RaOoTDQ!l|R}bBYRe%06dm^cELX+@3|Awnniz!fY?D+XB z4t@;%#UP{I{`KRrFxrulV#e=e(PQ0KrrH7=n>dK2jAslj#6lJ_mZ@_f7FM;g5QOFDe zL4H1_p`|4{9HQ3oWR$ahYZ^Zk+ui*dxO00rZ*FVvC|vHazPODIg<@L0@0Ty)M8w2v zr|y)nu)|({Qjv=qk?BFRvN@{18sHPKBPUx1O`xnk`s*h{-x+M^2g3>@_#t549r!qy zdU|?wEu^YGN{#|yT{yb+I9f+eZ@RihrpNsfOmCmYm1dvQQ+yWnT@q@9gQ$$!qbkv= zM+gbg;xhW&Bf$QERF%l<`BK>J(wVQu>a+f0L+j(j_0uk``yQ0xw3aU&(n{QB-mo%4 zgIiX!@Xw(2NUo+Pq_r8L$8KZBJm3)o6L@v+d(-0#VbRU7t-Sr5s?+6VcDE0*kGr#G@kUbaiBC;2)` zQ5Rajc6DavXW`@0N5}=sc*DcdOvdA54&2xC?C2_1XUY z>Zj>Pc*wi^GyK4741XDVe^DymZ&`lr(|s^RMWLA`c#?R$hCKV^PqcAvoTB5|6|vW^ zZCpqz*i|q?Tg}!JvMP~;*(~WFAMSq^nx8_5gHCgD{MxulONfm(TKaNyJe*@dg@aOl zd>T~-{`mGabSg103*n}Fm*eee`jk4|g&Is{8Km26FaBbDsYDdfiz}5?`xDV4&h>Kn zdPNODab=!+;TGe>voU%iqHPI=xHXy026ByceGmIurnVD-pJ|r@7LL0EZzLtVekkm{ z+aAlOb-DZXG|%gOT~69!!-u6FPWGeqB-Hha3db_bBkI}Zd6#`@fcjw3B76K60`Ut{ z=mr2kZck}({(aKq-b4G%uwyT5H!Q9+^xKRbA?_cEpTywF@8#6aDS~qEF71|H@JTg7) zCrQ(mXK(vqayKG4IP{IazAy`tZjT&mi(f!k0%NTGz$24X;}yx!_lEHOecjIP7b{VN z^CNXz$J#A-<5&WhWbNg+rg4#sjJU=dwYgg4YZ?osUUbyd?8E?hBtW|g`*t`J zJ{n-vJJYH22r)DmX`D|g$;*n3Sa-3q=BokNVocZkq(y@6Yf@YUh=Tibo`mJflD*Tq`0E9a>pEg(6!>g#UgVO7Rtu3QY zPQiKZ;eqb>kWdiY-g*FXRJfR!7`4q(eb{?S*4SGkbp?^fYV1?tM*;vf=$V+>4+Ju` zF2+g1$#@kmCV3!y-hauO?;kXO<_JsL*fcYZs{U!uE}W@17WwgG{cB1}5J=^~EsU-U z&fU!W1fsl6b3R9s2}B%1rPtG~J?%lxfAJ#wH!FSXppI*~=_5ACgrS zgr*1oBP(b;LP^e%5JO6W;yN$`~DZ_=9Qf= z8lzb6JANSLTm!M%%SiJgwzQd;H;&lE_+dP02*>MvRmm7Zc`9b+=Brba>xo>3l{peB zef=HefEl@R>5zf`{*Z#b!Bz}r`m%)rddJn)?zKj`v4#B)^>i_`_B2lF8eR>yTu zPycBY@T3x^5#6ax(Tr>dL9wcf6$cd?Tom25m04VTKeJg|<0|p-*uA#C(yQP^$g=;r z1)A0TaP!N{&W^?;V%2rq_Eu2?=1os0vmgm+rOet|qI}G;iHh)>a57;;aI3;-6W$jQ zDp7KT!?rlC{{8*^!U9Kgew&{nx>Y>_;+|d`h&Muhe4CuW0rh3=ZM49)*Am*`$$H`lnj)t-CL?&gDv5hf`H&e)!Ay*_q@qch$w7AXDpQ51e6%`G?Z+ zQ76c5Ms8tYb;TPRYFWAdiFeHmm6eECA^s#0nXk;kJtn3`KSyf)m@?st-z=Q6rHp%P0bA>MRsW_8*A@*O!=&% z8Abc@jK*89T+93qrQH%HGueKb=e+jw9z>%v8A?cN>qC>>%?t*3zXph~<8${jHy==) z!3Y`{+tBH+-??@Asco(gUJS11cyam^o4|<#Jj@Bm=YaAe#5h*PV{;k5S? zOM=&ywaDOJNKl|!!a<%2+?WUg5Hg!1;MDX5{Q(0qQ)7%US80=78R-SR>3AGzkqNI4 z{k?K}^)NrYS&xcF$&UhK|J=SKftM zFG-uEs>$`xBSKg?XM7t!33~ugaIN~e8uWBmiS!Mollb5cG3!8_E9Wtn(<6Cv6gvlq z)uPF8>GxE%Git!FH)|z%NJ_KS zg7uHKPWvO(Q=1w-u306}Du(JpLJXSMFR?spN`v$qNoQ;8rwnEvRMW-oJ!!emsec%) zt+@WCgppDah1R5k+CG~HkT@mYsKZCnSLM_8*8{?5yC>TvF6XYKfI%rUYqRoynkofY zBSo?$R9?+4o9xsk{*~>AmS`ep{I+SO535_0aFA--_YpicELWE6vS7J?WPd|g&`m8r zIGPNu_k;sXTsgGgVrEXOw~qsGU2_HrG{AAh{S=K)+Fv`|7itLU|43V(hM8?AM#&yV zN=2fm=LPM4YGi-1rL-SU$^)Q<*8M3j>Ui_x5Es*}y>l_UM*h+t3xVoF@i=H(-xxfY zuryd$KyLL`WhD>DE3mnJpd=IY!toAL`T+c~ZXF*YpUy+9$x0^aB?-B((uo3)Hr8e@ z89KNp5Ix;G6DRk<;%2+4#*z@zaP2CZZ>!}QN;DkNNNMiaeSNbd zG-axIrN$FC=11vjUme2sl*S2Jc;Bgt-tE@U1S#s3M#>mtc>B$L?{ML zsabwfQqsu=a*MFSYG^+Qfh?&@L07?${pD*U?biZ*-ATzL>z4-25@37#FZ0vZEF|yF zHv{IL6#F80?)C zi;bim4n_!7k!8jKqd-3Q(=#9WnE+kssg_1vIIR*wC!cw zx;l3UB#&k4d;8>-+I(QIPZ z933C;D71aRJP^QapWLe{a|MMWMuzi2Vcz~rPK$-T?X6QBe{t&Odyh0LUFdB^#eFu* zx0m7VY4`ZOxy!4#M1pxyMG8~Z=mis#81f1c?4C>0+uH|zj)bK~r#G8e$cUl+KIV8* z=#=owDy8jRO_;(r8;qTF&l%+}w*v8x1srgS1%(V zgc8Qs%-!qq5*{^Z>M275{Zvj#ZR~*#Xgk3|XQHqpi>|<#SZfuPm41!xyQMh;MjV7A zeOflRE4q_>w1WO{X6kdG2ZD)7VgdEfwE?l65|>I@q4^+@5odZFiQ2 z?nOPF5)t|<|AK-h8u?Ss%d$!~X;4v!i_^kETn4RIIBO~2JygJDo0z~>wCOgACvVtz zp-J+)kk1p)xSA=yrD~`BvAQ`*0byH@NGSKXH~8H*BnIj&9;>BLYCjFe+v4fm590;` z_9qThp`oGWfCm9a=!r#%!k`kXkpPAl!6HrY1)YG|V<=K&W<~~9LJ8v9RqrWsqdnh4~*&|B6AD$?(Qj@UcI zN#JWN&kOSS$u81Tg-*(pnsq?h(lao0XVTJP#Hz26Zp&JqVTde-=z6yE-#XFIg&ZAHRNvLLjt(812)`4`@&!y-M4yr|K77 z!fsdovggPUo$A9b&_@AWbog3Kj7M&1@gjqoflivRH3tEUeq`c|+s4L*;bM3FExmNl zg5P8QDeRGYISEg;;`I{wynpuXd4M9bb5TxGQIVqg!Q};bkQITS%ebYdVB8ZnW&}Vj z&6K$_@_RZfo8PPSJp2eRFUJnN#fWi+*5i@|-d<7~)gFn)?Pc%~vgk>;eMIBn_;ozq z=Ui4@;oFp2-0oCgPXjuAc4f90AwS8eGo$HWX$Yc(Nz%+{>9o(xV43eE1xLu`InQ1m ziL?R|K}PZI8yU0b-pgfA^wSPSHxtfp&UYeTr?ZFwK0HQE_2ek>zQUcP0H5PS#r`u_#Yl{@U%yngzkD<{K>=iXh$IuKi`mhqx}TZ5IbZ)ZCk&4= zj}3rF#q~pcfr)f6Y9oLAFxsE>!JBs>YwiEm&5-Ky*PnexCuu*l3y18ri}oQ(?=5Gp z;fbpVEe!(!@Iu&f8{s$T7C11KTBdOQOw~{^q0pFjw{|%Y@}HOpf_c!syFo{TqcjNB zrLK*|7&og%|E&cm=GH&n34+bZMUiC_iE4a#C7CIT?UJ(aZv18g;6laIq>?-wy#x) zHKyu93+y$L9&Vn)W(7PN(5=Rx*=uLJ{PbP?A2SfrKo_d$oam=KbiPGcz~wr#tPGj= z%a@b$8pe~p4ML6N(&p+W=UeZMEkb%-*NLhJ4HDJIGnuTWbrn@@R477M!x2BfI3A&< z?gF&gj`-7~?bAr|g)e8}Oht=jPf{M2Q0SzQkP%xmp+3EXo>$xXJ&{|WG(rv#2eA#9 zq=Pq1xGf=F$OADU`9?Y0;k!%OMqq%y6lh$h?%U?8YummyH{WrHx}td3Oq5Mq z)Dl(jANFfukq)#Lj(-!?^(1M8M?|pMUdTHgO`#Z-6EUZ1|Hdc-{{@{6<>LMV+s1dru8bod%7Zl4{*@@`JdgCmI^+@?>*0miJnxve~Nsfp6MN>ek+v zD4@UJ3W~cW*?s@GYoBK^@S8BBv@}TI^MgZ2PYWN}yz6zot|Am{5vu4|33_$Gj}O1B zS>?kcPWD2(*f=@c;)^{`K;;d1l$aEowZbDKz$)5p-Jl@qw?w3S>uc_L!hzp^r7lrtXo`h%_jeLV)Zqc@mW>5(hc^-1$X!AQ`tT+Xp;5 z%uD3k-Ztwfc4mCv&hN00)sO&+dD;Gw2z71yMm4gfvisT`&?s+Q$x8IEadHs7EYaUy zntays_&3$c4Md1fK7YCUI*n@i1gM2GS8welqBfN)6iCK~3i3Fj3J!GfU%z&jk?Z#@ zj=;yk!B0`U-cKm z;NcoyJ7O%QoRE0mUXzmXZATp?l&Z-1r*GV8Wj8yQC{ETE@V(~GuqM^4quVaO#L1w= z`(Yx~lW{XqbH9g+Ly~{?Cx`=mmU5$1z{22>0X^Tx zRBQtMli&A-+E0aV9f+H+cBRjDCh>K69>PI~5X2&1QL5J9@=|JMA+_wyS9_=#;pz-; z`tFfnDFB1)ucje}`>RXJ484d3N5#ks^yc{~TwH{ow9=#p_77RkSB$uTnEo+!QdKqoYpYb9Wqni}M8!R; zeoV@oEIm@qILvNt1HPi>!M!jYVz37TO4$1*YKE%vZSP4f{`#vVK6a_zmAj`{B_>FF zlAYcn4GzegD9P^%P~^GQD$6p(uOx7%9QP+Hn2p!tPnAAU;DjJ9Gu^(isTXK7bXz}o z4XDnJ!fythfCX4xsGiRH=2}IxTs8b;@dfmW z0^CScdz5akoVT}MF&SLE7)VJnoUo(xx<8N&Fh@m2h2=dj_D3Jk=k|NbDluv7=^RzV zN?#iEmNlXq*yi|V-tl9HKR-Wm3zWd`=|wmDxZO#`p+WuNzwxTs=pK$S6PuiE;duj5kSAVSnEhADPjIHZF&-- z75*#%kMs5q&r}&3uU}>+985%HdO1{KFW_?9TdZ`HrngBEG{vhwxyjWDx(24|J}CUOoX7QT~r?+gt zd*+YiU`7-~U@&)0TC6XGcsECO+s9KG8H*> ze1Jt-!+CRBfl5NJ!ELQdvwMBm$0Z++7lL-a69uFiBjb}@0zfwL%#rgu-+TLMSa)sE zx;T!dro_2KPU2#d0Z5ImOvf1l2&>7#3LTM6i%K?>#)lsp|ecAWBRI7LcM z(B<&8zY@s)O2Ww@Wf`0^P0r*v-&EPw?}4smE;oS}l;Yw>6B^(7&RC~x7eXBg8NA6X zZU*XP6cxMba2xCZ1?qKsE(nl~nwFyZdtz8>@z$wB1mdvI0q(y%jBiZ_KUv*b3Ovk} z!LQZ~uMM9wT0ry5avTZa*+3nv)o8|I)WKqSxSy0Lcz)mG;gwgwsA>D*=yO)B#}KB# z!+QkCmHDPNnXm_HLruvWvyoR$fA@Xu)s|G|O0U97eIyeUDS~UE1Teb8FmCw=lCPR6 z%j&OyWn;jKVUs(+0nk9KS&Eb|2-~-k0C-A8`5*xG&g$WyTCLM35n(T%`i1^@K$B;J z1PcTTjHK0|-2yyz-NE-SVQ1W=vGw?UnGrhRgV0<{(tVG(UBTxHZ0ytdLJ^Vol!*2lO!|I}d(oosVlKo}Y*# zE~9I{vVkCDgtT5TTVfG=VF>%(80~k~e55-iZ@6388Knriuz9CtqqnC^sd2f<@aNB` z?cIYXmX>mLtGGQ;on8IYu@`C=fcycxf|fS6e1m3q9Z){$!LNXVT=o*ev>p1+xF`H~u)=_Cz?G`qCbcc&p{eXJ%I9l*S_o+Z z#`^wA>hHn91W)(JbJstjpydb?{N-oOgMGy8%ArvenSOSaT@(T9wEcEW#<5aBJz@QiWawb*JYzJJz6y~=05Z2;OoNC16cg>^Zcf*o7LSE46?p{IwvlzyMx zw{GBbYaILn2T`Bj|CG*k9jpxj(@o}3y>hj|v~!7)+;HdBtD_GS$dr=HO}^)aEj@AC zI9v4>N{n)j1NYnH{!9E3+h3n;Pi8$6PR_kD&O(1JGBy3FV4{kAH&kx6*_r#80B|!A zuPK`&0FBO9al{&4>O#9;Rr9Hz-0z3wz7qFj6?ALB0A5FjaiP%xZ~oy%V|7R0OB~0; zWiLE<-n86vkKbzffNpP22T&l(Qx74=NY%fWSPTDxO&oVKWsrn%FrV=)!L!Lk~{yUdq|WXtrwcr^}gM~iP2cxaMYkpJ0X)83u`hXJ0z1|f5ViP1dJs-@VZd=$lCjnjGX*qCTZ03#{JwpaM>Ki4GG|c_OgT)VK zA7DM_ZNLNq5nqRCC*BHiUP8#abf5mxq!ZJbReq^ZSrZqyIU-DT{V4PG@#l)lM;~np`a6@jq*__^>xU^50+m|5bJW z|8Ncf*4&K9tV?B+Z z13xySvPgOS-Jz z90Rs^-0ayVI2#-InYEH=U^IoGQ+dmZ5NSsN9WXE+UYrF#9&Ft$)=)!bspDlv7lz)A zXA1sGwpuf^F!KLl^pYIrQ4@Tjp>p7ZpF3=6?-jUCzKZ8%bsTE^`^rqV|9KoGXN(1Z ztf}g_ykKoHOk5zN=Ehv04&MG-@a?4b|L>Fr5-6via<*rya0Abd0t_W?GHr)T00c*X zIGJq)0$3}%#mT|dn&B;kALx2{;a`>grm6p6yo2;pPPen-`o;$&rORrEj>@Vkb|;w@ zkA5EtK($obJ9oDVFRlvYvEG~=2gYT)XLXOXX!2@_WSa;NR@A#Wi?-(~!se$U$VsYNy*mt3M}UqFunQV?&y zt#KS=pjV^dwG9%qe_w?i;%{eR803l4t5iJDbFS#9MmEGGTJn?ZUV#xO-SIVWhcICD z34bNQg3+gOwhE;k-#zI$Oee!ugDB$*9QbOVu3lIGR`*BiTtaUR>bCKYDkMp!< zoeIW4W}=I_U>lj1s8bIG?AC(M*Qelcgf>->MW~M4v$wDEk;B4Ov@n7G+|I?p zH!>1~<5z_}-E(+gN$W-3jN;-ajL#fnL%M45>?C-i0_uoWDRY4St1r%3Q zoJPT7&=3O1@JbhRl*{U3`v(Uq!1sap^R(t2v%SD`vTB}pWtCh#b#j_;$RmY1bXq#v zD~29{R^&_rgDd+RzRxsEvKkx7^vUNkQ&XOOk)VY@a)4a2GlL%i3dJK}C@ln|gZiF9 zZ~0KK5i30rbUkl@%lG&SFMd3I1N4D;wTOV?Tx@V_ZyO>&dHbqrDq2#NC587TV9VK; z3Uy518^wG}36j&a%_x#blMDN_y)jBbH>BG>I8R+xX%_g4u#};b6>m4gk`7ZBt@iVm zc5#5AG7B}4zUO~`XP|_sS+Xbz6qw(EN_S}roe*@sio^VW;#Jz2VaT0+k{KR|A=R9} zffr5E`f{3pK#haSUS^940^9n+rX`I0TJaW&{;nGR+|$J@3|ycBoan+@Z*(sEg*fdG z{57`e(e{UMukc@7?NyCNS}0Y~@45%T5xcy6qcs%;aAP!dw2wZTdVC}#+gS}Y39=?2 zV6C2AGdgtCdwLd-NqCEiZ9YD;e{7S`(&my7SB(fW{~RO2X#3aHWHSRgKZOO6X?}#b zUq8VLk!0iH@Rwth2KsP+2s{z7u=eoxM#0%PS6SzI+luii2~oh?ws&@afC8AGpWn{0 z+^@Nr1+YqIXHF{Wx@h^8x)+kPFV3mS_N`1p+U}7sSLgarARnyFF@XOA(iBeJMU#_* zV+L(+o8Tif`AAps$`&P-n6^B`=cz62m~I7y~3<4 z1YBd<*>BnHKWJj(gz5!YU$IKdNh1*vlZa|Q_fI>_`fFL3m8`4tIumF~dtc>4e8B;g zBBnt@6GMz>ndh3HtN}$xO~qS&BFwlz!sB1^I_uVKpKVlW@R2BVd1f<1i zS0TcX0Y)roN#9L;d>pk9t=z@OGQc&ze_aQYW;Um>R902OVhu#}IbPpVRKbqC3pQF+ zm0e8+9{Zbf5oQ1qe?0QMq?iO-23*qKzJNxYG;5)wI9Q50DFuo?P)0d)0I={Om-X=p z4NN~B_7GlVH8Ve#5vGasbHOJ#(G#Dw1!)oG&D*!;e(TJo`}H3`S)eIhx>T?TKfUQ| z@qb>7?dX1;RiXs+5g-XwLq+Bk#Vz zzo((CVfqZ&+{6j+C<)DSy<|Z~i4s@sgYpUR(|>|$>}kn)<-F{+b1Lh&?w|hHq5Zl_ z6r8H@m+pcc%efe|-qqs;+PvVx$q>*yiLZ_ytF@eJ;Q;RAcFaazG87qA*Zj9XPdi78 zN$l<0SMcz*lcWd`JefXw=F*Fj2pC3kI^O(i0a}yTI1~Xa`s5!>%rQQTLaeQ=fjU=> zA8P*o)!F$uNo6?L*)!TY;#63oAez$v>2zbheb<)Lxsx+k(~=SVmz)Bm-BN*OHpWlX z^_i-{ioT6=9d~wqgBA87I6_HMQk{v3X#jLaXuGeIY$;AhqV;s89x!tr&vH>q5||7)m0db zmX4M3NkG8J`1l(Q3WhjYIPy)@Gi z+yQaplM9BEv$G*+KdQf!nVSopPXu@&O~h+WMZ)MWG&VN26{x~e1?MERS>7n>3)?Kz z7qVHqD85NZeQ0W+=HOS%Y>45oKY4q6IDsvU;6dAxA$l0#1P*eMTFLY``1zItN|9$vhiX0&7e85kW<|GY>3zlB2H zLKF3`mn3;*p5uJ{WI{{BubBO}bg|J7AQ%89HASgJfnwNZ3FXZ@7scY!g<5AqfOp!e z;=UCLU^6r-Pv*jFZuNrJmR&4UQy0+0a3;=HE z3l_QoNQ)k|-(Jjmb|@kvA*o(u)f^L}iufexN0??%-%P08dbLrC6*8=!Y^bt5JGqx% z#0m-SGSY3bCncY&3QVz-i%m!XkBPBE{GMSz0XVTjQtLzx^d72}b|KDadxDAxk6ejp z=VBRFIT4#%1IfoD2f9Fu`ZY~x@a{SQ%aQ5L89QuX;kHG7PmLkAwHf+`>g{P5npg(a z{v~y4?-0;IqaaZ%D0YAzcf$qc&O=dFTmwLa>MkB!R-LD{GT7zj_4ekA~|Zl=BTWC zzX_{h&hAz<*kIMt|M5^ae=^3(`}N6kau9^u20DpMj8H%;$$n>70S})L0m5JD=m&Kq z-PqV{%g&|+86*0J3Vn+eiG~$GsmQqO*B;IXh;nj{c=!oa=VHlL-@#VZPhulMib|DI zl`XJx17Oz9d?$F(yNAU6U+ok;5vC+)0r>Iu#Ss}YJ`Yq=7R1(t1+;rl*KaA^`2pme zMksem2A$ZCzu36ge20CPDo%hx#LeCx6X44A*41wSXOhPg41Qd9JpF6`C`O{I&EFTd z2iz%|-9Dl$9yVvmh_Dc8bWl@J2{I6XFe@V?+cu~}4Ni(ir@UlsflT{-iH?sBxy2l_ zyR{**Dq;rhb2vz<&?0tv;+H~R8(JaGXD1=AYKiP5O2U6{^YPU&@2y={Gh&YM@;)E1Y|jJb93S%rex~pg0kK; z`Ra$miM5DlJEKp`jo&x^w-x{vMPhESScW2HWb0V>#=sc~5OQOWL!`L@3^JC!$*7Cq zwpm2!qJHG8wY&E4>mMB*{T%;pQA0;nI}{X46^HLih7^N?jd&S>AJJGOC%UN{FAd-k z3=Y`6U_;Kw99L0Q4RtVg_v`Qd-503#?A9YUEI887v7Z2(9S#f$!9INPT1TN#;pR$eC6w+_+KNfCEn#6f00j-C21qNsz8g5=L! z-&^X@e}h_BB)XY>jgF=UT@h^Z|N0?>WMBf4iS9{apsbUT8=io%Y~W?lvJXkcfBQs6gx;A)+@5_+L;C4j5Y9=`%P(@!gXQgE6 z;^86hdNepFxo>@@CqHm#t*hI)WZkK+yAT$}xwrQ6(1rJhsp(5DfnP!gl|mfMDzP#l z3L$A!VqYMu)@==c<1T-+(uiuw(&H)LdDA>EtKdk#GkvKqC?Ytl_5_@HJc#*LvX*VXrTIh;=8vtZ(muco6}7Z(`#33&aR@|rQs_N;{97d8Y~vCu3&x#&yyNyMNL zKOHp|LRrM+MU&vj&TKP8M^8Rs0em3@rS~hf1dWpweWqU!9`SYX1L{{H@NroxT6vCf z7>{nzv`z_mExB3NSs-=*~pl)*qJET)=rGb;eB z=Y9A+@ui3I2>g%<w0}9ab;~CoAL=ga@*j$)}dp!dxzKK>w4WK zaT#qL>M?`eXAIzreIg&K$}>Z$PmOZ3aX6fA$3?&G)*A?Qn-=q^t5#I=QvC5j%U$O9w2$M@ME>9H}&pFZ) z#kicW5n#4BaBap2VHBl-fzolicKb806~-qLJ!x+E=>+6>3b}K(tSpa4KK}_!OfzQu zBw?tRdcNzGBVnrNa()9(auKwqM*tqF8qP;?Ni=3K=dO{=+37+i#_C<+1@D2Hi%ZV) z{CmUPK&kH7gm1;W1rG0-39|Y3lMQqy1_drRPp@CR#W#6TP(U9y_-TA&qVjOTGw%ai z-uHd^Dz2%1iz)^(jJ;obt{W#F=YyrqMF!2TDpeZzU@4vVkKq&)hqwQv-d4=3IhECk znVaWxD5xD^3UG7quyn9FJuJM9sH0QYO)QnxTP!GHn!crklH@Ob8fP?(+Pe=+FG=S4 zla{FZRwc7fE^LyQt#VDsQ#KTX((0XdvIIfLkDjJ`j|u!b%G{_L3vWZQ+4o5mvqihx z`|oo4v%fPXFue=2sS*0>>7^Q@uBn$e$RteXGL(`o+JM@pFpBF zaAP*iIpe0eIZAUQ z2U&s+-Xifl|@zwCy?C$mp3iUHSkBoy|g4ezoK+GtaSMhl`l9`>EdKg6%TF1y$XDl#?^1B?lEk%maE+ygdgKC#JJbW{sabdlyt5DQu ze`8Zpilc<<7knW z&C+O7{zdl1|FWcoG+_4JgB zkL!mr{qu3I$u$N5hWY*Y3t9XixR!( zj&7#13~koo_QSnj2LsDM!gKKCc|LY-i`DnuE&L6hlM~7{Mh)i46|+_arTMDH&?@=y z*u^v)sE;9g1;oq3LrOp0fFepWhKq~iWzZr;lPyMro-`)q$Y{rHT+H{Pv$F{eZnusc z7DZ1kd^GbJ%85cFmS^ELs=iCfftuCxiwn&BqMtIa<nzGV_f_+SFnt#n%jc3Y_$5$offo0$-4wc;K?-hcA!};6jVo5API9hRJOwZBYA<_DF-4t6@&s0fbklv$czsarL9q)J$2H&!P_u6g_Z z@&37(`R0i+3PqnxNB>jCn(LU zVQ{g<030@Y#rEWsy7!&EZ_+T`fPl%EOv1N~Kw@{xL49cUKujhDJTh%D&Gfe!`Ev)oZY%xdHQpV+MyFa|`;c5mq+sG|k2c4Rq4|NA^7R4AY~_X% z#v-K6x#Pfuyt(7PI&P?2lc&;YWv+z0f(VluiIMKq__E?uCb$nN284@r6R&VI9z5gN z&%HNmPDpF5hob{4??hnr1qb2nEAofwYk0$uLs;g5D+uy=6~!$-RU7|e3;01^FzG-z zI%q9S(K!Wy+*vhq%Y}m$RJV>!6AwP z(*7Yk_Hd3wtDl^-=I(Z!(kuc(fLkQALmXVQ%j>SBgg9zbUgfMmq70sRdEouAEDK2TS$;zkcl>SjA41-$lu zUN*1y(Wt{g;yM;EEOS8{7wZTrHzKm=k_ThSPCb1d{Jes?hVm`N@s;ieLBZj@TWNiSNxBf!|KISM4Dt!cYIdJd)y57cuv3Q@wRuW3{7Q6-KEs4$+GNEMuXmk!fb3XVy5 zn;_-l78Imok)_o^$4(gwfIA!^BaJyt;VQ8J;=JD31!3jjK8SpJr^Kq1DhYtdp&$2H z{T+@GRv?Fis-Bd*_A;i?tjR~iyGCEe=hw5L;o-!!3S=4T9zPmwic)YWrh}6(Df(u5 z9{@UqPnaS_&SG= za@;NkmQkvDRC~^8%|oxB+EK4B?$%Vy4{jBi0szy6?iy)LK8MjuavEH~^sF~FT4Y72 z%_MNgb|6W;hkB;^*@yJ9($1ocbWUE*W;K#mWr98!g9lv;nlAj26ExE_mkl5bQw#o7|gm^TH*X#RGIjCv5 zhm1cLi%OdoE<(UNc%C(hKqOVHtQLk+ju?j*hlXxTKyHa_Y|~$sG&`#)8+<`9H1Z!c zXv+80@Cca{&CHZF(<}vh8l(my@beP2X9g;;4sIHzW?@;0l4a|pNf+^7n7PdvHd*kY!+}*a(drD9?Cyjym%l^}lrqfl0<3GEeifvHJ(3Hqsw18oR@;+mF zKmgUtn=BRW4bR@)qVc~5adg9JyF)9@`n-517ziHVauvI$T0hv@E=x+>;YP<bWWi!Imy)WZHK8P zw&Ey_zr=f?;S;5UK5r`hU(iv)y&zBjNAB6b8*1^g8;B5}=`NfJ1DSqo3w*^vV*<~B z;@y0DNAJ<296+t7L$%1CpEPQm0@LIa^kEfvp@AkXZOz&SYhuU3D_>}X!9A@SL=j*7 z*!2;>&dG{=vx}gS9Id}jb5iI#{;d9^M+`U*pPCo6Y%1;HKmic;JK7cj_dRjJwROQz z%ot@Uorj09qR)BTk^%foLuX7y<#e8+bW1VYa5zYV!97=_8%`>59|`j<@K*@JrO$S+;}-H(pvE4cZ2yYtb- ztIO1^EdKjMgkX1V{!ERKP=J?Z^x^oh0^jYU_VNygnw7(|Oek?|5=M+78NkJwicZ3| zGz@4!h)dtXIMTXou*wWfU&4ux+Gs&Xb2_S*0-07F)HQ3|y8Qt`0_^zigz=zD{as_! zafL2Odfl})PR>D3O#6y8%iIck`bF(6x1(ZpdLq7{WU!cn2a$cK^)>uiiFJAxCtxU@ z2)w|>=JZtSL2+J@_F{hf8p{on?Mw)dN+i9MASljJmV*nk!H~7Jcu<^Y5eMOCZR~8i zY^xEu)uyQ;DIQg3RYt<7nSI60Z75X7+&jEWJ<6uWNJ2~^XFsM)-&-#+sR)syCzY=G zR(BZXiOXK+M^h50FuDNH@Up&+CgvN=@!Wt~7B_x0vbR+I)HC845@ZL;0~UIcg$y5q+6*IZ-L)K&*HKv=EtqB9-eYn`m39 zG>e)fyAHeNwCHL`*gZ=B(zRN#y3n(&uD>#feuKJ79ho}?4{iZm zk~em&@aIqK428gZVamBCdw!rYe&a3hYS?&QC2lU`yYo^ccqi4ht_GP`q z-R@Xq%hKccwSRNM+;Q=h?7ZhorUjO?_Qu^N+bD`KxLm3h|Qd9(Q!C(+bx26IVt)@D6(x z6xjX5A1rSB@j#WitYkj6Kob(P(uE^u%5o#=? zmD!X+_QvjI{lQROx(M45oDFYeinN458^YXcp-y$Lm2y`vM(2s0btBsW@}WXB7gttgHf zW=qN+|9FEAIecY&=PrmvhRZ;TY$7QO2=eRn4e4H~TA^7w(Zi@fjvG3LT3HcUsTTN>%5CW4 zqOG7LCObS|WhvKc0a02OXUR9YTKiikxjN=jV`Afai4TBeiYPZdy{?~aEzB~LvW@0v zot!IrvnSy%XVEKqwha7lVuK&ZY2zPBz0Qjh!ejkUD24o0`(kevE;k{SyxXR4;ayA5@x86^aX2;y1{OieS{P=C>zsgF!5Lkn$~sl^|5! zUx*xY!#?&5GwXXJNw^T%Yah)rbA4DsQc6C1DFU@(lGK|0Xv1x?aIjL8%n!4@BZQRP zc~iTy4xXTbnTstQ!19+~Qc?e1sK^ST?gg}Tv&MJjYrHbx7hwER?#r3ri!feUfI8g0 zJ>FjknNR3p!X7xagGw0&j8IM(~rfX6L`rRTLvEOH4b~ryE^sYOqGwljg*|Nd%!| zdI2G%P(+**@b>a?^Mjp>RP+AP$q5hMb^VF&EHX)38#6o6tlyUFO3^>XE{!bAk~Onf z!4n(Yrl8v9Nj#KyM2v>%nzBBg)+3h2C15%^wO}9THq!ZPeZS@cIMX@j?-~j%d4<@x zLmh>g*;ce2H%n_SU-{3#_TNL+f56`VbaaaQe~2Lz8)GkW?l1XkrknpU?Tcdyu;1A~x3>v#ZdtY7zM$!rH;_PNs%|l20W@O6MEh?a( zC$09p^fd-2jQ@Ftew~^p{D5LO0Ee+r13*?q8ZiuYLny{pUySj!FB9cDmsRC5w}}V0 znLV}mgeCQB^cU0KXAYX;%;LBuB}WkX*%lzyHG6wjfI>f_aHr8SkcIUvkVo36()HeD z@d7m+OewF0eF!9Angv4MdTzUcL>dH`Ai!?SltK{<)=-nbKUQ5{s}Ar_Hha@S9fj)W zRVDlZ2Ph0qoS>Zv8E2XyupjlY5RVMf*}S~aVl+)42YO2;b=}v({2X~B-{SAven8#| zoE!X&oxaH=FNTDaWr)gZWG%h3fd)tc@1maeIAT8Ef)lMDPhD2#swvYgzOnQ zjW!$8&K+;oVTPqYXqC;rWZV6%B$*&)kG4&LqmVG7ZCDC&?F!}Ff`XI2pmqRtp>{T4 zIrLnFYR(i)W*{%E%Y*dmI&KBOYX{zT%A0bVqMuQp3k%r$WGIcB9UDxcE6OP`0)%vp z<>qLfQ$<|q%%E4ss= zhXTv?$A)L5Kcr~t+O(^zt;f80zxG-@ytl#;(UsfE1-b%2g|$_dIPMHte?66Of8x(I zT7S5_foTIpI`VN1#vH)p;SY>cAClHnaDtc4ui3Q( z!It|o5*6mhcw1u5MDU*cZk&!8zzi26c82V??rV7SiAtMZi&6n7l$ps}BSD}`eeY9Y zi2h-<=PomwH?p8ANM)<2SjbS#&{y!&SupPyP?X;Y*uyuY9DznwTQ-A2zF!w=^4NdD zOu(#+&iDX8&68g+2?#x}7ts$X5)@=JV+SI6D~H3cB)h>^@wzC?yt4Ffg3;~CR#zvS zw!cF>c=EB0pKd-q?*i{xZN6F|184~HEFdDV%~#MxYa2(OU?m9YG<75h?LPQw8aD+| zKYsd`O}6ck z00HbIi_3ClW(~!M^fF^|gjczddIn}iS>zqV9pWF^eai$vMml~*YPGsj8$n4gZ^CLm zNfV6Q@bporK(_`)K};yBUE5nFRaJGS%1B5+n15udg=pWq>*eJ`$%62pMbFd%emhl^ zM^*LSN>kJzJb-v^Z+_4UIs_&M5O8d2OuTmcNS$lQWpB>7)|g1j)>YWDm_iDQIJAJ-)&*3e_RO3&Z@hqS0v!rdGbb)# zVS|L0!-#-GD*V=?I@Os4Q`cj~U3mb(Q8{Jo$3Ix>J9sgenZhe-^uUtY@wj^a9KK?= z67+_Sjd3xXkGz4uaU~mJ51QcNSq0!tE-RTAwA=frGyCe)QS;|CLSB94!}jn4V!uL& zDbTc>Hml=HN9NhGMnDAsew{b2l}legam~`M&N@vd_-C9vX+7dK^$sIlxMZUQal52! zQ$FMFAcDe_fah9(FgvZ>2CyS`bcroX+Za0d+64$FK)c_X9s{u!_wqcO>AZPb?lItR zYb@h_q_4X-b%AnI%^SPYRbxuAM&#JaXMZg@4HDF5t`K*R_jJMii%~fbTDGG>1iNE# z!QSo~8*_mJ#W8)E;3=MWx9zU=zIriMrMq4iB)g%s4LJ^=EJ`hnz$(aQ`W1) zzxx+;@SNes73y#dXde#lXYAGlS6a+h0WEPYCIM-xyua>8%hNkUEc*u}=9|oq{2eM0 z0_ylr(p9tH2Nx^=?L-uai<@K7onL{A3ktoSUR=wMn>_8|0PmEz?_)s9$M2Vead&v+ z^>NYPxh4XPP|~%l2+%PA*X~fAqCOM0w#u%jZ<8v}^?J-~u5ubUF#7t*z@6eOybVG1 zQDg%cO{-N@nMFfBYEpnzHb`+5kWKG#ePF;Q{BBuC+h z>_a7}&MKmLNAwT2wDcT<9csQ_(CL#6Ow73(Emz3EVBJ0oLDWY8F7qi06S(lV#V#5??d48a6%xOAczNXcfkcdrzmfo7_9(srMlX4P=x^E@t22@ z8C}VDVyP5`$^Ul57|#8F5fk*x|0@ymf4)wMvf`#P@x3{(T{pe8sC|;9#w*{uess12 zytozb-da-r(c9R+tto2G1EM5)!n-R34`aBq&)1gxhZ>rH;-ZPf`g4qW00g7smgT17Cl6)+A~fMwQF@D$EYlk_rNk z^KX&1BJk30QS$3Q%upWtEwKgj6Sb`UjKHTB)%ZNGL?!9I?F>R|A93a)+tO?H`y5M% z5O9yj^w1CUN-OvMUVznE&me-&Ln#)|vl#)U(8&5xdhR$(7^@s;%(JGi*Knt5dqrqi zBl3284dBZ~nu~WMbeto;*=m~OF0A&;(>Z!rI$_AMbLvBGjn>1*`xjegn^`CKWsXzk z)D5gERgOvN^0W^&3uHef)O%@Vktq^%pvtK;u`^ST$ZmbStL*P%rhlZW=;~f9cwJ4i z*x*bYCY;_D(MqtcxzCF&QP)g%+!1DeN5kLdS_ED}@!oKanYN?hD{Y)2xYGXXGw0c~ zHVV!sq&lup6*^PD$WtJDW^K~GumQH1`eOYxe_yptZ9X9qeaND&aZI)ryNarAnmP>$ zHm5OIvsppjh7o_5|DgU0O#5d|4zX0R=66~gp_J&O5k4yiWIeD25ek7I`vM)`}KzU<19)k{Bx48fu{RU3Q5{WxDYrJEj z33+d83`j`!yp`qSuVuKbDs<*v`(#k*1mdYt+HRVoK;;UI%%Or07i9nL##*^bcsR*O zry&xVJ!VouL}%UEqlZBgFi-d-jb-%hFbbyB*ZY~%#B(ieJ!VH5e3em{h6Yu8pQ&o# zp?qH258fJYZyGp0+;|rJ%TC^WgPPx2brgQIh2d^Gn44Twhm%`ok5{Qqk_JPzR_l(V z4cTYu(NFHrDb#ojbg{%W@0K?aNecKi*pY;|dVHD?Y4&&lLm-bJ6^u=)2TdFvbullP z*ByQd*d6XXmDu5`dyMTrBBmo-MSV^`ak;J#2)dx;BO$Cq#J5hNB!pN1YazKc5((E& zgUAUg%${?uk@qznj*8Fp8BZkd@7}*r#BX$PK8*7=YHl$yzWqnUWu~UMymW}A@UK6n zs)pX7C>C@^{IgaoUoumW^XN!OBjd zU>xt#E&0#_v|8x_SX*o65j%6srs>BR-`I%}&{M7voP|~!^V?K*E;7~qe;_T3#QWnE z_(%tf8^`zJI;;vBPZkUG=Y-(H7;9)>;Mqks6GYi4bt>~?q?%mjWON8FSc2i;(^SK0 zOMg;<#}F;J5pjE2iImHJAh8^+M;h(@Fx$v5vX{eeh{&eLMegCoR({6zrV;CKXA{$$ z`NsG`4#BdMItyEiH(H2HvBe=|s}|IZ<%VeWie9NovU%-IYiW5;%9!;(y(+Qc$KEIQ zW<{&*NfDx1X)`{1*?Dm_g(}U-S@d|8YD!ngC%jo2W=0~0o78nhT! zhRN<~t^KrE@;*<sT~&X=+u|54Cc-6a zoMY%uaxZ0GxT!@x@QPZTpk?`3oy1DPNG$8y^OZwgN81mWUp2pZP#!R3E*WiS;>V!) zRj9kuaw;|MJ>#%{!B#PZzAE&1!lNR3X%zaN8?1rGWY#0qf{BG_a6E9)1B3BT*w{j$RbftC2XazvW;TQBQsPIn+E3y8+87$p4eV`=?`aLwZ1DrHNU z_|H>B#0xyn!y-Q}#YK+NarQTc-QRvqE_Sf52N~Lb>e?T_0NwIH& z4=A4UQwr_4;#9KtA+{lEOAPE{&^H4$-FZSK2$hD-NP1-;8}rge=cVVvjrfwx0+6E_Kv`8AYe0^!8@lcLDp?-QG7ME|VOL zgv4pUO4c}`2;einS&7-^qb&6vH!ffzS#~9UDfm*rKP+Jr(I%dY!}Z=^AY7&wo{>}5 zF-o{B#nYBkNEqg(Bx8^2E5E{;I6>Ci}rwD?tn0&C_3OOcsAUgi7W-X8NS+15~=ApKT~U0nV^ zrBKTH_rcgtF@ArwbhJsNe4)Bbc~;S?B-SUp6C72M?Y@X4hc1aX`CHkA%0NNq)N&QQ zQVLFq>of>|ZKo>LBU!s4=?+`iw*J*=)EpXA$^wAGiNB%FUyb;%(SF5G;VGakO6 PToS7C@UOCak3;_p)5eT* literal 0 HcmV?d00001 diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index f9b81b75e..b27e75f69 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -62,6 +62,9 @@ authenticate with the server. An API key is no longer required, rattler-build can manage the complete authentication workflow for you. You only have to set up a specific repository and workflow under "Trusted Publishers" on prefix.dev. +![Trusted Publisher](assets/trusted_publisher.png) + + Here you can find an example GitHub Actions workflow ```yaml From 5351885a6643d555ade97d46757ac20d298bbeda Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 14:46:59 +0100 Subject: [PATCH 8/9] Add title --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index b27e75f69..4f831559d 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -67,7 +67,7 @@ You only have to set up a specific repository and workflow under "Trusted Publis Here you can find an example GitHub Actions workflow -```yaml +```yaml title="build.yml" permissions: contents: read id-token: write From 73c89bee94f8663d308d2e6cb9fb7e5b04dc3511 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Thu, 14 Nov 2024 14:47:49 +0100 Subject: [PATCH 9/9] Extend title --- docs/authentication_and_upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication_and_upload.md b/docs/authentication_and_upload.md index 4f831559d..f07dfbd7f 100644 --- a/docs/authentication_and_upload.md +++ b/docs/authentication_and_upload.md @@ -67,7 +67,7 @@ You only have to set up a specific repository and workflow under "Trusted Publis Here you can find an example GitHub Actions workflow -```yaml title="build.yml" +```yaml title=".github/workflows/build.yml" permissions: contents: read id-token: write