amF2YWxvYmJ5Lm9yZwp0ZXN0ZHJpdmVuLmNvbQpvcGVuc291cmNldGVzdGluZy5vcmcKaHR0cDovL3NhbG9vbi5qYXZhcmFuY2guY29tL2NnaS1iaW4vdWJiL3VsdGltYXRlYmIuY2dpP3ViYj1mb3J1bSZmPTY4CmphdmEubmV0CmNvbXAubGFuZy5qYXZhLnByb2dyYW1tZXIKCj09PT09PT09PT0KClRoZSBUZXN0TkcgdGVhbSBpcyBoYXBweSB0byBhbm5vdW5jZSB0aGUgaW1tZWRpYXRlIGF2YWlsYWJpbGl0eSBvZiBUZXN0TkcgNC41LiAKClRoaXMgcmVsZWFzZSBjb250YWlucyBhIGxvdCBvZiBidWcgZml4ZXMgYW5kIGEgZmV3IG5ldyBmZWF0dXJlcy4gIEl0IGFsc28gCmluY2x1ZGVzIHRoZSBmaXJzdCBwaGFzZSBvZiBEaXN0cmlidXRlZCBUZXN0TkcsIGEgd29yayBpbiBwcm9ncmVzcyBkZXNpZ25lZCAKdG8gdHJhbnNwYXJlbnRseSBkaXN0cmlidXRlIHRlc3RzIG9uIG1hbnkgbWFjaGluZXMgYW5kIGNvbGxlY3QgdGhlaXIgcmVzdWx0cy4KCkFubm91bmNlbWVudDoKCmh0dHA6Ly9iZXVzdC5jb20vd2VibG9nL2FyY2hpdmVzLzAwMDM2MS5odG1sCgpEZXRhaWxzIG9uIERpc3RyaWJ1dGVkIFRlc3RORzogIAoKaHR0cDovL2JldXN0LmNvbS93ZWJsb2cvYXJjaGl2ZXMvMDAwMzYyLmh0bWwKCgo9PT09PT09PT09CgpUaGUgVGVzdE5HIHRlYW0gaXMgaGFwcHkgdG8gYW5ub3VuY2UgdGhlIGltbWVkaWF0ZSBhdmFpbGFiaWxpdHkgb2YgVGVzdE5HIDQuMCwgd2l0aCBhIGxvdCBvZiBpbXByb3ZlbWVudHMgYW5kIG5ldyBmZWF0dXJlcy4KClRoZSBhbm5vdW5jZW1lbnQsIGFsb25nIHdpdGggYSBmZXcgZXhhbXBsZXMgYW5kIHN1bW1hcnkgb2YgdGhlIG5ldyBmZWF0dXJlcywgY2FuIGJlIGZvdW5kIGhlcmU6CgogICAgaHR0cDovL3Rpbnl1cmwuY29tL2R4bGJoCgotLSAKQ+lkcmljCmh0dHA6Ly90ZXN0bmcub3JnCgo9PT09PT09PT09PT09PT09CgpBbm5vdW5jaW5nIFRlc3RORyAyLjMKClRoZSBUZXN0TkcgdGVhbSBpcyBoYXBweSB0byBhbm5vdW5jZSB0aGUgYXZhaWxhYmlsaXR5IG9mIFRlc3RORyAyLjMuCgpUaGUgdmVyc2lvbiBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2JldXN0LmNvbS90ZXN0bmcgYXMgd2VsbCBhcyB0aGUgbmV3IGRvY3VtZW50YXRpb24sIHdoaWNoIGhhcyBiZWVuIGNvbnNpZGVyYWJseSBpbXByb3ZlZCAoaGlnaGxpZ2h0ZWQgY29kZSBzbmlwcGV0cywgZGV0YWlsZWQgRFRELCBhbnQgdGFzayBhbmQgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBuZXcgZmVhdHVyZXMpLgoKV2hhdCdzIG5ldzoKCiAgICAqIGJlZm9yZVN1aXRlLCBhZnRlclN1aXRlLCBiZWZvcmVUZXN0LCBhZnRlclRlc3QKICAgICogUmV2YW1wZWQgYW50IHRhc2sgd2l0aCBoYWx0b25mYWlsdXJlIGFuZCBvdGhlciBoZWxwZnVsIGZsYWdzCiAgICAqIEJldHRlciBzdGFjayB0cmFjZXMgYW5kIGltcHJvdmVkIGxldmVsIGNvbnRyb2wgZm9yIHZlcmJvc2l0eQogICAgKiBCZXR0ZXIgc3ludGF4IGZvciBpbmNsdWRpbmcgYW5kIGV4Y2x1ZGluZyBtZXRob2RzIGluIHRlc3RuZy54bWwKICAgICogVGVzdCBjbGFzc2VzIGNhbiBiZSBpbnZva2VkIG9uIHRoZSBjb21tYW5kIGxpbmUKICAgICogLi4uIGFuZCBtYW55IGJ1ZyBmaXhlcy4KCkZvciBFY2xpcHNlIHVzZXJzLCBhIG5ldyB2ZXJzaW9uICgxLjEuMSkgb2YgdGhlIEVjbGlwc2UgcGx1Zy1pbiB0aGF0IGluY2x1ZGVzIHRoaXMgbmV3IFRlc3RORyB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBvbiB0aGUgcmVtb3RlIHVwZGF0ZSBzaXRlIG9yIGZvciBkaXJlY3QgZG93bmxvYWQuCgpBbHNvLCBUZXN0TkcgaGFzIGpvaW5lZCBPcGVuU3ltcGhvbnkgKGJpZyB0aGFua3MgdG8gUGF0cmljayBhbmQgSGFuaSBmb3Igc2V0dGluZyB0aGlzIHVwKS4gIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcyBtb3ZlLCB0aGVyZSBpcyBub3cgYSBUZXN0TkcgdXNlcnMgZm9ydW0gYXMgd2VsbCBhcyBhIFdpa2kgYW5kIEpJUkEgZm9yIGlzc3VlIHRyYWNraW5nLgoKVGhlIHVzZXJzIG1haWxpbmctbGlzdCBoYXMgYmVlbiBtb3ZlZCB0byBHb29nbGUgR3JvdXBzIGFuZCBpcyBjb25uZWN0ZWQgdG8gdGhlIGZvcnVtLCBzbyB5b3Ugb25seSBuZWVkIHRvIHN1YnNjcmliZSB0byBvbmUuCgpUcnkgaXQgYW5kIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rIQoKPT09CgpJIGFtIGhhcHB5IHRvIGFubm91bmNlIHRoZSBhdmFpbGFiaWxpdHkgb2YgVGVzdE5HIDIuMSAoaHR0cDovL2JldXN0LmNvbS90ZXN0bmcpLiAgCgpUZXN0TkcgaXMgYSB0ZXN0aW5nIGZyYW1ld29yayBpbnNwaXJlZCBmcm9tIEpVbml0IGFuZCBOVW5pdCBidXQgaW50cm9kdWNpbmcgc29tZSBuZXcgZnVuY3Rpb25hbGl0aWVzIHRoYXQgbWFrZSBpdCBtb3JlIHBvd2VyZnVsIGFuZCBlYXNpZXIgdG8gdXNlLCBzdWNoIGFzOgoKICAgICogSlNSIDE3NSBBbm5vdGF0aW9ucyAoSkRLIDEuNCBpcyBhbHNvIHN1cHBvcnRlZCB3aXRoIEphdmFEb2MgYW5ub3RhdGlvbnMpLgogICAgKiBGbGV4aWJsZSB0ZXN0IGNvbmZpZ3VyYXRpb24uCiAgICAqIERlZmF1bHQgSkRLIGZ1bmN0aW9ucyBmb3IgcnVudGltZSBhbmQgbG9nZ2luZyAobm8gZGVwZW5kZW5jaWVzKS4KICAgICogUG93ZXJmdWwgZXhlY3V0aW9uIG1vZGVsIChubyBtb3JlIFRlc3RTdWl0ZSkuCiAgICAqIFN1cHBvcnRzIGRlcGVuZGVudCBtZXRob2RzLgoKU29tZSBvZiB0aGUgbmV3IGZlYXR1cmVzIGluIHRoaXMgdmVyc2lvbiBpbmNsdWRlOgoKICAgICogaW52b2NhdGlvbkNvdW50IGFuZCBzdWNjZXNzUGVyY2VudGFnZSwgd2hpY2ggSSBkZXNjcmliZWQgaW4gYSBwcmV2aW91cyBlbnRyeSAoaHR0cDovL2JldXN0LmNvbS93ZWJsb2cvYXJjaGl2ZXMvMDAwMjM2Lmh0bWwpLCBhbmQgd2hpY2ggYWxsb3cgeW91IHRvIGludm9rZSBhIHRlc3QgbWV0aG9kIGEgY2VydGFpbiBudW1iZXIgb2YgdGltZXMgd2hpbGUgYWxsb3dpbmcgc29tZSBvZiB0aGVzZSBpbnZvY2F0aW9ucyB0byBmYWlsLiAgSWYgdGhlIG51bWJlciBvZiBmYWlsdXJlcyBpcyB1bmRlciBhIGNlcnRhaW4gdGhyZXNob2xkLCB0aGUgdGVzdCBpcyBzdGlsbCBjb25zaWRlcmVkIGEgc3VjY2Vzcy4KICAgICAgIAogICAgKiB0aW1lT3V0IGlzIG5vdyBhcHBsaWNhYmxlIHRvIGFsbCB0ZXN0IG1ldGhvZHMuICBXaGV0aGVyIHlvdSBhcmUgcnVubmluZyB5b3VyIHRlc3RzIGluIHBhcmFsbGVsIG9yIG5vdCwgeW91IGNhbiBzcGVjaWZ5IGEgdGltZS1vdXQgZm9yIHlvdXIgdGVzdCBtZXRob2QgYW5kIGlmIGl0IGZhaWxzIHRvIGNvbXBsZXRlIHdpdGhpbiB0aGUgZ2l2ZW4gYW1vdW50IG9mIHRpbWUsIFRlc3RORyB3aWxsIG1hcmsgaXQgYXMgYSBmYWlsdXJlLgogICAgICAgCiAgICAqIGRlcGVuZHNPbk1ldGhvZHMgd2FzIHRoZSBtb3N0IHJlcXVlc3RlZCBmZWF0dXJlLiAgWW91IGNhbiBub3cgc3BlY2lmeSBkZXBlbmRlbmNpZXMgb24gYSBtZXRob2QtYmFzZWQgYmFzaXMgKG5vIG5lZWQgdG8gc3BlY2lmeSBhIGdyb3VwIGlmIHlvdXIgZGVwZW5kZW5jeSBncmFwaCBpcyBzaW1wbGUpLiAgWW91IGNhbiBldmVuIG1peCBkZXBlbmRzT25NZXRob2RzIGFuZCBkZXBlbmRzT25Hcm91cHMuCiAgICAgICAKICAgICogLi4uIGFuZCBvZiBjb3Vyc2UsIG51bWVyb3VzIGJ1ZyBmaXhlcyBhbmQgb3RoZXIgYWRkaXRpb25zLgoKQSBzcGVjaWFsIHRoYW5rcyB0byBBbGV4YW5kcnUgUG9wZXNjdSB3aG8gaGFzIHB1bGxlZCBhbGwtbmlnaHRlcnMgdG8gbWFrZSB0aGlzIHJlbGVhc2UgaGFwcGVuIQoKV2UgaGF2ZSBhbiBleGNpdGluZyBsaXN0IG9mIG5ldyBmZWF0dXJlcyBsaW5lZCB1cCBmb3Igb3VyIG5leHQgdmVyc2lvbiwgYW1vbmcgd2hpY2ggYSBwbHVnLWluIEFQSSwgYnV0IGluIHRoZSBtZWFudGltZSwgZW5qb3kgVGVzdE5HIDIuMS4KCj09PT09PQoKQW5ub3VuY2luZyBUZXN0TkcgZm9yIEVjbGlwc2UKClRoZSBUZXN0TkcgdGVhbSBpcyBoYXBweSB0byBhbm5vdW5jZSB0aGUgZmlyc3QgcmVsZWFzZSBvZiB0aGUgVGVzdE5HIHBsdWctaW4gZm9yIEVjbGlwc2UuCgpodHRwOi8vYmV1c3QuY29tL3Rlc3RuZwoKVGhpcyBmaXJzdCByZWxlYXNlIGNvdmVycyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9mIFRlc3RORywgYW1vbmcgd2hpY2g6CgogICAgKiBNdWx0aXBsZSB3YXlzIHRvIGxhdW5jaCB0ZXN0cyAoZnJvbSBhIG1ldGhvZCwgZnJvbSBhIGNsYXNzLCBncm91cHMgb3IgYW4gZW50aXJlIHN1aXRlKS4KICAgICogQ29udmVuaWVudCByZXBvcnQgdmlldyB0aGF0IGxldHMgeW91IGRpcmVjdGx5IGp1bXAgdG8gZmFpbGVkIHRlc3RzLgoKQSBtb3JlIGRldGFpbGVkIG92ZXJ2aWV3IGNhbiBiZSBmb3VuZCBoZXJlOgoKaHR0cDovL2JldXN0LmNvbS93ZWJsb2cvYXJjaGl2ZXMvMDAwMjYxLmh0bWwKCmFuZCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgc25hcHNob3RzIGhlcmU6CgpodHRwOi8vYmV1c3QuY29tL3Rlc3RuZy9tYWluLmh0bWwjZWNsaXBzZQoKLS0gCkNlZHJpYwo=