From e5aea82b6fddd028be7fc5e7e16037a42c8afd6c Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sun, 2 May 2021 22:59:13 -0600 Subject: [PATCH] Add Sidecar support --- CHANGELOG.md | 3 +++ Resources/Build.py | 2 ++ Resources/Constants.py | 3 +++ Resources/ModelArray.py | 17 +++++++++++++++++ docs/BENIFITS.md | 5 +++-- payloads/Config/config.plist | 18 ++++++++++++++++++ .../Kexts/Acidanthera/SidecarFixup-v1.0.0.zip | Bin 0 -> 15942 bytes 7 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 payloads/Kexts/Acidanthera/SidecarFixup-v1.0.0.zip diff --git a/CHANGELOG.md b/CHANGELOG.md index edad5da213..e57ef5767e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,9 @@ - RestrictEvents 9e2bb0f (1.0.1 rolling - 05-01-2021) - Allow CPUFriend on all El-Capitan Era Macs - Fix UEFI 2.0 Application support on upgraded Nvidia GPUs +- Add Sidecar support + - Requires Mac with Metal Intel iGPU and the iPad to be directly plugged in, wireless highly unstable + - SidecarFixup efdf11c (1.0.0 release - 05-02-2021) ## 0.1.1 - Fix iMac11,3 GFX0 pathing diff --git a/Resources/Build.py b/Resources/Build.py index 38c3711994..6cf410dae5 100644 --- a/Resources/Build.py +++ b/Resources/Build.py @@ -128,6 +128,8 @@ def build_efi(self): ("AppleALC.kext", self.constants.applealc_version, self.constants.applealc_path, lambda: self.model in ModelArray.LegacyAudio or self.model in ModelArray.MacPro71), # IDE patch ("AppleIntelPIIXATA.kext", self.constants.piixata_version, self.constants.piixata_path, lambda: self.model in ModelArray.IDEPatch), + # Misc + ("SidecarFixup.kext", self.constants.sidecarfixup_version, self.constants.sidecarfixup_path, lambda: self.model in ModelArray.SidecarPatch), ]: self.enable_kext(name, version, path, check) diff --git a/Resources/Constants.py b/Resources/Constants.py index 6611bd0d22..3dbf2cbf49 100644 --- a/Resources/Constants.py +++ b/Resources/Constants.py @@ -36,6 +36,7 @@ def __init__(self): self.cputscsync = "1.0.3" self.hibernationfixup = "1.3.9" self.nvmefix_version = "1.0.7" + self.sidecarfixup_version = "1.0.0" self.payload_version = "0.0.4" # Get resource path @@ -187,6 +188,8 @@ def hibernationfixup_path(self): return self.payload_kexts_path / Path(f"Acidant @property def nvmefix_path(self): return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}.zip") @property + def sidecarfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/SidecarFixup-v{self.sidecarfixup_version}.zip") + @property def plist_folder_path(self): return self.payload_kexts_path / Path(f"Plists") @property def platform_plugin_plist_path(self): return self.plist_folder_path / Path(f"PlatformPlugin") diff --git a/Resources/ModelArray.py b/Resources/ModelArray.py index 9f91c330c9..e3246e8154 100644 --- a/Resources/ModelArray.py +++ b/Resources/ModelArray.py @@ -443,20 +443,37 @@ ] SidecarPatch = [ + "MacBook8,1", "MacBookAir5,1", "MacBookAir5,2", + "MacBookAir6,1", + "MacBookAir6,2", + "MacBookAir7,1", + "MacBookAir7,2", "MacBookPro9,1", "MacBookPro9,2", "MacBookPro10,1", "MacBookPro10,2", + "MacBookPro11,1", + "MacBookPro11,2", + "MacBookPro11,3", + "MacBookPro11,4", + "MacBookPro11,5", + "MacBookPro12,1", "Macmini6,1", "Macmini6,2", + "Macmini7,1", "iMac13,1", "iMac13,2", "iMac13,3", "iMac14,1", "iMac14,2", "iMac14,3", + "iMac15,1", + "iMac16,1", + "iMac16,2", + "MacPro5,1", + "MacPro6,1", "Dortania1,1" ] diff --git a/docs/BENIFITS.md b/docs/BENIFITS.md index 9a9bbb9d7e..c1020343f0 100644 --- a/docs/BENIFITS.md +++ b/docs/BENIFITS.md @@ -14,8 +14,9 @@ With OpenCore Legacy Patcher we recommend users go through the below table to un | BootCamp Switching | Requires EFI Conversion for Start Disk support, otherwise still supported | Native | | Brightness Control on Legacy GPUs | Supported | Supported | | Legacy GPU Acceleration | In active development, see Acceleration Progress Tracker: [Link](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) | Currently not researching | -| WPA Wifi Support | Native, stable | Unstable | +| WPA Wifi and Personal Hotspot Support | Native, stable | Unstable | | HEVC/H.265 Support for Mac Pros and iMacs with Polaris+ GPUs | Supported | Not supported | | Big Sur-styled Boot Picker | Available | Not available | | El Capitan-era Wifi cards | Supported | Not supported | -| Hibernation Support | Supports 3rd party SATA SSDs in addition to stock models | Only supports stock drives | \ No newline at end of file +| Hibernation Support | Supports 3rd party SATA SSDs in addition to stock models | Only supports stock drives | +| Sidecar Support | Supports any Mac with Metal Intel iGPU | Not supported at all | \ No newline at end of file diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist index c44e3898fd..50ddc0a4af 100644 --- a/payloads/Config/config.plist +++ b/payloads/Config/config.plist @@ -806,6 +806,24 @@ PlistPath Contents/Info.plist + + Arch + x86_64 + Comment + SidecarFixup + Enabled + + MaxKernel + + MinKernel + 19.0.0 + BundlePath + SidecarFixup.kext + ExecutablePath + Contents/MacOS/SidecarFixup + PlistPath + Contents/Info.plist + Block diff --git a/payloads/Kexts/Acidanthera/SidecarFixup-v1.0.0.zip b/payloads/Kexts/Acidanthera/SidecarFixup-v1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..edcf12d4b6543a632d6efeb57869fcd689c83817 GIT binary patch literal 15942 zcmbVz1z20nwl-QQ6fecyy?D{!g+g(6cPZ|qlw!q8k>XIKXo?q2Demr8+zY`2N%+%q z?)~p~?~z}Uy=L#snpy9xHEZVC+0TA8RnakUQ2u73f;9na#Ci>>2tVS-LAMX zqFdrQ3J8(NS_#fDR(ejB@ zhe?y2sW=wRYnwj{l|n9ukdxoCk3%KcrODm3=AVV+Kb}zVBp8@9w zM9mdSfzcy!5ATfBFJ)BpWfaB1#>-c=tHSZu=Hloos-?boE=GnL-TX>B<68@xoSD4~ zgzxq>5UY)<3g;R0X8t6V*q8E^&=F=+0`K9Ivc83f1KgosW|e>ii63yOe+vp~ii`D12ge?K>?f5@Uz&;Qr+y&ysac|jF8GEfe3Q`3Q zPBY4_8KUGf^|GdVjyI@U7h0h4(fv91!c^(W0|5C|7p>Tuq`nn^d#$E_KUqa8{^H^2 zN)|MKgLS#3u9AB8R<9?{g(ZA&;;X|hr_?)d>r`cAgGC*fPm;5(cihhMNM*qk2#c3 z_sspld8bE%%&0xH)v9DFH=z5gV9@#z02KT)=MDz!%w$(7Ra5y``h(z8Ne#Ek;U~i^ zJOB%;N=4Pm=1P+yWghiGEd@}ZwzW<`cb<4^P#fA?Z|H7Tv&GG{&Rsr=&Bf)CB`0gK zHAZy1Q)3AQ*nP+>i+|b}o)50&u>HXZ9^j-lZ%V|3YZKR+s6N`z(Qhr8nfUb!r?mg` ztssASzdE?fmFb*||CgH6wysgju!YHi%Vi|zQ8txJ6ogAQZ1IunwkQV=Skvr{K~PxY z(?3UQG(`0(Vn9PFOe)n!@-D!oQhrv6`+QoYcEx52vJZ2HwfRA*UTzxHQFzPKF#)EZ zhe>2*VQ`=0(t};mM;&1U?Wr7e^Q<@a4vVbP(NdW=F@|Akdp6sObN$@6v1qxt7=BVu zyu-MbnO;;fkleQr4FyhE=~W0gX^XmY14Q^)z3H>#ybz;Jc89=@*2C4`5=qbI5Mg`q z9x8XlE$QWQ`qIhEWMwrd;hWCVH(ttCxp#3Ja zj(q2OyqI^7Lp7QdrJ{gO+c!i)l;!ed&D^PbWIPuWS8w|6iVnthuW+vBO&L=h_^*HhF zO!L!4uM^8oaDJQU%)!Vrr(j5oM*h4+o$~i+LsYPL{>3Pl(295KhS!Vg&G;U#uR@r| z+O!*{GPjTWuMLhejCTDe7B$!1G6_75oaQX$WPs0cMH>#|b*8Vy?pbmHo8l}dI_et^AuN-R1yvh%q>W08f6of7p2I7+O*G+|?A@<6PDky8xq zpbVo+9j4ES&y>D+?Wfcwh?~*y2+}?L3>{C zJPb2iRlc^ss*hrq{PIQj3|g8+%1!6bQfozONwEWJ#{gD86y=w8w8H8G>}15k zz2Oj!+|d0qyhmASLWB#9Wbr+ok81HOCt^;?3gqiFBug|*j|G1`9eWy|$w5h^j`Dc! z!kE0=Dn8>oD%BK~rs7(60+u~yS1sGyHwsM|PObP`2*l2Dzvr&r(#I{eFJ|=^ZT4n~ zW_*cm^C^2f1AZL=n0_VKE5RaJui4Eipsp#*X_X)22s!#0^NH1?6DM3BWV0gk8H_9( z2yBlB4kZi7+ODiK%w4DBc!Kx~$U1^*Kah35apoxdl=^ZIzu0FD{fg2B`(-(6*^GSg zIs4;0q2t_{S0##pZfsifQ#Iej#W94{vbduiY`L^rETx2Mq6lmU!TE1FKlx z73)?2zUGHFWcaEc`ywJ$1Lklx)jhL#4lgERo?OhTnuNzixlhv%KJ?g=i=Q(P5eA#L zzA~dVwXqcYXzKo!WyXF&y&;~I%GmPV>4_aqWJ*73A5((Vfp`r3826BNd*Nr!Y@g<@ zX-@)Av!CnO1RJk#bpQ-ZFCtGJO!6k{#`2Mn0w1ox8L~CI@`C z@gGtz-h5(ZvQB(VsXF^5^6?d+)NUQ;TzDh5Vp2e+28I?zqkG@p4F;MTGjX6&2U!1!w z4DrrcBNNw+C~Ch6o4Ze{y7}NVBo?UBpY8g^e!2`!E=9ymLlp@U7%7&A>~xl{)) zj(@%qRAmNrP)g<{#z7k5C z+n9DA1*)&Ha|Bc=RlW2~{whvHGx#M@&pr8Km+in&P8D{-Z47*0#DzPR#Q)5@zxx1m`L~w@z!X!dA&y zD}kl|v@+k8+qA%X*VeS@IRd4*l;OnO>q$fY01JcbXIs~#t<_XTn^$zWR_x_tBnQ=> z@~5aB8VJMXw8RwODa6N)0B)bz+KUi>m*8Zzv?HA**=#rU z|6NI)ltTA7izEyIcbVU+4{3qyBmd0(@eJRN%sI+s7MX*F%b5qA;uIJk=e2Um*XgaeC%@xK z{G;ZfaTsmn+kqbu%mn72K#MQMe(Da|5!YnDB;S)1%{OQKg+RFYCHO0m5MT|sS&Tx@ z^u40a_Udq6P<;v$;a|@ZF7p?0UXmmrQ&+ zmq#=gr>8&KX;KbeXiQ8L+jEF4b};#LfO4+EQe;cTq4t}8!&mx+voISMC`+|&lS;X? z-7A^ms2F)08bfvcnM|%fL?=VAcKq{zs1g24?Rn+qU-{Q_4DiL+cA7q$mJtav@6XM* z3!B|@5zb+*3}b-Sk)h~q>5FAQ&d7MDx65hqDwhrib5p0E+*_y?Fl1&z{e~V<&r(M+ zAOi3c3=-{G_KI5FrIhQyt9v04zqWYJR6RQts7UvyPO3eW)5n$_g<5$%81x>B6X>(6 zg6j0d=1auwTXYu>wWZ=r4@JJN>2GSICkiww^6FHY^4ckNsLl*3j5=RGZON91MTmQZ%_;50MzkDS{Mw(TWybOjSS?)ivDZ&g3yfRw z?cUvb`ibs6#j$oSmf1#*_jBN6iMUAt%vJ1mA%txs?<~ODuX}}^P3~C)VIvIhEuh%z zL$p0b8CL6?)jg==#KQ0+d>!m)faxZ61$lHg8kQkH5d%T?QTntmRm%L3i0VD7{y||{ zqGE$=M~B5d&3nf|9Z$~B6}$Ka{Jr)EL1IjUWs}OsH$3 zQbf1r2T~>LeAU#x50P&Z)ofM!b){1ybMKw^7wr{9cYpgB{whm%gddYq4Dl>39Z||y1CFF|r)AQ$UoZzD#pnj1~;myD)y zzSZ7?7M96|)V|4AgIp=wZ2vPi+8K_<DMMkc+`kRA$%PVKs7uj>U3L=M6@fQDk(7LBS+b-^Tf7vY^~q6 zbzZ_+-PB+nYhLH0yWEbmwEeRFJ*Q0vx0?r6;=TZZ_8K&6v+8L5vK9~uSb9%!DmVYL zC@MVAi;}M}V6|+z5X=*oj#WA>`1{1^GCsn)#W5%=!k~>QPHl)H{f)F8YGDmi9Bnc9 zJJDD^Fmhj8EEct^cOgWHWZvCDXk$a@q?*j?i(uZGM2vP)w_j3o(`x5lZ~ z<`LxLgfiDd12WAW*y#)8*;}3*P7@F7ghR)gYk#XQ*HE2w7H3IVp?&@M1K^7Pjl_Nd zp4aTJ@oGJc=jKLm{p_OuYIfftfbJbT`g^DOGNZA(`(%W4iLN6oIS}#;k_EcX#y7mlP8@OZ7_J+Qzuqym>J(o5|Q1m|RhL@)rkrYczSPb7lH(v~E#KkcDR zXv*>+9Qb}yLB?hTh#HH0A; z?X>y~ebjc*;g()m;dK^D!iU&NY~)Fi@zL_S-M>0M-Nbb`NEsbpth5IT4(_!~o4vw> zN*XXte(-Wkw!g=6e3mG;t1W)-^ei!X=*boBEsS4E((?OG{xkaPvjLX&eC*kd6D#5(H8}uN zA;GIfjEZ z2uawwkG1AByg-6|Y};04;szh%hac5oMDX5;>Tj2fS_V+w0hUab{CH)7^nT4g>1TsA z4Ya?SqtJ_~jAm81q?T}Le$k!CS>PakG?Br!*sgDJyQxDw`Qj~tF90OBqN>NOT1(F~ zCh{+c#(tgRr3%SO2Rl3vLib~u z%3U^h&Avx{pLW9sA7H%ixc%z9J>Jdf865K_pWzxyg{r!)HJIpjm)&UF%YqNu&g1rW zO-kuOYKrvg!3)xzCsxFN%808Ce{XC9!EjC}`Mi=zU~g^?d(-`%j|MQ3C1?yg^VU?j z|7BCLqiSEVgHG|KpJ27VH~bDeu8cgcj3Tb?iS$I7ATL)KJH2G*c)-edfHK8Fsru4w z;Ro~S+!powW!|g4_3dPO>l)R?Fg;m?&*!|WYIY?T^njn!m?VU9)Y*z@;G_}I^icCEw)09=FosQI8Z&{%{tMZ<^>3pqce1;h079Dw5LB5W2u+ zmeygpV<3PYX`Tbg=;gi&C}AJ0&A-2W+p(R=H)7i^&Qv&Z5-S_byeN>}(D2e{%2j_u zML#493leMNObmXWGr!uo)S7kp>yd@3x6GZo*|)(xkChq2(+r#}oa3faVg2aF&ZT)x z0~b7K_3Oez%K^&sIV1GhuGYQ@+gMmXae3GLgsI8AW=H?T<5#ceXu^PBIi6PGqvUY& zaJJcOSyzTf@z;vz-8)ye9aX(H2YSm_H%`*k&D~PTclPayyU3nwH)PG|iVB?}-rIA` zTJ@`cO@AgVA}Yk4o-R^b2t7JVwJT6g_n(QZz>GZDXH{Lu(RcmkUIyaOC2P2&lA0}~ z^e~&)0o64AuD}h1H@avy@HpZSQd(@OyS&!f37y63TsqV=v-{TS>9A^B?qz6Z9BU4K zFh6=@tcA~jcCJ|1;ffG9Ko83#oyT-e0L+aCOlJnllEe686y%V zAvfEpMA$5`kK5&1j{Do0QLvJuLn(em=9o&|Y~pE^3l20QWAy1@|7O`TnqKhcBHqqNX`4Y{u{<8(9&QLCRW>EpOnzHibC%4XZQsBYG>b**21 zuk==~(#*B7tm#?on@H@qgm1~UOPCTXuWV|Q$vm-TOmeu1hMoeyw*XdF=-hu3h~7kJ z-*=C~H+B(ky#H3cPtg3Ep!wIoIFQ!YgHhYSn-Q*0-jSDEPLhAq*Sw}|58sihH>AykUmXbK^-UX=OC;@x9L-lmZGYdW z+;Hg*86K*1Vaqp2)^I>RK1z4HegscI1RuRi@WmT`AH80i8v5Dovzu!j5y_+#ch=qq z!>~?eki@_Z9oI0L;~rr1Mk2Rg@=N9pEI8k}mg?a{7D7Ui`gIpNM`nnmBI3TvXV}m< z>CagErY)2h*H0e>uV7&9Zr{(a%DONAIAa{C&b*;FL-FR@T^6Ygk+Bbadcl;v?;rb` z{0EHgx9t@$8Y(-IWT}2_Cr8#Bg5tewKPT-X2IXnP2lq+@RFdgii|>8z3dx*Go#=G%Wnag~K@O^LvX3+y0uEK-jvlv92SJ3aIkV#+@QdXfw55;Jc zz!s#w>Q5V_Ea4#AA=~2pX-gJ^@aBFB-;*7gmnYpsS!%|DpsxU8EH)8F?02G_nwK6o z)lc%}gO(W^9>hOI2XJlPT1U~zQ5*g|bBSpq0w%uj=ja{=C!7o?(`~*8BRJTKaU(xQ z;CrHYt_4x^S+iLq#E#8-R>`|NF>YB?X_xb4LeL=eo4}VjGBAcsBmAg9HA%WN-_Lh9 zsY^rzjBD>-e9PM4?3pr-x}kTMhduWI=WaM)=V6P5Y1m_U0yfu)LoGp4F_81ySnoeDriYjOE);1o0?zOY&r8woZ1qCUcv@BH`~Ej1x-IZmj)Tn6SI3 z-LUcKDILQ#i{6kbW8*W+guhjhdqMfZ4Vw_ZUq*m%E(R#4gLjX0zg^1fDMQv-|ag4VQ@BVc>tUM3xc=2`ZH>JDAph-e|}saiFpK? z?;sh<=bZ%2SJ&tus<%%I?txgV4_B~F^PTzQyE`2SSQl|e3=cw_7fJ)qH5eYAo*zNg zp*X|f5(RJ`UG7)p=;(Z5<+ltw>t@#XL5N0qXtb)U#rV9sY56&zt>O9###@DS)IS*< z0Sl52NIUmn0cOFRkY=`+hCqvM4_6`H(dP!~`|}sm@+P{70e~^$D&*RFhmN~8RO+F_ z0vi1aX)hy5+AJZTczOQfXcpP6+G4yPZzo?4F?k2tI|b__691^+e4hYjMHV0e4E^$Z zENF8w5Em-7^DO$4Mg8)9zIoEV7UI?Ud@48(8I4VoKk*`jMh}4ICBjNzS*v$fcLTMR zvsW4juk(yl3s6~3DQtNVU<|*!Q;j}9Wqlypp3hN$6}3Z8(r1}MQvuDy0NM7`Tlr0u zYQGwKch)s!Zusgt>}*P3f}lx!obNJdCdFmuHV5DpGC2OmJosaNh{!1)XIRQPK`O8T zQa#^xh)gOIusNM7Co&tpBoK7u`Nf_4f7+iv@*v;p*;esPPc$ zs^x@izm2*>kcJ%ExJepvF0YVT2{s2IBF_oZ7COz>!_1(~AHg}Wo$dLfjnwW61k%i1 zVCo-NV_@>g%99LEuzhn_hx9|@xyu}4QW|g>gt+vr2-~KkcDUKA4@5Y_fhB)bJlpGX zVen4NxN{f3Y#=;rgJFjb>DS584G~ZinYQpdxFYm(1-!%$hy|4x0ImC1=_0E^bnvk4 z<-a8dSYxpUnPW*JVVCzA=<}6F8OZ3;!8=Qhp~7vW`C;HxE#%S$MBIU(omX=g)nOJF z4c73^-PgT$p`-bvM>oQ$B46Q$p`&se?Kj9LOmn9$BG`K!zyqzSb+Bo%AsE;a)IDIB z0cajXwBPW1NkhlMb*{n`h}9v!;gD3eAW2`&wX$2=-g7a5z?Fd@L$zA>OKsBiFPk1( zRbYn`tKPdk0&~(nXw)GOLYYPbG(Sr1P-_k}tuX|#`Eku1T^MlA9W~y>*C&F&(Z4Ag zEkMx^TKBUMw)kd4P_qI1+)-JXlRo0=!_}RiT&+1D7+C;2O->E^@5dqf4`bT!;Fpl5 zv>-25Oq-%r-?FsEyb`aa;*SAh9uT947DNo+pTnyTatm!EX*_oRTB zTZbM#BA}AwDT)M$evAkheH*yhjo;uc2w~|-A_QxMY|HvdM=sEJMj;jQ_)QnFJ=w9R z3}F$sZ)5%3nLFcewUF&=FPwTPHYH*$n4~W?CGuZ|NJD6PK*V%jJ&3aybnhap-Oul{Db4sX@t2R#u5sjgv4@(N@dny59K-yHl}RD<*l`wG=CJTv^v!OEg+-0_@PN0sZ9N(!4|xGoY7+Sh zA+(U4o^e8;Y`f(%v+*AOO_$hal2ewNtk*Z9o7pk>^kEqRht!mS9;Z#J7&@k~?AwAC zKXW;1R$6)lEo8dKf|yRneQy>yE7`F~FXbfz^KvVZpq=k-v3ew80SvtP9($xcDt~&j zg=O3(WBOea=PQOhhM4v65uUQ-wIoXeV{CdNdI(5P8Kr-bOYpJclUOLjLN^^^0l&8R z>b&3IzS_KxU8m=jNdK+Tv)bcNbV`qS_r2)n*ikHqxijr{uP2{GLn5({#1q%^{Vn4k zD5T2)1dyJs6Un$+p-o<7RDo(RoZ3AM=cMn60a6gV9smo11ajQ_Nn`UU1}G21^jsyD z*o!%3T2pMdEYF=MT33L1Z}P<+r7s5JLTq|~4APAsYy3B(V*#u+*HiG=+h>~@F$9;3 z(5IUhv8T+)aKBq0!;Q_3wdpY+T33RRLxz#V8h^3?RoL{7xwtrJVE-gtG#i#xRAo)c~pTZPMo zY%afKk+j2ODsr>$76YMXD`UpZp;LtZ`nkQT$AA-Ix3pGYFIV1c6;3_}Wpr+6El z-Cna7N@fmD9-;+U;y;xw(q#`tdG`Z5|BFc|}tu!73Ms|o%6SNoJ=7LHVx+>XkJ=u+}ybglY_ z=y_%;!WV`M>JsOf@IUHcK)C4e)a!8!gqk5}Hp1IWwtta?i0_#w}f zU_qLB4;9|IjT)4FTiC2BMd%;BP1E0@bC_`AuLAf6U+-CW?POvPezts?g0Q*o5J>z6 z$NKp4jG#9OextJ51^5_-eAGltu*wM!M;IO^!U>dt6KfH5GorKV70@D^|Lvs@q6CD~>) zLi-#$)cEibJS_+7l0poyUoSvgFs{;BFg_e8^B{kS25;P^yL-3I;Mgh8aTMOk4vlip z2$At02$c7Km0Q54l2^z#{5=ApbdDOTh!j1fygo;TS8t==wIU@7DWynB&jI*ke zsvi2{c8Mh!?C{*Frj~SdGfSuXsrxi_bH{_oSJ7!rbT$X6uQGV*d{}p1<4t&f%6ord zh!6LvDM=yW?pX0Skk|>pk1!V*pBl5_p|P+!$e4zhK3Ww+zC9txbE4Vm+*#tmxoT|X zwCtI_R(wfXLdMf{>0Xl0Q`=x&UXssw#Z!OjSK`4=Q`2y13@QQZiO)J5Y<5Fn?7lBX zLiRegLrYBdj9WJYR6#dJt$0w!@UY^Bu-KC9wBIr?&V2=N$xhxiZ2iYH?Q0g%zE&rj zjLF4$8Z{;HEv1a<8co*p5#i6^z|~HJuzrm;=>15pfALg! zRHAvNn4s=M#meFGF5rp&EQVp(gpxyE6AA#2x-U2oo; z+*#_Z&4mt9NX;Bc&+JLhoJtG*l5Q9Zb!@z!pe)n$c2$zE{CUz5DUq!t;AuZM@by&b zY|i?5WH2MemrDM3cnd3EwqTVb7V@P`9gDi{$X6AZ#dRQ-Xn0~udPd+j*9e%>!|d0v z3H}P!)Wczl(ZgX}{j!g%UE$$lW9ns=2UgEhRqTAg6~;?*Sr+HX6xgf~K2S3*8^wv! zzSemVx@EWuAI8#UQfnr?e%Dw8xnfsMY` zl#@BZUuF-86DFtd;2pe7-D`dsDY?8`k3I;WByAU89%&~?)dmEnzS56-nkNCSOyxDP@ipGc=VbQe>>G;!^h# zjp{K-`riNX!(n?@tvYS{I|dMlXXUA&2W!fR43Wj_Qoiy~JguWFx5R``JTr9HjV8bd z@}Ku8z}%$$$|Zl7QmM4w-+H|~Yg0U(Q#^<%p71Fiy%LiO)#jN`?&UnI+6FV)W(}Wu zhb>lg+7Z1{y;w4y8W1AQ6`c_5r#DaO(En7)BCE9iRFOZuiMOJ@?R$2jU(T zwUQr&&)vT^IN1JbX~KBbtefUu&bwNKWk&z>K*YH<{)K%fMPL?x^ITP8?>(g)&)Tb_ z;EV0JeP&4P8etwEaX`)Uhsg_?E4Y*u@P0|XZQbLZS3kH;UV+?<#=3_Lu(g6WGyNmZkay(zjE{6qInu8pxAwe>y!Bmn8xrN%Z$bJQw49kFpsN|m5$A4 zq@VJex)kfwNgq|Gwzb2W4d0L$CQyZe#N@5Z08_K1uiQig?(N@25-q;gAAVgvI{32* z{L%9c*GDF(E8n^cB}MQ3L10DaEy%#|PeFk7Cj zkj?cHD^>83QIoT?`{*sT`c*Zs;zc(cf*SOwa6l&&+*i!H)6d)oY#GrpQ^ceWFTeSb z2hX05S$aDbTSSId=tmG-9VYp1blHKsL9JZrG%TyL%DbJbM~|kIor{9w&sLBKPb8<>-Nh^-GMYb^bkq^2w z=TE877G4T2Or{!M55(6dD9))ozE+rl7OH`kUQJPjnd0pC4;8+odV7Q=FSEpsvjxbX z?}qSfVoZ6(N7~I>~ybQzMkIfk`>2TH-d?yQX70HDq-4^9P$ik&^+uv)pY6D@W``i z8zV_t{7_PZsBxXlbTZZEbo{N;q(b8qnQN{;ZQtCZU^?zJ~i!>9j80NIx{*b1bL>xpbyFHg7qRg*K04*uzp^_`en4PN{e zx7k1?;2|q+hjd9%+N#8?^d+Q+jdQPk&6% zk2yI9ZOq5!-wI4;MU~a5N;$>r)Jb>Q(Fl}>oDyl`F8RZ&?Xg(Q%OwZIchyT$ut-0c z49sYQ&nP9`#$KZb^nL3qxu21Q9m;M&gz{hR=YD@vU`#0N{Vwx41L_giZ;V2 zWa?y>Y)s@#v?f@oA4B?swch6!Ub3fPh$~~9kR^|I=Le#0)^2Q@9RZxPlQas4*IL0& z4K!@{T2$srp&Dlh0m?g$BZq=c$C2*Rfy})Z;YrCJ3j6a}^^ee>2<)0Y?^tXUtj9R1 zGL`WxlkI|j)Q$9ZpkQ`!{oa7O9P^u1u=Xo2#IszMs_2r6*O{GrNyheTUP5=#(#TMJ zr?zx=jN&x7c?Mmcc6xwi27+Q>1ExmxX;P)Z;EHf`O@C5g8)wcUK==uv%<>o6fUuy+00yUMxh9H?chl^<-dqL3l)Zp?QY$sj&~M zu4sg->AMN#5>H_5hnE;MU!OrTo72FxqgyrYo10jh9@{-UZO zubd3y)4`cl9r!EUkj8S7<;71Q&NebB0rZ6f_sQrcr^KZ$=*%4!FzA^P_H8};vcuD- zpba0(JwuNO%n;>YWB7^}q7G?P<1Z5Yv_D`~|6ry&w;7M-{)SCkYSWjM=q*eh^b9|a zo4SOXI>RuatW0>YFW_4z4IEoI;gzzK+ZRT+txrvD#BLcV2QF2*OV>%Z_^zXT78mTs| zqUFUzQRZA4><`hlk3R%Atyda!W*p^RyRnhEa55NR>jPaf`RE-2(W2}_BIXV;pl6Ed zIoCT7s5=b%gF_p$AaQ_628(EjM-}}5>Iw-bg^O|l=Fb5dn(9kAk*|)t5$gH0;^1Tx zm$K#bD`h1e<{U?58IF@%%8_CmYnsr!M~KN|%*{boeGKt&o6KM(xp;>0;5NMG+%0=A z6spO5T;R;}X~VnsN{}al(n1r{2e{!LP1$P2f~ZVFKuQ%8q&)1 zxNQkIQ3+4|t|+F_O!&6?+(h4g_a?&CP2+`YfA$M! z2k6X1%ag8nr)JI%_cq`4=_4#QS@XE_3OOV_&12)dogG(P4lNyV%vbDde@tWYsXxOI zt7Pn36b9&yo^l2jov&)>n@v7TZV^Wq^gkTlTF^X^<9Iup0cQxPR>9Ffa9&+ofGg<}w~=3Z7X9pgDB^B8mT3mT`6}>%WtXrDra$0 z)FMM@?d4+4x@-tJX`Ji1@CsxwOY!S{0V*$ncwa%r8DwK{L)w>9b< zo_*i)_v&qSqCuhwN4q0kZ3GextHEkTZ)LI4e*{p=756=#4*&3oaJFz&_%@bN=aFLH z7t~vY%YE_Kqy4Y~`6*GHBITo>1-+(cF?=!#KPG^SiXQD>RKNJkDBRhYG!%K02p`@$ z5a%`GW!&NlM5s_^oXOt!YDWip^Um<9dVFD@GGdysKVtE$!lQpfq2*!v-YbcOLHYWd z=oFm)+&n4wO^q0&s@%wqHdiG(n%{0Vy7}}pL5{I6o#C7!)_&klZzIj4s4kqR%|-Mi z==o>l-THFpl- zhrwN6i{9*iT4i25R1XfVe4)J7)=Ea#*-jQ1#4~K zHuSP0Z^=th}QVXfe++<-A(abkPUKzc#3RaC+uYUbixAbs^bh6iED;j97bn} z80CiI!=}Jx1^Jlt2#uId98U6j0w&=s5R&i9p%Zo=6A!pBDE5UCXsV*3(W3t=8ZG&M z5NZigPGtXF{*`O@pQKvMzmsbJfz?f*Lf=YInz{PzI=K(_sN zc>lGF{CBGD-yK3SZ&8ZFF_EW#4AlR2=zrk-58^En{15T=-$e5t`ImoTH@#ok70s}n3r2qf` literal 0 HcmV?d00001