REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 56.03 KB
Close
/opt/hc_python/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/__pycache__/engine.cpython-312.pyc
Text
Base64
yw0NCgAAAAD5ke9nRrwAAOMAAAAAAAAAAAAAAAAJAAAAAAAAAfN6BAAAlwBkAGQBbABtAVoBAQBkAGQCbAJaAmQAZAJsA1oDZABkA2wEbQVaBQEAZABkBGwEbQZaBgEAZABkBWwEbQdaBwEAZABkBmwEbQhaCAEAZABkB2wEbQlaCQEAZABkCGwEbQpaCgEAZABkCWwEbQtaCwEAZABkCmwEbQxaDAEAZABkC2wEbQ1aDQEAZABkDGwEbQ5aDgEAZABkDWwEbQ9aDwEAZABkDmwEbRBaEAEAZABkD2wEbRFaEQEAZBBkEWwSbRNaFAEAZBBkEmwVbRZaFgEAZBBkE2wVbRdaFwEAZBBkFGwVbRhaGAEAZBBkFWwVbRlaGQEAZBBkFmwabRtaGwEAZBBkF2wabRxaHAEAZBBkGGwabR1aHQEAZBlkEWwSbRNaEwEAZBlkGmwSbR5aHgEAZBlkG2wSbR9aHwEAZBlkHGwgbSFaIQEAZBlkHWwgbSJaIwEAZBlkHmwgbSRaJQEAZBlkH2wgbSZaJgEAZBlkIGwnbShaKAEAZBlkIWwnbSlaKQEAZBlkImwTbSpaKgEAZBlkI2wrbSxaLAEAZBlkJGwtbS5aLgEAZBlkJWwtbS9aLwEAZQ9yZmQZZCZsMG0xWjEBAGQZZCdsMm0zWjMBAGQZZChsMm00WjQBAGQZZClsMm01WjUBAGQZZCpsMm02WjYBAGQZZCtsMm03WjcBAGQZZCxsMm04WjgBAGQZZC1sMm05WjkBAGQZZC5sMm06WjoBAGQZZC9sMm07WjsBAGQZZDBsPG09Wj0BAGQZZDFsPm0/Wj8BAGQZZDJsQG1BWkEBAGQZZDNsQG1CWkIBAGQZZDRsQ21EWkQBAGQZZDVsRW1GWkYBAGQZZDZsR21IWkgBAAIAZS9kN6sBAAAAAAAAWkkCAGUQZDhlBaw5qwIAAAAAAABaSmRSZDuEBFpLCQBkUwkACQAJAAkACQAJAAkAZFRkPIQFWkxkVWQ9hARaTQIARwBkPoQAZD+rAgAAAAAAAFpOAgBlH2qeAAAAAAAAAAAAAAAAAAAAAAAAZSFkQGRBZwBnAGcAZEKiAaxDqwYAAAAAAAACAEcAZESEAGRFZRhlIRkAAABlGWRFGQAAAGVOqwUAAAAAAACrAAAAAAAAAFpQAgBlH2qeAAAAAAAAAAAAAAAAAAAAAAAAZSZkRmRHZwBnAGRIogFnAGRJogGsQ6sGAAAAAAAAAgBHAGRKhABkOmUYZSYZAAAAZU6rBAAAAAAAAKsAAAAAAAAAWlECAEcAZEuEAGRMZRhlKRkAAABlGWRMGQAAAKsEAAAAAAAAWlJlDGRWZE2EBKsAAAAAAAAAWlNlDAkACQAJAAkAZFdkToQEqwAAAAAAAABaUwkACQAJAAkAZFhkT4QEWlMCAGUeaqgAAAAAAAAAAAAAAAAAAAAAAABlUKsBAAAAAAAACQAJAAkACQBkWWRQhASrAAAAAAAAAFpVAgBlHmqoAAAAAAAAAAAAAAAAAAAAAAAAZVGrAQAAAAAAAAkACQAJAAkAZFpkUYQEqwAAAAAAAABaVnkCKVvpAAAAACkB2gthbm5vdGF0aW9uc04pAdoDQW55KQHaDUFzeW5jSXRlcmF0b3IpAdoIQ2FsbGFibGUpAdoERGljdCkB2glHZW5lcmF0b3IpAdoITm9SZXR1cm4pAdoIT3B0aW9uYWwpAdoIb3ZlcmxvYWQpAdoFVHVwbGUpAdoEVHlwZSkB2g1UWVBFX0NIRUNLSU5HKQHaB1R5cGVWYXIpAdoFVW5pb27pAQAAACkB2gNleGMpAdoVYXN5bmNzdGFydGFibGVjb250ZXh0KQHaGUdlbmVyYXRvclN0YXJ0YWJsZUNvbnRleHQpAdoPUHJveHlDb21wYXJhYmxlKQHaEFN0YXJ0YWJsZUNvbnRleHQpAdoTX2Vuc3VyZV9zeW5jX3Jlc3VsdCkB2gtBc3luY1Jlc3VsdCkB2hFBc3luY1NjYWxhclJlc3VsdOkDAAAAKQHaCmluc3BlY3Rpb24pAdoEdXRpbCkB2gpDb25uZWN0aW9uKQHaDWNyZWF0ZV9lbmdpbmUpAdoUY3JlYXRlX3Bvb2xfZnJvbV91cmwpAdoGRW5naW5lKQHaEU5lc3RlZFRyYW5zYWN0aW9uKQHaC1RyYW5zYWN0aW9uKQHaDUFyZ3VtZW50RXJyb3IpAdoOZ3JlZW5sZXRfc3Bhd24pAdoLQ29uY2F0ZW5hdGUpAdoJUGFyYW1TcGVjKQHaDEN1cnNvclJlc3VsdCkB2hVfQ29yZUFueUV4ZWN1dGVQYXJhbXMpAdoYX0NvcmVTaW5nbGVFeGVjdXRlUGFyYW1zKQHaFl9EQkFQSUFueUV4ZWN1dGVQYXJhbXMpAdoPX0V4ZWN1dGVPcHRpb25zKQHaEUNvbXBpbGVkQ2FjaGVUeXBlKQHaG0NvcmVFeGVjdXRlT3B0aW9uc1BhcmFtZXRlcikB2gdEaWFsZWN0KQHaDklzb2xhdGlvbkxldmVsKQHaFlNjaGVtYVRyYW5zbGF0ZU1hcFR5cGUpAdoMU2NhbGFyUmVzdWx0KQHaA1VSTCkB2gRQb29sKQHaFVBvb2xQcm94aWVkQ29ubmVjdGlvbikB2glfSW5mb1R5cGUpAdoKRXhlY3V0YWJsZSkB2hBUeXBlZFJldHVybnNSb3dz2gJfUNoCX1QpAdoFYm91bmTaC0FzeW5jRW5naW5lYwEAAAAAAAAAAAAAAAUAAAALAAAB8wYBAACHA4cElwB8AWoBAAAAAAAAAAAAAAAAAAAAAAAAZAFkAqsCAAAAAAAAchV0AwAAAAAAAAAAagQAAAAAAAAAAAAAAAAAAAAAAABkA6sBAAAAAAAAggFkBHwBZAU8AAAAfAFqBwAAAAAAAAAAAAAAAAAAAAAAAGQGZAerAgAAAAAAAIoDiQNyKXwBagEAAAAAAAAAAAAAAAAAAAAAAABkCGQHqwIAAAAAAAByC3QJAAAAAAAAAABkCasBAAAAAAAAggFkC4gDiARmAmQKhAx9AnwCfAFkCDwAAAB0CwAAAAAAAAAAfABmAWkAfAGkAY4BigR0DQAAAAAAAAAAiQSrAQAAAAAAAFMAKQxhDAQAAENyZWF0ZSBhIG5ldyBhc3luYyBlbmdpbmUgaW5zdGFuY2UuCgogICAgQXJndW1lbnRzIHBhc3NlZCB0byA6ZnVuYzpgX2FzeW5jaW8uY3JlYXRlX2FzeW5jX2VuZ2luZWAgYXJlIG1vc3RseQogICAgaWRlbnRpY2FsIHRvIHRob3NlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lYCBmdW5jdGlvbi4KICAgIFRoZSBzcGVjaWZpZWQgZGlhbGVjdCBtdXN0IGJlIGFuIGFzeW5jaW8tY29tcGF0aWJsZSBkaWFsZWN0CiAgICBzdWNoIGFzIDpyZWY6YGRpYWxlY3QtcG9zdGdyZXNxbC1hc3luY3BnYC4KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjQKCiAgICA6cGFyYW0gYXN5bmNfY3JlYXRvcjogYW4gYXN5bmMgY2FsbGFibGUgd2hpY2ggcmV0dXJucyBhIGRyaXZlci1sZXZlbAogICAgICAgIGFzeW5jaW8gY29ubmVjdGlvbi4gSWYgZ2l2ZW4sIHRoZSBmdW5jdGlvbiBzaG91bGQgdGFrZSBubyBhcmd1bWVudHMsCiAgICAgICAgYW5kIHJldHVybiBhIG5ldyBhc3luY2lvIGNvbm5lY3Rpb24gZnJvbSB0aGUgdW5kZXJseWluZyBhc3luY2lvCiAgICAgICAgZGF0YWJhc2UgZHJpdmVyOyB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIHdyYXBwZWQgaW4gdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgc3RydWN0dXJlcyB0byBiZSB1c2VkIHdpdGggdGhlIDpjbGFzczpgLkFzeW5jRW5naW5lYC4gICBOb3RlIHRoYXQgdGhlCiAgICAgICAgcGFyYW1ldGVycyBzcGVjaWZpZWQgaW4gdGhlIFVSTCBhcmUgbm90IGFwcGxpZWQgaGVyZSwgYW5kIHRoZSBjcmVhdG9yCiAgICAgICAgZnVuY3Rpb24gc2hvdWxkIHVzZSBpdHMgb3duIGNvbm5lY3Rpb24gcGFyYW1ldGVycy4KCiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgdGhlIGFzeW5jaW8gZXF1aXZhbGVudCBvZiB0aGUKICAgICAgICA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmNyZWF0b3JgIHBhcmFtZXRlciBvZiB0aGUKICAgICAgICA6ZnVuYzpgX3NhLmNyZWF0ZV9lbmdpbmVgIGZ1bmN0aW9uLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjAuMTYKCiAgICDaE3NlcnZlcl9zaWRlX2N1cnNvcnNGen1DYW4ndCBzZXQgc2VydmVyX3NpZGVfY3Vyc29ycyBmb3IgYXN5bmMgZW5naW5lIGdsb2JhbGx5OyB1c2UgdGhlIGNvbm5lY3Rpb24uc3RyZWFtKCkgbWV0aG9kIGZvciBhbiBhc3luYyBzdHJlYW1pbmcgcmVzdWx0IHNldFTaCV9pc19hc3luY9oNYXN5bmNfY3JlYXRvck7aB2NyZWF0b3J6P0NhbiBvbmx5IHNwZWNp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dAEAAAAAAAAAAHwAZgFpAHwBpAGOAVMAKQNhVgEAAENyZWF0ZSBhIG5ldyBhc3luYyBlbmdpbmUgaW5zdGFuY2UuCgogICAgQXJndW1lbnRzIHBhc3NlZCB0byA6ZnVuYzpgX2FzeW5jaW8uY3JlYXRlX2FzeW5jX3Bvb2xfZnJvbV91cmxgIGFyZSBtb3N0bHkKICAgIGlkZW50aWNhbCB0byB0aG9zZSBwYXNzZWQgdG8gdGhlIDpmdW5jOmBfc2EuY3JlYXRlX3Bvb2xfZnJvbV91cmxgIGZ1bmN0aW9uLgogICAgVGhlIHNwZWNpZmllZCBkaWFsZWN0IG11c3QgYmUgYW4gYXN5bmNpby1jb21wYXRpYmxlIGRpYWxlY3QKICAgIHN1Y2ggYXMgOnJlZjpgZGlhbGVjdC1wb3N0Z3Jlc3FsLWFzeW5jcGdgLgoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuMC4xMAoKICAgIFRyPgAAACkB2hVfY3JlYXRlX3Bvb2xfZnJvbV91cmwpAnJQAAAAclsAAABzAgAAACAgckcAAADaGmNyZWF0ZV9hc3luY19wb29sX2Zyb21fdXJscmIAAACVAAAAcx4AAACAAPAWABsfgEaIO9EEF9wLIKAT0QsvqAbRCy/QBC9ySAAAAGMAAAAAAAAAAAAAAAADAAAAAAAAAfMiAAAAlwBlAFoBZABaAmQBWgNlBGQEZAKEBKsAAAAAAAAAWgV5AykF2hBBc3luY0Nvbm5lY3RhYmxlKQLaD19zbG90c19kaXNwYXRjaNoLX193ZWFrcmVmX19jAQAAAAAAAAAAAAAAAwAAAAMAAAHzGAAAAJcAdAEAAAAAAAAAAGQBqwEAAAAAAACCASkCTnqgYXN5bmNocm9ub3VzIGV2ZW50cyBhcmUgbm90IGltcGxlbWVudGVkIGF0IHRoaXMgdGltZS4gIEFwcGx5IHN5bmNocm9ub3VzIGxpc3RlbmVycyB0byB0aGUgQXN5bmNFbmdpbmUuc3luY19lbmdpbmUgb3IgQXN5bmNDb25uZWN0aW9uLnN5bmNfY29ubmVjdGlvbiBhdHRyaWJ1dGVzLikB2hNOb3RJbXBsZW1lbnRlZEVycm9yKQHaA2Nsc3MBAAAAIHJHAAAA2hdfbm9fYXN5bmNfZW5naW5lX2V2ZW50c3oo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bmVjdGlvbi5jb25uZWN0aW9uIGFjY2Vzc29yIGlzIG5vdCBpbXBsZW1lbnRlZCBhcyB0aGUgYXR0cmlidXRlIG1heSBuZWVkIHRvIHJlY29ubmVjdCBvbiBhbiBpbnZhbGlkYXRlZCBjb25uZWN0aW9uLiAgVXNlIHRoZSBnZXRfcmF3X2Nvbm5lY3Rpb24oKSBtZXRob2QuKQJyEgAAAHKJAAAAqQFygAAAAHMBAAAAIHJHAAAA2gpjb25uZWN0aW9uehpBc3luY0Nvbm5lY3Rpb24uY29ubmVjdGlvbhYBAABzHAAAAIAA9AoADxLXDiXRDiXwAgINM/MDBA8K8AAECQpySAAAAGMBAAAAAAAAAAAAAAAFAAAAgwAAAfNUAAAASwABAJcAdAEAAAAAAAAAAHQCAAAAAAAAAAB8AGoEAAAAAAAAAAAAAAAAAAAAAAAAZAGrAwAAAAAAAIMAZAJ7AwAAlgKXA4YFBQBTADcAjAStA3cBKQNhBgIAAFJldHVybiB0aGUgcG9vbGVkIERCQVBJLWxldmVsIGNvbm5lY3Rpb24gaW4gdXNlIGJ5IHRoaXMKICAgICAgICA6Y2xhc3M6YF9hc3luY2lvLkFzeW5jQ29ubmVjdGlvbmAuCgogICAgICAgIFRoaXMgaXMgYSBTUUxBbGNoZW15IGNvbm5lY3Rpb24tcG9vbCBwcm94aWVkIGNvbm5lY3Rpb24KICAgICAgICB3aGljaCB0aGVuIGhhcyB0aGUgYXR0cmlidXRlCiAgICAgICAgOmF0dHI6YF9wb29sLl9Db25uZWN0aW9uRmFpcnkuZHJpdmVyX2Nvbm5lY3Rpb25gIHRoYXQgcmVmZXJzIHRvIHRoZQogICAgICAgIGFjdHVhbCBkcml2ZXIgY29ubmVjdGlvbi4gSXRzCiAgICAgICAgOmF0dHI6YF9wb29sLl9Db25uZWN0aW9uRmFpcnkuZGJhcGlfY29ubmVjdGlvbmAgcmVmZXJzIGluc3RlYWQKICAgICAgICB0byBhbiA6Y2xhc3M6YF9lbmdpbmUuQWRhcHRlZENvbm5lY3Rpb25gIGluc3RhbmNlIHRoYXQKICAgICAgICBhZGFwdHMgdGhlIGRyaXZlciBjb25uZWN0aW9uIHRvIHRoZSBEQkFQSSBwcm90b2NvbC4KCiAgICAgICAg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ddMTRdAMReATF3JIAAAAYwEAAAAAAAAAAAAAAAMAAAADAAAB82YAAACXAHwAagAAAAAAAAAAAAAAAAAAAAAAAABqAwAAAAAAAAAAAAAAAAAAAAAAAKsAAAAAAAAAfQF8AYEVdAQAAAAAAAAAAGoHAAAAAAAAAAAAAAAAAAAAAAAAfAGrAQAAAAAAAFMAeQEpAmGhAQAAUmV0dXJuIGFuIDpjbGFzczpgLkFzeW5jVHJhbnNhY3Rpb25gIHJlcHJlc2VudGluZyB0aGUgY3VycmVudAogICAgICAgIG5lc3RlZCAoc2F2ZXBvaW50KSB0cmFuc2FjdGlvbiwgaWYgYW55LgoKICAgICAgICBUaGlzIG1ha2VzIHVzZSBvZiB0aGUgdW5kZXJseWluZyBzeW5jaHJvbm91cyBjb25uZWN0aW9uJ3MKICAgICAgICA6bWV0aDpgX2VuZ2luZS5Db25uZWN0aW9uLmdldF9uZXN0ZWRfdHJhbnNhY3Rpb25gIG1ldGhvZCB0byBnZXQgdGhlCiAgICAgICAgY3VycmVudCA6Y2xhc3M6YF9lbmdpbmUuVHJhbnNhY3Rpb25gLCB3aGljaCBpcyB0aGVuIHByb3hpZWQgaW4gYSBuZXcKICAgICAgICA6Y2xhc3M6YC5Bc3luY1RyYW5zYWN0aW9uYCBvYmplY3QuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNC4wYjIKCiAgICAgICAgTikEcpIAAADaFmdldF9uZXN0ZWRfdHJhbnNhY3Rpb25ymgAAAHKEAAAAcqsAAABzAgAAACAgckcAAAByrgAAAHomQXN5bmNDb25uZWN0aW9uLmdldF9uZXN0ZWRfdHJhbnNhY3Rpb26FAQAAczAAAACAAPAaABEVlw2RDdcQNNEQNNMQNogF2AsQ0Asc3BMj1xM+0RM+uHXTE0XQDEXgExdySAAAAC4pCtoOY29tcGlsZWRfY2FjaGXaDWxvZ2dpbmdfdG9rZW7aD2lzb2xhdGlvbl9sZXZlbNoNbm9fcGFyYW1ldGVyc9oOc3RyZWFtX3Jlc3VsdHPaDm1heF9yb3dfYnVmZmVy2gl5aWVsZF9wZXLaGmluc2VydG1hbnl2YWx1ZXNfcGFnZV9zaXpl2hRzY2hlbWFfdHJhbnNsYXRlX21hcNoRcHJlc2Vy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ICAgIDpjbGFzczpgX2V4cHJlc3Npb24uRXhlY3V0YWJsZWAgaGllcmFyY2hpZXMsIGluY2x1ZGluZzoKCiAgICAgICAgICogOmNsYXNzOmBfZXhwcmVzc2lvbi5TZWxlY3RgCiAgICAgICAgICogOmNsYXNzOmBfZXhwcmVzc2lvbi5JbnNlcnRgLCA6Y2xhc3M6YF9leHByZXNzaW9uLlVwZGF0ZWAsCiAgICAgICAgICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5EZWxldGVgCiAgICAgICAgICogOmNsYXNzOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlYCBhbmQKICAgICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLlRleHR1YWxTZWxlY3RgCiAgICAgICAgICogOmNsYXNzOmBfc2NoZW1hLkRETGAgYW5kIG9iamVjdHMgd2hpY2ggaW5oZXJpdCBmcm9tCiAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkV4ZWN1dGFibGVERExFbGVtZW50YAoKICAgICAgICA6cGFyYW0gcGFyYW1ldGVyczogcGFyYW1ldGVycyB3aGljaCB3aWxsIGJlIGJvdW5kIGludG8gdGhlIHN0YXRlbWVudC4KICAgICAgICAgVGhpcyBtYXkgYmUgZWl0aGVyIGEgZGljdGlvbmFyeSBvZiBwYXJhbWV0ZXIgbmFtZXMgdG8gdmFsdWVzLAogICAgICAgICBvciBhIG11dGFibGUgc2VxdWVuY2UgKGUuZy4gYSBsaXN0KSBvZiBkaWN0aW9uYXJpZXMuICBXaGVuIGEKICAgICAgICAgbGlzdCBvZiBkaWN0aW9uYXJpZXMgaXMgcGFzc2VkLCB0aGUgdW5kZXJseWluZyBzdGF0ZW1lbnQgZXhlY3V0aW9uCiAgICAgICAgIHdpbGwgbWFrZSB1c2Ugb2YgdGhlIERCQVBJIGBgY3Vyc29yLmV4ZWN1dGVtYW55KClgYCBtZXRob2QuCiAgICAgICAgIFdoZW4gYSBzaW5nbGUgZGljdGlvbmFyeSBpcyBwYXNzZWQsIHRoZSBEQkFQSSBgYGN1cnNvci5leGVjdXRlKClgYAogICAgICAgICBtZXRob2Qgd2lsbCBiZSB1c2VkLgoKICAgICAgICA6cGFyYW0gZXhlY3V0aW9uX29wdGlvbnM6IG9wdGlvbmFsIGRpY3Rpb25hcnkgb2YgZXhlY3V0aW9uIG9wdGlvbnMsCiAgICAgICAgIHdoaWNoIHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGF0ZW1lbnQgZXhlY3V0aW9uLiAgVGhpcwogICAgICAgICBkaWN0aW9uYXJ5IGNhbiBwcm92aWRlIGEgc3Vic2V0IG9mIHRoZSBvcHRpb25zIHRoYXQgYXJlIGFjY2VwdGVkCiAgICAgICAgIGJ5IDptZXRoOmBfZW5naW5lLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnNgLgoKICAgICAgICA6cmV0dXJuOiBhIDpjbGFzczpgX2VuZ2luZS5SZXN1bHRgIG9iamVjdC4KCiAgICAgICAgVHLdAAAATikEciQAAABykgAAAHLfAAAAchcAAABy0gAAAHMFAAAAICAgICByRwAAAHLfAAAAehdBc3luY0Nvbm5lY3Rpb24uZXhlY3V0ZWwCAABzUgAAAOgA+IAA9EwBABgm2AwQj02JTdcMIdEMIdgMFdgMFtgeL9gbH/QLBhgK9wAGEgqIBvQOABYpqBawFLccsRzTFT7XDz7QCD7wDwYSCvjwDgAQP/py1gAAAGMDAAAAAAAAAAEAAAACAAAAgwAAAfMMAAAASwABAJcAeQCtA3cBcn4AAABycQAAAHLZAAAAcwQAAAAgICAgckcAAADaBnNjYWxhcnoWQXN5bmNDb25uZWN0aW9uLnNjYWxhcpsCAABzCwAAAOgA+IAA8A4AGBv5crwAAABjAwAAAAAAAAABAAAAAgAAAIMAAAHzDAAAAEsAAQCXAHkArQN3AXJ+AAAAcnEAAABy2QAAAHMEAAAAICAgIHJHAAAAcvAAAAB6FkFzeW5jQ29ubmVjdGlvbi5zY2FsYXKkAgAAcwsAAADoAPiAAPAOAA8S+XK8AAAAYwMAAAAAAAAAAQAAAAUAAACDAAAB82YAAABLAAEAlwB8AGoBAAAAAAAAAAAAAAAAAAAAAAAAfAF8AnwDrAGrAwAAAAAAAIMAZAJ7AwAAlgKXA4YFBQB9BHwEagMAAAAAAAAAAAAAAAAAAAAAAACrAAAAAAAAAFMANwCMFK0DdwEpA2F1AQAARXhlY3V0ZXMgYSBTUUwgc3RhdGVtZW50IGNvbnN0cnVjdCBhbmQgcmV0dXJucyBhIHNjYWxhciBvYmplY3QuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIHNob3J0aGFuZCBmb3IgaW52b2tpbmcgdGhlCiAgICAgICAgOm1ldGg6YF9lbmdpbmUuUmVzdWx0LnNjYWxhcmAgbWV0aG9kIGFmdGVyIGludm9raW5nIHRoZQogICAgICAgIDptZXRoOmBfZW5naW5lLkNvbm5lY3Rpb24uZXhlY3V0ZWAgbWV0aG9kLiAgUGFyYW1ldGVycyBhcmUgZXF1aXZhbGVudC4KCiAgICAgICAgOnJldHVybjogYSBzY2FsYXIgUHl0aG9uIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZQogICAgICAgICBmaXJzdCByb3cgcmV0dXJuZWQuCgogICAgICAgIHLXAAAATikCct8AAABy8AAAAHLSAAAAcwUAAAAgICAgIHJHAAAAcvAAAAB6FkFzeW5jQ29ubmVjdGlvbi5zY2FsYXKtAgAAczsAAADoAPiAAPAiABgcl3yRfNgMFZB60DVG8AMAGCTzAAIYCvcAAhIKiAbwBgAQFo99iX2Lf9AIHvAHAhIK+vMMAAAAghgxAZoBLwSbFTEBYwMAAAAAAAAAAQAAAAIAAACDAAAB8wwAAABLAAEAlwB5AK0DdwFyfgAAAHJxAAAActkAAABzBAAAACAgICByRwAAANoHc2NhbGFyc3oXQXN5bmNDb25uZWN0aW9uLnNjYWxhcnPDAgAAcusAAAByvAAAAGMDAAAAAAAAAAEAAAACAAAAgwAAAfMMAAAASwABAJcAeQCtA3cBcn4AAABycQAAAHLZAAAAcwQAAAAgICAgckcAAABy9QAAAHoXQXN5bmNDb25uZWN0aW9uLnNjYWxhcnPMAgAAcu0AAAByvAAAAGMDAAAAAAAAAAEAAAAFAAAAgwAAAfNmAAAASwABAJcAfABqAQAAAAAAAAAAAAAAAAAAAAAAAHwBfAJ8A6wBqwMAAAAAAACDAGQCewMAAJYClwOGBQUAfQR8BGoDAAAAAAAAAAAAAAAAAAAAAAAAqwAAAAAAAABTADcAjBStA3cBKQNhaQEAAEV4ZWN1dGVzIGEgU1FMIHN0YXRlbWVudCBjb25zdHJ1Y3QgYW5kIHJldHVybnMgYSBzY2FsYXIgb2JqZWN0cy4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgc2hvcnRoYW5kIGZvciBpbnZva2luZyB0aGUKICAgICAgICA6bWV0aDpgX2VuZ2luZS5SZXN1bHQuc2NhbGFyc2AgbWV0aG9kIGFmdGVyIGludm9raW5nIHRoZQogICAgICAgIDptZXRoOmBfZW5naW5lLkNvbm5lY3Rpb24uZXhlY3V0ZWAgbWV0aG9kLiAgUGFyYW1ldGVycyBhcmUgZXF1aXZhbGVudC4KCiAgICAgICAgOnJldHVybjogYSA6Y2xhc3M6YF9lbmdpbmUuU2NhbGFyUmVzdWx0YCBvYmplY3QuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNC4yNAoKICAgICAgICBy1wAAAE4pAnLfAAAAcvUAAABy0gAAAHMFAAAAICAgICByRwAAAHL1AAAAehdBc3luY0Nvbm5lY3Rpb24uc2NhbGFyc9UCAABzPAAAAOgA+IAA8CQAGByXfJF82AwVkHrQNUbwAwAYJPMAAhgK9wACEgqIBvAGABAWj36JftMPH9AIH/AHAhIK+nLzAAAAYwMAAAAAAAAAAQAAAAAAAAADAAAB8wQAAACXAHkAcn4AAABycQAAAHLZAAAAcwQAAAAgICAgckcAAADaDnN0cmVhbV9zY2FsYXJzeh5Bc3luY0Nvbm5lY3Rpb24uc3RyZWFtX3NjYWxhcnPsAgAAcwcAAACAAPAOADw/ckgAAABjAwAAAAAAAAABAAAAAAAAAAMAAAHzBAAAAJcAeQByfgAAAHJxAAAActkAAABzBAAAACAgICByRwAAAHL5AAAAeh5Bc3luY0Nvbm5lY3Rpb24uc3RyZWFtX3NjYWxhcnP1AgAAcwgAAACAAPAOAD1AAXJIAAAAYwMAAAAAAAAAAQAAAAcAAAADAgAB874AAABLAAEAlwB8AGoBAAAAAAAAAAAAAAAAAAAAAAAAfAF8AnwDrAGrAwAAAAAAADQAgwFkAnsDAACWApcDhgUFAH0EfARqAwAAAAAAAAAAAAAAAAAAAAAAAKsAAAAAAAAArQSWApcBAQBkAmQCZAKrAgAAAAAAAIMCZAJ7AwAAlgKXA4YFBQABAHkCNwCMKDcAjAcjADEAgwJkAnsEAACWA5cDhgU3AAUAcwF3AgEAWQABAAEAeQJ4A1kAdwGtA3cBKQNhZgUAAEV4ZWN1dGUgYSBzdGF0ZW1lbnQgYW5kIHJldHVybiBhbiBhd2FpdGFibGUgeWllbGRpbmcgYQogICAgICAgIDpjbGFzczpgX2FzeW5jaW8uQXN5bmNTY2FsYXJSZXN1bHRgIG9iamVjdC4KCiAgICAgICAgRS5nLjo6CgogICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBjb25uLnN0cmVhbV9zY2FsYXJzKHN0bXQpCiAgICAgICAgICAgIGFzeW5jIGZvciBzY2FsYXIgaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgcHJpbnQoZiJ7c2NhbGFyfSIpCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIHNob3J0aGFuZCBmb3IgaW52b2tpbmcgdGhlCiAgICAgICAgOm1ldGg6YF9lbmdpbmUuQXN5bmNSZXN1bHQuc2NhbGFyc2AgbWV0aG9kIGFmdGVyIGludm9raW5nIHRoZQogICAgICAgIDptZXRoOmBfZW5naW5lLkNvbm5lY3Rpb24uc3RyZWFtYCBtZXRob2QuICBQYXJhbWV0ZXJzIGFyZSBlcXVpdmFsZW50LgoKICAgICAgICBUaGUgOm1ldGg6YC5Bc3luY0Nvbm5lY3Rpb24uc3RyZWFtX3NjYWxhcnNgCiAgICAgICAgbWV0aG9kIHN1cHBvcnRzIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlciB1c2UgYWdhaW5zdCB0aGUKICAgICAgICA6Y2xhc3M6YC5Bc3luY1NjYWxhclJlc3VsdGAgb2JqZWN0LCBhcyBpbjo6CgogICAgICAgICAgICBhc3luYyB3aXRoIGNvbm4uc3RyZWFtX3NjYWxhcnMoc3RtdCkgYXMgcmVzdWx0OgogICAgICAgICAgICAgICAgYXN5bmMgZm9yIHNjYWxhciBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoZiJ7c2NhbGFyfSIpCgogICAgICAgIEluIHRoZSBhYm92ZSBwYXR0ZXJuLCB0aGUgOm1ldGg6YC5Bc3luY1NjYWxhclJlc3VsdC5jbG9zZWAgbWV0aG9kIGlzCiAgICAgICAgaW52b2tlZCB1bmNvbmRpdGlvbmFsbHksIGV2ZW4gaWYgdGhlIGl0ZXJhdG9yIGlzIGludGVycnVwdGVkIGJ5IGFuCiAgICAgICAgZXhjZXB0aW9uIHRocm93LiAgQ29udGV4dCBtYW5hZ2VyIHVzZSByZW1haW5zIG9wdGlvbmFsLCBob3dldmVyLAogICAgICAgIGFuZCB0aGUgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBpbiBlaXRoZXIgYW4gYGBhc3luYyB3aXRoIGZuKCk6YGAgb3IKICAgICAgICBgYGF3YWl0IGZuKClgYCBzdHlsZS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMi4wLjBiMyBhZGRlZCBjb250ZXh0IG1hbmFnZXIgc3VwcG9ydAoKICAgICAgICA6cmV0dXJuOiBhbiBhd2FpdGFibGUgb2JqZWN0IHRoYXQgd2lsbCB5aWVsZCBhbgogICAgICAgICA6Y2xhc3M6YF9hc3luY2lvLkFzeW5jU2NhbGFyUmVzdWx0YCBvYmplY3QuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNC4yNAoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDptZXRoOmAuQXN5bmNDb25uZWN0aW9uLnN0cmVhbWAKCiAgICAgICAgctcAAABOKQJy2gAAAHL1AAAActIAAABzBQAAACAgICAgckcAAABy+QAAAHoeQXN5bmNDb25uZWN0aW9uLnN0cmVhbV9zY2FsYXJz/gIAAHNcAAAA6AD4gADwYAEAFBiXO5E72AwVkHrQNUbwAwAUH/cAAhQK9AACFArgDRPYEhiXLpEu0xIi0wwi9wcCFAr3AAIUCvEAAhQK+PAAAhQK+PcAAhQK9wACFArxAAIUCvxzQQAAAIIZQR0BmwFBBAacA0EdAZ8UQQgDswtBHQG+AUEGBL8GQR0BwQYBQR0BwQgGQRoHwQ4BQREMwQ8HQRoHwRYHQR0BYwIAAAAAAAAAAAAAAAUAAACPAAAB81YAAABLAAEAlwB0AQAAAAAAAAAAfAF8AGoCAAAAAAAAAAAAAAAAAAAAAAAAZwJ8AqIBrQZkAWQCaQF8A6QBjgGDAGQDewMAAJYClwOGBQUAUwA3AIwErQN3ASkEYWEJAABJbnZva2UgdGhlIGdpdmVuIHN5bmNocm9ub3VzIChpLmUuIG5vdCBhc3luYykgY2FsbGFibGUsCiAgICAgICAgcGFzc2luZyBhIHN5bmNocm9ub3VzLXN0eWxlIDpjbGFzczpgX2VuZ2luZS5Db25uZWN0aW9uYCBhcyB0aGUgZmlyc3QKICAgICAgICBhcmd1bWVudC4KCiAgICAgICAgVGhpcyBtZXRob2QgYWxsb3dzIHRyYWRpdGlvbmFsIHN5bmNocm9ub3VzIFNRTEFsY2hlbXkgZnVuY3Rpb25zIHRvCiAgICAgICAgcnVuIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhbiBhc3luY2lvIGFwcGxpY2F0aW9uLgoKICAgICAgICBFLmcuOjoKCiAgICAgICAgICAgIGRlZiBkb19zb21ldGhpbmdfd2l0aF9jb3JlKGNvbm46IENvbm5lY3Rpb24sIGFyZzE6IGludCwgYXJnMjogc3RyKSAtPiBzdHI6CiAgICAgICAgICAgICAgICAiIiJBIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhd2FpdGluZwoKICAgICAgICAgICAgICAgIDpwYXJhbSBjb25uOiBhIENvcmUgU1FMQWxjaGVteSBDb25uZWN0aW9uLCB1c2VkIHN5bmNocm9ub3VzbHkKCiAgICAgICAgICAgICAgICA6cmV0dXJuOiBhbiBvcHRpb25hbCByZXR1cm4gdmFsdWUgaXMgc3VwcG9ydGVkCgogICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGUoc29tZV90YWJsZS5pbnNlcnQoKS52YWx1ZXMoaW50X2NvbD1hcmcxLCBzdHJfY29sPWFyZzIpKQogICAgICAgICAgICAgICAgcmV0dXJuICJzdWNjZXNzIgoKCiAgICAgICAgICAgIGFzeW5jIGRlZiBkb19zb21ldGhpbmdfYXN5bmMoYXN5bmNfZW5naW5lOiBBc3luY0VuZ2luZSkgLT4gTm9uZToKICAgICAgICAgICAgICAgICIiImFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgdXNlcyBhd2FpdGluZyIiIgoKICAgICAgICAgICAgICAgIGFzeW5jIHdpdGggYXN5bmNfZW5naW5lLmJlZ2luKCkgYXMgYXN5bmNfY29ubjoKICAgICAgICAgICAgICAgICAgICAjIHJ1biBkb19zb21ldGhpbmdfd2l0aF9jb3JlKCkgd2l0aCBhIHN5bmMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAjIENvbm5lY3Rpb24sIHByb3hpZWQgaW50byBhbiBhd2FpdGFibGUKICAgICAgICAgICAgICAgICAgICByZXR1cm5fY29kZSA9IGF3YWl0IGFzeW5jX2Nvbm4ucnVuX3N5bmMoCiAgICAgICAgICAgICAgICAgICAgICAgIGRvX3NvbWV0aGluZ193aXRoX2NvcmUsIDUsICJzdHJ2YWwiCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHByaW50KHJldHVybl9jb2RlKQoKICAgICAgICBUaGlzIG1ldGhvZCBtYWludGFpbnMgdGhlIGFzeW5jaW8gZXZlbnQgbG9vcCBhbGwgdGhlIHdheSB0aHJvdWdoCiAgICAgICAgdG8gdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gYnkgcnVubmluZyB0aGUgZ2l2ZW4gY2FsbGFibGUgaW4gYQogICAgICAgIHNwZWNpYWxseSBpbnN0cnVtZW50ZWQgZ3JlZW5sZXQuCgogICAgICAgIFRoZSBtb3N0IHJ1ZGltZW50YXJ5IHVzZSBvZiA6bWV0aDpgLkFzeW5jQ29ubmVjdGlvbi5ydW5fc3luY2AgaXMgdG8KICAgICAgICBpbnZva2UgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfc2NoZW1hLk1ldGFEYXRhLmNyZWF0ZV9hbGxgLCBnaXZlbgogICAgICAgIGFuIDpjbGFzczpgLkFzeW5jQ29ubmVjdGlvbmAgdGhhdCBuZWVkcyB0byBiZSBwcm92aWRlZCB0bwogICAgICAgIDptZXRoOmBfc2NoZW1hLk1ldGFEYXRhLmNyZWF0ZV9hbGxgIGFzIGEgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gCiAgICAgICAgb2JqZWN0OjoKCiAgICAgICAgICAgICMgcnVuIG1ldGFkYXRhLmNyZWF0ZV9hbGwoY29ubikgd2l0aCBhIHN5bmMtc3R5bGUg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AwAAAfMuAAAAlwB8AGoAAAAAAAAAAAAAAAAAAAAAAAAAagIAAAAAAAAAAAAAAAAAAAAAAABTACkBYaAEAABUaGUgaW5pdGlhbC1jb25uZWN0aW9uIHRpbWUgaXNvbGF0aW9uIGxldmVsIGFzc29jaWF0ZWQgd2l0aCB0aGUKICAgICAgICA6Y2xhc3M6YF9lbmdpbmUuRGlhbGVjdGAgaW4gdXNlLgoKICAgICAgICAuLiBjb250YWluZXI6OiBjbGFzc19iYXNlcwoKICAgICAgICAgICAgUHJveGllZCBmb3IgdGhlIDpjbGFzczpgX2VuZ2luZS5Db25uZWN0aW9uYCBjbGFzcwogICAgICAgICAgICBvbiBiZWhhbGYgb2YgdGhlIDpjbGFzczpgX2FzeW5jaW8uQXN5bmNDb25uZWN0aW9uYCBjbGFzcy4KCiAgICAgICAgVGhpcyB2YWx1ZSBpcyBpbmRlcGVuZGVudCBvZiB0aGUKICAgICAgICA6cGFyYW1yZWY6YC5Db25uZWN0aW9uLmV4ZWN1dGlvbl9vcHRpb25zLmlzb2xhdGlvbl9sZXZlbGAgYW5kCiAgICAgICAgOnBhcmFtcmVmOmAuRW5naW5lLmV4ZWN1dGlvbl9vcHRpb25zLmlzb2xhdGlvbl9sZXZlbGAgZXhlY3V0aW9uCiAgICAgICAgb3B0aW9ucywgYW5kIGlzIGRldGVybWluZWQgYnkgdGhlIDpjbGFzczpgX2VuZ2luZS5EaWFsZWN0YCB3aGVuIHRoZQogICAgICAgIGZpcnN0IGNvbm5lY3Rpb24gaXMgY3JlYXRlZCwgYnkgcGVyZm9ybWluZyBhIFNRTCBxdWVyeSBhZ2FpbnN0IHRoZQogICAgICAgIGRhdGFiYXNlIGZvciB0aGUgY3VycmVudCBpc29sYXRpb24gbGV2ZWwgYmVmb3JlIGFueSBhZGRpdGlvbmFsIGNvbW1hbmRzCiAgICAgICAgaGF2ZSBiZWVuIGVtaXR0ZWQuCgogICAgICAgIENhbGxpbmcgdGhpcyBhY2Nlc3NvciBkb2VzIG5vdCBpbnZva2UgYW55IG5ldyBTUUwgcXVlcmllcy4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6bWV0aDpgX2VuZ2luZS5Db25u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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 7
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
base.cpython-312.pyc
10.92 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
engine.cpython-312.pyc
56.03 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
exc.cpython-312.pyc
1015 B
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
result.cpython-312.pyc
36.60 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
scoping.cpython-312.pyc
55.65 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
session.cpython-312.pyc
69.78 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
955 B
lrw-r--r--
2025-04-04 08:02:02
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).