MS4gQ2hyaXMgbWFrZXMgYSBncmVhdCBwb2ludDogaWYgeW91IHVzZSBlbmNyeXB0ZWQgY29ubmVj dGlvbiBmb3IgZ21haWwsIHlvdSB3b24ndCBjb21wcm9taXNlIHlvdXIgZ21haWwgcGFzc3dvcmQu CgoyLiBJZiB5b3UgdXNlIFdQQTIgb24geW91ciBob21lIG5ldHdvcmsgKGFzIGFueSBzYW5lIHBl cnNvbiBzaG91bGQsIG5vd2FkYXlzKSwgYSByb2d1ZSBBUCBjYW4ndCBzdWNjZXNzZnVsbHkgc3Bv b2YgaXQuCgozLiBJTU8sIGlmIHlvdSB1c2UgV0VQLCB5b3UgZGVzZXJ2ZSB0byBiZSBoYWNrZWQu CgpTZW50IGZyb20gbXkgcGhvbmUKCk9uIE1heSA1LCAyMDE0LCBhdCA2OjM3LCBSdXNzZWxsTWMg PGFwcHRlY2huekBnbWFpbC5jb20+IHdyb3RlOgoKPiBPbiA1IE1heSAyMDE0IDE3OjI4LCBDaHJp c3RvcGhlciBIZWFkIDxjaGVhZEBjaGVhZC5jYT4gd3JvdGU6Cj4gCj4+IE9uIFNhdCwgMyBNYXkg MjAxNCAyMToxNzowNiAtMDcwMAo+PiBUYW1hcyBSdWRuYWkgPHRhbWFzLnJ1ZG5haUBnbWFpbC5j b20+IHdyb3RlOgo+PiAKPj4+IE9uIDMgTWF5IDIwMTQgMTc6NDYsIENocmlzdG9waGVyIEhlYWQg PGNoZWFkQGNoZWFkLmNhPiB3cm90ZToKPj4+IAo+Pj4+IEluIHRoZW9yeSwgdGhpcyBzaG91bGQg YmUgYSBub24tZXZlbnQuIFlvdSBkb24ndCB3YW50IHRvIGdpdmUgdGhlCj4+Pj4gZmFrZSBhY2Nl c3MgcG9pbnQgeW91ciBnbWFpbCBwYXNzd29yZCwgYnV0IGhvbmVzdGx5LCB5b3Ugc2hvdWxkbid0 Cj4+Pj4gd2FudCB0byBnaXZlIHRoZSBIb25nIEtvbmcgYWlycG9ydCBhdXRob3JpdHkgb3IgdGhl IG5laWdoYm91cmhvb2QKPj4+PiBjb2ZmZWUgc2hvcCB5b3VyIGdtYWlsIHBhc3N3b3JkIGVpdGhl ci4KPj4+IAo+Pj4gSSB0aGluayB5b3UgbWlzdW5kZXJzdG9vZCB0aGF0IGJsb2cuIFlvdSBkbyBu b3QgZ2l2ZSB5b3VyIHBhc3N3b3JkCj4+PiBpbnRlbnRpb25hbGx5IHRvIGFueW9uZS4gV2hhdCBp cyBoYXBwZW5pbmcgdGhvdWdoIGlzIHRoYXQgeW91IHRoaW5rCj4+PiB5b3UgYXJlIHVzaW5nIGEg c2VjdXJlIGNvbm5lY3Rpb24gKHRocm91Z2ggM0cvNEcvTFRFIGZvciBleGFtcGxlKSwKPj4+IGJ1 dCBpbnN0ZWFkLCB5b3VyIHNtYXJ0cGhvbmUgaXMgYXV0b21hdGljYWxseSBjb25uZWN0cyB0byBh IFJvZ3VlCj4+PiBBY2Nlc3NQb2ludCB3aGljaCBpcyBmdWxseSBjb250cm9sbGVkIGFuZCBtb25p dG9yZWQgYnkgYW4gYXR0YWNrZXIuCj4+IAo+PiBJIHRoaW5rIHdlIG1heSBiZSBkZWJhdGluZyBh dCBraW5kIG9mIGNyb3NzIHB1cnBvc2VzLS1JIGRvbid0IHRoaW5rIEkKPj4gbWlzdW5kZXJzdG9v ZCB0aGUgYXR0YWNrLCByYXRoZXIgSSBkaXNhZ3JlZSB0aGF0IGl0J3MgYWxsIHRoYXQKPj4gaW50 ZXJlc3RpbmcuCj4+IAo+PiBNeSBwb2ludCBpczogd2h5IGRvIHlvdSB0cnVzdCBKb2UncyBDYWbD qSdzIHN0YWZmIG1vcmUgdGhhbiB0aGF0IGd1eQo+PiB3aXRoIGEgYmxhY2sgaGF0IHNpdHRpbmcg aW4gdGhlIGNvcm5lciB3aXRoIGEgbGFwdG9wPyBFaXRoZXIgaXQncwo+PiBwb3NzaWJsZSBmb3Ig dGhlIG9wZXJhdG9yIG9mIHdoYXRldmVyIFdpZmkgbmV0d29yayB5b3UncmUgY29ubmVjdGVkIHRv Cj4+IHRvIG9idGFpbiAoc29tZWhvdykgeW91ciBHTWFpbCBwYXNzd29yZCwgb3IgaXQgaXNuJ3Qu IElmIGl0IGlzCj4+IHBvc3NpYmxlLCB0aGVuIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgeW91 IGNvbm5lY3QgdG8gSm9lJ3MgQ2Fmw6kgb3IKPj4gTXIuIEJsYWNrIEhhdCwgd2hpY2hldmVyIHlv dSBjb25uZWN0IHRvIGNvdWxkIGJlIHN0ZWFsaW5nIHlvdXIKPj4gcGFzc3dvcmQuIElmIGl0IGlz bid0IHBvc3NpYmxlLCB0aGVuIGl0IGFsc28gZG9lc24ndCBtYXR0ZXIgd2hpY2ggb25lCj4+IHlv dSBjb25uZWN0IHRvLCBiZWNhdXNlIG5laXRoZXIgb25lIGNhbiBkbyBhbnkgaGFybS4KPiAKPiAK PiBUaGF0J3Mgb25seSBvbmUgb2YgdGhlIGF0dGFja3MgdGhhdCB0aGUgUm9ndWUgQWNjZXNzIFBv aW50IGNhbiBtb3VudC4KPiBJRiB5b3UgcmFkaWF0ZSBTU0wgcmVxdWVzdHMgZm9yIGFjY2VzcyBw b2ludHMgdGhhdCB5b3UgY2FuIGF1dG9tYXRpY2FsbHkKPiBjb25uZWN0IHRvIHRoZW4gdGhlIFJv Z3VlIGFjY2VzcyBwb2ludCBjYW4gcmVzcG9uZCBhbmQgeW91IGNvbm5lY3QKPiBhdXRvbWF0aWNh bGx5LiBIZXJlIHlvdSBhcmUgbm90IHRydXN0aW5nIGEgY29mZmVlIHNob3AgYnV0IGFyZSBlZyB0 cnVzdGluZwo+IHdoYXQgYXBwZWFycyB0byBiZSB5b3VyIGhvbWUgbmV0d29yay4gIEEgYm9udXMg Zm9yIHRoZSBSQVAgaXMgdGhhdCB5b3Ugc2VuZAo+IGl0IHRoZSBXRVAga2V5IG9yIHdoYXRldmVy IHdoZW4geW91IGxvZyBpbiBhbmQgaXQgaGFwcGlseSByZWNvcmRzIGl0LiBJZgo+IHRoZSBSQVAg c3lzdGVtIGNhbiB3b3JrIG91dCB3aG8geW91IGFyZSBhbmQsIGZyb20gdGhpcywgd2hlcmUgeW91 IGxpdmUsIHRoZQo+IG9wZXJhdG9yIG5vdyBoYXMgbG9nb24gYWNjZXNzIHRvIHlvdXIgaG9tZSBz eXN0ZW0uCj4gQSBzdWl0YWJseSBjbGV2ZXIgUkFQIHN5c3RlbSBjb3VsZCBsaXN0ZW4gdG8geW91 ciBsYXB0b3AgYW5kIHlvdXIgaG9tZSBMQU4sCj4gZGlzY29ubmVjdCB5b3Ugc28gdGhhdCB5b3Ug YXR0ZW1wdCB0byByZWNvbm5lY3QsIG1vdW50IGEgRE9TIGF0dGFjayBvbiB5b3VyCj4gaG9tZSBh Y2Nlc3MgcG9pbnQgKG9uZSBvZiB0aGUgInNlcnZpY2VzIiBpbiB0aGUgcHJvdmlkZWQgdG9vbGtp dHMpIHNvIHlvdXIKPiBhY2Nlc3MgcG9pbnQgaXMgdW5hdmFpbGFibGUgYW5kIHRoZW4gYWNjZXB0 IHlvdXIgcmVjb25uZWN0Lgo+IFllcz8KPiAKPiAgICAgICAgICAgUnVzc2VsbAo+IC0tIAo+IGh0 dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFy Y2hpdmUKPiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+IGh0dHA6Ly9t YWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0CgotLSAKaHR0cDovL3d3dy5w aWNsaXN0LmNvbS90ZWNocmVmL3BpY2xpc3QgUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQpWaWV3 L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdApodHRwOi8vbWFpbG1hbi5taXQuZWR1 L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo= .