REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 36.50 KB
Close
//opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/sql/__pycache__/ddl.cpython-37.pyc
Text
Base64
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ZSBEREwgaGFzIGEgY29uZGl0aW9uYWwgYGBvbmBgCiAgICAgICAgY3JpdGVyaWEsIGl0IHdpbGwgYmUgaW52b2tlZCB3aXRoIE5vbmUgYXMgdGhlIGV2ZW50LgoKICAgICAgICA6cGFyYW0gYmluZDoKICAgICAgICAgIE9wdGlvbmFsLCBhbiBgYEVuZ2luZWBgIG9yIGBgQ29ubmVjdGlvbmBgLiBJZiBub3Qgc3VwcGxpZWQsIGEgdmFsaWQKICAgICAgICAgIDpjbGFzczpgLkNvbm5lY3RhYmxlYCBtdXN0IGJlIHByZXNlbnQgaW4gdGhlCiAgICAgICAgICBgYC5iaW5kYGAgcHJvcGVydHkuCgogICAgICAgIDpwYXJhbSB0YXJnZXQ6CiAgICAgICAgICBPcHRpb25hbCwgZGVmYXVsdHMgdG8gTm9uZS4gIFRoZSB0YXJnZXQgU2NoZW1hSXRlbSBmb3IgdGhlCiAgICAgICAgICBleGVjdXRlIGNhbGwuICBXaWxsIGJlIHBhc3NlZCB0byB0aGUgYGBvbmBgIGNhbGxhYmxlIGlmIGFueSwKICAgICAgICAgIGFuZCBtYXkgYWxzbyBwcm92aWRlIHN0cmluZyBleHBhbnNpb24gZGF0YSBmb3IgdGhlCiAgICAgICAgICBzdGF0ZW1lbnQuIFNlZSBgYGV4ZWN1dGVfYXRgYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICAgICAgTnooRERMIGV4ZWN1dGlvbiBza2lwcGVkLCBjcml0ZXJpYSBub3QgbWV0LikHcgIAAADaD19zaG91bGRfZXhlY3V0ZdoHZXhlY3V0ZdoHYWdhaW5zdNoGZW5naW5l2gZsb2dnZXLaBGluZm8pA3INAAAA2gRiaW5k2gZ0YXJnZXRyEAAAAHIQAAAAchEAAAByGwAAAEoAAABzCgAAAAAWCAEIAgwBEAJ6EkRETEVsZW1lbnQuZXhlY3V0ZXoDMC43etZUaGUgOm1ldGg6YC5ERExFbGVtZW50LmV4ZWN1dGVfYXRgIG1ldGhvZCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gIFBsZWFzZSB1c2UgdGhlIDpjbGFzczpgLkRETEV2ZW50c2AgbGlzdGVuZXIgaW50ZXJmYWNlIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIDptZXRoOmAuRERMRWxlbWVudC5leGVjdXRlX2lmYCBtZXRob2QuYwMAAAAAAAAABAAAAAgAAAADAAAAcywAAACHAIcBZgJkAWQChAh9A3QAoAF8AmQDiACgAmQEZAWhAhcAfAOhAwEAZAZTACkHYVEEAABMaW5rIGV4ZWN1dGlvbiBvZiB0aGlzIERETCB0byB0aGUgRERMIGxpZmVjeWNsZSBvZiBhIFNjaGVtYUl0ZW0uCgogICAgICAgIExpbmtzIHRoaXMgYGBERExFbGVtZW50YGAgdG8gYSBgYFRhYmxlYGAgb3IgYGBNZXRhRGF0YWBgIGluc3RhbmNlLAogICAgICAgIGV4ZWN1dGluZyBpdCB3aGVuIHRoYXQgc2NoZW1hIGl0ZW0gaXMgY3JlYXRlZCBvciBkcm9wcGVkLiBUaGUgRERMCiAgICAgICAgc3RhdGVtZW50IHdpbGwgYmUgZXhlY3V0ZWQgdXNpbmcgdGhlIHNhbWUgQ29ubmVjdGlvbiBhbmQgdHJhbnNhY3Rpb25hbAogICAgICAgIGNvbnRleHQgYXMgdGhlIFRhYmxlIGNyZWF0ZS9kcm9wIGl0c2VsZi4gVGhlIGBgLmJpbmRgYCBwcm9wZXJ0eSBvZgogICAgICAgIHRoaXMgc3RhdGVtZW50IGlzIGlnbm9yZWQuCgogICAgICAgIDpwYXJhbSBldmVudDoKICAgICAgICAgIE9uZSBvZiB0aGUgZXZlbnRzIGRlZmluZWQgaW4gdGhlIHNjaGVtYSBpdGVtJ3MgYGAuZGRsX2V2ZW50c2BgOwogICAgICAgICAgZS5nLiAnYmVmb3JlLWNyZWF0ZScsICdhZnRlci1jcmVhdGUnLCAnYmVmb3JlLWRyb3AnIG9yICdhZnRlci1kcm9wJwoKICAgICAgICA6cGFyYW0gdGFyZ2V0OgogICAgICAgICAgVGhlIFRhYmxlIG9yIE1ldGFEYXRhIGluc3RhbmNlIGZvciB3aGljaCB0aGlzIERETEVsZW1lbnQgd2lsbAogICAgICAgICAgYmUgYXNzb2NpYXRlZCB3aXRoLgoKICAgICAgICBBIERETEVsZW1lbnQgaW5zdGFuY2UgY2FuIGJl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OgogICAgICAgICAgICAgIFRoaXMgRERMIGVsZW1lbnQuCgogICAgICAgICAgICA6dGFyZ2V0OgogICAgICAgICAgICAgIFRoZSA6Y2xhc3M6YC5UYWJsZWAgb3IgOmNsYXNzOmAuTWV0YURhdGFgIG9iamVjdCB3aGljaCBpcyB0aGUKICAgICAgICAgICAgICB0YXJnZXQgb2YgdGhpcyBldmVudC4gTWF5IGJlIE5vbmUgaWYgdGhlIERETCBpcyBleGVjdXRlZAogICAgICAgICAgICAgIGV4cGxpY2l0bHkuCgogICAgICAgICAgICA6YmluZDoKICAgICAgICAgICAgICBUaGUgOmNsYXNzOmAuQ29ubmVjdGlvbmAgYmVpbmcgdXNlZCBmb3IgRERMIGV4ZWN1dGlvbgoKICAgICAgICAgICAgOnRhYmxlczoKICAgICAgICAgICAgICBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50IC0gYSBsaXN0IG9mIFRhYmxlIG9iamVjdHMgd2hpY2ggYXJlIHRvCiAgICAgICAgICAgICAgYmUgY3JlYXRlZC8gZHJvcHBlZCB3aXRoaW4gYSBNZXRhRGF0YS5jcmVhdGVfYWxsKCkgb3IgZHJvcF9hbGwoKQogICAgICAgICAgICAgIG1ldGhvZCBjYWxsLgoKICAgICAgICAgICAgOnN0YXRlOgogICAgICAgICAgICAgIE9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgLSB3aWxsIGJlIHRoZSBgYHN0YXRlYGAgYXJndW1lbnQKICAgICAgICAgICAgICBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4KCiAgICAgICAgICAgIDpjaGVja2ZpcnN0OgogICAgICAgICAgICAgS2V5d29yZCBhcmd1bWVudCwgd2lsbCBiZSBUcnVlIGlmIHRoZSAnY2hlY2tmaXJzdCcgZmxhZyB3YXMKICAgICAgICAgICAgIHNldCBkdXJpbmcgdGhlIGNhbGwgdG8gYGBjcmVhdGUoKWBgLCBgYGNyZWF0ZV9hbGwoKWBgLAogICAgICAgICAgICAgYGBkcm9wKClgYCwgYGBkcm9wX2FsbCgpYGAuCgogICAgICAgICAgSWYgdGhlIGNhbGxhYmxlIHJldHVybnMg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dGFuY2UgdG8gaGFuZGxlIHJlcGV0aXRpdmUgdGFza3MgZm9yIG11bHRpcGxlIHRhYmxlcy4KCiAgICBFeGFtcGxlczo6CgogICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGV2ZW50LCBEREwKCiAgICAgIHRibCA9IFRhYmxlKCd1c2VycycsIG1ldGFkYXRhLCBDb2x1bW4oJ3VpZCcsIEludGVnZXIpKQogICAgICBldmVudC5saXN0ZW4odGJsLCAnYmVmb3JlX2NyZWF0ZScsIERETCgnRFJPUCBUUklHR0VSIHVzZXJzX3RyaWdnZXInKSkKCiAgICAgIHNwb3cgPSBEREwoJ0FMVEVSIFRBQkxFICUodGFibGUpcyBTRVQgc2VjcmV0cG93ZXJzIFRSVUUnKQogICAgICBldmVudC5saXN0ZW4odGJsLCAnYWZ0ZXJfY3JlYXRlJywgc3Bvdy5leGVjdXRlX2lmKGRpYWxlY3Q9J3NvbWVkYicpKQoKICAgICAgZHJvcF9zcG93ID0gRERMKCdBTFRFUiBUQUJMRSB1c2VycyBTRVQgc2VjcmV0cG93ZXJzIEZBTFNFJykKICAgICAgY29ubmVjdGlvbi5leGVjdXRlKGRyb3Bfc3BvdykKCiAgICBXaGVuIG9wZXJhdGluZyBvbiBUYWJsZSBldmVudHMsIHRoZSBmb2xsb3dpbmcgYGBzdGF0ZW1lbnRgYAogICAgc3RyaW5nIHN1YnN0aXR1dGlvbnMgYXJlIGF2YWlsYWJsZTo6CgogICAgICAlKHRhYmxlKXMgIC0gdGhlIFRhYmxlIG5hbWUsIHdpdGggYW55IHJlcXVpcmVkIHF1b3RpbmcgYXBwbGllZAogICAgICAlKHNjaGVtYSlzIC0gdGhlIHNjaGVtYSBuYW1lLCB3aXRoIGFueSByZXF1aXJlZCBxdW90aW5nIGFwcGxpZWQKICAgICAgJShmdWxsbmFtZSlzIC0gdGhlIFRhYmxlIG5hbWUgaW5jbHVkaW5nIHNjaGVtYSwgcXVvdGVkIGlmIG5lZWRlZAoKICAgIFRoZSBEREwncyAiY29udGV4dCIsIGlmIGFueSwgd2lsbCBiZSBjb21iaW5lZCB3aXRoIHRoZSBzdGFuZGFyZAogICAgc3Vic3RpdHV0aW9ucyBub3RlZCBhYm92ZS4gIEtleXMgcHJlc2VudCBpbiB0aGUgY29udGV4dCB3aWxsIG92ZXJyaWRlCiAgICB0aGUgc3RhbmRhcmQgc3Vic3RpdHV0aW9ucy4KCiAgICBaA2RkbCkCegMwLjd6iVRoZSA6cGFyYW1yZWY6YC5EREwub25gIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gIFBsZWFzZSByZWZlciB0byA6bWV0aDpgLkRETEVsZW1lbnQuZXhlY3V0ZV9pZmAuKQFyLgAAAE5jBQAAAAAAAAAFAAAABAAAAEMAAABzRAAAAHQAfAF0AWoCgwJzGnQDoARkAXwBFgChAYIBfAF8AF8FfANwJmkAfABfBnwAoAd8AqEBAQB8AnwAXwh8BHwAXwlkAlMAKQNhKQgAAENyZWF0ZSBhIERETCBzdGF0ZW1lbnQuCgogICAgICAgIDpwYXJhbSBzdGF0ZW1lbnQ6CiAgICAgICAgICBBIHN0cmluZyBvciB1bmljb2RlIHN0cmluZyB0byBiZSBleGVjdXRlZC4gIFN0YXRlbWVudHMgd2lsbCBiZQogICAgICAgICAgcHJvY2Vzc2VkIHdpdGggUHl0aG9uJ3Mgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0b3IuICBTZWUgdGhlCiAgICAgICAgICBgYGNvbnRleHRgYCBhcmd1bWVudCBhbmQgdGhlIGBgZXhlY3V0ZV9hdGBgIG1ldGhvZC4KCiAgICAgICAgICBBIGxpdGVyYWwgJyUnIGluIGEgc3RhdGVtZW50IG11c3QgYmUgZXNjYXBlZCBhcyAnJSUnLgoKICAgICAgICAgIFNRTCBiaW5kIHBhcmFtZXRlcnMgYXJlIG5vdCBhdmFpbGFibGUgaW4gRERMIHN0YXRlbWVudHMuCgogICAgICAgIDpwYXJhbSBvbjoKCiAgICAgICAgICBPcHRpb25hbCBmaWx0ZXJpbmcgY3JpdGVyaWEuICBNYXkgYmUgYSBzdHJpbmcsIHR1cGxlIG9yIGEgY2FsbGFibGUKICAgICAgICAgIHByZWRpY2F0ZS4gIElmIGEgc3RyaW5nLCBpdCB3aWxsIGJlIGNvbXBhcmVkIHRvIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgZXhlY3V0aW5nIGRhdGFiYXNlIGRpYWxlY3Q6OgoKICAgICAgICAgICAgRERMKCdzb21ldGhpbmcnLCBvbj0ncG9zdGdyZXNxbCcpCgogICAgICAgICAgSWYgYSB0dXBsZSwgc3BlY2lmaWVzIG11bHRpcGxlIGRpYWxlY3QgbmFtZXM6OgoKICAgICAgICAgICAgRERMKCdzb21ldGhpbmcnLCBvbj0oJ3Bvc3RncmVzcWwnLCAnbXlzcWwnKSkKCiAgICAgICAgICBJZiBhIGNhbGxhYmxlLCBpdCB3aWxsIGJlIGludm9rZWQgd2l0aCBmb3VyIHBvc2l0aW9uYWwgYXJndW1lbnRzCiAgICAgICAgICBhcyB3ZWxsIGFzIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzOgoKICAgICAgICAgICAgOmRkbDoKICAgICAgICAgICAgICBUaGlzIERETCBlbGVtZW50LgoKICAgICAgICAgICAgOmV2ZW50OgogICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhpcyBEREwsIHN1Y2ggYXMKICAgICAgICAgICAgICAnYWZ0ZXItY3JlYXRlJyBXaWxsIGJlIE5vbmUgaWYgdGhlIERETCBpcyBleGVjdXRlZCBleHBsaWNpdGx5LgoKICAgICAgICAgICAgOnRhcmdldDoKICAgICAgICAgICAgICBUaGUgYGBUYWJsZWBgIG9yIGBgTWV0YURhdGFgYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHRhcmdldCBvZgogICAgICAgICAgICAgIHRoaXMgZXZlbnQuIE1heSBiZSBOb25lIGlmIHRoZSBEREwgaXMgZXhlY3V0ZWQgZXhwbGljaXRseS4KCiAgICAgICAgICAgIDpjb25uZWN0aW9uOgogICAgICAgICAgICAgIFRoZSBgYENvbm5lY3Rpb25gYCBiZWluZyB1c2VkIGZvciBEREwgZXhlY3V0aW9uCgogICAgICAgICAgICA6dGFibGVzOgogICAgICAgICAgICAgIE9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgLSBhIGxpc3Qgb2YgVGFibGUgb2Jq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FAAAAGUAWgFkAFoCZAFaA2QCWgRkA1MAKQTaCV9Ecm9wVmlld3qpU2VtaS1wdWJsaWMgJ0RST1AgVklFVycgY29uc3RydWN0LgoKICAgIFVzZWQgYnkgdGhlIHRlc3Qgc3VpdGUgZm9yIGRpYWxlY3QtYWdub3N0aWMgZHJvcHMgb2Ygdmlld3MuCiAgICBUaGlzIG9iamVjdCB3aWxsIGV2ZW50dWFsbHkgYmUgcGFydCBvZiBhIHB1YmxpYyAidmlldyIgQVBJLgoKICAgIFoJZHJvcF92aWV3TikFchMAAAByFAAAAHIVAAAAckIAAAByUQAAAHIQAAAAchAAAAByEAAAAHIRAAAAcmEAAAD+AQAAcwQAAAAIBgQCcmEAAABjAAAAAAAAAAAAAAAAAgAAAEAAAABzHAAAAGUAWgFkAFoCZAFaA2QCWgRkA2QEhABaBWQFUwApBnJdAAAAYVwOAABSZXByZXNlbnQgYSA6Y2xhc3M6YC5Db2x1bW5gIGFzIHJlbmRlcmVkIGluIGEgQ1JFQVRFIFRBQkxFIHN0YXRlbWVudCwKICAgIHZpYSB0aGUgOmNsYXNzOmAuQ3JlYXRlVGFibGVgIGNvbnN0cnVjdC4KCiAgICBUaGlzIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgY3VzdG9tIGNvbHVtbiBEREwgd2l0aGluIHRoZSBnZW5lcmF0aW9uCiAgICBvZiBDUkVBVEUgVEFCTEUgc3RhdGVtZW50cywgYnkgdXNpbmcgdGhlCiAgICBjb21waWxlciBleHRlbnNpb24gZG9jdW1lbnRlZCBpbiA6cmVmOmBzcWxhbGNoZW15LmV4dC5jb21waWxlcl90b3BsZXZlbGAKICAgIHRvIGV4dGVuZCA6Y2xhc3M6YC5DcmVhdGVDb2x1bW5gLgoKICAgIFR5cGljYWwgaW50ZWdyYXRpb24gaXMgdG8gZXhhbWluZSB0aGUgaW5jb21pbmcgOmNsYXNzOmAuQ29sdW1uYAogICAgb2JqZWN0LCBhbmQgdG8gcmVkaXJlY3QgY29tcGlsYXRpb24gaWYgYSBwYXJ0aWN1bGFyIGZsYWcgb3IgY29uZGl0aW9uCiAgICBpcyBmb3VuZDo6CgogICAgICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgc2NoZW1hCiAgICAgICAgZnJvbSBzcWxhbGNoZW15LmV4dC5jb21waWxlciBpbXBvcnQgY29tcGlsZXMKCiAgICAgICAgQGNvbXBpbGVzKHNjaGVtYS5DcmVhdGVDb2x1bW4pCiAgICAgICAgZGVmIGNvbXBpbGUoZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgICAgICBjb2x1bW4gPSBlbGVtZW50LmVsZW1lbnQKCiAgICAgICAgICAgIGlmICJzcGVjaWFsIiBub3QgaW4gY29sdW1uLmluZm86CiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXIudmlzaXRfY3JlYXRlX2NvbHVtbihlbGVtZW50LCAqKmt3KQoKICAgICAgICAgICAgdGV4dCA9ICIlcyBTUEVDSUFMIERJUkVDVElWRSAlcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgY29sdW1uLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIudHlwZV9jb21waWxlci5wcm9jZXNzKGNvbHVtbi50eXBlKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBkZWZhdWx0ID0gY29tcGlsZXIuZ2V0X2NvbHVtbl9kZWZhdWx0X3N0cmluZyhjb2x1bW4pCiAgICAgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgREVGQVVMVCAiICsgZGVmYXVsdAoKICAgICAgICAgICAgaWYgbm90IGNvbHVtbi5udWxsYWJsZToKICAgICAgICAgICAgICAgIHRleHQgKz0gIiBOT1QgTlVMTCIKCiAgICAgICAgICAgIGlmIGNvbHVtbi5jb25zdHJhaW50czoKICAgICAgICAgICAgICAgIHRleHQgKz0gIiAiLmpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlci5wcm9jZXNzKGNvbnN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbnN0IGluIGNvbHVtbi5jb25zdHJhaW50cykKICAgICAgICAgICAgcmV0dXJuIHRleHQKCiAgICBUaGUgYWJvdmUgY29uc3RydWN0IGNhbiBiZSBhcHBsaWVkIHRvIGEgOmNsYXNzOmAuVGFibGVgIGFzIGZvbGxvd3M6OgoKICAgICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IFRhYmxlLCBNZXRhZGF0YSwgQ29sdW1uLCBJbnRlZ2VyLCBTdHJpbmcKICAgICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IHNjaGVtYQoKICAgICAgICBtZXRhZGF0YSA9IE1ldGFEYXRhKCkKCiAgICAgICAgdGFibGUgPSBUYWJsZSgnbXl0YWJsZScsIE1ldGFEYXRhKCksCiAgICAgICAgICAgICAgICBDb2x1bW4oJ3gnLCBJbnRlZ2VyLCBpbmZvPXsic3BlY2lhbCI6VHJ1ZX0sIHByaW1hcnlfa2V5PVRydWUpLAogICAgICAgICAgICAgICAgQ29sdW1uKCd5JywgU3RyaW5nKDUwKSksCiAgICAgICAgICAgICAgICBDb2x1bW4oJ3onLCBTdHJpbmcoMjApLCBpbmZvPXsic3BlY2lhbCI6VHJ1ZX0pCiAgICAgICAgICAgICkKCiAgICAgICAgbWV0YWRhdGEuY3JlYXRlX2FsbChjb25uKQoKICAgIEFib3ZlLCB0aGUgZGlyZWN0aXZlcyB3ZSd2ZSBhZGRlZCB0byB0aGUgOmF0dHI6YC5Db2x1bW4uaW5mb2AgY29sbGVjdGlvbgogICAgd2lsbCBiZSBkZXRlY3RlZCBieSBvdXIgY3VzdG9tIGNvbXBpbGF0aW9uIHNjaGVtZTo6CgogICAgICAgIENSRUFURSBUQUJMRSBteXRhYmxlICgKICAgICAgICAgICAgICAgIHggU1BFQ0lBTCBESVJFQ1RJVkUgSU5URUdFUiBOT1QgTlVMTCwKICAgICAgICAgICAgICAgIHkgVkFSQ0hBUig1MCksCiAgICAgICAgICAgICAgICB6IFNQRUNJQUwgRElSRUNUSVZFIFZBUkNIQVIoMjApLAogICAgICAgICAgICBQUklNQVJZIEtFWSAoeCkKICAgICAgICApCgogICAgVGhlIDpjbGFzczpgLkNyZWF0ZUNvbHVtbmAgY29uc3RydWN0IGNhbiBhbHNvIGJlIHVzZWQgdG8gc2tpcCBjZXJ0YWluCiAgICBjb2x1bW5zIHdoZW4gcHJvZHVjaW5nIGEgYGBDUkVBVEUgVEFCTEVgYC4gIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5CiAgICBjcmVhdGluZyBhIGNvbXBpbGF0aW9uIHJ1bGUgdGhhdCBjb25kaXRpb25hbGx5IHJldHVybnMgYGBOb25lYGAuCiAgICBUaGlzIGlzIGVzc2VudGlhbGx5IGhvdyB0byBwcm9kdWNlIHRoZSBzYW1lIGVmZmVjdCBhcyB1c2luZyB0aGUKICAgIGBgc3lzdGVtPVRydWVgYCBhcmd1bWVudCBvbiA6Y2xhc3M6YC5Db2x1bW5gLCB3aGljaCBtYXJrcyBhIGNvbHVtbgogICAgYXMgYW4gaW1wbGljaXRseS1wcmVzZW50ICJzeXN0ZW0iIGNvbHVtbi4KCiAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSB3aXNoIHRvIHByb2R1Y2UgYSA6Y2xhc3M6YC5UYWJsZWAgd2hpY2ggc2tpcHMKICAgIHJlbmRlcmluZyBvZiB0aGUgUG9zdGdyZVNRTCBgYHhtaW5gYCBjb2x1bW4gYWdhaW5zdCB0aGUgUG9zdGdyZVNRTAogICAgYmFja2VuZCwgYnV0IG9uIG90aGVyIGJhY2tlbmRzIGRvZXMgcmVuZGVyIGl0LCBpbiBhbnRpY2lwYXRpb24gb2YgYQogICAgdHJpZ2dlcmVkIHJ1bGUuICBBIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJ1bGUgY291bGQgc2tpcCB0aGlzIG5hbWUgb25seQogICAgb24gUG9zdGdyZVNRTDo6CgogICAgICAgIGZyb20gc3FsYWxjaGVteS5zY2hlbWEgaW1wb3J0IENyZWF0ZUNvbHVtbgoKICAgICAgICBAY29tcGlsZXMoQ3JlYXRlQ29sdW1uLCAicG9zdGdyZXNxbCIpCiAgICAgICAgZGVmIHNraXBfeG1pbihlbGVtZW50LCBjb21waWxlciwgKiprdyk6CiAgICAgICAgICAgIGlmIGVsZW1lbnQuZWxlbWVudC5uYW1lID09ICd4bWluJzoKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGls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Zzo6CgogICAgICAgIFRoZSA6ZnVuYzpgLnNvcnRfdGFibGVzYCBmdW5jdGlvbiBjYW5ub3QgYnkgaXRzZWxmIGFjY29tbW9kYXRlCiAgICAgICAgYXV0b21hdGljIHJlc29sdXRpb24gb2YgZGVwZW5kZW5jeSBjeWNsZXMgYmV0d2VlbiB0YWJsZXMsIHdoaWNoCiAgICAgICAgYXJlIHVzdWFsbHkgY2F1c2VkIGJ5IG11dHVhbGx5IGRlcGVuZGVudCBmb3JlaWduIGtleSBjb25zdHJhaW50cy4KICAgICAgICBUbyByZXNvbHZlIHRoZXNlIGN5Y2xlcywgZWl0aGVyIHRoZQogICAgICAgIDpwYXJhbXJlZjpgLkZvcmVpZ25LZXlDb25zdHJhaW50LnVzZV9hbHRlcmAgcGFyYW1ldGVyIG1heSBiZSBhcHBsaWVkCiAgICAgICAgdG8gdGhvc2UgY29uc3RyYWludHMsIG9yIHVzZSB0aGUKICAgICAgICA6ZnVuYzpgLnNxbC5zb3J0X3RhYmxlc19hbmRfY29uc3RyYWludHNgIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYnJlYWsKICAgICAgICBvdXQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgaW52b2x2ZWQgaW4gY3ljbGVzIHNlcGFyYXRlbHkuCgogICAgOnBhcmFtIHRhYmxlczogYSBzZXF1ZW5jZSBvZiA6Y2xhc3M6YC5UYWJsZWAgb2JqZWN0cy4KCiAgICA6cGFyYW0gc2tpcF9mbjogb3B0aW9uYWwgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBwYXNzZWQgYQogICAgIDpjbGFzczpgLkZvcmVpZ25LZXlgIG9iamVjdDsgaWYgaXQgcmV0dXJucyBUcnVlLCB0aGlzCiAgICAgY29uc3RyYWludCB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIGFzIGEgZGVwZW5kZW5jeS4gIE5vdGUgdGhpcyBpcwogICAgICoqZGlmZmVyZW50KiogZnJvbSB0aGUgc2FtZSBwYXJhbWV0ZXIgaW4KICAgICA6ZnVuYzpgLnNvcnRfdGFibGVzX2FuZF9jb25zdHJhaW50c2AsIHdoaWNoIGlzCiAgICAgaW5zdGVhZCBwYXNzZWQgdGhlIG93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LlRhYmxlLmFkZF9pc19kZXBlbmRlbnRfb25gLCBhcyB3ZWxsIGFzIGRlcGVuZGVuY2llcwogICAgc3RhdGVkIGhlcmUgdXNpbmcgdGhlIDpwYXJhbXJlZjpgfi5zb3J0X3RhYmxlc19hbmRfY29uc3RyYWludHMuc2tpcF9mbmAKICAgIGFuZC9vciA6cGFyYW1yZWY6YH4uc29ydF90YWJsZXNfYW5kX2NvbnN0cmFpbnRzLmV4dHJhX2RlcGVuZGVuY2llc2AKICAgIHBhcmFtZXRlcnMuCgogICAgOnBhcmFtIHRhYmxlczogYSBzZXF1ZW5jZSBvZiA6Y2xhc3M6YC5UYWJsZWAgb2JqZWN0cy4KCiAgICA6cGFyYW0gZmlsdGVyX2ZuOiBvcHRpb25hbCBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIHBhc3NlZCBhCiAgICAgOmNsYXNzOmAuRm9yZWlnbktleUNvbnN0cmFpbnRgIG9iamVjdCwgYW5kIHJldHVybnMgYSB2YWx1ZSBiYXNlZCBvbgogICAgIHdoZXRoZXIgdGhpcyBjb25zdHJhaW50IHNob3VsZCBkZWZpbml0ZWx5IGJlIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkIGFzCiAgICAgYW4gaW5saW5lIGNvbnN0cmFpbnQsIG9yIG5laXRoZXIuICAgSWYgaXQgcmV0dXJucyBGYWxzZSwgdGhlIGNvbnN0cmFpbnQKICAgICB3aWxsIGRlZmluaXRlbHkgYmUgaW5jbHVkZWQgYXMgYSBkZXBlbmRlbmN5IHRoYXQgY2Fubm90IGJlIHN1YmplY3QKICAgICB0byBBTFRFUjsgaWYgVHJ1ZSwgaXQgd2lsbCAqKm9ubHkqKiBiZSBpbmNsdWRlZCBhcyBhbiBBTFRFUiByZXN1bHQgYXQKICAgICB0aGUgZW5kLiAgIFJldHVybmluZyBOb25lIG1lYW5zIHRoZSBjb25zdHJhaW50IGlzIGluY2x1ZGVkIGluIHRoZQogICAgIHRhYmxlLWJhc2VkIHJlc3VsdCB1bmxlc3MgaXQgaXMgZGV0ZWN0ZWQgYXMgcGFydCBvZiBhIGRlcGVuZGVuY3kgY3ljbGUuCgogICAgOnBhcmFtIGV4dHJhX2RlcGVuZGVuY2llczogYSBzZXF1ZW5jZSBvZiAyLXR1cGxlcyBvZiB0YWJsZXMgd2hpY2ggd2lsbAogICAgIGFsc28gYmUgY29uc2lkZXJlZCBhcyBkZXBlbmRlbnQgb24gZWFjaCBvdGhlci4KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjAuMAoKICAgIC4uIHNlZWFsc286OgoKICAgICAgICA6ZnVuYzpgLnNvcnRfdGFibGVzYAoKCiAgICBOVGMBAAAAAAAAAAIAAAADAAAAMwAAAHMWAAAAfABdDn0BfAGIAGYCVgABAHECZABTACkBTnIQAAAAKQJySgAAANoGcGFyZW50KQFyfAAAAHIQAAAAchEAAAD6CTxnZW5leHByPosEAABzAgAAAAQAei5zb3J0X3RhYmxlc19hbmRfY29uc3RyYWludHMuPGxvY2Fscz4uPGdlbmV4cHI+KQFaE2RldGVybWluaXN0aWNfb3JkZXJyAQAAAGMBAAAAAAAAAAIAAAAEAAAAEwAAAHMkAAAAZwB8AF0cfQGIAGQAawhzHIgAfAGDAWQBawlyBHwBkQJxBFMAKQJORnIQAAAAKQJySgAAAHKXAAAAKQFypwAAAHIQAAAAchEAAAByTAAAAJsEAABzBAAAAAYBAgF6L3NvcnRfdGFibGVzX2FuZF9jb25zdHJhaW50cy48bG9jYWxzPi48bGlzdGNvbXA+YwEAAAAAAAAAAgAAAAYAAAATAAAAcxwAAABnAHwAXRR9AXwBfAFqAKABiAChAWYCkQJxBFMAchAAAAApAtoXZm9yZWlnbl9rZXlfY29uc3RyYWludHPaCmRpZmZlcmVuY2UpAnJKAAAAcnwAAAApAdoOcmVtYWluaW5nX2ZrY3NyEAAAAHIRAAAAckwAAACtBAAAcwIAAAAGASkPcjQAAADaBnVwZGF0ZXK7AAAAWgl1c2VfYWx0ZXLaA2FkZFoOcmVmZXJyZWRfdGFibGVaE19leHRyYV9kZXBlbmRlbmNpZXNyMwAAAHILAAAA2gRzb3J0ckMAAAByCQAAAHKuAAAAcrEAAADaB2Rpc2NhcmQpDHJzAAAAcqcAAABytwAAAFoSZml4ZWRfZGVwZW5kZW5jaWVzWhRtdXRhYmxlX2RlcGVuZGVuY2llc3KXAAAA2ghmaWx0ZXJlZFoMZGVwZW5kZW50X29uWg5jYW5kaWRhdGVfc29ydNoDZXJyWgRlZGdlWgpjYW5fcmVtb3ZlchAAAAApA3KnAAAAcr0AAAByfAAAAHIRAAAAcosAAABHBAAAc1oAAAAAKwYBBgIIAQoCBgEKAQwBCgEKAQICBAEIAggBCgECAgYBCAESAgQBGgMCAQIBBAEIAQIBDgMUAQwBCAEIAgoBCgMKAQoBBgEKARgBAgEEAQgBAgEcBQoBBgFyiwAAACkCTk4pAk5OKSZyQgAAANoEYmFzZXICAAAAcgMAAAByBAAAAHIFAAAAcrQAAAByBgAAAHIlAAAAcggAAAByCQAAAHIKAAAAcgsAAAByDAAAAHIWAAAAckUAAAByUgAAAHJWAAAAcloAAAByXAAAAHJhAAAAcl0AAAByYgAAAHJjAAAAcmQAAAByZQAAAHJmAAAAcmcAAAByawAAAHJsAAAAcm0AAABybgAAAHJvAAAAcnAAAABycQAAAHKkAAAAcrgAAAByiwAAAHIQAAAAchAAAAByEAAAAHIRAAAA2gg8bW9kdWxlPgsAAABzTAAAAAQCDAEMAQwBDAEMAQwBDAEMAQwDEAgSfwB8EH8ADRAbEBAQERAbEAsQaRAGEAYQBhAGEAYQDBANEAYQChAGEAYQBRB/ABgQfwApCj8=
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-37.pyc
5.57 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-37.pyc
23.16 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-37.pyc
93.70 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crud.cpython-37.pyc
15.01 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ddl.cpython-37.pyc
36.50 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default_comparator.cpython-37.pyc
7.21 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-37.pyc
31.66 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
elements.cpython-37.pyc
146.00 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
expression.cpython-37.pyc
6.47 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
functions.cpython-37.pyc
32.50 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
naming.cpython-37.pyc
4.67 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-37.pyc
45.37 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-37.pyc
142.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
selectable.cpython-37.pyc
122.08 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sqltypes.cpython-37.pyc
86.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
type_api.cpython-37.pyc
47.55 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-37.pyc
23.63 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
visitors.cpython-37.pyc
10.00 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
3.02 KB
lrw-r--r--
2023-11-14 14:32:36
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).