S05PV04gSVNTVUVTCi0tLS0tLS0tLS0tLQoKLSBVbml0IHRlc3RzIGZvciB0aGUgYmVhbnMgcGFja2FnZSBtYXkgZmFpbCBpbiB0aGUgSGFybW9ueSBzZWxmLWhvc3RpbmcgCiAgZW52aXJvbm1lbnQgZHVlIHRvIHRoZSBpbmNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgb2Ygc3R1YiBjbGFzc2VzIGluIGF3dAogIGFuZCBhcHBsZXQgcGFja2FnZXMuIFRoZSBmYWlsaW5nIHRlc3RzIGFyZToKICAgICAgamF2YS5iZWFucy5FdmVudEhhbmRsZXJUZXN0CiAgICAgIGphdmEuYmVhbnMuU2ltcGxlQmVhbkluZm9UZXN0ICAgCgotIFRoZSBmaW5kKCkgYW5kIGZpbmRCYWNrKCkgbWV0aG9kcyBpbiByZWdleCBub2RlcyBtYXkgd29yayBpbmNvcnJlY3RseSB3aXRoIGJhY2sgcmVmZXJlbmNlcy4gClRoZSBpc3N1ZSBtYXkgc2hvdyB1cCBmb3Igc3VjaCBwYXR0ZXJucyBhcyBiZWxvdzogCiAgICAuKiguKVxcMQogICAgKC4pXFwxCgotIFRoZSBOb2RlLm1hdGNoKCkgbWV0aG9kIGlzIG5vdCBjb21wbGV0ZWx5IG9wdGltaXplZCBpbiByZWdleC4gSXQgbWF5IGNhbGwgdGhlIENoYXJTZXF1ZW5jZS50b1N0cmluZygpIG1ldGhvZCAKZXZlbiBpZiBDaGFyYWN0ZXJTZXF1ZW5jZSBpcyBub3QgYSBzdHJpbmcsIHdoaWNoIGxlYWRzIHRvIGEgU3RyaW5nIGNyZWF0aW9uIGR1cmluZyBlYWNoIGNhbGwgdG8gCnRoaXMgbm9kZZJzIG1hdGNoKCkgbWV0aG9kLgoKLSBNZXRob2RzIGltcGxlbWVudGluZyBiaXR3aXNlIG9wZXJhdGlvbnMgKGFuZCwgb3IsIGFuZCB4b3IpIGluIHRoZSBCaWdJbnRlZ2VyIGNsYXNzIG1pZ2h0IHNlZW0gY29tcGxpY2F0ZWQgCmFsdGhvdWdoIHRoZXkgd29yayByYXRoZXIgZWZmaWNpZW50bHkuIFRoZXNlIG1ldGhvZHMgbWlnaHQgYmUgcmV3cml0dGVuIGluIGEgbW9yZSBjb21wcmVoZW5zaXZlIGZvcm0uICAKCgpUT0RPCi0tLS0KCi0gSW1wbGVtZW50IGNhbm9uaWNhbCBlcXVpdmFsZW5jZSBzdXBwb3J0IGluIHJlZ2V4LgoKLSBTaW1wbGlmeSBtdWx0aXN0ZXAgb3BlcmF0aW9ucyBpbiB0aGUgQmlnSW50ZWdlciBjbGFzcywgd2hpY2ggY3JlYXRlIAptdWx0aXBsZSBCaWdJbnRlZ2VyIG9iamVjdHMgb24gZWFjaCBzdGVwLiBUaGUgbWV0aG9kcyBnY2QgKCksIGlzUHJvYmFibGVQcmltZSgpLCAKbW9kSW52ZXJzZSgpLCBhbmQgbW9kUG93KCljYW4gYmUgc3BlZWRlZCB1cCB3aXRoIGltcGxlbWVudGluZyBzYWZlIGluLXBsYWNlIGNvbXB1dGF0aW9ucy4gCgotIEVuaGFuY2UgdGhlIG11bHRpc3RlcCBCaWdJbnRlZ2VyLnBvdygpIG1ldGhvZC4gVG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgY3JlYXRlZCAKb2JqZWN0cywgdGhlIG1ldGhvZCBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgdXNpbmcgdGhlIHNxdWFyZS1hbmQtbXVsdGlwbHkgYWxnb3JpdGhtLiAKSG93ZXZlciwgdGhlIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uIHdvcmtzIGxvbmdlciBkdWUgdG8gbG9uZ2VyIG11bHRpcGxpY2F0aW9uIG9mIGxhcmdlIG51bWJlcnMuClRoZSBlbmhhbmNlbWVudCBtYXkgY29uc2lzdCBvZiBpbXBsZW1lbnRpbmcgc2FmZSBpbi1wbGFjZSBtdWx0aXBsaWNhdGlvbiAKYW5kIHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gYWxnb3JpdGhtcy4KCi0gSW1wbGVtZW50IHNwZWNpYWwgY2FzZXMgZm9yIG1vcmUgZWZmaWNpZW50IGV4cG9uZW50aWF0aW9uIG9mIEJpZ0ludGVnZXIuVEVOIGFuZCAKbXVsdGlwbGljYXRpb24gYnkgdXNpbmcgQmlnSW50ZWdlci5URU4uIFRoZXNlIG1lY2hhbmlzbXMgYXJlIHdpZGVseSB1c2VkIGluIHRoZSBCaWdEZWNpbWFsIGltcGxlbWVudGF0aW9uLgoKLSBPcHRpbWl6ZSB0aGUgQmlnSW50ZWdlci50b1N0cmluZygpIG1ldGhvZC4K