REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 39.22 KB
Close
/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/sql/__pycache__/dml.cpython-311.pyc
Text
Base64
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Yy5maXJzdF9uYW1lICsgIiAiICsgdGFibGUuYy5sYXN0X25hbWUpLgogICAgICAgICAgICAgICAgbGFiZWwoJ2Z1bGxuYW1lJykpCgogICAgICAgIFVwb24gY29tcGlsYXRpb24sIGEgUkVUVVJOSU5HIGNsYXVzZSwgb3IgZGF0YWJhc2UgZXF1aXZhbGVudCwKICAgICAgICB3aWxsIGJlIHJlbmRlcmVkIHdpdGhpbiB0aGUgc3RhdGVtZW50LiAgIEZvciBJTlNFUlQgYW5kIFVQREFURSwKICAgICAgICB0aGUgdmFsdWVzIGFyZSB0aGUgbmV3bHkgaW5zZXJ0ZWQvdXBkYXRlZCB2YWx1ZXMuICBGb3IgREVMRVRFLAogICAgICAgIHRoZSB2YWx1ZXMgYXJlIHRob3NlIG9mIHRoZSByb3dzIHdoaWNoIHdlcmUgZGVsZXRlZC4KCiAgICAgICAgVXBvbiBleGVjdXRpb24sIHRoZSB2YWx1ZXMgb2YgdGhlIGNvbHVtbnMgdG8gYmUgcmV0dXJuZWQgYXJlIG1hZGUKICAgICAgICBhdmFpbGFibGUgdmlhIHRoZSByZXN1bHQgc2V0IGFuZCBjYW4gYmUgaXRlcmF0ZWQgdXNpbmcKICAgICAgICA6bWV0aDpgX2VuZ2luZS5SZXN1bHRQcm94eS5mZXRjaG9uZWAgYW5kIHNpbWlsYXIuCiAgICAgICAgRm9yIERCQVBJcyB3aGljaCBkbyBub3QKICAgICAgICBuYXRpdmVseSBzdXBwb3J0IHJldHVybmluZyB2YWx1ZXMgKGkuZS4gY3hfb3JhY2xlKSwgU1FMQWxjaGVteSB3aWxsCiAgICAgICAgYXBwcm94aW1hdGUgdGhpcyBiZWhhdmlvciBhdCB0aGUgcmVzdWx0IGxldmVsIHNvIHRoYXQgYSByZWFzb25hYmxlCiAgICAgICAgYW1vdW50IG9mIGJlaGF2aW9yYWwgbmV1dHJhbGl0eSBpcyBwcm92aWRlZC4KCiAgICAgICAgTm90ZSB0aGF0IG5vdCBhbGwgZGF0YWJhc2VzL0RCQVBJcwogICAgICAgIHN1cHBvcnQgUkVUVVJOSU5HLiAgIEZvciB0aG9zZSBiYWNrZW5kcyB3aXRoIG5vIHN1cHBvcnQsCiAgICAgICAgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB1cG9uIGNvbXBpbGF0aW9uIGFuZC9vciBleGVjdXRpb24uCiAgICAgICAgRm9yIHRob3NlIHdobyBkbyBzdXBwb3J0IGl0LCB0aGUgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgYmFja2VuZHMKICAgICAgICB2YXJpZXMgZ3JlYXRseSwgaW5jbHVkaW5nIHJlc3RyaWN0aW9ucyBvbiBleGVjdXRlbWFueSgpCiAgICAgICAgYW5kIG90aGVyIHN0YXRlbWVudHMgd2hpY2ggcmV0dXJuIG11bHRpcGxlIHJvd3MuIFBsZWFzZQogICAgICAgIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gbm90ZXMgZm9yIHRoZSBkYXRhYmFzZSBpbiB1c2UgaW4KICAgICAgICBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGF2YWlsYWJpbGl0eSBvZiBSRVRVUk5JTkcuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgIDptZXRoOmAuVmFsdWVzQmFzZS5yZXR1cm5fZGVmYXVsdHNgIC0gYW4gYWx0ZXJuYXRpdmUgbWV0aG9kIHRhaWxvcmVkCiAgICAgICAgICB0b3dhcmRzIGVmZmljaWVudCBmZXRjaGluZyBvZiBzZXJ2ZXItc2lkZSBkZWZhdWx0cyBhbmQgdHJpZ2dlcnMKICAgICAgICAgIGZvciBzaW5nbGUtcm93IElOU0VSVHMgb3IgVVBEQVRFcy4KCgogICAgICAgIHo5cmV0dXJuX2RlZmF1bHRzKCkgaXMgYWxyZWFkeSBjb25maWd1cmVkIG9uIHRoaXMgc3RhdGVtZW50eohUaGUgcmV0dXJuaW5nKCkgbWV0aG9kIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG11bHRpcGxlIGFkZGl0aXZlIGNhbGxzLiAgVGhlIGV4aXN0aW5nIFJFVFVSTklORyBjbGF1c2UgYmVpbmcgcmVwbGFjZWQgYnkgbmV3IGNvbHVtbnMuTikG2hBfcmV0dXJuX2RlZmF1bHRzchMAAAByNgAAANoKX3JldHVybmluZ3IDAAAA2gR3YXJuqQJyKwAAANoEY29sc3MCAAAAICByIQAAANoJcmV0dXJuaW5nehRVcGRhdGVCYXNlLnJldHVybmluZ2wAAABzWgAAAIAA8GwBAAwQ1Asg8AADCQ7dEhXUEinYEEvxAwITDvQAAhMO8AACDQ7wBgAMEIw/8AAFCQ7dDBCMSfACAhEr8QMEDQ70AAQNDvAABA0O8AoAGx+IBIwPiA+ID3IjAAAA2gEqYwQAAAAAAAAAAAAAAAQAAAADAAAA814AAACXAHwCgAd8AGoAAAAAAAAAAAB9AnwAagEAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AnwDZgJ8AWkBpgEAAKsBAAAAAAAAAAB8AF8BAAAAAAAAAABkAVMAKQJhEwUAAEFkZCBhIHRhYmxlIGhpbnQgZm9yIGEgc2luZ2xlIHRhYmxlIHRvIHRoaXMKICAgICAgICBJTlNFUlQvVVBEQVRFL0RFTEVURSBzdGF0ZW1lbnQuCgogICAgICAgIC4uIG5vdGU6OgoKICAgICAgICAgOm1ldGg6YC5VcGRhdGVCYXNlLndpdGhfaGludGAgY3VycmVudGx5IGFwcGxpZXMgb25seSB0bwogICAgICAgICBNaWNyb3NvZnQgU1FMIFNlcnZlci4gIEZvciBNeVNRTCBJTlNFUlQvVVBEQVRFL0RFTEVURSBoaW50cywgdXNlCiAgICAgICAgIDptZXRoOmAuVXBkYXRlQmFzZS5wcmVmaXhfd2l0aGAuCgogICAgICAgIFRoZSB0ZXh0IG9mIHRoZSBoaW50IGlzIHJlbmRlcmVkIGluIHRoZSBhcHByb3ByaWF0ZQogICAgICAgIGxvY2F0aW9uIGZvciB0aGUgZGF0YWJhc2UgYmFja2VuZCBpbiB1c2UsIHJlbGF0aXZlCiAgICAgICAgdG8gdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgdGhhdCBpcyB0aGUgc3ViamVjdCBvZiB0aGlzCiAgICAgICAgc3RhdGVtZW50LCBvciBvcHRpb25hbGx5IHRvIHRoYXQgb2YgdGhlIGdpdmVuCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBwYXNzZWQgYXMgdGhlIGBgc2VsZWN0YWJsZWBgIGFyZ3VtZW50LgoKICAgICAgICBUaGUgYGBkaWFsZWN0X25hbWVgYCBvcHRpb24gd2lsbCBsaW1pdCB0aGUgcmVuZGVyaW5nIG9mIGEgcGFydGljdWxhcgogICAgICAgIGhpbnQgdG8gYSBwYXJ0aWN1bGFyIGJhY2tlbmQuIFN1Y2ggYXMsIHRvIGFkZCBhIGhpbnQKICAgICAgICB0aGF0IG9ubHkgdGFrZXMgZWZmZWN0IGZvciBTUUwgU2VydmVyOjoKCiAgICAgICAgICAgIG15dGFibGUuaW5zZXJ0KCkud2l0aF9oaW50KCJXSVRIIChQQUdMT0NLKSIsIGRpYWxlY3RfbmFtZT0ibXNzcWwiKQoKICAgICAgICA6cGFyYW0gdGV4dDogVGV4dCBvZiB0aGUgaGludC4KICAgICAgICA6cGFyYW0gc2VsZWN0YWJsZTogb3B0aW9uYWwgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCB0aGF0IHNwZWNpZmllcwogICAgICAgICBhbiBlbGVtZW50IG9mIHRoZSBGUk9NIGNsYXVzZSB3aXRoaW4gYW4gVVBEQVRFIG9yIERFTEVURQogICAgICAgICB0byBiZSB0aGUgc3ViamVjdCBvZiB0aGUgaGludCAtIGFwcGxpZXMgb25seSB0byBjZXJ0YWluIGJhY2tlbmRzLgogICAgICAgIDpwYXJhbSBkaWFsZWN0X25hbWU6IGRlZmF1bHRzIHRvIGBgKmBgLCBpZiBzcGVjaWZpZWQgYXMgdGhlIG5hbWUKICAgICAgICAgb2YgYSBwYXJ0aWN1bGFyIGRpYWxlY3QsIHdpbGwgYXBwbHkgdGhlc2UgaGludHMgb25seSB3aGVuCiAgICAgICAgIHRoYXQgZGlhbGVjdCBpcyBpbiB1c2UuCgogICAgICAgIE4pA3IpAAAA2gZfaGludHPaBXVuaW9uKQRyKwAAANoEdGV4dNoKc2VsZWN0YWJsZdoMZGlhbGVjdF9uYW1lcwQAAAAgICAgciEAAADaCXdpdGhfaGludHoUVXBkYXRlQmFzZS53aXRoX2hpbnSuAAAAczcAAACAAPBAAQAMFtALHdgZHZwaiErgFhqUa9cWJ9IWJ6gqsGzQKUPAVNAoStEWS9QWS4gEjAuIC4gLciMAAAApAk5ySgAAACkX2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19f2g5fX3Zpc2l0X25hbWVf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Y2FsIGNhc2Ugb2YgYSBzaW5nbGUKICAgICAgICBkaWN0aW9uYXJ5IG9mIHBhcmFtZXRlcnMsIHRoZSBuZXdseSBwYXNzZWQga2V5cyB3aWxsIHJlcGxhY2UKICAgICAgICB0aGUgc2FtZSBrZXlzIGluIHRoZSBwcmV2aW91cyBjb25zdHJ1Y3QuICBJbiB0aGUgY2FzZSBvZiBhIGxpc3QtYmFzZWQKICAgICAgICAibXVsdGlwbGUgdmFsdWVzIiBjb25zdHJ1Y3QsIGVhY2ggbmV3IGxpc3Qgb2YgdmFsdWVzIGlzIGV4dGVuZGVkCiAgICAgICAgb250byB0aGUgZXhpc3RpbmcgbGlzdCBvZiB2YWx1ZXMuCgogICAgICAgIDpwYXJhbSBcKiprd2FyZ3M6IGtleSB2YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgdGhlIHN0cmluZyBrZXkKICAgICAgICAgIG9mIGEgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAKICAgICAgICAgIG1hcHBlZCB0byB0aGUgdmFsdWUgdG8gYmUgcmVuZGVyZWQgaW50byB0aGUKICAgICAgICAgIFZBTFVFUyBvciBTRVQgY2xhdXNlOjoKCiAgICAgICAgICAgICAgICB1c2Vycy5pbnNlcnQoKS52YWx1ZXMobmFtZT0ic29tZSBuYW1lIikKCiAgICAgICAgICAgICAgICB1c2Vycy51cGRhdGUoKS53aGVyZSh1c2Vycy5jLmlkPT01KS52YWx1ZXMobmFtZT0ic29tZSBuYW1lIikKCiAgICAgICAgOnBhcmFtIFwqYXJnczogQXMgYW4gYWx0ZXJuYXRpdmUgdG8gcGFzc2luZyBrZXkvdmFsdWUgcGFyYW1ldGVycywKICAgICAgICAgYSBkaWN0aW9uYXJ5LCB0dXBsZSwgb3IgbGlzdCBvZiBkaWN0aW9uYXJpZXMgb3IgdHVwbGVzIGNhbiBiZSBwYXNzZWQKICAgICAgICAgYXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCBpbiBvcmRlciB0byBmb3JtIHRoZSBWQUxVRVMgb3IKICAgICAgICAgU0VUIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LiAgVGhlIGZvcm1zIHRoYXQgYXJlIGFjY2VwdGVkIHZhcnkKICAgICAgICAgYmFzZWQgb24gd2hldGhlciB0aGlzIGlzIGFuIDpjbGFzczpgX2V4cHJlc3Npb24uSW5zZXJ0YCBvciBhbgogICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLlVwZGF0ZWAgY29uc3RydWN0LgoKICAgICAgICAgRm9yIGVpdGhlciBhbiA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgb3IKICAgICAgICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5VcGRhdGVgCiAgICAgICAgIGNvbnN0cnVjdCwgYSBzaW5nbGUgZGljdGlvbmFyeSBjYW4gYmUgcGFzc2VkLCB3aGljaCB3b3JrcyB0aGUgc2FtZSBhcwogICAgICAgICB0aGF0IG9mIHRoZSBrd2FyZ3MgZm9ybTo6CgogICAgICAgICAgICB1c2Vycy5pbnNlcnQoKS52YWx1ZXMoeyJuYW1lIjogInNvbWUgbmFtZSJ9KQoKICAgICAgICAgICAgdXNlcnMudXBkYXRlKCkudmFsdWVzKHsibmFtZSI6ICJzb21lIG5ldyBuYW1lIn0pCgogICAgICAgICBBbHNvIGZvciBlaXRoZXIgZm9ybSBidXQgbW9yZSB0eXBpY2FsbHkgZm9yIHRoZQogICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgY29uc3RydWN0LCBhIHR1cGxlIHRoYXQgY29udGFpbnMgYW4KICAgICAgICAgZW50cnkgZm9yIGV2ZXJ5IGNvbHVtbiBpbiB0aGUgdGFibGUgaXMgYWxzbyBhY2NlcHRlZDo6CgogICAgICAgICAgICB1c2Vycy5pbnNlcnQoKS52YWx1ZXMoKDUsICJzb21lIG5hbWUiKSkKCiAgICAgICAgIFRoZSA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgY29uc3RydWN0IGFsc28gc3VwcG9ydHMgYmVpbmcKICAgICAgICAgcGFzc2VkIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgb3IgZnVsbC10YWJsZS10dXBsZXMsIHdoaWNoIG9uIHRoZQogICAgICAgICBzZXJ2ZXIgd2lsbCByZW5kZXIgdGhlIGxlc3MgY29tbW9uIFNRTCBzeW50YXggb2YgIm11bHRpcGxlIHZhbHVlcyIgLQogICAgICAgICB0aGlzIHN5bnRheCBpcyBzdXBwb3J0ZWQgb24gYmFja2VuZHMgc3VjaCBhcyBTUUxpdGUsIFBvc3RncmVTUUwsCiAgICAgICAgIE15U1FMLCBidXQgbm90IG5lY2Vzc2FyaWx5IG90aGVyczo6CgogICAgICAgICAgICB1c2Vycy5pbnNlcnQoKS52YWx1ZXMoWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibmFtZSI6ICJzb21lIG5hbWUifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAic29tZSBvdGhlciBuYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJuYW1lIjogInlldCBhbm90aGVyIG5hbWUifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCgogICAgICAgICBUaGUgYWJvdmUgZm9ybSB3b3VsZCByZW5kZXIgYSBtdWx0aXBsZSBWQUxVRVMgc3RhdGVtZW50IHNpbWlsYXIgdG86OgoKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHVzZXJzIChuYW1lKSBWQUxVRVMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOm5hbWVfMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpuYW1lXzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6bmFtZV8zKQoKICAgICAgICAgSXQgaXMgZXNzZW50aWFsIHRvIG5vdGUgdGhhdCAqKnBhc3NpbmcgbXVsdGlwbGUgdmFsdWVzIGlzCiAgICAgICAgIE5PVCB0aGUgc2FtZSBhcyB1c2luZyB0cmFkaXRpb25hbCBleGVjdXRlbWFueSgpIGZvcm0qKi4gIFRoZSBhYm92ZQogICAgICAgICBzeW50YXggaXMgYSAqKnNwZWNpYWwqKiBzeW50YXggbm90IHR5cGljYWxseSB1c2VkLiAgVG8gZW1pdCBhbgogICAgICAgICBJTlNFUlQgc3RhdGVtZW50IGFnYWluc3QgbXVsdGlwbGUgcm93cywgdGhlIG5vcm1hbCBtZXRob2QgaXMKICAgICAgICAgdG8gcGFzcyBhIG11bHRpcGxlIHZhbHVlcyBsaXN0IHRvIHRoZQogICAgICAgICA6bWV0aDpgX2VuZ2luZS5Db25uZWN0aW9uLmV4ZWN1dGVgCiAgICAgICAgIG1ldGhvZCwgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IGFsbCBkYXRhYmFzZSBiYWNrZW5kcyBhbmQgaXMgZ2VuZXJhbGx5CiAgICAgICAgIG1vcmUgZWZmaWNpZW50IGZvciBhIHZlcnkgbGFyZ2UgbnVtYmVyIG9mIHBhcmFtZXRlcnMuCgogICAgICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgICAgOnJlZjpgZXhlY3V0ZV9tdWx0aXBsZWAgLSBhbiBpbnRyb2R1Y3Rpb24gdG8KICAgICAgICAgICAgICAgdGhlIHRyYWRpdGlvbmFsIENvcmUgbWV0aG9kIG9mIG11bHRpcGxlIHBhcmFtZXRlciBzZXQKICAgICAgICAgICAgICAgaW52b2NhdGlvbiBmb3IgSU5TRVJUcyBhbmQgb3RoZXIgc3RhdGVtZW50cy4KCiAgICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjAuMCBhbiBJTlNFUlQgdGhhdCB1c2VzIGEgbXVsdGlwbGUtVkFMVUVTCiAgICAgICAgICAgICAgY2xhdXNlLCBldmVuIGEgbGlzdCBvZiBsZW5ndGggb25lLAogICAgICAgICAgICAgIGltcGxpZXMgdGhhdCB0aGUgOnBhcmFtcmVmOmBfZXhwcmVzc2lvbi5JbnNlcnQuaW5saW5lYAogICAgICAgICAgICAgIGZsYWcgaXMgc2V0IHRvCiAgICAgICAgICAgICAgVHJ1ZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBzdGF0ZW1lbnQgd2lsbCBub3QgYXR0ZW1wdCB0byBmZXRjaAogICAgICAgICAgICAgIHRoZSAibGFzdCBpbnNlcnRlZCBwcmltYXJ5IGtleSIgb3Igb3RoZXIgZGVmYXVsdHMuICBUaGUKICAgICAgICAgICAgICBzdGF0ZW1lbnQgZGVhbHMgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHJvd3MsIHNvIHRoZQogICAgICAgICAgICAgIDphdHRyOmBfZW5naW5lLlJlc3VsdFByb3h5Lmluc2VydGVkX3ByaW1hcnlfa2V5YAogICAgICAgICAgICAgIGFjY2Vzc29yIGRvZXMgbm90CiAgICAgICAgICAgICAgYXBwbHkuCgogICAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4wLjAgQSBtdWx0aXBsZS1WQUxVRVMgSU5TRVJUIG5vdyBzdXBwb3J0cwogICAgICAgICAgICAgIGNvbHVtbnMgd2l0aCBQeXRob24gc2lkZSBkZWZhdWx0IHZhbHVlcyBhbmQgY2FsbGFibGVzIGluIHRoZQogICAgICAgICAgICAgIHNhbWUgd2F5IGFzIHRoYXQgb2YgYW4gImV4ZWN1dGVtYW55IiBzdHlsZSBvZiBpbnZvY2F0aW9uOyB0aGUKICAgICAgICAgICAgICBjYWxsYWJsZSBpcyBpbnZva2VkIGZvciBlYWNoIHJvdy4gICBTZWUgOnJlZjpgYnVnXzMyODhgCiAgICAgICAgICAgICAgZm9yIG90aGVyIGRldGFpbHMuCgogICAgICAgICBUaGUgOmNsYXNzOmBfZXhwcmVzc2lvbi5VcGRhdGVgCiAgICAgICAgIGNvbnN0cnVjdCBzdXBwb3J0cyBhIHNwZWNpYWwgZm9ybSB3aGljaCBpcyBhCiAgICAgICAgIGxpc3Qgb2YgMi10dXBsZXMsIHdoaWNoIHdoZW4gcHJvdmlkZWQgbXVzdCBiZSBwYXNzZWQgaW4gY29uanVuY3Rpb24KICAgICAgICAgd2l0aCB0aGUKICAgICAgICAgOnBhcmFtcmVmOmBfZXhwcmVzc2lvbi51cGRhdGUucHJlc2VydmVfcGFyYW1ldGVyX29yZGVyYAogICAgICAgICBwYXJhbWV0ZXIuCiAgICAgICAgIFRoaXMgZm9ybSBjYXVzZXMgdGhlIFVQREFURSBzdGF0ZW1lbnQgdG8gcmVuZGVyIHRoZSBTRVQgY2xhdXNlcwogICAgICAgICB1c2luZyB0aGUgb3JkZXIgb2YgcGFyYW1ldGVycyBnaXZlbiB0bwogICAgICAgICA6bWV0aDpgX2V4cHJlc3Npb24uVXBkYXRlLnZhbHVlc2AsIHJhdGhlcgogICAgICAgICB0aGFuIHRoZSBvcmRlcmluZyBvZiBjb2x1bW5zIGdpdmVuIGluIHRoZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLgoKICAgICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjAuMTAgLSBhZGRlZCBzdXBwb3J0IGZvciBwYXJhbWV0ZXItb3JkZXJlZAogICAgICAgICAgICAgIFVQREFURSBzdGF0ZW1lbnRzIHZpYSB0aGUKICAgICAgICAgICAgICA6cGFyYW1yZWY6YF9leHByZXNzaW9uLnVwZGF0ZS5wcmVzZXJ2ZV9wYXJhbWV0ZXJfb3JkZXJgCiAgICAgICAgICAgICAgZmxhZy4KCiAgICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgIDpyZWY6YHVwZGF0ZXNfb3JkZXJfcGFyYW1ldGVyc2AgLSBmdWxsIGV4YW1wbGUgb2YgdGhlCiAgICAgICAgICAgICAgOnBhcmFtcmVmOmBfZXhwcmVzc2lvbi51cGRhdGUucHJlc2VydmVfcGFyYW1ldGVyX29yZGVyYAogICAgICAgICAgICAgIGZsYWcKCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBpbnNlcnRzX2FuZF91cGRhdGVzYCAtIFNRTCBFeHByZXNzaW9uCiAgICAgICAgICAgIExhbmd1YWdlIFR1dG9yaWFsCgogICAgICAgICAgICA6ZnVuYzpgX2V4cHJlc3Npb24uaW5zZXJ0YCAtIHByb2R1Y2UgYW4gYGBJTlNFUlRgYCBzdGF0ZW1lbnQKCiAgICAgICAgICAgIDpmdW5jOmBfZXhwcmVzc2lvbi51cGRhdGVgIC0gcHJvZHVjZSBhbiBgYFVQREFURWBgIHN0YXRlbWVudAoKICAgICAgICBOeixUaGlzIGNvbnN0cnVjdCBhbHJlYWR5IGluc2VydHMgZnJvbSBhIFNFTEVDVHozVGhpcyBjb25zdHJ1Y3QgYWxyZWFkeSBoYXMgbXVsdGlwbGUgcGFyYW1ldGVyIHNldHMucgIAAAB6V09ubHkgYSBzaW5nbGUgZGljdGlvbmFyeS90dXBsZSBvciBsaXN0IG9mIGRpY3Rpb25hcmllcy90dXBsZXMgaXMgYWNjZXB0ZWQgcG9zaXRpb25hbGx5LnItAAAAekRDYW4ndCBtaXggc2luZ2xlLXZhbHVlcyBhbmQgbXVsdGlwbGUgdmFsdWVzIGZvcm1hdHMgaW4gb25lIHN0YXRlbWVudHo8Q2FuJ3QgcGFzcyBrd2FyZ3MgYW5kIG11bHRpcGxlIHBhcmFtZXRlciBzZXRzIHNpbXVsdGFuZW91c2x5KQzaBnNlbGVjdHITAAAAcjYAAAByYAAAANoDbGVu2g1Bcmd1bWVudEVycm9ycjcAAAByOAAAAHIlAAAA2gZleHRlbmTaBGNvcHnaBnVwZGF0ZSkFcisAAADaBGFyZ3PaBmt3YXJnc9oBdnIqAAAAcwUAAAAgICAgIHIhAAAAcmIAAAB6EVZhbHVlc0Jhc2UudmFsdWVz6AAAAHMAAgAAgADwTAQADBCMO9ALIt0SFdQSKdgQPvEDAhMO9AACEw7wAAINDvAGAAwQ1Asl8AADCQ6oJvAAAwkO3RIV1BIp2BBF8QMCEw70AAITDvAAAg0O8AgADBDwAAgJE90PEpA0iXmMeZgxin2Ifd0WGdQWJ/ACARVEAfEDAxcS9AADFxLwAAMREvAIABEVkFGUB4hBiEHgEBKIQeALD4w/0Asi8AgAERXXECfSECeoAdEQKtQQKvEHAw0O2BAUlA/YEBTUECrQECrwBgAQFNQPKfAAEg0q3SImoHSkf9EiN9QiN5AElA/YMDTXMEfSMEfIAdEwStQwStEQLZABkDTUEy3YFxvUFzHwAAQRFt0aHdQaK/ACARkz8QMDGxb0AAMbFvAAAxUW8AoAERWUD9cQJtIQJqBx0RAp1BAp0BAp0BAp4CImpC/XIjbSIjbRIjjUIjiQBJQP2DA01zBH0jBHyAHRMErUMErREC2QAZA01BMt2BMX1BMt8AAEERbdGh3UGivwAgEZM/EDAxsW9AADGxbwAAMVFvAIABEVlA/XECbSECagcdEQKdQQKdAQKeALEfAABwkv2A8T1A8p8AAGDS/dFhnUFifwAgEVJfEDAxcS9AADFxLwAAMREvAKABEVlA/XECbSECagdtEQLtQQLtAQLtAQLtAQLvAPBwkv8AAHCS9yIwAAAGMBAAAAAAAAAAAAAAADAAAABwAAAPNOAAAAlwB8AGoAAAAAAAAAAAByFHQDAAAAAAAAAAAAAGoCAAAAAAAAAABkAaYBAACrAQAAAAAAAAAAggF8AXABZAJ8AF8DAAAAAAAAAABkA1MAKQRh/QsAAE1ha2UgdXNlIG9mIGEgOnRlcm06YFJFVFVSTklOR2AgY2xhdXNlIGZvciB0aGUgcHVycG9zZQogICAgICAgIG9mIGZldGNoaW5nIHNlcnZlci1zaWRlIGV4cHJlc3Npb25zIGFuZCBkZWZhdWx0cy4KCiAgICAgICAgRS5nLjo6CgogICAgICAgICAgICBzdG10ID0gdGFibGUuaW5zZXJ0KCkudmFsdWVzKGRhdGE9J25ld2RhdGEnKS5yZXR1cm5fZGVmYXVsdHMoKQoKICAgICAgICAgICAgcmVzdWx0ID0gY29ubmVjdGlvbi5leGVjdXRlKHN0bXQpCgogICAgICAgICAgICBzZXJ2ZXJfY3JlYXRlZF9hdCA9IHJlc3VsdC5yZXR1cm5lZF9kZWZhdWx0c1snY3JlYXRlZF9hdCddCgogICAgICAgIFdoZW4gdXNlZCBhZ2FpbnN0IGEgYmFja2VuZCB0aGF0IHN1cHBvcnRzIFJFVFVSTklORywgYWxsIGNvbHVtbgogICAgICAgIHZhbHVlcyBnZW5lcmF0ZWQgYnkgU1FMIGV4cHJlc3Npb24gb3Igc2VydmVyLXNpZGUtZGVmYXVsdCB3aWxsIGJlCiAgICAgICAgYWRkZWQgdG8gYW55IGV4aXN0aW5nIFJFVFVSTklORyBjbGF1c2UsIHByb3ZpZGVkIHRoYXQKICAgICAgICA6bWV0aDpgLlVwZGF0ZUJhc2UucmV0dXJuaW5nYCBpcyBub3QgdXNlZCBzaW11bHRhbmVvdXNseS4gIFRoZSBjb2x1bW4KICAgICAgICB2YWx1ZXMgd2lsbCB0aGVuIGJlIGF2YWlsYWJsZSBvbiB0aGUgcmVzdWx0IHVzaW5nIHRoZQogICAgICAgIDphdHRyOmBfZW5naW5lLlJlc3VsdFByb3h5LnJldHVybmVkX2RlZmF1bHRzYCBhY2Nlc3NvciBhcwogICAgICAgIGEgZGljdGlvbmFyeSwKICAgICAgICByZWZlcnJpbmcgdG8gdmFsdWVzIGtleWVkIHRvIHRoZSA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgIG9iamVjdCBhcyB3ZWxsIGFzCiAgICAgICAgaXRzIGBgLmtleWBgLgoKICAgICAgICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YC5VcGRhdGVCYXNlLnJldHVybmluZ2AgaW4gdGhlc2Ugd2F5czoKCiAgICAgICAgMS4gOm1ldGg6YC5WYWx1ZXNCYXNlLnJldHVybl9kZWZhdWx0c2AgaXMgb25seSBpbnRlbmRlZCBmb3IgdXNlIHdpdGgKICAgICAgICAgICBhbiBJTlNFUlQgb3IgYW4gVVBEQVRFIHN0YXRlbWVudCB0aGF0IG1hdGNoZXMgZXhhY3RseSBvbmUgcm93LgogICAgICAgICAgIFdoaWxlIHRoZSBSRVRVUk5JTkcgY29uc3RydWN0IGluIHRoZSBnZW5lcmFsIHNlbnNlIHN1cHBvcnRzCiAgICAgICAgICAgbXVsdGlwbGUgcm93cyBmb3IgYSBtdWx0aS1yb3cgVVBEQVRFIG9yIERFTEVURSBzdGF0ZW1lbnQsIG9yIGZvcgogICAgICAgICAgIHNwZWNpYWwgY2FzZXMgb2YgSU5TRVJUIHRoYXQgcmV0dXJuIG11bHRpcGxlIHJvd3MgKGUuZy4gSU5TRVJUIGZyb20KICAgICAgICAgICBTRUxFQ1QsIG11bHRpLXZhbHVlZCBWQUxVRVMgY2xhdXNlKSwKICAgICAgICAgICA6bWV0aDpgLlZhbHVlc0Jhc2UucmV0dXJuX2RlZmF1bHRzYCBpcyBpbnRlbmRlZCBvbmx5IGZvciBhbgogICAgICAgICAgICJPUk0tc3R5bGUiIHNpbmdsZS1yb3cgSU5TRVJUL1VQREFURSBzdGF0ZW1lbnQuICBUaGUgcm93IHJldHVybmVkCiAgICAgICAgICAgYnkgdGhlIHN0YXRlbWVudCBpcyBhbHNvIGNvbnN1bWVkIGltcGxpY2l0bHkgd2hlbgogICAgICAgICAgIDptZXRoOmAuVmFsdWVzQmFzZS5yZXR1cm5fZGVmYXVsdHNgIGlzIHVzZWQuICBCeSBjb250cmFzdCwKICAgICAgICAgICA6bWV0aDpgLlVwZGF0ZUJhc2UucmV0dXJuaW5nYCBsZWF2ZXMgdGhlIFJFVFVSTklORyByZXN1bHQtc2V0CiAgICAgICAgICAgaW50YWN0IHdpdGggYSBjb2xsZWN0aW9uIG9mIGFueSBudW1iZXIgb2Ygcm93cy4KCiAgICAgICAgMi4gSXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBleGlzdGluZyBsb2dpYyB0byBmZXRjaCBhdXRvLWdlbmVyYXRlZAogICAgICAgICAgIHByaW1hcnkga2V5IHZhbHVlcywgYWxzbyBrbm93biBhcyAiaW1wbGljaXQgcmV0dXJuaW5nIi4gIEJhY2tlbmRzCiAgICAgICAgICAgdGhhdCBzdXBwb3J0IFJFVFVSTklORyB3aWxsIGF1dG9tYXRpY2FsbHkgbWFrZSB1c2Ugb2YgUkVUVVJOSU5HIGluCiAgICAgICAgICAgb3JkZXIgdG8gZmV0Y2ggdGhlIHZhbHVlIG9mIG5ld2x5IGdlbmVyYXRlZCBwcmltYXJ5IGtleXM7IHdoaWxlIHRoZQogICAgICAgICAgIDptZXRoOmAuVXBkYXRlQmFzZS5yZXR1cm5pbmdgIG1ldGhvZCBjaXJjdW12ZW50cyB0aGlzIGJlaGF2aW9yLAogICAgICAgICAgIDptZXRoOmAuVmFsdWVzQmFzZS5yZXR1cm5fZGVmYXVsdHNgIGxlYXZlcyBpdCBpbnRhY3QuCgogICAgICAgIDMuIEl0IGNhbiBiZSBjYWxsZWQgYWdhaW5zdCBhbnkgYmFja2VuZC4gIEJhY2tlbmRzIHRoYXQgZG9uJ3Qgc3VwcG9ydAogICAgICAgICAgIFJFVFVSTklORyB3aWxsIHNraXAgdGhlIHVzYWdlIG9mIHRoZSBmZWF0dXJlLCByYXRoZXIgdGhhbiByYWlzaW5nCiAgICAgICAgICAgYW4gZXhjZXB0aW9uLiAgVGhlIHJldHVybiB2YWx1ZSBvZgogICAgICAgICAgIDphdHRyOmBfZW5naW5lLlJlc3VsdFByb3h5LnJldHVybmVkX2RlZmF1bHRzYCB3aWxsIGJlIGBgTm9uZWBgCgogICAgICAgIDptZXRoOmAuVmFsdWVzQmFzZS5yZXR1cm5fZGVmYXVsdHNgIGlzIHVzZWQgYnkgdGhlIE9STSB0byBwcm92aWRlCiAgICAgICAgYW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIGZvciB0aGUgYGBlYWdlcl9kZWZhdWx0c2BgIGZlYXR1cmUgb2YKICAgICAgICA6ZnVuYzpgLm1hcHBlcmAuCgogICAgICAgIDpwYXJhbSBjb2xzOiBvcHRpb25hbCBsaXN0IG9mIGNvbHVtbiBrZXkgbmFtZXMgb3IKICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAKICAgICAgICAgb2JqZWN0cy4gIElmIG9taXR0ZWQsIGFsbCBjb2x1bW4gZXhwcmVzc2lvbnMgZXZhbHVhdGVkIG9uIHRoZSBzZXJ2ZXIKICAgICAgICAgYXJlIGFkZGVkIHRvIHRoZSByZXR1cm5pbmcgbGlzdC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC45LjAKCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6bWV0aDpgLlVwZGF0ZUJhc2UucmV0dXJuaW5nYAoKICAgICAgICAgICAgOmF0dHI6YF9lbmdpbmUuUmVzdWx0UHJveHkucmV0dXJuZWRfZGVmYXVsdHNgCgogICAgICAgIHoxUkVUVVJOSU5HIGlzIGFscmVhZHkgY29uZmlndXJlZCBvbiB0aGlzIHN0YXRlbWVudFROKQRyRQAAAHITAAAAcjYAAAByRAAAAHJHAAAAcwIAAAAgIHIhAAAA2g9yZXR1cm5fZGVmYXVsdHN6GlZhbHVlc0Jhc2UucmV0dXJuX2RlZmF1bHRzpAEAAHM7AAAAgADwSgIADBCMP/AAAwkO3RIV1BIp2BBD8QMCEw70AAITDvAAAg0O8AYAISWgDKgEiATUCB3QCB3QCB1yIwAAACkOclIAAAByUwAAAHJUAAAAclUAAAByVgAAAHI1AAAAcmAAAAByMgAAAHJmAAAA2hNfcG9zdF92YWx1ZXNfY2xhdXNlcmQAAAByBQAAAHJiAAAAcnAAAAByGAAAAHIjAAAAciEAAAByXQAAAHJdAAAA1AAAAHOQAAAAgACAAIAAgACAAPACAQUl8AABBSXwBgAWI4BO4CEm0AQe2Bwh0AQZ2CAl0AQd2A0RgEbYGh7QBBfwBAYFK/AABgUr8AAGBSvwEAAGEfACeQIFL/AAeQIFL/EDAAYRhFvwAnkCBS/wdgUABhHwAkgBBS3wAEgBBS3xAwAGEYRb8AJIAQUt8ABIAQUt8ABIAQUtciMAAAByXQAAAGMAAAAAAAAAAAAAAAADAAAAAAAAAPNWAAAAlwBlAFoBZABaAmQBWgNkAloEZANaBQkACQAJAAkACQAJAGQKZAaEAVoGZAeEAFoHZQhkC2QIhAGmAAAAqwAAAAAAAAAAAFoJZQpmAWQJhAFaC2QEUwApDNoGSW5zZXJ0etJSZXByZXNlbnQgYW4gSU5TRVJUIGNvbnN0cnVjdC4KCiAgICBUaGUgOmNsYXNzOmBfZXhwcmVzc2lvbi5JbnNlcnRgIG9iamVjdCBpcyBjcmVhdGVkIHVzaW5nIHRoZQogICAgOmZ1bmM6YF9leHByZXNzaW9uLmluc2VydCgpYCBmdW5jdGlvbi4KCiAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgOnJlZjpgY29yZXR1dG9yaWFsX2luc2VydF9leHByZXNzaW9uc2AKCiAgICDaBmluc2VydFRORmMIAAAAAAAAAAAAAAAGAAAACwAAAPPMAAAAlwB0AAAAAAAAAAAAAACgAQAAAAAAAAAAAAAAAAAAAAAAAAAAfAB8AXwCfAWmBAAAqwQAAAAAAAAAAAEAfAR8AF8CAAAAAAAAAABkAXgBfABfAwAAAAAAAAAAfABfBAAAAAAAAAAAZAJ8AF8FAAAAAAAAAAB8A3wAXwYAAAAAAAAAAHwGfABfBwAAAAAAAAAAfACgCAAAAAAAAAAAAAAAAAAAAAAAAAAAfAimAQAAqwEAAAAAAAAAAAEAfAd8AF8JAAAAAAAAAABkAVMAKQNhpgcAAENvbnN0cnVjdCBhbiA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgb2JqZWN0LgoKICAgICAgICBTaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlIHZpYSB0aGUKICAgICAgICA6bWV0aDpgX2V4cHJlc3Npb24uVGFibGVDbGF1c2UuaW5zZXJ0YCBtZXRob2Qgb24KICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLgoKICAgICAgICA6cGFyYW0gdGFibGU6IDpjbGFzczpgX2V4cHJlc3Npb24uVGFibGVDbGF1c2VgCiAgICAgICAgIHdoaWNoIGlzIHRoZSBzdWJqZWN0IG9mIHRoZQogICAgICAgICBpbnNlcnQuCgogICAgICAgIDpwYXJhbSB2YWx1ZXM6IGNvbGxlY3Rpb24gb2YgdmFsdWVzIHRvIGJlIGluc2VydGVkOyBzZWUKICAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLkluc2VydC52YWx1ZXNgCiAgICAgICAgIGZvciBhIGRlc2NyaXB0aW9uIG9mIGFsbG93ZWQgZm9ybWF0cyBoZXJlLgogICAgICAgICBDYW4gYmUgb21pdHRlZCBlbnRpcmVseTsgYSA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgY29uc3RydWN0CiAgICAgICAgIHdpbGwgYWxzbyBkeW5hbWljYWxseSByZW5kZXIgdGhlIFZBTFVFUyBjbGF1c2UgYXQgZXhlY3V0aW9uIHRpbWUKICAgICAgICAgYmFzZWQgb24gdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIDptZXRoOmBfZW5naW5lLkNvbm5lY3Rpb24uZXhlY3V0ZWAuCgogICAgICAgIDpwYXJhbSBpbmxpbmU6IGlmIFRydWUsIG5vIGF0dGVtcHQgd2lsbCBiZSBtYWRlIHRvIHJldHJpZXZlIHRoZQogICAgICAgICBTUUwtZ2VuZXJhdGVkIGRlZmF1bHQgdmFsdWVzIHRvIGJlIHByb3ZpZGVkIHdpdGhpbiB0aGUgc3RhdGVtZW50OwogICAgICAgICBpbiBwYXJ0aWN1bGFyLAogICAgICAgICB0aGlzIGFsbG93cyBTUUwgZXhwcmVzc2lvbnMgdG8gYmUgcmVuZGVyZWQgJ2lubGluZScgd2l0aGluIHRoZQogICAgICAgICBzdGF0ZW1lbnQgd2l0aG91dCB0aGUgbmVlZCB0byBwcmUtZXhlY3V0ZSB0aGVtIGJlZm9yZWhhbmQ7IGZvcgogICAgICAgICBiYWNrZW5kcyB0aGF0IHN1cHBvcnQgInJldHVybmluZyIsIHRoaXMgdHVybnMgb2ZmIHRoZSAiaW1wbGljaXQKICAgICAgICAgcmV0dXJuaW5nIiBmZWF0dXJlIGZvciB0aGUgc3RhdGVtZW50LgoKICAgICAgICBJZiBib3RoIGB2YWx1ZXNgIGFuZCBjb21waWxlLXRpbWUgYmluZCBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCB0aGUKICAgICAgICBjb21waWxlLXRpbWUgYmluZCBwYXJhbWV0ZXJzIG92ZXJyaWRlIHRoZSBpbmZvcm1hdGlvbiBzcGVjaWZpZWQKICAgICAgICB3aXRoaW4gYHZhbHVlc2Agb24gYSBwZXIta2V5IGJhc2lzLgoKICAgICAgICBUaGUga2V5cyB3aXRoaW4gYHZhbHVlc2AgY2FuIGJlIGVpdGhlcgogICAgICAgIDpjbGFzczpgfnNxbGFsY2hlbXkuc2NoZW1hLkNvbHVtbmAgb2JqZWN0cyBvciB0aGVpciBzdHJpbmcKICAgICAgICBpZGVudGlmaWVycy4gRWFjaCBrZXkgbWF5IHJlZmVyZW5jZSBvbmUgb2Y6CgogICAgICAgICogYSBsaXRlcmFsIGRhdGEgdmFsdWUgKGkuZS4gc3RyaW5nLCBudW1iZXIsIGV0Yy4pOwogICAgICAgICogYSBDb2x1bW4gb2JqZWN0OwogICAgICAgICogYSBTRUxFQ1Qgc3RhdGVtZW50LgoKICAgICAgICBJZiBhIGBgU0VMRUNUYGAgc3RhdGVtZW50IGlzIHNwZWNpZmllZCB3aGljaCByZWZlcmVuY2VzIHRoaXMKICAgICAgICBgYElOU0VSVGBgIHN0YXRlbWVudCdzIHRhYmxlLCB0aGUgc3RhdGVtZW50IHdpbGwgYmUgY29ycmVsYXRlZAogICAgICAgIGFnYWluc3QgdGhlIGBgSU5TRVJUYGAgc3RhdGVtZW50LgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGNvcmV0dXRvcmlhbF9pbnNlcnRfZXhwcmVzc2lvbnNgIC0gU1FMIEV4cHJlc3Npb24gVHV0b3JpYWwKCiAgICAgICAgICAgIDpyZWY6YGluc2VydHNfYW5kX3VwZGF0ZXNgIC0gU1FMIEV4cHJlc3Npb24gVHV0b3JpYWwKCiAgICAgICAgTkYpCnJdAAAAcmQAAAByPwAAAHJmAAAA2gxzZWxlY3RfbmFtZXPaI2luY2x1ZGVfaW5zZXJ0X2Zyb21fc2VsZWN0X2RlZmF1bHRz2gZpbmxpbmVyRQAAANoYX3ZhbGlkYXRlX2RpYWxlY3Rfa3dhcmdzckQAAAApCXIrAAAAcikAAAByYgAAAHJ4AAAAckAAAAByYwAAAHJJAAAAcnAAAADaCmRpYWxlY3Rfa3dzCQAAACAgICAgICAgIHIhAAAAcmQAAAB6D0luc2VydC5fX2luaXRfXwACAABzbQAAAIAA9XYBAAkT1wgb0ggbmESgJagWsBjRCDrUCDrQCDrYFRmIBIwK2Cou0AguiASMC5Bk1BYn2DM4iATUCDDYFhyIBIwL2BojiASMD9gIDNcIJdIIJaBq0Qgx1Agx0Agx2CAviATUCB3QCB3QCB1yIwAAAGMBAAAAAAAAAAAAAAABAAAACwAAAPMkAAAAlwB8AGoAAAAAAAAAAACBCHwAagAAAAAAAAAAAGYBUwBkAVMAqQJOchgAAAApAXJmAAAAqQJyKwAAAHJtAAAAcwIAAAAgIHIhAAAA2gxnZXRfY2hpbGRyZW56E0luc2VydC5nZXRfY2hpbGRyZW5EAgAAcxkAAACAANgLD4w70Asi2BQYlEuQPtAMIeATFZAyciMAAABjBAAAAAAAAAAAAAAABAAAAAMAAADz5gAAAJcAfABqAAAAAAAAAAAAchR0AwAAAAAAAAAAAABqAgAAAAAAAAAAZAGmAQAAqwEAAAAAAAAAAIIBfACgAwAAAAAAAAAAAAAAAAAAAAAAAAAAZAKEAHwBRACmAAAAqwAAAAAAAAAAAKYBAACrAQAAAAAAAAAAXAIAAHwAXwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwBfABfBQAAAAAAAAAAZAN8AF8GAAAAAAAAAAB8A3wAXwcAAAAAAAAAAHQRAAAAAAAAAAAAAHwCpgEAAKsBAAAAAAAAAAB8AF8JAAAAAAAAAABkBFMAKQVhDAkAAFJldHVybiBhIG5ldyA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgY29uc3RydWN0IHdoaWNoIHJlcHJlc2VudHMKICAgICAgICBhbiBgYElOU0VSVC4uLkZST00gU0VMRUNUYGAgc3RhdGVtZW50LgoKICAgICAgICBlLmcuOjoKCiAgICAgICAgICAgIHNlbCA9IHNlbGVjdChbdGFibGUxLmMuYSwgdGFibGUxLmMuYl0pLndoZXJlKHRhYmxlMS5jLmMgPiA1KQogICAgICAgICAgICBpbnMgPSB0YWJsZTIuaW5zZXJ0KCkuZnJvbV9zZWxlY3QoWydhJywgJ2InXSwgc2VsKQoKICAgICAgICA6cGFyYW0gbmFtZXM6IGEgc2VxdWVuY2Ugb2Ygc3RyaW5nIGNvbHVtbiBuYW1lcyBvcgogICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IGNvbHVtbnMuCiAgICAgICAgOnBhcmFtIHNlbGVjdDogYSA6ZnVuYzpgX2V4cHJlc3Npb24uc2VsZWN0YCBjb25zdHJ1Y3QsCiAgICAgICAgIDpjbGFzczpgX2V4cHJlc3Npb24uRnJvbUNsYXVzZWAKICAgICAgICAgb3Igb3RoZXIgY29uc3RydWN0IHdoaWNoIHJlc29sdmVzIGludG8gYQogICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkZyb21DbGF1c2VgLAogICAgICAgICBzdWNoIGFzIGFuIE9STSA6Y2xhc3M6YF9xdWVyeS5RdWVyeWAgb2JqZWN0LCBldGMuICBUaGUgb3JkZXIgb2YKICAgICAgICAgY29sdW1ucyByZXR1cm5lZCBmcm9tIHRoaXMgRlJPTSBjbGF1c2Ugc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlCiAgICAgICAgIG9yZGVyIG9mIGNvbHVtbnMgc2VudCBhcyB0aGUgYGBuYW1lc2BgIHBhcmFtZXRlcjsgIHdoaWxlIHRoaXMKICAgICAgICAgaXMgbm90IGNoZWNrZWQgYmVmb3JlIHBhc3NpbmcgYWxvbmcgdG8gdGhlIGRhdGFiYXNlLCB0aGUgZGF0YWJhc2UKICAgICAgICAgd291bGQgbm9ybWFsbHkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZXNlIGNvbHVtbiBsaXN0cyBkb24ndAogICAgICAgICBjb3JyZXNwb25kLgogICAgICAgIDpwYXJhbSBpbmNsdWRlX2RlZmF1bHRzOiBpZiBUcnVlLCBub24tc2VydmVyIGRlZmF1bHQgdmFsdWVzIGFuZAogICAgICAgICBTUUwgZXhwcmVzc2lvbnMgYXMgc3BlY2lmaWVkIG9uIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIG9iamVjdHMKICAgICAgICAgKGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgbWV0YWRhdGFfZGVmYXVsdHNfdG9wbGV2ZWxgKSBub3QKICAgICAgICAgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBvZiBuYW1lcyB3aWxsIGJlIHJlbmRlcmVkCiAgICAgICAgIGludG8gdGhlIElOU0VSVCBhbmQgU0VMRUNUIHN0YXRlbWVudHMsIHNvIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHNvCiAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBkYXRhIHRvIGJlIGluc2VydGVkLgoKICAgICAgICAgLi4gbm90ZTo6IEEgUHl0aG9uLXNpZGUgZGVmYXVsdCB0aGF0IHVzZXMgYSBQeXRob24gY2FsbGFibGUgZnVuY3Rpb24KICAgICAgICAgICAgd2lsbCBvbmx5IGJlIGludm9rZWQgKipvbmNlKiogZm9yIHRoZSB3aG9sZSBzdGF0ZW1lbnQsIGFuZCAqKm5vdAogICAgICAgICAgICBwZXIgcm93KiouCgogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjAuMCAtIDptZXRoOmBfZXhwcmVzc2lvbi5JbnNlcnQuZnJvbV9zZWxlY3RgCiAgICAgICAgICAgIG5vdyByZW5kZXJzCiAgICAgICAgICAgIFB5dGhvbi1zaWRlIGFuZCBTUUwgZXhwcmVzc2lvbiBjb2x1bW4gZGVmYXVsdHMgaW50byB0aGUKICAgICAgICAgICAgU0VMRUNUIHN0YXRlbWVudCBmb3IgY29sdW1ucyBvdGhlcndpc2Ugbm90IGluY2x1ZGVkIGluIHRoZQogICAgICAgICAgICBsaXN0IG9mIGNvbHVtbiBuYW1lcy4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjAuMCBhbiBJTlNFUlQgdGhhdCB1c2VzIEZST00gU0VMRUNUCiAgICAgICAgICAgaW1wbGllcyB0aGF0IHRoZSA6cGFyYW1yZWY6YF9leHByZXNzaW9uLmluc2VydC5pbmxpbmVgCiAgICAgICAgICAgZmxhZyBpcyBzZXQgdG8KICAgICAgICAgICBUcnVlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHN0YXRlbWVudCB3aWxsIG5vdCBhdHRlbXB0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UERBVEVgYCBzdGF0ZW1lbnQ7IGlzIGVxdWl2YWxlbnQgdG8gdXNpbmcgdGhlCiAgICAgICAgIG1vcmUgbW9kZXJuIDptZXRoOmB+VXBkYXRlLndoZXJlKClgIG1ldGhvZCB0byBzcGVjaWZ5IHRoZSBgYFdIRVJFYGAKICAgICAgICAgY2xhdXNlLgoKICAgICAgICA6cGFyYW0gdmFsdWVzOgogICAgICAgICAgT3B0aW9uYWwgZGljdGlvbmFyeSB3aGljaCBzcGVjaWZpZXMgdGhlIGBgU0VUYGAgY29uZGl0aW9ucyBvZiB0aGUKICAgICAgICAgIGBgVVBEQVRFYGAuICBJZiBsZWZ0IGFzIGBgTm9uZWBgLCB0aGUgYGBTRVRgYAogICAgICAgICAgY29uZGl0aW9ucyBhcmUgZGV0ZXJtaW5lZCBmcm9tIHRob3NlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZQogICAgICAgICAgc3RhdGVtZW50IGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZC9vciBjb21waWxhdGlvbiBvZiB0aGUKICAgICAgICAgIHN0YXRlbWVudC4gICBXaGVuIGNvbXBpbGVkIHN0YW5kYWxvbmUgd2l0aG91dCBhbnkgcGFyYW1ldGVycywKICAgICAgICAgIHRoZSBgYFNFVGBgIGNsYXVzZSBnZW5lcmF0ZXMgZm9yIGFsbCBjb2x1bW5zLgoKICAgICAgICAgIE1vZGVybiBhcHBsaWNhdGlvbnMgbWF5IHByZWZlciB0byB1c2UgdGhlIGdlbmVyYXRpdmUKICAgICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5VcGRhdGUudmFsdWVzYCBtZXRob2QgdG8gc2V0IHRoZSB2YWx1ZXMgb2YgdGhlCiAgICAgICAgICBVUERBVEUgc3RhdGVtZW50LgoKICAgICAgICA6cGFyYW0gaW5saW5lOgogICAgICAgICAgaWYgVHJ1ZSwgU1FMIGRlZmF1bHRzIHByZXNlbnQgb24gOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb2JqZWN0cyB2aWEKICAgICAgICAgIHRoZSBgYGRlZmF1bHRgYCBrZXl3b3JkIHdpbGwgYmUgY29tcGlsZWQgJ2lubGluZScgaW50byB0aGUgc3RhdGVtZW50CiAgICAgICAgICBhbmQgbm90IHByZS1leGVjdXRlZC4gIFRoaXMgbWVhbnMgdGhhdCB0aGVpciB2YWx1ZXMgd2lsbCBub3QKICAgICAgICAgIGJlIGF2YWlsYWJsZSBpbiB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCBmcm9tCiAgICAgICAgICA6bWV0aDpgX2VuZ2luZS5SZXN1bHRQcm94eS5sYXN0X3VwZGF0ZWRfcGFyYW1zYC4KCiAgICAgICAgOnBhcmFtIHByZXNlcnZlX3BhcmFtZXRlcl9vcmRlcjogaWYgVHJ1ZSwgdGhlIHVwZGF0ZSBzdGF0ZW1lbnQgaXMKICAgICAgICAgIGV4cGVjdGVkIHRvIHJlY2VpdmUgcGFyYW1ldGVycyAqKm9ubHkqKiB2aWEgdGhlCiAgICAgICAgICA6bWV0aDpgX2V4cHJlc3Npb24uVXBkYXRlLnZhbHVlc2AgbWV0aG9kLAogICAgICAgICAgYW5kIHRoZXkgbXVzdCBiZSBwYXNzZWQgYXMgYSBQeXRob24KICAgICAgICAgIGBgbGlzdGBgIG9mIDItdHVwbGVzLiBUaGUgcmVuZGVyZWQgVVBEQVRFIHN0YXRlbWVudCB3aWxsIGVtaXQgdGhlIFNFVAogICAgICAgICAgY2xhdXNlIGZvciBlYWNoIHJlZmVyZW5jZWQgY29sdW1uIG1haW50YWluaW5nIHRoaXMgb3JkZXIuCgogICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4wLjEwCgogICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmB1cGRhdGVzX29yZGVyX3BhcmFtZXRlcnNgIC0gZnVsbCBleGFtcGxlIG9mIHRoZQogICAgICAgICAgICA6cGFyYW1yZWY6YF9leHByZXNzaW9uLnVwZGF0ZS5wcmVzZXJ2ZV9wYXJhbWV0ZXJfb3JkZXJgIGZsYWcKCiAgICAgICAgSWYgYm90aCBgYHZhbHVlc2BgIGFuZCBjb21waWxlLXRpbWUgYmluZCBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCB0aGUKICAgICAgICBjb21waWxlLXRpbWUgYmluZCBwYXJhbWV0ZXJzIG92ZXJyaWRlIHRoZSBpbmZvcm1hdGlvbiBzcGVjaWZpZWQKICAgICAgICB3aXRoaW4gYGB2YWx1ZXNgYCBvbiBhIHBlci1rZXkgYmFzaXMuCgogICAgICAgIFRoZSBrZXlzIHdpdGhpbiBgYHZhbHVlc2BgIGNhbiBiZSBlaXRoZXIgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAKICAgICAgICBvYmplY3RzIG9yIHRoZWlyIHN0cmluZyBpZGVudGlmaWVycyAoc3BlY2lmaWNhbGx5IHRoZSAia2V5IiBvZiB0aGUKICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYCwgbm9ybWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSBlcXVpdmFsZW50IHRvCiAgICAgICAgaXRzICJuYW1lIikuICBOb3JtYWxseSwgdGhlCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb2JqZWN0cyB1c2VkIGhlcmUgYXJlIGV4cGVjdGVkIHRvIGJlCiAgICAgICAgcGFydCBvZiB0aGUgdGFyZ2V0IDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgdGhhdCBpcyB0aGUgdGFibGUKICAgICAgICB0byBiZSB1cGRhdGVkLiAgSG93ZXZlciB3aGVuIHVzaW5nIE15U1FMLCBhIG11bHRpcGxlLXRhYmxlCiAgICAgICAgVVBEQVRFIHN0YXRlbWVudCBjYW4gcmVmZXIgdG8gY29sdW1ucyBmcm9tIGFueSBvZgogICAgICAgIHRoZSB0YWJsZXMgcmVmZXJyZWQgdG8gaW4gdGhlIFdIRVJFIGNsYXVzZS4KCiAgICAgICAgVGhlIHZhbHVlcyByZWZlcnJlZCB0byBpbiBgYHZhbHVlc2BgIGFyZSB0eXBpY2FsbHk6CgogICAgICAgICogYSBsaXRlcmFsIGRhdGEgdmFsdWUgKGkuZS4gc3RyaW5nLCBudW1iZXIsIGV0Yy4pCiAgICAgICAgKiBhIFNRTCBleHByZXNzaW9uLCBzdWNoIGFzIGEgcmVsYXRlZCA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYCwKICAgICAgICAgIGEgc2NhbGFyLXJldHVybmluZyA6ZnVuYzpgX2V4cHJlc3Npb24uc2VsZWN0YCBjb25z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AB/QAB/YAB3QAB3QAB3QAB3QAB3QAB3YAB/QAB/QAB/QAB/QAB/QAB/YABzQABzQABzQABzQABzQABzYABzQABzQABzQABzQABzQABzYACTQACTQACTQACTQACTQACTYACbQACbQACbQACbQACbQACbYABrQABrQABrQABrQABrQABrYACPQACPQACPQACPQACPQACPYABrQABrQABrQABrQABrQABrYACrQACrQACrQACrQACrQACrYACzQACzQACzQACzQACzQACzYAB7QAB7QAB7QAB7QAB7QAB7YACPQACPQACPQACPQACPQACPYABLQABLQABLQABLQABLQABLYABPQABPQABPQABPQABPQABPwBnICAUwB8AByAgFMAfAAcgIBTAHwAHICAUwB8AByAgFMAdgECohNmDuoCrBN8QNyAgFMAfQAcgIBTAHwAHICAUwB8GoFWQQBLfAAWQQBLfAAWQQBLfAAWQQBLfAAWQQBLZAa8QBZBAEt9ABZBAEt8ABZBAEt8HgIXgIBLvAAXgIBLvAAXgIBLvAAXgIBLvAAXgIBLoha8QBeAgEu9ABeAgEu8ABeAgEu8EIFfgIBFfAAfgIBFfAAfgIBFfAAfgIBFfAAfgIBFYha8QB+AgEV9AB+AgEV8AB+AgEV8EIGZgEBO/AAZgEBO/AAZgEBO/AAZgEBO/AAZgEBO4ha8QBmAQE79ABmAQE78ABmAQE78ABmAQE78ABmAQE7ciMAAAA=
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 19
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
annotation.cpython-311.pyc
8.78 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-311.pyc
33.95 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-311.pyc
156.80 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crud.cpython-311.pyc
28.82 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ddl.cpython-311.pyc
53.22 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default_comparator.cpython-311.pyc
13.43 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-311.pyc
39.22 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
elements.cpython-311.pyc
197.28 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
expression.cpython-311.pyc
9.42 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
functions.cpython-311.pyc
48.73 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
naming.cpython-311.pyc
8.92 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-311.pyc
55.27 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-311.pyc
210.17 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
selectable.cpython-311.pyc
171.80 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sqltypes.cpython-311.pyc
124.29 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
type_api.cpython-311.pyc
59.47 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-311.pyc
41.21 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
visitors.cpython-311.pyc
20.17 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
4.79 KB
lrw-r--r--
2026-02-06 08:01:45
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).