@echo off
rem Codex login toggle - download from pool.yulitongxing.com/switch
rem Run this file again any time to flip between OFFICIAL login and the team GATEWAY.
rem It only touches %USERPROFILE%\.codex\config.toml and auth.json, with backups each run.
setlocal EnableExtensions
set "B64TMP=%TEMP%\codex-toggle-%RANDOM%%RANDOM%.tmp"
> "%B64TMP%" echo CiRFcnJvckFjdGlvblByZWZlcmVuY2UgPSAnU3RvcCcKJGRpciA9IGlmICgkZW52OkNPREVYX1RPR0dMRV9IT01FKSB7ICRlbnY6Q09ERVhfVE9HR0xFX0hPTUUgfSBlbHNlIHsgSm9pbi1QYXRoICRlbnY6VVNFUlBST0ZJTEUgJy5jb2RleCcgfQokZ3dVcmwgPSAnaHR0cHM6Ly9hcGkueXVsaXRvbmd4aW5nLmNvbS92MScKJHBvb2xNb2RlbHMgPSAnZ3B0LTYtYXN0cmF8Z3B0LTVcLjV8Z3B0LTVcLjYtW0EtWmEtejAtOV8uLV0rfGdwdC01XC4zLWNvZGV4LXNwYXJrfGNvZGV4LWF1dG8tcmV2aWV3fGdwdC1vc3MtW0EtWmEtejAtOV8uLV0rfGdlbWluaS1bQS1aYS16MC05Xy4tXSt8Z3Jvay1bQS1aYS16MC05Xy4tXSt8ZGVlcHNlZWstW0EtWmEtejAtOV8uLV0rfGNsYXVkZS1bQS1aYS16MC05Xy4tXSsnCiRjZmcgPSBKb2luLVBhdGggJGRpciAnY29uZmlnLnRvbWwnCiRhdXRoID0gSm9pbi1QYXRoICRkaXIgJ2F1dGguanNvbicKJG9mZmljaWFsQXV0aCA9IEpvaW4tUGF0aCAkZGlyICdhdXRoLm9mZmljaWFsLmpzb24nCiRrZXlGaWxlID0gSm9pbi1QYXRoICRkaXIgJy5nYXRld2F5X2tleScKaWYgKC1ub3QgKFRlc3QtUGF0aCAkY2ZnKSkgeyBXcml0ZS1I
>> "%B64TMP%" echo b3N0ICJbWF0gY29uZmlnLnRvbWwgbm90IGZvdW5kIGluICRkaXIgLSBpbnN0YWxsIGFuZCBydW4gQ29kZXggb25jZSBmaXJzdC4iOyBleGl0IDEgfQppZiAoLW5vdCAoVGVzdC1QYXRoICRhdXRoKSkgeyBXcml0ZS1Ib3N0ICJbWF0gYXV0aC5qc29uIG5vdCBmb3VuZCBpbiAkZGlyIjsgZXhpdCAxIH0KJHRzID0gR2V0LURhdGUgLUZvcm1hdCAneXl5eU1NZGQtSEhtbXNzJwpDb3B5LUl0ZW0gJGNmZyAoJGNmZyArICcuYmFrLScgKyAkdHMpIC1Gb3JjZQpDb3B5LUl0ZW0gJGF1dGggKCRhdXRoICsgJy5iYWstJyArICR0cykgLUZvcmNlCmZ1bmN0aW9uIFdyaXRlLU5vQm9tKFtzdHJpbmddJHBhdGgsIFtzdHJpbmddJHRleHQpIHsKICBbU3lzdGVtLklPLkZpbGVdOjpXcml0ZUFsbFRleHQoJHBhdGgsICR0ZXh0LCAoTmV3LU9iamVjdCBTeXN0ZW0uVGV4dC5VVEY4RW5jb2RpbmcoJGZhbHNlKSkpCn0KJG5sID0gW2NoYXJdMTAKJGMgPSBbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgkY2ZnKQokbGluZXMgPSAkYyAtc3BsaXQgIlxyP1xuIgojIOmAkOihjOaJq+aPj++8muW9k+WJjeaYr+WQpuWkhOS6jue9keWFs+aooeW8j++8iOWPquiupOacquazqOmH
>> "%B64TMP%" echo iueahCBvcGVuYWlfYmFzZV91cmwg6KGM77yJCiRvbkdhdGV3YXkgPSAkZmFsc2UKZm9yZWFjaCAoJGxuIGluICRsaW5lcykgewogIGlmICgkbG4gLW1hdGNoICdeb3BlbmFpX2Jhc2VfdXJsXHMqPVxzKiJbXiJdKnl1bGl0b25neGluZycpIHsgJG9uR2F0ZXdheSA9ICR0cnVlOyBicmVhayB9Cn0KJGlzUG9vbE1vZGVsID0gJ15tb2RlbFxzKj1ccyoiKCcgKyAkcG9vbE1vZGVscyArICcpIlxzKiQnCiRvdXQgPSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3Rbc3RyaW5nXQppZiAoJG9uR2F0ZXdheSkgewogICMgLS0tLSBzd2l0Y2ggdG8gT0ZGSUNJQUwgLS0tLQogIGlmICgtbm90IChUZXN0LVBhdGggJG9mZmljaWFsQXV0aCkpIHsKICAgICRqID0gW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJGF1dGgpIHwgQ29udmVydEZyb20tSnNvbgogICAgaWYgKCRqLlBTT2JqZWN0LlByb3BlcnRpZXNbJ09QRU5BSV9BUElfS0VZJ10pIHsgJGouUFNPYmplY3QuUHJvcGVydGllcy5SZW1vdmUoJ09QRU5BSV9BUElfS0VZJykgfQogICAgJGogfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lIGF1dGhfbW9kZSAtTm90ZVByb3Bl
>> "%B64TMP%" echo cnR5VmFsdWUgJ2NoYXRncHQnIC1Gb3JjZQogICAgV3JpdGUtTm9Cb20gJG9mZmljaWFsQXV0aCAoJGogfCBDb252ZXJ0VG8tSnNvbiAtRGVwdGggMjApCiAgfQogIENvcHktSXRlbSAkb2ZmaWNpYWxBdXRoICRhdXRoIC1Gb3JjZQogIGZvcmVhY2ggKCRsbiBpbiAkbGluZXMpIHsKICAgIGlmICgkbG4gLW1hdGNoICdeIz9ccypvcGVuYWlfYmFzZV91cmwnKSB7IGNvbnRpbnVlIH0gICAgICAgICAjIOi/nuWQjOazqOmHiuaui+eVmeS4gOi1t+enu+mZpAogICAgZWxzZWlmICgkbG4gLW1hdGNoICRpc1Bvb2xNb2RlbCkgeyAkb3V0LkFkZCgnIyAnICsgJGxuICsgJyAgIyB0b2dnbGVkLXRvLW9mZmljaWFsICcgKyAkdHMpIH0KICAgIGVsc2UgeyAkb3V0LkFkZCgkbG4pIH0KICB9CiAgV3JpdGUtTm9Cb20gJGNmZyAoKCRvdXQgLWpvaW4gJG5sKSArICRubCkKICBXcml0ZS1Ib3N0ICdbT0tdIHN3aXRjaGVkIHRvIE9GRklDSUFMIE9wZW5BSSBsb2dpbi4nCn0gZWxzZSB7CiAgIyAtLS0tIHN3aXRjaCB0byBHQVRFV0FZIC0tLS0KICBpZiAoLW5vdCAoVGVzdC1QYXRoICRvZmZpY2lhbEF1dGgpKSB7IENvcHktSXRlbSAkYXV0aCAkb2ZmaWNpYWxBdXRoIH0KICAk
>> "%B64TMP%" echo a2V5ID0gJG51bGwKICBpZiAoVGVzdC1QYXRoICRrZXlGaWxlKSB7ICRrZXkgPSAoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJGtleUZpbGUpKS5UcmltKCkgfQogIGlmICgtbm90ICRrZXkpIHsKICAgICRrZXkgPSAoUmVhZC1Ib3N0ICdQYXN0ZSB5b3VyIGdhdGV3YXkga2V5IChzay0uLi4pJykuVHJpbSgpCiAgICBpZiAoLW5vdCAka2V5KSB7IFdyaXRlLUhvc3QgJ1tYXSBlbXB0eSBrZXkgLSBhYm9ydGVkLCBub3RoaW5nIGNoYW5nZWQuJzsgZXhpdCAxIH0KICAgIFtTeXN0ZW0uSU8uRmlsZV06OldyaXRlQWxsVGV4dCgka2V5RmlsZSwgJGtleSkKICB9CiAgV3JpdGUtTm9Cb20gJGF1dGggKCd7JyArICRubCArICcgICJPUEVOQUlfQVBJX0tFWSI6ICInICsgJGtleSArICciJyArICRubCArICd9JykKICAkaGFzTW9kZWwgPSAkZmFsc2UKICBmb3JlYWNoICgkbG4gaW4gJGxpbmVzKSB7CiAgICBpZiAoJGxuIC1tYXRjaCAnXiM/XHMqb3BlbmFpX2Jhc2VfdXJsJykgeyBjb250aW51ZSB9CiAgICBlbHNlaWYgKCRsbiAtbWF0Y2ggKCdeI1xzKihtb2RlbFxzKj1ccyoiKCcgKyAkcG9vbE1vZGVscyArICcpIlxzKikoIy4qKT8kJykpIHsKICAgICAg
>> "%B64TMP%" echo JG91dC5BZGQoJE1hdGNoZXNbMV0pOyAkaGFzTW9kZWwgPSAkdHJ1ZSAgICAgICAgICAgICAgICAgICAjIOaBouWkjeiiq+azqOmHiueahOWPt+axoOaooeWei+ihjAogICAgfQogICAgZWxzZWlmICgkbG4gLW1hdGNoICdebW9kZWxccyo9JykgeyAkb3V0LkFkZCgkbG4pOyAkaGFzTW9kZWwgPSAkdHJ1ZSB9CiAgICBlbHNlIHsgJG91dC5BZGQoJGxuKSB9CiAgfQogICRnd0xpbmUgPSAnb3BlbmFpX2Jhc2VfdXJsID0gIicgKyAkZ3dVcmwgKyAnIicKICBpZiAoLW5vdCAkaGFzTW9kZWwpIHsgJGd3TGluZSA9ICRnd0xpbmUgKyAkbmwgKyAnbW9kZWwgPSAiZ3B0LTYtYXN0cmEiJyB9CiAgJG91dC5JbnNlcnQoMCwgJGd3TGluZSkKICBXcml0ZS1Ob0JvbSAkY2ZnICgoJG91dCAtam9pbiAkbmwpICsgJG5sKQogIFdyaXRlLUhvc3QgJ1tPS10gc3dpdGNoZWQgdG8gR0FURVdBWSBhcGkueXVsaXRvbmd4aW5nLmNvbS4nCn0KV3JpdGUtSG9zdCAoJ0JhY2t1cHMgY3JlYXRlZDogKi5iYWstJyArICR0cyArICcgKGNvbmZpZy50b21sIC8gYXV0aC5qc29uKScpCldyaXRlLUhvc3QgJ05vdyBGVUxMWSBxdWl0IENvZGV4IChhbGwgd2luZG93cykgYW5kIHJlb3BlbiBp
>> "%B64TMP%" echo dC4nCg==
powershell -NoProfile -ExecutionPolicy Bypass -Command "$c=[IO.File]::ReadAllText('%B64TMP%') -replace '\s',''; $s=[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($c)); Invoke-Expression $s"
set "RC=%ERRORLEVEL%"
del "%B64TMP%" >nul 2>&1
echo.
pause
exit /b %RC%
