REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 80.15 KB
Close
//opt/cloudlinux/venv/lib/python3.11/site-packages/numpy/ma/__pycache__/extras.cpython-311.pyc
Text
Base64
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Y29lZtoDY2922ghkaWFnZmxhdNoDZG902gZkc3RhY2vaB2VkaWZmMWTaGGZsYXRub3RtYXNrZWRfY29udGlndW91c9oTZmxhdG5vdG1hc2tlZF9lZGdlc9oGaHNwbGl02gZoc3RhY2vaBGlzaW7aBGluMWTaC2ludGVyc2VjdDFk2gltYXNrX2NvbHPaDG1hc2tfcm93Y29sc9oJbWFza19yb3dz2gptYXNrZWRfYWxs2g9tYXNrZWRfYWxsX2xpa2XaBm1lZGlhbtoDbXJf2gtuZGVudW1lcmF0ZdoUbm90bWFza2VkX2NvbnRpZ3VvdXPaD25vdG1hc2tlZF9lZGdlc9oHcG9seWZpdNoJcm93X3N0YWNr2glzZXRkaWZmMWTaCHNldHhvcjFk2gVzdGFja9oGdW5pcXVl2gd1bmlvbjFk2gZ2YW5kZXLaBnZzdGFja+kAAAAATukBAAAAKQHaBGNvcmUpFdoLTWFza2VkQXJyYXnaB01BRXJyb3LaA2FkZNoFYXJyYXnaB2FzYXJyYXnaC2NvbmNhdGVuYXRl2gZmaWxsZWTaBWNvdW502gdnZXRtYXNr2gxnZXRtYXNrYXJyYXnaD21ha2VfbWFza19kZXNjctoGbWFza2Vk2gxtYXNrZWRfYXJyYXnaB21hc2tfb3LaBm5vbWFza9oEb25lc9oEc29ydNoFemVyb3PaB2dldGRhdGHaE2dldF9tYXNrZWRfc3ViY2xhc3NyEwAAACkC2gduZGFycmF5cjYAAAApAdoUbm9ybWFsaXplX2F4aXNfaW5kZXgpAdoUbm9ybWFsaXplX2F4aXNfdHVwbGUpAdoIX3VyZWR1Y2UpAdoQQXhpc0NvbmNhdGVuYXRvcmMBAAAAAAAAAAAAAAAGAAAAAwAAAPNGAAAAlwB0AQAAAAAAAAAAAAB8AHQCAAAAAAAAAAAAAHQEAAAAAAAAAAAAAHQGAAAAAAAAAAAAAGYDpgIAAKsCAAAAAAAAAABTACkBejYKICAgIElzIHNlcSBhIHNlcXVlbmNlIChuZGFycmF5LCBsaXN0IG9yIHR1cGxlKT8KCiAgICApBNoKaXNpbnN0YW5jZXJHAAAA2gV0dXBsZdoEbGlzdCkB2gNzZXFzAQAAACD6Ri9vcHQvY2xvdWRsaW51eC92ZW52L2xpYjY0L3B5dGhvbjMuMTEv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CiAgICBkYXRhIGFyZSBtYXNrZWQuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgc2hhcGUgOiBpbnQgb3IgdHVwbGUgb2YgaW50cwogICAgICAgIFNoYXBlIG9mIHRoZSByZXF1aXJlZCBNYXNrZWRBcnJheSwgZS5nLiwgYGAoMiwgMylgYCBvciBgYDJgYC4KICAgIGR0eXBlIDogZHR5cGUsIG9wdGlvbmFsCiAgICAgICAgRGF0YSB0eXBlIG9mIHRoZSBvdXRwdXQuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgYSA6IE1hc2tlZEFycmF5CiAgICAgICAgQSBtYXNrZWQgYXJyYXkgd2l0aCBhbGwgZGF0YSBtYXNrZWQuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBtYXNrZWRfYWxsX2xpa2UgOiBFbXB0eSBtYXNrZWQgYXJyYXkgbW9kZWxsZWQgb24gYW4gZXhpc3RpbmcgYXJyYXkuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gaW1wb3J0IG51bXB5Lm1hIGFzIG1hCiAgICA+Pj4gbWEubWFza2VkX2FsbCgoMywgMykpCiAgICBtYXNrZWRfYXJyYXkoCiAgICAgIGRhdGE9W1stLSwgLS0sIC0tXSwKICAgICAgICAgICAgWy0tLCAtLSwgLS1dLAogICAgICAgICAgICBbLS0sIC0tLCAtLV1dLAogICAgICBtYXNrPVtbIFRydWUsICBUcnVlLCAgVHJ1ZV0sCiAgICAgICAgICAgIFsgVHJ1ZSwgIFRydWUsICBUcnVlXSwKICAgICAgICAgICAgWyBUcnVlLCAgVHJ1ZSwgIFRydWVdXSwKICAgICAgZmlsbF92YWx1ZT0xZSsyMCwKICAgICAgZHR5cGU9ZmxvYXQ2NCkKCiAgICBUaGUgYGR0eXBlYCBwYXJhbWV0ZXIgZGVmaW5lcyB0aGUgdW5kZXJseWluZyBkYXRhIHR5cGUuCgogICAgPj4+IGEgPSBtYS5tYXNrZWRfYWxsKCgzLCAzKSkKICAgID4+PiBhLmR0eXBlCiAgICBkdHlwZSgnZmxvYXQ2NCcpCiAgICA+Pj4gYSA9IG1hLm1hc2tlZF9hbGwo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ICBBeGlzIGFsb25nIHdoaWNoIHRvIGF2ZXJhZ2UgYGFgLiBJZiBOb25lLCBhdmVyYWdpbmcgaXMgZG9uZSBvdmVyCiAgICAgICAgdGhlIGZsYXR0ZW5lZCBhcnJheS4KICAgIHdlaWdodHMgOiBhcnJheV9saWtlLCBvcHRpb25hbAogICAgICAgIFRoZSBpbXBvcnRhbmNlIHRoYXQgZWFjaCBlbGVtZW50IGhhcyBpbiB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGF2ZXJhZ2UuCiAgICAgICAgVGhlIHdlaWdodHMgYXJyYXkgY2FuIGVpdGhlciBiZSAxLUQgKGluIHdoaWNoIGNhc2UgaXRzIGxlbmd0aCBtdXN0IGJlCiAgICAgICAgdGhlIHNpemUgb2YgYGFgIGFsb25nIHRoZSBnaXZlbiBheGlzKSBvciBvZiB0aGUgc2FtZSBzaGFwZSBhcyBgYWAuCiAgICAgICAgSWYgYGB3ZWlnaHRzPU5vbmVgYCwgdGhlbiBhbGwgZGF0YSBpbiBgYWAgYXJlIGFzc3VtZWQgdG8gaGF2ZSBhCiAgICAgICAgd2VpZ2h0IGVxdWFsIHRvIG9uZS4gIFRoZSAxLUQgY2FsY3VsYXRpb24gaXM6OgoKICAgICAgICAgICAgYXZnID0gc3VtKGEgKiB3ZWlnaHRzKSAvIHN1bSh3ZWlnaHRzKQoKICAgICAgICBUaGUgb25seSBjb25zdHJhaW50IG9uIGB3ZWlnaHRzYCBpcyB0aGF0IGBzdW0od2VpZ2h0cylgIG11c3Qgbm90IGJlIDAuCiAgICByZXR1cm5lZCA6IGJvb2wsIG9wdGlvbmFsCiAgICAgICAgRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYSB0dXBsZSBgYChyZXN1bHQsIHN1bSBvZiB3ZWlnaHRzKWBgCiAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkIGFzIG91dHB1dCAoVHJ1ZSksIG9yIGp1c3QgdGhlIHJlc3VsdCAoRmFsc2UpLgogICAgICAgIERlZmF1bHQgaXMgRmFsc2UuCiAgICBrZWVwZGltcyA6IGJvb2wsIG9wdGlvbmFsCiAgICAgICAgSWYgdGhpcyBpcyBzZXQgdG8gVHJ1ZSwgdGhlIGF4ZXMgd2hpY2ggYXJlIHJlZHVjZWQgYXJlIGxlZnQKICAgICAgICBpbiB0aGUgcmVzdWx0IGFzIGRpbWVuc2lvbnMgd2l0aCBzaXplIG9uZS4gV2l0aCB0aGlzIG9wdGlvbiwKICAgICAgICB0aGUgcmVzdWx0IHdpbGwgYnJvYWRjYXN0IGNvcnJlY3RseSBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgYWAuCiAgICAgICAgKk5vdGU6KiBga2VlcGRpbXNgIHdpbGwgbm90IHdvcmsgd2l0aCBpbnN0YW5jZXMgb2YgYG51bXB5Lm1hdHJpeGAKICAgICAgICBvciBvdGhlciBjbGFzc2VzIHdob3NlIG1ldGhvZHMgZG8gbm90IHN1cHBvcnQgYGtlZXBkaW1zYC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4yMy4wCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgYXZlcmFnZSwgW3N1bV9vZl93ZWlnaHRzXSA6ICh0dXBsZSBvZikgc2NhbGFyIG9yIE1hc2tlZEFycmF5CiAgICAgICAgVGhlIGF2ZXJhZ2UgYWxvbmcgdGhlIHNwZWNpZmllZCBheGlzLiBXaGVuIHJldHVybmVkIGlzIGBUcnVlYCwKICAgICAgICByZXR1cm4gYSB0dXBsZSB3aXRoIHRoZSBhdmVyYWdlIGFzIHRoZSBmaXJzdCBlbGVtZW50IGFuZCB0aGUgc3VtCiAgICAgICAgb2YgdGhlIHdlaWdodHMgYXMgdGhlIHNlY29uZCBlbGVtZW50LiBUaGUgcmV0dXJuIHR5cGUgaXMgYG5wLmZsb2F0NjRgCiAgICAgICAgaWYgYGFgIGlzIG9mIGludGVnZXIgdHlwZSBhbmQgZmxvYXRzIHNtYWxsZXIgdGhhbiBgZmxvYXQ2NGAsIG9yIHRoZQogICAgICAgIGlucHV0IGRhdGEtdHlwZSwgb3RoZXJ3aXNlLiBJZiByZXR1cm5lZCwgYHN1bV9vZl93ZWlnaHRzYCBpcyBhbHdheXMKICAgICAgICBgZmxvYXQ2NGAuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gYSA9IG5wLm1hLmFycmF5KFsxLiwgMi4sIDMuLCA0Ll0sIG1hc2s9W0ZhbHNlLCBGYWxzZSwgVHJ1ZSwgVHJ1ZV0pCiAgICA+Pj4gbnAubWEuYXZlcmFnZShhLCB3ZWlnaHRzPVszLCAxLCAwLCAwXSkKICAgIDEuMjUKCiAgICA+Pj4geCA9IG5wLm1hLmFyYW5nZSg2LikucmVzaGFwZSgzLCAyKQogICAgPj4+IHgKICAgIG1hc2tlZF9hcnJheSgKICAgICAgZGF0YT1bWzAuLCAxLl0sCiAgICAgICAgICAgIFsyLiwgMy5dLAogICAgICAgICAgICBbNC4sIDUuXV0sCiAgICAgIG1hc2s9RmFsc2UsCiAgICAgIGZpbGxfdmFsdWU9MWUrMjApCiAgICA+Pj4gYXZnLCBzdW13ZWlnaHRzID0gbnAubWEuYXZlcmFnZSh4LCBheGlzPTAsIHdlaWdodHM9WzEsIDIsIDNdLAogICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQ9VHJ1ZSkKICAgID4+PiBhdmcKICAgIG1hc2tlZF9hcnJheShkYXRhPVsyLjY2NjY2NjY2NjY2NjY2NjUsIDMuNjY2NjY2NjY2NjY2NjY2NV0sCiAgICAgICAgICAgICAgICAgbWFzaz1bRmFsc2UsIEZhbHNlXSwKICAgICAgICAgICBmaWxsX3ZhbHVlPTFlKzIwKQoKICAgIFdpdGggYGBrZWVwZGltcz1UcnVlYGAsIHRoZSBmb2xsb3dpbmcgcmVzdWx0IGhhcyBzaGFwZSAoMywgMSkuCgogICAgPj4+IG5wLm1hLmF2ZXJhZ2UoeCwgYXhpcz0xLCBrZWVwZGltcz1UcnVlKQogICAgbWFza2VkX2FycmF5KAogICAgICBkYXRhPVtbMC41XSwKICAgICAgICAgICAgWzIuNV0sCiAgICAgICAgICAgIFs0LjVdXSwKICAgICAgbWFzaz1GYWxzZSwKICAgICAgZmlsbF92YWx1ZT0xZSsyMCkKICAgIHLMAAAATtoCZjh6O0F4aXMgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBzaGFwZXMgb2YgYSBhbmQgd2VpZ2h0cyBkaWZmZXIucjEAAAB6ODFEIHdlaWdodHMgZXhwZWN0ZWQgd2hlbiBzaGFwZXMgb2YgYSBhbmQgd2VpZ2h0cyBkaWZmZXIucjAAAAB6NUxlbmd0aCBvZiB3ZWlnaHRzIG5vdCBjb21wYXRpYmxlIHdpdGggc3BlY2lmaWVkIGF4aXMuKQFyMQAAAFSpAXKkAAAAcqYAAAApAnJXAAAAcl8AAAByYgAAAHJ6AAAAKRdyNwAAAHI7AAAAclwAAADaCF9Ob1ZhbHVl2gRtZWFucl8AAADaBHR5cGVyOgAAANoKaXNzdWJjbGFzc9oHaW50ZWdlctoFYm9vbF/aC3Jlc3VsdF90eXBlcl4AAAByrwAAAHKnAAAAcscAAADaDGJyb2FkY2FzdF90b9oIc3dhcGF4ZXNyQQAAAHJbAAAAclUAAADaCG11bHRpcGx5cqMAAAApC3JgAAAAclcAAADaB3dlaWdodHPaCHJldHVybmVkcswAAAByWAAAANoLa2VlcGRpbXNfa3faA2F2Z9oDc2Ns2gN3Z3TaDHJlc3VsdF9kdHlwZXMLAAAAICAgICAgICAgICByUQAAAHIHAAAAcgcAAAAPAgAAc2UCAACAAPVaAgAJEJABiQqMCoBB3QgPkAGJCowKgEHwCAAIEJUylDvQBx7QBx7gFhiIC4gL4BchoDjQFiyIC+AHDoB/2A4UiGGMZpBU0A4p0A4pmFvQDinQDimIA9gOEYxpj26KbphRn1eaV6BUmV2cXdEOK9QOK4gDiQPlDhWQZ9EOHtQOHogD5QsVkGGUZ5RspVKkWrUStBjQJDrRCzvUCzvwAAMJPt0bHZw+qCGsJ7AztDm4ZNEbQ9QbQ4hMiEzlGx2cPqghrCewM7Q50Rs91Bs9iEzwBgAMDYw3kGOUadILH9ALH9gPE4h83RYf8AIBFR7xAwIXH/QAAhcf8AACER/wBgAQE4x4mDGKfYh93RYf2BRO8QMBF1AB9AABF1AB8AABEVAB4A8SjHmYEYx8mHGcd6B0nH3SDyzQDyzdFiDYFEvxAwEXTQH0AAEXTQHwAAERTQH1CAATFZQvoCOoAawGqHGpCLAkoX+4E7wZ0SdCyCTQEk/REk/UEk+IQ9gSFZcskiyYcqA00RIo1BIoiEPgCwyVRog/iD/YEhWYAZwGkHeRLYhD2AwPiEiMSJgBnAbRDB6ISIxI4A4ViGOMZ9AOQ5g0oHzQDkPQDkOwe9AOQ9AOQ4gD8AIBDzKNYoxrmCGYU9ggLPADAQ8u8QABDy70AAEPLtwuMbAk8AMBD0cB8AABD0cB2DpF8AMBD0cB8AABD0cB2ElM8QMBD00BiAPwBgAIEPAABQUT2AsOjDmYA5wJ0gsh0Ash3RIUlC+gI6BzpHnREjHUEjHXEjbSEjbREjjUEjiIQ9gPEpBDiHiID+APEogKclMAAABjBQAAAAAAAAAAAAAACAAAAAMAAADzFgEAAJcAdAEAAAAAAAAAAAAAfABkAaYCAACrAgAAAAAAAAAAc2B0AwAAAAAAAAAAAABqAgAAAAAAAAAAdAcAAAAAAAAAAAAAfABkAqwDpgIAAKsCAAAAAAAAAAB8AXwCfAN8BKwEpgUAAKsFAAAAAAAAAAB9BXQJAAAAAAAAAAAAAHwFdAIAAAAAAAAAAAAAagUAAAAAAAAAAKYCAACrAgAAAAAAAAAAchxkBXwFagYAAAAAAAAAAGsBAAAAAHIRdA8AAAAAAAAAAAAAfAVkBqwHpgIAAKsCAAAAAAAAAABTAHwFUwB0EQAAAAAAAAAAAAB8AHQSAAAAAAAAAAAAAHwEfAF8AnwDrAimBgAAqwYAAAAAAAAAAFMAKQlhPgkAAAogICAgQ29tcHV0ZSB0aGUgbWVkaWFuIGFsb25nIHRoZSBzcGVjaWZpZWQgYXhpcy4KCiAgICBSZXR1cm5zIHRoZSBtZWRpYW4gb2YgdGhlIGFycmF5IGVsZW1lbnRzLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGEgOiBhcnJheV9saWtlCiAgICAgICAgSW5wdXQgYXJyYXkgb3Igb2JqZWN0IHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBhcnJheS4KICAgIGF4aXMgOiBpbnQsIG9wdGlvbmFsCiAgICAgICAgQXhpcyBhbG9uZyB3aGljaCB0aGUgbWVkaWFucyBhcmUgY29tcHV0ZWQuIFRoZSBkZWZhdWx0IChOb25lKSBpcwogICAgICAgIHRvIGNvbXB1dGUgdGhlIG1lZGlhbiBhbG9uZyBhIGZsYXR0ZW5lZCB2ZXJzaW9uIG9mIHRoZSBhcnJheS4KICAgIG91dCA6IG5kYXJyYXksIG9wdGlvbmFsCiAgICAgICAgQWx0ZXJuYXRpdmUgb3V0cHV0IGFycmF5IGluIHdoaWNoIHRvIHBsYWNlIHRoZSByZXN1bHQuIEl0IG11c3QKICAgICAgICBoYXZlIHRoZSBzYW1lIHNoYXBlIGFuZCBidWZmZXIgbGVuZ3RoIGFzIHRoZSBleHBlY3RlZCBvdXRwdXQKICAgICAgICBidXQgdGhlIHR5cGUgd2lsbCBiZSBjYXN0IGlmIG5lY2Vzc2FyeS4KICAgIG92ZXJ3cml0ZV9pbnB1dCA6IGJvb2wsIG9wdGlvbmFsCiAgICAgICAgSWYgVHJ1ZSwgdGhlbiBhbGxvdyB1c2Ugb2YgbWVtb3J5IG9mIGlucHV0IGFycmF5IChhKSBmb3IKICAgICAgICBjYWxjdWxhdGlvbnMuIFRoZSBpbnB1dCBhcnJheSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBjYWxsIHRvCiAgICAgICAgbWVkaWFuLiBUaGlzIHdpbGwgc2F2ZSBtZW1vcnkgd2hlbiB5b3UgZG8gbm90IG5lZWQgdG8gcHJlc2VydmUKICAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIGlucHV0IGFycmF5LiBUcmVhdCB0aGUgaW5wdXQgYXMgdW5kZWZpbmVkLAogICAgICAgIGJ1dCBpdCB3aWxsIHByb2JhYmx5IGJlIGZ1bGx5IG9yIHBhcnRpYWxseSBzb3J0ZWQuIERlZmF1bHQgaXMKICAgICAgICBGYWxzZS4gTm90ZSB0aGF0LCBpZiBgb3ZlcndyaXRlX2lucHV0YCBpcyBUcnVlLCBhbmQgdGhlIGlucHV0CiAgICAgICAgaXMgbm90IGFscmVhZHkgYW4gYG5kYXJyYXlgLCBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZC4KICAgIGtlZXBkaW1zIDogYm9vbCwgb3B0aW9uYWwKICAgICAgICBJZiB0aGlzIGlzIHNldCB0byBUcnVlLCB0aGUgYXhlcyB3aGljaCBhcmUgcmVkdWNlZCBhcmUgbGVmdAogICAgICAgIGluIHRoZSByZXN1bHQgYXMgZGltZW5zaW9ucyB3aXRoIHNpemUgb25lLiBXaXRoIHRoaXMgb3B0aW9uLAogICAgICAgIHRoZSByZXN1bHQgd2lsbCBicm9hZGNhc3QgY29ycmVjdGx5IGFnYWluc3QgdGhlIGlucHV0IGFycmF5LgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjEwLjAKCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBtZWRpYW4gOiBuZGFycmF5CiAgICAgICAgQSBuZXcgYXJyYXkgaG9sZGluZyB0aGUgcmVzdWx0IGlzIHJldHVybmVkIHVubGVzcyBvdXQgaXMKICAgICAgICBzcGVjaWZpZWQsIGluIHdoaWNoIGNhc2UgYSByZWZlcmVuY2UgdG8gb3V0IGlzIHJldHVybmVkLgogICAgICAgIFJldHVybiBkYXRhLXR5cGUgaXMgYGZsb2F0NjRgIGZvciBpbnRlZ2VycyBhbmQgZmxvYXRzIHNtYWxsZXIgdGhhbgogICAgICAgIGBmbG9hdDY0YCwgb3IgdGhlIGlucHV0IGRhdGEtdHlwZSwgb3RoZXJ3aXNlLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgbWVhbgoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgR2l2ZW4gYSB2ZWN0b3IgYGBWYGAgd2l0aCBgYE5gYCBub24gbWFza2VkIHZhbHVlcywgdGhlIG1lZGlhbiBvZiBgYFZgYAogICAgaXMgdGhlIG1pZGRsZSB2YWx1ZSBvZiBhIHNvcnRlZCBjb3B5IG9mIGBgVmBgIChgYFZzYGApIC0gaS5lLgogICAgYGBWc1soTi0xKS8yXWBgLCB3aGVuIGBgTmBgIGlzIG9kZCwgb3IgYGB7VnNbTi8yIC0gMV0gKyBWc1tOLzJdfS8yYGAKICAgIHdoZW4gYGBOYGAgaXMgZXZlbi4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiB4ID0gbnAubWEuYXJyYXkobnAuYXJhbmdlKDgpLCBtYXNrPVswXSo0ICsgWzFdKjQpCiAgICA+Pj4gbnAubWEubWVkaWFuKHgpCiAgICAxLjUKCiAgICA+Pj4geCA9IG5wLm1hLmFycmF5KG5wLmFyYW5nZSgxMCkucmVzaGFwZSgyLCA1KSwgbWFzaz1bMF0qNiArIFsxXSo0KQogICAgPj4+IG5wLm1hLm1lZGlhbih4KQogICAgMi41CiAgICA+Pj4gbnAubWEubWVkaWFuKHgsIGF4aXM9LTEsIG92ZXJ3cml0ZV9pbnB1dD1UcnVlKQogICAgbWFza2VkX2FycmF5KGRhdGE9WzIuMCwg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ICAgLSBJZiBheGlzIGlzIDAsIG9ubHkgcm93cyBhcmUgc3VwcHJlc3NlZC4KICAgIC0gSWYgYXhpcyBpcyAxIG9yIC0xLCBvbmx5IGNvbHVtbnMgYXJlIHN1cHByZXNzZWQuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCA6IGFycmF5X2xpa2UsIE1hc2tlZEFycmF5CiAgICAgICAgVGhlIGFycmF5IHRvIG9wZXJhdGUgb24uICBJZiBub3QgYSBNYXNrZWRBcnJheSBpbnN0YW5jZSAob3IgaWYgbm8gYXJyYXkKICAgICAgICBlbGVtZW50cyBhcmUgbWFza2VkKSwgYHhgIGlzIGludGVycHJldGVkIGFzIGEgTWFza2VkQXJyYXkgd2l0aAogICAgICAgIGBtYXNrYCBzZXQgdG8gYG5vbWFza2AuIE11c3QgYmUgYSAyRCBhcnJheS4KICAgIGF4aXMgOiBpbnQsIG9wdGlvbmFsCiAgICAgICAgQXhpcyBhbG9uZyB3aGljaCB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uIERlZmF1bHQgaXMgTm9uZS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBjb21wcmVzc2VkX2FycmF5IDogbmRhcnJheQogICAgICAgIFRoZSBjb21wcmVzc2VkIGFycmF5LgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IHggPSBucC5tYS5hcnJheShucC5hcmFuZ2UoOSkucmVzaGFwZSgzLCAzKSwgbWFzaz1bWzEsIDAsIDBdLAogICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDAsIDBdLAogICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDBdXSkKICAgID4+PiB4CiAgICBtYXNrZWRfYXJyYXkoCiAgICAgIGRhdGE9W1stLSwgMSwgMl0sCiAgICAgICAgICAgIFstLSwgNCwgNV0sCiAgICAgICAgICAgIFs2LCA3LCA4XV0sCiAgICAgIG1hc2s9W1sgVHJ1ZSwg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Zm9ybSB0aGUgb3BlcmF0aW9uLiBJZiBOb25lLCBhcHBsaWVzIHRvIGEKICAgICAgICBmbGF0dGVuZWQgdmVyc2lvbiBvZiB0aGUgYXJyYXkuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgYSA6IE1hc2tlZEFycmF5CiAgICAgICAgQSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBpbnB1dCBhcnJheSwgbWFza2VkIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUKICAgICAgICBvZiB0aGUgYGF4aXNgIHBhcmFtZXRlci4KCiAgICBSYWlzZXMKICAgIC0tLS0tLQogICAgTm90SW1wbGVtZW50ZWRFcnJvcgogICAgICAgIElmIGlucHV0IGFycmF5IGBhYCBpcyBub3QgMkQuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBtYXNrX3Jvd3MgOiBNYXNrIHJvd3Mgb2YgYSAyRCBhcnJheSB0aGF0IGNvbnRhaW4gbWFza2VkIHZhbHVlcy4KICAgIG1hc2tfY29scyA6IE1hc2sgY29scyBvZiBhIDJEIGFycmF5IHRoYXQgY29udGFpbiBtYXNrZWQgdmFsdWVzLgogICAgbWFza2VkX3doZXJlIDogTWFzayB3aGVyZSBhIGNvbmRpdGlvbiBpcyBtZXQuCgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBUaGUgaW5wdXQgYXJyYXkncyBtYXNrIGlzIG1vZGlmaWVkIGJ5IHRoaXMgZnVuY3Rpb24uCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gaW1wb3J0IG51bXB5Lm1hIGFzIG1hCiAgICA+Pj4gYSA9IG5wLnplcm9zKCgzLCAzKSwgZHR5cGU9aW50KQogICAgPj4+IGFbMSwgMV0gPSAxCiAgICA+Pj4gYQogICAgYXJyYXkoW1swLCAwLCAwXSwKICAgICAgICAgICBbMCwgMSwgMF0sCiAgICAgICAgICAgWzAsIDAsIDBdXSkKICAgID4+PiBhID0gbWEubWFza2VkX2VxdWFsKGEsIDEpCiAgICA+Pj4gYQogICAgbWFza2VkX2FycmF5KAogICAgICBkYXRhPVtbMCwgMCwgMF0sCiAgICAgICAg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bnVtcHkuY292YC4KCiAgICBCeSBkZWZhdWx0LCBtYXNrZWQgdmFsdWVzIGFyZSByZWNvZ25pemVkIGFzIHN1Y2guIElmIGB4YCBhbmQgYHlgIGhhdmUgdGhlCiAgICBzYW1lIHNoYXBlLCBhIGNvbW1vbiBtYXNrIGlzIGFsbG9jYXRlZDogaWYgYGB4W2ksal1gYCBpcyBtYXNrZWQsIHRoZW4KICAgIGBgeVtpLGpdYGAgd2lsbCBhbHNvIGJlIG1hc2tlZC4KICAgIFNldHRpbmcgYGFsbG93X21hc2tlZGAgdG8gRmFsc2Ugd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgdmFsdWVzIGFyZQogICAgbWlzc2luZyBpbiBlaXRoZXIgb2YgdGhlIGlucHV0IGFycmF5cy4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4IDogYXJyYXlfbGlrZQogICAgICAgIEEgMS1EIG9yIDItRCBhcnJheSBjb250YWluaW5nIG11bHRpcGxlIHZhcmlhYmxlcyBhbmQgb2JzZXJ2YXRpb25zLgogICAgICAgIEVhY2ggcm93IG9mIGB4YCByZXByZXNlbnRzIGEgdmFyaWFibGUsIGFuZCBlYWNoIGNvbHVtbiBhIHNpbmdsZQogICAgICAgIG9ic2VydmF0aW9uIG9mIGFsbCB0aG9zZSB2YXJpYWJsZXMuIEFsc28gc2VlIGByb3d2YXJgIGJlbG93LgogICAgeSA6IGFycmF5X2xpa2UsIG9wdGlvbmFsCiAgICAgICAgQW4gYWRkaXRpb25hbCBzZXQgb2YgdmFyaWFibGVzIGFuZCBvYnNlcnZhdGlvbnMuIGB5YCBoYXMgdGhlIHNhbWUKICAgICAgICBzaGFwZSBhcyBgeGAuCiAgICByb3d2YXIgOiBib29sLCBvcHRpb25hbAogICAgICAgIElmIGByb3d2YXJgIGlzIFRydWUgKGRlZmF1bHQpLCB0aGVuIGVhY2ggcm93IHJlcHJlc2VudHMgYQogICAgICAgIHZhcmlhYmxlLCB3aXRoIG9ic2VydmF0aW9ucyBpbiB0aGUgY29sdW1ucy4gT3RoZXJ3aXNlLCB0aGUgcmVsYXRpb25zaGlwCiAgICAgICAgaXMgdHJhbnNwb3NlZDogZWFjaCBjb2x1bW4gcmVwcmVzZW50cyBhIHZhcmlhYmxlLCB3aGlsZSB0aGUgcm93cwogICAgICAgIGNvbnRhaW4gb2JzZXJ2YXRpb25zLgogICAgYmlhcyA6IGJvb2wsIG9wdGlvbmFsCiAgICAgICAgRGVmYXVsdCBub3JtYWxpemF0aW9uIChGYWxzZSkgaXMgYnkgYGAoTi0xKWBgLCB3aGVyZSBgYE5gYCBpcyB0aGUKICAgICAgICBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zIGdpdmVuICh1bmJpYXNlZCBlc3RpbWF0ZSkuIElmIGBiaWFzYCBpcyBUcnVlLAogICAgICAgIHRoZW4gbm9ybWFsaXphdGlvbiBpcyBieSBgYE5gYC4gVGhpcyBrZXl3b3JkIGNhbiBiZSBvdmVycmlkZGVuIGJ5CiAgICAgICAgdGhlIGtleXdvcmQgYGBkZG9mYGAgaW4gbnVtcHkgdmVyc2lvbnMgPj0gMS41LgogICAgYWxsb3dfbWFza2VkIDogYm9vbCwgb3B0aW9uYWwKICAgICAgICBJZiBUcnVlLCBtYXNrZWQgdmFsdWVzIGFyZSBwcm9wYWdhdGVkIHBhaXItd2lzZTogaWYgYSB2YWx1ZSBpcyBtYXNrZWQKICAgICAgICBpbiBgeGAsIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlzIG1hc2tlZCBpbiBgeWAuCiAgICAgICAgSWYgRmFsc2UsIHJhaXNlcyBhIGBWYWx1ZUVycm9yYCBleGNlcHRpb24gd2hlbiBzb21lIHZhbHVlcyBhcmUgbWlzc2luZy4KICAgIGRkb2YgOiB7Tm9uZSwgaW50fSwgb3B0aW9uYWwKICAgICAgICBJZiBub3QgYGBOb25lYGAgbm9ybWFsaXphdGlvbiBpcyBieSBgYChOIC0gZGRvZilgYCwgd2hlcmUgYGBOYGAgaXMKICAgICAgICB0aGUgbnVtYmVyIG9mIG9ic2VydmF0aW9uczsgdGhpcyBvdmVycmlkZXMgdGhlIHZhbHVlIGltcGxpZWQgYnkKICAgICAgICBgYGJpYXNgYC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBOb25lYGAuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEu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c2V0IG9mIHZhcmlhYmxlcyBhbmQgb2JzZXJ2YXRpb25zLiBgeWAgaGFzIHRoZSBzYW1lCiAgICAgICAgc2hhcGUgYXMgYHhgLgogICAgcm93dmFyIDogYm9vbCwgb3B0aW9uYWwKICAgICAgICBJZiBgcm93dmFyYCBpcyBUcnVlIChkZWZhdWx0KSwgdGhlbiBlYWNoIHJvdyByZXByZXNlbnRzIGEKICAgICAgICB2YXJpYWJsZSwgd2l0aCBvYnNlcnZhdGlvbnMgaW4gdGhlIGNvbHVtbnMuIE90aGVyd2lzZSwgdGhlIHJlbGF0aW9uc2hpcAogICAgICAgIGlzIHRyYW5zcG9zZWQ6IGVhY2ggY29sdW1uIHJlcHJlc2VudHMgYSB2YXJpYWJsZSwgd2hpbGUgdGhlIHJvd3MKICAgICAgICBjb250YWluIG9ic2VydmF0aW9ucy4KICAgIGJpYXMgOiBfTm9WYWx1ZSwgb3B0aW9uYWwKICAgICAgICBIYXMgbm8gZWZmZWN0LCBkbyBub3QgdXNlLgoKICAgICAgICAuLiBkZXByZWNhdGVkOjogMS4xMC4wCiAgICBhbGxvd19tYXNrZWQgOiBib29sLCBvcHRpb25hbAogICAgICAgIElmIFRydWUsIG1hc2tlZCB2YWx1ZXMgYXJlIHByb3BhZ2F0ZWQgcGFpci13aXNlOiBpZiBhIHZhbHVlIGlzIG1hc2tlZAogICAgICAgIGluIGB4YCwgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgbWFza2VkIGluIGB5YC4KICAgICAgICBJZiBGYWxzZSwgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gIEJlY2F1c2UgYGJpYXNgIGlzIGRlcHJlY2F0ZWQsIHRoaXMKICAgICAgICBhcmd1bWVudCBuZWVkcyB0byBiZSB0cmVhdGVkIGFzIGtleXdvcmQgb25seSB0byBhdm9pZCBhIHdhcm5pbmcuCiAgICBkZG9mIDogX05vVmFsdWUsIG9wdGlvbmFsCiAgICAgICAgSGFzIG5vIGVmZmVjdCwgZG8gbm90IHVzZS4KCiAgICAgICAgLi4gZGVwcmVjYXRlZDo6IDEuMTAuMAoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgbnVtcHku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ZXJzaW9uIG9mIHRoZSBhcnJheSwgYW5kIHRoaXMKICAgICAgICBpcyB0aGUgc2FtZSBhcyBgZmxhdG5vdG1hc2tlZF9jb250aWd1b3VzYC4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBlbmRwb2ludHMgOiBsaXN0CiAgICAgICAgQSBsaXN0IG9mIHNsaWNlcyAoc3RhcnQgYW5kIGVuZCBpbmRleGVzKSBvZiB1bm1hc2tlZCBpbmRleGVzCiAgICAgICAgaW4gdGhlIGFycmF5LgoKICAgICAgICBJZiB0aGUgaW5wdXQgaXMgMmQgYW5kIGF4aXMgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IGlzIGEgbGlzdCBvZiBsaXN0cy4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIGZsYXRub3RtYXNrZWRfZWRnZXMsIGZsYXRub3RtYXNrZWRfY29udGlndW91cywgbm90bWFza2VkX2VkZ2VzCiAgICBjbHVtcF9tYXNrZWQsIGNsdW1wX3VubWFza2VkCgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBPbmx5IGFjY2VwdHMgMi1EIGFycmF5cyBhdCBtb3N0LgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGEgPSBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoKDMsIDQpKQogICAgPj4+IG1hc2sgPSBucC56ZXJvc19saWtlKGEpCiAgICA+Pj4gbWFza1sxOiwgOi0xXSA9IDE7IG1hc2tbMCwgMV0gPSAxOyBtYXNrWy0xLCAwXSA9IDAKICAgID4+PiBtYSA9IG5wLm1hLmFycmF5KGEsIG1hc2s9bWFzaykKICAgID4+PiBtYQogICAgbWFza2VkX2FycmF5KAogICAgICBkYXRhPVtbMCwgLS0sIDIsIDNdLAogICAgICAgICAgICBbLS0sIC0tLCAtLSwgN10sCiAgICAgICAgICAgIFs4LCAtLSwgLS0sIDExXV0sCiAgICAgIG1hc2s9W1tGYWxzZSwgIFRydWUsIEZhbHNlLCBGYWxzZV0sCiAgICAgICAgICAgIFsgVHJ1ZSwgIFRydWUsICBUcnVlLCBGYWxzZV0sCiAgICAgICAgICAgIFtGYWxz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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
core.cpython-311.pyc
311.18 KB
lrw-r--r--
2026-02-06 08:07:28
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
extras.cpython-311.pyc
80.15 KB
lrw-r--r--
2026-02-06 08:07:28
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
mrecords.cpython-311.pyc
37.05 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
setup.cpython-311.pyc
953 B
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
testutils.cpython-311.pyc
14.32 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
timer_comparison.cpython-311.pyc
27.36 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
1.68 KB
lrw-r--r--
2026-02-06 08:07:28
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).