REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 50.33 KB
Close
/proc/self/root/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/__pycache__/distro.cpython-311.pyc
Text
Base64
pw0NCgAAAADm515pHr0AAOMAAAAAAAAAAAAAAAAHAAAAAAAAAPNYAgAAlwBkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZAJsCVoJZANaCgkAZQRqGgAAAAAAAAAAoBsAAAAAAAAAAAAAAAAAAAAAAAAAAGQKZAumAgAAqwIAAAAAAAAAAFocZQRqGgAAAAAAAAAAoBsAAAAAAAAAAAAAAAAAAAAAAAAAAGQMZA2mAgAAqwIAAAAAAAAAAFodZA5aHmQPZBBpAVofZBBkEGQRZBFkEWQSnAVaIGQTZBFpAVohAgBlBWoiAAAAAAAAAABkFKYBAACrAQAAAAAAAAAAWiMCAGUFaiIAAAAAAAAAAGQVpgEAAKsBAAAAAAAAAABaJGQWZBdkGGUeZBlkGmQbZgdaJWQ3ZB2EAVomZB6EAFonZDhkH4QBWihkOWQghAFaKWQ4ZCGEAVoqZDhkIoQBWitkOGQjhAFaLGQ4ZCSEAVotZCWEAFouZCaEAFovZDlkJ4QBWjBkKIQAWjFkKYQAWjJkKoQAWjNkK4QAWjRkLIQAWjVkLYQAWjZkLoQAWjdkL4QAWjgJAGQBZDBsOW06WjoBAG4ZIwBlOyQAchEBAAIARwBkMYQAZDJlPKYDAACrAwAAAAAAAAAAWjpZAG4EdwB4A1kAdwECAEcAZDOEAGQ0ZTymAwAAqwMAAAAAAAAAAFo9AgBlPaYAAACrAAAAAAAAAAAAWj5kNYQAWj9lQGQ2awIAAAAAcgwCAGU/pgAAAKsAAAAAAAAAAAABAGQCUwBkAlMAKTph+wIAAApUaGUgYGBkaXN0cm9gYCBwYWNrYWdlIChgYGRpc3Ryb2BgIHN0YW5kcyBmb3IgTGludXggRGlzdHJpYnV0aW9uKSBwcm92aWRlcwppbmZvcm1hdGlvbiBhYm91dCB0aGUgTGludXggZGlzdHJpYnV0aW9uIGl0IHJ1bnMgb24sIHN1Y2ggYXMgYSByZWxpYWJsZQptYWNoaW5lLXJlYWRhYmxlIGRpc3RybyBJRCwgb3IgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCkl0IGlzIHRoZSByZWNvbW1lbmRlZCByZXBsYWNlbWVudCBmb3IgUHl0aG9uJ3Mgb3JpZ2luYWwKOnB5OmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb24sIGJ1dCBpdCBwcm92aWRlcyBtdWNoIG1vcmUKZnVuY3Rpb25hbGl0eS4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gYmVjYW1lIG5lY2Vzc2FyeSBiZWNhdXNlIFB5dGhvbgozLjUgZGVwcmVjYXRlZCB0aGlzIGZ1bmN0aW9uLCBhbmQgUHl0aG9uIDMuOCByZW1vdmVkIGl0IGFsdG9nZXRoZXIuIEl0cwpwcmVkZWNlc3NvciBmdW5jdGlvbiA6cHk6ZnVuYzpgcGxhdGZvcm0uZGlzdGAgd2FzIGFscmVhZHkgZGVwcmVjYXRlZCBzaW5jZQpQeXRob24gMi42IGFuZCByZW1vdmVkIGluIFB5dGhvbiAzLjguIFN0aWxsLCB0aGVyZSBhcmUgbWFueSBjYXNlcyBpbiB3aGljaAphY2Nlc3MgdG8gT1MgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uIGlzIG5lZWRlZC4gU2VlIGBQeXRob24gaXNzdWUgMTMyMgo8aHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzIyPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgrpAAAAAE56BTEuNi4wRikL2gNBbnnaCENhbGxhYmxl2gREaWN02ghJdGVyYWJsZdoIT3B0aW9uYWzaCFNlcXVlbmNl2gZUZXh0SU/aBVR1cGxl2gRUeXBl2glUeXBlZERpY3TaBVVuaW9u2gtWZXJzaW9uRGljdKkD2gVtYWpvctoFbWlub3LaDGJ1aWxkX251bWJlctoISW5mb0RpY3SpBdoCaWTaB3ZlcnNpb27aDXZlcnNpb25fcGFydHPaBGxpa2XaCGNvZGVuYW1l2gtVTklYQ09ORkRJUnoEL2V0Y9oNVU5JWFVTUkxJQkRJUnoIL3Vzci9saWJ6Cm9zLXJlbGVhc2XaAm9s2gZvcmFjbGXaBHJoZWwpBdoWZW50ZXJwcmlzZWVudGVycHJpc2Vhc9oaZW50ZXJwcmlzZWVudGVycHJpc2VzZXJ2ZXLaG3JlZGhhdGVudGVycHJpc2V3b3Jrc3RhdGlvbtoWcmVkaGF0ZW50ZXJwcmlzZXNlcnZlctobcmVkaGF0ZW50ZXJwcmlzZWNvbXB1dGVub2Rl2gZyZWRoYXR6QSg/OlteKV0qXCkoLiopXCgpPyAqKD86U1RMICk/KFtcZC4rXC1hLXpdKlxkKSAqKD86ZXNhZWxlciAqKT8oLispehsoXHcrKVstX10ocmVsZWFzZXx2ZXJzaW9uKSTaDmRlYmlhbl92ZXJzaW9uegtsc2ItcmVsZWFzZXoLb2VtLXJlbGVhc2V6DnN5c3RlbS1yZWxlYXNleg1wbGVzay1yZWxlYXNlehBpcmVkbWFpbC1yZWxlYXNlVGMBAAAAAAAAAAAAAAAFAAAAAwAAAPNuAAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAZAF0BAAAAAAAAAAAAABkAqwDpgMAAKsDAAAAAAAAAAABAHQGAAAAAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAUwApBGFHBQAACiAgICAuLiBkZXByZWNhdGVkOjogMS42LjAKCiAgICAgICAgOmZ1bmM6YGRpc3Ryby5saW51eF9kaXN0cmlidXRpb24oKWAgaXMgZGVwcmVjYXRlZC4gSXQgc2hvdWxkIG9ubHkgYmUKICAgICAgICB1c2VkIGFzIGEgY29tcGF0aWJpbGl0eSBzaGltIHdpdGggUHl0aG9uJ3MKICAgICAgICA6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKClgLiBQbGVhc2UgdXNlIDpmdW5jOmBkaXN0cm8uaWRgLAogICAgICAgIDpmdW5jOmBkaXN0cm8udmVyc2lvbmAgYW5kIDpmdW5jOmBkaXN0cm8ubmFtZWAgaW5zdGVhZC4KCiAgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uIGFzIGEgdHVwbGUKICAgIGBgKGlkX25hbWUsIHZlcnNpb24sIGNvZGVuYW1lKWBgIHdpdGggaXRlbXMgYXMgZm9sbG93czoKCiAgICAqIGBgaWRfbmFtZWBgOiAgSWYgKmZ1bGxfZGlzdHJpYnV0aW9uX25hbWUqIGlzIGZhbHNlLCB0aGUgcmVzdWx0IG9mCiAgICAgIDpmdW5jOmBkaXN0cm8uaWRgLiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5uYW1lYC4KCiAgICAqIGBgdmVyc2lvbmBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLnZlcnNpb25gLgoKICAgICogYGBjb2RlbmFtZWBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLmNvZGVuYW1lYC4KCiAgICBUaGUgaW50ZXJmYWNlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBvcmlnaW5hbAogICAgOnB5OmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb24sIHN1cHBvcnRpbmcgYSBzdWJzZXQgb2YKICAgIGl0cyBwYXJhbWV0ZXJzLgoKICAgIFRoZSBkYXRhIGl0IHJldHVybnMgbWF5IG5vdCBleGFjdGx5IGJlIHRoZSBzYW1lLCBiZWNhdXNlIGl0IHVzZXMgbW9yZSBkYXRhCiAgICBzb3VyY2VzIHRoYW4gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBhbmQgdGhhdCBtYXkgbGVhZCB0byBkaWZmZXJlbnQgZGF0YSBpZgogICAgdGhlIE9TIGRpc3RyaWJ1dGlvbiBpcyBub3QgY29uc2lzdGVudCBhY3Jvc3MgbXVsdGlwbGUgZGF0YSBzb3VyY2VzIGl0CiAgICBwcm92aWRlcyAodGhlcmUgYXJlIGluZGVlZCBzdWNoIGRpc3RyaWJ1dGlvbnMgLi4uKS4KCiAgICBBbm90aGVyIHJlYXNvbiBmb3IgZGlmZmVyZW5jZXMgaXMgdGhlIGZhY3QgdGhhdCB0aGUgOmZ1bmM6YGRpc3Ryby5pZGAKICAgIG1ldGhvZCBub3JtYWxpemVzIHRoZSBkaXN0cm8gSUQgc3RyaW5nIHRvIGEgcmVsaWFibGUgbWFjaGluZS1yZWFkYWJsZSB2YWx1ZQogICAgZm9yIGEgbnVtYmVyIG9mIHBvcHVsYXIgT1MgZGlzdHJpYnV0aW9ucy4KICAgIHrKZGlzdHJvLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGlzIGRlcHJlY2F0ZWQuIEl0IHNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBjb21wYXRpYmlsaXR5IHNoaW0gd2l0aCBQeXRob24ncyBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKS4gUGxlYXNlIHVzZSBkaXN0cm8uaWQoKSwgZGlzdHJvLnZlcnNpb24oKSBhbmQgZGlzdHJvLm5hbWUoKSBpbnN0ZWFkLukCAAAAKQHaCnN0YWNrbGV2ZWwpBdoId2FybmluZ3PaBHdhcm7aEkRlcHJlY2F0aW9uV2FybmluZ9oHX2Rpc3Ryb9oSbGludXhfZGlzdHJpYnV0aW9uKQHaFmZ1bGxfZGlzdHJpYnV0aW9uX25hbWVzAQAAACD6hC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjMxMS1waXAtMjEuMy4xLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjMxMS9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3BpcC9fdmVuZG9yL2Rpc3Ryby5weXItAAAAci0AAACIAAAAc0MAAACAAPVCAQAFDYRN8AICCUMB9QYACRvYExTwCwYFBvEABgUG9AAGBQbwAAYFBvUOAAwT1wsl0gsl0CY80Qs91As90AQ98wAAAABjAAAAAAAAAAAAAAAAAgAAAAMAAADzNAAAAJcAdAAAAAAAAAAAAAAAoAEAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAUwApAWFECwAACiAgICBSZXR1cm4gdGhlIGRpc3RybyBJRCBvZiB0aGUgY3VycmVudCBkaXN0cmlidXRpb24sIGFzIGEKICAgIG1hY2hpbmUtcmVhZGFibGUgc3RyaW5nLgoKICAgIEZvciBhIG51bWJlciBvZiBPUyBkaXN0cmlidXRpb25zLCB0aGUgcmV0dXJuZWQgZGlzdHJvIElEIHZhbHVlIGlzCiAgICAqcmVsaWFibGUqLCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBpcyBkb2N1bWVudGVkIGFuZCB0aGF0IGl0IGRvZXMgbm90IGNoYW5nZQogICAgYWNyb3NzIHJlbGVhc2VzIG9mIHRoZSBkaXN0cmlidXRpb24uCgogICAgVGhpcyBwYWNrYWdlIG1haW50YWlucyB0aGUgZm9sbG93aW5nIHJlbGlhYmxlIGRpc3RybyBJRCB2YWx1ZXM6CgogICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBEaXN0cm8gSUQgICAgICAgRGlzdHJpYnV0aW9uCiAgICA9PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICJ1YnVudHUiICAgICAgICBVYnVudHUKICAgICJkZWJpYW4iICAgICAgICBEZWJpYW4KICAgICJyaGVsIiAgICAgICAgICBSZWRIYXQgRW50ZXJwcmlzZSBMaW51eAogICAgImNlbnRvcyIgICAgICAgIENlbnRPUwogICAgImZlZG9yYSIgICAgICAgIEZlZG9yYQogICAgInNsZXMiICAgICAgICAgIFNVU0UgTGludXggRW50ZXJwcmlzZSBTZXJ2ZXIKICAgICJvcGVuc3VzZSIgICAgICBvcGVuU1VTRQogICAgImFtYXpvbiIgICAgICAgIEFtYXpvbiBMaW51eAogICAgImFyY2giICAgICAgICAgIEFyY2ggTGludXgKICAgICJjbG91ZGxpbnV4IiAgICBDbG91ZExpbnV4IE9TCiAgICAiZXhoZXJibyIgICAgICAgRXhoZXJibyBMaW51eAogICAgImdlbnRvbyIgICAgICAgIEdlblRvbyBMaW51eAogICAgImlibV9wb3dlcmt2bSIgIElCTSBQb3dlcktWTQogICAgImt2bWlibSIgICAgICAgIEtWTSBmb3IgSUJNIHogU3lzdGVtcwogICAgImxpbnV4bWludCIgICAgIExpbnV4IE1pbnQKICAgICJtYWdlaWEiICAgICAgICBNYWdlaWEKICAgICJtYW5kcml2YSIgICAgICBNYW5kcml2YSBMaW51eAogICAgInBhcmFsbGVscyIgICAgIFBhcmFsbGVscwogICAgInBpZG9yYSIgICAgICAgIFBpZG9yYQogICAgInJhc3BiaWFuIiAgICAgIFJhc3BiaWFuCiAgICAib3JhY2xlIiAgICAgICAgT3JhY2xlIExpbnV4IChhbmQgT3JhY2xlIEVudGVycHJpc2UgTGludXgpCiAgICAic2NpZW50aWZpYyIgICAgU2NpZW50aWZpYyBMaW51eAogICAgInNsYWNrd2FyZSIgICAgIFNsYWNrd2FyZQogICAgInhlbnNlcnZlciIgICAgIFhlblNlcnZlcgogICAgIm9wZW5ic2QiICAgICAgIE9wZW5CU0QKICAgICJuZXRic2QiICAgICAgICBOZXRCU0QKICAgICJmcmVlYnNkIiAgICAgICBGcmVlQlNECiAgICAibWlkbmlnaHRic2QiICAgTWlkbmlnaHRCU0QKICAgID09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIElmIHlvdSBoYXZlIGEgbmVlZCB0byBnZXQgZGlzdHJvcyBmb3IgcmVsaWFibGUgSURzIGFkZGVkIGludG8gdGhpcyBzZXQsCiAgICBvciBpZiB5b3UgZmluZCB0aGF0IHRoZSA6ZnVuYzpgZGlzdHJvLmlkYCBmdW5jdGlvbiByZXR1cm5zIGEgZGlmZmVyZW50CiAgICBkaXN0cm8gSUQgZm9yIG9uZSBvZiB0aGUgbGlzdGVkIGRpc3Ryb3MsIHBsZWFzZSBjcmVhdGUgYW4gaXNzdWUgaW4gdGhlCiAgICBgZGlzdHJvIGlzc3VlIHRyYWNrZXJgXy4KCiAgICAqKkxvb2t1cCBoaWVyYXJjaHkgYW5kIHRyYW5zZm9ybWF0aW9uczoqKgoKICAgIEZpcnN0LCB0aGUgSUQgaXMgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNvdXJjZXMsIGluIHRoZSBzcGVjaWZpZWQKICAgIG9yZGVyLiBUaGUgZmlyc3QgYXZhaWxhYmxlIGFuZCBub24tZW1wdHkgdmFsdWUgaXMgdXNlZDoKCiAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgIklEIiBhdHRyaWJ1dGUgb2YgdGhlIG9zLXJlbGVhc2UgZmlsZSwKCiAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgIkRpc3RyaWJ1dG9yIElEIiBhdHRyaWJ1dGUgcmV0dXJuZWQgYnkgdGhlIGxzYl9yZWxlYXNlCiAgICAgIGNvbW1hbmQsCgogICAgKiB0aGUgZmlyc3QgcGFydCBvZiB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLAoKICAgIFRoZSBzbyBkZXRlcm1pbmVkIElEIHZhbHVlIHRoZW4gcGFzc2VzIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zLAogICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kOgoKICAgICogaXQgaXMgdHJhbnNsYXRlZCB0byBsb3dlciBjYXNlLAoKICAgICogYmxhbmtzICh3aGljaCBzaG91bGQgbm90IGJlIHRoZXJlIGFueXdheSkgYXJlIHRyYW5zbGF0ZWQgdG8gdW5kZXJzY29yZXMsCgogICAgKiBhIG5vcm1hbGl6YXRpb24gb2YgdGhlIElEIGlzIHBlcmZvcm1lZCwgYmFzZWQgdXBvbgogICAgICBgbm9ybWFsaXphdGlvbiB0YWJsZXNgXy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBub3JtYWxpemF0aW9uIGlzIHRvIGVuc3VyZQogICAgICB0aGF0IHRoZSBJRCBpcyBhcyByZWxpYWJsZSBhcyBwb3NzaWJsZSwgZXZlbiBhY3Jvc3MgaW5jb21wYXRpYmxlIGNoYW5nZXMKICAgICAgaW4gdGhlIE9TIGRpc3RyaWJ1dGlvbnMuIEEgY29tbW9uIHJlYXNvbiBmb3IgYW4gaW5jb21wYXRpYmxlIGNoYW5nZSBpcwogICAgICB0aGUgYWRkaXRpb24gb2YgYW4gb3MtcmVsZWFzZSBmaWxlLCBvciB0aGUgYWRkaXRpb24gb2YgdGhlIGxzYl9yZWxlYXNlCiAgICAgIGNvbW1hbmQsIHdpdGggSUQgdmFsdWVzIHRoYXQgZGlmZmVyIGZyb20gd2hhdCB3YXMgcHJldmlvdXNseSBkZXRlcm1pbmVkCiAgICAgIGZyb20gdGhlIGRpc3RybyByZWxlYXNlIGZpbGUgbmFtZS4KICAgICkCciwAAAByFQAAAKkAcjAAAAByLwAAAHIVAAAAchUAAACzAAAAcxMAAACAAPVaAgAME486ijqJPIw80AQXcjAAAABjAQAAAAAAAAAAAAAAAwAAAAMAAADzNgAAAJcAdAAAAAAAAAAAAAAAoAEAAAAAAAAAAAAAAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAABTACkBYWsEAAAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBPUyBkaXN0cmlidXRpb24sIGFzIGEgaHVtYW4tcmVhZGFibGUKICAgIHN0cmluZy4KCiAgICBJZiAqcHJldHR5KiBpcyBmYWxzZSwgdGhlIG5hbWUgaXMgcmV0dXJuZWQgd2l0aG91dCB2ZXJzaW9uIG9yIGNvZGVuYW1lLgogICAgKGUuZy4gIkNlbnRPUyBMaW51eCIpCgogICAgSWYgKnByZXR0eSogaXMgdHJ1ZSwgdGhlIHZlcnNpb24gYW5kIGNvZGVuYW1lIGFyZSBhcHBlbmRlZC4KICAgIChlLmcuICJDZW50T1MgTGludXggNy4xLjE1MDMgKENvcmUpIikKCiAgICAqKkxvb2t1cCBoaWVyYXJjaHk6KioKCiAgICBUaGUgbmFtZSBpcyBvYnRhaW5lZCBmcm9tIHRoZSBmb2xsb3dpbmcgc291cmNlcywgaW4gdGhlIHNwZWNpZmllZCBvcmRlci4KICAgIFRoZSBmaXJzdCBhdmFpbGFibGUgYW5kIG5vbi1lbXB0eSB2YWx1ZSBpcyB1c2VkOgoKICAgICogSWYgKnByZXR0eSogaXMgZmFsc2U6CgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIk5BTUUiIGF0dHJpYnV0ZSBvZiB0aGUgb3MtcmVsZWFzZSBmaWxlLAoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICJEaXN0cmlidXRvciBJRCIgYXR0cmlidXRlIHJldHVybmVkIGJ5IHRoZSBsc2JfcmVsZWFzZQogICAgICAgIGNvbW1hbmQsCgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIjxuYW1lPiIgZmllbGQgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUuCgogICAgKiBJZiAqcHJldHR5KiBpcyB0cnVlOgoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICJQUkVUVFlfTkFNRSIgYXR0cmlidXRlIG9mIHRoZSBvcy1yZWxlYXNlIGZpbGUsCgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIkRlc2NyaXB0aW9uIiBhdHRyaWJ1dGUgcmV0dXJuZWQgYnkgdGhlIGxzYl9yZWxlYXNlCiAgICAgICAgY29tbWFuZCwKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiPG5hbWU+IiBmaWVsZCBvZiB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZSwgYXBwZW5kZWQKICAgICAgICB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgcHJldHR5IHZlcnNpb24gKCI8dmVyc2lvbl9pZD4iIGFuZCAiPGNvZGVuYW1lPiIKICAgICAgICBmaWVsZHMpIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLCBpZiBhdmFpbGFibGUuCiAgICApAnIsAAAA2gRuYW1lqQHaBnByZXR0eXMBAAAAIHIvAAAAcjQAAAByNAAAAAMBAABzFwAAAIAA9UoBAAwTjzyKPJgG0Qsf1Asf0AQfcjAAAABjAgAAAAAAAAAAAAAABAAAAAMAAADzOAAAAJcAdAAAAAAAAAAAAAAAoAEAAAAAAAAAAAAAAAAAAAAAAAAAAHwAfAGmAgAAqwIAAAAAAAAAAFMAKQFhdgYAAAogICAgUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IE9TIGRpc3RyaWJ1dGlvbiwgYXMgYSBodW1hbi1yZWFkYWJsZQogICAgc3RyaW5nLgoKICAgIElmICpwcmV0dHkqIGlzIGZhbHNlLCB0aGUgdmVyc2lvbiBpcyByZXR1cm5lZCB3aXRob3V0IGNvZGVuYW1lIChlLmcuCiAgICAiNy4wIikuCgogICAgSWYgKnByZXR0eSogaXMgdHJ1ZSwgdGhlIGNvZGVuYW1lIGluIHBhcmVudGhlc2lzIGlzIGFwcGVuZGVkLCBpZiB0aGUKICAgIGNvZGVuYW1lIGlzIG5vbi1lbXB0eSAoZS5nLiAiNy4wIChNYWlwbykiKS4KCiAgICBTb21lIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZSB2ZXJzaW9uIG51bWJlcnMgd2l0aCBkaWZmZXJlbnQgcHJlY2lzaW9ucyBpbgogICAgdGhlIGRpZmZlcmVudCBzb3VyY2VzIG9mIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4gRXhhbWluaW5nIHRoZSBkaWZmZXJlbnQKICAgIHNvdXJjZXMgaW4gYSBmaXhlZCBwcmlvcml0eSBvcmRlciBkb2VzIG5vdCBhbHdheXMgeWllbGQgdGhlIG1vc3QgcHJlY2lzZQogICAgdmVyc2lvbiAoZS5nLiBmb3IgRGViaWFuIDguMiwgb3IgQ2VudE9TIDcuMSkuCgogICAgVGhlICpiZXN0KiBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgYXBwcm9hY2ggZm9yIHRoZSByZXR1cm5lZAogICAgdmVyc2lvbjoKCiAgICBJZiAqYmVzdCogaXMgZmFsc2UsIHRoZSBmaXJzdCBub24tZW1wdHkgdmVyc2lvbiBudW1iZXIgaW4gcHJpb3JpdHkgb3JkZXIgb2YKICAgIHRoZSBleGFtaW5lZCBzb3VyY2VzIGlzIHJldHVybmVkLgoKICAgIElmICpiZXN0KiBpcyB0cnVlLCB0aGUgbW9zdCBwcmVjaXNlIHZlcnNpb24gbnVtYmVyIG91dCBvZiBhbGwgZXhhbWluZWQKICAgIHNvdXJjZXMgaXMgcmV0dXJuZWQuCgogICAgKipMb29rdXAgaGllcmFyY2h5OioqCgogICAgSW4gYWxsIGNhc2VzLCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNvdXJjZXMuCiAgICBJZiAqYmVzdCogaXMgZmFsc2UsIHRoaXMgb3JkZXIgcmVwcmVzZW50cyB0aGUgcHJpb3JpdHkgb3JkZXI6CgogICAgKiB0aGUgdmFsdWUgb2YgdGhlICJWRVJTSU9OX0lEIiBhdHRyaWJ1dGUgb2YgdGhlIG9zLXJlbGVhc2UgZmlsZSwKICAgICogdGhlIHZhbHVlIG9mIHRoZSAiUmVsZWFzZSIgYXR0cmlidXRlIHJldHVybmVkIGJ5IHRoZSBsc2JfcmVsZWFzZQogICAgICBjb21tYW5kLAogICAgKiB0aGUgdmVyc2lvbiBudW1iZXIgcGFyc2VkIGZyb20gdGhlICI8dmVyc2lvbl9pZD4iIGZpZWxkIG9mIHRoZSBmaXJzdCBsaW5lCiAgICAgIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLAogICAgKiB0aGUgdmVyc2lvbiBudW1iZXIgcGFyc2VkIGZyb20gdGhlICJQUkVUVFlfTkFNRSIgYXR0cmlidXRlIG9mIHRoZQogICAgICBv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ICBgb3MtcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyB0byBiZSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuCgogICAgICAgICAgQW4gZW1wdHkgc3RyaW5nICh0aGUgZGVmYXVsdCkgd2lsbCBjYXVzZSB0aGUgZGVmYXVsdCBwYXRoIG5hbWUgdG8KICAgICAgICAgIGJlIHVzZWQgKHNlZSBgb3MtcmVsZWFzZSBmaWxlYF8gZm9yIGRldGFpbHMpLgoKICAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgb3IgZGVmYXVsdGVkIG9zLXJlbGVhc2UgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlCiAgICAgICAgICBkYXRhIHNvdXJjZSBmb3IgdGhlIG9zLXJlbGVhc2UgZmlsZSB3aWxsIGJlIGVtcHR5LgoKICAgICAgICAqIGBgZGlzdHJvX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYGRpc3RybyByZWxlYXNlIGZpbGVgXyB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgICBBbiBlbXB0eSBzdHJpbmcgKHRoZSBkZWZhdWx0KSB3aWxsIGNhdXNlIGEgZGVmYXVsdCBzZWFyY2ggYWxnb3JpdGhtCiAgICAgICAgICB0byBiZSB1c2VkIChzZWUgYGRpc3RybyByZWxlYXNlIGZpbGVgXyBmb3IgZGV0YWlscykuCgogICAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBkaXN0cm8gcmVsZWFzZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBubyBkZWZhdWx0CiAgICAgICAgICBkaXN0cm8gcmVsZWFzZSBmaWxlIGNhbiBiZSBmb3VuZCwgdGhlIGRhdGEgc291cmNlIGZvciB0aGUgZGlzdHJvCiAgICAgICAgICByZWxlYXNlIGZpbGUgd2lsbCBiZSBlbXB0eS4KCiAgICAgICAgKiBgYGluY2x1ZGVfdW5hbWVgYCAoYm9vbCk6IENvbnRyb2xzIHdoZXRoZXIgdW5hbWUgY29tbWFuZCBvdXRwdXQgaXMKICAgICAgICAgIGluY2x1ZGVkIGFzIGEgZGF0YSBzb3VyY2UuIElmIHRoZSB1bmFtZSBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUgaW4KICAgICAgICAgIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiBwYXRoIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHVuYW1lIGNvbW1hbmQgd2lsbAogICAgICAgICAgYmUgZW1wdHkuCgogICAgICAgICogYGByb290X2RpcmBgIChzdHJpbmcpOiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gdXNlCiAgICAgICAgICB0byBmaW5kIGRpc3Ryby1yZWxhdGVkIGluZm9ybWF0aW9uIGZpbGVzLgoKICAgICAgICBQdWJsaWMgaW5zdGFuY2UgYXR0cmlidXRlczoKCiAgICAgICAgKiBgYG9zX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYG9zLXJlbGVhc2UgZmlsZWBfIHRoYXQgaXMgYWN0dWFsbHkgdXNlZCBhcyBhIGRhdGEgc291cmNlLiBUaGUKICAgICAgICAgIGVtcHR5IHN0cmluZyBpZiBubyBkaXN0cm8gcmVsZWFzZSBmaWxlIGlzIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgKiBgYGRpc3Ryb19yZWxlYXNlX2ZpbGVgYCAoc3RyaW5nKTogVGhlIHBhdGggbmFtZSBvZiB0aGUKICAgICAgICAgIGBkaXN0cm8gcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyBhY3R1YWxseSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuIFRoZQogICAgICAgICAgZW1wdHkgc3RyaW5nIGlmIG5vIGRpc3RybyByZWxlYXNlIGZpbGUgaXMgdXNlZCBhcyBhIGRhdGEgc291cmNlLgoKICAgICAgICAqIGBgaW5jbHVkZV9sc2JgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV9sc2JgYCBwYXJhbWV0ZXIuCiAgICAgICAgICBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGxzYiBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvYWRlZC4KCiAgICAgICAgKiBgYGluY2x1ZGVfdW5hbWVgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV91bmFtZWBgCiAgICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgY29udHJvbHMgd2hldGhlciB0aGUgdW5hbWUgaW5mb3JtYXRpb24gd2lsbAogICAgICAgICAgYmUgbG9hZGVkLgoKICAgICAgICBSYWlzZXM6CgogICAgICAgICogOnB5OmV4YzpgSU9FcnJvcmA6IFNvbWUgSS9PIGlzc3VlIHdpdGggYW4gb3MtcmVsZWFzZSBmaWxlIG9yIGRpc3RybwogICAgICAgICAgcmVsZWFzZSBmaWxlLgoKICAgICAgICAqIDpweTpleGM6YHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yYDogVGhlIGxzYl9yZWxlYXNlIGNvbW1hbmQgaGFkCiAgICAgICAgICBzb21lIGlzc3VlIChvdGhlciB0aGFuIG5vdCBiZWluZyBhdmFpbGFibGUgaW4gdGhlIHByb2dyYW0gZXhlY3V0aW9uCiAgICAgICAgICBwYXRoKS4KCiAgICAgICAgKiA6cHk6ZXhjOmBVbmljb2RlRXJyb3JgOiBBIGRhdGEgc291cmNlIGhhcyB1bmV4cGVjdGVkIGNoYXJhY3RlcnMgb3IKICAgICAgICAgIHVzZXMgYW4gdW5leHBlY3RlZCBlbmNvZGluZy4KICAgICAgICDaA2V0Y3oHdXNyL2xpYnJtAAAATikO2ghyb290X2RpctoCb3PaBHBhdGjaBGpvaW7aDF9VTklYQ09ORkRJUtoHZXRjX2RpctoOX1VOSVhVU1JMSUJESVLaC3Vzcl9saWJfZGly2g9vc19yZWxlYXNlX2ZpbGXaFF9PU19SRUxFQVNFX0JBU0VOQU1F2gZpc2ZpbGXaE2Rpc3Ryb19yZWxlYXNlX2ZpbGXaC2luY2x1ZGVfbHNi2g1pbmNsdWRlX3VuYW1lKQhyXgAAAHJ8AAAAcngAAAByewAAAHJ9AAAAcnAAAADaF2V0Y19kaXJfb3NfcmVsZWFzZV9maWxl2hd1c3JfbGliX29zX3JlbGVhc2VfZmlsZXMIAAAAICAgICAgICByLwAAAHJgAAAAehpMaW51eERpc3Ry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AAAAAACmAAAAqwAAAAAAAAAAAHYAcgVkAnwBZAM8AAAAfAFjAgEAUwCMq2kAUwApBnqgCiAgICAgICAgR2V0IHRoZSBpbmZvcm1hdGlvbiBpdGVtcyBmcm9tIHRoZSBzcGVjaWZpZWQgZGlzdHJvIHJlbGVhc2UgZmlsZS4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIGluZm9ybWF0aW9uIGl0ZW1zLgogICAgICAgIHI0AAAA2gpjbG91ZGxpbnV4chUAAAByqgAAACkPegxTdVNFLXJlbGVhc2V6DGFyY2gtcmVsZWFzZXoMYmFzZS1yZWxlYXNleg5jZW50b3MtcmVsZWFzZXoOZmVkb3JhLXJlbGVhc2V6DmdlbnRvby1yZWxlYXNleg5tYWdlaWEtcmVsZWFzZXoQbWFuZHJha2UtcmVsZWFzZXoQbWFuZHJpdmEtcmVsZWFzZXoVbWFuZHJpdmFsaW51eC1yZWxlYXNleg9tYW5qYXJvLXJlbGVhc2V6Dm9yYWNsZS1yZWxlYXNleg5yZWRoYXQtcmVsZWFzZXoKc2wtcmVsZWFzZXoRc2xhY2t3YXJlLXZlcnNpb24pD3J7AAAA2hpfcGFyc2VfZGlzdHJvX3JlbGVhc2VfZmlsZXJxAAAAcnIAAADaCGJhc2VuYW1l2iBfRElTVFJPX1JFTEVBU0VfQkFTRU5BTUVfUEFUVEVSTnKgAAAAcogAAABy1AAAANoHbGlzdGRpcnJ1AAAA2gRzb3J0cuQAAADaIF9ESVNUUk9fUkVMRUFTRV9JR05PUkVfQkFTRU5BTUVTcnMAAAApBnJeAAAA2gtkaXN0cm9faW5mb3IEAQAAcqAAAADaCWJhc2VuYW1lc9oIZmlsZXBhdGhzBgAAACAgICAgIHIvAAAAcrcAAAB6JkxpbnV4RGlzdHJpYnV0aW9uLl9kaXN0cm9fcmVsZWFzZV9pbmZvyQQAAHPIAQAAgADwEgAMENQLI/AAOgkW8AYAGx/XGjnSGjm4JNQ6UtEaU9QaU4hL3RcZlHfXFyfSFyeoBNQoQNEXQdQXQYhI9QoAFTXXFDrSFDq4ONEURNQURIhF2A8VmBvQDyTQDySoHLgbwFbUOUzXOVLSOVLROVTUOVTQKVTQKVTYJDCQ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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 4
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
distro.cpython-311.pyc
50.33 KB
lrw-r--r--
2026-01-07 23:10:31
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.cpython-311.pyc
360.91 KB
lrw-r--r--
2026-01-07 23:10:31
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.cpython-311.pyc
45.38 KB
lrw-r--r--
2026-01-07 23:10:31
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
5.07 KB
lrw-r--r--
2026-01-07 23:10:31
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).