REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 210.17 KB
Close
/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/sql/__pycache__/schema.cpython-311.pyc
Text
Base64
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c3M6YH5zcWxhbGNoZW15LnNjaGVtYS5NZXRhRGF0YWAuIE1ldGFEYXRhIHNlcnZlcyBhcyBhIGxvZ2ljYWwgZ3JvdXBpbmcgb2YKc2NoZW1hIGVsZW1lbnRzLCBhbmQgY2FuIGFsc28gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjdHVhbCBkYXRhYmFzZSBjb25uZWN0aW9uCnN1Y2ggdGhhdCBvcGVyYXRpb25zIGludm9sdmluZyB0aGUgY29udGFpbmVkIGVsZW1lbnRzIGNhbiBjb250YWN0IHRoZSBkYXRhYmFzZQphcyBuZWVkZWQuCgpUd28gb2YgdGhlIGVsZW1lbnRzIGhlcmUgYWxzbyBidWlsZCB1cG9uIHRoZWlyICJzeW50YWN0aWMiIGNvdW50ZXJwYXJ0cywgd2hpY2gKYXJlIGRlZmluZWQgaW4gOmNsYXNzOmB+c3FsYWxjaGVteS5zcWwuZXhwcmVzc2lvbi5gLCBzcGVjaWZpY2FsbHkKOmNsYXNzOmB+c3FsYWxjaGVteS5zY2hlbWEuVGFibGVgIGFuZCA6Y2xhc3M6YH5zcWxhbGNoZW15LnNjaGVtYS5Db2x1bW5gLgpTaW5jZSB0aGVzZSBvYmplY3RzIGFyZSBwYXJ0IG9mIHRoZSBTUUwgZXhwcmVzc2lvbiBsYW5ndWFnZSwgdGhleSBhcmUgdXNhYmxlCmFzIGNvbXBvbmVudHMgaW4gU1FMIGV4cHJlc3Npb25zLgoK6QAAAAApAdoPYWJzb2x1dGVfaW1wb3J0TukBAAAAKQHaA2RkbCkB2gh0eXBlX2FwaSkB2gh2aXNpdG9ycykB2g5fYmluZF9vcl9lcnJvcikB2hBDb2x1bW5Db2xsZWN0aW9uKQHaDURpYWxlY3RLV0FyZ3MpAdoRU2NoZW1hRXZlbnRUYXJnZXQpAdoNX2FzX3RydW5jYXRlZCkB2hdfZG9jdW1lbnRfdGV4dF9jb2VyY2lvbikB2hBfbGl0ZXJhbF9hc190ZXh0KQHaDUNsYXVzZUVsZW1lbnQpAdoMQ29sdW1uQ2xhdXNlKQHaDUNvbHVtbkVsZW1lbnQpAdoLcXVvdGVkX25hbWUpAdoKVGV4dENsYXVzZSkB2gtUYWJsZUNsYXVzZekCAAAAqQHaBWV2ZW50KQHaA2V4YykB2gppbnNw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bGVgCiAgICBjb25zdHJ1Y3RvciB3aXRoIHRoZSBzYW1lIG5hbWUgYW5kIHNhbWUgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCBhcmd1bWVudAogICAgYSBzZWNvbmQgdGltZSB3aWxsIHJldHVybiB0aGUgKnNhbWUqIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgIG9iamVjdCAtIGluIHRoaXMgd2F5CiAgICB0aGUgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBjb25zdHJ1Y3RvciBhY3RzIGFzIGEgcmVnaXN0cnkgZnVuY3Rpb24uCgogICAgLi4gc2VlYWxzbzo6CgogICAgICAgIDpyZWY6YG1ldGFkYXRhX2Rlc2NyaWJpbmdgIC0gSW50cm9kdWN0aW9uIHRvIGRhdGFiYXNlIG1ldGFkYXRhCgogICAgQ29uc3RydWN0b3IgYXJndW1lbnRzIGFyZSBhcyBmb2xsb3dzOgoKICAgIDpwYXJhbSBuYW1lOiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlIGFzIHJlcHJlc2VudGVkIGluIHRoZSBkYXRhYmFzZS4KCiAgICAgICAgVGhlIHRhYmxlIG5hbWUsIGFsb25nIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBgYHNjaGVtYWBgIHBhcmFtZXRlciwKICAgICAgICBmb3JtcyBhIGtleSB3aGljaCB1bmlxdWVseSBpZGVudGlmaWVzIHRoaXMgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIHdpdGhpbgogICAgICAgIHRoZSBvd25pbmcgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCBjb2xsZWN0aW9uLgogICAgICAgIEFkZGl0aW9uYWwgY2FsbHMgdG8gOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCB3aXRoIHRoZSBzYW1lIG5hbWUsCiAgICAgICAgbWV0YWRhdGEsCiAgICAgICAgYW5kIHNjaGVtYSBuYW1lIHdpbGwgcmV0dXJuIHRoZSBzYW1lIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb2JqZWN0LgoKICAgICAgICBOYW1lcyB3aGljaCBjb250YWluIG5vIHVwcGVyIGNhc2UgY2hhcmFjdGVycwogICAgICAgIHdpbGwgYmUgdHJlYXRlZCBhcyBjYXNlIGluc2Vuc2l0aXZlIG5hbWVzLCBhbmQgd2lsbCBub3QgYmUgcXVvdGVkCiAgICAgICAgdW5sZXNzIHRoZXkgYXJlIGEgcmVzZXJ2ZWQgd29yZCBvciBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycy4KICAgICAgICBBIG5hbWUgd2l0aCBhbnkgbnVtYmVyIG9mIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBjb25zaWRlcmVkCiAgICAgICAgdG8gYmUgY2FzZSBzZW5zaXRpdmUsIGFuZCB3aWxsIGJlIHNlbnQgYXMgcXVvdGVkLgoKICAgICAgICBUbyBlbmFibGUgdW5jb25kaXRpb25hbCBxdW90aW5nIGZvciB0aGUgdGFibGUgbmFtZSwgc3BlY2lmeSB0aGUgZmxhZwogICAgICAgIGBgcXVvdGU9VHJ1ZWBgIHRvIHRoZSBjb25zdHJ1Y3Rvciwgb3IgdXNlIHRoZSA6Y2xhc3M6YC5xdW90ZWRfbmFtZWAKICAgICAgICBjb25zdHJ1Y3QgdG8gc3BlY2lmeSB0aGUgbmFtZS4KCiAgICA6cGFyYW0gbWV0YWRhdGE6IGEgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYAogICAgICAgIG9iamVjdCB3aGljaCB3aWxsIGNvbnRhaW4gdGhpcwogICAgICAgIHRhYmxlLiAgVGhlIG1ldGFkYXRhIGlzIHVzZWQgYXMgYSBwb2ludCBvZiBhc3NvY2lhdGlvbiBvZiB0aGlzIHRhYmxlCiAgICAgICAgd2l0aCBvdGhlciB0YWJsZXMgd2hpY2ggYXJlIHJlZmVyZW5jZWQgdmlhIGZvcmVpZ24ga2V5LiAgSXQgYWxzbwogICAgICAgIG1heSBiZSB1c2VkIHRvIGFzc29jaWF0ZSB0aGlzIHRhYmxlIHdpdGggYSBwYXJ0aWN1bGFyCiAgICAgICAgOmNsYXNzOmAuQ29ubmVjdGFibGVgLgoKICAgIDpwYXJhbSBcKmFyZ3M6IEFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIHVzZWQgcHJpbWFyaWx5CiAgICAgICAgdG8gYWRkIHRoZSBsaXN0IG9mIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgb2JqZWN0cyBjb250YWluZWQgd2l0aGluIHRoaXMKICAgICAgICB0YWJsZS4gU2ltaWxhciB0byB0aGUgc3R5bGUgb2YgYSBDUkVBVEUgVEFCTEUgc3RhdGVtZW50LCBvdGhlcgogICAgICAgIDpjbGFzczpgLlNjaGVtYUl0ZW1gIGNvbnN0cnVjdHMgbWF5IGJlIGFkZGVkIGhlcmUsIGluY2x1ZGluZwogICAgICAgIDpjbGFzczpgLlByaW1hcnlLZXlDb25zdHJhaW50YCwgYW5kCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YC4KCiAgICA6cGFyYW0gYXV0b2xvYWQ6IERlZmF1bHRzIHRvIEZhbHNlLCB1bmxlc3MKICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRfd2l0aGAKICAgICAgICBpcyBzZXQgaW4gd2hpY2ggY2FzZSBpdCBkZWZhdWx0cyB0byBUcnVlOyA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgIG9iamVjdHMKICAgICAgICBmb3IgdGhpcyB0YWJsZSBzaG91bGQgYmUgcmVmbGVjdGVkIGZyb20gdGhlIGRhdGFiYXNlLCBwb3NzaWJseQogICAgICAgIGF1Z21lbnRpbmcgb3IgcmVwbGFjaW5nIGV4aXN0aW5nIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgb2JqZWN0cyB0aGF0IHdlcmUKICAgICAgICBleHBsaWNpdGx5IHNwZWNpZmllZC4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjAuMCBzZXR0aW5nIHRoZQogICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5hdXRvbG9hZF93aXRoYAogICAgICAgICAgIHBhcmFtZXRlciBpbXBsaWVzIHRoYXQgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmF1dG9sb2FkYAogICAgICAgICAgIHdpbGwgZGVmYXVsdAogICAgICAgICAgIHRvIFRydWUuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgbWV0YWRhdGFfcmVmbGVjdGlvbl90b3BsZXZlbGAKCiAgICA6cGFyYW0gYXV0b2xvYWRfcmVwbGFjZTogRGVmYXVsdHMgdG8gYGBUcnVlYGA7IHdoZW4gdXNpbmcKICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRgCiAgICAgICAgaW4gY29uanVuY3Rpb24gd2l0aCA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuZXh0ZW5kX2V4aXN0aW5nYCwKICAgICAgICBpbmRpY2F0ZXMKICAgICAgICB0aGF0IDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIG9iamVjdHMgcHJlc2VudCBpbiB0aGUgYWxyZWFkeS1leGlzdGluZwogICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICBvYmplY3Qgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggY29sdW1ucyBvZiB0aGUgc2FtZQogICAgICAgIG5hbWUgcmV0cmlldmVkIGZyb20gdGhlIGF1dG9sb2FkIHByb2Nlc3MuICAgV2hlbiBgYEZhbHNlYGAsIGNvbHVtbnMKICAgICAgICBhbHJlYWR5IHByZXNlbnQgdW5kZXIgZXhpc3RpbmcgbmFtZXMgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlCiAgICAgICAgcmVmbGVjdGlvbiBwcm9jZXNzLgoKICAgICAgICBOb3RlIHRoYXQgdGhpcyBzZXR0aW5nIGRvZXMgbm90IGltcGFjdCA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYCBvYmplY3RzCiAgICAgICAgc3BlY2lmaWVkIHByb2dyYW1tYXRpY2FsbHkgd2l0aGluIHRoZSBjYWxsIHRvIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICB0aGF0CiAgICAgICAgYWxzbyBpcyBhdXRvbG9hZGluZzsgdGhvc2UgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb2JqZWN0cyB3aWxsIGFsd2F5cwogICAgICAgIHJlcGxhY2UgZXhpc3RpbmcgY29sdW1ucyBvZiB0aGUgc2FtZSBuYW1lIHdoZW4KICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuZXh0ZW5kX2V4aXN0aW5nYCBpcyBgYFRydWVgYC4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRgCgogICAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuZXh0ZW5kX2V4aXN0aW5nYAoKICAgIDpwYXJhbSBhdXRvbG9hZF93aXRoOiBBbiA6Y2xhc3M6YF9lbmdpbmUuRW5naW5lYCBvcgogICAgICAgIDpjbGFzczpgX2VuZ2luZS5Db25uZWN0aW9uYCBvYmplY3QKICAgICAgICB3aXRoIHdoaWNoIHRoaXMgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBvYmplY3Qgd2lsbCBiZSByZWZsZWN0ZWQ7IHdoZW4KICAgICAgICBzZXQgdG8gYSBub24tTm9uZSB2YWx1ZSwgaXQgaW1wbGllcyB0aGF0CiAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmF1dG9sb2FkYAogICAgICAgIGlzIGBgVHJ1ZWBgLiAgIElmIGxlZnQgdW5zZXQsIGJ1dCA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRgCiAgICAgICAgaXMKICAgICAgICBleHBsaWNpdGx5IHNldCB0byBgYFRydWVgYCwgYW4gYXV0b2xvYWQgb3BlcmF0aW9uIHdpbGwgYXR0ZW1wdCB0bwogICAgICAgIHByb2NlZWQgYnkgbG9jYXRpbmcgYW4gOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAgb3IKICAgICAgICA6Y2xhc3M6YF9lbmdpbmUuQ29ubmVjdGlvbmAgYm91bmQKICAgICAgICB0byB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgIG9iamVjdC4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRgCgogICAgOnBhcmFtIGV4dGVuZF9leGlzdGluZzogV2hlbiBgYFRydWVgYCwgaW5kaWNhdGVzIHRoYXQgaWYgdGhpcwogICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBnaXZlbgogICAgICAgIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAsCiAgICAgICAgYXBwbHkgZnVydGhlciBhcmd1bWVudHMgd2l0aGluIHRoZSBjb25zdHJ1Y3RvciB0byB0aGUgZXhpc3RpbmcKICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLgoKICAgICAgICBJZiA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuZXh0ZW5kX2V4aXN0aW5nYCBvcgogICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5rZWVwX2V4aXN0aW5nYCBhcmUgbm90IHNldCwKICAgICAgICBhbmQgdGhlIGdpdmVuIG5hbWUKICAgICAgICBvZiB0aGUgbmV3IDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgcmVmZXJzIHRvIGEgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIHRoYXQgaXMKICAgICAgICBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHRhcmdldCA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgIGNvbGxlY3Rpb24sCiAgICAgICAgYW5kCiAgICAgICAgdGhpcyA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgCiAgICAgICAgc3BlY2lmaWVzIGFkZGl0aW9uYWwgY29sdW1ucyBvciBvdGhlciBjb25zdHJ1Y3RzCiAgICAgICAgb3IgZmxhZ3MgdGhhdCBtb2RpZnkgdGhlIHRhYmxlJ3Mgc3RhdGUsIGFuCiAgICAgICAgZXJyb3IgaXMgcmFpc2VkLiAgVGhlIHB1cnBvc2Ugb2YgdGhlc2UgdHdvIG11dHVhbGx5LWV4Y2x1c2l2ZSBmbGFncwogICAgICAgIGlzIHRvIHNwZWNpZnkgd2hhdCBhY3Rpb24gc2hvdWxkIGJlIHRha2VuIHdoZW4gYQogICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICBpcyBzcGVjaWZpZWQgdGhhdCBtYXRjaGVzIGFuIGV4aXN0aW5nIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAsCiAgICAgICAgeWV0IHNwZWNpZmllcwogICAgICAgIGFkZGl0aW9uYWwgY29uc3RydWN0cy4KCiAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmV4dGVuZF9leGlzdGluZ2AKICAgICAgICB3aWxsIGFsc28gd29yayBpbiBjb25qdW5jdGlvbgogICAgICAgIHdpdGggOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmF1dG9sb2FkYCB0byBydW4gYSBuZXcgcmVmbGVjdGlvbgogICAgICAgIG9wZXJhdGlvbiBhZ2FpbnN0IHRoZSBkYXRhYmFzZSwgZXZlbiBpZiBhIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICBvZiB0aGUgc2FtZSBuYW1lIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgdGFyZ2V0CiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYDsgbmV3bHkgcmVmbGVjdGVkIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgb2JqZWN0cwogICAgICAgIGFuZCBvdGhlciBvcHRpb25zIHdpbGwgYmUgYWRkZWQgaW50byB0aGUgc3RhdGUgb2YgdGhlCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwgcG90ZW50aWFsbHkgb3ZlcndyaXRpbmcgZXhpc3RpbmcgY29sdW1ucwogICAgICAgIGFuZCBvcHRpb25zIG9mIHRoZSBzYW1lIG5hbWUuCgogICAgICAgIEFzIGlzIGFsd2F5cyB0aGUgY2FzZSB3aXRoIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5hdXRvbG9hZGAsCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb2JqZWN0cyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBzYW1lCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIGNvbnN0cnVjdG9yLCB3aGljaCB3aWxsIHRha2UgcHJlY2VkZW5jZS4gIEJlbG93LCB0aGUgZXhpc3RpbmcKICAgICAgICB0YWJsZSBgYG15dGFibGVgYCB3aWxsIGJlIGF1Z21lbnRlZCB3aXRoIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgb2JqZWN0cwogICAgICAgIGJvdGggcmVmbGVjdGVkIGZyb20gdGhlIGRhdGFiYXNlLCBhcyB3ZWxsIGFzIHRoZSBnaXZlbgogICAgICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgbmFtZWQgInkiOjoKCiAgICAgICAgICAgIFRhYmxlKCJteXRhYmxlIiwgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbigneScsIEludGVnZXIpLAogICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRfZXhpc3Rpbmc9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2xvYWQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2xvYWRfd2l0aD1lbmdpbmUKICAgICAgICAgICAgICAgICAgICApCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmF1dG9sb2FkYAoKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmF1dG9sb2FkX3JlcGxhY2VgCgogICAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUua2VlcF9leGlzdGluZ2AKCgogICAgOnBhcmFtIGltcGxpY2l0X3JldHVybmluZzogVHJ1ZSBieSBkZWZhdWx0IC0gaW5kaWNhdGVzIHRoYXQKICAgICAgICBSRVRVUk5JTkcgY2FuIGJlIHVzZWQgYnkgZGVmYXVsdCB0byBmZXRjaCBuZXdseSBpbnNlcnRlZCBwcmltYXJ5IGtleQogICAgICAgIHZhbHVlcywgZm9yIGJhY2tlbmRzIHdoaWNoIHN1cHBvcnQgdGhpcy4gIE5vdGUgdGhhdAogICAgICAgIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAgYWxzbyBwcm92aWRlcyBhbiBgYGltcGxpY2l0X3JldHVybmluZ2BgCiAgICAgICAgZmxhZy4KCiAgICA6cGFyYW0gaW5jbHVkZV9jb2x1bW5zOiBBIGxpc3Qgb2Ygc3RyaW5ncyBpbmRpY2F0aW5nIGEgc3Vic2V0IG9mCiAgICAgICAgY29sdW1ucyB0byBiZSBsb2FkZWQgdmlhIHRoZSBgYGF1dG9sb2FkYGAgb3BlcmF0aW9uOyB0YWJsZSBjb2x1bW5zIHdobwogICAgICAgIGFyZW4ndCBwcmVzZW50IGluIHRoaXMgbGlzdCB3aWxsIG5vdCBiZSByZXByZXNlbnRlZCBvbiB0aGUgcmVzdWx0aW5nCiAgICAgICAgYGBUYWJsZWBgIG9iamVjdC4gRGVmYXVsdHMgdG8gYGBOb25lYGAgd2hpY2ggaW5kaWNhdGVzIGFsbCBjb2x1bW5zCiAgICAgICAgc2hvdWxkIGJlIHJlZmxlY3RlZC4KCiAgICA6cGFyYW0gcmVzb2x2ZV9ma3M6IFdoZXRoZXIgb3Igbm90IHRvIHJlZmxlY3QgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIG9iamVjdHMKICAgICAgICByZWxhdGVkIHRvIHRoaXMgb25lIHZpYSA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleWAgb2JqZWN0cywgd2hlbgogICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5hdXRvbG9hZGAgb3IKICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRfd2l0aGAgaXMKICAgICAgICBzcGVjaWZpZWQuICAgRGVmYXVsdHMgdG8gVHJ1ZS4gIFNldCB0byBGYWxzZSB0byBkaXNhYmxlIHJlZmxlY3Rpb24gb2YKICAgICAgICByZWxhdGVkIHRhYmxlcyBhcyA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleWAKICAgICAgICBvYmplY3RzIGFyZSBlbmNvdW50ZXJlZDsgbWF5IGJlCiAgICAgICAgdXNlZCBlaXRoZXIgdG8gc2F2ZSBvbiBTUUwgY2FsbHMgb3IgdG8gYXZvaWQgaXNzdWVzIHdpdGggcmVsYXRlZCB0YWJsZXMKICAgICAgICB0aGF0IGNhbid0IGJlIGFjY2Vzc2VkLiBOb3RlIHRoYXQgaWYgYSByZWxhdGVkIHRhYmxlIGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgIGluIHRoZSA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgIGNvbGxlY3Rpb24sIG9yIGJlY29tZXMgcHJlc2VudCBsYXRlciwKICAgICAgICBhCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgd2lsbAogICAgICAgIHJlc29sdmUgdG8gdGhhdCB0YWJsZSBub3JtYWxseS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4zCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnBhcmFtcmVmOmAuTWV0YURhdGEucmVmbGVjdC5yZXNvbHZlX2Zrc2AKCgogICAgOnBhcmFtIGluZm86IE9wdGlvbmFsIGRhdGEgZGljdGlvbmFyeSB3aGljaCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZQogICAgICAgIDphdHRyOmAuU2NoZW1hSXRlbS5pbmZvYCBhdHRyaWJ1dGUgb2YgdGhpcyBvYmplY3QuCgogICAgOnBhcmFtIGtlZXBfZXhpc3Rpbmc6IFdoZW4gYGBUcnVlYGAsIGluZGljYXRlcyB0aGF0IGlmIHRoaXMgVGFibGUKICAgICAgICBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdpdmVuIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAsIGlnbm9yZQogICAgICAgIGZ1cnRoZXIgYXJndW1lbnRzIHdpdGhpbiB0aGUgY29uc3RydWN0b3IgdG8gdGhlIGV4aXN0aW5nCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwgYW5kIHJldHVybiB0aGUgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIG9iamVjdCBhcwogICAgICAgIG9yaWdpbmFsbHkgY3JlYXRlZC4gVGhpcyBpcyB0byBhbGxvdyBhIGZ1bmN0aW9uIHRoYXQgd2lzaGVzCiAgICAgICAgdG8gZGVmaW5lIGEgbmV3IDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb24gZmlyc3QgY2FsbCwgYnV0IG9uCiAgICAgICAgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiB0aGUgc2FtZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLAogICAgICAgIHdpdGhvdXQgYW55IG9mIHRoZSBkZWNsYXJhdGlvbnMgKHBhcnRpY3VsYXJseSBjb25zdHJhaW50cykKICAgICAgICBiZWluZyBhcHBsaWVkIGEgc2Vjb25kIHRpbWUuCgogICAgICAgIElmIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5leHRlbmRfZXhpc3RpbmdgIG9yCiAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmtlZXBfZXhpc3RpbmdgIGFyZSBub3Qgc2V0LAogICAgICAgIGFuZCB0aGUgZ2l2ZW4gbmFtZQogICAgICAgIG9mIHRoZSBuZXcgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCByZWZlcnMgdG8gYSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgCiAgICAgICAgdGhhdCBpcwogICAgICAgIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgdGFyZ2V0IDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAgY29sbGVjdGlvbiwKICAgICAgICBhbmQKICAgICAgICB0aGlzIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICBzcGVjaWZpZXMgYWRkaXRpb25hbCBjb2x1bW5zIG9yIG90aGVyIGNvbnN0cnVjdHMKICAgICAgICBvciBmbGFncyB0aGF0IG1vZGlmeSB0aGUgdGFibGUncyBzdGF0ZSwgYW4KICAgICAgICBlcnJvciBpcyByYWlzZWQuICBUaGUgcHVycG9zZSBvZiB0aGVzZSB0d28gbXV0dWFsbHktZXhjbHVzaXZlIGZsYWdzCiAgICAgICAgaXMgdG8gc3BlY2lmeSB3aGF0IGFjdGlvbiBzaG91bGQgYmUgdGFrZW4gd2hlbiBhCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIGlzIHNwZWNpZmllZCB0aGF0IG1hdGNoZXMgYW4gZXhpc3RpbmcgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwKICAgICAgICB5ZXQgc3BlY2lmaWVzCiAgICAgICAgYWRkaXRpb25hbCBjb25zdHJ1Y3RzLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5leHRlbmRfZXhpc3RpbmdgCgogICAgOnBhcmFtIGxpc3RlbmVyczogQSBsaXN0IG9mIHR1cGxlcyBvZiB0aGUgZm9ybSBgYCg8ZXZlbnRuYW1lPiwgPGZuPilgYAogICAgICAgIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIDpmdW5jOmAuZXZlbnQubGlzdGVuYCB1cG9uIGNvbnN0cnVjdGlvbi4KICAgICAgICBUaGlzIGFsdGVybmF0ZSBob29rIHRvIDpmdW5jOmAuZXZlbnQubGlzdGVuYCBhbGxvd3MgdGhlIGVzdGFibGlzaG1lbnQKICAgICAgICBvZiBhIGxpc3RlbmVyIGZ1bmN0aW9uIHNwZWNpZmljIHRvIHRoaXMgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBiZWZvcmUKICAgICAgICB0aGUgImF1dG9sb2FkIiBwcm9jZXNzIGJlZ2lucy4gIFBhcnRpY3VsYXJseSB1c2VmdWwgZm9yCiAgICAgICAgdGhlIDptZXRoOmAuRERMRXZlbnRzLmNvbHVtbl9yZWZsZWN0YCBldmVudDo6CgogICAgICAgICAgICBkZWYgbGlzdGVuX2Zvcl9yZWZsZWN0KHRhYmxlLCBjb2x1bW5faW5mbyk6CiAgICAgICAgICAgICAgICAiaGFuZGxlIHRoZSBjb2x1bW4gcmVmbGVjdGlvbiBldmVudCIKICAgICAgICAgICAgICAgICMgLi4uCgogICAgICAgICAgICB0ID0gVGFibGUoCiAgICAgICAgICAgICAgICAnc29tZXRhYmxlJywKICAgICAgICAgICAgICAgIGF1dG9sb2FkPVRydWUsCiAgICAgICAgICAgICAgICBsaXN0ZW5lcnM9WwogICAgICAgICAgICAgICAgICAgICgnY29sdW1uX3JlZmxlY3QnLCBsaXN0ZW5fZm9yX3JlZmxlY3QpCiAgICAgICAgICAgICAgICBdKQoKICAgIDpwYXJhbSBtdXN0ZXhpc3Q6IFdoZW4gYGBUcnVlYGAsIGluZGljYXRlcyB0aGF0IHRoaXMgVGFibGUgbXVzdCBhbHJlYWR5CiAgICAgICAgYmUgcHJlc2VudCBpbiB0aGUgZ2l2ZW4gOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCBjb2xsZWN0aW9uLCBlbHNlCiAgICAgICAgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KCiAgICA6cGFyYW0gcHJlZml4ZXM6CiAgICAgICAgQSBsaXN0IG9mIHN0cmluZ3MgdG8gaW5zZXJ0IGFmdGVyIENSRUFURSBpbiB0aGUgQ1JFQVRFIFRBQkxFCiAgICAgICAgc3RhdGVtZW50LiAgVGhleSB3aWxsIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMuCgogICAgOnBhcmFtIHF1b3RlOiBGb3JjZSBxdW90aW5nIG9mIHRoaXMgdGFibGUncyBuYW1lIG9uIG9yIG9mZiwgY29ycmVzcG9uZGluZwogICAgICAgIHRvIGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC4gIFdoZW4gbGVmdCBhdCBpdHMgZGVmYXVsdCBvZiBgYE5vbmVgYCwKICAgICAgICB0aGUgY29sdW1uIGlkZW50aWZpZXIgd2lsbCBiZSBxdW90ZWQgYWNjb3JkaW5nIHRvIHdoZXRoZXIgdGhlIG5hbWUgaXMKICAgICAgICBjYXNlIHNlbnNpdGl2ZSAoaWRlbnRpZmllcnMgd2l0aCBhdCBsZWFzdCBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIgYXJlCiAgICAgICAgdHJlYXRlZCBhcyBjYXNlIHNlbnNpdGl2ZSksIG9yIGlmIGl0J3MgYSByZXNlcnZlZCB3b3JkLiAgVGhpcyBmbGFnCiAgICAgICAgaXMgb25seSBuZWVkZWQgdG8gZm9yY2UgcXVvdGluZyBvZiBhIHJlc2VydmVkIHdvcmQgd2hpY2ggaXMgbm90IGtub3duCiAgICAgICAgYnkgdGhlIFNRTEFsY2hlbXkgZGlhbGVjdC4KCiAgICA6cGFyYW0gcXVvdGVfc2NoZW1hOiBzYW1lIGFzICdxdW90ZScgYnV0IGFwcGxpZXMgdG8gdGhlIHNjaGVtYSBpZGVudGlmaWVyLgoKICAgIDpwYXJhbSBzY2hlbWE6IFRoZSBzY2hlbWEgbmFtZSBmb3IgdGhpcyB0YWJsZSwgd2hpY2ggaXMgcmVxdWlyZWQgaWYKICAgICAgICB0aGUgdGFibGUgcmVzaWRlcyBpbiBhIHNjaGVtYSBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHNjaGVtYQogICAgICAgIGZvciB0aGUgZW5naW5lJ3MgZGF0YWJhc2UgY29ubmVjdGlvbi4gIERlZmF1bHRzIHRvIGBgTm9uZWBgLgoKICAgICAgICBJZiB0aGUgb3duaW5nIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAgb2YgdGhpcyA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgCiAgICAgICAgc3BlY2lmaWVzIGl0cwogICAgICAgIG93biA6cGFyYW1yZWY6YF9zY2hlbWEuTWV0YURhdGEuc2NoZW1hYCBwYXJhbWV0ZXIsCiAgICAgICAgdGhlbiB0aGF0IHNjaGVtYSBuYW1lIHdpbGwKICAgICAgICBiZSBhcHBsaWVkIHRvIHRoaXMgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIGlmIHRoZSBzY2hlbWEgcGFyYW1ldGVyIGhlcmUgaXMgc2V0CiAgICAgICAgdG8gYGBOb25lYGAuICBUbyBzZXQgYSBibGFuayBzY2hlbWEgbmFtZSBvbiBhIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICB0aGF0CiAgICAgICAgd291bGQgb3RoZXJ3aXNlIHVzZSB0aGUgc2NoZW1hIHNldCBvbiB0aGUgb3duaW5nCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCwKICAgICAgICBzcGVjaWZ5IHRoZSBzcGVjaWFsIHN5bWJvbCA6YXR0cjpgLkJMQU5LX1NDSEVNQWAuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC4xNCAgQWRkZWQgdGhlIDphdHRyOmAuQkxBTktfU0NIRU1BYCBzeW1ib2wgdG8KICAgICAgICAgICBhbGxvdyBhIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICAgICB0byBoYXZlIGEgYmxhbmsgc2NoZW1hIG5hbWUgZXZlbiB3aGVuIHRoZQogICAgICAgICAgIHBhcmVudCA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgIHNwZWNpZmllcwogICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5NZXRhRGF0YS5zY2hlbWFgLgoKICAgICAgICBUaGUgcXVvdGluZyBydWxlcyBmb3IgdGhlIHNjaGVtYSBuYW1lIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBmb3IgdGhlCiAgICAgICAgYGBuYW1lYGAgcGFyYW1ldGVyLCBpbiB0aGF0IHF1b3RpbmcgaXMgYXBwbGllZCBmb3IgcmVzZXJ2ZWQgd29yZHMgb3IKICAgICAgICBjYXNlLXNlbnNpdGl2ZSBuYW1lczsgdG8gZW5hYmxlIHVuY29uZGl0aW9uYWwgcXVvdGluZyBmb3IgdGhlIHNjaGVtYQogICAgICAgIG5hbWUsIHNwZWNpZnkgdGhlIGZsYWcgYGBxdW90ZV9zY2hlbWE9VHJ1ZWBgIHRvIHRoZSBjb25zdHJ1Y3Rvciwgb3IgdXNlCiAgICAgICAgdGhlIDpjbGFzczpgLnF1b3RlZF9uYW1lYCBjb25zdHJ1Y3QgdG8gc3BlY2lmeSB0aGUgbmFtZS4KCiAgICA6cGFyYW0gdXNlZXhpc3Rpbmc6IHRoZSBzYW1lIGFzIDpwYXJhbXJlZjpgX3NjaGVtYS5UYWJsZS5leHRlbmRfZXhpc3RpbmdgLgoKICAgIDpwYXJhbSBjb21tZW50OiBPcHRpb25hbCBzdHJpbmcgdGhhdCB3aWxsIHJlbmRlciBhbiBTUUwgY29tbWVudCBvbiB0YWJsZQogICAgICAgICBjcmVhdGlvbi4KCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMiBBZGRlZCB0aGUgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmNvbW1lbnRgCiAgICAgICAgICAgIHBhcmFtZXRlcgogICAgICAgICAgICB0byA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLgoKICAgIDpwYXJhbSBcKiprdzogQWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyBub3QgbWVudGlvbmVkIGFib3ZlIGFyZQogICAgICAgIGRpYWxlY3Qgc3BlY2lmaWMsIGFuZCBwYXNzZWQgaW4gdGhlIGZvcm0gYGA8ZGlhbGVjdG5h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ZXMgc3VwcG9ydCB0aGUgYWRkaXRpb24gb2YgY29sdW1ucyB0byBleGlzdGluZyB0YWJsZXMKICAgICAgICB1c2luZyB0aGUgU1FMIEFMVEVSIGNvbW1hbmQsIHdoaWNoIHdvdWxkIG5lZWQgdG8gYmUKICAgICAgICBlbWl0dGVkIGZvciBhbiBhbHJlYWR5LWV4aXN0aW5nIHRhYmxlIHRoYXQgZG9lc24ndCBjb250YWluCiAgICAgICAgdGhlIG5ld2x5IGFkZGVkIGNvbHVtbi4KCiAgICAgICAgTqkBcjkAAACpAnI9AAAA2gZjb2x1bW5zAgAAACAgciIAAADaDWFwcGVuZF9jb2x1bW56E1RhYmxlLmFwcGVuZF9jb2x1bW4+AwAAcx4AAACAAPAoAAkP1wgo0ggoqBTRCC7UCC7QCC7QCC7QCC5yJAAAAGMCAAAAAAAAAAAAAAADAAAAAwAAAPMwAAAAlwB8AaAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAAQBkAVMAKQJh9AIAAEFwcGVuZCBhIDpjbGFzczpgX3NjaGVtYS5Db25zdHJhaW50YCB0byB0aGlzCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYC4KCiAgICAgICAgVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiB0aGUgY29uc3RyYWludCBiZWluZyBpbmNsdWRlZCBpbiBhbnkKICAgICAgICBmdXR1cmUgQ1JFQVRFIFRBQkxFIHN0YXRlbWVudCwgYXNzdW1pbmcgc3BlY2lmaWMgRERMIGNyZWF0aW9uCiAgICAgICAgZXZlbnRzIGhhdmUgbm90IGJlZW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgogICAgICAgIDpjbGFzczpgX3NjaGVtYS5Db25zdHJhaW50YCBvYmplY3QuCgogICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKipub3QqKiBwcm9kdWNlIHRoZSBjb25zdHJhaW50IHdpdGhpbiB0aGUKICAgICAgICByZWxhdGlvbmFsIGRhdGFiYXNlIGF1dG9tYXRpY2FsbHksIGZvciBhIHRhYmxlIHRoYXQgYWxyZWFkeSBleGlzdHMKICAgICAgICBpbiB0aGUgZGF0YWJh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ICAgIG5ldyA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIG9iamVjdCB3aWxsIGJlIGNyZWF0ZWQuCgogICAgICAgIDpwYXJhbSBzY2hlbWE6IG9wdGlvbmFsIHN0cmluZyBuYW1lIGluZGljYXRpbmcgdGhlIHRhcmdldCBzY2hlbWEuCiAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBzcGVjaWFsIHN5bWJvbCA6YXR0cjpgLlJFVEFJTl9TQ0hFTUFgIHdoaWNoIGluZGljYXRlcwogICAgICAgICB0aGF0IG5vIGNoYW5nZSB0byB0aGUgc2NoZW1hIG5hbWUgc2hvdWxkIGJlIG1hZGUgaW4gdGhlIG5ldwogICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLiAgSWYgc2V0IHRvIGEgc3RyaW5nIG5hbWUsIHRoZSBuZXcKICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgICB3aWxsIGhhdmUgdGhpcyBuZXcgbmFtZSBhcyB0aGUgYGAuc2NoZW1hYGAuICBJZiBzZXQgdG8gYGBOb25lYGAsIHRoZQogICAgICAgICBzY2hlbWEgd2lsbCBiZSBzZXQgdG8gdGhhdCBvZiB0aGUgc2NoZW1hIHNldCBvbiB0aGUgdGFyZ2V0CiAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAsIHdoaWNoIGlzIHR5cGljYWxseSBgYE5vbmVgYCBhcyB3ZWxsLAogICAgICAgICB1bmxlc3MKICAgICAgICAgc2V0IGV4cGxpY2l0bHk6OgoKICAgICAgICAgICAgbTIgPSBNZXRhRGF0YShzY2hlbWE9J25ld3NjaGVtYScpCgogICAgICAgICAgICAjIHVzZXJfY29weV9vbmUgd2lsbCBoYXZlICJuZXdzY2hlbWEiIGFzIHRoZSBzY2hlbWEgbmFtZQogICAgICAgICAgICB1c2VyX2NvcHlfb25lID0gdXNlci50b21ldGFkYXRhKG0yLCBzY2hlbWE9Tm9uZSkKCiAgICAgICAgICAgIG0zID0gTWV0YURhdGEoKSAgIyBzY2hlbWEgZGVmYXVsdHMgdG8gTm9uZQoKICAgICAgICAgICAgIyB1c2VyX2NvcHlfdHdvIHdpbGwgaGF2ZSBOb25lIGFzIHRoZSBzY2hlbWEgbmFtZQogICAgICAgICAgICB1c2VyX2NvcHlfdHdvID0gdXNlci50b21ldGFkYXRhKG0zLCBzY2hlbWE9Tm9uZSkKCiAgICAgICAgOnBhcmFtIHJlZmVycmVkX3NjaGVtYV9mbjogb3B0aW9uYWwgY2FsbGFibGUgd2hpY2ggY2FuIGJlIHN1cHBsaWVkCiAgICAgICAgIGluIG9yZGVyIHRvIHByb3ZpZGUgZm9yIHRoZSBzY2hlbWEgbmFtZSB0aGF0IHNob3VsZCBiZSBhc3NpZ25lZAogICAgICAgICB0byB0aGUgcmVmZXJlbmNlZCB0YWJsZSBvZiBhIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAuCiAgICAgICAgIFRoZSBjYWxsYWJsZSBhY2NlcHRzIHRoaXMgcGFyZW50IDpjbGFzczpgX3NjaGVtYS5UYWJsZWAsIHRoZQogICAgICAgICB0YXJnZXQgc2NoZW1hIHRoYXQgd2UgYXJlIGNoYW5naW5nIHRvLCB0aGUKICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YCBvYmplY3QsIGFuZCB0aGUgZXhpc3RpbmcKICAgICAgICAgInRhcmdldCBzY2hlbWEiIG9mIHRoYXQgY29uc3RyYWludC4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoZQogICAgICAgICBzdHJpbmcgc2NoZW1hIG5hbWUgdGhhdCBzaG91bGQgYmUgYXBwbGllZC4KICAgICAgICAgRS5nLjo6CgogICAgICAgICAgICAgICAgZGVmIHJlZmVycmVkX3NjaGVtYV9mbih0YWJsZSwgdG9fc2NoZW1hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50LCByZWZlcnJlZF9zY2hlbWEpOgogICAgICAgICAgICAgICAgICAgIGlmIHJlZmVycmVkX3NjaGVtYSA9PSAnYmFzZV90YWJsZXMnOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJyZWRfc2NoZW1h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ICAgIHdpbGwgYmUgdHJlYXRlZCBhcyBjYXNlIGluc2Vuc2l0aXZlIG5hbWVzLCBhbmQgd2lsbCBub3QgYmUgcXVvdGVkCiAgICAgICAgICB1bmxlc3MgdGhleSBhcmUgYSByZXNlcnZlZCB3b3JkLiAgTmFtZXMgd2l0aCBhbnkgbnVtYmVyIG9mIHVwcGVyCiAgICAgICAgICBjYXNlIGNoYXJhY3RlcnMgd2lsbCBiZSBxdW90ZWQgYW5kIHNlbnQgZXhhY3RseS4gIE5vdGUgdGhhdCB0aGlzCiAgICAgICAgICBiZWhhdmlvciBhcHBsaWVzIGV2ZW4gZm9yIGRhdGFiYXNlcyB3aGljaCBzdGFuZGFyZGl6ZSB1cHBlcgogICAgICAgICAgY2FzZSBuYW1lcyBhcyBjYXNlIGluc2Vuc2l0aXZlIHN1Y2ggYXMgT3JhY2xlLgoKICAgICAgICAgIFRoZSBuYW1lIGZpZWxkIG1heSBiZSBvbWl0dGVkIGF0IGNvbnN0cnVjdGlvbiB0aW1lIGFuZCBhcHBsaWVkCiAgICAgICAgICBsYXRlciwgYXQgYW55IHRpbWUgYmVmb3JlIHRoZSBDb2x1bW4gaXMgYXNzb2NpYXRlZCB3aXRoIGEKICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAuICBUaGlzIGlzIHRvIHN1cHBvcnQgY29udmVuaWVudAogICAgICAgICAgdXNhZ2Ugd2l0aGluIHRoZSA6bW9kOmB+c3FsYWxjaGVteS5leHQuZGVjbGFyYXRpdmVgIGV4dGVuc2lvbi4KCiAgICAgICAgOnBhcmFtIHR5cGVcXzogVGhlIGNvbHVtbidzIHR5cGUsIGluZGljYXRlZCB1c2luZyBhbiBpbnN0YW5jZSB3aGljaAogICAgICAgICAgc3ViY2xhc3NlcyA6Y2xhc3M6YH5zcWxhbGNoZW15LnR5cGVzLlR5cGVFbmdpbmVgLiAgSWYgbm8gYXJndW1lbnRzCiAgICAgICAgICBhcmUgcmVxdWlyZWQgZm9yIHRoZSB0eXBlLCB0aGUgY2xhc3Mgb2YgdGhlIHR5cGUgY2FuIGJlIHNlbnQKICAgICAgICAgIGFzIHdlbGwsIGUuZy46OgoKICAgICAgICAgICAgIyB1c2UgYSB0eXBlIHdpdGggYXJndW1lbnRzCiAgICAgICAgICAgIENvbHVtbignZGF0YScsIFN0cmluZyg1MCkpCgogICAgICAgICAgICAjIHVzZSBubyBhcmd1bWVudHMKICAgICAgICAgICAgQ29sdW1uKCdsZXZlbCcsIEludGVnZXIpCgogICAgICAgICAgVGhlIGBgdHlwZWBgIGFyZ3VtZW50IG1heSBiZSB0aGUgc2Vjb25kIHBvc2l0aW9uYWwgYXJndW1lbnQKICAgICAgICAgIG9yIHNwZWNpZmllZCBieSBrZXl3b3JkLgoKICAgICAgICAgIElmIHRoZSBgYHR5cGVgYCBpcyBgYE5vbmVgYCBvciBpcyBvbWl0dGVkLCBpdCB3aWxsIGZpcnN0IGRlZmF1bHQgdG8KICAgICAgICAgIHRoZSBzcGVjaWFsIHR5cGUgOmNsYXNzOmAuTnVsbFR5cGVgLiAgSWYgYW5kIHdoZW4gdGhpcwogICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgaXMgbWFkZSB0byByZWZlciB0byBhbm90aGVyIGNvbHVtbiB1c2luZwogICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlgIGFuZC9vcgogICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YCwgdGhlIHR5cGUKICAgICAgICAgIG9mIHRoZSByZW1vdGUtcmVmZXJlbmNlZCBjb2x1bW4gd2lsbCBiZSBjb3BpZWQgdG8gdGhpcyBjb2x1bW4gYXMKICAgICAgICAgIHdlbGwsIGF0IHRoZSBtb21lbnQgdGhhdCB0aGUgZm9yZWlnbiBrZXkgaXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGF0CiAgICAgICAgICByZW1vdGUgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb2JqZWN0LgoKICAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMC45LjAKICAgICAgICAgICAgU3VwcG9ydCBmb3IgcHJvcGFnYXRpb24gb2YgdHlwZSB0byBhIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgICAgIGZyb20gaXRzCiAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5YCBvYmplY3QgaGFzIGJlZW4gaW1wcm92ZWQgYW5kIHNob3VsZCBiZQogICAgICAgICAgICBtb3JlIHJlbGlhYmxlIGFuZCB0aW1lbHkuCgogICAgICAgIDpwYXJhbSBcKmFyZ3M6IEFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMgaW5jbHVkZSB2YXJpb3VzCiAgICAgICAgICA6Y2xhc3M6YC5TY2hlbWFJdGVtYCBkZXJpdmVkIGNvbnN0cnVjdHMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkCiAgICAgICAgICBhcyBvcHRpb25zIHRvIHRoZSBjb2x1bW4uICBUaGVzZSBpbmNsdWRlIGluc3RhbmNlcyBvZgogICAgICAgICAgOmNsYXNzOmAuQ29uc3RyYWludGAsIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5YCwKICAgICAgICAgIDpjbGFzczpgLkNvbHVtbkRlZmF1bHRgLAogICAgICAgICAgOmNsYXNzOmAuU2VxdWVuY2VgLCA6Y2xhc3M6YC5Db21wdXRlZGAuICBJbiBzb21lIGNhc2VzIGFuCiAgICAgICAgICBlcXVpdmFsZW50IGtleXdvcmQgYXJndW1lbnQgaXMgYXZhaWxhYmxlIHN1Y2ggYXMgYGBzZXJ2ZXJfZGVmYXVsdGBgLAogICAgICAgICAgYGBkZWZhdWx0YGAgYW5kIGBgdW5pcXVlYGAuCgogICAgICAgIDpwYXJhbSBhdXRvaW5jcmVtZW50OiBTZXQgdXAgImF1dG8gaW5jcmVtZW50IiBzZW1hbnRpY3MgZm9yIGFuIGludGVnZXIKICAgICAgICAgIHByaW1hcnkga2V5IGNvbHVtbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzdHJpbmcgYGAiYXV0byJgYAogICAgICAgICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgYSBzaW5nbGUtY29sdW1uIHByaW1hcnkga2V5IHRoYXQgaXMgb2YKICAgICAgICAgIGFuIElOVEVHRVIgdHlwZSB3aXRoIG5vIHN0YXRlZCBjbGllbnQtc2lkZSBvciBweXRob24tc2lkZSBkZWZhdWx0cwogICAgICAgICAgc2hvdWxkIHJlY2VpdmUgYXV0byBpbmNyZW1lbnQgc2VtYW50aWNzIGF1dG9tYXRpY2FsbHk7CiAgICAgICAgICBhbGwgb3RoZXIgdmFyaWV0aWVzIG9mIHByaW1hcnkga2V5IGNvbHVtbnMgd2lsbCBub3QuICBUaGlzCiAgICAgICAgICBpbmNsdWRlcyB0aGF0IDp0ZXJtOmBERExgIHN1Y2ggYXMgUG9zdGdyZVNRTCBTRVJJQUwgb3IgTXlTUUwKICAgICAgICAgIEFVVE9fSU5DUkVNRU5UIHdpbGwgYmUgZW1pdHRlZCBmb3IgdGhpcyBjb2x1bW4gZHVyaW5nIGEgdGFibGUKICAgICAgICAgIGNyZWF0ZSwgYXMgd2VsbCBhcyB0aGF0IHRoZSBjb2x1bW4gaXMgYXNzdW1lZCB0byBnZW5lcmF0ZSBuZXcKICAgICAgICAgIGludGVnZXIgcHJpbWFyeSBrZXkgdmFsdWVzIHdoZW4gYW4gSU5TRVJUIHN0YXRlbWVudCBpbnZva2VzIHdoaWNoCiAgICAgICAgICB3aWxsIGJlIHJldHJpZXZlZCBieSB0aGUgZGlhbGVjdC4KCiAgICAgICAgICBUaGUgZmxhZyBtYXkgYmUgc2V0IHRvIGBgVHJ1ZWBgIHRvIGluZGljYXRlIHRoYXQgYSBjb2x1bW4gd2hpY2gKICAgICAgICAgIGlzIHBhcnQgb2YgYSBjb21wb3NpdGUgKGUuZy4gbXVsdGktY29sdW1uKSBwcmltYXJ5IGtleSBzaG91bGQKICAgICAgICAgIGhhdmUgYXV0b2luY3JlbWVudCBzZW1hbnRpY3MsIHRob3VnaCBub3RlIHRoYXQgb25seSBvbmUgY29sdW1uCiAgICAgICAgICB3aXRoaW4gYSBwcmltYXJ5IGtleSBtYXkgaGF2ZSB0aGlzIHNldHRpbmcuICAgIEl0IGNhbiBhbHNvCiAgICAgICAgICBiZSBzZXQgdG8gYGBUcnVlYGAgdG8gaW5kaWNhdGUgYXV0b2luY3JlbWVudCBzZW1hbnRpY3Mgb24gYQogICAgICAgICAgY29sdW1uIHRoYXQgaGFzIGEgY2xpZW50LXNpZGUgb3Igc2VydmVyLXNpZGUgZGVmYXVsdCBjb25maWd1cmVkLAogICAgICAgICAgaG93ZXZlciBub3RlIHRoYXQgbm90IGFsbCBkaWFsZWN0cyBjYW4gYWNjb21tb2RhdGUgYWxsIHN0eWxlcwogICAgICAgICAgb2YgZGVmYXVsdCBhcyBhbiAiYXV0b2luY3JlbWVudCIuICBJdCBjYW4gYWxzbyBiZQogICAgICAgICAgc2V0IHRvIGBgRmFsc2VgYCBvbiBhIHNpbmdsZS1jb2x1bW4gcHJpbWFyeSBrZXkgdGhhdCBoYXMgYQogICAgICAgICAgZGF0YXR5cGUgb2YgSU5URUdFUiBpbiBvcmRlciB0byBkaXNhYmxlIGF1dG8gaW5jcmVtZW50IHNlbWFudGljcwogICAgICAgICAgZm9yIHRoYXQgY29sdW1uLgoKICAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4xIFRoZSBhdXRvaW5jcmVtZW50IGZsYWcgbm93IGRlZmF1bHRzIHRvCiAgICAgICAgICAgICBgYCJhdXRvImBgIHdoaWNoIGluZGljYXRlcyBhdXRvaW5jcmVtZW50IHNlbWFudGljcyBieSBkZWZhdWx0CiAgICAgICAgICAgICBmb3Igc2luZ2xlLWNvbHVtbiBpbnRlZ2VyIHByaW1hcnkga2V5cyBvbmx5OyBmb3IgY29tcG9zaXRlCiAgICAgICAgICAgICAobXVsdGktY29sdW1uKSBwcmltYXJ5IGtleXMsIGF1dG9pbmNyZW1lbnQgaXMgbmV2ZXIgaW1wbGljaXRseQogICAgICAgICAgICAgZW5hYmxlZDsgYXMgYWx3YXlzLCBgYGF1dG9pbmNyZW1lbnQ9VHJ1ZWBgIHdpbGwgYWxsb3cgZm9yCiAgICAgICAgICAgICBhdCBtb3N0IG9uZSBvZiB0aG9zZSBjb2x1bW5zIHRvIGJlIGFuICJhdXRvaW5jcmVtZW50IiBjb2x1bW4uCiAgICAgICAgICAgICBgYGF1dG9pbmNyZW1lbnQ9VHJ1ZWBgIG1heSBhbHNvIGJlIHNldCBvbiBhCiAgICAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICAgICAgdGhhdCBoYXMgYW4gZXhwbGljaXQgY2xpZW50LXNpZGUgb3Igc2VydmVyLXNpZGUgZGVmYXVsdCwKICAgICAgICAgICAgIHN1YmplY3QgdG8gbGltaXRhdGlvbnMgb2YgdGhlIGJhY2tlbmQgZGF0YWJhc2UgYW5kIGRpYWxlY3QuCgoKICAgICAgICAgIFRoZSBzZXR0aW5nICpvbmx5KiBoYXMgYW4gZWZmZWN0IGZvciBjb2x1bW5zIHdoaWNoIGFyZToKCiAgICAgICAgICAqIEludGVnZXIgZGVyaXZlZCAoaS5lLiBJTlQsIFNNQUxMSU5ULCBCSUdJTlQpLgoKICAgICAgICAgICogUGFydCBvZiB0aGUgcHJpbWFyeSBrZXkKCiAgICAgICAgICAqIE5vdCByZWZlcnJpbmcgdG8gYW5vdGhlciBjb2x1bW4gdmlhIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5YCwKICAgICAgICAgICAgdW5sZXNzCiAgICAgICAgICAgIHRoZSB2YWx1ZSBpcyBzcGVjaWZpZWQgYXMgYGAnaWdub3JlX2ZrJ2BgOjoKCiAgICAgICAgICAgICAgICAjIHR1cm4gb24gYXV0b2luY3JlbWVudCBmb3IgdGhpcyBjb2x1bW4gZGVzcGl0ZQogICAgICAgICAgICAgICAgIyB0aGUgRm9yZWlnbktleSgpCiAgICAgICAgICAgICAgICBDb2x1bW4oJ2lkJywgRm9yZWlnbktleSgnb3RoZXIuaWQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5PVRydWUsIGF1dG9pbmNyZW1lbnQ9J2lnbm9yZV9maycpCgogICAgICAgICAgICBJdCBpcyB0eXBpY2FsbHkgbm90IGRlc2lyYWJsZSB0byBoYXZlICJhdXRvaW5jcmVtZW50IiBlbmFibGVkIG9uIGEKICAgICAgICAgICAgY29sdW1uIHRoYXQgcmVmZXJzIHRvIGFub3RoZXIgdmlhIGZvcmVpZ24ga2V5LCBhcyBzdWNoIGEgY29sdW1uIGlzCiAgICAgICAgICAgIHJlcXVpcmVkIHRvIHJlZmVyIHRvIGEgdmFsdWUgdGhhdCBvcmlnaW5hdGVzIGZyb20gZWxzZXdoZXJlLgoKICAgICAgICAgIFRoZSBzZXR0aW5nIGhhcyB0aGVzZSB0d28gZWZmZWN0cyBvbiBjb2x1bW5zIHRoYXQgbWVldCB0aGUKICAgICAgICAgIGFib3ZlIGNyaXRlcmlhOgoKICAgICAgICAgICogRERMIGlzc3VlZCBmb3IgdGhlIGNvbHVtbiB3aWxsIGluY2x1ZGUgZGF0YWJhc2Utc3BlY2lmaWMKICAgICAgICAgICAga2V5d29yZHMgaW50ZW5kZWQgdG8gc2lnbmlmeSB0aGlzIGNvbHVtbiBhcyBhbgogICAgICAgICAgICAiYXV0b2luY3JlbWVudCIgY29sdW1uLCBzdWNoIGFzIEFVVE8gSU5DUkVNRU5UIG9uIE15U1FMLAogICAgICAgICAgICBTRVJJQUwgb24gUG9zdGdyZVNRTCwgYW5kIElERU5USVRZIG9uIE1TLVNRTC4gIEl0IGRvZXMKICAgICAgICAgICAgKm5vdCogaXNzdWUgQVVUT0lOQ1JFTUVOVCBmb3IgU1FMaXRlIHNpbmNlIHRoaXMgaXMgYQogICAgICAgICAgICBzcGVjaWFsIFNRTGl0ZSBmbGFnIHRoYXQgaXMgbm90IHJlcXVpcmVkIGZvciBhdXRvaW5jcmVtZW50aW5nCiAgICAgICAgICAgIGJlaGF2aW9yLgoKICAgICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgICAgOnJlZjpgc3FsaXRlX2F1dG9pbmNyZW1lbnRgCgogICAgICAgICAgKiBUaGUgY29sdW1uIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSBhdmFpbGFibGUgdXNpbmcgYW4KICAgICAgICAgICAgImF1dG9pbmNyZW1lbnQiIG1ldGhvZCBzcGVjaWZpYyB0byB0aGUgYmFja2VuZCBkYXRhYmFzZSwgc3VjaAogICAgICAgICAgICBhcyBjYWxsaW5nIHVwb24gYGBjdXJzb3IubGFzdHJvd2lkYGAsIHVzaW5nIFJFVFVSTklORyBpbiBhbgogICAgICAgICAgICBJTlNFUlQgc3RhdGVtZW50IHRvIGdldCBhdCBhIHNlcXVlbmNlLWdlbmVyYXRlZCB2YWx1ZSwgb3IgdXNpbmcKICAgICAgICAgICAgc3BlY2lhbCBmdW5jdGlvbnMgc3VjaCBhcyAiU0VMRUNUIHNjb3BlX2lkZW50aXR5KCkiLgogICAgICAgICAgICBUaGVzZSBtZXRob2RzIGFyZSBoaWdobHkgc3BlY2lmaWMgdG8gdGhlIERCQVBJcyBhbmQgZGF0YWJhc2VzIGluCiAgICAgICAgICAgIHVzZSBhbmQgdmFyeSBncmVhdGx5LCBzbyBjYXJlIHNob3VsZCBiZSB0YWtlbiB3aGVuIGFzc29jaWF0aW5nCiAgICAgICAgICAgIGBgYXV0b2luY3JlbWVudD1UcnVlYGAgd2l0aCBhIGN1c3RvbSBkZWZhdWx0IGdlbmVyYXRpb24gZnVuY3Rpb24uCgoKICAgICAgICA6cGFyYW0gZGVmYXVsdDogQSBzY2FsYXIsIFB5dGhvbiBjYWxsYWJsZSwgb3IKICAgICAgICAgICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YCBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUKICAgICAgICAgICAgKmRlZmF1bHQgdmFsdWUqIGZvciB0aGlzIGNvbHVtbiwgd2hpY2ggd2lsbCBiZSBpbnZva2VkIHVwb24gaW5zZXJ0CiAgICAgICAgICAgIGlmIHRoaXMgY29sdW1uIGlzIG90aGVyd2lzZSBub3Qgc3BlY2lmaWVkIGluIHRoZSBWQUxVRVMgY2xhdXNlIG9mCiAgICAgICAgICAgIHRoZSBpbnNlcnQuIFRoaXMgaXMgYSBzaG9ydGN1dCB0byB1c2luZyA6Y2xhc3M6YC5Db2x1bW5EZWZhdWx0YCBhcwogICAgICAgICAgICBhIHBvc2l0aW9uYWwgYXJndW1lbnQ7IHNlZSB0aGF0IGNsYXNzIGZvciBmdWxsIGRldGFpbCBvbiB0aGUKICAgICAgICAgICAgc3RydWN0dXJlIG9mIHRoZSBhcmd1bWVudC4KCiAgICAgICAgICAgIENvbnRyYXN0IHRoaXMgYXJndW1lbnQgdG8KICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkNvbHVtbi5zZXJ2ZXJfZGVmYXVsdGAKICAgICAgICAgICAgd2hpY2ggY3JlYXRlcyBhIGRlZmF1bHQgZ2VuZXJhdG9yIG9uIHRoZSBkYXRhYmFzZSBzaWRlLgoKICAgICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgICAgOnJlZjpgbWV0YWRhdGFfZGVmYXVsdHNfdG9wbGV2ZWxgCgogICAgICAgIDpwYXJhbSBkb2M6IG9wdGlvbmFsIFN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBPUk0gb3Igc2ltaWxhcgogICAgICAgICAgICB0byBkb2N1bWVudCBhdHRyaWJ1dGVzIG9uIHRoZSBQeXRob24gc2lkZS4gICBUaGlzIGF0dHJpYnV0ZSBkb2VzCiAgICAgICAgICAgICoqbm90KiogcmVuZGVyIFNRTCBjb21tZW50czsgdXNlIHRoZQogICAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuQ29sdW1uLmNvbW1lbnRgCiAgICAgICAgICAgIHBhcmFtZXRlciBmb3IgdGhpcyBwdXJwb3NlLgoKICAgICAgICA6cGFyYW0ga2V5OiBBbiBvcHRpb25hbCBzdHJpbmcgaWRlbnRpZmllciB3aGljaCB3aWxsIGlkZW50aWZ5IHRoaXMKICAgICAgICAgICAgYGBDb2x1bW5gYCBvYmplY3Qgb24gdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAuCiAgICAgICAgICAgIFdoZW4gYSBrZXkgaXMgcHJvdmlkZWQsCiAgICAgICAgICAgIHRoaXMgaXMgdGhlIG9ubHkgaWRlbnRpZmllciByZWZlcmVuY2luZyB0aGUgYGBDb2x1bW5gYCB3aXRoaW4gdGhlCiAgICAgICAgICAgIGFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgT1JNIGF0dHJpYnV0ZSBtYXBwaW5nOyB0aGUgYGBuYW1lYGAgZmllbGQKICAgICAgICAgICAgaXMgdXNlZCBvbmx5IHdoZW4gcmVuZGVyaW5nIFNRTC4KCiAgICAgICAgOnBhcmFtIGluZGV4OiBXaGVuIGBgVHJ1ZWBgLCBpbmRpY2F0ZXMgdGhhdCBhIDpjbGFzczpgX3NjaGVtYS5JbmRleGAKICAgICAgICAgICAgY29uc3RydWN0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZm9yIHRoaXMKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgIkNSRUFURSBJTkRFWCIKICAgICAgICAgICAgc3RhdGVtZW50IGJlaW5nIGVtaXR0ZWQgZm9yIHRoZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIHdoZW4gdGhlIERETAogICAgICAgICAgICBjcmVhdGUgb3BlcmF0aW9uIGlzIGludm9rZWQuCgogICAgICAgICAgICBVc2luZyB0aGlzIGZsYWcgaXMgZXF1aXZhbGVudCB0byBtYWtpbmcgdXNlIG9mIHRoZQogICAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuSW5kZXhgIGNvbnN0cnVjdCBleHBsaWNpdGx5IGF0IHRoZSBsZXZlbCBvZiB0aGUKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBjb25zdHJ1Y3QgaXRzZWxmOjoKCiAgICAgICAgICAgICAgICBUYWJsZSgKICAgICAgICAgICAgICAgICAgICAic29tZV90YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCJ4IiwgSW50ZWdlciksCiAgICAgICAgICAgICAgICAgICAgSW5kZXgoIml4X3NvbWVfdGFibGVfeCIsICJ4IikKICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgIFRvIGFkZCB0aGUgOnBhcmFtcmVmOmBfc2NoZW1hLkluZGV4LnVuaXF1ZWAgZmxhZyB0byB0aGUKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkluZGV4YCwgc2V0IGJvdGggdGhlCiAgICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5Db2x1bW4udW5pcXVlYCBhbmQKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkNvbHVtbi5pbmRleGAgZmxhZ3MgdG8gVHJ1ZSBzaW11bHRhbmVvdXNseSwKICAgICAgICAgICAgd2hpY2ggd2lsbCBoYXZlIHRoZSBlZmZlY3Qgb2YgcmVuZGVyaW5nIHRoZSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCIKICAgICAgICAgICAgRERMIGluc3RydWN0aW9uIGluc3RlYWQgb2YgIkNSRUFURSBJTkRFWCIuCgogICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgaW5kZXggaXMgZ2VuZXJhdGVkIHVzaW5nIHRoZQogICAgICAgICAgICA6cmVmOmBkZWZhdWx0IG5hbWluZyBjb252ZW50aW9uIDxjb25zdHJhaW50X2RlZmF1bHRfbmFtaW5nX2NvbnZlbnRpb24+YAogICAgICAgICAgICB3aGljaCBmb3IgdGhlIDpjbGFzczpgX3NjaGVtYS5JbmRleGAgY29uc3RydWN0IGlzIG9mIHRoZSBmb3JtCiAgICAgICAgICAgIGBgaXhfPHRhYmxlbmFtZT5fPGNvbHVtbm5hbWU+YGAuCgogICAgICAgICAgICBBcyB0aGlzIGZsYWcgaXMgaW50ZW5kZWQgb25seSBhcyBhIGNvbnZlbmllbmNlIGZvciB0aGUgY29tbW9uIGNhc2UKICAgICAgICAgICAgb2YgYWRkaW5nIGEgc2luZ2xlLWNvbHVtbiwgZGVmYXVsdCBjb25maWd1cmVkIGluZGV4IHRvIGEgdGFibGUKICAgICAgICAgICAgZGVmaW5pdGlvbiwgZXhwbGljaXQgdXNlIG9mIHRoZSA6Y2xhc3M6YF9zY2hlbWEuSW5kZXhgIGNvbnN0cnVjdAogICAgICAgICAgICBzaG91bGQgYmUgcHJlZmVycmVkIGZvciBtb3N0IHVzZSBjYXNlcywgaW5jbHVkaW5nIGNvbXBvc2l0ZSBpbmRleGVzCiAgICAgICAgICAgIHRoYXQgZW5jb21wYXNzIG1vcmUgdGhhbiBvbmUgY29sdW1uLCBpbmRleGVzIHdpdGggU1FMIGV4cHJlc3Npb25zCiAgICAgICAgICAgIG9yIG9yZGVyaW5nLCBiYWNrZW5kLXNwZWNpZmljIGluZGV4IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kCiAgICAgICAgICAgIGluZGV4ZXMgdGhhdCB1c2UgYSBzcGVjaWZpYyBuYW1lLgoKICAgICAgICAgICAgLi4gbm90ZTo6IHRoZSA6YXR0cjpgX3NjaGVtYS5Db2x1bW4uaW5kZXhgIGF0dHJpYnV0ZSBvbgogICAgICAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICAgICAgICAqKmRvZXMgbm90IGluZGljYXRlKiogaWYgdGhpcyBjb2x1bW4gaXMgaW5kZXhlZCBvciBub3QsIG9ubHkKICAgICAgICAgICAgICAgaWYgdGhpcyBmbGFnIHdhcyBleHBsaWNpdGx5IHNldCBoZXJlLiAgVG8gdmlldyBpbmRleGVzIG9uCiAgICAgICAgICAgICAgIGEgY29sdW1uLCB2aWV3IHRoZSA6YXR0cjpgX3NjaGVtYS5UYWJsZS5pbmRleGVzYCBjb2xsZWN0aW9uCiAgICAgICAgICAgICAgIG9yIHVzZSA6bWV0aDpgX3JlZmxlY3Rpb24uSW5zcGVjdG9yLmdldF9pbmRleGVzYC4KCiAgICAgICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgICAgIDpyZWY6YHNjaGVtYV9pbmRleGVzYAoKICAgICAgICAgICAgICAgIDpyZWY6YGNvbnN0cmFpbnRfbmFtaW5nX2NvbnZlbnRpb25zYAoKICAgICAgICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5Db2x1bW4udW5pcXVlYAoKICAgICAgICA6cGFyYW0gaW5mbzogT3B0aW9uYWwgZGF0YSBkaWN0aW9uYXJ5IHdoaWNoIHdpbGwgYmUgcG9wdWxhdGVkIGludG8gdGhlCiAgICAgICAgICAgIDphdHRyOmAuU2NoZW1hSXRlbS5pbmZvYCBhdHRyaWJ1dGUgb2YgdGhpcyBvYmplY3QuCgogICAgICAgIDpwYXJhbSBudWxsYWJsZTogV2hlbiBzZXQgdG8gYGBGYWxzZWBgLCB3aWxsIGNhdXNlIHRoZSAiTk9UIE5VTEwiCiAgICAgICAgICAgIHBocmFzZSB0byBiZSBhZGRlZCB3aGVuIGdlbmVyYXRpbmcgRERMIGZvciB0aGUgY29sdW1uLiAgIFdoZW4KICAgICAgICAgICAgYGBUcnVlYGAsIHdpbGwgbm9ybWFsbHkgZ2VuZXJhdGUgbm90aGluZyAoaW4gU1FMIHRoaXMgZGVmYXVsdHMgdG8KICAgICAgICAgICAgIk5VTEwiKSwgZXhjZXB0IGluIHNvbWUgdmVyeSBzcGVjaWZpYyBiYWNrZW5kLXNwZWNpZmljIGVkZ2UgY2FzZXMKICAgICAgICAgICAgd2hlcmUgIk5VTEwiIG1heSByZW5kZXIgZXhwbGljaXRseS4gICBEZWZhdWx0cyB0byBgYFRydWVgYCB1bmxlc3MKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkNvbHVtbi5wcmltYXJ5X2tleWAgaXMgYWxzbyBgYFRydWVgYCwKICAgICAgICAgICAgaW4gd2hpY2ggY2FzZSBpdAogICAgICAgICAgICBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBUaGlzIHBhcmFtZXRlciBpcyBvbmx5IHVzZWQgd2hlbiBpc3N1aW5nCiAgICAgICAgICAgIENSRUFURSBUQUJMRSBzdGF0ZW1lbnRzLgoKICAgICAgICA6cGFyYW0gb251cGRhdGU6IEEgc2NhbGFyLCBQeXRob24gY2FsbGFibGUsIG9yCiAgICAgICAgICAgIDpjbGFzczpgfnNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24uQ2xhdXNlRWxlbWVudGAgcmVwcmVzZW50aW5nIGEKICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZSB0byBiZSBhcHBsaWVkIHRvIHRoZSBjb2x1bW4gd2l0aGluIFVQREFURQogICAgICAgICAgICBzdGF0ZW1lbnRzLCB3aGljaCB3aWxsIGJlIGludm9rZWQgdXBvbiB1cGRhdGUgaWYgdGhpcyBjb2x1bW4gaXMgbm90CiAgICAgICAgICAgIHByZXNlbnQgaW4gdGhlIFNFVCBjbGF1c2Ugb2YgdGhlIHVwZGF0ZS4gVGhpcyBpcyBhIHNob3J0Y3V0IHRvCiAgICAgICAgICAgIHVzaW5nIDpjbGFzczpgLkNvbHVtbkRlZmF1bHRgIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudCB3aXRoCiAgICAgICAgICAgIGBgZm9yX3VwZGF0ZT1UcnVlYGAuCgogICAgICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgICAgICA6cmVmOmBtZXRhZGF0YV9kZWZhdWx0c2AgLSBjb21wbGV0ZSBkaXNjdXNzaW9uIG9mIG9udXBkYXRlCgogICAgICAgIDpwYXJhbSBwcmltYXJ5X2tleTogSWYgYGBUcnVlYGAsIG1hcmtzIHRoaXMgY29sdW1uIGFzIGEgcHJpbWFyeSBrZXkKICAgICAgICAgICAgY29sdW1uLiBNdWx0aXBsZSBjb2x1bW5zIGNhbiBoYXZlIHRoaXMgZmxhZyBzZXQgdG8gc3BlY2lmeQogICAgICAgICAgICBjb21wb3NpdGUgcHJpbWFyeSBrZXlzLiBBcyBhbiBhbHRlcm5hdGl2ZSwgdGhlIHByaW1hcnkga2V5IG9mIGEKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBjYW4gYmUgc3BlY2lmaWVkIHZpYSBhbiBleHBsaWNpdAogICAgICAgICAgICA6Y2xhc3M6YC5QcmltYXJ5S2V5Q29uc3RyYWludGAgb2JqZWN0LgoKICAgICAgICA6cGFyYW0gc2VydmVyX2RlZmF1bHQ6IEEgOmNsYXNzOmAuRmV0Y2hlZFZhbHVlYCBpbnN0YW5jZSwgc3RyLCBVbmljb2RlCiAgICAgICAgICAgIG9yIDpmdW5jOmB+c3FsYWxjaGVteS5zcWwuZXhwcmVzc2lvbi50ZXh0YCBjb25zdHJ1Y3QgcmVwcmVzZW50aW5nCiAgICAgICAgICAgIHRoZSBEREwgREVGQVVMVCB2YWx1ZSBmb3IgdGhlIGNvbHVtbi4KCiAgICAgICAgICAgIFN0cmluZyB0eXBlcyB3aWxsIGJlIGVtaXR0ZWQgYXMtaXMsIHN1cnJvdW5kZWQgYnkgc2luZ2xlIHF1b3Rlczo6CgogICAgICAgICAgICAgICAgQ29sdW1uKCd4JywgVGV4dCwgc2VydmVyX2RlZmF1bHQ9InZhbCIpCgogICAgICAgICAgICAgICAgeCBURVhUIERFRkFVTFQgJ3ZhbCcKCiAgICAgICAgICAgIEEgOmZ1bmM6YH5zcWxhbGNoZW15LnNxbC5leHByZXNzaW9uLnRleHRgIGV4cHJlc3Npb24gd2lsbCBiZQogICAgICAgICAgICByZW5kZXJlZCBhcy1pcywgd2l0aG91dCBxdW90ZXM6OgoKICAgICAgICAgICAgICAgIENvbHVtbigneScsIERhdGVUaW1lLCBzZXJ2ZXJfZGVmYXVsdD10ZXh0KCdOT1coKScpKQoKICAgICAgICAgICAgICAgIHkgREFURVRJTUUgREVGQVVMVCBOT1coKQoKICAgICAgICAgICAgU3RyaW5ncyBhbmQgdGV4dCgpIHdpbGwgYmUgY29udmVydGVkIGludG8gYQogICAgICAgICAgICA6Y2xhc3M6YC5EZWZhdWx0Q2xhdXNlYCBvYmplY3QgdXBvbiBpbml0aWFsaXphdGlvbi4KCiAgICAgICAgICAgIFVzZSA6Y2xhc3M6YC5GZXRjaGVkVmFsdWVgIHRvIGluZGljYXRlIHRoYXQgYW4gYWxyZWFkeS1leGlzdGluZwogICAgICAgICAgICBjb2x1bW4gd2lsbCBnZW5lcmF0ZSBhIGRlZmF1bHQgdmFsdWUgb24gdGhlIGRhdGFiYXNlIHNpZGUgd2hpY2gKICAgICAgICAgICAgd2lsbCBiZSBhdmFpbGFibGUgdG8gU1FMQWxjaGVteSBmb3IgcG9zdC1mZXRjaCBhZnRlciBpbnNlcnRzLiBUaGlzCiAgICAgICAgICAgIGNvbnN0cnVjdCBkb2VzIG5vdCBzcGVjaWZ5IGFueSBEREwgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsZWZ0CiAgICAgICAgICAgIHRvIHRoZSBkYXRhYmFzZSwgc3VjaCBhcyB2aWEgYSB0cmlnZ2VyLgoKICAgICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgICAgOnJlZjpgc2VydmVyX2RlZmF1bHRzYCAtIGNvbXBsZXRlIGRpc2N1c3Npb24gb2Ygc2VydmVyIHNpZGUKICAgICAgICAgICAgICAgIGRlZmF1bHRzCgogICAgICAgIDpwYXJhbSBzZXJ2ZXJfb251cGRhdGU6IEEgOmNsYXNzOmAuRmV0Y2hlZFZhbHVlYCBpbnN0YW5jZQogICAgICAgICAgICByZXByZXNlbnRpbmcgYSBkYXRhYmFzZS1zaWRlIGRlZmF1bHQgZ2VuZXJhdGlvbiBmdW5jdGlvbiwKICAgICAgICAgICAgc3VjaCBhcyBhIHRyaWdnZXIuIFRoaXMKICAgICAgICAgICAgaW5kaWNhdGVzIHRvIFNRTEFsY2hlbXkgdGhhdCBhIG5ld2x5IGdlbmVyYXRlZCB2YWx1ZSB3aWxsIGJlCiAgICAgICAgICAgIGF2YWlsYWJsZSBhZnRlciB1cGRhdGVzLiBUaGlzIGNvbnN0cnVjdCBkb2VzIG5vdCBhY3R1YWxseQogICAgICAgICAgICBpbXBsZW1lbnQgYW55IGtpbmQgb2YgZ2VuZXJhdGlvbiBmdW5jdGlvbiB3aXRoaW4gdGhlIGRhdGFiYXNlLAogICAgICAgICAgICB3aGljaCBpbnN0ZWFkIG11c3QgYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkuCgoKICAgICAgICAgICAgLi4gd2FybmluZzo6IFRoaXMgZGlyZWN0aXZlICoqZG9lcyBub3QqKiBjdXJyZW50bHkgcHJvZHVjZSBNeVNRTCdzCiAgICAgICAgICAgICAgICJPTiBVUERBVEUgQ1VSUkVOVF9USU1FU1RBTVAoKSIgY2xhdXNlLiAgU2VlCiAgICAgICAgICAgICAgIDpyZWY6YG15c3FsX3RpbWVzdGFtcF9vbnVwZGF0ZWAgZm9yIGJhY2tncm91bmQgb24gaG93IHRvCiAgICAgICAgICAgICAgIHByb2R1Y2UgdGhpcyBjbGF1c2UuCgogICAgICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgICAgICA6cmVmOmB0cmlnZ2VyZWRfY29sdW1uc2AKCiAgICAgICAgOnBhcmFtIHF1b3RlOiBGb3JjZSBxdW90aW5nIG9mIHRoaXMgY29sdW1uJ3MgbmFtZSBvbiBvciBvZmYsCiAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHRvIGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC4gV2hlbiBsZWZ0IGF0IGl0cyBkZWZhdWx0CiAgICAgICAgICAgICBvZiBgYE5vbmVgYCwgdGhlIGNvbHVtbiBpZGVudGlmaWVyIHdpbGwgYmUgcXVvdGVkIGFjY29yZGluZyB0bwogICAgICAgICAgICAgd2hldGhlciB0aGUgbmFtZSBpcyBjYXNlIHNlbnNpdGl2ZSAoaWRlbnRpZmllcnMgd2l0aCBhdCBsZWFzdCBvbmUKICAgICAgICAgICAgIHVwcGVyIGNhc2UgY2hhcmFjdGVyIGFyZSB0cmVhdGVkIGFzIGNhc2Ugc2Vuc2l0aXZlKSwgb3IgaWYgaXQncyBhCiAgICAgICAgICAgICByZXNlcnZlZCB3b3JkLiBUaGlzIGZsYWcgaXMgb25seSBuZWVkZWQgdG8gZm9yY2UgcXVvdGluZyBvZiBhCiAgICAgICAgICAgICByZXNlcnZlZCB3b3JkIHdoaWNoIGlzIG5vdCBrbm93biBieSB0aGUgU1FMQWxjaGVteSBkaWFsZWN0LgoKICAgICAgICA6cGFyYW0gdW5pcXVlOiBXaGVuIGBgVHJ1ZWBgLCBhbmQgdGhlIDpwYXJhbXJlZjpgX3NjaGVtYS5Db2x1bW4uaW5kZXhgCiAgICAgICAgICAgIHBhcmFtZXRlciBpcyBsZWZ0IGF0IGl0cyBkZWZhdWx0IHZhbHVlIG9mIGBgRmFsc2VgYCwKICAgICAgICAgICAgaW5kaWNhdGVzIHRoYXQgYSA6Y2xhc3M6YF9zY2hlbWEuVW5pcXVlQ29uc3RyYWludGAKICAgICAgICAgICAgY29uc3RydWN0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZm9yIHRoaXMKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAsCiAgICAgICAgICAgIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgIlVOSVFVRSBDT05TVFJBSU5UIiBjbGF1c2UgcmVmZXJyaW5nCiAgICAgICAgICAgIHRvIHRoaXMgY29sdW1uIGJlaW5nIGluY2x1ZGVkCiAgICAgICAgICAgIGluIHRoZSBgYENSRUFURSBUQUJMRWBgIHN0YXRlbWVudCBlbWl0dGVkLCB3aGVuIHRoZSBEREwgY3JlYXRlCiAgICAgICAgICAgIG9wZXJhdGlvbiBmb3IgdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb2JqZWN0IGlzIGludm9rZWQuCgogICAgICAgICAgICBXaGVuIHRoaXMgZmxhZyBpcyBgYFRydWVgYCB3aGlsZSB0aGUKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkNvbHVtbi5pbmRleGAgcGFyYW1ldGVyIGlzIHNpbXVsdGFuZW91c2x5CiAgICAgICAgICAgIHNldCB0byBgYFRydWVgYCwgdGhlIGVmZmVjdCBpbnN0ZWFkIGlzIHRoYXQgYQogICAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuSW5kZXhgIGNvbnN0cnVjdCB3aGljaCBpbmNsdWRlcyB0aGUKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkluZGV4LnVuaXF1ZWAgcGFyYW1ldGVyIHNldCB0byBgYFRydWVgYAogICAgICAgICAgICBpcyBnZW5lcmF0ZWQuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiAgICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5Db2x1bW4uaW5kZXhgIGZvciBhZGRpdGlvbmFsIGRldGFpbC4KCiAgICAgICAgICAgIFVzaW5nIHRoaXMgZmxhZyBpcyBlcXVpdmFsZW50IHRvIG1ha2luZyB1c2Ugb2YgdGhlCiAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5VbmlxdWVDb25zdHJhaW50YCBjb25zdHJ1Y3QgZXhwbGljaXRseSBhdCB0aGUKICAgICAgICAgICAgbGV2ZWwgb2YgdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgY29uc3RydWN0IGl0c2VsZjo6CgogICAgICAgICAgICAgICAgVGFibGUoCiAgICAgICAgICAgICAgICAgICAgInNvbWVfdGFibGUiLAogICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIENvbHVtbigieCIsIEludGVnZXIpLAogICAgICAgICAgICAgICAgICAgIFVuaXF1ZUNvbnN0cmFpbnQoIngiKQogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgVGhlIDpwYXJhbXJlZjpgX3NjaGVtYS5VbmlxdWVDb25zdHJhaW50Lm5hbWVgIHBhcmFtZXRlcgogICAgICAgICAgICBvZiB0aGUgdW5pcXVlIGNvbnN0cmFpbnQgb2JqZWN0IGlzIGxlZnQgYXQgaXRzIGRlZmF1bHQgdmFsdWUKICAgICAgICAgICAgb2YgYGBOb25lYGA7IGluIHRoZSBhYnNlbmNlIG9mIGEgOnJlZjpgbmFtaW5nIGNvbnZlbnRpb24gPGNvbnN0cmFpbnRfbmFtaW5nX2NvbnZlbnRpb25zPmAKICAgICAgICAgICAgZm9yIHRoZSBlbmNsb3NpbmcgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCwgdGhlIFVOSVFVRSBDT05TVFJBSU5UCiAgICAgICAgICAgIGNvbnN0cnVjdCB3aWxsIGJlIGVtaXR0ZWQgYXMgdW5uYW1lZCwgd2hpY2ggdHlwaWNhbGx5IGludm9rZXMKICAgICAgICAgICAgYSBkYXRhYmFzZS1zcGVjaWZpYyBuYW1pbmcgY29udmVudGlvbiB0byB0YWtlIHBsYWNlLgoKICAgICAgICAgICAgQXMgdGhpcyBmbGFnIGlzIGludGVuZGVkIG9ubHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgdGhlIGNvbW1vbiBjYXNlCiAgICAgICAgICAgIG9mIGFkZGluZyBhIHNpbmdsZS1jb2x1bW4sIGRlZmF1bHQgY29uZmlndXJlZCB1bmlxdWUgY29uc3RyYWludCB0byBhIHRhYmxlCiAgICAgICAgICAgIGRlZmluaXRpb24sIGV4cGxpY2l0IHVzZSBvZiB0aGUgOmNsYXNzOmBfc2NoZW1hLlVuaXF1ZUNvbnN0cmFpbnRgIGNvbnN0cnVjdAogICAgICAgICAgICBzaG91bGQgYmUgcHJlZmVycmVkIGZvciBtb3N0IHVzZSBjYXNlcywgaW5jbHVkaW5nIGNvbXBvc2l0ZSBjb25zdHJhaW50cwogICAgICAgICAgICB0aGF0IGVuY29tcGFzcyBtb3JlIHRoYW4gb25lIGNvbHVtbiwgYmFja2VuZC1zcGVjaWZpYyBpbmRleCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZAogICAgICAgICAgICBjb25zdHJhaW50cyB0aGF0IHVzZSBhIHNwZWNpZmljIG5hbWUuCgogICAgICAgICAgICAuLiBub3RlOjogdGhlIDphdHRyOmBfc2NoZW1hLkNvbHVtbi51bmlxdWVgIGF0dHJpYnV0ZSBvbgogICAgICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAKICAgICAgICAgICAgICAgICoqZG9lcyBub3QgaW5kaWNhdGUqKiBpZiB0aGlzIGNvbHVtbiBoYXMgYSB1bmlxdWUgY29uc3RyYWludCBvcgogICAgICAgICAgICAgICAgbm90LCBvbmx5IGlmIHRoaXMgZmxhZyB3YXMgZXhwbGljaXRseSBzZXQgaGVyZS4gIFRvIHZpZXcKICAgICAgICAgICAgICAgIGluZGV4ZXMgYW5kIHVuaXF1ZSBjb25zdHJhaW50cyB0aGF0IG1heSBpbnZvbHZlIHRoaXMgY29sdW1uLAogICAgICAgICAgICAgICAgdmlldyB0aGUKICAgICAgICAgICAgICAgIDphdHRyOmBfc2NoZW1hLlRhYmxlLmluZGV4ZXNgIGFuZC9vcgogICAgICAgICAgICAgICAgOmF0dHI6YF9zY2hlbWEuVGFibGUuY29uc3RyYWludHNgIGNvbGxlY3Rpb25zIG9yIHVzZQogICAgICAgICAgICAgICAgOm1ldGg6YF9yZWZsZWN0aW9uLkluc3BlY3Rvci5nZXRfaW5kZXhlc2AgYW5kL29yCiAgICAgICAgICAgICAgICA6bWV0aDpgX3JlZmxlY3Rpb24uSW5zcGVjdG9yLmdldF91bmlxdWVfY29uc3RyYWludHNgCgogICAgICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgICAgICA6cmVmOmBzY2hlbWFfdW5pcXVlX2NvbnN0cmFpbnRgCgogICAgICAgICAgICAgICAgOnJlZjpgY29uc3RyYWludF9uYW1pbmdfY29udmVudGlvbnNgCgogICAgICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkNvbHVtbi5pbmRleGAKCiAgICAgICAgOnBhcmFtIHN5c3RlbTogV2hlbiBgYFRydWVgYCwgaW5kaWNhdGVzIHRoaXMgaXMgYSAic3lzdGVtIiBjb2x1bW4sCiAgICAgICAgICAgICB0aGF0IGlzIGEgY29sdW1uIHdoaWNoIGlzIGF1dG9tYXRpY2FsbHkgbWFkZSBhdmFpbGFibGUgYnkgdGhlCiAgICAgICAgICAgICBkYXRhYmFzZSwgYW5kIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbHVtbnMgbGlzdCBmb3IgYQogICAgICAgICAgICAgYGBDUkVBVEUgVEFCTEVgYCBzdGF0ZW1lbnQuCgogICAgICAgICAgICAgRm9yIG1vcmUgZWxhYm9yYXRlIHNjZW5hcmlvcyB3aGVyZSBjb2x1bW5zIHNob3VsZCBiZQogICAgICAgICAgICAgY29uZGl0aW9uYWxseSByZW5kZXJlZCBkaWZmZXJlbnRseSBvbiBkaWZmZXJlbnQgYmFja2VuZHMsCiAgICAgICAgICAgICBjb25zaWRlciBjdXN0b20gY29tcGlsYXRpb24gcnVsZXMgZm9yIDpjbGFzczpgLkNyZWF0ZUNvbHVtbmAuCgogICAgICAgIDpwYXJhbSBjb21tZW50OiBPcHRpb25hbCBzdHJpbmcgdGhhdCB3aWxsIHJlbmRlciBhbiBTUUwgY29tbWVudCBvbgogICAgICAgICAgICAgdGFibGUgY3JlYXRpb24uCgogICAgICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4yIEFkZGVkIHRoZQogICAgICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkNvbHVtbi5jb21tZW50YAogICAgICAgICAgICAgICAgcGFyYW1ldGVyIHRvIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gLgoKCiAgICAgICAgciAAAABO2gV0eXBlX3ICAAAAejBNYXkgbm90IHBhc3MgbmFtZSBwb3NpdGlvbmFsbHkgYW5kIGFzIGEga2V5d29yZC7aCl9zcWxhX3R5cGV6MU1heSBub3QgcGFzcyB0eXBlXyBwb3NpdGlvbmFsbHkgYW5kIGFzIGEga2V5d29yZC5yUAAAAHo5RXhwbGljaXQgJ25hbWUnIGlzIHJlcXVpcmVkIHdoZW4gc2VuZGluZyAncXVvdGUnIGFyZ3VtZW50cisAAAByxgAAAEbaCG51bGxhYmxl2gdkZWZhdWx02g5zZXJ2ZXJfZGVmYXVsdNoPc2VydmVyX29udXBkYXRlch8BAAByEQEAANoGc3lzdGVt2gNkb2PaCG9udXBkYXRl2g1hdXRvaW5jcmVtZW502gRhdXRvco4AAADaCF9wcm94aWVz2hNfd2Fybl9vbl9ieXRlc3RyaW5nehBVbmljb2RlIGNvbHVtbiAneiAnIGhhcyBub24tdW5pY29kZSBkZWZhdWx0IHZhbHVlIHoLIHNwZWNpZmllZC5UqQHaCmZvcl91cGRhdGVySAAAAHIfAAAAKS5ycgAAAHL8AAAAcigAAAByGgAAANoMc3RyaW5nX3R5cGVzchgAAAByPAAAANoH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GXJyAQAAYTsGAABEZWZpbmVzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHR3byBjb2x1bW5zLgoKICAgIGBgRm9yZWlnbktleWBgIGlzIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudCB0byBhIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICBvYmplY3QsCiAgICBlLmcuOjoKCiAgICAgICAgdCA9IFRhYmxlKCJyZW1vdGVfdGFibGUiLCBtZXRhZGF0YSwKICAgICAgICAgICAgQ29sdW1uKCJyZW1vdGVfaWQiLCBGb3JlaWduS2V5KCJtYWluX3RhYmxlLmlkIikpCiAgICAgICAgKQoKICAgIE5vdGUgdGhhdCBgYEZvcmVpZ25LZXlgYCBpcyBvbmx5IGEgbWFya2VyIG9iamVjdCB0aGF0IGRlZmluZXMKICAgIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHR3byBjb2x1bW5zLiAgIFRoZSBhY3R1YWwgY29uc3RyYWludAogICAgaXMgaW4gYWxsIGNhc2VzIHJlcHJlc2VudGVkIGJ5IHRoZSA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgCiAgICBvYmplY3QuICAgVGhpcyBvYmplY3Qgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSB3aGVuCiAgICBhIGBgRm9yZWlnbktleWBgIGlzIGFzc29jaWF0ZWQgd2l0aCBhIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIHdoaWNoCiAgICBpbiB0dXJuIGlzIGFzc29jaWF0ZWQgd2l0aCBhIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAuICAgQ29udmVyc2VseSwKICAgIHdoZW4gOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YCBpcyBhcHBsaWVkIHRvIGEKICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAsCiAgICBgYEZvcmVpZ25LZXlgYCBtYXJrZXJzIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCB0byBiZQogICAgcHJlc2VudCBvbiBlYWNoIGFzc29jaWF0ZWQgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAsIHdoaWNoIGFyZSBhbHNvCiAgICBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnN0cmFpbnQgb2JqZWN0LgoKICAgIE5vdGUgdGhhdCB5b3UgY2Fubm90IGRlZmluZSBhICJjb21wb3NpdGUiIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQsCiAgICB0aGF0IGlzIGEgY29uc3RyYWludCBiZXR3ZWVuIGEgZ3JvdXBpbmcgb2YgbXVsdGlwbGUgcGFyZW50L2NoaWxkCiAgICBjb2x1bW5zLCB1c2luZyBgYEZvcmVpZ25LZXlgYCBvYmplY3RzLiAgIFRvIGRlZmluZSB0aGlzIGdyb3VwaW5nLAogICAgdGhlIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAgb2JqZWN0IG11c3QgYmUgdXNlZCwgYW5kIGFwcGxpZWQKICAgIHRvIHRoZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLiAgIFRoZSBhc3NvY2lhdGVkIGBgRm9yZWlnbktleWBgIG9iamVjdHMKICAgIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuCgogICAgVGhlIGBgRm9yZWlnbktleWBgIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwKICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICBvYmplY3QgYXJlIGF2YWlsYWJsZSBpbiB0aGUgYGZvcmVpZ25fa2V5c2AgY29sbGVjdGlvbgogICAgb2YgdGhhdCBjb2x1bW4uCgogICAgRnVydGhlciBleGFtcGxlcyBvZiBmb3JlaWduIGtleSBjb25maWd1cmF0aW9uIGFyZSBpbgogICAgOnJlZjpgbWV0YWRhdGFfZm9yZWlnbmtleXNgLgoKICAgINoLZm9yZWlnbl9rZXlORmMMAAAAAAAAAAAAAAAFAAAACwAAAPOSAgAAlwB8AXwAXwAAAAAAAAAAAHQDAAAAAAAAAAAAAHwAagAAAAAAAAAAAHQEAAAAAAAAAAAAAGoDAAAAAAAAAACmAgAAqwIAAAAAAAAAAHIIZAF8AF8EAAAAAAAAAABuwnQLAAAAAAAAAAAAAHwAagAAAAAAAAAAAGQCpgIAAKsCAAAAAAAAAAByH3wAagAAAAAAAAAAAKAGAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAG4MfABqAAAAAAAAAAAAfABfBAAAAAAAAAAAdAMAAAAAAAAAAAAAfABqBAAAAAAAAAAAdA4AAAAAAAAAAAAApgIAAKsCAAAAAAAAAABzHHQRAAAAAAAAAAAAAGoJAAAAAAAAAABkA3wAagQAAAAAAAAAAHoGAACmAQAAqwEAAAAAAAAAAIIBdAMAAAAAAAAAAAAAfABqBAAAAAAAAAAAagoAAAAAAAAAAHQEAAAAAAAAAAAAAGoLAAAAAAAAAAB0GAAAAAAAAAAAAABmAqYCAACrAgAAAAAAAAAAcyF0EQAAAAAAAAAAAABqCQAAAAAAAAAAZAR8AGoEAAAAAAAAAABqCgAAAAAAAAAAegYAAKYBAACrAQAAAAAAAAAAggF8AnwAXw0AAAAAAAAAAGQBfABfDgAAAAAAAAAAfAN8AF8PAAAAAAAAAAB8BHwAXxAAAAAAAAAAAHwFfABfEQAAAAAAAAAAfAZ8AF8SAAAAAAAAAAB8B3wAXxMAAAAAAAAAAHwIfABfFAAAAAAAAAAAfAl8AF8VAAAAAAAAAAB8CnwAXxYAAAAAAAAAAHwLcgd8C3wAXxcAAAAAAAAAAHwMfABfGAAAAAAAAAAAZAFTACkFYZALAAAKICAgICAgICBDb25zdHJ1Y3QgYSBjb2x1bW4tbGV2ZWwgRk9SRUlHTiBLRVkuCgogICAgICAgIFRoZSA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleWAgb2JqZWN0IHdoZW4gY29uc3RydWN0ZWQgZ2VuZXJhdGVzIGEKICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgCiAgICAgICAgd2hpY2ggaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJlbnQKICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIG9iamVjdCdzIGNvbGxlY3Rpb24gb2YgY29uc3RyYWludHMuCgogICAgICAgIDpwYXJhbSBjb2x1bW46IEEgc2luZ2xlIHRhcmdldCBjb2x1bW4gZm9yIHRoZSBrZXkgcmVsYXRpb25zaGlwLiBBCiAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIG9iamVjdCBvciBhIGNvbHVtbiBuYW1lIGFzIGEgc3RyaW5nOgogICAgICAgICAgICBgYHRhYmxlbmFtZS5jb2x1bW5rZXlgYCBvciBgYHNjaGVtYS50YWJsZW5hbWUuY29sdW1ua2V5YGAuCiAgICAgICAgICAgIGBgY29sdW1ua2V5YGAgaXMgdGhlIGBga2V5YGAgd2hpY2ggaGFzIGJlZW4gYXNzaWduZWQgdG8gdGhlIGNvbHVtbgogICAgICAgICAgICAoZGVmYXVsdHMgdG8gdGhlIGNvbHVtbiBuYW1lIGl0c2VsZiksIHVubGVzcyBgYGxpbmtfdG9fbmFtZWBgIGlzCiAgICAgICAgICAgIGBgVHJ1ZWBgIGluIHdoaWNoIGNhc2UgdGhlIHJlbmRlcmVkIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyB1c2VkLgoKICAgICAgICA6cGFyYW0gbmFtZTogT3B0aW9uYWwgc3RyaW5nLiBBbiBpbi1kYXRhYmFzZSBuYW1lIGZvciB0aGUga2V5IGlmCiAgICAgICAgICAgIGBjb25zdHJhaW50YCBpcyBub3QgcHJvdmlkZWQuCgogICAgICAgIDpwYXJhbSBvbnVwZGF0ZTogT3B0aW9uYWwgc3RyaW5nLiBJZiBzZXQsIGVtaXQgT04gVVBEQVRFIDx2YWx1ZT4gd2hlbgogICAgICAgICAgICBpc3N1aW5nIERETCBmb3IgdGhpcyBjb25zdHJhaW50LiBUeXBpY2FsIHZhbHVlcyBpbmNsdWRlIENBU0NBREUsCiAgICAgICAgICAgIERFTEVURSBhbmQgUkVTVFJJQ1QuCgogICAgICAgIDpwYXJhbSBvbmRlbGV0ZTogT3B0aW9uYWwgc3RyaW5nLiBJZiBzZXQsIGVtaXQgT04gREVMRVRFIDx2YWx1ZT4gd2hlbgogICAgICAgICAgICBpc3N1aW5nIERETCBmb3IgdGhpcyBjb25zdHJhaW50LiBUeXBpY2FsIHZhbHVlcyBpbmNsdWRlIENBU0NBREUsCiAgICAgICAgICAgIERFTEVURSBhbmQgUkVTVFJJQ1QuCgogICAgICAgIDpwYXJhbSBkZWZlcnJhYmxlOiBPcHRpb25hbCBib29sLiBJZiBzZXQsIGVtaXQgREVGRVJSQUJMRSBvciBOT1QKICAgICAgICAgICAgREVGRVJSQUJMRSB3aGVuIGlzc3VpbmcgRERMIGZvciB0aGlzIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBpbml0aWFsbHk6IE9wdGlvbmFsIHN0cmluZy4gSWYgc2V0LCBlbWl0IElOSVRJQUxMWSA8dmFsdWU+IHdoZW4KICAgICAgICAgICAgaXNzdWluZyBEREwgZm9yIHRoaXMgY29uc3RyYWludC4KCiAgICAgICAgOnBhcmFtIGxpbmtfdG9fbmFtZTogaWYgVHJ1ZSwgdGhlIHN0cmluZyBuYW1lIGdpdmVuIGluIGBgY29sdW1uYGAgaXMKICAgICAgICAgICAgdGhlIHJlbmRlcmVkIG5hbWUgb2YgdGhlIHJlZmVyZW5jZWQgY29sdW1uLCBub3QgaXRzIGxvY2FsbHkKICAgICAgICAgICAgYXNzaWduZWQgYGBrZXlgYC4KCiAgICAgICAgOnBhcmFtIHVzZV9hbHRlcjogcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nCiAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAKICAgICAgICAgICAgdG8gaW5kaWNhdGUgdGhlIGNvbnN0cmFpbnQgc2hvdWxkCiAgICAgICAgICAgIGJlIGdlbmVyYXRlZC9kcm9wcGVkIGV4dGVybmFsbHkgZnJvbSB0aGUgQ1JFQVRFIFRBQkxFLyBEUk9QIFRBQkxFCiAgICAgICAgICAgIHN0YXRlbWVudC4gIFNlZSA6cGFyYW1yZWY6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnQudXNlX2FsdGVyYAogICAgICAgICAgICBmb3IgZnVydGhlciBkZXNjcmlwdGlvbi4KCiAgICAgICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgICAgIDpwYXJhbXJlZjpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludC51c2VfYWx0ZXJgCgogICAgICAgICAgICAgICAgOnJlZjpgdXNlX2FsdGVyYAoKICAgICAgICA6cGFyYW0gbWF0Y2g6IE9wdGlvbmFsIHN0cmluZy4gSWYgc2V0LCBlbWl0IE1BVENIIDx2YWx1ZT4gd2hlbiBpc3N1aW5nCiAgICAgICAgICAgIERETCBmb3IgdGhpcyBjb25zdHJhaW50LiBUeXBpY2FsIHZhbHVlcyBpbmNsdWRlIFNJTVBMRSwgUEFSVElBTAogICAgICAgICAgICBhbmQgRlVMTC4KCiAgICAgICAgOnBhcmFtIGluZm86IE9wdGlvbmFsIGRhdGEgZGljdGlvbmFyeSB3aGljaCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZQogICAgICAgICAgICA6YXR0cjpgLlNjaGVtYUl0ZW0uaW5mb2AgYXR0cmlidXRlIG9mIHRoaXMgb2JqZWN0LgoKICAgICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4wLjAKCiAgICAgICAgOnBhcmFtIFwqKmRpYWxlY3Rfa3c6ICBBZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIGFyZSBkaWFsZWN0CiAgICAgICAgICAgIHNwZWNpZmljLCBhbmQgcGFzc2VkIGluIHRoZSBmb3JtIGBgPGRpYWxlY3RuYW1lPl88YXJnbmFtZT5gYC4gIFRoZQogICAgICAgICAgICBhcmd1bWVudHMgYXJlIHVsdGltYXRlbHkgaGFuZGxlZCBieSBhIGNvcnJlc3BvbmRpbmcKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YC4KICAgICAgICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZwogICAgICAgICAgICBhbiBpbmRpdmlkdWFsIGRpYWxlY3QgYXQgOnJlZjpgZGlhbGVjdF90b3BsZXZlbGAgZm9yIGRldGFpbCBvbgogICAgICAgICAgICBkb2N1bWVudGVkIGFyZ3VtZW50cy4KCiAgICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuOS4yCgogICAgICAgIE7aEl9fY2xhdXNlX2VsZW1lbnRfX3o5U3RyaW5nLCBDb2x1bW4sIG9yIENvbHVtbi1ib3VuZCBhcmd1bWVudCBleHBlY3RlZCwgZ290ICVyejhGb3JlaWduS2V5IHJlY2VpdmVkIENvbHVtbiBub3QgYm91bmQgdG8gYSBUYWJs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aCBkZXJpdmVzIGZyb20KICAgICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgLiAgVGhlIFNRTCBleHByZXNzaW9uIHdpbGwKICAgICAgICAgICBiZSByZW5kZXJlZCBpbnRvIHRoZSBJTlNFUlQgb3IgVVBEQVRFIHN0YXRlbWVudCwKICAgICAgICAgICBvciBpbiB0aGUgY2FzZSBvZiBhIHByaW1hcnkga2V5IGNvbHVtbiB3aGVuCiAgICAgICAgICAgUkVUVVJOSU5HIGlzIG5vdCB1c2VkIG1heSBiZQogICAgICAgICAgIHByZS1leGVjdXRlZCBiZWZvcmUgYW4gSU5TRVJUIHdpdGhpbiBhIFNFTEVDVC4KICAgICAgICAgKiBBIFB5dGhvbiBjYWxsYWJsZS4gIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgZm9yIGVhY2gKICAgICAgICAgICBuZXcgcm93IHN1YmplY3QgdG8gYW4gSU5TRVJUIG9yIFVQREFURS4KICAgICAgICAgICBUaGUgY2FsbGFibGUgbXVzdCBhY2NlcHQgZXhhY3RseQogICAgICAgICAgIHplcm8gb3Igb25lIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgVGhlIG9uZS1hcmd1bWVudCBmb3JtCiAgICAgICAgICAgd2lsbCByZWNlaXZlIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YC5FeGVjdXRpb25Db250ZXh0YCwKICAgICAgICAgICB3aGljaCBwcm92aWRlcyBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGFzIHRvIHRoZSBjdXJyZW50CiAgICAgICAgICAgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gIGluIHVzZSBhcyB3ZWxsIGFzIHRoZSBjdXJyZW50CiAgICAgICAgICAgc3RhdGVtZW50IGFuZCBwYXJhbWV0ZXJzLgoKICAgICAgICB6NENvbHVtbkRlZmF1bHQgbWF5IG5vdCBiZSBhIHNlcnZlci1zaWRlIGRlZmF1bHQgdHlwZS5Och8AAAApC3KRAAAAcjoBAAByhAAAAHIoAAAAcj0BAAByGAAAAHI8AAAAchoAAADaCGNhbGxhYmxl2hRf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AAAAfAJ8AF8BAAAAAAAAAAB8A3wAXwIAAAAAAAAAAHwEfABfAwAAAAAAAAAAfAV8AF8EAAAAAAAAAAB8BnwAXwUAAAAAAAAAAHwHfABfBgAAAAAAAAAAfAh8AF8HAAAAAAAAAAB8CXwAXwgAAAAAAAAAAGQBUwApAmFpAwAAQ29uc3RydWN0IGEgOmNsYXNzOmAuSWRlbnRpdHlPcHRpb25zYCBvYmplY3QuCgogICAgICAgIFNlZSB0aGUgOmNsYXNzOmAuU2VxdWVuY2VgIGRvY3VtZW50YXRpb24gZm9yIGEgY29tcGxldGUgZGVzY3JpcHRpb24KICAgICAgICBvZiB0aGUgcGFyYW1ldGVycwoKICAgICAgICA6cGFyYW0gc3RhcnQ6IHRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgc2VxdWVuY2UuCiAgICAgICAgOnBhcmFtIGluY3JlbWVudDogdGhlIGluY3JlbWVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UuCiAgICAgICAgOnBhcmFtIG1pbnZhbHVlOiB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UuCiAgICAgICAgOnBhcmFtIG1heHZhbHVlOiB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UuCiAgICAgICAgOnBhcmFtIG5vbWludmFsdWU6IG5vIG1pbmltdW0gdmFsdWUgb2YgdGhlIHNlcXVlbmNlLgogICAgICAgIDpwYXJhbSBub21heHZhbHVlOiBubyBtYXhpbXVtIHZhbHVlIG9mIHRoZSBzZXF1ZW5jZS4KICAgICAgICA6cGFyYW0gY3ljbGU6IGFsbG93cyB0aGUgc2VxdWVuY2UgdG8gd3JhcCBhcm91bmQgd2hlbiB0aGUgbWF4dmFsdWUKICAgICAgICAgb3IgbWludmFsdWUgaGFzIGJlZW4gcmVhY2hlZC4KICAgICAgICA6cGFyYW0gY2FjaGU6IG9wdGlvbmFsIGludGVnZXIgdmFsdWU7IG51bWJlciBvZiBmdXR1cmUgdmFsdWVzIGluIHRoZQogICAgICAgICBzZXF1ZW5jZSB3aGljaCBhcmUgY2FsY3VsYXRlZCBpbiBhZHZhbmNlLgogICAgICAgIDpwYXJhbSBvcmRlcjogb3B0aW9uYWwgYm9vbGVhbiB2YWx1ZTsgaWYgYGBUcnVlYGAsIHJlbmRlcnMgdGhlCiAgICAgICAgIE9SREVSIGtleXdvcmQuCiAgICAgICAgIG5hbWUuCiAgICAgICAgTqkJ2gVzdGFydNoJaW5jcmVtZW502ghtaW52YWx1ZdoIbWF4dmFsdWXaCm5vbWludmFsdWXaCm5vbWF4dmFsdWXaBWN5Y2xl2gVjYWNoZdoFb3JkZXIpCnI9AAAAcgMCAAByBAIAAHIFAgAAcgYCAAByBwIAAHIIAgAAcgkCAAByCgIAAHILAgAAcwoAAAAgICAgICAgICAgciIAAAByhAAAAHoYSWRlbnRpdHlPcHRpb25zLl9faW5pdF9f0wkAAHNHAAAAgADwPgAWG4gEjArYGSKIBIwO2BggiASMDdgYIIgEjA3YGiSIBIwP2BokiASMD9gVGogEjArYFRqIBIwK2BUaiASMCogKiApyJAAAACkJTk5OTk5OTk5OqQVyXQAAAHJeAAAAcl8AAAByYAAAAHKEAAAAch8AAAByJAAAAHIiAAAAcgACAAByAAIAAMgJAABzTwAAAIAAgACAAIAAgADwAggFCPAACAUI8BgADxPYEhbYERXYERXYExfYExfYDhLYDhLYDhLwFScFG/AAJwUb8AAnBRvwACcFG/AAJwUb8AAnBRtyJAAAAHIAAgAAYwAAAAAAAAAAAAAAAAMAAAAAAAAA8/oAAACHAJcAZQBaAWQAWgJkAVoDZAJaBGQDWgUJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQBkEmQGhAFaBmUHaggAAAAAAAAAAGQHhACmAAAAqwAAAAAAAAAAAFoJZQdqCAAAAAAAAAAAZAiEAKYAAACrAAAAAAAAAAAAWgoCAGUHagsAAAAAAAAAAGQJpgEAAKsBAAAAAAAAAABkCoQApgAAAKsAAAAAAAAAAABaDIgAZgFkC4QIWg1kDIQAWg5kDYQAWg9lEGQOhACmAAAAqwAAAAAAAAAAAFoRZBNkD4QBWhJkE2QQhAFaE2QRhABaFIgAeAFaFVMAKRRyOwEAAGHnAwAAUmVwcmVzZW50cyBhIG5hbWVkIGRhdGFiYXNlIHNlcXVlbmNlLgoKICAgIFRoZSA6Y2xhc3M6YC5TZXF1ZW5jZWAgb2JqZWN0IHJlcHJlc2VudHMgdGhlIG5hbWUgYW5kIGNvbmZpZ3VyYXRpb25hbAogICAgcGFyYW1ldGVycyBvZiBhIGRhdGFiYXNlIHNlcXVlbmNlLiAgIEl0IGFsc28gcmVwcmVzZW50cwogICAgYSBjb25zdHJ1Y3QgdGhhdCBjYW4gYmUgImV4ZWN1dGVkIiBieSBhIFNRTEFsY2hlbXkgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAKICAgIG9yIDpjbGFzczpgX2VuZ2luZS5Db25uZWN0aW9uYCwKICAgIHJlbmRlcmluZyB0aGUgYXBwcm9wcmlhdGUgIm5leHQgdmFsdWUiIGZ1bmN0aW9uCiAgICBmb3IgdGhlIHRhcmdldCBkYXRhYmFzZSBhbmQgcmV0dXJuaW5nIGEgcmVzdWx0LgoKICAgIFRoZSA6Y2xhc3M6YC5TZXF1ZW5jZWAgaXMgdHlwaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBhIHByaW1hcnkga2V5IGNvbHVtbjo6CgogICAgICAgIHNvbWVfdGFibGUgPSBUYWJsZSgKICAgICAgICAgICAgJ3NvbWVfdGFibGUnLCBtZXRhZGF0YSwKICAgICAgICAgICAgQ29sdW1uKCdpZCcsIEludGVnZXIsIFNlcXVlbmNlKCdzb21lX3RhYmxlX3NlcScpLAogICAgICAgICAgICBwcmltYXJ5X2tleT1UcnVlKQogICAgICAgICkKCiAgICBXaGVuIENSRUFURSBUQUJMRSBpcyBlbWl0dGVkIGZvciB0aGUgYWJvdmUgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwgaWYgdGhlCiAgICB0YXJnZXQgcGxhdGZvcm0gc3VwcG9ydHMgc2VxdWVuY2VzLCBhIENSRUFURSBTRVFVRU5DRSBzdGF0ZW1lbnQgd2lsbAogICAgYmUgZW1pdHRlZCBhcyB3ZWxsLiAgIEZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHNlcXVlbmNlcywKICAgIHRoZSA6Y2xhc3M6YC5TZXF1ZW5jZWAgY29uc3RydWN0IGlzIGlnbm9yZWQuCgogICAgLi4gc2VlYWxzbzo6CgogICAgICAgIDpjbGFzczpgLkNyZWF0ZVNlcXVlbmNlYAoKICAgICAgICA6Y2xhc3M6YC5Ecm9wU2VxdWVuY2VgCgogICAg2ghzZXF1ZW5jZVRORmMRAAAAAAAAAAAAAAAMAAAAAwAAAPOsAQAAlwB0AAAAAAAAAAAAAACgAQAAAAAAAAAAAAAAAAAAAAAAAAAAfAB8EKwBpgIAAKsCAAAAAAAAAAABAHQEAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AHwCfAN8BHwFfAZ8B3wIfAp8C6wCpgoAAKsKAAAAAAAAAAABAHQHAAAAAAAAAAAAAHwBfA2mAgAAqwIAAAAAAAAAAHwAXwQAAAAAAAAAAHwMfABfBQAAAAAAAAAAfAl0DAAAAAAAAAAAAAB1AHIKZAN4AXwAXwcAAAAAAAAAAH0Jbi98DoEYfAmAFnwOagcAAAAAAAAAAHIPfA5qBwAAAAAAAAAAeAF8AF8HAAAAAAAAAAB9CW4VdAcAAAAAAAAAAAAAfAl8D6YCAACrAgAAAAAAAAAAfABfBwAAAAAAAAAAfA58AF8IAAAAAAAAAAB0EwAAAAAAAAAAAAB8AXwJpgIAAKsCAAAAAAAAAAB8AF8KAAAAAAAAAAB8DnIXfACgCwAAAAAAAAAAAAAAAAAAAAAAAAAAfA6mAQAAqwEAAAAAAAAAAAEAZANTAGQDUwApBGFsGAAAQ29uc3RydWN0IGEgOmNsYXNzOmAuU2VxdWVuY2VgIG9iamVjdC4KCiAgICAgICAgOnBhcmFtIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBzZXF1ZW5jZS4KICAgICAgICA6cGFyYW0gc3RhcnQ6IHRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgc2VxdWVuY2UuICBUaGlzIHZhbHVlIGlzCiAgICAgICAgIHVzZWQgd2hlbiB0aGUgQ1JFQVRFIFNFUVVFTkNFIGNvbW1hbmQgaXMgZW1pdHRlZCB0byB0aGUgZGF0YWJhc2UKICAgICAgICAgYXMgdGhlIHZhbHVlIG9mIHRoZSAiU1RBUlQgV0lUSCIgY2xhdXNlLiAgIElmIGBgTm9uZWBgLCB0aGUKICAgICAgICAgY2xhdXNlIGlzIG9taXR0ZWQsIHdoaWNoIG9uIG1vc3QgcGxhdGZvcm1zIGluZGljYXRlcyBhIHN0YXJ0aW5nCiAgICAgICAgIHZhbHVlIG9mIDEuCiAgICAgICAgOnBhcmFtIGluY3JlbWVudDogdGhlIGluY3JlbWVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UuICBUaGlzCiAgICAgICAgIHZhbHVlIGlzIHVzZWQgd2hlbiB0aGUgQ1JFQVRFIFNFUVVFTkNFIGNvbW1hbmQgaXMgZW1pdHRlZCB0bwogICAgICAgICB0aGUgZGF0YWJhc2UgYXMgdGhlIHZhbHVlIG9mIHRoZSAiSU5DUkVNRU5UIEJZIiBjbGF1c2UuICBJZiBgYE5vbmVgYCwKICAgICAgICAgdGhlIGNsYXVzZSBpcyBvbWl0dGVkLCB3aGljaCBvbiBtb3N0IHBsYXRmb3JtcyBpbmRpY2F0ZXMgYW4KICAgICAgICAgaW5jcmVtZW50IG9mIDEuCiAgICAgICAgOnBhcmFtIG1pbnZhbHVlOiB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UuICBUaGlzCiAgICAgICAgIHZhbHVlIGlzIHVzZWQgd2hlbiB0aGUgQ1JFQVRFIFNFUVVFTkNFIGNvbW1hbmQgaXMgZW1pdHRlZCB0bwogICAgICAgICB0aGUgZGF0YWJhc2UgYXMgdGhlIHZhbHVlIG9mIHRoZSAiTUlOVkFMVUUiIGNsYXVzZS4gIElmIGBgTm9uZWBgLAogICAgICAgICB0aGUgY2xhdXNlIGlzIG9taXR0ZWQsIHdoaWNoIG9uIG1vc3QgcGxhdGZvcm1zIGluZGljYXRlcyBhCiAgICAgICAgIG1pbnZhbHVlIG9mIDEgYW5kIC0yXjYzLTEgZm9yIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZyBzZXF1ZW5jZXMsCiAgICAgICAgIHJlc3BlY3RpdmVseS4KCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC43CgogICAgICAgIDpwYXJhbSBtYXh2YWx1ZTogdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHNlcXVlbmNlLiAgVGhpcwogICAgICAgICB2YWx1ZSBpcyB1c2VkIHdoZW4gdGhlIENSRUFURSBTRVFVRU5DRSBjb21tYW5kIGlzIGVtaXR0ZWQgdG8KICAgICAgICAgdGhlIGRhdGFiYXNlIGFzIHRoZSB2YWx1ZSBvZiB0aGUgIk1BWFZBTFVFIiBjbGF1c2UuICBJZiBgYE5vbmVgYCwKICAgICAgICAgdGhlIGNsYXVzZSBpcyBvbWl0dGVkLCB3aGljaCBvbiBtb3N0IHBsYXRmb3JtcyBpbmRpY2F0ZXMgYQogICAgICAgICBtYXh2YWx1ZSBvZiAyXjYzLTEgYW5kIC0xIGZvciBhc2NlbmRpbmcgYW5kIGRlc2NlbmRpbmcgc2VxdWVuY2VzLAogICAgICAgICByZXNwZWN0aXZlbHkuCgogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjAuNwoKICAgICAgICA6cGFyYW0gbm9taW52YWx1ZTogbm8gbWluaW11bSB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UuICBUaGlzCiAgICAgICAgIHZhbHVlIGlzIHVzZWQgd2hlbiB0aGUgQ1JFQVRFIFNFUVVFTkNFIGNvbW1hbmQgaXMgZW1pdHRlZCB0bwogICAgICAgICB0aGUgZGF0YWJhc2UgYXMgdGhlIHZhbHVlIG9mIHRoZSAiTk8gTUlOVkFMVUUiIGNsYXVzZS4gIElmIGBgTm9uZWBgLAogICAgICAgICB0aGUgY2xhdXNlIGlzIG9taXR0ZWQsIHdoaWNoIG9uIG1vc3QgcGxhdGZvcm1zIGluZGljYXRlcyBhCiAgICAgICAgIG1pbnZhbHVlIG9mIDEgYW5kIC0yXjYzLTEgZm9yIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZyBzZXF1ZW5jZXMsCiAgICAgICAgIHJlc3BlY3RpdmVseS4KCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC43CgogICAgICAgIDpwYXJhbSBub21heHZhbHVlOiBubyBtYXhpbXVtIHZhbHVlIG9mIHRoZSBzZXF1ZW5jZS4gIFRoaXMKICAgICAgICAgdmFsdWUgaXMgdXNlZCB3aGVuIHRoZSBDUkVBVEUgU0VRVUVOQ0UgY29tbWFuZCBpcyBlbWl0dGVkIHRvCiAgICAgICAgIHRoZSBkYXRhYmFzZSBhcyB0aGUgdmFsdWUgb2YgdGhlICJOTyBNQVhWQUxVRSIgY2xhdXNlLiAgSWYgYGBOb25lYGAsCiAgICAgICAgIHRoZSBjbGF1c2UgaXMgb21pdHRlZCwgd2hpY2ggb24gbW9zdCBwbGF0Zm9ybXMgaW5kaWNhdGVzIGEKICAgICAgICAgbWF4dmFsdWUgb2YgMl42My0xIGFuZCAtMSBmb3IgYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIHNlcXVlbmNlcywKICAgICAgICAgcmVzcGVjdGl2ZWx5LgoKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4wLjcKCiAgICAgICAgOnBhcmFtIGN5Y2xlOiBhbGxvd3MgdGhlIHNlcXVlbmNlIHRvIHdyYXAgYXJvdW5kIHdoZW4gdGhlIG1heHZhbHVlCiAgICAgICAgIG9yIG1pbnZhbHVlIGhhcyBiZWVuIHJlYWNoZWQgYnkgYW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgc2VxdWVuY2UKICAgICAgICAgcmVzcGVjdGl2ZWx5LiAgVGhpcyB2YWx1ZSBpcyB1c2VkIHdoZW4gdGhlIENSRUFURSBTRVFVRU5DRSBjb21tYW5kCiAgICAgICAgIGlzIGVtaXR0ZWQgdG8gdGhlIGRhdGFiYXNlIGFzIHRoZSAiQ1lDTEUiIGNsYXVzZS4gIElmIHRoZSBsaW1pdCBpcwogICAgICAgICByZWFjaGVkLCB0aGUgbmV4dCBudW1iZXIgZ2VuZXJhdGVkIHdpbGwgYmUgdGhlIG1pbnZhbHVlIG9yIG1heHZhbHVlLAogICAgICAgICByZXNwZWN0aXZlbHkuICBJZiBjeWNsZT1GYWxzZSAodGhlIGRlZmF1bHQpIGFueSBjYWxscyB0byBuZXh0dmFsCiAgICAgICAgIGFmdGVyIHRoZSBzZXF1ZW5jZSBoYXMgcmVhY2hlZCBpdHMgbWF4aW11bSB2YWx1ZSB3aWxsIHJldHVybiBhbgogICAgICAgICBlcnJvci4KCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC43CgogICAgICAgIDpwYXJhbSBzY2hlbWE6IG9wdGlvbmFsIHNjaGVtYSBuYW1lIGZvciB0aGUgc2VxdWVuY2UsIGlmIGxvY2F0ZWQKICAgICAgICAgaW4gYSBzY2hlbWEgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdC4gIFRoZSBydWxlcyBmb3Igc2VsZWN0aW5nIHRoZQogICAgICAgICBzY2hlbWEgbmFtZSB3aGVuIGEgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYAogICAgICAgICBpcyBhbHNvIHByZXNlbnQgYXJlIHRoZSBzYW1lCiAgICAgICAgIGFzIHRoYXQgb2YgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLnNjaGVtYWAuCgogICAgICAgIDpwYXJhbSBjYWNoZTogb3B0aW9uYWwgaW50ZWdlciB2YWx1ZTsgbnVtYmVyIG9mIGZ1dHVyZSB2YWx1ZXMgaW4gdGhlCiAgICAgICAgIHNlcXVlbmNlIHdoaWNoIGFyZSBjYWxjdWxhdGVkIGluIGFkdmFuY2UuICBSZW5kZXJzIHRoZSBDQUNIRSBrZXl3b3JkCiAgICAgICAgIHVuZGVyc3Rvb2QgYnkgT3JhY2xlIGFuZCBQb3N0Z3JlU1FMLgoKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4xLjEyCgogICAgICAgIDpwYXJhbSBvcmRlcjogb3B0aW9uYWwgYm9vbGVhbiB2YWx1ZTsgaWYgYGBUcnVlYGAsIHJlbmRlcnMgdGhlCiAgICAgICAgIE9SREVSIGtleXdvcmQsIHVuZGVyc3Rvb2QgYnkgT3JhY2xlLCBpbmRpY2F0aW5nIHRoZSBzZXF1ZW5jZSBpcwogICAgICAgICBkZWZpbml0aXZlbHkgb3JkZXJlZC4gICBNYXkgYmUgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgZGV0ZXJtaW5pc3RpYwogICAgICAgICBvcmRlcmluZyB1c2luZyBPcmFjbGUgUkFDLgoKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4xLjEyCgogICAgICAgIDpwYXJhbSBvcHRpb25hbDogYm9vbGVhbiB2YWx1ZSwgd2hlbiBgYFRydWVgYCwgaW5kaWNhdGVzIHRoYXQgdGhpcwogICAgICAgICA6Y2xhc3M6YC5TZXF1ZW5jZWAgb2JqZWN0IG9ubHkgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBnZW5lcmF0ZWQKICAgICAgICAgb24gYmFja2VuZHMgdGhhdCBkb24ndCBwcm92aWRlIGFub3RoZXIgd2F5IHRvIGdlbmVyYXRlIHByaW1hcnkKICAgICAgICAga2V5IGlkZW50aWZpZXJzLiAgQ3VycmVudGx5LCBpdCBlc3NlbnRpYWxseSBtZWFucywgImRvbid0IGNyZWF0ZQogICAgICAgICB0aGlzIHNlcXVlbmNlIG9uIHRoZSBQb3N0Z3JlU1FMIGJhY2tlbmQsIHdoZXJlIHRoZSBTRVJJQUwga2V5d29yZAogICAgICAgICBjcmVhdGVzIGEgc2VxdWVuY2UgZm9yIHVzIGF1dG9tYXRpY2FsbHkiLgogICAgICAgIDpwYXJhbSBxdW90ZTogYm9vbGVhbiB2YWx1ZSwgd2hlbiBgYFRydWVgYCBvciBgYEZhbHNlYGAsIGV4cGxpY2l0bHkKICAgICAgICAgZm9yY2VzIHF1b3Rpbmcgb2YgdGhlIDpwYXJhbXJlZjpgX3NjaGVtYS5TZXF1ZW5jZS5uYW1lYCBvbiBvciBvZmYuCiAgICAgICAgIFdoZW4gbGVmdCBhdCBpdHMgZGVmYXVsdCBvZiBgYE5vbmVgYCwgbm9ybWFsIHF1b3RpbmcgcnVsZXMgYmFzZWQKICAgICAgICAgb24gY2FzaW5nIGFuZCByZXNlcnZlZCB3b3JkcyB0YWtlIHBsYWNlLgogICAgICAgIDpwYXJhbSBxdW90ZV9zY2hlbWE6IFNldCB0aGUgcXVvdGluZyBwcmVmZXJlbmNlcyBmb3IgdGhlIGBgc2NoZW1hYGAKICAgICAgICAgbmFtZS4KCiAgICAgICAgOnBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgIG9iamVjdCB3aGljaCB0aGlzCiAgICAgICAgIDpjbGFzczpgLlNlcXVlbmNlYCB3aWxsIGJlIGFzc29jaWF0ZWQgd2l0aC4gIEEgOmNsYXNzOmAuU2VxdWVuY2VgCiAgICAgICAgIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYAogICAgICAgICBnYWlucyB0aGUgZm9sbG93aW5nCiAgICAgICAgIGNhcGFiaWxpdGllczoKCiAgICAgICAgICogVGhlIDpjbGFzczpgLlNlcXVlbmNlYCB3aWxsIGluaGVyaXQgdGhlCiAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLk1ldGFEYXRhLnNjaGVtYWAKICAgICAgICAgICBwYXJhbWV0ZXIgc3BlY2lmaWVkIHRvIHRoZSB0YXJnZXQgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCwgd2hpY2gKICAgICAgICAgICBhZmZlY3RzIHRoZSBwcm9kdWN0aW9uIG9mIENSRUFURSAvIERST1AgRERMLCBpZiBhbnkuCgogICAgICAgICAqIFRoZSA6bWV0aDpgLlNlcXVlbmNlLmNyZWF0ZWAgYW5kIDptZXRoOmAuU2VxdWVuY2UuZHJvcGAgbWV0aG9kcwogICAgICAgICAgIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSBlbmdpbmUgYm91bmQgdG8gdGhlIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAKICAgICAgICAgICBvYmplY3QsIGlmIGFueS4KCiAgICAgICAgICogVGhlIDptZXRoOmBfc2NoZW1hLk1ldGFEYXRhLmNyZWF0ZV9hbGxgIGFuZAogICAgICAgICAgIDptZXRoOmBfc2NoZW1hLk1ldGFEYXRhLmRyb3BfYWxsYAogICAgICAgICAgIG1ldGhvZHMgd2lsbCBlbWl0IENSRUFURSAvIERST1AgZm9yIHRoaXMgOmNsYXNzOmAuU2VxdWVuY2VgLAogICAgICAgICAgIGV2ZW4gaWYgdGhlIDpjbGFzczpgLlNlcXVlbmNlYCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueQogICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgLyA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICAgIHRoYXQncyBhIG1lbWJlciBvZiB0aGlzCiAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYC4KCiAgICAgICAgIFRoZSBhYm92ZSBiZWhhdmlvcnMgY2FuIG9ubHkgb2NjdXIgaWYgdGhlIDpjbGFzczpgLlNlcXVlbmNlYCBpcwogICAgICAgICBleHBsaWNpdGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYAogICAgICAgICB2aWEgdGhpcyBwYXJhbWV0ZXIuCgogICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YHNlcXVlbmNlX21ldGFkYXRhYCAtIGZ1bGwgZGlzY3Vzc2lvbiBvZiB0aGUKICAgICAgICAgICAgOnBhcmFtcmVmOmAuU2VxdWVuY2UubWV0YWRhdGFgIHBhcmFtZXRlci4KCiAgICAgICAgOnBhcmFtIGZvcl91cGRhdGU6IEluZGljYXRlcyB0aGlzIDpjbGFzczpgLlNlcXVlbmNlYCwgd2hlbiBhc3NvY2lhdGVkCiAgICAgICAgIHdpdGggYSA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYCwKICAgICAgICAgc2hvdWxkIGJlIGludm9rZWQgZm9yIFVQREFURSBzdGF0ZW1lbnRzCiAgICAgICAgIG9uIHRoYXQgY29sdW1uJ3MgdGFibGUsIHJhdGhlciB0aGFuIGZvciBJTlNFUlQgc3RhdGVtZW50cywgd2hlbgogICAgICAgICBubyB2YWx1ZSBpcyBvdGhlcndpc2UgcHJlc2VudCBmb3IgdGhhdCBjb2x1bW4gaW4gdGhlIHN0YXRlbWVudC4KCiAgICAgICAgcjQBAAByAgIAAE4pDHLMAQAAcoQAAAByAAIAAHISAAAAciAAAADaCG9wdGlvbmFscnEAAAByIQAAAHJ/AAAAciMAAADaBF9rZXnaDV9zZXRfbWV0YWRhdGEpEXI9AAAAciAAAAByAwIAAHIEAgAAcgUCAAByBgIAAHIHAgAAcggCAAByCQIAAHIhAAAAcgoCAAByCwIAAHIQAgAAclAAAAByfwAAAHKCAAAAcjUBAABzEQAAACAgICAgICAgICAgICAgICAgciIAAAByhAAAAHoRU2VxdWVuY2UuX19pbml0X18gCgAAcwEBAACAAPVsBAAJGdcIIdIIIaAksDrQCCHRCD7UCD7QCD7dCBfXCCDSCCDYDBDYEhfYFh/YFR3YFR3YFyHYFyHYEhfYEhfYEhfwFQAJIfEACwkK9AALCQrwAAsJCvUYABUgoASgZdEULNQULIgEjAnYGCCIBIwN2AsRlVzQCyHQCyHYIyfQDCeIRIxLmCaYJtgNFdANIaBmoG64GLwfoG7YIyukP9AMMohEjEuYJpgm5RoloGaobNEaO9QaO4hEjEvYGCCIBIwN3RQioDSoFtEUMNQUMIgEjAnYCxPwAAEJKdgMENcMHtIMHph40Qwo1Awo0Awo0Awo0Awo8AMBCSnwAAEJKXIkAAAAYwEAAAAAAAAAAAAAAAEAAAADAAAA8wYAAACXAGQBUwByIQEAAHIfAAAAckwAAABzAQAAACByIgAAAHLiAQAAehRTZXF1ZW5jZS5pc19jYWxsYWJsZdAKAADzBwAAAIAA4A8UiHVyJAAAAGMBAAAAAAAAAAAAAAABAAAAAwAAAPMGAAAAlwBkAVMAciEBAAByHwAAAHJMAAAAcwEAAAAgciIAAABy5AEAAHoaU2VxdWVuY2UuaXNfY2xhdXNlX2VsZW1lbnTUCgAAchQCAAByJAAAAHodc3FsYWxjaGVteS5zcWwuZnVuY3Rpb25zLmZ1bmNjAgAAAAAAAAAAAAAABAAAAAMAAADzOgAAAJcAfAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAB8AGoBAAAAAAAAAACsAaYCAACrAgAAAAAAAAAAUwApAnq0UmV0dXJuIGEgOmNsYXNzOmAubmV4dF92YWx1ZWAgZnVuY3Rpb24gZWxlbWVudAogICAgICAgIHdoaWNoIHdpbGwgcmVuZGVyIHRoZSBhcHByb3ByaWF0ZSBpbmNyZW1lbnQgZnVuY3Rpb24KICAgICAgICBmb3IgdGhpcyA6Y2xhc3M6YC5TZXF1ZW5jZWAgd2l0aGluIGFueSBTUUwgZXhwcmVzc2lvbi4KCiAgICAgICAgqQFypwAAACkC2gpuZXh0X3ZhbHVlcqcAAAApAnI9AAAA2gRmdW5jcwIAAAAgIHIiAAAAchgCAAB6E1NlcXVlbmNlLm5leHRfdmFsdWXYCgAAcxwAAACAAPAOABAUj3+Kf5h0qCSsKYh/0Q801A800Ag0ciQAAABjAgAAAAAAAAAAAAAABAAAAAMAAADzjAAAAJUBlwB0AQAAAAAAAAAAAAB0AgAAAAAAAAAAAAB8AKYCAACrAgAAAAAAAAAAoAIAAAAAAAAAAAAAAAAAAAAAAAAAAHwBpgEAAKsBAAAAAAAAAAABAHwBoAMAAAAAAAAAAAAAAAAAAAAAAAAAAHwAagQAAAAAAAAAAKYBAACrAQAAAAAAAAAAAQBkAFMAcicAAAApBXKRAAAAcjsBAABy+QAAAHJgAQAAcrcBAAApA3I9AAAAcuYAAAByoAAAAHMDAAAAICCAciIAAABy+QAAAHoUU2VxdWVuY2UuX3NldF9wYXJlbnThCgAAcz0AAAD4gADdCA2NaJgE0Qgd1Agd1wgp0ggpqCbRCDHUCDHQCDHYCA7XCB/SCB+gBKQP0Qgw1Agw0Agw0Agw0AgwciQAAABjAwAAAAAAAAAAAAAAAwAAAAMAAADzOgAAAJcAfACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAJqAQAAAAAAAAAApgEAAKsBAAAAAAAAAAABAGQAUwByJwAAACkCchICAAByfwAAACkDcj0AAABy5gAAAHIqAAAAcwMAAAAgICByIgAAAHK3AQAAehNTZXF1ZW5jZS5fc2V0X3RhYmxl5QoAAHMeAAAAgADYCAzXCBrSCBqYNZw+0Qgq1Agq0Agq0Agq0AgqciQAAABjAgAAAAAAAAAAAAAAAwAAAAMAAADzPAAAAJcAfAF8AF8AAAAAAAAAAAB8AHwAagAAAAAAAAAAAGoBAAAAAAAAAAB8AGoCAAAAAAAAAAA8AAAAZABTAHInAAAAKQNyfwAAANoKX3NlcXVlbmNlc3IRAgAAcvgAAABzAgAAACAgciIAAAByEgIAAHoWU2VxdWVuY2UuX3NldF9tZXRhZGF0YegKAABzIAAAAIAA2BggiASMDdguMogEjA3UCCCgFKQZ0Qgr0Agr0AgrciQAAABjAQAAAAAAAAAAAAAAAQAAAAMAAADzLAAAAJcAfABqAAAAAAAAAAAAcgx8AGoAAAAAAAAAAABqAQAAAAAAAAAAUwBkAFMAcicAAABy3gAAAHJMAAAAcwEAAAAgciIAAABypwAAAHoNU2VxdWVuY2UuYmluZOwKAABzHAAAAIAA4AsPjD3wAAMJGNgTF5Q91BMl0Awl4BMXkDRyJAAAAGMDAAAAAAAAAAAAAAAFAAAAAwAAAPNsAAAAlwB8AYAPdAEAAAAAAAAAAAAAfACmAQAAqwEAAAAAAAAAAH0BfAGgAQAAAAAAAAAAAAAAAAAAAAAAAAAAdAQAAAAAAAAAAAAAagMAAAAAAAAAAHwAfAKsAqYDAACrAwAAAAAAAAAAAQBkAVMAKQN6JkNyZWF0ZXMgdGhpcyBzZXF1ZW5jZSBpbiB0aGUgZGF0YWJhc2UuTnIDAQAAcgUBAAByCAEAAHMDAAAAICAgciIAAAByCQEAAHoPU2VxdWVuY2UuY3JlYXRl8woAAHM6AAAAgADwBgAMEIg83RMhoCTREyfUEyeIRNgIDNcIGdIIGZ0j1BotqHTACtAIGdEIS9QIS9AIS9AIS9AIS3IkAAAAYwMAAAAAAAAAAAAAAAUAAAADAAAA82wAAACXAHwBgA90AQAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQF8AaABAAAAAAAAAAAAAAAAAAAAAAAAAAB0BAAAAAAAAAAAAABqAwAAAAAAAAAAfAB8AqwCpgMAAKsDAAAAAAAAAAABAGQBUwApA3omRHJvcHMgdGhpcyBzZXF1ZW5jZSBmcm9tIHRoZSBkYXRhYmFzZS5OcgMBAAByCwEAAHIIAQAAcwMAAAAgICByIgAAAHINAQAAeg1TZXF1ZW5jZS5kcm9w+goAAHM6AAAAgADwBgAMEIg83RMhoCTREyfUEyeIRNgIDNcIGdIIGZ0j1BorqFS4atAIGdEISdQISdAISdAISdAISXIkAAAAYwEAAAAAAAAAAAAAAAQAAAADAAAA80QAAACXAHQBAAAAAAAAAAAAAGoBAAAAAAAAAABkAXwAagIAAAAAAAAAAGoDAAAAAAAAAAB6BgAApgEAAKsBAAAAAAAAAACCASkCTnqcVGhpcyAlcyBjYW5ub3QgYmUgdXNlZCBkaXJlY3RseSBhcyBhIGNvbHVtbiBleHByZXNzaW9uLiAgVXNlIGZ1bmMubmV4dF92YWx1ZShzZXF1ZW5jZSkgdG8gcHJvZHVjZSBhICduZXh0IHZhbHVlJyBmdW5jdGlvbiB0aGF0J3MgdXNhYmxlIGFzIGEgY29sdW1uIGVsZW1lbnQucsQBAAByTAAAAHMBAAAAIHIiAAAAcsUBAAB6G1NlcXVlbmNlLl9ub3RfYV9jb2x1bW5fZXhwcgELAABzKwAAAIAA3Q4R1A4l8AIDDSPwBgAmKqRe1CU88QcDDT3xAwUPCvQABQ8K8AAFCQpyJAAAACkPTk5OTk5OTk5OTkZOTk5GKQJOVCkWcl0AAAByXgAAAHJfAAAAcmAAAAByYQAAAHLaAQAAcoQAAAByGgAAAHJkAAAAcuIBAABy5AEAAHL+AQAAchgCAABy+QAAAHK3AQAAchICAAByYgAAAHKnAAAAcgkBAAByDQEAAHLFAQAAciMBAAByJAEAAHMBAAAAQHIiAAAAcjsBAAByOwEAAP0JAABzdgEAAPiAAIAAgACAAIAA8AIcBQjwABwFCPA8ABYggE7gEhaAS/AKAA8T2BIW2BEV2BEV2BMX2BMX2A4S2A8T2A4S2A4S2BEW2A4S2BEV2BUZ2BMY8CNuAgUp8ABuAgUp8ABuAgUp8ABuAgUp8GAFAAYK1AUb8AIBBRXwAAEFFfEDAAYc1AUb8AIBBRXwBgAGCtQFG/ACAQUV8AABBRXxAwAGHNQFG/ACAQUV8AYABheAVNQFFtAXNtEFN9QFN/ACBgU18AAGBTXxAwAGONQFN/ACBgU18BACBTHwAAIFMfAAAgUx8AACBTHwAAIFMfAIAQUr8AABBSvwAAEFK/AGAgUz8AACBTPwAAIFM/AIAAYO8AIEBRjwAAQFGPEDAAYOhFjwAgQFGPAMBQVMAfAABQVMAfAABQVMAfAABQVMAfAOBQVKAfAABQVKAfAABQVKAfAABQVKAfAOBgUK8AAGBQrwAAYFCvAABgUK8AAGBQrwAAYFCvAABgUKciQAAAByOwEAAGMAAAAAAAAAAAAAAAACAAAAAAAAAPM+AAAAlwBlAFoBZABaAmQBWgNkAloEZANaBWQDWgZkCmQEhAFaB2QFhABaCGQGhABaCWQHhABaCmQIhABaC2QJUwApC3I9AQAAYZ8BAABBIG1hcmtlciBmb3IgYSB0cmFuc3BhcmVudCBkYXRhYmFzZS1zaWRlIGRlZmF1bHQuCgogICAgVXNlIDpjbGFzczpgLkZldGNoZWRWYWx1ZWAgd2hlbiB0aGUgZGF0YWJhc2UgaXMgY29uZmlndXJlZAogICAgdG8gcHJvdmlkZSBzb21lIGF1dG9tYXRpYyBkZWZhdWx0IGZvciBhIGNvbHVtbi4KCiAgICBFLmcuOjoKCiAgICAgICAgQ29sdW1uKCdmb28nLCBJbnRlZ2VyLCBGZXRjaGVkVmFsdWUoKSkKCiAgICBXb3VsZCBpbmRpY2F0ZSB0aGF0IHNvbWUgdHJpZ2dlciBvciBkZWZhdWx0IGdlbmVyYXRvcgogICAgd2lsbCBjcmVhdGUgYSBuZXcgdmFsdWUgZm9yIHRoZSBgYGZvb2BgIGNvbHVtbiBkdXJpbmcgYW4KICAgIElOU0VSVC4KCiAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgOnJlZjpgdHJpZ2dlcmVkX2NvbHVtbnNgCgogICAgVEZjAgAAAAAAAAAAAAAAAgAAAAMAAADzFAAAAJcAfAF8AF8AAAAAAAAAAABkAFMAcicAAAByNAEAAHLPAQAAcwIAAAAgIHIiAAAAcoQAAAB6FUZldGNoZWRWYWx1ZS5fX2luaXRfXyMLAABy0AEAAHIkAAAAYwIAAAAAAAAAAAAAAAMAAAADAAAA80YAAACXAHwBfABqAAAAAAAAAAAAawIAAAAAcgJ8AFMAfACgAQAAAAAAAAAAAAAAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAFMAcicAAAApAnI1AQAA2gZfY2xvbmVyzwEAAHMCAAAAICByIgAAAHI+AQAAehtGZXRjaGVkVmFsdWUuX2FzX2Zvcl91cGRhdGUmCwAAcyYAAACAANgLFZgUnB/SCyjQCyjYExeIS+ATF5c7kjuYetETKtQTKtAMKnIkAAAAYwIAAAAAAAAAAAAAAAQAAAADAAAA88YAAACXAHwAagAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AGoAAAAAAAAAAACmAQAAqwEAAAAAAAAAAH0CfAJqAgAAAAAAAAAAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAHwAagIAAAAAAAAAAKYBAACrAQAAAAAAAAAAAQB8AmoCAAAAAAAAAACgBAAAAAAAAAAAAAAAAAAAAAAAAAAAZAFkAKYCAACrAgAAAAAAAAAAAQB8AXwCXwUAAAAAAAAAAHwCUwApAk5y5gAAACkGcqAAAABybgAAAHJTAAAA2gZ1cGRhdGVycgAAAHI1AQAAKQNyPQAAAHI1AQAA2gFucwMAAAAgICByIgAAAHIlAgAAehNGZXRjaGVkVmFsdWUuX2Nsb25lLAsAAHNTAAAAgADYDBCMTtcMItIMIqA0pD7RDDLUDDKIAdgICYwK1wgZ0ggZmCScLdEIKNQIKNAIKNgICYwKjw6KDpB4oBTRCCbUCCbQCCbYFyGIAYwM2A8QiAhyJAAAAGMCAAAAAAAAAAAAAAACAAAAAwAAAPNWAAAAlwB8AXwAXwAAAAAAAAAAAHwAagEAAAAAAAAAAHIOfAB8AGoAAAAAAAAAAABfAgAAAAAAAAAAZABTAHwAfABqAAAAAAAAAAAAXwMAAAAAAAAAAGQAUwByJwAAACkEcuYAAAByNQEAAHIsAQAAcisBAABy5QAAAHMCAAAAICByIgAAAHL5AAAAehhGZXRjaGVkVmFsdWUuX3NldF9wYXJlbnQzCwAAczMAAACAANgWHIgEjAvYCw+MP/AAAwku2CouiESMS9QMJ9AMJ9AMJ+ApLYhEjEvUDCbQDCbQDCZyJAAAAGMBAAAAAAAAAAAAAAADAAAAAwAAAPMqAAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAfACmAQAAqwEAAAAAAAAAAFMAcicAAABySgAAAHJMAAAAcwEAAAAgciIAAAByTQAAAHoVRmV0Y2hlZFZhbHVlLl9fcmVwcl9fOgsAAHMTAAAAgADdDxPUDyCgFNEPJtQPJtAIJnIkAAAATnJ8AQAAKQxyXQAAAHJeAAAAcl8AAAByYAAAAHLbAQAA2glyZWZsZWN0ZWTaDGhhc19hcmd1bWVudHKEAAAAcj4BAAByJQIAAHL5AAAAck0AAAByHwAAAHIkAAAAciIAAAByPQEAAHI9AQAACgsAAHOAAAAAgACAAIAAgACAAPAEEQUI8AARBQjwJgAZHdAEFdgQFYBJ2BMYgEzwBAEFJfAAAQUl8AABBSXwAAEFJfAGBAUr8AAEBSvwAAQFK/AMBQUR8AAFBRHwAAUFEfAOBQUu8AAFBS7wAAUFLvAOAQUn8AABBSfwAAEFJ/AAAQUn8AABBSdyJAAAAHI9AQAAYwAAAAAAAAAAAAAAAAMAAAAAAAAA8y4AAACHAJcAZQBaAWQAWgJkAVoDZAJaBGQGiABmAWQEhAlaBWQFhABaBogAeAFaB1MAKQdyPwEAAGE+AgAAQSBEREwtc3BlY2lmaWVkIERFRkFVTFQgY29sdW1uIHZhbHVlLgoKICAgIDpjbGFzczpgLkRlZmF1bHRDbGF1c2VgIGlzIGEgOmNsYXNzOmAuRmV0Y2hlZFZhbHVlYAogICAgdGhhdCBhbHNvIGdlbmVyYXRlcyBhICJERUZBVUxUIiBjbGF1c2Ugd2hlbgogICAgIkNSRUFURSBUQUJMRSIgaXMgZW1pdHRlZC4KCiAgICA6Y2xhc3M6YC5EZWZhdWx0Q2xhdXNlYCBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseQogICAgd2hlbmV2ZXIgdGhlIGBgc2VydmVyX2RlZmF1bHRgYCwgYGBzZXJ2ZXJfb251cGRhdGVgYCBhcmd1bWVudHMgb2YKICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIGFyZSB1c2VkLiAgQSA6Y2xhc3M6YC5EZWZhdWx0Q2xhdXNlYAogICAgY2FuIGJlIHBhc3NlZCBwb3NpdGlvbmFsbHkgYXMgd2VsbC4KCiAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZzo6CgogICAgICAgIENvbHVtbignZm9vJywgSW50ZWdlciwgc2VydmVyX2RlZmF1bHQ9IjUwIikKCiAgICBJcyBlcXVpdmFsZW50IHRvOjoKCiAgICAgICAgQ29sdW1uKCdmb28nLCBJbnRlZ2VyLCBEZWZhdWx0Q2xhdXNlKCI1MCIpKQoKICAgIFRGYwQAAAAAAAAAAAAAAAYAAAADAAAA89oAAACVAZcAdAEAAAAAAAAAAAAAagEAAAAAAAAAAHwBdAAAAAAAAAAAAAAAagIAAAAAAAAAAGQBGQAAAAAAAAAAAHQGAAAAAAAAAAAAAHQIAAAAAAAAAAAAAGYDZAKmAwAAqwMAAAAAAAAAAAEAdAsAAAAAAAAAAAAAdAwAAAAAAAAAAAAAfACmAgAAqwIAAAAAAAAAAKAHAAAAAAAAAAAAAAAAAAAAAAAAAAB8AqYBAACrAQAAAAAAAAAAAQB8AXwAXwgAAAAAAAAAAHwDfABfCQAAAAAAAAAAZABTACkDTnICAAAAcuABAAApCnIaAAAA2g9hc3NlcnRfYXJnX3R5cGVyNgEAAHIPAAAAchMAAABykQAAAHI/AQAAcoQAAABy4AEAAHIrAgAAKQVyPQAAAHLgAQAAcjUBAADaCl9yZWZsZWN0ZWRyoAAAAHMFAAAAICAgIIByIgAAAHKEAAAAehZEZWZhdWx0Q2xhdXNlLl9faW5pdF9fVgsAAHNgAAAA+IAA3QgM1Agc2AwPlSTUEiOgQdQSJq0NtXrQEULARfEDAgkK9AACCQrwAAIJCvUGAAkOjW2YVNEIItQIItcIK9IIK6hK0Qg31Ag30Ag32BMWiASMCNgZI4gEjA6IDogOciQAAABjAQAAAAAAAAAAAAAABQAAAAMAAADzKAAAAJcAZAF8AGoAAAAAAAAAAACbAmQCfABqAQAAAAAAAAAAmwJkA50FUwApBE56DkRlZmF1bHRDbGF1c2Uoeg0sIGZvcl91cGRhdGU9cv0BAAApAnLgAQAAcjUBAAByTAAAAHMBAAAAIHIiAAAAck0AAAB6FkRlZmF1bHRDbGF1c2UuX19yZXByX19eCwAAcxsAAACAAIAA2DU5tFiwWLBYuHS8f7h/uH/QD0/QCE9yJAAAACkCRkYpCHJdAAAAcl4AAAByXwAAAHJgAAAAciwCAAByhAAAAHJNAAAAciMBAAByJAEAAHMBAAAAQHIiAAAAcj8BAAByPwEAAD4LAABzZAAAAPiAAIAAgACAAIAA8AITBQjwABMFCPAqABQYgEzwBAYFJPAABgUk8AAGBSTwAAYFJPAABgUk8AAGBSTwEAEFUAHwAAEFUAHwAAEFUAHwAAEFUAHwAAEFUAHwAAEFUAHwAAEFUAFyJAAAAHI/AQAAegMwLjZ6eTpjbGFzczpgLlBhc3NpdmVEZWZhdWx0YCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gIFBsZWFzZSByZWZlciB0byA6Y2xhc3M6YC5EZWZhdWx0Q2xhdXNlYC5jAAAAAAAAAAAAAAAAAQAAAAAAAADzGAAAAJcAZQBaAWQAWgJkAVoDZAKEAFoEZANTACkE2g5QYXNzaXZlRGVmYXVsdHolQSBEREwtc3BlY2lmaWVkIERFRkFVTFQgY29sdW1uIHZhbHVlLmMBAAAAAAAAAAAAAAAFAAAADwAAAPMwAAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAfABnAXwBogFSAGkAfAKkAY4BAQBkAFMAcicAAAApAnI/AQAAcoQAAAApA3I9AAAAcuABAAByfgAAAHMDAAAAICAgciIAAAByhAAAAHoXUGFzc2l2ZURlZmF1bHQuX19pbml0X19qCwAAcykAAACAAN0IFdQIHph00AgwoGPQCDDQCDDQCDCoUtAIMNAIMNAIMNAIMNAIMHIkAAAATnIMAgAAch8AAAByJAAAAHIiAAAAcjMCAAByMwIAAGILAABzKwAAAIAAgACAAIAAgADwDAAFMNAEL/AEAQUx8AABBTHwAAEFMfAAAQUx8AABBTFyJAAAAHIzAgAAYwAAAAAAAAAAAAAAAAIAAAAAAAAA80wAAACXAGUAWgFkAFoCZAFaA2QCWgQJAAkACQAJAAkACQBkCWQFhAFaBWUGZAaEAKYAAACrAAAAAAAAAAAAWgdkB4QAWghkCIQAWglkA1MAKQraCkNvbnN0cmFpbnR6HUEgdGFibGUtbGV2ZWwgU1FMIGNvbnN0cmFpbnQucrEAAABORmMHAAAAAAAAAAAAAAADAAAACwAAAPOwAAAAlwB8AXwAXwAAAAAAAAAAAHwCfABfAQAAAAAAAAAAfAN8AF8CAAAAAAAAAAB8BXIHfAV8AF8DAAAAAAAAAAB8BHwAXwQAAAAAAAAAAHwGfABfBQAAAAAAAAAAdA0AAAAAAAAAAAAAagcAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAABAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAHwHpgEAAKsBAAAAAAAAAAABAGQBUwApAmH3BgAAQ3JlYXRlIGEgU1FMIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBuYW1lOgogICAgICAgICAgT3B0aW9uYWwsIHRoZSBpbi1kYXRhYmFzZSBuYW1lIG9mIHRoaXMgYGBDb25zdHJhaW50YGAuCgogICAgICAgIDpwYXJhbSBkZWZlcnJhYmxlOgogICAgICAgICAgT3B0aW9uYWwgYm9vbC4gIElmIHNldCwgZW1pdCBERUZFUlJBQkxFIG9yIE5PVCBERUZFUlJBQkxFIHdoZW4KICAgICAgICAgIGlzc3VpbmcgRERMIGZvciB0aGlzIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBpbml0aWFsbHk6CiAgICAgICAgICBPcHRpb25hbCBzdHJpbmcuICBJZiBzZXQsIGVtaXQgSU5JVElBTExZIDx2YWx1ZT4gd2hlbiBpc3N1aW5nIERETAogICAgICAgICAgZm9yIHRoaXMgY29uc3RyYWludC4KCiAgICAgICAgOnBhcmFtIGluZm86IE9wdGlvbmFsIGRhdGEgZGljdGlvbmFyeSB3aGljaCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZQogICAgICAgICAgICA6YXR0cjpgLlNjaGVtYUl0ZW0uaW5mb2AgYXR0cmlidXRlIG9mIHRoaXMgb2JqZWN0LgoKICAgICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4wLjAKCiAgICAgICAgOnBhcmFtIF9jcmVhdGVfcnVsZToKICAgICAgICAgIGEgY2FsbGFibGUgd2hpY2ggaXMgcGFzc2VkIHRoZSBERExDb21waWxlciBvYmplY3QgZHVyaW5nCiAgICAgICAgICBjb21waWxhdGlvbi4gUmV0dXJucyBUcnVlIG9yIEZhbHNlIHRvIHNpZ25hbCBpbmxpbmUgZ2VuZXJhdGlvbiBvZgogICAgICAgICAgdGhpcyBDb25zdHJhaW50LgoKICAgICAgICAgIFRoZSBBZGRDb25zdHJhaW50IGFuZCBEcm9wQ29uc3RyYWludCBEREwgY29uc3RydWN0cyBwcm92aWRlCiAgICAgICAgICBERExFbGVtZW50J3MgbW9yZSBjb21wcmVoZW5zaXZlICJjb25kaXRpb25hbCBEREwiIGFwcHJvYWNoIHRoYXQgaXMKICAgICAgICAgIHBhc3NlZCBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gd2hlbiBEREwgaXMgYmVpbmcgaXNzdWVkLiBfY3JlYXRlX3J1bGUKICAgICAgICAgIGlzIGluc3RlYWQgY2FsbGVkIGR1cmluZyBhbnkgQ1JFQVRFIFRBQkxFIGNvbXBpbGF0aW9uLCB3aGVyZSB0aGVyZQogICAgICAgICAgbWF5IG5vdCBiZSBhbnkgdHJhbnNhY3Rpb24vY29ubmVjdGlvbiBpbiBwcm9ncmVzcy4gSG93ZXZlciwgaXQKICAgICAgICAgIGFsbG93cyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiB0aGUgY29uc3RyYWludCBldmVuIGZvciBiYWNrZW5kcwogICAgICAgICAgd2hpY2ggZG8gbm90IHN1cHBvcnQgYWRkaXRpb24gb2YgY29uc3RyYWludHMgdGhyb3VnaCBBTFRFUiBUQUJMRSwKICAgICAgICAgIHdoaWNoIGN1cnJlbnRseSBpbmNsdWRlcyBTUUxpdGUuCgogICAgICAgICAgX2NyZWF0ZV9ydWxlIGlzIHVzZWQgYnkgc29tZSB0eXBlcyB0byBjcmVhdGUgY29uc3RyYWludHMuCiAgICAgICAgICBDdXJyZW50bHksIGl0cyBjYWxsIHNpZ25hdHVyZSBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZS4KCiAgICAgICAgOnBhcmFtIFwqKmRpYWxlY3Rfa3c6ICBBZGRpdGlv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bHRleHQ6CiAgICAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbnN0cmFpbnQgZGVmaW5pdGlvbiwgd2hpY2ggd2lsbCBiZSB1c2VkCiAgICAgICAgIHZlcmJhdGltLCBvciBhIFNRTCBleHByZXNzaW9uIGNvbnN0cnVjdC4gICBJZiBnaXZlbiBhcyBhIHN0cmluZywKICAgICAgICAgdGhlIG9iamVjdCBpcyBjb252ZXJ0ZWQgdG8gYSA6ZnVuYzpgX2V4cHJlc3Npb24udGV4dGAgb2JqZWN0LgogICAgICAgICBJZiB0aGUgdGV4dHVhbAogICAgICAgICBzdHJpbmcgaW5jbHVkZXMgYSBjb2xvbiBjaGFyYWN0ZXIsIGVzY2FwZSB0aGlzIHVzaW5nIGEgYmFja3NsYXNoOjoKCiAgICAgICAgICAgQ2hlY2tDb25zdHJhaW50KHIiZm9vIH4gRSdhKD9cOmJ8YylkIikKCiAgICAgICAgOnBhcmFtIG5hbWU6CiAgICAgICAgICBPcHRpb25hbCwgdGhlIGluLWRhdGFiYXNlIG5hbWUgb2YgdGhlIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBkZWZlcnJhYmxlOgogICAgICAgICAgT3B0aW9uYWwgYm9vbC4gIElmIHNldCwgZW1pdCBERUZFUlJBQkxFIG9yIE5PVCBERUZFUlJBQkxFIHdoZW4KICAgICAgICAgIGlzc3VpbmcgRERMIGZvciB0aGlzIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBpbml0aWFsbHk6CiAgICAgICAgICBPcHRpb25hbCBzdHJpbmcuICBJZiBzZXQsIGVtaXQgSU5JVElBTExZIDx2YWx1ZT4gd2hlbiBpc3N1aW5nIERETAogICAgICAgICAgZm9yIHRoaXMgY29uc3RyYWludC4KCiAgICAgICAgOnBhcmFtIGluZm86IE9wdGlvbmFsIGRhdGEgZGljdGlvbmFyeSB3aGljaCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZQogICAgICAgICAgICA6YXR0cjpgLlNjaGVtYUl0ZW0uaW5mb2AgYXR0cmlidXRlIG9mIHRoaXMgb2JqZWN0LgoKICAgICAgICAgICAgLi4gdmVy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c3RyaW5nLiBJZiBzZXQsIGVtaXQgT04gREVMRVRFIDx2YWx1ZT4gd2hlbgogICAgICAgICAgaXNzdWluZyBEREwgZm9yIHRoaXMgY29uc3RyYWludC4gVHlwaWNhbCB2YWx1ZXMgaW5jbHVkZSBDQVNDQURFLAogICAgICAgICAgREVMRVRFIGFuZCBSRVNUUklDVC4KCiAgICAgICAgOnBhcmFtIGRlZmVycmFibGU6IE9wdGlvbmFsIGJvb2wuIElmIHNldCwgZW1pdCBERUZFUlJBQkxFIG9yIE5PVAogICAgICAgICAgREVGRVJSQUJMRSB3aGVuIGlzc3VpbmcgRERMIGZvciB0aGlzIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBpbml0aWFsbHk6IE9wdGlvbmFsIHN0cmluZy4gSWYgc2V0LCBlbWl0IElOSVRJQUxMWSA8dmFsdWU+IHdoZW4KICAgICAgICAgIGlzc3VpbmcgRERMIGZvciB0aGlzIGNvbnN0cmFpbnQuCgogICAgICAgIDpwYXJhbSBsaW5rX3RvX25hbWU6IGlmIFRydWUsIHRoZSBzdHJpbmcgbmFtZSBnaXZlbiBpbiBgYGNvbHVtbmBgIGlzCiAgICAgICAgICB0aGUgcmVuZGVyZWQgbmFtZSBvZiB0aGUgcmVmZXJlbmNlZCBjb2x1bW4sIG5vdCBpdHMgbG9jYWxseSBhc3NpZ25lZAogICAgICAgICAgYGBrZXlgYC4KCiAgICAgICAgOnBhcmFtIHVzZV9hbHRlcjogSWYgVHJ1ZSwgZG8gbm90IGVtaXQgdGhlIERETCBmb3IgdGhpcyBjb25zdHJhaW50IGFzCiAgICAgICAgICBwYXJ0IG9mIHRoZSBDUkVBVEUgVEFCTEUgZGVmaW5pdGlvbi4gSW5zdGVhZCwgZ2VuZXJhdGUgaXQgdmlhIGFuCiAgICAgICAgICBBTFRFUiBUQUJMRSBzdGF0ZW1lbnQgaXNzdWVkIGFmdGVyIHRoZSBmdWxsIGNvbGxlY3Rpb24gb2YgdGFibGVzCiAgICAgICAgICBoYXZlIGJlZW4gY3JlYXRlZCwgYW5kIGRyb3AgaXQgdmlhIGFuIEFMVEVSIFRBQkxFIHN0YXRlbWVudCBiZWZvcmUKICAgICAgICAgIHRoZSBmdWxsIGNvbGxlY3Rpb24gb2YgdGFibGVzIGFyZSBkcm9wcGVkLgoKICAgICAgICAgIFRoZSB1c2Ugb2YgOnBhcmFtcmVmOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50LnVzZV9hbHRlcmAgaXMKICAgICAgICAgIHBhcnRpY3VsYXJseSBnZWFyZWQgdG93YXJkcyB0aGUgY2FzZSB3aGVyZSB0d28gb3IgbW9yZSB0YWJsZXMKICAgICAgICAgIGFyZSBlc3RhYmxpc2hlZCB3aXRoaW4gYSBtdXR1YWxseS1kZXBlbmRlbnQgZm9yZWlnbiBrZXkgY29uc3RyYWludAogICAgICAgICAgcmVsYXRpb25zaGlwOyBob3dldmVyLCB0aGUgOm1ldGg6YF9zY2hlbWEuTWV0YURhdGEuY3JlYXRlX2FsbGAgYW5kCiAgICAgICAgICA6bWV0aDpgX3NjaGVtYS5NZXRhRGF0YS5kcm9wX2FsbGAKICAgICAgICAgIG1ldGhvZHMgd2lsbCBwZXJmb3JtIHRoaXMgcmVzb2x1dGlvbgogICAgICAgICAgYXV0b21hdGljYWxseSwgc28gdGhlIGZsYWcgaXMgbm9ybWFsbHkgbm90IG5lZWRlZC4KCiAgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMC4wICBBdXRvbWF0aWMgcmVzb2x1dGlvbiBvZiBmb3JlaWduIGtleQogICAgICAgICAgICAgY3ljbGVzIGhhcyBiZWVuIGFkZGVkLCByZW1vdmluZyB0aGUgbmVlZCB0byB1c2UgdGhlCiAgICAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnQudXNlX2FsdGVyYCBpbiB0eXBpY2FsIHVzZQogICAgICAgICAgICAgY2FzZXMuCgogICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgICAgOnJlZjpgdXNlX2FsdGVyYAoKICAgICAgICA6cGFyYW0gbWF0Y2g6IE9wdGlvbmFsIHN0cmluZy4gSWYgc2V0LCBlbWl0IE1BVENIIDx2YWx1ZT4gd2hlbiBpc3N1aW5nCiAgICAgICAgICBEREwgZm9yIHRoaXMgY29uc3RyYWludC4gVHlwaWNhbCB2YWx1ZXMgaW5jbHVkZSBTSU1QTEUsIFBBUlRJQUwKICAgICAgICAgIGFuZCBGVUxMLgoKICAgICAgICA6cGFyYW0gaW5mbzogT3B0aW9uYWwgZGF0YSBkaWN0aW9uYXJ5IHdoaWNoIHdpbGwgYmUgcG9wdWxhdGVkIGludG8gdGhlCiAgICAgICAgICAgIDphdHRyOmAuU2NoZW1hSXRlbS5pbmZvYCBhdHRyaWJ1dGUgb2YgdGhpcyBvYmplY3QuCgogICAgICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjAuMAoKICAgICAgICA6cGFyYW0gXCoqZGlhbGVjdF9rdzogIEFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgYXJlIGRpYWxlY3QKICAgICAgICAgIHNwZWNpZmljLCBhbmQgcGFzc2VkIGluIHRoZSBmb3JtIGBgPGRpYWxlY3RuYW1lPl88YXJnbmFtZT5gYC4gIFNlZQogICAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIGFuIGluZGl2aWR1YWwgZGlhbGVjdCBhdAogICAgICAgICAgOnJlZjpgZGlhbGVjdF90b3BsZXZlbGAgZm9yIGRldGFpbCBvbiBkb2N1bWVudGVkIGFyZ3VtZW50cy4KCiAgICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuOS4yCgogICAgICAgICkEciAAAAByhwEAAHKIAQAAckgAAAB6T0ZvcmVpZ25LZXlDb25zdHJhaW50IHdpdGggZHVwbGljYXRlIHNvdXJjZSBjb2x1bW4gcmVmZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZC56X0ZvcmVpZ25LZXlDb25zdHJhaW50IG51bWJlciBvZiBjb25zdHJhaW5lZCBjb2x1bW5zIG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiByZWZlcmVuY2VkIGNvbHVtbnMuYwEAAAAAAAAAAAAAAA8AAAATAAAA85gAAACVAZcAZwB8AF1GfQF0AQAAAAAAAAAAAAB8AWYBiQKJAmoBAAAAAAAAAACJAmoCAAAAAAAAAACJAmoDAAAAAAAAAACJAmoEAAAAAAAAAACJAmoFAAAAAAAAAACJAmoGAAAAAAAA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Li4gICAgICAgICAgICAgICAgIENvbHVtbignaWQnLCBJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKSwKICAgICAgICAuLi4gICAgICAgICAgICAgICAgIENvbHVtbigndmVyc2lvbl9pZCcsIEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpLAogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgQ29sdW1uKCdkYXRhJywgU3RyaW5nKDUwKSkKICAgICAgICAuLi4gICAgICkKICAgICAgICA+Pj4gbXlfdGFibGUucHJpbWFyeV9rZXkKICAgICAgICBQcmltYXJ5S2V5Q29uc3RyYWludCgKICAgICAgICAgICAgQ29sdW1uKCdpZCcsIEludGVnZXIoKSwgdGFibGU9PG15dGFibGU+LAogICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwgbnVsbGFibGU9RmFsc2UpLAogICAgICAgICAgICBDb2x1bW4oJ3ZlcnNpb25faWQnLCBJbnRlZ2VyKCksIHRhYmxlPTxteXRhYmxlPiwKICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5PVRydWUsIG51bGxhYmxlPUZhbHNlKQogICAgICAgICkKCiAgICBUaGUgcHJpbWFyeSBrZXkgb2YgYSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBieSB1c2luZwogICAgYSA6Y2xhc3M6YC5QcmltYXJ5S2V5Q29uc3RyYWludGAgb2JqZWN0IGV4cGxpY2l0bHk7IGluIHRoaXMgbW9kZSBvZiB1c2FnZSwKICAgIHRoZSAibmFtZSIgb2YgdGhlIGNvbnN0cmFpbnQgY2FuIGFsc28gYmUgc3BlY2lmaWVkLCBhcyB3ZWxsIGFzIG90aGVyCiAgICBvcHRpb25zIHdoaWNoIG1heSBiZSByZWNvZ25pemVkIGJ5IGRpYWxlY3RzOjoKCiAgICAgICAgbXlfdGFibGUgPSBUYWJsZSgnbXl0YWJsZScsIG1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIENvbHVtbignaWQnLCBJbnRlZ2VyKSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW4oJ3ZlcnNpb25faWQnLCBJbnRlZ2VyKSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW4oJ2RhdGEnLCBTdHJpbmcoNTApKSwKICAgICAgICAgICAgICAgICAgICBQcmltYXJ5S2V5Q29uc3RyYWludCgnaWQnLCAndmVyc2lvbl9pZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nbXl0YWJsZV9waycpCiAgICAgICAgICAgICAgICApCgogICAgVGhlIHR3byBzdHlsZXMgb2YgY29sdW1uLXNwZWNpZmljYXRpb24gc2hvdWxkIGdlbmVyYWxseSBub3QgYmUgbWl4ZWQuCiAgICBBbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgdGhlIGNvbHVtbnMgcHJlc2VudCBpbiB0aGUKICAgIDpjbGFzczpgLlByaW1hcnlLZXlDb25zdHJhaW50YAogICAgZG9uJ3QgbWF0Y2ggdGhlIGNvbHVtbnMgdGhhdCB3ZXJlIG1hcmtlZCBhcyBgYHByaW1hcnlfa2V5PVRydWVgYCwgaWYgYm90aAogICAgYXJlIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhlIGNvbHVtbnMgYXJlIHRha2VuIHN0cmljdGx5IGZyb20gdGhlCiAgICA6Y2xhc3M6YC5QcmltYXJ5S2V5Q29uc3RyYWludGAgZGVjbGFyYXRpb24sIGFuZCB0aG9zZSBjb2x1bW5zIG90aGVyd2lzZQogICAgbWFya2VkIGFzIGBgcHJpbWFyeV9rZXk9VHJ1ZWBgIGFyZSBpZ25vcmVkLiAgVGhpcyBiZWhhdmlvciBpcyBpbnRlbmRlZCB0bwogICAgYmUgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBiZWhhdmlvci4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDAuOS4yICBVc2luZyBhIG1peHR1cmUgb2YgY29sdW1ucyB3aXRoaW4gYQogICAgICAgOmNsYXNzOmAuUHJpbWFyeUtleUNvbnN0cmFpbnRgIGluIGFkZGl0aW9uIHRvIGNvbHVtbnMgbWFya2VkIGFzCiAgICAgICBgYHByaW1hcnlfa2V5PVRydWVgYCBub3cgZW1pdHMgYSB3YXJuaW5nIGlmIHRoZSBsaXN0cyBkb24ndCBtYXRjaC4KICAgICAgIFRoZSB1bHRpbWF0ZSBiZWhhdmlvciBvZiBpZ25vcmluZyB0aG9zZSBjb2x1bW5zIG1hcmtlZCB3aXRoIHRoZSBmbGFnCiAgICAgICBvbmx5IGlzIGN1cnJlbnRseSBtYWludGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTsgdGhpcyB3YXJuaW5nCiAgICAgICBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGluIGEgZnV0dXJlIHJlbGVhc2UuCgogICAgRm9yIHRoZSB1c2UgY2FzZSB3aGVyZSBzcGVjaWZpYyBvcHRpb25zIGFyZSB0byBiZSBzcGVjaWZpZWQgb24gdGhlCiAgICA6Y2xhc3M6YC5QcmltYXJ5S2V5Q29uc3RyYWludGAsIGJ1dCB0aGUgdXN1YWwgc3R5bGUgb2YgdXNpbmcKICAgIGBgcHJpbWFyeV9rZXk9VHJ1ZWBgIGZsYWdzIGlzIHN0aWxsIGRlc2lyYWJsZSwgYW4gZW1wdHkKICAgIDpjbGFzczpgLlByaW1hcnlLZXlDb25zdHJhaW50YCBtYXkgYmUgc3BlY2lmaWVkLCB3aGljaCB3aWxsIHRha2Ugb24gdGhlCiAgICBwcmltYXJ5IGtleSBjb2x1bW4gY29sbGVjdGlvbiBmcm9tIHRoZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIGJhc2VkIG9uIHRoZQogICAgZmxhZ3M6OgoKICAgICAgICBteV90YWJsZSA9IFRhYmxlKCdteXRhYmxlJywgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCdpZCcsIEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpLAogICAgICAgICAgICAgICAgICAgIENvbHVtbigndmVyc2lvbl9pZCcsIEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpLAogICAgICAgICAgICAgICAgICAgIENvbHVtbignZGF0YScsIFN0cmluZyg1MCkpLAogICAgICAgICAgICAgICAgICAgIFByaW1hcnlLZXlDb25zdHJhaW50KG5hbWU9J215dGFibGVfcGsn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YXRhLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4oIm5hbWUiLCBTdHJpbmcoNTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCJhZGRyZXNzIiwgU3RyaW5nKDEwMCkpCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICBJbmRleCgic29tZV9pbmRleCIsIHNvbWV0YWJsZS5jLm5hbWUpCgogICAgRm9yIGEgbm8tZnJpbGxzLCBzaW5nbGUgY29sdW1uIGluZGV4LCBhZGRpbmcKICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIGFsc28gc3VwcG9ydHMgYGBpbmRleD1UcnVlYGA6OgoKICAgICAgICBzb21ldGFibGUgPSBUYWJsZSgic29tZXRhYmxlIiwgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbigibmFtZSIsIFN0cmluZyg1MCksIGluZGV4PVRydWUpCiAgICAgICAgICAgICAgICAgICAgKQoKICAgIEZvciBhIGNvbXBvc2l0ZSBpbmRleCwgbXVsdGlwbGUgY29sdW1ucyBjYW4gYmUgc3BlY2lmaWVkOjoKCiAgICAgICAgSW5kZXgoInNvbWVfaW5kZXgiLCBzb21ldGFibGUuYy5uYW1lLCBzb21ldGFibGUuYy5hZGRyZXNzKQoKICAgIEZ1bmN0aW9uYWwgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGFzIHdlbGwsIHR5cGljYWxseSBieSB1c2luZyB0aGUKICAgIDpkYXRhOmAuZnVuY2AgY29uc3RydWN0IGluIGNvbmp1bmN0aW9uIHdpdGggdGFibGUtYm91bmQKICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIG9iamVjdHM6OgoKICAgICAgICBJbmRleCgic29tZV9pbmRleCIsIGZ1bmMubG93ZXIoc29tZXRhYmxlLmMubmFtZSkpCgogICAgQW4gOmNsYXNzOmAuSW5kZXhgIGNhbiBhbHNvIGJlIG1hbnVhbGx5IGFzc29jaWF0ZWQgd2l0aCBhCiAgICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLAogICAgZWl0aGVyIHRocm91Z2ggaW5saW5lIGRlY2xhcmF0aW9uIG9yIHVzaW5nCiAgICA6bWV0aDpgX3NjaGVtYS5UYWJsZS5hcHBlbmRfY29uc3RyYWludGAuICBXaGVuIHRoaXMgYXBwcm9hY2ggaXMgdXNlZCwKICAgIHRoZSBuYW1lcwogICAgb2YgdGhlIGluZGV4ZWQgY29sdW1ucyBjYW4gYmUgc3BlY2lmaWVkIGFzIHN0cmluZ3M6OgoKICAgICAgICBUYWJsZSgic29tZXRhYmxlIiwgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbigibmFtZSIsIFN0cmluZyg1MCkpLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4oImFkZHJlc3MiLCBTdHJpbmcoMTAwKSksCiAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4KCJzb21lX2luZGV4IiwgIm5hbWUiLCAiYWRkcmVzcyIpCiAgICAgICAgICAgICAgICApCgogICAgVG8gc3VwcG9ydCBmdW5jdGlvbmFsIG9yIGV4cHJlc3Npb24tYmFzZWQgaW5kZXhlcyBpbiB0aGlzIGZvcm0sIHRoZQogICAgOmZ1bmM6YF9leHByZXNzaW9uLnRleHRgIGNvbnN0cnVjdCBtYXkgYmUgdXNlZDo6CgogICAgICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgdGV4dAoKICAgICAgICBUYWJsZSgic29tZXRhYmxlIiwgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbigibmFtZSIsIFN0cmluZyg1MCkpLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4oImFkZHJlc3MiLCBTdHJpbmcoMTAwKSksCiAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4KCJzb21lX2luZGV4IiwgdGV4dCgibG93ZXIobmFtZSkiKSkKICAgICAgICAgICAgICAgICkKCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjkuNSB0aGUgOmZ1bmM6YF9leHByZXNzaW9uLnRleHRgCiAgICAgICBjb25zdHJ1Y3QgbWF5IGJlIHVzZWQgdG8KICAgICAgIHNwZWNpZnkgOmNsYXNzOmAu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AAAAAAAAAABkEYQApgAAAKsAAAAAAAAAAABaEgIAZRNlEGUSpgIAAKsCAAAAAAAAAABaEGQShABaFGQThABaFWUTZBSEAKYAAACrAAAAAAAAAAAAWhYJAAkACQAJAAkACQAJAGQdZBaEAVoXAgBlBWoYAAAAAAAAAABkF2QYpgIAAKsCAAAAAAAAAABkGYQApgAAAKsAAAAAAAAAAABaGWQeZBqEAVoaZB5kG4QBWhtkBVMAKR/aCE1ldGFEYXRhYUQDAABBIGNvbGxlY3Rpb24gb2YgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgb2JqZWN0cyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBzY2hlbWEKICAgIGNvbnN0cnVjdHMuCgogICAgSG9sZHMgYSBjb2xsZWN0aW9uIG9mIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb2JqZWN0cyBhcyB3ZWxsIGFzCiAgICBhbiBvcHRpb25hbCBiaW5kaW5nIHRvIGFuIDpjbGFzczpgX2VuZ2luZS5FbmdpbmVgIG9yCiAgICA6Y2xhc3M6YF9lbmdpbmUuQ29ubmVjdGlvbmAuICBJZiBib3VuZCwgdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb2JqZWN0cwogICAgaW4gdGhlIGNvbGxlY3Rpb24gYW5kIHRoZWlyIGNvbHVtbnMgbWF5IHBhcnRpY2lwYXRlIGluIGltcGxpY2l0IFNRTAogICAgZXhlY3V0aW9uLgoKICAgIFRoZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIG9iamVjdHMgdGhlbXNlbHZlcyBhcmUgc3RvcmVkIGluIHRoZQogICAgOmF0dHI6YF9zY2hlbWEuTWV0YURhdGEudGFibGVzYCBkaWN0aW9uYXJ5LgoKICAgIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAgaXMgYSB0aHJlYWQtc2FmZSBvYmplY3QgZm9yIHJlYWQgb3BlcmF0aW9ucy4KICAgIENvbnN0cnVjdGlvbiBvZiBuZXcgdGFibGVzIHdpdGhpbiBhIHNpbmdsZSA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgCiAgICBvYmplY3QsCiAgICBlaXRoZXIgZXhwbGljaXRseSBvciB2aWEgcmVmbGVjdGlvbiwgbWF5IG5vdCBiZSBjb21wbGV0ZWx5IHRocmVhZC1zYWZlLgoKICAgIC4uIHNlZWFsc286OgoKICAgICAgICA6cmVmOmBtZXRhZGF0YV9kZXNjcmliaW5nYCAtIEludHJvZHVjdGlvbiB0byBkYXRhYmFzZSBtZXRhZGF0YQoKICAgIHJ/AAAAKQJ6AzAuOHqeVGhlIDpwYXJhbXJlZjpgX3NjaGVtYS5NZXRhRGF0YS5yZWZsZWN0YCBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAgIFBsZWFzZSB1c2UgdGhlIDptZXRoOmBfc2NoZW1hLk1ldGFEYXRhLnJlZmxlY3RgIG1ldGhvZC4pAdoHcmVmbGVjdE5GYwcAAAAAAAAAAAAAAAQAAAADAAAA82wBAACXAHQBAAAAAAAAAAAAAGoBAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwIAAAAAAAAAAHQHAAAAAAAAAAAAAHwDfASmAgAAqwIAAAAAAAAAAHwAXwQAAAAAAAAAAHwFcgJ8BW4GdAoAAAAAAAAAAAAAfABfBgAAAAAAAAAAfAZyB3wGfABfBwAAAAAAAAAAdBEAAAAAAAAAAAAApgAAAKsAAAAAAAAAAAB8AF8JAAAAAAAAAABpAHwAXwoAAAAAAAAAAHQXAAAAAAAAAAAAAGoMAAAAAAAAAAB0GgAAAAAAAAAAAACmAQAAqwEAAAAAAAAAAHwAXw4AAAAAAAAAAHwBfABfDwAAAAAAAAAAfAJyLHwBcxR0IQAAAAAAAAAAAABqEQAAAAAAAAAAZAGmAQAAqwEAAAAAAAAAAIIBfACgEgAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAAABAGQCUwBkAlMAKQNhyx0AAENyZWF0ZSBhIG5ldyBNZXRhRGF0YSBvYmplY3QuCgogICAgICAgIDpwYXJhbSBiaW5kOgogICAgICAgICAgQW4gRW5naW5lIG9yIENvbm5lY3Rpb24gdG8gYmluZCB0by4gIE1heSBhbHNvIGJlIGEgc3RyaW5nIG9yIFVSTAogICAgICAgICAgaW5zdGFuY2UsIHRoZXNlIGFyZSBwYXNzZWQgdG8gOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lYCBhbmQKICAgICAgICAgIHRoaXMgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCB3aWxsCiAgICAgICAgICBiZSBib3VuZCB0byB0aGUgcmVzdWx0aW5nIGVuZ2luZS4KCiAgICAgICAgOnBhcmFtIHJlZmxlY3Q6CiAgICAgICAgICBPcHRpb25hbCwgYXV0b21hdGljYWxseSBsb2FkIGFsbCB0YWJsZXMgZnJvbSB0aGUgYm91bmQgZGF0YWJhc2UuCiAgICAgICAgICBEZWZhdWx0cyB0byBGYWxzZS4gOnBhcmFtcmVmOmBfc2NoZW1hLk1ldGFEYXRhLmJpbmRgIGlzIHJlcXVpcmVkCiAgICAgICAgICB3aGVuIHRoaXMgb3B0aW9uIGlzIHNldC4KCiAgICAgICAgOnBhcmFtIHNjaGVtYToKICAgICAgICAgICBUaGUgZGVmYXVsdCBzY2hlbWEgdG8gdXNlIGZvciB0aGUgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwKICAgICAgICAgICA6Y2xhc3M6YC5TZXF1ZW5jZWAsIGFuZCBwb3RlbnRpYWxseSBvdGhlciBvYmplY3RzIGFzc29jaWF0ZWQgd2l0aAogICAgICAgICAgIHRoaXMgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYC4gRGVmYXVsdHMgdG8gYGBOb25lYGAuCgogICAgICAgICAgIFdoZW4gdGhpcyB2YWx1ZSBpcyBzZXQsIGFueSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIG9yCiAgICAgICAgICAgOmNsYXNzOmAuU2VxdWVuY2VgCiAgICAgICAgICAgd2hpY2ggc3BlY2lmaWVzIGBgTm9uZWBgIGZvciB0aGUgc2NoZW1hIHBhcmFtZXRlciB3aWxsIGluc3RlYWQKICAgICAgICAgICBoYXZlIHRoaXMgc2NoZW1hIG5hbWUgZGVmaW5lZC4gIFRvIGJ1aWxkIGEgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgICAgIG9yIDpjbGFzczpgLlNlcXVlbmNlYCB0aGF0IHN0aWxsIGhhcyBgYE5vbmVgYCBmb3IgdGhlIHNjaGVtYQogICAgICAgICAgIGV2ZW4gd2hlbiB0aGlzIHBhcmFtZXRlciBpcyBwcmVzZW50LCB1c2UgdGhlIDphdHRyOmAuQkxBTktfU0NIRU1BYAogICAgICAgICAgIHN5bWJvbC4KCiAgICAgICAgICAgLi4gbm90ZTo6CgogICAgICAgICAgICAgICAgQXMgcmVmZXJyZWQgYWJvdmUsIHRoZSA6cGFyYW1yZWY6YF9zY2hlbWEuTWV0YURhdGEuc2NoZW1hYAogICAgICAgICAgICAgICAgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBvbmx5IHJlZmVycyB0byB0aGUgKipkZWZhdWx0IHZhbHVlKiogdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8KICAgICAgICAgICAgICAgIHRoZSA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuc2NoZW1hYCBwYXJhbWV0ZXIgb2YgYW4gaW5jb21pbmcKICAgICAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb2JqZWN0LiAgIEl0IGRvZXMgbm90IHJlZmVyIHRvIGhvdyB0aGUKICAgICAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgaXMgY2F0YWxvZ3VlZCB3aXRoaW4gdGhlCiAgICAgICAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgLAogICAgICAgICAgICAgICAgd2hpY2ggcmVtYWlucyBjb25zaXN0ZW50IHZzLiBhIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAKICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24KICAgICAgICAgICAgICAgIHRoYXQgZG9lcyBub3QgZGVmaW5lIHRoaXMgcGFyYW1ldGVyLiAgVGhlCiAgICAgICAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgCiAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAKICAgICAgICAgICAgICAgIHdpbGwgc3RpbGwgYmUga2V5ZWQgYmFzZWQgb24gaXRzCiAgICAgICAgICAgICAgICBzY2hlbWEtcXVhbGlmaWVkIG5hbWUsIGUuZy4KICAgICAgICAgICAgICAgIGBgbXlfbWV0YWRhdGEudGFibGVzWyJzb21lX3NjaGVtYS5teV90YWJsZSJdYGAuCgogICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgdGhlIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5YAogICAgICAgICAgICAgICAgb2JqZWN0IGlzIHRvCiAgICAgICAgICAgICAgICBjaXJjdW12ZW50IHRoaXMgcmVzdHJpY3Rpb24sIHdoZXJlIGl0IGNhbiBsb2NhdGUgYSB0YWJsZSBnaXZlbgogICAgICAgICAgICAgICAgdGhlIHRhYmxlIG5hbWUgYWxvbmUsIHdoZXJlIHRoZSBzY2hlbWEgd2lsbCBiZSBhc3N1bWVkIHRvIGJlCiAgICAgICAgICAgICAgICBwcmVzZW50IGZyb20gdGhpcyB2YWx1ZSBhcyBzcGVjaWZpZWQgb24gdGhlIG93bmluZwogICAgICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCBjb2xsZWN0aW9uLiAgSG93ZXZlciwKICAgICAgICAgICAgICAgIHRoaXMgaW1wbGllcyAgdGhhdCBhCiAgICAgICAgICAgICAgICB0YWJsZSBxdWFsaWZpZWQgd2l0aCBCTEFOS19TQ0hFTUEgY2Fubm90IGN1cnJlbnRseSBiZSByZWZlcnJlZAogICAgICAgICAgICAgICAgdG8gYnkgc3RyaW5nIG5hbWUgZnJvbSA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleWAuCiAgICAgICAgICAgICAgICBPdGhlciBwYXJ0cyBvZgogICAgICAgICAgICAgICAgU1FMQWxjaGVteSBzdWNoIGFzIERlY2xhcmF0aXZlIG1heSBub3QgaGF2ZSBzaW1pbGFyIGJlaGF2aW9ycwogICAgICAgICAgICAgICAgYnVpbHQgaW4sIGhvd2V2ZXIgbWF5IGRvIHNvIGluIGEgZnV0dXJlIHJlbGVhc2UsIGFsb25nIHdpdGggYQogICAgICAgICAgICAgICAgY29uc2lzdGVudCBtZXRob2Qgb2YgcmVmZXJyaW5nIHRvIGEgdGFibGUgaW4gQkxBTktfU0NIRU1BLgoKCiAgICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLnNjaGVtYWAKCiAgICAgICAgICAgICAgICA6cGFyYW1yZWY6YC5TZXF1ZW5jZS5zY2hlbWFgCgogICAgICAgIDpwYXJhbSBxdW90ZV9zY2hlbWE6CiAgICAgICAgICAgIFNldHMgdGhlIGBgcXVvdGVfc2NoZW1hYGAgZmxhZyBmb3IgdGhvc2UgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwKICAgICAgICAgICAgOmNsYXNzOmAuU2VxdWVuY2VgLCBhbmQgb3RoZXIgb2JqZWN0cyB3aGljaCBtYWtlIHVzYWdlIG9mIHRoZQogICAgICAgICAgICBsb2NhbCBgYHNjaGVtYWBgIG5hbWUuCgogICAgICAgIDpwYXJhbSBpbmZvOiBPcHRpb25hbCBkYXRhIGRpY3Rpb25hcnkgd2hpY2ggd2lsbCBiZSBwb3B1bGF0ZWQgaW50byB0aGUKICAgICAgICAgICAgOmF0dHI6YC5TY2hlbWFJdGVtLmluZm9gIGF0dHJpYnV0ZSBvZiB0aGlzIG9iamVjdC4KCiAgICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC4wCgogICAgICAgIDpwYXJhbSBuYW1pbmdfY29udmVudGlvbjogYSBkaWN0aW9uYXJ5IHJlZmVycmluZyB0byB2YWx1ZXMgd2hpY2gKICAgICAgICAgIHdpbGwgZXN0YWJsaXNoIGRlZmF1bHQgbmFtaW5nIGNvbnZlbnRpb25zIGZvciA6Y2xhc3M6YC5Db25zdHJhaW50YAogICAgICAgICAgYW5kIDpjbGFzczpgLkluZGV4YCBvYmplY3RzLCBmb3IgdGhvc2Ugb2JqZWN0cyB3aGljaCBhcmUgbm90IGdpdmVuCiAgICAgICAgICBhIG5hbWUgZXhwbGljaXRseS4KCiAgICAgICAgICBUaGUga2V5cyBvZiB0aGlzIGRpY3Rpb25hcnkgbWF5IGJlOgoKICAgICAgICAgICogYSBjb25zdHJhaW50IG9yIEluZGV4IGNsYXNzLCBlLmcuIHRoZSA6Y2xhc3M6YC5VbmlxdWVDb25zdHJhaW50YCwKICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YCBjbGFzcywgdGhlIDpjbGFzczpgLkluZGV4YAogICAgICAgICAgICBjbGFzcwoKICAgICAgICAgICogYSBzdHJpbmcgbW5lbW9uaWMgZm9yIG9uZSBvZiB0aGUga25vd24gY29uc3RyYWludCBjbGFzc2VzOwogICAgICAgICAgICBgYCJmayJgYCwgYGAicGsiYGAsIGBgIml4ImBgLCBgYCJjayJgYCwgYGAidXEiYGAgZm9yIGZvcmVpZ24ga2V5LAogICAgICAgICAgICBwcmltYXJ5IGtleSwgaW5kZXgsIGNoZWNrLCBhbmQgdW5pcXVlIGNvbnN0cmFpbnQsIHJlc3BlY3RpdmVseS4KCiAgICAgICAgICAqIHRoZSBzdHJpbmcgbmFtZSBvZiBhIHVzZXItZGVmaW5lZCAidG9rZW4iIHRoYXQgY2FuIGJlIHVzZWQKICAgICAgICAgICAgdG8gZGVmaW5lIG5ldyBuYW1pbmcgdG9rZW5zLgoKICAgICAgICAgIFRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggImNvbnN0cmFpbnQgY2xhc3MiIG9yICJjb25zdHJhaW50CiAgICAgICAgICBtbmVtb25pYyIga2V5IGFyZSBzdHJpbmcgbmFtaW5nIHRlbXBsYXRlcywgc3VjaCBhcwogICAgICAgICAgYGAidXFfJSh0YWJsZV9uYW1lKXNfJShjb2x1bW5fMF9uYW1lKXMiYGAsCiAgICAgICAgICB3aGljaCBkZXNjcmliZSBob3cgdGhlIG5hbWUgc2hvdWxkIGJlIGNvbXBvc2VkLiAgVGhlIHZhbHVlcwogICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHVzZXItZGVmaW5lZCAidG9rZW4iIGtleXMgc2hvdWxkIGJlIGNhbGxhYmxlcyBvZiB0aGUKICAgICAgICAgIGZvcm0gYGBmbihjb25zdHJhaW50LCB0YWJsZSlgYCwgd2hpY2ggYWNjZXB0cyB0aGUgY29uc3RyYWludC9pbmRleAogICAgICAgICAgb2JqZWN0IGFuZCA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIGFzIGFyZ3VtZW50cywgcmV0dXJuaW5nIGEgc3RyaW5nCiAgICAgICAgICByZXN1bHQuCgogICAgICAgICAgVGhlIGJ1aWx0LWluIG5hbWVzIGFyZSBhcyBmb2xsb3dzLCBzb21lIG9mIHdoaWNoIG1heSBvbmx5IGJlCiAgICAgICAgICBhdmFpbGFibGUgZm9yIGNlcnRhaW4gdHlwZXMgb2YgY29uc3RyYWludDoKCiAgICAgICAgICAgICogYGAlKHRhYmxlX25hbWUpc2BgIC0gdGhlIG5hbWUgb2YgdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICAgICAgICBvYmplY3QKICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnN0cmFpbnQuCgogICAgICAgICAgICAqIGBgJShyZWZlcnJlZF90YWJsZV9uYW1lKXNgYCAtIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICAgICAgICBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWZlcmVuY2luZyB0YXJnZXQgb2YgYQogICAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAuCgogICAgICAgICAgICAqIGBgJShjb2x1bW5fMF9uYW1lKXNgYCAtIHRoZSBuYW1lIG9mIHRoZSA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICAgICAgIGF0CiAgICAgICAgICAgICAgaW5kZXggcG9zaXRpb24gIjAiIHdpdGhpbiB0aGUgY29uc3RyYWludC4KCiAgICAgICAgICAgICogYGAlKGNvbHVtbl8wTl9uYW1lKXNgYCAtIHRoZSBuYW1lIG9mIGFsbCA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICAgICAgIG9iamVjdHMgaW4gb3JkZXIgd2l0aGluIHRoZSBjb25zdHJhaW50LCBqb2luZWQgd2l0aG91dCBhCiAgICAgICAgICAgICAgc2VwYXJhdG9yLgoKICAgICAgICAgICAgKiBgYCUoY29sdW1uXzBfTl9uYW1lKXNgYCAtIHRoZSBuYW1lIG9mIGFsbAogICAgICAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCiAgICAgICAgICAgICAgb2JqZWN0cyBpbiBvcmRlciB3aXRoaW4gdGhlIGNvbnN0cmFpbnQsIGpvaW5lZCB3aXRoIGFuCiAgICAgICAgICAgICAgdW5kZXJzY29yZSBhcyBhIHNlcGFyYXRvci4KCiAgICAgICAgICAgICogYGAlKGNvbHVtbl8wX2xhYmVsKXNgYCwgYGAlKGNvbHVtbl8wTl9sYWJlbClzYGAsCiAgICAgICAgICAgICAgYGAlKGNvbHVtbl8wX05fbGFiZWwpc2BgIC0gdGhlIGxhYmVsIG9mIGVpdGhlciB0aGUgemVyb3RoCiAgICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb3IgYWxsIDpjbGFzczpgLkNvbHVtbnNgLCBzZXBhcmF0ZWQgd2l0aAogICAgICAgICAgICAgIG9yIHdpdGhvdXQgYW4gdW5kZXJzY29yZQoKICAgICAgICAgICAgKiBgYCUoY29sdW1uXzBfa2V5KXNgYCwgYGAlKGNvbHVtbl8wTl9rZXkpc2BgLAogICAgICAgICAgICAgIGBgJShjb2x1bW5fMF9OX2tleSlzYGAgLSB0aGUga2V5IG9mIGVpdGhlciB0aGUgemVyb3RoCiAgICAgICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgb3IgYWxsIDpjbGFzczpgLkNvbHVtbnNgLCBzZXBhcmF0ZWQgd2l0aAogICAgICAgICAgICAgIG9yIHdpdGhvdXQgYW4gdW5kZXJzY29yZQoKICAgICAgICAgICAgKiBgYCUocmVmZXJyZWRfY29sdW1uXzBfbmFtZSlzYGAsIGBgJShyZWZlcnJlZF9jb2x1bW5fME5fbmFtZSlzYGAKICAgICAgICAgICAgICBgYCUocmVmZXJyZWRfY29sdW1uXzBfTl9uYW1lKXNgYCwgIGBgJShyZWZlcnJlZF9jb2x1bW5fMF9rZXkpc2BgLAogICAgICAgICAgICAgIGBgJShyZWZlcnJlZF9jb2x1bW5fME5fa2V5KXNgYCwgLi4uICBjb2x1bW4gdG9rZW5zIHdoaWNoCiAgICAgICAgICAgICAgcmVuZGVyIHRoZSBuYW1lcy9rZXlzL2xhYmVscyBvZiBjb2x1bW5zIHRoYXQgYXJlIHJlZmVyZW5jZWQKICAgICAgICAgICAgICBieSBhICA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgLgoKICAgICAgICAgICAgKiBgYCUoY29uc3RyYWludF9uYW1lKXNgYCAtIGEgc3BlY2lhbCBrZXkgdGhhdCByZWZlcnMgdG8gdGhlCiAgICAgICAgICAgICAgZXhpc3RpbmcgbmFtZSBnaXZlbiB0byB0aGUgY29uc3RyYWludC4gIFdoZW4gdGhpcyBrZXkgaXMKICAgICAgICAgICAgICBwcmVzZW50LCB0aGUgOmNsYXNzOmAuQ29uc3RyYWludGAgb2JqZWN0J3MgZXhpc3RpbmcgbmFtZSB3aWxsIGJlCiAgICAgICAgICAgICAgcmVwbGFjZWQgd2l0aCBvbmUgdGhhdCBpcyBjb21wb3NlZCBmcm9tIHRlbXBsYXRlIHN0cmluZyB0aGF0CiAgICAgICAgICAgICAgdXNlcyB0aGlzIHRva2VuLiBXaGVuIHRoaXMgdG9rZW4gaXMgcHJlc2VudCwgaXQgaXMgcmVxdWlyZWQgdGhhdAogICAgICAgICAgICAgIHRoZSA6Y2xhc3M6YC5Db25zdHJhaW50YCBpcyBnaXZlbiBhbiBleHBsaWNpdCBuYW1lIGFoZWFkIG9mIHRpbWUuCgogICAgICAgICAgICAqIHVzZXItZGVmaW5lZDogYW55IGFkZGl0aW9uYWwgdG9rZW4gbWF5IGJlIGltcGxlbWVudGVkIGJ5IHBhc3NpbmcKICAgICAgICAgICAgICBpdCBhbG9uZyB3aXRoIGEgYGBmbihjb25zdHJhaW50LCB0YWJsZSlgYCBjYWxsYWJsZSB0byB0aGUKICAgICAgICAgICAgICBuYW1pbmdfY29udmVudGlvbiBkaWN0aW9uYXJ5LgoKICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMy4wIC0gYWRkZWQgbmV3IGBgJShjb2x1bW5fME5fbmFtZSlzYGAsCiAgICAgICAgICAgICBgYCUoY29sdW1uXzBfTl9uYW1lKXNgYCwgYW5kIHJlbGF0ZWQgdG9rZW5zIHRoYXQgcHJvZHVjZQogICAgICAgICAg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YXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgIG9iamVjdHMgdGhhdCBoYXZlIGRlcGVuZGVuY2llcwogICAgICAgIGZpcnN0LCBiZWZvcmUgdGhlIGRlcGVuZGVuY2llcyB0aGVtc2VsdmVzLCByZXByZXNlbnRpbmcgdGhlCiAgICAgICAgb3JkZXIgaW4gd2hpY2ggdGhleSBjYW4gYmUgY3JlYXRlZC4gICBUbyBnZXQgdGhlIG9yZGVyIGluIHdoaWNoCiAgICAgICAgdGhlIHRhYmxlcyB3b3VsZCBiZSBkcm9wcGVkLCB1c2UgdGhlIGBgcmV2ZXJzZWQoKWBgIFB5dGhvbiBidWlsdC1pbi4KCiAgICAgICAgLi4gd2FybmluZzo6CgogICAgICAgICAgICBUaGUgOmF0dHI6YC5NZXRhRGF0YS5zb3J0ZWRfdGFibGVzYCBhdHRyaWJ1dGUgY2Fubm90IGJ5IGl0c2VsZgogICAgICAgICAgICBhY2NvbW1vZGF0ZSBhdXRvbWF0aWMgcmVzb2x1dGlvbiBvZiBkZXBlbmRlbmN5IGN5Y2xlcyBiZXR3ZWVuCiAgICAgICAgICAgIHRhYmxlcywgd2hpY2ggYXJlIHVzdWFsbHkgY2F1c2VkIGJ5IG11dHVhbGx5IGRlcGVuZGVudCBmb3JlaWduIGtleQogICAgICAgICAgICBjb25zdHJhaW50cy4gV2hlbiB0aGVzZSBjeWNsZXMgYXJlIGRldGVjdGVkLCB0aGUgZm9yZWlnbiBrZXlzCiAgICAgICAgICAgIG9mIHRoZXNlIHRhYmxlcyBhcmUgb21pdHRlZCBmcm9tIGNvbnNpZGVyYXRpb24gaW4gdGhlIHNvcnQuCiAgICAgICAgICAgIEEgd2FybmluZyBpcyBlbWl0dGVkIHdoZW4gdGhpcyBjb25kaXRpb24gb2NjdXJzLCB3aGljaCB3aWxsIGJlIGFuCiAgICAgICAgICAgIGV4Y2VwdGlvbiByYWlzZSBpbiBhIGZ1dHVyZSByZWxlYXNlLiAgIFRhYmxlcyB3aGljaCBhcmUgbm90IHBhcnQKICAgICAgICAgICAgb2YgdGhlIGN5Y2xlIHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQgaW4gZGVwZW5kZW5jeSBvcmRlci4KCiAgICAgICAgICAgIFRvIHJlc29sdmUgdGhlc2UgY3ljbGVzLCB0aGUKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50LnVzZV9hbHRlcmAgcGFyYW1ldGVyIG1heSBiZQogICAgICAgICAgICBhcHBsaWVkIHRvIHRob3NlIGNvbnN0cmFpbnRzIHdoaWNoIGNyZWF0ZSBhIGN5Y2xlLiAgQWx0ZXJuYXRpdmVseSwKICAgICAgICAgICAgdGhlIDpmdW5jOmBfc2NoZW1hLnNvcnRfdGFibGVzX2FuZF9jb25zdHJhaW50c2AgZnVuY3Rpb24gd2lsbAogICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJldHVybiBmb3JlaWduIGtleSBjb25zdHJhaW50cyBpbiBhIHNlcGFyYXRlCiAgICAgICAgICAgIGNvbGxlY3Rpb24gd2hlbiBjeWNsZXMgYXJlIGRldGVjdGVkIHNvIHRoYXQgdGhleSBtYXkgYmUgYXBwbGllZAogICAgICAgICAgICB0byBhIHNjaGVtYSBzZXBhcmF0ZWx5LgoKICAgICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjMuMTcgLSBhIHdhcm5pbmcgaXMgZW1pdHRlZCB3aGVuCiAgICAgICAgICAgICAgIDphdHRyOmAuTWV0YURhdGEuc29ydGVkX3RhYmxlc2AgY2Fubm90IHBlcmZvcm0gYSBwcm9wZXIgc29ydAogICAgICAgICAgICAgICBkdWUgdG8gY3ljbGljYWwgZGVwZW5kZW5jaWVzLiAgVGhpcyB3aWxsIGJlIGFuIGV4Y2VwdGlvbiBpbiBhCiAgICAgICAgICAgICAgIGZ1dHVyZSByZWxlYXNlLiAgQWRkaXRpb25hbGx5LCB0aGUgc29ydCB3aWxsIGNvbnRpbnVlIHRvIHJldHVybgogICAgICAgICAgICAgICBvdGhlciB0YWJsZXMgbm90IGludm9sdmVkIGluIHRoZSBjeWNsZSBpbiBkZXBlbmRlbmN5IG9yZGVyIHdoaWNoCiAgICAgICAgICAgICAgIHdhcyBub3QgdGhlIGNhc2UgcHJldmlvdXNseS4KCiAgICAgICAgLi4gc2VlYWxzbzo6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aXMgYGBNZXRhRGF0YWBgIGZvciBhbnkKICAgICAgICB0YWJsZSBhdmFpbGFibGUgaW4gdGhlIGRhdGFiYXNlIGJ1dCBub3QgeWV0IHByZXNlbnQgaW4gdGhlCiAgICAgICAgYGBNZXRhRGF0YWBgLiAgTWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBwaWNrIHVwIHRhYmxlcyByZWNlbnRseQogICAgICAgIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSwgaG93ZXZlciBubyBzcGVjaWFsIGFjdGlvbiBpcyB0YWtlbiBpZiBhIHRhYmxlCiAgICAgICAgaW4gdGhpcyBgYE1ldGFEYXRhYGAgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUgZGF0YWJhc2UuCgogICAgICAgIDpwYXJhbSBiaW5kOgogICAgICAgICAgQSA6Y2xhc3M6YC5Db25uZWN0YWJsZWAgdXNlZCB0byBhY2Nlc3MgdGhlIGRhdGFiYXNlOyBpZiBOb25lLCB1c2VzCiAgICAgICAgICB0aGUgZXhpc3RpbmcgYmluZCBvbiB0aGlzIGBgTWV0YURhdGFgYCwgaWYgYW55LgoKICAgICAgICA6cGFyYW0gc2NoZW1hOgogICAgICAgICAgT3B0aW9uYWwsIHF1ZXJ5IGFuZCByZWZsZWN0IHRhYmxlcyBmcm9tIGFuIGFsdGVybmF0ZSBzY2hlbWEuCiAgICAgICAgICBJZiBOb25lLCB0aGUgc2NoZW1hIGFzc29jaWF0ZWQgd2l0aCB0aGlzIDpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAKICAgICAgICAgIGlzIHVzZWQsIGlmIGFueS4KCiAgICAgICAgOnBhcmFtIHZpZXdzOgogICAgICAgICAgSWYgVHJ1ZSwgYWxzbyByZWZsZWN0IHZpZXdzLgoKICAgICAgICA6cGFyYW0gb25seToKICAgICAgICAgIE9wdGlvbmFsLiAgTG9hZCBvbmx5IGEgc3ViLXNldCBvZiBhdmFpbGFibGUgbmFtZWQgdGFibGVzLiAgTWF5IGJlCiAgICAgICAgICBzcGVjaWZpZWQgYXMgYSBzZXF1ZW5jZSBvZiBuYW1lcyBvciBhIGNhbGxhYmxlLgoKICAgICAgICAgIElmIGEgc2VxdWVuY2Ugb2YgbmFtZXMgaXMgcHJvdmlkZWQsIG9ubHkgdGhvc2UgdGFibGVzIHdpbGwgYmUKICAgICAgICAgIHJlZmxlY3RlZC4gIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBhIHRhYmxlIGlzIHJlcXVlc3RlZCBidXQgbm90CiAgICAgICAgICBhdmFpbGFibGUuICBOYW1lZCB0YWJsZXMgYWxyZWFkeSBwcmVzZW50IGluIHRoaXMgYGBNZXRhRGF0YWBgIGFyZQogICAgICAgICAgaWdub3JlZC4KCiAgICAgICAgICBJZiBhIGNhbGxhYmxlIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWQgYXMgYSBib29sZWFuIHByZWRpY2F0ZSB0bwogICAgICAgICAgZmlsdGVyIHRoZSBsaXN0IG9mIHBvdGVudGlhbCB0YWJsZSBuYW1lcy4gIFRoZSBjYWxsYWJsZSBpcyBjYWxsZWQKICAgICAgICAgIHdpdGggYSB0YWJsZSBuYW1lIGFuZCB0aGlzIGBgTWV0YURhdGFgYCBpbnN0YW5jZSBhcyBwb3NpdGlvbmFsCiAgICAgICAgICBhcmd1bWVudHMgYW5kIHNob3VsZCByZXR1cm4gYSB0cnVlIHZhbHVlIGZvciBhbnkgdGFibGUgdG8gcmVmbGVjdC4KCiAgICAgICAgOnBhcmFtIGV4dGVuZF9leGlzdGluZzogUGFzc2VkIGFsb25nIHRvIGVhY2ggOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBhcwogICAgICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLlRhYmxlLmV4dGVuZF9leGlzdGluZ2AuCgogICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC45LjEKCiAgICAgICAgOnBhcmFtIGF1dG9sb2FkX3JlcGxhY2U6IFBhc3NlZCBhbG9uZyB0byBlYWNoIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICAgIGFzCiAgICAgICAgICA6cGFyYW1yZWY6YF9zY2hlbWEuVGFibGUuYXV0b2xvYWRfcmVwbGFjZWAuCgogICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC45LjEKCiAgICAgICAgOnBhcmFtIHJlc29sdmVfZmtzOiBpZiBUcnVlLCByZWZsZWN0IDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICAgb2JqZWN0cyBsaW5rZWQKICAgICAgICAgdG8gOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlgIG9iamVjdHMgbG9jYXRlZCBpbiBlYWNoCiAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAuCiAgICAgICAgIEZvciA6bWV0aDpgX3NjaGVtYS5NZXRhRGF0YS5yZWZsZWN0YCwKICAgICAgICAgdGhpcyBoYXMgdGhlIGVmZmVjdCBvZiByZWZsZWN0aW5nCiAgICAgICAgIHJlbGF0ZWQgdGFibGVzIHRoYXQgbWlnaHQgb3RoZXJ3aXNlIG5vdCBiZSBpbiB0aGUgbGlzdCBvZiB0YWJsZXMKICAgICAgICAgYmVpbmcgcmVmbGVjdGVkLCBmb3IgZXhhbXBsZSBpZiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBpcyBpbiBhCiAgICAgICAgIGRpZmZlcmVudCBzY2hlbWEgb3IgaXMgb21pdHRlZCB2aWEgdGhlCiAgICAgICAgIDpwYXJhbXJlZjpgLk1ldGFEYXRhLnJlZmxlY3Qub25seWAgcGFyYW1ldGVyLiAgV2hlbiBGYWxzZSwKICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlgIG9iamVjdHMgYXJlIG5vdCBmb2xsb3dlZCB0byB0aGUKICAgICAgICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICAgICAgICBpbiB3aGljaCB0aGV5IGxpbmssIGhvd2V2ZXIgaWYgdGhlIHJlbGF0ZWQgdGFibGUgaXMgYWxzbyBwYXJ0IG9mIHRoZQogICAgICAgICBsaXN0IG9mIHRhYmxlcyB0aGF0IHdvdWxkIGJlIHJlZmxlY3RlZCBpbiBhbnkgY2FzZSwgdGhlCiAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5YCBvYmplY3Qgd2lsbCBzdGlsbCByZXNvbHZlIHRvIGl0cyByZWxhdGVkCiAgICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgYWZ0ZXIgdGhlIDptZXRoOmBfc2NoZW1hLk1l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bW9kdWxlPnJZAwAAAQAAAHNfBwAA8AMBAQHwEBYBBPAAFgEE8C4AASfQACbQACbQACbQACbQACbgABLQABLQABLQABLYAA+AD4APgA/gABHQABHQABHQABHYABHQABHQABHQABHQABHQABHYABbQABbQABbQABbQABbQABbYABbQABbQABbQABbQABbQABbYACDQACDQACDQACDQACDQACDYACLQACLQACLQACLQACLQACLYAB/QAB/QAB/QAB/QAB/QAB/YACPQACPQACPQACPQACPQACPYACPQACPQACPQACPQACPQACPYAC3QAC3QAC3QAC3QAC3QAC3YACbQACbQACbQACbQACbQACbYACPQACPQACPQACPQACPQACPYACLQACLQACLQACLQACLQACLYACPQACPQACPQACPQACPQACPYACHQACHQACHQACHQACHQACHYACDQACDQACDQACDQACDQACDYACPQACPQACPQACPQACPQACPYABTQABTQABTQABTQABTQABTYABLQABLQABLQABLQABLQABLYABnQABnQABnQABnQABnQABnYABPQABPQABPQABPQABPQABPwBgARHJAElAuYT9EQLNQQLIAN4A8aiHSMe9gEEvACBgUI8QUJEAL0AAkQAoAM8BgEASPwAAQBI/AABAEj8BIOAUIB8AAOAUIB8AAOAUIB8CIAAgzUARrwAkIBATzwAEIBATzwAEIBATzwAEIBATzwAEIBATzQESKgSNQkNvEAQgEBPPQAQgEBPPEDAAIb1AEa8AJCAQE88EoCUg4BLfAAUg4BLfAAUg4BLfAAUg4BLfAAUg4BLYhNmDqge/EAUg4BLfQAUg4BLfAAUg4BLfBqHHQLAT3wAHQLAT3wAHQLAT3wAHQLAT3wAHQLAT2IXZhKqAzxAHQLAT30AHQLAT3wAHQLAT3wbhdqBwEt8ABqBwEt8ABqBwEt8ABqBwEt8ABqBwEtkB2gCvEAagcBLfQAagcBLfAAagcBLfBaDwgBRQHwAAgBRQHwAAgBRQHwAAgBRQHwAAgBRQGQZvEACAFFAfQACAFFAfAACAFFAfAWIQEY8AAhARjwACEBGPAAIQEY8AAhARiQf6gK8QAhARj0ACEBGPAAIQEY8EgBdAEBMfAAdAEBMfAAdAEBMfAAdAEBMfAAdAEBMdAUJPEAdAEBMfQAdAEBMfAAdAEBMfBuAzIBG/AAMgEb8AAyARvwADIBG/AAMgEbkGbxADIBG/QAMgEb8AAyARvwagFKBAEK8ABKBAEK8ABKBAEK8ABKBAEK8ABKBAEKiH/QIDDxAEoEAQr0AEoEAQrwAEoEAQrwWggAAgzUARrwAjABJ/AAMAEn8AAwASfwADABJ/AAMAEnkD/QJDXxADABJ/QAMAEn8QMAAhvUARrwAjABJ/BmASEBUAHwACEBUAHwACEBUAHwACEBUAHwACEBUAGQTPEAIQFQAfQAIQFQAfAAIQFQAfBIAQACFYAU1AEU2AQJ8AIBBUAB8QUEAgL0AAQCAvAKBAEx8AAEATHwAAQBMfAABAEx8AAEATGQXfEABAEx9AAEATHxCwQCAvQABAIC8AoEATHwDlQBASTwAFQBASTwAFQBASTwAFQBASTwAFQBASSQHaAK8QBUAQEk9ABUAQEk8ABUAQEk8G4CBQET8AAFARPwAAUBE/AQCAET8AAIARPwAAgBE/AWZAEBJvAAZAEBJvAAZAEBJvAAZAEBJvAAZAEBJphG8QBkAQEm9ABkAQEm8ABkAQEm8E4DVwEBJ/AAVwEBJ/AAVwEBJ/AAVwEBJ/AAVwEBJ9AhNrgK8QBXAQEn9ABXAQEn8ABXAQEn8HQCZAEBKfAAZAEBKfAAZAEBKfAAZAEBKfAAZAEBKdAWMPEAZAEBKfQAZAEBKfAAZAEBKfBOA2AEASvwAGAEASvwAGAEASvwAGAEASvwAGAEASvQGzXxAGAEASv0AGAEASvwAGAEASvwRglWAwEb8ABWAwEb8ABWAwEb8ABWAwEb8ABWAwEb0Bs18QBWAwEb9ABWAwEb8ABWAwEb8HIGCQEp8AAJASnwAAkBKfAACQEp8AAJASnQFzHxAAkBKfQACQEp8AAJASnwGFADAQrwAFADAQrwAFADAQrwAFADAQrwAFADAQqITdAbMLAq8QBQAwEK9ABQAwEK8ABQAwEK8GYGAB0vmETUHC6wBNA2TdAvTtEcT9QcT9AAGfAGdgkBCvAAdgkBCvAAdgkBCvAAdgkBCvAAdgkBCoh68QB2CQEK9AB2CQEK8AB2CQEK8HITQAEBHPAAQAEBHPAAQAEBHPAAQAEBHPAAQAEBHJgo8QBAAQEc9ABAAQEc8ABAAQEc8EYCLgEt8AAuAS3wAC4BLfAALgEt8AAuAS2YJvEALgEt9AAuAS3wAC4BLfBiAQAXKtAWKagk0RYv1BYv0AAT2BEk1BEzgA7wBlUBASnwAFUBASnwAFUBASnwAFUBASnwAFUBASmIfJha8QBVAQEp9ABVAQEp8ABVAQEp8ABVAQEp8ABVAQEpciQAAAA=
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).