From 68744d57439b6b9153b6a50849d1d1103189a829 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Fri, 19 Jun 2026 07:22:52 +0000 Subject: [PATCH] fix(packaging/windows): vendor SudoVDA driver (no upstream release) + real nefcon URL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first CI run failed only on the SudoVDA download: SudoMaker/SudoVDA has no releases (source-only repo; Apollo embeds the driver in its installer), so there was nothing to fetch. Vendor the prebuilt SIGNED driver in-repo instead. - packaging/windows/sudovda/: SudoVDA.inf/.cat/.dll + sudovda.cer (derived from the .cat signer CN=sudovda@su.mk), pulled from the dev-box driver store. v1.10.9.289, Class=Display, HWID Root\SudoMaker\SudoVDA, MIT/CC0. - fetch-sudovda.ps1 -> stage-sudovda.ps1: stage the vendored driver + fetch nefcon from its real pinned release (v1.17.40, sha256 812bae7e…, x64/nefconc.exe). - pack-host-installer.ps1: call stage-sudovda.ps1; README updated with the driver-refresh recipe. The rest of the pipeline already passed on the first run (host built --features nvenc via the llvm-dlltool import lib; ISCC + signtool found; signed with the real CN=unom cert). Co-Authored-By: Claude Opus 4.8 (1M context) --- packaging/windows/README.md | 15 +++- packaging/windows/fetch-sudovda.ps1 | 91 ---------------------- packaging/windows/pack-host-installer.ps1 | 2 +- packaging/windows/stage-sudovda.ps1 | 65 ++++++++++++++++ packaging/windows/sudovda/SudoVDA.dll | Bin 0 -> 83216 bytes packaging/windows/sudovda/SudoVDA.inf | Bin 0 -> 3644 bytes packaging/windows/sudovda/sudovda.cat | Bin 0 -> 2425 bytes packaging/windows/sudovda/sudovda.cer | Bin 0 -> 772 bytes 8 files changed, 77 insertions(+), 96 deletions(-) delete mode 100644 packaging/windows/fetch-sudovda.ps1 create mode 100644 packaging/windows/stage-sudovda.ps1 create mode 100644 packaging/windows/sudovda/SudoVDA.dll create mode 100644 packaging/windows/sudovda/SudoVDA.inf create mode 100644 packaging/windows/sudovda/sudovda.cat create mode 100644 packaging/windows/sudovda/sudovda.cer diff --git a/packaging/windows/README.md b/packaging/windows/README.md index 69b48f8..70ebf70 100644 --- a/packaging/windows/README.md +++ b/packaging/windows/README.md @@ -44,13 +44,20 @@ Silent install: `punktfunk-host-setup-.exe /VERYSILENT` (omit the driver wi | File | Role | |------|------| | `punktfunk-host.iss` | Inno Setup script (the installer definition). | -| `pack-host-installer.ps1` | Orchestrator: cert + sign, fetch/stage SudoVDA, run ISCC, sign setup.exe, emit registry paths. | -| `fetch-sudovda.ps1` | Download + SHA-256-verify the **pinned** SudoVDA + nefcon releases; stage the driver payload. | +| `pack-host-installer.ps1` | Orchestrator: cert + sign, stage the driver bundle, run ISCC, sign setup.exe, emit registry paths. | +| `stage-sudovda.ps1` | Stage the **vendored** SudoVDA driver + fetch/verify the **pinned** nefcon release into the bundle. | | `install-sudovda.ps1` | Runs at install time (elevated): trust cert → gated device-node create → `pnputil` install. | +| `sudovda/` | **Vendored** prebuilt SudoVDA driver: `SudoVDA.inf` / `sudovda.cat` / `SudoVDA.dll` / `sudovda.cer`. | | `nvenc/nvenc.def`, `nvenc/gen-nvenc-importlib.ps1` | Synthesise `nvencodeapi.lib` for the `--features nvenc` link (llvm-dlltool / lib.exe). | -> **Pinning:** the SudoVDA / nefcon release URLs + SHA-256s in `fetch-sudovda.ps1` are the source of -> truth for what ships. Confirm the latest asset URLs and fill the SHA-256s to lock a release. +> **Vendored driver:** SudoVDA has no upstream release (its repo is a source-only VS solution; Apollo +> embeds the driver in its own installer), so the prebuilt **signed** driver is checked in under +> `sudovda/` (MIT/CC0; v1.10.9.289, signer `CN=sudovda@su.mk`, Class=Display, HWID +> `Root\SudoMaker\SudoVDA`). To refresh it, copy the four files out of a box's driver store +> (`C:\Windows\System32\DriverStore\FileRepository\sudovda.inf_amd64_*`) and re-derive `sudovda.cer` +> from the `.cat` signer (`(Get-AuthenticodeSignature sudovda.cat).SignerCertificate | Export-Certificate`). +> nefcon (the device-node tool) **is** fetched + SHA-256-verified from its pinned release in +> `stage-sudovda.ps1`. ## Build locally (Windows, MSVC + Windows SDK + Inno Setup) diff --git a/packaging/windows/fetch-sudovda.ps1 b/packaging/windows/fetch-sudovda.ps1 deleted file mode 100644 index d4f77ea..0000000 --- a/packaging/windows/fetch-sudovda.ps1 +++ /dev/null @@ -1,91 +0,0 @@ -<# -.SYNOPSIS - Download + verify the SudoVDA virtual-display driver and the nefcon device tool, and stage the - files the installer bundles into -OutDir. - -.DESCRIPTION - The host uses SudoVDA (the SudoMaker Indirect Display Driver the Apollo Sunshine-fork ships) for - client-native-resolution virtual outputs (crates/punktfunk-host/src/vdisplay/sudovda.rs). The - driver isn't in this repo; CI fetches a PINNED release at pack time so the installer can carry it. - nefcon (nefarius/nefcon) provides `nefconc.exe`, used to create the root-enumerated device node - (pnputil cannot create a software/root device node from nothing). - - Output (consumed by punktfunk-host.iss): -OutDir gets the driver payload (*.inf/*.cat/*.dll/*.sys - + the signing *.cer) and nefconc.exe, flattened. install-sudovda.ps1 is copied in by the packer. - - PINNING: the URLs + SHA-256s below are the single source of truth for what ships. If a Sha256 is - left empty, the script downloads, prints the computed hash, and continues with a loud warning — - fill it in to lock the release. Override any field with the params for a one-off build. - -.EXAMPLE - pwsh -File fetch-sudovda.ps1 -OutDir C:\t\out\stage -#> -[CmdletBinding()] -param( - [Parameter(Mandatory = $true)][string]$OutDir, - - # --- PINNED SudoVDA release (https://github.com/SudoMaker/SudoVDA/releases) --------------- - # Baseline validated by the host backend: SudoVDA 0.2.1 (sudovda.rs header). Confirm the latest - # asset name/URL at impl time; fill Sha256 to lock it. - [string]$SudoVdaTag = 'v0.2.1', - [string]$SudoVdaUrl = 'https://github.com/SudoMaker/SudoVDA/releases/download/v0.2.1/SudoVDA-v0.2.1.zip', - [string]$SudoVdaSha256 = '', - - # --- PINNED nefcon release (https://github.com/nefarius/nefcon/releases) ------------------ - [string]$NefconUrl = 'https://github.com/nefarius/nefcon/releases/download/v1.0.2.0/nefconw.zip', - [string]$NefconSha256 = '' -) -$ErrorActionPreference = 'Stop' -$ProgressPreference = 'SilentlyContinue' - -function Get-Verified([string]$Url, [string]$ExpectedSha256, [string]$Dest) { - Write-Host "==> downloading $Url" - Invoke-WebRequest -Uri $Url -OutFile $Dest -UseBasicParsing - $got = (Get-FileHash -Algorithm SHA256 -Path $Dest).Hash.ToLowerInvariant() - if ($ExpectedSha256) { - if ($got -ne $ExpectedSha256.ToLowerInvariant()) { - throw "SHA-256 mismatch for $Url`n expected $ExpectedSha256`n got $got" - } - Write-Host " sha256 ok ($got)" - } - else { - Write-Warning "no pinned SHA-256 for $Url — computed $got (PIN THIS in fetch-sudovda.ps1)" - } -} - -# fresh staging dir -if (Test-Path $OutDir) { Remove-Item -Recurse -Force $OutDir } -New-Item -ItemType Directory -Force -Path $OutDir | Out-Null -$work = Join-Path $OutDir '_work' -New-Item -ItemType Directory -Force -Path $work | Out-Null - -# --- SudoVDA driver payload ------------------------------------------------------------------- -$sudoZip = Join-Path $work 'sudovda.zip' -Get-Verified -Url $SudoVdaUrl -ExpectedSha256 $SudoVdaSha256 -Dest $sudoZip -$sudoEx = Join-Path $work 'sudovda' -Expand-Archive -Path $sudoZip -DestinationPath $sudoEx -Force - -# Flatten the driver files we need into -OutDir. SudoVDA is a user-mode IDD (a .dll registered by an -# .inf); pull the .inf/.cat/.dll plus a .sys if present and the signing .cer. -$driverFiles = Get-ChildItem -Path $sudoEx -Recurse -Include *.inf, *.cat, *.dll, *.sys, *.cer -if (-not ($driverFiles | Where-Object Extension -eq '.inf')) { - throw "no .inf found in the SudoVDA archive ($SudoVdaUrl) — wrong asset?" -} -$driverFiles | ForEach-Object { Copy-Item $_.FullName (Join-Path $OutDir $_.Name) -Force } - -# --- nefcon (nefconc.exe) --------------------------------------------------------------------- -$nefZip = Join-Path $work 'nefcon.zip' -Get-Verified -Url $NefconUrl -ExpectedSha256 $NefconSha256 -Dest $nefZip -$nefEx = Join-Path $work 'nefcon' -Expand-Archive -Path $nefZip -DestinationPath $nefEx -Force -# Prefer the x64 console build. -$nefc = Get-ChildItem -Path $nefEx -Recurse -Filter 'nefconc.exe' | - Where-Object { $_.FullName -match '(?i)(x64|amd64)' } | - Select-Object -First 1 -if (-not $nefc) { $nefc = Get-ChildItem -Path $nefEx -Recurse -Filter 'nefconc.exe' | Select-Object -First 1 } -if (-not $nefc) { throw "nefconc.exe not found in $NefconUrl" } -Copy-Item $nefc.FullName (Join-Path $OutDir 'nefconc.exe') -Force - -Remove-Item -Recurse -Force $work -Write-Host "==> staged SudoVDA + nefcon in $OutDir :" -Get-ChildItem $OutDir -File | ForEach-Object { " $($_.Name)" } diff --git a/packaging/windows/pack-host-installer.ps1 b/packaging/windows/pack-host-installer.ps1 index fc3c451..0422dfd 100644 --- a/packaging/windows/pack-host-installer.ps1 +++ b/packaging/windows/pack-host-installer.ps1 @@ -113,7 +113,7 @@ Sign-File $exe $defines = @("/DMyAppVersion=$Version", "/DBinDir=$TargetDir", "/DOutputDir=$OutDir") if (-not $NoDriver) { $stage = Join-Path $OutDir 'stage' - & (Join-Path $here 'fetch-sudovda.ps1') -OutDir $stage + & (Join-Path $here 'stage-sudovda.ps1') -OutDir $stage Copy-Item (Join-Path $here 'install-sudovda.ps1') (Join-Path $stage 'install-sudovda.ps1') -Force $defines += "/DStageDir=$stage" } diff --git a/packaging/windows/stage-sudovda.ps1 b/packaging/windows/stage-sudovda.ps1 new file mode 100644 index 0000000..c4013cd --- /dev/null +++ b/packaging/windows/stage-sudovda.ps1 @@ -0,0 +1,65 @@ +<# +.SYNOPSIS + Stage the driver bundle the installer ships into -OutDir: the VENDORED SudoVDA driver + the + fetched nefcon device tool. + +.DESCRIPTION + SudoVDA has no upstream release (its repo is a source-only VS solution; Apollo embeds the driver in + its single installer), so the prebuilt, signed driver is VENDORED in this repo under + packaging/windows/sudovda/ (MIT/CC0; SudoVDA v1.10.9.289, signer CN=sudovda@su.mk, Class=Display, + HWID Root\SudoMaker\SudoVDA). nefcon DOES publish a pinned release, so we fetch + SHA-256-verify it + (it provides nefconc.exe, used to create the root-enumerated device node — pnputil can't). + + Output (consumed by punktfunk-host.iss): -OutDir gets SudoVDA.inf/.cat/.dll + sudovda.cer and + nefconc.exe (x64). pack-host-installer.ps1 also drops install-sudovda.ps1 in. + +.EXAMPLE + pwsh -File stage-sudovda.ps1 -OutDir C:\t\out\stage +#> +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)][string]$OutDir, + [string]$VendorDir = (Join-Path $PSScriptRoot 'sudovda'), + # PINNED nefcon release (https://github.com/nefarius/nefcon/releases). MIT-licensed. + [string]$NefconUrl = 'https://github.com/nefarius/nefcon/releases/download/v1.17.40/nefcon_v1.17.40.zip', + [string]$NefconSha256 = '812bae7ed7dfb7d6d2284bc7de2f8ccebc92ed2a0b1ae893c53b337096e50c1a' +) +$ErrorActionPreference = 'Stop' +$ProgressPreference = 'SilentlyContinue' +$PSNativeCommandUseErrorActionPreference = $false + +if (Test-Path $OutDir) { Remove-Item -Recurse -Force $OutDir } +New-Item -ItemType Directory -Force -Path $OutDir | Out-Null + +# --- vendored SudoVDA driver ------------------------------------------------------------------ +$inf = Get-ChildItem -Path $VendorDir -Filter *.inf -ErrorAction SilentlyContinue | Select-Object -First 1 +if (-not $inf) { throw "no vendored SudoVDA .inf under $VendorDir — see packaging/windows/README.md" } +Copy-Item (Join-Path $VendorDir '*') $OutDir -Force +Write-Host "==> vendored SudoVDA staged from $VendorDir" + +# --- nefcon (fetched + verified) -------------------------------------------------------------- +$work = Join-Path ([IO.Path]::GetTempPath()) ('nefcon-' + [IO.Path]::GetRandomFileName()) +New-Item -ItemType Directory -Force -Path $work | Out-Null +try { + $zip = Join-Path $work 'nefcon.zip' + Write-Host "==> downloading $NefconUrl" + Invoke-WebRequest -Uri $NefconUrl -OutFile $zip -UseBasicParsing + $got = (Get-FileHash $zip -Algorithm SHA256).Hash.ToLowerInvariant() + if ($NefconSha256) { + if ($got -ne $NefconSha256.ToLowerInvariant()) { + throw "nefcon SHA-256 mismatch`n expected $NefconSha256`n got $got" + } + Write-Host " sha256 ok ($got)" + } + else { Write-Warning "no pinned nefcon SHA-256 — computed $got (PIN THIS in stage-sudovda.ps1)" } + Expand-Archive -Path $zip -DestinationPath $work -Force + $nefc = Get-ChildItem -Path $work -Recurse -Filter 'nefconc.exe' | + Where-Object { $_.FullName -match '(?i)\\x64\\' } | Select-Object -First 1 + if (-not $nefc) { $nefc = Get-ChildItem -Path $work -Recurse -Filter 'nefconc.exe' | Select-Object -First 1 } + if (-not $nefc) { throw "nefconc.exe not found in $NefconUrl" } + Copy-Item $nefc.FullName (Join-Path $OutDir 'nefconc.exe') -Force +} +finally { Remove-Item -Recurse -Force $work -ErrorAction SilentlyContinue } + +Write-Host "==> staged driver bundle in $OutDir :" +Get-ChildItem $OutDir -File | ForEach-Object { " $($_.Name)" } diff --git a/packaging/windows/sudovda/SudoVDA.dll b/packaging/windows/sudovda/SudoVDA.dll new file mode 100644 index 0000000000000000000000000000000000000000..dfdff70d2b085bbf1017a5a951496531905547aa GIT binary patch literal 83216 zcmeFad0aRE0F5y}>i{22bt8^E}tjy5he%x{|!0&m$UluJml|m9MV9oMl(nU#sW6qpWg!NBv5b-#h9T>U!?X=`&QF-_yjpfX#Nr9S+-# z=G+=n*+QAJ znS$LHDI;K;j?c5z$^8j=wk}D`{!PoXl@#)DR-Vl@fa~l$+XCvHrsdfxvw8ZsdIsm& zd0I@fEnh6t( z4JXN6(HfOd-;Q=lyB%8qX|(H$n<8X(>WkM#hUfoZ8qr&zpZT`V}{6d$W^cQQSm`k6q*;)%KY^fU+a&4OKP0lOSS4rdet4|%h>L9MV zu?I|bZS-C}F)@z@Mje5QU8y7VhP@)Ga|VL1SxUtzr`-L1w#^nYxKb-r?!}r&zCmFFD{{l*Ok!3 zNJ;Sp{`378NE3t4ecRo{kg-oU_J+N!+LD(9(b!l0=O3k-Xn&LXrJ?;vHy`}F%~tX8 zRq^A!oiWv*mWq${SX=*~w{_l;`pPWP^hBXeXrF0Ug?S!zrA}TY`jr+55psD$+UT9Z z#DqNE+ctl^ZeJU1)r~JxPVoY#-gdQ_r;T+=?bz7%A>SoBrk*-#{COx$*{R zlPI`VRJ$IxtNy;lC7c|eTWlWvxKN{aSJTThbEs-WHPj&vWUCg2}>3`jIuodSXsmH*P7`?YDSzLy-DZ-~6#Y;!8btR+la67UY#C zyyy^A9D%X{u4k9I< z3;dJ(lQS|?7c@-h88Y70%Z3D3$DUhpk~wH!e$ZH>??y$up*Me(FAAX99HrY)8$oBV ztguAA?$n$2@otUvZc}iTDth~KwxD;j)@Yy-Ly6IOp?G6SJzWwsLM5*6E2|qX>6<%) zMzdblta~@jJ1A`Igbcx%8>Rq8w94Tql~bYOkg(Ae^fraGny#>Sr?x~! z3>t@(1ijxxN9xA6LGRm<>z-8@8C!L--hUuf*uT;3Z}Td;BQ-H(e4^f`7!Vep`9&kYzP?^ z9d+Zipt0Wk<5-(*xt<7>c+5A333Zd9#Kk4_=0%l3<62+Pn5zek_xz|0|0Vv5k*V@? zM0Kp5ATre#Ur)*^(GY!M>~+2G*H3hNK4{!DNF z)}b4%79(`!n1i$&b9gstjR(^YL1Tg|l(;-kKnRZs6ZOnzG+DfmVT974u}3;LQTTkt zn|kxR1u}%5+M~NY=DIy}_YuMxLF4P7_XS<6*%S2c(U$xb!ll-j71szKwEHzze?4*P zlSrlB{6T?k|6Ci=kHm>CZO8-{H)B28kTD)fDJP{|QhcQN!p0c5;Gm$_j5&<)msX=ci0-`nUqxp0h z)Si~73$>f{=Dq!}ZuHGN^s+UKP4kY)P}kU~h}-YG#Jyp6hPVUwBkn^&+!ph-8Cl{6 z7-2r3^VS6u#~+~$3D_WD7}|z~wgG4x5ZZ>JZMZxnWHSy5d-r5W8isu#>Cit5{e+}p zU$`vE7-{CIqzp-Aki4Rsq>vJ_Uk4$f>$Ds-Eq?b2r<*U0{}1?md)U|%D%-5D%xS;f zJHp0Z8EJZHIAOckzS7$+(9vs9+pf=SSCTt(&tnX6p~R_!g2rp1M1f|0#xr6%AyF_w zFIyKjHU^DX%(qF@jZbKWUY63!5cgMk6Ea%O7T%=jJk-2_?mW$3b99JEU30r|Rh~gk6Y;-7-V6X0dNo&OD#LE7qLf`v_*4WH5 z_4}3j3K?I)z?ODdIam}8){5wwpz%W5{VlVwMr8tjj#7&pNPB{1U!s@H0>)h3yF20bf?l@S$e{1FI2K9G9p>rFXqHpMlN$9dQk8OH-qu!8G4_5D$oBIl(r;Kx+5dDYXp@Ux6 z8JJF{nTpVLIYQUG`>-Q3pKlXM+-%b+8jmJ`7P%G(d`0T1n`^ ze}=rf=Bx{P({oRg?i4DZF356^m1Vd^Bb9W!l~kxVBozYQ^c0la%4ap!c5<(Tcn_Z>18w;bT=p!zXeHdB2(Sn82PL zGEgShmCT5aq#=p9$qXgZOjkO^miE4O>jatgC2I2ZnQaPdOa=SP zdg3S2nzZ}jW}9tSyFP5K9&66m?c4O3TUEnnZnWC}Dw)k+A0V>wmG1rL!pHfE9_QcH zninkz&U~$B-i9@*uk5PGwG;^^ZcB%ZT0sdRdp#7l@KqvrF->P6oh<|D0vcYP)03St zpOSWakeqJCHPF*baj8j}CFd{6!1io*Bo&RUY`h*51;)_)g*Pc1uD7xZ(`V=;)#0e-0g7T7{H1>wPYi{-F&~uuem@7RlL;uWgr3*s#G=o~&{p#~d#~rHA zTqntD%D>Tkhq)a>uX{gP*pz$onl9FV-_!oizfj_bZFc=>VITe$VYjH6DWm*WZHb*~ zbz^3+9($>OpyGYf<})1A{Vhzll!Xj+UVD1#XV!sZwhfZjNHwJU(&Q>7n?1m-t+ey7Gr`a@594D)iVl{pX#k8=9UN zdOd~=s$rjU85M^N{~kTI=9pkv8?$O|_Y9wZdeCTtWz63Q?D!etve=JYy=|iwbE97j z!1wCpcX+Lsfj?+hhm0Ft`qLH_(~F=G3O`uJa0w;XXtxiOeua`)w+D$IBlZ#wF{sHT zFGtOg*X-pXD;d|Da0$r8RJPzd{xRoAkXiZ1?zkjFx>>FXiL*{uLK$YzhLkdv#Jj@f1u<&clIrQa2@W7br^VW!q3X79}U(J5l4zI&%`Wr5Kc6 zH-FU&*quCCfO3?k*6%U28`R9@+0oy_qm#vH!}!U-55wieN3Wi8JaeNvm20Y7T`c}s z`*G4H4cj0R>rqVex>>;-555he4Vw3&3O4AQnRTO6*Xd=Ul2TDI*o@>}gZ2qF@4N<;BU|CS{)2q!KiS(#BX zOq;iTAq9KOZH5uc{gGLDxfi{2N z6y=}z$Snxvqtt-bJtLW`G~@jxj|pgNMk0t=K2BFKer+*+P7j_;XV#|;p>_r;(zQ#g zm_@|>1&UsNS15jy2M>0s_;JyuH{oEsusjs^hT^w4`R58I#jbrqJpWJ!1b43B?!Dw#*#saA^Pyz42_pQW=^$?x-yx1G0{HiCWH0mA@lf z`phlL49O~UrN|9^PYB^p_$(DPHDsU(+RRs`AnDym>*B&7tr*3i_mL-E^a z)onCV`sJXrplVQNG8dQ3=w-I}#B9OW^$9bU<@9%;VvC{|PRMf@f10@z!{ znrj^Xi6BtNF-15R?isCC1fb^u;rNh{cWq<rAs}Wz6tgo~-G43|al?UT$ zt{^aUm*(;V(&ynB4~JgPvyW#V&viW4@jQ*^X+e84Nwb6YwWN0Gu^oBQC;Ntk2D9uC zwXz}NYU~4PI^7ahgo+gm5JKc`F77`Mx*ZTQ#=6Y+J`|~>U*qFd-xgW@>P))>PuXm$ z4U7e-f{CXK&nbQmz8**QGc-chp2Qu$x9afU z3`Hyv)$(~IB6Q_?qUfdKJezsFnNAyyn7mCZ+LY_w_Bn3}A5^L}3|Tx7J?G4<=P~Fx z+MgESc@=9BDiNWY!ua^1iYxHM$H$kFQXa3VwxNBK+Pa27}b%YI(>9(N3awK}Mpeyaes|e%^J%}|_xUpQ`VbQWe zgE|YvgDey{wyzfK(Qj*Wx-H>&SrU^nEyB03R*&~fyZ1d#k}&~&XQI9%RU*`kx|k~Y zdcu9D%ox0DqD5)NNlnM=#(`E%M|IcqAsKTutxLO;Ebrkqn$Fq}EuRV*-i%bn zHl&T#F0Hx7X>W}lr;CDNj?Yr+FUf7aDddeS`^Et1WNYv}vmVaJOA#s}$%^XMww zsSU|De>NR75{?zTw8k5YD{{UhaegO?X7*Y30;}v>O})zkZiwjKtc)wha6GAUAsXG| zyGMQhO^D^(U z?K%fTbQ@DRZ63WoKu@pvL9_ixQS%?43ydB{M#i47=w zZI&@Wul6Y-tus%sGFt2To%fz*;d}Mz*7ZH>n#C8|G?$xm$fPI6yHxF+rDt@v2U{qp z^s<;(9%|_Bhu>igGr$&$NXc7EyJvezR&izc&A!bH1DQUYX}wilhubt`2W88S=k0Qf z65V)yFCK?0SnDj@ucLWtKCH$e-MFa^E{#1YiBv6vP@QVT;?>gx{o0QWB0Q zP-ddfd08n{9+Y-p#v4Sx@#jM5WKE^QHQ`uh<@9919FTUOp>jsfAy=u&Wn2WU-;A8u zll4yM!FszM?ag}3tSz<_CAE#08H%Uf_y0v{qaKRL;=m3h0c~{a_q=YF*NXPyhOh=r znUBV9a@r!ZbmK>G1{QdyuhU%WIep6r6yDF zp409_M1D`0C~aYsg|Mt&3SVGk#r=x^A^T!ANaex!&d#Dszk@TSaDZ*A*u}y_UqnYQMS$h zwM`=iP0-%c6bgtG-mJ=~9wW9x`YVf@T)WHDd&!kj zWG^@Zj4m|C;T5o;N%aEl_&%Ts4Dku(VhN0o7(Qk*@%&^^W>yv0qa0>?LdJFpHZpFV z2EW#2HHQCLpMXcgupQQ!#k9eXV};viLzvmZ0O2O{A3K%F#och`I=XR5+v291Mo>#J zF^0NvFfm$3sJnV+frMaP#(H5V`U?Oro0S04jnDkXo{BAg33u6vWa;L~_kagZPr{p+tdA+EHP-o){d8%h zku)4ToOw3mwLy*#xbnKP727e-`~_X3EH*W36Pdwms{=nV*0TIxj)|qRGt0qH$4NEB z&)mw7(EH1!N@l;wyh_zDxU^Qm6e%jt`5Txwq9=a<|2p%=yKyum`^hLJO)wmlU`itf zIV#jm(s&KLeS(P1?6ChZ-v1HJeC9Vlvnr!rpCZ&c1zrgDnz``b)Zv?ao~#)X;Fh?q zWE;Kp4g*?dt=f2lPJ)OPP1+FVF08mO;orS5-X9Wmm6b{^BS*)o!~OGY zBj&-~j%ScmV`(uwz@(`%H5g0365midRlw3kWioJ=FmE#OGr5rco_bpJK?c`dA7W0k)Cwi$DRD8`s-=OPkErwRxSj4KI4!lnQ0nDo79_3#OHy4 zBf@dj6v~-9uu4JTd6D!PFedq?J?G_FT6^$HGP)WP*`h(S^1xHvg(&R2w;QPn@ zLsL|+!5na=Xa|&lCQ6`4)Lz32!YIliGW8-ByMvAGP1qpOu!x;0fF z&P#JmyEq{((8>I$Me4^$PP^CqUI5^7F7gNr@3!bOIsq+u62S6C+2`1ihgh?ZzmJi` zb*RQ@ithSIcwXFsj_vA>xpdO;Cbw2$Jn=bCtc-b`ZIC7D7(+W*9$B=iAKA=1F+A6= z5>7Q6ui5zO)?((mcxPaP0n~Z(6@pDSA z!u6K6#cwLc4Hv)gu=s@~_0_`#kI3MFw{31kVCGuMpE}NOtX;V^e7VcN`(6J^!LxZs zznNjd{svA+KM1w7FtSAU@s|h}R6|U!gx)L-4&gN5z?`=DRLk zd$dKG>g1-`Z?x&VcLwA3@6q9P483YtpSx8Y*G;$se#d}OvDSQsSqTdPA}lXb14ExP zl$hsIVJE}QTC(FnzzuK**+bM~utF8vM9#GPtKa5|E|a2(sUBfYOz!W5H*X@V9&1G) z24~(&H&9z<;_?{pgT`S0DvzYXq&kCZF78A8A()&frgDaV8`n}USn{Hu`7^&^dV)pZ zpdqPz88*~XCM(x6#LQ-NsAGr`u&&9XK>vsWRVv1CjAe1mQlJxM9T8tq_;rT3DdvP9 z6W&~%MoXfXUKi1i42V@P$q9S(l z)WH+C#GE-kwr@4?8Sv1)_5M`(AT7@(tL7s8s;;-w_KNDIY%MV}O%Of#goE`g?KPilRg z>+_;k1uh)r_yz#+$@j)5-=`-gKb3YL{;<$=!HL%LNSx?Z!|_M*pee5bG*JJ6Fr6hfqnu@ zWRcGLbBTw%^jC)fG935PXw_efg$Fak0*&;qI>eSQ78#s9O!RfK8Plsi?f(6Pu=$&? z_u?=KU{Ef&NWpSZSa?9O47u^(U9*Z0RqCFhka-1#rD(IND_n0*!TGqH4wnv@B8bkA zpVfCeem+KK>bq3 zuY{=+;m6FKCDPRJa`Vqe+icGl02#8Pqq`d~5wE>ke>D6g)zkX9zn0cV2UVd@wR;?6 zfco9ywY`g{f1fLUs#Sa-R$Fb{vEkdkD%X3L-qu}u*8{3@DNWPv?z42Lcj>=(mtJX= zE{ZKI2@Q<)i&tOJCxE)%0B-LFFy8_&1ORn~(Sb?FK>%=Ox(3=@%6r{NC?s!_OsP1ms9Z3RAvEnSQZ=A$ z+f4>ADsz{id=R@+)#Y}X=`d+YyCX2E43EkFWJ4{#b-z4|H$0}Md`j;rb9jH{H;y)0 z%5SWUzZf4&n87R&Fo@AYMGb$715CGs68BouuZ@CKT%H_XAfjpa zKYy)6XK4{x>#LvQwaqv@_zi0G%-C1M=buI~N~4jA?&clVs<>7IG}rNr=+q%f*FB$h z{~S0dm5pj!1}YkR)WR?PI=9jzsO#D0gG;5FI;kd7B^3};;Mj+#`&SK@<`_la@PO{x z@HNYrh&xI3brfgo4*qW{sc1?KS4f3f>?=xx1o+(rl=Z4TgDpIER}ZA3=uNsY7SH_T z2mLBYAIu*lrBW0Krm;T}{4DKWc%Py` z$*B_!$D#>q%J8s?pfEKym!2dPRtmOUEasD9)wO`JMLnWoknOYdxVwy$ zc+m;+>yUeD*IUf76kQJ3N&#zGZLd{{@PKD!ef5<>8Ch;H&T$DYzKGYqilqu$ZB^0s zeKy;C{KJmD-%6gMe1OvRTS@*-*Po8Gqz)ldk?;qa(MP#oQXuUfCV~`up)%t&sgMbB zkH5?~C80r}R31B%s>H>$aAAG*!BlLE%&o6}4oIXs(%*0aO}z)2-YlBuT4-Lx1vHQE z3(dP=rqp4ed6l#UGikVcup(Be-lxSG-wyco-Zbo>=vtfqL{jA~77pNHLa{ zQ!F0#r3&LwUkVG%XBBq5$bhNG14561WJG9vDtfG_&}!^2s3Yy3_$vlL(bmkj(IW8e zZ1Y+wg(xLZ(QrRbb+yYJ8V>;$s1AI~bw0aG~NZRcp$nk)O+pDeDjOmVNtZGn8j(06QD!CnFWx&pH zc&%Fmlm_X>J+xTbKUC4l@iDN|?qhx_;(n8aA$5+IwqIOws&u3e{mhgWnXf$jPvndo z6{{Y&+m>-5+(b&w_$*HihF0Y%r;KZr)B(+8_zCHTqkNY%Oohui?rfD-AmDoZ0ZW)2 zLEwZE33(DEX;l`@-jMJg29#Kw{N1DPWs-5DS9sdu7ghzC82SdF2RxY+YGRZZ_lr2(--v)?r$Js!C-o=jaK*h%a;~Rg&4jb>a#tBG;KXFMx zZP`|>k=@`nb+Zx-xQSd!zM#VT)_j*C+85Ycckd#Brzfyn#@llnr-luT;?4B%cl~$PsDPuTBe=dXfD`c;? zvRgZdTga{(liPJ;pdK&!7g8iWI&yD1-Rk%!PkEg?g^(+uuq{kv&()Gcr(oH#lwHO;-=oY%N3)f&$U_e0>=Dm@%c)pn>CSs$k5JVK zU!pRi1D_vEgF3g76pZby)NX%?yQk5T1dq39w?D%Z-7g9$*HyKN8ccwqex&7y6a)o} ziNvX?;vXHa0zX@56YQeG)QdKfn&Z6#a>b@lEMyeT5%Ro+%qK(61f@6BC1nntLXTw*}9zqY4;VpT6uu&h^Ew0wM!j8RyqiGLk+!x zZv}8N!StE__cJ4iwQ|z;+RyB#p$khTKD?(Qlz#E>d{%X4SL=H1d`ryuO~$>a9Xora zcI<*j)JX@QVXjJB=*#y$lg@Fh|2W%`+ev`9mIRGlE)UMwP35+TJ!T(hOeppa(r$01 zDOnrHBc8`{fRWK==;iV7{90qisVwjvL`DX%F8^vC>v^@loQ` zo7(lc=BhSG`&_%^Tjp+w>L=mqS|j9jYA06D;l<7Qkz=yXVsR6{q};^bwb3C`J7AkX z*Dg$c9@36)t2Ju91;$V>vig*n|1ZLMT{i7lW-ywISj1yPB?KJSd9-6EFM-_4$d9Ftr@}qKX$mKpghGVQQ#k#0Whv-s|xv>R9 zCf351qpwaCO583x?Z!%QdgAc1yBTm0QJWEk4t9Le+M^p*4qu!)XE*l4c7O9nj)3;) ziz>yxyQ9|F;cx!f5im9cj2Hb3kAi*;-1z??`YzB97#n+3xaGb7uEG(0&`UPdlm=r> zbs@y7G&Qsb-R@l@{&rF!UV$F_G_TgUev!8LRW%hSl$gE5x)Gg4)Sky2b|W)h$?OSZ zMotnhT)7If&F;Xq!fYMg8>;aa{#0+?ULb+)8CRiOT!mr7M*v4t)>SzFObOt)?gZuJ z7_fWWu%?kBx#F-AQyKB{`L)uyUHshA(LLX zUPN)uQ7SYeZ~wTnPkEdF-^p7AyeRVK2J5W64I?clZ)5K2mbZLf{CDz}H2ZDO@DJ;& zO5DOomy)(WWTfq>9#VGjeq5s@%$FL>Y;}nxV1r?lUIHeQn~Z?Hgi89q6R@OtJ~I&| zVE>Qso!Z=6qLStp9sipehVMs_tPJ@q8Df_~mNH*7^(jJ@FKs^&YQJ7N)X`YtAUnlc zN@XW)YlwI9k|QKL%8 zaCfkbfuoR_Y*s)pZO88o>!w zfYFV)E|%-cG4G50-hOijd(Di_=#(K{2C-HdCKvCDlvdr~jEsKdy3kHTA1H&!`hMlJ??7SONYiE#a(Sxy%^0dXXkTja2HHuri);Kz__~__XfSTZC*<}vXKnn>k`C&`zOlwKqfKlaL4)zFnel~{+x5HORWB_>KV!UW{={MI zGhS={)PY@V{_3rC+NVAFHo4gZnk}!QKr&6>n2R^XJld}rceYj1+1il1+jMokzio=T z{iXNZ z$G9r!P2BkEzj0`{f5qq(GM*?gX}QIBseXRTyA{6;H=qnGD|m<8)P3*3l8r^M{DV2? zL&Hb)l z{o!IO^Iv$jMxIMPuz3FUr5To3F&u@9-J3Oy!>+kZrV)b%Zz0zX! z1zA>CbI}Z|v#yt6_3CNMA1!s=rag{OZHuM3|m)R~{0 zq+i>{oKA@>yJ{xoiOA-uIYAzC0_5J@w#{N|K`oqEQ~+D|;N~o#@*e_Zac~KA5Dsnw zP+uG@zPe4k(@Nn!9Cr1RFMEs*R#7$#``b`8sPErrjPV{qX@V@k83Q;s zN6u0K?UQwhLd)10*+}ZX@RAM8=6gp9UMK3!ANG@Tqnh92@-~Ox;TgM5yx~(bsDLD+ zl&s;JM_K4(O$BvT_6C*XZ_ZPZVD79Z8l;pr z7LkkA=vn|iOsb9HYv%ORV`=ByVY&U@n(Tt*#K7CHRK1^0y%I9!73W?L4{rWMmvfgw z@;V`FFkIDs=Z{mv#N(DZI*2G%^N zJOPr7aq4B9FL>C?l8s|^f{CI1^|CiO310 zK2dl~xU98eOR%}aZqB(z6fzF^ms4jbC*b*T#bF9n0j2izNOcBhG7Pnc%Jzlq1TiPg zn*kO~6rMz;iY?~xKvBD`=mVl;V1VZB_8;WRlce|m#mq#{V;iHjX-VWJ&W@{|yO)&g z$azp@2f&5qdDx1aV`JyHPdN%D*t9N8c{Ur#*!z*bjo4zloC9MN?h*DJxY`BD%xk4) zj&RwIY3EAW)yX{U4IA`t@jhPgK0!(=S;?GjiO84h$$rusxg7zxX3Tj*l;~u5j>QG* z{7HfjlxL<%<#%j&n__YDc2s4v%>T1d^_0x0`ZjZ; zOw113Ug&dq94mrK{rl~*88Mi4Wo-@_dPJ(PR!2(a#!4A}{;RQaq)7Kfg$-OQSY-B% zWjE_7`^9{)s1F=;g~NX^@Tp36unLhq__ps#&Xh{{%eFPU&#?bIhS&kQ@VFluVuwp} z>Zyt8HM{3TE6C`66~Wn7LtZPi>QLinqUgm2M8YWqmT^+{2PTSEEh6oU3@$zMb!5|6 z5@+oyvmdJ*4WW1pt9zWw`u-ydTdd##_1n<*h{=f%I<88`NL55>&z1`k$z69 z!*vf~5RwBNfahV)lSC0A;*&UsBo~5_*hm(YS!iTXZ6SgfDV2q$*Q zUakXs?mQpkGUaFtBEriBViPG-h`~q5ASVFp#*#V_(0EP3V|lIiywq0kwfdynzV2~eB1Zrl<|@mB zvfcb(AlyOVR2R$j#6=u6g`Q&BT zF6>Jh8BA~V6U`JJ2sB9;Y5_@dIFyz1PL=cH$d!6JIlA(&lcc(IqNnT*OpZEO8SO{KkMN(cq;#+SpMTKUt68h&bNp$|i~^W#)_xzZHIDg}UhT zTcBSnnpQTCk)c$1*iofgDq{uXb$$hCPC~OJlBp*)ws`eDaxRsR_|J4yz-UV! zP#B57k%EbPR)7#0e8fLyGF(UoWl+dc3gGJGXNsO!ELnrOnBh}Z%&=9S&i0u{{7%po zz%+K6==&n6f*m8ozW`f;cxUK|gn&_79{WB(g7X>R+V4M#LQmA!13`{)P-i$K;_|3C z_pg0JRIB#h8drqab=DC%$JzYRv(jBPPMHv&=WZx zK#%cAKM&E3(O`H4?}3k|Nhq!(Ci7`LJSxZ+X8Eq2vIt9fxza&aI3NyNbaQ01aiPRAMvV#~xU31zm1ax7dm{bA#N< z7@0f6rhW_b6cK5(&b<^39pqq)@s&}RXwr;Y?R=QxA)}^}b6C1hZwc-;d!Mbw{>FEb z!hYvfnkPP~Zj>;2%-M`d%hi^45eC_pJ50F1qZ21xDJHG><5|HfH_s)UMK>BtW{ZHJ zrcu(u2R`YFK2G#}bPm~+4VR}*dAc)qerMod-dLyPs4adnOshY&0~+5``m=xD8bHDeB5>4VcR&iI+RLefVO~fItmEgLuSo*Bm z1did~8G*(vk%RrQJtO87`i+KSDq-sek%-}gB@*%ANl-9b+v<7%b8ah7oQj0Gy@F@h zm?eQsta_HPnQNz5gWUIJ2dJSH!-zNx4(#5e4x5vhWUX;Ic*LrR&{@Kb;V<_;BVb}3 zd2z=@TOkJ9Z!V7T$=Ba!I%! z+Mr%=fXD{(j&rG|3yoeCtKN$g*c9*uJ-{3fm|Bj`PB1KM4r>ekL; zo$yQnbJJny2#JKNRk74BlRGgkOk4+9Qxjs<2P*IZaQJBt@MCh|-|qpwT*@3;v4za1 zk@;!NSJ-@=f;W_RqThOt&KOxUL<3nzhIfz846l~&D0e1RMH)S^WRp;%+PPV%(IrQQ z$)$ugn5%boeI1)7rc(Oj`5c4j`Y|TNV>G8u207(Gm6-cxOLL9Ni zLF2_jUQ9!ec~Kn=-UERz4{FR_x26w+cl=`czIuo-eN_cT&hRO^lZrV!X_T zGCs?($@<=(r0sH;?HKBK4R4XTccN9pf`Ry7?CqT=D_fYzn}p*NMFj#a*w9Bv>Y&#oqsWm$oVpVC= zER45(zp|b1{&(?zeVD>u=-v~5)S51F3TiYuNqR8hUipM%1!40?RESPYkGvlDpPF-I z_wiJz(Pbl(Ds>u3fcLRIX?(-13=ot}unkk6w7Z&gnDkH?C537vt(j@F?QS2|w0l#m zqafv2DN`U}yzCC1_3JCPbRJ2fnxDpIhVr6=V?mvD&t@!@FDT92E+%K#2>W75=f3ek zTYOm1m%Ri)F%PKI+N6+n|Ak^i>lmhATixYkaO3k8RW&+hCLwI>o8xu-T0SKa>ZI++ zRXU2@KUc3h5yykd(MXQeMLJsu7LJPci!E~6Zes(R(CE;Cg1<5l`Y#+5oy_LoDtO`6 zPzJ!!7J%^pU@Kg4iVcwp@L(&wLZwHJFvb(Ym=~`Jf!l56yX`W4iyjvrACh?t{;g5A zXd$45aVTDEGNlHslmUlG{S#%vE2cZ9n@zJQ$`s@}k!RT&iYVvK14O&!=8e$I zgIYQq1#b>T3OP(GQS@LNPxE*}%`g5N6*N@8LK56T1nr$XSL`xk9%`m*C+Ue>Tzc%= zp|_4>!z^egiTiwo8p> z+~<$!#(kx{ftjLrgO5h#!Xg08&5x13OFQ3S6iGTNc@5}H9OSPtO*3(jKa<Q8=#+;&CyRdRXa{4G5T)vjWCxYe|o1c$oRJA@4bOEbB5LFJM zI=jAlheN%WZ0jlb5?L{jZ^0-ww=!ut>Ju7oGl@3OjF3aCCsL4^XPHk zC1ww2gZTjm;6k(g{0oXta%aU_qo4A|v}j8@K_nR4qs>1=zO}=)P|iECzNmCM$anrj z;YsfbwOV>nYh>nwO6?Z4*pNIvb6#u{hqU(mo>KcgSz?{fEFzQ`gP#fS3Z&v79T<<( zV$C+yvffns<4^xPD%pbHrIN5*i`mM_wHf*-x0I+_;|)2dPz^IIYsN0aQ_cy6+B~Q1 z*^1|-3PVh@AdERup(w}j;W^{`HW_D`9-Gbxg#!=Cm2*ceW>@vWznq70fzDYoRihhlSjs3kMGm6pF*1#i7{lhC{ENgW0HsR=$Ou%4R zF=ryRfF^a&Tq!C8C9r9*L5MZF=?c-74KLKw&P%grG&nP^Yd(nJI9}CA6&#aj?4?2~ zf-9Wn!B%BY%n`8kd{T1>RFnenA!deHif?CpBj+?p5!L+LA z0a=YTavr!k^Jf~Ju&)IGRwpnikOggAHQ^?Oa$u8o!CFd(J2Fm>ntFDKMEN)bQX1Z5 zUc(VP%j3}|J$`Fj_G})kN42$}Nn8m7=%VE;GMGx**;@DRT~I7i4H-8P+TIaNH;3$u zB>PLeh`aYC^s2n3 zFlm_6L?sK;&q8Hc<}60Zka6cbZJ&@=3=8A#2W_89T9dhm zVGgX9{wedyTyua7Y#ANh>---N$7&)Ln6iUI#x8u5+PwMo)ek2WMw~2b42x9iXlUds zXx|!6oQK-lzK78xXy@o=K9M8CMbKE+bHwkL+%XSFV1=|N7tW)UA9Y9DINU~-wLugJiD(zAusqR z95*ue>$c6!69Fn~nk%0jee=Iwz5Dssg1b97;u`lwyyNpX1EZ?p;&6tz?Bu z0*0@0VwuO9TyWA2;#1{x)Q>>(8m6Z$;%e>2HO0E>I`d+mGVs{Bw9fp^XEYRR?n4VT zjH7g{AnN@QbPcrS^0_~NzS4n?gR_g%JS9D5Y2h&!1r09Ja(rHlVKwg@+ z5g(1G)L}YR*6wy*PoJo41z;;MFfIGHIv${Op1BEg*Nm|km}&D+^K7#7FaQcYMS5yS zu7TE^vA+5WO4^KV(W_&7^X6Y;UT9%dis8*c#6=T$YhHJ@V95b&iK6r6`C|1PIT5N> zT&2x&_*qfHxJxtMISwZSuB)TD$fI0&Jc&!IWA6(fsStpcKkRZK%Wuxy)GhFO=n zs><>1&FOS>fj+%x=q*a^ZRT0Gztm7A-v*9ex^fU!%2ieV;^-vy6KGGJGZc%LFAHwg zp7Nu@3+qFPLRJ@t@(sJqkz)2^g}lvk2BJ>vvQRk(;aXFgdWZhv1bN|%p|P7wY`4nY zK=`m9S4%|{XXIhoHdB^}E4I*6gBsr?mSKteXqrMd)x$`!E!!3;XxtJlG+QCj zvUO(7AsLnuY0mi>V%57^m`tIhqy5bztLYZRjVO^~kHCkg z*A?t;mzl%#w$O;p!RamIjG-40QL0g zD^>HVpm8Ax@tL76L`7^K`F76UP@<;5ypARqfr65&cC{-!1H+p9yW4B+O|^?_3OJNq zJ|)L7=gPtK2v)%U)4m=v6)3v@-&I#>!y7@3a^9i~SHmvEDK)#U+D-g^G>=a@u61=D zpm;9hGf6n^V*ppCTjspVVhWolGLrYUT$HSB;k1n%d6822IViS|<1M>sZ9YyJBD~Oy zY3<1-MgJh9gvhjvckFV}?ooQWQ(Wr3$L{R+YGoJlPK5O+PKHFCHMR*df83W&FKcIO zoX_`EUaa~z%_M4z5h*r3|AYsiv3^e`cJfa&=Oe-9QSuYy2VMUVQU!DUjEni=nM#z8 zHGg7d$69dDvEGlD_Yd+u={O6Z;$85al7@+Qfs3y(9UWy36@YBFj8)nq1YNb6H44oL z!rQ7=<oJjTd?x)Zgb zRk^PK?4te^O`ZP&d}4GOug!cPhUg?2Sw(dxrsSmt4dTnPgDVIpszmgeZ8Lx{o z|BuQAE?z2Fqfut_xmQQAiI7sfily_Srvr~b8VTs5SU=uL0RKJB=0;`-)Y%bHbw;rG ztUPIVm}>DGIbvyh^sF3M`9`e;7F{-ylE1e~TG(P7T9~EXgL7D?`c=Fs*jv8y1$2N< zK7N)xw<;48;*l8;CR?L)wxQtC(+eD5E_aYteZhI7>h0;+m%Jpb-i8dk+em zibL&RFvR-KV@b~N1G8k#9hoejkyEoT7e|q<)gG!fnrn?M{)W$H-f(5m-_UhKAmGX%7VkZQ=}4f5XnPSKbhfU-Cs@&}O#$8hhiDzmDR}D|+Bb@gR4NN)!L) zSj>a1o=?R$aWq+^w0c^e+HR)bZHfujypZ{1TlNO8F0TwTGMM4rL+j(&u3J zSX&+^KTYB`)t|KS+;C2VpKn4{ zfaC*2qbv-y@Q{@v8wq`%GM79}~dwKgj*t^f`@uCSCfbO}n$J;|a9S6=Gz~!_G z-hc$|Y*ATOOtTA#k>f8anyMVNyvIy!iH$sgx-h)O&QwRg`DDy#_^1i07~9n0K56#{ z=ZgA^6d3DXK6aJR(R_jN6WfIi>;9FSP+8{B&IV;3)9xYXNmo1|eL!$VJ1?=^anKXL z0T{8~&(dR8aKsRS6dmfV$`lgs88cZ~V@)JXdBGzSkIbHU`2s?#05BG}$xCFkPLHdu z7DQB{f8{Tv)>sp+<;6<{&#y6KvL(=C(^%}SbJJy9CkZE}-9G}R(O!WQgID6L_i?aX zm)z)S_wUZJYVxJs*KmshEW*-`I1{?vY*t#2EelWzSCSB{dym34LHBAYZSVnx6S+yd z<$!is6CO}tYm!0dA{I0ndDGK+kTzo)epH#E{B^3Mdq zWI>*YX?MC&6#tt54i$K^i7Yo2J&{cm`;iH!DLVz1(@G9<%J@fom^W#+buRti_W-ma zEwOOSn5Uti)9!bLJa9)R&H&S;fhpRM?U4ufSqY4_t4ODALL{Dps$QQ^|5 zIp0R{WJ^yo);nH#4B$_n^3Xdc{IZNYZ%Z_SuaY@+B8;2mlZm7m0hf;YO1qsvWP*IM z+`q*e?i1l+>v^cW3$U^TSIVrng8K^CrJ`9UpilmQG=hhU?y4}Mo1y+Wf&vm*r|;gx z&hm~ep6MxwnLt6v1z#5<9Y}7 zqG|dHrQ3+}l7o-MirVf!mV!u$Uwd+3>|Je~_FUu1az@?gWp|!Dg=?s6liwKq^;R=Jx`3RVTjMwK zgRwOQ@zGA6T|J%)F-yXU(FL`YX#MCk-sVSsR2v`X3RDe@=)vg+==N8?rxv}8Lu1bU z+P`&2fF3F{@{Mtvf^n|Xn*@HkIpBS1PAWB&vwTyUvZ`M`mc5cjetfixTJjY3P7C|H z_rrdT->Ca~>yG$&45+N?hRT=(vaqXSepR3_u>`_h%koR|gvVq)#$*<*7$9n?JW|Ar zma>J6Ks@>-u8FQLHy4%ADN0P~N3w6`<5p5IGT1u81-D}%JkI_m^{tt{;(ugLJ54@q z>S1Mt9m#Zv`qF8+GL0E2>)K`O9B(&r$o}m102b&j^KA5Yt)X$Yu|x{3fdyE-BRImH zca6y0*kVjo47g!@w9muMq5~GMHQr#ybL}>GvQz=2vz_TRneHBv>Fyy`cQ?^qx;w<~ zG}e+N=YNpzu>UZh$8X^9Y$~vzm-xM#wZ%bEvaK{wj2gJyhr(eZx6zbXV$H=|MV(ip z%l8>2&dS=>fEOsLHWt=#7a*DMy&3Oi^n^O1^IeI3g*prtfA}9RYDq;48I$LuR|7Ky zHk89pPHz%+?D}6tDKD)DvP3BpxQx8kFSi~E|BTBUJ>DQGRP@Z@@+3!KvPDM@xSSri zG{hmo?3J0t^B=S)1Bu?-qDR=rF}gGq58sQB zu^jYN5M2iao==z^C1~_IHVUlgvsZR`+M?3Ul}FaR+Ef98R7>sW;r5uv(uKTq(o~R zM%SYdoc{)|Ty_7?@CqjC3UW{tZhTjb_LOuhu3pVSaVhN>w6YcdXW0(>!E7OP=vFfW z(PQLi$r8jpq%H2m4nt98{7kYoIK&*zj7;}VnKE~fIaF>9eF}aN_=NRMyClS?OzGiv z>R}TYd(G`)?s^wYiJoS@F1JSA6d5Lu(TyKDb?-ho-(af@hXWR{ z147da28Qj;?8l%T-FBowjMlb>QRmjwbVLql7!{t#bzs9NX@Z78WC!ZiY*9TUXk1zuF8gBFn1ZYP#v)x?Eb|d%jtQ*F&R2OfI4feU@u^X} zt{~*?(r(AJ#&%lgl!w^kJj52Rp5Mf3cYcUL~B`>Ijc611;3 zM~)DMN9b07P@5)ri*N22LperotS@MPB{Kkw#lWnUDbl^Qz(0y2>7>`I-9CZ=w3A5% z#%rfc{)5IWPq6Hx&Ih@##qn)lJ380sIBD`Et)9CGdU+zF#FStQ5exg!2kPivbB;6} z@i*rlB)MHx{EH5f+d^&&BmL8B{N7D-)_V_(%7S#dNr>A-`Pf-4wus9pXrXL$xWJDd zlR7vtmi5$E{qeCn$8D`E{99hw{(?WfDV>y)uGr{&`(&D+s3KzIW1ufbj4BZ$?%&Iu z832QeeP&KSDz_GOfSI44S%15S)ZXiFBN#?7*0alZs_dU2KxVZ{o*UOj2b!|-W1dg( z+%lF`&*zlS=4F!>(Q<1B5F0T7t-s89W}%A%=+jL=_>4n)37>1jg0%Eo+I_KKRV`mW zDwdhgD1OqQ6Q(cR3kI ztXo}glVIEib1D@XML*$XW=@EYcoXw-D<5j9C0Vn8aSaOnQy>lI3{f&yY)QM{A0>s> znRAH3mnhG#)iXwXZjPvwibcmn(O(3Ldn1{Ma|eXPjvkE{_(eSAMqAo_4{tziaME!M zgp$mx&Gk12f@o&VIMXLa(e@P<#re|b1(b>vZ6bl}R=3(r2=&Ab(nvyTEq1N zx&4M8yWQS}?vSN>&KGE(QzrTS>89_gz;B$x+$jB0z}qtCcjy4E_Elp|D&Kff&6U(d zN#?6)>dY)Dr=N2^fywH7O6*}!-zRHlb&g|ZIO4Esfit3or!R1t+lgh6QwCD~*ke&^ zu*LvMWMgoEg@hqyiwbpU)29=jU~fwi*tOADd6P?PynrlKw-iPPRNYdbC4%ayVBr9x zrck#7s%uwGL4D*D|E_+n$niSol0#)-MbzUX!XvWwQBEOsCebl+6Q@*LY8vI7kzqk2 zEOMtc4$05CqIAz6rJjqy!?)s%u;Y2Ih4{(fUNeRYc2#_~|i%!{0bt2;{E^93|) zLaDi!o+moB>eAv!p}FZxS}^@m&~Nvvty*fiRu+29>O*OAd9K)mp2dFIU97u+jRMPi zXowzOBy$_{G1Uf3Ze=~L=Q&|a$V0}TOPc5eObx!a7fR?Ztjn;>K3QE`Z)zL>O+1x4 z*aqzN%=tHA$Svz+DuCx@Q#Kyx@7mu`kWb?krK3 zit*}F+~2?t;Y`xSaPdLpN*?$W`E}x1V&FGN@PRA|lUpH$36skWjMgdG*7wb_8+H?a zE?FQdwc(?s!r6x7H}`Q-v*6hw;~!nX2+6|Z?-b+9L}F6O0u};USN}ily$f8F)!H|_ zW*BflbOuEQkGF<}sWl=Mq}iZ@4hBhxN~SRggOI?C!;D~QqNstRMP)lX?N9;DT}EbQ z$Bk)*sYPXNcZVJAY&)hES(&vn-v71Mx?vcxy`T4a-tYT<@3+_duKQZoI$Ue5Yn_ji zT5YezqcRx(+8_p>&wwq2$~&!S{oMn6yRbQ0Szi8|Va?+hU3%}tdyLvs!+eiOV|S#l z23l`(dF4b4E+ z2^JMv3=}qu29K2!Xv}3;vmZ&Qydz3ySc8>q=AF_poHpF`1eeeqCTwW`5nA7QszjCL z3Wj%gVZ`bCnpdhU#dn-*ZlHhHvuRSj1+hLC9t9U6c!m;pPm~|$GVIh4*VS8z%QnFk z+tw3(k3gU5El=>>2Mx*!IxTCZErI!N#r6cw%JfUYlE&ozq&KXd2Hz)#;**N9Sq>?r z(n~2=gT`ejUs8By67SKfNn8V+UqlRdxyfpI8#Am;g$_KtYiRKwCvV$my#U;{r=qN( zC@J)0+8sFWWH6>}$H|(#`G(SC`h3HkO;|fgtD2D9WWbs;*eBN@XI`4q-kzUgxbq!w zDM+neUV#gj)1vaNaE=qdRk$~FPZEWL|!O4 zKW?eci^&7OB5IX?MTQuR$q9&!6&#!KEJ$(|y$RwoM5G<_9pHuh2CQEDDfXz@-oqW`$_THk{(#br!vGqutNiqo2_PYwDUsmCngs4o$-U#!-Sqo*RB zx}^4Z;AsW6auFRkQGAPgqe!;z=kc>l$crg5tjR&8IW-4KTE{05kRfeal%oZ}Q3*7c zht{E}K#S%xxt3yP6@rJ(jPZLF8DVOf+?3Z6Zi%E+95 zRp?Wy=V0++n%}BIw{=50^IKKu))_b{R;(?Mb8lEu^^6#tBr9m&n?g%{&`rQ0<5dPU zT<8GJZju1Mn)kM^6*qKSE=1X^?I1TYT@GrE-xkl!h#eqhW`t# zjYDQa0(7R;=b|RNvK(6l3$Q%pq;ss>KB0DMKebbxO&U&d@4~w3A>WH=agkY7J}b%- z#&U~S5&|8G)3P}E{T6)(6W3}~=)TaTR-+!La`Tgzn$s9JplvLQX-31CK;_sQOfx#s zFvhM-M5U}iUxrNGgVDSCOY{1?MRC zhfs0W;J^SPG>sYxMh!)jo>~Bie{DEyxCc~0IC+PQI~fx*`rE3NIE;+CR&znkub7a$ z-B8&GA$XIka1F6(rl|SN2;WBOEI`#acU1j~B&z!-D3yF^8I}Jd5VU}TU@K(I8mZ?0 zLW@q`3%g7f6&giMMC|%r4+0(;a^+)YUuAd^Q)oV zIs+$JL(_Q;wNeeWQ4PgkTtYV?ZM$Jr0Uugm^ooj8@>j@c<$fy1T`G?6OeBhZw{sIr z1eNh0^CNU$;VgUN%{s$s8Vgu+7wddi;|>aTXH$dTHmv>_h8SQPthr@6-w;?};2J^$ z*F)a#6K=);ojTpKJu2K`XOo#xjDz7m!uQ=NxW&jQcN$)cYoihU_tFfb{A8FlTPJ+y zz9BIi=kk2}yKzirsc?y%0%Iyx6*f#YrjBmH67^)m^O0=yTR1A&-h^eWuQBGrLz$-% z8?~#GnLGGw4?VVmX!H)P#vKiH!^NjJtkzI7lDk;%`w0ytj$)?<9T2kxAwGxR_cvHTe6d1& zr?~hIkCT2ggor9cNG%Q?Gl}r+B==q)M2N8wz2W9PCCzAzFGP6KJtHw&563IH zW0E%
    zS<|_ZT2&Ym^8nq;*o@Yb!?yZ&mI?(r&@qzBD76)>PWD@V*k$1P9~KCehz+ zR3yEKCAEq~r`a=F4A9({SQ3LgMvT%79)oq|9X18asqWsE#GdZZvpp2Untvi^FyG5J ztfr-)#4==-k7w2#Y?xiwawEbBn&nr=6J;Gw^snPIX4ysFcgHj%Hik9zf~z8`07CN= zVmn8%iW}%(A?CPrj+F<)dV1Idp}H?e4{6PvgZ%m3&|JU1|BYqB+lCGFEFkZHG4}WX zC*FJ!XzEYWVRTCHGz)HCCt)?nu%7-O=HFmU8@Lwy3Cafi!7nk!J%-p*bzltk{Oli& z+Mj$Ii9OHdtV+TT2L4QhHk0tL#n^c>TdGs6iIc5L0Ee1?osFnG73Q% zR_{gnI)giM!@m`r*o?w<_D#lr5wQz5!nz%cN@so@Vz(ZSCV)4f8gf)?*3o77DD73_B3dO zLLW+h8cvgHYOgkt^sx1m7o)Jsx|mjw7`5bKOGq4YI$*A1mA3VO8o)-tCcvZ2w+sz3 zO)qISZ}pY%CL5i-D7|Ir)@tz(wAGu9_H!DaHWZ|KSD?gAvyv+(GzFw7_f9Lv12xAG zF#anMI;t5c4!-^vV)^*Ji@BrU zT+Ne$`p$gs@w;nQC)LOV_04lkXE8(YeZz-w$H;4}75i4p`}4+R-hL<6pAD-Af&n%3 zsADw$^?l2oV-3TCmYm{wY6Xt1C_I=&2&U3zX1)c`$d!_6YdNi__~5eg6(L;rP?`k1 z?c04E2}2z4;zSDOvq@3jn{?jLQ@v6*+z4`Nly|ny+Z*pp|MnBy<-zJvMr#RxN<+07L3d0C(WZ%Y`*yr2dzEP+ulQFTHD*vB#2syGg3HF zCK?88@#!t=&-qq-Gav8aWEf_p53c;_s0ET9MX})Qw0ok z{|7)> z+0y7GC0CmQ&%_3URxH|0#vC3M*Q`JJ0IcEPge7V9q*0f2@RLSnYZA@@z5i9v>l7@p zQ2Bf2kw={7!BJU$OzA?;)XR~#4dGgf+3yC_)op@oOH%1Q;$umb3gf4^k`hBbIZ3oz zo3w|97M{UaWLJ_#H_?`@5myOgQxcP6Jt1$>ip+cyue?9NKgg0S@5y?CgEQvs8Sd3 z8#0G{LowsTU~Iz@E6pU!lPV`Mto-f4zvEQ$mA^{NHKR`<>e|H1R zn&4XneLIRmM*NR@EEDNQ!P@iv}!lrrv$MH5dI^P=8TA&=;DL+uP|tn&=uZ zis-T;h?F()R0w9LdJNwv3^u41G%~=VCMJ8GCTMBt!L$wXY_O7wCK3O&^adKN4ePmo z->2wJYdZaiAps2sX!J({tpTQmyM$EQx=e)7QztBo$ug|H0$MsGfWZT}`aXe_XgwDs zcB>4=QuM;R`O2>$7IDLor`0jF#8Y@V#P7-DmQ?EKbHW>9$$J8{aCp{9I8MSSlQ-kE zx9>fNOtYZ>G1Hv@Oz?4zN-phzcpJoDG5Edn;F^OLLvl0awV9t9t3aq5rfHL^LpCJQ z6_X|XQ*sYlgL)_Jp^{7sXZwTET3Xi=ymDy zMe^wz%P0QSRrLKEmeB@5N*0<5V8t2bDAijRLqS`paX$GFCbGUfbVl;90NwZGhXv$6 zE?|Cp_gh%Hh}|9222W^DseJp*bNBgrA~@WwQRfzDEV0lgdTTjXz5N=JJ4`Gz1*_?SdZuaVNr|2S6} z|254+Y9+a7G2p1>X`IltDkO!A2v^d*B>%P@+Fg*$_Tvr3Dx6eg- z4|Sg)r8)wv2gB#aX3w$*a$L22!m?-8tl=zp0{w8q0Bi1J&u&0UC*5y-$bU)*XXCa>HM%U_tx_ zv<|e_v^u5&WfO;d@Yt8I#OtXyzyha-=?PVJQZ0rRbpJz^f4P5;5{Vr>??*Tqg>126 zl{sZXy1uN;iu>wic(K%s3CUY2qo?B`cwEbGUOpC!eE9P+jLT9cWayXNKy4QW-I@4@ zn?Zc331hwXeb&Tj`m*Dv#wL0Hig!4K^Tc%h68xKThx60tsSu~a`5|lKjc|^2mY~XJ zUa-wnc4%$o!oNU94t3tIr1JfHG<90&M>1ogEU1RYlsETM$9xhsgIA5i5Jwk9G`hnL z!>O6=_uI3GAr38EVz+kOAg|_Q`UzGeUg@7;)i3GsVlOZ|GOA-9hd-F>7mW6TUv3D0 z1nW3&y;O^7V|%}0!}w`}i1y%Kuy5aot0b=X_<@2@u;2#@Xfh_xa18NbH~7>LOh#US z1~S^fnc-BzJJ?ul?{yHSI3DsDKVrZqaUCi7_vItJbh@W=A7XAzJt4^qInf7m9N#V~ zmMy-Ic^)@YyM_AQM?7WWdw@(U<^AyP{kw#Jx_8H2ijcd87r^!Uu5QUkSNF8&j9D>; zB&ezs$zJ3GMaqnrj^la}QyI-~sKik;+egwCb^FL8{Cf}ozRSOTkw@(#&vX5^{QEio zzR$mJ@Got7w~rL&cX0jJ`0@m$<|a)<*P4n;-nbKJc)=W*Y!LqG-IeY z9aq8M!&PvrKIpB~3Gcel%Hu+AQ*82tL$1Gf_kZ5vJ_fZY*QHLR1is^oM}a}ZJHk5p zGx_SrD(VtoWbm3}_WFj=vu1c@0;lMBbIcoI#86&t*La3vxn&}5tFOG4UuQRrZ+elA zHRUHxk1}j*!a+Z*!FjtmtAY$r(!6xmFz{Y=l6N5fRzsH(^bx;d9rilLcFCPLtOvdK z(?>xqYi0)CuDc?c4(RE$*b;uTvZgBaEPiJ{;ANdt_=>4p?*3X_A^b3@q z{m31^>mLui<4GyKYsA^TJ=~G`HS09j>LNU2@Zxexdo#>D-=yIj#om)ao?*CI?KTMe zaAEKH&MHoN9c$lL14ml-HCC_2IsqJRp>D%E!4jeOq(X~Fy)6+&58leLo-6Qz zhLX~L&~qfEvUQjY#QlisA9p49>dE>WSob(pNn{6j!^5nGW~<>Kp0mO^GlU)>fzI>` zi%xnD?zUnx>kO7xzpukWEGiYQ3VfJ|!3$p2GTb#7L#liz^?o}-H%#-cUsa3$HcAV6 zE2;hSePrEXk3Qc!U2ieGFg@I2cs`?dYBj62>hT~t#z|G_z46wI7Itv({PZx`<-^ia zWewYBcp)smTEDNx8wS6)BLe%7YVv2+!9IliseJudk~cV=tc71om07#5Ms@c*-e2HB z!*{qEstk~m&re4O%Brk-$y&JHC&QOPbMpDgI?f$u7QJEk3*LPgVpQp2Me&7{l(GTe z8ysQZPc}F*wfJYY6`|0s$kep$yAd-@yxxvCZ4RbPIA~Zk14Hu4>uPStty9CQGpKzj zE6*{7{!N@TEQ*!&IvZTQ3O8j9YjV+=z44nvyMObYjv{R&`)t##$=gi==e1QJQ8EJw?g zw!w<{f8Lsg#r?gff>SELK(TuC;Z|O(K1yo;g3`S{jNbl(ZpHdgse_r)VJ3AjGk2It z9n5SUW>V)!4XYq#siA~G)e4Fbs3t*iRHSKrliqPC$MqNPZ_sekcAN z`JIsRJ0azFLdx&Ne@}jjk*Z~&{Fa}%P<~{l2nlt_kIVw)M`m5*xBP^^{D|t5A5s4D zGweJkMcC1PpqOH>VhIX*?FwGdZ^y9*)E_O?pCWA=if#o;kYO!GJF=h~P|%J31)Ur$ zS!@_)q1Rqe^9+s*BR+HS;J0G|&6`63H(^$~;${V(96Z(Lm~JL#xDDi(Ya?e)SfrTA zT{^k5kvsee*R|4|Q2V&A15_(S|FF#*|8*@$6m$ zy^etk?Vq<9jIh&1BpD(?v5JU|Qqi~ca4$BD(wyqgTkp>H+b{}y0i!}WH-j-XqSdJGymW3z>>e{zq|+0h4mee zrGe+)OLgKt;ukXcjhY0tJj3F9nEjKx0zc3{fc}+y{Mg0+Pb#Ccf(aa)+gFosC~D$; zNI3FTL%D20$5DCRA~)|OK1K7HIw3e8)RO+t*rB0LB5xV5JHMfm*#E`ys3sguyJ(lN z#14;R;L&i`+eoy?a5esD$u)o^G+rx`(0Hv#vf;CmvYc?O#7z>n0?Wp|YpY)R{KZ=I zj@m)Z>uR+fhfcOW(8)FjI@!{!u<#}th}sq)-l$mo8s*OTpFsRiQ2b9&{7+E)PssS6 zknumUQpEqn%Kv)&6&wIoTh!$z)cBK5#GiB`{-hJ}Uw(qepAh0t$UpvSqsZ$ovZmT4 z+Cv%_pyR(Ba~6@C-M4!;@C;Pbk7i2)NTS9ri5j~k6Md**OQMD?i5j*fwP6cr(O$n; zi`J25ULbi>hD@jtRINbNYEjMz#G5NiC~u%pf_Vc)b=A6Ioq{rRGCUijeyQKMpi_Sg z5`(#k+#DvocbyG-3~h}kGs#Z}Z8~{c(Bu~O=_eZnPwqDXdh;xrtYAg&B{MnkrkQ=8 zJ_8n*3*n)L4$CZVxuF8c_iBedB9Q=-lP7NF5hB}@_lp3?!^t;=c{=F_bqOpAMpo|z zIw9#R_UC6Mw+{+`X3~3wULpNuf;ZP+BJ`WcynQ|opNILq(3g|>3Ftf0;7yLjY!CB~ zUX}J({ONC6g6|#T%~Pt1bFuKvL$C|InK;=+Xk2XflDT(XESawnA>hvzy_)d{S0)7G z`FO*|z23c8L+S{5T^e8Dn}2c+mP-7M6<;z;YD5$|EjWGhd5A@rVb(|dy;z#WLJ-y* zu)^MJz;jgOlbzmK1xSm{_fwJkdN*CeqBA8DRW(B?h(0DiOfm^_ZBTSP0C$BH6lMx=bb;8NX+M4bI| z*jmj6i@(6Yw!)fY;DGe|fPBlaQ`3>bGdmJU_3YpqSf*c&EmH`czXT%>f+X@2(&KRu zgr}$vG(0t-@@R-BijJE2ZhMn2EB6!!I(-Kaj_Mt*tRP~2=^(rtS`a15 zM*p-?>GCZGGm0iJJrqlBItZTRMuHJq+DH&i#E3%ub`M;AhFCI=GHd<#p?Um^&PI{qBIyw_^jPrI!Qxmy9IQH-odu1!)oglUF~5 z`oWcYW}(+2*z+}mH-$4?J;iahe)#X&m!e?e3xXG{9@B-fQ(!%jSd#_C^OloeJ}DVe zDXhHiDhdn_Q_xbFZ|38$<4pha`Tv~+9v(+c6=ORjUN5mK2y2|MFOXO@?<3ufkT_1_ zYbDN(*Ez#{bAKy;zo%# zNoCLV2TRN(UOirf_o&3XBt9Ti2T@pJbUM=w-C06BmK+5-R ziKk0BBuK2fI~$M>QP+rg9+T#irTgQOo-OH(lGaN1KS=XWByN(pPU2M(hfDVbl2+q! zsWg8nAU?myd{*7PE$QO{=1ZiU*Garx=A-KGwE*{uhgDEYTlWjB((DaEcVNjtIUvnd zhDJe~C3Z@zTK|_ZHQQju7&zgSDgO+Ht|cBHhO_+4L?0*rTmxO(_4rgI<5N2opGN+f z23-q%*bM+PeVp{ENyn!GZ+|fpo+o3qv+!xk!iV8SOV)M^KBgRe(&=Mz;#0F2vjs>6 z{O-huVKIdnSK_14$4s9Z`n1xg;x2p|>C?0hpPGBVC0_z z&_SqRPkn{?1AJ=f(?*|8l~R&d=(6X!E%qgax%MdzJcd~Ap5w}KI_;R&U=2mur#VUr z-454<4$u`tv9v$E{qDD8Um2*3&;(UXy{z2O8ASb}ig%lyWluD%tXRobHqmrGt%cRL zIVV+^l&jcF)x#Ox=wt0{T-^BhtFFE#Au(z46s!%g^UTm53Fcu6S1|dN&Gh6s(sCBr zU9&BgFio8{$kKMx{9ChaImTflhAY95y1spaG?y4=2Ui;OtT-r~8Ce4Eh1oRPpoPcg z@7I)91bq?QsyS{zXZw#3gQmH;Gp7G_9k!8#ihuo;FT;nfOR7Ekt=FSTN>j}h95%_q z%);bBc1V59SDkvBpWYm;>2On%-KlRn+NrOI({{M2cmfPD%5RbURXy=n^~7J*6Mt1t z{8c^iSM|hyHh40yrZ}s5;;HJ1r>ZBOs-AeNdg7_-{drQHD|#@NpcDL6J@Hrd#9!4D ze^pQXRXy=n^~AqJPcjK(tQKjY_^Wy@6KT$6BK2G*QqN@~^;{-WPyAIrT;?d;PQBzW z^_;)dbN*7#`Aa?LFZGC}7A>kF1@1_oQ;vlMYF z0{^8f9egQP>EPi&EGUkpa8ZKzcU2drT4A%{(goih@G4>o((cb&fh6)^1wV@Fvqo^(Cx}`ElqQHO6|!@>?Q6SbBgT@tzBHaDS=QF5b>_TaR8&~%_BUICKEdJgH>p5>c)Mi| zn}zgFMIM<@K27{b9Hy3AT!l;QuH+K8Yw4`wYn8&1B{@Zfc}l7yC(rImLBHb4&&jnb zrt*>Hs8@45dHLmWCX?w}g-4)^|GZhn3K-d4O1dQ@Wp;8#_KeBXlc!{6&q^czPWbQQ zp2C}Lca@?VOfD?RQ%c=AZcnKi6z8vgF7VfV2+B-PZmzwwG~ZKHv{YH(@PMn^p&)@2 zh*DIzfbyujc>I_6&u!!AsppLmu0oWde|9#5Z=k6g;*qE|+i z%|(p5s{gI@y6kR`s{|qByBx)m`(>qyUlcmRnOZ*6?O8xlpF(M|mv-j7j8$QA&O-Yb z#a&=ma`N(!zEZ`Juaqt=Uf?KFva@eUvrNsNlA1JgX7=Qi8!g#0Gm|nhc`hr3rOHB= zJ%`GHyCA3J-)50~qlGgV(@jB`T0YJ0z7b;_9$kueN=d#$N|fj41?ibmRER9;NTM>* zIYyb&HPR_JPMslx6j?fQ<`|_zioa7FkB>!81rJya!V^dIHrRt;M?EuEP z9AhlXamz)_d4Ez=)#gUuq zp|-!n-cypZ1l2ZYL6KcS6RG4Z%qc{tU2zflWc3qr!@QtNKFQ{iwO+*D*q=Ngy z^nv3ViH#B~5}PGnXfLt53Uj$UV-atRcsP)pNsr+g&NuL3BI^Yl0-$`rFo@>^@MK`BTvLFT09$}*7@iD# z8}L-%BH(GjWx!V8#lR`RG!IS%rgWzPF9MzcOme*mnDR_jZ9j=}O>rP~PSO+?Qc>rG zJ;jMstfVO{Qf5i_5G2cz^l(W#B~7vR0l2Y5#QG#SnX;1Z&RF$Nutdgpg^dLd9 zMoE*bNi|72R*>wNq}4oVlQh*IQu<#+{4W}6XNvrL@@t-1n zD27}`Nm}h!O_IhQFjrPdQ{5qzC24A7NI50FOpvTf(jk(rl{B?!q?#m6Z4#*#Nu$}| zO6@G?yf0lr&#^0G#dMoF&~Bx{!RU6MW~X>|dnP0}&aUL7}3TS`hD zKa3D0)1Mdepk+5wilnOr$r2>(m9$mT)HadIlJo#UvI0p{TT7}+(!&JFY9;NGbfctK zOS(nU)aH_El{5w?d|aXqo%3^w3o#?1K}e~`>2$bg5CWyz7nUfPH+ItGuw&ps?usy? z&ReSFI!a0~#S@;%T#kz{8R;?+>@atD+%#^_a}@J&3m+GX;XDP;*B$aPD^c?7rMa#` zCnk>_=EWFTVGbZ@mt&E=L~#~61uf%2ld7Br9jRf=-&{r+Ny8`&GXf0L{Ow)#d?cAm zA;7$pj@t;8>vCY?AxDQrg(Ygci|D!wOT@@dm7xoBWGsquj$(Bb<3KKQd$H3kS_FH! zJ=f#rqdCmLigPe(bh(gbE(3cxgeY1jPV-e3ND@gVx&#w?|Cu$#FyB*>OC#*SoGox5 zJ3J-GwA=y;O(usG=3x+9m|uvwkqhJ0C2IN$i;Cc^FNEkziyjDsJ zZ|89>vAfG0u0<#}WxVT9Y2+f$9F-1CBF5zlJo))ZUa1qy1`Kp=K_Ld#>OftF4|ATI zglY8cU)IS9%+)A$vFbDzj6j34+mXvf(z&1pa~=T&StCkMhkGoc*>j3J<{2Wt$vw>{ zI_Dv>R0(esA3yuf`3Em2G?nM8@tyMyUVr^e1zn1yin1+f9u*3LX#cuRw0}dVF@?<^qcgB7wFc}9~V!I#gJO8KG*N^GGT9P1FaEKMDB z*I+Pz!h)uw1Wg{7Q0dZAx1Gj7C_kPev`C^=a^;lB_J!u!c7>Q=R|D0;B`b~0EO%kC z9eyxI#S(yE$)|^mED#V`aYa?OIHyDeixmqe8ZAhsBm8dcyZWP2i6YVAPAqs7=JMi- zh1n(cA}TRhB=g9|fHx3jF096O7De|`*-m=Y^2GDH*G}DXttMS!KT8&SXqc?RfcvZf`*{JhEr2eNw3uC9TS*F2H_!fc=vJ_KgAdy94a^1kkSp&`kmU_Xp6;0rcSjx+Q=< z8bBWlpg)ncDzDZ6`gnkQUjThNfNqntT3%VGDDNt5l(bqtqa>}Cmsm-w^FVWeeY&L8 zb%g>+tMk$-Nvrel?E&`90rtKCdwrOQ?8X>}dQCTTT26_QrvS1aj} zGW=#q$4I&@z&0oyYExbgZ=ZN&0e0NA(i?)pec(NvrL% zRnqFZkWJER`x)3?Is@ESNm}Kqpu7km(NqDhmqF7tM4hHm}(znbPF2(p> zOybAF9hIliD5PV@0!R;_Iy!dJpZ)Jf$(HMI^3|t~Wcdk=!tvzM z)Q$F^AvNS{vX$8~GBZ zkVH-K&r}LO(EgVBU0m2OX~bGr-oFxRpu28`O5t_N{Q}8#O23OcRsI2T_IC~Uc}uYj zg{o1AbA5$qIc~?aoz4=dbzfV_aBWkLyBt?;!O}q1$`nVjlUitH#)8{WFL8bbTkjps60_x$ zI7*fl<8Y8d%ZPk!N{ti6*Q|DYMEnn`rXzi9iR+Q0Vo960O^2h03!i^ejBm?JOkJP*a~-=q!hl)f5DVc=kLc`bwfr@_}LDAIK$-UqN|qV(Bx;|3jM{(0{JAK z-N}K%=}wWU(y!CbH787rFTHBD+q`I3oc+ zn_!PKW@Oc^qBJ)8**8NUm?z|sc&S|c!zcd!%AZm!8WuG`!?4Eh@1%>KY)o*YDzl%S z%!r4o{KF-_{>q=KL0oHKkF|DxCtdWE?(Kf|P0)8&7KoS1#Xo%FuPQo25L6LV@hi-B zL*Iz;hY9$5OsLz(;>_0-m`B54GGH?n3SI@=h5?u18uYP%FIO@4Pr%D-7<+9!UfTkU z-GF`(a1gNTZpMxSUcLwYZVh9pfRp#5{e2!y$zGga12nydJOYHhkF!{SOu#Jw4`2mg zEnpqs4}e<0Q-GHMhXF?crvPUFbZD+72WP%;5a&1+nXoUzOo<|#S74pK5B)8Y?rcGQ z!lGTqOv}uM4OIhveYzy2At`ywfuj6ZVa=vpJI`WYGH;z+V;tVm;d zQdx<$S~5n>qZ>oBElKmrua2LWf$2B~?yA`p&b$R+P73j?0J?%U24nIH$*2NmCS-sx zD=s0k#{Gyduxb`#GBM*DFze}O7B`Nkrv;T$xGU!uurPF!^wKy1l z(G&~XIxe;cWz8d z5|5v+i`iTrzczofOyTZa7c=3G4MBU;3*nTDct>51{*L0!>6mf^$(qKXo&#TD7jBIB z6NgWT7I})A$=GR_MRuBvCo_h(g#Ge9o{Z>D<+_j#zhVky)-WrDDcJMznv-Npbc~Dl zZ&k!j(2zFTcC>LQy6lQY#d-PsJo*BhbB}@Kkq@w=hzHm$AiHMRart%imrHgn-Sgz- zxD|G>;o!M|PUb+NLdOv8l#%9!|1%$rPQ!GQ(J$f8l0xFNCQX=*g~f-ku(%K>w_63f zetOo=-JA8x>&5!ThqHe7MYKjs_bm@&%!_=rrQxHU%rwzqEZW_ZMdtx$hO+2*J&Vrh z*TsD~xnGVClnAc}4=;LT4>rIZ!v@4(!Ukv*))NK6x)x{e;4UIeOKwaQ-X3_3-HXqg z0B!H47ECRlN1jHH41?cjHsC#DTkqEJmarzhvxhAteLwMl)7!u&_Gf5QCT1>@bVemg_RLXH_|*M=Qas58}}W@d!y5@i+(nTqelf=ux3;kb4LllsA|SiXX%V zX`+}B?kKEzVE+<@Wrt=dASA5rN*oE(UQ4Jkj=pVSudyAvyF=dAMF+tti@pRh)(l~x zZ9Q6pojO~PNz3EC9p2Gxu-Ipyc>$p9{WD@5@{Eoh)?SME3=U_5^8lGW+2HsvHaIS- zt$%A|OP?mAQ)38W1{`!YAP)=~Jtf@(G|b~b^Ssuxu#6CAbU)<(eOeRA+e+~X@Jn(x z4MVt4=3*-KVt3BEC=X&zxpnw*fylw7Dr!m zToD%ND|#Q%hI|*K&kNbDTdTd6%??4hQDH0!WhV+{CkpY7ii>RP(`s~5_>Ev?dk!D% zqcVP-X(9U-vj2eW%UQ%=$Rf`Gx%7ryda=PSE*H+{9Gt{z6b%ap=z7;eo>w&DqkB^4 zq0ERL6ohTUIHom;{2T*kt58~FuYzVGKpRHUH;25%Vzo}>0Wb3?>v<^anLSYELs)cN zzgEqVa5e;WVF=PQ1nC)q^bCoMZX3|ruSwJ?Y*kH}Itd}#~Msa)BF4_a_wQm-w9K zVeXb;&ev(5;9*9O?!gASuV(`xvw@n4T!vJ4qeh_YQeF>-=1PDrY(M;JwAbo@8pDdU zEMGfRcd52l4;Ddn1o_JA7wQv*n+Y$m^YO_8Xv4zc$*KED>!Wl=P+N=kl-w;NcWdxj z&)wz0U9B#TwV~Ruh+*Mum^+dU%j?UA#rI*uc6HS0bn?50{O-l)ZGeu4QFASYR1x-! zmaPodrD@qLopuQE5_LS3*Ktjxo<*XJMxu;HqRd6cp^dmmeY;3I-V$L9VMdfiBg&#N zBb=w%dI{ol6Fyl0ZCDjmaNX@%KIVwv?NeXW!#*fi5p3{%9ckfy>5ryjH{i38`yGtV z+#K>;5OZk{QuNWz_Cz_KfN~zky0+?~ZZ^Z)Dz$FD3qsebJwX1H9@v_UXR$V-rBK!GdzeKjrYCD8>I-@iF(Zi|zn!pT*r|79fnjVGMjyTqX(0O>|qK5^uUh!A6 zUXVqIQ>Gu*l}L~62!+?oM4QtKZ4TNV^a(@ICk)AmZXM8qHizeRZ?vtw(6)xND3@qk zk!%JQTv0z1iGDsZGaO~4CyR6$ozy3wbg}4e$`6%C>qw+G4Ik|q-j|6o7tX@&L%%XW z$Mm~&&LErCMD?p2&N9F&b|o}-19aik9j5b6(WYOeour$jg@fq9I@bFP{GlJD@R3{= zJp}a)Wyr9rvtMsk`MnFxF@To$wYHFl*<|f}Eeq8lh!Ko6Ju1@JcMW5Y0fwPdC9KiH zOS;5JB*`Iyx4CF<{n}>oPX#ieim`2gYv7+$ST)v`0V*Bg*Qb&n46E4;*p~oqlzuGG zuL3NTv={n6_}LTvpr3u{z!0=k1~$-zp558krl#cx-0WC~HC*r^Ec=Xf-d3ZY_lrm0 z(g!0UXHS>~gMJBPj6HljqY2fp&;{_LNB+1({%CsXP`<)guZ)m%(Ki?%@7~OCAI1v( zAP+ZqgSiYTpIVS!%}DAKf-w$^K%ZztpJ+gz*qcS~LZ8UX zPz1`C5#`IkB6k^`p;1~E^-Xs?NMV_y}Xi01Mw2Skohj^_U#Q+X69eGNN5V-9+5v_&|)ChK6BG)0+*A z8`u`r+P@{TsgE&uKi4fAXS;3kCts6wcJ>eOEVK1PLN&k;PzZsy~tF&q_ z(uMI3>Tlq9FoMPuE^UXLCq0XOJHUC!hZHYAE^T@!AJ2p%?~q=U2aMnOSb*Y4b>OQl zINMMM_t4)0oCF}O(xJTmbRFBMd3!(Hh1LtV!w3%w!x*|h8=!|HSqA$nz zO*4-5YU|k=+R~#*9TW4m00C(RhM`VGvVpt0jyR$(Lwq%tb?Yw{{zCocH)@=o+K0I= zK>0vmk_9PsEni(%qBVjsXsiO&E8~TU4fEMRMGayF&2s@X-|bG(8Z9aRa1LWl%3m2l z(0V>8e|I$j?#Q0jo=N$;OI^Z^x_s1lM~%KPUX;%li!-h9lk(?p{2l(~-S8*5Y=XH7 za51^i8h&6n>pk44%STN|Yd7KO;8Kq@1rwmM# zz8iOHyvh-Fpd$I!z`VP()0!qJl|Plc)4RD*w;$Er8So>YD)>O32DAa_d8FTfnSAjg z>54oYwF-F60Ji0R?@&Dtefi(f=h6Q(N!2?}!xCCS_?Zoc8Lho-^7DH+%r?QV&Ce_z zW;U3m`ich(Fw264>3Czvos8wi5;tluufY@96daPXTXRbCaGC9~ zpp2YCJag0eh|#ASyw8z}qm;?wqRUX-OuL&ugM&SP-5ea$nd)%O#L=)KyEq_&TkKPC z*vD<>j*{q>xgR|TGgsZrBD>wmUR8ak;n-dw&e#b5rHnmFVNUV5TsRt+F5iLpgXEIQ zPZHtW0L268akvWIOZl-M#tvyR>0fFm~xutVh z5bQH>Ny&9FCoE}pMyBAJ$g<@%K^&TO;Zzd%WS2M!@vsVzILyb`be3I~TUwY~jFE2? z%XiuB7!|T&oV;`7V$6#hS$IvE5Ed2kD|*gm#s+}LqrO*}dQE^y8erN!StAddojj`R2Iak;agi+z(?lKjgd ziuq>0awNo>f;@hiOp|ejZi*w%E{oF}L2@H%X2u*G@LGflP~<7a`$=f>lXCg((+g}i z>M~tRFJ{T^4dO*D9j`3WbyQsKn*xbJrtB6i!k@|S&1FJV>9`k%Dwk9`6*p1I0Pi0o zJ&Wu~MMYB_cN&UbvPDzoKxks)nt11 z3A=t|BlqZLl^~Ol{#I>Dsl~p)vv8r^g}~`~Bld`HRtaA8K@*VIQTGuaiY{|dO}nV| zKfq1aQHN_P>OJD6a;?^7s%1#6#_Tb_JduXTl(}7H;wOxEv?(12B4?(eHdyH@F3CmFNk@eu0Uh>>;S{t+g*d!A6DI|cZHUJ%X5k0C18mp; zMrT|p)J(=NT4Sdtn~ZQawt!vFvPWs7Uo zcGXIF8j85M+}YwJDqc0o&LxgGk0rtZt75$W!owteww+ZoRQp`#(rmQu|92@G>dqP9E;hg&%{SD$7{p3TpZ@`+j`3;U6b2x^6jmC*Uu8+6;wzCJ za;L^890^QM?wYPl8UHM49xKnKHc9gYX-?dUM}jM8XwgWICtkxcIMgqO1N~}ox38( z!ou7xuDa(ZV%F7Rcl^Yq?tkqrTlAt`9CpW#S&C!CAOCwrQB zq)SAgdyn0PLsw(aI_5iMp7M;99}KRzQtJnm52~-Ka?1Kd^@vo>)UNeWn09{CWj)*^ z-I-+ljF-4Jz(39^@OG?|!+&(YD*-I5T}z8=I2K?Ac1S&)Rr)JH5A#oe!y<$}95@v~ z?g^Xv;5@T}^(El=zA(Q;!||XI4gfS;sZBPXqUeN7$K|Ez^P-f7D{phejczL`aQsRV+}JMdRoh* zbx)Ex$5?A6J*~OkD)n@FfHoLO{)B1si1dVMkB{8b!Hxw|PaCT%0OY0u_z7vgANaV` z6Q&LQ1h^qwEA@mG%oHj9ga>1tw*Y#=F9FO*Zwv6gc*qCorKivT37|O8LwchDq^F0_ z^8mz$-b3Fd^}B)duR)q&z8d&Epce9{18YfuP0(9_p97Hj9^mLip&tyKI{~slImrWF zHW6h7c|myUb$FW&?ybN!T)T+@f5P8hk9fj8y~M6J3z-o9crxC58;(2zo-;+{Q5Nv+ z$>0OO6~HwBk|E*Crb1o_D;D@+fC)V5Irq)e@GKU>r3c-=pN=vFJw3Rb03g5gviquZ z#x}w)J@9_VO^mHZxb)8Zm<*I>=;^ulM`vOE4tjd^{nad_3wnC|{TzV!&>QgI-h#Nn zoSuSz@>aZ=2tDDy0Z8Vpz#nHL-pH3vfbX+mZ4>d?2s}JT)DaVKI)Hf21CGfR<)82o z0J(1gj?G6JkVe8*z+kv1tSrP{Jopo?15mhxLkomH9JpBOoxm#r6xM3s2c&)z@Do!1 zBydb2&MqJ&9n5^e~82cUS;yZ@5`uaTqD8_2d)FOB3*==r8(j6r2YrsE7l74Cg5oR;!k^N zcBwA_-UrZMin0Veh&kUn)?NR9q^w3QQ-3=@Oi*$=-Ec>>py_{ z54{=K1t9*LfHe=IOu$?Re90#C1l$Lnlp8%An=YW$o3v&zbLaBEG z&)*_sXamlvLpd3Rd;}g@4;exq3;Z)+5A?qR_xlsd5cE;N;X5H0=n1DhEy`pn@PmyA z3uBT^z*jws_6KeffGYu~vC+F4IAphoGwq$lJ}30_-yU0Dz&lcKlkg%|69JUoSAb6g zNS=hhe+BY_n;(Ebe-&|n{y1>aYjB7DE9TEAw}41;1634ruQ z;0UQt1-_s32x}woA*naMj`9y6*%H28>MMX7q`ndOC#kR9$Jp0^Hl&@-A8ZEDShNZF z0D!`61^!a%*&C1vfXo%(6H;$Hfcgk%MEN27)M4R<{^_I@&_v}5xTr;#(~(&^gla^- z6OMjY=;?4_q14lX&o88&&f4(vF{rT^c-oA%mQEDt zHJxcNBks0ZXKh7oO>J#$V{KDyOKodyTP@pc+^lRiZ8mRC-)!6L++4A_W^?W4#?4Ke zTQ;|DZrjYZ7`G@}Ok2!b(zn>QIJZ=6so7Esxi@WT+0qJ`v#rLh%2v}>^VamOwyn;s z6k?$a3?o?H9D?#(gzJA=0j_~>rihq_fk%f_t=Du+XNr^g^I z%<^DoBk2qdsaSh9>G3^9f6I4e+`s?uM$a#w%s65j{D6M(Gt(C@_>$=`PH8K-yfpGl z)8xA%W+mUcJ?`Kg`;Xl7m$I)ml)M^Q^S$FWx-3=vRK(WB=C~5&`GL>$?{R<6W!IH{ z`Bn61e|qPRBe7L)l+R}|cn@I0%R6gtKj`Td=h!oS?T`8=_C35e^`6u3zVhxp*Us9q z{d*RV^`Dm>cwpLy-7ns-_wKE8`yPsYv+m*C9Si&4Hu{%8W-gd@_1(u#pm z+3>|_YgyukZR^fB78lba_zm~G5%)pT+|1RNFW)&o6p&!TbuEr&lh?EmJk=h&b}b!mTJ^k{Rh)6IXJ zw&<%9SGD~(HRy|}tPbN(8bwiOS>cGw*SKUjD<8>qo5I8NI6Cq5F>~CY|%8{?PA(a_S87hSG-v7?~(_dJiRKCC6bKu06 z`G^kmxj)}Gh*&*r=HWkI*Xmg ze;C~SRP+;9dj@}+vimyye%JlM`>rmXZEx&#I&RdHRhcGw$D9QXubAHBVCJq5pC6n2 z?#f>p<4KtV4B08=&#k25B`~tbatLk!k3FUU65Mt{FFe+|_Xjro_1edW|;;a{N^$)7;zj`w5`HWAaQW-6{e1nOL+*TY*n#iQB>s5on=5y(x&Oqc zqZWCWR^2!6v+YraSEpSO{@SYAJ$Bv4BdS-7K70D{XLo%#cS6K9<14>^6opkrnAC7H4w=QwZqaWe$L)S*?YBUcQsq5nk=T? zko*vXM$@j-1!;R!nEDbuQWtIt3(=zq4-W1T6l5AghP`$Db&zb@vZ%%4{#$VFNP)J(CuDUdD(_IT6NEo{+<&hVfc12Hl@WJ6nBkvut{f-a6+4pME zjd88_Z%sY$z?e6le`WQ{2Y(&?r_^t}@7?-U~rexh*xt3x0A`M%VbbDlU+w)oue^$EwGd84K3txv;D6JPvt`$v+X8&8{`UVp|rsp0j8^v}kv(tLo@ z_AdHI)0m4F)b4ACUte0g%w+8B`ZVF=u!e7n?x;YaLF2;xtaYZrepJtKy-ohM{Y+PO zden^@p;KNOTJzIGmk(cc%VS?W^46>Q|J;(bAvyKPjk_OhY^pJA9C3|*&Y}+KR%zJg ziILwv^1=Oo$cj4p-TYU2-8y*O;BOBue5h&Ro3+>2f6Ml~*s$R1>+U)=)1-TEKxOEz zEl189wrxG`dhzWrQ}M!PrO&~rw9pfGjnu5nyL(OR*Viep?s+0>>JQh+a^+JEWfQ#jF3X?t*;nh=zSOh#o?{=an)}38%koE>kM8_-@qht$e6(lu z%fZ&TS^1w_-}kB~wA&(XzNzlm0}*9wr(IULUB5GK_f0pLw#{2U^Usez9QL>9&3}9O fz?ug(#e6$_ZR6@MzWQv#t?`4d`e|0*Yv=zjCG4Hr literal 0 HcmV?d00001 diff --git a/packaging/windows/sudovda/SudoVDA.inf b/packaging/windows/sudovda/SudoVDA.inf new file mode 100644 index 0000000000000000000000000000000000000000..f1958d58ecae8868d2bafc45b36144df057dbb54 GIT binary patch literal 3644 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 literal 0 HcmV?d00001 diff --git a/packaging/windows/sudovda/sudovda.cer b/packaging/windows/sudovda/sudovda.cer new file mode 100644 index 0000000000000000000000000000000000000000..6cdc2ae52a335f35e50205753899b2262cb09f1c GIT binary patch literal 772 zcmXqLVrDRCVtlcHnTe5!Ngy?<=9gF8#1_|8Qga0r<dQOKRPEQZ{RA7f6QdMxlhs^Q>X#+8{7 z0*udMO7~0*agwrGwe;1Thwblf3tIfkxK?{;-%tDfY<0)wkA41R`8Do%&pm5()v6QncraE|}``aA|R8vaF+Go9uS~FwM==&j*xT z`Eq07k1oqabFQviv0Y`l^!s(@(^X#25$-YxKbReVkcpX*fpM{$fr|kjFyv+V85#ex zurM>RHy8+m_^K>C23%|$+H8!htnAFp2C^VQJ{B<+5yhuEr+of}91)3@{=dmQA}-SL z#75+h21Y0_q!}4Z)lz1(r%$!eZStJG{lF$k=jqcGuZT=kT2X!N-Qm4Cent-_FZMY$ zRp;ooJuSOW{?T6T^RD|++}pMS20oLOUmTu4wS5p}>$Uab_L|<%?#z?EZ_9-@$a*E8 zwR3X|Z{eBp|I}+iyYO%S?!6Lsm5LC&{bj1n+E~7V1HJym(T~DZug51xXK!-48ZvEq z+w#*VZF~iD{#DCnc0YRVFIe&;?vDPUIdiWht>}_GcKXo7Z?(@eWB1C<{W-~JcjC(D z<%K^Kdn|5jJbIzy)LkwEo1ITrJiWH(Ncr{60S78pF6CoAS@b7)v0uE*%{iuWOD>#T bW4=+u{Ey+}<_&Kg*7tnswp(^+S-^b&C;mbB literal 0 HcmV?d00001