REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 60.95 KB
Close
//proc/self/root/opt/alt/python37/lib64/python3.7/logging/__pycache__/__init__.cpython-37.pyc
Text
Base64
Qg0NCgAAAACICCBmaiMBAOMAAAAAAAAAAAAAAAAqAAAAQAAAAHMaBAAAZABaAGQBZAJsAVoBZAFkAmwCWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgVkAWQCbAZaBmQBZAJsB1oHZAFkAmwIWglkAWQDbAptC1oLAQBkBGQFZAZkB2QIZAlkCmQLZAxkDWQOZA9kEGQRZBJkE2QUZBVkFmQXZBhkGWQaZBtkHGQdZB5kH2QgZCFkImQjZCRkJWQmZCdkKGQpZCpkK2QsZC1nKloMZAFkAmwNWg1kLloOZC9aD2QwWhBkMVoRZQOgA6EAWhJkMloTZDJaFGQyWhVkMloWZDNaF2UXWhhkNFoZZDVaGmUaWhtkNlocZDdaHWQBWh5lF2QGZRlkCGUaZBZlHGQOZR1kB2UeZBJpBlofZRdlGGUZZRplGmUcZR1lHmQ4nAhaIGQ5ZCCEAFohZDpkF4QAWiJlI2UBZDuDApABclBkPGQ9hABaJG4IZD5kP4QAWiRlAmoloCZlImonaiihAVopZEBkQYQAWiplDaAroQBaLGRCZEOEAFotZERkRYQAWi5lI2UCZEaDApABc55kR2RIhABaL24oZQegMKEAWjFkSWRIhABaL2RKZEuEAFoyZQJqM2UtZTJlLmRMjQMBAEcAZE1kD4QAZA9lNIMDWjVlNWE2ZE5kK4QAWjdkT2QqhABaOGRQZCWEAFo5RwBkUWRShABkUmU0gwNaOkcAZFNkVIQAZFRlOoMDWjtHAGRVZFaEAGRWZTqDA1o8ZFdaPWU6ZT1mAmU7ZFhmAmU8ZFlmAmRanANaPkcAZFtkDIQAZAxlNIMDWj9lP4MAWkBHAGRcZAWEAGQFZTSDA1pBRwBkXWQLhABkC2U0gwNaQkcAZF5kX4QAZF9lNIMDWkNlB6BEoQBaRWcAWkZkYGRhhABaR2RiZGOEAFpIRwBkZGQNhABkDWVDgwNaSUcAZGVkFIQAZBRlSYMDWkpHAGRmZAqEAGQKZUqDA1pLRwBkZ2RohABkaGVKgwNaTGVMZRqDAVpNZU1aTkcAZGlkaoQAZGplNIMDWk9ka2QmhABaUGRsZCKEAFpRRwBkbWRuhABkbmU0gwNaUkcAZG9kEIQAZBBlQ4MDWlNHAGRwZHGEAGRxZVODA1pUZVNhVUcAZHJkEYQAZBFlNIMDWlZlVGUagwFaV2VXZVNfV2VSZVNqV4MBZVNfWGRzZBiEAFpZZIRkdGQhhAFaWmR1ZBqEAFpbZVtaXGR2ZB2EAFpdZDJkd5wBZHhkHoQCWl5keWQphABaX2R6ZCiEAFpgZHtkI4QAWmFkfGQbhABaYmR9ZCSEAFpjZRdmAWR+ZByEAVpkZUZmAWR/ZCeEAVplZAFkAmxmWmZlZqBnZWWhAQEARwBkgGQThABkE2VJgwNaaGQCYWlkhWSBZIKEAVpqZINkGYQAWmtkAlMAKYZ6wgpMb2dnaW5nIHBhY2thZ2UgZm9yIFB5dGhvbi4gQmFzZWQgb24gUEVQIDI4MiBhbmQgY29tbWVudHMgdGhlcmV0byBpbgpjb21wLmxhbmcucHl0aG9uLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgpUbyB1c2UsIHNpbXBseSAnaW1wb3J0IGxvZ2dpbmcnIGFuZCBsb2cgYXdheSEK6QAAAABOKQHaCFRlbXBsYXRl2gxCQVNJQ19GT1JNQVTaEkJ1ZmZlcmluZ0Zvcm1hdHRlctoIQ1JJVElDQUzaBURFQlVH2gVFUlJPUtoFRkFUQUzaC0ZpbGVIYW5kbGVy2gZGaWx0ZXLaCUZvcm1hdHRlctoHSGFuZGxlctoESU5GT9oJTG9nUmVjb3Jk2gZMb2dnZXLaDUxvZ2dlckFkYXB0ZXLaBk5PVFNFVNoLTnVsbEhhbmRsZXLaDVN0cmVhbUhhbmRsZXLaBFdBUk7aB1dBUk5JTkfaDGFkZExldmVsTmFtZdoLYmFzaWNDb25maWfaD2NhcHR1cmVXYXJuaW5nc9oIY3JpdGljYWzaBWRlYnVn2gdkaXNhYmxl2gVlcnJvctoJZXhjZXB0aW9u2gVmYXRhbNoMZ2V0TGV2ZWxOYW1l2glnZXRMb2dnZXLaDmdldExvZ2dlckNsYXNz2gRpbmZv2gNsb2faDW1ha2VMb2dSZWNvcmTaDnNldExvZ2dlckNsYXNz2ghzaHV0ZG93btoEd2FybtoHd2FybmluZ9oTZ2V0TG9nUmVjb3JkRmFjdG9yedoTc2V0TG9nUmVjb3JkRmFjdG9yedoKbGFzdFJlc29ydNoPcmFpc2VFeGNlcHRpb25zeiZWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAcmVkLWRvdmUuY29tPloKcHJvZHVjdGlvbnoHMC41LjEuMnoQMDcgRmVicnVhcnkgMjAxMFTpMgAAAOkoAAAA6R4AAADpFAAAAOkKAAAAKQhyBQAAAHIIAAAAcgcAAAByFAAAAHIVAAAAcg0AAAByBgAAAHIRAAAAYwEAAAAAAAAAAgAAAAMAAABDAAAAczQAAAB0AKABfAChAX0BfAFkAWsJchZ8AVMAdAKgAXwAoQF9AXwBZAFrCXIsfAFTAGQCfAAWAFMAKQNhDwIAAAogICAgUmV0dXJuIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGxvZ2dpbmcgbGV2ZWwgJ2xldmVsJy4KCiAgICBJZiB0aGUgbGV2ZWwgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGxldmVscyAoQ1JJVElDQUwsIEVSUk9SLCBXQVJOSU5HLAogICAgSU5GTywgREVCVUcpIHRoZW4geW91IGdldCB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcuIElmIHlvdSBoYXZlCiAgICBhc3NvY2lhdGVkIGxldmVscyB3aXRoIG5hbWVzIHVzaW5nIGFkZExldmVsTmFtZSB0aGVuIHRoZSBuYW1lIHlvdSBoYXZlCiAgICBhc3NvY2lhdGVkIHdpdGggJ2xldmVsJyBpcyByZXR1cm5lZC4KCiAgICBJZiBhIG51bWVyaWMgdmFsdWUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIGRlZmluZWQgbGV2ZWxzIGlzIHBhc3NlZAogICAgaW4sIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBpcyByZXR1cm5lZC4KCiAgICBPdGhlcndpc2UsIHRoZSBzdHJpbmcgIkxldmVsICVzIiAlIGxldmVsIGlzIHJldHVybmVkLgogICAgTnoITGV2ZWwgJXMpA9oMX2xldmVsVG9OYW1l2gNnZXTaDF9uYW1lVG9MZXZlbCkC2gVsZXZlbNoGcmVzdWx0qQByNwAAAPo1L29wdC9hbHQvcHl0aG9uMzcvbGliNjQvcHl0aG9uMy43L2xvZ2dpbmcvX19pbml0X18ucHlyHwAAAHUAAABzDgAAAAAPCgEIAQQBCgEIAQQBYwIAAAAAAAAA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IGFyZSB1c2VkIHRvIGNvbnZlcnQgYSBMb2dSZWNvcmQgdG8gdGV4dC4KCiAgICBGb3JtYXR0ZXJzIG5lZWQgdG8ga25vdyBob3cgYSBMb2dSZWNvcmQgaXMgY29uc3RydWN0ZWQuIFRoZXkgYXJlCiAgICByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBhIExvZ1JlY29yZCB0byAodXN1YWxseSkgYSBzdHJpbmcgd2hpY2ggY2FuCiAgICBiZSBpbnRlcnByZXRlZCBieSBlaXRoZXIgYSBodW1hbiBvciBhbiBleHRlcm5hbCBzeXN0ZW0uIFRoZSBiYXNlIEZvcm1hdHRlcgogICAgYWxsb3dzIGEgZm9ybWF0dGluZyBzdHJpbmcgdG8gYmUgc3BlY2lmaWVkLiBJZiBub25lIGlzIHN1cHBsaWVkLCB0aGUKICAgIHRoZSBzdHlsZS1kZXBlbmRlbnQgZGVmYXVsdCB2YWx1ZSwgIiUobWVzc2FnZSlzIiwgInttZXNzYWdlfSIsIG9yCiAgICAiJHttZXNzYWdlfSIsIGlzIHVzZWQuCgogICAgVGhlIEZvcm1hdHRlciBjYW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIGZvcm1hdCBzdHJpbmcgd2hpY2ggbWFrZXMgdXNlIG9mCiAgICBrbm93bGVkZ2Ugb2YgdGhlIExvZ1JlY29yZCBhdHRyaWJ1dGVzIC0gZS5nLiB0aGUgZGVmYXVsdCB2YWx1ZSBtZW50aW9uZWQKICAgIGFib3ZlIG1ha2VzIHVzZSBvZiB0aGUgZmFjdCB0aGF0IHRoZSB1c2VyJ3MgbWVzc2FnZSBhbmQgYXJndW1lbnRzIGFyZSBwcmUtCiAgICBmb3JtYXR0ZWQgaW50byBhIExvZ1JlY29yZCdzIG1lc3NhZ2UgYXR0cmlidXRlLiBDdXJyZW50bHksIHRoZSB1c2VmdWwKICAgIGF0dHJpYnV0ZXMgaW4gYSBMb2dSZWNvcmQgYXJlIGRlc2NyaWJlZCBieToKCiAgICAlKG5hbWUpcyAgICAgICAgICAgIE5hbWUgb2YgdGhlIGxvZ2dlciAobG9nZ2luZyBjaGFubmVsKQogICAgJShsZXZlbG5vKXMgICAgICAgICBOdW1lcmljIGxvZ2dpbmcgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlIChERUJVRywgSU5GTywKICAgICAgICAgICAgICAgICAgICAgICAgV0FSTklORywgRVJST1IsIENSSVRJQ0FMKQogICAgJShsZXZlbG5hbWUpcyAgICAgICBUZXh0IGxvZ2dpbmcgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlICgiREVCVUciLCAiSU5GTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJXQVJOSU5HIiwgIkVSUk9SIiwgIkNSSVRJQ0FMIikKICAgICUocGF0aG5hbWUpcyAgICAgICAgRnVsbCBwYXRobmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIGxvZ2dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB3YXMgaXNzdWVkIChpZiBhdmFpbGFibGUpCiAgICAlKGZpbGVuYW1lKXMgICAgICAgIEZpbGVuYW1lIHBvcnRpb24gb2YgcGF0aG5hbWUKICAgICUobW9kdWxlKXMgICAgICAgICAgTW9kdWxlIChuYW1lIHBvcnRpb24gb2YgZmlsZW5hbWUpCiAgICAlKGxpbmVubylkICAgICAgICAgIFNvdXJjZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgbG9nZ2luZyBjYWxsIHdhcyBpc3N1ZWQKICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGF2YWlsYWJsZSkKICAgICUoZnVuY05hbWUpcyAgICAgICAgRnVuY3Rpb24gbmFtZQogICAgJShjcmVhdGVkKWYgICAgICAgICBUaW1lIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZCAodGltZS50aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKQogICAgJShhc2N0aW1lKXMgICAgICAgICBUZXh0dWFsIHRpbWUgd2hlbiB0aGUgTG9nUmVjb3JkIHdhcyBjcmVhdGVkCiAgICAlKG1zZWNzKWQgICAgICAgICAgIE1pbGxpc2Vjb25kIHBvcnRpb24gb2YgdGhlIGNyZWF0aW9uIHRpbWUKICAgICUocmVsYXRpdmVDcmVhdGVkKWQgVGltZSBpbiBtaWxsaXNlY29uZHMgd2hl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ICAgYmFzaWMgYmVoYXZpb3VyIGlzIGFzIGZvbGxvd3M6IGlmIGRhdGVmbXQgKGEgc3RyaW5nKSBpcyBzcGVjaWZpZWQsCiAgICAgICAgaXQgaXMgdXNlZCB3aXRoIHRpbWUuc3RyZnRpbWUoKSB0byBmb3JtYXQgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlCiAgICAgICAgcmVjb3JkLiBPdGhlcndpc2UsIGFuIElTTzg2MDEtbGlrZSAob3IgUkZDIDMzMzktbGlrZSkgZm9ybWF0IGlzIHVzZWQuCiAgICAgICAgVGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gdXNlcyBhIHVzZXItY29uZmlndXJhYmxlCiAgICAgICAgZnVuY3Rpb24gdG8gY29udmVydCB0aGUgY3JlYXRpb24gdGltZSB0byBhIHR1cGxlLiBCeSBkZWZhdWx0LAogICAgICAgIHRpbWUubG9jYWx0aW1lKCkgaXMgdXNlZDsgdG8gY2hhbmdlIHRoaXMgZm9yIGEgcGFydGljdWxhciBmb3JtYXR0ZXIKICAgICAgICBpbnN0YW5jZSwgc2V0IHRoZSAnY29udmVydGVyJyBhdHRyaWJ1dGUgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lCiAgICAgICAgc2lnbmF0dXJlIGFzIHRpbWUubG9jYWx0aW1lKCkgb3IgdGltZS5nbXRpbWUoKS4gVG8gY2hhbmdlIGl0IGZvciBhbGwKICAgICAgICBmb3JtYXR0ZXJzLCBmb3IgZXhhbXBsZSBpZiB5b3Ugd2FudCBhbGwgbG9nZ2luZyB0aW1lcyB0byBiZSBzaG93biBpbiBHTVQsCiAgICAgICAgc2V0IHRoZSAnY29udmVydGVyJyBhdHRyaWJ1dGUgaW4gdGhlIEZvcm1hdHRlciBjbGFzcy4KICAgICAgICApB9oJY29udmVydGVycnIAAAByXgAAAFoIc3RyZnRpbWXaE2RlZmF1bHRfdGltZV9mb3JtYXTaE2RlZmF1bHRfbXNlY19mb3JtYXRycwAAACkGcn0AAABylwAAAHKlAAAAcoEAAADaAXPaAXRyNwAAAHI3AAAAcjgAAADaCmZvcm1hdFRpbWUQAgAAcwwAAAAA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Y2F0aW9uLiBFeGFjdGx5IGhvdyBhbgogICAgImFyZWEiIGlzIGRlZmluZWQgaXMgdXAgdG8gdGhlIGFwcGxpY2F0aW9uIGRldmVsb3Blci4gU2luY2UgYW4KICAgIGFwcGxpY2F0aW9uIGNhbiBoYXZlIGFueSBudW1iZXIgb2YgYXJlYXMsIGxvZ2dpbmcgY2hhbm5lbHMgYXJlIGlkZW50aWZpZWQKICAgIGJ5IGEgdW5pcXVlIHN0cmluZy4gQXBwbGljYXRpb24gYXJlYXMgY2FuIGJlIG5lc3RlZCAoZS5nLiBhbiBhcmVhCiAgICBvZiAiaW5wdXQgcHJvY2Vzc2luZyIgbWlnaHQgaW5jbHVkZSBzdWItYXJlYXMgInJlYWQgQ1NWIGZpbGVzIiwgInJlYWQKICAgIFhMUyBmaWxlcyIgYW5kICJyZWFkIEdudW1lcmljIGZpbGVzIikuIFRvIGNhdGVyIGZvciB0aGlzIG5hdHVyYWwgbmVzdGluZywKICAgIGNoYW5uZWwgbmFtZXMgYXJlIG9yZ2FuaXplZCBpbnRvIGEgbmFtZXNwYWNlIGhpZXJhcmNoeSB3aGVyZSBsZXZlbHMgYXJlCiAgICBzZXBhcmF0ZWQgYnkgcGVyaW9kcywgbXVjaCBsaWtlIHRoZSBKYXZhIG9yIFB5dGhvbiBwYWNrYWdlIG5hbWVzcGFjZS4gU28KICAgIGluIHRoZSBpbnN0YW5jZSBnaXZlbiBhYm92ZSwgY2hhbm5lbCBuYW1lcyBtaWdodCBiZSAiaW5wdXQiIGZvciB0aGUgdXBwZXIKICAgIGxldmVsLCBhbmQgImlucHV0LmNzdiIsICJpbnB1dC54bHMiIGFuZCAiaW5wdXQuZ251IiBmb3IgdGhlIHN1Yi1sZXZlbHMuCiAgICBUaGVyZSBpcyBubyBhcmJpdHJhcnkgbGltaXQgdG8gdGhlIGRlcHRoIG9mIG5lc3RpbmcuCiAgICBjAwAAAAAAAAADAAAAAwAAAEMAAABzPAAAAHQAoAF8AKEBAQB8AXwAXwJ0A3wCgwF8AF8EZAF8AF8FZAJ8AF8GZwB8AF8HZAN8AF8IaQB8AF8JZAFTACkEekoKICAgICAgICBJbml0aWFsaXplIHRoZSBsb2dnZXIgd2l0aCBhIG5hbWUgYW5kIGFuIG9w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bS4KCiAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBpZiB0aGUgcm9vdCBsb2dnZXIgYWxyZWFkeSBoYXMgaGFuZGxlcnMKICAgIGNvbmZpZ3VyZWQuIEl0IGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIGludGVuZGVkIGZvciB1c2UgYnkgc2ltcGxlIHNjcmlwdHMKICAgIHRvIGRvIG9uZS1zaG90IGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxvZ2dpbmcgcGFja2FnZS4KCiAgICBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gY3JlYXRlIGEgU3RyZWFtSGFuZGxlciB3aGljaCB3cml0ZXMgdG8KICAgIHN5cy5zdGRlcnIsIHNldCBhIGZvcm1hdHRlciB1c2luZyB0aGUgQkFTSUNfRk9STUFUIGZvcm1hdCBzdHJpbmcsIGFuZAogICAgYWRkIHRoZSBoYW5kbGVyIHRvIHRoZSByb290IGxvZ2dlci4KCiAgICBBIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyBtYXkgYmUgc3BlY2lmaWVkLCB3aGljaCBjYW4gYWx0ZXIKICAgIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KCiAgICBmaWxlbmFtZSAgU3BlY2lmaWVzIHRoYXQgYSBGaWxlSGFuZGxlciBiZSBjcmVhdGVkLCB1c2luZyB0aGUgc3BlY2lmaWVkCiAgICAgICAgICAgICAgZmlsZW5hbWUsIHJhdGhlciB0aGFuIGEgU3RyZWFtSGFuZGxlci4KICAgIGZpbGVtb2RlICBTcGVjaWZpZXMgdGhlIG1vZGUgdG8gb3BlbiB0aGUgZmlsZSwgaWYgZmlsZW5hbWUgaXMgc3BlY2lmaWVkCiAgICAgICAgICAgICAgKGlmIGZpbGVtb2RlIGlzIHVuc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byAnYScpLgogICAgZm9ybWF0ICAgIFVzZSB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcgZm9yIHRoZSBoYW5kbGVyLgogICAgZGF0ZWZtdCAgIFVzZSB0aGUgc3BlY2lmaWVkIGRhdGUvdGltZSBmb3JtYXQuCiAgICBzdHlsZSAgICAgSWYgYSBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCwgdXNlIHRoaXMgdG8gc3BlY2lmeSB0aGUKICAgICAgICAgICAgICB0eXBlIG9mIGZvcm1hdCBzdHJpbmcgKHBvc3NpYmxlIHZhbHVlcyAnJScsICd7JywgJyQnLCBmb3IKICAgICAgICAgICAgICAlLWZvcm1hdHRpbmcsIDptZXRoOmBzdHIuZm9ybWF0YCBhbmQgOmNsYXNzOmBzdHJpbmcuVGVtcGxhdGVgCiAgICAgICAgICAgICAgLSBkZWZhdWx0cyB0byAnJScpLgogICAgbGV2ZWwgICAgIFNldCB0aGUgcm9vdCBsb2dnZXIgbGV2ZWwgdG8gdGhlIHNwZWNpZmllZCBsZXZlbC4KICAgIHN0cmVhbSAgICBVc2UgdGhlIHNwZWNpZmllZCBzdHJlYW0gdG8gaW5pdGlhbGl6ZSB0aGUgU3RyZWFtSGFuZGxlci4gTm90ZQogICAgICAgICAgICAgIHRoYXQgdGhpcyBhcmd1bWVudCBpcyBpbmNvbXBhdGlibGUgd2l0aCAnZmlsZW5hbWUnIC0gaWYgYm90aAogICAgICAgICAgICAgIGFyZSBwcmVzZW50LCAnc3RyZWFtJyBpcyBpZ25vcmVkLgogICAgaGFuZGxlcnMgIElmIHNwZWNpZmllZCwgdGhpcyBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgYWxyZWFkeSBjcmVhdGVkCiAgICAgICAgICAgICAgaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJvb3QgaGFuZGxlci4gQW55IGhhbmRsZXIKICAgICAgICAgICAgICBpbiB0aGUgbGlzdCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgZm9ybWF0dGVyIGFzc2lnbmVkIHdpbGwgYmUKICAgICAgICAgICAgICBhc3NpZ25lZCB0aGUgZm9ybWF0dGVyIGNyZWF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4KCiAgICBOb3RlIHRoYXQgeW91IGNvdWxkIHNwZWNpZnkgYSBzdHJlYW0gY3JlYXRlZCB1c2luZyBvcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgcmF0aGVyIHRoYW4gcGFzc2luZyB0aGUgZmlsZW5hbWUgYW5kIG1vZGUgaW4uIEhvd2V2ZXIsIGl0IHNob3VsZCBiZQogICAgcmVtZW1iZXJlZCB0aGF0IFN0cmVhbUhhbmRsZXIgZG9lcyBub3QgY2xvc2UgaXRzIHN0cmVhbSAoc2luY2UgaXQgbWF5IGJlCiAgICB1c2luZyBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIpLCB3aGVyZWFzIEZpbGVIYW5kbGVyIGNsb3NlcyBpdHMgc3RyZWFtCiAgICB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlIGBgc3R5bGVgYCBwYXJhbWV0ZXIuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSBgYGhhbmRsZXJzYGAgcGFyYW1ldGVyLiBBIGBgVmFsdWVFcnJvcmBgIGlzIG5vdyB0aHJvd24gZm9yCiAgICAgICBpbmNvbXBhdGlibGUgYXJndW1lbnRzIChlLmcuIGBgaGFuZGxlcnNgYCBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aAogICAgICAgYGBmaWxlbmFtZWBgL2BgZmlsZW1vZGVgYCwgb3IgYGBmaWxlbmFtZWBgL2BgZmlsZW1vZGVgYCBzcGVjaWZpZWQKICAgICAgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCwgb3IgYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCiAgICAgICBgYHN0cmVhbWBgLgogICAgcgEAAAByzQAAAE5y7AAAAHJrAAAAejgnc3RyZWFtJyBhbmQgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlIHNwZWNpZmllZCB0b2dldGhlcnpHJ3N0cmVhbScgb3IgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoICdoYW5kbGVycyfaCGZpbGVtb2RlcvEAAABypQAAAHKmAAAAcp0AAAB6GFN0eWxlIG11c3QgYmUgb25lIG9mOiAlc3KgAAAAcpgAAAByXAAAAHI1AAAAegIsIHocVW5yZWNvZ25pc2VkIGFyZ3VtZW50KHMpOiAlcykR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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 9
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
config.cpython-37.opt-1.pyc
22.48 KB
lrw-r--r--
2024-04-17 17:36:14
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-37.opt-2.pyc
18.46 KB
lrw-r--r--
2024-04-17 17:35:54
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-37.pyc
22.53 KB
lrw-r--r--
2024-04-17 17:36:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-37.opt-1.pyc
42.02 KB
lrw-r--r--
2024-04-17 17:36:14
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-37.opt-2.pyc
23.64 KB
lrw-r--r--
2024-04-17 17:35:54
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-37.pyc
42.02 KB
lrw-r--r--
2024-04-17 17:36:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.opt-1.pyc
60.92 KB
lrw-r--r--
2024-04-17 17:36:14
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.opt-2.pyc
33.43 KB
lrw-r--r--
2024-04-17 17:35:54
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
60.95 KB
lrw-r--r--
2024-04-17 17:36:19
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).