LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICBHTkFUIENPTVBJTEVSIENPTVBPTkVOVFMgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWIE0gUyBfIEQgQSBUIEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIHAgZSBjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNiwgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEdOQVQgaXMgZnJlZSBzb2Z0d2FyZTsgIHlvdSBjYW4gIHJlZGlzdHJpYnV0ZSBpdCAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciAtLQotLSB0ZXJtcyBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCAgYnkgdGhlIEZyZWUgU29mdC0gLS0KLS0gd2FyZSAgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIsICBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXItIC0tCi0tIHNpb24uICBHTkFUIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRILSAtLQotLSBPVVQgQU5ZIFdBUlJBTlRZOyAgd2l0aG91dCBldmVuIHRoZSAgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgLS0KLS0gb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIC0tCi0tIGZvciAgbW9yZSBkZXRhaWxzLiAgWW91IHNob3VsZCBoYXZlICByZWNlaXZlZCAgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCAtLQotLSBQdWJsaWMgTGljZW5zZSAgZGlzdHJpYnV0ZWQgd2l0aCBHTkFUOyAgc2VlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgLS0KLS0gdG8gIHRoZSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCAgNTEgIEZyYW5rbGluICBTdHJlZXQsICBGaWZ0aCAgRmxvb3IsIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gR05BVCB3YXMgb3JpZ2luYWxseSBkZXZlbG9wZWQgIGJ5IHRoZSBHTkFUIHRlYW0gYXQgIE5ldyBZb3JrIFVuaXZlcnNpdHkuIC0tCi0tIEV4dGVuc2l2ZSBjb250cmlidXRpb25zIHdlcmUgcHJvdmlkZWQgYnkgQWRhIENvcmUgVGVjaG5vbG9naWVzIEluYy4gICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zLCBmb3IgZWFjaCBvZiB0aGUgY29tbWFuZCBvZiB0aGUgR05BVCBkcml2ZXIsIG9uZQotLSAgY29uc3RhbnQgYXJyYXk7IGVhY2ggY29tcG9uZW50IG9mIHRoaXMgYXJyYXkgaXMgYSBzdHJpbmcgdGhhdCBkZWZpbmVzLAotLSAgaW4gY29kZWQgZm9ybSBhcyBleHBsYWluZWQgYmVsb3csIHRoZSBjb252ZXJzaW9uIG9mIGEgVk1TIHF1YWxpZmllciBvZiB0aGUKLS0gIGNvbW1hbmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc3dpdGNoIG9mIHRoZSBHTkFUIHRvb2wgY29ycmVzcG9uZGluZyB0byB0aGUKLS0gIGNvbW1hbmQuCgotLSAgVGhpcyBwYWNrYWdlIGlzIHVzZWQgYnkgdGhlIEdOQVQgZHJpdmVyIHRvIGludm9rZXMgdGhlIEdOQVQgdG9vbHMgd2l0aCB0aGUKLS0gIHN3aXRjaGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFZNUyBxdWFsaWZpZXIgYW5kIGJ5IHRoZSBQcm9qZWN0IE1hbmFnZXIgdG8KLS0gIGNvbnZlcnQgVk1TIHF1YWxpZmllcnMgaW4gcHJvamVjdCBmaWxlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN3aXRjaAotLSAgdmFsdWVzLgoKLS0gIFRoaXMgcGFja2FnZSBpcyBhbHNvIGFuIGlucHV0IHRvIHRoZSB0b29sIHRoYXQgZ2VuZXJhdGVzIHRoZSBWTVMgR05BVAotLSAgaGVscCBpbmZvcm1hdGlvbiBhdXRvbWF0aWNhbGx5LgoKLS0gIE5PVEU6IHRoZSBmb3JtYXQgb2YgdGhpcyBwYWNrYWdlIG11c3QgZm9sbG93IHRoZSBmb2xsb3dpbmcgcnVsZXMsIHNvIHRoYXQKLS0gICAgICAgIHRoZSBWTVMgR05BVCBoZWxwIHRvb2wgd29ya3MgcHJvcGVybHk6CgotLSAgICAtIEVhY2ggY29tbWFuZCB6b25lICh3aGVyZSB0aGUgZXZlbnR1YWwgcXVhbGlmaWVycyBhcmUgZGVjbGFyZWQgbXVzdAotLSAgICAgIGJlZ2luIHdpdGggYSBib3hlZCBjb21tZW50IG9mIHRoZSBmb3JtOgoKLS0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAtLSBTd2l0Y2hlcyBmb3IgR05BVCA8Q09NTUFORD4gLS0KLS0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICAgICAgd2hlcmUgPENPTU1BTkQ+IGlzIHRoZSBuYW1lIG9mIGEgR05BVCBjb21tYW5kIGluIGNhcGl0YWwgbGV0dGVycywgZm9yCi0tICAgICAgZXhhbXBsZSBCSU5ELCBDT01QSUxFLCBYUkVGLCAuLi4KCi0tICAgIC0gZWFjaCBxdWFsaWZpZXIgZGVjbGFyYXRpb24gbXVzdCBiZSBmb2xsb3dlZCBlaXRoZXIgYnkKLS0gICAgICAgICAtIGEgY29tbWVudCBzdGFydGluZyB3aXRoICItLSAgTk9ET0MiLCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzCi0tICAgICAgICAgICBubyBkb2N1bWVudGF0aW9uIGZvciB0aGlzIHF1YWxpZmllciwgb3IKLS0gICAgICAgICAtIGEgY29udGlndW91cyBzZXF1ZW5jZSBvZiBjb21tZW50cyB0aGF0IGNvbnN0aXR1dGUgdGhlCi0tICAgICAgICAgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBxdWFsaWZpZXIuCgotLSAgICAtIGVhY2ggY29tbWFuZCB6b25lIGVuZHMgd2l0aCB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIGNvbnRhbnQgYXJyYXkKLS0gICAgICBmb3IgdGhlIGNvbW1hbmQsIG9mIHRoZSBmb3JtOgoKLS0gICAgICA8Q29tbWFuZD5fX1N3aXRjaGVzIDogYWxpYXNlZCBjb25zdGFudCBTd2l0Y2hlcyA6PQoKcGFja2FnZSBWTVNfRGF0YSBpcwoKICAgLS0tLS0tLS0tLS0tLS0tLQogICAtLSBRVUFMSUZJRVJTIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIC0tICBUaGUgc3ludGF4IG9mIGEgcXVhbGlmaWVyIGRlbGFyYXRpb24gaXMgYXMgZm9sbG93czoKCiAgIC0tICAgIFNXSVRDSF9TVFJJTkcgOjo9ICIvIGNvbW1hbmQtcXVhbGlmaWVyLW5hbWUgVFJBTlNMQVRJT04iCgogICAtLSAgICBUUkFOU0xBVElPTiA6Oj0KICAgLS0gICAgICBESVJFQ1RfVFJBTlNMQVRJT04KICAgLS0gICAgfCBESVJFQ1RPUklFU19UUkFOU0xBVElPTgogICAtLSAgICB8IEZJTEVfVFJBTlNMQVRJT04KICAgLS0gICAgfCBOT19TUEFDRV9GSUxFX1RSQU5TTAogICAtLSAgICB8IE5VTUVSSUNfVFJBTlNMQVRJT04KICAgLS0gICAgfCBTVFJJTkdfVFJBTlNMQVRJT04KICAgLS0gICAgfCBPUFRJT05TX1RSQU5TTEFUSU9OCiAgIC0tICAgIHwgQ09NTUFORFNfVFJBTlNMQVRJT04KICAgLS0gICAgfCBBTFBIQU5VTVBMVVNfVFJBTlNMQVRJT04KICAgLS0gICAgfCBPVEhFUl9UUkFOU0xBVElPTgoKICAgLS0gICAgRElSRUNUX1RSQU5TTEFUSU9OICAgICAgIDo6PSBzcGFjZSBVTklYX1NXSVRDSEVTCiAgIC0tICAgIERJUkVDVE9SSUVTX1RSQU5TTEFUSU9OICA6Oj0gPSogVU5JWF9TV0lUQ0ggKgogICAtLSAgICBESVJFQ1RPUllfVFJBTlNMQVRJT04gICAgOjo9ID0lIFVOSVhfU1dJVENIICUKICAgLS0gICAgRklMRV9UUkFOU0xBVElPTiAgICAgICAgIDo6PSA9QCBVTklYX1NXSVRDSCBACiAgIC0tICAgIE5PX1NQQUNFX0ZJTEVfVFJBTlNMICAgICA6Oj0gPTwgVU5JWF9TV0lUQ0ggPgogICAtLSAgICBOVU1FUklDX1RSQU5TTEFUSU9OICAgICAgOjo9ID0jIFVOSVhfU1dJVENIICMgfCAjIG51bWJlciAjCiAgIC0tICAgIFNUUklOR19UUkFOU0xBVElPTiAgICAgICA6Oj0gPSIgVU5JWF9TV0lUQ0ggIgogICAtLSAgICBPUFRJT05TX1RSQU5TTEFUSU9OICAgICAgOjo9ID1PUFRJT04ge3NwYWNlIE9QVElPTn0KICAgLS0gICAgQ09NTUFORFNfVFJBTlNMQVRJT04gICAgIDo6PSA9PyBBUkdTIHNwYWNlIGNvbW1hbmQtbmFtZQogICAtLSAgICBBTFBIQU5VTVBMVVNfVFJBTlNMQVRJT04gOjo9ID18IFVOSVhfU1dJVENIIHwKCiAgIC0tICAgIFVOSVhfU1dJVENIRVMgOjo9IFVOSVhfU1dJVENIIHssIFVOSVhfU1dJVENIfQoKICAgLS0gICAgVU5JWF9TV0lUQ0ggOjo9IHVuaXgtc3dpdGNoLXN0cmluZyB8ICF1bml4LXN3aXRjaC1zdHJpbmcgfCBgc3RyaW5nJwoKICAgLS0gICAgT1BUSU9OIDo6PSBvcHRpb24tbmFtZSBzcGFjZSBVTklYX1NXSVRDSEVTCgogICAtLSAgICBBUkdTIDo6PSAtY2FyZ3MgfCAtYmFyZ3MgfCAtbGFyZ3MKCiAgIC0tICBIZXJlIGNvbW1hbmQtcXVhbCBpcyB0aGUgbmFtZSBvZiB0aGUgc3dpdGNoIHJlY29nbml6ZWQgYnkgdGhlIEdOQVRDbWQuCiAgIC0tICBUaGlzIGlzIGFsd2F5cyBnaXZlbiBpbiB1cHBlciBjYXNlIGluIHRoZSB0ZW1wbGF0ZXMsIGFsdGhvdWdoIGluIHRoZQogICAtLSAgYWN0dWFsIGNvbW1hbmRzLCBlaXRoZXIgdXBwZXIgb3IgbG93ZXIgY2FzZSBpcyBhbGxvd2VkLgoKICAgLS0gIFRoZSB1bml4LXN3aXRjaC1zdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgbWludXMsIGFuZCBoYXMgbm8gY29tbWFzCiAgIC0tICBvciBzcGFjZXMgaW4gaXQuIENhc2UgaXMgc2lnbmlmaWNhbnQgaW4gdGhlIHVuaXggc3dpdGNoIHN0cmluZy4gSWYgYQogICAtLSAgdW5peCBzd2l0Y2ggc3RyaW5nIGlzIHByZWNlZGVkIGJ5IHRoZSBub3Qgc2lnbiAoISkgaXQgbWVhbnMgdGhhdCB0aGUKICAgLS0gIGVmZmVjdCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21tYW5kIHF1YWxpZmVyIGlzIHRvIHJlbW92ZSBhbnkgcHJldmlvdXMKICAgLS0gIG9jY3VycmVuY2Ugb2YgdGhlIGdpdmVuIHN3aXRjaCBpbiB0aGUgY29tbWFuZCBsaW5lLgoKICAgLS0gIFRoZSBESVJFQ1RPUklFU19UUkFOU0xBVElPTiBmb3JtYXQgaXMgdXNlZCB3aGVyZSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMKICAgLS0gIGlzIGdpdmVuLiBUaGlzIHBvc3NpYmxlIGNvcnJlc3BvbmRpbmcgZm9ybWF0cyByZWNvZ25pemVkIGJ5IEdOQVRDbWQgYXJlCiAgIC0tICBhcyBzaG93biBieSB0aGUgZm9sbG93aW5nIGV4YW1wbGUgZm9yIHRoZSBjYXNlIG9mIFBBVEgKCiAgIC0tICAgIFBBVEg9ZGlyZWMKICAgLS0gICAgUEFUSD0oZGlyZWMsZGlyZWMsZGlyZWMsZGlyZWMpCgogICAtLSAgV2hlbiBtb3JlIHRoYW4gb25lIGRpcmVjdG9yeSBpcyBwcmVzZW50IGZvciB0aGUgRElSRUNUT1JJRVMgY2FzZSwgdGhlbgogICAtLSAgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHVuaXggc3dpdGNoIGFyZSBnZW5lcmF0ZWQsCiAgIC0tICB3aXRoIHRoZSBmaWxlIG5hbWUgYmVpbmcgc3Vic3RpdHV0ZWQgZm9yIHRoZSBvY2N1cnJlbmNlIG9mICouCgogICAtLSAgVGhlIEZJTEVfVFJBTlNMQVRJT04gZm9ybWF0IGlzIHNpbWlsYXIgZXhjZXB0IHRoYXQgb25seSBhIHNpbmdsZQogICAtLSAgZmlsZSBpcyBhbGxvd2VkLCBub3QgYSBsaXN0IG9mIGZpbGVzLCBhbmQgb25seSBvbmUgdW5peCBzd2l0Y2ggaXMKICAgLS0gIGdlbmVyYXRlZCBhcyBhIHJlc3VsdC4KCiAgIC0tICB0aGUgTk9fU1BBQ0VfRklMRV9UUkFOU0wgaXMgc2ltaWxhciB0byBGSUxFX1RSQU5TTEFUSU9OLCBleGNlcHQgdGhhdAogICAtLSAgbm8gc3BhY2UgaXMgaW5zZXJ0ZWQgYmV0d2VlbiB0aGUgc3dpdGNoIGFuZCB0aGUgZmlsZSBuYW1lLgoKICAgLS0gIFRoZSBOVU1FUklDX1RSQU5TTEFUSU9OIGZvcm1hdCBpcyBzaW1pbGFyIHRvIHRoZSBGSUxFX1RSQU5TTEFUSU9OIGNhc2UKICAgLS0gIGV4Y2VwdCB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgYSBkZWNpbWFsIGludGVnZXIgaW4gdGhlIHJhbmdlIDAgdG8gOTk5LgoKICAgLS0gIEZvciB0aGUgT1BUSU9OU19UUkFOU0xBVElPTiBjYXNlLCBHTkFUQ21kIHNpbWlsYXJseSBwZXJtaXRzIG9uZSBvcgogICAtLSAgbW9yZSBvcHRpb25zIHRvIGFwcGVhciAoYWx0aG91Z2ggb25seSBpbiBzb21lIGNhc2VzIGRvZXMgdGhlIHVzZSBvZgogICAtLSAgbXVsdGlwbGUgb3B0aW9ucyBtYWtlIGxvZ2ljYWwgc2Vuc2UpLiBGb3IgZXhhbXBsZSwgdGFraW5nIHRoZQogICAtLSAgY2FzZSBvZiBFUlJPUlMgZm9yIEdDQywgdGhlIGZvbGxvd2luZyBhcmUgYWxsIGFsbG93ZWQ6CgogICAtLSAgICAvRVJST1JTPUJSSUVGCiAgIC0tICAgIC9FUlJPUlM9KEZVTEwsVkVSQk9TRSkKICAgLS0gICAgL0VSUk9SUz0oQlJJRUYgSU1NRURJQVRFKQoKICAgLS0gIElmIG5vIG9wdGlvbiBpcyBwcm92aWRlZCAoZS5nLiBqdXN0IC9FUlJPUlMgaXMgd3JpdHRlbiksIHRoZW4gdGhlCiAgIC0tICBmaXJzdCBvcHRpb24gaW4gdGhlIGxpc3QgaXMgdGhlIGRlZmF1bHQgb3B0aW9uLiBGb3IgL0VSUk9SUyB0aGlzCiAgIC0tICBpcyBOT1JNQUwsIHNvIC9FUlJPUlMgd2l0aCBubyBvcHRpb24gaXMgZXF1aXZhbGVudCB0byAvRVJST1JTPU5PUk1BTC4KCiAgIC0tICBUaGUgQ09NTUFORFNfVFJBTlNMQVRJT04gY2FzZSBpcyBvbmx5IHVzZWQgZm9yIGduYXRtYWtlLCB0byBjb3JyZXNwb25kCiAgIC0tICB0byB0aGUgdXNlIG9mIC1jYXJncywgLWJhcmdzIGFuZCAtbGFyZ3MgKHRoZSBBUkdTIHN0cmluZyBhcyBpbmRpY2F0ZWQKICAgLS0gIGlzIG9uZSBvZiB0aGVzZSB0aHJlZSBwb3NzaWJpbGl0aWVzKS4gVGhlIG5hbWUgZ2l2ZW4gYnkgQ09NTUFORCBpcyB0aGUKICAgLS0gIGNvcnJlc3BvbmRpbmcgY29tbWFuZCBuYW1lIHRvIGJlIHVzZWQgdG8gaW50ZXJwcmV0ZSB0aGUgc3dpdGNoZXMgdG8gYmUKICAgLS0gIHBhc3NlZCBvbi4gU3dpdGNoZXMgb2YgdGhpcyB0eXBlIHNldCBtb2RlcywgZS5nLiAvQ09NUElMRVJfUVVBTElGSUVSUwogICAtLSAgc2V0cyB0aGUgbW9kZSBzbyB0aGF0IGFsbCBzdWJzZXF1ZW50IHN3aXRjaGVzLCB1cCB0byBhbm90aGVyIHN3aXRjaAogICAtLSAgd2l0aCBDT01NQU5EU19UUkFOU0xBVElPTiBhcHBseSB0byB0aGUgY29ycmVzcG9uZGluZyBjb21tYW5kcyBpc3N1ZWQKICAgLS0gIGJ5IHRoZSBtYWtlIHV0aWxpdHkuIEZvciBleGFtcGxlCgogICAtLSAgICAvQ09NUElMRVJfUVVBTElGSUVSUyAvTElTVCAvQklOREVSX1FVQUxJRklFUlMgL01BSU4KICAgLS0gICAgL0NPTVBJTEVSX1FVQUxJRklFUlMgL05PTElTVCAvQ09NUElMRV9DSEVDS1M9U1lOVEFYCgogICAtLSAgQ2xlYXJseSB0aGVzZSBzd2l0Y2hlcyBtdXN0IGNvbWUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBzd2l0Y2hlcwogICAtLSAgc2luY2UgYWxsIHN1YnNlcXVlbnQgc3dpdGNoZXMgYXBwbHkgdG8gYW4gaXNzdWVkIGNvbW1hbmQuCgogICAtLSAgRm9yIHRoZSBESVJFQ1RfVFJBTlNMQVRJT04gY2FzZSwgYW4gaW1wbGljaXQgYWRkaXRpb25hbCBxdWFsaWZpZXIKICAgLS0gIGRlY2xhcmF0aW9uIGlzIGNyZWF0ZWQgYnkgcHJlcGVuZGluZyBOTyB0byB0aGUgbmFtZSBvZiB0aGUgcXVhbGlmZXIsCiAgIC0tICBhbmQgdGhlbiBpbnZlcnRpbmcgdGhlIHNlbnNlIG9mIHRoZSBVTklYX1NXSVRDSEVTIHN0cmluZy4gRm9yIGV4YW1wbGUsCiAgIC0tICBnaXZlbiB0aGUgcXVhbGlmaWVyIGRlZmluaXRpb246CgogICAtLSAgICAgIi9MSVNUIC1nbmF0bCIKCiAgIC0tICBBbiBpbXBsaWNpdCBxdWFsaWZpZXIgZGVmaW5pdGlvbiBpcyBjcmVhdGVkOgoKICAgLS0gICAgICIvTk9MSVNUICEtZ25hdGwiCgogICAtLSAgSW4gdGhlIGNhc2Ugd2hlcmUsIGEgISBpcyBhbHJlYWR5IHByZXNlbnQsIGludmVydGluZyB0aGUgc2Vuc2Ugb2YgdGhlCiAgIC0tICBzd2l0Y2ggbWVhbnMgcmVtb3ZpbmcgaXQuCgogICBzdWJ0eXBlIFMgaXMgU3RyaW5nOwogICAtLSAgQSBzeW5vbnltIHRvIHNob3J0ZW4gdGhlIHRhYmxlCgogICB0eXBlIFN0cmluZ19QdHIgaXMgYWNjZXNzIGNvbnN0YW50IFN0cmluZzsKICAgLS0gIFN0cmluZyBwb2ludGVyIHR5cGUgdXNlZCB0aHJvdWdob3V0CgogICB0eXBlIFN3aXRjaGVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBTdHJpbmdfUHRyOwogICAtLSAgVHlwZSB1c2VkIGZvciBhcnJheSBvZiBzd3RpY2hlcwoKICAgdHlwZSBTd2l0Y2hlc19QdHIgaXMgYWNjZXNzIGNvbnN0YW50IFN3aXRjaGVzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTd2l0Y2hlcyBmb3IgR05BVCBCSU5EIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIFNfQmluZF9CaW5kICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQklORF9GSUxFPSIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQURBICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItQSAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkMgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUMiOwogICAtLSAgICAgICAgL0JJTkRfRklMRVs9YmluZC1maWxlLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBiaW5kZXIgZ2VuZXJhdGVkIGZpbGUuCiAgIC0tCiAgIC0tICAgICAgICBBREEgKEQpICAgIEJpbmRlciBmaWxlIGlzIEFkYS4KICAgLS0KICAgLS0gICAgICAgIEMgICAgICAgICAgQmluZGVyIGZpbGUgaXMgJ0MnLgoKICAgU19CaW5kX0J1aWxkICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9CVUlMRF9MSUJSQVJZPXwiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItTHwiOwogICAtLSAgICAgICAgL0JVSUxEX0xJQlJBUlk9eHh4CiAgIC0tCiAgIC0tICAgICAgICBCaW5kcyB0aGUgdW5pdHMgZm9yIGxpYnJhcnkgYnVpbGRpbmcuIEluIHRoaXMgY2FzZSB0aGUgYWRhaW5pdCBhbmQKICAgLS0gICAgICAgIGFkYWZpbmFsIHByb2NlZHVyZXMgYXJlIHJlbmFtZSB0byB4eHhpbml0IGFuZCB4eHhmaW5hbC4gSW1wbGllcwogICAtLSAgICAgICAgL05PTUFJTi4KCiAgIFNfQmluZF9DdXJyZW50IDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ1VSUkVOVF9ESVJFQ1RPUlkgIiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1JLSI7CiAgIC0tICAgICAgICAvQ1VSUkVOVF9ESVJFQ1RPUlkgKEQpCiAgIC0tICAgICAgICAvTk9DVVJSRU5UX0RJUkVDVE9SWQogICAtLQogICAtLSAgICAgICAgTG9vayBmb3Igc291cmNlLCBsaWJyYXJ5IG9yIG9iamVjdCBmaWxlcyBpbiB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX0JpbmRfRGVidWcgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RFQlVHPSIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRSQUNFQkFDSyAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWcyICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBTEwgIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nMyAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9ORSAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzAgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNZTUJPTFMgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWcxICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1NZTUJPTFMgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZzEgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTElOSyAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzMgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PVFJBQ0VCQUNLICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1nMiI7CiAgIC0tICAgICAgICAvREVCVUdbPWRlYnVnLWxldmVsXQogICAtLSAgICAgICAgL05PREVCVUcKICAgLS0KICAgLS0gICAgU3BlY2lmeSBsZXZlbCBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZ2VuZXJhdGVkIGZvciB0aGUgZWxhYm9yYXRpb24KICAgLS0gICAgcm91dGluZS4gIFNlZSBjb3JyZXNwb25kaW5nIHF1YWxpZmllciBmb3IgR05BVCBDT01QSUxFLgoKICAgU19CaW5kX0RlYnVnWCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT0RFQlVHICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLWciOwogICAtLSAgTk9ET0MgIChzZWUgL0RFQlVHKQoKICAgU19CaW5kX0VsYWIgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9FTEFCT1JBVElPTl9ERVBFTkRFTkNJRVMgIiAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZSI7CiAgIC0tICAgICAgICAvRUxBQk9SQVRJT05fREVQRU5ERU5DSUVTCiAgIC0tICAgICAgICAvTk9FTEFCT1JBVElPTl9ERVBFTkRFTkNJRVMgKEQpCiAgIC0tCiAgIC0tICAgT3V0cHV0IGNvbXBsZXRlIGxpc3Qgb2YgZWxhYm9yYXRpb24tb3JkZXIgZGVwZW5kZW5jaWVzLCBzaG93aW5nIHRoZQogICAtLSAgIHJlYXNvbiBmb3IgZWFjaCBkZXBlbmRlbmN5LiBUaGlzIG91dHB1dCBjYW4gYmUgcmF0aGVyIGV4dGVuc2l2ZSBidXQgbWF5CiAgIC0tICAgYmUgdXNlZnVsIGluIGRpYWdub3NpbmcgcHJvYmxlbXMgd2l0aCBlbGFib3JhdGlvbiBvcmRlci4gVGhlIG91dHB1dCBpcwogICAtLSAgIHdyaXR0ZW4gdG8gU1lTJE9VVFBVVC4KCiAgIFNfQmluZF9FcnJvciAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVJST1JfTElNSVQ9IyIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW0jIjsKICAgLS0gICAgICAgIC9FUlJPUl9MSU1JVD1ubm4KICAgLS0KICAgLS0gICBMaW1pdCBudW1iZXIgb2YgZGV0ZWN0ZWQgZXJyb3JzIHRvIG5ubiAoMS05OTk5OTkpLgoKICAgU19CaW5kX0V4dCAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9FWFRFUk5BTF9SRUZFUkVOQ0U9IiAmICciJyAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItWCIgJiAnIic7CiAgIC0tICAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9Im5hbWU9dmFsIgogICAtLQogICAtLSAgIFNwZWNpZmllcyBhbiBleHRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHByb2plY3QgbWFuYWdlci4gVXNlZnVsIG9ubHkgaWYKICAgLS0gICAvUFJPSkVDVF9GSUxFIGlzIHVzZWQuCiAgIC0tCiAgIC0tICAgRXhhbXBsZToKICAgLS0gICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJERUJVRz1UUlVFIgoKICAgU19CaW5kX0ZvcmNlICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9GT1JDRV9FTEFCX0ZMQUdTICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRiI7CiAgIC0tICAgICAgICAvTk9GT1JDRV9FTEFCX0ZMQUdTIChEKQogICAtLSAgICAgICAgL0ZPUkNFX0VMQUJfRkxBR1MKICAgLS0KICAgLS0gICAgRm9yY2UgY2hlY2tpbmcgb2YgZWxhYm9yYXRpb24gRmxhZ3MKCiAgIFNfQmluZF9IZWxwICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvSEVMUCAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWgiOwogICAtLSAgICAgICAgL0hFTFAKICAgLS0KICAgLS0gICBPdXRwdXQgdXNhZ2UgaW5mb3JtYXRpb24uCgogICBTX0JpbmRfSW5pdCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0lOSVRJQUxJWkVfU0NBTEFSUz0iICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklOVkFMSUQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVNpbiAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMT1cgIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1TbG8gIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElHSCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItU2hpIjsKICAgLS0gICAgICAgIC9JTklUSUFMSVpFX1NDQUxBUlNbPXNjYWxhci1vcHRpb25dCiAgIC0tCiAgIC0tICAgSW5kaWNhdGUgaG93IHVuaW5pdGlhbGl6ZWQgc2NhbGFyIHZhbHVlcyBmb3Igd2hpY2ggYSBwcmFnbWEKICAgLS0gICBJbml0aWFsaXplX1NjYWxhcnMgYXBwbGllcyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQuCiAgIC0tICAgc2NhbGFyLW9wdGlvbiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgSU5WQUxJRCAoRCkgIEluaXRpYWxpemUgd2l0aCBhbiBpbnZhbGlkIHZhbHVlLgogICAtLSAgICAgIExPVyAgICAgICAgICBJbml0aWFsaXplIHdpdGggdGhlIGxvd2VzdCB2YWxpZCB2YWx1ZSBvZiB0aGUgc3VidHlwZS4KICAgLS0gICAgICBISUdIICAgICAgICAgSW5pdGlhbGl6ZSB3aXRoIHRoZSBoaWdoZXN0IHZhbGlkIHZhbHVlIG9mIHRoZSBzdWJ0eXBlLgoKICAgU19CaW5kX0xpYnJhcnkgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9MSUJSQVJZX1NFQVJDSD0qIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYU8qIjsKICAgLS0gICAgICAgIC9MSUJSQVJZX1NFQVJDSD0oZGlyZWNbLC4uLl0pCiAgIC0tCiAgIC0tICAgICAgICBXaGVuIGxvb2tpbmcgZm9yIGxpYnJhcnkgYW5kIG9iamVjdCBmaWxlcyBsb29rIGFsc28gaW4gZGlyZWN0b3JpZXMKICAgLS0gICAgICAgIHNwZWNpZmllZC4KCiAgIFNfQmluZF9MaW5rZXIgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTElOS0VSX09QVElPTl9MSVNUICIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUsiOwogICAtLSAgICAgICAgL05PTElOS0VSX09QVElPTl9MSVNUIChEKQogICAtLSAgICAgICAgL0xJTktFUl9PUFRJT05fTElTVAogICAtLQogICAtLSAgICAgICAgT3V0cHV0IGxpbmtlciBvcHRpb25zIHRvIFNZUyRPVVRQVVQuICBJbmNsdWRlcyBsaWJyYXJ5IHNlYXJjaAogICAtLSAgICAgICAgcGF0aHMsIGNvbnRlbnRzIG9mIHByYWdtYXMgSWRlbnQgYW5kIExpbmtlcl9PcHRpb25zLCBhbmQKICAgLS0gICAgICAgIGxpYnJhcmllcyBhZGRlZCBieSBHTkFUIEJJTkQuCgogICBTX0JpbmRfTWFpbiAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01BSU4gIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtbiI7CiAgIC0tICAgICAgICAvTUFJTiAoRCkKICAgLS0KICAgLS0gICBUaGUgbWFpbiBwcm9ncmFtIGlzIGluIEFkYS4KICAgLS0KICAgLS0gICAgICAgIC9OT01BSU4KICAgLS0KICAgLS0gICBUaGUgbWFpbiBwcm9ncmFtIGlzIG5vdCBpbiBBZGEuCgogICBTX0JpbmRfTWVzcyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01FU1NBR0VTX1BST0pFQ1RfRklMRT0iICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFRkFVTFQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRURJVU0gIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDEgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElHSCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAyIjsKICAgLS0gICAgICAgIC9NRVNTQUdFU19QUk9KRUNUX0ZJTEVbPW1lc3NhZ2VzLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlICJ2ZXJib3NpdHkiIG9mIHRoZSBwYXJzaW5nIG9mIHByb2plY3QgZmlsZXMuCiAgIC0tICAgbWVzc2FnZXMtb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgICBERUZBVUxUIChEKSAgTm8gbWVzc2FnZXMgYXJlIG91dHB1dCBpZiB0aGVyZSBpcyBubyBlcnJvciBvciB3YXJuaW5nLgogICAtLQogICAtLSAgICAgIE1FRElVTSAgICAgICBBIHNtYWxsIG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LgogICAtLQogICAtLSAgICAgIEhJR0ggICAgICAgICBBIGdyZWF0IG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LCBtb3N0IG9mIHRoZW0gbm90CiAgIC0tICAgICAgICAgICAgICAgICAgIGJlaW5nIHVzZWZ1bCBmb3IgdGhlIHVzZXIuCgogICBTX0JpbmRfTm9zdGluYyA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PU1REX0lOQ0xVREVTICIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ub3N0ZGluYyI7CiAgIC0tICAgICAgICAvTk9TVERfSU5DTFVERVMKICAgLS0KICAgLS0gICAgRG8gbm90IGxvb2sgZm9yIHNvdXJjZXMgdGhlIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX0JpbmRfTm9zdGxpYiA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PU1REX0xJQlJBUklFUyAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ub3N0ZGxpYiI7CiAgIC0tICAgICAgICAvTk9TVERfTElCUkFSSUVTCiAgIC0tCiAgIC0tICAgIERvIG5vdCBsb29rIGZvciBsaWJyYXJ5IGZpbGVzIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX0JpbmRfTm9fVGltZSA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PX1RJTUVfU1RBTVBfQ0hFQ0sgIiAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IjsKICAgLS0gIE5PRE9DIChzZWUgL1RJTUVfU1RBTVBfQ0hFQ0spCgogICBTX0JpbmRfT2JqZWN0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09CSkVDVF9MSVNUICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1PIjsKICAgLS0gICAgICAgIC9OT09CSkVDVF9MSVNUIChEKQogICAtLSAgICAgICAgL09CSkVDVF9MSVNUCiAgIC0tCiAgIC0tICAgIE91dHB1dCBmdWxsIG5hbWVzIG9mIGFsbCB0aGUgb2JqZWN0IGZpbGVzIHRoYXQgbXVzdCBiZSBsaW5rZXIgdG8KICAgLS0gICAgcHJvdmlkZSB0aGUgQWRhIGNvbXBvbmVudCBvZiB0aGUgcHJvZ3JhbS4gVGhlIG91dHB1dCBpcyB3cml0dGVuIHRvCiAgIC0tICAgIFNZUyRPVVRQVVQuCgogICBTX0JpbmRfT3JkZXIgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09SREVSX09GX0VMQUJPUkFUSU9OICIgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1sIjsKICAgLS0gICAgICAgIC9OT09SREVSX09GX0VMQUJPUkFUSU9OIChEKQogICAtLSAgICAgICAgL09SREVSX09GX0VMQUJPUkFUSU9OCiAgIC0tCiAgIC0tICAgT3V0cHV0IGNob3NlbiBlbGFib3JhdGlvbiBvcmRlci4gVGhlIG91dHB1dCBpcyB3cml0dGVuIHRvIFNZUyRPVVRQVVQuCgogICBTX0JpbmRfT3V0cHV0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09VVFBVVD1AIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vQCI7CiAgIC0tICAgICAgICAvT1VUUFVUPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgRmlsZSBuYW1lIHRvIHVzZSBmb3IgdGhlIHByb2dyYW0gY29udGFpbmluZyB0aGUgZWxhYm9yYXRpb24gY29kZS4KCiAgIFNfQmluZF9PdXRwdXRYIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9PVVRQVVQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiOwogICAtLSAgICAgICAgL05PT1VUUFVUCiAgIC0tCiAgIC0tICAgQ2hlY2sgb25seS4gRG8gbm90IGdlbmVyYXRlIHRoZSBiaW5kZXIgb3V0cHV0IGZpbGUuCiAgIC0tCiAgIC0tICAgSW4gdGhpcyBtb2RlIHRoZSBiaW5kZXIgcGVyZm9ybXMgYWxsIGVycm9yIGNoZWNrcyBidXQgZG9lcyBub3QgZ2VuZXJhdGUKICAgLS0gICBhbiBvdXRwdXQgZmlsZS4KCiAgIFNfQmluZF9QZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUEVTU0lNSVNUSUNfRUxBQk9SQVRJT04gIiAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXAiOwogICAtLSAgICAgICAgL1BFU1NJTUlTVElDX0VMQUJPUkFUSU9OCiAgIC0tCiAgIC0tICAgQ2F1c2VzIHRoZSBiaW5kZXIgdG8gY2hvb3NlIGEgInBlc3NpbWlzdGljIiBlbGFib3JhdGlvbiBvcmRlciwgaS5lLiBvbmUKICAgLS0gICB3aGljaCBpcyBtb3N0IGxpa2VseSB0byBjYXVzZSBlbGFib3JhdGlvbiBvcmRlciBwcm9ibGVtcy4gVGhpcyBjYW4gYmUKICAgLS0gICB1c2VmdWwgaW4gdGVzdGluZyBwb3J0YWJsZSBjb2RlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBtaXNzaW5nCiAgIC0tICAgZWxhYm9yYXRlIHByYWdtYXMuCgogICBTX0JpbmRfUHJvamVjdCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtYWluIHByb2plY3QgZmlsZSB0byBiZSB1c2VkLiBUaGUgcHJvamVjdCBmaWxlcyByb290ZWQKICAgLS0gICBhdCB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgd2lsbCBiZSBwYXJzZWQgYmVmb3JlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQogICAtLSAgIGJpbmRlci4gVGhlIHNvdXJjZSBhbmQgb2JqZWN0IGRpcmVjdG9yaWVzIHRvIGJlIHNlYXJjaGVkIHdpbGwgYmUKICAgLS0gICBjb21tdW5pY2F0ZWQgdG8gdGhlIGJpbmRlciB0aHJvdWdoIGxvZ2ljYWwgbmFtZXMgQURBX1BSSl9JTkNMVURFX0ZJTEUKICAgLS0gICBhbmQgQURBX1BSSl9PQkpFQ1RTX0ZJTEUuCgogICBTX0JpbmRfUmVhZCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFQURfU09VUkNFUz0iICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFMTCAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT05FICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi14ICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQVZBSUxBQkxFICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLXgsIS1zIjsKICAgLS0gICAgICAgIC9SRUFEX1NPVVJDRVNbPShrZXl3b3JkWywuLi5dKV0KICAgLS0gICAgICAgIC9OT1JFQURfU09VUkNFUwogICAtLQogICAtLSAgIFRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmUgYWNjZXB0ZWQ6CiAgIC0tCiAgIC0tICAgICAgQUxMIChEKSAgICAgIFJlcXVpcmUgc291cmNlIGZpbGVzIHRvIGJlIHByZXNlbnQuIEluIHRoaXMgbW9kZSwgdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgIGJpbmRlciBpbnNpc3RzIG9uIGJlaW5nIGFibGUgdG8gbG9jYXRlIGFsbCBzb3VyY2UgZmlsZXMKICAgLS0gICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgcmVmZXJlbmNlZCBhbmQgY2hlY2tzIHRoZWlyIGNvbnNpc3RlbmN5LiAgSW4KICAgLS0gICAgICAgICAgICAgICAgICAgbm9ybWFsIG1vZGUsIGlmIGEgc291cmNlIGZpbGUgY2Fubm90IGJlIGxvY2F0ZWQgaXQgaXMKICAgLS0gICAgICAgICAgICAgICAgICAgc2ltcGx5IGlnbm9yZWQuIElmIHlvdSBzcGVjaWZ5IHRoZSBBTEwga2V5d29yZCwgYQogICAtLSAgICAgICAgICAgICAgICAgICBtaXNzaW5nIHNvdXJjZSBmaWxlIGlzIGFuIGVycm9yLgogICAtLQogICAtLSAgICAgIE5PTkUgICAgICAgICBFeGNsdWRlIHNvdXJjZSBmaWxlcy4gSW4gdGhpcyBtb2RlLCB0aGUgYmluZGVyIG9ubHkKICAgLS0gICAgICAgICAgICAgICAgICAgY2hlY2tzIHRoYXQgQUxJIGZpbGVzIGFyZSBjb25zaXN0ZW50IHdpdGggb25lIGFub3RoZXIuCiAgIC0tICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcyBhcmUgbm90IGFjY2Vzc2VkLiAgVGhlIGJpbmRlciBydW5zIGZhc3RlcgogICAtLSAgICAgICAgICAgICAgICAgICBpbiB0aGlzIG1vZGUsIGFuZCB0aGVyZSBpcyBzdGlsbCBhIGd1YXJhbnRlZSB0aGF0IHRoZQogICAtLSAgICAgICAgICAgICAgICAgICByZXN1bHRpbmcgcHJvZ3JhbSBpcyBzZWxmLWNvbnNpc3RlbnQuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgIElmIGEgc291cmNlIGZpbGUgaGFzIGJlZW4gZWRpdGVkIHNpbmNlIGl0IHdhcyBsYXN0CiAgIC0tICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkIGFuZCB5b3Ugc3BlY2lmeSB0aGUgTk9ORSBrZXl3b3JkLCB0aGUgYmluZGVyCiAgIC0tICAgICAgICAgICAgICAgICAgIHdpbGwgbm90IGRldGVjdCB0aGF0IHRoZSBvYmplY3QgZmlsZSBpcyBvdXQgb2YgZGF0ZQogICAtLSAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBzb3VyY2UgZmlsZS4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgc2FtZSBhcyBzcGVjaWZ5aW5nIC9OT1JFQURfU09VUkNFUy4KICAgLS0KICAgLS0gICAgICBBVkFJTEFCTEUgICAgQ2hlY2sgdGhhdCBvYmplY3QgZmlsZXMgYXJlIGNvbnNpc3RlbnQgd2l0aCBvbmUKICAgLS0gICAgICAgICAgICAgICAgICAgYW5vdGhlciBhbmQgYXJlIGNvbnNpc3RlbnQgd2l0aCBhbnkgc291cmNlIGZpbGVzIHRoYXQKICAgLS0gICAgICAgICAgICAgICAgICAgY2FuIGJlIGxvY2F0ZWQuCgogICBTX0JpbmRfUmVhZFggICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PUkVBRF9TT1VSQ0VTICIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi14IjsKICAgLS0gIE5PRE9DIChzZWUgL1JFQURfU09VUkNFUykKCiAgIFNfQmluZF9SZW5hbWUgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUkVOQU1FX01BSU49PCIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLU0+IjsKICAgLS0gICAgICAgIC9SRU5BTUVfTUFJTj14eHgKICAgLS0KICAgLS0gICBSZW5hbWVzIHRoZSBnZW5lcmF0ZWQgbWFpbiBwcm9ncmFtIGZyb20gbWFpbiB0byB4eHguCiAgIC0tICAgVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2Ugb2Ygc29tZSBjcm9zcy1idWlsZGluZyBlbnZpcm9ubWVudHMsIHdoZXJlCiAgIC0tICAgdGhlIGFjdHVhbCBtYWluIHByb2dyYW0gaXMgc2VwYXJhdGUgZnJvbSB0aGUgb25lIGdlbmVyYXRlZAogICAtLSAgIGJ5IEdOQVQgQklORC4KCiAgIFNfQmluZF9SZXBvcnQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUkVQT1JUX0VSUk9SUz0iICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVkVSQk9TRSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJSSUVGICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWIgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtYiwhLXYiOwogICAtLSAgICAgICAgL1JFUE9SVF9FUlJPUlNbPShrZXl3b3JkWywuLi5dKV0KICAgLS0gICAgICAgICAgIFZFUkJPU0UgKEQpCiAgIC0tICAgICAgICAgICBCUklFRgogICAtLSAgICAgICAgICAgREVGQVVMVAogICAtLSAgICAgICAgL05PUkVQT1JUX0VSUk9SUwogICAtLQogICAtLSAgIFdpdGggdGhlIERFRkFVTFQga2V5d29yZCAod2hpY2ggaXMgbm90IHRoZSBkZWZhdWx0IHdoZW4gdGhlIGJpbmRlciBpcwogICAtLSAgIHJ1biBmcm9tIEdOQVQgQklORCkgb3IgdGhlIC9OT1JFUE9SVF9FUlJPUlMgcXVhbGlmaWVyLCBicmllZiBlcnJvcgogICAtLSAgIG1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgdG8gU1lTJEVSUk9SLiAgSWYgdGhlIFZFUkJPU0Uga2V5d29yZCBpcwogICAtLSAgIHByZXNlbnQsIGEgaGVhZGVyIGlzIHdyaXR0ZW4gdG8gU1lTJE9VVFBVVCBhbmQgYW55IGVycm9yIG1lc3NhZ2VzIGFyZQogICAtLSAgIGRpcmVjdGVkIHRvIFNZUyRPVVRQVVQgIEFsbCB0aGF0IGlzIHdyaXR0ZW4gdG8gU1lTJEVSUk9SIGlzIGEgYnJpZWYKICAgLS0gICBzdW1tYXJ5IG1lc3NhZ2UuCiAgIC0tCiAgIC0tICAgSWYgdGhlIEJSSUVGIGtleXdvcmQgaXMgc3BlY2lmaWVkLCB0aGUgYmluZGVyIHdpbGwgZ2VuZXJhdGUgYnJpZWYgZXJyb3IKICAgLS0gICBtZXNzYWdlcyB0byBTWVMkRVJST1IgZXZlbiBpZiB2ZXJib3NlIG1vZGUgaXMgc3BlY2lmaWVkLiBUaGlzIGlzCiAgIC0tICAgcmVsZXZhbnQgb25seSB3aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgVkVSQk9TRSBrZXl3b3JkIG9yIC9WRVJCT1NFCiAgIC0tICAgcXVhbGlmaWVyLgoKICAgU19CaW5kX1JlcG9ydFggOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1JFUE9SVF9FUlJPUlMgIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLWIsIS12IjsKICAgLS0gIE5PRE9DIChzZWUgL1JFUE9SVF9FUlJPUlMpCgogICBTX0JpbmRfUmVzdHIgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFU1RSSUNUSU9OX0xJU1QgIiAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1yIjsKICAgLS0gICAgICAgIC9OT1JFU1RSSUNUSU9OX0xJU1QgKEQpCiAgIC0tICAgICAgICAvUkVTVFJJQ1RJT05fTElTVAogICAtLQogICAtLSAgIEdlbmVyYXRlIGxpc3Qgb2YgcHJhZ21hIFJlcnN0cmljdGlvbnMgdGhhdCBjb3VsZCBiZSBhcHBsaWVkIHRvIHRoZQogICAtLSAgIGN1cnJlbnQgdW5pdC4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvZGUgYXVkaXQgcHVycG9zZXMsIGFuZCBhbHNvIG1heSBiZQogICAtLSAgIHVzZWQgdG8gaW1wcm92ZSBjb2RlIGdlbmVyYXRpb24gaW4gc29tZSBjYXNlcy4KCiAgIFNfQmluZF9SZXR1cm4gIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUkVUVVJOX0NPREVTPSIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUE9TSVggIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLVgxICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZNUyAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVgxIjsKICAgLS0gICAgICAgIC9SRVRVUk5fQ09ERVM9UE9TSVggKEQpCiAgIC0tICAgICAgICAvUkVUVVJOX0NPREVTPVZNUwogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgc3R5bGUgb2YgZGVmYXVsdCBleGl0IGNvZGUgcmV0dXJuZWQuIE11c3QgYmUgdXNlZCBpbgogICAtLSAgIGNvbmp1bmN0aW9uIHdpdGggYW5kIG1hdGNoIHRoZSBMaW5rIHF1YWxpZmVyIHdpdGggc2FtZSBuYW1lLgogICAtLQogICAtLSAgICAgICAgUE9TSVggKEQpICAgUmV0dXJuIFBvc2l4IHN1Y2Nlc3MgKDApIGJ5IGRlZmF1bHQuCiAgIC0tCiAgIC0tICAgICAgICBWTVMgICAgICAgICBSZXR1cm4gVk1TIHN1Y2Nlc3MgKDEpIGJ5IGRlZmF1bHQuCgogICBTX0JpbmRfUlRTICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JVTlRJTUVfU1lTVEVNPXwiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tUlRTPXwiOwogICAtLSAgICAgIC9SVU5USU1FX1NZU1RFTT14eHgKICAgLS0KICAgLS0gICAgQmluZHMgYWdhaW5zdCBhbiBhbHRlcm5hdGUgcnVudGltZSBzeXN0ZW0gbmFtZWQgeHh4IG9yIFJUUy14eHguCgogICBTX0JpbmRfU2VhcmNoICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NFQVJDSD0qIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JKiI7CiAgIC0tICAgICAgICAvU0VBUkNIPShkaXJlY3RvcnlbLC4uLl0pCiAgIC0tCiAgIC0tICAgV2hlbiBsb29raW5nIGZvciBzb3VyY2Ugb3Igb2JqZWN0IGZpbGVzIGFsc28gbG9vayBpbiBkaXJlY3RvcmllcwogICAtLSAgIHNwZWNpZmllZC4KICAgLS0KICAgLS0gICBUaGlzIGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcgYm90aCAvTElCUkFSWV9TRUFSQ0ggYW5kIC9TT1VSQ0VfU0VBUkNICiAgIC0tICAgZm9yIGEgZGlyZWN0b3J5LgoKICAgU19CaW5kX1NoYXJlZCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TSEFSRUQgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItc2hhcmVkLCEtc3RhdGljIjsKICAgLS0gICAgICAgIC9TSEFSRUQKICAgLS0gICAgICAgIC9OT1NIQVJFRAogICAtLQogICAtLSAgICBMaW5rIGFnYWluc3QgYSBzaGFyZWQgR05BVCBydW4gdGltZSB3aGVuIGF2YWlsYWJsZS4KCiAgIFNfQmluZF9TbGljZSAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVElNRV9TTElDRT0jIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVQjIjsKICAgLS0gICAgICAgIC9USU1FX1NMSUNFPW5ubgogICAtLQogICAtLSAgIFNldCB0aGUgdGltZSBzbGljZSB2YWx1ZSB0byBubm4gbWlsbGlzZWNvbmRzLiBBIHZhbHVlIG9mIHplcm8gbWVhbnMgbm8KICAgLS0gICB0aW1lIHNsaWNpbmcgYW5kIGFsc28gaW5kaWNhdGVzIHRvIHRoZSB0YXNraW5nIHJ1biB0aW1lIHRvIG1hdGNoIGFzCiAgIC0tICAgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIGFubmV4IEQgcmVxdWlyZW1lbnRzIG9mIHRoZSBSTS4KCiAgIFNfQmluZF9Tb3VyY2UgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU09VUkNFX1NFQVJDSD0qIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFJKiI7CiAgIC0tICAgICAgICAvU09VUkNFX1NFQVJDSD0oZGlyZWN0b3J5WywuLi5dKQogICAtLQogICAtLSAgICBXaGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcyBhbHNvIGxvb2sgaW4gZGlyZWN0b3JpZXMgc3BlY2lmaWVkLgoKICAgU19CaW5kX1N0YXRpYyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TVEFUSUMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItc3RhdGljLCEtc2hhcmVkIjsKICAgLS0gICAgICAgIC9TVEFUSUMKICAgLS0gICAgICAgIC9OT1NUQVRJQwogICAtLQogICAtLSAgICBMaW5rIGFnYWluc3QgYSBzdGF0aWMgR05BVCBydW4gdGltZS4KCiAgIFNfQmluZF9TdG9yZSAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU1RPUkVfVFJBQ0VCQUNLUyAiICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUUiOwogICAtLSAgICAgICAgL1NUT1JFX1RSQUNFQkFDS1MgKEQpCiAgIC0tICAgICAgICAvTk9TVE9SRV9UUkFDRUJBQ0tTCiAgIC0tCiAgIC0tICAgU3RvcmUgdHJhY2ViYWNrcyBpbiBleGNlcHRpb24gb2NjdXJyZW5jZXMuCiAgIC0tICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBvbiBWTVMsIHdpdGggdGhlIHplcm8tY29zdCBleGNlcHRpb24gbWVjaGFuaXNtLgogICAtLSAgIFRoaXMgcXVhbGlmaWVyIGhhcyBubyBpbXBhY3QsIGV4Y2VwdCB3aGVuIHVzaW5nIHRoZSBzZXRqbXAvbG9uZ2ptcAogICAtLSAgIGV4Y2VwdGlvbiBtZWNoYW5pc20sIHdpdGggdGhlIEdOQVQgQ09NUElMRSBxdWFsaWZpZXIgL0xPTkdKTVBfU0VUSk1QLgoKICAgU19CaW5kX1RpbWUgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9USU1FX1NUQU1QX0NIRUNLICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLXQiOwogICAtLSAgICAgIC9USU1FX1NUQU1QX0NIRUNLIChEKQogICAtLQogICAtLSAgIFRpbWUgc3RhbXAgZXJyb3JzIHdpbGwgYmUgdHJlYXRlZCBhcyBlcnJvcnMuCiAgIC0tCiAgIC0tICAgICAgL05PVElNRV9TVEFNUF9DSEVDSwogICAtLQogICAtLSAgIElnbm9yZSB0aW1lIHN0YW1wIGVycm9ycy4gQW55IHRpbWUgc3RhbXAgZXJyb3IgbWVzc2FnZXMgYXJlIHRyZWF0ZWQgYXMKICAgLS0gICB3YXJuaW5nIG1lc3NhZ2VzLiBUaGlzIHN3aXRjaCBlc3NlbnRpYWxseSBkaXNjb25uZWN0cyB0aGUgbm9ybWFsCiAgIC0tICAgY29uc2lzdGVuY3kgY2hlY2tpbmcsIGFuZCB0aGUgcmVzdWx0aW5nIHByb2dyYW0gbWF5IGhhdmUgdW5kZWZpbmVkCiAgIC0tICAgc2VtYW50aWNzIGlmIGluY29uc2lzdGVudCB1bml0cyBhcmUgcHJlc2VudC4KICAgLS0KICAgLS0gICBUaGlzIG1lYW5zIHRoYXQgL05PVElNRV9TVEFNUF9DSEVDSyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHVudXN1YWwKICAgLS0gICBzaXR1YXRpb25zLCB3aXRoIGV4dHJlbWUgY2FyZS4KCiAgIFNfQmluZF9WZXJib3NlIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVkVSQk9TRSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXYiOwogICAtLSAgICAgICAgL1ZFUkJPU0UgKEQpCiAgIC0tICAgICAgICAvTk9WRVJCT1NFCiAgIC0tCiAgIC0tICAgRXF1aXZhbGVudCB0byAvUkVQT1JUX0VSUk9SUz1WRVJCT1NFLgoKICAgU19CaW5kX1dhcm4gICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9XQVJOSU5HUz0iICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1JNQUwgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtd3MsIS13ZSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1VQUFJFU1MgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItd3MgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVSUk9SICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXdlIjsKICAgLS0gICAgICAvV0FSTklOR1NbPShrZXl3b3JkWywuLi5dKV0KICAgLS0gICAgICAvTk9XQVJOSU5HUwogICAtLQogICAtLSAgIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgYXJlIHN1cHBvcnRlZDoKICAgLS0KICAgLS0gICAgICAgIE5PUk1BTCAoRCkgICAgUHJpbnQgd2FybmluZyBtZXNzYWdlcyBhbmQgdHJlYXQgdGhlbSBhcyB3YXJuaW5nLgogICAtLSAgICAgICAgU1VQUFJFU1MgICAgICBTdXBwcmVzcyBhbGwgd2FybmluZyBtZXNzYWdlcyAoc2FtZSBhcyAvTk9XQVJOSU5HUykuCiAgIC0tICAgICAgICBFUlJPUiAgICAgICAgIFRyZWF0IGFueSB3YXJuaW5nIG1lc3NhZ2VzIGFzIGZhdGFsIGVycm9ycwoKICAgU19CaW5kX1dhcm5YICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1dBUk5JTkdTICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItd3MiOwogICAtLSAgTk9ET0MgKHNlZSAvV0FSTklOR1MpCgogICBTX0JpbmRfWmVybyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1pFUk9fTUFJTiAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi16IjsKICAgLS0gICAgICAgIC9OT1pFUk9fTUFJTiAoRCkKICAgLS0gICAgICAgIC9aRVJPX01BSU4KICAgLS0KICAgLS0gICBOb3JtYWxseSB0aGUgYmluZGVyIGNoZWNrcyB0aGF0IHRoZSB1bml0IG5hbWUgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZQogICAtLSAgIGNvcnJlc3BvbmRzIHRvIGEgc3VpdGFibGUgbWFpbiBzdWJwcm9ncmFtLiBXaGVuIC9aRVJPX01BSU4gaXMgdXNlZCwKICAgLS0gICBhIGxpc3Qgb2YgQUxJIGZpbGVzIGNhbiBiZSBnaXZlbiwgYW5kIHRoZSBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0KICAgLS0gICBjb25zaXN0cyBvZiBlbGFib3JhdGlvbiBvZiB0aGVzZSB1bml0cyBpbiBhbiBhcHByb3ByaWF0ZSBvcmRlci4KCiAgIEJpbmRfU3dpdGNoZXMgOiBhbGlhc2VkIGNvbnN0YW50IFN3aXRjaGVzIDo9CiAgICAgKFNfQmluZF9CaW5kICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9CdWlsZCAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9DdXJyZW50ICdBY2Nlc3MsCiAgICAgIFNfQmluZF9EZWJ1ZyAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9EZWJ1Z1ggICdBY2Nlc3MsCiAgICAgIFNfQmluZF9FbGFiICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9FcnJvciAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9FeHQgICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Gb3JjZSAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9IZWxwICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Jbml0ICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9MaWJyYXJ5ICdBY2Nlc3MsCiAgICAgIFNfQmluZF9MaW5rZXIgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9NYWluICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9NZXNzICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Ob3N0aW5jICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Ob3N0bGliICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Ob19UaW1lICdBY2Nlc3MsCiAgICAgIFNfQmluZF9PYmplY3QgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9PcmRlciAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9PdXRwdXQgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9PdXRwdXRYICdBY2Nlc3MsCiAgICAgIFNfQmluZF9QZXNzICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Qcm9qZWN0ICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZWFkICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZWFkWCAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZW5hbWUgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZXBvcnQgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZXBvcnRYICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZXN0ciAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SZXR1cm4gICdBY2Nlc3MsCiAgICAgIFNfQmluZF9SVFMgICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9TZWFyY2ggICdBY2Nlc3MsCiAgICAgIFNfQmluZF9TaGFyZWQgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9TbGljZSAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9Tb3VyY2UgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9TdGF0aWMgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9TdG9yZSAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9UaW1lICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9WZXJib3NlICdBY2Nlc3MsCiAgICAgIFNfQmluZF9XYXJuICAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9XYXJuWCAgICdBY2Nlc3MsCiAgICAgIFNfQmluZF9aZXJvICAgICdBY2Nlc3MpOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgQ0hFQ0sgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIFNfQ2hlY2tfQWxsICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQUxMICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYSI7CiAgIC0tICAgICAgICAvTk9BTEwgKEQpCiAgIC0tICAgICAgICAvQUxMCiAgIC0tCiAgIC0tICAgQWxzbyBjaGVjayB0aGUgY29tcG9uZW50cyBvZiB0aGUgR05BVCBydW4gdGltZSBhbmQgcHJvY2VzcyB0aGUgbmVlZGVkCiAgIC0tICBjb21wb25lbnRzIG9mIHRoZSBHTkFUIFJUTCB3aGVuIGJ1aWxkaW5nIGFuZCBhbmFseXppbmcgdGhlIGdsb2JhbAogICAtLSAgc3RydWN0dXJlIGZvciBjaGVja2luZyB0aGUgZ2xvYmFsIHJ1bGVzLgoKICAgU19DaGVja19FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItWCIgJiAnIic7CiAgIC0tICAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9Im5hbWU9dmFsIgogICAtLQogICAtLSAgIFNwZWNpZmllcyBhbiBleHRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHByb2plY3QgbWFuYWdlci4gVXNlZnVsIG9ubHkgaWYKICAgLS0gICAvUFJPSkVDVF9GSUxFIGlzIHVzZWQuCiAgIC0tCiAgIC0tICAgRXhhbXBsZToKICAgLS0gICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJERUJVRz1UUlVFIgoKICAgU19DaGVja19GaWxlcyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9GSUxFUz1AIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZmlsZXM9QCI7CiAgIC0tICAgICAgL0ZJTEVTPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgVGFrZSBhcyBhcmd1bWVudHMgdGhlIGZpbGVzIHRoYXQgYXJlIGxpc3RlZCBpbiB0aGUgc3BlY2lmaWVkCiAgIC0tICAgdGV4dCBmaWxlLgoKICAgU19DaGVja19IZWxwICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9IRUxQICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1oIjsKICAgLS0gICAgICAgIC9OT0hFTFAgKEQpCiAgIC0tICAgICAgICAvSEVMUAogICAtLQogICAtLSAgIFByaW50IGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRseSBpbXBsZW1lbnRlZCBjaGVja3MuCgogICBTX0NoZWNrX0xvY3MgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0xPQ1MgIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWwiOwogICAtLSAgICAgICAgL05PTE9DUyAoRCkKICAgLS0gICAgICAgIC9MT0NTCiAgIC0tCiAgIC0tICAgVXNlIGZ1bGwgc291cmNlIGxvY2F0aW9ucyByZWZlcmViY2VzIGluIHRoZSByZXBvcnQgZmlsZS4KCiAgIFNfQ2hlY2tfTWVzcyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01FU1NBR0VTX1BST0pFQ1RfRklMRT0iICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDAgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRURJVU0gIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhJR0ggIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAyIjsKICAgLS0gICAgICAgIC9NRVNTQUdFU19QUk9KRUNUX0ZJTEVbPW1lc3NhZ2VzLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlICJ2ZXJib3NpdHkiIG9mIHRoZSBwYXJzaW5nIG9mIHByb2plY3QgZmlsZXMuCiAgIC0tICAgbWVzc2FnZXMtb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgICBERUZBVUxUIChEKSAgTm8gbWVzc2FnZXMgYXJlIG91dHB1dCBpZiB0aGVyZSBpcyBubyBlcnJvciBvciB3YXJuaW5nLgogICAtLQogICAtLSAgICAgIE1FRElVTSAgICAgICBBIHNtYWxsIG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LgogICAtLQogICAtLSAgICAgIEhJR0ggICAgICAgICBBIGdyZWF0IG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LCBtb3N0IG9mIHRoZW0gbm90CiAgIC0tICAgICAgICAgICAgICAgICAgIGJlaW5nIHVzZWZ1bCBmb3IgdGhlIHVzZXIuCgogICBTX0NoZWNrX1Byb2plY3QgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtYWluIHByb2plY3QgZmlsZSB0byBiZSB1c2VkLiBUaGUgcHJvamVjdCBmaWxlcyByb290ZWQKICAgLS0gICBhdCB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgd2lsbCBiZSBwYXJzZWQgYmVmb3JlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQogICAtLSAgIGduYXRjaGVjay4gVGhlIHNvdXJjZSBkaXJlY3RvcmllcyB0byBiZSBzZWFyY2hlZCB3aWxsIGJlIGNvbW11bmljYXRlZAogICAtLSAgIHRvIGduYXRjaGVjayB0aHJvdWdoIGxvZ2ljYWwgbmFtZSBBREFfUFJKX0lOQ0xVREVfRklMRS4KCiAgIFNfQ2hlY2tfUXVpZXQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUVVJRVQgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcSI7CiAgIC0tICAgICAgICAvTk9RVUlFVCAoRCkKICAgLS0gICAgICAgIC9RVUlFVAogICAtLQogICAtLSAgIFdvcmsgcXVpZXRseSwgb25seSBvdXRwdXQgd2FybmluZ3MgYW5kIGVycm9ycy4KCiAgIFNfQ2hlY2tfU2VjdGlvbnMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TRUNUSU9OUz0gIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMxMjMgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNPTVBJTEVSX1NUWUxFICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItczEgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQllfUlVMRVMgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1zMiAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCWV9GSUxFU19CWV9SVUxFUyAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMzICI7CiAgIC0tICAgICAgICAvU0VDVElPTlNbPXNlY3Rpb24tb3B0aW9uLCBzZWN0aW9uLW9wdGlvbiwgLi4uXQogICAtLQogICAtLSAgIFNwZWNpZnkgd2hhdCBzZWN0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQgaW50byB0aGUgcmVwb3J0IGZpbGUuCiAgIC0tICAgQnkgZGVmYXVsdCwgYWxsIHRocmVlIHNlY3Rpb24gKGRpYWduaXNlcyBpbiB0aGUgZm9ybWF0IGNvcnJlY3BvbmRpbmcKICAgLS0gICB0byBjb21waWxlciBlcnJvciBhbmQgd2FybmluZyBtZXNzYWdlcywgZGlhZ25vc2VzIGdyb3VwZWQgYnkgcnVsZXMgYW5kCiAgIC0tICAgdGhlbiAtIGJ5IGZpbGVzLCBkaWFnbm9zZXMgZ3JvdXBlZCBieSBmaWxlcyBhbmQgdGhlbiAtIGJ5IHJ1bGVzKSBhcmUKICAgLS0gICBpbmNsdWRlZCBpbiB0aGUgcmVwb3J0IGZpbGUuCiAgIC0tCiAgIC0tICAgc2VjdGlvbi1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIENPTVBJTEVSX1NUWUxFICAgICAgSW5jbHVkZSBkaWFnbm9zZXMgaW4gY29tcGlsZS1zdHlsZSBmb3JtYXQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFnb3NlcyBhcmUgZ3JvdXBlZCBieSBmaWxlcywgZm9yIGVhY2ggZmlsZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSBhcmUgb3JkZXJlZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW5jZXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIHNvdXJjZSkKICAgLS0gICAgICBCWV9SVUxFUyAgICAgICAgICAgIEluY2x1ZGUgZGlhZ25vc2VzIGdyb3VwZWQgZmlyc3QgYnkgcnVsZXMgYW5kCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGJ5IGZpbGVzCiAgIC0tICAgICAgQllfRklMRVNfQllfUlVMRVMgICBJbmNsdWRlIGRpYWdub3NlcyBncm91cGVkIGZpcnN0IGJ5IGZpbGVzIGFuZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBieSBydWxlcwogICAtLQogICAtLSAgIElmIG9uZSBvZiB0aGVzZSBvcHRpb25zIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgcmVwb3J0IGZpbGUgY29udGFpbnMKICAgLS0gICBvbmx5IHNlY3Rpb25zIHNldCBieSB0aGVzZSBvcHRpb25zCgogICBTX0NoZWNrX1Nob3J0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NIT1JUICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMiOwogICAtLSAgICAgICAgL05PU0hPUlQgKEQpCiAgIC0tICAgICAgICAvU0hPUlQKICAgLS0KICAgLS0gICBHZW5lcmF0ZSBhIHNob3J0IGZvcm0gb2YgdGhlIHJlcG9ydCBmaWxlLgoKICAgU19DaGVja19WZXJiICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12IjsKICAgLS0gICAgICAgIC9OT1ZFUkJPU0UgKEQpCiAgIC0tICAgICAgICAvVkVSQk9TRQogICAtLQogICAtLSAgIFRoZSB2ZXJzaW9uIG51bWJlciBhbmQgY29weXJpZ2h0IG5vdGljZSBhcmUgb3V0cHV0LCBhcyB3ZWxsIGFzIGV4YWN0CiAgIC0tICAgY29waWVzIG9mIHRoZSBnbmF0MSBjb21tYW5kcyBzcGF3bmVkIHRvIG9idGFpbiB0aGUgY2hvcCBjb250cm9sCiAgIC0tICAgaW5mb3JtYXRpb24uCgogICBDaGVja19Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAgICAgICAgICAgICAgICAgIChTX0NoZWNrX0FsbCAgICAgICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgU19DaGVja19FeHQgICAgICAnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgIFNfQ2hlY2tfRmlsZXMgICAgJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICBTX0NoZWNrX0hlbHAgICAgICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgU19DaGVja19Mb2NzICAgICAnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgIFNfQ2hlY2tfTWVzcyAgICAgJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICBTX0NoZWNrX1Byb2plY3QgICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgU19DaGVja19RdWlldCAgICAnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgIFNfQ2hlY2tfU2VjdGlvbnMgJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICBTX0NoZWNrX1Nob3J0ICAgICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgU19DaGVja19WZXJiICAgICAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgQ0hPUCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX0Nob3BfQ29tcCAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09NUElMQVRJT04gIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIjsKICAgLS0gICAgICAgIC9OT0NPTVBJTEFUSU9OIChEKQogICAtLSAgICAgICAgL0NPTVBJTEFUSU9OCiAgIC0tCiAgIC0tICAgQ29tcGlsYXRpb24gbW9kZSwgaGFuZGxlIGNvbmZpZ3VyYXRpb24gcHJhZ21hcyBzdHJpY3RseSBhY2NvcmRpbmcgdG8KICAgLS0gICBSTSBydWxlcy4KCiAgIFNfQ2hvcF9GaWxlICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9GSUxFX05BTUVfTUFYX0xFTkdUSD0jIiAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWsjIjsKICAgLS0gICAgICAgIC9GSUxFX05BTUVfTUFYX0xFTkdUSFs9bm5uXQogICAtLQogICAtLSAgIExpbWl0IGdlbmVyYXRlZCBmaWxlIG5hbWVzIHRvIE5OTiAoZGVmYXVsdCBvZiA4KSBjaGFyYWN0ZXJzLiBUaGlzIGlzCiAgIC0tICAgdXNlZnVsIGlmIHRoZSByZXN1bHRpbmcgc2V0IG9mIGZpbGVzIGlzIHJlcXVpcmVkIHRvIGJlIGludGVyb3BlcmFibGUKICAgLS0gICB3aXRoIHN5c3RlbXMgbGlrZSBNUy1ET1Mgd2hpY2ggbGltaXQgdGhlIGxlbmd0aCBvZiBmaWxlIG5hbWVzLgoKICAgU19DaG9wX0hlbHAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0hFTFAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItaCI7CiAgIC0tICAgICAgICAvTk9IRUxQIChEKQogICAtLSAgICAgICAgL0hFTFAKICAgLS0KICAgLS0gICBQcmludCB1c2FnZSBpbmZvcm1hdGlvbi4KCiAgIFNfQ2hvcF9PdmVyICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9PVkVSV1JJVEUgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXciOwogICAtLSAgICAgICAgL05PT1ZFUldSSVRFIChEKQogICAtLSAgICAgICAgL09WRVJXUklURQogICAtLQogICAtLSAgIE92ZXJ3cml0ZSBleGlzdGluZyBmaWxlIG5hbWVzLiBOb3JtYWxseSBHTkFUIENIT1AgcmVnYXJkcyBpdCBhcyBhCiAgIC0tICAgZmF0YWwgZXJyb3Igc2l0dWF0aW9uIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhcwogICAtLSAgIGEgZmlsZSBpdCB3b3VsZCBvdGhlcndpc2Ugb3V0cHV0LiBUaGUgL09WRVJXUklURSBxdWFsaWZpZXIgYnlwYXNzZXMKICAgLS0gICB0aGlzIGNoZWNrLCBhbmQgYW55IHN1Y2ggZXhpc3RpbmcgZmlsZXMgd2lsbCBiZSBzaWxlbnRseSBvdmVyd3JpdHRlbi4KCiAgIFNfQ2hvcF9QcmVzICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUkVTRVJWRSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXAiOwogICAtLSAgICAgICAgL05PUFJFU0VSVkUgKEQpCiAgIC0tICAgICAgICAvUFJFU0VSVkUKICAgLS0KICAgLS0gICBDYXVzZXMgdGhlIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgc3RhbXAgb2YgdGhlIGlucHV0IGZpbGUgdG8gYmUKICAgLS0gICBwcmVzZXJ2ZWQgYW5kIHVzZWQgZm9yIHRoZSB0aW1lIHN0YW1wIG9mIHRoZSBvdXRwdXQgZmlsZShzKS4gVGhpcyBtYXkKICAgLS0gICBiZSB1c2VmdWwgZm9yIHByZXNlcnZpbmcgY29oZXJlbmN5IG9mIHRpbWUgc3RhbXBzIGluIGFuIGVudmlyb21lbnQKICAgLS0gICB3aGVyZSBnbmF0Y2hvcCBpcyB1c2VkIGFzIHBhcnQgb2YgYSBzdGFuZGFyZCBidWlsZCBwcm9jZXNzLgoKICAgU19DaG9wX1F1aWV0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1FVSUVUICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcSI7CiAgIC0tICAgICAgICAvTk9RVUlFVCAoRCkKICAgLS0gICAgICAgIC9RVUlFVAogICAtLQogICAtLSAgIFdvcmsgcXVpZXRseSwgb25seSBvdXRwdXQgd2FybmluZ3MgYW5kIGVycm9ycy4KCiAgIFNfQ2hvcF9SZWYgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9SRUZFUkVOQ0UgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXIiOwogICAtLSAgICAgICAgL05PUkVGRVJFTkNFIChEKQogICAtLSAgICAgICAgL1JFRkVSRU5DRQogICAtLQogICAtLSAgIEdlbmVyYXRlICJTb3VyY2VfUmVmZXJlbmNlIiBwcmFnbWFzLiBVc2UgdGhpcyBxdWFsaWZpZXIgaWYgdGhlIG91dHB1dAogICAtLSAgIGZpbGVzIGFyZSByZWdhcmRlZCBhcyB0ZW1wb3JhcnkgYW5kIGRldmVsb3BtZW50IGlzIHRvIGJlIGRvbmUgaW4gdGVybXMKICAgLS0gICBvZiB0aGUgb3JpZ2luYWwgdW5jaG9wcGVkIGZpbGUuIFRoZSAvUkVGRVJFTkNFIHF1YWxpZmllciBjYXVzZXMKICAgLS0gICAiU291cmNlX1JlZmVyZW5jZSIgcHJhZ21hcyB0byBiZSBpbnNlcnRlZCBpbnRvIGVhY2ggb2YgdGhlIGdlbmVyYXRlZAogICAtLSAgIGZpbGVzIHRvIHJlZmVycyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyLiAgVGhlCiAgIC0tICAgcmVzdWx0IGlzIHRoYXQgYWxsIGVycm9yIG1lc3NhZ2VzIHJlZmVyIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHVuY2hvcHBlZAogICAtLSAgIGZpbGUuCiAgIC0tCiAgIC0tICAgSW4gYWRkaXRpb24sIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gcGxhY2VkIGludG8gdGhlIG9iamVjdCBmaWxlCiAgIC0tICAgKHdoZW4gdGhlIC9ERUJVRyBxdWFsaWZpZXIgb2YgR05BVCBDT01QSUxFIG9yIEdOQVQgTUFLRSBpcyBzcGVjaWZpZWQpCiAgIC0tICAgYWxzbyByZWZlcnMgYmFjayB0byB0aGlzIG9yaWdpbmFsIGZpbGUgc28gdGhhdCB0b29scyBsaWtlIHByb2ZpbGVycwogICAtLSAgIGFuZCBkZWJ1Z2dlcnMgd2lsbCBnaXZlIGluZm9ybWF0aW9uIGluIHRlcm1zIG9mIHRoZSBvcmlnaW5hbCB1bmNob3BwZWQKICAgLS0gICBmaWxlLgoKICAgU19DaG9wX1ZlcmIgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1ZFUkJPU0UgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiI7CiAgIC0tICAgICAgICAvTk9WRVJCT1NFIChEKQogICAtLSAgICAgICAgL1ZFUkJPU0UKICAgLS0KICAgLS0gICBUaGUgdmVyc2lvbiBudW1iZXIgYW5kIGNvcHlyaWdodCBub3RpY2UgYXJlIG91dHB1dCwgYXMgd2VsbCBhcyBleGFjdAogICAtLSAgIGNvcGllcyBvZiB0aGUgZ25hdDEgY29tbWFuZHMgc3Bhd25lZCB0byBvYnRhaW4gdGhlIGNob3AgY29udHJvbAogICAtLSAgIGluZm9ybWF0aW9uLgoKICAgQ2hvcF9Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19DaG9wX0NvbXAgICAnQWNjZXNzLAogICAgICBTX0Nob3BfRmlsZSAgICdBY2Nlc3MsCiAgICAgIFNfQ2hvcF9IZWxwICAgJ0FjY2VzcywKICAgICAgU19DaG9wX092ZXIgICAnQWNjZXNzLAogICAgICBTX0Nob3BfUHJlcyAgICdBY2Nlc3MsCiAgICAgIFNfQ2hvcF9RdWlldCAgJ0FjY2VzcywKICAgICAgU19DaG9wX1JlZiAgICAnQWNjZXNzLAogICAgICBTX0Nob3BfVmVyYiAgICdBY2Nlc3MpOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgQ0xFQU4gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIFNfQ2xlYW5fQ29tcGlsICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NPTVBJTEVSX0ZJTEVTX09OTFkgIiAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIjsKICAgLS0gICAgICAgIC9OT0NPTVBJTEVSX0ZJTEVTX09OTFkgKEQpCiAgIC0tICAgICAgICAvQ09NUElMRVJfRklMRVNfT05MWQogICAtLQogICAtLSAgIE9ubHkgYXR0ZW1wdCB0byBkZWxldGUgdGhlIGZpbGVzIHByb2R1Y2VkIGJ5IHRoZSBjb21waWxlciwgbm90IHRob3NlCiAgIC0tICAgcHJvZHVjZWQgYnkgdGhlIGJpbmRlciBvciB0aGUgbGlua2VyLiBUaGUgZmlsZXMgdGhhdCBhcmUgbm90IHRvIGJlCiAgIC0tICAgZGVsZXRlZCBhcmUgbGlicmFyeSBmaWxlcywgaW50ZXJmYWNlIGNvcHkgZmlsZXMsIGJpbmRlciBnZW5lcmF0ZWQgZmlsZXMKICAgLS0gICBhbmQgZXhlY3V0YWJsZSBmaWxlcy4KCiAgIFNfQ2xlYW5fQ3VycmVudCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NVUlJFTlRfRElSRUNUT1JZICIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1JLSI7CiAgIC0tICAgICAgICAvQ1VSUkVOVF9ESVJFQ1RPUlkgKEQpCiAgIC0tCiAgIC0tICAgTG9vayBmb3IgQUxJIG9yIG9iamVjdCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIEdOQVQgQ0xFQU4gd2FzCiAgIC0tICAgaW52b2tlZC4KICAgLS0KICAgLS0gICAgICAgIC9OT0NVUlJFTlRfRElSRUNUT1JZCiAgIC0tCiAgIC0tICAgRG8gbm90IGxvb2sgZm9yIEFMSSBvciBvYmplY3QgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSBHTkFUIENMRUFOCiAgIC0tICAgd2FzIGludm9rZWQuCgogICBTX0NsZWFuX0RlbGV0ZSAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9ERUxFVEUgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtbiI7CiAgIC0tICAgICAgICAvREVMRVRFIChEKQogICAtLQogICAtLSAgIERlbGV0ZSB0aGUgZmlsZXMgdGhhdCBhcmUgbm90IHJlYWQtb25seS4KICAgLS0KICAgLS0gICAgICAgIC9OT0RFTEVURQogICAtLQogICAtLSAgIEluZm9ybWF0aXZlLW9ubHkgbW9kZS4gRG8gbm90IGRlbGV0ZSBhbnkgZmlsZXMuIE91dHB1dCB0aGUgbGlzdCBvZiB0aGUKICAgLS0gICBmaWxlcyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGlmIHRoaXMgc3dpdGNoIHdhcyBub3Qgc3BlY2lmaWVkLgoKICAgU19DbGVhbl9EaXJvYmogIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRElSRUNUT1JZX09CSkVDVFM9QCIgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItREAiOwogICAtLSAgICAgICAgL0RJUkVDVE9SWV9PQkpFQ1RTPTxmaWxlPgogICAtLQogICAtLSAgIEZpbmQgdGhlIG9iamVjdCBmaWxlcyBhbmQgLkFMSSBmaWxlcyBpbiA8ZmlsZT4uCiAgIC0tICAgVGhpcyBxdWFsaWZpZXIgaXMgbm90IGNvbXBhdGlibGUgd2l0aCAvUFJPSkVDVF9GSUxFLgoKICAgU19DbGVhbl9FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItWCIgJiAnIic7CiAgIC0tICAgICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJuYW1lPXZhbCIKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgYW4gZXh0ZXJuYWwgcmVmZXJlbmNlIHRvIHRoZSBwcm9qZWN0IG1hbmFnZXIuIFVzZWZ1bCBvbmx5IGlmCiAgIC0tICAgL1BST0pFQ1RfRklMRSBpcyB1c2VkLgogICAtLQogICAtLSAgIEV4YW1wbGU6CiAgIC0tICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0iREVCVUc9VFJVRSIKCiAgIFNfQ2xlYW5fRnVsbCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZVTExfUEFUSF9JTl9CUklFRl9NRVNTQUdFUyAiICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUYiOwogICAtLSAgICAgICAgL05PRlVMTF9QQVRIX0lOX0JSSUVGX01FU1NBR0VTIChEKQogICAtLSAgICAgICAgL0ZVTExfUEFUSF9JTl9CUklFRl9NRVNTQUdFUwogICAtLQogICAtLSAgIFdoZW4gdXNpbmcgcHJvamVjdCBmaWxlcywgaWYgc29tZSBlcnJvcnMgb3Igd2FybmluZ3MgYXJlIGRldGVjdGVkCiAgIC0tICAgZHVyaW5nIHBhcnNpbmcgYW5kIHZlcmJvc2UgbW9kZSBpcyBub3QgaW4gZWZmZWN0IChubyB1c2Ugb2YgcXVhbGlmaWVyCiAgIC0tICAgL1ZFUkJPU0UpLCB0aGVuIGVycm9yIGxpbmVzIHN0YXJ0IHdpdGggdGhlIGZ1bGwgcGF0aCBuYW1lIG9mIHRoZQogICAtLSAgIHByb2plY3QgZmlsZSwgcmF0aGVyIHRoYW4gaXRzIHNpbXBsZSBmaWxlIG5hbWUuCgogICBTX0NsZWFuX0hlbHAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9IRUxQICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1oIjsKICAgLS0gICAgICAgIC9OT0hFTFAgKEQpCiAgIC0tICAgICAgICAvSEVMUAogICAtLQogICAtLSAgIE91dHB1dCBhIG1lc3NhZ2UgZXhwbGFpbmluZyB0aGUgdXNhZ2Ugb2YgZ25hdGNsZWFuLgoKICAgU19DbGVhbl9JbmRleCAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU09VUkNFX0lOREVYPSMiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWkjIjsKICAgLS0gICAgICAgIC9TT1VSQ0VfSU5ERVg9bm5uCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUgdW5pdHMgaW4gdGhlIHNvdXJjZSBmaWxlCiAgIC0tICAgQnkgZGVmYXVsdCwgc291cmNlIGZpbGVzIGFyZSBtb25vLXVuaXQgYW5kIHRoZXJlIGlzIG5vIGluZGV4CgogICBTX0NsZWFuX01lc3MgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NRVNTQUdFU19QUk9KRUNUX0ZJTEU9IiAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFRkFVTFQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRURJVU0gIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDEgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElHSCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAyIjsKICAgLS0gICAgICAgIC9NRVNTQUdFU19QUk9KRUNUX0ZJTEVbPW1lc3NhZ2VzLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlICJ2ZXJib3NpdHkiIG9mIHRoZSBwYXJzaW5nIG9mIHByb2plY3QgZmlsZXMuCiAgIC0tICAgbWVzc2FnZXMtb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgICBERUZBVUxUIChEKSBObyBtZXNzYWdlcyBhcmUgb3V0cHV0IGlmIHRoZXJlIGlzIG5vIGVycm9yIG9yIHdhcm5pbmcuCiAgIC0tCiAgIC0tICAgICAgTUVESVVNICAgICAgQSBzbWFsbCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dC4KICAgLS0KICAgLS0gICAgICBISUdIICAgICAgICBBIGdyZWF0IG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LCBtb3N0IG9mIHRoZW0gbm90CiAgIC0tICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZnVsIGZvciB0aGUgdXNlci4KCiAgIFNfQ2xlYW5fT2JqZWN0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09CSkVDVF9TRUFSQ0g9KiIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFPKiI7CiAgIC0tICAgICAgICAvT0JKRUNUX1NFQVJDSD0oZGlyZWN0b3J5LC4uLikKICAgLS0KICAgLS0gICBXaGVuIHNlYXJjaGluZyBmb3IgbGlicmFyeSBhbmQgb2JqZWN0IGZpbGVzLCBsb29rIGluIHRoZSBzcGVjaWZpZWQKICAgLS0gICBkaXJlY3Rvcmllcy4gVGhlIG9yZGVyIGluIHdoaWNoIGxpYnJhcnkgZmlsZXMgYXJlIHNlYXJjaGVkIGlzIHRoZSBzYW1lCiAgIC0tICAgYXMgZm9yIE1BS0UuCgogICBTX0NsZWFuX1Byb2plY3QgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtYWluIHByb2plY3QgZmlsZSB0byBiZSB1c2VkLiBUaGUgcHJvamVjdCBmaWxlcyByb290ZWQKICAgLS0gICBhdCB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgd2lsbCBiZSBwYXJzZWQgYmVmb3JlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQogICAtLSAgIGNvbXBpbGVyLiBUaGUgc291cmNlIGFuZCBvYmplY3QgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgd2lsbCBiZQogICAtLSAgIGNvbW11bmljYXRlZCB0byBnbmF0Y2xlYW4gdGhyb3VnaCBsb2dpY2FsIG5hbWVzIEFEQV9QUkpfSU5DTFVERV9GSUxFCiAgIC0tICAgYW5kIEFEQV9QUkpfT0JKRUNUU19GSUxFLgoKICAgU19DbGVhbl9RdWlldCAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUVVJRVQgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcSI7CiAgIC0tICAgICAgICAvTk9RVUlFVCAoRCkKICAgLS0gICAgICAgIC9RVUlFVAogICAtLQogICAtLSAgIFF1aWV0IG91dHB1dC4gSWYgdGhlcmUgYXJlIG5vIGVycm9yLCBkbyBub3Qgb3V1cHV0IGFueXRoaW5nLCBleGNlcHQgaW4KICAgLS0gICB2ZXJib3NlIG1vZGUgKHF1YWxpZmllciAvVkVSQk9TRSkgb3IgaW4gaW5mb3JtYXRpdmUtb25seSBtb2RlCiAgIC0tICAocXVhbGlmaWVyIC9OT0RFTEVURSkuCgogICBTX0NsZWFuX1JlY3VycyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9SRUNVUlNJVkUgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1yIjsKICAgLS0gICAgICAgIC9OT1JFQ1VSU0lWRSAoRCkKICAgLS0gICAgICAgIC9SRUNVUlNJVkUKICAgLS0KICAgLS0gICBXaGVuIGEgcHJvamVjdCBmaWxlIGlzIHNwZWNpZmllZCAodXNpbmcgc3dpdGNoIC1QKSwgY2xlYW4gYWxsIGltcG9ydGVkCiAgIC0tICAgYW5kIGV4dGVuZGVkIHByb2plY3QgZmlsZXMsIHJlY3Vyc2l2ZWx5LiBJZiB0aGlzIHF1YWxpZmllciBpcyBub3QKICAgLS0gICBzcGVjaWZpZWQsIG9ubHkgdGhlIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIG1haW4gcHJvamVjdCBmaWxlIGFyZSB0byBiZQogICAtLSAgIGRlbGV0ZWQuIFRoaXMgcXVhbGlmaWVyIGhhcyBubyBlZmZlY3QgaWYgbm8gcHJvamVjdCBmaWxlIGlzIHNwZWNpZmllZC4KCiAgIFNfQ2xlYW5fU2VhcmNoICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NFQVJDSD0qIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUkqIjsKICAgLS0gICAgICAgIC9TRUFSQ0g9KGRpcmVjdG9yeSwuLi4pCiAgIC0tCiAgIC0tICAgRXF1aXZhbGVudCB0byAvT0JKRUNUX1NFQVJDSD0oZGlyZWN0b3J5LC4uLikuCgogICBTX0NsZWFuX1ZlcmJvc2UgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12IjsKICAgLS0gICAgICAgIC9OT1ZFUkJPU0UgKEQpCiAgIC0tICAgICAgICAvVkVSQk9TRQogICAtLQogICAtLSAgIFZlcmJvc2UgbW9kZS4KCiAgIENsZWFuX1N3aXRjaGVzIDogYWxpYXNlZCBjb25zdGFudCBTd2l0Y2hlcyA6PQogICAgIChTX0NsZWFuX0NvbXBpbCAnQWNjZXNzLAogICAgICBTX0NsZWFuX0N1cnJlbnQnQWNjZXNzLAogICAgICBTX0NsZWFuX0RlbGV0ZSAnQWNjZXNzLAogICAgICBTX0NsZWFuX0Rpcm9iaiAnQWNjZXNzLAogICAgICBTX0NsZWFuX0V4dCAgICAnQWNjZXNzLAogICAgICBTX0NsZWFuX0Z1bGwgICAnQWNjZXNzLAogICAgICBTX0NsZWFuX0hlbHAgICAnQWNjZXNzLAogICAgICBTX0NsZWFuX0luZGV4ICAnQWNjZXNzLAogICAgICBTX0NsZWFuX01lc3MgICAnQWNjZXNzLAogICAgICBTX0NsZWFuX09iamVjdCAnQWNjZXNzLAogICAgICBTX0NsZWFuX1Byb2plY3QnQWNjZXNzLAogICAgICBTX0NsZWFuX1F1aWV0ICAnQWNjZXNzLAogICAgICBTX0NsZWFuX1JlY3VycyAnQWNjZXNzLAogICAgICBTX0NsZWFuX1NlYXJjaCAnQWNjZXNzLAogICAgICBTX0NsZWFuX1ZlcmJvc2UnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgQ09NUElMRSAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX0dDQ19BZGFfODMgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvODMgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdDgzIjsKICAgLS0gICAgICAgIC9OTzgzIChEKQogICAtLSAgICAgICAgLzgzCiAgIC0tCiAgIC0tICAgQWx0aG91Z2ggR05BVCBpcyBwcmltYXJpbHkgYW4gQWRhIDk1IGNvbXBpbGVyLCBpdCBhY2NlcHRzIHRoaXMKICAgLS0gICBxdWFsaWZpZXIgdG8gc3BlY2lmeSB0aGF0IGFuIEFkYSA4MyBtb2RlIHByb2dyYW0gaXMgYmVpbmcgY29tcGlsZWQuIElmCiAgIC0tICAgeW91IHNwZWNpZnkgdGhpcyBxdWFsaWZpZXIsIEdOQVQgcmVqZWN0cyBBZGEgOTUgZXh0ZW5zaW9ucyBhbmQgYXBwbGllcwogICAtLSAgIEFkYSA4MyBzZW1hbnRpY3MuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBndWFyYW50ZWUgdGhpcyBxdWFsaWZpZXIgZG9lcwogICAtLSAgIGEgcGVyZmVjdCBqb2I7IGZvciBleGFtcGxlLCBzb21lIHN1YnRsZSB0ZXN0cyBvZiBwYXRob2xvZ2ljYWwgY2FzZXMsCiAgIC0tICAgc3VjaCBhcyBhcmUgZm91bmQgaW4gQUNWQyB0ZXN0cyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIEFDVkMKICAgLS0gICBzdWl0ZSBmb3IgQWRhIDk1LCBtYXkgbm90IGNvbXBpbGUgY29ycmVjdGx5LiBIb3dldmVyIGZvciBwcmFjdGljYWwKICAgLS0gICBwdXJwb3NlcywgdXNpbmcgdGhpcyBxdWFsaWZpZXIgc2hvdWxkIGVuc3VyZSB0aGF0IHByb2dyYW1zIHRoYXQKICAgLS0gICBjb21waWxlIGNvcnJlY3RseSB1bmRlciB0aGUgLzgzIHF1YWxpZmllciBjYW4gYmUgcG9ydGVkIHJlYXNvbmFibHkKICAgLS0gICBlYXNpbHkgdG8gYW4gQWRhIDgzIGNvbXBpbGVyLiBUaGlzIGlzIHRoZSBtYWluIHVzZSBvZiB0aGlzIHF1YWxpZmllci4KICAgLS0KICAgLS0gICBXaXRoIGZldyBleGNlcHRpb25zIChtb3N0IG5vdGFibHkgdGhlIG5lZWQgdG8gdXNlICI8PiIgb24KICAgLS0gICB1bmNvbnN0cmFpbmVkIGdlbmVyaWMgZm9ybWFsIHBhcmFtZXRlcnMpLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHVzZQogICAtLSAgIHRoaXMgcXVhbGlmaWVyIHN3aXRjaCB3aGVuIGNvbXBpbGluZyBBZGEgODMgcHJvZ3JhbXMsIGJlY2F1c2UsIHdpdGgKICAgLS0gICByYXJlIGFuZCBvYnNjdXJlIGV4Y2VwdGlvbnMsIEFkYSA5NSBpcyB1cHdhcmRseSBjb21wYXRpYmxlIHdpdGggQWRhCiAgIC0tICAgODMuIFRoaXMgbWVhbnMgdGhhdCBhIGNvcnJlY3QgQWRhIDgzIHByb2dyYW0gaXMgdXN1YWxseSBhbHNvIGEgY29ycmVjdAogICAtLSAgIEFkYSA5NSBwcm9ncmFtLgoKICAgU19HQ0NfQWRhXzk1ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiLzk1ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXQ5NSI7CiAgIC0tICAgICAgICAvOTUgKEQpCiAgIC0tCiAgIC0tICAgQWxsb3dzIEdOQVQgdG8gcmVjb2duaXplIHRoZSBmdWxsIHJhbmdlIG9mIEFkYSA5NSBjb25zdHJ1Y3RzLgogICAtLSAgIFRoaXMgaXMgdGhlIG5vcm1hbCBkZWZhdWx0IGZvciBHTkFUIFByby4KCiAgIFNfR0NDX0FkYV8wNSA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiLzA1ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXQwNSI7CiAgIC0tICAgICAgICAvMDUgKEQpCiAgIC0tCiAgIC0tICAgQWxsb3dzIEdOQVQgdG8gcmVjb2duaXplIGFsbCBpbXBsZW1lbnRlZCBwcm9wb3NlZCBBZGEgMjAwNQogICAtLSAgIGV4dGVuc2lvbnMuIFNlZSBmZWF0dXJlcyBmaWxlIGZvciBsaXN0IG9mIGltcGxlbWVudGVkIGZlYXR1cmVzLgoKICAgU19HQ0NfQXNtICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0FTTSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVMsIS1jIjsKICAgLS0gICAgICAgIC9OT0FTTSAoRCkKICAgLS0gICAgICAgIC9BU00KICAgLS0KICAgLS0gICBVc2UgdG8gY2F1c2UgdGhlIGFzc2VtYmxlciBzb3VyY2UgZmlsZSB0byBiZSBnZW5lcmF0ZWQsIHVzaW5nIFMgYXMgdGhlCiAgIC0tICAgZmlsZXR5cGUsIGluc3RlYWQgb2YgdGhlIG9iamVjdCBmaWxlLiBUaGlzIG1heSBiZSB1c2VmdWwgaWYgeW91IG5lZWQKICAgLS0gICB0byBleGFtaW5lIHRoZSBnZW5lcmF0ZWQgYXNzZW1ibHkgY29kZS4KCiAgIFNfR0NDX0NoZWNrcyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DSEVDS1M9IiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZVTEwgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRvLCEtZ25hdEUsIS1nbmF0cCAiICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPVkVSRkxPVyAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0byAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUxBQk9SQVRJT04gIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdEUgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFTU0VSVElPTlMgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRhICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZ25hdG8sIS1nbmF0cCAiICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1RBQ0sgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZnN0YWNrLWNoZWNrICIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNVUFBSRVNTX0FMTCAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRwIjsKICAgLS0gICAgICAgIC9OT0NIRUNLUwogICAtLSAgICAgICAgL0NIRUNLU1s9KGtleXdvcmRbLC4uLl0pXQogICAtLQogICAtLSAgIElmIHlvdSBjb21waWxlIHdpdGggdGhlIGRlZmF1bHQgb3B0aW9ucywgR05BVCB3aWxsIGluc2VydCBtYW55IHJ1bnRpbWUKICAgLS0gICBjaGVja3MgaW50byB0aGUgY29tcGlsZWQgY29kZSwgaW5jbHVkaW5nIGNvZGUgdGhhdCBwZXJmb3JtcyByYW5nZQogICAtLSAgIGNoZWNraW5nIGFnYWluc3QgY29uc3RyYWludHMsIGJ1dCBub3QgYXJpdGhtZXRpYyBvdmVyZmxvdyBjaGVja2luZyBmb3IKICAgLS0gICBpbnRlZ2VyIG9wZXJhdGlvbnMgKGluY2x1ZGluZyBkaXZpc2lvbiBieSB6ZXJvKSBvciBjaGVja3MgZm9yIGFjY2VzcwogICAtLSAgIGJlZm9yZSBlbGFib3JhdGlvbiBvbiBzdWJwcm9ncmFtIGNhbGxzLiAgQWxsIG90aGVyIHJ1bnRpbWUgY2hlY2tzLCBhcwogICAtLSAgIHJlcXVpcmVkIGJ5IHRoZSBBZGEgOTUgUmVmZXJlbmNlIE1hbnVhbCwgYXJlIGdlbmVyYXRlZCBieSBkZWZhdWx0LgogICAtLQogICAtLSAgIFlvdSBtYXkgc3BlY2lmeSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIGtleXdvcmRzIHRvIHRoZSAvQ0hFQ0tTCiAgIC0tICAgcXVhbGlmaWVyIHRvIG1vZGlmeSB0aGlzIGJlaGF2aW9yOgogICAtLQogICAtLSAgICAgREVGQVVMVCAgICAgICBUaGUgYmVoYXZpb3IgZGVzY3JpYmVkIGFib3ZlLiBUaGlzIGlzIHRoZSBkZWZhdWx0CiAgIC0tICAgICAgICAgICAgICAgICAgIGlmIHRoZSAvQ0hFQ0tTIHF1YWxpZmllciBpcyBub3QgcHJlc2VudCBvbiB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lLiBTYW1lIGFzIC9OT0NIRUNLUy4KICAgLS0KICAgLS0gICAgIE9WRVJGTE9XICAgICAgRW5hYmxlcyBvdmVyZmxvdyBjaGVja2luZyBmb3IgaW50ZWdlciBvcGVyYXRpb25zIGFuZAogICAtLSAgICAgICAgICAgICAgICAgICBjaGVja3MgZm9yIGFjY2VzcyBiZWZvcmUgZWxhYm9yYXRpb24gb24gc3VicHJvZ3JhbQogICAtLSAgICAgICAgICAgICAgICAgICBjYWxscy4gVGhpcyBjYXVzZXMgR05BVCB0byBnZW5lcmF0ZSBzbG93ZXIgYW5kIGxhcmdlcgogICAtLSAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIHByb2dyYW1zIGJ5IGFkZGluZyBjb2RlIHRvIGNoZWNrIGZvciBib3RoCiAgIC0tICAgICAgICAgICAgICAgICAgIG92ZXJmbG93IGFuZCBkaXZpc2lvbiBieSB6ZXJvIChyZXN1bHRpbmcgaW4gcmFpc2luZwogICAtLSAgICAgICAgICAgICAgICAgICAiQ29uc3RyYWludF9FcnJvciIgYXMgcmVxdWlyZWQgYnkgQWRhIHNlbWFudGljcykuCiAgIC0tICAgICAgICAgICAgICAgICAgIFNpbWlsYXJseSwgR05BVCBkb2VzIG5vdCBnZW5lcmF0ZSBlbGFib3JhdGlvbiBjaGVjawogICAtLSAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0LCBhbmQgeW91IG11c3Qgc3BlY2lmeSB0aGlzIGtleXdvcmQgdG8KICAgLS0gICAgICAgICAgICAgICAgICAgZW5hYmxlIHRoZW0uCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIGtleXdvcmQgZG9lcyBub3QgYWZmZWN0IHRoZSBjb2RlCiAgIC0tICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBmb3IgYW55IGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnM7IGl0CiAgIC0tICAgICAgICAgICAgICAgICAgIGFwcGxpZXMgb25seSB0byBpbnRlZ2VyIG9wZXJhdGlvbnMuIEZvciBmbG9hdGluZy1wb2ludCwKICAgLS0gICAgICAgICAgICAgICAgICAgR05BVCBoYXMgdGhlICJNYWNoaW5lX092ZXJmbG93cyIgYXR0cmlidXRlIHNldCB0bwogICAtLSAgICAgICAgICAgICAgICAgICAiRmFsc2UiIGFuZCB0aGUgbm9ybWFsIG1vZGUgb2Ygb3BlcmF0aW9uIGlzIHRvIGdlbmVyYXRlCiAgIC0tICAgICAgICAgICAgICAgICAgIElFRUUgTmFOIGFuZCBpbmZpbml0ZSB2YWx1ZXMgb24gb3ZlcmZsb3cgb3IgaW52YWxpZAogICAtLSAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zIChzdWNoIGFzIGRpdmlkaW5nIDAuMCBieSAwLjApLgogICAtLQogICAtLSAgICAgRUxBQk9SQVRJT04gICBFbmFibGVzIGR5bmFtaWMgY2hlY2tzIGZvciBhY2Nlc3MtYmVmb3JlLWVsYWJvcmF0aW9uCiAgIC0tICAgICAgICAgICAgICAgICAgIG9uIHN1YnByb2dyYW0gY2FsbHMgYW5kIGdlbmVyaWMgaW5zdGFudGlhdGlvbnMuCiAgIC0tCiAgIC0tICAgICBBU1NFUlRJT05TICAgIFRoZSBwcmFnbWFzICJBc3NlcnQiIGFuZCAiRGVidWciIG5vcm1hbGx5IGhhdmUgbm8KICAgLS0gICAgICAgICAgICAgICAgICAgZWZmZWN0IGFuZCBhcmUgaWdub3JlZC4gVGhpcyBrZXl3b3JkIGNhdXNlcyAiQXNzZXJ0IgogICAtLSAgICAgICAgICAgICAgICAgICBhbmQgIkRlYnVnIiBwcmFnbWFzIHRvIGJlIGFjdGl2YXRlZC4KICAgLS0KICAgLS0gICAgIFNVUFBSRVNTX0FMTCAgU3VwcHJlc3MgYWxsIHJ1bnRpbWUgY2hlY2tzIGFzIHRob3VnaCB5b3UgaGF2ZSAicHJhZ21hCiAgIC0tICAgICAgICAgICAgICAgICAgIFN1cHByZXNzIChhbGxfY2hlY2tzKSIgaW4geW91ciBzb3VyY2UuIFVzZSB0aGlzIHN3aXRjaAogICAtLSAgICAgICAgICAgICAgICAgICB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgY29kZSBhdCB0aGUgZXhwZW5zZQogICAtLSAgICAgICAgICAgICAgICAgICBvZiBzYWZldHkgaW4gdGhlIHByZXNlbmNlIG9mIGludmFsaWQgZGF0YSBvciBwcm9ncmFtCiAgIC0tICAgICAgICAgICAgICAgICAgIGJ1Z3MuCiAgIC0tCiAgIC0tICAgICBERUZBVUxUICAgICAgIFN1cHByZXNzIHRoZSBlZmZlY3Qgb2YgYW55IG9wdGlvbiBPVkVSRkxPVyBvcgogICAtLSAgICAgICAgICAgICAgICAgICBBU1NFUlRJT05TLgogICAtLQogICAtLSAgICAgRlVMTCAoRCkgICAgICBTaW1pbGFyIHRvIE9WRVJGTE9XLCBidXQgc3VwcHJlc3MgdGhlIGVmZmVjdCBvZiBhbnkKICAgLS0gICAgICAgICAgICAgICAgICAgb3B0aW9uIEVMQUJPUkFUSU9OIG9yIFNVUFBSRVNTX0FMTC4KICAgLS0KICAgLS0gICBUaGVzZSBrZXl3b3JkcyBvbmx5IGNvbnRyb2wgdGhlIGRlZmF1bHQgc2V0dGluZyBvZiB0aGUgY2hlY2tzLiAgWW91CiAgIC0tICAgbWF5IG1vZGlmeSB0aGVtIHVzaW5nIGVpdGhlciAiU3VwcHJlc3MiICh0byByZW1vdmUgY2hlY2tzKSBvcgogICAtLSAgICJVbnN1cHByZXNzIiAodG8gYWRkIGJhY2sgc3VwcHJlc3NlZCBjaGVja3MpIHByYWdtYXMgaW4geW91ciBwcm9ncmFtCiAgIC0tICAgc291cmNlLgoKICAgU19HQ0NfQ2hlY2tzWCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PQ0hFQ0tTICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRwLCEtZ25hdG8sIS1nbmF0RSI7CiAgIC0tICBOT0RPQyAoc2VlIC9DSEVDS1MpCgogICBTX0dDQ19Db21wcmVzIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09NUFJFU1NfTkFNRVMgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdEMiOwogICAtLSAgICAgICAgL05PQ09NUFJFU1NfTkFNRVMgKEQpCiAgIC0tICAgICAgICAvQ09NUFJFU1NfTkFNRVMKICAgLS0KICAgLS0gICBDb21wcmVzcyBkZWJ1ZyBpbmZvcm1hdGlvbiBhbmQgZXh0ZXJuYWwgc3ltYm9sIG5hbWUgdGFibGUgZW50cmllcy4KICAgLS0gICBJbiB0aGUgZ2VuZXJhdGVkIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwgYW5kIGFsc28gaW4gdGhlIGNhc2Ugb2YgbG9uZwogICAtLSAgIGV4dGVybmFsIG5hbWVzLCB0aGUgY29tcGlsZXIgdXNlcyBhIGNvbXByZXNzaW9uIG1lY2hhbmlzbSBpZiB0aGUgbmFtZQogICAtLSAgIGlzIHZlcnkgbG9uZy4gIFRoaXMgY29tcHJlc3Npb24gbWV0aG9kIHVzZXMgYSBjaGVja3N1bSwgYW5kIGF2b2lkcwogICAtLSAgIHRyb3VibGUgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyB3aGljaCBoYXZlIGRpZmZpY3VsdHkgd2l0aCB2ZXJ5IGxvbmcKICAgLS0gICBuYW1lcy4KCiAgIFNfR0NDX0NvbmZpZyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DT05GSUdVUkFUSU9OX1BSQUdNQVNfRklMRT08IiAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0ZWM+IjsKICAgLS0gICAgICAgIC9DT05GSUdVUkFUSU9OX1BSQUdNQVNfRklMRT1maWxlCiAgIC0tCiAgIC0tICAgU3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gcHJhZ21hcyBmaWxlIHRoYXQgbmVlZCB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQKCiAgIFNfR0NDX0N1cnJlbnQgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DVVJSRU5UX0RJUkVDVE9SWSAiICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtSS0iOwogICAtLSAgICAgICAgL0NVUlJFTlRfRElSRUNUT1JZIChEKQogICAtLSAgICAgICAgL05PQ1VSUkVOVF9ESVJFQ1RPUlkKICAgLS0KICAgLS0gICBMb29rIGZvciBzb3VyY2UgZmlsZXMgaW4gdGhlIGRlZmF1bHQgZGlyZWN0b3J5LgoKICAgU19HQ0NfRGF0YSAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RBVEFfUFJFUFJPQ0VTU0lORz08IiAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGVwPiI7CiAgIC0tICAgICAgICAvREFUQV9QUkVQUk9DRVNTSU5HPWZpbGVfbmFtZQogICAtLQogICAtLSAgIFRoaXMgcXVhbGlmaWVyIGluZGljYXRlcyB0byB0aGUgY29tcGlsZXIgdGhlIGZpbGUgbmFtZSAod2l0aG91dAogICAtLSAgIGRpcmVjdG9yeSBpbmZvcm1hdGlvbikgb2YgdGhlIHByZXByb2Nlc3NvciBkYXRhIGZpbGUgdG8gdXNlLgogICAtLSAgIFRoZSBwcmVwcm9jZXNzb3IgZGF0YSBmaWxlIHNob3VsZCBiZSBmb3VuZCBpbiB0aGUgc291cmNlIGRpcmVjdG9yaWVzLgogICAtLQogICAtLSAgIEEgcHJlcHJvY2Vzc2luZyBkYXRhIGZpbGUgaXMgYSB0ZXh0IGZpbGUgd2l0aCBzaWduaWZpY2FudCBsaW5lcwogICAtLSAgIGluZGljYXRpbmcgaG93IHNob3VsZCBiZSBwcmVwcm9jZXNzZWQgZWl0aGVyIGEgc3BlY2lmaWMgc291cmNlIG9yIGFsbAogICAtLSAgIHNvdXJjZXMgbm90IG1lbnRpb25lZCBpbiBvdGhlciBsaW5lcy4gQSBzaWduaWZpY2FudCBsaW5lIGlzIGEgbm9uCiAgIC0tICAgZW1wdHksIG5vbiBjb21tZW50IGxpbmUuIENvbW1lbnRzIGFyZSBzaW1pbGFyIHRvIEFkYSBjb21tZW50cy4KICAgLS0KICAgLS0gIEVhY2ggc2lnbmlmaWNhbnQgbGluZSBzdGFydHMgd2l0aCBlaXRoZXIgYSBsaXRlcmFsIHN0cmluZyBvciB0aGUKICAgLS0gIGNoYXJhY3RlciAnKicuIEEgbGl0ZXJhbCBzdHJpbmcgaXMgdGhlIGZpbGUgbmFtZSAod2l0aG91dCBkaXJlY3RvcnkKICAgLS0gIGluZm9ybWF0aW9uKSBvZiB0aGUgc291cmNlIHRvIHByZXByb2Nlc3MuIEEgY2hhcmFjdGVyICcqJyBpbmRpY2F0ZXMgdGhlCiAgIC0tICBwcmVwcm9jZXNzaW5nIGZvciBhbGwgdGhlIHNvdXJjZXMgdGhhdCBhcmUgbm90IHNwZWNpZmllZCBleHBsaWNpdGx5IG9uCiAgIC0tICBvdGhlciBsaW5lcy4gSXQgaXMgYW4gZXJyb3IgdG8gaGF2ZSB0d28gbGluZXMgd2l0aCB0aGUgc2FtZSBmaWxlIG5hbWUKICAgLS0gIG9yIHR3byBsaW5lcyBzdGFydGluZyB3aXRoIHRoZSBjaGFyYWN0ZXIgJyonLgogICAtLQogICAtLSAgQWZ0ZXIgdGhlIGZpbGUgbmFtZSBvciB0aGUgY2hhcmFjdGVyICcqJywgYW5vdGhlciBvcHRpb25hbCBsaXRlcmFsCiAgIC0tICBzdHJpbmcgaW5kaWNhdGluZyB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkZWZpbml0aW9uIGZpbGUgdG8gYmUgdXNlZCBmb3IKICAgLS0gIHByZXByb2Nlc3NpbmcuIChzZWUgMTUuMyBGb3JtIG9mIERlZmluaXRpb25zIEZpbGUuIFRoZSBkZWZpbml0aW9uIGZpbGVzCiAgIC0tICBhcmUgZm91bmQgYnkgdGhlIGNvbXBpbGVyIGluIG9uZSBvZiB0aGUgc291cmNlIGRpcmVjdG9yaWVzLiBJbiBzb21lCiAgIC0tICBjYXNlcywgd2hlbiBjb21waWxpbmcgYSBzb3VyY2UgaW4gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiB0aGUgY3VycmVudAogICAtLSAgZGlyZWN0b3J5LCBpZiB0aGUgZGVmaW5pdGlvbiBmaWxlIGlzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgaXQgbWF5CiAgIC0tICBiZSBuZWNlc3NhcnkgdG8gYWRkIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcyBhIHNvdXJjZSBkaXJlY3RvcnkgdGhyb3VnaAogICAtLSAgcXVhbGlmaWVyICIvU0VBUkNIPVtdIiwgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3b3VsZCBub3QgZmluZCB0aGUKICAgLS0gIGRlZmluaXRpb24gZmlsZS4KICAgLS0KICAgLS0gIFRoZW4sIG9wdGlvbmFsbHksIHN3aXRjaGVzIHNpbWlsYXIgdG8gdGhvc2Ugb2YgZ25hdHByZXAgbWF5IGJlIGZvdW5kLgogICAtLSAgVGhvc2Ugc3dpdGNoZXMgYXJlOgogICAtLQogICAtLSAgIC1iICAgICAgICAgICAgICBDYXVzZXMgYm90aCBwcmVwcm9jZXNzb3IgbGluZXMgYW5kIHRoZSBsaW5lcyBkZWxldGVkIGJ5CiAgIC0tICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NpbmcgdG8gYmUgcmVwbGFjZWQgYnkgYmxhbmsgbGluZXMsIHByZXNlcnZpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgdGhlIGxpbmUgbnVtYmVyLiBUaGlzIHN3aXRjaCBpcyBhbHdheXMgaW1wbGllZDsKICAgLS0gICAgICAgICAgICAgICAgICAgaG93ZXZlciwgaWYgc3BlY2lmaWVkIGFmdGVyIGAtYycgaXQgY2FuY2VscyB0aGUgZWZmZWN0CiAgIC0tICAgICAgICAgICAgICAgICAgIG9mIGAtYycuCiAgIC0tCiAgIC0tICAgLWMgICAgICAgICAgICAgIENhdXNlcyBib3RoIHByZXByb2Nlc3NvciBsaW5lcyBhbmQgdGhlIGxpbmVzIGRlbGV0ZWQgYnkKICAgLS0gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc2luZyB0byBiZSByZXRhaW5lZCBhcyBjb21tZW50cyBtYXJrZWQgd2l0aAogICAtLSAgICAgICAgICAgICAgICAgICB0aGUgc3BlY2lhbCBzdHJpbmcgIi0tISAiLgogICAtLQogICAtLSAgIC1Ec3ltYm9sPXZhbHVlICBEZWZpbmUgb3IgcmVkZWZpbmUgYSBzeW1ib2wsIGFzc29jaWF0ZWQgd2l0aCB2YWx1ZS4KICAgLS0gICAgICAgICAgICAgICAgICAgQSBzeW1ib2wgaXMgYW4gQWRhIGlkZW50aWZpZXIsIG9yIGFuIEFkYSByZXNlcnZlZCB3b3JkLAogICAtLSAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBleGNlcHRpb24gb2YgImlmIiwgImVsc2UiLCAiZWxzaWYiLCAiZW5kIiwKICAgLS0gICAgICAgICAgICAgICAgICAgImFuZCIsICJvciIgYW5kICJ0aGVuIi4gdmFsdWUgaXMgZWl0aGVyIGEgbGl0ZXJhbAogICAtLSAgICAgICAgICAgICAgICAgICBzdHJpbmcsIGFuIEFkYSBpZGVudGlmaWVyIG9yIGFueSBBZGEgcmVzZXJ2ZWQgd29yZC4KICAgLS0gICAgICAgICAgICAgICAgICAgQSBzeW1ib2wgZGVjbGFyZWQgd2l0aCB0aGlzIHN3aXRjaCByZXBsYWNlcyBhIHN5bWJvbAogICAtLSAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBzYW1lIG5hbWUgZGVmaW5lZCBpbiBhIGRlZmluaXRpb24gZmlsZS4KICAgLS0KICAgLS0gICAtcyAgICAgICAgICAgICAgQ2F1c2VzIGEgc29ydGVkIGxpc3Qgb2Ygc3ltYm9sIG5hbWVzIGFuZCB2YWx1ZXMgdG8gYmUKICAgLS0gICAgICAgICAgICAgICAgICAgbGlzdGVkIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQgZmlsZS4KICAgLS0KICAgLS0gICAtdSAgICAgICAgICAgICAgQ2F1c2VzIHVuZGVmaW5lZCBzeW1ib2xzIHRvIGJlIHRyZWF0ZWQgYXMgaGF2aW5nIHRoZQogICAtLSAgICAgICAgICAgICAgICAgICB2YWx1ZSBGQUxTRSBpbiB0aGUgY29udGV4dCBvZiBhIHByZXByb2Nlc3NvciB0ZXN0LgogICAtLSAgICAgICAgICAgICAgICAgICBJbiB0aGUgYWJzZW5jZSBvZiB0aGlzIG9wdGlvbiwgYW4gdW5kZWZpbmVkIHN5bWJvbAogICAtLSAgICAgICAgICAgICAgICAgICBpbiBhICNpZiBvciAjZWxzaWYgdGVzdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuCiAgIC0tCiAgIC0tICAgRXhhbXBsZXMgb2YgdmFsaWQgbGluZXMgaW4gYSBwcmVwcm9jZXNzb3IgZGF0YSBmaWxlOgogICAtLQogICAtLSAgICAgInRvdG8uYWRiIiAgInByZXAuZGVmIiAtdQogICAtLSAgICAgLS0gIHByZXByb2Nlc3MgInRvdG8uYWRiIiwgdXNpbmcgZGVmaW5pdGlvbiBmaWxlICJwcmVwLmRlZiIsCiAgIC0tICAgICAtLSAgdW5kZWZpbmVkIHN5bWJvbCBhcmUgRmFsc2UuCiAgIC0tCiAgIC0tICAgICAqIC1jIC1EVkVSU0lPTj1WMTAxCiAgIC0tICAgICAtLSAgcHJlcHJvY2VzcyBhbGwgb3RoZXIgc291cmNlcyB3aXRob3V0IGEgZGVmaW5pdGlvbiBmaWxlOwogICAtLSAgICAgLS0gIHN1cHByZXNzZWQgbGluZWQgYXJlIGNvbW1lbnRlZDsgc3ltYm9sIFZFUlNJT04gaGFzIHRoZSB2YWx1ZQogICAtLSAgICAgLS0gIFYxMDEuCiAgIC0tCiAgIC0tICAgICAidGl0aS5hZGIiICJwcmVwMi5kZWYiIC1zCiAgIC0tICAgICAtLSAgcHJlcHJvY2VzcyAidGl0aS5hZGIiLCB1c2luZyBkZWZpbml0aW9uIGZpbGUgInByZXAyLmRlZiI7CiAgIC0tICAgICAtLSAgbGlzdCBhbGwgc3ltYm9scyB3aXRoIHRoZWlyIHZhbHVlcy4KCiAgIFNfR0NDX0RlYnVnICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9ERUJVRz0iICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1lNQk9MUyAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzIgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PU1lNQk9MUyAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1nMiAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUUkFDRUJBQ0sgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nMSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUxMICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzMgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PTkUgIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWcwICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1RSQUNFQkFDSyAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nMCI7CiAgIC0tICAgICAgICAvREVCVUdbPWRlYnVnLWxldmVsXQogICAtLSAgICAgICAgL05PREVCVUcKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgaG93IG11Y2ggZGVidWdnaW5nIGluZm9ybWF0aW9uIGlzIHRvIGJlIGluY2x1ZGVkIGluCiAgIC0tICAgdGhlIHJlc3VsdGluZyBvYmplY3QgZmllLgogICAtLQogICAtLSAgICdkZWJ1Zy1sZXZlbCcgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgICBTWU1CT0xTIChEKSAgICBJbmNsdWRlIGJvdGggZGVidWdnZXIgc3ltYm9sIHJlY29yZHMgYW5kIHRyYWNlYmFjawogICAtLSAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9iamVjdCBmaWxlLgogICAtLQogICAtLSAgICAgICAgQUxMICAgICAgICAgICAgSW5jbHVkZSBkZWJ1Z2dlciBzeW1ib2wgcmVjb3JkcywgdHJhY2ViYWNrIHBsdXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgIGV4dHJhIGRlYnVnIGluZm9ybWF0aW9uIGluIHRoZSBvYmplY3QgZmlsZS4KICAgLS0KICAgLS0gICAgICAgIE5PTkUgICAgICAgICAgIEV4Y2x1ZGVzIGJvdGggZGVidWdnZXIgc3ltYm9sIHJlY29yZHMgYW5kIHRyYWNlYmFjawogICAtLSAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgb2JqZWN0IGZpbGUuICBTYW1lIGFzIC9OT0RFQlVHLgogICAtLQogICAtLSAgICAgICAgVFJBQ0VCQUNLICAgICAgSW5jbHVkZXMgb25seSB0cmFjZWJhY2sgcmVjb3JkcyBpbiB0aGUgb2JqZWN0CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICBmaWxlLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHdoZW4gL0RFQlVHIGlzIG5vdCB1c2VkLgoKICAgU19HQ0NfRGVidWdYICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PREVCVUcgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1nIjsKICAgLS0gIE5PRE9DIChzZWUgL0RlYnVnKQoKICAgU19HQ0NfRGlzdCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RJU1RSSUJVVElPTl9TVFVCUz0iICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSRUNFSVZFUiAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0enIgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0FMTEVSICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0emMiOwogICAtLSAgICAgICAgL05PRElTVFJJQlVUSU9OX1NUVUJTIChEKQogICAtLSAgICAgICAgL0RJU1RSSUJVVElPTl9TVFVCU1s9ZGlzdC1vcHRdCiAgIC0tCiAgIC0tICAgJ2Rpc3Qtb3B0JyBpcyBlaXRoZXIgUkVDRUlWRVIgKHRoZSBkZWZhdWx0KSBvciBTRU5ERVIgYW5kIGluZGljYXRlcwogICAtLSAgIHRoYXQgc3R1YnMgZm9yIHVzZSBpbiBkaXN0cmlidXRlZCBwcm9ncmFtcyAoc2VlIHRoZSBEaXN0cmlidXRlZAogICAtLSAgIFN5c3RlbXMgQW5uZXggb2YgdGhlIEFkYSBSTSkgc2hvdWxkIGJlIGdlbmVyYXRlZC4KCiAgIFNfR0NDX0Rpc3RYICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT0RJU1RSSUJVVElPTl9TVFVCUyAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1nbmF0enIsIS1nbmF0emMiOwogICAtLSAgTk9ET0MgKHNlZSAvRElTVFJJQlVUSU9OX1NUVUJTKQoKICAgU19HQ0NfRXJyb3IgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VSUk9SX0xJTUlUPSMiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdG0jIjsKICAgLS0gICAgICAgIC9OT0VSUk9SX0xJTUlUIChEKQogICAtLSAgICAgICAgL0VSUk9SX0xJTUlUPW5ubgogICAtLQogICAtLSAgIE5OTiBpcyBhIGRlY2ltYWwgaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMSB0byA5OTk5OTkgYW5kIGxpbWl0cyB0aGUKICAgLS0gICBudW1iZXIgb2YgZXJyb3IgbWVzc2FnZXMgdG8gYmUgZ2VuZXJhdGVkIHRvIHRoYXQgbnVtYmVyLiAgT25jZSB0aGF0CiAgIC0tICAgbnVtYmVyIGhhcyBiZWVuIHJlYWNoZWQsIHRoZSBjb21waWxhdGlvbiBpcyBhYmFuZG9uZWQuCiAgIC0tICAgU3BlY2lmeWluZyA5OTk5OTkgaXMgZXF1aXZhbGVudCB0byAvTk9FUlJPUl9MSU1JVC4KCiAgIFNfR0NDX0Vycm9yWCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT0VSUk9SX0xJTUlUICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRtOTk5OTk5IjsKICAgLS0gIE5PRE9DIChzZWUgL0VSUk9SX0xJTUlUKQoKICAgU19HQ0NfRXhwYW5kICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYUEFORF9TT1VSQ0UgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdEciOwogICAtLSAgICAgICAgL05PRVhQQU5EX1NPVVJDRSAoRCkKICAgLS0gICAgICAgIC9FWFBBTkRfU09VUkNFCiAgIC0tCiAgIC0tICAgUHJvZHVjZXMgYSBsaXN0aW5nIG9mIHRoZSBleHBhbmRlZCBjb2RlIGluIEFkYSBzb3VyY2UgZm9ybS4gRm9yCiAgIC0tICAgZXhhbXBsZSwgYWxsIHRhc2tpbmcgY29uc3RydWN0cyBhcmUgcmVkdWNlZCB0byBhcHByb3ByaWF0ZSBydW4tdGltZQogICAtLSAgIGxpYnJhcnkgY2FsbHMuCgogICBTX0dDQ19FeHRlbmQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURU5TSU9OU19BTExPV0VEICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0WCI7CiAgIC0tICAgICAgICAvTk9FWFRFTlNJT05TX0FMTE9XRUQgKEQpCiAgIC0tICAgICAgICAvRVhURU5TSU9OU19BTExPV0VECiAgIC0tCiAgIC0tICAgR05BVCBzcGVjaWZpYyBsYW5ndWFnZSBleHRlbnNpb25zIGFsbG93ZWQuCgogICBTX0dDQ19FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1YIiAmICciJzsKICAgLS0gICAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9Im5hbWU9dmFsIgogICAtLQogICAtLSAgIFNwZWNpZmllcyBhbiBleHRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHByb2plY3QgbWFuYWdlci4gVXNlZnVsIG9ubHkgaWYKICAgLS0gICAvUFJPSkVDVF9GSUxFIGlzIHVzZWQuCiAgIC0tCiAgIC0tICAgRXhhbXBsZToKICAgLS0gICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJERUJVRz1UUlVFIgoKICAgU19HQ0NfRmlsZSAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZJTEVfTkFNRV9NQVhfTEVOR1RIPSMiICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGsjIjsKICAgLS0gICAgICAgIC9GSUxFX05BTUVfTUFYX0xFTkdUSD1ubm4KICAgLS0KICAgLS0gICBBY3RpdmF0ZXMgZmlsZSBuYW1lICJrcnVuY2hpbmciLiBOTk4sIGEgZGVjaW1hbCBpbnRlZ2VyIGluIHRoZSByYW5nZQogICAtLSAgIDEtOTk5LCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gYWxsb3dhYmxlIGxlbmd0aCBvZiBhIGZpbGUgbmFtZSAobm90CiAgIC0tICAgaW5jbHVkaW5nIHRoZSBBRFMgb3IgQURCIGZpbGV0eXBlLiBUaGUgZGVmYXVsdCBpcyBub3QgdG8gZW5hYmxlIGZpbGUKICAgLS0gICBuYW1lIGtydW5jaGluZy4KCiAgIFNfR0NDX0ZvcmNlICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9GT1JDRV9BTEkgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRRIjsKICAgLS0gICAgICAgIC9OT0ZPUkNFX0FMSSAoRCkKICAgLS0gICAgICAgIC9GT1JDRV9BTEkKICAgLS0KICAgLS0gICBJbiBub3JtYWwgb3BlcmF0aW9uIG1vZGUsIHRoZSAuQUxJIGZpbGUgaXMgbm90IGdlbmVyYXRlZCBpZiBhbnkKICAgLS0gICBpbGxlZ2FsaXRpZXMgYXJlIGRldGVjdGVkIGluIHRoZSBwcm9ncmFtLiBUaGUgdXNlIG9mIHRoaXMgcXVhbGlmaWVyCiAgIC0tICAgZm9yY2VzIGdlbmVyYXRpb24gb2YgdGhlIC5BTEkgZmlsZS4gVGhpcyBmaWxlIGlzIG1hcmtlZCBhcyBiZWluZwogICAtLSAgIGluIGVycm9yLCBzbyBpdCBjYW5ub3QgYmUgdXNlZCBmb3IgYmluZGluZyBwdXJwb3NlcywgYnV0IGl0IGRvZXMKICAgLS0gICBjb250YWluIHJlYXNvbmFibHkgY29tcGxldGUgY3Jvc3MtcmVmZXJlbmNlIGluZm9ybWF0aW9uLCBhbmQgdGh1cyBtYXkKICAgLS0gICBiZSB1c2VmdWwgZm9yIHVzZSBieSB0b29scyAoZS5nLiBzZW1hbnRpYyBicm93aW5nIHRvb2xzIG9yIGludGVncmF0ZWQKICAgLS0gICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMpIHRoYXQgYXJlIGRyaXZlbiBmcm9tIHRoZSAuQUxJIGZpbGUuCgogICBTX0dDQ19GdWxsICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRlVMTF9QQVRIX0lOX0JSSUVGX01FU1NBR0VTICIgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0ZWYiOwogICAtLSAgICAgICAgL05PRlVMTF9QQVRIX0lOX0JSSUVGX01FU1NBR0VTIChEKQogICAtLSAgICAgICAgL0ZVTExfUEFUSF9JTl9CUklFRl9NRVNTQUdFUwogICAtLQogICAtLSAgIFdoZW4gdXNpbmcgcHJvamVjdCBmaWxlcywgaWYgc29tZSBlcnJvcnMgb3Igd2FybmluZ3MgYXJlIGRldGVjdGVkCiAgIC0tICAgZHVyaW5nIHBhcnNpbmcgYW5kIHZlcmJvc2UgbW9kZSBpcyBub3QgaW4gZWZmZWN0IChubyB1c2Ugb2YgcXVhbGlmaWVyCiAgIC0tICAgL1ZFUkJPU0UpLCB0aGVuIGVycm9yIGxpbmVzIHN0YXJ0IHdpdGggdGhlIGZ1bGwgcGF0aCBuYW1lIG9mIHRoZQogICAtLSAgIHByb2plY3QgZmlsZSwgcmF0aGVyIHRoYW4gaXRzIHNpbXBsZSBmaWxlIG5hbWUuCgogICBTX0dDQ19IZWxwICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvSEVMUCAiICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0aCI7CiAgIC0tICAgICAgICAvTk9IRUxQIChEKQogICAtLSAgICAgICAgL0hFTFAKICAgLS0KICAgLS0gICBPdXRwdXQgdXNhZ2UgaW5mb3JtYXRpb24uCgogICBTX0dDQ19JZGVudCAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvSURFTlRJRklFUl9DSEFSQUNURVJfU0VUPSIgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0aTEgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSAiICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGkxICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIgIiAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRpMiAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzICIgICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0aTMgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNCAiICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGk0ICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjUgIiAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRpNSAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQyAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0aXAgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEM4NTAgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGk4ICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZVTExfVVBQRVIgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRpZiAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT19VUFBFUiAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0aW4gIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0lERSAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGl3IjsKICAgLS0gICAgICAgIC9OT0lERU5USUZJRVJfQ0hBUkFDVEVSX1NFVCAoRCkKICAgLS0gICAgICAgIC9JREVOVElGSUVSX0NIQVJBQ1RFUl9TRVQ9Y2hhci1zZXQKICAgLS0KICAgLS0gICBOb3JtYWxseSBHTkFUIHJlY29nbml6ZXMgdGhlIExhdGluLTEgY2hhcmFjdGVyIHNldCBpbiBzb3VyY2UgcHJvZ3JhbQogICAtLSAgIGlkZW50aWZpZXJzLCBhcyBkZXNjcmliZWQgaW4gdGhlIHJlZmVyZW5jZSBtYW51YWwuIFRoaXMgcXVhbGlmaWVyCiAgIC0tICAgY2F1c2VzIEdOQVQgdG8gcmVjb2duaXplIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0cyBpbiBpZGVudGlmaWVycy4KICAgLS0gICAnY2hhci1zZXQnIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3MgaW5kaWNhdGluZyB0aGUgY2hhcmFjdGVyCiAgIC0tICAgc2V0OgogICAtLQogICAtLSAgICAgICAgREVGQVVMVCAoRCkgRXF1aXZhbGVudCB0byAxLCBiZWxvdy4gQWxzbyBlcXVpdmFsZW50IHRvCiAgIC0tICAgICAgICAgICAgICAgICAgICAvTk9JREVOVElGSUVSX0NIQVJBQ1RFUl9TRVQuCiAgIC0tCiAgIC0tICAgICAgICAxICAgICAgICAgICBUaGUgYmFzaWMgY2hhcmFjdGVyIHNldCBpcyBMYXRpbi0xLiBUaGlzIGNoYXJhY3RlcgogICAtLSAgICAgICAgICAgICAgICAgICAgc2V0IGlzIGRlZmluZWQgYnkgSVNPIHN0YW5kYXJkIDg4NTksIHBhcnQgMS4gVGhlIGxvd2VyCiAgIC0tICAgICAgICAgICAgICAgICAgICBoYWxmIChjaGFyYWN0ZXIgY29kZXMgMTYjMDAjIC4uLiAxNiM3RiMpIGlzIGlkZW50aWNhbAogICAtLSAgICAgICAgICAgICAgICAgICAgdG8gc3RhbmRhcmQgQVNDSUkgY29kaW5nLCBidXQgdGhlIHVwcGVyIGhhbGYgaXMgdXNlZAogICAtLSAgICAgICAgICAgICAgICAgICAgdG8gcmVwcmVzZW50IGFkZGl0aW9uYWwgY2hhcmFjdGVycy4gVGhpcyBpbmNsdWRlcwogICAtLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWQgbGV0dGVycyB1c2VkIGJ5IEV1cm9wZWFuIGxhbmd1YWdlcywgc3VjaCBhcwogICAtLSAgICAgICAgICAgICAgICAgICAgdGhlIHVtbGF1dCB1c2VkIGluIEdlcm1hbi4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgdXNlIGFueSBvZiB0aGVzZSBleHRlbmRlZCBjaGFyYWN0ZXJzIGZyZWVseQogICAtLSAgICAgICAgICAgICAgICAgICAgaW4gY2hhcmFjdGVyIG9yIHN0cmluZyBsaXRlcmFscy4gSW4gYWRkaXRpb24sIHRoZQogICAtLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWQgY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudCBsZXR0ZXJzIGNhbiBiZQogICAtLSAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiBpZGVudGlmaWVycy4KICAgLS0KICAgLS0gICAgICAgIDIgICAgICAgICAgIExhdGluLTIgbGV0dGVycyBhbGxvd2VkIGluIGlkZW50aWZpZXJzLCB3aXRoIHVwcGVyY2FzZQogICAtLSAgICAgICAgICAgICAgICAgICAgYW5kIGxvd2VyY2FzZSBlcXVpdmFsZW5jZS4KICAgLS0KICAgLS0gICAgICAgIDMgICAgICAgICAgIExhdGluLTMgbGV0dGVycyBhbGxvd2VkIGluIGlkZW50aWZpZXJzLCB3aXRoIHVwcGVyY2FzZQogICAtLSAgICAgICAgICAgICAgICAgICAgYW5kIGxvd2VyIGNhc2UgZXF1aXZhbGVuY2UuCiAgIC0tCiAgIC0tICAgICAgICA0ICAgICAgICAgICBMYXRpbi00IGxldHRlcnMgYWxsb3dlZCBpbiBpZGVudGlmaWVycywgd2l0aCB1cHBlcmNhc2UKICAgLS0gICAgICAgICAgICAgICAgICAgIGFuZCBsb3dlciBjYXNlIGVxdWl2YWxlbmNlLgogICAtLQogICAtLSAgICAgICAgUEMgICAgICAgICAgSUJNIFBDIGNvZGUgcGFnZSA0MzcuICBUaGlzIGNvZGUgcGFnZSBpcyB0aGUgbm9ybWFsCiAgIC0tICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGZvciBQQ3MgaW4gdGhlIFUuUy4gSXQgY29ycmVzcG9uZHMgdG8gdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBJQk0gUEMgY2hhcmFjdGVyIHNldC4gVGhpcyBzZXQgaGFzIHNvbWUsIGJ1dAogICAtLSAgICAgICAgICAgICAgICAgICAgbm90IGFsbCwgb2YgdGhlIGV4dGVuZGVkIExhdGluLTEgbGV0dGVycywgYnV0IHRoZXNlCiAgIC0tICAgICAgICAgICAgICAgICAgICBsZXR0ZXJzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIGVuY29kaW5nIGFzIExhdGluLTEuIEluCiAgIC0tICAgICAgICAgICAgICAgICAgICB0aGlzIG1vZGUsIHRoZXNlIGxldHRlcnMgYXJlIGFsbG93ZWQgaW4gaWRlbnRpZmllcnMKICAgLS0gICAgICAgICAgICAgICAgICAgIHdpdGggdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2UgZXF1aXZhbGVuY2UuCiAgIC0tCiAgIC0tICAgICAgICBQQzg1MCAgICAgICBUaGlzIGNvZGUgcGFnZSAoODUwKSBpcyBhIG1vZGlmaWNhdGlvbiBvZiA0MzcgZXh0ZW5kZWQKICAgLS0gICAgICAgICAgICAgICAgICAgIHRvIGluY2x1ZGUgYWxsIHRoZSBMYXRpbi0xIGxldHRlcnMsIGJ1dCBzdGlsbCBub3Qgd2l0aAogICAtLSAgICAgICAgICAgICAgICAgICAgdGhlIHVzdWFsIExhdGluLTEgZW5jb2RpbmcuIEluIHRoaXMgbW9kZSwgYWxsIHRoZXNlCiAgIC0tICAgICAgICAgICAgICAgICAgICBsZXR0ZXJzIGFyZSBhbGxvd2VkIGluIGlkZW50aWZpZXJzIHdpdGggdXBwZXJjYXNlIGFuZAogICAtLSAgICAgICAgICAgICAgICAgICAgbG93ZXIgY2FzZSBlcXVpdmFsZW5jZS4KICAgLS0KICAgLS0gICAgICAgIEZVTExfVVBQRVIgIEFueSBjaGFyYWN0ZXIgaW4gdGhlIHJhbmdlIDgwLUZGIGFsbG93ZWQgaW4KICAgLS0gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzLCBhbmQgYWxsIGFyZSBjb25zaWRlcmVkIGRpc3RpbmN0LiAgSW4KICAgLS0gICAgICAgICAgICAgICAgICAgIG90aGVyIHdvcmRzLCB0aGVyZSBhcmUgbm8gdXBwZXJjYXNlIGFuZCBsb3dlciBjYXNlCiAgIC0tICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW5jZXMgaW4gdGhpcyByYW5nZS4KICAgLS0KICAgLS0gICAgICAgIE5PX1VQUEVSICAgIE5vIHVwcGVyLWhhbGYgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgODAtRkYgYXJlCiAgIC0tICAgICAgICAgICAgICAgICAgICBhbGxvd2VkIGluIGlkZW50aWZpZXJzLiAgVGhpcyBnaXZlcyBBZGEgOTUKICAgLS0gICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgZm9yIGlkZW50aWZpZXIgbmFtZXMuCiAgIC0tCiAgIC0tICAgICAgICBXSURFICAgICAgICBHTkFUIGFsbG93cyB3aWRlIGNoYXJhY3RlciBjb2RlcyB0byBhcHBlYXIgaW4KICAgLS0gICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciBhbmQgc3RyaW5nIGxpdGVyYWxzLCBhbmQgYWxzbyBvcHRpb25hbGx5CiAgIC0tICAgICAgICAgICAgICAgICAgICBpbiBpZGVudGlmaWVycy4gIFNlZSB0aGUgL1dJREVfQ0hBUkFDVEVSX0VOQ09ESU5HCiAgIC0tICAgICAgICAgICAgICAgICAgICBxdWFsaWZpZXIgZm9yIGluZm9ybWF0aW9uIG9uIGVuY29kaW5nIGZvcm1hdHMuCgogICBTX0dDQ19JZGVudFggIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9JREVOVElGSUVSX0NIQVJBQ1RFUl9TRVQgIiAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGkxIjsKICAgLS0gIE5PRE9DIChzZWUgL0lERU5USUZJRVJfQ0hBUkFDVEVSX1NFVCkKCiAgIFNfR0NDX0ltbWVkICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JTU1FRElBVEVfRVJST1JTICIgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRkTyI7CiAgIC0tICAgICAgICAvTk9JTU1FRElBVEVfRVJST1JTIChEKQogICAtLSAgICAgICAgL0lNTUVESUFURV9FUlJPUlMKICAgLS0KICAgLS0gICBDYXVzZXMgZXJyb3JzIHRvIGJlIGRpc3BsYXllZCBhcyBzb29uIGFzIHRoZXkgYXJlIGVuY291bnRlcmVkLCByYXRoZXIKICAgLS0gICB0aGFuIGFmdGVyIGNvbXBpbGF0aW9uIGlzIHRlcm1pbmF0ZWQuIElmIEdOQVQgdGVybWluYXRlcyBwcmVtYXR1cmVseQogICAtLSAgIG9yIGdvZXMgaW50byBhbiBpbmZpbml0ZSBsb29wLCB0aGUgbGFzdCBlcnJvciBtZXNzYWdlIGRpc3BsYXllZCBtYXkKICAgLS0gICBoZWxwIHRvIHBpbnBvaW50IHRoZSBjdWxwcml0LgoKICAgU19HQ0NfSW5saW5lICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0lOTElORT0iICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQUkFHTUEgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRuICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRlVMTCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0TiAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNVUFBSRVNTICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZm5vLWlubGluZSI7CiAgIC0tICAgICAgICAvTk9JTkxJTkUgKEQpCiAgIC0tICAgICAgICAvSU5MSU5FWz1rZXl3b3JkXQogICAtLQogICAtLSAgIFNlbGVjdHMgdGhlIGxldmVsIG9mIGlubGluaW5nIGZvciB5b3VyIHByb2dyYW0uICBJbiB0aGUgYWJzZW5jZSBvZiB0aGlzCiAgIC0tICAgcXVhbGlmaWVyLCBHTkFUIGRvZXMgbm90IGF0dGVtcHQgaW5saW5pbmcgYWNyb3NzIHVuaXRzIGFuZCBkb2VzIG5vdAogICAtLSAgIG5lZWQgdG8gYWNjZXNzIHRoZSBib2RpZXMgb2Ygc3VicHJvZ3JhbXMgZm9yIHdoaWNoICJwcmFnbWEgSW5saW5lIiBpcwogICAtLSAgIHNwZWNpZmllZCBpZiB0aGV5IGFyZSBub3QgaW4gdGhlIGN1cnJlbnQgdW5pdC4KICAgLS0KICAgLS0gICBUaGUgc3VwcG9ydGVkIGtleXdvcmRzIGFyZSBhcyBmb2xsb3dzOgogICAtLQogICAtLSAgICAgICAgUFJBR01BIChEKSAgUmVjb2duaXplIGFuZCBwcm9jZXNzICJJbmxpbmUiIHByYWdtYXMuICBIb3dldmVyLAogICAtLSAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBpbmxpbmluZyB0byBhY3R1YWxseSBvY2N1ciwgb3B0aW1pemF0aW9uCiAgIC0tICAgICAgICAgICAgICAgICAgICBtdXN0IGJlIGVuYWJsZWQuICBUaGlzIGVuYWJsZXMgaW5saW5pbmcgYWNyb3NzIHVuaXQKICAgLS0gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJpZXMsIHRoYXQgaXMsIGlubGluaW5nIGEgY2FsbCBpbiBvbmUgdW5pdCBvZgogICAtLSAgICAgICAgICAgICAgICAgICAgYSBzdWJwcm9ncmFtIGRlY2xhcmVkIGluIGEgd2l0aCdlZCB1bml0LiBUaGUgY29tcGlsZXIKICAgLS0gICAgICAgICAgICAgICAgICAgIHdpbGwgYWNjZXNzIHRoZXNlIGJvZGllcywgY3JlYXRpbmcgYW4gZXh0cmEgc291cmNlCiAgIC0tICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IGZvciB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlLCBhbmQgd2hlcmUKICAgLS0gICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlLCB0aGUgY2FsbCB3aWxsIGJlIGlubGluZWQuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICBUaGlzIHF1YWxpZmllciBhbHNvIHR1cm5zIG9uIGZ1bGwgb3B0aW1pemF0aW9uIGFuZAogICAtLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMgR05BVCB0byB0cnkgdG8gYXR0ZW1wdCBhdXRvbWF0aWMgaW5saW5pbmcKICAgLS0gICAgICAgICAgICAgICAgICAgIG9mIHNtYWxsIHN1YnByb2dyYW1zIHdpdGhpbiBhIHVuaXQuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIC9PUFRJTUlaRT1OT05FIHdpbGwgZGlzYWJsZSB0aGUgbWFpbiBlZmZlY3QKICAgLS0gICAgICAgICAgICAgICAgICAgIG9mIHRoaXMgcXVhbGlmaWVyLCBidXQgeW91IG1heSBzcGVjaWZ5IG90aGVyCiAgIC0tICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb24gb3B0aW9ucywgdG8gZ2V0IGVpdGhlciBsb3dlcgogICAtLSAgICAgICAgICAgICAgICAgICAgKC9PUFRJTUlaRT1TT01FKSBvciBoaWdoZXIgKC9PUFRJTUlaRT1VTlJPTExfTE9PUFMpCiAgIC0tICAgICAgICAgICAgICAgICAgICBsZXZlbHMgb2Ygb3B0aW1pemF0aW9uLgogICAtLQogICAtLSAgICAgICAgRlVMTCAgICAgICAgRnJvbnQgZW5kIGlubGluaW5nLiBUaGUgZnJvbnQgZW5kIGlubGluaW5nIGFjdGl2YXRlZAogICAtLSAgICAgICAgICAgICAgICAgICAgYnkgdGhpcyBzd2l0Y2ggaXMgZ2VuZXJhbGx5IG1vcmUgZXh0ZW5zaXZlLCBhbmQgcXVpdGUKICAgLS0gICAgICAgICAgICAgICAgICAgIG9mdGVuIG1vcmUgZWZmZWN0aXZlIHRoYW4gdGhlIHN0YW5kYXJkIFBSQUdNQSBpbmxpbmluZwogICAtLSAgICAgICAgICAgICAgICAgICAgbW9kZS4gSXQgd2lsbCBhbHNvIGdlbmVyYXRlIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzLgogICAtLQogICAtLSAgICAgICAgU1VQUFJFU1MgICAgU3VwcHJlc3NlcyBhbGwgaW5saW5pbmcsIGV2ZW4gaWYgb3RoZXIgb3B0aW1pemF0aW9uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW5saW5pbmcgc3dpdGNoZXMgYXJlIHNldC4KCiAgIFNfR0NDX0lubGluZVggOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT0lOTElORSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZ25hdG4sIS1nbmF0TiI7CiAgIC0tICBOT0RPQyAoc2VlIC9JTkxJTkUpCgogICBTX0dDQ19KdW1wcyAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTE9OR0pNUF9TRVRKTVAgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdEwiOwogICAtLSAgICAgICAgL05PTE9OR0pNUF9TRVRKTVAgKEQpCiAgIC0tICAgICAgICAvTE9OR0pNUF9TRVRKTVAKICAgLS0KICAgLS0gICBDYXVzZXMgdGhlIGxvbmdqbXAvc2V0am1wIGFwcHJvYWNoIHRvIGJlIHVzZWQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZy4KICAgLS0KICAgLS0gICBUaGUgZGVmYXVsdCBtZWNoYW5pc20gZm9yIE9wZW5WTVMgaXMgemVybyBjb3N0IGV4Y2VwdGlvbnMuIFRoaXMKICAgLS0gICBxdWFsaWZpZXIgY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoaXMgZGVmYXVsdCwgYnV0IGl0IG11c3QgYmUgdXNlZCBmb3IKICAgLS0gICBhbGwgdW5pdHMgaW4gdGhlIHBhcnRpdGlvbiwgaW5jbHVkaW5nIGFsbCBydW4tdGltZSBsaWJyYXJ5IHVuaXRzLgogICAtLSAgIE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIHVzZSB0aGUgL0FMTF9GSUxFUyBhbmQgL0ZPUkNFX0NPTVBJTEUKICAgLS0gICBmb3IgZ25hdG1ha2UuCiAgIC0tICAgVGhpcyBvcHRpb24gaXMgcmFyZWx5IHVzZWQuIE9uZSBjYXNlIGluIHdoaWNoIGl0IG1heSBiZSBhZHZhbnRhZ2VvdXMgaXMKICAgLS0gICBpbiBhbiBhcHBsaWNhdGlvbiB3aGVyZSBleGNlcHRpb24gcmFpc2luZyBpcyBjb21tb24gYW5kIHRoZSBvdmVyYWxsCiAgIC0tICAgcGVyZm9ybWFuY2Ugb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGltcHJvdmVkIGJ5IGZhdm9yaW5nIGV4Y2VwdGlvbgogICAtLSAgIHByb3BhZ2F0aW9uLgoKICAgU19HQ0NfTGVuZ3RoICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01BWF9MSU5FX0xFTkdUSD0jIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5TSMiOwogICAtLSAgICAgICAgL01BWF9MSU5FX0xFTkdUSD1ubm4KICAgLS0KICAgLS0gICBTZXQgbWF4aW11bSBsaW5lIGxlbmd0aC4KICAgLS0gICBUaGUgbGVuZ3RoIG9mIGxpbmVzIG11c3Qgbm90IGV4Y2VlZCB0aGUgZ2l2ZW4gdmFsdWUgbm5uLgoKICAgU19HQ0NfTGlzdCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0xJU1QgIiAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRsIjsKICAgLS0gICAgICAgIC9OT0xJU1QgKEQpCiAgIC0tICAgICAgICAvTElTVAogICAtLQogICAtLSAgIENhdXNlIGEgZnVsbCBsaXN0aW5nIG9mIHRoZSBmaWxlIHRvIGJlIGdlbmVyYXRlZC4KCiAgIFNfR0NDX01hcHBpbmcgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NQVBQSU5HX0ZJTEU9PCIgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRlbT4iOwogICAtLSAgICAgICAgL01BUFBJTkdfRklMRT1maWxlX25hbWUKICAgLS0KICAgLS0gICBVc2UgbWFwcGluZyBmaWxlIGZpbGVfbmFtZQogICAtLQogICAtLSAgIEEgbWFwcGluZyBmaWxlIGlzIGEgd2F5IHRvIGNvbW11bmljYXRlIHRvIHRoZSBjb21waWxlciB0d28gbWFwcGluZ3M6CiAgIC0tICAgZnJvbSB1bml0IG5hbWVzIHRvIGZpbGUgbmFtZXMgKHdpdGhvdXQgYW55IGRpcmVjdG9yeSBpbmZvcm1hdGlvbikgYW5kCiAgIC0tICAgZnJvbSBmaWxlIG5hbWVzIHRvIHBhdGggbmFtZXMgKHdpdGggZnVsbCBkaXJlY3RvcnkgaW5mb3JtYXRpb24pLgogICAtLSAgIFRoZXNlIG1hcHBpbmdzIGFyZSB1c2VkIGJ5IHRoZSBjb21waWxlciB0byBzaG9ydC1jaXJjdWl0IHRoZSBwYXRoCiAgIC0tICAgc2VhcmNoLgogICAtLQogICAtLSAgIFRoZSB1c2Ugb2YgbWFwcGluZyBmaWxlcyBpcyBub3QgcmVxdWlyZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZQogICAtLSAgIGNvbXBpbGVyLCBidXQgbWFwcGluZyBmaWxlcyBjYW4gaW1wcm92ZSBlZmZpY2llbmN5LCBwYXJ0aWN1bGFybHkgd2hlbgogICAtLSAgIHNvdXJjZXMgYXJlIHJlYWQgb3ZlciBhIHNsb3cgbmV0d29yayBjb25uZWN0aW9uLiBJbiBub3JtYWwgb3BlcmF0aW9uLAogICAtLSAgIHlvdSBuZWVkIG5vdCBiZSBjb25jZXJuZWQgd2l0aCB0aGUgZm9ybWF0IG9yIHVzZSBvZiBtYXBwaW5nIGZpbGVzLAogICAtLSAgIGFuZCAvTUFQUElOR19GSUxFIGlzIG5vdCBhIHF1YWxpZmllciB0aGF0IHlvdSB3b3VsZCB1c2UgZXhwbGljaXRseS4KICAgLS0gICBJdCBpcyBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYXV0b21hdGljIHRvb2xzIHN1Y2ggYXMgR05BVCBNQUtFCiAgIC0tICAgcnVubmluZyB1bmRlciB0aGUgcHJvamVjdCBmaWxlIGZhY2lsaXR5LiBUaGUgZGVzY3JpcHRpb24gaGVyZSBvZiB0aGUKICAgLS0gICBmb3JtYXQgb2YgbWFwcGluZyBmaWxlcyBpcyBwcm92aWRlZCBmb3IgY29tcGxldGVuZXNzIGFuZCBmb3IgcG9zc2libGUKICAgLS0gICB1c2UgYnkgb3RoZXIgdG9vbHMuCiAgIC0tCiAgIC0tICAgQSBtYXBwaW5nIGZpbGUgaXMgYSBzZXF1ZW5jZSBvZiBzZXRzIG9mIHRocmVlIGxpbmVzLiBJbiBlYWNoIHNldCwgdGhlCiAgIC0tICAgZmlyc3QgbGluZSBpcyB0aGUgdW5pdCBuYW1lLCBpbiBsb3dlciBjYXNlLCB3aXRoICIlcyIgYXBwZW5kZWQgZm9yCiAgIC0tICAgc3BlY2lmaWNhdGlvbnMgYW5kICIlYiIgYXBwZW5kZWQgZm9yIGJvZGllczsgdGhlIHNlY29uZCBsaW5lIGlzIHRoZQogICAtLSAgIGZpbGUgbmFtZTsgYW5kIHRoZSB0aGlyZCBsaW5lIGlzIHRoZSBwYXRoIG5hbWUuCiAgIC0tCiAgIC0tICAgRXhhbXBsZToKICAgLS0KICAgLS0gICAgICBtYWluJWIKICAgLS0gICAgICBtYWluLjJfYWRhCiAgIC0tICAgICAgL2duYXQvcHJvamVjdDEvc291cmNlcy9tYWluLjJfYWRhCiAgIC0tCiAgIC0tICAgV2hlbiBxdWFsaWZpZXIgP01BUFBJTkdfRklMRSBpcyBzcGVjaWZpZWQsIHRoZSBjb21waWxlciB3aWxsIGNyZWF0ZSBpbgogICAtLSAgIG1lbW9yeSB0aGUgdHdvIG1hcHBpbmdzIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlLiBJZiB0aGVyZSBpcyBhbnkKICAgLS0gICBwcm9ibGVtIChub24gZXhpc3RlbnQgZmlsZSwgdHJ1bmNhdGVkIGZpbGUgb3IgZHVwbGljYXRlIGVudHJpZXMpLAogICAtLSAgIG5vIG1hcHBpbmcgd2lsbCBiZSBjcmVhdGVkLgogICAtLQogICAtLSAgIFNldmVyYWwgL01BUFBJTkdfRklMRSBxdWFsaWZpZXJzIG1heSBiZSBzcGVjaWZpZWQ7IGhvd2V2ZXIsIG9ubHkgdGhlCiAgIC0tICAgbGFzdCBvbmUgb24gdGhlIGNvbW1hbmQgbGluZSB3aWxsIGJlIHRha2VuIGludG8gYWNjb3VudC4KICAgLS0KICAgLS0gICBXaGVuIHVzaW5nIGEgcHJvamVjdCBmaWxlLCBHTkFUIE1BS0UgY3JlYXRlcyBhIHRlbXBvcmFyeSBtYXBwaW5nIGZpbGUKICAgLS0gICBhbmQgY29tbXVuaWNhdGVzIGl0IHRvIHRoZSBjb21waWxlciB1c2luZyB0aGlzIHN3aXRjaC4KCiAgIFNfR0NDX01lc3MgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NRVNTQUdFU19QUk9KRUNUX0ZJTEU9IiAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FRElVTSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDIiOwogICAtLSAgICAgICAgL01FU1NBR0VTX1BST0pFQ1RfRklMRVs9bWVzc2FnZXMtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgInZlcmJvc2l0eSIgb2YgdGhlIHBhcnNpbmcgb2YgcHJvamVjdCBmaWxlcy4KICAgLS0gICBtZXNzYWdlcy1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIERFRkFVTFQgKEQpIE5vIG1lc3NhZ2VzIGFyZSBvdXRwdXQgaWYgdGhlcmUgaXMgbm8gZXJyb3Igb3Igd2FybmluZy4KICAgLS0KICAgLS0gICAgICBNRURJVU0gICAgICBBIHNtYWxsIG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LgogICAtLQogICAtLSAgICAgIEhJR0ggICAgICAgIEEgZ3JlYXQgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQsIG1vc3Qgb2YgdGhlbSBub3QKICAgLS0gICAgICAgICAgICAgICAgICBiZWluZyB1c2VmdWwgZm9yIHRoZSB1c2VyLgoKICAgU19HQ0NfTmVzdGluZyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NQVhfTkVTVElORz0jIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHlMIyI7CiAgIC0tICAgICAgICAvTUFYX05FU1RJTkc9bm5uCiAgIC0tCiAgIC0tICAgU2V0IG1heGltdW0gbGV2ZWwgb2YgbmVzdGluZyBvZiBjb25zdHJ1Y3RzIChpbmNsdWRpbmcgc3VicHJvZ3JhbXMsCiAgIC0tICAgbG9vcHMsIGJsb2NrcywgcGFja2FnZXMsIGFuZCBjb25kaXRpb25hbHMpLgogICAtLSAgIFRoZSBsZXZlbCBvZiBuZXN0aW5nIG11c3Qgbm90IGV4Y2VlZCB0aGUgZ2l2ZW4gdmFsdWUgbm5uLgogICAtLSAgIEEgdmFsdWUgb2YgemVybyBkaXNhYmxlIHRoaXMgc3R5bGUgY2hlY2sgKG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQpLgoKICAgU19HQ0NfTm9hZGMgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PX0dOQVRfQURDICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRBIjsKICAgLS0gICAgICAgIC9OT19HTkFUX0FEQwogICAtLQogICAtLSAgIENhdXNlIHRoZSBjb21waWxlciB0byBpZ25vcmUgYW55IGNvbmZpZ3VyYXRpb24gcHJhZ21hcyBmaWxlIEdOQVQuQURDCiAgIC0tICAgaW4gdGhlIGRlZmF1bHQgZGlyZWN0b3J5LiBJbXBsaWVkIGJ5IHF1YWxpZmllciAvUFJPSkVDVF9GSUxFLgogICAtLSAgIE9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBxdWFsaWZpZXIgL0NPTkZJR1VSQVRJT05fUFJBR01BU19GSUxFLgoKICAgU19HQ0NfTm9sb2FkICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PTE9BRCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRjIjsKICAgLS0gICAgICAgIC9OT0xPQUQKICAgLS0KICAgLS0gICBDYXVzZSB0aGUgY29tcGlsZXIgdG8gb3BlcmF0ZSBpbiBzZW1hbnRpYyBjaGVjayBtb2RlIHdpdGggZnVsbAogICAtLSAgIGNoZWNraW5nIGZvciBhbGwgaWxsZWdhbGl0aWVzIHNwZWNpZmllZCBpbiB0aGUgcmVmZXJlbmNlIG1hbnVhbCwgYnV0CiAgIC0tICAgd2l0aG91dCBnZW5lcmF0aW9uIG9mIGFueSBzb3VyY2UgY29kZSAobm8gb2JqZWN0IG9yIEFMSSBmaWxlCiAgIC0tICAgZ2VuZXJhdGVkKS4KICAgLS0KICAgLS0gICBTaW5jZSBkZXBlbmRlbnQgZmlsZXMgbXVzdCBiZSBhY2Nlc3NlZCwgeW91IG11c3QgZm9sbG93IHRoZSBHTkFUCiAgIC0tICAgc2VtYW50aWMgcmVzdHJpY3Rpb25zIG9uIGZpbGUgc3RydWN0dXJpbmcgdG8gb3BlcmF0ZSBpbiB0aGlzIG1vZGU6CiAgIC0tCiAgIC0tICAgbyBUaGUgbmVlZGVkIHNvdXJjZSBmaWxlcyBtdXN0IGJlIGFjY2Vzc2libGUuCiAgIC0tICAgbyBFYWNoIGZpbGUgbXVzdCBjb250YWluIG9ubHkgb25lIGNvbXBpbGF0aW9uIHVuaXQuCiAgIC0tICAgbyBUaGUgZmlsZSBuYW1lIGFuZCB1bml0IG5hbWUgbXVzdCBtYXRjaC4KICAgLS0KICAgLS0gICBUaGUgb3V0cHV0IGNvbnNpc3RzIG9mIGVycm9yIG1lc3NhZ2VzIGFzIGFwcHJvcHJpYXRlLiBObyBvYmplY3QgZmlsZQogICAtLSAgIG9yIEFMSSBmaWxlIGlzIGdlbmVyYXRlZC4gVGhlIGNoZWNraW5nIGNvcnJlc3BvbmRzIGV4YWN0bHkgdG8gdGhlCiAgIC0tICAgbm90aW9uIG9mIGxlZ2FsaXR5IGluIHRoZSBBZGEgcmVmZXJlbmNlIG1hbnVhbC4KICAgLS0KICAgLS0gICBBbnkgdW5pdCBjYW4gYmUgY29tcGlsZWQgaW4gc2VtYW50aWNzLWNoZWNraW5nLW9ubHkgbW9kZSwgaW5jbHVkaW5nCiAgIC0tICAgdW5pdHMgdGhhdCB3b3VsZCBub3Qgbm9ybWFsbHkgYmUgY29tcGlsZWQgKGdlbmVyaWMgbGlicmFyeSB1bml0cywKICAgLS0gICBzdWJ1bml0cywgYW5kIHNwZWNpZmljYXRpb25zIHdoZXJlIGEgc2VwYXJhdGUgYm9keSBpcyBwcmVzZW50KS4KCiAgIFNfR0NDX05vc3RpbmMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1NURF9JTkNMVURFUyAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ub3N0ZGluYyI7CiAgIC0tICAgICAgICAvTk9TVERfSU5DTFVERVMKICAgLS0KICAgLS0gICBEbyBub3QgbG9vayBpbiB0aGUgZGVmYXVsdCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcyBvZiB0aGUgcnVudGltZS4KCiAgIFNfR0NDX05vc3RsaWIgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1NURF9MSUJSQVJJRVMgIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbm9zdGRsaWIiOwogICAtLSAgICAgICAgL05PU1REX0xJQlJBUklFUwogICAtLQogICAtLSAgICBEbyBub3QgbG9vayBmb3IgbGlicmFyeSBmaWxlcyBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgZGlyZWN0b3J5LgoKICAgU19HQ0NfT3B0ICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09QVElNSVpFPSIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBTEwgIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1PMiwhLU8wLCEtTzEsIS1PMyAiICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9ORSAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItTzAsIS1PMSwhLU8yLCEtTzMgIiAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNPTUUgIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLU8xLCEtTzAsIS1PMiwhLU8zICIgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVZFTE9QTUVOVCAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1PMSwhLU8wLCEtTzIsIS1PMyAiICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVU5ST0xMX0xPT1BTICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZnVucm9sbC1sb29wcyAiICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PX1NUUklDVF9BTElBU0lORyAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWZuby1zdHJpY3QtYWxpYXNpbmcgIiAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTkxJTklORyAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1PMywhLU8wLCEtTzEsIS1PMiI7CiAgIC0tICAgICAgICAvTk9PUFRJTUlaRSAoRCkKICAgLS0gICAgICAgIC9PUFRJTUlaRVs9KGtleXdvcmRbLC4uLl0pXQogICAtLQogICAtLSAgIFNlbGVjdHMgdGhlIGxldmVsIG9mIG9wdGltaXphdGlvbiBmb3IgeW91ciBwcm9ncmFtLiAgVGhlIHN1cHBvcnRlZAogICAtLSAgIGtleXdvcmRzIGFyZSBhcyBmb2xsb3dzOgogICAtLQogICAtLSAgICAgIEFMTCAoRCkgICAgICAgUGVyZm9ybSBtb3N0IG9wdGltaXphdGlvbnMsIGluY2x1ZGluZyB0aG9zZSB0aGF0CiAgIC0tICAgICAgICAgICAgICAgICAgICBtYXkgYmUgZXhwZW5zaXZlLgogICAtLQogICAtLSAgICAgIE5PTkUgICAgICAgICAgRG8gbm90IGRvIGFueSBvcHRpbWl6YXRpb25zLiBTYW1lIGFzIC9OT09QVElNSVpFLgogICAtLQogICAtLSAgICAgIFNPTUUgICAgICAgICAgUGVyZm9ybSBzb21lIG9wdGltaXphdGlvbnMsIGJ1dCBvbWl0IG9uZXMgdGhhdAogICAtLSAgICAgICAgICAgICAgICAgICAgYXJlIGNvc3RseSBpbiBjb21waWxhdGlvbiB0aW1lLgogICAtLQogICAtLSAgICAgIERFVkVMT1BNRU5UICAgU2FtZSBhcyBTT01FLgogICAtLQogICAtLSAgICAgIElOTElOSU5HICAgICAgRnVsbCBvcHRpbWl6YXRpb24sIGFuZCBhbHNvIGF0dGVtcHQgYXV0b21hdGljIGlubGluaW5nCiAgIC0tICAgICAgICAgICAgICAgICAgICBvZiBzbWFsbCBzdWJwcm9ncmFtcyB3aXRoaW4gYSB1bml0CiAgIC0tCiAgIC0tICAgICAgVU5ST0xMX0xPT1BTICBUcnkgdG8gdW5yb2xsIGxvb3BzLiBUaGlzIGtleXdvcmQgbWF5IGJlIHNwZWNpZmllZAogICAtLSAgICAgICAgICAgICAgICAgICAgd2l0aCBhbnkga2V5d29yZCBhYm92ZSBvdGhlciB0aGFuIE5PTkUuIExvb3AKICAgLS0gICAgICAgICAgICAgICAgICAgIHVucm9sbGluZyB1c3VhbGx5LCBidXQgbm90IGFsd2F5cywgaW1wcm92ZXMgdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBvZiBwcm9ncmFtcy4KICAgLS0KICAgLS0gICAgICBOT19TVFJJQ1RfQUxJQVNJTkcKICAgLS0gICAgICAgICAgICAgICAgICAgIFN1cHByZXNzIGFsaWFzaW5nIGFuYWx5c2lzLiBXaGVuIG9wdGltaXphdGlvbiBpcwogICAtLSAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCAoQUxMIG9yIFNPTUUgYWJvdmUpLCB0aGUgY29tcGlsZXIgYXNzdW1lcwogICAtLSAgICAgICAgICAgICAgICAgICAgdGhhdCBwb2ludGVycyBkbyBpbiBmYWN0IHBvaW50IHRvIGxlZ2l0aW1hdGUgdmFsdWVzCiAgIC0tICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcG9pbnRlciB0eXBlIChhbGxvY2F0ZWQgZnJvbSB0aGUgcHJvcGVyIHBvb2wpLgogICAtLSAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBhc3N1bXB0aW9uIGlzIHZpb2xhdGVkLCBlLmcuIGJ5IHRoZSB1c2Ugb2YKICAgLS0gICAgICAgICAgICAgICAgICAgIHVuY2hlY2tlZCBjb252ZXJzaW9uLCB0aGVuIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KICAgLS0gICAgICAgICAgICAgICAgICAgIHN1cHByZXNzIHRoaXMgYXNzdW1wdGlvbiB1c2luZyB0aGlzIGtleXdvcmQgKHdoaWNoCiAgIC0tICAgICAgICAgICAgICAgICAgICBtYXkgYmUgc3BlY2lmaWVkIG9ubHkgaW4gY29uanVuY3Rpb24gd2l0aCBhbnkKICAgLS0gICAgICAgICAgICAgICAgICAgIGtleXdvcmQgYWJvdmUsIG90aGVyIHRoYW4gTk9ORSkuCgogICBTX0dDQ19PcHRYICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9PUFRJTUlaRSAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1PMCwhLU8xLCEtTzIsIS1PMyI7CiAgIC0tICBOT0RPQyAoc2VlIC9PUFRJTUlaRSkKCiAgIFNfR0NDX1BvbGxpbmcgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QT0xMSU5HICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRQIjsKICAgLS0gICAgICAgIC9OT1BPTExJTkcgKEQpCiAgIC0tICAgICAgICAvUE9MTElORwogICAtLQogICAtLSAgIEVuYWJsZSBwb2xsaW5nLiBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHByYWdtYSBQb2xsaW5nIGluIHRoZSBHTkFUCiAgIC0tICAgUmVmZXJlbmNlIE1hbnVhbCBmb3IgZnVsbCBkZXRhaWxzLgoKICAgU19HQ0NfUHJvamVjdCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSB0aGUgaW52b2NhdGlvbiBvZiB0aGUKICAgLS0gICBjb21waWxlci4gVGhlIHNvdXJjZSBhbmQgb2JqZWN0IGRpcmVjdG9yaWVzIHRvIGJlIHNlYXJjaGVkIHdpbGwgYmUKICAgLS0gICBjb21tdW5pY2F0ZWQgdG8gdGhlIGNvbXBpbGVyIHRocm91Z2ggbG9naWNhbCBuYW1lcwogICAtLSAgIEFEQV9QUkpfSU5DTFVERV9GSUxFIGFuZCBBREFfUFJKX09CSkVDVFNfRklMRS4KCiAgIFNfR0NDX1BzdGEgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUklOVF9TVEFOREFSRCAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRTIjsKICAgLS0gICAgICAgIC9QUklOVF9TVEFOREFSRAogICAtLQogICAtLSAgIGNhdXNlIHRoZSBjb21waWxlciB0byBvdXRwdXQgYSByZXByZXNlbnRhdGlvbiBvZiBwYWNrYWdlIFN0YW5kYXJkCiAgIC0tICAgaW4gYSBmb3JtIHZlcnkgY2xvc2UgdG8gc3RhbmRhcmQgQWRhLiBJdCBpcyBub3QgcXVpdGUgcG9zc2libGUgdG8KICAgLS0gICBkbyB0aGlzIGFuZCByZW1haW4gZW50aXJlbHkgU3RhbmRhcmQgKHNpbmNlIG5ldyBudW1lcmljIGJhc2UgdHlwZXMKICAgLS0gICBjYW5ub3QgYmUgY3JlYXRlZCBpbiBzdGFuZGFyZCBBZGEpLCBidXQgdGhlIG91dHB1dCBpcyBlYXNpbHkKICAgLS0gICByZWFkYWJsZSB0byBhbnkgQWRhIHByb2dyYW1tZXIsIGFuZCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHRoZQogICAtLSAgIGNoYXJhY3RlcmlzdGljcyBvZiB0YXJnZXQgZGVwZW5kZW50IHR5cGVzIGluIHBhY2thZ2UgU3RhbmRhcmQuCgogICBTX0dDQ19SZXBvcnQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUkVQT1JUX0VSUk9SUz0iICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZFUkJPU0UgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR2ICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCUklFRiAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0YiAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRlVMTCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGYgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklNTUVESUFURSAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRkTyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZ25hdGIsIS1nbmF0diI7CiAgIC0tICAgICAgICAvTk9SRVBPUlRfRVJST1JTIChEKQogICAtLSAgICAgICAgL1JFUE9SVF9FUlJPUlNbPShrZXl3b3JkWywuLi5dKV0KICAgLS0KICAgLS0gICBDaGFuZ2UgdGhlIHdheSBlcnJvcnMgYXJlIHJlcG9ydGVkLiAgVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBhcmUKICAgLS0gICBzdXBwb3J0ZWQ6CiAgIC0tCiAgIC0tICAgICAgICBWRVJCT1NFIChEKSAgVmVyYm9zZSBtb2RlLiBGdWxsIGVycm9yIG91dHB1dCB3aXRoIHNvdXJjZSBsaW5lcwogICAtLSAgICAgICAgICAgICAgICAgICAgIHRvIFNZUyRPVVRQVVQuCiAgIC0tCiAgIC0tICAgICAgICBCUklFRiAgICAgICAgR2VuZXJhdGUgdGhlIGJyaWVmIGZvcm1hdCBlcnJvciBtZXNzYWdlcyB0bwogICAtLSAgICAgICAgICAgICAgICAgICAgIFNZUyRPVVRQVVQgYXMgd2VsbCBhcyB0aGUgdmVyYm9zZSBmb3JtYXQgbWVzc2FnZSBvcgogICAtLSAgICAgICAgICAgICAgICAgICAgIGZ1bGwgbGlzdGluZy4KICAgLS0KICAgLS0gICAgICAgIEZVTEwgICAgICAgICBOb3JtYWxseSwgdGhlIGNvbXBpbGVyIHN1cHByZXNzZXMgZXJyb3IgbWVzc2FnZXMgdGhhdAogICAtLSAgICAgICAgICAgICAgICAgICAgIGFyZSBsaWtlbHkgdG8gYmUgcmVkdW5kYW50LiBUaGlzIGtleXdvcmQgY2F1c2VzIGFsbAogICAtLSAgICAgICAgICAgICAgICAgICAgIGVycm9yIG1lc3NhZ2VzIHRvIGJlIGdlbmVyYXRlZC4gT25lIHBhcnRpY3VsYXIgZWZmZWN0CiAgIC0tICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSBjYXNlIG9mIHJlZmVyZW5jZXMgdG8gdW5kZWZpbmVkIHZhcmlhYmxlcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICBJZiBhIGdpdmVuIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgc2V2ZXJhbCB0aW1lcywgdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIGZvcm1hdCBvZiBtZXNzYWdlcyBwcm9kdWNlcyBvbmUgZXJyb3IuICBXaXRoCiAgIC0tICAgICAgICAgICAgICAgICAgICAgRlVMTCwgZWFjaCB1bmRlZmluZWQgcmVmZXJlbmNlIHByb2R1Y2VzIGEgc2VwYXJhdGUKICAgLS0gICAgICAgICAgICAgICAgICAgICBlcnJvciBtZXNzYWdlLgogICAtLQogICAtLSAgICAgICAgSU1NRURJQVRFICAgIE5vcm1hbGx5LCB0aGUgY29tcGlsZXIgc2F2ZXMgdXAgZXJyb3IgbWVzc2FnZXMgYW5kCiAgIC0tICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVzIHRoZW0gYXQgdGhlIGVuZCBvZiBjb21waWxhdGlvbiBpbiBwcm9wZXIKICAgLS0gICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZS4gIFRoaXMga2V5d29yZCBjYXVzZXMgZXJyb3IgbWVzc2FnZXMgdG8gYmUKICAgLS0gICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgYXMgc29vbiBhcyB0aGV5IGFyZSBkZXRlY3RlZC4gVGhlIHVzZSBvZgogICAtLSAgICAgICAgICAgICAgICAgICAgIElNTUVESUFURSB1c3VhbGx5IGNhdXNlcyBlcnJvciBtZXNzYWdlcyB0byBiZQogICAtLSAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBvdXQgb2Ygc2VxdWVuY2UuIFVzZSBpdCB3aGVuIHRoZSBjb21waWxlcgogICAtLSAgICAgICAgICAgICAgICAgICAgIGJsb3dzIHVwIGR1ZSB0byBhbiBpbnRlcm5hbCBlcnJvci4gIEluIHRoaXMgY2FzZSwgdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgZXJyb3IgbWVzc2FnZXMgbWF5IGJlIGxvc3QuIFNvbWV0aW1lcyBibG93dXBzIGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHQgb2YgbWlzaGFuZGxlZCBlcnJvciBtZXNzYWdlcywgc28geW91IG1heQogICAtLSAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gcnVuIHdpdGggdGhpcyBrZXl3b3JkIHRvIGRldGVybWluZSB3aGV0aGVyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgYW55IGVycm9yIG1lc3NhZ2VzIHdlcmUgZ2VuZXJhdGVkLgogICAtLQogICAtLSAgICAgIERFRkFVTFQgICAgICAgIFR1cm4gb2ZmIFZFUkJPU0UgYW5kIEJSSUVGLiBTYW1lIGFzIC9OT1JFUE9SVF9FUlJPUlMuCgogICBTX0dDQ19SZXBvcnRYIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9SRVBPUlRfRVJST1JTICIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZ25hdGIsIS1nbmF0diI7CiAgIC0tICBOT0RPQyAoc2VlIC9SRVBPUlRfRVJST1JTKQoKICAgU19HQ0NfUmVwaW5mbyA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFUFJFU0VOVEFUSU9OX0lORk89IiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0UiAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9ORSAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFIwICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFSUkFZUyAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRSMSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBUlJBWVNfRklMRSAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0UjFzICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0JKRUNUUyAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFIyICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9CSkVDVFNfRklMRSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRSMnMgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTWU1CT0xJQyAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0UjMgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1lNQk9MSUNfRklMRSAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFIzcyI7CiAgIC0tICAgICAgICAvTk9SRVBSRVNFTlRBVElPTl9JTkZPIChEKQogICAtLSAgICAgICAgL1JFUFJFU0VOVEFUSU9OX0lORk9bPShrZXl3b3JkWywuLi5dKV0KICAgLS0KICAgLS0gICBUaGlzIHF1YWxpZmllciBjb250cm9scyBvdXRwdXQgZnJvbSB0aGUgY29tcGlsZXIgb2YgYSBsaXN0aW5nIHNob3dpbmcKICAgLS0gICByZXByZXNlbnRhdGlvbiBpbmZvcm1hdGlvbiBmb3IgZGVjbGFyZWQgdHlwZXMgYW5kIG9iamVjdHMuCiAgIC0tCiAgIC0tICAgICAgICBBUlJBWVMgKEQpICAgICAgU2l6ZSBhbmQgYWxpZ25tZW50IGluZm9ybWF0aW9uIGlzIGxpc3RlZCBmb3IKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZCBhcnJheSBhbmQgcmVjb3JkIHR5cGVzLgogICAtLQogICAtLSAgICAgICAgQVJSQVlTX0ZJTEUgICAgIFNpbWlsYXIgdG8gQVJSQVlTLCBidXQgdGhlIG91dHB1dCBpcyB0byBhIGZpbGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBuYW1lICdmaWxlX3JlcCcgd2hlcmUgJ2ZpbGUnIGlzIHRoZSBuYW1lCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGZpbGUuCiAgIC0tCiAgIC0tICAgICAgICBOT05FICAgICAgICAgICAgbm8gaW5mb3JtYXRpb24gaXMgb3V0cHV0IChlcXVpdmFsZW50IHRvIG9taXR0aW5nCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgdGhlIC9SRVBSRVNFTlRBVElPTl9JTkZPIHF1YWxpZmllcnMpLgogICAtLQogICAtLSAgICAgICAgT0JKRUNUUyAgICAgICAgIFNpemUgYW5kIGFsaWdubWVudCBpbmZvcm1hdGlvbiBpcyBsaXN0ZWQgZm9yIGFsbAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVkIHR5cGVzIGFuZCBvYmplY3RzLgogICAtLQogICAtLSAgICAgICAgT0JKRUNUU19GSUxFICAgIFNpbWlsYXIgdG8gT0JKRUNUUywgYnV0IHRoZSBvdXRwdXQgaXMgdG8gYSBmaWxlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgbmFtZSAnZmlsZV9yZXAnIHdoZXJlICdmaWxlJyBpcyB0aGUgbmFtZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBmaWxlLgogICAtLQogICAtLSAgICAgICAgU1lNQk9MSUMgICAgICAgIFN5bWJvbGljIGV4cHJlc3Npb24gaW5mb3JtYXRpb24gZm9yIHZhbHVlcyB0aGF0CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGNvbXB1dGVkIGF0IHJ1biB0aW1lIGZvciB2YXJpYW50IHJlY29yZHMuCiAgIC0tCiAgIC0tICAgICAgICBTWU1CT0xJQ19GSUxFICAgU2ltaWxhciB0byBTWU1CT0xJQywgYnV0IHRoZSBvdXRwdXQgaXMgdG8gYSBmaWxlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgbmFtZSAnZmlsZV9yZXAnIHdoZXJlICdmaWxlJyBpcyB0aGUgbmFtZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBmaWxlLgogICAtLQogICAtLSAgICAgICAgREVGQVVMVCAgICAgICAgIEVxdWl2YWxlbnQgdG8gQVJSQVlTLgoKICAgU19HQ0NfUmVwaW5mWCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PUkVQUkVTRU5UQVRJT05fSU5GTyAiICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLWduYXRSIjsKICAgLS0gIE5PRE9DIChzZWUgL1JFUFJFU0VOVEFUSU9OX0lORk8pCgogICBTX0dDQ19SVFMgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUlVOVElNRV9TWVNURU09fCIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tUlRTPXwiOwogICAtLSAgICAgICAgL1JVTlRJTUVfU1lTVEVNPXh4eAogICAtLQogICAtLSAgICBCdWlsZCBhZ2FpbnN0IGFuIGFsdGVybmF0ZSBydW50aW1lIHN5c3RlbSBuYW1lZCB4eHggb3IgUlRTLXh4eC4KCiAgIFNfR0NDX1NlYXJjaCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TRUFSQ0g9KiIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUkqIjsKICAgLS0gICAgICAgIC9TRUFSQ0g9KGRpcmVjdG9yeVssLi4uXSkKICAgLS0KICAgLS0gICAgV2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMgYWxzbyBsb29rIGluIGRpcmVjdG9yaWVzIHNwZWNpZmllZC4KCiAgIFNfR0NDX1N0eWxlICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TVFlMRV9DSEVDS1M9IiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUxMX0JVSUxUSU4gIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHkgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5MSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyICIgICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eTIgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHkzICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5NCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI1ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eTUgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHk2ICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjcgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5NyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI4ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eTggIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHk5ICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFUVFJJQlVURSAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5YSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCTEFOS1MgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eWIgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ09NTUVOVFMgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHljICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRPU19MSU5FX0VORElOR1MgIiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5ZCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFTkQgIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eWUgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlRBQlMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHlmICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdOQVQgIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRnICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIVEFCUyAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eWggIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSUZfVEhFTiAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHlpICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktFWVdPUkQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5ayAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMQVlPVVQgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eWwgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTElORV9MRU5HVEggIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHltICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1PREVfSU4gIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5SSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT05FICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eU4gIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1RBTkRBUkRfQ0FTSU5HICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHluICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9SREVSRURfU1VCUFJPR1JBTVMgIiAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5byAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQUkFHTUEgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eXAgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUkVGRVJFTkNFUyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHlyICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNQRUNTICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5cyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUT0tFTiAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0eXQgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVU5ORUNFU1NBUllfQkxBTktfTElORVMgIiAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHl1ICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlhUUkFfUEFSRU5TICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR5eCAiOwogICAtLSAgICAgICAgL05PU1RZTEVfQ0hFQ0tTIChEKQogICAtLSAgICAgICAgL1NUWUxFX0NIRUNLU1s9KGtleXdvcmQsWy4uLl0pXQogICAtLQogICAtLSAgIE5vcm1hbGx5LCBHTkFUIHBlcm1pdHMgYW55IGNvZGUgbGF5b3V0IGNvbnNpc3RlbnQgd2l0aCB0aGUgcmVmZXJlbmNlCiAgIC0tICAgbWFudWFsIHJlcXVpcmVtZW50cy4gIFRoaXMgcXVhbGlmaWVyIGltcG9zZXMgc3R5bGUgY2hlY2tpbmcgb24gdGhlCiAgIC0tICAgaW5wdXQgc291cmNlIGNvZGUuICBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGFyZSBzdXBwb3J0ZWQ6CiAgIC0tCiAgIC0tICAgICAgQUxMX0JVSUxUSU4gKEQpICAgICAgRXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nIGxpc3Qgb2Ygb3B0aW9uczoKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAzLCBBVFRSSUJVVEUsIEJMQU5LUywgQ09NTUVOVFMsIEVORCwgVlRBQlMsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRBQlMsIElGX1RIRU4sIEtFWVdPUkQsIExBWU9VVCwgTElORV9MRU5HVEgsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJBR01BLCBSRUZFUkVOQ0VTLCBTUEVDUywgVE9LRU4uCiAgIC0tCiAgIC0tICAgICAgMSAuLiA5ICAgICAgICAgICAgICAgU3BlY2lmeSBpbmRlbnRhdGlvbiBsZXZlbCBmcm9tIDEgdG8gOS4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZ2VuZXJhbCBzdHlsZSBvZiByZXF1aXJlZCBpbmRlbnRhdGlvbiBpcyBhcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSB0aGUgZXhhbXBsZXMgaW4gdGhlIEFkYSBSZWZlcmVuY2UKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuIEZ1bGwgbGluZSBjb21tZW50cyBtdXN0IGJlIGFsaWduZWQgd2l0aAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAtLSBzdGFydGluZyBvbiBhIGNvbHVtbiB0aGF0IGlzIGEgbXVsdGlwbGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgYWxpZ25tZW50IGxldmVsLgogICAtLQogICAtLSAgICAgIEFUVFJJQlVURSAgICAgICAgICAgIENoZWNrIGF0dHJpYnV0ZSBjYXNpbmcuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlIG5hbWVzLCBpbmNsdWRpbmcgdGhlIGNhc2Ugb2Yga2V5d29yZHMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGRpZ2l0cyB1c2VkIGFzIGF0dHJpYnV0ZXMgbmFtZXMsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSB3cml0dGVuIGluIG1peGVkIGNhc2UsIHRoYXQgaXMsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluaXRpYWwgbGV0dGVyIGFuZCBhbnkgbGV0dGVyIGZvbGxvd2luZyBhbgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmUgbXVzdCBiZSB1cHBlcmNhc2UuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIG90aGVyIGxldHRlcnMgbXVzdCBiZSBsb3dlcmNhc2UuCiAgIC0tCiAgIC0tICAgICAgQkxBTktTICAgICAgICAgICAgICAgQmxhbmtzIG5vdCBhbGxvd2VkIGF0IHN0YXRlbWVudCBlbmQuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhaWxpbmcgYmxhbmtzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGUgZW5kIG9mCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBydWxlLCB0b2dldGhlcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3B0aW9uIEhUQUJTIChubyBob3Jpem9udGFsIHRhYnMpLCBpcyB0bwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZm9yY2UgYSBjYW5vbmljYWwgZm9ybWF0IGZvciB0aGUgdXNlIG9mCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhbmtzIHRvIHNlcGFyYXRlIHNvdXJjZSB0b2tlbnMuCiAgIC0tCiAgIC0tICAgICAgQ09NTUVOVFMgICAgICAgICAgICAgQ2hlY2sgY29tbWVudHMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudHMgbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcgc2V0IG9mIHJ1bGVzOgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgIi0tIiB0aGF0IHN0YXJ0cyB0aGUgY29sdW1uIG11c3QgZWl0aGVyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IGluIGNvbHVtbiBvbmUsIG9yIGVsc2UgYXQgbGVhc3Qgb25lCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYW5rIG11c3QgcHJlY2VkZSB0aGlzIHNlcXVlbmNlLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBDb21tZW50cyB0aGF0IGZvbGxvdyBvdGhlciB0b2tlbnMgb24gYSBsaW5lCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYmxhbmsgZm9sbG93aW5nIHRoZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0iIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudC4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogRnVsbCBsaW5lIGNvbW1lbnRzIG11c3QgaGF2ZSB0d28gYmxhbmtzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB0aGUgIi0tIiB0aGF0IHN0YXJ0cyB0aGUgY29tbWVudCwKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEEgbGluZSBjb25zaXN0aW5nIG9ubHkgb2YgdGhlICItLSIKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycywgcG9zc2libHkgcHJlY2VkZWQgYnkgYmxhbmtzIGlzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZC4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQSBjb21tZW50IHN0YXJ0aW5nIHdpdGggIi0teCIgd2hlcmUgeCBpcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpYWwgY2hhcmFjdGVyIGlzIHBlcm1pdHRlZC4gVGhpcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3MgcHJvcGVyIHByb2Nlc3Npbmcgb2YgdGhlIG91dHB1dAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgc3BlY2lhbGl6ZWQgdG9vbHMgaW5jbHVkaW5nCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGduYXRwcmVwICh3aGVyZSAtLSEgaXMgdXNlZCkgYW5kIHRoZSBTUEFSSwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5ub3RhdGlvbiBsYW5ndWFnZSAod2hlcmUgLS0jIGlzIHVzZWQpLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgcnVsZSwgYSBzcGVjaWFsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciBpcyBkZWZpbmVkIGFzIGJlaW5nIGluIG9uZSBvZiB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkgcmFuZ2VzIDE2IzIxIy4uMTYjMkYjIG9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IzNBIy4uMTYjM0YjLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBIGxpbmUgY29uc2lzdGluZyBlbnRpcmVseSBvZiBtaW51cyBzaWducywKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libHkgcHJlY2VkZWQgYnkgYmxhbmtzLCBpcyBwZXJtaXR0ZWQuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYm94CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzIHdoZXJlIGxpbmVzIG9mIG1pbnVzIHNpZ25zIGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGZvcm0gdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBib3guCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIElmIGEgY29tbWVudCBzdGFydHMgYW5kIGVuZHMgd2l0aCAiLS0iIGlzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZCBhcyBsb25nIGFzIGF0IGxlYXN0IG9uZSBibGFuawogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dzIHRoZSBpbml0aWFsICItLSIuIFRvZ2V0aGVyIHdpdGgKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByZWNlZGluZyBydWxlLCB0aGlzIGFsbG93cyB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0aW9uIG9mIGJveCBjb21tZW50cywgYXMgc2hvd24gaW4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBleGFtcGxlOgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gVGhpcyBpcyBhIGJveCBjb21tZW50IC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLQogICAtLSAgICAgIERPU19MSU5FX0VORElOR1MgICAgIENoZWNrIHRoYXQgbm8gRE9TIGxpbmUgdGVybWluYXRvcnMgYXJlIHByZXNlbnQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgbGluZXMgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2luZ2xlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkuTEYgY2hhcmFjdGVyLiBJbiBwYXJ0aWN1bGFyIHRoZSBET1MgbGluZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0b3Igc2VxdWVuY2UgQ1IgLyBMRiBpcyBub3QgYWxsb3dlZCkuCiAgIC0tCiAgIC0tICAgICAgRU5EICAgICAgICAgICAgICAgICAgQ2hlY2sgZW5kL2V4aXQgbGFiZWxzLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsIGxhYmVscyBvbiBlbmQgc3RhdGVtZW50cyBlbmRpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9ncmFtcyBhbmQgb24gZXhpdCBzdGF0ZW1lbnRzIGV4aXRpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZCBsb29wcywgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQuCiAgIC0tCiAgIC0tICAgICAgR05BVCAgICAgICAgICAgICAgICAgRW5mb3JjZXMgYSBzZXQgb2Ygc3R5bGUgY29udmVudGlvbnMgdGhhdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmQgdG8gdGhlIHN0eWxlIHVzZWQgaW4gdGhlIEdOQVQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZS4gIEFsbCBjb21waWxlciB1bml0cyBhcmUgYWx3YXlzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSB3aXRoIHRoaXMga2V5d29yZCBzcGVjaWZpZWQuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gZm9yIHRoZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlIGNvbnZlbnRpb25zIGltcG9zZWQgYnkgdGhpcyBrZXl3b3JkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGJvZHkgb2YgdGhlIHBhY2thZ2UgIlN0eWxlIiBpbiB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlciBzb3VyY2VzLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbm90IG5vcm1hbGx5IHVzZSB0aGlzIGtleXdvcmQuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IE1VU1QgdXNlIGl0IGZvciBjb21waWxpbmcgYW55CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UtZGVmaW5lZCB1bml0LCBvciBmb3IgYWRkaW5nIGNoaWxkcmVuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYW55IGxhbmd1YWdlLWRlZmluZWQgdW5pdCBvdGhlciB0aGFuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YW5kYXJkIi4KICAgLS0KICAgLS0gICAgICBIVEFCUyAgICAgICAgICAgICAgICBObyBob3Jpem9udGFsIHRhYnMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgSG9yaXpvbnRhbCB0YWIgY2hhcmFjdGVycyBhcmUgbm90IHBlcm1pdHRlZCBpbgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgdGV4dC4gVG9nZXRoZXIgd2l0aCB0aGUgQkxBTktTCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vIGJsYW5rcyBhdCBlbmQgb2YgbGluZSkgb3B0aW9uLCB0aGlzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mb3JjZXMgYSBjYW5vbmljYWwgZm9ybSBmb3IgdGhlIHVzZSBvZiBibGFua3MKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZXBhcmF0ZSBzb3VyY2UgdG9rZW5zLgogICAtLQogICAtLSAgICAgIElGX1RIRU4gICAgICAgICAgICAgIENoZWNrIGlmLXRoZW4gbGF5b3V0LgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBrZXl3b3JkIHRoZW4gbXVzdCBhcHBlYXIgZWl0aGVyIG9uIHRoZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgbGluZSBhcyB0aGUgY29ycmVzcG9uZGluZyBpZiwgb3Igb24gYSBsaW5lCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gaXRzIG93biwgbGluZWQgdXAgdW5kZXIgdGhlIGlmIHdpdGggYXQgbGVhc3QKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBvbmUgbm9uLWJsYW5rIGxpbmUgaW4gYmV0d2VlbiBjb250YWluaW5nIGFsbCBvcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIGNvbmRpdGlvbiB0byBiZSB0ZXN0ZWQuCiAgIC0tCiAgIC0tICAgICAgS0VZV09SRCAgICAgICAgICAgICAgQ2hlY2sga2V5d29yZCBjYXNpbmcuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIGtleXdvcmRzIG11c3QgYmUgaW4gbG93ZXIgY2FzZSAod2l0aCB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24gb2Yga2V5d29yZHMgc3VjaCBhcyBkaWdpdHMgdXNlZCBhcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBuYW1lcyB0byB3aGljaCB0aGlzIGNoZWNrIGRvZXMgbm90CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHkpLgogICAtLQogICAtLSAgICAgIExBWU9VVCAgICAgICAgICAgICAgIENoZWNrIGxheW91dC4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXQgb2Ygc3RhdGVtZW50IGFuZCBkZWNsYXJhdGlvbiBjb25zdHJ1Y3RzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBmb2xsb3cgdGhlIHJlY29tbWVuZGF0aW9ucyBpbiB0aGUgQWRhCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIE1hbnVhbCwgYXMgaW5kaWNhdGVkIGJ5IHRoZSBmb3JtIG9mCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5bnRheCBydWxlcy4gRm9yIGV4YW1wbGUgYW4gZWxzZSBrZXl3b3JkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBsaW5lZCB1cCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGlmCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdHdvIHJlc3BlY3RzIGluIHdoaWNoIHRoZSBzdHlsZSBydWxlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mb3JjZWQgYnkgdGhpcyBjaGVjayBvcHRpb24gYXJlIG1vcmUgbGliZXJhbAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gdGhvc2UgaW4gdGhlIEFkYSBSZWZlcmVuY2UgTWFudWFsLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpcnN0IGluIHRoZSBjYXNlIG9mIHJlY29yZCBkZWNsYXJhdGlvbnMsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgcGVybWlzc2libGUgdG8gcHV0IHRoZSByZWNvcmQga2V5d29yZCBvbgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHR5cGUga2V5d29yZCwgYW5kIHRoZW4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZW5kIGluIGVuZCByZWNvcmQgbXVzdCBsaW5lIHVwIHVuZGVyIHR5cGUuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIHR3bwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dHMgaXMgYWNjZXB0YWJsZToKICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHEgaXMgcmVjb3JkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA6IGludGVnZXI7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA6IGludGVnZXI7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHJlY29yZDsKICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHEgaXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIDogaW50ZWdlcjsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIDogaW50ZWdlcjsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgcmVjb3JkOwogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCwgaW4gdGhlIGNhc2Ugb2YgYSBibG9jayBzdGF0ZW1lbnQsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBwZXJtaXR0ZWQgYWx0ZXJuYXRpdmUgaXMgdG8gcHV0IHRoZSBibG9jawogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGRlY2xhcmUgb3IgYmVnaW4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBhbmQgdGhlbiBsaW5lIHRoZSBlbmQga2V5d29yZCB1cCB1bmRlcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBibG9jayBsYWJlbC4gRm9yIGV4YW1wbGUgYm90aCB0aGUgZm9sbG93aW5nCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIHBlcm1pdHRlZDoKICAgLS0KICAgLS0KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9jayA6IGRlY2xhcmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIDogSW50ZWdlciA6PSAzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyAoQSwgQSk7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIEJsb2NrOwogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrIDoKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsYXJlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA6IEludGVnZXIgOj0gMzsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgKEEsIEEpOwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBCbG9jazsKICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2FtZSBhbHRlcm5hdGl2ZSBmb3JtYXQgaXMgYWxsb3dlZCBmb3IKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wcy4gRm9yIGV4YW1wbGUsIGJvdGggb2YgdGhlIGZvbGxvd2luZyBhcmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWQ6CiAgIC0tCiAgIC0tCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYXIgOiB3aGlsZSBKIDwgMTAgbG9vcAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgKEopIDo9IDA7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGxvb3AgQ2xlYXI7CiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYXIgOgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIEogPCAxMCBsb29wCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSAoSikgOj0gMDsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgbG9vcCBDbGVhcjsKICAgLS0KICAgLS0KICAgLS0KICAgLS0gICAgICBMSU5FX0xFTkdUSCAgICAgICAgICBDaGVjayBtYXhpbXVtIGxpbmUgbGVuZ3RoLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsZW5ndGggb2Ygc291cmNlIGxpbmVzIG11c3Qgbm90IGV4Y2VlZCA3OQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMsIGluY2x1ZGluZyBhbnkgdHJhaWxpbmcgYmxhbmtzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIDc5IGFsbG93cyBjb252ZW5pZW50IGRpc3BsYXkgb24KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBhbiA4MCBjaGFyYWN0ZXIgd2lkZSBkZXZpY2Ugb3Igd2luZG93LCBhbGxvd2luZwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwb3NzaWJsZSBzcGVjaWFsIHRyZWF0bWVudCBvZiA4MCBjaGFyYWN0ZXIKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy4KICAgLS0KICAgLS0gICAgICBOT05FICAgICAgICAgICAgICAgICBDbGVhciBhbnkgcHJldmlvdXNseSBzZXQgc3R5bGUgY2hlY2tzLgogICAtLQogICAtLSAgICAgIE9SREVSRURfU1VCUFJPR1JBTVMgIENoZWNrIG9yZGVyIG9mIHN1YnByb2dyYW0gYm9kaWVzLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBzdWJwcm9ncmFtIGJvZGllcyBpbiBhIGdpdmVuIHNjb3BlIChlLmcuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBwYWNrYWdlIGJvZHkpIG11c3QgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcmRlcmluZyBydWxlIHVzZXMgbm9ybWFsIEFkYSBydWxlcyBmb3IKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJpbmcgc3RyaW5ncywgaWdub3JpbmcgY2FzaW5nIG9mIGxldHRlcnMsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHRoYXQgaWYgdGhlcmUgaXMgYSB0cmFpbGluZyBudW1lcmljCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGlzIHN1ZmZpeCBpcyB1c2VkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9yZGVyaW5nIChlLmcuIEp1bmsyIGNvbWVzIGJlZm9yZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmsxMCkuCiAgIC0tCiAgIC0tICAgICAgUFJBR01BICAgICAgICAgICAgICAgQ2hlY2sgcHJhZ21hIGNhc2luZy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBQcmFnbWEgbmFtZXMgbXVzdCBiZSB3cml0dGVuIGluIG1peGVkIGNhc2UsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcywgdGhlIGluaXRpYWwgbGV0dGVyIGFuZCBhbnkgbGV0dGVyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGFuIHVuZGVyc2NvcmUgbXVzdCBiZSB1cHBlcmNhc2UuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIG90aGVyIGxldHRlcnMgbXVzdCBiZSBsb3dlcmNhc2UuCiAgIC0tCiAgIC0tICAgICAgUkVGRVJFTkNFUyAgICAgICAgICAgQ2hlY2sgcmVmZXJlbmNlcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgaWRlbnRpZmllciByZWZlcmVuY2VzIG11c3QgYmUgY2FzZWQgaW4gdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSB3YXkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgZGVjbGFyYXRpb24uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gc3BlY2lmaWMgY2FzaW5nIHN0eWxlIGlzIGltcG9zZWQgb24KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVycy4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgZm9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lzdGVuY3kgb2YgcmVmZXJlbmNlcyB3aXRoIGRlY2xhcmF0aW9ucy4KICAgLS0KICAgLS0gICAgICBTUEVDUyAgICAgICAgICAgICAgICBDaGVjayBzZXBhcmF0ZSBzcGVjcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSBkZWNsYXJhdGlvbnMgKCJzcGVjcyIpIGFyZSByZXF1aXJlZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWJwcm9ncmFtcyAoYSBib2R5IGlzIG5vdCBhbGxvd2VkIHRvIHNlcnZlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgaXRzIG93biBkZWNsYXJhdGlvbikuIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcGFyYW1ldGVybGVzcyBsaWJyYXJ5IGxldmVsIHByb2NlZHVyZXMgYXJlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHJlcXVpcmVkIHRvIGhhdmUgYSBzZXBhcmF0ZSBkZWNsYXJhdGlvbi4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4Y2VwdGlvbiBjb3ZlcnMgdGhlIG1vc3QgZnJlcXVlbnQgZm9ybSBvZgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW4gcHJvZ3JhbSBwcm9jZWR1cmVzLgogICAtLQogICAtLSAgICAgIFNUQU5EQVJEX0NBU0lORyAgICAgIENoZWNrIGNhc2luZyBvZiBlbnRpdGllcyBpbiBTdGFuZGFyZC4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbnkgaWRlbnRpZmllciBmcm9tIFN0YW5kYXJkIG11c3QgYmUgY2FzZWQgdG8KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB0aGUgcHJlc2VudGF0aW9uIGluIHRoZSBBZGEgUmVmZXJlbmNlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIChmb3IgZXhhbXBsZSwgSW50ZWdlciBhbmQgQVNDSUkuTlVMKS4KICAgLS0KICAgLS0gICAgICBUT0tFTiAgICAgICAgICAgICAgICBDaGVjayB0b2tlbiBzcGFjaW5nLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdG9rZW4gc3BhY2luZyBydWxlcyBhcmUgZW5mb3JjZWQ6CiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoZSBrZXl3b3JkcyBhYnMgYW5kIG5vdCBtdXN0IGJlIGZvbGxvd2VkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGEgc3BhY2UuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoZSB0b2tlbiA9PiBtdXN0IGJlIHN1cnJvdW5kZWQgYnkgc3BhY2VzLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgdG9rZW4gPD4gbXVzdCBiZSBwcmVjZWRlZCBieSBhIHNwYWNlIG9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgbGVmdCBwYXJlbnRoZXNpcy4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQmluYXJ5IG9wZXJhdG9ycyBvdGhlciB0aGFuICoqIG11c3QgYmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm91bmRlZCBieSBzcGFjZXMuIFRoZXJlIGlzIG5vCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uIG9uIHRoZSBsYXlvdXQgb2YgdGhlICoqIGJpbmFyeQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvci4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ29sb24gbXVzdCBiZSBzdXJyb3VuZGVkIGJ5IHNwYWNlcy4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ29sb24tZXF1YWwgKGFzc2lnbm1lbnQpIG11c3QgYmUgc3Vycm91bmRlZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBzcGFjZXMuCiAgIC0tCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIENvbW1hIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIGxpbmUsIG9yIGJlIGltbWVkaWF0ZWx5IHByZWNlZGVkIGJ5CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgbm9uLWJsYW5rIGNoYXJhY3RlciwgYW5kIG11c3QgYmUgZm9sbG93ZWQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBzcGFjZS4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSWYgdGhlIHRva2VuIHByZWNlZGluZyBhIGxlZnQgcGFyZW4gZW5kcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgbGV0dGVyIG9yIGRpZ2l0LCB0aGVuIGEgc3BhY2UgbXVzdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSB0aGUgdHdvIHRva2Vucy4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQSByaWdodCBwYXJlbnRoZXNpcyBtdXN0IGVpdGhlciBiZSB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Qgbm9uLWJsYW5rIGNoYXJhY3RlciBvbiBhIGxpbmUsIG9yIGl0CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgcHJlY2VkZWQgYnkgYSBub24tYmxhbmsgY2hhcmFjdGVyLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBIHNlbWljb2xvbiBtdXN0IG5vdCBiZSBwcmVjZWRlZCBieQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHNwYWNlLCBhbmQgbXVzdCBub3QgYmUgZm9sbG93ZWQgYnkKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBub24tYmxhbmsgY2hhcmFjdGVyLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBIHVuYXJ5IHBsdXMgb3IgbWludXMgbWF5IG5vdCBiZSBmb2xsb3dlZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBhIHNwYWNlLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBIHZlcnRpY2FsIGJhciBtdXN0IGJlIHN1cnJvdW5kZWQgYnkKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBhYm92ZSBydWxlcywgYXBwZWFyaW5nIGluIGNvbHVtbiBvbmUgaXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBhbHdheXMgcGVybWl0dGVkLCB0aGF0IGlzLCBjb3VudHMgYXMgbWVldGluZwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVpdGhlciBhIHJlcXVpcmVtZW50IGZvciBhIHJlcXVpcmVkIHByZWNlZGluZwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlLCBvciBhcyBtZWV0aW5nIGEgcmVxdWlyZW1lbnQgZm9yIG5vCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nIHNwYWNlLgogICAtLQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGVhcmluZyBhdCB0aGUgZW5kIG9mIGEgbGluZSBpcyBhbHNvIGFsd2F5cwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZCwgdGhhdCBpcywgY291bnRzIGFzIG1lZXRpbmcgZWl0aGVyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZXF1aXJlbWVudCBmb3IgYSBmb2xsb3dpbmcgc3BhY2UsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXMgbWVldGluZyBhIHJlcXVpcmVtZW50IGZvciBubyBmb2xsb3dpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZS4KICAgLS0KICAgLS0gICAgICBVTk5FQ0VTU0FSWV9CTEFOS19MSU5FUwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciB1bm5lY2Vzc2FyeSBibGFuayBsaW5lcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBBIGJsYW5rIGxpbmUgaXMgY29uc2lkZXJlZCB1bm5lY2Vzc2FyeSBpZiBpdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcnMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSwgb3IgaWYgbW9yZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gb25lIGJsYW5rIGxpbmUgb2NjdXJzIGluIHNlcXVlbmNlLgogICAtLQogICAtLSAgICAgIFZUQUJTICAgICAgICAgICAgICAgIE5vIGZvcm0gZmVlZHMgb3IgdmVydGljYWwgdGFicy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtIGZlZWRzIG9yIHZlcnRpY2FsIHRhYiBjaGFyYWN0ZXJzIGFyZSBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWQgaW4gdGhlIHNvdXJjZSB0ZXh0LgogICAtLQogICAtLSAgICAgIFhUUkFfUEFSRU5TICAgICAgICAgIENoZWNrIGZvciB0aGUgdXNlIG9mIGFuIHVubmVjZXNzYXJ5IGV4dHJhCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgb2YgcGFyZW50aGVzZXMgKEMgLSBzdHlsZSkgYXJvdW5kCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9ucyBpbiBpZiBzdGF0ZW1lbnRzLCB3aGlsZSBzdGF0ZW1lbnRzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGV4aXQgc3RhdGVtZW50cy4KCiAgIFNfR0NDX1N0eWxlWCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1NUWUxFX0NIRUNLUyAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1nbmF0ZywhLWduYXR5KiI7CiAgIC0tICBOT0RPQyAoc2VlIC9TVFlMRV9DSEVDS1MpCgogICBTX0dDQ19TeW1ib2wgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU1lNQk9MX1BSRVBST0NFU1NJTkc9IiAmICciJyAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0ZUQiICYgJyInOwogICAtLSAgICAgICAgL1NZTUJPTF9QUkVQUk9DRVNTSU5HPSJzeW1ib2w9dmFsdWUiCiAgIC0tCiAgIC0tICAgRGVmaW5lIG9yIHJlZGVmaW5lIGEgcHJlcHJvY2Vzc2luZyBzeW1ib2wsIGFzc29jaWF0ZWQgd2l0aCB2YWx1ZS4KICAgLS0gICBJZiAiPXZhbHVlIiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgc3ltYm9sIGlzIFRydWUuCiAgIC0tICAgQSBzeW1ib2wgaXMgYW4gaWRlbnRpZmllciwgZm9sbG93aW5nIG5vcm1hbCBBZGEgKGNhc2UtaW5zZW5zaXRpdmUpCiAgIC0tICAgcnVsZXMgZm9yIGl0cyBzeW50YXgsIGFuZCB2YWx1ZSBpcyBhbnkgc2VxdWVuY2UgKGluY2x1ZGluZyBhbiBlbXB0eQogICAtLSAgIHNlcXVlbmNlKSBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIHNldCAobGV0dGVycywgZGlnaXRzLCBwZXJpb2QsCiAgIC0tICAgdW5kZXJsaW5lKS4gQWRhIHJlc2VydmVkIHdvcmRzIG1heSBiZSB1c2VkIGFzIHN5bWJvbHMsIHdpdGggdGhlCiAgIC0tICAgZXhjZXB0aW9ucyBvZiAiaWYiLCAiZWxzZSIsICJlbHNpZiIsICJlbmQiLCAiYW5kIiwgIm9yIiBhbmQgInRoZW4iLgogICAtLQogICAtLSAgIEEgc3ltYm9sIGRlY2xhcmVkIHdpdGggdGhpcyBxdWFsaWZpZXIgb24gdGhlIGNvbW1hbmQgbGluZSByZXBsYWNlcwogICAtLSAgIGEgc3ltYm9sIHdpdGggdGhlIHNhbWUgbmFtZSBlaXRoZXIgaW4gYSBkZWZpbml0aW9uIGZpbGUgb3Igc3BlY2lmaWVkCiAgIC0tICAgd2l0aCBhIHN3aXRjaCAtRCBpbiB0aGUgcHJlcHJvY2Vzc29yIGRhdGEgZmlsZS4KICAgLS0KICAgLS0gICBUaGlzIHF1YWxpZmllciBpcyBzaW1pbGFyIHRvIHF1YWxpZmllciAvQVNTT0NJQVRFIG9mCiAgIC0tICAgR05BVCBQUkVQUk9DRVNTSU5HLgoKICAgU19HQ0NfU3ludGF4ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NZTlRBWF9PTkxZICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHMiOwogICAtLSAgICAgICAgL05PU1lOVEFYX09OTFkgKEQpCiAgIC0tICAgICAgICAvU1lOVEFYX09OTFkKICAgLS0KICAgLS0gICBSdW4gR05BVCBpbiBzeW50YXggY2hlY2tpbmcgb25seSBtb2RlLiAgWW91IGNhbiBjaGVjayBhIHNlcmllcyBvZgogICAtLSAgIGZpbGVzIGluIGEgc2luZ2xlIGNvbW1hbmQsIGFuZCBjYW4gdXNlIHdpbGQgY2FyZHMgdG8gc3BlY2lmeSBzdWNoIGEKICAgLS0gICBncm91cCBvZiBmaWxlcy4KICAgLS0KICAgLS0gICBZb3UgbWF5IHVzZSBvdGhlciBxdWFsaWZpZXJzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhpcyBxdWFsaWZpZXIuIEluCiAgIC0tICAgcGFydGljdWxhciwgL0xJU1QgYW5kIC9SRVBPUlRfRVJST1JTPVZFUkJPU0UgYXJlIHVzZWZ1bCB0byBjb250cm9sIHRoZQogICAtLSAgIGZvcm1hdCBvZiBhbnkgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgogICAtLQogICAtLSAgIFRoZSBvdXRwdXQgaXMgc2ltcGx5IHRoZSBlcnJvciBtZXNzYWdlcywgaWYgYW55LiBObyBvYmplY3QgZmlsZSBvciBBTEkKICAgLS0gICBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIHN5bnRheC1vbmx5IGNvbXBpbGF0aW9uLiBBbHNvLCBubyB1bml0cyBvdGhlcgogICAtLSAgIHRoYW4gdGhlIG9uZSBzcGVjaWZpZWQgYXJlIGFjY2Vzc2VkLiBGb3IgZXhhbXBsZSwgaWYgYSB1bml0ICJYIiB3aXRoJ3MKICAgLS0gICBhIHVuaXQgIlkiLCBjb21waWxpbmcgdW5pdCAiWCIgaW4gc3ludGF4IGNoZWNrIG9ubHkgbW9kZSBkb2VzIG5vdAogICAtLSAgIGFjY2VzcyB0aGUgc291cmNlIGZpbGUgY29udGFpbmluZyB1bml0ICJZIi4KICAgLS0KICAgLS0gICBOb3JtYWxseSwgR05BVCBhbGxvd3Mgb25seSBhIHNpbmdsZSB1bml0IGluIGEgc291cmNlIGZpbGUuIEhvd2V2ZXIsCiAgIC0tICAgdGhpcyByZXN0cmljdGlvbiBkb2VzIG5vdCBhcHBseSBpbiBzeW50YXgtY2hlY2stb25seSBtb2RlLCBhbmQgaXQgaXMKICAgLS0gICBwb3NzaWJsZSB0byBjaGVjayBhIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBjb21waWxhdGlvbiB1bml0cwogICAtLSAgIGNvbmNhdGVuYXRlZCB0b2dldGhlci4gVGhpcyBpcyBwcmltYXJpbHkgdXNlZCBieSB0aGUgR05BVCBDSE9QCiAgIC0tICAgY29tbWFuZC4KCiAgIFNfR0NDX1RhYmxlICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9UQUJMRV9NVUxUSVBMSUVSPSMiICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRUIyI7CiAgIC0tICAgICAgICAvVEFCTEVfTVVMVElQTElFUj1ubm4KICAgLS0KICAgLS0gICBBbGwgY29tcGlsZXIgdGFibGVzIHN0YXJ0IGF0IG5ubiB0aW1lcyB1c3VhbCBzdGFydGluZyBzaXplLgoKICAgU19HQ0NfVHJhY2UgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1RSQUNFX1VOSVRTICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdGRjIjsKICAgLS0gICAgICAgIC9UUkFDRV9VTklUUwogICAtLSAgICAgICAgL05PVFJBQ0VfVU5JVFMKICAgLS0KICAgLS0gICBUaGlzIHN3aXRjaCB0aGF0IGRvZXMgZm9yIHRoZSBmcm9udGVuZCB3aGF0IC9WRVJCT1NFIGRvZXMgZm9yIHRoZQogICAtLSAgIGJhY2tlbmQuIFRoZSBzeXN0ZW0gcHJpbnRzIHRoZSBuYW1lIG9mIGVhY2ggdW5pdCwgZWl0aGVyIGEgY29tcGlsYXRpb24KICAgLS0gICB1bml0IG9yIG5lc3RlZCB1bml0LCBhcyBpdCBpcyBiZWluZyBhbmFseXplZC4KCiAgIFNfR0NDX1RyZWUgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9UUkVFX09VVFBVVCAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR0IjsKICAgLS0gICAgICAgIC9UUkVFX09VVFBVVAogICAtLSAgICAgICAgL05PVFJFRV9PVVRQVVQKICAgLS0KICAgLS0gICBDYXVzZSBHTkFUIHRvIHdyaXRlIHRoZSBpbnRlcm5hbCB0cmVlIGZvciBhIHVuaXQgdG8gYSBmaWxlICh3aXRoIHRoZQogICAtLSAgIGZpbGV0eXBlIEFUQiBmb3IgYSBib2R5IG9yIEFUUyBmb3IgYSBzcGVjKS4gIFRoaXMgaXMgbm90IG5vcm1hbGx5CiAgIC0tICAgcmVxdWlyZWQsIGJ1dCBpcyB1c2VkIGJ5IHNlcGFyYXRlIGFuYWx5c2lzIHRvb2xzLiBUeXBpY2FsbHkgdGhlc2UKICAgLS0gICB0b29scyBkbyB0aGUgbmVjZXNzYXJ5IGNvbXBpbGF0aW9ucyBhdXRvbWF0aWNhbGx5LCBzbyB5b3Ugc2hvdWxkIG5ldmVyCiAgIC0tICAgaGF2ZSB0byBzcGVjaWZ5IHRoaXMgc3dpdGNoIGluIG5vcm1hbCBvcGVyYXRpb24uCgogICBTX0dDQ19UcnlzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVFJZX1NFTUFOVElDUyAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0cSI7CiAgIC0tICAgICAgICAvVFJZX1NFTUFOVElDUwogICAtLSAgICAgICAgL05PVFJZX1NFTUFOVElDUwogICAtLQogICAtLSAgIEluIG5vcm1hbCBvcGVyYXRpb24gbW9kZSB0aGUgY29tcGlsZXIgZmlyc3QgcGFyc2VzIHRoZSBwcm9ncmFtIGFuZAogICAtLSAgIGRldGVybWluZXMgaWYgdGhlcmUgYXJlIGFueSBzeW50YXggZXJyb3JzLiBJZiB0aGVyZSBhcmUsIGFwcHJvcHJpYXRlCiAgIC0tICAgZXJyb3IgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBhbmQgY29tcGlsYXRpb24gaXMgaW1tZWRpYXRlbHkKICAgLS0gICB0ZXJtaW5hdGVkLiAgVGhpcyBxdWFsaWZpZXIgdGVsbHMgR05BVCB0byBjb250aW51ZSB3aXRoIHNlbWFudGljCiAgIC0tICAgYW5hbHlzaXMgZXZlbiBpZiBzeW50YXggZXJyb3JzIGhhdmUgYmVlbiBmb3VuZC4gIFRoaXMgbWF5IGVuYWJsZSB0aGUKICAgLS0gICBkZXRlY3Rpb24gb2YgbW9yZSBlcnJvcnMgaW4gYSBzaW5nbGUgcnVuLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlCiAgIC0tICAgc2VtYW50aWMgYW5hbHl6ZXIgaXMgbW9yZSBsaWtlbHkgdG8gZW5jb3VudGVyIHNvbWUgaW50ZXJuYWwgZmF0YWwKICAgLS0gICBlcnJvciB3aGVuIGdpdmVuIGEgc3ludGFjdGljYWxseSBpbnZhbGlkIHRyZWUuCgogICBTX0dDQ19Vbml0cyAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVU5JVFNfTElTVCAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0dSI7CiAgIC0tICAgICAgICAvTk9VTklUU19MSVNUIChEKQogICAtLSAgICAgICAgL1VOSVRTX0xJU1QKICAgLS0KICAgLS0gICBQcmludCBhIGxpc3Qgb2YgdW5pdHMgcmVxdWlyZWQgYnkgdGhpcyBjb21waWxhdGlvbiBvbiBTWVMkT1VUUFVULiAgVGhlCiAgIC0tICAgbGlzdGluZyBpbmNsdWRlcyBhbGwgdW5pdHMgb24gd2hpY2ggdGhlIHVuaXQgYmVpbmcgY29tcGlsZWQgZGVwZW5kcwogICAtLSAgIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgoKICAgU19HQ0NfVW5pcXVlICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1VOSVFVRV9FUlJPUl9UQUcgIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFUiOwogICAtLSAgICAgICAgL05PVU5JUVVFX0VSUk9SX1RBRyAoRCkKICAgLS0gICAgICAgIC9VTklRVUVfRVJST1JfVEFHCiAgIC0tCiAgIC0tICAgVGFnIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIHdpdGggdGhlIHN0cmluZyAiZXJyb3I6ICIuCgogICBTX0dDQ19VcGNhc2UgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVVBQRVJDQVNFX0VYVEVSTkFMUyAiICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0RiI7CiAgIC0tICAgICAgICAvTk9VUFBFUkNBU0VfRVhURVJOQUxTIChEKQogICAtLSAgICAgICAgL1VQUEVSQ0FTRV9FWFRFUk5BTFMKICAgLS0KICAgLS0gICBGb2xkIGRlZmF1bHQgYW5kIGV4cGxpY2l0IGV4dGVybmFsIG5hbWVzIGluIHByYWdtYXMgSW1wb3J0IGFuZCBFeHBvcnQKICAgLS0gICB0byB1cHBlcmNhc2UgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBERUMgQy4KCiAgIFNfR0NDX1ZhbGlkICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WQUxJRElUWV9DSEVDS0lORz0iICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZkICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWRCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT1BJRVMgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0VmMgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9DT1BJRVMgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZDICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZMT0FUUyAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWZiAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT0ZMT0FUUyAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0VkYgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5fUEFSQU1TICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZpICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PSU5fUEFSQU1TICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWSSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNT0RfUEFSQU1TICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0Vm0gIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9NT0RfUEFSQU1TICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZNICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9QRVJBTkRTICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWbyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT09QRVJBTkRTICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0Vk8gIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEFSQU1FVEVSUyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZwICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PUEFSQU1FVEVSUyAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWUCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSRVRVUk5TICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0VnIgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9SRVRVUk5TICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZSICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNVQlNDUklQVFMgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWcyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1NVQlNDUklQVFMgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0VlMgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEVTVFMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZ0ICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PVEVTVFMgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRWVCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBTEwgIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0VmEgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9ORSAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFZuIjsKICAgLS0gICAgICAgIC9WQUxJRElUWV9DSEVDS0lOR1s9KGtleXdvcmQsWy4uLl0pXQogICAtLQogICAtLSAgIENvbnRyb2wgbGV2ZWwgb2YgdmFsaWRpdHkgY2hlY2tpbmcuCiAgIC0tCiAgIC0tICAgICAgICBERUZBVUxUIChEKSAgICAgSW4gdGhpcyBtb2RlIGNoZWNrcyBhcmUgbWFkZSB0byBwcmV2ZW50CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgZXJyb25lb3VzIGJlaGF2aW9yIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgUk0uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgTm90YWJseSBleHRyYSBjaGVja3MgbWF5IGJlIG5lZWRlZCBmb3IgY2FzZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgYW5kIHN1YnNjcmlwdGVkIGFycmF5IGFzc2lnbm1lbnRzLgogICAtLQogICAtLSAgICAgICAgTk9ORSAgICAgICAgICAgIE5vIHNwZWNpYWwgY2hlY2tzIGZvciBpbnZhbGlkIHZhbHVlcyBhcmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQuIFRoaXMgbWVhbnMgdGhhdCByZWZlcmVuY2VzIHRvCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgY2FuIGNhdXNlIGVycm9uZW91cwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yIGZyb20gY29uc3RydWN0cyBsaWtlIGNhc2Ugc3RhdGVtZW50cwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdWJzY3JpcHRlZCBhcnJheSBhc3NpZ25tZW50cy4gSW4gdGhpcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUsIGludmFsaWQgdmFsdWVzIGNhbiBsZWFkIHRvIGVycm9uZW91cwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgogICAtLQogICAtLSAgICAgICAgRlVMTCAgICAgICAgICAgIEV2ZXJ5IGFzc2lnbm1lbnQgaXMgY2hlY2tlZCBmb3IgdmFsaWRpdHksIHNvCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGFzc2lnbiBpbnZhbGlkIHZhbHVlcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgUk0gc3BlY2lmaWNhbGx5IGFsbG93cyBzdWNoIGFzc2lnbm1lbnRzLAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpbiB0aGlzIG1vZGUsIGludmFsaWQgdmFsdWVzIGNhbiBuZXZlciBiZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkLCBhbmQgYW4gYXR0ZW1wdCB0byBwZXJmb3JtIHN1Y2ggYW4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50IGltbWVkaWF0ZWx5IHJhaXNlcyBDb25zdHJhaW50X0Vycm9yLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgYWxsb3dlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgUk0uIFRoaXMgbW9kZSBpcyBpbnRlbmRlZCBhcyBhIGRlYnVnZ2luZyBhaWQsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1heSBiZSB1c2VmdWwgaW4gaGVscGluZyB0byB0cmFjayBkb3duCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEl0IG1heSBiZSB1c2VmdWwgdG8KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBOb3JtYWxpemVfU2NhbGFycwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIHByYWdtYSB3aGljaCBhdHRlbXB0cyB0byBpbml0aWFsaXplIHdpdGggaW52YWxpZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyB3aGVyZSBwb3NzaWJsZS4KCiAgIFNfR0NDX1ZlcmJvc2UgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXYiOwogICAtLSAgICAgICAgL1ZFUkJPU0UKICAgLS0gICAgICAgIC9OT1ZFUkJPU0UKICAgLS0KICAgLS0gICBTaG93IGNvbW1hbmRzIGdlbmVyYXRlZCBieSB0aGUgR0NDIGRyaXZlci4gTm9ybWFsbHkgdXNlZCBvbmx5IGZvcgogICAtLSAgIGRlYnVnZ2luZyBwdXJwb3NlcyBvciBpZiB5b3UgbmVlZCB0byBiZSBzdXJlIHdoYXQgdmVyc2lvbiBvZiB0aGUKICAgLS0gICBjb21waWxlciB5b3UgYXJlIGV4ZWN1dGluZy4KCiAgIFNfR0NDX1ZlcmJfQXNtIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVkVSQk9TRV9BU00gIiAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUywtdmVyYm9zZV9hc20sIS1jIjsKICAgLS0gICAgICAgIC9OT0FTTSAoRCkKICAgLS0gICAgICAgIC9BU00KICAgLS0KICAgLS0gICBVc2UgdG8gY2F1c2UgdGhlIGFzc2VtYmxlciBzb3VyY2UgZmlsZSB0byBiZSBnZW5lcmF0ZWQsIHVzaW5nIFMgYXMgdGhlCiAgIC0tICAgZmlsZXR5cGUsIGluc3RlYWQgb2YgdGhlIG9iamVjdCBmaWxlLiBUaGlzIG1heSBiZSB1c2VmdWwgaWYgeW91IG5lZWQKICAgLS0gICB0byBleGFtaW5lIHRoZSBnZW5lcmF0ZWQgYXNzZW1ibHkgY29kZS4KCiAgIFNfR0NDX1dhcm4gICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9XQVJOSU5HUz0iICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLWduYXR3cywhLWduYXR3ZSAiICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFMTCAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3YSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT0FMTCAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d0EgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUxMX0dDQyAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItV2FsbCAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJBRF9GSVhFRF9WQUxVRVMgIiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3YiAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT19CQURfRklYRURfVkFMVUVTICIgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d0IgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ09ORElUSU9OQUxTICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdjICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PQ09ORElUSU9OQUxTICIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3QyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT05TVEFOVF9WQVJJQUJMRVMgIiAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d2sgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9DT05TVEFOVF9WQVJJQUJMRVMgIiAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdLICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklNUExJQ0lUX0RFUkVGRVJFTkNFICIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3ZCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT19JTVBMSUNJVF9ERVJFRkVSRU5DRSAiICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d0QgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUxBQk9SQVRJT04gIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdsICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PRUxBQk9SQVRJT04gIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3TCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFUlJPUlMgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d2UgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElESU5HICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdoICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PSElESU5HICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3SCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTVBMRU1FTlRBVElPTiAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d2kgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9JTVBMRU1FTlRBVElPTiAiICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdJICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklORUZGRUNUSVZFX0lOTElORSAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3cCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT0lORUZGRUNUSVZFX0lOTElORSAiICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d1AgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU9ESUZJRURfVU5SRUYgIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdtICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PTU9ESUZJRURfVU5SRUYgIiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3TSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPUFRJT05BTCAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d2EgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9PUFRJT05BTCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdBICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PUk1BTCAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3biAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPQlNPTEVTQ0VOVCAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d2ogIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9PQlNPTEVTQ0VOVCAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdKICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9WRVJMQVlTICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3byAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT09WRVJMQVlTICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d08gIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUkVEVU5EQU5UICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdyICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PUkVEVU5EQU5UICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3UiAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVVBQUkVTUyAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d3MgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVU5JTklUSUFMSVpFRCAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItV3VuaW5pdGlhbGl6ZWQgIiAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOUkVGRVJFTkNFRF9GT1JNQUxTICIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3ZiAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1VOUkVGRVJFTkNFRF9GT1JNQUxTICIgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d0YgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVU5SRUNPR05JWkVEX1BSQUdNQVMgIiAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdnICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PVU5SRUNPR05JWkVEX1BSQUdNQVMgIiAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3RyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVTlVTRUQgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d3UgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9VTlVTRUQgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdVICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZBUklBQkxFU19VTklOSVRJQUxJWkVEICIgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3diAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1ZBUklBQkxFU19VTklOSVRJQUxJWkVEICIgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d1YgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU1QT1JUX0VYUE9SVF9QUkFHTUFTICIgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHd4ICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PSU1QT1JUX0VYUE9SVF9QUkFHTUFTICIgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3WCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBREFfMjAwNV9DT01QQVRJQklMSVRZICIgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d3kgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9BREFfMjAwNV9DT01QQVRJQklMSVRZICIgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdHdZICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOQ0hFQ0tFRF9DT05WRVJTSU9OUyAiICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR3eiAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1VOQ0hFQ0tFRF9DT05WRVJTSU9OUyAiICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d1oiOwogICAtLSAgICAgICAgL05PV0FSTklOR1MKICAgLS0KICAgLS0gICBTdXBwcmVzcyB0aGUgb3V0cHV0IG9mIGFsbCB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGhlIEdOQVQgZnJvbnQgZW5kLgogICAtLSAgIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBnY2MgYmFjayBlbmQuCiAgIC0tCiAgIC0tICAgICAgICAvV0FSTklOR1NbPShrZXl3b3JkWywuLi5dKV0KICAgLS0KICAgLS0gICBJbiBhZGRpdGlvbiB0byBlcnJvciBtZXNzYWdlcywgY29ycmVzcG9uZGluZyB0byBpbGxlZ2FsaXRpZXMgYXMKICAgLS0gICBkZWZpbmVkIGluIHRoZSByZWZlcmVuY2UgbWFudWFsLCB0aGUgY29tcGlsZXIgZGV0ZWN0cyB0d28ga2luZHMgb2YKICAgLS0gICB3YXJuaW5nIHNpdHVhdGlvbnMuICBGaXJzdCwgdGhlIGNvbXBpbGVyIGNvbnNpZGVycyBzb21lIGNvbnN0cnVjdHMKICAgLS0gICBzdXNwaWNpb3VzIGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gYWxlcnQgeW91IHRvIGEgcG9zc2libGUKICAgLS0gICBlcnJvci4gU2Vjb25kLCBpZiB0aGUgY29tcGlsZXIgZGV0ZWN0cyBhIHNpdHVhdGlvbiB0aGF0IGlzIHN1cmUgdG8KICAgLS0gICByYWlzZSBhbiBleGNlcHRpb24gYXQgcnVudGltZSwgaXQgZ2VuZXJhdGVzIGEgd2FybmluZyBtZXNzYWdlLgogICAtLQogICAtLSAgIFlvdSBtYXkgc3BlY2lmeSB0aGUgZm9sbG93aW5nIGtleXdvcmRzIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW9yOgogICAtLQogICAtLSAgIERFRkFVTFQgKEQpICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGFib3ZlLgogICAtLQogICAtLSAgIEFMTCAgICAgICAgICAgICAgICAgICAgIEFjdGl2YXRlIGFsbCBvcHRpb25hbCB3YXJuaW5ncy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmF0ZXMgbW9zdCBvcHRpb25hbCB3YXJuaW5nIG1lc3NhZ2VzLAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSByZW1haW5pbmcgbGlzdCBpbiB0aGlzIHNlY3Rpb24gZm9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscyBvbiBvcHRpb25hbCB3YXJuaW5nIG1lc3NhZ2VzIHRoYXQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgaW5kaXZpZHVhbGx5IGNvbnRyb2xsZWQuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHdhcm5pbmdzIHRoYXQgYXJlIG5vdCB0dXJuZWQgb24gYnkKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG9wdGlvbiBhcmUgQklBU0VEX1JPVU5ESU5HLAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUExJQ0lUX0RFUkVGRVJFTkNFLCBISURJTkcgYW5kCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgRUxBQk9SQVRJT04uIEFsbCBvdGhlciBvcHRpb25hbCBBZGEKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyBhcmUgdHVybmVkIG9uLgogICAtLQogICAtLSAgIE5PQUxMICAgICAgICAgICAgICAgICAgIFN1cHByZXNzIGFsbCBvcHRpb25hbCBlcnJvcnMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcHJlc3NlcyBhbGwgb3B0aW9uYWwgd2FybmluZyBtZXNzYWdlcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2FuIGJlIGFjdGl2YXRlZCBieSBvcHRpb24gQUxMLgogICAtLQogICAtLSAgIEFMTF9HQ0MgICAgICAgICAgICAgICAgIFJlcXVlc3QgYWRkaXRpb25hbCBtZXNzYWdlcyBmcm9tIHRoZSBHQ0MKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZW5kLiAgTW9zdCBvZiB0aGVzZSBhcmUgbm90IHJlbGV2YW50CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gQWRhLgogICAtLQogICAtLSAgIENPTkRJVElPTkFMUyAgICAgICAgICAgIEFjdGl2YXRlIHdhcm5pbmdzIGZvciBjb25kaXRpb25hbAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJlc3Npb25zIHVzZWQgaW4gdGVzdHMgdGhhdCBhcmUga25vd24KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBUcnVlIG9yIEZhbHNlIGF0IGNvbXBpbGUgdGltZS4gVGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyB0aGF0IHN1Y2ggd2FybmluZ3MgYXJlIG5vdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT0NPTkRJVElPTkFMUyAgICAgICAgICBTdXBwcmVzcyB3YXJuaW5ncyBmb3IgY29uZGl0aW9uYWwKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucyB1c2VkIGluIHRlc3RzIHRoYXQgYXJlIGtub3duCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgVHJ1ZSBvciBGYWxzZSBhdCBjb21waWxlIHRpbWUuCiAgIC0tCiAgIC0tICAgSU1QTElDSVRfREVSRUZFUkVOQ0UgICAgQWN0aXZhdGUgd2FybmluZ3Mgb24gaW1wbGljaXQgZGVyZWZlcmVuY2luZy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdXNlIG9mIGEgcHJlZml4IG9mIGFuIGFjY2VzcyB0eXBlIGluIGFuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhlZCBjb21wb25lbnQsIHNsaWNlLCBvciBzZWxlY3RlZCBjb21wb25lbnQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGFuIGV4cGxpY2l0IC5hbGwgd2lsbCBnZW5lcmF0ZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgd2FybmluZy4gV2l0aCB0aGlzIHdhcm5pbmcgZW5hYmxlZCwgYWNjZXNzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzIG9jY3VyIG9ubHkgYXQgcG9pbnRzIHdoZXJlIGFuIGV4cGxpY2l0CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFsbCBhcHBlYXJzIGluIHRoZSBzb3VyY2UgY29kZSAoYXNzdW1pbmcgbm8KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyBhcmUgZ2VuZXJhdGVkIGFzIGEgcmVzdWx0IG9mIHRoaXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24pLiBUaGUgZGVmYXVsdCBpcyB0aGF0IHN1Y2ggd2FybmluZ3MgYXJlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGdlbmVyYXRlZC4gTm90ZSB0aGF0IC9XQVJOSU5HUz1BTEwgZG9lcyBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3QgdGhlIHNldHRpbmcgb2YgdGhpcyB3YXJuaW5nIG9wdGlvbi4KICAgLS0KICAgLS0gICBOT0lNUExJQ0lUX0RFUkVGRVJFTkNFICBTdXBwcmVzcyB3YXJuaW5ncyBvbiBpbXBsaWNpdCBkZXJlZmVyZW5jaW5nLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGluZGV4ZWQgY29tcG9uZW50cywgc2xpY2VzLCBhbmQgc2VsZWN0ZWQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLgogICAtLQogICAtLSAgIEVMQUJPUkFUSU9OICAgICAgICAgICAgIEFjdGl2YXRlIHdhcm5pbmdzIG9uIG1pc3NpbmcgcHJhZ21hCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxhYm9yYXRlX0FsbCBzdGF0ZW1lbnRzLiBUaGUgZGVmYXVsdCBpcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc3VjaCB3YXJuaW5ncyBhcmUgbm90IGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT0VMQUJPUkFUSU9OICAgICAgICAgICBTdXBwcmVzcyB3YXJuaW5ncyBvbiBtaXNzaW5nIHByYWdtYQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsYWJvcmF0ZV9BbGwgc3RhdGVtZW50cy4KICAgLS0KICAgLS0gICBFUlJPUlMgICAgICAgICAgICAgICAgICBXYXJuaW5nIG1lc3NhZ2VzIGFyZSB0byBiZSB0cmVhdGVkIGFzIGVycm9ycy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgd2FybmluZyBzdHJpbmcgc3RpbGwgYXBwZWFycywgYnV0IHRoZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgbWVzc2FnZXMgYXJlIGNvdW50ZWQgYXMgZXJyb3JzLCBhbmQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50IHRoZSBnZW5lcmF0aW9uIG9mIGFuIG9iamVjdCBmaWxlLgogICAtLQogICAtLSAgIEhJRElORyAgICAgICAgICAgICAgICAgIEFjdGl2YXRlIHdhcm5pbmdzIG9uIGhpZGluZyBkZWNsYXJhdGlvbnMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBkZWNsYXJhdGlvbiBpcyBjb25zaWRlcmVkIGhpZGluZyBpZiBpdCBpcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIG5vbi1vdmVybG9hZGFibGUgZW50aXR5LCBhbmQgaXQgZGVjbGFyZXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBlbnRpdHkgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNvbWUgb3RoZXIKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgdGhhdCBpcyBkaXJlY3RseSBvciB1c2UtdmlzaWJsZS4gVGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyB0aGF0IHN1Y2ggd2FybmluZ3MgYXJlIG5vdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT0hJRElORyAgICAgICAgICAgICAgICBTdXBwcmVzcyB3YXJuaW5ncyBvbiBoaWRpbmcgZGVjbGFyYXRpb25zLgogICAtLQogICAtLSAgIElNUExFTUVOVEFUSU9OICAgICAgICAgIEFjdGl2YXRlIHdhcm5pbmdzIGZvciBhIHdpdGggb2YgYW4gaW50ZXJuYWwKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTkFUIGltcGxlbWVudGF0aW9uIHVuaXQsIGRlZmluZWQgYXMgYW55IHVuaXQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBBZGEsIEludGVyZmFjZXMsIEdOQVQsIERFQyBvcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbSBoaWVyYXJjaGllcyB0aGF0IGlzIG5vdCBkb2N1bWVudGVkIGluCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyIHRoZSBBZGEgUmVmZXJlbmNlIE1hbnVhbCBvciB0aGUgR05BVAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1tZXIncyBSZWZlcmVuY2UgTWFudWFsLiBTdWNoIHVuaXRzIGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVuZGVkIG9ubHkgZm9yIGludGVybmFsIGltcGxlbWVudGF0aW9uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVycG9zZXMgYW5kIHNob3VsZCBub3QgYmUgd2l0aCdlZCBieSB1c2VyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbXMuIFRoZSBkZWZhdWx0IGlzIHRoYXQgc3VjaCB3YXJuaW5ncwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnZW5lcmF0ZWQuCiAgIC0tCiAgIC0tICAgTk9JTVBMRU1FTlRBVElPTiAgICAgICAgRGlzYWJsZXMgd2FybmluZ3MgZm9yIGEgd2l0aCBvZiBhbiBpbnRlcm5hbAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdOQVQgaW1wbGVtZW50YXRpb24gdW5pdC4KICAgLS0KICAgLS0gICBJTkVGRkVDVElWRV9JTkxJTkUgICAgICBBY3RpdmF0ZSB3YXJuaW5ncyBvbiBpbmVmZmVjdGl2ZSBwcmFnbWEgSW5saW5lcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2YXRlcyB3YXJuaW5ncyBmb3IgZmFpbHVyZSBvZiBmcm9udCBlbmQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmluZyAoYWN0aXZhdGVkIGJ5IC9JTkxJTkU9RlVMTCkgdG8gaW5saW5lCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBwYXJ0aWN1bGFyIGNhbGwuIFRoZXJlIGFyZSBtYW55IHJlYXNvbnMgZm9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGJlaW5nIGFibGUgdG8gaW5saW5lIGEgY2FsbCwgaW5jbHVkaW5nIG1vc3QKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25seSB0aGF0IHRoZSBjYWxsIGlzIHRvbyBjb21wbGV4IHRvCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lLiBUaGlzIHdhcm5pbmcgY2FuIGFsc28gYmUgdHVybmVkIG9uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgL0lOTElORT1GVUxMLgogICAtLQogICAtLSAgIE5PSU5FRkZFQ1RJVkVfSU5MSU5FICAgIFN1cHByZXNzIHdhcm5pbmdzIG9uIGluZWZmZWN0aXZlIHByYWdtYSBJbmxpbmVzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcHJlc3NlcyB3YXJuaW5ncyBvbiBpbmVmZmVjdGl2ZSBwcmFnbWEKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVzLiBJZiB0aGUgaW5saW5pbmcgbWVjaGFuaXNtIGNhbm5vdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZSBhIGNhbGwsIGl0IHdpbGwgc2ltcGx5IGlnbm9yZSB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IHNpbGVudGx5LgogICAtLQogICAtLSAgIE1PRElGSUVEX1VOUkVGICAgICAgICAgIEFjdGl2YXRlcyB3YXJuaW5ncyBmb3IgdmFyaWFibGVzIHRoYXQgYXJlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduZWQgKHVzaW5nIGFuIGluaXRpYWxpemF0aW9uIHZhbHVlIG9yIHdpdGgKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBvbmUgb3IgbW9yZSBhc3NpZ25tZW50IHN0YXRlbWVudHMpIGJ1dCB3aG9zZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5ldmVyIHJlYWQuIFRoZSB3YXJuaW5nIGlzIHN1cHByZXNzZWQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igdm9sYXRpbGUgdmFyaWFibGVzIGFuZCBhbHNvIGZvciB2YXJpYWJsZXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSByZW5hbWluZ3Mgb2Ygb3RoZXIgdmFyaWFibGVzIG9yIGZvcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFuIGFkZHJlc3MgY2xhdXNlIGlzIGdpdmVuLiBUaGlzIHdhcm5pbmcKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYWxzbyBiZSB0dXJuZWQgb24gdXNpbmcgL1dBUk5JTkdTL09QVElPTkFMLgogICAtLQogICAtLSAgIE5PTU9ESUZJRURfVU5SRUYgICAgICAgIERpc2FibGVzIHdhcm5pbmdzIGZvciB2YXJpYWJsZXMgdGhhdCBhcmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZCBvciBpbml0aWFsaXplZCwgYnV0IG5ldmVyIHJlYWQuCiAgIC0tCiAgIC0tICAgTk9STUFMICAgICAgICAgICAgICAgICAgU2V0cyBub3JtYWwgd2FybmluZyBtb2RlLCBpbiB3aGljaCBlbmFibGVkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgYXJlIGlzc3VlZCBhbmQgdHJlYXRlZCBhcyB3YXJuaW5ncwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGVycm9ycy4gVGhpcyBpcyB0aGUgZGVmYXVsdCBtb2RlLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSB1c2VkIHRvIGNhbmNlbCB0aGUgZWZmZWN0IG9mIGFuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQgL1dBUk5JTkdTPVNVUFBSRVNTIG9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgL1dBUk5JTkdTPUVSUk9SUy4gSXQgYWxzbyBjYW5jZWxzIHRoZSBlZmZlY3QKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgaW1wbGljaXQgL1dBUk5JTkdTPUVSUk9SUyB0aGF0IGlzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVkIGJ5IHRoZSB1c2Ugb2YgL1NUWUxFPUdOQVQuCiAgIC0tCiAgIC0tICAgT0JTT0xFU0NFTlQgICAgICAgICAgICAgQWN0aXZhdGVzIHdhcm5pbmdzIGZvciBjYWxscyB0byBzdWJwcm9ncmFtcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlZCB3aXRoIHByYWdtYSBPYnNvbGVzY2VudCBhbmQgZm9yIHVzZSBvZgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIGluIEFubmV4IEogb2YgdGhlIEFkYSBSZWZlcmVuY2UKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuIEluIHRoZSBjYXNlIG9mIEFubmV4IEosIG5vdCBhbGwKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBhcmUgZmxhZ2dlZC4gSW4gcGFydGljdWxhciB1c2Ugb2YgdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuYW1lZCBwYWNrYWdlcyAobGlrZSBUZXh0X0lPKSwgdXNlIG9mIHBhY2thZ2UKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBBU0NJSSBhbmQgdXNlIG9mIHRoZSBhdHRyaWJ1dGUgJ0NvbnN0cmFpbmVkIGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBmbGFnZ2VkLCBzaW5jZSB0aGVzZSBhcmUgdmVyeSBjb21tb24gYW5kCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgd291bGQgZ2VuZXJhdGUgbWFueSBhbm5veWluZyBwb3NpdGl2ZSB3YXJuaW5ncy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyB0aGF0IHN1Y2ggd2FybmluZ3MgYXJlIG5vdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT09CU09MRVNDRU5UICAgICAgICAgICBEaXNhYmxlcyB3YXJuaW5ncyBvbiB1c2Ugb2Ygb2Jzb2xlc2NlbnQKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcy4KICAgLS0KICAgLS0gICBPUFRJT05BTCAgICAgICAgICAgICAgICBBY3RpdmF0ZSBhbGwgb3B0aW9uYWwgd2FybmluZyBtZXNzYWdlcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgb3RoZXIgb3B0aW9ucyB1bmRlciB0aGlzIHF1YWxpZmllcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXRhaWxzIG9uIG9wdGlvbmFsIHdhcm5pbmcgbWVzc2FnZXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgY29udHJvbGxlZC4gVGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lIGV4Y2VwdGlvbiBpcyB0aGF0IC9XQVJOSU5HUz1PUFRJT05BTAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgYWN0aXZhdGUgd2FybmluZ3MgZm9yIGhpZGluZwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyAoL1dBUk5JTkdTPUhJRElORyksIHNvIGlmIHRoaXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nIGlzIHJlcXVpcmVkIGl0IG11c3QgYmUgZXhwbGljaXRseQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldC4KICAgLS0KICAgLS0gICBOT09QVElPTkFMICAgICAgICAgICAgICBTdXBwcmVzcyBhbGwgb3B0aW9uYWwgd2FybmluZyBtZXNzYWdlcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgb3RoZXIgb3B0aW9ucyB1bmRlciB0aGlzIHF1YWxpZmllcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXRhaWxzIG9uIG9wdGlvbmFsIHdhcm5pbmcgbWVzc2FnZXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgY29udHJvbGxlZC4KICAgLS0KICAgLS0gICBPVkVSTEFZUyAgICAgICAgICAgICAgICBBY3RpdmF0ZSB3YXJuaW5ncyBmb3IgcG9zc2libHkgdW5pbnRlbmRlZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGVmZmVjdHMgb2YgZGVmaW5pbmcgYWRkcmVzcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXVzZXMgdGhhdCBjYXVzZSBvbmUgdmFyaWFibGUgdG8gb3ZlcmxhcAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIuIFRoZSBkZWZhdWx0IGlzIHRoYXQgc3VjaCB3YXJuaW5ncwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnZW5lcmF0ZWQuCiAgIC0tCiAgIC0tICAgTk9PVkVSTEFZUyAgICAgICAgICAgICAgU3VwcHJlc3Mgd2FybmluZ3Mgb24gcG9zc2libHkgdW5pbnRlbmRlZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGVmZmVjdHMgb2YgZGVmaW5pbmcgYWRkcmVzcwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXVzZXMgdGhhdCBjYXVzZSBvbmUgdmFyaWFibGUgdG8gb3ZlcmxhcAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIuCiAgIC0tCiAgIC0tICAgUkVEVU5EQU5UICAgICAgICAgICAgICAgQWN0aXZhdGUgd2FybmluZ3MgZm9yIHJlZHVuZGFudCBjb25zdHJ1Y3RzLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIgYXNzaWdubWVudHMgb2YgYSB2YXJpYWJsZSB0bwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZiwgYW5kIGEgdHlwZSBjb252ZXJzaW9uIHRoYXQgY29udmVydHMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBvYmplY3QgdG8gaXRzIG93biB0eXBlLiBUaGUgZGVmYXVsdAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoYXQgc3VjaCB3YXJuaW5ncyBhcmUgbm90IGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT1JFRFVOREFOVCAgICAgICAgICAgICBTdXBwcmVzcyB3YXJuaW5ncyBmb3IgcmVkdW5kYW50IGNvbnN0cnVjdHMuCiAgIC0tCiAgIC0tICAgU1VQUFJFU1MgICAgICAgICAgICAgICAgQ29tcGxldGVseSBzdXBwcmVzc2UgdGhlIG91dHB1dCBvZiBhbGwgd2FybmluZwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLiAgU2FtZSBhcyAvTk9XQVJOSU5HUy4KICAgLS0KICAgLS0gICBVTkNIRUNLRURfQ09OVkVSU0lPTlMgICBBY3RpdmF0ZXMgd2FybmluZ3Mgb24gdW5jaGVja2VkIGNvbnZlcnNpb25zLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENhdXNlcyB3YXJuaW5ncyB0byBiZSBnZW5lcmF0ZWQgZm9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5jaGVja2VkIGNvbnZlcnNpb25zIHdoZW4gdGhlIHR3byB0eXBlcyBhcmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBrbm93biBhdCBjb21waWxlIHRpbWUgdG8gaGF2ZSBkaWZmZXJlbnQgc2l6ZXMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdGhhdCBzdWNoIHdhcm5pbmdzIGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT1VOQ0hFQ0tFRF9DT05WRVJTSU9OUyBTdXBwcmVzcyB3YXJuaW5ncyBmb3IgdW5jaGVja2VkIGNvbnZlcnNpb25zLgogICAtLQogICAtLSAgIFVOSU5JVElBTElaRUQgICAgICAgICAgIEdlbmVyYXRlIHdhcm5pbmdzIGZvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgR0NDIG9wdGlvbiwgbm90IGFuIEFkYSBvcHRpb24uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSAvT1BUSU1JWkUgcXVhbGlmaWVyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHZhbHVlIG90aGVyIHRoYW4gTk9ORSAoaW4gb3RoZXIgd29yZHMsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBrZXl3b3JkIHdvcmtzIG9ubHkgaWYgb3B0aW1pemF0aW9uIGlzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVybmVkIG9uKS4KICAgLS0KICAgLS0gICBVTlJFRkVSRU5DRURfRk9STUFMUyAgICBBY3RpdmF0ZSB3YXJuaW5ncyBvbiB1bnJlZmVyZW5jZWQgZm9ybWFscy4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBDYXVzZXMgYSB3YXJuaW5nIHRvIGJlIGdlbmVyYXRlZCBpZiBhIGZvcm1hbAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpcyBub3QgcmVmZXJlbmNlZCBpbiB0aGUgYm9keSBvZgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdWJwcm9ncmFtLiBUaGlzIHdhcm5pbmcgY2FuIGFsc28gYmUgdHVybmVkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdXNpbmcgb3B0aW9uIEFMTCBvciBVTlVTRUQuCiAgIC0tCiAgIC0tICAgTk9VTlJFRkVSRU5DRURfRk9STUFMUyAgU3VwcHJlc3Mgd2FybmluZ3Mgb24gdW5yZWZlcmVuY2VkIGZvcm1hbHMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcHJlc3NlcyB3YXJuaW5ncyBmb3IgdW5yZWZlcmVuY2VkIGZvcm1hbAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuIE5vdGUgdGhhdCB0aGUgY29tYmluYXRpb24gVU5VU0VECiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgTk9VTlJFRkVSRU5DRURfRk9STUFMUyBoYXMgdGhlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0IG9mIHdhcm5pbmcgb24gdW5yZWZlcmVuY2VkIGVudGl0aWVzCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGhhbiBzdWJwcm9ncmFtIGZvcm1hbHMuCiAgIC0tCiAgIC0tICAgVU5VU0VEICAgICAgICAgICAgICAgICAgQWN0aXZhdGVzIHdhcm5pbmdzIHRvIGJlIGdlbmVyYXRlZCBmb3IgZW50aXRpZXMKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBkZWZpbmVkIGJ1dCBub3QgcmVmZXJlbmNlZCwgYW5kIGZvcgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzIHRoYXQgYXJlIHdpdGgnZWQgYW5kIG5vdCByZWZlcmVuY2VkLiBJbgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjYXNlIG9mIHBhY2thZ2VzLCBhIHdhcm5pbmcgaXMgYWxzbwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBpZiBubyBlbnRpdGllcyBpbiB0aGUgcGFja2FnZSBhcmUKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VkLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIHBhY2thZ2UKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWZlcmVuY2VkIGJ1dCB0aGUgb25seSByZWZlcmVuY2VzIGFyZSBpbgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBjbGF1c2VzIG9yIHJlbmFtZXMgZGVjbGFyYXRpb25zLCBhIHdhcm5pbmcKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBzdGlsbCBnZW5lcmF0ZWQuIEEgd2FybmluZyBpcyBhbHNvIGdlbmVyYXRlZAogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIGdlbmVyaWMgcGFja2FnZSB0aGF0IGlzIHdpdGgnZWQgYnV0IG5ldmVyCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGVkLiAgSW4gdGhlIGNhc2Ugd2hlcmUgYSBwYWNrYWdlIG9yCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvZ3JhbSBib2R5IGlzIGNvbXBpbGVkLCBhbmQgdGhlcmUgaXMgYQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb24gdGhlIGNvcnJlc3BvbmRpbmcgc3BlYyB0aGF0IGlzIG9ubHkKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VkIGluIHRoZSBib2R5LCBhIHdhcm5pbmcgaXMgYWxzbwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCwgbm90aW5nIHRoYXQgdGhlIHdpdGggY2FuIGJlIG1vdmVkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGJvZHkuIFRoZSBkZWZhdWx0IGlzIHRoYXQgc3VjaCB3YXJuaW5ncwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgZ2VuZXJhdGVkLgogICAtLQogICAtLSAgIE5PVU5VU0VEICAgICAgICAgICAgICAgIFN1cHByZXNzIHdhcm5pbmdzIGZvciB1bnVzZWQgZW50aXRpZXMgYW5kCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCiAgIC0tCiAgIC0tICAgVkFSSUFCTEVTX1VOSU5JVElBTElaRUQgQWN0aXZhdGVzIHdhcm5pbmdzIG9uIHVuYXNzaWduZWQgdmFyaWFibGVzLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENhdXNlcyB3YXJuaW5ncyB0byBiZSBnZW5lcmF0ZWQgd2hlbiBhIHZhcmlhYmxlCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWNjZXNzZWQgd2hpY2ggbWF5IG5vdCBiZSBwcm9wZXJseQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW5pdGlhbGl6ZWQuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdGhhdCBzdWNoIHdhcm5pbmdzIGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC4KICAgLS0KICAgLS0gICBOT1ZBUklBQkxFU19VTklOSVRJQUxJWkVEICAgICAgIFN1cHByZXNzIHdhcm5pbmdzIGZvciB1bmluaXRpYWxpemVkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCgogICBTX0dDQ19XYXJuWCAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9XQVJOSU5HUyAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0d3MiOwogICAtLSAgTk9ET0MgKHNlZSAvV0FSTklOR1MpCgogICBTX0dDQ19Ob19CYWNrIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9fQkFDS19FTkRfV0FSTklOR1MgIiAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi13IjsKICAgLS0gICAgICAgIC9OT19CQUNLX0VORF9XQVJOSU5HUwogICAtLQogICAtLSAgIEluaGliaXQgYWxsIHdhcm5pbmcgbWVzc2FnZXMgb2YgdGhlIEdDQyBiYWNrLWVuZC4KCiAgIFNfR0NDX1dpZGUgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9XSURFX0NIQVJBQ1RFUl9FTkNPRElORz0iICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJSQUNLRVRTICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRXYiAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT05FICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0V24gIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVYICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFdoICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVQUEVSICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRXdSAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTSElGVF9KSVMgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0V3MgIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVVRGOCAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZ25hdFc4ICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVVQyAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRXZSI7CiAgIC0tICAgICAgICAvTk9XSURFX0NIQVJBQ1RFUl9FTkNPRElORyAoRCkKICAgLS0gICAgICAgIC9XSURFX0NIQVJBQ1RFUl9FTkNPRElOR1s9ZW5jb2RlLXR5cGVdCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtZWNoYW5pc20gdXNlZCB0byBlbmNvZGUgd2lkZSBjaGFyYWN0ZXJzLiAgJ2VuY29kZS10eXBlJwogICAtLSAgIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgIEJSQUNLRVRTIChEKSAgICBBIHdpZGUgY2hhcmFjdGVyIGlzIGVuY29kZWQgYXMgWyJ4eHh4Il0gd2hlcmUgWFhYWAogICAtLSAgICAgICAgICAgICAgICAgICBhcmUgZm91ciBoZXhhZGVjaW1hbCBkaWdpdHMgcmVwcmVzZW50aW5nIHRoZSBjb2RpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgKCdQb3MgdmFsdWUpIG9mIHRoZSBjaGFyYWN0ZXIgaW4gdHlwZQogICAtLSAgICAgICAgICAgICAgICAgICBXaWRlX0NoYXJhY3Rlci4gVGhlIGhleGFkZWNpbWFsIGRpZ2l0cyBtYXkgdXNlIHVwcGVyCiAgIC0tICAgICAgICAgICAgICAgICAgIG9yIGxvd2VyIGNhc2UgbGV0dGVycy4KICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgVGhpcyBub3RhdGlvbiBjYW4gYWxzbyBiZSB1c2VkIGZvciB1cHBlciBoYWxmCiAgIC0tICAgICAgICAgICAgICAgICAgIENoYXJhY3RlciB2YWx1ZXMgdXNpbmcgdGhlIGZvcm1hdCBbInh4Il0gd2hlcmUgWFggaXMKICAgLS0gICAgICAgICAgICAgICAgICAgdHdvIGhleGFkZWNpbWFsIGRpZ2l0cyByZXByZXNlbnRpbmcgdGhlIGNvZGluZyAoJ1BvcwogICAtLSAgICAgICAgICAgICAgICAgICB2YWx1ZSkgb2YgdGhlIGNoYXJhY3RlciBpbiB0eXBlIENoYXJhY3RlciAob3IKICAgLS0gICAgICAgICAgICAgICAgICAgV2lkZV9DaGFyYWN0ZXIpLiBUaGUgaGV4YWRlY2ltYWwgZGlnaXRzIG1heSB1c2UgdXBwZXIKICAgLS0gICAgICAgICAgICAgICAgICAgb2YgbG93ZXIgY2FzZS4KICAgLS0KICAgLS0gICBOT05FICAgICAgICAgICAgTm8gd2lkZSBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkLiAgU2FtZQogICAtLSAgICAgICAgICAgICAgICAgICBhcyAvTk9XSURFX0NIQVJDVEVSX0VOQ09ESU5HLgogICAtLQogICAtLSAgIEhFWCAgICAgICAgICAgICBJbiB0aGlzIGVuY29kaW5nLCBhIHdpZGUgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIGJ5CiAgIC0tICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgZml2ZSBjaGFyYWN0ZXIgc2VxdWVuY2U6IEVTQyBhIGIgYyBkCiAgIC0tICAgICAgICAgICAgICAgICAgIFdoZXJlICdhJywgJ2InLCAnYycsIGFuZCAnZCcgYXJlIHRoZSBmb3VyIGhleGFkZWNpbWFsCiAgIC0tICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgKHVzaW5nIHVwcGVyY2FzZSBsZXR0ZXJzKSBvZiB0aGUgd2lkZQogICAtLSAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgY29kZS4gRm9yIGV4YW1wbGUsIEVTQyBBMzQ1IGlzIHVzZWQgdG8KICAgLS0gICAgICAgICAgICAgICAgICAgcmVwcmVzZW50IHRoZSB3aWRlIGNoYXJhY3RlciB3aXRoIGNvZGUgMTYjQTM0NSMuIFRoaXMKICAgLS0gICAgICAgICAgICAgICAgICAgc2NoZW1lIGlzIGNvbXBhdGlibGUgd2l0aCB1c2Ugb2YgdGhlIGZ1bGwKICAgLS0gICAgICAgICAgICAgICAgICAgV2lkZV9DaGFyYWN0ZXIgc2V0LgogICAtLQogICAtLSAgIFVQUEVSICAgICAgICAgICBUaGUgd2lkZSBjaGFyYWN0ZXIgd2l0aCBlbmNvZGluZyAxNiNhYmNkIyB3aGVyZSB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgdXBwZXIgYml0IGlzIG9uIChpbiBvdGhlciB3b3JkcywgImEiIGlzIGluIHRoZSByYW5nZQogICAtLSAgICAgICAgICAgICAgICAgICA4LUYpIGlzIHJlcHJlc2VudGVkIGFzIHR3byBieXRlcywgMTYjYWIjIGFuZCAxNiNjZCMuCiAgIC0tICAgICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgYnl0ZSBtYXkgbmV2ZXIgYmUgYSBmb3JtYXQgY29udHJvbAogICAtLSAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIsIGJ1dCBpcyBub3QgcmVxdWlyZWQgdG8gYmUgaW4gdGhlIHVwcGVyCiAgIC0tICAgICAgICAgICAgICAgICAgIGhhbGYuIFRoaXMgbWV0aG9kIGNhbiBiZSBhbHNvIHVzZWQgZm9yIHNoaWZ0LUpJUyBvcgogICAtLSAgICAgICAgICAgICAgICAgICBFVUMsIHdoZXJlIHRoZSBpbnRlcm5hbCBjb2RpbmcgbWF0Y2hlcyB0aGUgZXh0ZXJuYWwKICAgLS0gICAgICAgICAgICAgICAgICAgY29kaW5nLgogICAtLQogICAtLSAgIFNISUZUX0pJUyAgICAgICBBIHdpZGUgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIGJ5IGEgdHdvLWNoYXJhY3RlcgogICAtLSAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZSwgMTYjYWIjIGFuZCAxNiNjZCMsIHdpdGggdGhlIHJlc3RyaWN0aW9ucwogICAtLSAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgZm9yIHVwcGVyLWhhbGYgZW5jb2RpbmcgYXMgZGVzY3JpYmVkIGFib3ZlLgogICAtLSAgICAgICAgICAgICAgICAgICBUaGUgaW50ZXJuYWwgY2hhcmFjdGVyIGNvZGUgaXMgdGhlIGNvcnJlc3BvbmRpbmcgSklTCiAgIC0tICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkIGFsZ29yaXRobSBmb3IKICAgLS0gICAgICAgICAgICAgICAgICAgU2hpZnQtSklTIGNvbnZlcnNpb24uIE9ubHkgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZQogICAtLSAgICAgICAgICAgICAgICAgICBKSVMgY29kZSBzZXQgdGFibGUgY2FuIGJlIHVzZWQgd2l0aCB0aGlzIGVuY29kaW5nCiAgIC0tICAgICAgICAgICAgICAgICAgIG1ldGhvZC4KICAgLS0KICAgLS0gICBVVEY4ICAgICAgICAgICAgQSB3aWRlIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB1c2luZwogICAtLSAgICAgICAgICAgICAgICAgICBVQ1MgVHJhbnNmb3JtYXRpb24gRm9ybWF0IDggKFVURi04KSBhcyBkZWZpbmVkIGluIEFubmV4CiAgIC0tICAgICAgICAgICAgICAgICAgIFIgb2YgSVNPIDEwNjQ2LTEvQW0uMi4gIERlcGVuZGluZyBvbiB0aGUgY2hhcmFjdGVyCiAgIC0tICAgICAgICAgICAgICAgICAgIHZhbHVlLCB0aGUgcmVwcmVzZW50YXRpb24gaXMgYSBvbmUsIHR3bywgb3IgdGhyZWUgYnl0ZQogICAtLSAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZToKICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgMTYjMDAwMCMtMTYjMDA3ZiM6IDIjMHh4eHh4eHgjCiAgIC0tICAgICAgICAgICAgICAgICAgIDE2IzAwODAjLTE2IzA3ZmYjOiAyIzExMHh4eHh4IyAyIzEweHh4eHh4IwogICAtLSAgICAgICAgICAgICAgICAgICAxNiMwODAwIy0xNiNmZmZmIzogMiMxMTEweHh4eCMgMiMxMHh4eHh4eCMgMiMxMHh4eHh4eCMKICAgLS0KICAgLS0gICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHh4eCBiaXRzIGNvcnJlc3BvbmQgdG8gdGhlIGxlZnQtcGFkZGVkIGJpdHMKICAgLS0gICAgICAgICAgICAgICAgICAgb2YgdGhlIHRoZSAxNi1iaXQgY2hhcmFjdGVyIHZhbHVlLiBOb3RlIHRoYXQgYWxsIGxvd2VyCiAgIC0tICAgICAgICAgICAgICAgICAgIGhhbGYgQVNDSUkgY2hhcmFjdGVycyBhcmUgcmVwcmVzZW50ZWQgYXMgQVNDSUkgYnl0ZXMKICAgLS0gICAgICAgICAgICAgICAgICAgYW5kIGFsbCB1cHBlciBoYWxmIGNoYXJhY3RlcnMgYW5kIG90aGVyIHdpZGUgY2hhcmFjdGVycwogICAtLSAgICAgICAgICAgICAgICAgICBhcmUgcmVwcmVzZW50ZWQgYXMgc2VxdWVuY2VzIG9mIHVwcGVyLWhhbGYgKFRoZSBmdWxsCiAgIC0tICAgICAgICAgICAgICAgICAgIFVURi04IHNjaGVtZSBhbGxvd3MgZm9yIGVuY29kaW5nIDMxLWJpdCBjaGFyYWN0ZXJzIGFzCiAgIC0tICAgICAgICAgICAgICAgICAgIDYtYnl0ZSBzZXF1ZW5jZXMsIGJ1dCBpbiB0aGlzIGltcGxlbWVudGF0aW9uLCBhbGwgVVRGLTgKICAgLS0gICAgICAgICAgICAgICAgICAgc2VxdWVuY2VzIG9mIGZvdXIgb3IgbW9yZSBieXRlcyBsZW5ndGggd2lsbCBiZSB0cmVhdGVkCiAgIC0tICAgICAgICAgICAgICAgICAgIGFzIGlsbGVnYWwpLgogICAtLQogICAtLSAgIEVVQyAgICAgICAgICAgICBBIHdpZGUgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIGJ5IGEgdHdvLWNoYXJhY3RlcgogICAtLSAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZSAxNiNhYiMgYW5kIDE2I2NkIywgd2l0aCBib3RoIGNoYXJhY3RlcnMgYmVpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgaW4gdGhlIHVwcGVyIGhhbGYuIFRoZSBpbnRlcm5hbCBjaGFyYWN0ZXIgY29kZSBpcyB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyBKSVMgY2hhcmFjdGVyIGFjY29yZGluZyB0byB0aGUgRVVDCiAgIC0tICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIGFsZ29yaXRobS4gT25seSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIEpJUwogICAtLSAgICAgICAgICAgICAgICAgICBjb2RlIHNldCB0YWJsZSBjYW4gYmUgdXNlZCB3aXRoIHRoaXMgZW5jb2RpbmcgbWV0aG9kLgoKICAgU19HQ0NfV2lkZVggICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PV0lERV9DSEFSQUNURVJfRU5DT0RJTkcgIiAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRXbiI7CiAgIC0tICBOT0RPQyAoc2VlIC9XSURFX0NIQVJBQ1RFUl9FTkNPRElORykKCiAgIFNfR0NDX1hkZWJ1ZyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9YREVCVUcgIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0RCI7CiAgIC0tICAgICAgICAvTk9YREVCVUcgKEQpCiAgIC0tICAgICAgICAvWERFQlVHCiAgIC0tCiAgIC0tICAgT3V0cHV0IGV4cGFuZGVkIHNvdXJjZSBmaWxlcyBmb3Igc291cmNlIGxldmVsIGRlYnVnZ2luZy4KICAgLS0gICBUaGUgZXhwYW5kZWQgc291cmNlIChzZWUgL0VYUEFORF9TT1VSQ0UpIGlzIHdyaXR0ZW4gdG8gZmlsZXMKICAgLS0gICB3aXRoIG5hbWVzIGZvcm1lZCBieSBhcHBlbmRpbmcgIl9ERyIgdG8gdGhlIGlucHV0IGZpbGUgbmFtZSwKICAgLS0gICBUaGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIGdlbmVyYXRlZCBieSB0aGUgL0RFQlVHIHF1YWxpZmllciB3aWxsIHRoZW4KICAgLS0gICByZWZlciB0byB0aGUgZ2VuZXJhdGVkIGZpbGUuIFRoaXMgYWxsb3dzIHNvdXJjZSBsZXZlbCBkZWJ1Z2dpbmcgdXNpbmcKICAgLS0gICB0aGUgZ2VuZXJhdGVkIGNvZGUgd2hpY2ggaXMgc29tZXRpbWVzIHVzZWZ1bCBmb3IgY29tcGxleCBjb2RlLCBmb3IKICAgLS0gICBleGFtcGxlIHRvIGZpbmQgb3V0IGV4YWN0bHkgd2hpY2ggcGFydCBvZiBhIGNvbXBsZXggY29uc3RydWN0aW9uCiAgIC0tICAgcmFpc2VkIGFuIGV4Y2VwdGlvbi4KCiAgIFNfR0NDX1hyZWYgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9YUkVGPSIgICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR0VORVJBVEUgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLWduYXR4ICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNVUFBSRVNTICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXR4IjsKICAgLS0gICAgICAgIC9YUkVGWz1rZXl3b3JkXQogICAtLQogICAtLSAgIE5vcm1hbGx5IHRoZSBjb21waWxlciBnZW5lcmF0ZXMgZnVsbCBjcm9zcy1yZWZlcmVuY2luZyBpbmZvcm1hdGlvbiBpbgogICAtLSAgIHRoZSAuQUxJIGZpbGUuIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBieSBhIG51bWJlciBvZiB0b29scywKICAgLS0gICBpbmNsdWRpbmcgR05BVCBGSU5EIGFuZCBHTkFUIFhSRUYuCiAgIC0tCiAgIC0tICAgICAgICBHRU5FUkFURSAoRCkgICAgICAgICAgICBHZW5lcmF0ZSBjcm9zcy1yZWZlcmVuY2luZyBpbmZvcm1hdGlvbi4KICAgLS0KICAgLS0gICAgICAgIFNVUFBSRVNTICAgICAgICAgICAgICAgIFN1cHByZXNzIGNyb3NzLXJlZmVyZW5jaW5nIGluZm9ybWF0aW9uLgogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzYXZlcyBzb21lIHNwYWNlIGFuZCBtYXkgc2xpZ2h0bHkKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkIHVwIGNvbXBpbGF0aW9uLCBidXQgbWVhbnMgdGhhdCBzb21lCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29scyBjYW5ub3QgYmUgdXNlZC4KCiAgIFNfR0NDX1plcm8gICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9aRVJPX0NPU1RfRVhDRVBUSU9OUyAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0WiI7CiAgIC0tICAgICAgICAvWkVST19DT1NUX0VYQ0VQVElPTlMKICAgLS0gICAgICAgIC9OT1pFUk9fQ09TVF9FWENFUFRJT05TCiAgIC0tCiAgIC0tICAgQXMgemVyby1jb3N0IGV4Y2VwdGlvbnMgaXMgdGhlIGRlZmF1bHQgb24gVk1TLCB0aGlzIHF1YWxpZmllciBoYXMKICAgLS0gICBubyBlZmZlY3QsIGV4Y2VwdCB0aGF0IGl0IGNhbmNlbHMgdGhlIGVmZmVjdCBvZiBhIHByZXZpb3VzCiAgIC0tICAgL0xPTkdKTVBfU0VUSlVNUCBxdWFsaWZpZXIuCgogICBHQ0NfU3dpdGNoZXMgOiBhbGlhc2VkIGNvbnN0YW50IFN3aXRjaGVzIDo9CiAgICAgKFNfR0NDX0FkYV84MyAgJ0FjY2VzcywKICAgICAgU19HQ0NfQWRhXzk1ICAnQWNjZXNzLAogICAgICBTX0dDQ19BZGFfMDUgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0FzbSAgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfQ2hlY2tzICAnQWNjZXNzLAogICAgICBTX0dDQ19DaGVja3NYICdBY2Nlc3MsCiAgICAgIFNfR0NDX0NvbXByZXMgJ0FjY2VzcywKICAgICAgU19HQ0NfQ29uZmlnICAnQWNjZXNzLAogICAgICBTX0dDQ19DdXJyZW50ICdBY2Nlc3MsCiAgICAgIFNfR0NDX0RlYnVnICAgJ0FjY2VzcywKICAgICAgU19HQ0NfRGVidWdYICAnQWNjZXNzLAogICAgICBTX0dDQ19EYXRhICAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0Rpc3QgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfRGlzdFggICAnQWNjZXNzLAogICAgICBTX0dDQ19FcnJvciAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0Vycm9yWCAgJ0FjY2VzcywKICAgICAgU19HQ0NfRXhwYW5kICAnQWNjZXNzLAogICAgICBTX0dDQ19FeHRlbmQgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0V4dCAgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfRmlsZSAgICAnQWNjZXNzLAogICAgICBTX0dDQ19Gb3JjZSAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0Z1bGwgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfSGVscCAgICAnQWNjZXNzLAogICAgICBTX0dDQ19JZGVudCAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0lkZW50WCAgJ0FjY2VzcywKICAgICAgU19HQ0NfSW1tZWQgICAnQWNjZXNzLAogICAgICBTX0dDQ19JbmxpbmUgICdBY2Nlc3MsCiAgICAgIFNfR0NDX0lubGluZVggJ0FjY2VzcywKICAgICAgU19HQ0NfSnVtcHMgICAnQWNjZXNzLAogICAgICBTX0dDQ19MZW5ndGggICdBY2Nlc3MsCiAgICAgIFNfR0NDX0xpc3QgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfTWFwcGluZyAnQWNjZXNzLAogICAgICBTX0dDQ19NZXNzICAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX05lc3RpbmcgJ0FjY2VzcywKICAgICAgU19HQ0NfTm9hZGMgICAnQWNjZXNzLAogICAgICBTX0dDQ19Ob2xvYWQgICdBY2Nlc3MsCiAgICAgIFNfR0NDX05vc3RpbmMgJ0FjY2VzcywKICAgICAgU19HQ0NfTm9zdGxpYiAnQWNjZXNzLAogICAgICBTX0dDQ19PcHQgICAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX09wdFggICAgJ0FjY2VzcywKICAgICAgU19HQ0NfUG9sbGluZyAnQWNjZXNzLAogICAgICBTX0dDQ19Qcm9qZWN0ICdBY2Nlc3MsCiAgICAgIFNfR0NDX1BzdGEgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfUmVwb3J0ICAnQWNjZXNzLAogICAgICBTX0dDQ19SZXBvcnRYICdBY2Nlc3MsCiAgICAgIFNfR0NDX1JlcGluZm8gJ0FjY2VzcywKICAgICAgU19HQ0NfUmVwaW5mWCAnQWNjZXNzLAogICAgICBTX0dDQ19SVFMgICAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX1NlYXJjaCAgJ0FjY2VzcywKICAgICAgU19HQ0NfU3R5bGUgICAnQWNjZXNzLAogICAgICBTX0dDQ19TdHlsZVggICdBY2Nlc3MsCiAgICAgIFNfR0NDX1N5bWJvbCAgJ0FjY2VzcywKICAgICAgU19HQ0NfU3ludGF4ICAnQWNjZXNzLAogICAgICBTX0dDQ19UYWJsZSAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX1RyYWNlICAgJ0FjY2VzcywKICAgICAgU19HQ0NfVHJlZSAgICAnQWNjZXNzLAogICAgICBTX0dDQ19UcnlzICAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX1VuaXRzICAgJ0FjY2VzcywKICAgICAgU19HQ0NfVW5pcXVlICAnQWNjZXNzLAogICAgICBTX0dDQ19VcGNhc2UgICdBY2Nlc3MsCiAgICAgIFNfR0NDX1ZhbGlkICAgJ0FjY2VzcywKICAgICAgU19HQ0NfVmVyYm9zZSAnQWNjZXNzLAogICAgICBTX0dDQ19WZXJiX0FzbSdBY2Nlc3MsCiAgICAgIFNfR0NDX1dhcm4gICAgJ0FjY2VzcywKICAgICAgU19HQ0NfV2FyblggICAnQWNjZXNzLAogICAgICBTX0dDQ19XaWRlICAgICdBY2Nlc3MsCiAgICAgIFNfR0NDX1dpZGVYICAgJ0FjY2VzcywKICAgICAgU19HQ0NfTm9fQmFjayAnQWNjZXNzLAogICAgICBTX0dDQ19YZGVidWcgICdBY2Nlc3MsCiAgICAgIFNfR0NDX1hyZWYgICAgJ0FjY2VzcywKICAgICAgU19HQ0NfWmVybyAgICAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgRUxJTSAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX0VsaW1fQWxsICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQUxMICIgICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1hIjsKICAgLS0gICAgICAgIC9OT0FMTCAoRCkKICAgLS0gICAgICAgIC9BTEwKICAgLS0KICAgLS0gICBBbHNvIGxvb2sgZm9yIHN1YnByb2dyYW1zIGZyb20gdGhlIEdOQVQgcnVuIHRpbWUgdGhhdCBjYW4gYmUKICAgLS0gICBlbGltaW5hdGVkLiBOb3RlIHRoYXQgd2hlbiAnZ25hdC5hZGMnIGlzIHByb2R1Y2VkIHVzaW5nIHRoaXMgc3dpdGNoLAogICAtLSAgIHRoZSBlbnRpcmUgcHJvZ3JhbSBtdXN0IGJlIHJlY29tcGlsZWQgd2l0aCBxdWFsaWZpZXIgL0FMTF9GSUxFUyBvZgogICAtLSAgIEdOQVQgTUFLRS4KCiAgIFNfRWxpbV9CaW5kICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9CSU5EX0ZJTEU9PCIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWI+IjsKICAgLS0gICAgICAgIC9CSU5EX0ZJTEU9ZmlsZV9uYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGZpbGVfbmFtZSBhcyB0aGUgYmluZCBmaWxlIHRvIHByb2Nlc3MuIElmIHRoaXMgcXVhbGlmaWVyIGlzCiAgIC0tICAgbm90IHVzZWQsIHRoZSBuYW1lIG9mIHRoZSBiaW5kIGZpbGUgaXMgY29tcHV0ZWQgZnJvbSB0aGUgZnVsbCBleHBhbmRlZAogICAtLSAgIEFkYSBuYW1lIG9mIGEgbWFpbiBzdWJwcm9ncmFtLgoKICAgU19FbGltX0NvbXAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NPTVBJTEVSPUAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLUdDQz1AIjsKICAgLS0gICAgICAgIC9DT01QSUxFUj1wYXRoX25hbWUKICAgLS0KICAgLS0gICBJbnN0cnVjdHMgR05BVCBFTElNIHRvIHVzZSBhIHNwZWNpZmljIGdjYyBjb21waWxlciBpbnN0ZWFkIG9mIG9uZQogICAtLSAgIGF2YWlsYWJsZSBvbiB0aGUgcGF0aC4KCiAgIFNfRWxpbV9Db25maWcgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DT05GSUdVUkFUSU9OX1BSQUdNQVM9PCIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUM+IjsKICAgLS0gICAgICAgIC9DT05GSUdVUkFUSU9OX1BSQUdNQVM9cGF0aF9uYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGEgZmlsZSB0aGF0IGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gcHJhZ21hcy4KICAgLS0gICBUaGUgZmlsZSBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIGFic29sdXRlIHBhdGguCgogICBTX0VsaW1fQ3VycmVudCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NVUlJFTlRfRElSRUNUT1JZICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1JLSI7CiAgIC0tICAgICAgICAvQ1VSUkVOVF9ESVJFQ1RPUlkgKEQpCiAgIC0tICAgICAgICAvTk9DVVJSRU5UX0RJUkVDVE9SWQogICAtLQogICAtLSAgICAgICAgTG9vayBmb3Igc291cmNlIGZpbGVzIGluIHRoZSBkZWZhdWx0IGRpcmVjdG9yeS4KCiAgIFNfRWxpbV9FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1YIiAmICciJzsKICAgLS0gICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX0VsaW1fR05BVE1BS0UgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9HTkFUTUFLRT1AIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tR05BVE1BS0U9QCI7CiAgIC0tICAgICAgICAvR05BVE1BS0U9cGF0aF9uYW1lCiAgIC0tCiAgIC0tICAgSW5zdHJ1Y3RzIEdOQVQgTUFLRSB0byB1c2UgYSBzcGVjaWZpYyBnbmF0bWFrZSBpbnN0ZWFkIG9mIG9uZSBhdmFpbGFibGUKICAgLS0gICBvbiB0aGUgcGF0aC4KCiAgIFNfRWxpbV9NZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUVTU0FHRVNfUFJPSkVDVF9GSUxFPSIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFRkFVTFQgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMCAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRURJVU0gIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDEgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElHSCAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAyIjsKICAgLS0gICAgICAgIC9NRVNTQUdFU19QUk9KRUNUX0ZJTEVbPW1lc3NhZ2VzLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlICJ2ZXJib3NpdHkiIG9mIHRoZSBwYXJzaW5nIG9mIHByb2plY3QgZmlsZXMuCiAgIC0tICAgbWVzc2FnZXMtb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgICBERUZBVUxUIChEKSAgTm8gbWVzc2FnZXMgYXJlIG91dHB1dCBpZiB0aGVyZSBpcyBubyBlcnJvciBvciB3YXJuaW5nLgogICAtLQogICAtLSAgICAgIE1FRElVTSAgICAgICBBIHNtYWxsIG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LgogICAtLQogICAtLSAgICAgIEhJR0ggICAgICAgICBBIGdyZWF0IG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LCBtb3N0IG9mIHRoZW0gbm90CiAgIC0tICAgICAgICAgICAgICAgICAgIGJlaW5nIHVzZWZ1bCBmb3IgdGhlIHVzZXIuCgogICBTX0VsaW1fUHJvamVjdCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSB0aGUgaW52b2NhdGlvbiBvZiB0aGUKICAgLS0gICBnbmF0ZWxpbS4gVGhlIHNvdXJjZSBkaXJlY3RvcmllcyB0byBiZSBzZWFyY2hlZCB3aWxsIGJlIGNvbW11bmljYXRlZAogICAtLSAgIHRvIGduYXRlbGltIHRocm91Z2ggbG9naWNhbCBuYW1lIEFEQV9QUkpfSU5DTFVERV9GSUxFLgoKICAgU19FbGltX1F1aWV0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1FVSUVUICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcSI7CiAgIC0tICAgICAgICAvTk9RVUlFVCAoRCkKICAgLS0gICAgICAgIC9RVUlFVAogICAtLQogICAtLSAgIFF1aWV0IG1vZGU6IGJ5IGRlZmF1bHQgR05BVCBFTElNIG91dHB1dHMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbQogICAtLSAgIHRoZSBudW1iZXIgb2YgcHJvZ3JhbSB1bml0cyBsZWZ0IHRvIGJlIHByb2Nlc3NlZC4gVGhpcyBvcHRpb24gdHVybnMKICAgLS0gICB0aGlzIHRyYWNlIG9mZi4KCiAgIFNfRWxpbV9TZWFyY2ggOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TRUFSQ0g9KiIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUkqIjsKICAgLS0gICAgICAgIC9TRUFSQ0g9KGRpcmVjdG9yeSwgLi4uKQogICAtLQogICAtLSAgIFdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzIGFsc28gbG9vayBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzLgoKICAgU19FbGltX1ZlcmIgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1ZFUkJPU0UgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiI7CiAgIC0tICAgICAgICAvTk9WRVJCT1NFIChEKQogICAtLSAgICAgICAgL1ZFUkJPU0UKICAgLS0KICAgLS0gICBWZXJib3NlIG1vZGU6IEdOQVQgRUxJTSB2ZXJzaW9uIGluZm9ybWF0aW9uIGlzIG91dHB1dCBhcyBBZGEgY29tbWVudHMKICAgLS0gICB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4gQWxzbywgaW4gYWRkaXRpb24gdG8gdGhlIG51bWJlciBvZgogICAtLSAgIHByb2dyYW0gdW5pdHMgbGVmdCwgR05BVCBFTElNIHdpbGwgb3V0cHV0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHVuaXQKICAgLS0gICBiZWluZyBwcm9jZXNzZWQuCgogICBFbGltX1N3aXRjaGVzIDogYWxpYXNlZCBjb25zdGFudCBTd2l0Y2hlcyA6PQogICAgICAgICAgICAgICAgICAgICAoU19FbGltX0FsbCAgICAgJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgIFNfRWxpbV9CaW5kICAgICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICBTX0VsaW1fQ29tcCAgICAnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgU19FbGltX0NvbmZpZyAgJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgIFNfRWxpbV9DdXJyZW50ICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICBTX0VsaW1fRXh0ICAgICAnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgU19FbGltX0dOQVRNQUtFJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgIFNfRWxpbV9NZXNzICAgICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICBTX0VsaW1fUHJvamVjdCAnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgU19FbGltX1F1aWV0ICAgJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgIFNfRWxpbV9TZWFyY2ggICdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICBTX0VsaW1fVmVyYiAgICAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgRklORCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX0ZpbmRfQWxsICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0FMTF9GSUxFUyAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1hIjsKICAgLS0gICAgICAgIC9OT0FMTF9GSUxFUyAoRCkKICAgLS0gICAgICAgIC9BTExfRklMRVMKICAgLS0KICAgLS0gICBJZiB0aGlzIHN3aXRjaCBpcyBwcmVzZW50LCBGSU5EIGFuZCBYUkVGIHdpbGwgcGFyc2UgdGhlIHJlYWQtb25seQogICAtLSAgIGZpbGVzIGZvdW5kIGluIHRoZSBsaWJyYXJ5IHNlYXJjaCBwYXRoLiBPdGhlcndpc2UsIHRoZXNlIGZpbGVzIHdpbGwKICAgLS0gICBiZSBpZ25vcmVkLiBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBwcm90ZWN0IEduYXQgc291cmNlcyBvciB5b3VyCiAgIC0tICAgb3duIGxpYnJhcmllcyBmcm9tIGJlaW5nIHBhcnNlZCwgdGh1cyBtYWtpbmcgRklORCBhbmQgWFJFRiBtdWNoCiAgIC0tICAgZmFzdGVyLCBhbmQgdGhlaXIgb3V0cHV0IG11Y2ggc21hbGxlci4KCiAgIFNfRmluZF9EZXJpdiAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvREVSSVZFRF9UWVBFX0lORk9STUFUSU9OICIgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWQiOwogICAtLSAgICAgICAgL05PREVSSVZFRF9UWVBFX0lORk9STUFUSU9OIChEKQogICAtLSAgICAgICAgL0RFUklWRURfVFlQRV9JTkZPUk1BVElPTgogICAtLQogICAtLSAgIE91dHB1dCB0aGUgcGFyZW50IHR5cGUgcmVmZXJlbmNlIGZvciBlYWNoIG1hdGNoaW5nIGRlcml2ZWQgdHlwZXMuCgogICBTX0ZpbmRfRXhwciAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYUFJFU1NJT05TICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lIjsKICAgLS0gICAgICAgIC9OT0VYUFJFU1NJT05TIChEKQogICAtLSAgICAgICAgL0VYUFJFU1NJT05TCiAgIC0tCiAgIC0tICAgQnkgZGVmYXVsdCwgRklORCBhY2NlcHRzIHRoZSBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIHNldCBmb3IgcGF0dGVybi4KICAgLS0gICBJZiB0aGlzIHN3aXRjaCBpcyBzZXQsIHRoZW4gdGhlIHBhdHRlcm4gd2lsbCBiZSBjb25zaWRlcmVkIGFzIGEgZnVsbAogICAtLSAgIFVuaXgtc3R5bGUgcmVndWxhciBleHByZXNzaW9uLgoKICAgU19GaW5kX0V4dCAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9FWFRFUk5BTF9SRUZFUkVOQ0U9IiAmICciJyAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItWCIgJiAnIic7CiAgIC0tICAgICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJuYW1lPXZhbCIKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgYW4gZXh0ZXJuYWwgcmVmZXJlbmNlIHRvIHRoZSBwcm9qZWN0IG1hbmFnZXIuIFVzZWZ1bCBvbmx5IGlmCiAgIC0tICAgL1BST0pFQ1RfRklMRSBpcyB1c2VkLgogICAtLQogICAtLSAgIEV4YW1wbGU6CiAgIC0tICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0iREVCVUc9VFJVRSIKCiAgIFNfRmluZF9GdWxsICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRlVMTF9QQVRITkFNRSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWYiOwogICAtLSAgICAgICAgL05PRlVMTF9QQVRITkFNRSAoRCkKICAgLS0gICAgICAgIC9GVUxMX1BBVEhOQU1FCiAgIC0tCiAgIC0tICAgSWYgdGhpcyBzd2l0Y2ggaXMgc2V0LCB0aGUgb3V0cHV0IGZpbGUgbmFtZXMgd2lsbCBiZSBwcmVjZWRlZCBieSB0aGVpcgogICAtLSAgIGRpcmVjdG9yeSAoaWYgdGhlIGZpbGUgd2FzIGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aCkuIElmIHRoaXMgc3dpdGNoCiAgIC0tICAgaXMgbm90IHNldCwgdGhlIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBwcmludGVkLgoKICAgU19GaW5kX0lnbm9yZSAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JR05PUkVfTE9DQUxTICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZyI7CiAgIC0tICAgICAgICAvTk9JR05PUkVfTE9DQUxTIChEKQogICAtLSAgICAgICAgL0lHTk9SRV9MT0NBTFMKICAgLS0KICAgLS0gICBJZiB0aGlzIHN3aXRjaCBpcyBzZXQsIGluZm9ybWF0aW9uIGlzIG91dHB1dCBvbmx5IGZvciBsaWJyYXJ5LWxldmVsCiAgIC0tICAgZW50aXRpZXMsIGlnbm9yaW5nIGxvY2FsIGVudGl0aWVzLiBUaGUgdXNlIG9mIHRoaXMgc3dpdGNoIG1heQogICAtLSAgIGFjY2VsZXJhdGUgRklORCBhbmQgWFJFRi4KCiAgIFNfRmluZF9NZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUVTU0FHRVNfUFJPSkVDVF9GSUxFPSIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FRElVTSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDIiOwogICAtLSAgICAgICAgL01FU1NBR0VTX1BST0pFQ1RfRklMRVs9bWVzc2FnZXMtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgInZlcmJvc2l0eSIgb2YgdGhlIHBhcnNpbmcgb2YgcHJvamVjdCBmaWxlcy4KICAgLS0gICBtZXNzYWdlcy1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIERFRkFVTFQgKEQpICBObyBtZXNzYWdlcyBhcmUgb3V0cHV0IGlmIHRoZXJlIGlzIG5vIGVycm9yIG9yIHdhcm5pbmcuCiAgIC0tCiAgIC0tICAgICAgTUVESVVNICAgICAgIEEgc21hbGwgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQuCiAgIC0tCiAgIC0tICAgICAgSElHSCAgICAgICAgIEEgZ3JlYXQgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQsIG1vc3Qgb2YgdGhlbSBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZnVsIGZvciB0aGUgdXNlci4KCiAgIFNfRmluZF9Ob3N0aW5jIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9TVERfSU5DTFVERVMgIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vc3RkaW5jIjsKICAgLS0gICAgICAgIC9OT1NURF9JTkNMVURFUwogICAtLQogICAtLSAgIERvIG5vdCBsb29rIGZvciBzb3VyY2VzIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX0ZpbmRfTm9zdGxpYiA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PU1REX0xJQlJBUklFUyAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ub3N0ZGxpYiI7CiAgIC0tICAgICAgICAvTk9TVERfTElCUkFSSUVTCiAgIC0tCiAgIC0tICAgRG8gbm90IGxvb2sgZm9yIGxpYnJhcnkgZmlsZXMgaW4gdGhlIHN5c3RlbSBkZWZhdWx0IGRpcmVjdG9yeS4KCiAgIFNfRmluZF9PYmplY3QgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvT0JKRUNUX1NFQVJDSD0qIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFPKiI7CiAgIC0tICAgICAgICAvT0JKRUNUX1NFQVJDSD0oZGlyZWN0b3J5LC4uLikKICAgLS0KICAgLS0gICBXaGVuIHNlYXJjaGluZyBmb3IgbGlicmFyeSBhbmQgb2JqZWN0IGZpbGVzLCBsb29rIGluIHRoZSBzcGVjaWZpZWQKICAgLS0gICBkaXJlY3Rvcmllcy4gVGhlIG9yZGVyIGluIHdoaWNoIGxpYnJhcnkgZmlsZXMgYXJlIHNlYXJjaGVkIGlzIHRoZSBzYW1lCiAgIC0tICAgYXMgZm9yIE1BS0UuCgogICBTX0ZpbmRfUHJpbnQgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BSSU5UX0xJTkVTICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1zIjsKICAgLS0gICAgICAgIC9OT1BSSU5UX0xJTkVTIChEKQogICAtLSAgICAgICAgL1BSSU5UX0xJTkVTCiAgIC0tCiAgIC0tICAgT3V0cHV0IHRoZSBjb250ZW50IG9mIHRoZSBBZGEgc291cmNlIGZpbGUgbGluZXMgd2VyZSB0aGUgZW50aXR5IHdhcwogICAtLSAgIGZvdW5kLgoKICAgU19GaW5kX1Byb2plY3QgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUPUAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcEAiOwogICAtLSAgICAgICAgL1BST0pFQ1Q9ZmlsZQogICAtLQogICAtLSAgIFNwZWNpZnkgYSBwcm9qZWN0IGZpbGUgdG8gdXNlLiBCeSBkZWZhdWx0LCBGSU5EIGFuZCBYUkVGIHdpbGwgdHJ5IHRvCiAgIC0tICAgbG9jYXRlIGEgcHJvamVjdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgLS0KICAgLS0gICBJZiBhIHByb2plY3QgZmlsZSBpcyBlaXRoZXIgc3BlY2lmaWVkIG9yIGZvdW5kIGJ5IHRoZSB0b29scywgdGhlbiB0aGUKICAgLS0gICBjb250ZW50IG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5IGFuZCBvYmplY3QgZGlyZWN0b3J5IGxpbmVzIGFyZSBhZGRlZAogICAtLSAgIGFzIGlmIHRoZXkgaGFkIGJlZW4gc3BlY2lmaWVkIHJlc3BlY3RpdmVseSBieSAvU09VUkNFX1NFQVJDSCBhbmQKICAgLS0gICAvT0JKRUNUX1NFQVJDSC4KICAgLS0KICAgLS0gICBUaGlzIHF1YWxpZmllciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIC9QUk9KRUNUX0ZJTEUKCiAgIFNfRmluZF9QcmogICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUFJPSkVDVF9GSUxFPTwiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSBsb29raW5nIGZvciBzb3VyY2VzLgogICAtLSAgIFRoZSBzb3VyY2UgYW5kIG9iamVjdCBkaXJlY3RvcmllcyB0byBiZSBzZWFyY2hlZCB3aWxsIGJlIGNvbW11bmljYXRlZAogICAtLSAgIHRvIGduYXRmaW5kICB0aHJvdWdoIGxvZ2ljYWwgbmFtZXMgQURBX1BSSl9JTkNMVURFX0ZJTEUgYW5kCiAgIC0tICAgQURBX1BSSl9PQkpFQ1RTX0ZJTEUuCgogICBTX0ZpbmRfUmVmICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFRkVSRU5DRVMgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1yIjsKICAgLS0gICAgICAgIC9OT1JFRkVSRU5DRVMgKEQpCiAgIC0tICAgICAgICAvUkVGRVJFTkNFUwogICAtLQogICAtLSAgIEJ5IGRlZmF1bHQsIEZJTkQgd2lsbCBvdXRwdXQgb25seSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgIC0tICAgZGVjbGFyYXRpb24sIGJvZHkgb3IgdHlwZSBjb21wbGV0aW9uIG9mIHRoZSBlbnRpdGllcy4gSWYgdGhpcyBzd2l0Y2gKICAgLS0gICBpcyBzZXQsIHRoZSBGSU5EIHdpbGwgbG9jYXRlIGV2ZXJ5IHJlZmVyZW5jZSB0byB0aGUgZW50aXRpZXMgaW4gdGhlCiAgIC0tICAgZmlsZXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgKG9yIGluIGV2ZXJ5IGZpbGUgaW4gdGhlIHNlYXJjaAogICAtLSAgIHBhdGggaWYgbm8gZmlsZSBpcyBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lKS4KCiAgIFNfRmluZF9TZWFyY2ggIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU0VBUkNIPSoiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUkqIjsKICAgLS0gICAgICAgIC9TRUFSQ0g9KGRpcmVjdG9yeSwuLi4pCiAgIC0tCiAgIC0tICAgRXF1aXZhbGVudCB0bzoKICAgLS0gICAvT0JKRUNUX1NFQVJDSD0oZGlyZWN0b3J5LC4uLikgL1NPVVJDRV9TRUFSQ0g9KGRpcmVjdG9yeSwuLi4pCgogICBTX0ZpbmRfU291cmNlICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NPVVJDRV9TRUFSQ0g9KiIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1hSSoiOwogICAtLSAgICAgICAgL1NPVVJDRV9TRUFSQ0g9KGRpcmVjdG9yeSwuLi4pCiAgIC0tCiAgIC0tICAgV2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMgYWxzbyBsb29rIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3JpZXMuCiAgIC0tICAgVGhlIG9yZGVyIGluIHdoaWNoIHNvdXJjZSBmaWxlIHNlYXJjaCBpcyB1bmRlcnRha2VuIGlzIHRoZSBzYW1lIGFzIGZvcgogICAtLSAgIE1BS0UuCgogICBTX0ZpbmRfVHlwZXMgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1RZUEVfSElFUkFSQ0hZICIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IjsKICAgLS0gICAgICAgIC9OT1RZUEVfSElFUkFSQ0hZIChEKQogICAtLSAgICAgICAgL1RZUEVfSElFUkFSQ0hZCiAgIC0tCiAgIC0tICAgT3V0cHV0IHRoZSB0eXBlIGhpZXJhcmNoeSBmb3IgdGhlIHNwZWNpZmllZCB0eXBlLiBJdCBhY3RzIGxpa2UgdGhlCiAgIC0tICAgL0RFUklWRURfVFlQRV9JTkZPUk1BVElPTiBxdWFsaWZpZXIsIGJ1dCByZWN1cnNpdmVseSBmcm9tIHBhcmVudCB0eXBlCiAgIC0tICAgdG8gcGFyZW50IHR5cGUuIFdoZW4gdGhpcyBxdWFsaWZpZXIgaXMgc3BlY2lmaWVkIGl0IGlzIG5vdCBwb3NzaWJsZSB0bwogICAtLSAgIHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBmaWxlLgoKICAgRmluZF9Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19GaW5kX0FsbCAgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX0Rlcml2ICAgJ0FjY2VzcywKICAgICAgU19GaW5kX0V4cHIgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX0V4dCAgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX0Z1bGwgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX0lnbm9yZSAgJ0FjY2VzcywKICAgICAgU19GaW5kX01lc3MgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX05vc3RpbmMgJ0FjY2VzcywKICAgICAgU19GaW5kX05vc3RsaWIgJ0FjY2VzcywKICAgICAgU19GaW5kX09iamVjdCAgJ0FjY2VzcywKICAgICAgU19GaW5kX1ByaW50ICAgJ0FjY2VzcywKICAgICAgU19GaW5kX1Byb2plY3QgJ0FjY2VzcywKICAgICAgU19GaW5kX1ByaiAgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX1JlZiAgICAgJ0FjY2VzcywKICAgICAgU19GaW5kX1NlYXJjaCAgJ0FjY2VzcywKICAgICAgU19GaW5kX1NvdXJjZSAgJ0FjY2VzcywKICAgICAgU19GaW5kX1R5cGVzICAgJ0FjY2Vzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgS1JVTkNIIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgU19LcnVuY2hfQ291bnQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09VTlQ9IyIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJgIyI7CiAgIC0tICAgICAgICAvQ09VTlQ9MzkgKEQpCiAgIC0tICAgICAgICAvQ09VTlQ9bm5uCiAgIC0tCiAgIC0tICAgTGltaXQgZmlsZSBuYW1lcyB0byBubm4gY2hhcmFjdGVycyAod2hlcmUgbm5uIGlzIGEgZGVjaW1hbAogICAtLSAgIGludGVnZXIpLiBUaGUgbWF4aW11bSBmaWxlIG5hbWUgbGVuZ3RoIGlzIDM5LCBidXQgaWYgeW91IHdhbnQgdG8KICAgLS0gICBnZW5lcmF0ZSBhIHNldCBvZiBmaWxlcyB0aGF0IHdvdWxkIGJlIHVzYWJsZSBpZiBwb3J0ZWQgdG8gYSBzeXN0ZW0KICAgLS0gICB3aXRoIHNvbWUgZGlmZmVyZW50IG1heGltdW0gZmlsZSBsZW5ndGgsIHRoZW4gYSBkaWZmZXJlbnQgdmFsdWUgY2FuCiAgIC0tICAgYmUgc3BlY2lmaWVkLgoKICAgS3J1bmNoX1N3aXRjaGVzIDogYWxpYXNlZCBjb25zdGFudCBTd2l0Y2hlcyAgOj0KICAgICAoMSAuLiAxID0+IFNfS3J1bmNoX0NvdW50ICAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgTElOSyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX0xpbmtfQmluZCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0JJTkRfRklMRT0iICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFEQSAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUEgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDICIgICAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1DIjsKICAgLS0gICAgICAgIC9CSU5EX0ZJTEU9W2JpbmQtZmlsZS1vcHRpb25dCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBsYW5ndWFnZSBvZiB0aGUgYmluZGVyIGdlbmVyYXRlZCBmaWxlLgogICAtLQogICAtLSAgICAgICAgQURBIChEKSAgICAgICAgIEJpbmRlciBmaWxlIGlzIEFkYS4KICAgLS0KICAgLS0gICAgICAgIEMgICAgICAgICAgICAgICBCaW5kZXIgZmlsZSBpcyAnQycuCgogICBTX0xpbmtfRGVidWcgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RFQlVHPSIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFMTCAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWczICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT05FICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nMCAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVFJBQ0VCQUNLICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzEgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PVFJBQ0VCQUNLICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWcwIjsKICAgLS0gICAgICAgIC9OT0RFQlVHIChEKQogICAtLSAgICAgICAgL0RFQlVHWz1kZWJ1Zy1vcHRpb25dCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIGluY2x1ZGVkLiAnZGVidWctb3B0aW9uJwogICAtLSAgIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgICAgQUxMIChEKSAgICAgIEluY2x1ZGUgZnVsbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCiAgIC0tCiAgIC0tICAgICAgICBOT05FICAgICAgICAgUHJvdmlkZSBubyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uICBTYW1lIGFzIC9OT0RFQlVHLgogICAtLQogICAtLSAgICAgICAgVFJBQ0VCQUNLICAgIFByb3ZpZGUgc3VmZmljaWVudCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgYSB0cmFjZWJhY2suCiAgIC0tCiAgIC0tICAgICAgICBOT1RSQUNFQkFDSyAgU2FtZSBhcyBOT05FLgoKICAgU19MaW5rX05vZGVidWcgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT0RFQlVHICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzAiOwogICAtLSAgTk9ET0MgKHNlZSAvREVCVUcpCgogICBTX0xpbmtfRXhlY3V0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYRUNVVEFCTEU9QCIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vQCI7CiAgIC0tICAgICAgICAvRVhFQ1VUQUJMRT1leGVjLW5hbWUKICAgLS0KICAgLS0gICAnZXhlYy1uYW1lJyBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlIGdlbmVyYXRlZCBleGVjdXRhYmxlCiAgIC0tICAgcHJvZ3JhbS4gSWYgdGhpcyBxdWFsaWZpZXIgc3dpdGNoIGlzIG9taXR0ZWQsIHRoZSBleGVjdXRhYmxlIGlzIGNhbGxlZAogICAtLSAgIHRoZSBuYW1lIG9mIHRoZSBtYWluIHVuaXQuIFNvICIkIEdOQVQgTElOSyBUUlkuQUxJIiBjcmVhdGVzIGFuCiAgIC0tICAgZXhlY3V0YWJsZSBjYWxsZWQgVFJZLkVYRS4KCiAgIFNfTGlua19FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVgiICYgJyInOwogICAtLSAgICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX0xpbmtfRm9ybGluayA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZPUl9MSU5LRVI9IiAmICciJyAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZm9yLWxpbmtlcj0iICYgJyInOwogICAtLSAgICAgICAgL0ZPUl9MSU5LRVI9PHN0cmluZz4KICAgLS0KICAgLS0gICBUcmFuc21pdCB0aGUgb3B0aW9uIDxzdHJpbmc+IHRvIHRoZSB1bmRlcmx5aW5nIGxpbmtlci4KCiAgIFNfTGlua19Gb3JjZSAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRk9SQ0VfT0JKRUNUX0ZJTEVfTElTVCAiICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWYiOwogICAtLSAgICAgICAgL05PRk9SQ0VfT0JKRUNUX0ZJTEVfTElTVCAoRCkKICAgLS0gICAgICAgIC9GT1JDRV9PQkpFQ1RfRklMRV9MSVNUCiAgIC0tCiAgIC0tICAgRm9yY2VzIHRoZSBnZW5lcmF0aW9uIG9mIGEgZmlsZSB0aGF0IGNvbnRhaW5zIGNvbW1hbmRzIGZvciB0aGUgbGlua2VyLgogICAtLSAgIFRoaXMgaXMgdXNlZnVsIGluIHNvbWUgY2FzZXMgdG8gZGVhbCB3aXRoIHNwZWNpYWwgc2l0dWF0aW9ucyB3aGVyZSB0aGUKICAgLS0gICBjb21tYW5kIGxpbmUgbGVuZ3RoIGlzIGV4Y2VlZGVkLgoKICAgU19MaW5rX0lkZW50ICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JREVOVElGSUNBVElPTj0iICYgJyInICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWZvci1saW5rZXI9SURFTlQ9IiAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyInOwogICAtLSAgICAgICAgL0lERU5USUZJQ0FUSU9OPSI8c3RyaW5nPiIKICAgLS0KICAgLS0gICAiPHN0cmluZz4iIHNwZWNpZmllcyB0aGUgc3RyaW5nIHRvIGJlIHN0b3JlZCBpbiB0aGUgaW1hZ2UgZmlsZSBpZGVudC0KICAgLS0gICBpZmljYXRpb24gZmllbGQgaW4gdGhlIGltYWdlIGhlYWRlci4gSXQgb3ZlcnJpZGVzIGFueSBwcmFnbWEgSWRlbnQKICAgLS0gICBzcGVjaWZpZWQgc3RyaW5nLgoKICAgU19MaW5rX0xpYmRpciAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9MSUJESVI9KiIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItTCoiOwogICAtLSAgICAgICAgL0xJQkRJUj0oZGlyZWN0b3J5LCAuLi4pCiAgIC0tCiAgIC0tICAgTG9vayBmb3IgbGlicmFyaWVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3JpZXMuCgogICBTX0xpbmtfTGlicmFyeSA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0xJQlJBUlk9fCIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1sfCI7CiAgIC0tICAgICAgICAvTFlCUkFSWT14eXoKICAgLS0KICAgLS0gICBMaW5rIHdpdGggbGlicmFyeSBuYW1lZCAieHl6Ii4KCiAgIFNfTGlua19NZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUVTU0FHRVNfUFJPSkVDVF9GSUxFPSIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FRElVTSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDIiOwogICAtLSAgICAgICAgL01FU1NBR0VTX1BST0pFQ1RfRklMRVs9bWVzc2FnZXMtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgInZlcmJvc2l0eSIgb2YgdGhlIHBhcnNpbmcgb2YgcHJvamVjdCBmaWxlcy4KICAgLS0gICBtZXNzYWdlcy1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIERFRkFVTFQgKEQpICBObyBtZXNzYWdlcyBhcmUgb3V0cHV0IGlmIHRoZXJlIGlzIG5vIGVycm9yIG9yIHdhcm5pbmcuCiAgIC0tCiAgIC0tICAgICAgTUVESVVNICAgICAgIEEgc21hbGwgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQuCiAgIC0tCiAgIC0tICAgICAgSElHSCAgICAgICAgIEEgZ3JlYXQgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQsIG1vc3Qgb2YgdGhlbSBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZnVsIGZvciB0aGUgdXNlci4KCiAgIFNfTGlua19Ob2NvbXAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9DT01QSUxFICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW4iOwogICAtLSAgICAgICAgL05PQ09NUElMRQogICAtLQogICAtLSAgIERvIG5vdCBjb21waWxlIHRoZSBmaWxlIGdlbmVyYXRlZCBieSB0aGUgYmluZGVyLgogICAtLSAgIFRoaXMgbWF5IGJlIHVzZWQgd2hlbiBhIGxpbmsgaXMgcmVydW4gd2l0aCBkaWZmZXJlbnQgb3B0aW9ucywKICAgLS0gICBidXQgdGhlcmUgaXMgbm8gbmVlZCB0byByZWNvbXBpbGUgdGhlIGJpbmRlciBnZW5lcmF0ZWQgZmlsZS4KCiAgIFNfTGlua19Ob2luaGliIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9JTkhJQklULUVYRUMgIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3ItbGlua2VyPS0tbm9pbmhpYml0LWV4ZWMiOwogICAtLSAgICAgICAgL05PSU5ISUJJVC1FWEVDCiAgIC0tCiAgIC0tICAgRGVsZXRlIGV4ZWN1dGFibGUgaWYgdGhlcmUgYXJlIGVycm9ycyBvciB3YXJuaW5ncy4KCiAgIFNfTGlua19Ob2ZpbGVzIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9TVEFSVF9GSUxFUyAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vc3RhcnRmaWxlcyI7CiAgIC0tICAgICAgICAvTk9TVEFSVF9GSUxFUwogICAtLQogICAtLSAgIExpbmsgaW4gZGVmYXVsdCBpbWFnZSBpbml0aWFsaXphdGlvbiBhbmQgc3RhcnR1cCBmdW5jdGlvbnMuCgogICBTX0xpbmtfUHJvamVjdCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtYWluIHByb2plY3QgZmlsZSB0byBiZSB1c2VkLiBUaGUgcHJvamVjdCBmaWxlcyByb290ZWQKICAgLS0gICBhdCB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgd2lsbCBiZSBwYXJzZWQgYmVmb3JlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQogICAtLSAgIGxpbmtlci4KICAgLS0gICBUaGUgc291cmNlIGFuZCBvYmplY3QgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgd2lsbCBiZSBjb21tdW5pY2F0ZWQKICAgLS0gICB0byB0aGUgbGlua2VyIHRocm91Z2ggbG9naWNhbCBuYW1lcyBBREFfUFJKX0lOQ0xVREVfRklMRSBhbmQKICAgLS0gICBBREFfUFJKX09CSkVDVFNfRklMRS4KCiAgIFNfTGlua19SZXR1cm4gIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUkVUVVJOX0NPREVTPSIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUE9TSVggIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLW12bXMtcmV0dXJuLWNvZGVzICIgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZNUyAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW12bXMtcmV0dXJuLWNvZGVzIjsKICAgLS0gICAgICAgIC9SRVRVUk5fQ09ERVM9UE9TSVggKEQpCiAgIC0tICAgICAgICAvUkVUVVJOX0NPREVTPVZNUwogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgc3R5bGUgb2YgY29kZXMgcmV0dXJuZWQgYnkKICAgLS0gICBBZGEuQ29tbWFuZF9MaW5lLlNldF9FeGl0X1N0YXR1cy4gTXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKICAgLS0gICBhbmQgbWF0Y2ggdGhlIEJpbmQgcXVhbGlmZXIgd2l0aCB0aGUgc2FtZSBuYW1lLgogICAtLQogICAtLSAgICAgICAgUE9TSVggKEQpICAgUmV0dXJuIFBvc2l4IGNvbXBhdGlibGUgZXhpdCBjb2Rlcy4KICAgLS0KICAgLS0gICAgICAgIFZNUyAgICAgICAgIFJldHVybiBWTVMgY29tcGF0aWJsZSBleGl0IGNvZGVzLiBUaGUgdmFsdWUgcmV0dXJuZWQKICAgLS0gICAgICAgICAgICAgICAgICAgIGlzIGlkZW50aWNhbGx5IGVxdWFsIHRvIHRoZSBTZXRfRXhpdF9TdGF0dXMgcGFyYW1ldGVyLgoKICAgU19MaW5rX1N0YXRpYyAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TVEFUSUMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWZvci1saW5rZXI9LXN0YXRpYyI7CiAgIC0tICAgICAgICAvTk9TVEFUSUMgKEQpCiAgIC0tICAgICAgICAvU1RBVElDCiAgIC0tCiAgIC0tICAgSW5kaWNhdGUgdG8gdGhlIGxpbmtlciB0aGF0IHRoZSBsaW5rIGlzIHN0YXRpYy4KCiAgIFNfTGlua19WZXJiICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVkVSQk9TRSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXYiOwogICAtLSAgICAgICAgL05PVkVSQk9TRSAoRCkKICAgLS0gICAgICAgIC9WRVJCT1NFCiAgIC0tCiAgIC0tICAgQ2F1c2VzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgb3V0cHV0LCBpbmNsdWRpbmcgYSBmdWxsIGxpc3Qgb2YKICAgLS0gICB0aGUgaW5jbHVkZWQgb2JqZWN0IGZpbGVzLiBUaGlzIHN3aXRjaCBvcHRpb24gaXMgbW9zdCB1c2VmdWwgd2hlbiB5b3UKICAgLS0gICB3YW50IHRvIHNlZSB3aGF0IHNldCBvZiBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIHVzZWQgaW4gdGhlIGxpbmsgc3RlcC4KCiAgIFNfTGlua19aWlpaWiAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvPG90aGVyPiAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3ItbGlua2VyPSI7CiAgIC0tICAgICAgICAvPG90aGVyPgogICAtLQogICAtLSAgIEFueSBvdGhlciBzd2l0Y2ggdGhhdCB3aWxsIGJlIHRyYW5zbWl0ZWQgdG8gdGhlIHVuZGVybHlpbmcgbGlua2VyLgoKICAgTGlua19Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19MaW5rX0JpbmQgICAgJ0FjY2VzcywKICAgICAgU19MaW5rX0RlYnVnICAgJ0FjY2VzcywKICAgICAgU19MaW5rX05vZGVidWcgJ0FjY2VzcywKICAgICAgU19MaW5rX0V4ZWN1dCAgJ0FjY2VzcywKICAgICAgU19MaW5rX0V4dCAgICAgJ0FjY2VzcywKICAgICAgU19MaW5rX0ZvcmxpbmsgJ0FjY2VzcywKICAgICAgU19MaW5rX0ZvcmNlICAgJ0FjY2VzcywKICAgICAgU19MaW5rX0lkZW50ICAgJ0FjY2VzcywKICAgICAgU19MaW5rX0xpYmRpciAgJ0FjY2VzcywKICAgICAgU19MaW5rX0xpYnJhcnkgJ0FjY2VzcywKICAgICAgU19MaW5rX01lc3MgICAgJ0FjY2VzcywKICAgICAgU19MaW5rX05vY29tcCAgJ0FjY2VzcywKICAgICAgU19MaW5rX05vZmlsZXMgJ0FjY2VzcywKICAgICAgU19MaW5rX05vaW5oaWIgJ0FjY2VzcywKICAgICAgU19MaW5rX1Byb2plY3QgJ0FjY2VzcywKICAgICAgU19MaW5rX1JldHVybiAgJ0FjY2VzcywKICAgICAgU19MaW5rX1N0YXRpYyAgJ0FjY2VzcywKICAgICAgU19MaW5rX1ZlcmIgICAgJ0FjY2VzcywKICAgICAgU19MaW5rX1paWlpaICAgJ0FjY2Vzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFN3aXRjaGVzIGZvciBHTkFUIExJU1QgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgU19MaXN0X0FsbCAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9BTExfVU5JVFMgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYSI7CiAgIC0tICAgICAgICAvTk9BTExfVU5JVFMgKEQpCiAgIC0tICAgICAgICAvQUxMX1VOSVRTCiAgIC0tCiAgIC0tICAgQ29uc2lkZXIgYWxsIHVuaXRzLCBpbmNsdWRpbmcgdGhvc2Ugb2YgdGhlIHByZWRlZmluZWQgQWRhIGxpYnJhcnkuCiAgIC0tICAgRXNwZWNpYWxseSB1c2VmdWwgd2l0aCAvREVQRU5ERU5DSUVTLgoKICAgU19MaXN0X0N1cnJlbnQgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DVVJSRU5UX0RJUkVDVE9SWSAiICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLUktIjsKICAgLS0gICAgICAgIC9DVVJSRU5UX0RJUkVDVE9SWSAoRCkKICAgLS0gICAgICAgIC9OT0NVUlJFTlRfRElSRUNUT1JZCiAgIC0tCiAgIC0tICAgTG9vayBmb3Igc291cmNlLCBsaWJyYXJ5IG9yIG9iamVjdCBmaWxlcyBpbiB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX0xpc3RfRGVwZW5kICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RFUEVOREVOQ0lFUyAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1kIjsKICAgLS0gICAgICAgIC9OT0RFUEVOREVOQ0lFUyAoRCkKICAgLS0gICAgICAgIC9ERVBFTkRFTkNJRVMKCiAgIFNfTGlzdF9FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVgiICYgJyInOwogICAtLSAgICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX0xpc3RfRmlsZXMgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZJTEVTPUAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1maWxlcz1AIjsKICAgLS0gICAgICAgIC9GSUxFUz1maWxlbmFtZQogICAtLQogICAtLSAgIFRha2UgYXMgYXJndW1lbnRzIHRoZSBmaWxlcyB0aGF0IGFyZSBsaXN0ZWQgaW4gdGhlIHNwZWNpZmllZAogICAtLSAgIHRleHQgZmlsZS4KCiAgIFNfTGlzdF9NZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUVTU0FHRVNfUFJPSkVDVF9GSUxFPSIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FRElVTSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDIiOwogICAtLSAgICAgICAgL01FU1NBR0VTX1BST0pFQ1RfRklMRVs9bWVzc2FnZXMtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgInZlcmJvc2l0eSIgb2YgdGhlIHBhcnNpbmcgb2YgcHJvamVjdCBmaWxlcy4KICAgLS0gICBtZXNzYWdlcy1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIERFRkFVTFQgKEQpICBObyBtZXNzYWdlcyBhcmUgb3V0cHV0IGlmIHRoZXJlIGlzIG5vIGVycm9yIG9yIHdhcm5pbmcuCiAgIC0tCiAgIC0tICAgICAgTUVESVVNICAgICAgIEEgc21hbGwgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQuCiAgIC0tCiAgIC0tICAgICAgSElHSCAgICAgICAgIEEgZ3JlYXQgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQsIG1vc3Qgb2YgdGhlbSBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZnVsIGZvciB0aGUgdXNlci4KCiAgIFNfTGlzdF9Ob3N0aW5jIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9TVERfSU5DTFVERVMgIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vc3RkaW5jIjsKICAgLS0gICAgICAgIC9OT1NURF9JTkNMVURFUwogICAtLQogICAtLSAgIERvIG5vdCBsb29rIGZvciBzb3VyY2VzIG9mIHRoZSBydW4gdGltZSBpbiB0aGUgc3RhbmRhcmQgZGlyZWN0b3J5LgoKICAgU19MaXN0X09iamVjdCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9PQkpFQ1RfU0VBUkNIPSoiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYU8qIjsKICAgLS0gICAgICAgIC9PQkpFQ1RfU0VBUkNIPShkaXJlY3RvcnksLi4uKQogICAtLQogICAtLSAgIFdoZW4gbG9va2luZyBmb3IgbGlicmFyeSBhbmQgb2JqZWN0IGZpbGVzIGxvb2sgYWxzbyBpbiB0aGUgc3BlY2lmaWVkCiAgIC0tICAgZGlyZWN0b3JpZXMuCgogICBTX0xpc3RfT3V0cHV0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09VVFBVVD0iICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNPVVJDRVMgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVBFTkQgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1kICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0JKRUNUUyAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbyAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOSVRTICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXUgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPUFRJT05TICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1oICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVkVSQk9TRSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiAiOwogICAtLSAgICAgICAgL09VVFBVVD0ob3B0aW9uLG9wdGlvbiwuLi4pCiAgIC0tCiAgIC0tICAgICAgICBTT1VSQ0VTIChEKSAgICAgT25seSBvdXRwdXQgaW5mb3JtYXRpb24gYWJvdXQgc291cmNlIGZpbGVzLgogICAtLQogICAtLSAgICAgICAgREVQRU5EICAgICAgICAgIExpc3Qgc291cmNlcyBmcm9tIHdoaWNoIHNwZWNpZmllZCB1bml0cyBkZXBlbmQgb24uCiAgIC0tCiAgIC0tICAgICAgICBPQkpFQ1RTICAgICAgICAgT25seSBvdXRwdXQgaW5mb3JtYXRpb24gYWJvdXQgb2JqZWN0IGZpbGVzLgogICAtLQogICAtLSAgICAgICAgVU5JVFMgICAgICAgICAgIE9ubHkgb3V0cHV0IGluZm9ybWF0aW9uIGFib3V0IGNvbXBpbGF0aW9uIHVuaXRzLgogICAtLQogICAtLSAgICAgICAgT1BUSU9OUyAgICAgICAgIE91dHB1dCB0aGUgbGlzdCBvZiBvcHRpb25zLgogICAtLQogICAtLSAgICAgICAgVkVSQk9TRSAgICAgICAgIE91dHB1dCB0aGUgY29tcGxldGUgc291cmNlIGFuZCBvYmplY3QgcGF0aHMuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSB0aGUgZGVmYXVsdCBjb2x1bW4gbGF5b3V0IGJ1dCBpbnN0ZWFkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGxvbmcgZm9ybWF0IGdpdmluZyBhcyBtdWNoIGFzIGluZm9ybWF0aW9uCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgb24gZWFjaCByZXF1ZXN0ZWQgdW5pdHMsIGluY2x1ZGluZwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgY2hhcmFjdGVyaXN0aWNzLgoKICAgU19MaXN0X1Byb2plY3QgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSBkb2luZyBhbnkgbGlzdGluZy4KICAgLS0gICBUaGUgc291cmNlIGFuZCBvYmplY3QgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgd2lsbCBiZSBjb21tdW5pY2F0ZWQKICAgLS0gICB0byBnbmF0bGlzdCB0aHJvdWdoIGxvZ2ljYWwgbmFtZXMgQURBX1BSSl9JTkNMVURFX0ZJTEUgYW5kCiAgIC0tICAgQURBX1BSSl9PQkpFQ1RTX0ZJTEUuCgogICBTX0xpc3RfU2VhcmNoICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NFQVJDSD0qIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JKiI7CiAgIC0tICAgICAgICAvU0VBUkNIPShkaXJlY3RvcnksLi4uKQogICAtLQogICAtLSAgIFNlYXJjaCB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzIGZvciBib3RoIHNvdXJjZSBhbmQgb2JqZWN0IGZpbGVzLgoKICAgU19MaXN0X1NvdXJjZSAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TT1VSQ0VfU0VBUkNIPSoiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYUkqIjsKICAgLS0gICAgICAgIC9TT1VSQ0VfU0VBUkNIPShkaXJlY3RvcnksLi4uKQogICAtLQogICAtLSAgIFdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzIGFsc28gbG9vayBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzLgoKICAgTGlzdF9Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19MaXN0X0FsbCAgICAgJ0FjY2VzcywKICAgICAgU19MaXN0X0N1cnJlbnQgJ0FjY2VzcywKICAgICAgU19MaXN0X0RlcGVuZCAgJ0FjY2VzcywKICAgICAgU19MaXN0X0V4dCAgICAgJ0FjY2VzcywKICAgICAgU19MaXN0X0ZpbGVzICAgJ0FjY2VzcywKICAgICAgU19MaXN0X01lc3MgICAgJ0FjY2VzcywKICAgICAgU19MaXN0X05vc3RpbmMgJ0FjY2VzcywKICAgICAgU19MaXN0X09iamVjdCAgJ0FjY2VzcywKICAgICAgU19MaXN0X091dHB1dCAgJ0FjY2VzcywKICAgICAgU19MaXN0X1Byb2plY3QgJ0FjY2VzcywKICAgICAgU19MaXN0X1NlYXJjaCAgJ0FjY2VzcywKICAgICAgU19MaXN0X1NvdXJjZSAgJ0FjY2Vzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFN3aXRjaGVzIGZvciBHTkFUIE1BS0UgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgU19NYWtlX0FjdGlvbnMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9BQ1RJT05TPSIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT01QSUxFICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQklORCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYiAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxJTksgIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWwgIjsKICAgLS0gICAgICAgIC9BQ1RJT05TPShrZXl3b3JkWywuLi5dKQogICAtLQogICAtLSAgR05BVCBNQUtFIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gY2hlY2sgaWYgdGhlIHNvdXJjZXMgYXJlIHVwIHRvIGRhdGUsCiAgIC0tICBjb21waWxlIHRob3NlIHNvdXJjZXMgdGhhdCBhcmUgbm90IHVwIHRvIGRhdGUsIGJpbmQgdGhlIG1haW4gc291cmNlLAogICAtLSAgdGhlbiBsaW5rIHRoZSBleGVjdXRhYmxlLgogICAtLQogICAtLSAgV2l0aCB0aGUgL0FDVElPTlMgcXVhbGlmaWVyLCBHTkFUIE1BS0UgbWF5IGJlIHJlc3RyaWN0ZWQgdG8gb25lIG9yCiAgIC0tICB0d28gb2YgdGhlc2UgdGhyZWUgc3RlcHM6CiAgIC0tCiAgIC0tICBvIENvbXBpbGUKICAgLS0gIG8gQmluZAogICAtLSAgbyBMaW5rCiAgIC0tCiAgIC0tCiAgIC0tICAgWW91IG1heSBzcGVjaWZ5IG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcga2V5d29yZHMgdG8gdGhlIC9BQ1RJT05TCiAgIC0tICAgcXVhbGlmaWVyOgogICAtLQogICAtLSAgIEJJTkQgICAgICAgICAgICBCaW5kIG9ubHkuIENhbiBiZSBjb21iaW5lZCB3aXRoIC9BQ1RJT05TPUNPTVBJTEUKICAgLS0gICAgICAgICAgICAgICAgICAgdG8gZG8gY29tcGlsYXRpb24gYW5kIGJpbmRpbmcsIGJ1dCBubyBsaW5raW5nLgogICAtLSAgICAgICAgICAgICAgICAgICBDYW4gYmUgY29tYmluZWQgd2l0aCAvQUNUSU9OUz1MSU5LIHRvIGRvIGJpbmRpbmcgYW5kCiAgIC0tICAgICAgICAgICAgICAgICAgIGxpbmtpbmcuIFdoZW4gbm90IGNvbWJpbmVkIHdpdGggL0FDVElPTlM9Q09NUElMRSwKICAgLS0gICAgICAgICAgICAgICAgICAgYWxsIHRoZSB1bml0cyBpbiB0aGUgY2xvc3VyZSBvZiB0aGUgbWFpbiBwcm9ncmFtIG11c3QKICAgLS0gICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIHByZXZpb3VzbHkgY29tcGlsZWQgYW5kIG11c3QgYmUgdXAgdG8gZGF0ZS4KICAgLS0KICAgLS0gICBDT01QSUxFICAgICAgICAgQ29tcGlsZSBvbmx5LiBEbyBub3QgcGVyZm9ybSBiaW5kaW5nLCBleGNlcHQgd2hlbgogICAtLSAgICAgICAgICAgICAgICAgICAvQUNUSU9OUz1CSU5EIGlzIGFsc28gc3BlY2lmaWVkLiBEbyBub3QgcGVyZm9ybQogICAtLSAgICAgICAgICAgICAgICAgICBsaW5raW5nLCBleGNlcHQgaWYgYm90aCAvQUNUSU9OUz1CSU5EIGFuZCAvQUNUSU9OUz1MSU5LCiAgIC0tICAgICAgICAgICAgICAgICAgIGFyZSBhbHNvIHNwZWNpZmllZC4KICAgLS0KICAgLS0gICBMSU5LICAgICAgICAgICAgTGluayBvbmx5LiBDYW4gYmUgY29tYmluZWQgd2l0aCAvQUNUSU9OUz1CSU5EIHRvIGRvCiAgIC0tICAgICAgICAgICAgICAgICAgIGJpbmRpbmcgYW5kIGxpbmtpbmcuIExpbmtpbmcgd2lsbCBub3QgYmUgcGVyZm9ybWVkCiAgIC0tICAgICAgICAgICAgICAgICAgIGlmIGNvbWJpbmVkIHdpdGggL0FDVElPTlM9Q09NUElMRSBidXQgbm90IHdpdGgKICAgLS0gICAgICAgICAgICAgICAgICAgL0FDVElPTlM9QklORFwuIFdoZW4gbm90IGNvbWJpbmVkIHdpdGggL0FDVElPTlM9QklORAogICAtLSAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHVuaXRzIGluIHRoZSBjbG9zdXJlIG9mIHRoZSBtYWluIHByb2dyYW0gbXVzdAogICAtLSAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gcHJldmlvdXNseSBjb21waWxlZCBhbmQgbXVzdCBiZSB1cCB0byBkYXRlLAogICAtLSAgICAgICAgICAgICAgICAgICBhbmQgdGhlIG1haW4gcHJvZ3JhbSBuZWVkIHRvIGhhdmUgYmVlbiBib3VuZC4KCiAgIFNfTWFrZV9BbGwgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQUxMX0ZJTEVTICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWEiOwogICAtLSAgICAgICAgL05PQUxMX0ZJTEVTIChEKQogICAtLSAgICAgICAgL0FMTF9GSUxFUwogICAtLQogICAtLSAgIENvbnNpZGVyIGFsbCBmaWxlcyBpbiB0aGUgbWFrZSBwcm9jZXNzLCBldmVuIHRoZSBHTkFUIGludGVybmFsIHN5c3RlbQogICAtLSAgIGZpbGVzIChmb3IgZXhhbXBsZSwgdGhlIHByZWRlZmluZWQgQWRhIGxpYnJhcnkgZmlsZXMpLiBCeSBkZWZhdWx0LAogICAtLSAgIEdOQVQgTUFLRSBkb2VzIG5vdCBjaGVjayB0aGVzZSBmaWxlcyAoaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4KICAgLS0gICBpbnN0YWxsYXRpb24gcHJvYmxlbSwgaXQgd2lsbCBiZSBjYXVnaHQgd2hlbiBHTkFUIE1BS0UgYmluZHMgeW91cgogICAtLSAgIHByb2dyYW0pLiBZb3UgbWF5IGhhdmUgdG8gc3BlY2lmeSB0aGlzIHF1YWxpZmllciBpZiB5b3UgYXJlIHdvcmtpbmcgb24KICAgLS0gICBHTkFUIGl0c2VsZi4gIFRoZSB2YXN0IG1ham9yaXR5IG9mIEdOQVQgTUFLRSB1c2VycyBuZXZlciBuZWVkIHRvCiAgIC0tICAgc3BlY2lmeSB0aGlzIHN3aXRjaC4gIEFsbCBHTkFUIGludGVybmFsIGZpbGVzIHdpdGggd2lsbCBiZSBjb21waWxlZAogICAtLSAgIHdpdGggL1NUWUxFX0NIRUNLPUdOQVQuCgogICBTX01ha2VfQWxscHJvaiA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0FMTF9QUk9KRUNUUyAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1VIjsKICAgLS0gICAgICAgIC9OT0FMTF9QUk9KRUNUUyAoRCkKICAgLS0gICAgICAgIC9BTExfUFJPSkVDVFMKICAgLS0KICAgLS0gICBJbXBsaWVzIC9VbmlxdWUuCiAgIC0tICAgV2hlbiB1c2VkIHdpdGhvdXQgcHJvamVjdCBmaWxlcywgaXQgaXMgZXF1aXZhbGVudCB0byAvVU5JUVVFLgogICAtLSAgIFdoZW4gdXNlZCB3aXRoIGEgcHJvamVjdCBmaWxlIHdpdGggbm8gbWFpbiAobmVpdGhlciBvbiB0aGUgY29tbWFuZAogICAtLSAgIGxpbmUgbm9yIGluIHRoZSBhdHRyaWJ1dGUgTWFpbikgY2hlY2sgZXZlcnkgc291cmNlIG9mIGV2ZXJ5IHByb2plY3QsCiAgIC0tICAgcmVjb21waWxlIGFsbCBzb3VyY2VzIHRoYXQgYXJlIG5vdCB1cCB0byBkYXRlIGFuZCByZWJ1aWxkIGxpYnJhcmllcwogICAtLSAgIGlmIG5lY2Vzc2FyeS4KCiAgIFNfTWFrZV9CaW5kICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQklOREVSX1FVQUxJRklFUlM9PyIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWJhcmdzIEJJTkQiOwogICAtLSAgICAgICAgL0JJTkRFUl9RVUFMSUZJRVJTCiAgIC0tCiAgIC0tICAgQW55IHF1YWxpZmllcnMgc3BlY2lmaWVkIGFmdGVyIHRoaXMgcXVhbGlmaWVyIG90aGVyIHRoYW4KICAgLS0gICAvQ09NUElMRVJfUVVBTElGSUVSUywgL0xJTktFUl9RVUFMSUZJRVJTIGFuZCAvTUFLRV9RVUFMSUZJRVJTIHdpbGwgYmUKICAgLS0gICBwYXNzZWQgdG8gYW55IEdOQVQgQklORCBjb21tYW5kcyBnZW5lcmF0ZWQgYnkgR05BVCBNQUtFLgoKICAgU19NYWtlX0JpbmRwcmogOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9CTkRfTE5LX0ZVTExfUFJPSkVDVCAiICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItQiI7CiAgIC0tICAgICAgICAvQk5EX0xOS19GVUxMX1BST0pFQ1QKICAgLS0KICAgLS0gICBCaW5kIGFuZCBsaW5rIGFsbCBzb3VyY2VzIG9mIGEgcHJvamVjdCwgd2l0aG91dCBhbnkgY29uc2lkZXJhdGlvbgogICAtLSAgIHRvIGF0dHJpYnV0ZSBNYWluLCBpZiB0aGVyZSBpcyBvbmUuIFRoaXMgcXVhbGlmaWVyIG5lZWQgdG8gYmUKICAgLS0gICB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIC9QUk9KRUNUX0ZJTEU9IHF1YWxpZmllciBhbmQgY2Fubm90CiAgIC0tICAgYmUgdXNlZCB3aXRoIGEgbWFpbiBzdWJwcm9ncmFtIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgZm9yCiAgIC0tICAgYSBsaWJyYXJ5IHByb2plY3QgZmlsZS4gQXMgdGhlIGJpbmRlciBpcyBpbnZva2VkIHdpdGggdGhlIG9wdGlvbgogICAtLSAgIG1lYW5pbmcgIk5vIEFkYSBtYWluIHN1YnByb2dyYW0iLCB0aGUgdXNlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQogICAtLSAgIHByb3BlciBvcHRpb25zIGFyZSBzcGVjaWZpZWQgdG8gdGhlIGxpbmtlci4gVGhpcyBxdWFsaWZpZXIgaXMKICAgLS0gICBub3JtYWxseSB1c2VkIHdoZW4gdGhlIG1haW4gc3VicHJvZ3JhbSBpcyBpbiBhIGZvcmVpZ24gbGFuZ3VhZ2UKICAgLS0gICBzdWNoIGFzIEMuCgogICBTX01ha2VfQ29tcCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NPTVBJTEVSX1FVQUxJRklFUlM9PyIgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jYXJncyBDT01QSUxFIjsKICAgLS0gICAgICAgIC9DT01QSUxFUl9RVUFMSUZJRVJTCiAgIC0tCiAgIC0tICAgQW55IHF1YWxpZmllcnMgc3BlY2lmaWVkIGFmdGVyIHRoaXMgcXVhbGlmaWVyIG90aGVyIHRoYW4KICAgLS0gICAvQklOREVSX1FVQUxJRklFUlMsIC9MSU5LRVJfUVVBTElGSUVSUyBhbmQgL01BS0VfUVVBTElGSUVSUyB3aWxsIGJlCiAgIC0tICAgcGFzc2VkIHRvIGFueSBHTkFUIENPTVBJTEUgY29tbWFuZHMgZ2VuZXJhdGVkIGJ5IEdOQVQgTUFLRS4KCiAgIFNfTWFrZV9Db25kICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09ORElUSU9OQUxfU09VUkNFX1NFQVJDSD0qIiAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUEqIjsKICAgLS0gICAgICAgIC9DT05ESVRJT05BTF9TT1VSQ0VfU0VBUkNIPWRpcgogICAtLQogICAtLSAgIEVxdWl2YWxlbnQgdG8gIi9TT1VSQ0VfU0VBUkNIPWRpciAvU0tJUF9NSVNTSU5HPWRpciIuCgogICBTX01ha2VfQ29udCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NPTlRJTlVFX09OX0VSUk9SICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1rIjsKICAgLS0gICAgICAgIC9OT0NPTlRJTlVFX09OX0VSUk9SIChEKQogICAtLSAgICAgICAgL0NPTlRJTlVFX09OX0VSUk9SCiAgIC0tCiAgIC0tICAgS2VlcCBnb2luZy4gQ29udGludWUgYXMgbXVjaCBhcyBwb3NzaWJsZSBhZnRlciBhIGNvbXBpbGF0aW9uIGVycm9yLgogICAtLSAgIFRvIGVhc2UgdGhlIHByb2dyYW1tZXIncyB0YXNrIGluIGNhc2Ugb2YgY29tcGlsYXRpb24gZXJyb3JzLCB0aGUgbGlzdAogICAtLSAgIG9mIHNvdXJjZXMgZm9yIHdoaWNoIHRoZSBjb21waWxlIGZhaWxzIGlzIGdpdmVuIHdoZW4gR05BVCBNQUtFCiAgIC0tICAgdGVybWluYXRlcy4KCiAgIFNfTWFrZV9DdXJyZW50IDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ1VSUkVOVF9ESVJFQ1RPUlkgIiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1JLSI7CiAgIC0tICAgICAgICAvQ1VSUkVOVF9ESVJFQ1RPUlkgKEQpCiAgIC0tICAgICAgICAvTk9DVVJSRU5UX0RJUkVDVE9SWQogICAtLQogICAtLSAgIExvb2sgZm9yIHNvdXJjZSwgbGlicmFyeSBvciBvYmplY3QgZmlsZXMgaW4gdGhlIGRlZmF1bHQgZGlyZWN0b3J5LgoKICAgU19NYWtlX0RlcCAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9ERVBFTkRFTkNJRVNfTElTVCAiICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItTSI7CiAgIC0tICAgICAgICAvTk9ERVBFTkRFTkNJRVNfTElTVCAoRCkKICAgLS0gICAgICAgIC9ERVBFTkRFTkNJRVNfTElTVAogICAtLQogICAtLSAgIENoZWNrIGlmIGFsbCBvYmplY3RzIGFyZSB1cCB0byBkYXRlLiBJZiB0aGV5IGFyZSwgb3V0cHV0IHRoZSBvYmplY3QKICAgLS0gICBkZXBlbmRlbmNlcyB0byBTWVMkT1VUUFVUIGluIGEgZm9ybSB0aGF0IGNhbiBiZSBkaXJlY3RseSBleHBsb2l0ZWQgaW4KICAgLS0gICBhIFVuaXgtc3R5bGUgTWFrZWZpbGUuIEJ5IGRlZmF1bHQsIGVhY2ggc291cmNlIGZpbGUgaXMgcHJlZml4ZWQgd2l0aAogICAtLSAgIGl0cyAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIGRpcmVjdG9yeSBuYW1lLiBUaGlzIG5hbWUgaXMgd2hhdGV2ZXIgeW91CiAgIC0tICAgc3BlY2lmaWVkIGluIHRoZSB2YXJpb3VzIC9TT1VSQ0VfU0VBUkNIIGFuZCAvU0VBUkNIIHF1YWxpZmllcnMuICBJZgogICAtLSAgIHlvdSBhbHNvIHNwZWZpY3kgdGhlIC9RVUlFVCBxdWFsaWZpZXIsIG9ubHkgdGhlIHNvdXJjZSBmaWxlIG5hbWVzLAogICAtLSAgIHdpdGhvdXQgcmVsYXRpdmUgcGF0aHMsIGFyZSBvdXRwdXQuIElmIHlvdSBqdXN0IHNwZWNpZnkgdGhlCiAgIC0tICAgL0RFUEVOREVOQ1lfTElTVCBxdWFsaWZpZXIsIGRlcGVuZGVuY2llcyBvZiB0aGUgR05BVCBpbnRlcm5hbCBzeXN0ZW0KICAgLS0gICBmaWxlcyBhcmUgb21pdHRlZC4gIFRoaXMgaXMgdHlwaWNhbGx5IHdoYXQgeW91IHdhbnQuIElmIHlvdSBhbHNvCiAgIC0tICAgc3BlY2lmeSB0aGUgL0FMTF9GSUxFUyBxdWFsaWZpZXIsIGRlcGVuZGVuY2llcyBvZiB0aGUgR05BVCBpbnRlcm5hbAogICAtLSAgIGZpbGVzIGFyZSBhbHNvIGxpc3RlZC4gTm90ZSB0aGF0IGRlcGVuZGVuY2llcyBvZiB0aGUgb2JqZWN0cyBpbgogICAtLSAgIGV4dGVybmFsIEFkYSBsaWJyYXJpZXMgKHNlZSB0aGUgL1NLSVBfTUlTU0lORyBxdWFsaWZpZXIpIGFyZSBuZXZlcgogICAtLSAgIHJlcG9ydGVkLgoKICAgU19NYWtlX0Rpcm9iaiAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9ESVJFQ1RPUllfT0JKRUNUUz1AIiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItREAiOwogICAtLSAgICAgICAgL0RJUkVDVE9SWV9PQkpFQ1RTPTxmaWxlPgogICAtLQogICAtLSAgIFB1dCBhbGwgb2JqZWN0IGZpbGVzIGFuZCAuQUxJIGZpbGVzIGluIDxmaWxlPi4KICAgLS0gICBUaGlzIHF1YWxpZmllciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIC9QUk9KRUNUX0ZJTEUuCgogICBTX01ha2VfRG9vYmogICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RPX09CSkVDVF9DSEVDSyAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1uIjsKICAgLS0gICAgICAgIC9OT0RPX09CSkVDVF9DSEVDSyAoRCkKICAgLS0gICAgICAgIC9ET19PQkpFQ1RfQ0hFQ0sKICAgLS0KICAgLS0gICBEb24ndCBjb21waWxlLCBiaW5kLCBvciBsaW5rLiBPdXRwdXQgYSBzaW5nbGUgY29tbWFuZCB0aGF0IHdpbGwKICAgLS0gICByZWNvbXBpbGUgYW4gb3V0IG9mIGRhdGUgdW5pdCwgaWYgYW55LiBSZXBlYXRlZCB1c2Ugb2YgdGhpcyBvcHRpb24sCiAgIC0tICAgZm9sbG93ZWQgYnkgY2Fycnlpbmcgb3V0IHRoZSBpbmRpY2F0ZWQgY29tcGlsYXRpb24sIHdpbGwgZXZlbnR1YWxseQogICAtLSAgIHJlc3VsdCBpbiByZWNvbXBpbGluZyBhbGwgcmVxdWlyZWQgdW5pdHMuCiAgIC0tCiAgIC0tICAgSWYgYW55IEFMSSBpcyBtaXNzaW5nIGR1cmluZyB0aGUgcHJvY2VzcywgR05BVCBNQUtFIGhhbHRzIGFuZAogICAtLSAgIGRpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2UuCgogICBTX01ha2VfRXhlY3V0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYRUNVVEFCTEU9QCIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vQCI7CiAgIC0tICAgICAgICAvRVhFQ1VUQUJMRT1leGVjLW5hbWUKICAgLS0KICAgLS0gICBUaGUgbmFtZSBvZiB0aGUgZmluYWwgZXhlY3V0YWJsZSBwcm9ncmFtIHdpbGwgYmUgJ2V4ZWNfbmFtZScuIElmIHRoaXMKICAgLS0gICBxdWFsaWZpZXIgaXMgb21pdHRlZCB0aGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgZXhlY3V0YWJsZSB3aWxsIGJlIHRoZQogICAtLSAgIG5hbWUgb2YgdGhlIGlucHV0IGZpbGUgd2l0aCBhbiBFWEUgZmlsZXR5cGUuICBZb3UgbWF5IHByZWZpeAogICAtLSAgICdleGVjX25hbWUnIHdpdGggYSByZWxhdGl2ZSBvciBhYnNvbHV0ZSBkaXJlY3RvcnkgcGF0aC4KCiAgIFNfTWFrZV9FeHQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRVhURVJOQUxfUkVGRVJFTkNFPSIgJiAnIicgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVgiICYgJyInOwogICAtLSAgICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX01ha2VfRm9yY2UgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZPUkNFX0NPTVBJTEUgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1mIjsKICAgLS0gICAgICAgIC9OT0ZPUkNFX0NPTVBJTEUgKEQpCiAgIC0tICAgICAgICAvRk9SQ0VfQ09NUElMRQogICAtLQogICAtLSAgIEZvcmNlIHJlY29tcGlsYXRpb25zLiBSZWNvbXBpbGUgYWxsIHNvdXJjZXMsIGV2ZW4gdGhvdWdoIHNvbWUgb2JqZWN0CiAgIC0tICAgZmlsZXMgbWF5IGJlIHVwIHRvIGRhdGUsIGJ1dCBkb24ndCByZWNvbXBpbGUgcHJlZGVmaW5lZCBvciBHTkFUCiAgIC0tICAgaW50ZXJuYWwgZmlsZXMgdW5sZXNzIHRoZSAvQUxMX0ZJTEVTIHF1YWxmaWVyIGlzIGFsc28gc3BlY2lmaWVkLgoKICAgU19NYWtlX0Z1bGwgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9GVUxMX1BBVEhfSU5fQlJJRUZfTUVTU0FHRVMgIiAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRiI7CiAgIC0tICAgICAgICAvTk9GVUxMX1BBVEhfSU5fQlJJRUZfTUVTU0FHRVMgKEQpCiAgIC0tICAgICAgICAvRlVMTF9QQVRIX0lOX0JSSUVGX01FU1NBR0VTCiAgIC0tCiAgIC0tICAgV2hlbiB1c2luZyBwcm9qZWN0IGZpbGVzLCBpZiBzb21lIGVycm9ycyBvciB3YXJuaW5ncyBhcmUgZGV0ZWN0ZWQKICAgLS0gICBkdXJpbmcgcGFyc2luZyBhbmQgdmVyYm9zZSBtb2RlIGlzIG5vdCBpbiBlZmZlY3QgKG5vIHVzZSBvZiBxdWFsaWZpZXIKICAgLS0gICAvVkVSQk9TRSksIHRoZW4gZXJyb3IgbGluZXMgc3RhcnQgd2l0aCB0aGUgZnVsbCBwYXRoIG5hbWUgb2YgdGhlCiAgIC0tICAgcHJvamVjdCBmaWxlLCByYXRoZXIgdGhhbiBpdHMgc2ltcGxlIGZpbGUgbmFtZS4KCiAgIFNfTWFrZV9IaV9WZXJiIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvSElHSF9WRVJCT1NJVFkgIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12aCI7CiAgIC0tICAgICAgICAvTk9ISUdIX1ZFUkJPU0lUWSAoRCkKICAgLS0gICAgICAgIC9ISUdIX1ZFUkJPU0lUWQogICAtLQogICAtLSAgIERpc3BsYXlzIHRoZSByZWFzb24gZm9yIGFsbCByZWNvbXBpbGF0aW9ucyBHTkFUIE1BS0UgZGVjaWRlcyBhcmUKICAgLS0gICBuZWNlc3NhcnksIGluIGhpZ2ggdmVyYm9zaXR5LiBFcXVpdmFsZW50IHRvIC9WRVJCT1NFLgoKICAgU19NYWtlX0lucGxhY2UgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JTl9QTEFDRSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItaSI7CiAgIC0tICAgICAgICAvTk9JTl9QTEFDRSAoRCkKICAgLS0gICAgICAgIC9JTl9QTEFDRQogICAtLQogICAtLSAgIEluIG5vcm1hbCBtb2RlLCBHTkFUIE1BS0UgY29tcGlsZXMgYWxsIG9iamVjdCBmaWxlcyBhbmQgQUxJIGZpbGVzCiAgIC0tICAgaW50byB0aGUgY3VycmVudCBkaXJlY3RvcnkuIElmIHRoZSAvSU5fUExBQ0Ugc3dpdGNoIGlzIHVzZWQsCiAgIC0tICAgdGhlbiBpbnN0ZWFkIG9iamVjdCBmaWxlcyBhbmQgQUxJIGZpbGVzIHRoYXQgYWxyZWFkeSBleGlzdCBhcmUgb3Zlci0KICAgLS0gICB3cml0dGVuIGluIHBsYWNlLiBUaGlzIG1lYW5zIHRoYXQgb25jZSBhIGxhcmdlIHByb2plY3QgaXMgb3JnYW5pemVkCiAgIC0tICAgaW50byBzZXBhcmF0ZSBkaXJlY3RvcmllcyBpbiB0aGUgZGVzaXJlZCBtYW5uZXIsIHRoZW4gR05BVCBNQUtFIHdpbGwKICAgLS0gICBhdXRvbWF0aWNhbGx5IG1haW50YWluIGFuZCB1cGRhdGUgdGhpcyBvcmdhbml6YXRpb24uIElmIG5vIEFMSSBmaWxlcwogICAtLSAgIGFyZSBmb3VuZCBvbiB0aGUgQWRhIG9iamVjdCBwYXRoLCB0aGUgbmV3IG9iamVjdCBhbmQgQUxJIGZpbGVzIGFyZQogICAtLSAgIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBzb3VyY2UgYmVpbmcgY29tcGlsZWQuCgogICBTX01ha2VfSW5kZXggICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NPVVJDRV9JTkRFWD0jIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lSSMiOwogICAtLSAgICAgICAgL1NPVVJDRV9JTkRFWD1ubm4KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlIGluZGV4IG9mIHRoZSB1bml0cyBpbiB0aGUgc291cmNlIGZpbGUKICAgLS0gICBCeSBkZWZhdWx0LCBzb3VyY2UgZmlsZXMgYXJlIG1vbm8tdW5pdCBhbmQgdGhlcmUgaXMgbm8gaW5kZXgKICAgLS0gICBXaGVuIC9TT1VSQ0VfSU5ERVg9bm5uIGlzIHNwZWNpZmllZCwgb25seSBvbmUgbWFpbiBtYXkgYmUgc3BlY2lmaWVkCiAgIC0tICAgb24gdGhlIGNvbW1hbmQgbGluZS4KCiAgIFNfTWFrZV9MaWJyYXJ5IDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTElCUkFSWV9TRUFSQ0g9KiIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUwqIjsKICAgLS0gICAgICAgIC9MSUJSQVJZX1NFQVJDSD0oZGlyZWN0b3J5WywuLi5dKQogICAtLQogICAtLSAgIEFkZCB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzIHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGluIHdoaWNoIHRoZQogICAtLSAgIGxpbmtlciB3aWxsIHNlYXJjaCBmb3IgbGlicmFyaWVzLgoKICAgU19NYWtlX0xpbmsgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9MSU5LRVJfUVVBTElGSUVSUz0/IiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbGFyZ3MgTElOSyI7CiAgIC0tICAgICAgICAvTElOS0VSX1FVQUxJRklFUlMKICAgLS0KICAgLS0gICBBbnkgcXVhbGlmaWVycyBzcGVjaWZpZWQgYWZ0ZXIgdGhpcyBxdWFsaWZpZXIgb3RoZXIgdGhhbgogICAtLSAgIC9DT01QSUxFUl9RVUFMSUZJRVJTLCAvQklOREVSX1FVQUxJRklFUlMgYW5kIC9NQUtFX1FVQUxJRklFUlMgd2lsbCBiZQogICAtLSAgIHBhc3NlZCB0byBhbnkgR05BVCBMSU5LIGNvbW1hbmRzIGdlbmVyYXRlZCBieSBHTkFUIExJTksuCgogICBTX01ha2VfTG93X1ZlcmIgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9MT1dfVkVSQk9TSVRZICIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZsIjsKICAgLS0gICAgICAgIC9OT0xPV19WRVJCT1NJVFkgKEQpCiAgIC0tICAgICAgICAvTE9XX1ZFUkJPU0lUWQogICAtLQogICAtLSAgIERpc3BsYXlzIHRoZSByZWFzb24gZm9yIGFsbCByZWNvbXBpbGF0aW9ucyBHTkFUIE1BS0UgZGVjaWRlcyBhcmUKICAgLS0gICBuZWNlc3NhcnksIGluIGxvdyB2ZXJib3NpdHksIHRoYXQgaXMgd2l0aCBsZXNzIG91dHB1dCB0aGFuCiAgIC0tICAgL01FRElVTV9WRVJCT1NJVFksIC9ISUdIX1ZFUkJPU0lUWSBvciAvVkVSQk9TRS4KCiAgIFNfTWFrZV9NYWtlICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUFLRV9RVUFMSUZJRVJTPT8iICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW1hcmdzIE1BS0UiOwogICAtLSAgICAgICAgL01BS0VfUVVBTElGSUVSUwogICAtLQogICAtLSAgIEFueSBxdWFsaWZpZXJzIHNwZWNpZmllZCBhZnRlciB0aGlzIHF1YWxpZmllciBvdGhlciB0aGFuCiAgIC0tICAgL0NPTVBJTEVSX1FVQUxJRklFUlMsIC9CSU5ERVJfUVVBTElGSUVSUyBhbmQgL0xJTktFUl9RVUFMSUZJRVJTCiAgIC0tICAgYXJlIGZvciB0aGUgYmVuZWZpdCBvZiBHTkFUIE1BS0UgaXRzZWxmLgoKICAgU19NYWtlX01hcHBpbmcgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NQVBQSU5HICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItQyI7CiAgIC0tICAgICAgICAvTk9NQVBQSU5HIChEKQogICAtLSAgICAgICAgL01BUFBJTkcKICAgLS0KICAgLS0gICBVc2UgYSBtYXBwaW5nIGZpbGUuICBBIG1hcHBpbmcgZmlsZSBpcyBhIHdheSB0byBjb21tdW5pY2F0ZSB0byB0aGUKICAgLS0gICBjb21waWxlciB0d28gbWFwcGluZ3M6IGZyb20gdW5pdCBuYW1lcyB0byBmaWxlIG5hbWVzICh3aXRob3V0IGFueQogICAtLSAgIGRpcmVjdG9yeSBpbmZvcm1hdGlvbikgYW5kIGZyb20gZmlsZSBuYW1lcyB0byBwYXRoIG5hbWVzICh3aXRoIGZ1bGwKICAgLS0gICBkaXJlY3RvcnkgaW5mb3JtYXRpb24pLiBUaGVzZSBtYXBwaW5ncyBhcmUgdXNlZCBieSB0aGUgY29tcGlsZXIgdG8KICAgLS0gICBzaG9ydC1jaXJjdWl0IHRoZSBwYXRoIHNlYXJjaC4gV2hlbiBHTkFUIE1BS0UgaXMgaW52b2tlZCB3aXRoIHRoaXMKICAgLS0gICBxdWFsaWZpZXIsIGl0IHdpbGwgY3JlYXRlIGEgbWFwcGluZyBmaWxlLCBpbml0aWFsbHkgcG9wdWxhdGVkIGJ5IHRoZQogICAtLSAgIHByb2plY3QgbWFuYWdlciwgaWYgL1BST0pFQ1RfRmlsZT0gaXMgdXNlZCwgb3RoZXJ3aXNlIGluaXRpYWxseSBlbXB0eS4KICAgLS0gICBFYWNoIGludm9jYXRpb24gb2YgdGhlIGNvbXBpbGVyIHdpbGwgYWRkIHRoZSBuZXdseSBhY2Nlc3NlZCBzb3VyY2VzIHRvCiAgIC0tICAgdGhlIG1hcHBpbmcgZmlsZS4gVGhpcyB3aWxsIGltcHJvdmUgdGhlIHNvdXJjZSBzZWFyY2ggZHVyaW5nIHRoZSBuZXh0CiAgIC0tICAgaW52b2NhdGlvbnMgb2YgdGhlIGNvbXBpbGVyCgogICBTX01ha2VfTWVkX1ZlcmIgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NRURJVU1fVkVSQk9TSVRZICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZtIjsKICAgLS0gICAgICAgIC9OT01FRElVTV9WRVJCT1NJVFkgKEQpCiAgIC0tICAgICAgICAvTUVESVVNX1ZFUkJPU0lUWQogICAtLQogICAtLSAgIERpc3BsYXlzIHRoZSByZWFzb24gZm9yIGFsbCByZWNvbXBpbGF0aW9ucyBHTkFUIE1BS0UgZGVjaWRlcyBhcmUKICAgLS0gICBuZWNlc3NhcnksIGluIG1lZGl1bSB2ZXJib3NpdHksIHRoYXQgaXMgd2l0aCBwb3RlbnRpYWxseSBsZXNzIG91dHB1dAogICAtLSAgIHRoYW4gL0hJR0hfVkVSQk9TSVRZIG9yIC9WRVJCT1NFLgoKICAgU19NYWtlX01lc3MgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NRVNTQUdFU19QUk9KRUNUX0ZJTEU9IiAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDAgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUVESVVNICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAxICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhJR0ggIiAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMiI7CiAgIC0tICAgICAgICAvTUVTU0FHRVNfUFJPSkVDVF9GSUxFWz1tZXNzYWdlcy1vcHRpb25dCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSAidmVyYm9zaXR5IiBvZiB0aGUgcGFyc2luZyBvZiBwcm9qZWN0IGZpbGVzLgogICAtLSAgIG1lc3NhZ2VzLW9wdGlvbiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgREVGQVVMVCAoRCkgIE5vIG1lc3NhZ2VzIGFyZSBvdXRwdXQgaWYgdGhlcmUgaXMgbm8gZXJyb3Igb3Igd2FybmluZy4KICAgLS0KICAgLS0gICAgICBNRURJVU0gICAgICAgQSBzbWFsbCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dC4KICAgLS0KICAgLS0gICAgICBISUdIICAgICAgICAgQSBncmVhdCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dCwgbW9zdCBvZiB0aGVtIG5vdAogICAtLSAgICAgICAgICAgICAgICAgICBiZWluZyB1c2VmdWwgZm9yIHRoZSB1c2VyLgoKICAgU19NYWtlX01pbmltYWwgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9NSU5JTUFMX1JFQ09NUElMQVRJT04gIiAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbSI7CiAgIC0tICAgICAgICAvTk9NSU5JTUFMX1JFQ09NUElMQVRJT04gKEQpCiAgIC0tICAgICAgICAvTUlOSU1BTF9SRUNPTVBJTEFUSU9OCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoYXQgdGhlIG1pbmltdW0gbmVjZXNzYXJ5IGFtb3VudCBvZiByZWNvbXBpbGF0aW9uCiAgIC0tICAgYmUgcGVyZm9ybWVkLiBJbiB0aGlzIG1vZGUgR05BVCBNQUtFIGlnbm9yZXMgdGltZSBzdGFtcCBkaWZmZXJlbmNlcwogICAtLSAgIHdoZW4gdGhlIG9ubHkgbW9kaWZpY2F0aW9ucyB0byBhIHNvdXJjZSBmaWxlIGNvbnNpc3QgaW4KICAgLS0gICBhZGRpbmcvcmVtb3ZpbmcgY29tbWVudHMsIGVtcHR5IGxpbmVzLCBzcGFjZXMgb3IgdGFicy4KCiAgIFNfTWFrZV9Ob2xpbmsgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9MSU5LICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiOwogICAtLSAgICAgICAgL05PTElOSwogICAtLQogICAtLSAgIENvbXBpbGUgb25seS4gRG8gbm90IHBlcmZvcm0gYmluZGluZyBhbmQgbGlua2luZy4gSWYgdGhlIHJvb3QgdW5pdCBpcwogICAtLSAgIG5vdCBhIG1haW4gdW5pdCwgdGhpcyBpcyB0aGUgZGVmYXVsdC4gIE90aGVyd2lzZSBHTkFUIE1BS0Ugd2lsbAogICAtLSAgIGF0dGVtcHQgYmluZGluZyBhbmQgbGlua2luZyB1bmxlc3MgYWxsIG9iamVjdHMgYXJlIHVwIHRvIGRhdGUgYW5kIHRoZQogICAtLSAgIGV4ZWN1dGFibGUgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgb2JqZWN0cy4KICAgLS0gICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gL0FDVElPTlM9Q09NUElMRQoKICAgU19NYWtlX05vbWFpbiAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT01BSU4gIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIteiI7CiAgIC0tICAgICAgICAvTk9NQUlOCiAgIC0tCiAgIC0tICAgTm8gbWFpbiBzdWJwcm9ncmFtLiBCaW5kIGFuZCBsaW5rIHRoZSBwcm9ncmFtIGV2ZW4gaWYgdGhlIHVuaXQgbmFtZQogICAtLSAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgYSBwYWNrYWdlIG5hbWUuIFRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZQogICAtLSAgIHdpbGwgZXhlY3V0ZSB0aGUgZWxhYm9yYXRpb24gcm91dGluZXMgb2YgdGhlIHBhY2thZ2UgYW5kIGl0cyBjbG9zdXJlLAogICAtLSAgIHRoZW4gdGhlIGZpbmFsaXphdGlvbiByb3V0aW5lcy4KCiAgIFNfTWFrZV9Ob25wcm8gIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9OX1BST0pFQ1RfVU5JVF9DT01QSUxBVElPTiAiICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXgiOwogICAtLSAgICAgICAgL05PTl9QUk9KRUNUX1VOSVRfQ09NUElMQVRJT04KICAgLS0KICAgLS0gICAgTm9ybWFsbHksIHdoZW4gdXNpbmcgcHJvamVjdCBmaWxlcywgYSB1bml0IHRoYXQgaXMgbm90IHBhcnQgb2YgYW55CiAgIC0tICAgIHByb2plY3QgZmlsZSwgY2Fubm90IGJlIGNvbXBpbGUuIFRoZXNlIHVuaXRzIG1heSBiZSBjb21waWxlLCB3aGVuCiAgIC0tICAgIG5lZWRlZCwgaWYgdGhpcyBxdWFsaWZpZXIgaXMgc3BlY2lmaWVkLgoKICAgU19NYWtlX05vc3RpbmMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1NURF9JTkNMVURFUyAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbm9zdGRpbmMiOwogICAtLSAgICAgICAgL05PU1REX0lOQ0xVREVTCiAgIC0tCiAgIC0tICAgIERvIG5vdCBsb29rIGZvciBzb3VyY2VzIHRoZSBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgZGlyZWN0b3J5LgoKICAgU19NYWtlX05vc3RsaWIgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1NURF9MSUJSQVJJRVMgIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbm9zdGRsaWIiOwogICAtLSAgICAgICAgL05PU1REX0xJQlJBUklFUwogICAtLQogICAtLSAgICBEbyBub3QgbG9vayBmb3IgbGlicmFyeSBmaWxlcyBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgZGlyZWN0b3J5LgoKICAgU19NYWtlX09iamVjdCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9PQkpFQ1RfU0VBUkNIPSoiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYU8qIjsKICAgLS0gICAgICAgIC9PQkpFQ1RfU0VBUkNIPShkaXJlY3RvcnlbLC4uLl0pCiAgIC0tCiAgIC0tICAgV2hlbiBsb29raW5nIGZvciBsaWJyYXJ5IGFuZCBvYmplY3QgZmlsZXMgbG9vayBhbHNvIGluIHRoZSBzcGVjaWZpZWQKICAgLS0gICBkaXJlY3Rvcmllcy4KCiAgIFNfTWFrZV9Qcm9jICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUFJPQ0VTU0VTPSMiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWojIjsKICAgLS0gICAgICAgIC9OT1BST0NFU1NFUyAoRCkKICAgLS0gICAgICAgIC9QUk9DRVNTRVM9Tk5OCiAgIC0tCiAgIC0tICAgVXNlIE5OTiBwcm9jZXNzZXMgdG8gY2Fycnkgb3V0IHRoZSAocmUpY29tcGxhdGlvbnMuIElmIHlvdSBoYXZlIGEKICAgLS0gICBtdWx0aXByb2Nlc3NvciBtYWNoaW5lLCBjb21waWxhdGlvbnMgd2lsbCBvY2N1ciBpbiBwYXJhbGxlbC4gIEluIHRoZQogICAtLSAgIGV2ZW50IG9mIGNvbXBpbGF0aW9uIGVycm9ycywgbWVzc2FnZXMgZnJvbSB2YXJpb3VzIGNvbXBpbGF0aW9ucyBtaWdodAogICAtLSAgIGdldCBpbnRlcnNwZXJzZWQgKGJ1dCBHTkFUIE1BS0Ugd2lsbCBnaXZlIHlvdSB0aGUgZnVsbCBvcmRlcmVkIGxpc3Qgb2YKICAgLS0gICBmYWlsaW5nIGNvbXBpbGVzIGF0IHRoZSBlbmQpLiBUaGlzIGNhbiBhdCB0aW1lcyBiZSBhbm5veWluZy4gIFRvIGdldCBhCiAgIC0tICAgY2xlYW4gbGlzdCBvZiBlcnJvciBtZXNzYWdlcyBkb24ndCB1c2UgdGhpcyBxdWFsaWZpZXIuCgogICBTX01ha2VfTm9qb2JzICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PUFJPQ0VTU0VTICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1qMSI7CiAgIC0tICBOT0RPQyAoc2VlIC9QUk9DRVNTKQoKICAgU19NYWtlX1Byb2plY3QgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSBhbnkgb3RoZXIgcHJvY2Vzc2luZyB0bwogICAtLSAgIHNldCB0aGUgYnVpbGRpbmcgZW52aXJvbm1lbnQuCgogICBTX01ha2VfUXVpZXQgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1FVSUVUICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1xIjsKICAgLS0gICAgICAgIC9OT1FVSUVUIChEKQogICAtLSAgICAgICAgL1FVSUVUCiAgIC0tCiAgIC0tICAgV2hlbiB0aGlzIHF1YWxpZmllcnMgaXMgc3BlY2lmaWVkLCB0aGUgY29tbWFuZHMgY2FycmllZCBvdXQgYnkgR05BVAogICAtLSAgIE1BS0UgYXJlIG5vdCBkaXNwbGF5ZWQuCgogICBTX01ha2VfUmVhc29uICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFQVNPTlMgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12IjsKICAgLS0gICAgICAgIC9OT1JFQVNPTlMgKEQpCiAgIC0tICAgICAgICAvUkVBU09OUwogICAtLQogICAtLSAgIERpc3BsYXlzIHRoZSByZWFzb24gZm9yIGFsbCByZWNvbXBpbGF0aW9ucyBHTkFUIE1BS0UgZGVjaWRlcyBhcmUKICAgLS0gICBuZWNlc3NhcnkuCgogICBTX01ha2VfUlRTICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JVTlRJTUVfU1lTVEVNPXwiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tUlRTPXwiOwogICAtLSAgICAgICAgL1JVTlRJTUVfU1lTVEVNPXh4eAogICAtLQogICAtLSAgICBCdWlsZCBhZ2FpbnN0IGFuIGFsdGVybmF0ZSBydW50aW1lIHN5c3RlbSBuYW1lZCB4eHggb3IgUlRTLXh4eC4KCiAgIFNfTWFrZV9TZWFyY2ggIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU0VBUkNIPSoiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUkqIjsKICAgLS0gICAgICAgIC9TRUFSQ0g9KGRpcmVjdG9yeVssLi4uXSkKICAgLS0KICAgLS0gICBTZWFyY2ggdGhlIHNwZWNpZmllZCBkaXJlY3RvcmllcyBmb3IgYm90aCBzb3VyY2UgYW5kIG9iamVjdCBmaWxlcy4KCiAgIFNfTWFrZV9Ta2lwICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU0tJUF9NSVNTSU5HPSoiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFMKiI7CiAgIC0tICAgICAgICAvU0tJUF9NSVNTSU5HPShkaXJlY3RvcnlbLC4uLl0pCiAgIC0tCiAgIC0tICAgU2tpcCBtaXNzaW5nIGxpYnJhcnkgc291cmNlcyBpZiBBTEkgaW4gJ2RpcmVjdG9yeScuCgogICBTX01ha2VfU291cmNlICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NPVVJDRV9TRUFSQ0g9KiIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1hSSoiOwogICAtLSAgICAgICAgL1NPVVJDRV9TRUFSQ0g9KGRpcmVjdG9yeVssLi4uXSkKICAgLS0KICAgLS0gICBXaGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcyBhbHNvIGxvb2sgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3Rvcmllcy4KCiAgIFNfTWFrZV9Td2l0Y2ggIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU1dJVENIX0NIRUNLICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMiOwogICAtLSAgICAgICAgL05PU1dJVENIX0NIRUNLIChEKQogICAtLSAgICAgICAgL1NXSVRDSF9DSEVDSwogICAtLQogICAtLSAgIFJlY29tcGlsZSBpZiBjb21waWxlciBzd2l0Y2hlcyBoYXZlIGNoYW5nZWQgc2luY2UgbGFzdCBjb21waWxhdGlvbi4KICAgLS0gICBBbGwgY29tcGlsZXIgc3dpdGNoZXMgYnV0IC1JIGFuZCAtbyBhcmUgdGFrZW4gaW50byBhY2NvdW50IGluIHRoZQogICAtLSAgIGZvbGxvd2luZyB3YXk6IG9yZGVycyBiZXR3ZWVuIGRpZmZlcmVudCAiZmlyc3QgbGV0dGVyIiBzd2l0Y2hlcyBhcmUKICAgLS0gICBpZ25vcmVkLCBidXQgb3JkZXJzIGJldHdlZW4gc2FtZSBzd2l0Y2hlcyBhcmUgdGFrZW4gaW50byBhY2NvdW50LgogICAtLSAgIEZvciBleGFtcGxlLCAtTyAtTzIgaXMgZGlmZmVyZW50IHRoYW4gLU8yIC1PLCBidXQgLWcgLU8gaXMgZXF1aXZhbGVudAogICAtLSAgIHRvIC1PIC1nLgoKICAgU19NYWtlX1VuaXF1ZSAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9VTklRVUUgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdSI7CiAgIC0tICAgICAgICAvTk9VTklRVUUgKEQpCiAgIC0tICAgICAgICAvVU5JUVVFCiAgIC0tCiAgIC0tICBSZWNvbXBpbGUgYXQgbW9zdCB0aGUgbWFpbiBmaWxlLiBJdCBpbXBsaWVzIC9BQ1RJT05TPUNPTVBJTEUuCiAgIC0tICBDb21iaW5lZCB3aXRoIC9GT1JDRV9DT01QSUxFLCBpdCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgdGhlIGNvbXBpbGVyCiAgIC0tICBkaXJlY3RseS4KCiAgIFNfTWFrZV9Vc2VfTWFwIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVVNFX01BUFBJTkdfRmlsZT1AIiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUM9QCI7CiAgIC0tICAgICAgICAvVVNFX01BUFBJTkdfRklMRT1maWxlX25hbWUKICAgLS0KICAgLS0gICBVc2UgYSBzcGVjaWZpYyBtYXBwaW5nIGZpbGUuIFRoZSBmaWxlICdmaWxlX25hbWUnLCBzcGVjaWZpZWQgYXMgYSBwYXRoCiAgIC0tICAgbmFtZSAoYWJzb2x1dGUgb3IgcmVsYXRpdmUpIGJ5IHRoaXMgcXVhbGlmaWVyLCBzaG91bGQgYWxyZWFkeSBleGlzdCwKICAgLS0gICBvdGhlcndpc2UgdGhlIHF1YWxpZmllciBpcyBpbmVmZmVjdGl2ZS4gVGhlIHNwZWNpZmllZCBtYXBwaW5nIGZpbGUKICAgLS0gICB3aWxsIGJlIGNvbW11bmljYXRlZCB0byB0aGUgY29tcGlsZXIuIFRoaXMgc3dpdGNoIGlzIG5vdCBjb21wYXRpYmxlCiAgIC0tICAgd2l0aCBhIHByb2plY3QgZmlsZSAoL1BST0pFQ1RfRklMRT0pIG9yIHdpdGggbXVsdGlwbGUgY29tcGlsaW5nCiAgIC0tICAgcHJvY2Vzc2VzICgvUFJPQ0VTU0VTPW5ubiwgd2hlbiBubm4gaXMgZ3JlYXRlciB0aGFuIDEpLgoKICAgU19NYWtlX1ZlcmJvc2UgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiI7CiAgIC0tICAgICAgICAvTk9WRVJCT1NFIChEKQogICAtLSAgICAgICAgL1ZFUkJPU0UKICAgLS0KICAgLS0gICBEaXNwbGF5cyB0aGUgcmVhc29uIGZvciBhbGwgcmVjb21waWxhdGlvbnMgR05BVCBNQUtFIGRlY2lkZXMgYXJlCiAgIC0tICAgbmVjZXNzYXJ5LgoKICAgTWFrZV9Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19NYWtlX0FjdGlvbnMgJ0FjY2VzcywKICAgICAgU19NYWtlX0FsbCAgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0FsbHByb2ogJ0FjY2VzcywKICAgICAgU19NYWtlX0JpbmQgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0NvbXAgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0NvbmQgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0NvbnQgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0N1cnJlbnQgJ0FjY2VzcywKICAgICAgU19NYWtlX0RlcCAgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0Rpcm9iaiAgJ0FjY2VzcywKICAgICAgU19NYWtlX0Rvb2JqICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0V4ZWN1dCAgJ0FjY2VzcywKICAgICAgU19NYWtlX0V4dCAgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0ZvcmNlICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0Z1bGwgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0hpX1ZlcmIgJ0FjY2VzcywKICAgICAgU19NYWtlX0lucGxhY2UgJ0FjY2VzcywKICAgICAgU19NYWtlX0luZGV4ICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0xpYnJhcnkgJ0FjY2VzcywKICAgICAgU19NYWtlX0xpbmsgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX0xvd19WZXJiJ0FjY2VzcywKICAgICAgU19NYWtlX01ha2UgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX01hcHBpbmcgJ0FjY2VzcywKICAgICAgU19NYWtlX01lZF9WZXJiJ0FjY2VzcywKICAgICAgU19NYWtlX01lc3MgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX01pbmltYWwgJ0FjY2VzcywKICAgICAgU19NYWtlX05vbGluayAgJ0FjY2VzcywKICAgICAgU19NYWtlX05vbWFpbiAgJ0FjY2VzcywKICAgICAgU19NYWtlX05vbnBybyAgJ0FjY2VzcywKICAgICAgU19NYWtlX05vc3RpbmMgJ0FjY2VzcywKICAgICAgU19NYWtlX05vc3RsaWIgJ0FjY2VzcywKICAgICAgU19NYWtlX09iamVjdCAgJ0FjY2VzcywKICAgICAgU19NYWtlX1Byb2MgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX05vam9icyAgJ0FjY2VzcywKICAgICAgU19NYWtlX1Byb2plY3QgJ0FjY2VzcywKICAgICAgU19NYWtlX1F1aWV0ICAgJ0FjY2VzcywKICAgICAgU19NYWtlX1JlYXNvbiAgJ0FjY2VzcywKICAgICAgU19NYWtlX1JUUyAgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX1NlYXJjaCAgJ0FjY2VzcywKICAgICAgU19NYWtlX1NraXAgICAgJ0FjY2VzcywKICAgICAgU19NYWtlX1NvdXJjZSAgJ0FjY2VzcywKICAgICAgU19NYWtlX1N3aXRjaCAgJ0FjY2VzcywKICAgICAgU19NYWtlX1VuaXF1ZSAgJ0FjY2VzcywKICAgICAgU19NYWtlX1VzZV9NYXAgJ0FjY2VzcywKICAgICAgU19NYWtlX1ZlcmJvc2UgJ0FjY2Vzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgTUVUUklDIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgU19NZXRyaWNfQWxsX1ByanMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9BTExfUFJPSkVDVFMgIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItVSI7CiAgIC0tICAgICAgICAvTk9BTExfUFJPSkVDVFMgKEQpCiAgIC0tICAgICAgICAvQUxMX1BST0pFQ1RTCiAgIC0tICAgV2hlbiBHTkFUIE1FVFJJQyBpcyB1c2VkIHdpdGggYSBQcm9qZWN0IEZpbGUgYW5kIG5vIHNvdXJjZSBpcwogICAtLSAgIHNwZWNpZmllZCwgdGhlIHVuZGVybHlpbmcgdG9vbCBnbmF0bWV0cmljIGlzIGNhbGxlZCBmb3IgYWxsIHRoZQogICAtLSAgIHNvdXJjZXMgb2YgYWxsIHRoZSBQcm9qZWN0IEZpbGVzIGluIHRoZSBwcm9qZWN0IHRyZWUuCgogICBTX01ldHJpY19EZWJ1ZyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RFQlVHX09VVFBVVCAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWR2IjsKICAgLS0gICAgICAvREVCVUdfT1VUUFVUCiAgIC0tCiAgIC0tICAgR2VuZXJhdGUgdGhlIGRlYnVnIGluZm9ybWF0aW9uCgogICBTX01ldHJpY19EaXJlY3QgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0RJUkVDVE9SWT1AIiAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWQ9QCI7CiAgIC0tICAgICAgL0RJUkVDVE9SWT1wYXRobmFtZQogICAtLQogICAtLSAgIFB1dCB0aGUgZmlsZXMgd2l0aCBkZXRhaWxlZCBtZXRyaWMgaW5mb3JtYXRpb24gaW50byB0aGUgc3BlY2lmaWVkCiAgIC0tICAgZGlyZWN0b3J5CgogICBTX01ldHJpY19FbGVtZW50IDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRUxFTUVOVF9NRVRSSUNTPSIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUxMICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZWQsIS1lcywhLWVubCwhLWVwcywiICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZWFzLCEtZXB0LCEtZWF0LCEtZW51LCIgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEtZWMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVDTEFSQVRJT05fVE9UQUwgIiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lZCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1RBVEVNRU5UX1RPVEFMICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lcyAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTE9PUF9ORVNUSU5HX01BWCAiICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lbmwgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UX1NVQlBST0dSQU1TICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lcHMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1VCUFJPR1JBTVNfQUxMICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lYXMgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UX1RZUEVTICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lcHQgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVFlQRVNfQUxMICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lYXQgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUFJPR1JBTV9ORVNUSU5HX01BWCAiICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lbnUgIiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ09OU1RSVUNUX05FU1RJTkdfTUFYICIgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lYyI7CiAgIC0tICAgICAgIC9FTEVNRU5UX01FVFJJQ1M9KG9wdGlvbiwgb3B0aW9uIC4uLikKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlIGVsZW1lbnQgbWV0cmljcyB0byBiZSBjb21wdXRlZCAoaWYgbm90IHNldCwgYWxsIHRoZQogICAtLSAgIGVsZW1lbnQgbWV0cmljcyBhcmUgc2V0IG9uLCBvdGhlcndpc2Ugb25seSBzcGVjaWZpZWQgbWV0cmljcyBhcmUKICAgLS0gICBjb21wdXRlZCBhbmQgcmVwb3J0ZWQpCiAgIC0tCiAgIC0tICAgb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgIEFMTCAoRCkgICAgICAgICAgICAgICBBbGwgdGhlIGVsZW1lbnQgbWV0cmljcyBhcmUgY29tcHV0ZWQKICAgLS0gICAgIERFQ0xBUkFUSU9OX1RPVEFMICAgICBDb21wdXRlIHRoZSB0b3RhbCBudW1iZXIgb2YgZGVjbGFyYXRpb25zCiAgIC0tICAgICBTVEFURU1FTlRfVE9UQUwgICAgICAgQ29tcHV0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHN0YXRlbWVudHMKICAgLS0gICAgIExPT1BfTkVTVElOR19NQVggICAgICBDb21wdXRlIHRoZSBtYXhpbWFsIGxvb3AgbmVzdGluZyBsZXZlbAogICAtLSAgICAgSU5UX1NVQlBST0dSQU1TICAgICAgIENvbXB1dGUgdGhlIG51bWJlciBvZiBpbnRlcmZhY2Ugc3VicHJvZ3JhbXMKICAgLS0gICAgIFNVQlBST0dSQU1TX0FMTCAgICAgICBDb21wdXRlIHRoZSBudW1iZXIgb2YgYWxsIHRoZSBzdWJwcm9ncmFtcwogICAtLSAgICAgSU5UX1RZUEVTICAgICAgICAgICAgIENvbXB1dGUgdGhlIG51bWJlciBvZiBpbnRlcmZhY2UgdHlwZXMKICAgLS0gICAgIFRZUEVTX0FMTCAgICAgICAgICAgICBDb21wdXRlIHRoZSBudW1iZXIgb2YgYWxsIHRoZSB0eXBlcwogICAtLSAgICAgUFJPR1JBTV9ORVNUSU5HX01BWCAgIENvbXB1dGUgdGhlIG1heGltYWwgcHJvZ3JhbSB1bml0IG5lc3RpbmcgbGV2ZWwKICAgLS0KICAgLS0gICBBbGwgY29tYmluYXRpb25zIG9mIGVsZW1lbnQgbWV0cmljcyBvcHRpb25zIGFyZSBhbGxvd2VkLgoKICAgU19NZXRyaWNfRXh0ICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYVEVSTkFMX1JFRkVSRU5DRT0iICYgJyInICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1YIiAmICciJzsKICAgLS0gICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX01ldHJpY19GaWxlcyAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRklMRVM9QCIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1maWxlcz1AIjsKICAgLS0gICAgICAvRklMRVM9ZmlsZW5hbWUKICAgLS0KICAgLS0gICBUYWtlIGFzIGFyZ3VtZW50cyB0aGUgZmlsZXMgdGhhdCBhcmUgbGlzdGVkIGluIHRoZSBzcGVjaWZpZWQKICAgLS0gICB0ZXh0IGZpbGUuCgogICBTX01ldHJpY19Gb3JtYXQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRk9STUFUX09VVFBVVD0iICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiEteCwhLW50LCEtc2ZuICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWE1MICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi14ICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTk9fVEVYVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1udCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0hPUlRfU09VUkNFX0ZJTEVfTkFNRSAiICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1zZm4iOwogICAtLSAgICAgICAvRk9STUFUX09VVFBVVD0ob3B0aW9uLCBvcHRpb24gLi4uKQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgZGV0YWlscyBvZiB0aGUgdG9vbCBvdXRwdXQKICAgLS0KICAgLS0gICBvcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgREVGQVVMVCAoRCkgICAgICAgICAgICAgR2VuZXJhdGUgdGhlIHRleHQgb3V0cHV0IG9ubHksIHVzZSBmdWxsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBzb3VyY2UgbmFtZXMgaW4gZ2xvYmFsIGluZm9ybWF0aW9uCiAgIC0tICAgICBYTUwgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSB0aGUgb3V0cHV0IGluIFhNTCBmb3JtYXQKICAgLS0gICAgIE5PX1RFWFQgICAgICAgICAgICAgICAgIERvIG5vdCBnZW5lcmF0ZSB0aGUgdGV4dCBvdXRwdXQgKGltcGxpZXMgWE1MKQogICAtLSAgICAgU0hPUlRfU09VUkNFX0ZJTEVfTkFNRSAgVXNlIHNob3J0IGFyZ3VtZW50IHNvdXJjZSBuYW1lcyBpbiBvdXRwdXQKCiAgIFNfTWV0cmljX0dsb2JvdXQgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9HTE9CQUxfT1VUUFVUPUAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItb2dAIjsKICAgLS0gICAgICAgIC9HTE9CQUxfT1VUUFVUPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgUHV0IHRoZSB0ZXh0dWFsIGdsb2JhbCBtZXRyaWMgaW5mb3JtYXRpb24gaW50byB0aGUgc3BlY2lmaWVkIGZpbGUKCiAgIFNfTWV0cmljX0xpbmUgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTElORV9NRVRSSUNTPSIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBTEwgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1sYSwhLWxjb2RlLCEtbGNvbW0sIiAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1sZW9sLCEtbGIgIiAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMSU5FU19BTEwgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWxhICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT0RFX0xJTkVTICIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWxjb2RlICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT01FTlRfTElORVMgIiAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWxjb21tICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVhFRF9DT0RFX0NPTU1FTlRTICIgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWxlb2wgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCTEFOS19MSU5FUyAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWxiICI7CiAgIC0tICAgICAgL0xJTkVfTUVUUklDUz0ob3B0aW9uLCBvcHRpb24gLi4uKQoKICAgLS0gICBTcGVjaWZpZXMgdGhlIGxpbmUgbWV0cmljcyB0byBiZSBjb21wdXRlZCAoaWYgbm90IHNldCwgYWxsIHRoZSBsaW5lCiAgIC0tICAgbWV0cmljcyBhcmUgc2V0IG9uLCBvdGhlcndpc2Ugb25seSBzcGVjaWZpZWQgbWV0cmljcyBhcmUgY29tcHV0ZWQgYW5kCiAgIC0tICAgcmVwb3J0ZWQpCiAgIC0tCiAgIC0tICAgb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgIEFMTCAoRCkgICAgICAgICAgICAgIEFsbCB0aGUgbGluZSBtZXRyaWNzIGFyZSBjb21wdXRlZAogICAtLSAgICAgTElORVNfQUxMICAgICAgICAgICAgQWxsIGxpbmVzIGFyZSBjb21wdXRlZAogICAtLSAgICAgQ09ERV9MSU5FUyAgICAgICAgICAgTGluZXMgd2l0aCBBZGEgY29kZSBhcmUgY29tcHV0ZWQKICAgLS0gICAgIENPTUVOVF9MSU5FUyAgICAgICAgIEFsbCBjb21tZW50IGxpbmVzIGFyZSBjb21wdXRlZAogICAtLSAgICAgTUlYRURfQ09ERV9DT01NRU5UUyAgQWxsIGxpbmVzIGNvbnRhaW5pbmcgYm90aCBjb2RlIGFuZCBjb21tZW50IGFyZQogICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQKICAgLS0gICAgIEJMQU5LX0xJTkVTICAgICAgICAgIEJsYW5rIGxpbmVzIGFyZSBjb21wdXRlZAogICAtLQogICAtLSAgIEFsbCBjb21iaW5hdGlvbnMgb2YgbGluZSBtZXRyaWNzIG9wdGlvbnMgYXJlIGFsbG93ZWQuCgogICBTX01ldHJpY19NZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUVTU0FHRVNfUFJPSkVDVF9GSUxFPSIgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUVESVVNICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElHSCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMiI7CiAgIC0tICAgICAgICAvTUVTU0FHRVNfUFJPSkVDVF9GSUxFWz1tZXNzYWdlcy1vcHRpb25dCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSAidmVyYm9zaXR5IiBvZiB0aGUgcGFyc2luZyBvZiBwcm9qZWN0IGZpbGVzLgogICAtLSAgIG1lc3NhZ2VzLW9wdGlvbiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgREVGQVVMVCAoRCkgIE5vIG1lc3NhZ2VzIGFyZSBvdXRwdXQgaWYgdGhlcmUgaXMgbm8gZXJyb3Igb3Igd2FybmluZy4KICAgLS0KICAgLS0gICAgICBNRURJVU0gICAgICAgQSBzbWFsbCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dC4KICAgLS0KICAgLS0gICAgICBISUdIICAgICAgICAgQSBncmVhdCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dCwgbW9zdCBvZiB0aGVtIG5vdAogICAtLSAgICAgICAgICAgICAgICAgICBiZWluZyB1c2VmdWwgZm9yIHRoZSB1c2VyLgoKICAgU19NZXRyaWNfUHJvamVjdCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtYWluIHByb2plY3QgZmlsZSB0byBiZSB1c2VkLiBUaGUgcHJvamVjdCBmaWxlcyByb290ZWQKICAgLS0gICBhdCB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgd2lsbCBiZSBwYXJzZWQgYmVmb3JlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQogICAtLSAgIGJpbmRlci4KCiAgIFNfTWV0cmljX1F1aWV0ICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUVVJRVQgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcSI7CiAgIC0tICAgICAgICAvTk9RVUlFVCAoRCkKICAgLS0gICAgICAgIC9RVUlFVAogICAtLQogICAtLSAgIFF1aWV0IG1vZGU6IGJ5IGRlZmF1bHQgR05BVCBNRVRSSUMgb3V0cHV0cyB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtCiAgIC0tICAgdGhlIG51bWJlciBvZiBwcm9ncmFtIHVuaXRzIGxlZnQgdG8gYmUgcHJvY2Vzc2VkLiBUaGlzIG9wdGlvbiB0dXJucwogICAtLSAgIHRoaXMgdHJhY2Ugb2ZmLgoKICAgU19NZXRyaWNfU3VmZml4ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NVRkZJWF9ERVRBSUxTPSIgJiAnIicgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vIiAmICciJzsKICAgLS0gICAgICAgIC9TVUZGSVhfREVUQUlMUz1zdWZmaXgKICAgLS0KICAgLS0gICBVc2UgdGhlIGdpdmVuIHN1ZmZpeCBhcyB0aGUgc3VmZml4IGZvciB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBwbGFjZQogICAtLSAgIHRoZSBkZXRhaWxlZCBtZXRyaWNzIGludG8uCgogICBTX01ldHJpY19TdXBwcmVzcyA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAgIi9TVVBQUkVTUz0iICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT1RISU5HICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1ub2NjLCEtbm9lYywhLW5vbmwsIiAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1uZSwhLW5vbG9jYWwgIiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDWUNMT01BVElDX0NPTVBMRVhJVFkgIiAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vY2MgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFU1NFTlRJQUxfQ09NUExFWElUWSAiICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vZWMgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNQVhJTUFMX0xPT1BfTkVTVElORyAiICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vbmwgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFWElUU19BU19HT1RPUyAiICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5lICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMT0NBTF9ERVRBSUxTICIgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vbG9jYWwgIjsKICAgLS0gICAgICAvU1VQUFJFU1M9KG9wdGlvbiwgb3B0aW9uIC4uLikKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlIG1ldHJpYyB0aGF0IHNob3VsZCBub3QgYmUgY29tcHV0ZWQKICAgLS0KICAgLS0gICBvcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgTk9USElORyAoRCkgICAgICAgICAgICAgRG8gbm90IHN1cHByZXNzIGNvbXB1dGF0aW9uIG9mIGFueSBtZXRyaWMKICAgLS0gICAgIENZQ0xPTUFUSUNfQ09NUExFWElUWSAgIERvIG5vdCBjb21wdXRlIHRoZSBDeWNsb21hdGljIENvbXBsZXhpdHkKICAgLS0gICAgIEVTU0VOVElBTF9DT01QTEVYSVRZICAgIERvIG5vdCBjb21wdXRlIHRoZSBFc3NlbnRpYWwgQ29tcGxleGl0eQogICAtLSAgICAgTUFYSU1BTF9MT09QX05FU1RJTkcgICAgRG8gbm90IGNvbXB1dGUgdGhlIG1heGltYWwgbG9vcCBuZXN0aW5nCiAgIC0tICAgICBFWElUU19BU19HT1RPUyAgICAgICAgICBEbyBub3QgY291bnQgRVhJVCBzdGF0ZW1lbnRzIGFzIEdPVE9zIHdoZW4KICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGluZyB0aGUgIEVzc2VudGlhbCBDb21wbGV4aXR5CiAgIC0tICAgICBMT0NBTF9ERVRBSUxTICAgICAgICAgICBEbyBub3QgY29tcHV0ZSB0aGUgZGV0YWlsZWQgbWV0cmljcyBmb3IgbG9jYWwKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gdW5pdHMKICAgLS0KICAgLS0gICBBbGwgY29tYmluYXRpb25zIG9mIG9wdGlvbnMgYXJlIGFsbG93ZWQuCgogICBTX01ldHJpY19WZXJib3NlICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1ZFUkJPU0UgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXYiOwogICAtLSAgICAgICAgL05PVkVSQk9TRSAoRCkKICAgLS0gICAgICAgIC9WRVJCT1NFCiAgIC0tCiAgIC0tICAgVmVyYm9zZSBtb2RlLgoKICAgU19NZXRyaWNfWE1Mb3V0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1hNTF9PVVRQVVQ9QCIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1veEAiOwogICAtLSAgICAgICAgL1hNTF9PVVRQVVQ9ZmlsZW5hbWUKICAgLS0KICAgLS0gICBQbGFjZSB0aGUgWE1MIG91dHB1dCBpbnRvIHRoZSBzcGVjaWZpZWQgZmlsZQoKICAgTWV0cmljX1N3aXRjaGVzIDogYWxpYXNlZCBjb25zdGFudCBTd2l0Y2hlcyA6PQogICAgIChTX01ldHJpY19BbGxfUHJqcyAnQWNjZXNzLAogICAgICBTX01ldHJpY19EZWJ1ZyAgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19EaXJlY3QgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19FbGVtZW50ICAnQWNjZXNzLAogICAgICBTX01ldHJpY19FeHQgICAgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19GaWxlcyAgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19Gb3JtYXQgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19HbG9ib3V0ICAnQWNjZXNzLAogICAgICBTX01ldHJpY19MaW5lICAgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19NZXNzICAgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19Qcm9qZWN0ICAnQWNjZXNzLAogICAgICBTX01ldHJpY19RdWlldCAgICAnQWNjZXNzLAogICAgICBTX01ldHJpY19TdWZmaXggICAnQWNjZXNzLAogICAgICBTX01ldHJpY19TdXBwcmVzcyAnQWNjZXNzLAogICAgICBTX01ldHJpY19WZXJib3NlICAnQWNjZXNzLAogICAgICBTX01ldHJpY19YTUxvdXQgICAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgTkFNRSAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX05hbWVfQ29uZiAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NPTkZJR19GSUxFPTwiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jPiI7CiAgIC0tICAgICAgICAvQ09ORklHX0ZJTEU9cGF0aF9uYW1lCiAgIC0tCiAgIC0tICAgQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBwcmFnbWFzIGZpbGUgJ3BhdGhfbmFtZScgKGluc3RlYWQgb2YgdGhlIGRlZmF1bHQKICAgLS0gICAnZ25hdC5hZGMnKS4gJ3BhdGhfbmFtZScgbWF5IGluY2x1ZGUgZGlyZWN0b3J5IGluZm9ybWF0aW9uLiAncGF0aF9uYW1lJwogICAtLSAgIG11c3QgYmUgd3JpdGFibGUuIFRoZXJlIG1heSBiZSBvbmx5IG9uZSBxdWFsaWZpZXIgL0NPTkZJR19GSUxFLgogICAtLSAgIFRoaXMgcXVhbGlmaWVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggcXVhbGlmaWVyIC9QUk9KRUNUX0ZJTEUuCgogICBTX05hbWVfRGlycyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NPVVJDRV9ESVJTPSoiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1kKiI7CiAgIC0tICAgICAgICAvU09VUkNFX0RJUlM9KGRpcmVjdG9yeSwgLi4uKQogICAtLQogICAtLSAgIExvb2sgZm9yIHNvdXJjZSBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzLiBXaGVuIHRoaXMgcXVhbGlmaWVyCiAgIC0tICAgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBzZWFyY2hlZCBmb3IKICAgLS0gICBzb3VyY2UgZmlsZXMsIHVubGVzcyBpdCBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCB3aXRoIGEgcXVhbGlmaWVyCiAgIC0tICAgL1NPVVJDRV9ESVJTIG9yIC9ESVJTX0ZJTEUuIFNldmVyYWwgcXVhbGlmaWVycyAvU09VUkNFX0RJUlMgbWF5IGJlCiAgIC0tICAgc3BlY2lmaWVkLiBJZiBhIGRpcmVjdG9yeSBpcyBzcGVjaWZpZWQgYXMgYSByZWxhdGl2ZSBwYXRoLCBpdCBpcwogICAtLSAgIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJhZ21hcyBmaWxlIHNwZWNpZmllZAogICAtLSAgIHdpdGggcXVhbGlmaWVyIC9DT05GSUdfRklMRSwgb3IgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdCBmaWxlCiAgIC0tICAgc3BlY2lmaWVkIHdpdGggcXVhbGlmaWVyIC9QUk9KRUNUX0ZJTEUgb3IsIGlmIG5laXRoZXIgcXVhbGlmaWVyCiAgIC0tICAgL0NPTkZJR19GSUxFIG5vciBxdWFsaWZpZXIgL1BST0pFQ1RfRklMRSBhcmUgc3BlY2lmaWVkLCBpdCBpcyByZWxhdGl2ZQogICAtLSAgIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBUaGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIHdpdGgKICAgLS0gICBxdWFsaWZpZXJzIC9TT1VSQ0VfRElSUyBtdXN0IGV4aXN0IGFuZCBiZSByZWFkYWJsZS4KCiAgIFNfTmFtZV9EZmlsZSAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRElSU19GSUxFPTwiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQ+IjsKICAgLS0gICAgICAgIC9ESVJTX0ZJTEU9ZmlsZV9uYW1lCiAgIC0tCiAgIC0tICAgTG9vayBmb3Igc291cmNlIGZpbGVzIGluIGFsbCBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gdGV4dCBmaWxlCiAgIC0tICAgJ2ZpbGVfbmFtZScuICdmaWxlX25hbWUnIG11c3QgYmUgYW4gZXhpc3RpbmcsIHJlYWRhYmxlIHRleHQgZmlsZS4KICAgLS0gICBFYWNoIG5vbiBlbXB0eSBsaW5lIGluIHRoZSBzcGVjaWZpZWQgZmlsZSBtdXN0IGJlIGEgZGlyZWN0b3J5LgogICAtLSAgIFNwZWNpZnlpbmcgcXVhbGlmaWVyIC9ESVJTX0ZJTEUgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nIGFzIG1hbnkKICAgLS0gICBxdWFsaWZpZXJzIC9TT1VSQ0VfRElSUyBhcyB0aGVyZSBhcmUgbm9uIGVtcHR5IGxpbmVzIGluIHRoZSBzcGVjaWZpZWQKICAgLS0gICB0ZXh0IGZpbGUuCgogICBTX05hbWVfRnJuZyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZPUkVJR05fUEFUVEVSTj0iICYgJyInICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1mIiAmICciJzsKICAgLS0gICAgICAgIC9GT1JFSUdOX1BBVFRFUk49PHN0cmluZz4KICAgLS0KICAgLS0gICBTcGVjaWZ5IGEgZm9yZWlnbiBwYXR0ZXJuLgogICAtLSAgIFVzaW5nIHRoaXMgcXVhbGlmaWVyLCBpdCBpcyBwb3NzaWJsZSB0byBhZGQgc291cmNlcyBvZiBsYW5ndWFnZXMgb3RoZXIKICAgLS0gICB0aGFuIEFkYSB0byB0aGUgbGlzdCBvZiBzb3VyY2VzIG9mIGEgcHJvamVjdCBmaWxlLiBJdCBpcyBvbmx5IHVzZWZ1bAogICAtLSAgIGlmIGEgcXVhbGlmaWVyIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4gRm9yIGV4YW1wbGUsCiAgIC0tCiAgIC0tICAgR05BVCBOQU1FIC9QUk9KRUNUX0ZJTEU9UFJKIC9GT1JFSUdOX1BBVFRFUk49IiouQyIgIiouQURBIgogICAtLQogICAtLSAgIHdpbGwgbG9vayBmb3IgQWRhIHVuaXRzIGluIGFsbCBmaWxlcyB3aXRoIHRoZSAnLkFEQScgZXh0ZW5zaW9uLCBhbmQKICAgLS0gICB3aWxsIGFkZCB0byB0aGUgbGlzdCBvZiBmaWxlIGZvciBwcm9qZWN0IFBSSi5HUFIgdGhlIEMgZmlsZXMgd2l0aAogICAtLSAgIGV4dGVuc2lvbiAiLkMiLgoKICAgU19OYW1lX0hlbHAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9IRUxQICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItaCI7CiAgIC0tICAgICAgICAvTk9IRUxQIChEKQogICAtLSAgICAgICAgL0hFTFAKICAgLS0KICAgLS0gICBPdXRwdXQgdXNhZ2UgaW5mb3JtYXRpb24gdG8gdGhlIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uCgogICBTX05hbWVfUHJvaiAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVfbmFtZQogICAtLQogICAtLSAgIENyZWF0ZSBvciB1cGRhdGUgYSBwcm9qZWN0IGZpbGUuICdmaWxlX25hbWUnIG1heSBpbmNsdWRlIGRpcmVjdG9yeQogICAtLSAgIGluZm9ybWF0aW9uLiBUaGUgc3BlY2lmaWVkIGZpbGUgbXVzdCBiZSB3cml0YWJsZS4gVGhlcmUgbWF5IGJlIG9ubHkKICAgLS0gICBvbmUgcXVhbGlmaWVyIC9QUk9KRUNUX0ZJTEUuIFdoZW4gYSBxdWFsaWZpZXIgL1BST0pFQ1RfRElMRSBpcwogICAtLSAgIHNwZWNpZmllZCwgbm8gcXVhbGlmaWVyIC9DT05GSUdfRklMRSBtYXkgYmUgc3BlY2lmaWVkLgoKICAgU19OYW1lX1ZlcmJvc2UgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiI7CiAgIC0tICAgICAgICAvTk9WRVJCT1NFIChEKQogICAtLSAgICAgICAgL1ZFUkJPU0UKICAgLS0KICAgLS0gICBWZXJib3NlIG1vZGUuIE91dHB1dCBkZXRhaWxlZCBleHBsYW5hdGlvbiBvZiBiZWhhdmlvciB0byB0aGUgc3RhbmRhcmQKICAgLS0gICBvdXRwdXQgc3RyZWFtLiBUaGlzIGluY2x1ZGVzIG5hbWUgb2YgdGhlIGZpbGUgd3JpdHRlbiwgdGhlIG5hbWUgb2YgdGhlCiAgIC0tICAgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGFuZCwgZm9yIGVhY2ggZmlsZSBpbiB0aG9zZSBkaXJlY3RvcmllcyB3aG9zZQogICAtLSAgIG5hbWUgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YgdGhlIE5hbWluZyBQYXR0ZXJucywgYW4gaW5kaWNhdGlvbiBvZgogICAtLSAgIHdoZXRoZXIgdGhlIGZpbGUgY29udGFpbnMgYSB1bml0LCBhbmQgaWYgc28gdGhlIG5hbWUgb2YgdGhlIHVuaXQuCgogICBTX05hbWVfRXhjbCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYQ0xVREVEX1BBVFRFUk49IiAmICciJyAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi14IiAmICciJzsKICAgLS0gICAgICAvRVhDTFVERURfUEFUVEVSTj08c3RyaW5nPgogICAtLQogICAtLSAgIFNwZWNpZnkgYW4gZXhjbHVkZWQgcGF0dGVybi4KICAgLS0gICBVc2luZyB0aGlzIHF1YWxpZmllciwgaXQgaXMgcG9zc2libGUgdG8gZXhjbHVkZSBzb21lIGZpbGVzIHRoYXQgd291bGQKICAgLS0gICBtYXRjaCB0aGUgTmFtaW5nIHBhdHRlcm5zLiBGb3IgZXhhbXBsZSwKICAgLS0KICAgLS0gICBHTkFUIE5BTUUgL0VYQ0xVREVEX1BBVFRFUk49IipfTlQuQURBIiAiKi5BREEiCiAgIC0tCiAgIC0tICAgd2lsbCBsb29rIGZvciBBZGEgdW5pdHMgaW4gYWxsIGZpbGVzIHdpdGggdGhlICcuQURBJyBleHRlbnNpb24sIGV4Y2VwdAogICAtLSAgIHRob3NlIHdob3NlIG5hbWVzIGVuZCB3aXRoICdfTlQuQURBJy4KCiAgIE5hbWVfU3dpdGNoZXMgOiBhbGlhc2VkIGNvbnN0YW50IFN3aXRjaGVzIDo9CiAgICAgKFNfTmFtZV9Db25mICAgICAgICAgJ0FjY2VzcywKICAgICAgU19OYW1lX0RpcnMgICAgICAgICAnQWNjZXNzLAogICAgICBTX05hbWVfRGZpbGUgICAgICAgICdBY2Nlc3MsCiAgICAgIFNfTmFtZV9Gcm5nICAgICAgICAgJ0FjY2VzcywKICAgICAgU19OYW1lX0hlbHAgICAgICAgICAnQWNjZXNzLAogICAgICBTX05hbWVfUHJvaiAgICAgICAgICdBY2Nlc3MsCiAgICAgIFNfTmFtZV9WZXJib3NlICAgICAgJ0FjY2VzcywKICAgICAgU19OYW1lX0V4Y2wgICAgICAgICAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgUFJFUFJPQ0VTUyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX1ByZXBfQXNzb2MgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0FTU09DSUFURT0iICYgJyInICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIiAmICciJzsKICAgLS0gICAgICAgIC9BU1NPQ0lBVEU9Im5hbWU9dmFsIgogICAtLQogICAtLSAgIERlZmluZXMgYSBuZXcgc3ltYm9sLCBhc3NvY2lhdGVkIHdpdGggdmFsdWUuIElmIG5vIHZhbHVlIGlzIGdpdmVuCiAgIC0tICAgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlbiBzeW1ib2wgaXMgY29uc2lkZXJlZCB0byBiZSBUcnVlLgogICAtLSAgIFRoaXMgcXVhbGlmaWVyIGNhbiBiZSB1c2VkIGluIHBsYWNlIG9mIGEgZGVmaW5pdGlvbiBmaWxlLgoKICAgU19QcmVwX0JsYW5rICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9CTEFOS19MSU5FUyAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYiI7CiAgIC0tICAgICAgICAvTk9CTEFOS19MSU5FUyAoRCkKICAgLS0gICAgICAgIC9CTEFOS19MSU5FUwogICAtLQogICAtLSAgIENhdXNlcyBib3RoIHByZXByb2Nlc3NvciBsaW5lcyBhbmQgdGhlIGxpbmVzIGRlbGV0ZWQgYnkgcHJlcHJvY2Vzc2luZwogICAtLSAgIHRvIGJlIHJlcGxhY2VkIGJ5IGJsYW5rIGxpbmVzIGluIHRoZSBvdXRwdXQgc291cmNlIGZpbGUsIHRodXMKICAgLS0gICBwcmVzZXJ2aW5nIGxpbmUgbnVtYmVycyBpbiB0aGUgb3V0cHV0IGZpbGUuCgogICBTX1ByZXBfQ29tICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0NPTU1FTlRTICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIjsKICAgLS0gICAgICAgIC9OT0NPTU1FTlRTIChEKQogICAtLSAgICAgICAgL0NPTU1FTlRTCiAgIC0tCiAgIC0tICAgL0NPTU1FTlRTIGNhdXNlcyBib3RoIHByZXByb2Nlc3NvciBsaW5lcyBhbmQgdGhlIGxpbmVzIGRlbGV0ZWQKICAgLS0gICBieSBwcmVwcm9jZXNzaW5nIHRvIGJlIHJldGFpbmVkIGluIHRoZSBvdXRwdXQgc291cmNlIGFzIGNvbW1lbnRzIG1hcmtlZAogICAtLSAgIHdpdGggdGhlIHNwZWNpYWwgc3RyaW5nICItLSEgIi4gVGhpcyBvcHRpb24gd2lsbCByZXN1bHQgaW4gbGluZSBudW1iZXJzCiAgIC0tICAgYmVpbmcgcHJlc2VydmVkIGluIHRoZSBvdXRwdXQgZmlsZS4KICAgLS0KICAgLS0gICAvTk9DT01NRU5UUyBjYXVzZXMgYm90aCBwcmVwcm9jZXNzb3IgbGluZXMgYW5kIHRoZSBsaW5lcyBkZWxldGVkIGJ5CiAgIC0tICAgcHJlcHJvY2Vzc2luZyB0byBiZSByZXBsYWNlZCBieSBibGFuayBsaW5lcyBpbiB0aGUgb3V0cHV0IHNvdXJjZSBmaWxlLAogICAtLSAgIHRodXMgcHJlc2VydmluZyBsaW5lIG51bWJlcnMgaW4gdGhlIG91dHB1dCBmaWxlLgoKICAgU19QcmVwX1JlZiAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9SRUZFUkVOQ0UgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItciI7CiAgIC0tICAgICAgICAvTk9SRUZFUkVOQ0UgKEQpCiAgIC0tICAgICAgICAvUkVGRVJFTkNFCiAgIC0tCiAgIC0tICAgQ2F1c2VzIGEgIlNvdXJjZV9SZWZlcmVuY2UiIHByYWdtYSB0byBiZSBnZW5lcmF0ZWQgdGhhdCByZWZlcmVuY2VzIHRoZQogICAtLSAgIG9yaWdpbmFsIGlucHV0IGZpbGUsIHNvIHRoYXQgZXJyb3IgbWVzc2FnZXMgd2lsbCB1c2UgdGhlIGZpbGUgbmFtZSBvZgogICAtLSAgIHRoaXMgb3JpZ2luYWwgZmlsZS4gIEFsc28gaW1wbGllcyAvQkxBTktfTElORVMgaWYgL0NPTU1FTlRTIGlzIG5vdAogICAtLSAgIHNwZWNpZmllZC4KCiAgIFNfUHJlcF9SZW1vdmUgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUkVNT1ZFICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1iLCEtYyI7CiAgIC0tICAgICAgICAvUkVNT1ZFIChEKQogICAtLSAgICAgICAgL05PUkVNT1ZFCiAgIC0tCiAgIC0tICAgUHJlcHJvY2Vzc29yIGxpbmVzIGFuZCBkZWxldGVkIGxpbmVzIGFyZSBjb21wbGV0ZWx5IHJlbW92ZWQgZnJvbSB0aGUKICAgLS0gICBvdXRwdXQuCgogICBTX1ByZXBfUmVwbGFjZSA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFUExBQ0VfSU5fQ09NTUVOVFMgIiAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1DIjsKICAgLS0gICAgICAgIC9OT1JFUExBQ0VfSU5fQ09NTUVOVFMgKEQpCiAgIC0tICAgICAgICAvUkVQTEFDRV9JTl9DT01NRU5UUwogICAtLQogICAtLSAgIENhdXNlcyBwcmVwcm9jZXNzb3IgdG8gc2NhbiBjb21tZW50cyBhbmQgcGVyZm9ybSByZXBsYWNlbWVudHMgb24KICAgLS0gICBhbnkgJHN5bWJvbCBvY2N1cnJlbmNlcyB3aXRoaW4gdGhlIGNvbW1lbnQgdGV4dC4KCiAgIFNfUHJlcF9TeW1ib2xzIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU1lNQk9MUyAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMiOwogICAtLSAgICAgICAgL05PU1lNQk9MUyAoRCkKICAgLS0gICAgICAgIC9TWU1CT0xTCiAgIC0tCiAgIC0tICAgQ2F1c2VzIGEgc29ydGVkIGxpc3Qgb2Ygc3ltYm9sIG5hbWVzIGFuZCB2YWx1ZXMgdG8gYmUgbGlzdGVkIG9uCiAgIC0tICAgU1lTJE9VVFBVVC4KCiAgIFNfUHJlcF9VbmRlZiAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVU5ERUZJTkVEICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXUiOwogICAtLSAgICAgICAgL05PVU5ERUZJTkVEIChEKQogICAtLSAgICAgICAgL1VOREVGSU5FRAoKICAgUHJlcF9Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19QcmVwX0Fzc29jICAgJ0FjY2VzcywKICAgICAgU19QcmVwX0JsYW5rICAgJ0FjY2VzcywKICAgICAgU19QcmVwX0NvbSAgICAgJ0FjY2VzcywKICAgICAgU19QcmVwX1JlZiAgICAgJ0FjY2VzcywKICAgICAgU19QcmVwX1JlbW92ZSAgJ0FjY2VzcywKICAgICAgU19QcmVwX1JlcGxhY2UgJ0FjY2VzcywKICAgICAgU19QcmVwX1N5bWJvbHMgJ0FjY2VzcywKICAgICAgU19QcmVwX1VuZGVmICAgJ0FjY2Vzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3dpdGNoZXMgZm9yIEdOQVQgUFJFVFRZIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgU19QcmV0dHlfQWxpZ24gIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQUxJR049IiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFRkFVTFQgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1BMTIzNDUgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPRkYgIiAgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItQTAgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ09MT05TICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUExICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFQ0xBUkFUSU9OUyAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1BMiAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVEFURU1FTlRTICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItQTMgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQVJST1dTICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUE0ICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNPTVBPTkVOVF9DTEFVU0VTICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1BNSI7CiAgIC0tICAgICAgICAvQUxJR05bPWFsaWduLW9wdGlvbiwgYWxpZ24tb3B0aW9uLCAuLi5dCiAgIC0tCiAgIC0tICAgU2V0IGFsaWdubWVudHMuIEJ5IGRlZmF1bHQsIGFsbCBhbGlnbm1lbnRzIChjb2xvbnMgaW4gZGVjbGFyYXRpb25zLAogICAtLSAgIGluaXRpYWxpc2F0aW9ucyBpbiBkZWNsYXJhdGlvbnMsIGFzc2lnbm1lbnRzIGFuZCBhcnJvdyBkZWxpbWl0ZXJzKSBhcmUKICAgLS0gICBPTi4KICAgLS0KICAgLS0gICBhbGlnbi1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIE9GRiAoRCkgICAgICAgICAgIFNldCBhbGwgYWxpZ25tZW50cyB0byBPRkYKICAgLS0gICAgICBDT0xPTlMgICAgICAgICAgICBTZXQgYWxpZ25tZW50cyBvZiBjb2xvbnMgaW4gZGVjbGFyYXRpb25zIHRvIE9OCiAgIC0tICAgICAgREVDTEFSQVRJT05TICAgICAgU2V0IGFsaWdubWVudHMgb2YgaW5pdGlhbGlzYXRpb25zIGluIGRlY2xhcmF0aW9ucwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIE9OCiAgIC0tICAgICAgU1RBVEVNRU5UUyAgICAgICAgU2V0IGFsaWdubWVudHMgb2YgYXNzaWdubWVudHMgc3RhdGVtZW50cyB0byBPTgogICAtLSAgICAgIEFSUk9XUyAgICAgICAgICAgIFNldCBhbGlnbm1lbnRzIG9mIGFycm93IGRlbGltaXRlcnMgdG8gT04uCiAgIC0tICAgICAgQ09NUE9ORU5UX0NMQVVTRVMgU2V0IGFsaWdubWVudHMgb2YgQVQga2V5d29yZHMgaW4gY29tcG9uZW50CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgY2xhdXNlcyBPTgogICAtLQogICAtLSAgIFNwZWNpZnlpbmcgb25lIG9mIHRoZSBPTiBvcHRpb25zIHdpdGhvdXQgZmlyc3Qgc3BlY2lmeWluZyB0aGUgT0ZGCiAgIC0tICAgb3B0aW9uIGhhcyBubyBlZmZlY3QsIGJlY2F1c2UgYnkgZGVmYXVsdCBhbGwgYWxpZ25tZW50cyBhcmUgc2V0IHRvIE9OLgoKICAgU19QcmV0dHlfQWxsX1ByanMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9BTExfUFJPSkVDVFMgIiAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVUiOwogICAtLSAgICAgICAgL05PQUxMX1BST0pFQ1RTIChEKQogICAtLSAgICAgICAgL0FMTF9QUk9KRUNUUwogICAtLSAgIFdoZW4gR05BVCBQUkVUVFkgaXMgdXNlZCB3aXRoIGEgUHJvamVjdCBGaWxlIGFuZCBubyBzb3VyY2UgaXMKICAgLS0gICBzcGVjaWZpZWQsIHRoZSB1bmRlcmx5aW5nIHRvb2wgZ25hdHBwIGlzIGNhbGxlZCBmb3IgYWxsIHRoZQogICAtLSAgIHNvdXJjZXMgb2YgYWxsIHRoZSBQcm9qZWN0IEZpbGVzIGluIHRoZSBwcm9qZWN0IHRyZWUuCgogICBTX1ByZXR0eV9BdHRyaWIgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9BVFRSSUJVVEVfQ0FTSU5HPSIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlYRURfQ0FTRSAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFNICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxPV0VSX0NBU0UgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1hTCAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVUFBFUl9DQVNFICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYVUiOwogICAtLSAgICAgICAgL0FUVFJJQlVURV9DQVNJTkdbPWNhc2luZy1vcHRpb25dCiAgIC0tCiAgIC0tICAgU2V0IHRoZSBjYXNlIG9mIHRoZSBhdHRyaWJ1dGVzLiBCeSBkZWZhdWx0IHRoZSBhdHRyaWJ1dGVzIGFyZSBpbiBtaXhlZAogICAtLSAgIGNhc2UuCiAgIC0tICAgY2FzaW5nLW9wdGlvbiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgTUlYRURfQ0FTRSAoRCkKICAgLS0gICAgICBMT1dFUl9DQVNFCiAgIC0tICAgICAgVVBQRVJfQ0FTRQoKICAgU19QcmV0dHlfQ29tbWVudHMgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09NTUVOVFNfTEFZT1VUPSIgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOVE9VQ0hFRCAiICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMwICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERUZBVUxUICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jMSAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1RBTkRBUkRfSU5ERU5UICIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYzIgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdOQVRfQkVHSU5OSU5HICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMzICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSRUZPUk1BVCAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jNCI7CiAgIC0tICAgICAgICAvQ09NTUVOVFNfTEFZT1VUWz1sYXlvdXQtb3B0aW9uLCBsYXlvdXQtb3B0aW9uLCAuLi5dCiAgIC0tCiAgIC0tICAgU2V0IHRoZSBjb21tZW50IGxheW91dC4gQnkgZGVmYXVsdCwgY29tbWVudHMgdXNlIHRoZSBHTkFUIHN0eWxlCiAgIC0tICAgY29tbWVudCBsaW5lIGluZGVudGF0aW9uLgogICAtLQogICAtLSAgIGxheW91dC1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgVU5UT1VDSEVEoKCgoKCgoKCgoCBBbGwgdGhlIGNvbW1lbnRzIHJlbWFpbiB1bmNoYW5nZWQKICAgLS0gICAgIERFRkFVTFQgKEQpICAgICAgICAgR05BVCBzdHlsZSBjb21tZW50IGxpbmUgaW5kZW50YXRpb24KICAgLS0gICAgIFNUQU5EQVJEX0lOREVOVCAgICAgU3RhbmRhcmQgY29tbWVudCBsaW5lIGluZGVudGF0aW9uCiAgIC0tICAgICBHTkFUX0JFR0lOTklORyAgICAgIEdOQVQgc3R5bGUgY29tbWVudCBiZWdpbm5pbmcKICAgLS0gICAgIFJFRk9STUFUICAgICAgICAgICAgUmVmb3JtYXQgY29tbWVudCBibG9ja3MKICAgLS0KICAgLS0gICAgIEFsbCBjb21iaW5hdGlvbnMgb2YgbGF5b3V0IG9wdGlvbnMgYXJlIGFsbG93ZWQsIGV4Y2VwdCBmb3IgREVGQVVMVAogICAtLSAgICAgYW5kIFNUQU5EQVJEX0lOREVOVCB3aGljaCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCBhbmQgYWxzbyBpZgogICAtLSAgICAgVU5UT1VDSEVEIGlzIHNwZWNpZmllZCwgdGhpcyBtdXN0IGJlIHRoZSBvbmx5IG9wdGlvbi4KICAgLS0KICAgLS0gICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIkdOQVQgc3R5bGUgY29tbWVudCBsaW5lIGluZGVudGF0aW9uIiBhbmQKICAgLS0gICAgICJzdGFuZGFyZCBjb21tZW50IGxpbmUgaW5kZW50YXRpb24iIGlzIHRoZSBmb2xsb3dpbmc6IGZvciBzdGFuZGFyZAogICAtLSAgICAgY29tbWVudCBpbmRlbnRhdGlvbiwgYW55IGNvbW1lbnQgbGluZSBpcyBpbmRlbnRlZCBhcyBpZiBpdCB3ZXJlCiAgIC0tICAgICBhIGRlY2xhcmF0aW9uIG9yIHN0YXRlbWVudCBhdCB0aGUgc2FtZSBwbGFjZS4KICAgLS0gICAgIEZvciBHTkFUIHN0eWxlIGNvbW1lbnQgaW5kZW50YXRpb24sIGNvbW1lbnQgbGluZXMgd2hpY2ggYXJlCiAgIC0tICAgICBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBpZiBvciBjYXNlIHN0YXRlbWVudCBhbHRlcm5hdGl2ZSwgcmVjb3JkCiAgIC0tICAgICB2YXJpYW50IG9yICdiZWdpbicga2V5d29yZCBhcmUgaW5kZW50ZWQgYXMgdGhlIGtleXdvcmQgdGhhdCBmb2xsb3dzCiAgIC0tICAgICB0aGVtLjoKICAgLS0KICAgLS0gICAgIFN0YW5kYXJkIGluZGVudGF0aW9uOgogICAtLQogICAtLSAgICAgICAgaWYgQSB0aGVuCiAgIC0tICAgICAgICAgICBudWxsOwogICAtLSAgICAgICAgICAgLS0gc29tZSBjb21tZW50CiAgIC0tICAgICAgICBlbHNlCiAgIC0tICAgICAgICAgICBudWxsOwogICAtLSAgICAgICAgZW5kIGlmOwogICAtLQogICAtLSAgICAgR05BVCBzdHlsZSBpbmRlbnRhdGlvbjoKICAgLS0KICAgLS0gICAgICAgIGlmIEEgdGhlbgogICAtLSAgICAgICAgICAgbnVsbDsKICAgLS0gICAgICAgIC0tIHNvbWUgY29tbWVudAogICAtLSAgICAgICAgZWxzZQogICAtLSAgICAgICAgICAgbnVsbDsKICAgLS0gICAgICAgIGVuZCBpZjsKICAgLS0KICAgLS0gICAgIE9wdGlvbiAiR05BVCBzdHlsZSBjb21tZW50IGJlZ2lubmluZyIgbWVhbnMgdGhhdCBmb3IgZWFjaCBjb21tZW50CiAgIC0tICAgICB3aGljaCBpcyBub3QgY29uc2lkZXJlZCBhcyBub24tZm9ybWF0dGFibGUgc2VwYXJhdG9yICh0aGF0IGlzLCB0aGUKICAgLS0gICAgIGNvbW1lbnQgbGluZSBjb250YWlucyBvbmx5IGRhc2hlcywgb3IgYSBjb21tZW50IGxpbmUgZW5kcyB3aXRoIHR3bwogICAtLSAgICAgZGFzaGVzKSwgdGhlcmUgd2lsbCBiZSBhdCBsZWFzdCB0d28gc3BhY2VzIGJldHdlZW4gc3RhcnRpbmcgIi0tIiBhbmQKICAgLS0gICAgIHRoZSBmaXJzdCBub24tYmxhbmsgY2hhcmFjdGVyIG9mIHRoZSBjb21tZW50LgoKICAgU19QcmV0dHlfQ29uZmlnICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09ORklHVVJBVElPTl9QUkFHTUFTX0ZJTEU9PCIgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nbmF0ZWM+IjsKICAgLS0gICAgICAgIC9DT05GSUdVUkFUSU9OX1BSQUdNQVNfRklMRT1maWxlCiAgIC0tCiAgIC0tICAgU3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gcHJhZ21hcyBmaWxlIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlCiAgIC0tICAgY29tcGlsZXIuCgogICBTX1ByZXR0eV9Db25zdHIgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DT05TVFJVQ1RfTEFZT1VUPSIgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdOQVQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWwxICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT01QQUNUICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1sMiAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVU5DT01QQUNUICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWwzIjsKICAgLS0gICAgICAgIC9DT05TVFJVQ1RfTEFZT1VUWz1jb25zdHJ1Y3Qtb3B0aW9uXQogICAtLQogICAtLSAgIFNldCBjb25zdHJ1Y3QgbGF5b3V0LiBEZWZhdWx0IGlzIEdOQVQgc3R5bGUgbGF5b3V0LgogICAtLSAgIGNvbnN0cnVjdC1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIEdOQVQgKEQpCiAgIC0tICAgICAgQ09NUEFDVAogICAtLSAgICAgIFVOQ09NUEFDVAogICAtLQogICAtLSAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gR05BVCBzdHlsZSBhbmQgQ29tcGFjdCBsYXlvdXQgb24gb25lIGhhbmQKICAgLS0gICBhbmQgVW5jb21wYWN0IGxheW91dCBvbiB0aGUgb3RoZXIgaGFuZCBjYW4gYmUgaWxsdXN0cmF0ZWQgYnkgdGhlCiAgIC0tICAgZm9sbG93aW5nIGV4YW1wbGVzOgogICAtLQogICAtLSAgICAgICBHTkFUIHN0eWxlIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVW5jb21wYWN0IGxheW91dAogICAtLSAgICAgICBDb21wYWN0IGxheW91dAogICAtLQogICAtLSAgICAgICB0eXBlIHEgaXMgcmVjb3JkICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBxIGlzCiAgIC0tICAgICAgICAgIGEgOiBpbnRlZ2VyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQKICAgLS0gICAgICAgICAgYiA6IGludGVnZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgOiBpbnRlZ2VyOwogICAtLSAgICAgICBlbmQgcmVjb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA6IGludGVnZXI7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgcmVjb3JkOwogICAtLQogICAtLQogICAtLSAgICAgICBCbG9jayA6IGRlY2xhcmUgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgOgogICAtLSAgICAgICAgICBBIDogSW50ZWdlciA6PSAzOyAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyZQogICAtLSAgICAgICBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA6IEludGVnZXIgOj0gMzsKICAgLS0gICAgICAgICAgUHJvYyAoQSwgQSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgIC0tICAgICAgIGVuZCBCbG9jazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIChBLCBBKTsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBCbG9jazsKICAgLS0KICAgLS0gICAgICAgQ2xlYXIgOiBmb3IgSiBpbiAxIC4uIDEwIGxvb3AgICAgICAgICAgIENsZWFyIDoKICAgLS0gICAgICAgICAgQSAoSikgOj0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBKIGluIDEgLi4gMTAgbG9vcAogICAtLSAgICAgICBlbmQgbG9vcCBDbGVhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSAoSikgOj0gMDsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBsb29wIENsZWFyOwogICAtLQogICAtLQogICAtLSAgIEEgZnVydGhlciBkaWZmZXJlbmNlIGJldHdlZW4gR05BVCBzdHlsZSBsYXlvdXQgYW5kIGNvbXBhY3QgbGF5b3V0IGlzCiAgIC0tICAgdGhhdCBpbiBHTkFUIHN0eWxlIGxheW91dCBjb21wb3VuZCBzdGF0ZW1lbnRzLCByZXR1cm4gc3RhdGVtZW50cyBhbmQKICAgLS0gICBib2RpZXMgYXJlIGFsd2F5cyBzZXBhcmF0ZWQgYnkgZW1wdHkgbGluZXMuCgogICBTX1ByZXR0eV9Db21pbmQgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DT05USU5VQVRJT05fSU5ERU5UPSMiICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWNsIyI7CiAgIC0tICAgICAgICAvQ09OVElOVUFUSU9OX0lOREVOVD1ubm4KICAgLS0KICAgLS0gICBJbmRlbnRhdGlvbiBsZXZlbCBmb3IgY29udGludWF0aW9uIGxpbmVzLCBubm4gZnJvbSAxIC4uIDkuCiAgIC0tICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgb25lIGxlc3MgdGhlbiB0aGUgKG5vcm1hbCkgaW5kZW50YXRpb24gbGV2ZWwsCiAgIC0tICAgdW5sZXNzIHRoZSBpbmRlbnRhdGlvbiBpcyBzZXQgdG8gMTogaW4gdGhhdCBjYXNlIHRoZSBkZWZhdWx0IHZhbHVlIGZvcgogICAtLSAgIGNvbnRpbnVhdGlvbiBsaW5lIGluZGVudGF0aW9uIGlzIGFsc28gMS4KCiAgIFNfUHJldHR5X0NvbXBhY3RfSXMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT19TRVBBUkFURV9JUyAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW5vLXNlcGFyYXRlLWlzIjsKICAgLS0gICAgICAgIC9OT19TRVBBUkFURV9JUwogICAtLQogICAtLSAgIERvIG5vdCBwbGFjZSB0aGUgSVMga2V5d29yZCBvbiBhIHNlcGFyYXRlIGxpbmUgaW4gYSBzdWJwcm9ncmFtIGJvZHkgaW4KICAgLS0gICBjYXNlIGlmIHRoZSBzcGVjaWZpY2F0aW9uIG9jY3VwaWVzIG1vcmUgdGhlbiBvbmUgbGluZS4KCiAgIFNfUHJldHR5X0VvbCAgICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VORF9PRl9MSU5FPSIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRPUyAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1lb2w9ZG9zICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVTklYICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZW9sPXVuaXggIiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ1JMRiAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWVvbD1jcmxmICIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxGICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1lb2w9bGYiOwogICAtLSAgICAgICAgL0VORF9PRl9MSU5FPVtvcHRpb25dCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBmb3JtIG9mIHRoZSBsaW5lIHRlcm1pbmF0b3JzIGluIHRoZSBwcm9kdWNlZCBzb3VyY2UuCiAgIC0tICAgQnkgZGVmYXVsdCwgdGhlIGZvcm0gb2YgdGhlIGxpbmUgdGVybWluYXRvciBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybXMuCiAgIC0tICAgT24gVW5peCBhbmQgVk1TLCBpdCBpcyBhIExpbmUgRmVlZCAoTEYpIGNoYXJhcmN0ZXIuIE9uIFdpbmRvd3MgKERPUyksCiAgIC0tICAgSXQgaXMgYSBDYXJyaWFnZSBSZXR1cm4gKENSKSBmb2xsb3dlZCBieSBhIExpbmUgRmVlZC4KICAgLS0gICBUaGUgT3B0aW9ucyBET1MgYW5kIENSTEYgYXJlIGVxdWl2YWxlbnQuIFRoZSBvcHRpb25zIFVOSVggYW5kIExGIGFyZQogICAtLSAgIGFsc28gZXF1aXZhbGVudC4KCiAgIFNfUHJldHR5X0V4dCAgICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYVEVSTkFMX1JFRkVSRU5DRT0iICYgJyInICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVgiICYgJyInOwogICAtLSAgICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX1ByZXR0eV9DdXJyZW50ICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DVVJSRU5UX0RJUkVDVE9SWSAiICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIS1JLSI7CiAgIC0tICAgICAgICAvQ1VSUkVOVF9ESVJFQ1RPUlkgKEQpCiAgIC0tCiAgIC0tICAgTG9vayBmb3Igc291cmNlIGZpbGVzIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogICAtLQogICAtLSAgICAgICAgL05PQ1VSUkVOVF9ESVJFQ1RPUlkKICAgLS0gICBEbyBub3QgbG9vayBmb3Igc291cmNlIGZpbGVzIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgoKICAgU19QcmV0dHlfRGljbyAgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRElDVElPTkFSWT0qIiAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EKiI7CiAgIC0tICAgICAgICAvRElDVElPTkFSWT0oZmlsZV9uYW1lLCAuLi4pCiAgIC0tCiAgIC0tICAgVXNlIGVhY2ggc3BlY2lmaWVkIGZpbGUgYXMgYSBkaWN0aW9uYXJ5IGZpbGUgdGhhdCBkZWZpbmVzIHRoZSBjYXNpbmcKICAgLS0gICBmb3IgYSBzZXQgb2Ygc3BlY2lmaWVkIG5hbWVzLCB0aGVyZWJ5IG92ZXJyaWRpbmcgdGhlIGVmZmVjdCBvbiB0aGVzZQogICAtLSAgIG5hbWVzIGJ5IGFueSBleHBsaWNpdCBvciBpbXBsaWNpdCAvTkFNRV9DQVNJTkcgcXVhbGlmaWVyLgogICAtLQogICAtLSAgIEdOQVQgUFJFVFRZIGltcGxpY2l0bHkgdXNlcyBhIGRlZmF1bHQgZGljdGlvbmFyeSBmaWxlIHRvIGRlZmluZSB0aGUKICAgLS0gICBjYXNpbmcgZm9yIHRoZSBBZGEgcHJlZGVmaW5lZCBuYW1lcyBhbmQgdGhlIG5hbWVzIGRlY2xhcmVkIGluIHRoZSBHTkFUCiAgIC0tICAgbGlicmFyaWVzLgogICAtLQogICAtLSAgIFRoZSBzdHJ1Y3R1cmUgb2YgYSBkaWN0aW9uYXJ5IGZpbGUsIGFuZCBkZXRhaWxzIG9uIHRoZSBjb252ZW50aW9ucwogICAtLSAgIHVzZWQgaW4gdGhlIGRlZmF1bHQgZGljdGlvbmFyeSBmaWxlLCBhcmUgZGVmaW5lZCBpbiB0aGUgR05BVCBVc2VyJ3MKICAgLS0gICBHdWlkZS4KCiAgIFNfUHJldHR5X0ZpbGVzICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZJTEVTPUAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZmlsZXM9QCI7CiAgIC0tICAgICAgL0ZJTEVTPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgVGFrZSBhcyBhcmd1bWVudHMgdGhlIGZpbGVzIHRoYXQgYXJlIGxpc3RlZCBpbiB0aGUgc3BlY2lmaWVkCiAgIC0tICAgdGV4dCBmaWxlLgoKICAgU19QcmV0dHlfRm9yY2VkICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRk9SQ0VEX09VVFBVVD1AIiAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vZkAiOwogICAtLSAgICAgICAgL0ZPUkNFRF9PVVRQVVQ9ZmlsZQogICAtLQogICAtLSAgIFdyaXRlIHRoZSBvdXRwdXQgaW50byB0aGUgc3BlY2lmaWVkIGZpbGUsIG92ZXJyaWRpbmcgYW55IHBvc3NpYmx5CiAgIC0tICAgZXhpc3RpbmcgZmlsZS4KCiAgIFNfUHJldHR5X0Zvcm1mZWVkICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0ZPUk1fRkVFRF9BRlRFUl9QUkFHTUFfUEFHRSAiICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZmYiOwogICAtLSAgICAgICAgL0ZPUk1fRkVFRF9BRlRFUl9QUkFHTUFfUEFHRQogICAtLQogICAtLSAgIFdoZW4gdGhlcmUgaXMgYSBwcmFnbWEgUGFnZSBpbiB0aGUgc291cmNlLCBpbnNlcnQgYSBGb3JtIEZlZWQKICAgLS0gICBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHNlbWljb2xvbiB0aGF0IGZvbGxvd3MgdGhlIHByYWdtYQogICAtLSAgIFBhZ2UuCgogICBTX1ByZXR0eV9JbmRlbnQgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JTkRFTlRBVElPTl9MRVZFTD0jIiAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItaSMiOwogICAtLSAgICAgICAgL0lOREVOVEFUSU9OX0xFVkVMPW5ubgogICAtLQogICAtLSAgIFNwZWNpZnkgdGhlIG51bWJlciBvZiBzcGFjZXMgdG8gYWRkIGZvciBlYWNoIGluZGVudGF0aW9uIGxldmVsLgogICAtLSAgIG5ubiBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOS4gVGhlIGRlZmF1bHQgaXMgMy4KCiAgIFNfUHJldHR5X0tleXdvcmQgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0tFWVdPUkRfQ0FTSU5HPSIgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMT1dFUl9DQVNFICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1rTCAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVVBQRVJfQ0FTRSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIta1UiOwogICAtLSAgICAgICAgL0tFWVdPUkRfQ0FTSU5HWz1rZXl3b3JkLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZ5IHRoZSBjYXNlIG9mIEFkYSBrZXl3b3Jkcy4gVGhlIGRlZmF1bHQgaXMga2V5d29yZHMgaW4gbG93ZXIKICAgLS0gICBjYXNlLgogICAtLSAgIGtleXdvcmQtb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgICBMT1dFUl9DQVNFIChEKQogICAtLSAgICAgIFVQUEVSX0NBU0UKCiAgIFNfUHJldHR5X01heGxlbiAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0xJTkVfTEVOR1RIX01BWD0jIiAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItTSMiOwogICAtLSAgICAgICAgL0xJTkVfTEVOR1RIX01BWD1ubm4KICAgLS0KICAgLS0gICBTZXQgdGhlIG1heGltdW0gbGluZSBsZW5ndGgsIG5ubiBmcm9tIDMyIC4uMjU2LiBUaGUgZGVmYXVsdCBpcyA3OS4KCiAgIFNfUHJldHR5X01heGluZCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01BWF9JTkRFTlQ9IyIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItVCMiOwogICAtLSAgICAgICAgL01BWF9JTkRFTlQ9bm5uCiAgIC0tCiAgIC0tICAgRG8gbm90IHVzZSBhbiBhZGRpdGlvbmFsIGluZGVudGF0aW9uIGxldmVsIGZvciBjYXNlIGFsdGVybmF0aXZlcwogICAtLSAgIGFuZCB2YXJpYW50cyBpZiB0aGVpciBudW1iZXIgaXMgbm5uIG9yIG1vcmUuIFRoZSBkZWZhdWx0IGlzICAxMC4KICAgLS0gICBJZiBubm4gaXMgemVybywgYW4gYWRkaXRpb25hbCBpbmRlbnRhdGlvbiBsZXZlbCBpcyAgdXNlZCBmb3IgYW55IG51bWJlcgogICAtLSAgIG9mIGNhc2UgYWx0ZXJuYXRpdmVzIGFuZCB2YXJpYW50cy4KCiAgIFNfUHJldHR5X01lc3MgICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01FU1NBR0VTX1BST0pFQ1RfRklMRT0iICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FRElVTSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDIiOwogICAtLSAgICAgICAgL01FU1NBR0VTX1BST0pFQ1RfRklMRVs9bWVzc2FnZXMtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgInZlcmJvc2l0eSIgb2YgdGhlIHBhcnNpbmcgb2YgcHJvamVjdCBmaWxlcy4KICAgLS0gICBtZXNzYWdlcy1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIERFRkFVTFQgKEQpICBObyBtZXNzYWdlcyBhcmUgb3V0cHV0IGlmIHRoZXJlIGlzIG5vIGVycm9yIG9yIHdhcm5pbmcuCiAgIC0tCiAgIC0tICAgICAgTUVESVVNICAgICAgIEEgc21hbGwgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQuCiAgIC0tCiAgIC0tICAgICAgSElHSCAgICAgICAgIEEgZ3JlYXQgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQsIG1vc3Qgb2YgdGhlbSBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZnVsIGZvciB0aGUgdXNlci4KCiAgIFNfUHJldHR5X05hbWVzICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05BTUVfQ0FTSU5HPSIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBU19ERUNMQVJFRCAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1uRCAiICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTE9XRVJfQ0FTRSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbkwgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVQUEVSX0NBU0UgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5VICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVhFRF9DQVNFICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1uTSI7CiAgIC0tICAgICAgICAvTkFNRV9DQVNJTkdbPW5hbWUtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZnkgdGhlIGNhc2luZyBvZiBuYW1lcy4KICAgLS0gICAnbmFtZS1vcHRpb24nIG1heSBiZSBvbmUgb2Y6CiAgIC0tCiAgIC0tICAgICAgQVNfREVDTEFSRUQgKEQpICAgTmFtZSBjYXNpbmcgZm9yIGRlZmluaW5nIG9jY3VycmVuY2VzIGFyZSBhcyB0aGV5CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4KICAgLS0KICAgLS0gICAgICBMT1dFUl9DQVNFICAgICAgICBOYW1lcyBhcmUgaW4gbG93ZXIgY2FzZS4KICAgLS0KICAgLS0gICAgICBVUFBFUl9DQVNFICAgICAgICBOYW1lcyBhcmUgaW4gdXBwZXIgY2FzZS4KICAgLS0KICAgLS0gICAgICBNSVhFRF9DQVNFICAgICAgICBOYW1lcyBhcmUgaW4gbWl4ZWQgY2FzZS4KCiAgIFNfUHJldHR5X05vX0JhY2t1cCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PX0JBQ0tVUCAiICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ybmIiOwogICAtLSAgICAgICAgL1JFUExBQ0VfTk9fQkFDS1VQCiAgIC0tCiAgIC0tICAgUmVwbGFjZSB0aGUgYXJndW1lbnQgc291cmNlIHdpdGggdGhlIHByZXR0eS1wcmludGVkIHNvdXJjZSB3aXRob3V0CiAgIC0tICAgY3JlYXRpbmcgYW55IGJhY2t1cCBjb3B5IG9mIHRoZSBhcmd1bWVudCBzb3VyY2UuCgogICBTX1ByZXR0eV9Ob19MYWJlbHMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT19NSVNTRURfTEFCRUxTICIgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWUiOwogICAtLSAgICAgICAgL05PX01JU1NFRF9MQUJFTFMKICAgLS0KICAgLS0gICBEbyBub3QgaW5zZXJ0IG1pc3NpbmcgZW5kL2V4aXQgbGFiZWxzLiBUaGUgZW5kIGxhYmVsIGlzIHRoZSBuYW1lIG9mCiAgIC0tICAgYSBjb25zdHJ1Y3QgdGhhdCBtYXkgb3B0aW9uYWxseSBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgY29uc3RydWN0LgogICAtLSAgIFRoaXMgaW5jbHVkZXMgdGhlIG5hbWVzIG9mIHBhY2thZ2VzIGFuZCBzdWJwcm9ncmFtcy4KICAgLS0gICBTaW1pbGFybHksIHRoZSBleGl0IGxhYmVsIGlzIHRoZSBuYW1lIG9mIGEgbG9vcCB0aGF0IG1heSBhcHBlYXIgYXMgdGhlCiAgIC0tICAgYXJndW1lbnQgb2YgYW4gZXhpdCBzdGF0ZW1lbnQgd2l0aGluIHRoZSBsb29wLiBCeSBkZWZhdWx0LCBHTkFUIFBSRVRUWQogICAtLSAgIGluc2VydHMgdGhlc2UgZW5kL2V4aXQgbGFiZWxzIHdoZW4gdGhleSBhcmUgYWJzZW50IGluIHRoZSBvcmlnaW5hbAogICAtLSAgIHNvdXJjZS4gVGhpcyBxdWFsaWZpZXIgL05PX01JU1NFRF9MQUJFTFMgc3VwcHJlc3NlcyB0aGlzIGluc2VydGlvbiwKICAgLS0gICBzbyB0aGF0IHRoZSBmb3JtYXR0ZWQgc291cmNlIHJlZmxlY3RzIHRoZSBvcmlnaW5hbC4KCiAgIFNfUHJldHR5X05vdGFicyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PVEFCUyAiICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbm90YWJzIjsKICAgLS0gICAgICAgIC9OT1RBQlMKICAgLS0KICAgLS0gICBSZXBsYWNlIGFsbCB0YWJ1bGF0aW9ucyBpbiBjb21tZW50cyB3aXRoIHNwYWNlcy4KCiAgIFNfUHJldHR5X091dHB1dCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09VVFBVVD1AIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItb0AiOwogICAtLSAgICAgICAgL09VVFBVVD1maWxlCiAgIC0tCiAgIC0tICAgV3JpdGUgdGhlIG91dHB1dCB0byB0aGUgc3BlY2lmaWVkIGZpbGUuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLAogICAtLSAgIGFuIGVycm9yIGlzIHJlcG9ydGVkLgoKICAgU19QcmV0dHlfT3ZlcnJpZGUgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvT1ZFUlJJRElOR19SRVBMQUNFICIgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1yZiI7CiAgIC0tICAgICAgICAvTk9PVkVSUklESU5HX1JFUExBQ0UgKEQpCiAgIC0tICAgICAgICAvT1ZFUlJJRElOR19SRVBMQUNFCiAgIC0tCiAgIC0tICAgUmVwbGFjZSB0aGUgYXJndW1lbnQgc291cmNlIHdpdGggdGhlIHByZXR0eS1wcmludGVkIHNvdXJjZSBhbmQgY29weSB0aGUKICAgLS0gICBhcmd1bWVudCBzb3VyY2UgaW50byBmaWxlbmFtZS5OUFAsIG92ZXJyaWRpbmcgYW55IGV4aXN0aW5nIGZpbGUgaWYKICAgLS0gICBuZWVkZWQuCgogICBTX1ByZXR0eV9QcmFnbWEgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUkFHTUFfQ0FTSU5HPSIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlYRURfQ0FTRSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcE0gIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxPV0VSX0NBU0UgIiAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXBMICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVUFBFUl9DQVNFICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1wVSI7CiAgIC0tICAgICAgICAvUFJBR01BX0NBU0lOR1s9cHJhZ21hLW9wdGlvbl0KICAgLS0KICAgLS0gICBTZXQgdGhlIGNhc2Ugb2YgcHJhZ21hIGlkZW50aWZpZXJzLiBUaGUgZGVmYXVsdCBpcyBNaXhlZCBjYXNlLgogICAtLSAgIHByYWdtYS1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIE1JWEVEX0NBU0UgKEQpCiAgIC0tICAgICAgTE9XRVJfQ0FTRQogICAtLSAgICAgIFVQUEVSX0NBU0UKCiAgIFNfUHJldHR5X1Byb2plY3QgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1RfRklMRT08IiAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1QPiI7CiAgIC0tICAgICAgICAvUFJPSkVDVF9GSUxFPWZpbGVuYW1lCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSBtYWluIHByb2plY3QgZmlsZSB0byBiZSB1c2VkLiBUaGUgcHJvamVjdCBmaWxlcyByb290ZWQKICAgLS0gICBhdCB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgd2lsbCBiZSBwYXJzZWQgYmVmb3JlIGFueSBvdGhlciBwcm9jZXNzaW5nIHRvCiAgIC0tICAgc2V0IHRoZSBidWlsZGluZyBlbnZpcm9ubWVudC4KCiAgIFNfUHJldHR5X1JlcGxhY2UgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JFUExBQ0UgIiAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItciI7CiAgIC0tICAgICAgICAvTk9SRVBMQUNFIChEKQogICAtLSAgICAgICAgL1JFUExBQ0UKICAgLS0KICAgLS0gICBSZXBsYWNlIHRoZSBhcmd1bWVudCBzb3VyY2Ugd2l0aCB0aGUgcHJldHR5LXByaW50ZWQgc291cmNlIGFuZCBjb3B5IHRoZQogICAtLSAgIGFyZ3VtZW50IHNvdXJjZSBpbnRvIGZpbGVuYW1lLk5QUC4gSWYgZmlsZW5hbWUuTlBQIGFscmVhZHkgZXhpc3RzLAogICAtLSAgIHJlcG9ydCBhbiBlcnJvciBhbmQgZXhpdC4KCiAgIFNfUHJldHR5X1JUUyAgICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1JVTlRJTUVfU1lTVEVNPXwiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1SVFM9fCI7CiAgIC0tICAgICAgICAvUlVOVElNRV9TWVNURU09eHh4CiAgIC0tCiAgIC0tICAgIENvbXBpbGUgYWdhaW5zdCBhbiBhbHRlcm5hdGUgcnVudGltZSBzeXN0ZW0gbmFtZWQgeHh4IG9yIFJUUy14eHguCgogICBTX1ByZXR0eV9TZWFyY2ggICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TRUFSQ0g9KiIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUkqIjsKICAgLS0gICAgICAgIC9TRUFSQ0g9KGRpcmVjdG9yeVssLi4uXSkKICAgLS0KICAgLS0gICAgV2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMgYWxzbyBsb29rIGluIGRpcmVjdG9yaWVzIHNwZWNpZmllZC4KCiAgIFNfUHJldHR5X1NwZWNpZmljICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NQRUNJRklDX0NBU0lORyAiICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRC0iOwogICAtLSAgICAgICAgL1NQRUNJRklDX0NBU0lORwogICAtLQogICAtLSAgIERvIG5vdCB1c2UgdGhlIGRlZmF1bHQgZGljdGlvbmFyeSBmaWxlOyBpbnN0ZWFkLCB1c2UgdGhlIGNhc2luZwogICAtLSAgIGRlZmluZWQgYnkgYSBxdWFsaWZpZXIgL05BTUVfQ0FTSU5HIGFuZC9vciBhbnkgZXhwbGljaXQgZGljdGlvbmFyeQogICAtLSAgIGZpbGUgc3BlY2lmaWVkIGJ5IGEgcXVhbGlmaWVyIC9ESUNUSU9OQVJZLgoKICAgU19QcmV0dHlfU3RhbmRhcmQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvU1RBTkRBUkRfT1VUUFVUICIgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1waXBlIjsKICAgLS0gICAgICAgIC9OT1NUQU5EQVJEX09VVFBVVCAoRCkKICAgLS0gICAgICAgIC9TVEFOREFSRF9PVVRQVVQKICAgLS0KICAgLS0gICBSZWRpcmVjdCB0aGUgb3V0cHV0IHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuCgogICBTX1ByZXR0eV9WZXJib3NlICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXYiOwogICAtLSAgICAgICAgL05PVkVSQk9TRSAoRCkKICAgLS0gICAgICAgIC9WRVJCT1NFCiAgIC0tCiAgIC0tICAgVmVyYm9zZSBtb2RlOyBHTkFUIFBSRVRUWSBnZW5lcmF0ZXMgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgdGhlbiBhCiAgIC0tICAgdHJhY2Ugb2YgdGhlIGFjdGlvbnMgaXQgdGFrZXMgdG8gcHJvZHVjZSBvciBvYnRhaW4gdGhlIEFTSVMgdHJlZS4KCiAgIFNfUHJldHR5X1dhcm5pbmdzICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1dBUk5JTkdTICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdyI7CiAgIC0tICAgICAgICAvTk9XQVJOSU5HUyAoRCkKICAgLS0gICAgICAgIC9XQVJOSU5HUwogICAtLQogICAtLSAgIElzc3VlIGEgd2FybmluZyB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGlmIGl0IGlzIG5vdCBwb3NzaWJsZQogICAtLSAgIHRvIHByb3ZpZGUgdGhlIHJlcXVpcmVkIGxheW91dCBpbiB0aGUgcmVzdWx0IHNvdXJjZS4KICAgLS0gICBCeSBkZWZhdWx0IHN1Y2ggd2FybmluZ3MgYXJlIG5vdCBhY3RpdmF0ZWQuCgogICBQcmV0dHlfU3dpdGNoZXMgOiBhbGlhc2VkIGNvbnN0YW50IFN3aXRjaGVzIDo9CiAgICAgKFNfUHJldHR5X0FsaWduICAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9BbGxfUHJqcyAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfQXR0cmliICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X0NvbW1lbnRzICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9Db21wYWN0X0lzJ0FjY2VzcywKICAgICAgU19QcmV0dHlfQ29uZmlnICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X0NvbnN0ciAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9Db21pbmQgICAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfQ3VycmVudCAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X0RpY28gICAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9Fb2wgICAgICAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfRXh0ICAgICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X0ZpbGVzICAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9Gb3JjZWQgICAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfRm9ybWZlZWQgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X0luZGVudCAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9LZXl3b3JkICAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfTWF4bGVuICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X01heGluZCAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9NZXNzICAgICAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfTmFtZXMgICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X05vX0JhY2t1cCAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9Ob19MYWJlbHMgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfTm90YWJzICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X091dHB1dCAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9PdmVycmlkZSAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfUHJhZ21hICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X1JlcGxhY2UgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9Qcm9qZWN0ICAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfUlRTICAgICAgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X1NlYXJjaCAgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9TcGVjaWZpYyAgJ0FjY2VzcywKICAgICAgU19QcmV0dHlfU3RhbmRhcmQgICdBY2Nlc3MsCiAgICAgIFNfUHJldHR5X1ZlcmJvc2UgICAnQWNjZXNzLAogICAgICBTX1ByZXR0eV9XYXJuaW5ncyAgJ0FjY2Vzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTd2l0Y2hlcyBmb3IgR05BVCBTRVRVUCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgU19TZXR1cF9FeHQgICAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9FWFRFUk5BTF9SRUZFUkVOQ0U9IiAmICciJyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVgiICYgJyInOwogICAtLSAgICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0ibmFtZT12YWwiCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSB0byB0aGUgcHJvamVjdCBtYW5hZ2VyLiBVc2VmdWwgb25seSBpZgogICAtLSAgIC9QUk9KRUNUX0ZJTEUgaXMgdXNlZC4KICAgLS0KICAgLS0gICBFeGFtcGxlOgogICAtLSAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9IkRFQlVHPVRSVUUiCgogICBTX1NldHVwX01lc3MgICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01FU1NBR0VTX1BST0pFQ1RfRklMRT0iICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFRkFVTFQgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUVESVVNICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDEgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMiI7CiAgIC0tICAgICAgICAvTUVTU0FHRVNfUFJPSkVDVF9GSUxFWz1tZXNzYWdlcy1vcHRpb25dCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIHRoZSAidmVyYm9zaXR5IiBvZiB0aGUgcGFyc2luZyBvZiBwcm9qZWN0IGZpbGVzLgogICAtLSAgIG1lc3NhZ2VzLW9wdGlvbiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgREVGQVVMVCAoRCkgIE5vIG1lc3NhZ2VzIGFyZSBvdXRwdXQgaWYgdGhlcmUgaXMgbm8gZXJyb3Igb3Igd2FybmluZy4KICAgLS0KICAgLS0gICAgICBNRURJVU0gICAgICAgQSBzbWFsbCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dC4KICAgLS0KICAgLS0gICAgICBISUdIICAgICAgICAgQSBncmVhdCBudW1iZXIgb2YgbWVzc2FnZXMgYXJlIG91dHB1dCwgbW9zdCBvZiB0aGVtIG5vdAogICAtLSAgICAgICAgICAgICAgICAgICBiZWluZyB1c2VmdWwgZm9yIHRoZSB1c2VyLgoKICAgU19TZXR1cF9Qcm9qZWN0ICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIGFyZSBwYXJzZWQgYW5kIG5vbiBleGlzdGluZyBvYmplY3QKICAgLS0gICBkaXJlY3RvcmllcywgbGlicmFyeSBkaXJlY3RvcmllcyBhbmQgZXhlYyBkaXJlY3RvcmllcyBhcmUgY3JlYXRlZC4KCiAgIFNfU2V0dXBfUXVpZXQgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvUVVJRVQgIiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcSI7CiAgIC0tICAgICAgICAvTk9RVUlFVCAoRCkKICAgLS0gICAgICAgIC9RVUlFVAogICAtLQogICAtLSAgIFdvcmsgcXVpZXRseSwgb25seSBvdXRwdXQgd2FybmluZ3MgYW5kIGVycm9ycy4KCiAgIFNfU2V0dXBfVmVyYm9zZSAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvVkVSQk9TRSAiICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12IjsKICAgLS0gICAgICAgIC9OT1ZFUkJPU0UgKEQpCiAgIC0tICAgICAgICAvVkVSQk9TRQogICAtLQogICAtLSAgIFZlcmJvc2UgbW9kZTsgR05BVCBQUkVUVFkgZ2VuZXJhdGVzIHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIHRoZW4gYQogICAtLSAgIHRyYWNlIG9mIHRoZSBhY3Rpb25zIGl0IHRha2VzIHRvIHByb2R1Y2Ugb3Igb2J0YWluIHRoZSBBU0lTIHRyZWUuCgogICBTZXR1cF9Td2l0Y2hlcyA6IGFsaWFzZWQgY29uc3RhbnQgU3dpdGNoZXMgOj0KICAgICAoU19TZXR1cF9FeHQgICAgICdBY2Nlc3MsCiAgICAgIFNfU2V0dXBfTWVzcyAgICAnQWNjZXNzLAogICAgICBTX1NldHVwX1Byb2plY3QgJ0FjY2VzcywKICAgICAgU19TZXR1cF9RdWlldCAgICdBY2Nlc3MsCiAgICAgIFNfU2V0dXBfVmVyYm9zZSAnQWNjZXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTd2l0Y2hlcyBmb3IgR05BVCBTSEFSRUQgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBTX1NoYXJlZF9EZWJ1ZyAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvREVCVUc9IiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFMTCAiICAgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWczICIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOT05FICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1nMCAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVFJBQ0VCQUNLICIgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZzEgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PVFJBQ0VCQUNLICIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWcwIjsKICAgLS0gICAgICAgIC9ERUJVR1s9ZGVidWctb3B0aW9uXQogICAtLSAgICAgICAgL05PREVCVUcKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlIGFtb3VudCBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW5jbHVkZWQuICdkZWJ1Zy1vcHRpb24nCiAgIC0tICAgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgIC0tCiAgIC0tICAgICAgICBBTEwgKEQpICAgICAgSW5jbHVkZSBmdWxsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KICAgLS0KICAgLS0gICAgICAgIE5PTkUgICAgICAgICBQcm92aWRlIG5vIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gU2FtZSBhcyAvTk9ERUJVRy4KICAgLS0KICAgLS0gICAgICAgIFRSQUNFQkFDSyAgICBQcm92aWRlIHN1ZmZpY2llbnQgZGVidWcgaW5mb3JtYXRpb24gZm9yIGEgdHJhY2ViYWNrLgogICAtLQogICAtLSAgICAgICAgTk9UUkFDRUJBQ0sgIFNhbWUgYXMgTk9ORS4KCiAgIFNfU2hhcmVkX0ltYWdlICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0lNQUdFPUAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW9AIjsKICAgLS0gICAgICAgIC9JTUFHRT1pbWFnZS1uYW1lCiAgIC0tCiAgIC0tICAgJ2ltYWdlLW5hbWUnIHNwZWNpZmllcyB0aGUgbmFtZSBmb3IgdGhlIGdlbmVyYXRlZCBzaGFyZWQgbGlicmFyeS4KCiAgIFNfU2hhcmVkX0lkZW50ICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JREVOVElGSUNBVElPTj0iICYgJyInICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3ItbGlua2VyPUlERU5UPSIgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJzsKICAgLS0gICAgICAgIC9JREVOVElGSUNBVElPTj0iPHN0cmluZz4iCiAgIC0tCiAgIC0tICAgIjxzdHJpbmc+IiBzcGVjaWZpZXMgdGhlIHN0cmluZyB0byBiZSBzdG9yZWQgaW4gdGhlIGltYWdlIGZpbGUgaWRlbnQtCiAgIC0tICAgaWZpY2F0aW9uIGZpZWxkIGluIHRoZSBpbWFnZSBoZWFkZXIuIEl0IG92ZXJyaWRlcyBhbnkgcHJhZ21hIElkZW50CiAgIC0tICAgc3BlY2lmaWVkIHN0cmluZy4KCiAgIFNfU2hhcmVkX05vZmlsZXMgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9OT1NUQVJUX0ZJTEVTICIgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vc3RhcnRmaWxlcyI7CiAgIC0tICAgICAgICAvTk9TVEFSVF9GSUxFUwogICAtLQogICAtLSAgIExpbmsgaW4gZGVmYXVsdCBpbWFnZSBpbml0aWFsaXphdGlvbiBhbmQgc3RhcnR1cCBmdW5jdGlvbnMuCgogICBTX1NoYXJlZF9Ob2luaGliIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9JTkhJQklULUlNQUdFICIgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZm9yLWxpbmtlcj0tLW5vaW5oaWJpdC1leGVjIjsKICAgLS0gICAgICAgIC9OT0lOSElCSVQtSU1BR0UKICAgLS0KICAgLS0gICBEZWxldGUgaW1hZ2UgaWYgdGhlcmUgYXJlIGVycm9ycyBvciB3YXJuaW5ncy4KCiAgIFNfU2hhcmVkX1ZlcmIgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9WRVJCT1NFICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXYiOwogICAtLSAgICAgICAgL05PVkVSQk9TRSAoRCkKICAgLS0gICAgICAgIC9WRVJCT1NFCiAgIC0tCiAgIC0tICAgQ2F1c2VzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgb3V0cHV0LCBpbmNsdWRpbmcgYSBmdWxsIGxpc3Qgb2YKICAgLS0gICB0aGUgaW5jbHVkZWQgb2JqZWN0IGZpbGVzLiBUaGlzIHN3aXRjaCBvcHRpb24gaXMgbW9zdCB1c2VmdWwgd2hlbiB5b3UKICAgLS0gICB3YW50IHRvIHNlZSB3aGF0IHNldCBvZiBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIHVzZWQgaW4gdGhlIGxpbmsgc3RlcC4KCiAgIFNfU2hhcmVkX1paWlpaICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi88b3RoZXI+ICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3ItbGlua2VyPSI7CiAgIC0tICAgICAgICAvPG90aGVyPgogICAtLQogICAtLSAgIEFueSBvdGhlciBzd2l0Y2ggdHJhbnNtaXR0ZWQgdG8gdGhlIHVuZGVybHlpbmcgbGlua2VyLgoKICAgU2hhcmVkX1N3aXRjaGVzIDogYWxpYXNlZCBjb25zdGFudCBTd2l0Y2hlcyA6PQogICAgIChTX1NoYXJlZF9EZWJ1ZyAgICdBY2Nlc3MsCiAgICAgIFNfU2hhcmVkX0ltYWdlICAgJ0FjY2VzcywKICAgICAgU19TaGFyZWRfSWRlbnQgICAnQWNjZXNzLAogICAgICBTX1NoYXJlZF9Ob2ZpbGVzICdBY2Nlc3MsCiAgICAgIFNfU2hhcmVkX05vaW5oaWIgJ0FjY2VzcywKICAgICAgU19TaGFyZWRfVmVyYiAgICAnQWNjZXNzLAogICAgICBTX1NoYXJlZF9aWlpaWiAgICdBY2Nlc3MpOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTd2l0Y2hlcyBmb3IgR05BVCBTVFVCIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIFNfU3R1Yl9Db25maWcgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQ09ORklHVVJBVElPTl9QUkFHTUFTX0ZJTEU9PCIgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWduYXRlYz4iOwogICAtLSAgICAgICAgL0NPTkZJR1VSQVRJT05fUFJBR01BU19GSUxFPWZpbGVzcGVjCiAgIC0tCiAgIC0tICAgU3BlY2lmaWVzIGEgY29uZmlndXJhdGlvbiBwcmFnbWFzIGZpbGUgdGhhdCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAogICAtLSAgIHdoZW4gY29tcGlsaW5nLgoKICAgU19TdHViX0N1cnJlbnQgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9DVVJSRU5UX0RJUkVDVE9SWSAiICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIhLUktIjsKICAgLS0gICAgICAgIC9DVVJSRU5UX0RJUkVDVE9SWSAoRCkKICAgLS0gICAgICAgIC9OT0NVUlJFTlRfRElSRUNUT1JZCiAgIC0tCiAgIC0tICAgTG9vayBmb3Igc291cmNlLCBsaWJyYXJ5IG9yIG9iamVjdCBmaWxlcyBpbiB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX1N0dWJfRXh0ICAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0VYVEVSTkFMX1JFRkVSRU5DRT0iICYgJyInICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1YIiAmICciJzsKICAgLS0gICAgICAgIC9FWFRFUk5BTF9SRUZFUkVOQ0U9Im5hbWU9dmFsIgogICAtLQogICAtLSAgIFNwZWNpZmllcyBhbiBleHRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHByb2plY3QgbWFuYWdlci4gVXNlZnVsIG9ubHkgaWYKICAgLS0gICAvUFJPSkVDVF9GSUxFIGlzIHVzZWQuCiAgIC0tCiAgIC0tICAgRXhhbXBsZToKICAgLS0gICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJERUJVRz1UUlVFIgoKICAgU19TdHViX0Z1bGwgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9GVUxMICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZiI7CiAgIC0tICAgICAgICAvTk9GVUxMIChEKQogICAtLSAgICAgICAgL0ZVTEwKICAgLS0KICAgLS0gICBJZiB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGFscmVhZHkgY29udGFpbnMgYSBmaWxlIHdpdGggdGhlIG5hbWUgb2YKICAgLS0gICB0aGUgYm9keSBmaWxlIGZvciB0aGUgYXJndW1lbnQgZmlsZSBzcGVjLCByZXBsYWNlIGl0IHdpdGggdGhlIGdlbmVyYXRlZAogICAtLSAgIGJvZHkgc3R1Yi4gSWYgL0ZVTEwgaXMgbm90IHVzZWQgYW5kIHRoZXJlIGlzIGFscmVhZHkgYSBib2R5IGZpbGUsIHRoaXMKICAgLS0gICBleGlzdGluZyBib2R5IGZpbGUgaXMgbm90IHJlcGxhY2VkLgoKICAgU19TdHViX0hlYWRlciAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9IRUFERVI9IiAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHRU5FUkFMICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1oZyAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1BFQyAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItaHMiOwogICAtLSAgICAgICAgL0hFQURFUls9aGVhZGVyLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlIGZvcm0gb2YgdGhlIGNvbW1lbnQgaGVhZGVyIGFib3ZlIHRoZSBnZW5lcmF0ZWQgYm9keSBzdHViLgogICAtLSAgIElmIG5vIC9IRUFERVIgcXVhbGlmaWVyIGlzIHNwZWNpZmllZCwgdGhlcmUgaXMgbm8gY29tbWVudCBoZWFkZXIuCiAgIC0tICAgaGVhZGVyLW9wdGlvbiBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0KICAgLS0gICAgICBHRU5FUkFMIChEKSAgUHV0IGEgc2FtcGxlIGNvbW1lbnQgaGVhZGVyIGludG8gdGhlIGJvZHkgc3R1Yi4KICAgLS0KICAgLS0gICAgICBTUEVDICAgICAgICAgUHV0IHRoZSBjb21tZW50IGhlYWRlciAoaS5lLiwgYWxsIHRoZSBjb21tZW50cwogICAtLSAgICAgICAgICAgICAgICAgICBwcmVjZWRpbmcgdGhlIGNvbXBpbGF0aW9uIHVuaXQpIGZyb20gdGhlIHNvdXJjZSBvZiB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgbGlicmFyeSB1bml0IGRlY2xhcmF0aW9uIGludG8gdGhlIGJvZHkgc3R1Yi4KCiAgIFNfU3R1Yl9JbmRlbnQgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvSU5ERU5UQVRJT049IyIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWkjIjsKICAgLS0gICAgICAgIC9JTkRFTlRBVElPTj1ubm4KICAgLS0KICAgLS0gICAobm5uIGlzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIpLiBTZXQgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIHRoZQogICAtLSAgIGdlbmVyYXRlZCBib2R5IHN0dWIgdG8gbm5uLiBubm49MCBtZWFucyAibm8gaW5kZW50YXRpb24iLgogICAtLSAgIERlZmF1bHQgaW5zZGVudGF0aW9uIGlzIDMuCgogICBTX1N0dWJfS2VlcCAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL0tFRVAgIiAgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1rIjsKICAgLS0gICAgICAgIC9OT0tFRVAgKEQpCiAgIC0tICAgICAgICAvS0VFUAogICAtLQogICAtLSAgIERvIG5vdCBkZWxldGUgdGhlIHRyZWUgZmlsZSAoaS5lLiwgdGhlIHNuYXBzaG90IG9mIHRoZSBjb21waWxlcgogICAtLSAgIGludGVybmFsIHN0cnVjdHVyZXMgdXNlZCBieSBnbmF0c3R1YikgYWZ0ZXIgY3JlYXRpbmcgdGhlIGJvZHkgc3R1Yi4KCiAgIFNfU3R1Yl9MZW5ndGggIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTElORV9MRU5HVEg9IyIgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWwjIjsKICAgLS0gICAgICAgIC9MSU5FX0xFTkdUSD1ubm4KICAgLS0KICAgLS0gICAobiBpcyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyKS4gU2V0IHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoIGluIHRoZSBib2R5CiAgIC0tICAgc3R1YiB0byBubm4uIERlZmF1bHQgaXMgNzguCgogICBTX1N0dWJfTWVzcyAgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL01FU1NBR0VTX1BST0pFQ1RfRklMRT0iICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFRkFVTFQgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRURJVU0gIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDEgIiAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSElHSCAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAyIjsKICAgLS0gICAgICAgIC9NRVNTQUdFU19QUk9KRUNUX0ZJTEVbPW1lc3NhZ2VzLW9wdGlvbl0KICAgLS0KICAgLS0gICBTcGVjaWZpZXMgdGhlICJ2ZXJib3NpdHkiIG9mIHRoZSBwYXJzaW5nIG9mIHByb2plY3QgZmlsZXMuCiAgIC0tICAgbWVzc2FnZXMtb3B0aW9uIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgLS0KICAgLS0gICAgICBERUZBVUxUIChEKSAgTm8gbWVzc2FnZXMgYXJlIG91dHB1dCBpZiB0aGVyZSBpcyBubyBlcnJvciBvciB3YXJuaW5nLgogICAtLQogICAtLSAgICAgIE1FRElVTSAgICAgICBBIHNtYWxsIG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LgogICAtLQogICAtLSAgICAgIEhJR0ggICAgICAgICBBIGdyZWF0IG51bWJlciBvZiBtZXNzYWdlcyBhcmUgb3V0cHV0LCBtb3N0IG9mIHRoZW0gbm90CiAgIC0tICAgICAgICAgICAgICAgICAgIGJlaW5nIHVzZWZ1bCBmb3IgdGhlIHVzZXIuCgogICBTX1N0dWJfT3V0cHV0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL09VVFBVVD1AIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vQCI7CiAgIC0tICAgICAgICAvT1VUUFVUPWZpbGVzcGVjCiAgIC0tCiAgIC0tICAgQm9keSBmaWxlIG5hbWUuIFRoaXMgc2hvdWxkIGJlIHNldCBpZiB0aGUgYXJndW1lbnQgZmlsZSBuYW1lIGRvZXMgbm90CiAgIC0tICAgZm9sbG93IHRoZSBHTkFUIGZpbGUgbmFtaW5nIGNvbnZlbnRpb25zLiBJZiB0aGlzIHN3aXRjaCBpcyBvbWl0dGVkLAogICAtLSAgIHRoZSBkZWZhdWx0IG5hbWUgZm9yIHRoZSBib2R5IHdpbGwgYmUgb2J0YWluZWQgZnJvbSB0aGUgYXJndW1lbnQgZmlsZQogICAtLSAgIG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBHTkFUIGZpbGUgbmFtaW5nIGNvbnZlbnRpb25zLgoKICAgU19TdHViX1Byb2plY3QgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSBhbnkgb3RoZXIgcHJvY2Vzc2luZy4KICAgLS0gICBUaGUgc291cmNlIGFuZCBvYmplY3QgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgd2lsbCBiZSBjb21tdW5pY2F0ZWQKICAgLS0gICB0byBnbmF0c3R1YiB0aHJvdWdoIGxvZ2ljYWwgbmFtZXMgQURBX1BSSl9JTkNMVURFX0ZJTEUgYW5kCiAgIC0tICAgQURBX1BSSl9PQkpFQ1RTX0ZJTEUuCgogICBTX1N0dWJfUXVpZXQgICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1FVSUVUICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1xIjsKICAgLS0gICAgICAgIC9OT1FVSUVUIChEKQogICAtLSAgICAgICAgL1FVSUVUCiAgIC0tCiAgIC0tICAgUXVpZXQgbW9kZTogZG8gbm90IGdlbmVyYXRlIGEgY29uZmlybWF0aW9uIHdoZW4gYSBib2R5IGlzIHN1Y2Nlc3NmdWxseQogICAtLSAgIGNyZWF0ZWQsIGFuZCBkbyBub3QgZ2VuZXJhdGUgYSBtZXNzYWdlIHdoZW4gYSBib2R5IGlzIG5vdCByZXF1aXJlZCBmb3IKICAgLS0gICBhbiBhcmd1bWVudCB1bml0LgoKICAgU19TdHViX1NlYXJjaCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9TRUFSQ0g9KiIgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItSSoiOwogICAtLSAgICAgICAgL1NFQVJDSD0oZGlyZWN0b3J5WywuLi5dKQogICAtLQogICAtLSAgICBXaGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcyBhbHNvIGxvb2sgaW4gZGlyZWN0b3JpZXMgc3BlY2lmaWVkLgoKICAgU19TdHViX1RyZWUgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9UUkVFX0ZJTEU9IiAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPVkVSV1JJVEUgIiAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10ICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0FWRSAiICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItayAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJFVVNFICIgICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXIiOwogICAtLSAgICAgICAgL1RSRUVfRklMRVs9dHJlZWZpbGUtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZnkgd2hhdCB0byBkbyB3aXRoIHRoZSB0cmVlIGZpbGUuCiAgIC0tICAgdHJlZWZpbGUtb3B0aW9uIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIE9WRVJXUklURSAoRCkgIE92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdHJlZSBmaWxlLiBJZiB0aGUgY3VycmVudAogICAtLSAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbHJlYWR5IGNvbnRhaW5zIHRoZSBmaWxlIHdoaWNoLCBhY2NvcmRpbmcKICAgLS0gICAgICAgICAgICAgICAgICAgICB0byB0aGUgR05BVCBmaWxlIG5hbWluZyBydWxlcyBzaG91bGQgYmUgY29uc2lkZXJlZAogICAtLSAgICAgICAgICAgICAgICAgICAgIGFzIGEgdHJlZSBmaWxlIGZvciB0aGUgYXJndW1lbnQgc291cmNlIGZpbGUsCiAgIC0tICAgICAgICAgICAgICAgICAgICAgZ25hdHN0dWIgd2lsbCByZWZ1c2UgdG8gY3JlYXRlIHRoZSB0cmVlIGZpbGUgbmVlZGVkCiAgIC0tICAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIGEgc2FtcGxlIGJvZHkgdW5sZXNzIHRoaXMgb3B0aW9uIGlzIGNob3Nlbi4KICAgLS0KICAgLS0gICAgICBTQVZFICAgICAgICAgICBEbyBub3QgcmVtb3ZlIHRoZSB0cmVlIGZpbGUgKGkuZS4sIHRoZSBzbmFwc2hvdAogICAtLSAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBjb21waWxlciBpbnRlcm5hbCBzdHJ1Y3R1cmVzIHVzZWQgYnkgZ25hdHN0dWIpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgY3JlYXRpbmcgdGhlIGJvZHkgc3R1Yi4KICAgLS0KICAgLS0gICAgICBSRVVTRSAgICAgICAgICBSZXVzZSB0aGUgdHJlZSBmaWxlIChpZiBpdCBleGlzdHMpIGluc3RlYWQgb2YKICAgLS0gICAgICAgICAgICAgICAgICAgICBjcmVhdGluZyBpdC4KICAgLS0gICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHRoZSB0cmVlIGZpbGUgZm9yIHRoZSBsaWJyYXJ5CiAgIC0tICAgICAgICAgICAgICAgICAgICAgdW5pdCBkZWNsYXJhdGlvbiwgZ25hdHN0dWIgdHJpZXMgdG8gZmluZCBpdCBpbiB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGRpcmVjdG9yeSBhbmQgdXNlIGl0IGZvciBjcmVhdGluZyBhIGJvZHkuCiAgIC0tICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHRyZWUgZmlsZSBpcyBub3QgZm91bmQsIG5vIGJvZHkgaXMgY3JlYXRlZC4KICAgLS0gICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBhbHNvIGltcGxpZXMgYFNBVkUnLCB3aGV0aGVyIG9yIG5vdCB0aGUKICAgLS0gICAgICAgICAgICAgICAgICAgICBsYXR0ZXIgaXMgc2V0IGV4cGxpY2l0bHkuCgogICBTX1N0dWJfVmVyYm9zZSA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1ZFUkJPU0UgIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12IjsKICAgLS0gICAgICAgIC9OT1ZFUkJPU0UgKEQpCiAgIC0tICAgICAgICAvVkVSQk9TRQogICAtLQogICAtLSAgIFZlcmJvc2UgbW9kZTogZ2VuZXJhdGUgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCiAgIFN0dWJfU3dpdGNoZXMgOiBhbGlhc2VkIGNvbnN0YW50IFN3aXRjaGVzIDo9CiAgICAgKFNfU3R1Yl9Db25maWcgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9DdXJyZW50ICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9FeHQgICAgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9GdWxsICAgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9IZWFkZXIgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9JbmRlbnQgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9LZWVwICAgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9MZW5ndGggICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9NZXNzICAgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9PdXRwdXQgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9Qcm9qZWN0ICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9RdWlldCAgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9TZWFyY2ggICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9UcmVlICAgICdBY2Nlc3MsCiAgICAgIFNfU3R1Yl9WZXJib3NlICdBY2Nlc3MpOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTd2l0Y2hlcyBmb3IgR05BVCBYUkVGIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIFNfWHJlZl9BbGwgICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvQUxMX0ZJTEVTICIgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWEiOwogICAtLSAgICAgICAgL05PQUxMX0ZJTEVTIChEKQogICAtLSAgICAgICAgL0FMTF9GSUxFUwogICAtLQogICAtLSAgIElmIHRoaXMgc3dpdGNoIGlzIHByZXNlbnQsIEZJTkQgYW5kIFhSRUYgd2lsbCBwYXJzZSB0aGUgcmVhZC1vbmx5CiAgIC0tICAgZmlsZXMgZm91bmQgaW4gdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGguIE90aGVyd2lzZSwgdGhlc2UgZmlsZXMgd2lsbAogICAtLSAgIGJlIGlnbm9yZWQuIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHByb3RlY3QgR25hdCBzb3VyY2VzIG9yIHlvdXIKICAgLS0gICBvd24gbGlicmFyaWVzIGZyb20gYmVpbmcgcGFyc2VkLCB0aHVzIG1ha2luZyBGSU5EIGFuZCBYUkVGIG11Y2gKICAgLS0gICBmYXN0ZXIsIGFuZCB0aGVpciBvdXRwdXQgbXVjaCBzbWFsbGVyLgoKICAgU19YcmVmX0Rlcml2ICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9ERVJJVkVEX1RZUEVTICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZCI7CiAgIC0tICAgICAgICAvTk9ERVJJVkVEX1RZUEVTIChEKQogICAtLSAgICAgICAgL0RFUklWRURfVFlQRVMKICAgLS0KICAgLS0gICBPdXRwdXQgdGhlIHBhcmVudCB0eXBlIHJlZmVyZW5jZSBmb3IgZWFjaCBtYXRjaGluZyBkZXJpdmVkIHR5cGVzLgoKICAgU19YcmVmX0V4dCAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9FWFRFUk5BTF9SRUZFUkVOQ0U9IiAmICciJyAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItWCIgJiAnIic7CiAgIC0tICAgICAgICAvRVhURVJOQUxfUkVGRVJFTkNFPSJuYW1lPXZhbCIKICAgLS0KICAgLS0gICBTcGVjaWZpZXMgYW4gZXh0ZXJuYWwgcmVmZXJlbmNlIHRvIHRoZSBwcm9qZWN0IG1hbmFnZXIuIFVzZWZ1bCBvbmx5IGlmCiAgIC0tICAgL1BST0pFQ1RfRklMRSBpcyB1c2VkLgogICAtLQogICAtLSAgIEV4YW1wbGU6CiAgIC0tICAgICAgL0VYVEVSTkFMX1JFRkVSRU5DRT0iREVCVUc9VFJVRSIKCiAgIFNfWHJlZl9GdWxsICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvRlVMTF9QQVRITkFNRSAiICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWYiOwogICAtLSAgICAgICAgL05PRlVMTF9QQVRITkFNRSAoRCkKICAgLS0gICAgICAgIC9GVUxMX1BBVEhOQU1FCiAgIC0tCiAgIC0tICAgSWYgdGhpcyBzd2l0Y2ggaXMgc2V0LCB0aGUgb3V0cHV0IGZpbGUgbmFtZXMgd2lsbCBiZSBwcmVjZWRlZCBieSB0aGVpcgogICAtLSAgIGRpcmVjdG9yeSAoaWYgdGhlIGZpbGUgd2FzIGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aCkuIElmIHRoaXMgc3dpdGNoCiAgIC0tICAgaXMgbm90IHNldCwgdGhlIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBwcmludGVkLgoKICAgU19YcmVmX0dsb2JhbCAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9JR05PUkVfTE9DQUxTICIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZyI7CiAgIC0tICAgICAgICAvTk9JR05PUkVfTE9DQUxTIChEKQogICAtLSAgICAgICAgL0lHTk9SRV9MT0NBTFMKICAgLS0KICAgLS0gICBJZiB0aGlzIHN3aXRjaCBpcyBzZXQsIGluZm9ybWF0aW9uIGlzIG91dHB1dCBvbmx5IGZvciBsaWJyYXJ5LWxldmVsCiAgIC0tICAgZW50aXRpZXMsIGlnbm9yaW5nIGxvY2FsIGVudGl0aWVzLiBUaGUgdXNlIG9mIHRoaXMgc3dpdGNoIG1heQogICAtLSAgIGFjY2VsZXJhdGUgRklORCBhbmQgWFJFRi4KCiAgIFNfWHJlZl9NZXNzICAgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTUVTU0FHRVNfUFJPSkVDVF9GSUxFPSIgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVGQVVMVCAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdlAwICIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FRElVTSAiICAgICAgICAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZQMSAiICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJISUdIICIgICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12UDIiOwogICAtLSAgICAgICAgL01FU1NBR0VTX1BST0pFQ1RfRklMRVs9bWVzc2FnZXMtb3B0aW9uXQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgInZlcmJvc2l0eSIgb2YgdGhlIHBhcnNpbmcgb2YgcHJvamVjdCBmaWxlcy4KICAgLS0gICBtZXNzYWdlcy1vcHRpb24gbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICAtLQogICAtLSAgICAgIERFRkFVTFQgKEQpICBObyBtZXNzYWdlcyBhcmUgb3V0cHV0IGlmIHRoZXJlIGlzIG5vIGVycm9yIG9yIHdhcm5pbmcuCiAgIC0tCiAgIC0tICAgICAgTUVESVVNICAgICAgIEEgc21hbGwgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQuCiAgIC0tCiAgIC0tICAgICAgSElHSCAgICAgICAgIEEgZ3JlYXQgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZSBvdXRwdXQsIG1vc3Qgb2YgdGhlbSBub3QKICAgLS0gICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZnVsIGZvciB0aGUgdXNlci4KCiAgIFNfWHJlZl9Ob3N0aW5jIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvTk9TVERfSU5DTFVERVMgIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vc3RkaW5jIjsKICAgLS0gICAgICAgIC9OT1NURF9JTkNMVURFUwogICAtLQogICAtLSAgIERvIG5vdCBsb29rIGZvciBzb3VyY2VzIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBkaXJlY3RvcnkuCgogICBTX1hyZWZfTm9zdGxpYiA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL05PU1REX0xJQlJBUklFUyAiICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ub3N0ZGxpYiI7CiAgIC0tICAgICAgICAvTk9TVERfTElCUkFSSUVTCiAgIC0tCiAgIC0tICAgRG8gbm90IGxvb2sgZm9yIGxpYnJhcnkgZmlsZXMgaW4gdGhlIHN5c3RlbSBkZWZhdWx0IGRpcmVjdG9yeS4KCiAgIFNfWHJlZl9PYmplY3QgIDogYWxpYXNlZCBjb25zdGFudCBTIDo9ICIvT0JKRUNUX1NFQVJDSD0qIiAgICAgICAgICAgICAgICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFPKiI7CiAgIC0tICAgICAgICAvT0JKRUNUX1NFQVJDSD0oZGlyZWN0b3J5LC4uLikKICAgLS0KICAgLS0gICBXaGVuIHNlYXJjaGluZyBmb3IgbGlicmFyeSBhbmQgb2JqZWN0IGZpbGVzLCBsb29rIGluIHRoZSBzcGVjaWZpZWQKICAgLS0gICBkaXJlY3Rvcmllcy4gVGhlIG9yZGVyIGluIHdoaWNoIGxpYnJhcnkgZmlsZXMgYXJlIHNlYXJjaGVkIGlzIHRoZSBzYW1lCiAgIC0tICAgYXMgZm9yIE1BS0UuCgogICBTX1hyZWZfUHJvamVjdCA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1BST0pFQ1Q9QCIgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1wQCI7CiAgIC0tICAgICAgICAvUFJPSkVDVD1maWxlCiAgIC0tCiAgIC0tICAgU3BlY2lmeSBhIHByb2plY3QgZmlsZSB0byB1c2UuIEJ5IGRlZmF1bHQsIEZJTkQgYW5kIFhSRUYgd2lsbCB0cnkgdG8KICAgLS0gICBsb2NhdGUgYSBwcm9qZWN0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogICAtLQogICAtLSAgIElmIGEgcHJvamVjdCBmaWxlIGlzIGVpdGhlciBzcGVjaWZpZWQgb3IgZm91bmQgYnkgdGhlIHRvb2xzLCB0aGVuIHRoZQogICAtLSAgIGNvbnRlbnQgb2YgdGhlIHNvdXJjZSBkaXJlY3RvcnkgYW5kIG9iamVjdCBkaXJlY3RvcnkgbGluZXMgYXJlIGFkZGVkCiAgIC0tICAgYXMgaWYgdGhleSBoYWQgYmVlbiBzcGVjaWZpZWQgcmVzcGVjdGl2ZWx5IGJ5IC9TT1VSQ0VfU0VBUkNIIGFuZAogICAtLSAgIC9PQkpFQ1RfU0VBUkNILgoKICAgU19YcmVmX1ByaiAgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9QUk9KRUNUX0ZJTEU9PCIgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItUD4iOwogICAtLSAgICAgICAgL1BST0pFQ1RfRklMRT1maWxlbmFtZQogICAtLQogICAtLSAgIFNwZWNpZmllcyB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgdG8gYmUgdXNlZC4gVGhlIHByb2plY3QgZmlsZXMgcm9vdGVkCiAgIC0tICAgYXQgdGhlIG1haW4gcHJvamVjdCBmaWxlIHdpbGwgYmUgcGFyc2VkIGJlZm9yZSBkb2luZyBhbnkgcHJvY2Vzc2luZy4KICAgLS0gICBUaGUgc291cmNlIGFuZCBvYmplY3QgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgd2lsbCBiZSBjb21tdW5pY2F0ZWQKICAgLS0gICB0byBnbmF0eHJlZiB0aHJvdWdoIGxvZ2ljYWwgbmFtZXMgQURBX1BSSl9JTkNMVURFX0ZJTEUgYW5kCiAgIC0tICAgQURBX1BSSl9PQkpFQ1RTX0ZJTEUuCgogICBTX1hyZWZfU2VhcmNoICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NFQVJDSD0qIiAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JKiI7CiAgIC0tICAgICAgICAvU0VBUkNIPShkaXJlY3RvcnksLi4uKQogICAtLQogICAtLSAgIEVxdWl2YWxlbnQgdG86CiAgIC0tICAgICAgICAgICAvT0JKRUNUX1NFQVJDSD0oZGlyZWN0b3J5LC4uLikgL1NPVVJDRV9TRUFSQ0g9KGRpcmVjdG9yeSwuLi4pCgogICBTX1hyZWZfU291cmNlICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1NPVVJDRV9TRUFSQ0g9KiIgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1hSSoiOwogICAtLSAgICAgICAgL1NPVVJDRV9TRUFSQ0g9KGRpcmVjdG9yeSwuLi4pCiAgIC0tCiAgIC0tICAgV2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMgYWxzbyBsb29rIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3JpZXMuCiAgIC0tICAgVGhlIG9yZGVyIGluIHdoaWNoIHNvdXJjZSBmaWxlIHNlYXJjaCBpcyB1bmRlcnRha2VuIGlzIHRoZSBzYW1lIGFzIGZvcgogICAtLSAgIE1BS0UuCgogICBTX1hyZWZfT3V0cHV0ICA6IGFsaWFzZWQgY29uc3RhbnQgUyA6PSAiL1VOVVNFRCAiICAgICAgICAgICAgICAgICAgICAgICAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi11IjsKICAgLS0gICAgICAgIC9TT1VSQ0VfU0VBUkNIPShkaXJlY3RvcnksLi4uKQogICAtLQogICAtLSAgIFdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzIGFsc28gbG9vayBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzLgogICAtLSAgIFRoZSBvcmRlciBpbiB3aGljaCBzb3VyY2UgZmlsZSBzZWFyY2ggaXMgdW5kZXJ0YWtlbiBpcyB0aGUgc2FtZSBhcyBmb3IKICAgLS0gICBNQUtFLgoKICAgU19YcmVmX1RhZ3MgICAgOiBhbGlhc2VkIGNvbnN0YW50IFMgOj0gIi9UQUdTICIgICAgICAgICAgICAgICAgICAgICAgICAgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItdiI7CiAgIC0tICAgICAgICAvTk9UQUdTIChEKQogICAtLSAgICAgICAgL1RBR1MKICAgLS0KICAgLS0gICBQcmludCBhICd0YWdzJyBmaWxlIGZvciB2aS4KCiAgIFhyZWZfU3dpdGNoZXMgOiBhbGlhc2VkIGNvbnN0YW50IFN3aXRjaGVzIDo9CiAgICAgKFNfWHJlZl9BbGwgICAgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9EZXJpdiAgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9FeHQgICAgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9GdWxsICAgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9HbG9iYWwgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9NZXNzICAgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9Ob3N0aW5jICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9Ob3N0bGliICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9PYmplY3QgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9Qcm9qZWN0ICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9QcmogICAgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9TZWFyY2ggICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9Tb3VyY2UgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9PdXRwdXQgICdBY2Nlc3MsCiAgICAgIFNfWHJlZl9UYWdzICAgICdBY2Nlc3MpOwoKZW5kIFZNU19EYXRhOwo=