REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 55.05 KB
Close
//opt/cloudlinux/venv/lib/python3.11/site-packages/numpy/polynomial/__pycache__/polynomial.cpython-311.pyc
Text
Base64
pw0NCgAAAAC8fG9p2L8AAOMAAAAAAAAAAAAAAAAFAAAAAAAAAPOaAQAAlwBkAFoAZwBkAaIBWgFkAmQDbAJaA2QCZANsBG0FWgYBAGQCZARsB20IWggBAGQFZAZsCW0KWgsBAGQFZAdsDG0NWg0BAGULag4AAAAAAAAAAFoPAgBlA2oQAAAAAAAAAABkCGQFZwKmAQAAqwEAAAAAAAAAAFoRAgBlA2oQAAAAAAAAAABkAmcBpgEAAKsBAAAAAAAAAABaEgIAZQNqEAAAAAAAAAAAZAVnAaYBAACrAQAAAAAAAAAAWhMCAGUDahAAAAAAAAAAAGQCZAVnAqYBAACrAQAAAAAAAAAAWhRkCYQAWhVkCoQAWhZkC4QAWhdkDIQAWhhkDYQAWhlkDoQAWhpkD4QAWhtkI2QQhAFaHGQkZBGEAVodZAVnAGQCZAVkAmYFZBKEAVoeZCVkFIQBWh9kJWQVhAFaIGQWhABaIWQXhABaImQYhABaI2QZhABaJGQahABaJWQbhABaJmQchABaJ2QmZB6EAVooZB+EAFopZCCEAFoqAgBHAGQhhABkImUNpgMAAKsDAAAAAAAAAABaK2QDUwApJ2G6BAAACj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUG93ZXIgU2VyaWVzICg6bW9kOmBudW1weS5wb2x5bm9taWFsLnBvbHlub21pYWxgKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhIG51bWJlciBvZiBvYmplY3RzIChtb3N0bHkgZnVuY3Rpb25zKSB1c2VmdWwgZm9yCmRlYWxpbmcgd2l0aCBwb2x5bm9taWFscywgaW5jbHVkaW5nIGEgYFBvbHlub21pYWxgIGNsYXNzIHRoYXQKZW5jYXBzdWxhdGVzIHRoZSB1c3VhbCBhcml0aG1ldGljIG9wZXJhdGlvbnMuICAoR2VuZXJhbCBpbmZvcm1hdGlvbgpvbiBob3cgdGhpcyBtb2R1bGUgcmVwcmVzZW50cyBhbmQgd29ya3Mgd2l0aCBwb2x5bm9taWFsIG9iamVjdHMgaXMgaW4KdGhlIGRvY3N0cmluZyBmb3IgaXRzICJwYXJlbnQiIHN1Yi1wYWNrYWdlLCBgbnVtcHkucG9seW5vbWlhbGApLgoKQ2xhc3NlcwotLS0tLS0tCi4uIGF1dG9zdW1tYXJ5OjoKICAgOnRvY3RyZWU6IGdlbmVyYXRlZC8KCiAgIFBvbHlub21pYWwKCkNvbnN0YW50cwotLS0tLS0tLS0KLi4gYXV0b3N1bW1hcnk6OgogICA6dG9jdHJlZTogZ2VuZXJhdGVkLwoKICAgcG9seWRvbWFpbgogICBwb2x5emVybwogICBwb2x5b25lCiAgIHBvbHl4CgpBcml0aG1ldGljCi0tLS0tLS0tLS0KLi4gYXV0b3N1bW1hcnk6OgogICA6dG9jdHJlZTogZ2VuZXJhdGVkLwoKICAgcG9seWFkZAogICBwb2x5c3ViCiAgIHBvbHltdWx4CiAgIHBvbHltdWwKICAgcG9seWRpdgogICBwb2x5cG93CiAgIHBvbHl2YWwKICAgcG9seXZhbDJkCiAgIHBvbHl2YWwzZAogICBwb2x5Z3JpZDJkCiAgIHBvbHlncmlkM2QKCkNhbGN1bHVzCi0tLS0tLS0tCi4uIGF1dG9zdW1tYXJ5OjoKICAgOnRvY3RyZWU6IGdlbmVyYXRlZC8KCiAgIHBvbHlkZXIKICAgcG9seWludAoKTWlzYyBGdW5jdGlvbnMKLS0tLS0tLS0tLS0tLS0KLi4gYXV0b3N1bW1hcnk6OgogICA6dG9jdHJlZTogZ2VuZXJhdGVkLwoKICAgcG9seWZyb21yb290cwogICBwb2x5cm9vdHMKICAgcG9seXZhbGZyb21yb290cwogICBwb2x5dmFuZGVyCiAgIHBvbHl2YW5kZXIyZAogICBwb2x5dmFuZGVyM2QKICAgcG9seWNvbXBhbmlvbgogICBwb2x5Zml0CiAgIHBvbHl0cmltCiAgIHBvbHlsaW5lCgpTZWUgQWxzbwotLS0tLS0tLQpgbnVtcHkucG9seW5vbWlhbGAKCikb2ghwb2x5emVyb9oHcG9seW9uZdoFcG9seXjaCnBvbHlkb21haW7aCHBvbHlsaW5l2gdwb2x5YWRk2gdwb2x5c3Vi2ghwb2x5bXVseNoHcG9seW11bNoHcG9seWRpdtoHcG9seXBvd9oHcG9seXZhbNoQcG9seXZhbGZyb21yb290c9oHcG9seWRlctoHcG9seWludNoNcG9seWZyb21yb290c9oKcG9seXZhbmRlctoHcG9seWZpdNoIcG9seXRyaW3aCXBvbHlyb290c9oKUG9seW5vbWlhbNoJcG9seXZhbDJk2glwb2x5dmFsM2TaCnBvbHlncmlkMmTaCnBvbHlncmlkM2TaDHBvbHl2YW5kZXIyZNoMcG9seXZhbmRlcjNk6QAAAABOKQHaFG5vcm1hbGl6ZV9heGlzX2luZGV46QEAAAApAdoJcG9seXV0aWxzKQHaC0FCQ1BvbHlCYXNl6f////9jAgAAAAAAAAAAAAAABAAAAAMAAADzZAAAAJcAfAFkAWsDAAAAAHIWdAEAAAAAAAAAAAAAagEAAAAAAAAAAHwAfAFnAqYBAACrAQAAAAAAAAAAUwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAfABnAaYBAACrAQAAAAAAAAAAUwApAmHMAgAACiAgICBSZXR1cm5zIGFuIGFycmF5IHJlcHJlc2VudGluZyBhIGxpbmVhciBwb2x5bm9taWFsLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIG9mZiwgc2NsIDogc2NhbGFycwogICAgICAgIFRoZSAieS1pbnRlcmNlcHQiIGFuZCAic2xvcGUiIG9mIHRoZSBsaW5lLCByZXNwZWN0aXZlbHkuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgeSA6IG5kYXJyYXkKICAgICAgICBUaGlzIG1vZHVsZSdzIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBsaW5lYXIgcG9seW5vbWlhbCBgYG9mZiArCiAgICAgICAgc2NsKnhgYC4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIG51bXB5LnBvbHlub21pYWwuY2hlYnlzaGV2LmNoZWJsaW5lCiAgICBudW1weS5wb2x5bm9taWFsLmxlZ2VuZHJlLmxlZ2xpbmUKICAgIG51bXB5LnBvbHlub21pYWwubGFndWVycmUubGFnbGluZQogICAgbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlLmhlcm1saW5lCiAgICBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZS5oZXJtZWxpbmUKCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5LnBvbHlub21pYWwgaW1wb3J0IHBvbHlub21pYWwgYXMgUAogICAgPj4+IFAucG9seWxpbmUoMSwtMSkKICAgIGFycmF5KFsgMSwgLTFdKQogICAgPj4+IFAucG9seXZhbCgxLCBQLnBvbHlsaW5lKDEsLTEpKSAjIHNob3VsZCBiZSAwCiAgICAwLjAKCiAgICByHQAAACkC2gJucNoFYXJyYXkpAtoDb2Zm2gNzY2xzAgAAACAg+lIvb3B0L2Nsb3VkbGludXgvdmVudi9saWI2NC9weXRob24zLjExL3NpdGUtcGFja2FnZXMvbnVtcHkvcG9seW5vbWlhbC9wb2x5bm9taWFsLnB5cgYAAAByBgAAAHEAAABzMgAAAIAA8EABAAgLiGGCeIB43Q8RjHiYE5hjmArRDyPUDyPQCCPlDxGMeJgTmAWJf4x/0Age8wAAAABjAQAAAAAAAAAAAAAABQAAAAMAAADzQgAAAJcAdAEAAAAAAAAAAAAAagEAAAAAAAAAAHQEAAAAAAAAAAAAAHQGAAAAAAAAAAAAAHwApgMAAKsDAAAAAAAAAABTACkBYSAHAAAKICAgIEdlbmVyYXRlIGEgbW9uaWMgcG9seW5vbWlhbCB3aXRoIGdpdmVuIHJvb3RzLgoKICAgIFJldHVybiB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsCgogICAgLi4gbWF0aDo6IHAoeCkgPSAoeCAtIHJfMCkgKiAoeCAtIHJfMSkgKiAuLi4gKiAoeCAtIHJfbiksCgogICAgd2hlcmUgdGhlIGBgcl9uYGAgYXJlIHRoZSByb290cyBzcGVjaWZpZWQgaW4gYHJvb3RzYC4gIElmIGEgemVybyBoYXMKICAgIG11bHRpcGxpY2l0eSBuLCB0aGVuIGl0IG11c3QgYXBwZWFyIGluIGByb290c2AgbiB0aW1lcy4gRm9yIGluc3RhbmNlLAogICAgaWYgMiBpcyBhIHJvb3Qgb2YgbXVsdGlwbGljaXR5IHRocmVlIGFuZCAzIGlzIGEgcm9vdCBvZiBtdWx0aXBsaWNpdHkgMiwKICAgIHRoZW4gYHJvb3RzYCBsb29rcyBzb21ldGhpbmcgbGlrZSBbMiwgMiwgMiwgMywgM10uIFRoZSByb290cyBjYW4gYXBwZWFyCiAgICBpbiBhbnkgb3JkZXIuCgogICAgSWYgdGhlIHJldHVybmVkIGNvZWZmaWNpZW50cyBhcmUgYGNgLCB0aGVuCgogICAgLi4gbWF0aDo6IHAoeCkgPSBjXzAgKyBjXzEgKiB4ICsgLi4uICsgIHhebgoKICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgbGFzdCB0ZXJtIGlzIDEgZm9yIG1vbmljIHBvbHlub21pYWxzIGluIHRoaXMKICAgIGZvcm0uCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgcm9vdHMgOiBhcnJheV9saWtlCiAgICAgICAgU2VxdWVuY2UgY29udGFpbmluZyB0aGUgcm9vdHMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgb3V0IDogbmRhcnJheQogICAgICAgIDEtRCBhcnJheSBvZiB0aGUgcG9seW5vbWlhbCdzIGNvZWZmaWNpZW50cyBJZiBhbGwgdGhlIHJvb3RzIGFyZQogICAgICAgIHJlYWwsIHRoZW4gYG91dGAgaXMgYWxzbyByZWFsLCBvdGhlcndpc2UgaXQgaXMgY29tcGxleC4gIChzZWUKICAgICAgICBFeGFtcGxlcyBiZWxvdykuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBudW1weS5wb2x5bm9taWFsLmNoZWJ5c2hldi5jaGViZnJvbXJvb3RzCiAgICBudW1weS5wb2x5bm9taWFsLmxlZ2VuZHJlLmxlZ2Zyb21yb290cwogICAgbnVtcHkucG9seW5vbWlhbC5sYWd1ZXJyZS5sYWdmcm9tcm9vdHMKICAgIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZS5oZXJtZnJvbXJvb3RzCiAgICBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZS5oZXJtZWZyb21yb290cwoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgVGhlIGNvZWZmaWNpZW50cyBhcmUgZGV0ZXJtaW5lZCBieSBtdWx0aXBseWluZyB0b2dldGhlciBsaW5lYXIgZmFjdG9ycwogICAgb2YgdGhlIGZvcm0gYGAoeCAt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IGNvcnJlc3BvbmRpbmcgaW5kZXguCiAgICBtIDogaW50LCBvcHRpb25hbAogICAgICAgIE51bWJlciBvZiBkZXJpdmF0aXZlcyB0YWtlbiwgbXVzdCBiZSBub24tbmVnYXRpdmUuIChEZWZhdWx0OiAxKQogICAgc2NsIDogc2NhbGFyLCBvcHRpb25hbAogICAgICAgIEVhY2ggZGlmZmVyZW50aWF0aW9uIGlzIG11bHRpcGxpZWQgYnkgYHNjbGAuICBUaGUgZW5kIHJlc3VsdCBpcwogICAgICAgIG11bHRpcGxpY2F0aW9uIGJ5IGBgc2NsKiptYGAuICBUaGlzIGlzIGZvciB1c2UgaW4gYSBsaW5lYXIgY2hhbmdlCiAgICAgICAgb2YgdmFyaWFibGUuIChEZWZhdWx0OiAxKQogICAgYXhpcyA6IGludCwgb3B0aW9uYWwKICAgICAgICBBeGlzIG92ZXIgd2hpY2ggdGhlIGRlcml2YXRpdmUgaXMgdGFrZW4uIChEZWZhdWx0OiAwKS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBkZXIgOiBuZGFycmF5CiAgICAgICAgUG9seW5vbWlhbCBjb2VmZmljaWVudHMgb2YgdGhlIGRlcml2YXRpdmUuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBwb2x5aW50CgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsIGltcG9ydCBwb2x5bm9taWFsIGFzIFAKICAgID4+PiBjID0gKDEsMiwzLDQpICMgMSArIDJ4ICsgM3gqKjIgKyA0eCoqMwogICAgPj4+IFAucG9seWRlcihjKSAjIChkL2R4KShjKSA9IDIgKyA2eCArIDEyeCoqMgogICAgYXJyYXkoWyAgMi4sICAgNi4sICAxMi5dKQogICAgPj4+IFAucG9seWRlcihjLDMpICMgKGQqKjMvZHgqKjMpKGMpID0gMjQKICAgIGFycmF5KFsyNC5dKQogICAgPj4+IFAucG9seWRlcihjLHNjbD0tMSkgIyAoZC9kKC14KSkoYykgPSAtMiAtIDZ4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cG9seW5vbWlhbCBgYDEgKyAyKnggKyAzKngqKjJgYCB3aGlsZSBbWzEsMl0sWzEsMl1dCiAgICByZXByZXNlbnRzIGBgMSArIDEqeCArIDIqeSArIDIqeCp5YGAgaWYgYXhpcz0wIGlzIGBgeGBgIGFuZCBheGlzPTEgaXMKICAgIGBgeWBgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgMS1EIGFycmF5IG9mIHBvbHlub21pYWwgY29lZmZpY2llbnRzLCBvcmRlcmVkIGZyb20gbG93IHRvIGhpZ2guCiAgICBtIDogaW50LCBvcHRpb25hbAogICAgICAgIE9yZGVyIG9mIGludGVncmF0aW9uLCBtdXN0IGJlIHBvc2l0aXZlLiAoRGVmYXVsdDogMSkKICAgIGsgOiB7W10sIGxpc3QsIHNjYWxhcn0sIG9wdGlvbmFsCiAgICAgICAgSW50ZWdyYXRpb24gY29uc3RhbnQocykuICBUaGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludGVncmFsIGF0IHplcm8KICAgICAgICBpcyB0aGUgZmlyc3QgdmFsdWUgaW4gdGhlIGxpc3QsIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGludGVncmFsCiAgICAgICAgYXQgemVybyBpcyB0aGUgc2Vjb25kIHZhbHVlLCBldGMuICBJZiBgYGsgPT0gW11gYCAodGhlIGRlZmF1bHQpLAogICAgICAgIGFsbCBjb25zdGFudHMgYXJlIHNldCB0byB6ZXJvLiAgSWYgYGBtID09IDFgYCwgYSBzaW5nbGUgc2NhbGFyIGNhbgogICAgICAgIGJlIGdpdmVuIGluc3RlYWQgb2YgYSBsaXN0LgogICAgbGJuZCA6IHNjYWxhciwgb3B0aW9uYWwKICAgICAgICBUaGUgbG93ZXIgYm91bmQgb2YgdGhlIGludGVncmFsLiAoRGVmYXVsdDogMCkKICAgIHNjbCA6IHNjYWxhciwgb3B0aW9uYWwKICAgICAgICBGb2xsb3dpbmcgZWFjaCBpbnRlZ3JhdGlvbiB0aGUgcmVzdWx0IGlzICptdWx0aXBsaWVkKiBieSBgc2NsYAogICAgICAgIGJlZm9yZSB0aGUgaW50ZWdyYXRpb24gY29uc3RhbnQgaXMgYWRkZWQuIChEZWZhdWx0OiAxKQogICAgYXhpcyA6IGludCwgb3B0aW9uYWwKICAgICAgICBBeGlzIG92ZXIgd2hpY2ggdGhlIGludGVncmFsIGlzIHRha2VuLiAoRGVmYXVsdDogMCkuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgUyA6IG5kYXJyYXkKICAgICAgICBDb2VmZmljaWVudCBhcnJheSBvZiB0aGUgaW50ZWdyYWwuCgogICAgUmFpc2VzCiAgICAtLS0tLS0KICAgIFZhbHVlRXJyb3IKICAgICAgICBJZiBgYG0gPCAxYGAsIGBgbGVuKGspID4gbWBgLCBgYG5wLm5kaW0obGJuZCkgIT0gMGBgLCBvcgogICAgICAgIGBgbnAubmRpbShzY2wpICE9IDBgYC4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHlkZXIKCiAgICBOb3RlcwogICAgLS0tLS0KICAgIE5vdGUgdGhhdCB0aGUgcmVzdWx0IG9mIGVhY2ggaW50ZWdyYXRpb24gaXMgKm11bHRpcGxpZWQqIGJ5IGBzY2xgLiAgV2h5CiAgICBpcyB0aGlzIGltcG9ydGFudCB0byBub3RlPyAgU2F5IG9uZSBpcyBtYWtpbmcgYSBsaW5lYXIgY2hhbmdlIG9mCiAgICB2YXJpYWJsZSA6bWF0aDpgdSA9IGF4ICsgYmAgaW4gYW4gaW50ZWdyYWwgcmVsYXRpdmUgdG8gYHhgLiBUaGVuCiAgICA6bWF0aDpgZHggPSBkdS9hYCwgc28gb25lIHdpbGwgbmVlZCB0byBzZXQgYHNjbGAgZXF1YWwgdG8KICAgIDptYXRoOmAxL2FgIC0gcGVyaGFwcyBub3Qgd2hhdCBvbmUgd291bGQgaGF2ZSBmaXJzdCB0aG91Z2h0LgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbCBpbXBvcnQgcG9seW5vbWlhbCBhcyBQCiAgICA+Pj4gYyA9ICgxLDIsMykKICAgID4+PiBQ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CiAgICB4LnNoYXBlLiBJZiBgdGVuc29yYCBpcyBmYWxzZSB0aGUgc2hhcGUgd2lsbCBiZSBjLnNoYXBlWzE6XS4gTm90ZSB0aGF0CiAgICBzY2FsYXJzIGhhdmUgc2hhcGUgKCwpLgoKICAgIFRyYWlsaW5nIHplcm9zIGluIHRoZSBjb2VmZmljaWVudHMgd2lsbCBiZSB1c2VkIGluIHRoZSBldmFsdWF0aW9uLCBzbwogICAgdGhleSBzaG91bGQgYmUgYXZvaWRlZCBpZiBlZmZpY2llbmN5IGlzIGEgY29uY2Vybi4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBJZiBgeGAgaXMgYSBsaXN0IG9yIHR1cGxlLCBpdCBpcyBjb252ZXJ0ZWQgdG8gYW4gbmRhcnJheSwgb3RoZXJ3aXNlCiAgICAgICAgaXQgaXMgbGVmdCB1bmNoYW5nZWQgYW5kIHRyZWF0ZWQgYXMgYSBzY2FsYXIuIEluIGVpdGhlciBjYXNlLCBgeGAKICAgICAgICBvciBpdHMgZWxlbWVudHMgbXVzdCBzdXBwb3J0IGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiB3aXRoCiAgICAgICAgd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCiAgICBjIDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5IG9mIGNvZWZmaWNpZW50cyBvcmRlcmVkIHNvIHRoYXQgdGhlIGNvZWZmaWNpZW50cyBmb3IgdGVybXMgb2YKICAgICAgICBkZWdyZWUgbiBhcmUgY29udGFpbmVkIGluIGNbbl0uIElmIGBjYCBpcyBtdWx0aWRpbWVuc2lvbmFsIHRoZQogICAgICAgIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZSBwb2x5bm9taWFscy4gSW4gdGhlIHR3bwogICAgICAgIGRpbWVuc2lvbmFsIGNhc2UgdGhlIGNvZWZmaWNpZW50cyBtYXkgYmUgdGhvdWdodCBvZiBhcyBzdG9yZWQgaW4KICAgICAgICB0aGUgY29sdW1ucyBvZiBgY2AuCiAgICB0ZW5zb3IgOiBib29sZWFuLCBvcHRpb25hbAogICAgICAgIElmIFRydWUsIHRoZSBzaGFwZSBvZiB0aGUgY29lZmZpY2llbnQgYXJyYXkgaXMgZXh0ZW5kZWQgd2l0aCBvbmVzCiAgICAgICAgb24gdGhlIHJpZ2h0LCBvbmUgZm9yIGVhY2ggZGltZW5zaW9uIG9mIGB4YC4gU2NhbGFycyBoYXZlIGRpbWVuc2lvbiAwCiAgICAgICAgZm9yIHRoaXMgYWN0aW9uLiBUaGUgcmVzdWx0IGlzIHRoYXQgZXZlcnkgY29sdW1uIG9mIGNvZWZmaWNpZW50cyBpbgogICAgICAgIGBjYCBpcyBldmFsdWF0ZWQgZm9yIGV2ZXJ5IGVsZW1lbnQgb2YgYHhgLiBJZiBGYWxzZSwgYHhgIGlzIGJyb2FkY2FzdAogICAgICAgIG92ZXIgdGhlIGNvbHVtbnMgb2YgYGNgIGZvciB0aGUgZXZhbHVhdGlvbi4gIFRoaXMga2V5d29yZCBpcyB1c2VmdWwKICAgICAgICB3aGVuIGBjYCBpcyBtdWx0aWRpbWVuc2lvbmFsLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBUcnVlLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbHVlcyA6IG5kYXJyYXksIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHNoYXBlIG9mIHRoZSByZXR1cm5lZCBhcnJheSBpcyBkZXNjcmliZWQgYWJvdmUuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBwb2x5dmFsMmQsIHBvbHlncmlkMmQsIHBvbHl2YWwzZCwgcG9seWdyaWQzZAoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgVGhlIGV2YWx1YXRpb24gdXNlcyBIb3JuZXIncyBtZXRob2QuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLnBvbHlub21pYWwgaW1wb3J0IHBvbHl2YWwKICAgID4+PiBwb2x5dmFsKDEsIFsxLDIsM10pCiAg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aCB0aGUgZWxlbWVudHMgb2YgYHJgLgoKICAgIElmIGByYCBpcyBhIDEtRCBhcnJheSwgdGhlbiBgcCh4KWAgd2lsbCBoYXZlIHRoZSBzYW1lIHNoYXBlIGFzIGB4YC4gIElmIGByYAogICAgaXMgbXVsdGlkaW1lbnNpb25hbCwgdGhlbiB0aGUgc2hhcGUgb2YgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZgogICAgYHRlbnNvcmAuIElmIGB0ZW5zb3JgIGlzIGBgVHJ1ZWBgIHRoZSBzaGFwZSB3aWxsIGJlIHIuc2hhcGVbMTpdICsgeC5zaGFwZTsKICAgIHRoYXQgaXMsIGVhY2ggcG9seW5vbWlhbCBpcyBldmFsdWF0ZWQgYXQgZXZlcnkgdmFsdWUgb2YgYHhgLiBJZiBgdGVuc29yYCBpcwogICAgYGBGYWxzZWBgLCB0aGUgc2hhcGUgd2lsbCBiZSByLnNoYXBlWzE6XTsgdGhhdCBpcywgZWFjaCBwb2x5bm9taWFsIGlzCiAgICBldmFsdWF0ZWQgb25seSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYnJvYWRjYXN0IHZhbHVlIG9mIGB4YC4gTm90ZSB0aGF0CiAgICBzY2FsYXJzIGhhdmUgc2hhcGUgKCwpLgoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMTIKCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBJZiBgeGAgaXMgYSBsaXN0IG9yIHR1cGxlLCBpdCBpcyBjb252ZXJ0ZWQgdG8gYW4gbmRhcnJheSwgb3RoZXJ3aXNlCiAgICAgICAgaXQgaXMgbGVmdCB1bmNoYW5nZWQgYW5kIHRyZWF0ZWQgYXMgYSBzY2FsYXIuIEluIGVpdGhlciBjYXNlLCBgeGAKICAgICAgICBvciBpdHMgZWxlbWVudHMgbXVzdCBzdXBwb3J0IGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiB3aXRoCiAgICAgICAgd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgcmAuCiAgICByIDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5IG9mIHJvb3RzLiBJZiBgcmAgaXMgbXVsdGlkaW1lbnNpb25hbCB0aGUgZmlyc3QgaW5kZXggaXMgdGhlCiAgICAgICAgcm9vdCBpbmRleCwgd2hpbGUgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZQogICAgICAgIHBvbHlub21pYWxzLiBGb3IgaW5zdGFuY2UsIGluIHRoZSB0d28gZGltZW5zaW9uYWwgY2FzZSB0aGUgcm9vdHMKICAgICAgICBvZiBlYWNoIHBvbHlub21pYWwgbWF5IGJlIHRob3VnaHQgb2YgYXMgc3RvcmVkIGluIHRoZSBjb2x1bW5zIG9mIGByYC4KICAgIHRlbnNvciA6IGJvb2xlYW4sIG9wdGlvbmFsCiAgICAgICAgSWYgVHJ1ZSwgdGhlIHNoYXBlIG9mIHRoZSByb290cyBhcnJheSBpcyBleHRlbmRlZCB3aXRoIG9uZXMgb24gdGhlCiAgICAgICAgcmlnaHQsIG9uZSBmb3IgZWFjaCBkaW1lbnNpb24gb2YgYHhgLiBTY2FsYXJzIGhhdmUgZGltZW5zaW9uIDAgZm9yIHRoaXMKICAgICAgICBhY3Rpb24uIFRoZSByZXN1bHQgaXMgdGhhdCBldmVyeSBjb2x1bW4gb2YgY29lZmZpY2llbnRzIGluIGByYCBpcwogICAgICAgIGV2YWx1YXRlZCBmb3IgZXZlcnkgZWxlbWVudCBvZiBgeGAuIElmIEZhbHNlLCBgeGAgaXMgYnJvYWRjYXN0IG92ZXIgdGhlCiAgICAgICAgY29sdW1ucyBvZiBgcmAgZm9yIHRoZSBldmFsdWF0aW9uLiAgVGhpcyBrZXl3b3JkIGlzIHVzZWZ1bCB3aGVuIGByYCBpcwogICAgICAgIG11bHRpZGltZW5zaW9uYWwuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIFRydWUuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFsdWVzIDogbmRhcnJheSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBUaGUgc2hhcGUgb2YgdGhlIHJldHVybmVkIGFycmF5IGlzIGRlc2NyaWJlZCBhYm92ZS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHlyb290cywgcG9seWZyb21yb290cywgcG9seXZhbAoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5wb2x5bm9taWFsIGltcG9ydCBwb2x5dmFsZnJvbXJvb3RzCiAgICA+Pj4gcG9seXZhbGZyb21yb290cygxLCBbMSwyLDNdKQogICAgMC4wCiAgICA+Pj4gYSA9IG5wLmFyYW5nZSg0KS5yZXNoYXBlKDIsMikKICAgID4+PiBhCiAgICBhcnJheShbWzAsIDFdLAogICAgICAgICAgIFsyLCAzXV0pCiAgICA+Pj4gcG9seXZhbGZyb21yb290cyhhLCBbLTEsIDAsIDFdKQogICAgYXJyYXkoW1stMC4sICAgMC5dLAogICAgICAgICAgIFsgNi4sICAyNC5dXSkKICAgID4+PiByID0gbnAuYXJhbmdlKC0yLCAyKS5yZXNoYXBlKDIsMikgIyBtdWx0aWRpbWVuc2lvbmFsIGNvZWZmaWNpZW50cwogICAgPj4+IHIgIyBlYWNoIGNvbHVtbiBvZiByIGRlZmluZXMgb25lIHBvbHlub21pYWwKICAgIGFycmF5KFtbLTIsIC0xXSwKICAgICAgICAgICBbIDAsICAxXV0pCiAgICA+Pj4gYiA9IFstMiwgMV0KICAgID4+PiBwb2x5dmFsZnJvbXJvb3RzKGIsIHIsIHRlbnNvcj1UcnVlKQogICAgYXJyYXkoW1stMC4sICAzLl0sCiAgICAgICAgICAgWyAzLiwgMC5dXSkKICAgID4+PiBwb2x5dmFsZnJvbXJvb3RzKGIsIHIsIHRlbnNvcj1GYWxzZSkKICAgIGFycmF5KFstMC4sICAwLl0pCiAgICByHwAAAEZyTQAAAHJQAAAAcmkAAAB6LHgubmRpbSBtdXN0IGJlIDwgci5uZGltIHdoZW4gdGVuc29yID09IEZhbHNlch0AAAApAXJbAAAAKRByJAAAAHIlAAAAcjcAAAByUwAAANoGYXN0eXBl2gZkb3VibGVyawAAAHJsAAAAcmMAAABybQAAAHJuAAAAcm8AAAByWQAAAHJWAAAAclUAAADaBHByb2QpA3JwAAAA2gFycnEAAABzAwAAACAgIHIoAAAAcg4AAAByDgAAAPgCAABz1QAAAIAA9VYCAAkLjAiQEZghoCXQCCjRCCjUCCiAQdgHCIR3hHyQf9AHJtAHJtgMDY9IikiVUpRZ0Qwf1AwfiAHdBxGQIZVlnVSQXdEHI9QHI/AAAQUa3QwOjEqQcYlNjE2IAd0HEZAhlVKUWtEHINQHIPAABAVNAdgLEfAAAwlNAdgQEZcJkgmYIZwnoESoEawWoUvRGi/REDDUEDCIQYhB2A0OjFaQcZR20g0d0A0d3RIc0B1L0RJM1BJM0AxM3QsNjDeQMZBxkTWYcdALIdELIdQLIdAEIXIpAAAAYwMAAAAAAAAAAAAAAAYAAAADAAAA8zoAAACXAHQBAAAAAAAAAAAAAGoBAAAAAAAAAAB0BAAAAAAAAAAAAAB8AnwAfAGmBAAAqwQAAAAAAAAAAFMAKQFhSgYAAAogICAgRXZhbHVhdGUgYSAyLUQgcG9seW5vbWlhbCBhdCBwb2ludHMgKHgsIHkpLgoKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUKCiAgICAuLiBtYXRoOjogcCh4LHkpID0gXHN1bV97aSxqfSBjX3tpLGp9ICogeF5pICogeV5qCgogICAgVGhlIHBhcmFtZXRlcnMgYHhgIGFuZCBgeWAgYXJlIGNvbnZlcnRlZCB0byBhcnJheXMgb25seSBpZiB0aGV5IGFyZQogICAgdHVwbGVzIG9yIGEgbGlzdHMsIG90aGVyd2lzZSB0aGV5IGFyZSB0cmVhdGVkIGFzIGEgc2NhbGFycyBhbmQgdGhleQogICAgbXVzdCBoYXZlIHRoZSBzYW1lIHNoYXBlIGFmdGVyIGNvbnZlcnNpb24uIEluIGVpdGhlciBjYXNlLCBlaXRoZXIgYHhgCiAgICBhbmQgYHlgIG9yIHRoZWlyIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaXRpb24gYm90aAogICAgd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCgogICAgSWYgYGNgIGhhcyBmZXdlciB0aGFuIHR3byBkaW1lbnNpb25zLCBvbmVzIGFyZSBpbXBsaWNpdGx5IGFwcGVuZGVkIHRvCiAgICBpdHMgc2hhcGUgdG8gbWFrZSBpdCAyLUQuIFRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUgYy5zaGFwZVsyOl0gKwogICAgeC5zaGFwZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3RzCiAgICAgICAgVGhlIHR3byBkaW1lbnNpb25hbCBzZXJpZXMgaXMgZXZhbHVhdGVkIGF0IHRoZSBwb2ludHMgYCh4LCB5KWAsCiAgICAgICAgd2hlcmUgYHhgIGFuZCBgeWAgbXVzdCBoYXZlIHRoZSBzYW1lIHNoYXBlLiBJZiBgeGAgb3IgYHlgIGlzIGEgbGlzdAogICAgICAgIG9yIHR1cGxlLCBpdCBpcyBmaXJzdCBjb252ZXJ0ZWQgdG8gYW4gbmRhcnJheSwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQKICAgICAgICB1bmNoYW5nZWQgYW5kLCBpZiBpdCBpc24ndCBhbiBuZGFycmF5LCBpdCBpcyB0cmVhdGVkIGFzIGEgc2NhbGFyLgogICAgYyA6IGFycmF5X2xpa2UKICAgICAgICBBcnJheSBvZiBjb2VmZmljaWVudHMgb3JkZXJlZCBzbyB0aGF0IHRoZSBjb2VmZmljaWVudCBvZiB0aGUgdGVybQogICAgICAgIG9mIG11bHRpLWRlZ3JlZSBpLGogaXMgY29udGFpbmVkIGluIGBjW2ksal1gLiBJZiBgY2AgaGFzCiAgICAgICAgZGltZW5zaW9uIGdyZWF0ZXIgdGhhbiB0d28gdGhlIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZQogICAgICAgIHNldHMgb2YgY29lZmZpY2llbnRzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbHVlcyA6IG5kYXJyYXksIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHZhbHVlcyBvZiB0aGUgdHdvIGRpbWVuc2lvbmFsIHBvbHlub21pYWwgYXQgcG9pbnRzIGZvcm1lZCB3aXRoCiAgICAgICAgcGFpcnMgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMgZnJvbSBgeGAgYW5kIGB5YC4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHl2YWwsIHBvbHlncmlkMmQsIHBvbHl2YWwzZCwgcG9seWdyaWQzZAoKICAgIE5vdGVzCiAgICAtLS0tLQoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgqQNyKwAAANoGX3ZhbG5kcg0AAACpA3JwAAAA2gF5cjsAAABzAwAAACAgIHIoAAAAchcAAAByFwAAAFADAABzGwAAAIAA9V4BAAwOjDmVV5hhoBGgQdELJtQLJtAEJnIpAAAAYwMAAAAAAAAAAAAAAAYAAAADAAAA8zoAAACXAHQBAAAAAAAAAAAAAGoBAAAAAAAAAAB0BAAAAAAAAAAAAAB8AnwAfAGmBAAAqwQAAAAAAAAAAFMAKQFh0gYAAAogICAgRXZhbHVhdGUgYSAyLUQgcG9seW5vbWlhbCBvbiB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgeCBhbmQgeS4KCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlczoKCiAgICAuLiBtYXRoOjogcChhLGIpID0gXHN1bV97aSxqfSBjX3tpLGp9ICogYV5pICogYl5qCgogICAgd2hlcmUgdGhlIHBvaW50cyBgKGEsIGIpYCBjb25zaXN0IG9mIGFsbCBwYWlycyBmb3JtZWQgYnkgdGFraW5nCiAgICBgYWAgZnJvbSBgeGAgYW5kIGBiYCBmcm9tIGB5YC4gVGhlIHJlc3VsdGluZyBwb2ludHMgZm9ybSBhIGdyaWQgd2l0aAogICAgYHhgIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gYW5kIGB5YCBpbiB0aGUgc2Vjb25kLgoKICAgIFRoZSBwYXJhbWV0ZXJzIGB4YCBhbmQgYHlgIGFyZSBjb252ZXJ0ZWQgdG8gYXJyYXlzIG9ubHkgaWYgdGhleSBhcmUKICAgIHR1cGxlcyBvciBhIGxpc3RzLCBvdGhlcndpc2UgdGhleSBhcmUgdHJlYXRlZCBhcyBhIHNjYWxhcnMuIEluIGVpdGhlcgogICAgY2FzZSwgZWl0aGVyIGB4YCBhbmQgYHlgIG9yIHRoZWlyIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBtdWx0aXBsaWNhdGlvbgogICAgYW5kIGFkZGl0aW9uIGJvdGggd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCgogICAgSWYgYGNgIGhhcyBmZXdlciB0aGFuIHR3byBkaW1lbnNpb25zLCBvbmVzIGFyZSBpbXBsaWNpdGx5IGFwcGVuZGVkIHRvCiAgICBpdHMgc2hhcGUgdG8gbWFrZSBpdCAyLUQuIFRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUgYy5zaGFwZVsyOl0gKwogICAgeC5zaGFwZSArIHkuc2hhcGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0cwogICAgICAgIFRoZSB0d28gZGltZW5zaW9uYWwgc2VyaWVzIGlzIGV2YWx1YXRlZCBhdCB0aGUgcG9pbnRzIGluIHRoZQogICAgICAgIENhcnRlc2lhbiBwcm9kdWN0IG9mIGB4YCBhbmQgYHlgLiAgSWYgYHhgIG9yIGB5YCBpcyBhIGxpc3Qgb3IKICAgICAgICB0dXBsZSwgaXQgaXMgZmlyc3QgY29udmVydGVkIHRvIGFuIG5kYXJyYXksIG90aGVyd2lzZSBpdCBpcyBsZWZ0CiAgICAgICAgdW5jaGFuZ2VkIGFuZCwgaWYgaXQgaXNuJ3QgYW4gbmRhcnJheSwgaXQgaXMgdHJlYXRlZCBhcyBhIHNjYWxhci4KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgc28gdGhhdCB0aGUgY29lZmZpY2llbnRzIGZvciB0ZXJtcyBvZgogICAgICAgIGRlZ3JlZSBpLGogYXJlIGNvbnRhaW5lZCBpbiBgYGNbaSxqXWBgLiBJZiBgY2AgaGFzIGRpbWVuc2lvbgogICAgICAgIGdyZWF0ZXIgdGhhbiB0d28gdGhlIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZSBzZXRzIG9mCiAgICAgICAgY29lZmZpY2llbnRzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbHVlcyA6IG5kYXJyYXksIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHZhbHVlcyBvZiB0aGUgdHdvIGRpbWVuc2lvbmFsIHBvbHlub21pYWwgYXQgcG9pbnRzIGluIHRoZSBDYXJ0ZXNpYW4KICAgICAgICBwcm9kdWN0IG9mIGB4YCBhbmQgYHlgLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgcG9seXZhbCwgcG9seXZhbDJkLCBwb2x5dmFsM2QsIHBvbHlncmlkM2QKCiAgICBOb3RlcwogICAgLS0tLS0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIKkDcisAAADaB19ncmlkbmRyDQAAAHJ7AAAAcwMAAAAgICByKAAAAHIZAAAAchkAAACCAwAAcxsAAACAAPVkAQAMDow6lWeYcaAhoFHRCyfUCyfQBCdyKQAAAGMEAAAAAAAAAAAAAAAHAAAAAwAAAPM8AAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAdAQAAAAAAAAAAAAAfAN8AHwBfAKmBQAAqwUAAAAAAAAAAFMAKQFhlAYAAAogICAgRXZhbHVhdGUgYSAzLUQgcG9seW5vbWlhbCBhdCBwb2ludHMgKHgsIHksIHopLgoKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWVzOgoKICAgIC4uIG1hdGg6OiBwKHgseSx6KSA9IFxzdW1fe2ksaixrfSBjX3tpLGosa30gKiB4XmkgKiB5XmogKiB6XmsKCiAgICBUaGUgcGFyYW1ldGVycyBgeGAsIGB5YCwgYW5kIGB6YCBhcmUgY29udmVydGVkIHRvIGFycmF5cyBvbmx5IGlmCiAgICB0aGV5IGFyZSB0dXBsZXMgb3IgYSBsaXN0cywgb3RoZXJ3aXNlIHRoZXkgYXJlIHRyZWF0ZWQgYXMgYSBzY2FsYXJzIGFuZAogICAgdGhleSBtdXN0IGhhdmUgdGhlIHNhbWUgc2hhcGUgYWZ0ZXIgY29udmVyc2lvbi4gSW4gZWl0aGVyIGNhc2UsIGVpdGhlcgogICAgYHhgLCBgeWAsIGFuZCBgemAgb3IgdGhlaXIgZWxlbWVudHMgbXVzdCBzdXBwb3J0IG11bHRpcGxpY2F0aW9uIGFuZAogICAgYWRkaXRpb24gYm90aCB3aXRoIHRoZW1zZWx2ZXMgYW5kIHdpdGggdGhlIGVsZW1lbnRzIG9mIGBjYC4KCiAgICBJZiBgY2AgaGFzIGZld2VyIHRoYW4gMyBkaW1lbnNpb25zLCBvbmVzIGFyZSBpbXBsaWNpdGx5IGFwcGVuZGVkIHRvIGl0cwogICAgc2hhcGUgdG8gbWFrZSBpdCAzLUQuIFRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUgYy5zaGFwZVszOl0gKwogICAgeC5zaGFwZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5LCB6IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBUaGUgdGhyZWUgZGltZW5zaW9uYWwgc2VyaWVzIGlzIGV2YWx1YXRlZCBhdCB0aGUgcG9pbnRzCiAgICAgICAgYCh4LCB5LCB6KWAsIHdoZXJlIGB4YCwgYHlgLCBhbmQgYHpgIG11c3QgaGF2ZSB0aGUgc2FtZSBzaGFwZS4gIElmCiAgICAgICAgYW55IG9mIGB4YCwgYHlgLCBvciBgemAgaXMgYSBsaXN0IG9yIHR1cGxlLCBpdCBpcyBmaXJzdCBjb252ZXJ0ZWQKICAgICAgICB0byBhbiBuZGFycmF5LCBvdGhlcndpc2UgaXQgaXMgbGVmdCB1bmNoYW5nZWQgYW5kIGlmIGl0IGlzbid0IGFuCiAgICAgICAgbmRhcnJheSBpdCBpcyAgdHJlYXRlZCBhcyBhIHNjYWxhci4KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgc28gdGhhdCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHRlcm0gb2YKICAgICAgICBtdWx0aS1kZWdyZWUgaSxqLGsgaXMgY29udGFpbmVkIGluIGBgY1tpLGosa11gYC4gSWYgYGNgIGhhcyBkaW1lbnNpb24KICAgICAgICBncmVhdGVyIHRoYW4gMyB0aGUgcmVtYWluaW5nIGluZGljZXMgZW51bWVyYXRlIG11bHRpcGxlIHNldHMgb2YKICAgICAgICBjb2VmZmljaWVudHMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFsdWVzIDogbmRhcnJheSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBUaGUgdmFsdWVzIG9mIHRoZSBtdWx0aWRpbWVuc2lvbmFsIHBvbHlub21pYWwgb24gcG9pbnRzIGZvcm1lZCB3aXRoCiAgICAgICAgdHJpcGxlcyBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcyBmcm9tIGB4YCwgYHlgLCBhbmQgYHpgLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgcG9seXZhbCwgcG9seXZhbDJkLCBwb2x5Z3JpZDJkLCBwb2x5Z3JpZDNkCgogICAgTm90ZXMKICAgIC0tLS0tCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICByeQAAAKkEcnAAAAByfAAAANoBenI7AAAAcwQAAAAgICAgcigAAAByGAAAAHIYAAAAtwMAAHMdAAAAgAD1YAEADA6MOZVXmGGgEaBBoHHRCynUCynQBClyKQAAAGMEAAAAAAAAAAAAAAAHAAAAAwAAAPM8AAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAdAQAAAAAAAAAAAAAfAN8AHwBfAKmBQAAqwUAAAAAAAAAAFMAKQFhQAcAAAogICAgRXZhbHVhdGUgYSAzLUQgcG9seW5vbWlhbCBvbiB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgeCwgeSBhbmQgei4KCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlczoKCiAgICAuLiBtYXRoOjogcChhLGIsYykgPSBcc3VtX3tpLGosa30gY197aSxqLGt9ICogYV5pICogYl5qICogY15rCgogICAgd2hlcmUgdGhlIHBvaW50cyBgKGEsIGIsIGMpYCBjb25zaXN0IG9mIGFsbCB0cmlwbGVzIGZvcm1lZCBieSB0YWtpbmcKICAgIGBhYCBmcm9tIGB4YCwgYGJgIGZyb20gYHlgLCBhbmQgYGNgIGZyb20gYHpgLiBUaGUgcmVzdWx0aW5nIHBvaW50cyBmb3JtCiAgICBhIGdyaWQgd2l0aCBgeGAgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiwgYHlgIGluIHRoZSBzZWNvbmQsIGFuZCBgemAgaW4KICAgIHRoZSB0aGlyZC4KCiAgICBUaGUgcGFyYW1ldGVycyBgeGAsIGB5YCwgYW5kIGB6YCBhcmUgY29udmVydGVkIHRvIGFycmF5cyBvbmx5IGlmIHRoZXkKICAgIGFyZSB0dXBsZXMgb3IgYSBsaXN0cywgb3RoZXJ3aXNlIHRoZXkgYXJlIHRyZWF0ZWQgYXMgYSBzY2FsYXJzLiBJbgogICAgZWl0aGVyIGNhc2UsIGVpdGhlciBgeGAsIGB5YCwgYW5kIGB6YCBvciB0aGVpciBlbGVtZW50cyBtdXN0IHN1cHBvcnQKICAgIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpdGlvbiBib3RoIHdpdGggdGhlbXNlbHZlcyBhbmQgd2l0aCB0aGUgZWxlbWVudHMKICAgIG9mIGBjYC4KCiAgICBJZiBgY2AgaGFzIGZld2VyIHRoYW4gdGhyZWUgZGltZW5zaW9ucywgb25lcyBhcmUgaW1wbGljaXRseSBhcHBlbmRlZCB0bwogICAgaXRzIHNoYXBlIHRvIG1ha2UgaXQgMy1ELiBUaGUgc2hhcGUgb2YgdGhlIHJlc3VsdCB3aWxsIGJlIGMuc2hhcGVbMzpdICsKICAgIHguc2hhcGUgKyB5LnNoYXBlICsgei5zaGFwZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5LCB6IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3RzCiAgICAgICAgVGhlIHRocmVlIGRpbWVuc2lvbmFsIHNlcmllcyBpcyBldmFsdWF0ZWQgYXQgdGhlIHBvaW50cyBpbiB0aGUKICAgICAgICBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiBgeGAsIGB5YCwgYW5kIGB6YC4gIElmIGB4YCxgeWAsIG9yIGB6YCBpcyBhCiAgICAgICAgbGlzdCBvciB0dXBsZSwgaXQgaXMgZmlyc3QgY29udmVydGVkIHRvIGFuIG5kYXJyYXksIG90aGVyd2lzZSBpdCBpcwogICAgICAgIGxlZnQgdW5jaGFuZ2VkIGFuZCwgaWYgaXQgaXNuJ3QgYW4gbmRhcnJh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YGBwb2x5dmFsMmQoeCwgeSwgYylgYCB3aWxsIGJlIHRoZSBzYW1lCiAgICB1cCB0byByb3VuZG9mZi4gVGhpcyBlcXVpdmFsZW5jZSBpcyB1c2VmdWwgYm90aCBmb3IgbGVhc3Qgc3F1YXJlcwogICAgZml0dGluZyBhbmQgZm9yIHRoZSBldmFsdWF0aW9uIG9mIGEgbGFyZ2UgbnVtYmVyIG9mIDItRCBwb2x5bm9taWFscwogICAgb2YgdGhlIHNhbWUgZGVncmVlcyBhbmQgc2FtcGxlIHBvaW50cy4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5IDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5cyBvZiBwb2ludCBjb29yZGluYXRlcywgYWxsIG9mIHRoZSBzYW1lIHNoYXBlLiBUaGUgZHR5cGVzCiAgICAgICAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gZWl0aGVyIGZsb2F0NjQgb3IgY29tcGxleDEyOCBkZXBlbmRpbmcgb24KICAgICAgICB3aGV0aGVyIGFueSBvZiB0aGUgZWxlbWVudHMgYXJlIGNvbXBsZXguIFNjYWxhcnMgYXJlIGNvbnZlcnRlZCB0bwogICAgICAgIDEtRCBhcnJheXMuCiAgICBkZWcgOiBsaXN0IG9mIGludHMKICAgICAgICBMaXN0IG9mIG1heGltdW0gZGVncmVlcyBvZiB0aGUgZm9ybSBbeF9kZWcsIHlfZGVnXS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB2YW5kZXIyZCA6IG5kYXJyYXkKICAgICAgICBUaGUgc2hhcGUgb2YgdGhlIHJldHVybmVkIG1hdHJpeCBpcyBgYHguc2hhcGUgKyAob3JkZXIsKWBgLCB3aGVyZQogICAgICAgIDptYXRoOmBvcmRlciA9IChkZWdbMF0rMSkqKGRlZyhbMV0rMSlgLiAgVGhlIGR0eXBlIHdpbGwgYmUgdGhlIHNhbWUKICAgICAgICBhcyB0aGUgY29udmVydGVkIGB4YCBhbmQgYHlgLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgcG9seXZhbmRlciwgcG9seXZhbmRlcjNkLCBwb2x5dmFsMmQsIHBvbHl2YWwzZAoKICAgIKkDcisAAADaD192YW5kZXJfbmRfZmxhdHISAAAAKQNycAAAAHJ8AAAAcoUAAABzAwAAACAgIHIoAAAAchsAAAByGwAAAFgEAABzIwAAAIAA9VoBAAwO1AsdnXqtOtAeNrgRuEG4BsAD0QtE1AtE0AREcikAAABjBAAAAAAAAAAAAAAABgAAAAMAAADzWAAAAJcAdAEAAAAAAAAAAAAAagEAAAAAAAAAAHQEAAAAAAAAAAAAAHQEAAAAAAAAAAAAAHQEAAAAAAAAAAAAAGYDfAB8AXwCZgN8A6YDAACrAwAAAAAAAAAAUwApAWEMBwAAUHNldWRvLVZhbmRlcm1vbmRlIG1hdHJpeCBvZiBnaXZlbiBkZWdyZWVzLgoKICAgIFJldHVybnMgdGhlIHBzZXVkby1WYW5kZXJtb25kZSBtYXRyaXggb2YgZGVncmVlcyBgZGVnYCBhbmQgc2FtcGxlCiAgICBwb2ludHMgYCh4LCB5LCB6KWAuIElmIGBsLCBtLCBuYCBhcmUgdGhlIGdpdmVuIGRlZ3JlZXMgaW4gYHgsIHksIHpgLAogICAgdGhlbiBUaGUgcHNldWRvLVZhbmRlcm1vbmRlIG1hdHJpeCBpcyBkZWZpbmVkIGJ5CgogICAgLi4gbWF0aDo6IFZbLi4uLCAobSsxKShuKzEpaSArIChuKzEpaiArIGtdID0geF5pICogeV5qICogel5rLAoKICAgIHdoZXJlIGAwIDw9IGkgPD0gbGAsIGAwIDw9IGogPD0gbWAsIGFuZCBgMCA8PSBqIDw9IG5gLiAgVGhlIGxlYWRpbmcKICAgIGluZGljZXMgb2YgYFZgIGluZGV4IHRoZSBwb2ludHMgYCh4LCB5LCB6KWAgYW5kIHRoZSBsYXN0IGluZGV4IGVuY29kZXMKICAgIHRoZSBwb3dlcnMgb2YgYHhgLCBgeWAsIGFuZCBgemAuCgogICAgSWYgYGBWID0gcG9seXZhbmRlcjNkKHgsIHksIHosIFt4ZGVnLCB5ZGVnLCB6ZGVnXSlgYCwgdGhlbiB0aGUgY29sdW1ucwogICAgb2YgYFZgIGNvcnJlc3BvbmQgdG8gdGhlIGVsZW1lbnRzIG9mIGEgMy1EIGNvZWZmaWNpZW50IGFycmF5IGBjYCBvZgogICAgc2hhcGUgKHhkZWcgKyAxLCB5ZGVnICsgMSwgemRlZyArIDEpIGluIHRoZSBvcmRlcgoKICAgIC4uIG1hdGg6OiBjX3swMDB9LCBjX3swMDF9LCBjX3swMDJ9LC4uLiAsIGNfezAxMH0sIGNfezAxMX0sIGNfezAxMn0sLi4uCgogICAgYW5kICBgYG5wLmRvdChWLCBjLmZsYXQpYGAgYW5kIGBgcG9seXZhbDNkKHgsIHksIHosIGMpYGAgd2lsbCBiZSB0aGUKICAgIHNhbWUgdXAgdG8gcm91bmRvZmYuIFRoaXMgZXF1aXZhbGVuY2UgaXMgdXNlZnVsIGJvdGggZm9yIGxlYXN0IHNxdWFyZXMKICAgIGZpdHRpbmcgYW5kIGZvciB0aGUgZXZhbHVhdGlvbiBvZiBhIGxhcmdlIG51bWJlciBvZiAzLUQgcG9seW5vbWlhbHMKICAgIG9mIHRoZSBzYW1lIGRlZ3JlZXMgYW5kIHNhbXBsZSBwb2ludHMuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSwgeiA6IGFycmF5X2xpa2UKICAgICAgICBBcnJheXMgb2YgcG9pbnQgY29vcmRpbmF0ZXMsIGFsbCBvZiB0aGUgc2FtZSBzaGFwZS4gVGhlIGR0eXBlcyB3aWxsCiAgICAgICAgYmUgY29udmVydGVkIHRvIGVpdGhlciBmbG9hdDY0IG9yIGNvbXBsZXgxMjggZGVwZW5kaW5nIG9uIHdoZXRoZXIKICAgICAgICBhbnkgb2YgdGhlIGVsZW1lbnRzIGFyZSBjb21wbGV4LiBTY2FsYXJzIGFyZSBjb252ZXJ0ZWQgdG8gMS1ECiAgICAgICAgYXJyYXlzLgogICAgZGVnIDogbGlzdCBvZiBpbnRzCiAgICAgICAgTGlzdCBvZiBtYXhpbXVtIGRlZ3JlZXMgb2YgdGhlIGZvcm0gW3hfZGVnLCB5X2RlZywgel9kZWddLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbmRlcjNkIDogbmRhcnJheQogICAgICAgIFRoZSBzaGFwZSBvZiB0aGUgcmV0dXJuZWQgbWF0cml4IGlzIGBgeC5zaGFwZSArIChvcmRlciwpYGAsIHdoZXJlCiAgICAgICAgOm1hdGg6YG9yZGVyID0gKGRlZ1swXSsxKSooZGVnKFsxXSsxKSooZGVnWzJdKzEpYC4gIFRoZSBkdHlwZSB3aWxsCiAgICAgICAgYmUgdGhlIHNhbWUgYXMgdGhlIGNvbnZlcnRlZCBgeGAsIGB5YCwgYW5kIGB6YC4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHl2YW5kZXIsIHBvbHl2YW5kZXIzZCwgcG9seXZhbDJkLCBwb2x5dmFsM2QKCiAgICBOb3RlcwogICAgLS0tLS0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIHKLAAAAKQRycAAAAHJ8AAAAcoIAAAByhQAAAHMEAAAAICAgIHIoAAAAchwAAAByHAAAAIgEAABzJwAAAIAA9WYBAAwO1AsdnXqtOrV60B5CwFHIAcgxwEnIc9ELU9QLU9AEU3IpAAAARmMGAAAAAAAAAAAAAAAJAAAAAwAAAPNAAAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAdAQAAAAAAAAAAAAAfAB8AXwCfAN8BHwFpgcAAKsHAAAAAAAAAABTACkBYeAZAAAKICAgIExlYXN0LXNxdWFyZXMgZml0IG9mIGEgcG9seW5vbWlhbCB0byBkYXRhLgoKICAgIFJldHVybiB0aGUgY29lZmZpY2llbnRzIG9mIGEgcG9seW5vbWlhbCBvZiBkZWdyZWUgYGRlZ2AgdGhhdCBpcyB0aGUKICAgIGxlYXN0IHNxdWFyZXMgZml0IHRvIHRoZSBkYXRhIHZhbHVlcyBgeWAgZ2l2ZW4gYXQgcG9pbnRzIGB4YC4gSWYgYHlgIGlzCiAgICAxLUQgdGhlIHJldHVybmVkIGNvZWZmaWNpZW50cyB3aWxsIGFsc28gYmUgMS1ELiBJZiBgeWAgaXMgMi1EIG11bHRpcGxlCiAgICBmaXRzIGFyZSBkb25lLCBvbmUgZm9yIGVhY2ggY29sdW1uIG9mIGB5YCwgYW5kIHRoZSByZXN1bHRpbmcKICAgIGNvZWZmaWNpZW50cyBhcmUgc3RvcmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbnMgb2YgYSAyLUQgcmV0dXJuLgogICAgVGhlIGZpdHRlZCBwb2x5bm9taWFsKHMpIGFyZSBpbiB0aGUgZm9ybQoKICAgIC4uIG1hdGg6OiAgcCh4KSA9IGNfMCArIGNfMSAqIHggKyAuLi4gKyBjX24gKiB4Xm4sCgogICAgd2hlcmUgYG5gIGlzIGBkZWdgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHggOiBhcnJheV9saWtlLCBzaGFwZSAoYE1gLCkKICAgICAgICB4LWNvb3JkaW5hdGVzIG9mIHRoZSBgTWAgc2FtcGxlIChkYXRhKSBwb2ludHMgYGAoeFtpXSwgeVtpXSlgYC4KICAgIHkgOiBhcnJheV9saWtlLCBzaGFwZSAoYE1gLCkgb3IgKGBNYCwgYEtgKQogICAgICAgIHktY29vcmRpbmF0ZXMgb2YgdGhlIHNhbXBsZSBwb2ludHMuICBTZXZlcmFsIHNldHMgb2Ygc2FtcGxlIHBvaW50cwogICAgICAgIHNoYXJpbmcgdGhlIHNhbWUgeC1jb29yZGluYXRlcyBjYW4gYmUgKGluZGVwZW5kZW50bHkpIGZpdCB3aXRoIG9uZQogICAgICAgIGNhbGwgdG8gYHBvbHlmaXRgIGJ5IHBhc3NpbmcgaW4gZm9yIGB5YCBhIDItRCBhcnJheSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25lIGRhdGEgc2V0IHBlciBjb2x1bW4uCiAgICBkZWcgOiBpbnQgb3IgMS1EIGFycmF5X2xpa2UKICAgICAgICBEZWdyZWUocykgb2YgdGhlIGZpdHRpbmcgcG9seW5vbWlhbHMuIElmIGBkZWdgIGlzIGEgc2luZ2xlIGludGVnZXIKICAgICAgICBhbGwgdGVybXMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgYGRlZ2AndGggdGVybSBhcmUgaW5jbHVkZWQgaW4gdGhlCiAgICAgICAgZml0LiBGb3IgTnVtUHkgdmVyc2lvbnMgPj0gMS4xMS4wIGEgbGlzdCBvZiBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZQogICAgICAgIGRlZ3JlZXMgb2YgdGhlIHRlcm1zIHRvIGluY2x1ZGUgbWF5IGJlIHVzZWQgaW5zdGVhZC4KICAgIHJjb25kIDogZmxvYXQsIG9wdGlvbmFsCiAgICAgICAgUmVsYXRpdmUgY29uZGl0aW9uIG51bWJlciBvZiB0aGUgZml0LiAgU2luZ3VsYXIgdmFsdWVzIHNtYWxsZXIKICAgICAgICB0aGFuIGByY29uZGAsIHJlbGF0aXZlIHRvIHRoZSBsYXJnZXN0IHNpbmd1bGFyIHZhbHVlLCB3aWxsIGJlCiAgICAgICAgaWdub3JlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgbGVuKHgpKmVwc2BgLCB3aGVyZSBgZXBzYCBpcyB0aGUKICAgICAgICByZWxhdGl2ZSBwcmVjaXNpb24gb2YgdGhlIHBsYXRmb3JtJ3MgZmxvYXQgdHlwZSwgYWJvdXQgMmUtMTYgaW4KICAgICAgICBtb3N0IGNhc2VzLgogICAgZnVsbCA6IGJvb2wsIG9wdGlvbmFsCiAgICAgICAgU3dpdGNoIGRldGVybWluaW5nIHRoZSBuYXR1cmUgb2YgdGhlIHJldHVybiB2YWx1ZS4gIFdoZW4gYGBGYWxzZWBgCiAgICAgICAgKHRoZSBkZWZhdWx0KSBqdXN0IHRoZSBjb2VmZmljaWVudHMgYXJlIHJldHVybmVkOyB3aGVuIGBgVHJ1ZWBgLAogICAgICAgIGRpYWdub3N0aWMgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2luZ3VsYXIgdmFsdWUgZGVjb21wb3NpdGlvbiAodXNlZAogICAgICAgIHRvIHNvbHZlIHRoZSBmaXQncyBtYXRyaXggZXF1YXRpb24pIGlzIGFsc28gcmV0dXJuZWQuCiAgICB3IDogYXJyYXlfbGlrZSwgc2hhcGUgKGBNYCwpLCBvcHRpb25hbAogICAgICAgIFdlaWdodHMuIElmIG5vdCBOb25lLCB0aGUgd2VpZ2h0IGBgd1tpXWBgIGFwcGxpZXMgdG8gdGhlIHVuc3F1YXJlZAogICAgICAgIHJlc2lkdWFsIGBgeVtpXSAtIHlfaGF0W2ldYGAgYXQgYGB4W2ldYGAuIElkZWFsbHkgdGhlIHdlaWdodHMgYXJlCiAgICAgICAgY2hvc2VuIHNvIHRoYXQgdGhlIGVycm9ycyBvZiB0aGUgcHJvZHVjdHMgYGB3W2ldKnlbaV1gYCBhbGwgaGF2ZSB0aGUKICAgICAgICBzYW1lIHZhcmlhbmNlLiAgV2hlbiB1c2luZyBpbnZlcnNlLXZhcmlhbmNlIHdlaWdodGluZywgdXNlCiAgICAgICAgYGB3W2ldID0gMS9zaWdtYSh5W2ldKWBgLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgTm9uZS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS41LjAKCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBjb2VmIDogbmRhcnJheSwgc2hhcGUgKGBkZWdgICsgMSwpIG9yIChgZGVnYCArIDEsIGBLYCkKICAgICAgICBQb2x5bm9taWFsIGNvZWZmaWNpZW50cyBvcmRlcmVkIGZyb20gbG93IHRvIGhpZ2guICBJZiBgeWAgd2FzIDItRCwKICAgICAgICB0aGUgY29lZmZpY2llbnRzIGluIGNvbHVtbiBga2Agb2YgYGNvZWZgIHJlcHJlc2VudCB0aGUgcG9seW5vbWlhbAogICAgICAgIGZpdCB0byB0aGUgZGF0YSBpbiBgeWAncyBga2AtdGggY29sdW1uLgoKICAgIFtyZXNpZHVhbHMsIHJhbmssIHNpbmd1bGFyX3ZhbHVlcywgcmNvbmRdIDogbGlzdAogICAgICAgIFRoZXNlIHZhbHVlcyBhcmUgb25seSByZXR1cm5lZCBpZiBgYGZ1bGwgPT0gVHJ1ZWBgCgogICAgICAgIC0gcmVzaWR1YWxzIC0tIHN1bSBvZiBzcXVhcmVkIHJlc2lkdWFscyBvZiB0aGUgbGVhc3Qgc3F1YXJlcyBmaXQKICAgICAgICAtIHJhbmsgLS0gdGhlIG51bWVyaWNhbCByYW5rIG9mIHRoZSBzY2FsZWQgVmFuZGVybW9uZGUgbWF0cml4CiAgICAgICAgLSBzaW5ndWxhcl92YWx1ZXMgLS0gc2luZ3VsYXIgdmFsdWVzIG9mIHRoZSBzY2FsZWQgVmFuZGVybW9uZGUgbWF0cml4CiAgICAgICAgLSByY29uZCAtLSB2YWx1ZSBvZiBgcmNvbmRgLgoKICAgICAgICBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgYG51bXB5LmxpbmFsZy5sc3RzcWAuCgogICAgUmFpc2VzCiAgICAtLS0tLS0KICAgIFJhbmtXYXJuaW5nCiAgICAgICAgUmFpc2VkIGlmIHRoZSBtYXRyaXggaW4gdGhlIGxlYXN0LXNxdWFyZXMgZml0IGlzIHJhbmsgZGVmaWNpZW50LgogICAgICAgIFRoZSB3YXJuaW5nIGlzIG9ubHkgcmFpc2VkIGlmIGBgZnVsbCA9PSBGYWxzZWBgLiAgVGhlIHdhcm5pbmdzIGNhbgogICAgICAgIGJlIHR1cm5lZCBvZmYgYnk6CgogICAgICAgID4+PiBpbXBvcnQgd2FybmluZ3MKICAgICAgICA+Pj4gd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBucC5SYW5rV2FybmluZykKCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIG51bXB5LnBvbHlub21pYWwuY2hlYnlzaGV2LmNoZWJmaXQKICAgIG51bXB5LnBvbHlub21pYWwubGVnZW5kcmUubGVnZml0CiAgICBudW1weS5wb2x5bm9taWFsLmxhZ3VlcnJlLmxhZ2ZpdAogICAgbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlLmhlcm1maXQKICAgIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZV9lLmhlcm1lZml0CiAgICBwb2x5dmFsIDogRXZhbHVhdGVzIGEgcG9seW5vbWlhbC4KICAgIHBvbHl2YW5kZXIgOiBWYW5kZXJtb25kZSBtYXRyaXggZm9yIHBvd2Vycy4KICAgIG51bXB5LmxpbmFsZy5sc3RzcSA6IENvbXB1dGVzIGEgbGVhc3Qtc3F1YXJlcyBmaXQgZnJvbSB0aGUgbWF0cml4LgogICAgc2NpcHkuaW50ZXJwb2xhdGUuVW5pdmFyaWF0ZVNwbGluZSA6IENvbXB1dGVzIHNwbGluZSBmaXRzLgoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgVGhlIHNvbHV0aW9uIGlzIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgYHBgIHRoYXQgbWluaW1pemVzCiAgICB0aGUgc3VtIG9mIHRoZSB3ZWlnaHRlZCBzcXVhcmVkIGVycm9ycwoKICAgIC4uIG1hdGg6OiBFID0gXHN1bV9qIHdfal4yICogfHlfaiAtIHAoeF9qKXxeMiwKCiAgICB3aGVyZSB0aGUgOm1hdGg6YHdfamAgYXJlIHRoZSB3ZWlnaHRzLiBUaGlzIHByb2JsZW0gaXMgc29sdmVkIGJ5CiAgICBzZXR0aW5nIHVwIHRoZSAodHlwaWNhbGx5KSBvdmVyLWRldGVybWluZWQgbWF0cml4IGVxdWF0aW9uOgoKICAgIC4uIG1hdGg6OiBWKHgpICogYyA9IHcgKiB5LAoKICAgIHdoZXJlIGBWYCBpcyB0aGUgd2VpZ2h0ZWQgcHNldWRvIFZhbmRlcm1vbmRlIG1hdHJpeCBvZiBgeGAsIGBjYCBhcmUgdGhlCiAgICBjb2VmZmljaWVudHMgdG8gYmUgc29sdmVkIGZvciwgYHdgIGFyZSB0aGUgd2VpZ2h0cywgYW5kIGB5YCBhcmUgdGhlCiAgICBvYnNlcnZlZCB2YWx1ZXMuICBUaGlzIGVxdWF0aW9uIGlzIHRoZW4gc29sdmVkIHVzaW5nIHRoZSBzaW5ndWxhciB2YWx1ZQogICAgZGVjb21wb3NpdGlvbiBvZiBgVmAuCgogICAgSWYgc29tZSBvZiB0aGUgc2luZ3VsYXIgdmFsdWVzIG9mIGBWYCBhcmUgc28gc21hbGwgdGhhdCB0aGV5IGFyZQogICAgbmVnbGVjdGVkIChhbmQgYGZ1bGxgID09IGBgRmFsc2VgYCksIGEgYFJhbmtXYXJuaW5nYCB3aWxsIGJlIHJhaXNlZC4KICAgIFRoaXMgbWVhbnMgdGhhdCB0aGUgY29lZmZpY2llbnQgdmFsdWVzIG1heSBiZSBwb29ybHkgZGV0ZXJtaW5lZC4KICAgIEZpdHRpbmcgdG8gYSBsb3dlciBvcmRlciBwb2x5bm9taWFsIHdpbGwgdXN1YWxseSBnZXQgcmlkIG9mIHRoZSB3YXJuaW5nCiAgICAoYnV0IG1heSBub3QgYmUgd2hhdCB5b3Ugd2FudCwgb2YgY291cnNlOyBpZiB5b3UgaGF2ZSBpbmRlcGVuZGVudAogICAgcmVhc29uKHMpIGZvciBjaG9vc2luZyB0aGUgZGVncmVlIHdoaWNoIGlzbid0IHdvcmtpbmcsIHlvdSBtYXkgaGF2ZSB0bzoKICAgIGEpIHJlY29uc2lkZXIgdGhvc2UgcmVhc29ucywgYW5kL29yIGIpIHJlY29uc2lkZXIgdGhlIHF1YWxpdHkgb2YgeW91cgogICAgZGF0YSkuICBUaGUgYHJjb25kYCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUgc2V0IHRvIGEgdmFsdWUgc21hbGxlciB0aGFuCiAgICBpdHMgZGVmYXVsdCwgYnV0IHRoZSByZXN1bHRpbmcgZml0IG1heSBiZSBzcHVyaW91cyBhbmQgaGF2ZSBsYXJnZQogICAgY29udHJpYnV0aW9ucyBmcm9tIHJvdW5kb2ZmIGVycm9yLgoKICAgIFBvbHlub21pYWwgZml0cyB1c2luZyBkb3VibGUgcHJlY2lzaW9uIHRlbmQgdG8gImZhaWwiIGF0IGFib3V0CiAgICAocG9seW5vbWlhbCkgZGVncmVlIDIwLiBGaXRzIHVzaW5nIENoZWJ5c2hldiBvciBMZWdlbmRyZSBzZXJpZXMgYXJlCiAgICBnZW5lcmFsbHkgYmV0dGVyIGNvbmRpdGlvbmVkLCBidXQgbXVjaCBjYW4gc3RpbGwgZGVwZW5kIG9uIHRoZQogICAgZGlzdHJpYnV0aW9uIG9mIHRoZSBzYW1wbGUgcG9pbnRzIGFuZCB0aGUgc21vb3RobmVzcyBvZiB0aGUgZGF0YS4gIElmCiAgICB0aGUgcXVhbGl0eSBvZiB0aGUgZml0IGlzIGluYWRlcXVhdGUsIHNwbGluZXMgbWF5IGJlIGEgZ29vZAogICAgYWx0ZXJuYXRpdmUuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gbnAucmFuZG9tLnNlZWQoMTIzKQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbCBpbXBvcnQgcG9seW5vbWlhbCBhcyBQCiAgICA+Pj4geCA9IG5wLmxpbnNwYWNlKC0xLDEsNTEpICMgeCAiZGF0YSI6IFstMSwgLTAuOTYsIC4uLiwgMC45NiwgMV0KICAgID4+PiB5ID0geCoqMyAtIHggKyBucC5yYW5kb20ucmFuZG4obGVuKHgpKSAgIyB4XjMgLSB4ICsgR2F1c3NpYW4gbm9pc2UKICAgID4+PiBjLCBzdGF0cyA9IFAucG9seWZpdCh4LHksMyxmdWxsPVRydWUpCiAgICA+Pj4gbnAucmFuZG9tLnNlZWQoMTIzKQogICAgPj4+IGMgIyBjWzBdLCBjWzJdIHNob3VsZCBi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AKsBAAAAAAAAAAB9AnwCoAkAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AlMAKQdhGgYAAAogICAgQ29tcHV0ZSB0aGUgcm9vdHMgb2YgYSBwb2x5bm9taWFsLgoKICAgIFJldHVybiB0aGUgcm9vdHMgKGEuay5hLiAiemVyb3MiKSBvZiB0aGUgcG9seW5vbWlhbAoKICAgIC4uIG1hdGg6OiBwKHgpID0gXHN1bV9pIGNbaV0gKiB4XmkuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYyA6IDEtRCBhcnJheV9saWtlCiAgICAgICAgMS1EIGFycmF5IG9mIHBvbHlub21pYWwgY29lZmZpY2llbnRzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG91dCA6IG5kYXJyYXkKICAgICAgICBBcnJheSBvZiB0aGUgcm9vdHMgb2YgdGhlIHBvbHlub21pYWwuIElmIGFsbCB0aGUgcm9vdHMgYXJlIHJlYWwsCiAgICAgICAgdGhlbiBgb3V0YCBpcyBhbHNvIHJlYWwsIG90aGVyd2lzZSBpdCBpcyBjb21wbGV4LgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgbnVtcHkucG9seW5vbWlhbC5jaGVieXNoZXYuY2hlYnJvb3RzCiAgICBudW1weS5wb2x5bm9taWFsLmxlZ2VuZHJlLmxlZ3Jvb3RzCiAgICBudW1weS5wb2x5bm9taWFsLmxhZ3VlcnJlLmxhZ3Jvb3RzCiAgICBudW1weS5wb2x5bm9taWFsLmhlcm1pdGUuaGVybXJvb3RzCiAgICBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZS5oZXJtZXJvb3RzCgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBUaGUgcm9vdCBlc3RpbWF0ZXMgYXJlIG9idGFpbmVkIGFzIHRoZSBlaWdlbnZhbHVlcyBvZiB0aGUgY29tcGFuaW9uCiAgICBtYXRyaXgsIFJvb3RzIGZhciBmcm9tIHRoZSBvcmlnaW4gb2YgdGhlIGNvbXBsZXggcGxhbmUgbWF5IGhhdmUgbGFyZ2UKICAgIGVycm9ycyBkdWUgdG8gdGhlIG51bWVyaWNh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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 10
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
chebyshev.cpython-311.pyc
72.84 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
hermite.cpython-311.pyc
60.65 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
hermite_e.cpython-311.pyc
60.42 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
laguerre.cpython-311.pyc
58.41 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
legendre.cpython-311.pyc
59.03 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
polynomial.cpython-311.pyc
55.05 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
polyutils.cpython-311.pyc
32.05 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
setup.cpython-311.pyc
873 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
_polybase.cpython-311.pyc
48.85 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
__init__.cpython-311.pyc
7.02 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).