From 82640c456e439dbec444fd0cdff5bc08b7f99c69 Mon Sep 17 00:00:00 2001 From: Xuesong Date: Wed, 1 May 2024 23:02:13 +0800 Subject: [PATCH 1/5] fix(autoupdate): Copy `PSCustomObject`-type properties within `autoupdate` to prevent reference changes (#5934) --- CHANGELOG.md | 6 ++++++ lib/autoupdate.ps1 | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6e1f79248..131b0d3391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [Unreleased](https://github.com/ScoopInstaller/Scoop/compare/master...develop) + +### Bug Fixes + +- **autoupdate:** Copy `PSCustomObject`-type properties within `autoupdate` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934)) + ## [v0.4.1](https://github.com/ScoopInstaller/Scoop/compare/v0.4.0...v0.4.1) - 2024-04-25 ### Bug Fixes diff --git a/lib/autoupdate.ps1 b/lib/autoupdate.ps1 index bd24e04015..705c767451 100644 --- a/lib/autoupdate.ps1 +++ b/lib/autoupdate.ps1 @@ -365,7 +365,7 @@ function Update-ManifestProperty { } } elseif ($Manifest.$currentProperty -and $Manifest.autoupdate.$currentProperty) { # Update other property (global) - $autoupdateProperty = $Manifest.autoupdate.$currentProperty + $autoupdateProperty = $Manifest.autoupdate.$currentProperty.PSObject.Copy() $newValue = substitute $autoupdateProperty $Substitutions if (($autoupdateProperty.GetType().Name -eq 'Object[]') -and ($autoupdateProperty.Length -eq 1)) { # Make sure it's an array From d9c5c9028581150850e7051f90353399a85c75b4 Mon Sep 17 00:00:00 2001 From: Inseo Lee Date: Mon, 6 May 2024 11:04:40 +0900 Subject: [PATCH 2/5] fix(system): Fix argument passing to `Split-PathLikeEnvVar()` in deprecated `strip_path()` (#5937) Co-authored-by: Hsiao-nan Cheung --- CHANGELOG.md | 1 + lib/system.ps1 | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 131b0d3391..ccf1140207 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Bug Fixes - **autoupdate:** Copy `PSCustomObject`-type properties within `autoupdate` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934)) +- **system:** Fix argument passing to `Split-PathLikeEnvVar()` in deprecated `strip_path()` ([#5937](https://github.com/ScoopInstaller/Scoop/issues/5937)) ## [v0.4.1](https://github.com/ScoopInstaller/Scoop/compare/v0.4.0...v0.4.1) - 2024-04-25 diff --git a/lib/system.ps1 b/lib/system.ps1 index affe2c5450..692cb40275 100644 --- a/lib/system.ps1 +++ b/lib/system.ps1 @@ -162,7 +162,7 @@ function env($name, $global, $val) { function strip_path($orig_path, $dir) { Show-DeprecatedWarning $MyInvocation 'Split-PathLikeEnvVar' - Split-PathLikeEnvVar -Name $dir -Path $orig_path + Split-PathLikeEnvVar -Pattern @($dir) -Path $orig_path } function add_first_in_path($dir, $global) { From e324fa4c5fce484da337061165d561829c0a3385 Mon Sep 17 00:00:00 2001 From: Hsiao-nan Cheung Date: Mon, 13 May 2024 18:44:00 +0800 Subject: [PATCH 3/5] fix(core): Fix "Invoke-ExternalCommand" quoting rules (#5945) --- CHANGELOG.md | 1 + lib/core.ps1 | 40 +++++++++++---------- lib/decompress.ps1 | 2 +- test/Scoop-Decompress.Tests.ps1 | 47 ++++++++++++++++++++++--- test/Scoop-TestLib.ps1 | 4 +-- test/fixtures/decompress/TestCases.zip | Bin 499953 -> 532697 bytes 6 files changed, 68 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccf1140207..28313f7c3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - **autoupdate:** Copy `PSCustomObject`-type properties within `autoupdate` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934)) - **system:** Fix argument passing to `Split-PathLikeEnvVar()` in deprecated `strip_path()` ([#5937](https://github.com/ScoopInstaller/Scoop/issues/5937)) +- **core:** Fix "Invoke-ExternalCommand" quoting rules ([#5945](https://github.com/ScoopInstaller/Scoop/issues/5945)) ## [v0.4.1](https://github.com/ScoopInstaller/Scoop/compare/v0.4.0...v0.4.1) - 2024-04-25 diff --git a/lib/core.ps1 b/lib/core.ps1 index 1ac304ded5..b7c3d7e128 100644 --- a/lib/core.ps1 +++ b/lib/core.ps1 @@ -746,31 +746,35 @@ function Invoke-ExternalCommand { $Process.StartInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden } if ($ArgumentList.Length -gt 0) { - $ArgumentList = $ArgumentList | ForEach-Object { [regex]::Split($_.Replace('"', ''), '(?<=(?uYY+njC_?GSPGMge7#cTpwB$Ku9R3}e_{(>P`BjbLun1S5 z=CcCt=GS-scaqAUmbY~NUQtbzR%6Xsx6is1JZU*_X41kk!8*o|OjehS=Y-6jVdP;` zAog7UrueLqod?9(7#KN&7}&WP85otB85vn)83Y&@cpBz$F}}8$ewTp(fp>*>0fl!0 zg?9smcLarZ1%-D8wRZlQ~JT3fMt&7@DM;?_czPYMmjq*svLyuI< zSrn}J&Z8?=O)V-asDI4X@vB=Zno@ye2C}N z(EK9|&wCzvFiQFVJKO@2AS|#rgmbf2qN87c43bLheU2ATz7D+TVi3rl7R|9|KHfai9r@ZbJTl~=8o z@m#kmi%{gsPMCicz-sE6l@G`d2*Q$)*}j(mVqeYY!@sF!Hetp^i`gL}%H#hjUvlar z*^Eib_g^E}Ncq;RUGpHqoF<@+FbB`(ujcdp&)Dz({rw;KtJlw{XO^iAE>WI@-?_R} zq79m=)5@~uvuez#N(8n%rL|NiAao5~?#9g6~_)0y~-<{-V;w!DT{hHtX{CT75 z$fjPruS1f!Yhk_kil5n9^*8VaB^FbOO&xe25MPnpwtxLdZaw7`cO?ru5>j74^Jk3G zC1^&KdhME25-<^Q8KqGmVkjlXQB`7gPXiM-KV}$)`uGw^lJ_3k?-uk0mG*7(K}P*>@S!7Rs38>A7h9eE`>pb##NSz}4Da*> zc)fO({?0>(=zU_2#i={{TdlHfUizB;R=Ye*e|J&*kX(^=_qV#0LjAp}KdK*Es@~Je z<~pc^S;Lw)?pty1emf0!U7cR<#Q1&wP(Qub$A1z6RflZn!kT{oB-H0Rw_D{xkKZNd zRqmao&2@T9ITCa9{SPHM5*x~#iCGq1Bs>aYmV4Mspe9A_%EbOwpKLRvf&NyD?7%aP zNXF}+8uZRJd#aK^hNvA)pRc5O#Zs}j|4^$<6>IasiJ^I3d@f~_AQjUJ$-G8qX&Tcx$8$P+_p!cL)gnp}1#*RK#tof-f z4e&nO1$|DXJ)UeB?)#mvb(YZDQ#h%kj*Y1k1iTCBa-}mJ(+}!J0if{hWVx+Xoneue z1=wcbTLTI|A=d}kZUo{<#qOJ%&Y!QpqxVi~RX0?+1o>u*!v)@p3C8q3ZI%$7rhfzv1tzk}EJ2ROJ)tF9jdr9|q>Gf~zrT%f+c2>RLdaBU&j-Ju{ zeF=YO>&Jy!QRO>6A#wMhZBV^1TYpB9;?2Q;@U>xpU^!E`+q(vq}p_U zr)E#kt5h*cBco^ei3HE9H&R~BA}0Dq3Boq2NwcIF!n)L*sOI%oCG}$Oo8q&{@%|I~ zoOq{JoI1iYbQxxbaOxI{7xkj+`t*sw()*@7%uu@OjANjuUS!9RqK4)z$QD3i>L~G8n%AGK)QeaN0?sy$E^RTVYwNU{0x5s;#+t&Z>)n^z+i4za5i zpycV)1l~dyk+-2w?@dU~KsZX;5$a-QU6q*e-h=CIh(IEY3$gFl@g5he$;l+YSuy&M zE@+nqETmd#*HV-5e1G82s|iE!pCKmuq6F<3EQXd6erKK8NH72f?#=f7C~~B>4o9}X zve`6{VRm>vk|c0*>=rf+N#^_kuc|%yG;rN>Ip^-{c!^``46{Z*u(^s;H_X-|5@0ju z(yxken27;Qfd;2-!!2R<8-%M4p)2l$|Ad+>sRNtz0T;ak9e-Anmx@R~8{c}qdrZ=Y z#yrcNN?w?KG7qJasKX-u2vaCZ%2}9QK&qNCG^s;bLm3x^q8-2W3GD0wPV7(cFqG3= zY_QS5gue~3BS=SwS~IqQ`R=;esE66b<}kQqzC0!z`!Z!*B#z0%K424TIQG_5H8GK6 zJ59KskK`nXeSg9V@YZm2Au$*R76Q?!wEz0Rr1t^9z!0HkWK^u!2sne z&G6+LfdK@(=fuQas8byrR7S>9VfJl~dnU|k5lA~@pM}{HgraUJ&EeGM0*qq18soF2 zgz|L;*z#G#AYyaA8&3)R_ppTmJ!1Uq2DE~HplDRGWXlg>cWFef5Q^}g%YtxoH!3s6R zsbZoUWq%@C`MlI5LbQTyB_VPP=HNdf;91@i2q`0sQlW`BQP}|LmMTI z6yHmU<4>rWBJnBG1B}Y}-%arewzH}GU66}b%J6hyRe!1+sSvDRpy*l9AmyU?o3hKS=JV8m z6@R7rv(h8=8Dd92N_|X^!Bh`DK1;oa2Nu=TVJq*%L?S;%j$J~h0--QEV3bZKRr`QD z^^BV@ELbG4&|qrMnGb}T-^)kpZQeHJEXCeLOg(7lLL(Gr3-7|ZMA_A(JrH7d=AvPW zr?wZ<;C9IqsN{5rgv4AsxaDf(((^(slz-7Ebz#s_C1^TocLF(|QR+qtCIbX2va^Y~ zI<-8FW0v|@B%Wqpqj9m*a7c_zL8M1pg8s()() zDEm4B5#1R%|K6BG<2xdHUW7{3jXxML%NV8AC;?&TS>7pb9z$x0(vb>f3?s8KR6V%bOYL89*$PQ%n)>d{cXi3j&)E>+E zR!npBA}J4x4QGc@P1-KLDs@4OB&4lZm}}CB3B7}Y5YVNUVPqxo+>R$B;d%bghO%c& z|M=+@q?Q|{b0~jr2ydcmEZMc4s0&tfd6su5`RD>!eVlL~fSp3AYtM7>4u6dl`8Z=& zQjhfR*!N7ElozI|q8SbR%Vx)U%XIC|#R68c$gc zI!+?dva#p{y+ew%(jGmH@W!G);rC~M#t+ly(sIPBTgJ6POphSjT6}qsp5=4k#8N)2 zA*IkLok*iF9_SmT0ScBO7=L6>7iT46oC4$YZnl8}rBF}SQs4|b(8uMG7GKW=Q$~w# z-~o))mK>XD%bUj^)TG9Up3md$(q>xC$G2YdJHTngr46t=Mjd7&0u7rv$LNQ}qS*q>}>Q5h+-DN2|T8Vwe6p|Z$O!AJp zK&+5;qOj3PYY*k~o83nr~<_aUJmh< zzCMXnWM)FziA8-+Ab(o2)yFxno*{VxRya%sL*5AO=ohm|Jf6_~dtlAD2=9MH3hWJJ zPgO(D@Qm#NBj>Q${5yd!)W3C^s}6gatCT&MA#yPkyOJD^%J7&oh=j6Sg8Y5V3(^jQ zM5v7SqU-^+(U5!<=_PwU$B-Qdc2lxVr7NQXu#S>&4DltBrhmk7^*~9w05!$Vv&q$* z3B~x!1-$djIojlb7tFX(T24~S|H*(Nhn9p;EnDK7{iHL@Vz``zC+`b zS{LwMM6yzhB(BN^bf-~Q33e+$N{Gj1^6W{Ty;}G0jCih=i+I`&-3?Xto;f^{;Tb0L za32qsdzP~e!*!`6W-*jro>WFsQR?9JlEz~Okgs86c7J?8MCVx;l{XVZ_oY7%vTa1@ z;h5~tQD8in;~4}(q>L?ntv<16;&jpEs&gzP3D5~3#<|8Z8b%`zbcf+az!-8 zf^0wP34gGYw+p8Ao_ZR&498AVlGh_x)eqlMo9qm-kI)IdmsWKW{M{7GfU6N3$KIe= zckFG}ia;PpCRGLTRT915=H5!Y$yZ zII`Z0V)IL+7ruzXy3zwil}-~|_p$=QXE-sqKp|@&oE<^dhY!a2fraHKNL|{(Z51fmOVmM|B1VNWWQE*0!G1}yFpQoC&Djo3 zh=1F1P`yo&auf|mug2~G`;C*j34%RDJ|T#_YsKb|h*tjIcBz-P9qM2fhUv zT{V>i7)( zv1-dRO9CVzwY(u05_nA9d@W`+r=z#^ahvAfgQmph6`)mETi(HfXv(vE4@tPE??R$J zeKPQa?&=Za&j>V8lEFaCx?~bJM}G?fT(z8*o#bUyz@H?yP7#6;ahFs8gf;(8P1+&G zf6L47h*_v4mQ`oaI0lA^>J2;3pEUf*-IqvMOFQJHhJWWgNaL`nxT5xMnQTke0Hyx@4DJSM(4`%e|CWf_&`~6N=}{m<5P$dS^%+CT zM7(Vg&0dEkU%m&T&r8IzK`f=`h_5EOqA?Z=M~Z=T5f3triPRLq?Hj2n5ESupEvONEa$s}fuSBy22_eB%4<_Md}bnrb3Jv8ic9x4s@P?Sqvgi-25Z$-7HzJkJc0bbkvFCj5TP-@#XqsD!tHoFg+$+jQP#Ur*{o&!&m8j5yaTtcCN8$N|Ify&aSMVvTAZj zu}5#C#<<5N#Gbk>>v3_4&Hu_*&o0t1qz>ZD1=&Ur7cXc!s$>k30j!el`9oT{1n zF}I<{gQ|LFsn_(!*MIkl>TB?U>E|If%pD3F_sM(PHk9kGCzavq!LkrhRmD6`ZAMLX zsY|F%J!DMk(EQ!98?xnHtH~9b)RlG{N>5^LS%5u*0*woYS;%DecWJICNyBQso8~WD z^AXnjJ85H!{R7IXnF=Z{s?&f936623K92~n$j3lA$bL)N-G4m$KO-ge{3XiPEtl%0 z(@bkl+x&xPi3!p)THL8_>}=u=2cYgC)DQDVv5C_n52cCt?n^qJ|qJ(Elvl9dUcYzm+)k z1#Y2km`DX_MStUV-!Y_&%GPj;C#zg;B@?+C3_ZmBW$6iek#iBeZR0!YVujpc&^kZbO1gAJTnSj7(BlP z*a+B)_*uX=uJQ>@fM)@>Td_ocsEjMB2Sf8*Q z@B_fl0c)>8JJYBESIP-Rn@_c=)pc#{pMY`h=x`R{)D9_=GmVl&WR8s0Naf|VH!XIG~VPB+>?C5~fz!QKc0SSP)J3~7sA)~q}Ca~n~TzIheF%iXAN3Ce%J4o^Vuzs+?dcIpP zrM!BFdP;1~*p2E<*lu!=7bw7fr~{EeP#?>+s2k#jvJlvq@6f;ilg&-KQCDUUQ(Z@a zc_*)wlqx8lzvk<%a!qcBy^LxcGnB(5L}83PAv{ATpH|tP(r$WFgUd~*T^$pmUy=~9 znDzXC1g&eNh3BA$vOq7|y|7l;cAyy2w0~obRqqJIR@P-V2NP0bw0tW9IrpLqDW+Sf z9C3<7^X#TEI&Ttb)U<((y;%>KPA=P)q)HFU zyKoAbG(sbGswN_VEc~|!*R~cSnBFTs`4?3B+HOn+bG;oT{+&RFVH|W~$lD8&X2Ng^ z+Du!$0!^qjlvPl^7b{Ol-9gNrsejyO`-@)kgRN<5IPurLzxuQCP*VfD>yfpxa(`39 z>9vnWWF_3x(6dl^_+e$?Fo~>GbL`X}>o7->8kcel%qTzqN==U^vxZ18JW?!=y2 zV)cM`aNP)fFkOr^tKx*fScJ7~sdqZ{W^EDKG#OSggKslgYN+x_=f(Iqpnp~Me$2wg z(ZV;D>R&1cJ#b}=Gp17}_ERgj`C{<&K8_&xxtgndPGz#8oXI(J^j=OQHCY~D-{Fe( znNScrVsskGE1i*t?+#!v(m}Me8#82S`mg;`w?&)ISI@kb8FQ{JK5cFxrC~a~nsm-Ypr3Do!CxicHA(8L=|G0Z^3;YB zLGf@uh;tG;u`-aG=JD0QFk1ezugr9w7yygxybk=(&=>EQZ&4fEf-;iSLl^t~WIoVS zEXqLIg`XSYY2o;(4S&5BF+QJE{TQ_=KI5YBir7GUY-})nb=;8WM79JAF|d4nZX{S$AdZJIKWJ5b@~rxG|!r@75Ogkak56k_}U zL#4}1HCcsDSnL&|G~F||(sbW+Bge&xb(7`aNGUxN@EaBGhkpQ=i;7mXHJ!;|D%Xd? zv5NbuK8;$yHQK|K7435>%ep~8giDOl7ikl9`gZ&#=2TV(khnm5xpIL8d0(y!;DPKj z%86gdVw*vkkWyVjOM-DMg2i*bzM%4(ktsnzZSCYv;DgPTl4kDOMpdmCz(X` z(GD)&H=v2=o}b}|&P=iYHI?Sn%P9Jq;DZ+sUN@w~#t2xZKp6?$95Go4;4`TF2) zD*|EY12=GU&Pm#5hqj=yJk?LjV8u5g-u+5`ZEeIeT)q(T+@dY6bSrtanq29wji{cR z#rSK;SAR?4pi&mmYpp0CJ0jlKm4bFIWVu`TRmU!%_`LYyem5wpXR7*jTDk+z z!VD6Ag8&hH|MP{tx~1?-??GjZUTgQZDdAh~hE?36JtpJO=>)8711@s&JQ-7@Ji*7+9Vtf$NJ3S(zJv5-U+Uugi zeDHK|3NqI0;7cdX1Jm(*oc(2h>nfq>MH?UaoyZY=4lRe+OcY_So9}N6MF(tDAi9OW ztKii=Oq(>(W~3O$L(vWV$^LIS5gLGEqdIT|*%haN` zNULDXiujz$ic}S{v!f7`Aw(y#668a_%767tl#V>H&mcG=o+(rvIS-eRib7Q%LwdsA zK!gV>H2JBz@_jHp?N+BfY zv!fNz4jt_J>$s%+TG%{}(|^FOTpKotj^vVBD%#(J^*Za@)6N68-+Ef=kjlm#bHb!>o3y zN#Dt&QGCkY=BFs1C6f_ky;rW}o@_de#zq7CnAIpvHu6P@yateRWkR~cGld-5@&*Xa zia>0lQF_44QfVSpjr56u=(L}4X@65eLZ=={lj{TZsF=j;Od>R%^R2x3a_XX;)c`f` z>wB$&y-{|BViW4?>$wCg3K1GEZYIMMGmL%G4L>+B0DLd9od%4?+Qf7ltu2&ZoWr?@ zuQm)s5@Halt1;|pkOp?y^tT}Ju(v}iRmiU2wlv1;_7zs%<76@P%YUO`v*@=O zk7ajwvJMtxXZNWSC@YqwZM?QZeZJGXpwfT^57kvA(-*iE7&7aFZ`zlh9CPKg zGW2l_78{qg+NsTlHAxj|&K7#0s7>uK=s2Ky#vQEBp6?CEtgM*SDg#1igwaXlXkhNi`1NH1vv{29X@(Brx zZ5KIq>sbjZjQXHIgu^jQ>{~f=hc?h#oLKzS#{OeN2kOWBVfPYo@IVq7KWb{Nwst7)J`t1*J? zdpGe87epsg>|w<8=>p#V!HsyZKFpP$QNic{(hv!1Q!aO6n}0w@rq$#_(bhXjz9+Gt zlqHaz+kAu!T)Vn9PCY z_o@fnZD8r}KH{#|Xk#+-bH4)S@_6~vDyBO*=MR95m|qb-7TOV#`7pK7H8 zgx#waxTZ&=L3T5FYx!Ad?$qQHGNb3wQOf{#QhtJ5=2_xJ%EyFzTWBw-N3p>WdxsR% z9PP;}*AK2}!)*N>_e9py%&+vG4U5eWkkvovq?26D^?$Upfc2v4Q+05jGBP%@9)ICn zEuCbmEvuZY4my-sdfR+bKh+*b;K~tJFIvU;MZPZzdDMjxz{7G~4NXEZ{sFzPhs~@_ zgGFdmxyqQH;ls;a0b?ngx&)%AgTs~K)H*-eQkC?jT*%%uIGi-r_;Xy{Iu{CO54B{x zm*lba^?%WG0{1j8;jB~Io!v3%t;TPQu1w(4A-DfeT}Jbq`)fbC(u&wE~}_Dp%1 z){oLKt2hcDKuz~35OO`+M&mOD&X)qDf-j+B(i^@t--Ed^Ef^(?a-E=tc`E&|&rvv4 zZ{w@!WFoBhY)da_rTF#fgf^B=t!5%|@3ELQ+<#)fnTL#6dAOw$a+ZDFMm5uStR&%Ck);`_}vRhC9@ZMY*NkSm$PM9p=-tGG?id ziuSK!i_O9*d|Eu4O#LgwsAsC!Om}jkg~-TCfx$Lv!{VSeT6^+rz1t|{b<9CCSotih z7k{;9>xfs9Af`7So?lc)l0m<&QeROL6}CWJ-!`7&7166PJHsr--ZOaa@IXYNXr^(Jp(}$M^)i>?>o9ZbiIjf1A^tK5!C?v9~&9gUp8$2NJdXtO( zLwnGeP9!y7dH*Ea>eJSkC3=4^L@wIsX@BB^`!uom*d=^u>Z4?GqrREO(JXU}tj8{k z#ZD}C)T}R^XH2JIWB*RNUIP&4s~ijx_c(s;CCJ7ikg!WUncY6l^cK;K#Lzg|EuCEd zjsGM0P(b=;@KhhSJCw0zn__$<*L=6~@ZZt-b?X)UX8O;1u9-#S_VnwtqRq9#>3nL~wT$ICZ4yef}CFxYHs&^+O(VTg9jNd6$JH=UaQo>3_FD&kO4{ zZ=nRg#uG4(_s=b{K>qWaO8j=wIyVo~og)lAUOP1@Bj+J2o`~A-%Vl3c>i*mkw|t#G z7n%C>xh^urvj^|!Qj~ckN}KD#tF*N$xgzU5hFe}Q>H@nTX5{jR%Zpd|0zV#&z*cJ9 zUt&vY7K?-ORV9~WSWt2s#eeALN5Vcgkjv;kobtB90SZg3uFkwM7T_5v6H-c_GwWON zpQ;00gH`Wm-Pob97#~e5RzrzCZ<@EQVYpsIOK8F#r%Q~JI&_O(M9N*lUMs%p^l5&V zPrYE($m7-r_b@iBrp@&U{18LGgcj$O7>`x!y>tTdSnFqw*f{kga(|E)_OktSto*SV zvGL^6{w*Te^Sq7%I;3JTecws4Z`tq2iBF8h)6B&w%yuDFpH2({H)ix+E<%oR`$+di zf%>rX-5?JQbRZa=ZN7%qWw8gNk{L6U5_V*)K<}rUDHt(rERlzXH+q+uXr@#pQ}>wO zd|I5$hLw9UjIGQ~dVgSi0tpqKRg7Pa@HP@5iS;G@`4wWblT?IYw3p7P6xgrm37k;6 z2=b_>1_Om1n#kUQz+-hB zCcV*gfljz+^|X6Ps`lF2gukyY82vh$rPgW=kmJYt1YPJk4u1-Dko>`*4A4OQgqjn+ z^3H5ep!VjYJ(3j4o$3?rBE?OFHK49YWCek_7eR;7)K%T^AfJHe_bpv=wM!k?13;uJ zAsq;`OFi7|lz%!mLtrz@2tmm0*kqYpS4x!YjdjyvW2ws?XpQ>ZnY2GgK7>Gy+U(?T z()Ub6zmH5ShGxtHKDI$kIvvuN%+!4|T0bmoYNOKGu7)8fl;J_{(_#ONdVZtV{_bskj~Fyi{8;gE<%9TL#VPAbAv%$mB|)iWhfD3FOB4+&7HB@+g*%0L+sV7 z`DyTUUggKy8ICPC%WR0iKsUS@N^AE z+VhtQ$~&kodNtvAVno(%x521QNIj^d4{!$1OXt0wHN7aav6r-$-}-n(IzuNbvU>&3 zgPpbdZfuuu#rQg1>eBt);>#Tct*HWf=g+;XGI;rzgHfkE4H@}ry}rBZkoWLo?lt+k zzkkcyv6gylnQ4ExvtgD!|%?7;f zEeA+NEr{hae>+rq37Y|@H-6nScB)D#E11`}Q55xS3S z&Z!$RLzACoRfEeC%8J!;WHN{C0W^#V*=kB1uz{Fj8Cv;eF0iSPbN~n&FqJ-&4sCwU1W0Ip!eEJPOOU@($PObiQ zVwOANnISg+BPII#H0gkDja6v=mzV0D?a~gbU>M^Mw@W+e661EO=6_FW%e%GuJ@VHQ z(#uGuZAajDD|*u|b&I$qUasCEIn0l>R2xyATkpwF9xzP8ZJ*muTlnw8l9gaTZlI0 zSDb@EsM&Z6tPYXvvVWqCs5+!IxNEbkj^-~(+n`aCnznl+tv|y&coRQO?mEe(`TMXS zeb>&tK=F6!h=9Wb#H`9%yp@Mh$?rM`l~q-TsMwEM>!`UXIoP_rCpRoKulno$Gl>OG zr*46()4Sa#51&rrt2y~yx^kaiIS8k5uO+Bi*e(0uDkpF4?0@r}t<0(RShVGCsO4E? zJq>;GLS5=>TJNlZ{iGBdtCxkNSKD)B>@Wks{PZ7py5 z6(_Sgh4N^mslj~#`a{S{EW_2|8VmY7mri|#qw{jC$d4u8LWzNBAeX3js}~K~3BLBs zd`_{&D((%kCV%t=F71jTf$w)4T0^cYyXmk8NTxW$bnqS6=hVwvx6!P^TXvM!~)jxX5~;Chh5e-O?`Yrq5x>!xOXJ2oIx)BXu-B zXc?r>J~(2wCFx?l6@%~VZ*|KyHEGii8_FK2w(18?Y|b5Sz2LAV)ekDvQ5TdP2yyebFrjjL*mlK5x+TpdI(fK_>lN$W*zR&L z`2wA1$f_5M5CNTu0?KrA5?JKPbgj9h!n|M)ouReI2Aj?lh0(z)&7FYx2@g|c==DG2vS4M}!+Bm}v}gKRPI=UK>T3G(&Wl&p>P%HMc#I? znP0*gOXoxOvTHEf%QNbS7G)T!2(c!Sbi~E@^)$HX64Mxd<^pjW-2#TTx>i9-h~17P ztbeR_rHFjbLxup7tjZkBFFUeobU=8(T=8J{a1ncKQk&M$&26I2z-~WsO=`h3LE67ImVd{Cc%3e3LVtPR z$gh3&nk1jpL7Gl5`Tz|DP$jDFrh`X;K=ig8nLW#08_F@F!Kfvd#ADZA&fwlqOe_|y z%q3;*yD`MDe}Bd>`W+k=wOx#H7Jvm8@@-&z`PzZ1p+dA&@TYM$

npgWblW(sV#WkfX5WHMIQ9U=(o>wHyrAGlC zv%O%#<9x)na7UvvR%DdE%&XpkU--Cw0VROX$BNy(s!wQKbqXk+hQbUBR$X<5o7K>> zVapzrdMtrRyYzvbDuV9ZgZ%AMpUd3QG_6}Z#BiQb+Kd>T3N#(b|9{n6dYQ+@6?3mZ z0Y49bx4yQjr0Ml>!`5hbxbK_AzgQNiN=7Lh;NQfs2LePmjO7NiUKc;2Nc;yaH}~bA zfO>zW&@Rm6=rx;X(u@huk~2)On-+(8YR&YvY@r-ZD(Tcanob$UwQy00*#&wublcfhP`*@>TRWGuAoMu=)?*@Hm4BZ*(yP1K4Gv=GfVn{Dtj z12A;R;^oI><*EJH9I%9BkZOG+&E}!gBo6YZ4X4+31!c^S&5+~Xw2zw3ETQAqSQtZO z($R*EJxpTlmq_k!Uw9BY;fn$l{zDhuOjWKy=omtRyfzz}N|pYho2T8Eh*P#ekkQ8v`gv_` zxfByi?Xk_YDSvm;H@{dP9lxr^Gzhb82x2+9)*}tbBf_z>tPblw9j0k^0CTtbU6Zsk z9Q&NzjyIR_Gw&b4D+ZZ^=nQ_B3_W*5)CUKJs(z2+l)vs#GMGzd9e0G;+Xd!<+%TKY zXZwJQHlD9BQ5fY>2IQlJ!aL_tWtdqB1GM}X_J{LXQGb?Yg%F#WFL2L2-3RBlI%h1C zO@fBl_4I*>gDbLJoi2`e7gRcBF?$A&KBW*pqP#vCkrEg`g&_ zyr#vK_K04fx4J4K>V;)WUc_^^RUR3sc|ce*B2x1`;W1Z4{hsw}3THp8!YD)QHMJPV zF04CDs((BT@rW*>d3i)c^?r?R6MWygOu=^cvGhb67XV zL3a9l*xXN3&E|*FunUd3xYr#f??@SX5MrC@_C6gUCaJL`%ytk5@Rh4kE~X3oApKt= zHOmC~g+)TsV_jH~gAec)FGF77j)a5%80rH6%iHZ+UjS&nW6^|AEfD1L^cBpmN=cWhrZ zOIRq>LukK@&;rcoeY8safzqLuSm>zUYA{e%&k5Iu=yHkJe1nD9OMK>95}Vt zDK_ur9}KNGZ%OEx#GGpj0+)~f(_ZM0=-@`Eo-N=4NNkSN-cB=@+hZLiJAda$sy@${vpkHH*2O&9%wT)uK%p@UxP9pl@Y zPMtLV%GpLMKHoXMoum?9U~`wDR+|U>9I?D5=@F(@8Y59bXD86NtW}uHO-G{OC}=hF zm)4;G?b6oKUM&@we7Q(nLVqd?VN1Bo{2s{wZRYWF7)5l?Ja>O;4GBY~giiA(q=7J; z%dSv>5P)u6W?pJXAa}PvqW+xjlEWOkPjQi>T`nLmx@?cA*9(}}CFcHqS+h?tMi%KktG(hY%7E>2ScK_TUCOM$X2}4*XYy6ujqjfWYh%JzqQHd3 zT&WF^6fNO061r7o8Gqt@KfH}pGpLsIP00UdpPP=YC1%#@3o0vj)5esyL+=%TKvzTc z!;?A>f7$dUjgP1jJ=B$zm4bdYb%qR{cP4dUOV`|s6%&7|hr&cQNTq>PXha8&d0my3%AOKoU z)R#58w^fo1`+snso^JXJ^#XEwM2Jpw1hYmOsrFyPcFk=-LfrLceO)eH?~cDOmxhAo zrcO|2=C)z{Q>BpjRNYWHQBa=MmsOV2$?2)GTfI0MYUX-$D8$@+aVO_ldI5-RQ*K4Z ziR#6%@OAR~L#zz_O%K=GhIV>GY%h}3wzPUNf95c|_5s&fZ^ zVM+1fPmjdvs9zP)M%m8VE~Fh1ZK~~TM87!_|5S`SfkGD1N-o^!ln9-$UP7%LaMNre z$>j=1)H{|bWfAppXh*~Gu-{2K?&EpO6q|a`Np~>iq7eI5KVRjL1l=r8{|pL_J}CRJ zR&hnI=6_mY-Go5&1&C_)`4^@lrIcV9nso4RCIAIH0^`nv0kd_r=4E9T zNUKb#Iuvv2tt<4-#t$t0e;jk934Yw&pB`pa`xh#oX!gW*H{9U8rx#9REx z`ObCY>C|~x+~v`Gn?5pV%lJGt3H0jUQh$-EgSB@nAKrJqlXTGCw7)R_Agn9pf_m3_ ztm8hdHmcRG)N1e7YL~TLajh>L8>gRLn)m~K5lj0m_2t}4YC|V_KqpHpU<>KX_W(#h zx4-Dh%R2vNmYOLSpK=!PFaB8-GNzst#O4o%k)5=~@IPxvTQ&(ZPl->RMiL}pY|8UX z&tHFt4OITcsv`&{T(|F~RsQHlNMcO~ZzI!b z=55}Fjq>&UBgezIKg7jHVCWz|lwYy=yJ$*l*ck7ZT_E?uNV|PC+}eHWs@-sNB!%?# zCXzqrPVn78lD=KIrS+6e+$9|C873uxv>|`(RvUKPH+1Pz(kpG2C(305EGx{ui>nXb??X&^MfkgHE)Wb-tI^wBMDvyf0q!)E%>#v= z`nTkA>;_Ddy3o@#Hk-6r_h+i!pS{WM+$g=2jv|vmU(wF(MdE8Q;h^7L(o3DIUef*BTUov) z?M4rrwzfodEj+TVsX|CPO?g>-wNrfM4UfNX?PwZI>{l#K?fr;WoF03l zzxPIeUqlD8N&cmU)|6vXYhu|LOGL|SYM|p<7H#<+QT;pgAvKTqm?QrCyuW{mxQT4T zGF{r9C>aB+64ll#5X*?Kyi16U8ba#bE08K3LMrhMi;2)zkXgGe#lN1u>MdcDv}dFA zqT28RP`Z<&^xP(lG=0uxt06sS_+Qv)flG3ueR!hQQg!6KvN`o5OOE)~|4|=a`2V#J z4M~eqo@E!#Cr*=3o+Cc_CAojYq!aB@<0!t-)uT(;&p4seR};Hw|EMEh{O9ES%1f|V z=#z`mfMaDIXJB2~ZdNyfz5()}jk=r^lB(=G zny;p|o1ORD%u3#&<}ZKRH&p9y>TQQFs6CduT-KvK>cwKT+fbs{4`36@pG-8*S^;9E znrP*DUu_-G{JYat*uF_k9OB03Z2uck&;`K^lgYNIMy?^*Sy9BPkUbO>CWBR75 zLpRp<*4|j(r@yEBcOU%_gj>F+@I6cvbC%2lN|-5H!;V}}Hl|i!&@Icm4C+G{8S>5a zxdUmd_|$Hqztn$e#fVv?ttRt*$NE2KKH@yX--%UQ;0*Z0p49qFS;ni-rJd@kPEce! z=15|W#m?!Lv=Mv0!~L7tNj8$0Vzt#I0R{t-7lI-ye9QiW;3Zj165{IrTJ&C)5^E=z zqw)*O-)0Psg87lp)DO>RkuL}GCgSZ4rPxb<(NkYmgh#1?!7N|cyvVa>5cPFh~|AEYH`i{kXCA!3+Rm_;m5Kg0t6 zl9I{X_b2t`JD^(~?U{rb-3(4i**R-;>QZCs0w%O6K={|MHu9yHqBLOX4Q9BA!mG`2 zF@;x}VUd5rOU&?SZbO;jF%_$8oxwNIE0 zu>GA+$l%?tzk>}$ynhn$5Z?a?#s1;KzXNfZc#j00RsFT$)*C5YOSz8Aogqgo&HXv^Sm>gg*kl3HUwW zMZnX59{|=oZRYvG-y;q10^kwAGQfPm48TOdXg~p=|A&Im1Ly*D0Coem1AYv667UFM z2bF)t^J{?X0d9a5@HuRQPXJwjy?~zsegb$Bum-Raa1US(;5NWbfNKC&K;JWh@Dbn$ zAPM*l;90dJfz~Ud8bclj} z_W*o=$$-WzT{8)^59k8?8(=HoX~5%vhXH>}0CNG=fN_8k>Ke912f^+D+#X<+e^?pYKFE)5EE!hTAgeb3Us z;#svpNm#T%s+~Psn7v@u?Apb3!otP=+Itq)Ql0k*4+#&#fhP$o5t4=fD(zNbnh>V+ zhaQYdE30l5hQhZ_qwrL02TQ_Sp%#Cx`US#bVVN*ncvN@^4eAn)n^r| z`QZh@Rz|;Wi}_!3IV$M?0i&?3L}(R82o?)Z=fB1vd3;y$gdpmSpvA{f?;3y9yG-zN z3K4#5v+tIHLJtAUm54uvRH6alMER*NA>QM)+1{Fe|8+fA(q|Py6`<{U^z~unSi{qo z33aHON`4z}7XT{-d1=H1;X;Yoxun^|T+4rm7g~g`#9xRDLx2AtdsiPLS5?K&%uZvi zLQspJ1SgtmC0L3Y#aifo%q)K$y4xK((;bkH@^w}h})0NXMSUytA}hfjYFxQl-yxV`Y{&A@#w zGVcYzR$|`#jUnt3#06`NX1(5y&2Pu%w?b?_99tvGX}ezSHLSWQ&`dC1B^m`f#-mH? z!fnXM>0yM^d2zsU!Ve)&@~jTa@dS|Qk332VOZY<5d^&_ks%KGKX?@-E^Ui>|)_FIAixafQ$gr?m9!B=ycpp$0`XI&_~t0tl?KW zU8kB!b(x+I_<~rjA}lLCEQ)nssv?JU)}@ye)Zyd}Z=hRLJ6(Sv=yA$qQjDMTUDGb( zGs6x?G0cBG&ajIJ{PSWxmRM_>w&|OOWsV5?2LX}^$Brd5{R=2lHOhi{S(g%??>Y_S zixAdUDs^LdQKBzIplU_rs-EtSe84JAQ`#^Thz$kpw8nG7E_K6XSR3PS#xnLGgeYNsMR5wN z8hw^fXowl`EK3-kNOjP=V^|ISKKO)DlKg|ljiBkP>0ORp2IM_*o>k8Hq6&+~GG0LK zZ{Xc7sS(>|MU?=R5p@m$3j3h;jmycXO*lwGGD5TZmp>v;a9 zb<@|B=;n|or8F902(RE`Z<5k@3ifl#S;IA|m~l60i)pHVq4cn+iFoN@I+r>shPzsl z`yMIWc4t_l|65tY@I2+VhF&9-_1p1W!-Ga70=Av2XMTwHu8AkELV<4?$*(GshpdU3YqA>BE5z^E)yeZTm zluPtwO|!$X9GAK!#k%X^{!!@-YEZxq=%|R|0Ic6$_k9OZVL4-J!!W6{sKcDlHZNGkJ5kDn%{`bIx3@52)H+%ca7pe)~VHN zQWYrFx7BLW=j?icuGUrxCtMZP9fCp;vgdhi?a#`c7DhZ=LH-)kBElsycFA;MngX3C zeJ1OQ!2+Gr^q)3*y6NF<^nLh}S2O%#CES;>cvgskaLjM%L0mW;+*qLA)3;vk*yYl* zK~{g6hThNP_JMAvBt5HrD2z(B*$VGTTY*0wON)^q!W51QwlOu zdboy(X?xIg9lMH6tJcES-X}ROR%@U!72KNzVc*=x9_%u#>zN*K4is2qQgJc(*esYqocsIdwKcbPUYk1(Vc zK^U(cZ00lN8m{ZOa^ui}z_)4X_L3YDN(&EQl+w zSZl*a25>Oc<1RUJ^d8Jt&>?bN%M`i{Pw_ysx|yRwsmvf+DIEdwOYD&G5Eom53$oReM8jv&REDv7c&9Z(;5HLOn4!lkN{AWMtV1wf~$VUU6JDAl-24 zzG>50gw5OmB?qRaEiDDZI^PjX_SEkWzY zzp7$#9(H05R>;vh)J|MkU%~c_+$X_#ST&j3u3X#VpQv@Y9wg8zQrggs{`vY(D0>Q_)33*uNBDieB~i~R`zLqN3w=BBz-UsItnWZsZtsTaRzm-4t=jA zO`asFx}x$9X}=3(^)+RF%2lm~^gYEr%i9g;fV2oppls97b+!(Q?R_kB{w0u?S*uVb$exHad^uS7#?3eWh6x;m%ojHONvuZ3~SEl_WIO)k^3TA!rliCO1C_}j|Po~~4Sjk<5E z`wqWd@LL;?y9$3?>y>z`Y-h+0k=1;8k|uTZ^+m2y_e+>1>$#C?LiD81c%Zh{6K+cM z8_1YzGhK#VuJbWXJv%9H$`d=kcgndb%L;OgDWu7QtibnI;+=X48ehCS4D<`GAi83W zu#w%aIt{^hk>y>8#_07E!{EJMec+(hvgf@(x zKct&P|3OtZJ*86l4p}fh1UOe(Uq;XP^J6rY;C&lYbS^;8AK_=w^Y7tQVyDtcNdFxJ z+(dsD`t|4^MDL)Ve$D)toIf)QocTF63!MK$;TdtF+2F}J;7jL#x6T32&H=w>4tQ-2 z_}CoqEpvasC+2`ZI0t<19Pr-&KGT<=$uq(yw|E$z9*&oeV>~|`AKH|l%Diygx&`Az zIG(&CK`%ts+j3`u7RSQzPwq;vpM>=8PEb5De`ad}C!Waj?<7#q3a{yV5>$zdmwq=v zACIiRSmqD@>)|YAQo_a}^1Ytx=+UF|pMU=O4;+6yc<`J(d-kl@v13Qq_U+qqlarIZ z-1vUiu3eYx-@kwPp+kp0apcI6h4dy|ufF=~JD+{_+2r26doP-pn7Df5#*K~9>l)u0 z9UZ*y`VE5*-7wbJId)@X=lIC*LpO~K-*?l7(K|P7+Em}RZQJEjQ&YR)UB_>Nl}|7Yz=z}h~p{L6Z`$2Nc2G@I>iH`z_L-Ay;y?)J#lq)D2lP14#< z8#i_w$4TtOaSS%T&3zioA?_Q2ggAtRB*cA5NF3sjgbpqVp%V}WfjEr8M{o%6_Wc1j zZZ^I4>l5>h#P^$dZ{E!OXWsjXkGZ<)qp-wpKlXI~6HW0w>~ zZnQL}qfRTq5sM1lq;qP@iZe4VY;A4AqenkLiBN!-T`s&lI*K;3#i-VxvZ)y>gk@Nm z51O6jAP|2X4D!EFk{WT=Tb6%rUD=R?dbJQohTG6RK7cdR zPMn<`N4>5ci{gKRXWqIGpa1dGSW{Vv9=97O$PTO7jC!pGTjX*S2>Ba@Y0=Bc(P0(L zTK#=~VCG0Jm%kbm5SSAiU5ylJct^d8f%&xu!NtF+|;n^2~nYZW-h*HJ@ohY z|A56}1x1|pb8r*iU$5mK$DYO{G?CvOW+l2^r2p~|8uV=_PI(sR^XQ6|zg3p#ebC!q z!XG{T6gJe=;i$`jcIOE8oBMyTRjWdAqZEsa)37M%!nM?-#3)ABow_F{Cm$>;D|`3s ziIWW(VIQoC*$1(`A`tsqve2fl#!+(%y6r0TO!Q-C{b8J~-Gx}c2eI^fi0NNKOat_0 z0j34rgY4XFwA-y{by%_AGK8vrEmn2OkzZ4cJa!ajMV=fk;ZO-%%vTXWEUiCUaZ!(p+HfA#rz~JjQ3ehi;Lu_)#_&%-ShMF_tUy~ z>%8B|2LChr*I1dqMyY?`7?D8|NKLbJ_+`jH{*q`7Y%(4o}Wg%Z62gj!>NByJ z=Z}S#4s4`Ho~>k_(M*X52rxQDGOO%2A10 zM=cJF%5cQhg05lO4<;Gf2b*wkxCvDn1=*^ic~+v>C_}NK5ry3n6n2u{b}s48LxDUK z%Nj|)ko14k8fTyR^;BhLuB7!PbI7pG z)r#HYD(rRlpwX?y!3hnT>Al6FLcP5OrMhy`DME=sfD&~PiaK&p)SiRl_G}a>Gf<>R z!Ezak=0B321ILjY`x+MbzBI=?51I2k>g)yn=_G%@PkmZ0kp4(aF(hKqAR8q#{(74P zmChRM9IZ$7XdN2I8qnmbL5D+vZd(Zs*+tZU0hZLKW2rQWN&@mL$$wQ;DlZ|wB9hic zDDs7YSjs<##q1A|6ZK2X{qTiN{mh*q@_az?*(l%Dj~dQnXy++RQ3qn7Ar7U3+1NN- zgq?pjF&dq)Ru%t4Z_HY`O z3KOxkECx$>L0FROhsBv6A}@X)a?ZVg87KC*nLCr&Z2m4QIyN!j#CuDA6>njL@-Sv} zokyWQ1r=s7n#Q#_IyH=w9y?y17{*bD4xLst4qMu>&n!nht-pbRR@54l*kx3rqECN` zjfNI_<~EW~Dv(zzK%SI~+|p#^6ht69`4nabAH>9v)4J~N?&p~2FeksjFZk#QXMpt5 z#zhSqvuVFeEK1Z(*>K{D7iX5Q;N0>e&Rt!^%kwj6n;FO9=}|P%Sv=%%;Pjjq7v|@Y z&b80Vl`H7+UO|&{3HxkUvDfvscmLT0)I!5oc@$tdF*$1P+V_B?SK{c9Sp&W+Ey$S%JED{F0yjP=ogrVbxkTfbR-h{`iC(h zx){^5Bp4FG#`H`fE-fwL%7euHx!dO-*?nJgbMvl1-wO?K z?3}eUZ7uD)KAc{@ibk^+Q`vt;JQ-MxPdtAK^NZRsAgU41M$}+taW_8pWE}mj1D|{$ z2D{b6`0Ac~6iIb>_!tLYcsXcO|JAEYIO?87fy|0wS(Vp|`9go1_kV#qgt?pXxP`s} zM}r-#it;sqsT;=^yg1@qz?57Io{#9m60sA@YaH0o>qa);f?SaWizo|()T-ar}OwSr88i%Hl!*|fLVGcQ^ zcI@b$M83pHcAIGIv}S)NC$YMZ*0YQ1^dE_vI0^%}%0caSpwU z3$zce(0;sv^EAGzmnY>|vNOFRSrQlBx#t+O~6tKDH zPalu&ITx3^6jLuw!AX08o(m@0ch(fA?6cAbRm&J&Q-6AT6F zFc4@$z^n>||9LhOcJE7rcaJ8)*$XMK>p%w_I3k6Uf%R}YL=Oo;i4d5Q4}r~T5RhI0 zK@u^X>bwZSnnVciVMAnB6NJU}Lt-1VUL7$Yse;R?ddjiX14Dvq2`yhr~Q7l<`E6U0Drcu?U)_62g{& zqFDq2Ni&F>n}PBOplwb9tuhzPZTYa?5(8b8Qs`-~28}`iD+&Q5>R7-rBtpE74QyjR zaEA(@+`s~{mIqDx91suXL(32s610Cp$mtUU&m;s^uN>G0859q8K)G53?Z#3N4GTd& zA^@>Y2F*RKATl?B!qEikE;g9DIk2IQhYdX!CLD#(t1bttUJP2R7;H8PXnUK$-roQ^ zTNBtuNc&VWX%0h7T1nqfUyM>L?;Tfi`4 z2Akaqmz`=@vG>8mr~_80jn3T*!xO!ro3w+)IH4^Yhcw)6^mJzZW-Dw4hc&ic*X_cPTR;SbIO;fc2Z#_xY;S`h^>dAK&!u zdG5s*zwuYM8`z5rSZ^l&4m{~MukU`pM6J<#7jJIDfBMrG|LIGAbBV?lohx4 z&M_2U`uAOj-Y-?_y$gRgw&6?z#-v;G^D~|{ZdTlzoX_yAZ|~gwzAs;+H!UpOP`!Ng zm7l%Dw0Pmm_uDBCH0Nn+ElA$`rsp=i;6EPT^_p)9U#~Zr7H)j#}v`{nLKgzxKP6x`Hh4-9m7ee}vde5HS2aq$)dA8jp4O@95& zZ66gp^7U7D9rES#HGO@ILHca7d7!)O#6J_B;B&L%E>|lzdGF3`1qt`v^Xjhmj+F8{ z`_0h>suqRKl1f^{_|Jw9m(wM)btIK0%6H!|AfyXW5^on zUd~N9{Q6G8)@XnK?$Q7H)qyidRMcQ_aLA<2{`li7L!z<=|Bgq!(`Aghm#1dz-}7&q zla_Sfy^lWe*1I3n)TmlC8k5PS_C0&{?D1pA_GNiyX2x7h?{Y4K-}&aI^Y44?@u%K7 zT~$+4M+rZ@ad6ON($f}jkSWYa2`%U5Dkp$7^X z`@jEmWK@N;QPEE5B}SGRQC3zf4?VEmf8;abib}iL&xVN`Q zt4+zsNTYvO#s_H!KcLrv-Mb$8CWq;t?0NQ-SW;W7U29i z`ws8f`Or5Dx5xXG->K78wRKAE@NloGhklhAd-m*n@SDY({(tO$ zzW4S?awr2|SRnWGl4x@aQmI8U$^OIp_w3uV^A~>){43*6_I=;^?tlOKrws!YTX)~h3;ODXPuJH8Z;6<_z2Ors)i;gZ zT3@$VV$PipS_ukr2cHWZITy4T7(5&Fwew`t`pQT+4{nP+BtBm@xxVhS1P71Atgbjm zVn*E7fS9!vt0g9QmKlTFk_Vp&J0zlc;?|nYVwtjytXM4WDXVQN#_~x_%#_<=At!$= z7HvD{wngy;u8C_?PTSgw?Uv2CVs%cfSZ!-I>xwPLN^oo5=Z=|#c+%irVSGnFiz_Ri zu5Er;VX8%Ycs_hi68!U;CvMN`+NXEO+Tv{97aU?N|GenU7OMpRWbKpN=#R-59(;im zhxkY2H_IlkU0=Pmy0sd}lzAI3&jWv7EbREuh=}Iqv9XDX$!lcR;-bUK{^HKJ#6vB@ zBO;=sqnpO&XJ@Uvygc3v{6XR6g@%TPljM=Gzwqe&KQc-(J39@30l`gS>W%IC;$53H z1yfN>P1mG{nVJc-n3{sG9ZbF17+`~`qdu$GnEFN7;+P-auJ7IaF2iT_mx+IiytCf1 z{WoO4ufFRqRNv9B`_B5ypV@W0zHRsIajb3Eo8x?Od;C#b{$M^J6OeBEY12Q{@ZN1d zKD^~u*z)hKd$;N>zyB_uz8$CD!MEQTr#}14Q*h>uuK;m!K>Q>SHweTJ0p;U>I36IL z1p+R-1C&n$${PZ4s1S0}2ZDdke+0y10r6-+Ibz_Qc@2nH0Z#aoDo{KvHXOqtYaTst+766n-hw$!DAdVD>FWihHnSbcN%BC^# z9tYy?fOr6i%l;LlChUd6`27%5_%2X>9EjTl;sAleItE2~#~_;(0)>AC!BED;jA@}D z;06J4L_k~(6qf}7@iib69tGkop_F1pMMW^hiV;9uA24a=dpuo@`O36$>y$}a-tAR#U|9>UXOAT*H& zl&=QL*Mh%L2$Av{2vdJ2LSpPC$V!QYB6d6^C$J$tKNmQ8Y$(gV1pM4&DB-1okdp_M z1=&!-E~L*Ks4mP0URg2}Rk5MCi9<1CJTz3q1MxMWkR?K?Gz+S$vVmX51xX1Hh|2`I zG!FzVxxmU3Lsq^7ScSEa$5Q~SvI5wpRY3VND5?_yN7xLMM+AS$XM#Xj0u=%Q5Kl(2 zrU0r%VyKo@LW8sd%3Fj$JO(J0d=QB1puV~ZD(mIYSYHo{rUq!G_6@RjkT=PpRiOal zK%u)a9t^E)Af6P6hl5V36ndNLL91*9;&32e9|srJ93Vakh|d9$CJD;*`5^0K192-r z+zO-{YJl?nklcSOg92j{#i3$~LCc|;VoC}9PG(d9aRH!kwt%ji4MVD2z}{Tw>?{T1 z<)OPr3OcQX;!p|njEKN$tpMWUfH*nO85%*QQ9zGD2}UZ!ql4bj2sVohCi^O3%2Ez! zmTbnP=#&BFjDd39KzVIQ$u&cwNClKL2Cl#gl(z?Ag%N+G%{?GjbV8Zb3FS>Lpj_#@MjLh#GYm z20@3R3`GP4Y>bFt0Y!8~q$+|mJ5mKH0s9aQLjZ#}dH1{TkN16d z&$nl0pS6GcKIiw_d!4h_f%A83;b!(TyuW-G%5wAIZdo2YsmOwR`44fOS_0*dA3=Rp zHq=#BL0;`$D6Y+d?1pl9)K~#{ubW<<-p#9rJY1iaS3ZZ*$_}V(Zi42PR%pU?YHM2u zw9{+U*YNK+e{U}@FFxNNhI0NK3&*3$nVIKyagY;Jq=2A6{&!8$5PC9=?&{Q`Fx|iGfCj0wYvuDp9F5%za+H%*ItJ7Dt$!bP|l-zyxCn?cyr0fZB+8wrw1K0=nSSvE6y{zo|4xuZ)vHot$P~hprsxH5IAm>^1Oxi zbOgJ+ymLQ&b*QDj{%K;OFHcu#H+GH8wE2Jfkrz`_v4$xHd1)ExwUji@*M+C2giYXo zBR3=TQglLUPEKw?0iHTflTaGx;zG%%qWoL=t>F<@uU)%_x0hbM%884Mi$Y-}kGD{J z?j%}1<3dDyLITdk)6(+OTzEW(g$sGO%+%AE@Fl?EZ{!tz#sX4B;?$!y4z`rj)7F1h znLxdTO6Ke7OP5_t&3V<_C|?$t@ahfDtzR``Az4{T zNr}e}S#x#NCt6Vbvned*YKKtxK`5lwGxR*|y|AmZ^I1bF#iAUOuq*W_{_sKA)BXCj zP(0o4>TGD(Ll4k~&6n$i9gjQ5oY;TA+ST~+*rttcYuw(y?`$aDFB)Gnly{b_UE%)A zy5i;TD_*QDUnTYNeOIL@IcDHdC+sTuwW9JJ-dTIM{#|87QTfM@?GI0g<$T$rQS!e1u_yGoBdi1UojtHT}E3AJv}@BG*7t?PeyEfn?$ z-{YkGx&a^`(Y?|%+>X` zJ$pPoPr=`J^mL&^X5jSf554-Qy7e@%j{INw0s8Yk9r~wwba%R}4k@~5YMwG)JXh(P zrx*^@-Vd0kSZ-Si-0f?@)p~zDaQAG13$8OE(0x64xLJX%?`Ghfvj(eR8z??F466PA z0p#p#ILluP0+a=uH35PDHV_=&4#9plAP97X5RB`4c?TRwF@ul@7f1|qfYRG8K$5vY zQrux*whLHtPXO2HJUF?B!Jd7WV2}4@IPJF&ypDQdetZZxc@DyYd?0^ZfLt8u3l}aP zKtAR}*i}B-v9X$hmP7^|xM-nC=ai?;nMTGy#M@@Q1^>p%9dv0#VtK$gweS zCnp4=N<-l0<4B0fk4IighT9bhP?dfLa?`^g7xlcEnbA;`6$812SD-9A3QF=WLsfnh zR6P!dvZ^bPUX%otg~*{*@sLw<8y=QpxHu6?N>iZh;T?Efo(zA*RVh$YkqUJWVxZyC z9Uv7~aSl=n$K!J0;`KC$jH!gkE7cGcTLqEv6_Awj1QKr5z_rw;=h6F9$d>! zhZ`9=ka9N>x znmQ=2>454N4e+@68Pv8mLDTaVXn4^Ijcu*a+WHDw+S;KF{qr|30q?KUeEVPbA9F{1 z1_TV1wsCz|%==Ls{GP!*|MRebfFDJBFJ??J3)(Vvj6{FHu?4dz;~z3VS)QIc?TZmd zPVG~kkEk?$Dchdu@b&OhM?LkC=Oibt+G@q({ied-v|dft4@R%tuz9Dgjm5@aR;w$@ zE{9Rm*O=_sZvLy<+&Pmcj9UiMlZ7oUu(#PF_eoWBs{w)ct?(Teog4;vaAi3l#;ZI`i=LO1!tO0`W%X)?gxMRYz6fkbwqgBR&Nj6GQ`kc#1DekA3p7$b75xk}e;ut|rAjJoV5zB2$310sM@qi${lE5Qw zb!mU8skE&js!jXcT!WD_dJ$6zVj4kQAjk^@d4V9O5ab<_n|qHSZV<#Gg7{7X54$E% zX;IT^Xlu2(A>gbDK|Cgikp!`hAa)YOJA%AIkiQ7x4N0fU&rc(W^CZaI@=aRGoh4!C zFR*vIZ0bQ?B8b}rv6mo@62x4BxJeL`337i4LA)b~(**IGAg2)Iwcf}x$34yk2H7AF zen8wOi0R~ZMFK%QCZ$!W1TmN(PGgzz1hJnW9}wgsf?P$A8%fAvXTkZ?LDoA3+z-fo z1i6ABClJJRf*4N_>j`oNK^`N>aRj-JAa4@nQGz^6g1sDqFNQ@hxjrU6$f*Q5hdh6% zP9cb&q^2U3ASV#y4}v^Kkkd$LoPZ!_669inJWj$+9r4M{&DGwucUL`f6hRy&h@%8C zlpxj;#A1TjOFt_@J)_gw_L3kT6U2OS^h%EKPHMU_PH|;?_In2+m-Zrl6XXzr{7sN! z334|<9w*4V1i73bx6{wSAa4-<>F9r496#FlQek1Cn&;lbWymYN$U6i%i693N)qD=iXc}I zRp9*t77t)4&{SmpY7kQ}{d8qeJW^VVHu-Jc`l#IJ8 z{?(oVsz31Vg?>nQoa3nrF+OJ_;{C!dChkj4&0LL|@jqR^6kZI(m%nl})}XH)E=oIC z?<6UTGhm;{;0Ieg#GvIN#xMNfA6!M?Z=V8;o}`L?sE{6YEgKPhjQC@e)CqQasC7~RQ36qcrP zl;-pM!ZO`_z8^Jh_5eQL1Lb^?^Ad;u=m#5VR0vA-H4yc0R4flCX(DnI0byDx>EF#M zXH63lMi>;v$b-UEgh649@_!v3P+xHsL=H%=6iMrrAZa$JB9#MoTyuX=-azEHiG5#K zw021o+Y}q<#m@>!bff=(zE`Afl|Vh~=lus5KA2BM=Xo0RyZ`igEcK@gXF_O!Y~QA;0U9k@DEqu!)YQ)F>ZvS8lj3Xcy)L21o(GbD9!ClAz;=$toW}t5R!%ECrzzVB9Q@r1 zHuPTn?et!H9)8q84F)@(KhE>fL!Rd&sJDN>6qIv;dVT6zaK?O=)4T2|3zL?#ZH4}P z2evy$TC^`2AQI+^kNw?tQ?J^XjqTorZ5ugc{{xQS7`lJ|MJP77|NHY8jd_fxU*tu_ zF{Z5zFll=haU0>msb&DA~3UZVwIx{B6n#N4yc|5k2 zDaTn3lXH3c3J!MMc|4W{+lt9!SXr{{ta;Yv_6(M_)jTH8O36`GLC%WFwKQk*`i$O) z%IeQ(sTrGVZ)xv5s4mn;LC!{GsKwgO$c|-UY0rOV**n-_P39=bQQPeG6;?WMI8<>; zE7vYvtHj>LwqP^O6y)rkZBXcB$yHZVP+p*C#^$l?ENv(|e+&9j$kAr@I2<{VJsCMi zbtP35J>`K>F&$;E3;V>m|G&MFxYk3|e_*lV3a;qu5GAp#ASKEckTsX_qczvw&YHth z=x=|u)?c^U#=(?h$y&yCrtKbL5=~uAQ!Ncu4Gk8{T-D56L5?G~a6m`Lwkr=&api#x zv$u2L*;5uA{^oe9EZeN#aN~f3B3p>qxaDj|Hb;&_ed{YQ zc}uyDSbsYOIR{H47S&XJ1#>2c$EF5LdB}e(mHUfS{-eeV^srVoOnXaHOAgilf7yUR z(Wz4t2hqj`dz2{}aGryWjkO&Xy=tx8QZs!87ag{Wxi(W(jbUnTs?N|bXX`Lbb(xwB z4IOhcO%Z-)+`!BO_s^yMRO=@@ z{_(K--$Mj39g;HUT%?D^Sr~qz{*y>t*2%FwfZH)J05>s$lE<) zXJ+tO_J+Vm=FTQ{8NV*;te@zb9;B|oWG1a&tx1PohYlS^;t7v<0jvoyFxcC(pzMwT`{pq zv1#0f-0w|d*JqqnsEl5p7ova05O#hYs5e^2qG>nFL_WISwWw~j>i@aWk0^u47o$5 zoLhU^>}N(z3Sd8P+_J%XuJfx9YpZ+n!shqhG}*ARc;ULW zPI|G|`rf{lP21O9_^znktB%D;EGP^v3~BvPojUo&;SSH?0_Nm)>0P&FCF5VInEz9L zjnIa3--{)j@kR48BmRGnrfHh5GaajHf6%$*pRr&<+2MfOE4Rk*%TsJ+pVS*$RY}SX z`%vX;#?zf}(>A(H@%8-;@y%;zIV!%`HAmi9sp+e!<=uDO^wcU@vf;mee=Ia}ul$Xj zN)N_99FvsAOuKqg%5SmPFN}ld7fka?IIi27=dttUsQ9yYv*v#;bvn6DXZ4 zY?oYg%`|`Bvn&KL+-6^t#MTqOf%YgH1S;QikO6VDSX+IWp_@ijNvsdvo?y84_UL~ zxO%>1jLnZsZwuxwd09TEbk&~fVC^0D-MxxqIg-bhk9aw+sxa02vghu0 ztx=xl=Hb4Rk{y6(&L4j~KwhHkx2&Rdansf; zl<95DK2=j|r0v?Z)ncmbbNMX^-SsiXsK~zic?SJgQ?BJiC$#9U+}J~C;2966PIh8FPpSNjnn!jrRMw(tEPS} zDPXEM3VeU9Lnm{B7j=EVFs36!`pJ&?n|#xJ&MUk<>dciHk_ovP+P5Y0?%U<2RXZJi zxZ7$?S!nL-B^$SHviI#iGyP%M>>0V2=BHMeCAXG*=JLAh_i{evH>lp&P8JR>FL>QPDI2d~Ou84S_ z6QDnVfq`K%5c2>r1Smjh^Qg>%kksN5Lp|UD$7-|LwHS9z51h>&$7IhqedBEQM8-4I zh35dNfa#?mYR>fQAnL_*%em}{OghZd=gehKVf;NE*zQSXJT*NXNHOX2Og}e|J%;i1 zbnW>->dEwu`RoadN2k98@gkt#7o89Szn%5kJJz2%->BgYZLxN`bU5VdH!nLI}V nWApUs@<5*0^e^&21Ex+7Q{XTaVPykZEC7VUK-P&_>_8p>20~m` From 86d3fef1870763a047555b17fc4648c7e7810d40 Mon Sep 17 00:00:00 2001 From: Hsiao-nan Cheung Date: Mon, 13 May 2024 13:46:59 +0800 Subject: [PATCH 4/5] fix(core): Add 'PSObject.Copy()' to 'substitute()' (#5962) --- CHANGELOG.md | 2 +- lib/autoupdate.ps1 | 2 +- lib/core.ps1 | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28313f7c3b..b10dc39143 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Bug Fixes -- **autoupdate:** Copy `PSCustomObject`-type properties within `autoupdate` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934)) +- **autoupdate:** Copy `PSCustomObject`-type properties within `substitute()` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934), [#5962](https://github.com/ScoopInstaller/Scoop/issues/5962)) - **system:** Fix argument passing to `Split-PathLikeEnvVar()` in deprecated `strip_path()` ([#5937](https://github.com/ScoopInstaller/Scoop/issues/5937)) - **core:** Fix "Invoke-ExternalCommand" quoting rules ([#5945](https://github.com/ScoopInstaller/Scoop/issues/5945)) diff --git a/lib/autoupdate.ps1 b/lib/autoupdate.ps1 index 705c767451..bd24e04015 100644 --- a/lib/autoupdate.ps1 +++ b/lib/autoupdate.ps1 @@ -365,7 +365,7 @@ function Update-ManifestProperty { } } elseif ($Manifest.$currentProperty -and $Manifest.autoupdate.$currentProperty) { # Update other property (global) - $autoupdateProperty = $Manifest.autoupdate.$currentProperty.PSObject.Copy() + $autoupdateProperty = $Manifest.autoupdate.$currentProperty $newValue = substitute $autoupdateProperty $Substitutions if (($autoupdateProperty.GetType().Name -eq 'Object[]') -and ($autoupdateProperty.Length -eq 1)) { # Make sure it's an array diff --git a/lib/core.ps1 b/lib/core.ps1 index b7c3d7e128..ddd274c255 100644 --- a/lib/core.ps1 +++ b/lib/core.ps1 @@ -1225,8 +1225,8 @@ function Test-ScoopCoreOnHold() { } function substitute($entity, [Hashtable] $params, [Bool]$regexEscape = $false) { - $newentity = $entity - if ($null -ne $newentity) { + if ($null -ne $entity) { + $newentity = $entity.PSObject.Copy() switch ($entity.GetType().Name) { 'String' { $params.GetEnumerator() | ForEach-Object { @@ -1238,7 +1238,7 @@ function substitute($entity, [Hashtable] $params, [Bool]$regexEscape = $false) { } } 'Object[]' { - $newentity = $entity | ForEach-Object { ,(substitute $_ $params $regexEscape) } + $newentity = $entity | ForEach-Object { , (substitute $_ $params $regexEscape) } } 'PSCustomObject' { $newentity.PSObject.Properties | ForEach-Object { $_.Value = substitute $_.Value $params $regexEscape } From cddcd98e33d025db810df85ac5c6df653bab0111 Mon Sep 17 00:00:00 2001 From: Hsiao-nan Cheung Date: Mon, 13 May 2024 19:02:43 +0800 Subject: [PATCH 5/5] doc(chglog): Update CHANGLOG --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b10dc39143..4a46492266 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,10 @@ -## [Unreleased](https://github.com/ScoopInstaller/Scoop/compare/master...develop) +## [v0.4.2](https://github.com/ScoopInstaller/Scoop/compare/v0.4.1...v0.4.2) - 2024-05-14 ### Bug Fixes - **autoupdate:** Copy `PSCustomObject`-type properties within `substitute()` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934), [#5962](https://github.com/ScoopInstaller/Scoop/issues/5962)) +- **core:** Fix `Invoke-ExternalCommand` quoting rules ([#5945](https://github.com/ScoopInstaller/Scoop/issues/5945)) - **system:** Fix argument passing to `Split-PathLikeEnvVar()` in deprecated `strip_path()` ([#5937](https://github.com/ScoopInstaller/Scoop/issues/5937)) -- **core:** Fix "Invoke-ExternalCommand" quoting rules ([#5945](https://github.com/ScoopInstaller/Scoop/issues/5945)) ## [v0.4.1](https://github.com/ScoopInstaller/Scoop/compare/v0.4.0...v0.4.1) - 2024-04-25