ISC DHCP 4.1-ESV-R12-P1 is now available.
Michael McNally <[email protected]> Tue, 12 Jan 2016 17:04:06 -0500
| Newsgroups | gmane.network.dhcp.isc.announce |
|---|---|
| Message-ID | <[email protected]> |
ICAgICAgICAgICAgICBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gREhDUCBEaXN0cmlidXRp b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gNC4xLUVTVi1SMTItUDEKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIgSmFudWFyeSAyMDE2CgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzCgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBORVcgRkVBVFVSRVMKClZlcnNpb24gNC4xLUVTVi1SMTIgaXMgYSBtYWludGVuYW5jZSBy ZWxlYXNlIG9mIGFuIGV4dGVuZGVkIHN1cHBvcnQgdmVyc2lvbgooRVNWKSByZWxlYXNlLiAgRVNW cyBhcmUgaW50ZW5kZWQgZm9yIHVzZXJzIHdobyBoYXZlIGxvbmdlciB1cGdyYWRlCmNvbnN0cmFp bnRzLiAgUGxlYXNlIHNlZSBvdXIgd2ViIHBhZ2UKaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fk cy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS8KZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRVNWcy4K CklTQyBESENQIDQuMS54IGluY2x1ZGVzIHNldmVyYWwgbmV3IERIQ1B2NiBmZWF0dXJlcyB0aGF0 IHdlcmUgbm90IGluY2x1ZGVkCmluIERIQ1AgNC4wLnguICBUaGVzZSBpbmNsdWRlOgoKLSBTdXBw b3J0IGZvciB0aGUgcmFwaWQtY29tbWl0IG9wdGlvbiBvbiB0aGUgY2xpZW50IHNpZGUKCi0gUHJl Zml4IERlbGVnYXRpb24gc3VwcG9ydAoKLSBJQV9UQSBhZGRyZXNzIHN1cHBvcnQKCi0gQSBiYXNp YyBESENQdjYgcmVsYXkgYWdlbnQKCi0gQmFzaWMgYW5kIHBhcnRpYWwgREhDUHY2IGxlYXNlcXVl cnkgc3VwcG9ydAoKVGhlcmUgYXJlIGEgbnVtYmVyIG9mIERIQ1B2NiBsaW1pdGF0aW9ucyBhbmQg ZmVhdHVyZXMgbWlzc2luZyBpbiB0aGlzCnJlbGVhc2UsIHdoaWNoIHdpbGwgYmUgYWRkcmVzc2Vk IGluIHRoZSBmdXR1cmU6CgotIE9ubHkgU29sYXJpcywgTGludXgsIEZyZWVCU0QsIE5ldEJTRCwg YW5kIE9wZW5CU0QgYXJlIHN1cHBvcnRlZC4KCi0gT25seSBhIHNpbmdsZSBhZGRyZXNzIGlzIHN1 cHBvcnRlZCBwZXIgSUEuCgotIERIQ1B2NiBpbmNsdWRlcyBodW1hbi1yZWFkYWJsZSB0ZXh0IGlu IHN0YXR1cyBjb2RlIG1lc3NhZ2VzLiBUaGVzZQogIHNob3VsZCBiZSBjb25maWd1cmFibGUsIGFu ZCBwcm9iYWJseSBsb2NhbGl6ZWQgdmlhIGdldHRleHQoKSBvciB0aGUKICBsaWtlLgoKLSBUaGUg Imhvc3QtaWRlbnRpZmllciIgb3B0aW9uIGlzIGxpbWl0ZWQgdG8gYSBzaW1wbGUgdG9rZW4uCgot IFRoZSBjbGllbnQgYW5kIHNlcnZlciBjYW4gb25seSBvcGVyYXRlIERIQ1B2NCBvciBESENQdjYg YXQgYSB0aW1lLAogIG5vdCBib3RoLiAgVG8gdXNlIGJvdGggcHJvdG9jb2xzIHNpbXVsdGFuZW91 c2x5LCB0d28gaW5zdGFuY2VzIG9mIHRoZQogIHJlbGV2YW50IGRhZW1vbiBhcmUgcmVxdWlyZWQs IG9uZSB3aXRoIHRoZSAnLTYnIGNvbW1hbmQgbGluZSBvcHRpb24uCgpGb3IgaW5mb3JtYXRpb24g b24gaG93IHRvIGluc3RhbGwsIGNvbmZpZ3VyZSBhbmQgcnVuIHRoaXMgc29mdHdhcmUsIGFzCndl bGwgYXMgaG93IHRvIGZpbmQgZG9jdW1lbnRhdGlvbiBhbmQgcmVwb3J0IGJ1Z3MsIHBsZWFzZSBj b25zdWx0IHRoZQpSRUFETUUgZmlsZS4KCklTQyBESENQIHVzZXMgc3RhbmRhcmQgR05VIGNvbmZp Z3VyZSBmb3IgaW5zdGFsbGF0aW9uLiBQbGVhc2UgcmV2aWV3IHRoZQpvdXRwdXQgb2YgIi4vY29u ZmlndXJlIC0taGVscCIgdG8gc2VlIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLgoKVGhlIHN5 c3RlbSBoYXMgb25seSBiZWVuIHRlc3RlZCBvbiBMaW51eCwgRnJlZUJTRCwgYW5kIFNvbGFyaXMs IGFuZCBtYXkgbm90Cndvcmsgb24gb3RoZXIgcGxhdGZvcm1zLiBQbGVhc2UgcmVwb3J0IGFueSBw cm9ibGVtcyBhbmQgc3VnZ2VzdGVkIGZpeGVzIHRvCjxkaGNwLXVzZXJzQGlzYy5vcmc+LgoKSVND IERIQ1AgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUgbWFpbnRhaW5lZCBieSBJbnRlcm5ldCBTeXN0 ZW1zCkNvbnNvcnRpdW0uICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0 d2FyZSB3cml0dGVuCmJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KCgkJCUNoYW5n ZXMgc2luY2UgNC4xLUVTVi1SMTIKCiEgVXBkYXRlIHRoZSBib3VuZHMgY2hlY2tpbmcgd2hlbiBy ZWNlaXZpbmcgYSBwYWNrZXQuCiAgVGhhbmtzIHRvIFNlYmFzdGlhbiBQb2VobiBmcm9tIFNvcGhv cyBmb3IgdGhlIGJ1ZyByZXBvcnQgYW5kIGEgc3VnZ2VzdGVkCiAgcGF0Y2guCiAgW0lTQy1CdWdz ICM0MTI2N10KCgkJCUNoYW5nZXMgc2luY2UgNC4xLUVTVi1SMTJiMQoKLSBOb25lCgoJCQlDaGFu Z2VzIHNpbmNlIDQuMS1FU1YtUjExCgotIFRoZSBzZXJ2ZXIgbm93IGRvZXMgYSBiZXR0ZXIgY2hl Y2sgdG8gc2VlIGlmIGl0IGNhbiBhbGxvY2F0ZSB0aGUgbWVtb3J5CiAgZm9yIGxhcmdlIGJsb2Nr cyBvZiB2NCBsZWFzZXMgYW5kIHNob3VsZCBwcm92aWRlIGEgc2xpZ2h0bHkgYmV0dGVyIGVycm9y CiAgbWVzc2FnZS4gIE5vdGUgd2VsbDogdGhlIHNlcnZlciBwcmUtYWxsb2NhdGVzIHY0IGFkZHJl c3NlcywgaWYgeW91IHVzZQogIGEgbGFyZ2UgcmFuZ2UsIHN1Y2ggYXMgYSAvOCwgdGhlIHNlcnZl ciB3aWxsIGF0dGVtcHQgdG8gdXNlIGEgbGFyZ2UKICBhbW91bnQgb2YgbWVtb3J5IGFuZCBtYXkg bm90IHN0YXJ0IGlmIHRoZXJlIGVpdGhlciBpc24ndCBlbm91Z2ggbWVtb3J5CiAgb3IgdGhlIHNp emUgZXhjZWVkcyB3aGF0IHRoZSBjb2RlIHN1cHBvcnRzLgogIFtJU0MtQnVncyAjMzg2MzddCgot IFRoZSBzZXJ2ZXIgd2lsbCBub3cgcmVqZWN0IHVuaWNhc3QgUmVxdWVzdCwgUmVuZXcsIERlY2xp bmUsIGFuZCBSZWxlYXNlCiAgbWVzc2FnZXMgZnJvbSBhIGNsaWVudCB1bmxlc3MgdGhlIHNlcnZl ciB3b3VsZCBoYXZlIHNlbnQgdGhhdCBjbGllbnQgdGhlCiAgZGhjcDYudW5pY2FzdCBvcHRpb24u ICBUaGlzIGJlaGF2aW9yIGlzIGluIGNvbXBsaWFuY2Ugd2l0aCBwYXJhZ3JhcGggMSBpbgogIGVh Y2ggb2YgdGhlIHNlY3Rpb25zIDE4LjIsMSwgMTguMi4zLCAxOC4yLjYsIGFuZCAxOC4yLjcgb2Yg UkZDIDMzMTUuIFByaW9yCiAgdG8gdGhpcywgdGhlIHNlcnZlciB3b3VsZCBzaW1wbHkgYWNjZXB0 IHRoZSBtZXNzYWdlcy4gIE5vdywgaW4gb3JkZXIgZm9yCiAgdGhlIHNlcnZlciB0byBhY2NlcHQg c3VjaCBhIG1lc3NhZ2UsIHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBtdXN0IGluY2x1ZGUKICB0 aGUgZGhjcDYudW5pY2FzdCBvcHRpb24gZWl0aGVyIGdsb2JhbGx5IG9yIHdpdGhpbiB0aGUgc2hh cmVkIG5ldHdvcmsgdG8KICB3aGljaCB0aGUgcmVxdWVzdGVkIGxlYXNlIGJlbG9uZ3MuIEluIG90 aGVyIHdvcmRzLCB0aGUgc2VydmVyIHdpbGwgbWFwCiAgdGhlIGZpcnN0IElBX1hYIGFkZHJlc3Mg Zm91bmQgd2l0aGluIHRoZSBjbGllbnQgbWVzc2FnZSB0byBhCnNoYXJlZC1uZXR3b3JrCiAgYW5k IGxvb2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgdW5pY2FzdCBvcHRpb24gdGhlcmUgYW5kIHRo ZW4gZ2xvYmFsbHkuCiAgW0lTQy1CdWdzICMyMTIzNV0KCi0gV3JpdGUgb3V0IHRoZSBEVUlEIHNl cnZlciBpZCBvbiBzdGFydHVwIGluIGFsbCBjYXNlcywgcHJldmlvdXNseSBpZiBpdAogIHdhcyBy ZWFkIGluIGZyb20gc2VydmVyLWR1aWQgb3B0aW9uIGluIHRoZSBjb25maWcgb3IgbGVhc2UgZmls ZXMgZm9yCiAgREhDUHY0IGl0IHdvdWxkIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBuZXcgbGVhc2Ug ZmlsZS4KICBbSVNDLUJ1Z3MgIzM3NzkxXQoKLSBXaGVuIHBhcnNpbmcgZGF0ZXMgZm9yIGxlYXNl cyBjb252ZXJ0IGRhdGVzIHBhc3QgMjAzOCB0byAibmV2ZXIiLgogIFRoaXMgYXZvaWRzIHByb2Js ZW1zIHdpdGggaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIGRhdGUgYW5kIHRpbWUKICBoYW5kbGlu ZyBjb2RlIGZvciBwZW9wbGUgdGhhdCBkZWNpZGUgdG8gdXNlIHZlcnkgbGFyZ2UgbGVhc2UgdGlt ZXMKICBvciBhZGQgYSBsZWFzZSBlbnRyeSB3aXRoIGEgZGF0ZSBmYXIgaW4gdGhlIGZ1dHVyZS4K ICBbSVNDLUJ1Z3MgIzMzMDU2XQoKLSBMZWF2ZSB0aGUgc2lhZGRyIGZpZWxkIGNsZWFyIHdoZW4g c2VuZGluZyBhIE5BQ0sgYXMgcGVyIFJGQyAyMTMxCiAgdGFibGUgMy4KICBbSVNDLUJ1Z3MgIzM4 NzY5XQoKLSBTb21lIGNvbXBpbGVycyBkb24ndCBsaWtlIHRoZSB1c2Ugb2YgYWJzIGluIG1pbmly ZXMvbnNfdmVyaWZ5LmMsCiAgY2hhbmdlIGl0IHRvIGxhYnMgdG8gbWFrZSB0aGVtIGhhcHB5Lgog IFtJU0MtQnVncyAjMzkzMDFdCgotIEluIHRoZSBjbGllbnQgZG9uJ3Qgc2VuZCBleHBpcmVkIGFk ZHJlc3NlcyB0byB0aGUgc2NyaXB0IGFzIHBhcnQgb2YKICB0aGUgYmluZGluZyBwcm9jZXNzLiAg VGhhbmtzIHRvIFN2ZW4gVHJlbmtlbCBhdCBHb29nbGUgZm9yIHJlcG9ydGluZwogIHRoZSBpc3N1 ZSBhbmQgc3VnZ2VzdGluZyB0aGUgcGF0Y2guCiAgW0lTQy1CdWdzICMzODYzMV0KCi0gV2hpbGUg cGFyc2luZyBJUHY2IGFkZHJlc3NlcyB0cmVhdCAiYWRkIiBhcyBwYXJ0IG9mIHRoZSBhZGRyZXNz IGluc3RlYWQKICBvZiBhcyBhIHRva2VuLgogIFtJU0MtQnVncyAjMzk1MjldCgotIERlbGF5ZWQt YWNrIG5vdyB3b3JrcyBwcm9wZXJseSB3aXRoIEZhaWxvdmVyLiBQcmlvciB0byB0aGlzLCBiaW5k IHVwZGF0ZXMKICBwb3N0IHN0YXJ0dXAgd2VyZSBiZWluZyBxdWV1ZWQgYnV0IG5ldmVyIGRlbGl2 ZXJlZC4gQW1vbmcgb3RoZXIKdGhpbmdzLCB0aGlzCiAgd2FzIGNhdXNpbmcgbGVhc2VzIHRvIG5v dCB0cmFuc2l0aW9uIGZyb20gZXhwaXJlZCBvciByZWxlYXNlZCB0byBmcmVlLgogIFtJU0MtQnVn cyAjMzE0NzRdCgotIENsZWFuIHVwIHBhcnNpbmcgb2YgdjYgbGVhc2UgZmlsZXMgYSBiaXQgdG8g YXZvaWQgaW5maW5pdGUgbG9vcHMgaWYgdGhlCiAgbGVhc2UgZmlsZSBpcyBjb3JydXB0IGluIGNl cnRhaW4gd2F5cy4KICBbSVNDLUJ1Z3MgIzM5NzYwXQoKLSBDb3JyZWN0ZWQgYW4gaXNzdWUgaW4g djYgbGVhc2UgZmlsZSBwYXJzaW5nLiBQcmlvciB0byB0aGlzLCB3aGVuCmVuY291bnRlcmluZwog IGEgbGVhc2Ugd2l0aCBhbiBhZGRyZXNzIGZvciB3aGljaCBubyBjb25maWd1cmVkIHBvb2wgZXhp c3RzLCB0aGUKc2VydmVyIHdhcwogIGRlY2xhcmluZyB0aGUgbGVhc2UgZmlsZSBjb3JydXB0IGFu ZCBpbmNvcnJlY3RseSBza2lwcGluZyBvdmVyIHRoZQpzdWJzZXF1ZW50CiAgZW50cnkgaW4gdGhl IGZpbGUuICBUaGUgc2VydmVyIHdpbGwgbm93IGVtaXQgYSBsb2cgbWVzc2FnZSBpbmRpY2F0aW5n IHRoYXQKICBubyBwb29sIHdhcyBmb3VuZCBmb3IgdGhlIGFkZHJlc3MgKG9yIHByZWZpeCkgYW5k IGNvcnJlY3RseSByZXN1bWUgcGFyc2luZwogIHdpdGggdGhlIG5leHQgZW50cnkgaW4gdGhlIGxl YXNlIGZpbGUuICBPdXIgdGhhbmtzIHRvIE1pY2hhbCDDhcK9ZWpkbCBmb3IKICByZXBvcnRpbmcg dGhlIGlzc3VlLgogIFtJU0MtQnVncyAjMzkzMTRdCgotIEVuaGFuY2UgdGhlIFBBUkFOT0lBIHBh dGNoIHRvIGluY2x1ZGUgZmNob3duKCkgdGhlIGxlYXNlIGZpbGUgdG8KICBhbGxvdyBpdCB0byBi ZSBtYW5pcHVsYXRlZCBhZnRlciB0aGUgc2VydmVyIGRvZXMgYSBjaG93bigpLgogIFRoYW5rcyB0 byBKaXJpIFBvcGVsa2EgYXQgUmVkIEhhdCBmb3IgdGhlIHBhdGNoLgogIFtJU0MtQnVncyAjMzY5 NzhdCgotIEZpeGVkIGEgc2VydmVyIGNyYXNoIHRoYXQgY291bGQgb2NjdXIgd2hlbiB0aGUgc2Vy dmVyIGF0dGVtcHRzIHRvIHJlbW92ZQogIHRoZSBiaWxsaW5nIGNsYXNzIGZyb20gdGhlIGxhc3Qg bGVhc2UgYmlsbGVkIHRvIGEgZHluYW1pYyBjbGFzcyBhZnRlciBzYWlkCiAgY2xhc3MgaGFzIGJl ZW4gZGVsZXRlZC4gIE91ciB0aGFua3MgdG8gTGFzc2UgUGVzb25lbiBmb3IgcmVwb3J0aW5nIHRo ZQogIGlzc3VlCiAgW0lTQy1CdWdzICMzOTk3OF0KCi0gSGFuZGxlIGFuIG91dCBvZiBtZW1vcnkg Y29uZGl0aW9uIGluIHRoZSBjbGllbnQgYSBiaXQgYmV0dGVyLgogIFRoYW5rcyB0byBGcsODwqlk w4PCqXJpYyBQZXJyaW4gZnJvbSBCcm9jYWRlIGZvciBmaW5kaW5nIHRoZSBpc3N1ZQogIGFuZCBz dWdnZXN0aW5nIGEgcGF0Y2guCiAgW0lTQy1CdWdzICMzOTI3OV0KCgkJCUNoYW5nZXMgc2luY2Ug NC4xLUVTVi1SMTFyYzIKCi0gTm9uZQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEtRVNWLVIxMXJjMQoK LSBDb3JyZWN0ZWQgYSBjb21waWxhdGlvbiBlcnJvciBpbnRyb2R1Y2VkIGJ5IHRoZSBmaXggZm9y IElTQy1CdWdzICMzNzQxNS4KICBUaGUgZXJyb3Igb2NjdXJzIG9uIExpbnV4IHZhcmlhbnRzIHRo YXQgZG8gbm90IHN1cHBvcnQgVkxBTiB0YWcKaW5mb3JtYXRpb24KICBpbiBwYWNrZXQgYXV4aWxp YXJ5IGRhdGEuICBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgb25seSBlbmFibGVzIGluY2x1c2lv bgogIG9mIHRoZSBWTEFOIHRhZy1iYXNlZCBsb2dpYyBpZiBpdCBpcyBzdXBwb3J0ZWQgYnkgdGhl IHVuZGVybHlpbmcgT1MuCiAgW0lTQy1CdWdzICMzODY3N10KCgkJCUNoYW5nZXMgc2luY2UgNC4x LUVTVi1SMTFiMQoKLSBTcGVjaWZ5aW5nIHRoZSBvcHRpb24sIC0tZGlzYWJsZS1kZWJ1Zywgb24g dGhlIGNvbmZpZ3VyZSBzY3JpcHQKY29tbWFuZCBsaW5lCiAgbm93IGRpc2FibGVzIGRlYnVnIGZl YXR1cmVzLiAgUHJpb3IgdG8gdGhpcywgc3BlY2lmeWluZyAtLWRpc2FibGUtZGVidWcKICBpbmNv cnJlY3RseSBlbmFibGVkIGRlYnVnIGZlYXR1cmVzLiBUaGFua3MgdG8gR3VzdGF2byBaYWNhcmlh cyBmb3IKcmVwb3J0aW5nCiAgdGhlIGlzc3VlLgogIFtJU0MtQnVncyAjMzc3ODBdCgotIFVuaXQg dGVzdCBleGVjdXRpb24gbm93IHVzZXMgYSBwYXRoIGF1Z21lbnRlZCBkdXJpbmcgY29uZmlndXJh dGlvbgogIHByb2Nlc3Npbmcgb2YgdGhlIC0td2l0aC1hdGYgb3B0aW9uIHRvIGxvY2F0ZSBBVEYg cnVudGltZSB0b29scywgYXRmLXJ1bgogIGFuZCBhdGYtcmVwb3J0LiBGb3IgbW9zdCBpbnN0YWxs YXRpb25zIG9mIEFURiwgdGhpcyBzaG91bGQgYWxsZXZpYXRlIHRoZQogIG5lZWQgdG8gbWFudWFs bHkgaW5jbHVkZSB0aGVtIGluIHRoZSBQQVRILCBhcyB3YXMgZm9ybWVybHkgcmVxdWlyZWQuCiAg SWYgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2Fubm90IGxvY2F0ZSB0aGUgdG9vbHMgaXQgd2lsbCBl bWl0IGEgd2FybmluZywKICBpbmZvcm1pbmcgdGhlIHVzZXIgdGhhdCB0aGUgdG9vbHMgbXVzdCBi ZSBpbiB0aGUgUEFUSCB3aGVuIHJ1bm5pbmcgdW5pdAogIHRlc3RzLgogIFNlY29uZGx5LCBwbGVh c2Ugbm90ZSB0aGF0ICJtYWtlIGNoZWNrIiB3aWxsIG5vdyBleGl0IHdpdGggYSBmYWlsdXJlCnN0 YXR1cwogIGNvZGUgKG5vbi16ZXJvKSBpZiBvbmUgb3IgbW9yZSB1bml0IHRlc3RzIGZhaWwuICBU aGlzIG1lYW5zIHRoYXQgaW52b2tpbmcKICAibWFrZSBjaGVjayIgZnJvbSBhbiB1cHBlciBsZXZl bCBkaXJlY3Rvcnkgd2lsbCBjYXVzZSB0aGUgbWFrZSBwcm9jZXNzIHRvCiAgU1RPUCBhZnRlciB0 aGUgZmlyc3QgdGVzdCBzdWJkaXJlY3Rvcnkgd2l0aCBmYWlsZWQgdGVzdChzKS4gIFRvIGZvcmNl IGFsbAogIHRlc3RzIGluIGFsbCBzdWJkaXJlY3RvcmllcyB0byBydW4sIHJlZ2FyZGxlc3Mgb2Yg aW5kaXZpZHVhbCB0ZXN0IG91dGNvbWUsCiAgdXNlIHRoZSBjb21tYW5kICJtYWtlIC1rIGNoZWNr Ii4KICBbSVNDLUJ1Z3MgIzM4NjE5XQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEtRVNWLVIxMAoKLSBD b3JyZWN0ZWQgcGFyc2VyJ3MgcmlnaHQgYnJhY2UgbWF0Y2hpbmcgd2hlbiBhIHN0YXRlbWVudCBj b250YWlucyBhbgplcnJvci4KICBbSVNDLUJ1Z3MgIzM2MDIxXQoKLSBBZGRlZCBjaGVjayBmb3Ig aW52YWxpZCBmYWlsb3ZlciBtZXNzYWdlIHR5cGUuIFRoYW5rcyB0byBUb2JpYXMgU3RvZWNrbWFu bgogIHdvcmtpbmcgd2l0aCB0aGUgT3BlbkJTRCBwcm9qZWN0IHdobyBzcG90dGVkIHRoZSBpc3N1 ZSBhbmQgcHJvdmlkZWQgdGhlCiAgcGF0Y2guCiAgW0lTQy1CdWdzICMzNjY1M10KCi0gQ29ycmVj dGVkIHJhdGUgbGltaXRpbmcgY2hlY2tzIGZvciBiYWQgcGFja2V0IGxvZ2dpbmcuIFRoYW5rcyB0 byBUb2JpYXMKICBTdG9lY2ttYW5uIHdvcmtpbmcgd2l0aCB0aGUgT3BlbkJTRCBwcm9qZWN0IHdo byBzcG90dGVkIHRoZSBpc3N1ZSBhbmQKICBwcm92aWRlZCB0aGUgcGF0Y2guCiAgW0lTQy1CdWdz ICMzNjg5N10KCi0gQWRkcmVzc2VkIENvdmVyaXR5IGlzc3VlcyByZXBvcnRlZCBhcyBvZiAwNy0z MS0yMDE0OgogIFtJU0MtQnVncyAjMzY3MTJdIENvcnJlY3RzIENvdmVyaXR5IHJlcG9ydGVkICJo aWdoIiBpbXBhY3QgaXNzdWVzLgogIFtJU0MtQnVncyAjMzY5MzNdIENvcnJlY3RzIENvdmVyaXR5 IHJlcG9ydGVkICJtZWRpdW0iIGltcGFjdCBpc3N1ZXMKICBbSVNDLUJ1Z3MgIzM3NzA4XSBGaXhl cyBjb21waWxhdGlvbiBlcnJvciBpbiBkc3RfYXBpLmMgc2VlbiBpbiBvbGRlcgogIGNvbXBpbGVy cyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGJ5ICMzNjcxMgoKLSBTZXJ2ZXIgbm93IHN1cHBvcnRzIGEg ZmFpbG92ZXIgc3BsaXQgdmFsdWUgb2YgMjU2LgogIFtJU0MtQnVnc10gIzM2NjY0XQoKLSBBZGRl ZCBjaGVja3MgaW4gcmFuZ2U2IGFuZCBwcmVmaXg2IHN0YXRlbWVudCBwYXJzaW5nIHRvIGVuc3Vy ZSBhZGRyZXNzZXMKICBhcmUgd2l0aGluIHRoZSBkZWNsYXJlZC4gVGhhbmtzIHRvIEppcmkgUG9w ZWxrYSBhdCBSZWQgSGF0IGZvciB0aGUgYnVnCiAgcmVwb3J0IGFuZCBwYXRjaC4KICBbSVNDLUJ1 Z3MgIzMyNDUzXQogIFtJU0MtQnVncyAjMTc3NjZdCiAgW0lTQy1CdWdzICMxODUxMF0KICBbSVND LUJ1Z3MgIzIzNjk4XQogIFtJU0MtQnVncyAjMjg4ODNdCgotIEFkZHJlc3NlZCBjaGVja3N1bSBp c3N1ZXM6CiAgQWRkZWQgY2hlY2tzdW0gcmVhZGluZXNzIGNoZWNrIHRvIExpbnV4IHBhY2tldCBm aWx0ZXJpbmcgd2hpY2ggZWxpbWluYXRlcwogIGludmFsaWQgcGFja2V0IGRyb3BzIGR1ZSB0byBj aGVja3N1bSBlcnJvcnMgd2hlbiBjaGVja3N1bSBvZmZsb2FkaW5nIGlzCiAgaW4gdXNlLiAgQmFz ZWQgb24gZGhjcC00LjIuMi14ZW4tY2hlY2tzdW0ucGF0Y2ggbWFkZSB0byB0aGUgRmVkb3JhCnBy b2plY3QuCiAgW0lTQy1CdWdzICMyMjgwNl0KICBbSVNDLUJ1Z3MgIzE1OTAyXQogIFtJU0MtQnVn cyAjMTc3MzldCiAgW0lTQy1CdWdzICMxODAxMF0KICBbSVNDLUJ1Z3MgIzIyNTU2XQogIFtJU0Mt QnVncyAjMjk3NjldCiAgSW5ib3VuZCBwYWNrZXRzIHdpdGggVURQIGNoZWNrc3VtcyBvZiAweGZm ZmYgbm93IHZhbGlkYXRlIGNvcnJlY3RseSByYXRoZXIKICB0aGFuIGJlaW5nIGRyb3BwZWQuCiAg W0lTQy1CdXMgIzI0MjE2XQogIFtJU0MtQnVzICMyNTU4N10KCi0gQWRkZWQgc3VwcG9ydCBvZiB0 aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIsIHVzZS1ob3N0LWRlY2wtbmFtZXMsIHRvCiAgQk9P VFAgcmVxdWVzdCBoYW5kbGluZy4KICBbSVNDLUJ1Z3MgIzM2MjMzXQoKLSBXaGVuIHRoZSBzZXJ2 ZXIgY2Fubm90IGF0dHJpYnV0ZSBhbiBpbmJvdW5kIHJlcXVlc3QgdG8gYSBrbm93biBzdWJuZXQK ICBhbmQgcmV0dXJuaW5nIHRoZSBzZXJ2ZXIgaWRlbnRpZmllciBpbiBOQUtTIGlzIGVuYWJsZWQ7 IHRoZSBzZXJ2ZXIKICB3aWxsIHVzZSB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXIgc2VydmVyLWlkZW50aWZpZXIgaWYgaXQKICBpcyBkZWZpbmVkIGdsb2JhbGx5LgogIFtJU0Mt QnVncyAjMzI1NDVdCgotIEJ5IGRlZmF1bHQsIHRoZSBzZXJ2ZXIgd2lsbCBub3cgY2hvb3NlIHRo ZSB2YWx1ZSB0byB1c2UgaW4gdGhlIGZvcndhcmQgRE5TCiAgbmFtZSBmcm9tIHRoZSBmb2xsb3dp bmcgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZToKCiAgICAxLiBGUUROIG9wdGlvbiBpZiBwcm92aWRl ZCBieSB0aGUgY2xpZW50CiAgICAyLiBIb3N0IG5hbWUgb3B0aW9uIGlmIHByb3ZpZGVkIGJ5IHRo ZSBjbGllbnQKICAgIDMuIENvbmZpZ3VyZWQgb3B0aW9uIGhvc3QtbmFtZSBpZiBkZWZpbmVkCgog IEFzIGJlZm9yZSwgdGhpcyBtYXkgYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyBkZG5zLWhvc3Ru YW1lIHRvIHRoZSBkZXNpcmVkCiAgdmFsdWUgKG9yIGV4cHJlc3Npb24pLiAgSW4gYWRkaXRpb24s IHRoZSBzZXJ2ZXIgbG9naWMgaGFzIGJlZW4gZXh0ZW5kZWQgdG8KICB1c2UgdGhlIHZhbHVlIG9m IHRoZSBob3N0IG5hbWUgZGVjbGFyYXRpb24gaWYgdXNlLWhvc3QtZGVjbC1uYW1lcyBpcwplbmFi bGVkCiAgYW5kIG5vIG90aGVyIHZhbHVlIGlzIGF2YWlsYWJsZS4KICBbSVNDLUJ1Z3MgIzIxMzIz XQoKLSBJbiB0aGUgZmFpbG92ZXIgY29kZSwgaGFuZGxlIHRoZSBjYXNlIG9mIGNvbW11bmljYXRp b25zIGJlaW5nIGludGVycnVwdGVkCiAgd2hlbiB0aGUgc2VydmVycyBhcmUgZGVhbGluZyB3aXRo IFBPVEVOVElBTC1DT05GTElDVC4gIFRoaXMgcGF0Y2ggYWxsb3dzCiAgdGhlIHByaW1hcnkgdG8g YWNjZXB0IHRoZSBzZWNvbmRhcnkgbW92aW5nIGZyb20gUE9URU5USUFMLUNPTkZMSUNUIHRvCiAg UkVTT0xVVElPTi1JTlRFUlJVUFRFRCBhcyB3ZWxsIGFzIGhhbmRsaW5nIHRoZSBiaW5kIHVwZGF0 ZSBwcm9jZXNzIGJldHRlci4KICBJbiBhZGRpdGlvbiB0aGUgY29kZSB0byByZXNlbmQgdXBkYXRl IG9yIHVwZGF0ZSBhbGwgcmVxdWVzdHMgaGFzIGJlZW4KICBtb2RpZmllZCB0byBzZW5kIHJlcXVl c3RzIG1vcmUgb2Z0ZW4uCiAgW0lTQy1CdWdzICMzNjgxMF0KICBbSVNDLUJ1Z3MgIzIwMzUyXQoK LSBDb3JyZWN0ZWQgYW4gaXNzdWUgd2hpY2ggY2F1c2VkIGRoY2xpZW50IHRvIGluY29ycmVjdGx5 IGZvcm0gdGhlCnJlc3VsdCB3aGVuCiAgcHJlcGVuZGluZyBvciBhcHBlbmRpbmcgdG8gdGhlIElQ djQgZG9tYWluLXNlYXJjaCBvcHRpb24sIHJlY2VpdmVkCmZyb20gdGhlCiAgc2VydmVyLCB3aGVu IGVpdGhlciBvZiB0aGUgdmFsdWVzIGJlaW5nIGNvbWJpbmVkIGNvbnRhaW4gY29tcHJlc3NlZAog IGNvbXBvbmVudHMuCiAgW0lTQy1CdWdzICMyMDU1OF0KCi0gRHVyaW5nIHN0YXJ0dXAsIHdoZW4g dGhlIHNlcnZlciBlbmNvdW50ZXJzIGEgbGVhc2Ugd2hvc2UgYmluZGluZyBzdGF0ZSBpcwogIEZU U19CQUNLVVAgYnV0IHdob3NlIHBvb2wgaGFzIG5vIGNvbmZpZ3VyZWQgZmFpbG92ZXIgcGVlciwg aXQgd2lsbApyZXNldCB0aGUKICBsZWFzZSdzIGJpbmRpbmcgc3RhdGUgdG8gRlRTX0ZSRUUuICBU aGlzIGFsbG93cyB0aGUgbGVhc2VzIHRvIGJlIHJlY2xhaW1lZAogIGJ5IHRoZSBzZXJ2ZXIgYWZ0 ZXIgYSBwb29sJ3MgY29uZmlndXJhdGlvbiBoYXMgY2hhbmdlZCBmcm9tIGZhaWxvdmVyIHRvCiAg c3RhbmRhbG9uZS4gUHJpb3IgdG8gdGhpcyBzdWNoIGxlYXNlcyB3b3VsZCByZW1haW4gc3R1Y2sg aW4gdGhlIGJhY2t1cApzdGF0ZQogIG1ha2luZyB0aGVtIHVuYXZhaWxhYmxlIGZvciBhc3NpZ25t ZW50LiAgVGhpcyBiZWhhdmlvciBpcyBvZmYgYnkgZGVmYXVsdC4KICBJdCBpcyBlbmFibGVkIGJ5 IGRlZmluaW5nIENPTlZFUlRfQkFDS1VQX1RPX0ZSRUUgaW4gaW5jbHVkZXMvc2l0ZS5oIGFuZAog IHdpbGwgb2NjdXIgd2hldGhlciBvciBub3QgdGhlIHNlcnZlciBpcyBjb21waWxlZCBmb3IgZmFp bG92ZXIuCiAgW0lTQy1CdWdzICMzNjk2MF0KCi0gQXZvaWQgY2FsbGluZyBwb29sX3RpbWVyKCkg cmVjdXJzaXZlbHkgZnJvbSBzdXBlcnNlZGVfbGVhc2UoKS4gIFRoaXMgY291bGQKICByZXN1bHQg aW4gbGVhc2VzIGNoYW5naW5nIHN0YXRlIGluY29ycmVjdGx5IG9yIGRlbGF5aW5nIHRoZSBydW5u aW5nIG9mIHRoZQogIGxlYWUgZXhwaXJhdGlvbiBjb2RlLgogIFtJU0MtQnVncyAjMzgwMDJdCgot IE1vdmUgdGhlIGNoZWNrIGZvciBhIFBJRCBmaWxlIGFuZCBwcm9jZXNzIHRvIGJlIGJlZm9yZSB3 ZSByZXdyaXRlIHRoZQogIGxlYXNlIGZpbGUuICBUaGlzIGF2b2lkcyB0aGUgcG9zc2liaWxpdHkg b2Ygc3RhcnRpbmcgYSBzZWNvbmQgaW5zdGFuY2UKICBvZiBhIHNlcnZlciB3aGljaCBjaGFuZ2Vz IHRoZSBjdXJyZW50IGxlYXNlIGZpbGUgY29uZnVzaW5nIHRoZSBmaXJzdAogIGluc3RhbmNlLiAg VGhpcyBjaGVjayBpcyBvbmx5IGluY2x1ZGVkIGlmIHRoZSBhZG1pbiBoYXNuJ3QgZGlzYWJsZWQg UElECiAgZmlsZXMuCiAgW0lTQy1CdWdzICMzODA3OF0KICBbSVNDLUJ1Z3MgIzM4MTQzXQoKLSBJ biB0aGUgY2xpZW50IGNvZGUgY2hhbmdlIHRoZSB3YXkgcHJlZmVycmVkX2xpZmUgYW5kIG1heF9s aWZlIGFyZSBwcmludGVkCiAgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSB1bnNpZ25l ZCByYXRoZXIgdGhhbiBzaWduZWQuCiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0 IGZvciB0aGUgYnVnIHJlcG9ydCBhbmQgcGF0Y2guCiAgW0lTQy1CdWdzICMzNzA4NF0KCi0gTW9k aWZpZWQgbGludXggcGFja2V0IGhhbmRsaW5nIHN1Y2ggdGhhdCBwYWNrZXRzIHJlY2VpdmVkIHZp YSBWTEFOIGFyZSBub3cKICBzZWVuIG9ubHkgYnkgdGhlIFZMQU4gaW50ZXJmYWNlLiBQcmlvciB0 byB0aGlzLCBzdWNoIHBhY2tldHMgd2VyZSBzZWVuIGJ5CiAgYm90aCB0aGUgVkxBTiBpbnRlcmZh Y2UgYW5kIGl0cyBwYXJlbnQgKHBoeXNpY2FsKSBpbnRlcmZhY2UsIGNhdXNpbmcgdGhlCiAgc2Vy dmVyIHRvIHJlc3BvbmQgdG8gYm90aC4gIE5vdGUgdGhpcyByZW1haW5zIGFuIGlzc3VlIGZvciBu b24tTGludXggT1NzLgogIFRoYW5rcyB0byBKaXJpIFBvcGVsa2EgYXQgUmVkIEhhdCBmb3IgdGhl IHBhdGNoLgogIFtJU0MtQnVncyAjMzc0MTVdCiAgW0lTQy1CdWdzICMzNzEzM10KICBbSVNDLUJ1 Z3MgIzM2NjY4XQogIFtJU0MtQnVncyAjMzY2NTJdCgotIENvcnJlY3RlZCBpbmNvbnNpc3RlbmNp ZXMgaW4gZGhjcmVsYXkncyBzZXR0aW5nIHRoZSB1cHBlciBpbnRlcmZhY2UKaG9wIGNvdW50CiAg bGltaXQgc3VjaCB0aGF0IGl0IG5vdyBzZXRzIGl0IHRvIDMyIHdoZW4gdGhlIHVwc3RyZWFtIGFk ZHJlc3MgaXMgYQptdWx0aWNhc3QKICBhZGRyZXNzIHBlciBSRkMgMzMxNSBTZWN0aW9uIDIwLiBQ cmlvciB0byB0aGlzIGlmIHRoZSAtdSBhcmd1bWVudCBwcmVjZWRlZAogIHRoZSAtbCBhcmd1bWVu dCBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGlmIHRoZSBzYW1lIGludGVyZmFjZSB3YXMgc3BlY2lm aWVkCiAgZm9yIGJvdGg7IHRoZSBsb2dpYyB0byBzZXQgdGhlIGhvcCBsaW1pdCBjb3VudCBmb3Ig dGhlIHVwcGVyIGludGVyZmFjZSB3YXMKICBza2lwcGVkLiAgVGhpcyBjYXVzZWQgdGhlIGhvcCBj b3VudCBsaW1pdCB0byBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUKICAodHlwaWNhbGx5IDEp IGluIHRoZSBvdXRib3VuZCB1cHN0cmVhbSBwYWNrZXRzLgogIFtJU0MtQnVncyAjMzc0MjZdCgoJ CQlDaGFuZ2VzIHNpbmNlIDQuMS1FU1YtUjEwcmMxCgotIE5vbmUKCgkJCUNoYW5nZXMgc2luY2Ug NC4xLUVTVi1SMTBiMQoKLSBNb2RpZnkgdGhlIGxpbnV4IGFuZCBvcGVud3J0IGRoY2xpZW50IHNj cmlwdHMgdG8gcHJvY2VzcyBpbmZvcm1hdGlvbgogIGZyb20gYSBzdGF0ZWxlc3MgcmVxdWVzdC4g IFRoYW5rcyB0byBKaXJpIFBvcGVsa2EgYXQgUmVkIEhhdCBmb3IgdGhlCiAgYnVnIHJlcG9ydCBh bmQgcGF0Y2guCiAgW0lTQy1CdWdzIDM2MTAyXQoKLSBSZW1vdmUgbW9yZSB1bnVzZWQgUkNTSUQg dGFncy4gIFRoZXNlIHdlcmVuJ3Qgbm90aWNlZCBpbiA0LjMgYXMKICB0aGUgY29kZSBpc24ndCB1 c2VkIGFueW1vcmUgYnV0IHdlIHJlbW92ZSB0aGVtIGhlcmUgdG8ga2VlcCB0aGUKICBjb2RlIGNv bnNpc3RlbnQgYWNyb3NzIHZlcnNpb25zLgogIFtJU0MtQnVncyAjMzY0NTFdCgoJCQlDaGFuZ2Vz IHNpbmNlIDQuMS1FU1YtUjkKCi0gVGlkeSB1cCBzZXZlcmFsIHNtYWxsIHRpY2tldHMuCiAgQ29y cmVjdCBwYXJzaW5nIG9mIERVSUQgZnJvbSBjb25maWcgZmlsZSwgcHJldmlvdXNseSB0aGUgTEwg dHlwZQogIHdhcyBwdXQgaW4gdGhlIHdyb25nIHBsYWNlIGluIHRoZSBEVUlEIHN0cmluZy4KICBb SVNDLUJ1Z3MgIzIwOTYyXQogIEFkZCBjb2RlIHRvIHBhcnNlICJkby1mb3J3YXJkLXVwZGF0ZXMi IGFzIHdlbGwgYXMgImRvLWZvcndhcmQtdXBkYXRlIgogIFRoYW5rcyB0byBKaXJpIFBvcGVsa2Eg YXQgUmVkIEhhdC4KICBbSVNDLUJ1Z3MgIzMxMzI4XQogIFJlbW92ZSBsb2dfcHJpb3JpdHkgYXMg aXQgaXNuJ3QgY3VycmVudGx5IHVzZWQuCiAgW0lTQy1CdWdzICMzMzM5N10KICBJbmNyZWFzZSB0 aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgZm9yIHJlYWRpbmcgaW50ZXJmYWNlIGluZm9ybWF0 aW9uLgogIFtJU0MtQnVncyAjMzQ4NThdCgotIFJlbW92ZSBhbiBleHRyYSBzZXQgb2YgdGhlIG1z Z19jb250cm9sbGVuIHZhcmlhYmxlLgogIFtJU0MtQnVncyAjMjEwMzVdCgotIEFkZCBhIG1vcmUg dW5kZXJzdGFuZGFibGUgZXJyb3IgbWVzc2FnZSBpZiBhIGNvbmZpZ3VyYXRpb24gYXR0ZW1wdHMK ICB0byBhZGQgbXVsdGlwbGUga2V5cyBmb3IgYSBzaW5nbGUgem9uZS4gIFRoYW5rcyB0byBhIHBh dGNoIGZyb20gSmlyaQogIFBvcGVsa2EgYXQgUmVkIEhhdC4KICBbSVNDLUJ1Z3MgIzMxODkyXQoK LSBGaXggc29tZSBtaW5vciBpc3N1ZXMgaW4gdGhlIGRzdCBjb2RlLgogIFtJU0MtQnVncyAjMzQx NzJdCgotIFVwZGF0ZSB0aGUgcGFydG5lcidzIHN0b3MgKHN0YXJ0IHRpbWUgb2Ygc3RhdGUsIGJh c2ljYWxseSB3aGVuIHdlIGxhc3QKICBoZWFyZCBmcm9tIHRoaXMgcGFydG5lcikgZmllbGQgd2hl biB1cGRhdGluZyB0aGUgc3RhdGUgaW4gZmFpbG92ZXIuCiAgW0lTQy1CdWdzICMzNTU0OV0KCi0g TW9kaWZ5IHRoZSBvdmVybG9hZCBwcm9jZXNzaW5nIHRvIGFsbG93IHNwYWNlIGZvciB0aGUgcmVt b3RlIGFnZW50IElELgogIFtJU0MtQnVncyAjMzU1NjldCiAgSGFuZGxlIHRoZSBvcmRlcmluZyBv ZiB0aGUgU1VCTkVUX01BU0sgb3B0aW9uIGV2ZW4gaWYgaXQgaXMgdGhlIGxhc3QKICBvcHRpb24g aW4gdGhlIGxpc3QuCiAgW0lTQy1CdWdzICMyNDU4MF0KCi0gI2lmZGVmIHZhcmlhYmxlcyB1c2Vk IGluIFJGQzMzMTVfUFJFX0VSUkFUQSBjb2RlLgogIFtJU0MtQnVncyAjMjg5MzhdCgotIFJlbW92 ZSB1bnVzZWQgUkNTSUQgdGFncy4KICBbSVNDLUJ1Z3MgIzM1ODQ2XQoKLSBDb3JyZWN0IHRoZSB2 NiBjbGllbnQgdGltaW5nIGNvZGUuICBXaGVuIGRvaW5nIHRoZSB0aW1pbmcgYmFja29mZgogIGZv ciBNUlQgbGltaXQgaXQgdG8gTVJELgogIFRoYW5rcyB0byBKaXJpIFBvcGVsa2EgYXQgUmVkIEhh dCBmb3IgdGhlIGJ1ZyByZXBvcnQgYW5kIGZpeC4KICBbSVNDLUJ1Z3MgIzIxMjM4CgotIFNvbWUg bWlub3IgY2xlYW51cHMgaW4gdGhlIGNsaWVudCBjb2RlLgogIEluIGFkZGl0aW9uIHRvIGNoZWNr aW5nIGZvciBkaGNwYyBjaGVjayBmb3IgYm9vdHBjIGluIHRoZSBzZXJ2aWNlcyBsaXN0LgogIFtJ U0MtQnVncyAjMTg5MzNdCiAgQ29ycmVjdCB0aGUgY2xpZW50IGNvZGUgdG8gb25seSB0cnkgdG8g Z2V0IGEgbGVhc2Ugb25jZSB3aGVuIHRoZQogIGdpdmVuIHRoZSAiLTEiIGFyZ3VtZW50LgogIFRo YW5rcyB0byBKaXJpIFBvcGVsa2EgYXQgUmVkIEhhdCBmb3IgdGhlIGJ1ZyByZXBvcnQgYW5kIGZp eC4KICBbSVNDLUJ1Z3MgIzI2NzM1XQogIFdoZW4gYXNrZWQgZm9yIHRoZSB2ZXJzaW9uIGRvbid0 IHNlbmQgdGhlIG91dHB1dCB0byBzeXNsb2cuCiAgW0lTQy1CdWdzICMyOTc3Ml0KICBBZGQgdGhl IG5leHQgc2VydmVyIGluZm9ybWF0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9y CiAgdXNlIGJ5IHRoZSBjbGllbnQgc2NyaXB0LiAgSW4gb3JkZXIgdG8gYXZvaWQgY2hhbmdpbmcg dGhlIGNsaWVudAogIGxlYXNlIGZpbGUgdGhlIG5leHQgc2VydmVyIGluZm9ybWF0aW9uIGlzbid0 IHdyaXR0ZW4gdG8gaXQuCiAgVGhhbmtzIHRvIFRvbWFzIEhvenphIGF0IFJlZCBIYXQgZm9yIHRo ZSBzdWdnZXN0aW9uIGFuZCBhIHByb3RvdHlwZSBmaXguCiAgW0lTQy1CdWdzICMzMzA5OF0KCi0g QWRkIHRoZSAiZW5hYmxlLWxvZy1waWQiIGJ1aWxkIG9wdGlvbiB0byB0aGUgY29uZmlndXJlIHNj cmlwdC4gIFdoZW4KZW5hYmxlZAogIHRoaXMgY2F1c2VzIHRoZSBjbGllbnQsIHNlcnZlciBhbmQg cmVsYXkgcHJvZ3JhbXMgdG8gaW5jbHVkZSB0aGUgUElECiAgbnVtYmVyIGluIHN5c2xvZyBtZXNz YWdlcy4KICBUaGFua3MgdG8gTWFyaXVzIFRvbWFzY2hld3NraSBmb3IgdGhlIHN1Z2dlc3Rpb24g YW5kIHByb3RvLXBhdGNoLgogIFtJU0MtQnVncyAjMjk3MTNdCgotIEFkZCBhICNkZWZpbmUgdG8g c3BlY2lmeSB0aGUgcHJlZml4IGxlbmd0aCB1c2VkIHdoZW4gYSBjbGllbnQgYXR0ZW1wdHMKICB0 byBjb25maWd1cmUgYW4gYWRkcmVzcy4gIFRoaXMgY2FuIGJlIG1vZGlmaWVkIGJ5IGVkaXRpbmcg aW5jbHVkZXMvc2l0ZS5oLgogIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIDY0LiAgV2hpbGUgMTI4 IG1pZ2h0IGJlIGEgYmV0dGVyIGNob2ljZSBpdCB3b3VsZAogIGFsc28gYmUgYSBjaGFuZ2UgZm9y IGN1cnJlbnRseSBydW5uaW5nIHN5c3RlbXMsIHNvIHdlIGhhdmUgbGVmdCBpdCBhdCA2NC4KICBb SVNDLUJ1Z3MgI0RIQ1AtMl0KCi0gSGF2ZSB0aGUgY2xpZW50IGZzeW5jIHRoZSBsZWFzZSBmaWxl IHRvIGF2b2lkIGxlYXNlIGNvcnJ1cHRpb24gaWYgdGhlCiAgY2xpZW50IGhpYmVybmF0ZXMgb3Ig b3RoZXJ3aXNlIHNodXRzIGRvd24uCiAgW0lTQy1CdWdzICMzNTg5NF0KCi0gQWRkIGEgY2hlY2sg Zm9yIEwyVkxBTiBpbiBicGYuYyB0byBoZWxwIHN1cHBvcnQgVkxBTiBpbnRlcmZhY2VzCiAgVGhh bmtzIHRvIFN0ZWluYXIgSGF1ZyBmb3IgdGhlIHN1Z2dlc3Rpb24uCiAgW0lTQy1CdWdzICMzNjAz M10KCi0gQWRkIGNvZGUgdG8gcHJvcGVybHkgZGVyZWZlcmVuY2UgYSBwb2ludGVyIGluIHRoZSBk aGNsaWVudCBjb2RlCiAgb24gYW4gZXJyb3IgY29uZGl0aW9uLgogIFtJU0MtQnVncyAjMzYxOTQK Ci0gQWRkIGNvZGUgdG8gaGVscCBjbGVhbiB1cCBzb2Z0IGxlYXNlcy4KICBbSVNDLUJ1Z3MgIzM2 MzA0XQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEtRVNWLVI5cmMxCgotIE5vbmUKCgkJCUNoYW5nZXMg c2luY2UgNC4xLUVTVi1SOWIxCgotIFRpZHkgdXAgcmVjZWl2ZSBwYWNrZXQgcHJvY2Vzc2luZy4K ICBUaGFua3MgdG8gQnJhZCBQbGFuayBvZiBHVEEgZm9yIHJlcG9ydGluZyB0aGUgaXNzdWUgYW5k IHN1Z2dlc3RpbmcKICBhIHBvc3NpYmxlIHBhdGNoLgogIFtJU0MtQnVncyAjMzQ0NDddCgkJCUNo YW5nZXMgc2luY2UgNC4xLUVTVi1SOAoKLSBNb2RpZnkgdGhlIHNlcnZlciBjb2RlIHRvIG9ubHkg cHJvaGliaXQgdGhlIGFkbWluaXN0cmF0b3IgZnJvbSBjb25maWd1cmluZwogIHNvbWUgb3B0aW9u cyBpbiB0aGUgZGhjcCB1bml2ZXJzZSBpbnN0ZWFkIG9mIGFsbCB1bml2ZXJzZXMuCiAgW0lTQy1C dWdzICMzMjMwOV0KCi0gQWRkcmVzcyBzdGF0aWMgYW5hbHlzaXMgd2FybmluZ3MuCiAgW0lTQy1C dWdzICMzMzUxMF0gW0lTQy1CdWdzICMzMzUxMV0KCi0gU2lsZW5jZSBiZW5pZ24gc3RhdGljIGFu YWx5c2lzIHdhcm5pbmdzLgogIFtJU0MtQnVncyAjMzM0MjhdCgotIEFkZCBjaGVjayBmb3IgNjQt Yml0IHBhY2thZ2UgZm9yIGF0Zi4KICBbSVNDLUJVR1MgIzMyMjA2XQoKLSBVc2UgbmV3ZXIgYXV0 byogdG9vbCBwYWNrYWdlcyBhbmQgdHVybiBvbiBSRkNfMzU0MiBzdXBwb3J0IG9uIE1hYyBPUy4K ICBbSVNDLUJ1Z3MgIzI2MzAzXQoKLSBSZW1vdmUgYSB2YXJpYWJsZSB3aGVuIGl0IGlzbid0IGJl aW5nIHVzZWQgZHVlIHRvICNpZmRlZnMgdG8gYXZvaWQKICBhIGNvbXBpbGVyIHdhcm5pbmcgb24g U29sYXJpcyB1c2luZyBHQ0MuCiAgW0lTQy1CdWdzICMzMzAzMl0KCi0gQWRkIGEgY2hlY2sgZm9y IHRvbyBtdWNoIHdoaXRlc3BhY2UgaW4gYSBjb25maWcgb3IgbGVhc2UgZmlsZS4KICBUaGFua3Mg dG8gUGFvbG8gUGVsbGVncmlubyBmb3IgZmluZGluZyB0aGUgaXNzdWUgYW5kIGEgc3VnZ2VzdGlv bgogIGZvciB0aGUgcGF0Y2guCiAgW0lTQy1CdWdzICMzMzM1MV0KCi0gQWRkZWQgYSBzbGVlcCBj YWxsIGFmdGVyIGtpbGxpbmcgdGhlIG9sZCBjbGllbnQgdG8gYWxsb3cgdGltZQogIGZvciB0aGUg c29ja2V0cyB0byBiZSBjbGVhbmVkLiAgVGhpcyBzaG91bGQgYWxsb3cgdGhlIC1yIG9wdGlvbgog IHRvIHdvcmsgbW9yZSBjb25zaXN0ZW50bHkuCiAgW0lTQy1CdWdzICMxODE3NV0KCi0gTWlzc2lu ZyBmaWxlcyBmb3IgSVNDIERIQ1AgRGV2ZWxvcGVyJ3MgR3VpZGUgYXJlIG5vdyBpbmNsdWRlZCBp bgogIHRoZSByZWxlYXNlIHRhcmJhbGxzLiBUbyBnZW5lcmF0ZSB0aGlzIGRvY3VtZW50YXRpb24s IHBsZWFzZSB1c2UKICBtYWtlIGRldmVsIGNvbW1hbmQgaW4gZG9jIGRpcmVjdG9yeS4gW0lTQy1C dWdzICMzMjc2N10KCi0gVXBkYXRlIGNsaWVudCBzY3JpcHQgZm9yIHVzZSB3aXRoIG9wZW53cnQu CiAgW0lTQy1CdWdzICMyOTg0M10KCi0gRml4IHRoZSBzb2NrZXQgaGFuZGxpbmcgZm9yIERIQ1B2 NiBjbGllbnRzIHRvIGFsbG93IG11bHRpcGxlIGluc3RhbmNlcwogIG9mIGEgY2xpZW50IG9uIGEg c2luZ2xlIG1hY2hpbmUgdG8gd29yayBwcm9wZXJseS4gIFByZXZpb3VzbHkgb25seQogIG9uZSBj bGllbnQgd291bGQgcmVjZWl2ZSB0aGUgcGFja2V0cy4gIFRoYW5rcyB0byBKaXJpIFBvcGVsa2Eg YXQgUmVkIEhhdAogIGZvciB0aGUgYnVnIHJlcG9ydCBhbmQgYSBwb3RlbnRpYWwgcGF0Y2guCiAg W0lTQy1CdWdzICMzNDc4NF0KCi0gRW5oYW5jZSB0aGUgREhDUHY2IHNlcnZlciBsb2dnaW5nIHRv IGluY2x1ZGUgdGhlIGFkZHJlc3NlcyB0aGF0IGFyZQphc3NpZ25lZAogIHRvIHRoZSBjbGllbnRz LiAgVGhpcyBjYW4gYmUgZW5hYmxlZCBieSBkZWZpbmluZyBMT0dfVjZfQUREUkVTU0VTIGluCnNp dGUuaC4KICBbSVNDLUJ1Z3MgIzI2Mzc3XQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEtRVNWLVI4cmMx Ci0gTm9uZQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEtRVNWLVI4YjEKCi0gTW9kaWZ5IHRlc3QgbWFr ZWZpbGVzIHRvIGJlIG1vcmUgc2ltaWxhciB0byBzdGFuZGFyZCBtYWtlZmlsZXMKICBhbmQgY29t bWVudCBvdXQgYSBjdXJyZW50bHkgdW51c2VkIHRlc3QuCiAgW0lTQy1CdWdzICMzMjA4OV0KCgkJ CUNoYW5nZXMgc2luY2UgNC4xLUVTVi1SNwoKLSBVcGRhdGUgdGhlIG1lbW9yeSBsZWFrYWdlIGRl YnVnIGNvZGUgdG8gd29yayB3aXRoIHY2LgogIFtJU0MtQnVncyAjMzAyOTddCgotIE1vZGlmeSB0 aGUgZmFpbG92ZXIgY29kZSB0byBoYW5kbGUgaW5jb3JyZWN0IHBlZXIgbmFtZXMKICBiZXR0ZXIu ICBQcmV2aW91c2x5IHRoZSBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmFtZSBtaWdodAogIGhhdmUg YmVlbiBmcmVlZCBpbmFwcHJvcHJpYXRlbHkgaW4gc29tZSBjYXNlcyBhbmQgbm90CiAgZnJlZWQg aW4gb3RoZXIgY2FzZXMuCiAgW0lTQy1CdWdzICMzMDMyMF0KCi0gQWRkIGEgY29uZmlndWUgb3B0 aW9uLCBlbmFibGUtc2Vjcy1ieXRlb3JkZXIsIHRvIGRlYWwgd2l0aAogIGNsaWVudHMgdGhhdCBk byB0aGUgYnl0ZSBvcmRlcmluZyBvbiB0aGUgc2VjcyBmaWVsZCBpbmNvcnJlY3RseS4KICBUaGlz IGZpZWxkIHNob3VsZCBiZSBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgYnV0IHNvbWUgY2xpZW50cwog IGdldCBpdCB3cm9uZy4gIFdoZW4gdGhpcyBvcHRpb24gaXMgZW5hYmxlZCB0aGUgc2VydmVyIHdp bGwgZXhhbWluZQogIHRoZSBzZWNzIGZpZWxkIGFuZCBpZiBpdCBsb29rcyB3cm9uZyAoaGlnaCBi eXRlIG5vbiB6ZXJvIGFuZCBsb3cKICBieXRlIHplcm8pIHN3YXAgdGhlIGJ5dGVzLiAgVGhlIGRl ZmF1bHQgaXMgZGlzYWJsZWQuICBUaGlzIG9wdGlvbgogIGlzIG9ubHkgdXNlZnVsIHdoZW4gZG9p bmcgbG9hZCBiYWxhbmNpbmcgd2l0aGluIGZhaWxvdmVyLgogIFtJU0MtQnVncyAjMjYxMDhdCgot IEZpeCBhIHNldCBvZiBpc3N1ZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQgdmlhIGEgY29kZSBpbnNw ZWN0aW9uCiAgdG9vbC4gIFRoYW5rcyB0byBKaXJpIFBvcGVsa2EgYW5kIFRvbWFzIEhvenphIFJl ZCBIYXQgZm9yIHRoZSBsb2dzCiAgYW5kIHBhdGNoZXMuCiAgW0lTQy1CdWdzICMyMzgzM10KCi0g UGFyc2luZyB1bnF1b3RlZCBiYXNlNjQgc3RyaW5ncyBpbXByb3ZlZC4gUGFyc2VyIG5vdyBwcm9w ZXJseSBoYW5kbGVzCiAgc3RyaW5ncyB0aGF0IGNvbnRhaW4gcmVzZXJ2ZWQgbmFtZXMuIFtJU0Mt QnVncyAjMjMwNDhdCgotIE1vZGlmeSB0aGUgbmFrX2xlYXNlIGZ1bmN0aW9uIHRvIG1ha2Ugc29t ZSBhdHRlbXB0cyB0byBmaW5kIGEKICBzZXJ2ZXItaWRlbnRpZmllciBvcHRpb24gdG8gdXNlIGZv ciB0aGUgTkFLLiAgVGhpcyBmZWF0dXJlIGlzCiAgZW5hYmxlZCBieSBkZWZpbmluZyBTRVJWRVJf SURfRk9SX05BSyBpbiBpbmNsdWRlcy9zaXRlLmggYW5kCiAgY3VycmVudGx5IGRlZmF1bHRzIHRv IGRpc2FibGVkLgogIFtJU0MtQnVncyAjMjU2ODldCgotIFRoZSBjbGllbnQgbm93IHBhc3NlcyBp bmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyBpdCByZXF1ZXN0ZWQKICBmcm9tIHRoZSBzZXJ2 ZXIgdG8gdGhlIHNjcmlwdCBjb2RlIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAgVGhlc2Ug dmFyaWFibGVzIGFyZSBvZiB0aGUgZm9ybSByZXF1ZXN0ZWRfPG9wdGlvbl9uYW1lPj0xIHdpdGgK ICB0aGUgb3B0aW9uIG5hbWUgYmVpbmcgdGhlIHNhbWUgYXMgdXNlZCBpbiB0aGUgbmV3XyogYW5k IG9sZF8qCiAgdmFyaWFibGVzLgogIFtJU0MtQnVncyAjMjkwNjhdCgotIEFkZCBzdXBwb3J0IGZv ciBhIHNpbXBsZSBjaGVjayB0aGF0IHRoZSBzZXJ2ZXIgaWQgaW4gYSByZXF1ZXN0IG1lc3NhZ2UK ICB0byBhIGZhaWxvdmVyIHBlZXIgbWF0Y2hlcyB0aGUgc2VydmVyIGlkIG9mIHRoZSBzZXJ2ZXIu ICBUaGlzIHN1cHBvcnQKICBpcyBlbmFibGVkIGJ5IGVkaXRpbmcgdGhlIGZpbGUgaW5jbHVkZXMv c2l0ZS5oIGFuZCB1bmNvbW1lbnRpbmcgdGhlCiAgZGVmaW5pdGlvbiBmb3IgU0VSVkVSX0lEX0NI RUNLLiAgVGhlIG9wdGlvbiBoYXMgc2V2ZXJhbCByZXN0cmljdGlvbnMKICBhbmQgaXNzdWVzIC0g cGxlYXNlIHJlYWQgdGhlIGNvbW1lbnQgaW4gdGhlIHNpdGUuaCBmaWxlIGJlZm9yZQogIGVuYWJs aW5nIGl0LgogIFtJU0MtQnVncyAjMzE0NjNdCgotIFRpZHkgdXAgc29tZSBjb21waWxlciBpc3N1 ZXMgaW4gdGhlIGRlYnVnIGNvZGUuCiAgW0lTQy1CdWdzICMyNjQ2MF0KCi0gTW92ZSB0aGUgZGhj cGQuY29uZiBleGFtcGxlIGZpbGUgdG8gZGhjcGQuY29uZi5leGFtcGxlIHRvIGF2b2lkCiAgb3Zl cndyaXRpbmcgdGhlIGRoY3BkLmNvbmYgZmlsZSB3aGVuIGluc3RhbGxpbmcgYSBuZXcgdmVyc2lv biBvZgogIElTQyBESENQLiAgVGhlIHVzZXIgd2lsbCBub3cgbmVlZCB0byBtYW51YWwgY29weSBh bmQgZWRpdCB0aGUKICBkaGNwZC5jb25mIGZpbGUgYXMgZGVzaXJlZC4KICBbSVNDLUJ1Z3MgIzE5 MzM3XQoKLSBSZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlIHRvIGtlZXAgY29tcGlsZXJzIGhhcHB5 LgogIFtJU0MtQnVncyAjMzE5ODNdCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMS1FU1YtUjYKCi0gRXhp c3RpbmcgbGVnYWN5IHVuaXQtdGVzdHMgaGF2ZSBiZWVuIG1pZ3JhdGVkIHRvIEF1dG9tYXRlZCBU ZXN0CiAgRnJhbWV3b3JrIChBVEYpLiBTZXZlcmFsIG5ldyB0ZXN0cyBoYXZlIGJlZW4gZGV2ZWxv cGVkLiBUbyBlbmFibGUKICB1bml0LXRlc3RzLCBwbGVhc2UgdXNlIC0td2l0aC1hdGYgaW4gY29u ZmlndXJlIHNjcmlwdC4gQSBEZXZlbG9wZXIncwogIEd1aWRlIGhhcyBiZWVuIGFkZGVkLiBUbyBn ZW5lcmF0ZSBpdCwgcGxlYXNlIHVzZSBtYWtlIGRldmVsIGluCiAgdGhlIGRvYyBkaXJlY3Rvcnku IEl0IGlzIGN1cnJlbnRseSBpbiBlYXJseSBzdGFnZXMgb2YgZGV2ZWxvcG1lbnQsCiAgYnV0IGlz IGV4cGVjdGVkIHRvIGdyb3cgaW4gdGhlIG5lYXIgZnV0dXJlLiBbSVNDLUJ1Z3MgMjU5MDFdCgoh IEFuIGlzc3VlIHdpdGggdGhlIHVzZSBvZiBsZWFzZSB0aW1lcyB3YXMgZm91bmQgYW5kIGZpeGVk LiAgTWFraW5nCiAgY2VydGFpbiBjaGFuZ2VzIHRvIHRoZSBlbmQgdGltZSBvZiBhbiBJUHY2IGxl YXNlIGNvdWxkIGNhdXNlIHRoZQogIHNlcnZlciB0byBhYm9ydC4gIFRoYW5rcyB0byBHbGVuIEV1 c3RhY2Ugb2YgTWFzc2V5IFVuaXZlcnNpdHksCiAgTmV3IFplYWxhbmQgZm9yIGZpbmRpbmcgdGhp cyBpc3N1ZS4KICBbSVNDLUJ1Z3MgIzMwMjgxXQogIENWRTogQ1ZFLTIwMTItMzk1NQoKCQkJQ2hh bmdlcyBzaW5jZSA0LjEtRVNWLVI1CgotIENvcnJlY3QgY29kZSB0byBjYWxjdWxhdGUgdGltaW5n IHZhbHVlcyBpbiBjbGllbnQgdG8gY29tcGFyZQogIHJlYmluZCB2YWx1ZSB0byBpbmZpbml0eSBp bnN0ZWFkIG9mIHJlbmV3IHZhbHVlLgogIFRoYW5rcyB0byBDaGVuZGEgSHVhbmcgZnJvbSBIM0Mg VGVjaG5vbG9naWVzIENvLiwgTGltaXRlZAogIGZvciByZXBvcnRpbmcgdGhpcyBpc3N1ZS4KICBb SVNDLUJ1Z3MgIzI5MDYyXQoKLSBGaXggc29tZSBpc3N1ZXMgaW4gdGhlIGNvZGUgZm9yIHBhcnNp bmcgYW5kIHByaW50aW5nIG9wdGlvbnMuCiAgW0lTQy1CdWdzICMyMjYyNV0gLSBwcm9wZXJseSBw cmludCBvcHRpb25zIHRoYXQgaGF2ZSBzZXZlcmFsIGZpZWxkcwogIGZvbGxvd2VkIGJ5IGFuIGFy cmF5IG9mIHNvbWV0aGluZyBmb3IgZXhhbXBsZSAiZklhIgogIFtJU0MtQnVncyAjMjcyODldIC0g cHJvcGVybHkgcGFyc2Ugb3B0aW9ucyBpbiBkZWNsYXJhdGlvbnMgdGhhdCBoYXZlCiAgc2V2ZXJh bCBmaWVsZHMgZm9sbG93ZWQgYnkgYW4gYXJyYXkgb2Ygc29tZXRoaW5nIGZvciBleGFtcGxlICJm SWEiCiAgW0lTQy1CdWdzICMyNzI5Nl0gLSBwcm9wZXJseSBkZXRlcm1pbmUgaWYgd2UgcGFyc2Vk IGEgMTYgb3IgMzIgYml0CiAgdmFsdWUgaW4gZXZhbHVhdGVfbnVtZXJpY19leHByZXNzaW9uIChl eHRyYWN0LWludCkuCiAgW0lTQy1CdWdzICMyNzMxNF0gLSBwcm9wZXJseSBwYXJzZSBhIHplcm8g bGVuZ3RoIG9wdGlvbiBmcm9tCiAgYSBsZWFzZSBmaWxlLiAgVGhhbmtzIHRvIE1hcml1cyBUb21h c2NoZXdza2kgZnJvbSBTVVNFIGZvciB0aGUgcmVwb3J0CiAgYW5kIHByb3RvdHlwZSBwYXRjaCBm b3IgdGhpcyB0aWNrZXQgYXMgd2VsbCBhcyB0aWNrZXQgMjcyODkuCgohIFByZXZpb3VzbHkgdGhl IHNlcnZlciBjb2RlIHdhcyByZWxheGVkIHRvIGFsbG93IHBhY2tldHMgd2l0aCB6ZXJvCiAgbGVu Z3RoIGNsaWVudCBpZHMgdG8gYmUgcHJvY2Vzc2VkLiAgVW5kZXIgc29tZSBzaXR1YXRpb25zIHVz ZSBvZgogIHplcm8gbGVuZ3RoIGNsaWVudCBpZHMgY2FuIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gZ28g aW50byBhbiBpbmZpbml0ZQogIGxvb3AuICBBcyBzdWNoIGlkcyBhcmUgbm90IHZhbGlkIGFjY29y ZGluZyB0byBSRkMgMjEzMiBzZWN0aW9uIDkuMTQKICB0aGUgc2VydmVyIG5vIGxvbmdlciBhY2Nl cHRzIHRoZW0uICBDbGllbnQgaWRzIHdpdGggYSBsZW5ndGggb2YgMQogIGFyZSBhbHNvIGludmFs aWQgYnV0IHRoZSBzZXJ2ZXIgc3RpbGwgYWNjZXB0cyB0aGVtIGluIG9yZGVyIHRvCiAgbWluaW1p emUgZGlzcnVwdGlvbi4gIFRoZSByZXN0cmljdGlvbiB3aWxsIGxpa2VseSBiZSB0aWdodGVuZWQg aW4KICB0aGUgZnV0dXJlIHRvIGRpc2FsbG93IGlkcyB3aXRoIGEgbGVuZ3RoIG9mIDEuCiAgVGhh bmtzIHRvIE1hcmt1cyBIaWV0YXZhIG9mIENvZGVub21pY29uIENST1NTIHByb2plY3QgZm9yIHRo ZQogIGZpbmRpbmcgdGhpcyBpc3N1ZSBhbmQgQ0VSVC1GSSBmb3IgdnVsbmVyYWJpbGl0eSBjb29y ZGluYXRpb24uCiAgW0lTQy1CdWdzICMyOTg1MV0KICBDVkU6IENWRS0yMDEyLTM1NzEKCiEgQSBw YWlyIG9mIG1lbW9yeSBsZWFrcyB3ZXJlIGZvdW5kIGFuZCBmaXhlZC4gIFRoYW5rcyB0bwogIEds ZW4gRXVzdGFjZSBvZiBNYXNzZXkgVW5pdmVyc2l0eSwgTmV3IFplYWxhbmQgZm9yIGZpbmRpbmcK ICB0aGlzIGlzc3VlLgogIFtJU0MtQnVncyAjMzAwMjRdCiAgQ1ZFOiBDVkUtMjAxMi0zOTU0CgoJ CQlDaGFuZ2VzIHNpbmNlIDQuMS1FU1YtUjVyYzIKCi0gTm9uZQoKCQkJQ2hhbmdlcyBzaW5jZSA0 LjEtRVNWLVI1cmMxCgotIFJvdGF0ZSB0aGUgbGVhc2UgZmlsZSB3aGVuIHJ1bm5pbmcgaW4gdjYg bW9kZS4KICBUaGFua3MgdG8gQ2hyaXN0b3BoIE1vZW5jaC1UZWdlZGVyIGF0IEFzdGFybyBmb3Ig dGhlCiAgcmVwb3J0IGFuZCB0aGUgZmlyc3QgdmVyc2lvbiBvZiB0aGUgcGF0Y2guCiAgW0lTQy1C dWdzICMyNDg4N10KCgkJCUNoYW5nZXMgc2luY2UgNC4xLUVTVi1SNWIxCgotIE5vbmUKCgkJCUNo YW5nZXMgc2luY2UgNC4xLUVTVi1SNAoKLSBGaXhlZCB0aGUgY29kZSB0aGF0IGNoZWNrcyBpZiBh biBhZGRyZXNzIHRoZSBzZXJ2ZXIgaXMgcGxhbm5pbmcKICB0byBoYW5kIG91dCBpcyBpbiBhIHJl c2VydmVkIHJhbmdlLiAgVGhpcyB3b3VsZCBhcHBlYXIgYXMKICB0aGUgc2VydmVyIGJlaW5nIG91 dCBvZiBhZGRyZXNzZXMgaW4gcG9vbHMgd2l0aCBwYXJ0aWN1bGFyIHJhbmdlcy4KICBbSVNDLUJ1 Z3MgIzI2NDk4XQoKLSBUaWR5IHVwIHRoZSByZWNlaXZlIGNhbGxzIGFuZCBlbGltaW5hdGUgdGhl IG5lZWQgZm9yIGZvdW5kX3BrdC4KICBbSVNDLUJ1Z3MgIzI1MDY2XQoKLSBBZGQgc3VwcG9ydCBm b3IgSW5maW5pYmFuZCBvdmVyIHNvY2tldHMgdG8gdGhlIHNlcnZlciBhbmQKICByZWxheSBjb2Rl LiAgV2UndmUgdGVzdGVkIHRoaXMgb24gU29sYXJpcyBhbmQgaG9wZSB0byBleHBhbmQKICBzdXBw b3J0IGZvciBJbmZpbmliYW5kIGluIHRoZSBmdXR1cmUuICBUaGlzIHBhdGNoIGFsc28gY29ycmVj dHMKICBzb21lIGlzc3VlcyB3ZSBmb3VuZCBpbiB0aGUgc29ja2V0IGNvZGUuCiBbSVNDLUJ1Z3Mg IzI0MjQ1XQoKLSBBZGQgYSBjb21waWxlIHRpbWUgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0 aGUgbm9yZXR1cm4gYXR0cmlidXRlCiAgYW5kIHVzZSBpdCBmb3IgbG9nX2ZhdGFsIGlmIGl0J3Mg YXZhaWxhYmxlLiAgVGhpcyB3aWxsIGhlbHAgY29kZQogIGNoZWNraW5nIHByb2dyYW1zIHRvIGVs aW1pbmF0ZSBmYWxzZSBwb3NpdGl2ZXMuCiAgW0lTQy1CdWdzICMyNzUzOV0KCi0gRml4ZWQgbWFu eSBjb21waWxhdGlvbiBwcm9ibGVtcyAoInNldCwgYnV0IG5vdCB1c2VkIiB3YXJuaW5ncykgZm9y CiAgZ2NjIDQuNiB0aGF0IG1heSBhZmZlY3QgVWJ1bnR1IDExLjEwIHVzZXJzLgogIFtJU0MtQnVn cyAjMjc1ODhdCgotIFJlbW92ZSBvdXRkYXRlZCBub3RlIGluIHRoZSBkZXNjcmlwdGlvbiBvZiB0 aGUgYm9vdHAga2V5d29yZCBhYm91dCB0aGUKICBvcHRpb24gbm90IHNhdGlzZnlpbmcgdGhlIHJl cXVpcmVtZW50IG9mIGZhaWxvdmVyIHBlZXJzIGZvciBkZW55aW5nCiAgZHluYW1pYyBib290cCBj bGllbnRzLgogIFtJU0MtYnVncyAjMjg1NzRdCgotIE11bHRpcGxlIGl0ZW1zIHRvIGNsZWFuIHVw IElQdjYgYWRkcmVzcyBwcm9jZXNzaW5nLgogIFdoZW4gcHJvY2Vzc2luZyBhbiBJQSB0aGF0IHdl J3ZlIHNlZW4gY2hlY2sgdG8gc2VlIGlmIHRoZQogIGFkZHJlc3NlcyBhcmUgdXNhYmxlIChub3Qg aW4gdXNlIGJ5IHNvbWVib2R5IGVsc2UpIGJlZm9yZQogIGhhbmRpbmcgaXQgb3V0LgogIFdoZW4g cmVhZGluZyBpbiBsZWFzZXMgZnJvbSB0aGUgZmlsZSBkaXNjYXJkIGV4cGlyZWQgYWRkcmVzc2Vz LgogIFdoZW4gcGlja2luZyBhbiBhZGRyZXNzIGZvciBhIGNsaWVudCBpbmNsdWRlIHRoZSBJQSBJ RCBpbgogIGFkZGl0aW9uIHRvIHRoZSBjbGllbnQgSUQgdG8gZ2VuZXJhbGx5IHBpY2sgZGlmZmVy ZW50IGFkZHJlc3NlcwogIGZvciBkaWZmZXJlbnQgSUFzLgogIFtJU0MtQnVncyAjMjMxMzhdIFtJ U0MtQnVncyAjMjc5NDVdIFtJU0MtQnVncyAjMjU1ODZdCiAgW0lTQy1CdWdzICMyNzY4NF0KCi0g UmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrcyBpbiB0aGUgbGVhc2UgcXVlcnkgY29kZSBhbmQgY2xl YW4gdXAKICBzZXZlcmFsIGNvbXBpbGVyIGlzc3VlcyAoc29tZSBkZXJlZmVyZW5jZXMgb2YgTlVM TCBhbmQgdHJlYXRpbmcKICBhbiBpbnQgYXMgYSBib29sZWFuKS4KICBbSVNDLUJ1Z3MgIzI2MjAz XQoKLSBGaXggdGhlIE5BIGFuZCBQRCBhbGxvY2F0aW9uIGNvZGUgdG8gaGFuZGxlIHRoZSBjYXNl IHdoZXJlIGEgY2xpZW50CiAgcHJvdmlkZXMgYSBwcmVmZXJlbmNlIGFuZCB0aGUgc2VydmVyIGRv ZXNuJ3QgaGF2ZSBhbnkgYWRkcmVzc2VzIG9yCiAgcHJlZml4ZXMgYXZhaWxhYmxlLiAgUHJldmlv dWxzeSB0aGUgc2VydmVyIGlnbm9yZWQgdGhlIHJlcXVlc3Qgd2l0aAogIHRoaXMgcGF0Y2ggaXQg cmVwbGllcyB3aXRoIGEgTm9BZGRyc0F2YWlsIG9yIE5vUHJlZml4QXZhaWwgcmVzcG9uc2UuCiAg QnkgZGVmYXVsdCB0aGUgY29kZSBwZXJmb3JtcyBhY2NvcmRpbmcgdG8gdGhlIGVycmF0YSBvZiBB dWd1c3QgMjAxMAogIGZvciBSRkMgMzMxNSBzZWN0aW9uIDE3LjIuMjsgdG8gZW5hYmxlIHRoZSBw cmV2aW91cyBzdHlsZSBzZWUgdGhlCiAgc2VjdGlvbiBvbiBSRkMzMzE1X1BSRV9FUlJBVEFfMjAx MF8wOCBpbiBpbmNsdWRlcy9zaXRlLmguICBUaGlzIG9wdGlvbgogIG1heSBiZSByZW1vdmVkIGlu IHRoZSBmdXR1cmUuCiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0IGZvciB0aGUg cGF0Y2guCiAgW0lTQy1CdWdzICMyMjY3Nl0KCi0gRml4IHVwIHNvbWUgaXNzdWVzIGZvdW5kIGJ5 IHN0YXRpYyBhbmFseXNpcy4KICBBIHBvdGVudGlhbCBtZW1vcnkgbGVhayBhbmQgTlVMTCBkZXJl ZmVyZW5jZSBpbiBvbWFwaS4KICBUaGUgdXNlIG9mIGEgYm9vbGVhbiB0ZXN0IGluc3RlYWQgb2Yg YSBiaXR3aXNlIHRlc3QgaW4gZHN0LgogIFtJU0MtQnVncyAjMjg5NDFdCgoJCQlDaGFuZ2VzIHNp bmNlIDQuMS1FU1YtUjMKCi0gQWRkIEFNX01BSU5UQUlORVJfTU9ERSB0byBjb25maWd1cmUuYWMg dG8gYXZvaWQgcmVidWlsZGluZwogIGNvbmZpZ3VyYXRpb24gZmlsZXMuICBbSVNDLUJ1Z3MgIzI0 MTA3XQoKISBBZGQgYSBjaGVjayBmb3IgYSBudWxsIHBvaW50ZXIgYmVmb3JlIGNhbGxpbmcgdGhl IHJlZ2V4ZWMgZnVuY3Rpb24uCiAgV2l0aG91dCB0aGlzIGNoZWNrIHdlIGNvdWxkLCB1bmRlciBz b21lIGNpcmN1bXN0YW5jZXMsIHBhc3MKICBhIG51bGwgcG9pbnRlciB0byB0aGUgcmVnZXhlYyBm dW5jdGlvbiBjYXVzaW5nIGl0IHRvIHNlZ2ZhdWx0LgogIFRoYW5rcyB0byBhIHJlcG9ydCBmcm9t IEJsdWVDYXQgTmV0d29ya3MuCiAgW0lTQy1CdWdzICMyNjcwNF0uCiAgQ1ZFOiBDVkUtMjAxMS00 NTM5CgoJCQlDaGFuZ2VzIHNpbmNlIDQuMS1FU1YtUjNiMQoKLSBDb21waWxhdGlvbiBmaXggZm9y IGdjYyA0LjUgb3IgbmV3ZXIgaW4gc2VydmVyL2RkbnMuYwogIFtJU0MtQnVncyAjMjQ5NzNdCgot IFN0cmljdCBjaGVja3MgZm9yIGNvbnRlbnQgb2YgZG9tYWluLW5hbWUgREhDUHY0IG9wdGlvbiBj YW4gbm93IGJlCiAgY29uZmlndXJlZCBkdXJpbmcgY29tcGlsYXRpb24gdGltZS4gRXZlbiB0aG91 Z2ggUkZDMjEzMiBkb2VzIG5vdCBhbGxvdwogIHRvIHN0b3JlIG1vcmUgdGhhbiBvbmUgZG9tYWlu IGluIGRvbWFpbi1uYW1lIG9wdGlvbiwgc3VjaCBiZWhhdmlvciBpcwogIG5vdyBlbmFibGVkIGJ5 IGRlZmF1bHQsIGJ1dCB0aGlzIG1heSBjaGFuZ2Ugc29tZSB0aW1lIGluIHRoZSBmdXR1cmUuCiAg U2VlIEFDQ0VQVF9MSVNUX0lOX0RPTUFJTl9OQU1FIGRlZmluZSBpbiBpbmNsdWRlcy9zaXRlLmgu CiAgW0lTQy1CdWdzICMyNDE2N10KCiEgVHdvIHBhY2tldHMgd2VyZSBmb3VuZCB0aGF0IGNhdXNl IGEgc2VydmVyIHRvIGhhbHQuICBUaGUgY29kZQogIGhhcyBiZWVuIHVwZGF0ZWQgdG8gcHJvcGVy bHkgcHJvY2VzcyBvciByZWplY3QgdGhlIHBhY2tldHMgYXMKICBhcHByb3ByaWF0ZS4gIFRoYW5r cyB0byBEYXZpZCBaeWNoIGF0IFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMKICBmb3IgcmVwb3J0aW5n IHRoaXMgaXNzdWUuICBbSVNDLUJ1Z3MgIzI0OTYwXQogIE9uZSBDVkUgbnVtYmVyIGZvciBlYWNo IGNsYXNzIG9mIHBhY2tldC4KICBDVkUtMjAxMS0yNzQ4CiAgQ1ZFLTIwMTEtMjc0OQoKCQkJQ2hh bmdlcyBzaW5jZSA0LjEtRVNWLVIyCgotIERIQ1B2NiBzZXJ2ZXIgbm93IHJlc3BvbmRzIHByb3Bl cmx5IGlmIGNsaWVudCBhc2tzIGZvciBhIHByZWZpeCB0aGF0CiAgaXMgYWxyZWFkeSBhc3NpZ25l ZCB0byBhIGRpZmZlcmVudCBjbGllbnQuIFtJU0MtQnVncyAjMjM5NDhdCgotIEZpeCB0aGUgaGFu ZGxpbmcgb2YgY29ubmVjdGlvbiByZXF1ZXN0cyBvbiB0aGUgZmFpbG92ZXIgcG9ydC4KICBUaGlz IHdhcyBhIHNlY3VyaXR5IGlzc3VlIGluIDQuMi4wIGJ1dCBpcyBub3QgaW4gIDQuMS54LgogIFtJ U0MtQnVncyAjMjI2NzldCgotIFdoZW4gcHJvY2Vzc2luZyB0aGUgZm9ybWF0IGZsYWdzIGZvciBh IGdpdmVuIG9wdGlvbiBjb25zdW1lIHRoZQogIGZsYWcgaW5kaWNhdGluZyBhbiBvcHRpb25hbCB2 YWx1ZSBjb3JyZWN0bHkuICBBIHN5bXB0b20gb2YgdGhpcwogIGJ1ZyB3YXMgYW4gaW5maW5pdGUg bG9vcCB3aGVuIHRyeWluZyB0byBwYXJzZSB0aGUgc2xwLXNlcnZpY2Utc2NvcGUKICBvcHRpb24u ICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIE1hcml1cyBUb21hc2NoZXdza2kuCiAgW0lTQy1CdWdz ICMyMjA1NV0KCi0gTW9kaWZ5IHRoZSBkbHBpIGNvZGUgdG8gYWNjZXB0IGdldG1zZygpIHJldHVy bmluZyBhIHBvc2l0aXZlIHZhbHVlLgogIFtJU0MtQnVncyAjMjI4MjRdCgotIFJlbW92ZWQgdGhl IHJlc3RyaWN0aW9uIG9uIHVzaW5nIElQdjYgYWRkcmVzc2VzIGluIElQdjQgbW9kZS4gIFRoaXMK ICBhbGxvd3MgSVB2NCBvcHRpb25zIHdoaWNoIGNvbnRhaW4gSVB2NiBhZGRyZXNzZXMgdG8gYmUg c3BlY2lmaWVkLiAgRm9yCiAgZXhhbXBsZSB0aGUgNnJkIG9wdGlvbiBjYW4gYmUgc3BlY2lmaWVk IGFuZCB1c2VkIGxpa2UgdGhpczoKICBbSVNDLUJ1Z3MgIzIzMDM5XQoKCW9wdGlvbiA2cmQgY29k ZSAyMTIgPSB7IGludGVnZXIgOCwgaW50ZWdlciA4LAoJCQkJaXA2LWFkZHJlc3MsIGFycmF5IG9m IGlwLWFkZHJlc3MgfTsKCW9wdGlvbiA2cmQgMTYgMTAgMjAwMTo6IDEuMi4zLjQsIDUuNi43Ljg7 CgotIEFkZCB0aGUgb3B0aW9uICItLW5vLXBpZCIgdG8gdGhlIGNsaWVudCwgcmVsYXkgYW5kIHNl cnZlciBjb2RlLAogIHRvIGRpc2FibGUgd3JpdGluZyBhIHBpZCBmaWxlLiAgQWRkIHRoZSBvcHRp b24gIi1wZiBwaWRmaWxlIgogIHRvIHRoZSByZWxheSB0byBhbGxvdyB0aGUgdXNlciB0byBzdXBw bHkgdGhlIHBpZGZpbGUgbmFtZSBhdAogIHJ1bnRpbWUuICBBZGQgdGhlICJ3aXRoLXJlbGF5Ni1w aWQtZmlsZSIgb3B0aW9uIHRvIGNvbmZpZ3VyZQogIHRvIGFsbG93IHRoZSB1c2VyIHRvIHN1cHBs eSB0aGUgcGlkZmlsZSBuYW1lIGZvciB0aGUgcmVsYXkKICBpbiB2NiBtb2RlIGF0IGNvbmZpZ3Vy ZSB0aW1lLgogIFtJU0MtQnVncyAjMjMzNTFdIFtJU0MtQnVncyAjMTc1NDFdCgotICdkaGNsaWVu dCcgbm8gbG9uZ2VyIHdhaXRzIGEgcmFuZG9tIGludGVydmFsIGFmdGVyIGZpcnN0IHN0YXJ0aW5n IHVwIHRvCiAgYmVnaW4gaW4gdGhlIElOSVQgc3RhdGUuICBUaGlzIGNvbmZvcm1zIHRvIFJGQyAy MTMxLCBidXQgZWxlY3RzIG5vdCB0bwogIGltcGxlbWVudCBhICdTSE9VTEQnIGRpcmVjdGlvbiBp biBzZWN0aW9uIDQuMS4gW0lTQy1CdWdzICMxOTY2MF0KCi0gQWRkZWQgJ2luaXRpYWwtZGVsYXkn IHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyBtYXhpbXVtIGFtb3VudCBvZiB0aW1lCiAgYmVmb3Jl IGNsaWVudCBnb2VzIHRvIHRoZSBJTklUIHN0YXRlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLiBJ biBwcmV2aW91cwogIHZlcnNpb25zIG9mIHRoZSBjb2RlIGNsaWVudCBjb3VsZCB3YWl0IHVwIHRv IDUgc2Vjb25kcy4gVGhlIG9sZCBiZWhhdmlvcgogIG1heSBiZSByZXN0b3JlZCBieSB1c2luZyAn aW5pdGlhbC1kZWxheSA1OycgaW4gdGhlIGNsaWVudCBjb25maWcgZmlsZS4KICBbSVNDLUJ1Z3Mg IzE5NjYwXQoKLSBJQ01QIHBpbmctY2hlY2sgc2hvdWxkIG5vdyBzaXQgY2xvc2VyIHRvIHByZWNp c2VseSB0aGUgbnVtYmVyIG9mIHNlY29uZHMKICBjb25maWd1cmVkIChvciBkZWZhdWx0IDEpLCBk dWUgdG8gbWFraW5nIHVzZSBvZiB0aGUgbmV3IG1pY3Jvc2Vjb25kCiAgc2NhbGUgdGltZXIgaW50 ZXJuYWxseSB0byBkaGNwZC4gIFRoaXMgY29ycmVjdHMgYSBidWcgd2hlcmUgdGhlIHNlcnZlcgog IG1heSBpbW1lZGlhdGVseSB0aW1lb3V0IGFuIElDTVAgcGluZy1jaGVjayBpZiBpdCB3YXMgbWFk ZSBsYXRlIGluIHRoZQogIGN1cnJlbnQgc2Vjb25kLiBbSVNDLUJ1Z3MgIzE5NjYwXQoKLSBUaGUg REhDUCBjbGllbnQgd2lsbCBzY2hlZHVsZSByZW5ld2FsIGFuZCByZWJpbmRpbmcgZXZlbnRzIGlu CiAgbWljcm9zZWNvbmRzIGlmIHRoZSBESENQIHNlcnZlciBwcm92aWRlZCBhIGxlYXNlLXRpbWUg dGhhdCB3b3VsZCByZXN1bHQKICBpbiBzdWItMS1zZWNvbmQgdGltZXJzLiAgVGhpcyBjb3JyZWN0 cyBhIGJ1ZyB3aGVyZSBhIDItc2Vjb25kIG9yIGxvd2VyCiAgbGVhc2UtdGltZSB3b3VsZCBjYXVz ZSB0aGUgREhDUCBjbGllbnQgdG8gZW50ZXIgYW4gaW5maW5pdGUgbG9vcCBieQogIHNjaGVkdWxp bmcgcmVuZXdhbCBhdCB6ZXJvIHNlY29uZHMuIFtJU0MtQnVncyAjMTk2NjBdCgotIENsaWVudCBs ZWFzZSByZWNvcmRzIGFyZSByZWNvcmRlZCBhdCBtb3N0IG9uY2UgZXZlcnkgMTUgc2Vjb25kcy4g IFRoaXMKICBrZWVwcyB0aGUgY2xpZW50IGZyb20gZmlsbGluZyB0aGUgbGVhc2UgZGF0YWJhc2Ug ZGlzayBxdWlja2x5IG9uIHZlcnkKc21hbGwKICBsZWFzZSB0aW1lcy4gW0lTQy1CdWdzICMxOTY2 MF0KCi0gVG8gZGVmZW5kIGFnYWluc3QgUkZDIDIxMzEgbm9uLWNvbXBsaWFudCBESENQIHNlcnZl cnMgd2hpY2ggZmFpbCB0bwogIGFkdmVydGlzZSBhIGxlYXNlLXRpbWUgKGVpdGhlciBtYW5nbGVk LCBvciB6ZXJvIGluIHZhbHVlKSB0aGUgREhDUAogIGNsaWVudCBub3cgYWRkcyB0aGUgc2VydmVy IHRvIHRoZSByZWplY3QgbGlzdCBBQ0wgYW5kIHJldHVybnMgdG8gSU5JVAogIHN0YXRlIHRvIGhv cGVmdWxseSBmaW5kIGFuIFJGQyAyMTMxIGNvbXBsaWFudCBzZXJ2ZXIgKG9yIHJldHJ5IGluIElO SVQKICBmb3JldmVyKS4gW0lTQy1CdWdzICMxOTY2MF0KCi0gUGFyYW1ldGVycyBjb25maWd1cmVk IHRvIGV2YWx1YXRlIGZyb20gdXNlciBkZWZpbmVkIGZ1bmN0aW9uIGNhbGxzIGNhbgogIG5vdyBi ZSBjb3JyZWN0bHkgd3JpdHRlbiB0byBkaGNwZC5sZWFzZXMgKGFzIG9uICdvbiBldmVudHMnIG9y IGR5bmFtaWMKICBob3N0IHJlY29yZHMgaW5zZXJ0ZWQgdmlhIE9NQVBJKS4gIFtJU0MtQnVncyAj MjIyNjZdCgotIElmIGEgJ25leHQtc2VydmVyJyBwYXJhbWV0ZXIgaXMgY29uZmlndXJlZCBpbiBh IGR5bmFtaWMgaG9zdCByZWNvcmQgdmlhCiAgT01BUEkgYXMgYSBkb21haW4gbmFtZSwgdGhlIHN5 bnRheCB3cml0dGVuIHRvIGRpc2sgaXMgbm93IGNvcnJlY3RseSBwYXJzZWQKICB1cG9uIHJlc3Rh cnQuICBbSVNDLUJ1Z3MgIzIyMjY2XQoKLSBUaGUgREhDUCBzZXJ2ZXIgbm93IHJlc3BvbmRzIHRv IERIQ1BMRUFTRVFVRVJZIG1lc3NhZ2VzIGZyb20gYWdlbnRzIHVzaW5nCiAgSVAgYWRkcmVzc2Vz IG5vdCBjb3ZlcmVkIGJ5IGEgc3VibmV0IGluIGNvbmZpZ3VyYXRpb24uICBXaGV0aGVyIG9yIG5v dCB0bwogIHJlc3BvbmQgdG8gc3VjaCBhbiBhZ2VudCBpcyBzdGlsbCBnb3Zlcm5lZCBieSB0aGUg J2FsbG93IGxlYXNlcXVlcnk7JwogIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLCBpbiB0aGUgY2Fz ZSBvZiBhbiBhZ2VudCBub3QgY292ZXJlZCBieSBhCmNvbmZpZ3VyZWQKICBzdWJuZXQgdGhlIHJv b3QgY29uZmlndXJhdGlvbiBhcmVhIGlzIGV4YW1pbmVkLiBTZXJ2ZXIgbm93IGFsc28gcmV0dXJu cwogIHZlbmRvci1jbGFzcy1pZCBvcHRpb24sIGlmIGNsaWVudCBzZW50IGl0LiBbSVNDLUJ1Z3Mg IzIxMDk0XQoKLSBEb2N1bWVudGF0aW9uIGZpeGVzCiAgW0lTQy1CdWdzICMxNzk1OV0gYWRkIHRl eHQgdG8gQUlYIHNlY3Rpb24gZGVzY3JpYmluZyBob3cgdG8gaGF2ZSBpdCBzZW5kCiAgcmVzcG9u c2VzIHRvIHRoZSBhbGwtb25lcyBhZGRyZXNzLgogIFtJU0MtQnVncyAjMTk2MTVdIHVwZGF0ZSB0 aGUgaW5jbHVkZXMgaW4gZGhjcGN0bC9kaGNwY3RsLjMgdG8gYmUgbW9yZQpjb3JyZWN0CiAgW0lT Qy1CdWdzICMyMDY3Nl0gdXBkYXRlIGRoY3BkLmNvbmYuNSB0byBpbmNsdWRlIHRoZSBSRkMgbnVt YmVycyBmb3IgREROUwoKLSBSZWxheSBubyBsb25nZXIgY3Jhc2hlcywgd2hlbiBESENQIHBhY2tl dCBpcyByZWNlaXZlZCBvdmVyIGludGVyZmFjZQp3aXRob3V0CiAgYW55IElQdjQgYWRkcmVzcyBh c3NpZ25lZC4gW0lTQy1CdWdzICMyMjQwOV0KCi0gTGludXggUGFja2V0IEZpbHRlciBpbnRlcmZh Y2UgaW1wcm92ZW1lbnQuIHNvY2thZGRyX3BrdCBzdHJ1Y3R1cmUgaXMgdXNlZCwKICByYXRoZXIg dGhhbiBzb2NrYWRkci4gUGFja2V0IGV0aGVyVHlwZSBpcyBub3cgZm9yY2VkIHRvIEVUSF9QX0lQ LgogIFtJU0MtQnVncyAjMTg5NzVdCgotIE1pbm9yIGNvZGUgY2xlYW51cHMgLSBidXQgbm90ZSBw b3J0IGNoYW5nZSBmb3IgIzIzMTk2CiAgW0lTQy1CdWdzICMyMzQ3MF0gLSBNb2RpZnkgd2hlbiBh biBpZ25vcmUgcmV0dXJuIG1hY3JvIGlzIGRlZmluZWQgdG8KICBoYW5kbGUgdW5zZWQgZXJyb3Ig cmV0dXJuIHdhcm5pbmdzIGZvciBtb3JlIHZlcnNpb25zIG9mIGdjYy4KICBbSVNDLUJ1Z3MgIzIz MTk2XSAtIE1vZGlmeSB0aGUgcmVwbHkgaGFuZGxpbmcgaW4gdGhlIHNlcnZlciBjb2RlIHRvCiAg c2VuZCB0byBhIHNwZWNpZmllZCBwb3J0IHJhdGhlciB0aGFuIHRvIHRoZSBzb3VyY2UgcG9ydCBm b3IgdGhlIGluY29taW5nCiAgbWVzc2FnZS4gIFNlbmRpbmcgdG8gdGhlIHNvdXJjZSBwb3J0IHdh cyB0ZXN0IGNvZGUgdGhhdCBzaG91bGQgaGF2ZQogIGJlZW4gcmVtb3ZlZC4gIFRoZSBwcmV2aW91 cyBmdW5jdGlvbmFsaXR5IG1heSBiZSByZXN0b3JlZCBieSBkZWZpbmluZwogIFJFUExZX1RPX1NP VVJDRV9QT1JUIGluIHRoZSBpbmNsdWRlcy9zaXRlLmggZmlsZS4gIFdlIHN1Z2dlc3QgeW91IGRv bid0CiAgZW5hYmxlIHRoaXMgZXhjZXB0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogIFtJU0MtQnVn cyAjMjI2OTVdIC0gQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IgaW4gYW4gZXJyb3IgcGF0aC4KICBb SVNDLUJ1Z3MgIzE5MzY4XSAtIFRpZHkgdXAgdmFyaWFibGUgdHlwZXMgaW4gdmFsaWRhdGVfcG9y dC4KCi0gQ29kZSBjbGVhbnVwCiAgW0lTQy1CdWdzICMxMzE1MV0gcmVtb3ZlIG9ic29sZXRlIFBS T1RPLCBLYW5kUiwgSU5MSU5FIGFuZCBBTlNJX0RFQ0wKbWFjcm9zCgotIENvbXBpbGF0aW9uIHBy b2JsZW0gd2l0aCBnY2M0LjUgYW5kIG9tc2hlbGwuYyByZXNvbHZlZC4gW0lTQy1CdWdzICMyMzgz MV0KCi0gQ2xpZW50IFNjcmlwdCBmaXhlcwogIFtJU0MtQnVncyAjMjMwNDVdIFR5cG9zIGluIGNs aWVudC9zY3JpcHRzL29wZW5ic2QKICBbSVNDLUJ1Z3MgIzIzNTY1XSBJbiB0aGUgY2xpZW50IHNj cmlwdHMgYWRkIGEgem9uZSBpZCAoaW50ZXJmYWNlIGlkKSBpZgogIHRoZSBkb21haW4gc2VhcmNo IGFkZHJlc3MgaXMgbGluayBsb2NhbC4KICBbSVNDLUJ1Z3MgIzEyNzddIEluIHNvbWUgb2YgdGhl IGNsaWVudCBzY3JpcHRzIGFkZCBjb2RlIHRvIGhhbmRsZSB0aGUKICBjYXNlIG9mIHRoZSBkZWZh dWx0IHJvdXRlciBpbmZvcm1hdGlvbiBiZWluZyBjaGFuZ2VkIHdpdGhvdXQgdGhlIGFkZHJlc3MK ICBiZWluZyBjaGFuZ2VkLgoKLSBFbmxhcmdlIHRoZSBidWZmZXIgc2l6ZSB1c2VkIGJ5IHRoZSBP bXNoZWxsIGNvZGUgYW5kIHNvbWUgb2YgdGhlCiAgcHJpbnQgcm91dGluZXMgdG8gYWxsb3cgZm9y IGdyZWF0ZXIgdGhhbiA2MCBjaGFyYWN0ZXJzIG9yLCB3aGVuCiAgcHJpbnRpbmcgYXMgaGV4IHN0 cmluZ3MsIDIwIGNoYXJhY3RlcnMuICBbSVNDLUJ1Z3MgIzIyNzQzXQoKLSBJbiBTb2xhcmlzIDEx IHN3aXRjaCB0byB1c2luZyBzb2NrZXRzIGluc3RlYWQgb2YgRExQSSwgdGhhbmtzCiAgdG8gYSBw YXRjaCBmb3JtIE9yYWNsZS4gIFtJU0MtQnVncyAjMjQ2MzRdLgoKCQkJQ2hhbmdlcyBzaW5jZSA0 LjEtRVNWLVIxCgohIEluIGRoY2xpZW50IGNoZWNrIHRoZSBkYXRhIGZvciBzb21lIHN0cmluZyBv cHRpb25zIGZvcgogIHJlYXNvbmFibGVuZXNzIGJlZm9yZSBwYXNzaW5nIGl0IGFsb25nIHRvIHRo ZSBzY3JpcHQgdGhhdAogIGludGVyZmFjZXMgd2l0aCB0aGUgT1MuCiAgW0lTQy1CdWdzICMyMzcy Ml0KICBDVkU6IENWRS0yMDExLTA5OTcKCgkJCUNoYW5nZXMgc2luY2UgNC4xLUVTVgoKISBXaGVu IHByb2Nlc3NpbmcgYSByZXF1ZXN0IGluIHRoZSBESENQdjYgc2VydmVyIGNvZGUgdGhhdCBzcGVj aWZpZXMKICBhbiBhZGRyZXNzIHRoYXQgaXMgdGFnZ2VkIGFzIGFiYW5kb25lZCAobWVhbmluZyB3 ZSByZWNlaXZlZCBhCiAgZGVjbGluZSByZXF1ZXN0IGZvciBpdCBwcmV2aW91c2x5KSBkb24ndCBh dHRlbXB0IHRvIG1vdmUgaXQgZnJvbQogIHRoZSBpbmFjdGl2ZSB0byBhY3RpdmUgcG9vbCBhcyBk b2luZyBzbyBjYW4gcmVzdWx0IGluIHRoZSBzZXJ2ZXIKICBjcnNoaW5nIG9uIGFuIGFzc2VydCBm YWlsdXJlLiAgQWxzbyByZXRhZyB0aGUgbGVhc2UgYXMgYWN0aXZlCiAgYW5kIHJlc2V0IGl0cyB0 aW1lb3V0IHZhbHVlLgogIFtJU0MtQnVncyAjMjE5MjFdCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMS4y CgotIC4vY29uZmlndXJlIG9uIGxvbmdlciBzZWFyY2hlcyBmb3IgLWxjcnlwdG8gdG8gZXhwbGlj aXRseSBsaW5rIGFnYWluc3QuCiAgVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSAnZGhjbGllbnQnIHdv dWxkIGhhdmUgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzCiAgb24gJy91c3IvbGliJy4gIFtJ U0MtQnVncyAjMjE5NjddCgotIFJlc3RvcmUgcHJpbnRpbmcgb2YgdmFsdWVzIGluIG9tc2hlbGwg dG8gdGhlIHN0eWxlIHByZSAyMTU4NS4gIEZvcgogIDIxNTg1IHdlIGNoYW5nZWQgdGhlIHByaW50 IHJvdXRpbmVzIHRvIGFsd2F5cyBkaXNwbGF5IHRpbWUgdmFsdWVzCiAgYXMgYSBoZXggbGlzdC4g IFRoaXMgaGFkIGEgc2lkZSBlZmZlY3Qgb2YgcHJpbnRpbmcgYWxsIGRhdGEgc3RyaW5ncwogIGFz IGEgaGV4IGxpc3QuICBXZSBzaGFsbCBpbnZlc3RpZ2F0ZSBvdGhlciB3YXlzIG9mIGRpc3BsYXlp bmcgdGltZQogIHZhbHVlcyBtb3JlIHVzZWZ1bGx5LiAgW0lTQy1CdWdzICMyMjYyNl0KCgkJCUNo YW5nZXMgc2luY2UgNC4xLjJyYzEKCiEgSGFuZGxlIGEgcmVsYXkgZm9yd2FyZCBtZXNzYWdlIHdp dGggYW4gdW5zcGVjaWZpZWQgYWRkcmVzcyBpbiB0aGUKICBsaW5rIGFkZHJlc3MgZmllbGQuICBQ cmV2aW91c2x5IHN1Y2ggYSBtZXNzYWdlIHdvdWxkIGNhdXNlIHRoZQogIHNlcnZlciB0byBjcmFz aC4gIFRoYW5rcyB0byBhIHJlcG9ydCBmcm9tIEpvaG4gR2liYm9ucy4gIFtJU0MtQnVncyAjMjE5 OTJdCiAgQ0VSVDogVlUjMTAyMDQ3IENWRTogQ1ZFLTIwMTAtMzYxMQoKCQkJQ2hhbmdlcyBzaW5j ZSA0LjEuMmIxCgotIFVwZGF0ZSB0aGUgY29kZSB0byBwYXJzZSBkaGNwdjYgbGVhc2UgZmlsZXMg dG8gYWNjZXB0IGEgc2VtaS1jb2xvbiBhdAogIHRoZSBlbmQgb2YgdGhlIG1heC1saWZlIGFuZCBw cmVmZXJyZWQtbGlmZSBjbGF1c2VzLiAgSW4gb3JkZXIgdG8gYmUKICBiYWNrd2FyZHMgY29tcGF0 aWJsZSB3aXRoIG9sZGVyIGxlYXNlIGZpbGVzIG5vdCBmaW5kaW5nIGEgc2VtaS1jb2xvbgogIGlz IGFsc28gYWNjZXB0ZWQuICBbSVNDLUJ1Z3MgIzIyMzAzXS4KCiAgICAgICAgICAgICAgICAgICAg ICAgIENoYW5nZXMgc2luY2UgNC4xLjEKCi0gQ2xlYW5lZCB1cCBzb21lIGNvbXBpbGVyIHdhcm5p bmdzCgotIFByb2hpYml0IGluY2x1ZGluZyBsZWFzZSB0aW1lIGluZm9ybWF0aW9uIGluIGEgcmVz cG9uc2UgdG8gYSBESENQIElORk9STQogIEJ1ZyB0aWNrZXQgMjEwOTIuCgohIEFjY2VwdCBhIGNs aWVudCBpZCBvZiBsZW5ndGggMCB3aGlsZSBoYXNoaW5nLiAgUHJldmlvdXNseSB0aGUgc2VydmVy IHdvdWxkCiAgZXhpdCBpZiBpdCBhdHRlbXB0ZWQgdG8gaGFzaCBhIHplcm8gbGVuZ3RoIGNsaWVu dCBpZCwgcHJvdmlkaW5nIGF0dGFja2VycwogIHdpdGggYSBzaW1wbGUgZGVuaWFsIG9mIHNlcnZp Y2UgYXR0YWNrLiAgQnVnIHRpY2tldCAyMTI1My4KICBDRVJUOiBWVSM1NDE5MjEgLSBDVkU6IENW RS0yMDEwLTIxNTYKCi0gQSBidWcgd2FzIGZpeGVkIHRoYXQgY291bGQgY2F1c2UgdGhlIERIQ1B2 NiBzZXJ2ZXIgdG8gYWR2ZXJ0aXNlL2Fzc2lnbiBhCiAgcHJldmlvdXNseSBhbGxvY2F0ZWQgKGFj dGl2ZSkgbGVhc2UgdG8gYSBjbGllbnQgdGhhdCBoYXMgY2hhbmdlZCBzdWJuZXRzLAogIGRlc3Bp dGUgYmVpbmcgb24gZGlmZmVyZW50IHNoYXJlZCBuZXR3b3Jrcy4gIER5bmFtaWMgcHJlZml4ZXMg c3BlY2lmaWNhbGx5CiAgYWxsb2NhdGVkIGluIHNoYXJlZCBuZXR3b3JrcyBhbHNvIG5vdyBhcmUg bm90IG9mZmVyZWQgaWYgdGhlIGNsaWVudCBoYXMKICBtb3ZlZC4gIFtJU0MtQnVncyAjMjExNTJd CgotIEFkZCBkZWNsYXJhdGlvbiBmb3IgdmFyaWFibGUgaW4gZGVidWcgY29kZSBpbiBhbGxvYy5j LiAgW0lTQy1CdWdzICMyMTQ3Ml0KCi0gRG9jdW1lbnRhdGlvbiBjbGVhbnVwIGNvdmVyaW5nIG11 bHRpcGxlIHRpY2tldHMKICBbSVNDLUJ1Z3MgIzIwMjY1XSBbSVNDLUJ1Z3MgIzIwMjU5XSBbSVND LUJ1Z3MgIzE5NTM2XSBtaW5vciBjbGVhbnVwCiAgW0lTQy1CdWdzICMyMDI2M10gYWRkIHRleHQg ZGVzY3JpYmluZyBzb21lIGRlZmF1bHQgdmFsdWVzCiAgW0lTQy1CdWdzICMyMDE5M10gc2luZ2xl IHF1b3RlcyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIGluZGljYXRlIGEgY29udHJvbAogIGxpbmUg dG8gbnJvZmYsIGVzY2FwZSB0aGVtIGlmIHdlIGFjdHVhbGx5IHdhbnQgYSBxdW90ZS4KICBbSVND LUJ1Z3MgIzE4OTE2XSBzeW5jIHRoZSBwb2ludGVyIHRvIHdlYiBwYWdlcyBhbW9uZ3N0IHRoZSBk aWZmZXJlbnQgZG9jcwogIFtJU0MtQnVncyAjMjAxMDddIGNsYXJpZnkgZGVzY3JpcHRpb24gb2Yg aWEtcGQgYW5kIGlhLXByZWZpeC4KICBbSVNDLUJ1Z3MgIzIwMjQ1XSBjbGFyaWZ5IGVkaXRpbmcg dGhlIGZhaWxvdmVyIHN0YXRlIGluIGEgbGVhc2UgZmlsZQp0byBwdXQKICBhIHNlcnZlciBpbnRv IHRoZSBQQVJUTkVSLURPV04gc3RhdGUuCgotICdnZXQtaG9zdC1uYW1lcyB0cnVlOycgbm93IGFs c28gd29ya3MgZXZlbiBpZiAndXNlLWhvc3QtZGVjbC1uYW1lcyB0cnVlOycKICB3YXMgYWxzbyBj b25maWd1cmVkLiAgVGhlIG5hdHVyZSBvZiB0aGlzIHJlcGFpciBhbHNvIGZpeGVzIGFub3RoZXIK ICBlcnJvcjsgdGhlIGhvc3QtbmFtZSBzdXBwbGllZCBieSBhIGNsaWVudCBpcyBubyBsb25nZXIg b3ZlcnJpZGRlbiBieSBhCiAgcmV2ZXJzZSBsb29rdXAgb2YgdGhlIGxlYXNlIGFkZHJlc3MuICBU aGFua3MgdG8gYSBwYXRjaCBmcm9tIFdpbGNvIEJhYW4KICBIb2ZtYW4gc3VwcGxpZWQgdG8gdXMg YnkgdGhlIERlYmlhbiBwYWNrYWdlIG1haW50ZW5hbmNlIHRlYW0uCiAgW0lTQy1CdWdzICMyMTY5 MV0ge0RlYmlhbiBCdWcjNTA5NDQ1fQoKLSBUaGUgLlRIIHRhZyBmb3IgdGhlIGRoY3Atb3B0aW9u cyBtYW5wYWdlIHdhcyB0eXBvIHJlcGFpcmVkCiAgdGhhbmtzIHRvIGEgcmVwb3J0IGZyb20gamlk YW5uaSBhbmQgdGhlIERlYmlhbiBwYWNrYWdlIG1haW50ZW5hbmNlCiAgdGVhbS4gIFtJU0MtQnVn cyAjMjE2NzZdIHtEZWJpYW4gQnVnIzU2MzYxM30KCi0gTW9yZSBkb2N1bWVudGF0aW9uIGNoYW5n ZXMgLSBwcmltYXJpbHkgdG8gcHV0IHRoZSBvcHRpb25zIGluIHRoZSBkaGNsaWVudAogIGFuZCBk aGNwZCBtYW4gcGFnZXMgaW50byB0aGUgc3RhbmRhcmQgZm9ybS4gIFRoYW5rcyBpbiBwYXJ0IHRv IGEgcGF0Y2gKICBmcm9tIERhdmlkIENhbnRyZWxsIGF0IFJlZCBIYXQuCiAgW0lTQy1CdWdzICMy MDI2NF0gYW5kIHBhcnRzIG9mIFtJU0MtQnVncyAjMTc3NDRdIGRoY2xpZW50LjggY2hhbmdlcwoK LSBNaW5vciBjb21waWxhdGlvbiBlcnJvcnMgLSB0eXBlIG1pc21hdGNoZXMsIGV4dHJhIHNlbWkt Y29sb25zIGFmdGVyIG1hY3JvcwogIFtJU0MtQnVncyAjMjA4ODRdIFtJU0MtQnVncyAjMjA5NTNd IFtJU0MtQnVncyAjMjA5NTVdCgotIEFkZCBjb2RlIHRvIGNsZWFyIHRoZSBwb2ludGVyIHRvIGFu IG9iamVjdCBpbiBhbiBPTUFQSSBoYW5kbGUgd2hlbiB0aGUKICBvYmplY3QgaXMgZnJlZWQgZHVl IHRvIGEgZGVyZWZlcmVuY2UuICBbSVNDLUJ1Z3MgIzIxMzA2XQoKLSBGaXhlZCBhIGJ1ZyB0aGF0 IGxlYWtzIGhvc3QgcmVjb3JkIHJlZmVyZW5jZXMgb250byBsZWFzZSBzdHJ1Y3R1cmVzLAogIGNh dXNpbmcgdGhlIHNlcnZlciB0byBhcHBseSBjb25maWd1cmF0aW9uIGludGVuZGVkIGZvciBvbmUg aG9zdCB0byBhbnkKICBvdGhlciBpbm5vY2VudCBjbGllbnRzIHRoYXQgY29tZSBhbG9uZyBsYXRl ci4gIFtJU0MtQnVncyAjMjIwMThdCgotIE1pbm9yIGNvZGUgZml4ZXMKICBbSVNDLUJ1Z3MgIzE5 NTY2XSBXaGVuIHRyeWluZyB0byBmaW5kIHRoZSB6b25lIGZvciBhIG5hbWUgZm9yIGRkbnMgYWxs b3cKICB0aGUgbmFtZSB0byBiZSBhdCB0aGUgYXBleCBvZiB0aGUgem9uZS4KICBbSVNDLUJ1Z3Mg IzE5NjE3XSBSZXN0cmljdCBsZW5ndGggb2YgaW50ZXJmYWNlIG5hbWUgcmVhZCBmcm9tIGNvbW1h bmQgbGluZQogIGluIGRoY3BkIC0gYmFzZWQgb24gYSBwYXRjaCBmcm9tIERhdmlkIENhbnRyZWxs IGF0IFJlZCBIYXQuCiAgW0lTQy1CdWdzICMyMDAzOV0gQ29ycmVjdCBzb21lIGVycm9yIG1lc3Nh Z2VzIGluIGRoY3BkLmMKICBbSVNDLUJ1Z3MgIzIwMDcwXSBCZXR0ZXIgcmFuZ2UgY2hlY2sgb24g dmFsdWVzIHdoZW4gY3JlYXRpbmcgYSBESENJRC4KICBbSVNDLUJ1Z3MgIzIwMTk4XSBBdm9pZCB3 cml0aW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgZmllbGQgd2hlbiBhZGRpbmcKICBvdmVybHkgbG9u ZyBmaWxlIG9yIHNlcnZlciBuYW1lcyB0byBhIHBhY2tldCBhbmQgYWRkIGEgbG9nIG1lc3NhZ2UK ICBpZiB0aGUgY29uZmlndXJhdGlvbiBzdXBwbGllZCBvdmVybHkgbG9uZyBuYW1lcyBmb3IgdGhl c2UgZmllbGRzLgogIFRoYW5rcyB0byBNYXJ0aW4gUGFsYS4KICBbSVNDLUJ1Z3MgIzIxNDk3XSBB ZGQgYSBsaXR0bGUgbW9yZSByYW5kb21uZXNzIHRvIHJuZyBzZWVkIGluIGNsaWVudAogIHRoYW5r cyB0byBhIHBhdGNoIGZyb20gSmVyZW1pYWggSmlubm8uCgotIENvcnJlY3QgZXJyb3IgaGFuZGxp bmcgaW4gRExQSSBbSVNDLUJ1Z3MgIzIwMzc4XQoKLSBSZW1vdmUgX19zdW5fXyBhbmQgX19ocHV4 X18gdHlwZWRlZnMgaW4gb3NkZXAuaCBhcyB0aGV5IGFyZSBub3cgYmVpbmcKICBjaGVja2VkIGlu IGNvbmZpZ3VyZS4gIFtJU0MtQnVncyAjMjA0NDNdCgotIE1vZGlmeSBob3cgdGhlIGNtc2cgaGVh ZGVyIGlzIGFsbG9jYXRlZCB0aGUgdjYgc2VuZCBhbmQgcmVjZWl2ZWQgcm91dGluZXMKICB0byBj b21waWxlIG9uIG1vcmUgY29tcGlsZXJzLiAgW0lTQy1CdWdzICMyMDUyNF0KCi0gV2hlbiBwYXJz aW5nIGEgZG9tYWluIG5hbWUgZnJlZSB0aGUgbWVtb3J5IGZvciB0aGUgbmFtZSBhZnRlciB3ZSBh cmUKICBkb25lIHdpdGggaXQuICBbSVNDLUJ1Z3MgIzIwODI0XQoKLSBBZGQgYW4gZWxhcHNlZCB0 aW1lIG9wdGlvbiB0byB0aGUgcmVsZWFzZSBtZXNzYWdlIGFuZCByZWZhY3RvciB0aGUKICBjb2Rl IHRvIG1vdmUgbW9zdCBvZiB0aGUgY29tbW9uIGNvZGUgdG8gYSBzaW5nbGUgcm91dGluZS4KICBb SVNDLUJ1Z3MgIzIxMTcxXS4KCi0gUGFyc2UgZGF0ZSBzdHJpbmdzIG1vcmUgcHJvcGVybHkgLSB0 aGUgY29kZSBub3cgaGFuZGxlcyBzZW1pLWNvbG9ucyBpbgogIGRhdGUgc3RyaW5ncyBjb3JyZWN0 bHkuICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0LgogIFtJ U0MtQnVncyAjMjE1MDEsICMyMDU5OF0KCi0gRml4ZXMgdG8gbGVhc2UgaW5wdXQgYW5kIG91dHB1 dC4KICBbSVNDLUJ1Z3MgIzIwNDE4XSAtIFNvbWUgc3lzdGVtcyBkb24ndCBzdXBwb3J0IHRoZSAi JXMiIGFyZ3VtZW50IHRvCiAgc3RyZnRpbWUsIHBhc3RlIHRvZ2V0aGVyIHRoZSBzYW1lIHN0cmlu ZyB1c2luZyBta3RpbWUgaW5zdGVhZC4KICBbSVNDLUJ1Z3MgIzE5NTk2XSAtIFdoZW4gcGFyc2lu ZyBpYWlkIHZhbHVlcyBhY2NlcHQgcHJpbnRhYmxlCiAgY2hhcmFjdGVycy4KICBbSVNDLUJ1Z3Mg IzIxNTg1XSAtIEFsd2F5cyBwcmludCB0aW1lIHZhbHVlcyBpbiBvbXNoZWxsIGFzIGhleAogIGlu c3RlYWQgb2YgYXNjaWkgaWYgdGhlIHZhbHVlcyBoYXBwZW4gdG8gYmUgcHJpbnRhYmxlIGNoYXJh Y3RlcnMuCgotIE1pbm9yIGNoYW5nZXMgZm9yIHNjcmlwdHMsIGNvbmZpZ3VyZS5hYyBhbmQgTWFr ZWZpbGVzCiAgW0lTQy1CdWdzICMxOTE0N10gVXNlIGRvbWFpbi1zZWFyY2ggaW5zdGVhZCBvZiBk b21haW4tbmFtZSBpbiBtYW51YWwgYW5kCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSBjb25m IGZpbGUuICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIERhdmlkCkNhbnRyZWxsCiAgICAgICAgICAg ICAgICAgICAgYXQgUmVkIEhhdC4KICBbSVNDLUJ1Z3MgIzE5NzYxXSBSZXN0b3JlIGFkZHJlc3Mg d2hlbiBkb2luZyBhIHJlYmluZCBpbiBESENQdjYKICBbSVNDLUJ1Z3MgIzE5OTQ1XSBQcm9wZXJs eSBjbG9zZSB0aGUgcXVvdGUgb24gc29tZSBhcmd1bWVudHMuCiAgW0lTQy1CdWdzICMyMDk1Ml0g QWRkIDY0IGJpdCB0eXBlcyB0byBjb25maWd1cmUuYWMKICBbSVNDLUJ1Z3MgIzIxMzA4XSBBZGQg IlBBVEg9IiB0byBDTElFTlRfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQoKISBIYW5kbGUgcGlw ZSBmYWlsdXJlcyBtb3JlIGdyYWNlZnVsbHkuICBTb21lIE9TZXMgcGFzcyBhIFNJR1BJUEUKICBz aWduYWwgdG8gYSBwcm9jZXNzIGFuZCB3aWxsIGtpbGwgdGhlIHByb2Nlc3MgaWYgdGhlIHNpZ25h bCBpc24ndAogIGNhdWdodC4gIFRoaXMgcGF0Y2ggYWRkcyBjb2RlIHRvIHR1cm4gb2ZmIHRoZSBT SUdQSVBFIHNpZ25hbCB2aWEKICBhIHNldHNvY2tvcHQoKSBjYWxsIGFuZCB0byBpZ25vcmUgdGhl IFNJR1BJUEUgc2lnbmFsIGluIGNhc2UgdGhlCiAgT1MgZG9lc24ndCBzdXBwb3J0IHRoZSBuZWNl c3Nhcnkgc2V0c29ja29wdCgpIG9wdGlvbi4gIFRoaXMgcHJvYmxlbQogIHdhcyBmb3VuZCBkdXJp bmcgaW50ZXJuYWwgdGVzdGluZyB3aGVuIHRoZSB0d28gc2VydmVycyBpbiBhIGZhaWxvdmVyCiAg cGFpciB3ZXJlIHJlcGVhdGVkbHkgdW5hYmxlIHRvIGNvbW11bmljYXRlIGZvciBsb25nZXIgdGhh biB0aGUKICBtYXgtcmVzcG9uc2UtZGVsYXkgdmFsdWUuICBFdmVudHVhbGx5IG9uZSBvZiB0aGUg cGFpciBhdHRlbXB0ZWQgYQogIHdyaXRlKCkgY2FsbCBhdCBqdXN0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIG90aGVyIHNlcnZlciBraWxsZWQgdGhlCiAgY29ubmVjdGlvbiBhbmQgY2F1c2VkIGFuIHVu Y2F1Z2h0IFNJR1BJUEUgc2lnbmFsIHdoaWNoIGNhdXNlZCB0aGUKICBPUyB0byBraWxsIHRoZSBz ZXJ2ZXIuCiAgVGhpcyBpcyBhIG1pbm9yIHNlY3VyaXR5IGlzc3VlLiAgSXQgaXMgYSBzZWN1cml0 eSBpc3N1ZSBhcyBpdCBjYW4KICBjYXVzZSBhIHNlcnZlciB0byBzdG9wLiAgSXQgaXMgbWlub3Ig YXMgdGhlIGF0dGFja2VyIHdvdWxkIG5lZWQgdG8KICBiZSBhYmxlIHRvIGludGVycnVwdCB0cmFm ZmljIGJldHdlZW4gdGhlIHBhcnRuZXJzIGluIGEgZmFpbG92ZXIKICBwYWlyIGZvciBtYXgtcmVz cG9uc2UtZGVsYXkgc2Vjb25kcyBhdCB3aWxsIC0gaW4gd2hpY2ggY2FzZSB0aGUKICBkZWZlbmRl ciBoYXMgYmlnZ2VyIHByb2JsZW1zIHRoYW4gdGhlIERIQ1Agc2VydmVyIGJlaW5nIGtpbGxlZC4K ICBVc2luZyB0aGUgTklTVCBDVlNTIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgcmF0aW5nIHN5c3Rl bSB0aGlzCiAgaXNzdWUgc2NvcmVkIDEuMiwgbWVhbmluZyBpdCBpcyBub3QgYSBtYWpvciByaXNr IGZvciB1c2Vycy4KICBbSVNDLUJ1Z3MgIzIyMjY5XQoKICAgICAgICAgICAgICAgICAgICAgICAg Q2hhbmdlcyBzaW5jZSA0LjEuMXJjMQoKLSBXaGVuIHVzaW5nICdpZ25vcmUgY2xpZW50LXVwZGF0 ZXM7JywgdGhlIEZRRE4gcmV0dXJuZWQgdG8gdGhlIGNsaWVudAogIGlzIG5vIGxvbmdlciB0cnVu Y2F0ZWQgdG8gb25lIG9jdGV0LgoKICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyBzaW5j ZSA0LjEuMWIzCgotIE5vbmUuCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMS4xYjIKCi0gRml4IHRlc3Qg aW4gZGhjcF9pbnRlcmZhY2Vfc2lnbmFsX2hhbmRsZXIgdG8gY2hlY2sgdGhhdCB0aGUgaW5uZXIg aGFuZGxlcgogIGhhcyBhIHNpZ25hbF9oYW5kbGVyIGJlZm9yZSBjYWxsaW5nIGl0LgoKLSBCb3Ro IGhvc3QgYW5kIHN1Ym5ldDYgY29uZmlndXJhdGlvbiBncm91cHMgYXJlIG5vdyBpbmNsdWRlZCB3 aGV0aGVyIGEKICBmaXhlZC1hZGRyZXNzNiAoREhDUHY2KSBpcyBpbiB1c2Ugb3Igbm90LiAgSG9z dCBzY29wZWQgY29uZmlndXJhdGlvbiB0YWtlcwogIHByZWNlZGVuY2UuICBUaGlzIGZpeGVzIHR3 byBidWdzLCBvbmUgd2hlcmUgaG9zdCBzY29wZWQgY29uZmlndXJhdGlvbgogIHdvdWxkIG5vdCBi ZSBpbmNsdWRlZCBmcm9tIGEgbm9uLWZpeGVkLWFkZHJlc3M2IGhvc3QgcmVjb3JkLCBhbmQgdGhl IGVxdWFsCiAgYW5kIG9wcG9zaXRlIGJ1ZyB3aGVyZSBzdWJuZXQ2IHNjb3BlZCBjb25maWd1cmF0 aW9uIHdvdWxkIG5vdCBiZSB1c2VkIHdoZW4KICBvdmVyLXJpZGluZyB2YWx1ZXMgd2VyZSBub3Qg cHJlc2VudCBpbiBhIG1hdGNoaW5nIGZpeGVkLWFkZHJlc3M2IGhvc3QKICBjb25maWd1cmF0aW9u LgoKLSAuL2NvbmZpZ3VyZSBub3cgY2hlY2tzIHRvIGVuc3VyZSB0aGUgaW50WF90IGFuZCB1X2lu dFhfdCB0eXBlcyBhcmUKZGVmaW5lZCwKICBjb3JyZWN0aW5nIGEgY29tcGlsYXRpb24gZmFpbHVy ZSB3aGVuIHVzaW5nIFN1bidzIGNvbXBpbGVyLgoKLSBNb2RpZmllZCB0aGUgaGFuZGxpbmcgb2Yg YSBjb25uZWN0aW9uIHRvIGF2b2lkIHJlbGVhc2luZyB0aGUgb21hcGkgaW8KICBvYmplY3QgZm9y IHRoZSBjb25uZWN0aW9uIHdoaWxlIGl0IGlzIHN0aWxsIGluIHVzZS4gIE9uZSBzeW1wdG9tIGZy b20KICB0aGlzIGVycm9yIHdhcyBhIHNlZ2ZhdWx0IHdoZW4gYSBmYWlsb3ZlciBzZWNvbmRhcnkg YXR0ZW1wdGVkIHRvIGNvbm5lY3QKICB0byB0aGUgZmFpbG92ZXIgcHJpbWFyeSBpZiB0aGVpciBj bG9ja3Mgd2VyZSBub3Qgc3luY2hyb25pemVkLgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEuMWIxCgot IFJlbW92ZSBpbmZpbml0ZSBsb29wIGluIHRva2VuX3ByaW50X2luZGVudF9jb25jYXQoKS4KCi0g TWVtb3J5IGxlYWsgaW4gdGhlIGxvYWRfYmFsYW5jZV9taW5lKCkgZnVuY3Rpb24gaXMgZml4ZWQu ICBUaGlzIHdvdWxkCiAgbGVhayB+MjAtMzAgb2N0ZXRzIHBlciBESENQRElTQ09WRVIgcGFja2V0 IHdoaWxlIGZhaWxvdmVyIHdhcyBpbiB1c2UKICBhbmQgaW4gbm9ybWFsIHN0YXRlLgoKLSBWYXJp b3VzIGNvbXBpbGF0aW9uIGZpeGVzIGhhdmUgYmVlbiBpbmNsdWRlZCBmb3IgdGhlIG1lbW9yeSBy ZWxhdGVkCiAgREVCVUcgI2RlZmluZXMgaW4gaW5jbHVkZXMvc2l0ZS5oLgoKLSBGaXhlZCBMaW51 eCBjbGllbnQgc2NyaXB0ICd1bmFyeSBvcGVyYXRvciBleHBlY3RlZCcgZXJyb3JzIHdpdGggREhD UHY2LgoKLSBGaXhlZCBzZXR0aW5nIGhvc3RuYW1lIGluIExpbnV4IGhvc3RzIHRoYXQgcmVxdWly ZSBob3N0bmFtZSBhcmd1bWVudAogIHRvIGJlIGRvdWJsZS1xdW90ZWQuICBBbHNvIGFsbG93IHNl cnZlci1wcm92aWRlZCBob3N0bmFtZSB0bwogIG92ZXJyaWRlIGhvc3RuYW1lcyAnbG9jYWxob3N0 JyBhbmQgJyhub25lKScuCgotIEFkZGVkIGNsaWVudCBzdXBwb3J0IGZvciBzZXR0aW5nIGludGVy ZmFjZSBNVFUgYW5kIG1ldHJpYywgdGhhbmtzIHRvCiAgUm95ICJVYmVyTG9yZCIgTWFycGxlcyA8 cm95QG1hcnBsZXMubmFtZT4uCgotIEZpeGVkIGZhaWxvdmVyIHJlY29ubmVjdGlvbiByZXRyeSBj b2RlIHRvIGNvbnRpbnVlIHRvIHJldHJ5IHRvIHJlY29ubmVjdAogIHJhdGhlciB0aGFuIHJlc3Rh cnRpbmcgdGhlIGxpc3RlbmVyLgoKLSBDb21waWxhdGlvbiBvbiBTb2xhcmlzIHdpdGggVVNFX1NP Q0tFVFMgZGVmaW5lZCBpbiBpbmNsdWRlcy9zaXRlLmggaGFzCiAgYmVlbiByZXBhaXJlZC4gIE90 aGVyIFVTRV8gb3ZlcnJpZGVzIHNob3VsZCB3b3JrIGJldHRlci4KCi0gQSBjaGVjayBmb3IgdGhl IGxvY2FsIGZsYXZvciBvZiBJRk5BTVNJWiBoYWQgYSBicm9rZW4gJ2Vsc2UnIGNvbmRpdGlvbiwK ICB0aGF0IHByb2JhYmx5IHN0aWxsIHJlc3VsdGVkIGluIHRoZSBjb3JyZWN0IGJlaGF2aW91ciAo YnV0IHdvdWxkbid0IHVzZQogIGEgbGFyZ2VyIGRlZmluZWQgdmFsdWUgcHJvdmlkZWQgYnkgdGhl IGhvc3QgT1MpLgoKLSBGaXhlZCBhIGJ1ZyB3aGVyZSBhbiBPTUFQSSBzb2NrZXQgZGlzY29ubmVj dGlvbiBtZXNzYWdlIHdvdWxkIG5vdCByZXN1bHQKICBpbiBzY2hlZHVsaW5nIGEgZmFpbG92ZXIg cmVjb25uZWN0aW9uLCBpZiB0aGUgbGluayBoYWQgbm90IG5lZ290aWF0ZWQgYQogIGZhaWxvdmVy IGNvbm5lY3QgeWV0IChlLmcuOiBjb25uZWN0aW9uIHJlZnVzZWQsIGFzeW5jaCBzb2NrZXQgY29u bmVjdCgpCiAgdGltZW91dHMpLgoKLSBBIGJ1ZyB3YXMgZml4ZWQgdGhhdCBjYXVzZWQgdGhlICdj b25mbGljdC1kb25lJyBzdGF0ZSB0byBmYWlsIHRvIGJlIHBhcnNlZAogIGluIGZhaWxvdmVyIHN0 YXRlIHJlY29yZHMuCgohIEEgc3RhY2sgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3YXMgZml4ZWQg aW4gZGhjbGllbnQgdGhhdCBjb3VsZCBhbGxvdwogIHJlbW90ZSBhdHRhY2tlcnMgdG8gZXhlY3V0 ZSBhcmJpdHJhcnkgY29tbWFuZHMgYXMgcm9vdCBvbiB0aGUgc3lzdGVtLAogIG9yIHNpbXBseSB0 ZXJtaW5hdGUgdGhlIGNsaWVudCwgYnkgcHJvdmlkaW5nIGFuIG92ZXItbG9uZyBzdWJuZXQtbWFz awogIG9wdGlvbi4gIENFUlQgVlUjNDEwNjc2IC0gQ1ZFLTIwMDktMDY5MgoKLSBWZXJzaW9ucyAz LjAueCBzeW50YXggd2l0aCBtdWx0aXBsZSBuYW1lLT5jb2RlIG9wdGlvbiBkZWZpbml0aW9ucyBp cyBub3cKICBzdXBwb3J0ZWQuICBOb3RlIHRoYXQsIHNpbWlsYXJseSB0byAzLjAueCwgZm9yIGJ5 LWNvZGUgbG9va3VwcyBvbmx5IHRoZQogIGxhc3Qgb3B0aW9uIGRlZmluaXRpb24gaXMgdXNlZC4K Ci0gRml4ZWQgYSBidWcgd2hlcmUgYSB0aW1lIGRpZmZlcmVuY2Ugb2YgZ3JlYXRlciB0aGFuIDYw IHNlY29uZHMgYmV0d2VlbiBhCiAgZmFpbG92ZXIgcGFpciBjb3VsZCBjYXVzZSB0aGUgcHJpbWFy eSB0byBjcmFzaCBvbiBjb250YWN0IHdpdGggdGhlCiAgc2Vjb25kYXJ5LiAgVGhhbmtzIHRvIGEg cGF0Y2ggZnJvbSBTdGVpbmFyIEhhdWcuCgotIERvbid0IGxvb2sgZm9yIElQdjYgaW50ZXJmYWNl cyBvbiBMaW51eCB3aGVuIHJ1bm5pbmcgaW4gREhDUHY0IG1vZGUuCiAgVGhhbmtzIHRvIHBhdGNo ZXMgZnJvbSBNYXR0aGV3IE5ld3RvbiBhbmQgRGF2aWQgQ2FudHJlbGwuCgotIFNlY29uZGFyeSBz ZXJ2ZXJzIGluIGEgZmFpbG92ZXIgcGFpciB3aWxsIG5vdyBwZXJmb3JtIGRkbnMgcmVtb3ZhbHMg aWYKICB0aGV5IGhhZCBwZXJmb3JtZWQgZGRucyB1cGRhdGVzIG9uIGEgbGVhc2UgdGhhdCBpcyBl eHBpcmluZywgb3Igd2FzCiAgcmVsZWFzZWQgdGhyb3VnaCB0aGUgcHJpbWFyeS4gIEFzIHBhcnQg b2YgdGhlIHNhbWUgZml4LCBzdGFsZSBiaW5kaW5nCnNjb3BlcwogIHdpbGwgbm93IGJlIHJlbW92 ZWQgaWYgYSBjaGFuZ2UgaW4gaWRlbnRpdHkgb2YgYSBsZWFzZSdzIGFjdGl2ZSBjbGllbnQgaXMK ICBkZXRlY3RlZCwgcmF0aGVyIHRoYW4gc2ltcGx5IGlmIGEgbGVhc2UgaXMgbm90aWNlZCB0byBo YXZlIGV4cGlyZWQKKHdoaWNoIGl0CiAgbWF5IGhhdmUgZXhwaXJlZCB3aXRob3V0IGEgZmFpbG92 ZXIgc2VydmVyIG5vdGljaW5nIGluIHNvbWUgc2l0dWF0aW9ucykuCgotIEEgcGF0Y2ggc3VwcGxp ZWQgYnkgRGF2aWQgQ2FudHJlbGwgYXQgUmVkSGF0IHdhcyBhcHBsaWVkIHRoYXQgZGV0ZWN0cwog IGludmFsaWQgY2FsbGluZyBwYXJhbWV0ZXJzIGdpdmVuIHRvIHRoZSBuc19uYW1lX250b3AoKSBm dW5jdGlvbi4KICBTcGVjaWZpY2FsbHksIGl0IGRldGVjdHMgaWYgdGhlIGNhbGxlciBwYXNzZWQg YSBwb2ludGVyIGFuZCBzaXplIHBhaXIKICB0aGF0IGNhdXNlcyB0aGUgcG9pbnRlciB0byBpbnRl Z2VyLXdyYXAgcGFzdCB6ZXJvLgoKISBGaXhlZCBhIGZlbmNlcG9zdGluZyBidWcgd2hlbiBhIGNs aWVudCBoYWQgdHdvIGhvc3QgcmVjb3JkcyBjb25maWd1cmVkLAogIG9uZSB1c2luZyAndWlkJyBh bmQgdGhlIG90aGVyIHVzaW5nICdoYXJkd2FyZSBldGhlcm5ldCcuICBDVkUtMjAwOS0xODkyCgoJ CQlDaGFuZ2VzIHNpbmNlIDQuMS4wCgotIFZhbGlkYXRlIHRoZSBhcmd1bWVudCB0byB0aGUgLXAg b3B0aW9uLgoKLSBUaGUgbm90b3Jpb3VzICdvcHRpb24gPHVua25vd24+IC4uLiBsYXJnZXIgdGhh biBidWZmZXInIGxvZyBsaW5lLAogIHdoaWNoIGlzIHNlZW4gaW4gc29tZSBtYWxmb3JtZWQgREhD UCBjbGllbnQgcGFja2V0cywgd2FzIG1vZGlmaWVkLgogIEl0IG5vdyBsb2dzIHRoZSB1bml2ZXJz ZSBuYW1lLCBhbmQgZG9lcyBub3QgbG9nIHRoZSBsZW5ndGggdmFsdWVzCiAgKHdoaWNoIGFyZSBi b2d1cyBjb3JydXB0aW9uIHJlYWQgZnJvbSB0aGUgcGFja2V0IGFueXdheSkuICBJdCBhbHNvCiAg Y2FycmllcyBhIGhvcGVmdWxseSBtb3JlIHVzZWZ1bCBleHBsYW5hdGlvbi4KCi0gQSBidWcgd2Fz IGZpeGVkIHRoYXQgY2F1c2VkIHRoZSBzZXJ2ZXIgbm90IHRvIGFuc3dlciBzb21lIHZhbGlkIFNv bGljaXQKICBhbmQgUmVxdWVzdCBwYWNrZXRzLCBpZiB0aGUgZHluYW1pYyByYW5nZSBjb3Zlcmlu ZyBhbnkgcmVxdWVzdGVkIGFkZHJlc3NlcwogIGhhZCBiZWVuIGRlbGV0ZWQgZnJvbSBjb25maWd1 cmF0aW9uLgoKLSBTdXBwcmVzcyBzcHVyaW91cyB3YXJuaW5ncyBmcm9tIGNvbmZpZ3VyZSBhYm91 dCAtLWRhdGFyb290ZGlyCgotIFVwZGF0ZSB0aGUgY29kZSB0byBkZWFsIHdpdGggR0NDIDQuMy4g IFRoaXMgaW5jbHVkZWQgdHdvIHNldHMgb2YgY2hhbmdlcy4KICBUaGUgZmlyc3QgaXMgdG8gdGhl IGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gaW5jbHVkZSB0aGUgdXNlIG9mCiAgQUNfVVNFX1NZU1RF TV9FWFRFTlNJT05TLiAgVGhlIHNlY29uZCBpcyB0byBkZWFsIHdpdGggcmV0dXJuIHZhbHVlcyB0 aGF0CiAgd2VyZSBiZWluZyBpZ25vcmVkLgoKLSBUaGUgZGItdGltZS1mb3JtYXQgb3B0aW9uIHdh cyBkb2N1bWVudGVkIGluIG1hbnBhZ2VzLgoKLSBVc2luZyByZXNlcnZlZCBsZWFzZXMgbm8gbG9u Z2VyIHJlc3VsdHMgaW4gJ2xlYXNlIHdpdGggYmluZGluZyBzdGF0ZQogIGZyZWUgbm90IG9uIGl0 cyBxdWV1ZScgZXJyb3IgbWVzc2FnZXMsIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gRnJvZGUKICBO b3JkYWhsLgoKLSBERE5TIHJlbW92YWwgcm91dGluZXMgd2VyZSB1cGRhdGVkIHNvIHRoYXQgdGhl IERIQ0lEIGlzIG5vdCByZW1vdmVkIHVudGlsCiAgdGhlIGNsaWVudCBoYXMgYmVlbiBkZXByaXZl ZCBvZiBhbGwgQSBhbmQgQUFBQSByZWNvcmRzIChub3Qgb25seSB0aGUgbGFzdAogIG9uZSBvZiBl aXRoZXIgb2YgdGhvc2UpLiAgVGhpcyByZXNvbHZlcyBhIGJ1ZyB3aGVyZSBkdWFsIHN0YWNrIGNs aWVudHMKICB3b3VsZCBub3QgYmUgYWJsZSB0byByZWdhaW4gdGhlaXIgbmFtZXMgYWZ0ZXIgZWl0 aGVyIGV4cGlyYXRpb24gZXZlbnQuCgotIEZpeCBhIGJ1aWxkIGVycm9yIGluIGRoY3JlbGF5LCB1 c2luZyBvbGRlciB2ZXJzaW9ucyBvZiBnY2Mgd2l0aAogIGRoY3B2NiBkaXNhYmxlZC4KCi0gVHdv IHVuaW5pdGlhbGl6ZWQgc3RhY2sgc3RydWN0dXJlcyBhcmUgbm93IG1lbXNldCB0byB6ZXJvLCB0 aGFua3MgdG8KICBwYXRjaCBmcm9tIERhdmlkIENhbnRyZWxsIGF0IFJlZCBIYXQuCgotIEZpeGVk IGEgY29zbWV0aWMgYnVnIHdoZXJlIHByZXR0eS1wcmludGluZyB2YWxpZCBkb21haW4tc2VhcmNo IG9wdGlvbnMKd291bGQKICByZXN1bHQgaW4gYW4gZXJyb25lb3VzIGVycm9yIGxvZyBtZXNzYWdl ICgnZ2FyYmFnZSBpbiBmb3JtYXQgc3RyaW5nJykuCgotIEEgYnVnIGluIERMUEkgcGFja2V0IHRy YW5zbWlzc2lvbiAoU29sYXJpcywgSFAvVVgpIHRoYXQgY2F1c2VkIHRoZSBzZXJ2ZXIKICB0byBz dG9wIHJlY2VpdmluZyBwYWNrZXRzIGlzIGZpeGVkLiAgVGhlIHNhbWUgZml4IGFsc28gbWVhbnMg dGhhdCB0aGUgTUFDCiAgYWRkcmVzcyB3aWxsIG5vIGxvbmdlciBhcHBlYXIgJ2JvZ3VzJyBvbiBE TFBJLWJhc2VkIHN5c3RlbXMuCgotIEEgYnVnIGluIHNlbGVjdCBoYW5kbGluZyB3YXMgZGlzY292 ZXJlZCB3aGVyZSB0aGUgcmVzdWx0cyBvZiBvbmUgc2VsZWN0KCkKICBjYWxsIHdlcmUgZGlzY2Fy ZGVkLCBjYXVzaW5nIHRoZSBzZXJ2ZXIgdG8gcHJvY2VzcyB0aGUgbmV4dCBzZWxlY3QoKSBjYWxs CiAgYW5kIHVzZSBtb3JlIHN5c3RlbSBjYWxscyB0aGFuIHJlcXVpcmVkLiAgVGhpcyBoYXMgYmVl biByZXBhaXJlZCAtIHRoZQogIHNvY2tldHMgd2lsbCBiZSBoYW5kbGVkIGFmdGVyIHRoZSBmaXJz dCByZXR1cm4gZnJvbSBzZWxlY3QoKSwgcmVzdWx0aW5nIGluCiAgZmV3ZXIgc3lzdGVtIGNhbGxz LgoKLSBUaGUgdXBkYXRlLWNvbmZsaWN0LWRldGVjdGlvbiBmZWF0dXJlIHdvdWxkIGxlYXZlIGFu IEZRRE4gdXBkYXRlZCB3aXRob3V0CiAgYSBESENJRCAoc3RpbGwgY3VycmVudGx5IGltcGxlbWVu dGVkIGFzIGEgVFhUIFJSKS4gIFRoaXMgd291bGQgY2F1c2UgbGF0ZXIKICBleHBpcmF0aW9uIG9y IHJlbGVhc2UgZXZlbnRzIHRvIGZhaWwgdG8gcmVtb3ZlIHRoZSBkb21haW4gbmFtZS4gIFRoZQpm ZWF0dXJlCiAgbm93IGFsc28gaW5zZXJ0cyB0aGUgY2xpZW50J3MgdXAgdG8gZGF0ZSBESENJRCBy ZWNvcmQsIHNvIHJlY29yZHMgbWF5CnNhZmVseQogIGJlIHJlbW92ZWQgYXQgZXhwaXJhdGlvbiBv ciByZWxlYXNlIHRpbWUuICBUaGFua3MgdG8gYSBwYXRjaCBzdWJtaXR0ZWQgYnkKICBDaHJpc3Rv ZiBDaGVuLgoKICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyBzaW5jZSA0LjEuMGIxCgot IEEgbWlzc2luZyAiZWxzZSIgaW4gZGhjcmVsYXkuYyBjb3VsZCBoYXZlIGNhdXNlZCBhbiBpbnRl cmZhY2Ugbm90IHRvCiAgYmUgcmVjb2duaXplZC4KCgkJCUNoYW5nZXMgc2luY2UgNC4xLjBhMgoK LSBBIGNvc21ldGljIGJ1ZyBpbiBESENQREVDTElORSBwcm9jZXNzaW5nIHdhcyBmaXhlZCB3aGlj aCBjYXVzZWQgYWxsCiAgc3VjY2Vzc2Z1bCBESENQREVDTElORXMgdG8gYmUgbG9nZ2VkIGFzICJu b3QgZm91bmQiIHJhdGhlciB0aGFuCiAgImFiYW5kb25lZCIuCgotIEFkZGVkIGNvbmZpZ3VyYXRp b24gZmlsZSBleGFtcGxlcyBmb3IgREhDUHY2LgoKLSBTb21lIGZhaWxvdmVyIGRlYnVnZ2luZyAj ZGVmaW5lcyBoYXZlIGJlZW4gYmV0dGVyIGRlZmluZWQgYW5kIHNvbWUKICBoaWdoIGZyZXF1ZW5j eSBtZXNzYWdlcyBtb3ZlZCB0byBhIGRlZXBlciBkZWJ1Z2dpbmcgc3ltYm9sLgoKLSBUaGUgQ0xU VCBwYXJhbWV0ZXIgaW4gZmFpbG92ZXIgaXMgbm93IG9ubHkgdXBkYXRlZCBieSBjbGllbnQgYWN0 aXZpdHksCiAgYW5kIG5vdCBieSBmYWlsb3ZlciBiaW5kaW5nIHVwZGF0ZXMgKHRha2luZyBvbiB0 aGUgcGVlcidzIENMVFQpLgoKLSBGYWlsb3ZlciBCTkRVUEQgbWVzc2FnZXMgYXJlIG5vdyBkaXNj YXJkZWQgaWYgdGhleSBjb25mbGljdCB3aXRoIGFuCiAgdXBkYXRlIHRoYXQgaGFzIGJlZW4gdHJh bnNtaXR0ZWQsIGJ1dCBub3QgYWNrbm93bGVkZ2VkLgoKLSBBIGJ1ZyBjbGVhbmluZyB1cCB1bmtu b3duLXh4eCB0ZW1wb3Jhcnkgb3B0aW9uIGRlZmluaXRpb25zIHdhcyBmaXhlZC4KCi0gRGVsYXll ZC1hY2sgaXMgbm93IGEgY29tcGlsZS10aW1lIG9wdGlvbiwgY29tcGlsZWQgb3V0IGJ5IGRlZmF1 bHQuCiAgVGhpcyBmZWF0dXJlIGlzIHNpbXBseSB0b28gZXhwZXJpbWVudGFsIGZvciByaWdodCBu b3csIGFuZCBjYXVzZXMKICBzb21lIHByb2JsZW1zIHRvIHNvbWUgZmFpbG92ZXIgaW5zdGFsbGF0 aW9ucy4gIFdlIHdpbGwgcmV2aXNpdCB0aGlzCiAgaW4gZnV0dXJlIHJlbGVhc2VzLgoKLSBUaGUg IWluZXRfcHRvbigpIGNhbGwgaW4gcmVzX21rdXBkcmVjIHdhcyBhZGp1c3RlZCB0byAnPD0gMCcg YXMKICBpbmV0X3B0b24gcmV0dXJucyBlaXRoZXIgMSwgMCwgb3IgLTEuCgotIEEgZGhjbGllbnQt c2NyaXB0IGZvciBNYWNPUyBYIGhhcyBiZWVuIGluY2x1ZGVkLCB3aGljaCBlbmFibGVzCiAgJ2Ro Y2xpZW50IC02JyBzdXBwb3J0LgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEuMGExCgotIENvcnJlY3Rl ZCBsaXN0IG9mIGZhaWxvdmVyIHN0YXRlIHZhbHVlcyBpbiBkaGNwZCBtYW4gcGFnZS4KCi0gRml4 ZWQgYSBidWcgdGhhdCBjYXVzZWQgc29tZSByZXF1ZXN0IHR5cGVzIHRvIGJlIGxvZ2dlZCBpbmNv cnJlY3RseS4KCi0gQ2xpZW50cyB0aGF0IHNlbnQgYSBwYXJhbWV0ZXIgcmVxdWVzdCBsaXN0IGNv bnRhaW5pbmcgdGhlCiAgcm91dGVycyBvcHRpb24gYmVmb3JlIHRoZSBzdWJuZXQgbWFzayBvcHRp b24gd2VyZSByZWNlaXZpbmcKICBvbmx5IHRoZSBsYXR0ZXIuICBGaXhlZC4KCi0gVGhlIHNlcnZl ciB3YXNuJ3QgYWx3YXlzIHNlbmRpbmcgdGhlIEZRRE4gb3B0aW9uIHdoZW4gaXQgc2hvdWxkLgoK LSBBIHBhcnRuZXItZG93biBmYWlsb3ZlciBzZXJ2ZXIgbm8gbG9uZ2VyIGVtaXRzICdwZWVyIGhv bGRzIGFsbCBmcmVlCmxlYXNlcycKICBpZiBpdCBpcyBhYmxlIHRvIG5ld2x5LWFsbG9jYXRlIG9u ZSBvZiB0aGUgcGVlcidzIGxlYXNlcy4KCi0gRml4ZWQgYSBjb3JlZHVtcCB3aGVuIGFkZGluZyBh IGNsYXNzIHZpYSBPTUFQSS4KCi0gQ2hlY2sgd2hldGhlciBmaWxlcyBhcmUgemVybyBsZW5ndGgg YmVmb3JlIHRyeWluZyB0byBwYXJzZSB0aGVtLgoKLSBBcmkgRWRlbGtpbmQncyBQQVJBTk9JQSBw YXRjaCBoYXMgYmVlbiBpbmNsdWRlZCBhbmQgbWF5IGJlIGNvbXBpbGVkIGluCiAgdmlhIHR3byAu L2NvbmZpZ3VyZSBwYXJhbWV0ZXJzLCAtLWVuYWJsZS1wYXJhbm9pYSBhbmQKICAtLWVuYWJsZS1l YXJseS1jaHJvb3QuCgotIC4vY29uZmlndXJlIHdhcyBleHRlbmRlZCB0byBjb3ZlciBtYW55IG9w dGlvbmFsIGJ1aWxkIGZlYXR1cmVzLCBzdWNoCiAgYXMgZmFpbG92ZXIsIHNlcnZlciB0cmFjaW5n LCBkZWJ1Z2dpbmcsIGFuZCB0aGUgZXhlY3V0ZSgpIGNvbW1hbmQuCgotIFRoZXJlIGlzIG5vdyBh IGRlZmF1bHQgMS80IG9mIGEgc2Vjb25kIHNjaGVkdWxlZCBkZWxheSBiZXR3ZWVuIGRlbGF5ZWQK ICBmc3luYygpJ3MsIGl0IGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBtYXgtYWNrLWRlbGF5IGNv bmZpZ3VyYXRpb24KICBwYXJhbWV0ZXIuCgotIEEgYnVnIHdhcyBmaXhlZCB3aGVyZSB0aGUgbGVu Z3RoIG9mIGEgaG9zdG5hbWUgd2FzIG1pc2NhbGN1bGF0ZWQsIHNvIHRoYXQKICBob3N0cyB3ZXJl IGdpdmVuIG9kZC1sb29raW5nIGRvbWFpbiBuYW1lcyAoImZvby5iYXIuYmEuZXhhbXBsZS5jb20i KS4KCi0gU2hhcmVkIG5ldHdvcmsgc2VsZWN0aW9uIHNob3VsZCBiZSBkb25lIGZyb20gdGhlIGlu bmVybW9zdCByZWxheQogIHZhbGlkIGxpbmstYWRkcmVzcyBmaWVsZCwgcmF0aGVyIHRoYW4gdGhl IG91dGVybW9zdC4KCi0gUHJlZml4IHBvb2xzIGFyZSBhdHRhY2hlZCB0byBzaGFyZWQgbmV0d29y ayBzY29wZXMuCgotIE1lcmdlZCBJQV9YWCByZWxhdGVkIHN0cnVjdHVyZXMuCgotIEFkZCBESENQ djYgZmlsZXMgaW4gY29uZmlndXJlLgoKLSBBIG1lbW9yeSBsZWFrIHdoZW4gdXNpbmcgb21hcGkg aGFzIGJlZW4gZml4ZWQuCgotIERIQ1B2NiB2ZW5kb3ItY2xhc3Mgb3B0aW9ucyAoVlNJTykgYXJl IG5vdyBvbmx5IHNlbnQgd2hlbiB0aGV5IGFwcGVhcgogIG9uIHRoZSBESENQdjYgT1JPLiAgVGhp cyByZXNvbHZlcyBhIGJ1ZyB3aGVyZSBWU0lPIG9wdGlvbnMgd2VyZSBwbGFjZWQKICBpbiBJQV9O QSBlbmNhcHN1bGF0ZWQgb3B0aW9ucyBmaWVsZHMuCgotIEludGVncmF0ZWQgY2xpZW50IHdpdGgg c3RhdGVsZXNzLCB0ZW1wb3JhcnkgYWRkcmVzcyBhbmQgcHJlZml4IGRlbGVnYXRpb24KICBzdXBw b3J0LgoKLSBBIGRvdWJsZS1kZXJlZmVyZW5jZSBpbiBkaGNsaWVudCB0cmFuc21pc3Npb24gb2Yg REhDUERFQ0xJTkVzIHdhcwogIHJlcGFpcmVkLgoKLSBGaXggaGFuZGxpbmcgb2YgZm9ybWF0IGNv ZGUgJ1onLgoKLSBTdXBwb3J0ICItMSIgYXJndW1lbnQgaW4gREhDUHY2LgoKLSBNZXJnZSBESENQ djYtb25seSAiZGhjcmVsYXk2IiBpbnRvIGdlbmVyYWwtcHVycG9zZSAiZGhjcmVsYXkiICh1c2UK ICAiLTYiIG9wdGlvbiB0byBzZWxlY3QgREhDUHY2IG1vZGUpLgoKLSBGaXggaGFuZGxpbmcgb2Yg LUEgYW5kIC1hIGZsYWdzIGluIGRoY3JlbGF5OyBpdCB3YXMgZmFpbGluZyB0byBleHBhbmQKICBw YWNrZXQgc2l6ZSBhcyBuZWVkZWQgdG8gYWRkIHJlbGF5IGFnZW50IG9wdGlvbnMuCgotIEEgYnVn IGluIHN1Ym5ldDYgcGFyc2luZyB3aGVyZSBvcHRpb25zIGNvbnRhaW5lZCBpbiBzdWJuZXQ2IGNs YXVzZXMgd291bGQKICBub3QgYmUgYXBwbGllZCB0byBjbGllbnRzIGFkZHJlc3NlZCB3aXRoaW4g dGhhdCBuZXR3b3JrIHdhcyByZXBhaXJlZC4KCi0gV2hlbiBjb25maWd1cmluZyBhICJzdWJuZXQg e30iIG9yICJzdWJuZXQ2IHt9IiB3aXRob3V0IGFuIGV4cGxpY2l0CiAgc2hhcmVkLW5ldHdvcmsg ZW5jbG9zaW5nIGl0LCB0aGUgREhDUCBzb2Z0d2FyZSB3b3VsZCBzeW50aGVzaXplIGEKICBzaGFy ZWQtbmV0d29yayB0byBjb250YWluIHRoZSBzdWJuZXQuICBIb3dldmVyLCBhbGwgY29uZmlndXJh dGlvbgogIHBhcmFtZXRlcnMgd2l0aGluIHRoZSBzdWJuZXQgbW9yZSBpbnR1aXRpdmVseSBiZWxv bmcgInRvIGFueSBjbGllbnQKICBvbiB0aGF0IGludGVyZmFjZSIsIG9yIHJhdGhlciB0aGUgc3lu dGhlc2l6ZWQgc2hhcmVkLW5ldHdvcmsuICBTbywKICB3aGVuIGEgc2hhcmVkLW5ldHdvcmsgaXMg c3ludGhlc2l6ZWQsIGl0IGlzIHVzZWQgdG8gY29udGFpbiB0aGUKICBjb25maWd1cmF0aW9uIHBy ZXNlbnQgaW5zaWRlIHRoZSBzdWJuZXQge30gY2xhdXNlLiAgVGhpcyBtZWFucyB0aGF0CiAgdGhl IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB2YWxpZCBmb3IgYWxsIGNsaWVudHMgb24gdGhhdCBuZXR3 b3JrLCBub3QKICBqdXN0IHRob3NlIGFkZHJlc3NlZCBvdXQgb2YgdGhlIHN0YXRlZCBzdWJuZXQu ICBJZiB5b3UgaW50ZW5kZWQgdGhlCiAgb3Bwb3NpdGUsIHRoZSB3b3JrYXJvdW5kIGlzIHRvIGV4 cGxpY2l0bHkgY29uZmlndXJlIGFuIGVtcHR5CiAgc2hhcmVkLW5ldHdvcmsuCgotIEEgYnVnIHdh cyBmaXhlZCB3aGVyZSBJbmZvcm1hdGlvbi1SZXF1ZXN0IHByb2Nlc3Npbmcgd2FzIG5vdCBzb3Vy Y2luZwogIGNvbmZpZ3VyZWQgb3B0aW9uIHZhbHVlcy4KCi0gQSB3YXJuaW5nIHdhcyBhZGRlZCBz aW5jZSB0aGUgREhDUHY2IHByb2Nlc3Npbmcgc29mdHdhcmUgZG9lcyBub3QgeWV0CiAgc3VwcG9y dCBjbGFzcyBzdGF0ZW1lbnRzLgoKLSBDb21waWxhdGlvbiB3YXJuaW5ncyBvbiBHQ0MgNC4zIHJl bGF0aW5nIHRvIGJvb3RwIHNvdXJjZSBhZGRyZXNzCiAgc2VsZWN0aW9uIHdlcmUgcmVwYWlyZWQu CgotIFRoZSB2NiBCU0Qgc29ja2V0IG1ldGhvZCB3YXMgdXBkYXRlZCB0byB1c2UgYSBzaW5nbGUg VURQIEJTRCBzb2NrZXQKICBubyBtYXR0ZXIgaG93IG1hbnkgaW50ZXJmYWNlcyBhcmUgaW52b2x2 ZWQsIGRpZmZlcmVudGlhdGluZyB0aGUKICBpbnRlcmZhY2VzIHRoZSBwYWNrZXRzIHdlcmUgcmVj ZWl2ZWQgb24gYnkgdGhlIGludGVyZmFjZSBpbmRleCBzdXBwbGllZAogIGJ5IHRoZSBPUy4KCi0g VGhlIHJlbGF5IGFnZW50IG5vIGxvbmdlciBsaXN0ZW5zIHRvIHRoZSBBbGwgREhDUCBTZXJ2ZXJz IE11bHRpY2FzdAogIGFkZHJlc3MuCgotIEEgYnVnIHdhcyBmaXhlZCBpbiBkYXRhX3N0cmluZ19z cHJpbnRmYSgpIHdoZXJlIHZhX3N0YXJ0IHdhcyBvbmx5IGNhbGxlZAogIG9uY2UgZm9yIHR3byBp bnZvY2F0aW9ucyBvZiB2c3ByaW50ZigpIHZhcmlhbnRzLgoKLSBFUk8gKFJGQyA0OTk0KSBzZXJ2 ZXIgc3VwcG9ydC4KCi0gQmFzaWMgYW5kIHBhcnRpYWwgREhDUHY2IGxlYXNlcXVlcnkgc3VwcG9y dC4KCi0gUmVsaWFibGUgREhDUHY2IHJlbGVhc2UgKHByZXZpb3VzIGJlaGF2aW9yLCBzZW5kIHJl bGVhc2UgYW5kIGV4aXQsIGlzCiAgc3RpbGwgYXZhaWxhYmxlIHdpdGggZGhjbGllbnQgLTYgLTEg LXIpLgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjAuMCAobmV3IGZlYXR1cmVzKQoKLSBBZGRlZCBESENQ djYgcmFwaWQgY29tbWl0IHN1cHBvcnQuCgotIEFkZGVkIGV4cGxpY2l0IHBhcnNlciBzdXBwb3J0 IGZvciB6ZXJvLWxlbmd0aCBESENQIG9wdGlvbnMsIHN1Y2ggYXMKICByYXBpZC1jb21taXQsIHZp YSBmb3JtYXQgY29kZSAnWicuCgotIEl0J3Mgbm93IHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgImVu ZHMiIGZpZWxkIG9mIGEgbGVhc2Ugd2l0aCBPTUFQSS4KICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ug d2FudCBub3Qgb25seSB0byByZWxlYXNlIGEgbGVhc2UsIGJ1dCBhbHNvIG1ha2UKICBpdCBhdmFp bGFibGUgZm9yIHJldXNlIHJpZ2h0IGF3YXkuICBIYXQgdGlwIHRvIENocmlzdG9mIENoZW4uCgot IEZpeGVkIGRlZmluaXRpb24gb2YgdGhlIGlhYWRkciBoYXNoIGZ1bmN0aW9ucyB0byB1c2UgdGhl IGNvcnJlY3QKICBmdW5jdGlvbnMgd2hlbiByZWZlcmVuY2luZyBhbmQgZGVyZWZlcmVuY2luZyBt ZW1vcnkuCgotIFNvbWUgZGVmaW5pdGlvbnMgbm90IGluIHBoYXNlIHdpdGggdGhlIElBTkEgcmVn aXN0cnkgd2VyZSB1cGRhdGVkLgoKLSBBbGxvY2F0ZWQgaW50ZXJmYWNlIElEcyBhcmUgYmV0dGVy IGNvbnRyb2xsZWQgKCd1JyBiaXQgc2V0IHRvIHplcm8sCiAgcmVzZXJ2ZWQgSURzIGF2b2lkZWQp LgoKLSBVbmljYXN0IG9wdGlvbnMgYXJlIHRha2VuIGludG8gYWNjb3VudCBvbmx5IGZvciBSRU5F V3MuCgotIE5vQWRkcnNBdmFpbCBhbnN3ZXJzIHRvIFNPTElDSVRzIGFyZSBhbHdheXMgQURWRVJU SVNFcyBldmVuIHdoZW4gYSBTT0xJQ0lUCiAgY2FycmllcyBhIHJhcGlkLWNvbW1pdCBvcHRpb24u CgotIFJldHVybiBpbiBwbGFjZSBvZiByYWlzZSBhbiBpbXBvc3NpYmxlIGNvbmRpdGlvbiB3aGVu IG9uZSB0cmllcyB0byByZWxlYXNlCiAgYW4gZW1wdHkgYWN0aXZlIGxlYXNlLgoKLSBUaW1lciBn cmFudWxhcml0eSBpcyBub3cgMS8xMDBzIGluIHRoZSBESENQdjYgY2xpZW50LgoKLSBUaGUgZGhj bGllbnQtc2NyaXB0IHdhcyB1cGRhdGVkIHRvIGNyZWF0ZSBhIGhvc3Qgcm91dGUgZm9yIHRoZSBk ZWZhdWx0CiAgZ2F0ZXdheSBpZiB0aGUgc3VwcGxpZWQgc3VibmV0IG1hc2sgZm9yIGFuIElQdjQg YWRkcmVzcyB3YXMgYSAvMzIuICBUaGlzCiAgYWxsb3dzIHRoZSBjbGllbnQgdG8gd29yayBpbiAn Y2FwdGl2ZScgbmV0d29yayBlbnZpcm9ubWVudHMsIHdoZXJlIHRoZQogIG9wZXJhdG9yIGRvZXMg bm90IHdhbnQgY2xpZW50cyB0byBjcm9zc3RhbGsgZGlyZWN0bHkuCgotIE1JTlVTIHRva2VucyBz aG91bGQgYmUgcGFyc2FibGUgYWdhaW4uCgotIE11bHRpcGxlICh1cCB0byAiZGVsYXllZC1hY2sg eDsiIG1heGltdW0pIERIQ1B2NCBwYWNrZXRzIGFyZSBub3cKcXVldWVkIGFuZAogIHJlbGVhc2Vk IGluIGJ1cnN0cyBhZnRlciBzaW5nbGUgZnN5bmMoKSBldmVudHMgd2hlbiB0aGUgdXBwZXIgbGlt aXQgaXMKICByZWFjaGVkIG9yIGlmIHRoZSByZWNlaXZpbmcgc29ja2V0cyBnbyBkcnkuICBUaGUg cHJhY3RpY2FsIHVwc2hvdCBpcwogIHRoYXQgZnN5bmMtY291cGxlZCBzZXJ2ZXIgcGVyZm9ybWFu Y2UgaXMgbm93IG11bHRpcGxpY2l0aXZlbHkgaW5jcmVhc2VkLgogIFRoZSBkZWZhdWx0IGRlbGF5 ZWQgYWNrIGxpbWl0IGlzIDI4LiAgVGhhbmtzIGVudGlyZWx5IHRvIGEgcGF0Y2ggZnJvbQogIENo cmlzdG9mIENoZW4uCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMC4wIChidWcgZml4ZXMpCgotIERIQ1Ag bm93IGJ1aWxkcyBvbiBBSVguCgotIEV4aXQgd2l0aCB3YXJuaW5nIHdoZW4gREhDUHY2LXNwZWNp ZmljIHN0YXRlbWVudHMgYXJlIHVzZWQgaW4gdGhlCiAgY29uZmlnIGZpbGUgYnV0IC02IGlzIG5v dCBzcGVjaWZpZWQuCgotIEZpeGVkICItLXZlcnNpb24iIGZsYWcgaW4gZGhjcmVsYXkKCi0gVGhl ICdtaW4tc2VjcycgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIncyBsb2cgbWVzc2FnZSBoYXMgYmVl biB1cGRhdGVkIHRvCiAgYmUgbW9yZSBoZWxwZnVsLgoKLSBUaGUgd2FybmluZyBsb2dnZWQgd2hl biBhbiBhZGRyZXNzIHJhbmdlIGRvZXNuJ3QgZml0IGluIHRoZSBzdWJuZXRzCiAgdGhleSB3ZXJl IGRlY2xhcmVkIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYmUgbW9yZSBoZWxwZnVsIGFuZCBpZGVudGlm eSB0aGUKICB0eXBvIGluIGNvbmZpZ3VyYXRpb24gdGhhdCBjcmVhdGVkIHRoZSBzcGFubmluZyBh ZGRyZXNzZXMuCgotIEEgYnVnIGluIGZhaWxvdmVyIHBvb2wgcmViYWxhbmNpbmcgdGhhdCBjYXVz ZWQgUE9PTFJFUSBtZXNzYWdlIHBpbmctcG9uZ3MKICB3YXMgcmVwYWlyZWQuCgotIEEgZmxhdyBp biBmYWlsb3ZlciBwb29sIHJlYmFsYW5jaW5nIHRoYXQgY291bGQgY2F1c2UgUE9PTFJFUSBtZXNz YWdlcyB0bwogIGJlIHNlbnQgb3V0c2lkZSBvZiB0aGUgbWluLWJhbGFuY2UvbWF4LWJhbGFuY2Ug c2NoZWR1bGVkIGludGVydmFscyBoYXMKICBiZWVuIHJlcGFpcmVkLgoKLSBBIGNvc21ldGljIGJ1 ZyBkdXJpbmcgcG90ZW50aWFsLWNvbmZsaWN0IHJlY292ZXJ5IHRoYXQgY2F1c2VkIHRoZSBwZWVy J3MKICAnY29uZmxpY3QtZG9uZScgc3RhdGUgbWVzc2FnZSB0byBiZSBsb2dnZWQgYXMgJ3Vua25v d24tc3RhdGUnIGhhcyBiZWVuCiAgcmVwYWlyZWQuICBJdCBpcyBub3cgbG9nZ2VkIGNvcnJlY3Rs eS4KCi0gQSBidWcgd2FzIGZpeGVkIHdoZXJlIHRoZSAnZ2lhZGRyJyBtYXkgYmUgdXNlZCB0byBm aW5kIHRoZSBjbGllbnQncyBzdWJuZXQKICByYXRoZXIgdGhhbiBpdHMgb3duICdjaWFkZHInLgoK LSBBIGxvZyBtZXNzYWdlIHdhcyBpbnRyb2R1Y2VkIHRvIGNsYXJpZnkgdGhlIHNpdHVhdGlvbiB3 aGVyZSBhIGZhaWxvdmVyCiAgJ2FkZHJlc3MnIHBhcmFtZXRlciAodGhlIHNlcnZlcidzIGxvY2Fs IGFkZHJlc3MpIGRpZCBub3QgcmVzb2x2ZSB0byBhbgogIElQdjQgYWRkcmVzcy4KCi0gVGhlIG1p bmltdW0gc2l0ZSBjb2RlIHZhbHVlIHdhcyBzZXQgdG8gMjI0IGluIDMuMS4wIHRvIHRyYWNrIFJG QzM5NDIuCiBUaGlzCiAgYnJva2UgYSBsb3Qgb2YgbGVnYWN5IHNpdGUgbG9jYWwgY29uZmlndXJh dGlvbnMuICBUaGUgbmV3IGNvZGUgaW4KcGxhY2Ugd2lsbAogIHRyYWNrIHNpdGUgbG9jYWwgc3Bh Y2UgbWluaW11bSBvcHRpb24gY29kZXMgYW5kIGxvZ3MgYSB3YXJuaW5nIHRvCmVuY291cmFnZQog IHVwZGF0ZXMgYW5kIGV4cGxvcmF0aW9uIG9mIHNpdGUgbG9jYWwgY29kZSBtaWdyYXRpb24gcHJv YmxlbXMuICBPcHRpb24KICBjb2RlcyBsZXNzIHRoYW4gMTI4IGluIHNpdGUgbG9jYWwgc3BhY2Vz IHJlbWFpbiBpbmFjY2Vzc2libGUuCgotIEEgcG9zc2libGUgcmVsYXkgYWdlbnQgb3B0aW9uIGJ1 ZyB3YXMgcmVwYWlyZWQgd2hlcmUgcmFuZG9tIHNlcnZlcgogIGluaXRpYWxpemF0aW9uIHN0YXRl IG1heSBoYXZlIGJlZW4gdXNlZCB0byBzaWduYWwgdGhlIHJlbGF5IGFnZW50CiAgaW5mb3JtYXRp b24gb3B0aW9ucyBzdWItb3B0aW9uIGNvZGUgZm9yIHRoZSAnRU5EJyBvZiB0aGUgb3B0aW9uIHNw YWNlLgoKLSBGaXhlcyB0byBhbGxvdyBjb2RlIHRvIGNvbXBpbGUgYW5kIHJ1biBvbiBTb2xhcmlz IDkuCgotIEZpeGVzIHRvIGFsbG93IGNvZGUgdG8gY29tcGlsZSBvbiBNYWMgT1MgWCBMZW9wYXJk ICgxMC41KS4KCi0gV2hlbiBzZXJ2ZXIgaXMgY29uZmlndXJlZCB3aXRoIG9wdGlvbnMgdGhhdCBp dCBvdmVycmlkZXMsIGEgd2FybmluZyBpcwogIGlzc3VlZCB3aGVuIHRoZSBjb25maWd1cmF0aW9u IGZpbGUgaXMgcmVhZCwgcmF0aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlCiAgb3B0aW9uIGlzIG92 ZXJyaWRkZW4uIFRoaXMgd2FzIGltcG9ydGFudCwgYmVjYXVzZSB0aGUgd2FybmluZyB3YXMgZ2l2 ZW4KICBldmVyeSB0aW1lIHRoZSBvcHRpb24gd2FzIG92ZXJyaWRkZW4sIHdoaWNoIGNvdWxkIGNy ZWF0ZSBhIGxvdCBvZgogIHVubmVjZXNzYXJ5IGxvZ2dpbmcuCgotIEZpeGVkIGEgY29tcGlsYXRp b24gcHJvYmxlbXMgb24gcGxhdGZvcm1zIHRoYXQgZGVmaW5lIGEgdmFsdWUgZm9yIEZEREksCiAg d2hpY2ggY29uZmxpY3RzIHdpdGggYSBkaGNwIGNvbmZpZ3VyYXRpb24gc3ludGF4IHRva2VuIGJ5 IHRoZSBzYW1lIG5hbWUuCgotIFdoZW4gYSBmYWlsb3ZlciBzZXJ2ZXIgc3VzcGVjdHMgaXQgaGFz IGVuY291bnRlcmVkIGEgcGVlciBydW5uaW5nIGEKICB2ZXJzaW9uIDMuMC54IGZhaWxvdmVyIHNl cnZlciwgYSB3YXJuaW5nIHRoYXQgdGhlIGZhaWxvdmVyIHdpcmUgcHJvdG9jb2wKICBpcyBpbmNv bXBhdGlibGUgaXMgcHJpbnRlZC4KCi0gVGhlIGZhaWxvdmVyIHNlcnZlciBubyBsb25nZXIgaXNz dWVzIGEgZmxvYXRpbmcgcG9pbnQgZXJyb3IgaWYgaXQKZW5jb3VudGVycwogIGEgcHJldmlvdXNs eSB1bmRlZmluZWQgb3B0aW9uIGNvZGUuCgotIEZpeCBzdGFydHVwIGVycm9yIG1lc3NhZ2VzIHRv IHJlcG9ydCBhIG1pc3NpbmcgInN1Ym5ldDYgZGVjbGFyYXRpb24iLApyYXRoZXIKICB0aGFuIGEg bWlzc2luZyAic3VibmV0IGRlY2xhcmF0aW9uIiwgd2hlbiBydW5uaW5nIGFzIGEgREhDUHY2IHNl cnZlci4KCi0gREhDUHY2IGNsaWVudCB0aW1lc3RhbXAgaW4gRFVJRCB3YXMgYmFzZWQgb24gdGhl IHllYXIgMTk3MCByYXRoZXIKICB0aGFuIHRoZSB5ZWFyIDIwMDAuCgotIFdhcm4gd2hlbiBhdHRl bXB0aW5nIHRvIHVzZSBhIGhhcmR3YXJlIHBhcmFtZXRlciBpbiBESENQdjYuCgotIERIQ1B2NiBy ZWxlYXNlZCByZXNvdXJjZXMgYXJlIG5vdyBtYXJrZWQgYXMgcmVsZWFzZWQgYnkgdGhlIGNsaWVu dC4KCi0gJ1NvZnQnIGJpbmRpbmdzIGhhdmUgbm8gbW9yZSBzaWRlLWVmZmVjdHMuCgoJCQlDaGFu Z2VzIHNpbmNlIDQuMC4wYjMKCi0gVGhlIHJldmVyc2UgZG5zIG5hbWUgZm9yIFBUUiB1cGRhdGVz IG9uIElQdjYgYWRkcmVzc2VzIGhhcyBiZWVuIGZpeGVkIHRvCiAgdXNlIGlwNi5hcnBhLiByYXRo ZXIgdGhhbiBkZWZhdWx0IHRvIGluLWFkZHIuYXJwYSBhbmQgcmVxdWlyZSB1c2VyCiAgY29uZmln dXJhdGlvbi4KCi0gZGhjNl9sZWFzZV9kZXN0cm95KCkgYW5kIGRoYzZfaWFfZGVzdHJveSgpIG5v dyBzZXQgbGVhc2UgYW5kIElBIHBvaW50ZXJzCiAgdG8gTlVMTCBhZnRlciBmcmVlaW5nLCB0byBw cmV2ZW50IHN1YnNlcXVlbnQgYWNjZXNzZXMgdG8gZnJlZWQgbWVtb3J5LgoKLSBUaGUgREhDUHY2 IHNlcnZlciB3b3VsZCBub3Qgc2VuZCB0aGUgcHJlZmVyZW5jZSBvcHRpb24gdW5sZXNzIHRoZQog IGNsaWVudCByZXF1ZXN0ZWQgaXQsIHZpYSB0aGUgT1JPLiBUaGlzIGhhcyBiZWVuIGZpeGVkLCBz byB0aGUgREhDUHY2CiAgc2VydmVyIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHByZWZlcmVuY2UgdmFs dWUgaWYgaXQgaXMgY29uZmlndXJlZC4KCi0gV2hlbiBhZGRyZXNzZXMgd2VyZSBwYXNzZWQgYXMg aGludHMgdG8gdGhlIHNlcnZlciBpbiBhbiBJQSwgdGhleSB3ZXJlCiAgaW5jb3JyZWN0bHkgaGFu ZGxlZCwgc29tZXRpbWVzIGJlaW5nIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIE5vdyB0aGUKICBzZXJ2 ZXIgd2lsbCB0cmVhdCB0aGVzZSBhcyBoaW50cyBhbmQgaWdub3JlIHRoZW0gaWYgaXQgY2Fubm90 IHN1cHBseQogIGEgcmVxdWVzdGVkIGFkZHJlc3MuCgotIElmIHRoZSBjbGllbnQgaGFkIG11bHRp cGxlIGFkZHJlc3NlcywgYW5kIG9uZSBleHBpcmVkICh3YXMgbm90IHJlbmV3ZWQKICBieSB0aGUg c2VydmVyKSwgdGhlIGNsaWVudCB3b3VsZCBjb250aW51ZSB0byBhdHRlbXB0IHRvIHJlbmV3IHRo ZSBzYW1lCiAgb2xkIGFkZHJlc3Mgb3ZlciBhbmQgb3Zlci4gIE5vdywgdGhlIGNsaWVudCB3aWxs IG9taXQgYW55IGV4cGlyZWQKICBhZGRyZXNzZXMgZnJvbSBmdXR1cmUgQ29uZmlybSwgUmVuZXcs IG9yIFJlYmluZCBtZXNzYWdlcy4KCi0gZGhjbGllbnQgLTYgd2lsbCBub3cgc2VsZWN0IHJlbmV3 L3JlYmluZCB0aW1lcnMgYmFzZWQgdXBvbiB0aGUgbG9uZ2VzdAogIGFkZHJlc3MgZXhwaXJhdGlv biB0aW1lIHJhdGhlciB0aGFuIHRoZSBzaG9ydGVzdCBleHBpcmF0aW9uIHRpbWUsIGluCiAgb3Jk ZXIgdG8gYXZvaWQgY2FzY2FkaW5nIHJlbmV3YWxzIGluIHRoZSBldmVudCBhIHNlcnZlciBlbGVj dHMgbm90IHRvCiAgZXh0ZW5kIG9uZSBvZiBtdWx0aXBsZSBJQUFERFIgbGVhc2VzLgoKLSBUaGUg c2VydmVyIG5vdyBsaW1pdHMgY2xpZW50cyB0aGF0IHJlcXVlc3QgbXVsdGlwbGUgYWRkcmVzc2Vz IHRvIG9uZQogIGFkZHJlc3MgcGVyIElBIGJ5IGRlZmF1bHQsIHdoaWNoIGNhbiBiZSBhZGp1c3Rl ZCB0aHJvdWdoIHRoZQogICJsaW1pdC1hZGRycy1wZXItaWEiIGNvbmZpZ3VyYXRpb24gb3B0aW9u LgoKLSBUaGUgREhDUHY2IGNsaWVudCBub3cgaXNzdWVzIGZyZXNoIHRyYW5zYWN0aW9uIElEcyBv biBSZW5ldyBhbmQgUmViaW5kCiAgbWVzc2FnZSBleGNoYW5nZXMsIHJhdGhlciB0aGFuIHVzaW5n IHRoZSBtb3N0IHJlY2VudCBJRC4KCi0gVGhlIERIQ1B2NiBzZXJ2ZXIgbm93IHJlcGxpZXMgdG8g SW5mb3JtYXRpb24tUmVxdWVzdCBtZXNzYWdlcy4KCi0gQSBidWcgd2FzIGZpeGVkIGluIHRoZSBk aGNsaWVudC1zY3JpcHQgZm9yIEJTRHMgdG8gY29ycmVjdGx5IGNhcnJ5IGVycm9yCiAgY29kZXMg dGhyb3VnaCBzb21lIGNvbmRpdGlvbnMuCgotIFRoZSBwYXJzaW5nIG9mIHNvbWUgb3B0aW9ucyBp biB0aGUgZGhjbGllbnQgbGVhc2UgZmlsZSwgaW4gcGFydGljdWxhcgogIHRoZSBzdWNjZXNzIERI Q1B2NiBzdGF0dXMtY29kZSwgd2FzIGZpeGVkLgoKLSBBIGJ1ZyB3YXMgZml4ZWQgdGhhdCBjYXVz ZWQgdGhlIERIQ1B2NiBPUk8gb3B0aW9uIHRvIGJlIGNvcnJ1cHRlZCB3aXRoCiAgc2VlbWluZ2x5 IHJhbmRvbSB2YWx1ZXMuCgotIEEgcmVmZXJlbmNlIG92ZXJsZWFrIGluIERIQ1B2NiBzaGFyZWQg bmV0d29yayBwcm9jZXNzaW5nIHdhcyByZXBhaXJlZC4KCi0gLi9jb25maWd1cmUgbm93IGF1dG9k ZXRlY3RzIGxvY2FsIGRhdGFiYXNlIGxvY2F0aW9ucyByYXRoZXIgdGhhbiB0cnlpbmcKICB0byBw dXQgZGhjcGQubGVhc2VzIGFuZCBkaGNsaWVudC5sZWFzZXMgaW4gL3Vzci9sb2NhbC92YXIvZGIs IHdoaWNoIG5vCiAgb25lIGV2ZXIgaGFzLgoKLSBSZWdyZXNzaW9uIGZpeCBmb3IgYnVnIHdoZXJl IHNlcnZlciBhZHZlcnRpc2VkIGEgSVB2NiBhZGRyZXNzIGluCiAgcmVzcG9uc2UgdG8gYSBTT0xJ Q0lUIGJ1dCB3b3VsZCBub3QgcmV0dXJuIHRoZSBhZGRyZXNzIGluIHJlc3BvbnNlCiAgdG8gYSBS RVFVRVNULgoKLSBBIGJ1ZyB3YXMgZml4ZWQgd2hlcmUgdGhlIERIQ1B2NiBzZXJ2ZXIgcHV0cyB0 aGUgTm9BZGRyc0F2YWlsIHN0YXR1cwogIGNvZGUgaW4gdGhlIElBX05BIHdhcyBmaXhlZC4gIFRo ZSBzdGF0dXMgY29kZSBub3cgYXBwZWFycyBpbiB0aGUgcm9vdAogIGxldmVsLgoKCQkJQ2hhbmdl cyBzaW5jZSA0LjAuMGIyCgotIENsYXJpZmllZCBlcnJvciBtZXNzYWdlIHdoZW4gbGVhc2UgbGlt aXQgZXhjZWVkZWQKCi0gUmVsYXRpdmUgdGltZSBtYXkgbm93IGJlIHVzZWQgYXMgYSBxdWFsaWZp ZXIgZm9yICdhbGxvdycgYW5kICdkZW55JyBhY2Nlc3MKICBjb250cm9sIGxpc3RzLiAgVGhlc2Ug ZGlyZWN0aXZlcyBtYXkgYmUgdXNlZCB0byBhc3Npc3QgaW4gcmUtYWRkcmVzc2luZwogIGFkZHJl c3MgcG9vbHMgd2l0aG91dCBoYXZpbmcgdG8gY29uc3RhbnRseSByZWNvbmZpZ3VyZSB0aGUgc2Vy dmVyLiAgUGxlYXNlCiAgc2VlICdtYW4gZGhjcGQuY29uZicgZm9yIG1vcmUgaW5mb3JtYXRpb24g b24gYWxsb3cvZGVueSAnYWZ0ZXIgdGltZScKc3ludGF4LgogIFRoYW5rcyB0byBhIHBhdGNoIGZy b20gQ2hyaXN0b2YgQ2hlbi4KCi0gVGhlIHNlcnZlciB3aWxsIG5vdyBpbmNsdWRlIG11bHRpcGxl IElBX05BJ3MgYW5kIG11bHRpcGxlIElBQUREUnMgd2l0aGluCiAgdGhlbSwgaWYgYWR2ZXJ0aXNl ZCBieSB0aGUgY2xpZW50LiAgSXQgc3RpbGwgb25seSBzZWVrcyB0byBhbGxvY2F0ZSBvbmUKICBu ZXcgYWRkcmVzcy4KCgkJCUNoYW5nZXMgc2luY2UgNC4wLjBiMQoKLSBVc2UgZGlmZmVyZW50IHBh dGhzIGZvciBQSUQgYW5kIGxlYXNlIGZpbGVzIHdoZW4gcnVubmluZyBpbiBESENQdjQKICBvciBE SENQdjYgbW9kZSwgc28gdGhhdCBzZXJ2ZXJzIGZvciBib3RoIHByb3RvY29scyBjYW4gYmUgcnVu CiAgc2ltdWx0YW5lb3VzbHkgb24gYSBzaW5nbGUgaW50ZXJmYWNlLgoKLSBGaXhlZCBhIGJ1ZmZl ciBvdmVyZmxvdyBlcnJvciB3aGljaCBjb3VsZCBoYXZlIGFsbG93ZWQgYSBkZW5pYWwKICBvZiBz ZXJ2aWNlIHVuZGVyIHVudXN1YWwgc2VydmVyIGNvbmZpZ3VyYXRpb25zCgotIEVsaW1pbmF0ZWQg YSBzcHVyaW91cyBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNsaWVudAoKLSBBIG51bWJlciBvZiBi dWdzIHdpdGggdGhlIGludGVybmFsIGhhbmRsaW5nIG9mIGxlYXNlIHN0YXRlIG9uIHRoZQogIHNl cnZlciBoYXZlIGJlZW4gZml4ZWQuIFNvbWUgb2YgdGhlc2UgY291bGQgY2F1c2Ugc2VydmVyIGNy YXNoZXMuCgotIFRoZSBwZWVyX3dhbnRzX2xlYXNlcygpIGNoYW5nZXMgcHVsbGVkIHVwIGZyb20g My4xLjAgd2VyZSBjb3JyZWN0ZWQsCiAgJ25ldmVyIHVzZWQnIGxlYXNlcyB3aWxsIG5vIGxvbmdl ciBjb25zaXN0ZW50bHkgc2hpZnQgYmV0d2VlbiBzZXJ2ZXJzCiAgb24gZXZlcnkgcG9vbCByZWJh bGFuY2UgcnVuLgoKLSBzZW5kbXNnKCkvcmVjdm1zZygpIGNvbnRyb2wgYnVmZmVycyBhcmUgbm93 IGRlY2xhcmVkIGluIHN1Y2ggYSB3YXkgdG8KICBlbnN1cmUgdGhleSBhcmUgY29ycmVjdGx5IGFs aWduZWQgb24gYWxsIChlc3AuIDY0LWJpdCkgYXJjaGl0ZWN0dXJlcy4KCi0gVGhlIGNsaWVudCBs ZWFzaW5nIHN1YnN5c3RlbSB3YXMgc3RyZWFtbGluZWQgYW5kIGNvcnJlY3RlZCB0byBhY2NvdW50 CiAgbW9yZSBjbG9zZWx5IGZvciBjaGFuZ2VzIGluIGNsaWVudCBsaW5rIGF0dGFjaG1lbnQgc2Vs ZWN0aW9uLgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjAuMGEzCgotIFRoZSBESENQIHNlcnZlciBubyBs b25nZXIgcmVxdWlyZXMgYSAiZGRucy11cGRhdGUtc3R5bGUiIHN0YXRlbWVudCwKICBhbmQgbm93 IGRlZmF1bHRzIHRvICJub25lIiwgd2hpY2ggbWVhbnMgRE5TIHVwZGF0ZXMgYXJlIGRpc2FibGVk LgoKLSBMb2cgbWVzc2FnZXMgd2hlbiBmYWlsb3ZlciBwZWVyIG5hbWVzIG1pc21hdGNoIGhhdmUg YmVlbiBpbXByb3ZlZCB0bwogIHBvaW50IG91dCB0aGUgcHJvYmxlbS4KCi0gQnVnIHdoZXJlIHNl cnZlciBhZHZlcnRpc2VkIGEgSVB2NiBhZGRyZXNzIGluIHJlc3BvbnNlIHRvIGEgU09MSUNJVAog IGJ1dCB3b3VsZCBub3QgcmV0dXJuIHRoZSBhZGRyZXNzIGluIHJlc3BvbnNlIHRvIGEgUkVRVUVT VC4gVGhhbmtzIHRvCiAgRGVubmlzIEtvdSBmb3IgZmluZGluZyB0aGUgYnVnLgoKLSBGaXhlZCBh biBlcnJvciBjYXVzaW5nIHRoZSBzZXJ2ZXIgdG8gbG9jayB1cCBvbiBsZWFzZSBleHBpcmF0aW9u LAogIHJlcG9ydGVkIGluZGVwZW5kZW50bHkgYnkgSm90aGlsaW5nYW0gVmFzdSBhbmQgRGVubmlz IEtvdS4KCi0gRml4ZWQgYSAuL2NvbmZpZ3VyZSBidWcgd2hlcmUgY29tcGlsZSB0ZXN0cyB3ZXJl IGZhaWxpbmcgZHVlIHRvCiAgIi1XZXJyb3IiICh1bnVzZWQgdmFyaWFibGUpIHJhdGhlciB0aGFu IHRoZSBhY3R1YWwgdGVzdCBmYWlsdXJlLiAgTGVhZAogIHRvIGluY29uc2lzdGVudCBhbmQgdW53 b3JrYWJsZSBhdXRvLWNvbmZpZ3VyYXRpb25zLgoKLSBDb21waWxhdGlvbiB3aXRoIERMUEkgYW5k IC1XZXJyb3IgaGFzIGJlZW4gcmVwYWlyZWQuCgotIEVycm9yIGluIGRlY29kaW5nIElBX05BIG9w dGlvbiBpZiBtdWx0aXBsZSBpbnRlcmZhY2VzIGFyZSBwcmVzZW50CiAgZml4ZWQgYnkgTWFyY3Vz IEdvbGxlci4KCi0gREhDUHY2IHNlcnZlciBDb25maXJtIG1lc3NhZ2UgcHJvY2Vzc2luZyBoYXMg YmVlbiBlbmhhbmNlZCAtIGl0IG5vCiAgbG9uZ2VyIHJlcGxpZXMgb25seSB0byBjbGllbnRzIHdp dGggaG9zdCB7fSByZWNvcmRzLCBpdCBub3cgcmVwbGllcwogIGFzIGRpcmVjdGVkIGluIFJGQzMz MTUgc2VjdGlvbiAxOC4yLjIgLSB0aGF0IGlzLCB0byBhbGwgY2xpZW50cwogIHJlZ2FyZGxlc3Mg b2YgdGhlIGV4aXN0ZW5jZSBvZiBiaW5kaW5ncy4KCi0gQSBjb3JlIGR1bXAgZHVyaW5nIGV4cGly ZWQgbGVhc2UgY2xlYW51cCBoYXMgYmVlbiByZXBhaXJlZC4KCi0gREROUyB1cGRhdGVzIHN0YXRl IGluZm9ybWF0aW9uIGFyZSBub3cgc3RvcmVkIGluICdiaW5kaW5nIHNjb3BlcycgdGhhdAogIGZv bGxvdyB0aGUgbGVhc2VzIHRocm91Z2ggdGhlaXIgbGlmZWN5Y2xlcy4gIFRoaXMgZW5hYmxlcyBE RE5TIHRlYXJkb3ducwogIG9uIGxlYXNlcyB0aGF0IGFyZSBhc3NpZ25lZCBhbmQgZXhwaXJlZCBp bmJldHdlZW4gYSBzZXJ2ZXIgcmVzdGFydCAodGhlCiAgc3RhdGUgaXMgcmVjb3ZlcmVkIGZyb20g ZGhjcGQubGVhc2VzKS4gIEFyYml0cmFyeSB1c2VyLXNwZWNpZmllZCBiaW5kaW5nCiAgc2NvcGVz ICgnc2V0IHZhciA9ICJ2YWx1ZSI7JykgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgoKLSBBZGRpdGlv bmFsIGNvbXBpbGF0aW9uIHByb2JsZW1zIG9uIEhQL1VYIGhhdmUgYmVlbiByZXBhaXJlZC4KCgkJ CUNoYW5nZXMgc2luY2UgNC4wLjBhMgoKLSBGaXggZm9yIHN0YXJ0dXAgd2hlcmUgdGhlcmUgYXJl IG5vIElQdjQgYWRkcmVzc2VzIG9uIGFuIGludGVyZmFjZS4KICBUaGFua3MgdG8gTWFyY3VzIEdv bGxlciBmb3IgcmVwb3J0aW5nIHRoZSBidWcuCgotIEZpeGVkIGZpbGUgZGVzY3JpcHRvciBsZWFr IG9uIGxpc3RlbiBmYWlsdXJlLiBUaGFua3MgdG8gVG9tIENsYXJrLgoKLSBCdWcgaW4gc2VydmVy IGNvbmZpZ3VyYXRpb24gcGFyc2VyIGNhdXNlZCBzZXJ2ZXIgdG8gZ2V0IHN0dWNrIG9uCiAgc3Rh cnR1cCBmb3IgY2VydGFpbiBiYWQgcG9vbCBkZWNsYXJhdGlvbnMuIFRoYW5rcyB0byBHdWlsbGF1 bWUKICBLbmlzcGVsIGZvciB0aGUgYnVnIHJlcG9ydCBhbmQgZml4LgoKLSBDb2RlIGNsZWFuZWQg dG8gcmVtb3ZlIHdhcm5pbmdzIHJlcG9ydGVkIGJ5ICJnY2MgLVdhbGwiLgoKLSBESENQdjYgaXMg bm93IHRoZSBkZWZhdWx0LiBZb3UgY2FuIGRpc2FibGUgREhDUHY2IHN1cHBvcnQgdXNpbmcgdGhl CiAgIi0tZGlzYWJsZS1kaGNwdjYiIGZsYWcgd2hlbiB5b3UgcnVuIHRoZSBjb25maWd1cmUgc2Ny aXB0LgoKLSBBbiBpbnRlcm5hbCBkYXRhYmFzZSBpbmNvbnNpc3RlbmN5IGJ1ZyB3YXMgcmVwYWly ZWQgd2hlcmUgdGhlIHNlcnZlcgogIHdvdWxkIHNlZ2ZhdWx0IGlmIGEgY2xpZW50IGF0dGVtcHRl ZCB0byByZW5ldyBhIGxlYXNlIHRoYXQgaGFkIGJlZW4KICBsb2FkZWQgZnJvbSBwZXJzaXN0ZW50 IHN0b3JhZ2UuCgotICdyZXF1ZXN0JyBhbmQgJ2Fsc28gcmVxdWVzdCcgc3ludGF4ZXMgaGF2ZSBi ZWVuIGFkZGVkIHRvIGFjY29tbW9kYXRlCiAgdGhlIERIQ1B2NiBjbGllbnQgY29uZmlndXJhdGlv bi4gICdzZW5kIGRoY3A2Lm9ybycgaXMgbm8gbG9uZ2VyCiAgbmVjZXNzYXJ5LgoKLSBCdWcgZml4 ZWQgd2hlcmUgY29uZmlndXJhdGlvbiBmaWxlIHBhcnNpbmcgZGlkIG5vdCB3b3JrIHdpdGgKICB6 ZXJvLWxlbmd0aCBvcHRpb25zOyB0aGlzIG1hZGUgaXQgaW1wb3NzaWJsZSB0byBzZXQgdGhlCiAg cmFwaWQtY29tbWl0IG9wdGlvbi4KCi0gQm9ndXMgbWVzc2FnZXMgYWJvdXQgaG9zdCByZWNvcmRz IHdpdGggSVB2NCBmaXhlZC1hZGRyZXNzZXMgYmVpbmcgb2YKICBub24tMTI4LWJpdHMgaW4gbGVu Z3RoIHdlcmUgcmVtb3ZlZC4KCgkJCUNoYW5nZXMgc2luY2UgNC4wLjBhMQoKLSBCdWcgaW4gb2N0 YWwgcGFyc2luZyBmaXhlZC4gVGhhbmtzIHRvIEJlcm5kIEZ1aHJtYW5uIGZvciB0aGUgcmVwb3J0 CiAgYW5kIGZpeC4KCi0gQXV0b2NvbmYgbm93IHN1cHBsaWVzIHByb3BlciBmbGFncyBmb3IgU29s YXJpcyBESENQdjYgYnVpbGRzLgoKLSBGaXggZm9yIHBhcnNpbmcgZXJyb3Igb24gc29tZSBJUHY2 IGFkZHJlc3Nlcy4KCi0gSW52YWxpZCBDSURSIHJlcHJlc2VudGF0aW9uIGZvciBJUHY2IHN1Ym5l dHMgb3IgcmFuZ2VzIG5vdyBjaGVja2VkCiAgZm9yIHdoZW4gbG9hZGluZyBjb25maWd1cmF0aW9u LgoKLSBDb21waWxhdGlvbiBvbiBIUC9VWCBoYXMgYmVlbiByZXBhaXJlZC4gIFRoZSBjaGFuZ2Vz IHNob3VsZCBnZW5lcmFsbHkKICBhcHBseSB0byBhbnkgYXJjaGl0ZWN0dXJlIHRoYXQgc3VwcGxp ZXMgU0lPQ0dMSUZDT05GIGJ1dCBkb2VzIG5vdAogIHVzZSAnc3RydWN0IGxpZmNvbmYnIHN0cnVj dHVyZXMgdG8gcGFzcyB2YWx1ZXMuCgotIFR3byBuZXcgb3BlcmF0b3JzLCB+PSBhbmQgfn4sIGhh dmUgYmVlbiBpbnRlZ3JhdGVkIHRvIGltcGxlbWVudAogIGJvb2xlYW4gbWF0Y2hlcyBieSByZWd1 bGFyIGV4cHJlc3Npb24gKHN1Y2ggYXMgbWF5IGJlIHVzZWQgaW4KICBjbGFzcyBtYXRjaGluZyBz dGF0ZW1lbnRzKS4gIFRoYW5rcyB0byBhIHBhdGNoIGJ5IEFsZXhhbmRyIFMuCiAgQWdyYW5vdnNr eSwgd2hpY2ggdW5kZXJ3ZW50IHNsaWdodCBtb2RpZmljYXRpb24uCgotIEZpeCBmb3IgaWNtcCBw YWNrZXRzIG9uIDY0LWJpdCBzeXN0ZW1zIChidWcgaW50cm9kdWNlZCBpbiA0LjApLgoKLSBBIGJ1 ZyB3YXMgZml4ZWQgaW4gaW50ZXJmYWNlIGRpc2NvdmVyeSB3aGVyZWluIGFuIGVycm9yIGlkZW50 aWZ5aW5nCiAgYSBzZXJ2ZXItY29uZmlndXJlZCBpbnRlcmZhY2Ugd2l0aCBubyBJUHY0IGFkZHJl c3NlcyB3b3VsZCBTRUdWLgoKLSBGaXhlZCBhIGJ1ZyBpbiB3aGljaCB3cml0ZV9sZWFzZSgpIG1p Z2h0IHJlcG9ydCBhIGZhaWx1cmUgaW5jb3JyZWN0bHkKCi0gQWRkZWQgc3VwcG9ydCBmb3IgREhD UHY2IFJlbGVhc2UgbWVzc2FnZXMKCi0gQWRkZWQgLXggb3B0aW9uIHRvIGRoY2xpZW50LCB3aGlj aCB0cmlnZ2VycyBkaGNsaWVudCBwcm9jZXNzZXMKICB0byBleGl0IGdyYWNlZnVsbHkgd2l0aG91 dCByZWxlYXNpbmcgbGVhc2VzIGZpcnN0CgotIEFsbCBiaW5hcmllcyAoY2xpZW50LCBzZXJ2ZXIs IHJlbGF5KSBub3cgY2hhbmdlIGRpcmVjdG9yaWVzCiAgdG8gLyBiZWZvcmUgZ29pbmcgaW50byBk YWVtb24gbW9kZSwgc28gYXMgbm90IHRvIGhvbGQgJENXRCBvcGVuCgotIEZpeGVkIGEgYnVnIHBh cnNpbmcgREhDUHY2IGNsaWVudC1pZCdzIGluIGhvc3QtaWRlbnRpZmllciBzdGF0ZW1lbnRzCgot IEZpeGVkIGEgYnVnIHdpdGggdGhlICdkZG5zLXVwZGF0ZXMnIGJvb2xlYW4gc2VydmVyIGNvbmZp Z3VyYXRpb24KICBwYXJhbWV0ZXIsIHdoaWNoIGNhdXNlZCB0aGUgc2VydmVyIHRvIGZhaWwuCgoJ CQlDaGFuZ2VzIHNpbmNlIDQuMC4wLTIwMDcwNDEzCgotIE9sZCAoZXhwaXJlZCkgbGVhc2VzIGFy ZSBub3cgY2xlYW5lZC4KCi0gSVB2NiBzdWJuZXRzIG5vdyBoYXZlIHN1cHBvcnQgZm9yIGFyYml0 cmFyeSBhbGxvY2F0aW9uIHJhbmdlcyB2aWEKICBhIG5ldyAncmFuZ2U2JyBjb25maWd1cmF0aW9u IGRpcmVjdGl2ZS4KCi0gQW4gb2J2aWF0ZWQgb3B0aW9uIGNvZGUgaGFzaCBsb29rdXAgdG8gZmlu ZCBENk9fQ0xJRU5USUQgd2FzIHJlbW92ZWQuCgotIENvcnJlY3RlZCBzb21lIHNpdHVhdGlvbnMg d2hlcmUgdmFyaWFibGVzIG1pZ2h0IGJlIHVzZWQgd2l0aG91dCBiZWluZwogIGluaXRpYWxpemVk LgoKLSBTaWxlbmNlZCBzZXZlcmFsIG90aGVyIGNvbXBpbGVyIHdhcm5pbmdzLgoKLSBJbmNsdWRl IHRoZSBtb3JlIHN0YW5kYXJkIHN5cy91aW8uaCByYXRoZXIgdGhhbiByZWx5IHVwb24gb3RoZXIK ICBoZWFkZXIgZmlsZXMgdG8gaW5jbHVkZSBpdCAoZml4ZXMgYSBCU0QgNC4yIGNvbXBpbGUgZmFp bHVyZSkuCgotIER1cGxpY2F0ZSBkaGNsaWVudC1zY3JpcHQgdXBkYXRlcyBmb3IgREhDUHY2IHRv IGFsbCBwcm92aWRlZCBzY3JpcHRzLgoKLSBESENQdjQgSS9PIG1ldGhvZHMgdGhhdCBmYWlsZWQg dG8gc2Vuc2UgaGFyZHdhcmUgYWRkcmVzcyB3ZXJlIGNvcnJlY3RlZC4KCi0gREhDUHY0IGlzIG5v dyB0aGUgZGVmYXVsdCAoYXMgZG9jdW1lbnRlZCkgcmF0aGVyIHRoYW4gREhDUHY2LiAgVGhlIGRl ZmF1bHQKICB3YXMgc2V0IHRvIERIQ1B2NiB0byBmYWNpbGl0YXRlIGVhc2UgZWFybHkgZGV2ZWxv cG1lbnQsIGFuZCBmb3Jnb3R0ZW4uCgotIENvcnJlY3RlZCBhIHNlZ21lbnRhdGlvbiB2aW9sYXRp b24gaW4gREhDUHY0IHNvY2tldCBwcm9jZXNzaW5nLgoKLSBkaGNsaWVudCB3aWxsIG5vdyBmb3Jr KCkgaW50byB0aGUgYmFja2dyb3VuZCBvbmNlIGl0IGJpbmRzIHRvIGFuCiAgSVB2NiBhZGRyZXNz LCBvciBpbW1lZGlhdGVseSBpZiB0aGUgLW4gZmxhZyBpcyBzdXBwbGllZC4KCi0gLXEgaXMgbm93 IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvbiBkaGNsaWVudCwgd2l0aCAtZCBvciAtdiBlbmFibGlu ZwogIG5vbi1xdWlldCAoc3RkZXJyIGxvZ2dpbmcpIG1vZGUuCgotIEZpeCBkb2N1bWVudGF0aW9u IG9mIHRoZSBkb21haW4tc2VhcmNoIGF0b20gKHF1b3RlZCwgd2l0aCBjb21tYXMpLgoKLSBEb2N1 bWVudCBESENQdjYgb3B0aW9ucyBwcmVzZW50bHkgaW4gdGhlIGRlZmF1bHQgdGFibGUuCgotIFJl cGxhY2VkIC4vY29uZmlndXJlIHNoZWxsc2NyaXB0aW5nIHdpdGggR05VIEF1dG9jb25mLgoKCQkg ICAgIENoYW5nZXMgc2luY2UgMy4xLjAgKE5FVyBGRUFUVVJFUykKCi0gREhDUHY2IENsaWVudCBh bmQgU2VydmVyIHByb3RvY29sIHN1cHBvcnQuICBVc2UgJy02JyB0byBydW4gdGhlIGRhZW1vbnMK ICBhcyB2Ni1vbmx5LiAgVXNlICctNCcgdG8gcnVuIHRoZSBkYWVtb25zIGFzIHY0LW9ubHkgKGRl ZmF1bHQuICBUaGVyZSBpcwogIG5vIHN1cHBvcnQgY3VycmVudGx5IGZvciBib3RoLgoKLSBTZXJ2 ZXIgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSUFfTkEgb3B0aW9ucywgY29udGFpbmluZyBhdCBtb3N0 IG9uZQogIElBQUREUiBvcHRpb24uCgotIENsaWVudCBzdXBwb3J0IGZvciBvbmUgSUFfTkEgb3B0 aW9uLCBjb250YWluaW5nIGFueSBudW1iZXIgb2YgSUFBRERSCiAgb3B0aW9ucy4KCi0gU2VydmVy IHN1cHBvcnQgZm9yIHRoZSBESENQdjYgSW5mb3JtYXRpb24tcmVxdWVzdCBtZXNzYWdlLgoKLSBJ bmFwcHJvcHJpYXRlIHVuaWNhc3QgREhDUHY2IG1lc3NhZ2VzIHNlbnQgdG8gdGhlIHNlcnZlciBh cmUgbm93CiAgZGlzY2FyZGVkLCBhbmQgdGhpcyBoYXMgcmVhcmNoaXRlY3RlZCB0aGUgSU8gc3lz dGVtIHNsaWdodGx5LgoKLSBUaGUgREhDUHY2IHNlcnZlciBEVUlEIGRlZmF1bHRzIHRvIHR5cGUg MSwgaXMgcGVyc2lzdGVudGx5IHN0b3JlZCBpbgogIHRoZSBsZWFzZXMgZGF0YWJhc2UsIGFuZCBj YW4gYmUgb3Zlci1yaWRkZW4gKGVpdGhlciBjb21wbGV0ZWx5LCBvciBieQogIHNwZWNpZnlpbmcg dHlwZSAxIG9yIHR5cGUgMikuCgotIFRoZSBzZXJ2ZXIgb25seSB1c2VzIFJhcGlkLUNvbW1pdCBp ZiBpdCBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggdGhlCiAgUmFwaWQtQ29tbWl0IG9wdGlvbiBh bmQgdGhlIGNsaWVudCByZXF1ZXN0cyBpdC4KCi0gREROUyBzdXBwb3J0LiBXZSBub3cgdXBkYXRl IEFBQUEgcmVjb3JkcyBpbiB0aGUgc2FtZSBwbGFjZSB3ZSB3b3VsZAogIHVwZGF0ZSBBIHJlY29y ZHMsIGlmIHdlIGhhdmUgYW4gSVB2NiBhZGRyZXNzLiBXZSBhbHNvIGdlbmVyYXRlIElQNi5BUlBB CiAgc3R5bGUgbmFtZXMgZm9yIFBUUiByZWNvcmRzIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBJ UHY2IGFkZHJlc3MuICBCb3RoCiAgQSBhbmQgQUFBQSB1cGRhdGVzIGFyZSBkb25lIHVzaW5nIHRo ZSBzYW1lICdmcWRuLicgdmlydHVhbCBvcHRpb24gc3BhY2UKICAoYWx0aG91Z2ggdGhlIERIQ1B2 NCBGUUROIGFuZCBESENQdjYgRlFETiBvcHRpb25zIGFyZSBmb3JtYXR0ZWQKICBkaWZmZXJlbnRs eSwgdGhleSBib3RoIHVzZSB0aGUgc2FtZSBjb2RlIGhlcmUpLgoKLSBUaGUgTGludXggZGhjbGll bnQtc2NyaXB0IGF0dGVtcHRzIHRvIHNldCBhbmQgcmVtb3ZlIGFzc2lnbmVkIGFkZHJlc3NlcywK ICBhbmQgdG8gY29uZmlndXJlIC9ldGMvcmVzb2x2LmNvbmYgZnJvbSBuYW1lc2VydmVyIGFuZCBk b21haW4gbmFtZQogIGNvbmZpZ3VyYXRpb25zLiAgSXQgY2FuIGJlIGV4dGVuZGVkIHRvIGNvbmZp Z3VyZSBvdGhlciBwYXJhbWV0ZXJzLgoKLSBJbml0aWFsIERIQ1B2NiBsZWFzZSBzdXBwb3J0LgoK LSBUaGUgSU8gc3lzdGVtIG5vdyB0cmFja3MgYWxsIGxvY2FsIElQIGFkZHJlc3Nlcywgc28gdGhh dCB0aGUgREhDUAogIGFwcGxpY2F0aW9ucyAocGFydGljdWxhcmx5IHRoZSBkaGNyZWxheSkgY2Fu IGRpc2Nlcm4gYmV0d2VlbiB3aGF0IGZyYW1lcwogIHdlcmUgdHJhbnNtaXR0ZWQgdG8gaXQsIGFu ZCB3aGF0IGZyYW1lcyBhcmUgYmVpbmcgY2FycmllZCB0aHJvdWdoIGl0IHdoaWNoCiAgaXQgc2hv dWxkIG5vdCBpbnRlcmNlcHQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMS4wIChNYWludGVuYW5jZSkK Ci0gQSBidWcgd2FzIHJlcGFpcmVkIHdoZXJlIE1BQyBBZGRyZXNzIEFmZmluaXR5IGZvciB2aXJn aW4gbGVhc2VzIGFsd2F5cwogIG1hcHBlZCB0byB0aGUgcHJpbWFyeS4gIFZpcmdpbiBsZWFzZXMg bm93IGhhdmUgYW4gaW50ZXJsZWF2ZWQgcHJlZmVyZW5jZQogIGJldHdlZW4gcHJpbWFyeSBhbmQg c2Vjb25kYXJ5LgoKLSBBIGJ1ZyB3YXMgcmVwYWlyZWQgd2hlcmUgTUFDIEFkZHJlc3MgQWZmaW5p dHkgZm9yIGNsaWVudHMgd2l0aCBubyBjbGllbnQKICBpZGVudGlmaWVyIHdhcyBzb21ldGltZXMg bWlzaGFzaGVkIHRvIHRoZSBwZWVyLiAgTG9hZCBiYWxhbmNpbmcgZHVyaW5nCiAgcnVudGltZSBh bmQgcG9vbCByZWJhbGFuY2luZyB3ZXJlIG9wcG9zaW5nLgoKLSBBbiBhc3NlcnRpb24gaW4gbGVh c2UgY291bnRpbmcgcmVsYXRpbmcgdG8gcmVzZXJ2ZWQgbGVhc2VzIHdhcyByZXBhaXJlZC4KCi0g VGhlIHN1Ym5ldC1tYXNrIG9wdGlvbiBpbmNsdXNpb24gbm93IGNvbmZvcm1zIHdpdGggUkZDMjEz MiBzZWN0aW9uIDMuMzsKICBpdCB3aWxsIG9ubHkgYXBwZWFyIHByaW9yIHRvIHRoZSByb3V0ZXJz IG9wdGlvbiBpZiBpdCBpcyBwcmVzZW50IG9uIHRoZQogIFBhcmFtZXRlci1SZXF1ZXN0LUxpc3Qu ICBUaGUgc3VibmV0LW1hc2sgb3B0aW9uIHdpbGwgYWxzbyBvbmx5IGJlCiAgaW5jbHVkZWQgYnkg ZGVmYXVsdCAoaWYgaXQgaXMgbm90IG9uIHRoZSBQUkwpIGluIHJlc3BvbnNlIHRvIERJU0NPVkVS CiAgb3IgUkVRVUVTVCBtZXNzYWdlcy4KCi0gVGhlIEZRRE4gb3B0aW9uIGlzIG9ubHkgc3VwcGxp ZWQgaWYgdGhlIGNsaWVudCBzdXBwbGllZCBhbiBGUUROIG9wdGlvbiBvcgogIGlmIHRoZSBGUURO IG9wdGlvbiB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgb24gdGhlIFBSTC4KCi0gRHluYW1pYyBC T09UUCBsZWFzZXMgYXJlIG5vdyBsb2FkIGJhbGFuY2VkIGluIGZhaWxvdmVyLgoKCQkJQ2hhbmdl cyBzaW5jZSAzLjEuMHJjMQoKLSBUaGUgcGFyc2Ugd2FybmluZyB0aGF0ICdkZW55IGR5bmFtaWMg Ym9vdHA7JyBtdXN0IGJlIGNvbmZpZ3VyZWQgZm9yCiAgZmFpbG92ZXIgcHJvdGVjdGVkIHN1Ym5l dHMgd2FzIHJlbW92ZWQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMS4wYjIKCi0gRmFpbG92ZXIgcmVi YWxhbmNlIGV2ZW50cyBubyBsb25nZXIgcGxheSBwaW5nIHBvbmcgd2l0aCByb3VuZCBlcnJvcnMK ICAobW92aW5nIGxlYXNlcyBiZXR3ZWVuIGZyZWUgYW5kIGJhY2sgdG8gYmFja3VwIHdoZXJlIHRo ZXJlIGFyZSBhbgogIG9kZCBudW1iZXIgb2YgbGVhc2VzKS4KCi0gVGhlICdwb29sJyBsb2cgbGlu ZSBoYXMgYmVlbiBzcGxpdCBpbnRvIHR3byBtZXNzYWdlcywgb25lIGJlZm9yZSB0aGUKICByZWJh bGFuY2UgcnVuLCBhbmQgb25lIGFmdGVyLgoKLSBBbnkgcXVldWVkIEJOREFDS3MgYXJlIHRyYW5z bWl0dGVkIGJlZm9yZSB0cmFuc21pdHRpbmcgbmV3IEJORFVQRHMuCiAgVGhpcyBlbmZvcmNlcyB0 aGUgY29ycmVjdCBzZXF1ZW5jZSBvZiBldmVudHMgZm9yIHRoZSByZW1vdGUgc2VydmVyCiAgcHJv Y2Vzc2luZyB0aGVzZSBtZXNzYWdlcy4KCgkJCUNoYW5nZXMgc2luY2UgMy4xLjBiMQoKLSBGaXhl ZCBhIGJ1ZyB0aGF0IGNhdXNlZCBPTUFQSSBjbGllbnRzIHRvIGZyZWV6ZSB3aGVuIG9wZW5pbmcg bGVhc2UKICBvYmplY3RzLgoKLSBBIG5ldyBzZXJ2ZXIgY29uZmlnIG9wdGlvbiAiZnFkbi1yZXBs eSIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHNlcnZlcgogIHNob3VsZCBzZW5kIG91dCBvcHRpb24g ODEgKEZRRE4pLiAgRGVmYXVsdHMgdG8gIm9uIi4gIElmIHNldCB0byAib2ZmIiwKICB0aGUgRlFE TiBvcHRpb24gaXMgbm90IHNlbnQsIGV2ZW4gaWYgdGhlIGNsaWVudCByZXF1ZXN0ZWQgaXQuICBU aGlzIGlzCiAgbmVlZGVkIGJlY2F1c2Ugc29tZSBjbGllbnRzIG1pc2JlaGF2ZSBvdGhlcndpc2Uu ICBUaGFua3MgdG8gQ2hyaXN0b2YgQ2hlbgogIGF0IEFsbGlhbnouCgotIEFsbG93IHRyYWNlIG91 dHB1dCBmaWxlcyAoLXRmIG9wdGlvbikgdG8gYmUgb3ZlcndyaXR0ZW4sIHJhdGhlciB0aGFuCiAg Y3Jhc2hpbmcgZGhjcGQgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMKCi0gQSBidWcgd2FzIGZp eGVkIHRoYXQgY2F1c2VkIGRoY3BkIHRvIHNlZ2ZhdWx0IGlmIGEgcG9vbCB3YXMgZGVjbGFyZWQK ICBvdXRzaWRlIHRoZSBzY29wZSBvZiBhIHN1Ym5ldCBpbiBkaGNwZC5jb25mLgoKLSBTb21lIHVu aW5pdGlhbGl6ZWQgdmFsdWVzIHdlcmUgcmVwYWlyZWQgaW4gZGhjcGxlYXNlcXVlcnkuYyB0aGF0 CiAgY2F1c2VkIHRoZSBzZXJ2ZXIgdG8gYWJvcnQuCgotIEEgbmV3IHNlcnZlciBjb25maWcgb3B0 aW9uLCAnZG8tcmV2ZXJzZS11cGRhdGVzJywgaGFzIGJlZW4gYWRkZWQKICB3aGljaCBjYXVzZXMg dGhlIHNlcnZlciB0byBhYnN0YWluIGZyb20gcGVyZm9ybWluZyB1cGRhdGVzIG9uIFBUUgogIHJl Y29yZHMuICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIENocmlzdG9mIENoZW4gYXQgQWxsaWFuei4K Ci0gQSBidWcgd2FzIHJlcGFpcmVkIGluIHN1YmVuY2Fwc3VsYXRpb24gc3VwcG9ydCwgd2hlcmUg c3BhY2VzIHNlcGFyYXRlZAogIGJ5IGVtcHR5IHNwYWNlcyB3b3VsZCBub3QgZ2V0IGluY2x1ZGVk LgoKLSBBIGJ1ZyBpbiBkaGNsaWVudCB3YXMgcmVwYWlyZWQgd2hpY2ggY2F1c2VkIGl0IHRvIHNl bmQgcGFyYW1ldGVyIHJlcXVlc3QKICBsaXN0cyBvZiA1NSBieXRlcyBpbiBsZW5ndGggbm8gbWF0 dGVyIGhvdyBsb25nIHRoZSBkZWNsYXJlZCBQUkwgd2FzLgoKLSAnZGhjcC5jKDM5NTMpOiBub24t bnVsbCBwb2ludGVyJyBoYXMgYmVlbiByZXBhaXJlZC4gIFRoaXMgZml4ZXMgYSBmbGF3CiAgd2hl cmVpbiB0aGUgREhDUHY0IHNlcnZlciBtYXkgaWdub3JlIGEgY29uZmlndXJlZCBzZXJ2ZXItaWRl bnRpZmllci4KCi0gQSBmbGF3IGluIGZhaWxvdmVyIHN0YXJ0dXAgc2VxdWVuY2VzIHdhcyByZXBh aXJlZCB0aGF0IHNvbWV0aW1lcyBsZWZ0CiAgdGhlIHByaW1hcnkgREhDUCBzZXJ2ZXIncyBwb29s IHJlYmFsYW5jZSBzY2hlZHVsZXMgdW5zY2hlZHVsZWQuCgotIENvcnJlY3RlZCBhIGZsYXcgdGhh dCBicm9rZSBlbmNhcHN1bGF0ZWQgc3BhY2VzIGluY2x1ZGVkIGR1ZSB0byBwcmVzZW5jZQogIG9u IHRoZSBwYXJhbWV0ZXIgcmVxdWVzdCBsaXN0LgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjEuMGEzCgot IFNvbWUgc3BlbGxpbmcgZml4ZXMuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMS4wYTIKCi0gQSBidWcg d2FzIGZpeGVkIHdoZXJlIGF0dGVtcHRpbmcgdG8gcGVybWl0IGxlYXNlcXVlcmllcyByZXN1bHRz IGluIGEKICBmYXRhbCBpbnRlcm5hbCBlcnJvciwgIlVuYWJsZSB0byBmaW5kIHNlcnZlciBvcHRp b24gNDkiLgoKLSBBIGJ1ZyB3YXMgZml4ZWQgaW4gZGhjbGllbnQgcmVuZGVyaW5nIHRoZSB0ZXh0 dWFsIG91dHB1dCBmb3JtIG9mIHRoZQogIGRvbWFpbi1zZWFyY2ggb3B0aW9uIHN5bnRheC4KCgkJ CUNoYW5nZXMgc2luY2UgMy4xLjBhMQoKLSBBIGJ1ZyBpbiB0aGUgRlFETiB1bml2ZXJzZSB0aGF0 IGFkZGVkIEZRRE4gY29kZXMgdG8gdGhlIE5XSVAgdW5pdmVyc2UncwogIGhhc2ggdGFibGUgd2Fz IHJlcGFpcmVkLgoKLSBUaGUgc2VydmVycyBub3cgdHJ5IGhhcmRlciB0byB0cmFuc21pdCBwZW5k aW5nIGJpbmRpbmcgdXBkYXRlcyB3aGVuCiAgZW50ZXJpbmcgbm9ybWFsIHN0YXRlLgoKLSBVUERS RVEvVVBEUkVRQUxMIGhhbmRsaW5nIHdhcyBvcHRpbWl6ZWQgLSBpdCBubyBsb25nZXIgZGVxdWV1 ZXMgYW5kCiAgcmVxdWV1ZXMgYWxsIHBlbmRpbmcgdXBkYXRlcy4gIFRoaXMgc2hvdWxkIHJlZHVj ZSB0aGUgbnVtYmVyIG9mIHNwdXJpb3VzCiAgJ3hpZCBtaXNtYXRjaCcgbG9nIG1lc3NhZ2VzLgoK LSBBbiBvcHRpb24gZGVmaW5pdGlvbiByZWZlcmVuY2luZyBsZWFrIHdhcyBmaXhlZCwgd2hpY2gg cmVzdWx0ZWQgaW4gZWFybHkKICB0ZXJtaW5hdGlvbiBvZiBkaGNsaWVudCB1cG9uIHRoZSByZW5l d2FsIGV2ZW50LgoKLSBTb21lIGRlZmF1bHQgaGFzaCB0YWJsZSBzaXplcyB3ZXJlIHR3ZWFrZWQs IHNvbWUgdXB3YXJkcywgc29tZSBkb3dud2FyZHMuCiAgMy4xLjBhMSdzIHRhYmxlcyByZXN1bHRl ZCBpbiBhIHJlZHVjdGlvbiBpbiBkZWZhdWx0IHNlcnZlciBtZW1vcnkgdXNlLgogIFRoZSBuZXcg c2VsZWN0ZWQgdmFsdWVzIHByb3ZpZGUgbW9yZSBvZiBhIHplcm8gc3VtIChpbmNyZWFzaW5nIHRo ZSBzaXplCiAgb2YgdGFibGVzIGxpa2VseSB0byBiZSBwb3B1bGF0ZWQsIGRlY3JlYXNpbmcgdGhl IHNpemUgb2YgdGFibGVzIHVubGlrZWx5KS4KCi0gTGVhc2Ugc3RydWN0dXJlcyBhcHBlYXIgaW4g dGhyZWUgc2VwYXJhdGUgaGFzaGVzOiBieSBJUCBhZGRyZXNzLCBieSBVSUQsCiAgYW5kIGJ5IGhh cmR3YXJlIGFkZHJlc3MuICBPbmUgdHlwZSBvZiB0YWJsZSB3YXMgdXNlZCBmb3IgYWxsIHRocmVl LCBhbmQKICBpbXByb3ZlbWVudHMgdG8gSVAgYWRkcmVzcyBoYXNoaW5nIHdlcmUgYXBwbGllZCB0 byBhbGwgdGhyZWUgKHNvIFVJRCBhbmQKICBoYXJkd2FyZSBhZGRyZXNzZXMgd2VyZSB0cmVhdGVk IGxpa2UgNC1ieXRlIGludGVnZXJzKS4gIFRoZXJlIGFyZSBub3cgdHdvCiAgdHlwZXMgb2YgdGFi bGVzLCBhbmQgdGhlIHVpZC9odyBoYXNoZXMgdXNlIGZ1bmN0aW9ucyBtb3JlIGFwcHJvcHJpYXRl CiAgdG8gdGhlaXIgbmVlZHMuCgotIFRoZSBtYXgtbGVhc2UtbWlzYmFsYW5jZSBwZXJjZW50YWdl IG5vIGxvbmdlciBjYXVzZXMgc2NoZWR1bGVkIHJlYmFsYW5jZQogIHJ1bnMgdG8gYmUgc2tpcHBl ZDogaXQgc3RpbGwgZ292ZXJucyB0aGUgc2NoZWR1bGUsIGJ1dCBldmVyeSBzY2hlZHVsZWQKICBy dW4gd2lsbCBhdHRlbXB0IGJhbGFuY2UuCgotIEEgc2VnZmF1bHQgYnVnIGluIHJlY3Vyc2l2ZSBl bmNhcHN1bGF0aW9uIHN1cHBvcnQgaGFzIGJlZW4gY29ycmVjdGVkLgoKCQkJQ2hhbmdlcyBzaW5j ZSAzLjAgKE5ldyBGZWF0dXJlcykKCi0gQSB3b3JrYXJvdW5kIGZvciBjZXJ0YWluIFNUU04gc2Vy dmVycyB0aGF0IHNlbmQgYSBtYW5nbGVkIGRvbWFpbi1uYW1lCiAgb3B0aW9uIHdhcyBpbnRyb2R1 Y2VkIGZvciBkaGNsaWVudC4gIFRoZSBjbGllbnQgd2lsbCBub3cgYWNjZXB0IGNvcnJ1cHRlZAog IHNlcnZlciByZXNwb25zZXMsIGlmIHRoZXkgY29udGFpbiBhIHZhbGlkIERIQ1BfTUVTU0FHRV9U WVBFIChPRkZFUiwgQUNLLAogIG9yIE5BSykuICBUaGUgc2VydmVyIHdpbGwgY29udGludWUgdG8g bm90IGFjY2VwdCBjb3JydXB0IGNsaWVudCBwYWNrZXRzLgoKLSBTdXBwb3J0IGZvciAncmVzZXJ2 ZWQnIChwc2V1ZG8tc3RhdGljKSBhbmQgQk9PVFAgbGVhc2VzIHZpYSBmYWlsb3ZlcgogIHdhcyBp bnRyb2R1Y2VkLgoKLSBTdXBwb3J0IGZvciBhZGRpbmcsIHJlbW92aW5nLCBhbmQgbWFuYWdpbmcg Y2xhc3MgYW5kIHN1YmNsYXNzIHN0YXRlbWVudHMKICB2aWEgT01BUEkuCgotIFRoZSBmYWlsb3Zl ciBpbXBsZW1lbnRhdGlvbiB3YXMgdXBkYXRlZCB0byBjb21wbHkgd2l0aCByZXZpc2lvbiAxMiBv ZgogIHRoZSBwcm90b2NvbCBkcmFmdC4KCi0gJ21ha2UgaW5zdGFsbCcgbm93IGNyZWF0ZXMgdGhl IGluaXRpYWwgemVyby1sZW5ndGggZGhjcGQubGVhc2VzIGZpbGUgaWYKICBvbmUgZG9lcyBub3Qg YWxyZWFkeSBleGlzdCBvbiB0aGUgc3lzdGVtLgoKLSBSRkMzOTQyIGNvbXBsaWFuY2UsIHNpdGUt bG9jYWwgb3B0aW9uIHNwYWNlcyBzdGFydCBhdCAyMjQgbm93LCBub3QgMTI4LgoKLSBUaGUgTG9h ZCBCYWxhbmNlIEFsZ29yaXRobSB3YXMgbWlzaW1wbGVtZW50ZWQuICBUaGUgY3VycmVudCBpbXBs ZW1lbnRhdGlvbgogIG1hdGNoZXMgUkZDIDMwNzQuCgotIGxjYXNlKCkgYW5kIHVjYXNlKCkgY29u ZmlndXJhdGlvbiBleHByZXNzaW9ucyBoYXZlIGJlZW4gYWRkZWQgd2hpY2ggYWRqdXN0CiAgdGhl aXIgYXJndW1lbnRzIGZyb20gdXBwZXIgdG8gbG93ZXIgYW5kIGxvd2VyIHRvIHVwcGVyIGNhc2Vz IHJlc3BlY3RpdmVseS4KICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIEFsYmVydCBIZXJyYW56LgoK LSBUaGUgZGhjbGllbnQgJ3JlamVjdCAuLi47JyBzdGF0ZW1lbnQsIHdoaWNoIHJlamVjdHMgbGVh c2VzIGdpdmVuIGJ5IG5hbWVkCiAgc2VydmVyLWlkZW50aWZpZXJzLCBub3cgcGVybWl0cyBhZGRy ZXNzIHJhbmdlcyB0byBiZSBzcGVjaWZpZWQgaW4gQ0lEUgogIG5vdGF0aW9uLiAgVGhhbmtzIHRv IGEgcGF0Y2ggZnJvbSBEYXZpZCBCb3ljZS4KCi0gVGhlIHN1Ym5ldC1tYXNrIG9wdGlvbiBpcyBu b3cgc3VwcGxpZWQgYnkgZGVmYXVsdCwgYnV0IGF0IGxvd2VzdAogIHByaW9yaXR5LiAgVGhpcyBo ZWxwcyBhIHNtYWxsIG1pbm9yaXR5IG9mIGNsaWVudHMgdGhhdCBwcm92aWRlIHBhcmFtZXRlcgog IHJlcXVlc3QgbGlzdHMsIGJ1dCBkbyBub3QgbGlzdCB0aGUgc3VibmV0LW1hc2sgb3B0aW9uIGJl Y2F1c2UgdGhleSB3ZXJlCiAgZGVzaWduZWQgdG8gaW50ZXJvcGVyYXRlIHdpdGggYSBzZXJ2ZXIg dGhhdCBiZWhhdmVzIGluIHRoaXMgbWFubmVyLgoKLSBUaGUgRlFETiBvcHRpb24gaXMgc2ltaWxh cmx5IHN1cHBsaWVkIGV2ZW4gaWYgaXQgZG9lcyBub3QgYXBwZWFyIG9uIHRoZQogIHBhcmFtZXRl ciByZXF1ZXN0IGxpc3QsIGJ1dCBub3QgdG8gdGhlIGV4Y2x1c2lvbiBvZiBvcHRpb25zIHRoYXQg ZG8KICBhcHBlYXIgYXQgdGhlIHBhcmFtZXRlciByZXF1ZXN0IGxpc3QuICBVcCB1bnRpbCBub3cg aXQgaGFkIHVsdGltYXRlCiAgcHJpb3JpdHkgb3ZlciB0aGUgY2xpZW50J3MgcGFyYW1ldGVyIHJl cXVlc3QgbGlzdC4KCi0gVmFyeWluZyBvcHRpb24gc3BhY2UgY29kZSBhbmQgbGVuZ3RoIGJpdCB3 aWR0aHMgKDgvMTYvMzIpIGFyZSBub3cKICBzdXBwb3J0ZWQuICBUaGlzIGlzIGEgbWlsZXN0b25l IGluIGFjaGlldmluZyBSRkMgMzkyNSAiVklWU08iIGFuZAogIERIQ1B2NiBzdXBwb3J0LgoKLSBB IG5ldyBjb21tb24gKHNlcnZlciBvciBjbGllbnQpIG9wdGlvbiwgJ2RiLXRpbWUtZm9ybWF0IGxv Y2FsOycsIGhhcwogIGJlZW4gYWRkZWQgd2hpY2ggcHJpbnRzIHRoZSBsb2NhbCB0aW1lIGluIC92 YXIvZGIvZGhjcGQubGVhc2VzIHJhdGhlcgogIHRoYW4gVVRDLiAgVGhhbmtzIHRvIGEgcGF0Y2gg ZnJvbSBLZW4gTGFsb25kZS4KCi0gU29tZSBwYXRjaGVzIHRvIGltcHJvdmUgREhDUCBTZXJ2ZXIg c3RhcnR1cCBzcGVlZCBmcm9tIEFuZHJldyBNYXRoZXNvbgogIGhhdmUgYmVlbiBpbmNvcnBvcmF0 ZWQuCgotIEZhaWxvdmVyIHBhaXJzIG5vdyBpbXBsZW1lbnQgJ01BQyBBZmZpbml0eScgb24gbGVh c2VzIG1vdmluZyBmcm9tIHRoZQogIGFjdGl2ZSB0byBmcmVlIHN0YXRlcy4gIExlYXNlcyB0aGF0 IGJlbG9uZ2VkIHRvIHRoZSBmYWlsb3ZlciBzZWNvbmRhcnkKICBhcmUgbW92ZWQgdG8gQkFDS1VQ IHN0YXRlIHJhdGhlciB0aGFuIEZSRUUgdXBvbiBleGl0aW5nIEVYUElSRUQgc3RhdGUuCiAgSWYg bGVhc2UgcmViYWxhbmNpbmcgbXVzdCBtb3ZlIGxlYXNlcywgaXQgdHJpZXMgZmlyc3QgdG8gbW92 ZSBsZWFzZXMKICB0aGF0IGJlbG9uZyB0byB0aGUgcGVlciBpbiBuZWVkLgoKLSBUaGUgc2VydmVy IG5vIGxvbmdlciBzZW5kcyBQT09MUkVRIG1lc3NhZ2VzIHVubGVzcyB0aGUgcG9vbCBpcyBzZXZl cmVseQogIG1pc2JhbGFuY2VkIGluIHRoZSBwZWVyJ3MgZmF2b3IgKHNlZSAnbWFuIGRoY3BkLmNv bmYnIGZvciBtb3JlIGRldGFpbHMpLgoKLSBQb29sIHJlYmFsYW5jZSBldmVudHMgbm8gbG9uZ2Vy IGhhcHBlbiB1cG9uIHN1Y2Nlc3NmdWxseSBhbGxvY2F0aW5nIGEKICBsZWFzZS4gIEluc3RlYWQs IHRoZXkgaGFwcGVuIG9uIGEgc2NoZWR1bGUuICBTZWUgJ21hbiBkaGNwZC5jb25mJyBmb3IgdGhl CiAgbWluLWJhbGFuY2UgYW5kIG1heC1iYWxhbmNlIHN0YXRlbWVudHMgZm9yIG1vcmUgaW5mb3Jt YXRpb24uCgotIFRoZSBESENQIFJlbGF5IEFnZW50IEluZm9ybWF0aW9uIE9wdGlvbiAvIExpbmsg U2VsZWN0aW9uIFN1Yi1PcHRpb24KICBpcyBub3cgc3VwcG9ydGVkLiAgKFNlZSBSRkMzNTI3IGZv ciBkZXRhaWxzKS4KCi0gQSBuZXcgREROUyByZWxhdGVkIHNlcnZlciBvcHRpb24sIHVwZGF0ZS1j b25mbGljdC1kZXRlY3Rpb24sIGhhcyBiZWVuCiAgYWRkZWQuICBJZiB0aGlzIG9wdGlvbiBpcyBl bmFibGVkLCBkaGNwZCB3aWxsIHBlcmZvcm0gbm9ybWFsIERIQ0lECiAgY29uZmxpY3QgcmVzb2x1 dGlvbiAodGhlIGRlZmF1bHQpLiAgSWYgdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQsIGl0IHdpbGwK ICBpbnN0ZWFkIHRydXN0IHRoZSBhc3NpZ25lZCBuYW1lIGltcGxpY2l0bHkgKHJlbW92aW5nIGFu eSBvdGhlciBiaW5kaW5ncwogIG9uIHRoYXQgbmFtZSkuICBUaGlzIG9wdGlvbiBoYXMgbm90IGJl ZW4gbWFkZSBhdmFpbGFibGUgaW4gZGhjbGllbnQuCgotIEluIHRob3NlIGNhc2VzIHdoZXJlIHRo ZSBESENQIHNvZnR3YXJlIG1hbnVmYWN0dXJlcyBhbiBJUCBoZWFkZXIgKHRvCiAgdHJhbnNtaXQg dmlhIGJwZiwgbHBmLCBldGMpLCB0aGUgSVAgVFRMIHRoZSBzb2Z0d2FyZSBzZWxlY3RzIGhhcyBi ZWVuCiAgaW5jcmVhc2VkIGZyb20gMTYgdG8gMTI4LiAgVGhpcyBpcyBpbnRlbmRlZCB0byBtYXRj aCBNaWNyb3NvZnQgV2luZG93cwogIERIQ1AgQ2xpZW50IGJlaGF2aW91ciwgdG8gaW5jcmVhc2Ug Y29tcGF0aWJpbGl0eS4KCi0gJ2lnbm9yZSBjbGllbnQtdXBkYXRlczsnIG5vdyBoYXMgYmVoYXZp b3VyIHRoYXQgaXMgZGlmZmVyZW50IGZyb20KICAnZGVueSBjbGllbnQtdXBkYXRlczsnLiAgVGhl IGNsaWVudCdzIHJlcXVlc3QgaXMgbm90IHRydWx5IGlnbm9yZWQsCiAgcmF0aGVyIGl0IGlzIGVu Y291cmFnZWQuICBTaG91bGQgdGhpcyB2YWx1ZSBiZSBjb25maWd1cmVkLCB0aGUgc2VydmVyCiAg dXBkYXRlcyBETlMgYXMgdGhvdWdoIGNsaWVudC11cGRhdGVzIHdlcmUgc2V0IHRvICdkZW55Jy4g IFRoYXQgaXMsIGl0CiAgZW50ZXJzIGludG8gRE5TIHdoYXRldmVyIGl0IGlzIGNvbmZpZ3VyZWQg dG8gZG8gYWxyZWFkeSwgcHJvdmlkZWQgaXQgaXMKICBjb25maWd1cmVkIHRvLiAgVGhlbiBpdCBz ZW5kcyBhIHJlc3BvbnNlIHRvIHRoZSBjbGllbnQgdGhhdCBsZXRzIHRoZQogIGNsaWVudCBiZWxp ZXZlIGl0IGlzIHBlcmZvcm1pbmcgY2xpZW50IHVwZGF0ZXMgKHdoaWNoIGl0IHdpbGwpLCBwcm9i YWJseQogIGZvciBhIGRpZmZlcmVudCBuYW1lLiAgSW4gZXNzZW5jZSwgdGhpcyBsZXRzIHRoZSBj bGllbnQgZG8gYXMgaXQgd2lsbCwKICBpZ25vcmluZyB0aGlzIGFzcGVjdCBvZiB0aGVpciByZXF1 ZXN0LgoKLSBTdXBwb3J0IGZvciBjb21wcmVzc2VkICdkb21haW4gbmFtZSBsaXN0JyBzdHlsZSBE SENQIG9wdGlvbiBjb250ZW50cywgYW5kCiAgaW4gcGFydGljdWxhciB0aGUgZG9tYWluIHNlYXJj aCBvcHRpb24gKCMxMTkpIHdhcyBhZGRlZC4KCi0gVGhlIERIQ1AgTEVBU0VRVUVSWSBwcm90b2Nv bCBhcyBkZWZpbmVkIGluIFJGQzQzODggaXMgbm93IGltcGxlbWVudGVkLgogIExFQVNFUVVFUlkg bGV0cyB5b3UgcXVlcnkgdGhlIERIQ1Agc2VydmVyIGZvciBpbmZvcm1hdGlvbiBhYm91dCBhIGxl YXNlLAogIHVzaW5nIGVpdGhlciBhbiBJUCBhZGRyZXNzLCBNQUMgYWRkcmVzcywgb3IgY2xpZW50 IGlkZW50aWZpZXIuICBUaGFua3MKICB0byBhIHBhdGNoIGZyb20gSnVzdGluIEhhZGRhZC4KCi0g REhDUEQgaXMgbm93IFJGQzIxMzEgc2VjdGlvbiA0LjEgY29tcGxpYW50IChicm9hZGNhc3QgdG8g YWxsLW9uZXMgaXAgYW5kCiAgZXRoZXJuZXQgbWFjIGFkZHJlc3MpIG9uIHRoZSBTQ08gcGxhdGZv cm0gc3BlY2lmaWNhbGx5IHdpdGhvdXQgYW55IHN0cmFuZ2UKICBpZmNvbmZpZyBoYWNrcy4gIE1h bnkgdGhhbmtzIGdvIHRvIHRoZSBLcm9nZXIgQ28uIGZvciBkb25hdGluZyB0aGUKICBoYXJkd2Fy ZSBhbmQgZnVuZGluZyB0aGUgZGV2ZWxvcG1lbnQuCgotIEEgbmV3IGNvbW1vbiBjb25maWd1cmF0 aW9uIGV4ZWN1dGFibGUgc3RhdGVtZW50LCBleGVjdXRlKCksIGhhcyBiZWVuCiAgYWRkZWQuICBU aGlzIHBlcm1pdHMgZGhjcGQgb3IgZGhjbGllbnQgdG8gZXhlY3V0ZSBhIG5hbWVkIGV4dGVybmFs CiAgcHJvZ3JhbSB3aXRoIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgc3BlY2lmaWVkIGZyb20gb3Ro ZXIgY29uZmlndXJhdGlvbgogIGxhbmd1YWdlLiAgVGhhbmtzIHRvIGEgcGF0Y2ggd3JpdHRlbiBi eSBNYXR0aWFzIFJvbm5ibG9tLCBnb3R0ZW4gdG8gdXMKICB2aWEgUm9iaW4gQnJlYXRoZS4KCi0g QSBuZXcgZGhjcCBzZXJ2ZXIgb3B0aW9uICdhZGFwdGl2ZS1sZWFzZS10aW1lLXRocmVzaG9sZCcg aGFzIGJlZW4gYWRkZWQKICB3aGljaCBjYXVzZXMgdGhlIHNlcnZlciB0byBzdWJzdGFudGlhbGx5 IHJlZHVjZSBsZWFzZS10aW1lcyBpZiB0aGVyZSBhcmUKICBmZXcgKGNvbmZpZ3VyZWQgcGVyY2Vu dGFnZSkgcmVtYWluaW5nIGxlYXNlcy4gIFRoYW5rcyB0byBhIHBhdGNoIHN1Ym1pdHRlZAogIGZy b20gQ2hyaXN0b2YgQ2hlbi4KCi0gRW5jYXBzdWxhdGVkIG9wdGlvbiBzcGFjZXMgd2l0aGluIGVu Y2Fwc3VsYXRlZCBvcHRpb24gc3BhY2VzIGlzIG5vdwogIGZvcm1hbGx5IHN1cHBvcnRlZC4KCgkJ CUNoYW5nZXMgc2luY2UgMy4wLjZyYzEKCi0gc3VwZXJzZWRlX2xlYXNlKCkgbm93IHJlcXVldWVz IGxlYXNlcyBpbiB0aGVpciByZXNwZWN0aXZlIGhhcmR3YXJlCiAgYWRkcmVzcyBoYXNoIGJ1Y2tl dC4gIFRoaXMgbWlycm9ycyBjbGllbnQgaWRlbnRpZmllciBiZWhhdmlvdXIuCgoJCQlDaGFuZ2Vz IHNpbmNlIDMuMC41CgotIEFzc29ydGVkIGZpeGVzIGZvciBicm9rZW4gbmV0d29yayBkZXZpY2Vz OiAgUGFja2V0IGxlbmd0aCBpcyBub3cKICBkZXRlcm1pbmVkIGZyb20gdGhlIElQIGhlYWRlciBs ZW5ndGggZmllbGQgdG8gZmluYWxseSBjYWxjdWxhdGUgdGhlCiAgVURQIHBheWxvYWQgbGVuZ3Ro LCBiZWNhdXNlIHNvbWUgTklDIGRyaXZlcnMgcmV0dXJuIG1vcmUgZGF0YSB0aGFuCiAgdGhleSBh Y3R1YWxseSByZWNlaXZlZC4KCi0gVURQIHBhY2tldHMgYXJlIG5vdyBzdG9yZWQgaW4gYWxpZ25l ZCBkYXRhIHN0cnVjdHVyZXMuCgotIEEgbG9naWMgZXJyb3IgaW4gb21hcGkgaW50ZXJmYWNlIGNv ZGUgd2FzIHJlcGFpcmVkIHRoYXQgbWlnaHQgcmVzdWx0IGluCiAgaW5jb3JyZWN0bHkgaW5kaWNh dGluZyAndXAnIHN0YXRlIHdoZW4gYW55IGZsYWdzIHdlcmUgc2V0LCByYXRoZXIgdGhhbgogIHNw ZWNpZmljYWxseSB0aGUgSU5URVJGQUNFX1JFUVVFU1RFRCBmbGFnLiAgVGhhbmtzIHRvIGEgcGF0 Y2ggZnJvbQogIEpvY2hlbiBWb3NzIHdoaWNoIGdvdCB0byB1cyB2aWEgQW5kcmV3IFBvbGxvY2sg YXQgRGViaWFuLgoKLSBBIHJlZmVyZW5jZSBsZWFrIG9uIGJpbmRpbmcgc2NvcGVzIHNldCBieSBk ZG5zIHVwZGF0ZXMgd2FzIHJlcGFpcmVkLgoKLSBBIG1lbW9yeSBsZWFrIGluIHRoZSBtaW5pcmVz X25zZW5kc2lnbmVkKCkgZnVuY3Rpb24gY2FsbCB3YXMgcmVwYWlyZWQuCiAgRWZmZWN0aXZlbHks IHRoaXMgbGVha2VkIH4xNzYgYnl0ZXMgcGVyIERETlMgdXBkYXRlLgoKLSBJbiB0aGUgY2FzZSB3 aGVyZSBhbiAiTDIiIERIQ1AgUmVsYXkgQWdlbnQgKG9uZSB0aGF0IGRvZXMgbm90IHNldCBnaWFk ZHIpCiAgd2FzIGRpcmVjdGx5IGF0dGFjaGVkIHRvIHRoZSBzYW1lIGJyb2FkY2FzdCBkb21haW4g YXMgdGhlIERIQ1Agc2VydmVyLAogIHRoZSBSRkMzMDQ2IHJlbGF5IGFnZW50IGluZm9ybWF0aW9u IG9wdGlvbiB3YXMgbm90IGJlaW5nIHJldHVybmVkIHRvIHRoZQogIHJlbGF5IGluIHRoZSBzZXJ2 ZXIncyByZXBsaWVzLiAgVGhpcyB3YXMgZml4ZWQ7IHRoZSBkaGNwIHNlcnZlciBubyBsb25nZXIK ICByZXF1aXJlcyB0aGUgZ2lhZGRyIHRvIHJlcGx5IHdpdGggcmVsYXkgYWdlbnQgaW5mb3JtYXRp b24uICBOb3RlIHRoYXQKICB0aGlzIGFsc28gaW1wcm92ZXMgY29tcGF0aWJpbGl0eSB3aXRoIEwy IGRldmljZXMgdGhhdCAiaW50ZXJjZXB0IiBESENQCiAgcGFja2V0cyBhbmQgZXhwZWN0IHJlbGF5 IGFnZW50IGluZm9ybWF0aW9uIGV2ZW4gaW4gdW5pY2FzdCAocmVuZXdhbCkKICByZXBsaWVzLiAg VGhhbmtzIHRvIGEgcGF0Y2ggZnJvbSBQZWtrYSBTaWx2b25lbi4KCi0gQSBidWcgd2FzIGZpeGVk IHdoZXJlIHRoZSBCT09UUCBoZWFkZXIgJ3NuYW1lJyBmaWVsZCBoYWQgYSB2YWx1ZSwgdGhlCiAg Y29weSB3cml0dGVuIHRvIHBlcnNpc3RlbnQgc3RvcmFnZSB3YXMgYWN0dWFsbHkgdGhlIGNvbnRl bnRzIG9mIHRoZQogICdmaWxlJyBmaWVsZC4KCi0gQSBidWcgd2FzIGZpeGVkIHdoZXJlIHRoZSBu d2lwIHZpcnR1YWwgb3B0aW9uIHNwYWNlIHdhcyByZWZlcmVuY2luZwogIHRoZSBmcWRuIG9wdGlv bidzIHZpcnR1YWwgb3B0aW9uIHNwYWNlJ3Mgb3B0aW9uIGNhY2hlLgoKLSBUaW1lc3RhbXAgcGFy c2luZyBlcnJvcnMgdGhhdCBpbmRpY2F0ZWQgbWlzc2luZyAibWludXRlcyIgZmllbGRzIHJhdGhl cgogIHRoYW4gdGhlIGFjdHVhbGx5IG1pc3NpbmcgInNlY29uZHMiIGZpZWxkcyBoYXZlIGJlZW4g cmVwYWlyZWQgdGhhbmtzIHRvCiAgYSBwYXRjaCBmcm9tIEtldmluIFN0ZXZlcy4KCi0gQSBncmFt bWFyIGVycm9yIGluIHRoZSBkaGNsaWVudC44IG1hbnBhZ2Ugd2FzIHJlcGFpcmVkIHRoYW5rcyB0 byBhIHBhdGNoCiAgZnJvbSBDaHJpcyBXYWduZXIuCgotIFNldmVyYWwgc3BlbGxpbmcgdHlwb3Mg d2VyZSByZXBhaXJlZCwgYW5kIHNvbWUgY3Jvc3MtcmVmZXJlbmNlcyB0byBvdGhlcgogIHJlbGV2 YW50IGRvY3VtZW50cyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBtYW5wYWdlcywgdGhhbmtzIHRvIGEg cGF0Y2gKICBieSBBbmRyZXcgUG9sbG9jayB3aGljaCBnb3QgdG8gdXMgdmlhIFRvbWFzIFBvc3Bp c2VrLgoKLSBTb21lIGJ1Z3Mgd2VyZSBmaXhlZCBpbiB0aGUgJ2VtZXJnZW5jeSByZWxheSBhZ2Vu dCBvcHRpb25zIGhvbG9ncmFtJwogIHdoaWNoIGlzIHVzZWQgdG8gcmV0YWluIHJlbGF5IGFnZW50 IG9wdGlvbiBjb250ZW50cyBmcm9tIHdoZW4gdGhlCiAgY2xpZW50IHdhcyBpbiBJTklUIG9yIFJF QklORCBzdGF0ZXMuICBUaGlzIHNob3VsZCBzb2x2ZSBwcm9ibGVtcyB3aGVyZQogIHJlbGF5IGFn ZW50IG9wdGlvbnMgd2VyZSBub3QgZWNob2VkIGZyb20gdGhlIHNlcnZlciwgZXZlbiB3aGVuIGdp YWRkcgogIHdhcyBzZXQuCgotIGRoY2xpZW50IG5vdyBjbG9zZXMgaXRzIGRlc2NyaXB0b3IgdG8g ZGhjbGllbnQubGVhc2VzIHByaW9yIHRvIGV4ZWN1dGluZwogIGRoY2xpZW50LXNjcmlwdC4gIFRo YW5rcyB0byBhIHBhdGNoIGZyb20gVG9tYXMgUG9zcGlzZWsuCgotIFRoZSBzZXJ2ZXIncyAiYnkg Y2xpZW50LWlkIiBhbmQgImJ5IGhhcmR3YXJlIGFkZHJlc3MiIGhhc2ggdGFibGUgbGlzdHMKICBh cmUgbm93IHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIHByZWZlcmVuY2UgdG8gcmUtYWxsb2NhdGUg dGhhdCBsZWFzZSB0bwogIHJldHVybmluZyBjbGllbnRzLiAgVGhpcyBzaG91bGQgZWxpbWluYXRl IHBvb2wgc3RhcnZhdGlvbiBwcm9ibGVtcwogIGFyaXNpbmcgd2hlbiAiSU5JVCIgY2xpZW50cyB3 ZXJlIGdpdmVuIG5ldyBsZWFzZXMgcmF0aGVyIHRoYW4gcHJlc2VudGx5CiAgYWN0aXZlIG9uZXMu CgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC41cmMxCgotIEEgYnVnIHdhcyByZXBhaXJlZCBpbiBmaXhl cyB0byB0aGUgZGhjbGllbnQsIHdoaWNoIHNvdWdodCB0byBydW4gdGhlCiAgZGhjbGllbnQtc2Ny aXB0IHdpdGggdGhlICdFWFBJUkUnIHN0YXRlIHNob3VsZCBpdCByZWNlaXZlIGEgTkFLIGluCiAg cmVzcG9uc2UgdG8gYSBSRVFVRVNULiAgVGhlIGNsaWVudCBub3cgaXRlcmF0ZXMgdGhlIFBSRUlO SVQgc3RhdGUKICBhZnRlciB0aGUgRVhQSVJFIHN0YXRlLCBzbyB0aGF0IGludGVyZmFjZXMgdGhh dCBtaWdodCBiZSBjb25maWd1cmVkCiAgJ2Rvd24nIGNhbiBiZSBicm91Z2h0IGJhY2sgJ3VwJyBh bmQgaW5pdGlhbGl6ZWQuCgotIERIQ1BJTkZPUk0gaGFuZGxpbmcgZm9yIGNsaWVudHMgdGhhdCBw cm9wZXJseSBzZXQgY2lhZGRyIGFuZCBjb21lIHRvIHRoZQogIHNlcnZlciB2aWEgYSByZWxheSBh Z2V0IGhhcyBiZWVuIHJlcGFpcmVkLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuNAoKLSBBIHdhcm5p bmcgdGhhdCBob3N0IHN0YXRlbWVudHMgZGVjbGFyZWQgd2l0aGluIHN1Ym5ldCBvciBzaGFyZWQt bmV0d29yawogIHNjb3BlcyBhcmUgYWN0dWFsbHkgZ2xvYmFsIGhhcyBiZWVuIGFkZGVkLgoKLSBU aGUgZGVmYXVsdCBtaW5pbXVtIGxlYXNlIHRpbWUgKGlmIG1pbi1sZWFzZS10aW1lIHdhcyBub3Qg c3BlY2lmaWVkKQogIHdhcyByYWlzZWQgZnJvbSAwIHRvIDMwMC4gIDAgaXMgbm90IHRob3VnaHQg dG8gYmUgc2Vuc2libGUsIGFuZCBpcwogIGtub3duIHRvIGJlIGRhbWFnaW5nLgoKLSBBZGRlZCBh ZGRpdGlvbmFsIGZhdGFsIGVycm9yIHNhbml0eSBjaGVja3Mgc3Vycm91bmRpbmcgbGVhc2UgYmlu ZGluZwogIHN0YXRlIGNvdW50IGNhbGN1bGF0aW9ucyAoZnJlZS9hY3RpdmUgY291bnRzIHVzZWQg Zm9yIGZhaWxvdmVyIHBvb2wKICBiYWxhbmNpbmcpLgoKLSBTb21lIHRpbWUgdmFsdWUgc2l6ZSBm aXhlcyBpbiAzLjAuNCBicm91Z2h0IG9uIGZyb20gRnJlZUJTRCAvdXNyL3BvcnRzCndlcmUKICBt aXNhcHBsaWVkIHRvIHNlcnZlciB2YWx1ZXMgcmF0aGVyIHRoYW4gY2xpZW50IHZhbHVlcy4gIFRo ZSBzZXJ2ZXIgbm8KbG9uZ2VyCiAgYWR2ZXJ0aXNlcyA4LWJ5dGUgbGVhc2UtdGltZSBvcHRpb25z IHdoZW4gb24gNjQtYml0IHBsYXRmb3Jtcy4KCi0gQSBidWcgd2hlcmUgbGVhc2VzIG5vdCBpbiBB Q1RJVkUgc3RhdGUgd291bGQgZ2V0IGJpbGxlZCB0byBiaWxsZWQgY2xhc3NlcwogIChjbGFzc2Vz IHdpdGggbGVhc2UgbGltaXRhdGlvbnMpIHdhcyBmaXhlZC4gIE5vbi1hY3RpdmUgbGVhc2VzIE9G RkVSZWQKICB0byBjbGllbnRzIGFyZSBubyBsb25nZXIgYmlsbGVkIChidXQgYmlsbGluZyBpcyBj aGVja2VkIGJlZm9yZSBvZmZlcmluZykuCgotIFRoZSBkaGNwZC5jb25mLjUgbWFucGFnZSB3YXMg dXBkYXRlZCBpbiByZWdhcmQgdG8gdGhlIGRkbnMtZG9tYWlubmFtZQogIGNvbmZpZ3VyYXRpb24g b3B0aW9uIC0gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgcmVzdWx0cyBzaG91bGQgYmUK ICBtb3JlIGNsZWFyIG5vdy4KCi0gSWYgdGhlIGRoY2xpZW50IHdlcmUgdG8gcmVjZWl2ZSBhIERI Q1BOQUsgd2hpbGUgaXQgd2FzIGluIHRoZSBSRU5FVwogIHN0YXRlIChhbmQgY29uc2VxdWVudGx5 LCBoYWQgYW4gYWN0aXZlLCAnYm91bmQnIGFkZHJlc3MgYW5kIHJlbGF0ZWQKICBjb25maWd1cmF0 aW9uIG9wdGlvbnMpLCBpdCB3b3VsZCBmYWlsIHRvICd0ZWFyIGRvd24nIHRoaXMgaW5mb3JtYXRp b24KICBiZWZvcmUgcHJvY2VlZGluZyBpbnRvIElOSVQgc3RhdGUuICBkaGNsaWVudCBub3cgaXRl cmF0ZXMgdGhlIGRoY2xpZW50LQogIHNjcmlwdCB3aXRoIHRoZSAnRVhQSVJFJyBhY3Rpb24gdG8g Y2F1c2UgdGhlc2UgdGVhcmRvd25zIHByaW9yIHRvIGVudGVyaW5nCiAgSU5JVCBzdGF0ZS4gIFRo YW5rcyB0byBhIHBhdGNoIGZyb20gQ2hyaXMgWmltbWVybWFuLgoKLSBUaGUgb21hcGkuMSBtYW5w YWdlIGhhZCBzb21lIGZvcm1hdHRpbmcgZXJyb3JzIHJlcGFpcmVkIHRoYW5rcyB0byBhIHBhdGNo CiAgZnJvbSBZb3NoaWhpa28gU2FydW1hcnUuCgotIEEgZmV3IGxpbmVzIG9mIGNvZGUgdGhhdCB3 ZXJlIGZhaWxvdmVyLXNwZWNpZmljIHdlcmUgbW92ZWQgd2l0aGluCiAgI2lmIGRlZmluZWQoKSBj bGF1c2VzIHNvIHRoYXQgY29tcGlsYXRpb24gd2l0aG91dCBmYWlsb3ZlciBjb3VsZCBiZQogIG1h ZGUgcG9zc2libGUuCgotIFRoZSBsb2cgbWVzc2FnZSBlbWl0dGVkIHdoZW4gdGhlICdsZWFzZWQt YWRkcmVzcycgdmFsdWUgd2FzIG5vdCBhdmFpbGFibGUKICBpbiBkaGNwZC5jb25mICJleGVjdXRh YmxlIHN0YXRlbWVudHMiIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYmUgbW9yZSBoZWxwZnVsLgogIE1h bnBhZ2UgaW5mb3JtYXRpb24gZm9yIHRoaXMgdmFsdWUgaGFzIGFsc28gYmVlbiB1cGRhdGVkLgoK LSBBYmFuZG9uZWQgb3IgZGlzc29jaWF0ZWQgKGVyciBjb25kaXRpb24pIGxlYXNlcyBub3cgcmVt b3ZlIGFueSByZWxhdGVkCiAgZHluYW1pYyBkbnMgYmluZGluZ3MuICBUaGFua3MgdG8gYSBwYXRj aCBmcm9tIFBhdHJpY2sgU2Nob28uCgotIEF0dGVtcHRpbmcgdG8gd3JpdGUgYSBuZXcgbGVhc2Ug ZmlsZSB0byByZXBsYWNlIGEgY29ycnVwdCAoZHVlIHRvCiAgZW5jb3VudGVyaW5nIG5vbi1yZXRy eWFibGUgZXJyb3JzIGR1cmluZyB3cml0aW5nKSBsZWFzZSBmaWxlIHNob3VsZAogIG5vIGxvbmdl ciByZXN1bHQgaW4gYW4gaW5maW5pdGUgcmVjdXJzaW9uLgoKLSBIb3N0IGRlY2xhcmF0aW9uIGhh cmR3YXJlIGFkZHJlc3NlcyBhbmQgY2xpZW50IGlkZW50aWZpZXJzIG1heSBvbmx5IGJlCiAgY29u ZmlndXJlZCBvbmNlLiAgZGhjcGQgd2lsbCBub3cgZmFpbCB0byBsb2FkIGNvbmZpZyBmaWxlcyB0 aGF0IHNwZWNpZnkKICBtdWx0aXBsZSBpZGVudGlmaWVycyAocHJldmlvdXMgdmVyc2lvbnMgd291 bGQgc2lsZW50bHkgb3Zlci1yaWRlIHRoZQogIHZhbHVlIHdpdGggdGhlIGxhdGVyIGNvbmZpZ3Vy ZWQgdmFsdWUpLgoKLSBTZXZlcmFsIG9wdGlvbiBjb2RlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0 ZWQgc2luY2Ugb3VyIGxhc3QgcmVsZWFzZQogIGhhdmUgYmVlbiBuYW1lZCBhbmQgZG9jdW1lbnRl ZC4KCi0gT3B0aW9uIG5hbWVzIG9mIHRoZSBmb3JtICJ1bmtub3duLTEyMyIgaGF2ZSBiZWVuIHJl bW92ZWQgZnJvbSB0aGUgaW4tCiAgbWVtb3J5IGhhc2ggdGFibGVzLiAgSW4gb3JkZXIgdG8gc3Vw cG9ydCBvcHRpb25zIG9mIHRoZXNlIG5hbWVzIHRoYXQKICBtYXkgYXBwZWFyIGluIGRoY2xpZW50 LmxlYXNlcyBvciBzaW1pbGFyIGluIHByZXZpb3VzIHZlcnNpb25zLCB0aGUKICBwYXJzZXIgd2ls bCBub3cgZmluZCB0aGUgbmV3IG9wdGlvbiBjb2RlIGRlZmluaXRpb24sIG9yIG1vY2sgdXAgYQog IGdlbmVyaWMgb3B0aW9uIGNvZGUgZGVmaW5pdGlvbi4gIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBh IHNtb290aAogIHRyYW5zaXRpb24gZnJvbSBvbmUgbmFtZSB0byB0aGUgb3RoZXIsIGFzIHRoZSBu ZXcgbmFtZSBpcyB1c2VkIHRvCiAgd3JpdGUgbmV3IG91dHB1dC4KCgkJCUNoYW5nZXMgc2luY2Ug My4wLjRyYzEKCi0gVGhlIGRoY3Atb3B0aW9ucy41IG1hbnBhZ2Ugd2FzIHVwZGF0ZWQgdG8gY29y cmVjdCBpbmRlbnRhdGlvbiBlcnJvcnMKICB0aGFua3MgdG8gYSBwYXRjaCBmcm9tIEplYW4gRGVs dmFyZS4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjRiMwoKLSBTb21lIG1hbnVhbCBwYWdlcyB3ZXJl IGNsYXJpZmllZCBwdXJzdWFudCB0byBkaXNjdXNzaW9uIG9uIHRoZSBkaGNwLXNlcnZlcgogIG1h aWxpbmcgbGlzdC4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjRiMgoKLSBOdWxsLXRlcm1pbmF0aW9u IHNlbnNpbmcgZm9yIGNlcnRhaW4gY2xpZW50cyB0aGF0IHVuZm9ydHVuYXRlbHkgcmVxdWlyZQog IGl0IGluIERIQ1BJTkZPUk0gcHJvY2Vzc2luZyB3YXMgcmVwYWlyZWQuCgotIFRoZSBob3N0LW5h bWUgb3B0aW9uIGFuZCBhIGZldyBvdGhlcnMgd2VyZSBtb3ZlZCBmcm9tICJYIiBmb3JtYXQgdG8g InQiCiAgZm9ybWF0IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBuZXcgTlVMTCBoYW5kbGluZyBmdW5j dGlvbnMuCgotIERIQ1BJTkZPUk0gcHJvY2Vzc2luZyBpcyBhIGxpdHRsZSBtb3JlIGNhcmVmdWwg YWJvdXQgcmV0dXJuIGFkZHJlc3NpbmcKICBpdHMgcmVzcG9uc2VzLCBvciBpZiByZXNwb25kaW5n IHZpYSBhIHJlbGF5LiAgVGhlIElORk9STSByZWxhdGVkCiAgbWVzc2FnZXMgYWxzbyBsb2cgdGhl ICdlZmZlY3RpdmUgY2xpZW50IGlwIGFkZHJlc3MnIHJhdGhlciB0aGFuIHRoZQogIGNsaWVudCdz IHN1cHBsaWVkIGNpYWRkciAoc2luY2Ugc29tZSBjbGllbnRzIHByb2R1Y2UgbnVsbCBjaWFkZHJz KS4KCi0gVGhlIHNlcnZlciB3YXMgaW5hcHByb3ByaWF0ZWx5IHNlbmRpbmcgbGVhc2VzIHRvIHRo ZSBSRVNFVCBzdGF0ZSBpbiB0aGUKICBldmVudCB0aGF0IG11bHRpcGxlIGFjdGl2ZSBsZWFzZXMg d2VyZSBmb3VuZCB0byBtYXRjaCBhIHNpbmdseS1pZGVudGlmaWVkCiAgY2xpZW50LiAgVGhpcyB3 YXMgY2hhbmdlZCB0byBSRUxFQVNFRCAoYnkgYWNjZXB0aW5nIGEgZGlmZmVyZW50LCBBQ1RJVkUK ICBiaW5kaW5nLCB0aGUgY2xpZW50IGlzIGltcGxpY2l0bHkgcmVsZWFzaW5nIGl0cyBsZWFzZSku ICBUaGlzIHJlcGFpcnMgYQogIGJ1ZyB3aGVyZWluIHNlY29uZGFyeSBzZXJ2ZXJzIGluIGZhaWxv dmVyIHBhaXJzIGRldGVjdGluZyB0aGlzIGNvbmRpdGlvbgogIG1vdmUgbGVhc2VzIHRvIFJFU0VU LCBhbmQgcHJpbWFyaWVzIHJlZnVzZSB0byBhY2NlcHQgdGhhdCBzdGF0ZQogIHRyYW5zaXRpb24g KHByb3Blcmx5KS4KCi0gVGhlIG1lbXNldC1hZnRlci1kbWFsbG9jKCkgY2hhbmdlcyBtYWRlIGlu IDMuMC40YjEgaGF2ZSBiZWVuIGJhY2tlZCBvdXQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC40YjEK Ci0gQ29tbWFuZCBsaW5lIHBhcnNpbmcgaW4gb21zaGVsbCB3YXMgcmVwYWlyZWQgLSBpdCBubyBs b25nZXIgY2xvc2VzCiAgU1RESU4gYWZ0ZXIgcmVhZGluZyBvbmUgbGluZS4KCi0gVGhlIHJlc29s dmVyIGxpYnJhcnkgbm8gbG9uZ2VyIGNsb3NlcyB0aGUgL2V0Yy9yZXNvbHYuY29uZiBmaWxlCiAg ZGVzY3JpcHRvciBpdCBvcGVuZWQgdHdpY2UuCgotIENoYW5nZXMgdG8gdHJhaWxpbmcgTlVMTCBy ZW1vdmFsIGluICd0JyBvcHRpb24tYXRvbXMgaGFzIGJlZW4gcmV0aG91Z2h0LAogIGl0IG5vdyBp bmNsdWRlcyAnZCcgKGRvbWFpbiBuYW1lKSB0eXBlcywgYW5kIHRyaWVzIGhhcmQgbm90IHRvIHJl d2luZCBhbgogIG9wdGlvbiBiZXlvbmQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IGZpZWxkIGl0IGlz IHVuLXRlcm1pbmF0aW5nLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMwoKLSBBIERETlMgdXBkYXRl IGhhbmRsaW5nIGZ1bmN0aW9uIHdhcyBtaXN1c2luZyB0aGUgRE5TIGVycm9yIGNvZGVzLCByYXRo ZXIKICB0aGFuIHRoZSBpbnRlcm5hbCBnZW5lcmljIHJlc3VsdCBlbnVtZXJhdGlvbi4gIFRoZSBy ZXN1bHQgaXMgYSBjb25mdXNpbmcKICBzeXNsb2cgbGluZSwgbG9nZ2luZyB0aGUgd3JvbmcgY29u ZGl0aW9uLgoKLSBUaGUgREhDUCBTZXJ2ZXIgd2FzIG5vdCBjaGVja2luZyBwb29sIGJhbGFuY2Ug aW4gdGhlIGNhc2Ugd2hlcmUgaXQgYnJvdWdodAogIGEgbm9uLUFDVElWRSBsZWFzZSBvdXQgb2Yg c3RvcmFnZSBmb3IgYSBjbGllbnQgdGhhdCB3YXMgcmV0dXJuaW5nIHRvIHVzZQogIGEgbGVhc2Ug aXQgb25jZSBoYWQgbG9uZyBhZ28sIGFuZCBoYWQgc2luY2UgZXhwaXJlZC4KCi0gRmFpbG92ZXIg cGVlcnMgbm8gbG9uZ2VyIGJvdGhlciB0byBsb29rIGZvciBmcmVlIGxlYXNlcyB0byBhbGxvY2F0 ZSB3aGVuCiAgdGhleSBhbHJlYWR5IGZvdW5kIHRoZSBjbGllbnQncyBBQ1RJVkUgbGVhc2UuICBE SVNDT1ZFUnMgYXJlIGxvYWQgYmFsYW5jZWQKICB3aGV0aGVyIGZyZWVseS1hbGxvY2F0ZWQgb3Ig bm90LCB1bmxlc3MgdGhlIHNlcnZlciBkb3VidHMgdGhlIHBlZXIgaGFzCiAgbGVhc2VzIHRvIGFs bG9jYXRlLgoKLSBGaXhlZCBhIGJ1ZyBpbiBkaGNyZWxheSBhZ2VudCBhZGRpdGlvbiBjb2RlIHRo YXQgc3VwcHJlc3NlZCB0cmFpbGluZwogIFBBRCBvcHRpb25zIC0gaXQgd2FzIHN1cHByZXNzaW5n IG9ubHkgb25lIHRyYWlsaW5nIFBBRCBvcHRpb24sIHJhdGhlcgogIHRoYW4gdGhlIGVudGlyZSBi bG9jayBvZiB0aGVtLgoKISBGaXhlZCBzb21lIHVubGlrZWx5IG92ZXJsYXBwaW5nLXJlZ2lvbiBt ZW1jcHkoKSBidWdzIGluIGRoY3JlbGF5IGFnZW50CiAgb3B0aW9uIGFkZGl0aW9uIGFuZCBzdHJp cHBpbmcgY29kZS4gIEFkZGVkIGEgZmV3IHNhbml0eSBjaGVja3MuICBBbHRob3VnaAogIGhpZ2hs eSBpbXByb2JhYmxlLCBkdWUgdG8gcmVxdWlyaW5nIHRoZSByZWNlcHRpb24gb2YgYSBESENQIGRh dGFncmFtIHdlbGwKICBpbiBleGNlc3Mgb2YgYWxsIGtub3duIHRvIGJlIHVzZWQgcGh5c2ljYWwg TVRVIGxpbWl0YXRpb25zLCBpdCBpcyBwb3NzaWJsZQogIHRoaXMgbWF5IGhhdmUgYmVlbiB1c2Vk IGluIGEgc3RhY2sgb3ZlcmZsb3cgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4KVGhhbmtzCiAgdG8g YSBwYXRjaCBmcm9tIGluZmFtb3VzNDJtZC4KCiEgQWRkZWQgc29tZSBzYW5pdHkgY2hlY2tzIHRv IE9NQVBJIGNvbm5lY3Rpb24vYXV0aGVudGljYXRpb24gY29kZS4KICBBbHRob3VnaCBoaWdobHkg aW1wcm9iYWJsZSwgZHVlIHRvIGhhdmluZyB0byBkZWxpdmVyIGluIGV4Y2VzcyBvZiAyXjMyCiAg Ynl0ZXMgb2YgZGF0YSB2aWEgdGhlIE9NQVBJIGNoYW5uZWwsIG5vdCB0byBtZW50aW9uIHJlcXVp cmluZyBkaGNwZCB0bwogIGJlIGFibGUgdG8gbWFsbG9jKCkgYSBtZW1vcnkgcmVnaW9uIDJeMzIg Ynl0ZXMgaW4gc2l6ZSwgaXQgd2FzIHBvc3NpYmxlCiAgdGhpcyBtaWdodCBoYXZlIHJlc3VsdGVk IGluIGEgaGVhcCBvdmVyZmxvdyBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogIFRoYW5rcyB0byBh IHBhdGNoIGZyb20gaW5mYW1vdXM0Mm1kLgoKLSBkbWFsbG9jKCkgbWVtc2V0KCkncyB0aGUgbm9u LWRlYnVnIChkYXRhKSBwb3J0aW9uIG9mIHRoZSBhbGxvY2F0ZWQKICBtZW1vcnkgdG8gemVyby4g IENvZGUgdGhhdCBtZW1zZXQoKSdzIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgZG1hbGxvYygpIHRv CiAgemVybyBpcyByZWR1bmRhbnQuICBUaGVzZSByZWR1bmRhbmNpZXMgd2VyZSByZW1vdmVkLgoK LSBTb21lIHR5cGUgZGVjbGFyYXRpb24gY29ycmVjdGlvbnMgdG8gdV9pbnQxNl90IHdlcmUgbWFk ZSBpbiBjb21tb24vdHIuYwogIChUb2tlbiBSaW5nIHN1cHBvcnQpIHRoYW5rcyB0byBhIHBhdGNo IGZyb20gSmFzb24gVmFzIERpYXMgYXQgUmVkIEhhdC4KCi0gQSBmYWlsb3ZlciBidWcgdGhhdCB3 YXMgYWxsb3dpbmcgbGVhc2VzIHRoYXQgRVhQSVJFRCBvciB3ZXJlIFJFTEVBU0VECiAgd2hlcmUg dHNmcCBhbmQgdHN0cCBhcmUgaWRlbnRpY2FsIHRpbWVzdGFtcHMgdG8gbGFuZ3Vpc2ggaW4gdGhl c2UKICB0cmFuc2l0aW9uYWwgc3RhdGVzIGhhcyBiZWVuIHJlcGFpcmVkLiAgQXMgYSBzaWRlIGVm ZmVjdCwgbGVhc2UKICBkYXRhYmFzZXMgc2hvdWxkIGJlIGtlcHQgbW9yZSBjb25zaXN0ZW50IG92 ZXJhbGwsIG5vdCBqdXN0IGZvciB0aGVzZQogIHRyYW5zaXRpb25hbCBzdGF0ZXMuCgotIElmIHRo ZSBsZWFzZSBkYiBpcyBkZWxldGVkIG91dCBmcm9tIHVuZGVyIHRoZSBkYWVtb24sIGFuZCBpdCBt b3ZlcyB0bwpyZXdyaXRlCiAgdGhlIGRiLCBpdCB3aWxsIGdvIGFoZWFkIHdpdGggdGhlIG9wZXJh dGlvbiBhbmQgbW92ZSB0aGUgbmV3IGRiIGludG8gcGxhY2UKICBvbmNlIGl0IGRldGVjdHMgdGhl IG9sZCBkYiBkb2VzIG5vdCBleGlzdC4KCi0gZGhjbGllbnQgbm93IGlnbm9yZXMgSVJEQSwgU0lU LCBhbmQgSUVFRTEzOTQgbmV0d29yayBpbnRlcmZhY2VzLCBhcyBpdAogIGlzIGVpdGhlciBub25z ZW5zaWNhbCBvciAoaW4gdGhlIGNhc2Ugb2YgSUVFRTEzOTQpIGlzIG5vdCBrbm93biB0byBzdXBw b3J0CiAgdGhlc2UgaW50ZXJmYWNlcy4gIFRoYW5rcyB0byBNYXJpdXMgR2VkbWluYXMgYW5kIEFu ZHJldyBQb2xsb2NrIG9mIERlYmlhbi4KCi0gU29tZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCBy ZWFzb25zIGZvciBkaGNsaWVudC1zY3JpcHQgaW52b2tpbmcgaGFzCiAgYmVlbiBkb2N1bWVudGVk IGluIHRoZSBkaGNsaWVudC1zY3JpcHQuOCBtYW5wYWdlLgoKLSBGYWlsb3ZlciBwb3RlbnRpYWwg ZXhwaXJ5IGNhbGN1bGF0aW9ucyAoVFNUUCkgaGF2ZSBiZWVuIGNvcnJlY3RlZC4KUmVzdWx0cwog IHNob3VsZCBiZSBzdWJzdGFudGlhbGx5IG1vcmUgY29uc2lzdGVudCwgYW5kIHByb3BlciBnaXZl biB0aGUgY29uc3RyYWludHMuCgotIEFkanVzdGVkIGxlYXNlIHN0YXRlIHZhbGlkYXRpb24gY2hl Y2tzIGluIHBvdGVudGlhbC1jb25mbGljdCwgdG8KICBhY2NvdW50IGZvciBwb3NzaWJsZSBjbG9j ayBza2V3IHNpbWlsYXJseSB0byBub3JtYWwgc3RhdGUsIGFuZCBzZXZlcmFsCiAgcHJldmlvdXNs eSBpbGxlZ2FsIHRyYW5zaXRpb25zIHdlcmUgbWFkZSBsZWdhbCAoZXg6IGFjdGl2ZS0+cmVsZWFz ZWQpLgoKLSBBbiBpbXBvc3NpYmxlIHNhbml0eSBjaGVjayB3YXMgcmVtb3ZlZCBmcm9tIG9tYXBp L2J1ZmZlci5jLCB0aGFua3MgdG8gYQogIHBhdGNoIGZyb20gJ2luZmFtb3VzNDJtZCcuCgotIEFu IE9NQVBJIGhvc3QvbmV0d29yayBieXRlIG9yZGVyIHByb2JsZW0gaW4gbGVhc2UgdGltZSB2YWx1 ZXMgaGFzIGJlZW4KICByZXBhaXJlZC4KCi0gU2V2ZXJhbCBtaW5vciBidWdzLCBsYXJnZWx5IHJl bGF0aW5nIHRvIHRyZWF0aW5nIDgtYnl0ZSB0aW1lIHZhbHVlcyBhcwogIDQtYnl0ZSBlbnRpdGll cywgaGF2ZSBiZWVuIHJlcGFpcmVkIGFmdGVyIGNhcmVmdWwgcmV2aWV3IG9mIHRoZSBGcmVlQlNE CiAgcG9ydHMgY29sbGVjdGlvbidzIHBhdGNoIHNldC4gIFRoYW5rcyB0byB0aGUgbmFtZWxlc3Mg ZW50aXRpZXMgd2hvIGhhdmUKICBjb250cmlidXRlZCB0byB0aGUgRnJlZUJTRCBwb3J0cy4KCi0g V2hlbiB3cml0aW5nIGEgdHJhY2UgZmlsZSwgdGhlIGZpbGUgaXMgbm93IGNyZWF0ZWQgd2l0aCBw ZXJtaXNzaW9ucyAwNjAwLAogIHRvIGhlbHAgYWRtaW5pc3RyYXRvcnMgYXZvaWQgYWNjaWRlbnRh bGx5IHB1YmxpY2lzaW5nIHNlbnNpdGl2ZSBjb25maWcKICBkYXRhLgoKLSBUaGUgY2FsY3VsYXRp b24gb2YgdGhlIG1heGltdW0gc2l6ZSBvZiBESENQIHBhY2tldHMgbm8gbG9uZ2VyIGluY2x1ZGVz CiAgRXRoZXJuZXQgZnJhbWluZyBvdmVyaGVhZC4gIFRoZSByZXN1bHQgaXMgdGhhdCB0aGUgJ01h eGltdW0gTWVzc2FnZQogIFNpemUnIG9wdGlvbiBhZHZlcnRpc2VkIGJ5IGNsaWVudHMsIG9yIHRo ZSBkZWZhdWx0IHZhbHVlIDU3NiwgaXMgbm8KICBsb25nZXIgcmVkdWNlZCBieSAxNCBieXRlcywg YW5kIGluc3RlYWQgZGlyZWN0bHkgcmVmbGVjdHMgdGhlIElQIGxldmVsCiAgTVRVIChhbmQgdGhl IGRlZmF1bHQsIG1pbmltdW0gYWxsb3dlZCBJUCBNVFUgb2YgNTc2KS4KCi0gVGhlIHNwZWNpYWwg c3RhdHVzIG9mIFJFTEVBU0VEL0VYUElSRUQvUkVTRVQgbGVhc2VzIHdoZW4gYSBzZXJ2ZXIKICBp cyBvcGVyYXRpbmcgaW4gcGFydG5lci1kb3duIHdhcyBmaXhlZC4gIEl0IG5vIGxvbmdlciByZXF1 aXJlcyBhCiAgbGVhc2UgYmUgdHdpY2UgdGhlIE1DTFQgYmV5b25kIFNUT1MgdG8gJ3JlYWxsb2Nh dGUnLCBhbmQgdGhlIGV4cGlyeQogIGV2ZW50IHRvIHR1cm4gdGhlc2UgaW50byBGUkVFIGxlYXNl cyB3aXRob3V0IHBlZXIgYWNrbm93bGVkZ2VtZW50CiAgKGFmdGVyIFNUT1MrTUNMVCkgaGFzIGJl ZW4gcmVwYWlyZWQuCgotIENvbXBpbGF0aW9uIG9uIG9sZGVyIFNvbGFyaXMgc3lzdGVtcyAobGFj a2luZwovdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oKQogIGhhcyBiZWVuIHJlcGFpcmVkLgoK LSAiYXBwZW5kImluZyBhIHN0cmluZyBvbnRvIHRoZSBlbmQgb2YgYSAidCIgdHlwZSBvcHRpb24g KHN1Y2ggYXMgdGhlCiAgZG9tYWluLW5hbWUgZmllbGQpIHRoYXQgaGFkIGJlZW4gaW1wcm9wZXJs eSBOVUxMLXRlcm1pbmF0ZWQgYnkgdGhlCiAgREhDUCBzZXJ2ZXIgd2lsbCBubyBsb25nZXIgcmVz dWx0IGluIGEgdHJ1bmNhdGVkIHN0cmluZyBjb250YWluaW5nCiAgb25seSB0aGUgb3B0aW9uIGZy b20gdGhlIHNlcnZlciwgYW5kIG5vdCB0aGUgZXhwZWN0ZWQgYXBwZW5kZWQgdmFsdWUuCiAgVGhh bmtzIHRvIGEgcGF0Y2ggZnJvbSBKYXNvbiBWYXMgRGlhcyBhdCBSZWQgSGF0LgoKLSBGaWxlIGhh bmRsZXJzIG9uIGNvbmZpZ3VyYXRpb24gc3RhdGUgKGNvbmZpZyBmaWxlcyBhbmQgbGVhc2UgZGJz KSBzaG91bGQKICBiZSB0cmVhdGVkIGNvbnNpc3RlbnRseSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IFRSQUNJTkcgaXMgZGVmaW5lZCBvciBub3QuCgotIFRoZSBMaW51eCBidWlsZCBlbnZpcm9ubWVu dCBoYXMgaGFkIHNvbWUgbWlub3IgaW1wcm92ZW1lbnRzIC0gYmV0dGVyCiAgc2Vuc2luZyBvZiA2 NC1iaXQgcG9pbnRlciBzaXplcyAob25seSB1c2VkIGZvciBlc3RhYmxpc2hpbmcgYW4gaWNtcF9p ZCksCiAgYW5kIGNvcnJlY3Rpb25zIHRvICNpZiBvcGVyYXRvcnMgcmVnYXJkaW5nIExJTlVYX01B Sk9SIHNob3VsZCBpdCBldmVyCiAgbW92ZSB0byAzLlswMV0ueC4KCi0gVGhlIHNlcnZlciBub3cg dHJpZXMgaGFyZGVyIHRvIHN1cnZpdmUgdGhlIGNvbmRpdGlvbiB3aGVyZSBpdCBpcyB1bmFibGUK ICB0byBvcGVuIGEgbmV3IGxlYXNlIGZpbGUgdG8gcmV3cml0ZSB0aGUgbGVhc2Ugc3RhdGUgZGF0 YWJhc2UuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4zYjMKCi0gZGhjbGllbnQuY29uZiBkb2N1bWVu dGF0aW9uIGZvciBpbnRlcmZhY2Uge30gd2FzIHVwZGF0ZWQgdG8gcmVmbGVjdCByZWNlbnQKICBk aXNjdXNzaW9uIG9uIHRoZSBkaGNwLWhhY2tlcnMgbWFpbGluZyBsaXN0LgoKLSBJbiByZXNwb25z ZSB0byByZXBvcnRzIHRoYXQgdGhlIHNvZnR3YXJlIGRvZXMgbm90IGNvbXBpbGUgb24gR0NDIDQu MC4wLAogIC1XZXJyb3Igd2FzIHJlbW92ZWQgZnJvbSBNYWtlZmlsZS5jb25mIGZvciBhbGwgcGxh dGZvcm1zIHRoYXQgdXNlZCBpdC4KICBXZSB3aWxsIGFkZHJlc3MgdGhlIHRydWUgcHJvYmxlbSBp biBhIGZ1dHVyZSByZWxlYXNlOyB0aGlzIGlzIGEgdGVtcG9yYXJ5CiAgd29ya2Fyb3VuZC4KCgkJ CUNoYW5nZXMgc2luY2UgMy4wLjNiMgoKLSBBbiBlcnJvciBpbiBjb2RlIGNoYW5nZXMgaW50cm9k dWNlZCBpbiAzLjAuM2IyIHdhcyBjb3JyZWN0ZWQsIHdoaWNoIGNhdXNlZAogIHN0YXRpYyBCT09U UCBjbGllbnRzIHRvIHJlY2VpdmUgcmFuZG9tIGFkZHJlc3Nlcy4KCgkJCUNoYW5nZXMgc2luY2Ug My4wLjNiMQoKLSBBIGJ1ZyB3YXMgZml4ZWQgaW4gQk9PVFBSRVFVRVNUIGhhbmRsaW5nIGNvZGUg d2hlcmVpbiBzdGFsZSByZWZlcmVuY2VzIHRvCiAgaG9zdCByZWNvcmRzIHdvdWxkIGJlIGxlZnQg YmVoaW5kIG9uIGxlYXNlcyB0aGF0IHdlcmUgbm90IGFsbG9jYXRlZCB0byB0aGUKICBjbGllbnQg Y3VycmVudGx5IGJvb3RpbmcgKGVnIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBob3N0IHdhcyBkZW5p ZWQKYm9vdGluZykuCgotIFRoZSBkaGNwZC5jb25mLjUgbWFucGFnZSB3YXMgdXBkYXRlZCB0byBi ZSBtb3JlIGNsZWFyIGluIHJlZ2FyZHMgdG8KICBtdWx0aXBsZSBob3N0IGRlY2xhcmF0aW9ucyAo dGhhbmtzIHRvIFZpbmNlbnQgTWNJbnR5cmUpLiAgJ0ludGVyaW0nIHN0eWxlCiAgZHluYW1pYyB1 cGRhdGVzIHdlcmUgYWxzbyByZXRvdWNoZWQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4yCgotIEEg YnVnIHdhcyBmaXhlZCB3aGVyZSBhIHNlcnZlciBtaWdodCBsb2FkIGJhbGFuY2UgYSBESENQIFJF UVVFU1QgdG8gaXRzCiAgcGVlciBhZnRlciBhbHJlYWR5IGNob29zaW5nIG5vdCB0byBsb2FkIGJh bGFuY2UgdGhlIHByZWNlZGluZyBESVNDT1ZFUi4KICBUaGUgcGVlciBjYW5ub3QgYWxsb2NhdGUg dGhlIG9yaWdpbmF0aW5nIHNlcnZlcidzIGxlYXNlLgoKLSBJbiB0aGUgY2FzZSB3aGVyZSBhIHNl Y29uZGFyeSBzZXJ2ZXIgbG9zdCBpdHMgc3RhYmxlIHN0b3JhZ2Ugd2hpbGUgdGhlCiAgcHJpbWFy eSB3YXMgc3RpbGwgaW4gY29tbXVuaWNhdGlvbnMtaW50ZXJydXB0ZWQsIGFuZCBjYW1lIGJhY2sg b25saW5lLAogIHRoZSBsZWFzZSBkYXRhYmFzZXMgd291bGQgbm90IGJlIGZ1bGx5IHRyYW5zZmVy cmVkIHRvIHRoZSBzZWNvbmRhcnkuCiAgVGhpcyB3YXMgZHVlIHRvIHRoZSBzZWNvbmRhcnkgZXJy YW50bHkgc2VuZGluZyBhbiBleHRyYSBVUERSRVEgbWVzc2FnZQogIHdoZW4gdGhlIHByaW1hcnkg bWFkZSBpdHMgc3RhdGUgdHJhbnNpdGlvbiB0byBQQVJUTkVSLURPV04ga25vd24uCgotIFRoZSBw YWNrYWdlIHdpbGwgbm93IGNvbXBpbGUgY2xlYW5seSBpbiBnY2MgMy4zIGFuZCAzLjQuICBBcyBh IHNpZGUKZWZmZWN0LAogIGxlYXNlIHN0cnVjdHVyZXMgd2lsbCBiZSA5IGJ5dGVzIHNtYWxsZXIg b24gYWxsIHBsYXRmb3Jtcy4gIFRoYW5rcyB0bwogIEphc29uIFZhcyBEaWFzIGF0IFJlZCBIYXQu CgotIEludGVyZmFjZSBkaXNjb3ZlcnkgY29kZSBpbiBESVNDT1ZFUl9VTkNPTkZJR1VSRUQgbW9k ZSBpcyBub3cKICBwcm9wZXJseSByZXN0cmljdGVkIHRvIG9ubHkgZGV0ZWN0aW5nIGJyb2FkY2Fz dCBpbnRlcmZhY2VzLiAgVGhhbmtzCiAgdG8gYSBwYXRjaCBmcm9tIEphc29uIFZhcyBEaWFzIGF0 IFJlZCBIYXQuCgotIGRlY29kZV91ZHBfaXBfaGVhZGVyIHdhcyBjaGFuZ2VkIHNvIHRoYXQgdGhl IElQIGFkZHJlc3Mgd2FzIGNvcGllZCBvdXQKICB0byBhIHZhcmlhYmxlLCByYXRoZXIgdGhhbiBy ZWZlcmVuY2VkIGJ5IGEgcG9pbnRlci4gIFRoaXMgZW5mb3JjZXMgNC1ieXRlCiAgYWxpZ25tZW50 IG9mIHRoZSAzMi1iaXQgSVAgYWRkcmVzcyB2YWx1ZS4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20g RHIuCiAgUGV0ZXIgUG9lbWwuCgotIEFuIGluY29ycmVjdCBsb2cgbWVzc2FnZSB3YXMgY29ycmVj dGVkIHRoYW5rcyB0byBhIHBhdGNoIGZyb20KICBEci4gUGV0ZXIgUG9lbWwuCgotIEEgYnVnIGlu IERETlMgd2FzIHJlcGFpcmVkLCB3aGVyZSBpZiB0aGUgc2VydmVyJ3MgZmlyc3QgREROUyBhY3Rp b24gd2FzCiAgYSBERE5TIHJlbW92YWwgcmF0aGVyIHRoYW4gYSBERE5TIHVwZGF0ZSwgdGhlIHJl c29sdmVyIGxpYnJhcnkncwogIHJldHJhbnNtaXQgdGltZXIgYW5kIHJldHJ5IHRpbWVyIHdhcyBz ZXQgdG8gdGhlIGRlZmF1bHQsIGltcGx5aW5nIGEKICAxNSBzZWNvbmQgdGltZW91dCBpbnRlcnZh bC4gIFdoaWNoIGlzIGEgbGl0dGxlIGV4Y2Vzc2l2ZSBpbiBhIHN5bmNocm9ub3VzLAogIHNpbmds ZS10aHJlYWRlZCBzeXN0ZW0uICBJbiBhbGwgY2FzZXMsIElTQyBESENQIHNob3VsZCBub3cgaG9s ZCBmYXN0IHRvCiAgYSAxLXNlY29uZCB0aW1lb3V0LCB0cnlpbmcgb25seSBvbmNlLgoKLSBUaGUg c2lhZGRyIGZpZWxkIHdhcyBiZWluZyBpbXByb3Blcmx5IHNldCB0byB0aGUgc2VydmVyLWlkZW50 aWZpZXIgd2hlbgogIHJlc3BvbmRpbmcgdG8gREhDUCBtZXNzYWdlcy4gIFJGQzIxMzEgY2xhcmlm aWVkIHRoZSBzaWFkZHIgZmllbGQgYXMKICBtZWFuaW5nIHRoZSAnbmV4dCBzZXJ2ZXIgaW4gdGhl IGJvb3RzdHJhcCBwcm9jZXNzJywgZWcgYSB0ZnRwIHNlcnZlci4KICBUaGUgc2lhZGRyIGZpZWxk IGlzIG5vdyBsZWZ0IHplcm9lZCB1bmxlc3MgbmV4dC1zZXJ2ZXIgaXMgY29uZmlndXJlZC4KCi0g bW9ja3VwX2xlYXNlKCkgY291bGQgaGF2ZSByZXR1cm5lZCBpbiBhbiBlcnJvciBjb25kaXRpb24g KG9yIGluIHRoZQogIGNvbmRpdGlvbiB3aGVyZSBubyBmaXhlZC1hZGRyZXNzIHdhcyBmb3VuZCBt YXRjaGluZyB0aGUgc2hhcmVkCiAgbmV0d29yaykgd2l0aCBzdGFsZSByZWZlcmVuY2VzIHRvIGEg aG9zdCByZWNvcmQuICBUaGlzIGlzIHByb2JhYmx5IG5vdAogIGEgbWVtb3J5IGxlYWsgc2luY2Ug aG9zdCByZWNvcmRzIGdlbmVyYWxseSBuZXZlciBkaWUgYW55d2F5LgoKLSBBIGJ1ZyB3YXMgcmVw YWlyZWQgd2hlcmUgZmFpbG92ZXIgc2VydmVycyB3b3VsZCBsZXQgc3RhbGUgY2xpZW50CmlkZW50 aWZpZXJzCiAgcGVyc2lzdCBvbiBsZWFzZXMgdGhhdCB3ZXJlIHJlYWxsb2NhdGVkIHRvIG5ldyBj bGllbnRzIG5vdCBzZW5kaW5nIGFuIGlkLgoKLSBCaW5kaW5nIHNjb3BlcyAoInNldCB2YXIgPSB2 YWx1ZTsiKSBhcmUgbm93IHJlbW92ZWQgZnJvbSBsZWFzZXMgYWxsb2NhdGVkCiAgYnkgZmFpbG92 ZXIgcGVlcnMgaWYgdGhlIGxlYXNlIGhhZCBleHBpcmVkLiAgVGhpcyBzaG91bGQgaGVscCByZWR1 Y2UgdGhlCiAgbnVtYmVyIG9mIHN0YWxlIGJpbmRpbmcgc2NvcGVzIG9uIGxlYXNlcy4KCi0gQSBz bWFsbCBtZW1vcnkgbGVhayB3YXMgY2xvc2VkIGludm9sdmluZyBjbGllbnQgaWRlbnRpZmllcnMg bGFyZ2VyIHRoYW4KICA3IGJ5dGVzLCBhbmQgZmFpbG92ZXIuCgotIENvbmZpZ3VyaW5nIGEgc3Vi bmV0IGluIGRoY3BkLmNvbmYgd2l0aCBhIHN1Ym5ldCBtYXNrIG9mIDMyIGJpdHMgbWlnaHQKICBj YXVzZSBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0byBvdmVyZmxvdyBoZWFwLiAgVGhhbmtzIHRvIEph c29uIFZhcyBEaWFzCiAgYXQgUmVkIEhhdC4KCi0gU29tZSBpbmNvbnNpc3RlbmNpZXMgaW4gdHJl YXRpbmcgbnVtYmVycyB0aGF0IHRoZSBsZXhlciBwYXJzZWQgYXMgJ05VTUJFUicKICBvciAnTlVN QkVSX09SX05BTUUnIHdhcyByZXBhaXJlZC4gIEhleGFkZWNpbWFsIHBhcnNpbmcgaXMgYWZmZWN0 ZWQsIGFuZAogIHNob3VsZCB3b3JrIGJldHRlci4KCi0gSW4gc2V2ZXJhbCBjYXNlcywgcGFyc2Ug d2FybmluZ3Mgd2VyZSBiZWluZyBpc3N1ZWQgYmVmb3JlIHRoZSBsZXhpY2FsCiAgdG9rZW4gaGFk IGJlZW4gYWR2YW5jZWQgdG8gdGhlIHRva2VuIHdob3NlIHZhbHVlIHdhcyBjYXVzaW5nIGFuIGVy cm9yLi4uCiAgY2F1c2luZyBwYXJzZSB3YXJuaW5ncyB0byBjbGFpbSB0aGUgcHJvYmxlbSBpcyBv biB0aGUgd3JvbmcgdG9rZW4uCgotIEhvc3QgZGVjbGFyYXRpb25zIG1hdGNoaW5nIG9uIGNsaWVu dCBpZGVudGlmaWVyIGZvciBkeW5hbWljIGxlYXNlcyB3aWxsCiAgbm8gbG9uZ2VyIG1hdGNoIGZp eGVkLWFkZHJlc3MgaG9zdCBkZWNsYXJhdGlvbnMgKHRoaXMgaXMgbm93IGlkZW50aWNhbAogIHRv IGJlaGF2aW91ciBmb3IgaG9zdCByZWNvcmRzIG1hdGNoaW5nIG9uIGhhcmR3YXJlIGFkZHJlc3Mp LgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMnJjMwoKLSBBIHByZXZpb3VzbHkgdW5kb2N1bWVudGVk IGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlLCAnbG9jYWwtYWRkcmVzcycsCiAgd2FzIGRvY3VtZW50 ZWQgaW4gdGhlIGRoY3BkLmNvbmYgbWFucGFnZS4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjJyYzIK Ci0gVHdvIHZhcmlhYmxlcyBpbnRyb2R1Y2VkIGluIDMuMC4yYjEgd2VyZSB1c2VkIHdpdGhvdXQg YmVpbmcgaW5pdGlhbGl6ZWQKICBpbiB0aGUgY2FzZSB3aGVyZSBuZWl0aGVyIHRoZSBGSUxFIG5v ciBTTkFNRSBmaWVsZHMgd2VyZSBhdmFpbGFibGUgZm9yCiAgb3ZlcmxvYWRpbmcuICBUaGlzIHdh cyByZXBhaXJlZC4KCi0gQSBoZXJldG9mb3JlIGJlbGlldmVkIHRvIGJlIGltcG9zc2libGUgY29y bmVyIGNhc2Ugb2YgdGhlIG9wdGlvbgogIG92ZXJsb2FkaW5nIGltcGxlbWVudGF0aW9uIHR1cm5l ZCBvdXQgdG8gYmUgcG9zc2libGUgKCJVbmFibGUgdG8gc29ydAogIG92ZXJsb2FkZWQgb3B0aW9u cyBhZnRlciAxMCB0cmllcy4iKS4gIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgcmV3b3JrZWQKICB0 byBjb25zaWRlciB0aGUgY2FzZSBvZiBhbiBvcHRpb24gc28gbGFyZ2UgaXQgd291bGQgcmVxdWly ZSBtb3JlIHRoYW4KICB0aHJlZSBjaHVua3MgdG8gZml0LgoKLSBNYW55IG90aGVyIGluc3RhbmNl cyBvZiB2YXJpYWJsZXMgYmVpbmcgdXNlZCB3aXRob3V0IGJlaW5nIGluaXRpYWxpemVkCiAgd2Vy ZSByZXBhaXJlZC4KCi0gQW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBvbWFwaV9pb19kZXN0 cm95KCkgbGVkIHRvIHRoZSBkaXNjb3ZlcnkKICB0aGF0IHRoaXMgZnVuY3Rpb24gbWF5IHJlc3Vs dCBpbiBvcnBoYW5lZCBwb2ludGVycyAoYW5kIGhlbmNlLCBhIG1lbW9yeQogIGxlYWspLgoKCQkJ Q2hhbmdlcyBzaW5jZSAzLjAuMnJjMQoKLSBhbGxvY2F0ZV9sZWFzZSgpIHdhcyByZXdyaXR0ZW4g dG8gcmVwYWlyIGEgYnVnIGluIHdoaWNoIHRoZSBzZXJ2ZXIgd291bGQKICB0cnkgdG8gYWxsb2Nh dGUgYW4gQUJBTkRPTkVEIGxlYXNlIHdoZW4gRlJFRSBsZWFzZXMgd2VyZSBhdmFpbGFibGUuCgoJ CQlDaGFuZ2VzIHNpbmNlIDMuMC4yYjEKCi0gU29tZSBkaGNwLWV2YWwuNSBtYW5wYWdlIGZvcm1h dHRpbmcgd2FzIHJlcGFpcmVkLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMQoKLSBBIGJ1ZyB3YXMg Zml4ZWQgaW4gdGhlIHNlcnZlcidzICdvcHRpb24gb3ZlcmxvYWRpbmcnIGltcGxlbWVudGF0aW9u LAogIHdoZXJlIG9wdGlvbnMgbG9hZGVkIGludG8gdGhlICdmaWxlJyBhbmQgJ3NuYW1lJyBwYWNr ZXQgZmllbGRzIHdlcmUKICBub3QgYWxpZ25lZCBwcmVjaXNlbHkgYXMgcmZjMjEzMSBkaWN0YXRl cy4KCi0gVGhlIEZyZWVCU0QgY2xpZW50IHNjcmlwdCB3YXMgY2hhbmdlZCB0byBzdXBwb3J0IHRo ZSBjYXNlIHdoZXJlIGEgZG9tYWluCiAgbmFtZSB3YXMgbm90IHByb3ZpZGVkIGJ5IHRoZSBzZXJ2 ZXIuCgotIEEgbWVtb3J5IGxlYWsgaW4gJ29tc2hlbGwnIHBlciBlYWNoIGNvbW1hbmQgbGluZSBw YXJzZWQgd2FzCiAgcmVwYWlyZWQsIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gSmFya2tvIFRvcnBw YS4KCi0gTG9nIGZ1bmN0aW9ucyB3cml0aW5nIHRvIHN0ZGVyciB3ZXJlIGFkanVzdGVkIHRvIHVz ZSB0aGUgU1RERVJSX0ZJTEVOTwogIHN5c3RlbSBkZWZpbml0aW9uIHJhdGhlciB0aGFuICcyJy4g IFRoaXMgaXMgYSBuby1vcCBmb3IgOTAlIG9mIHBsYXRmb3Jtcy4KCi0gT25lIGNhbGwgdG8gdHJh Y2Vfd3JpdGVfcGFja2V0X2lvdigpIGNvdW50ZWQgdGhlIG51bWJlciBvZiBpbyB2ZWN0b3JzCiAg aW5jb3JyZWN0bHksIGNhdXNpbmcgaW5jb25zaXN0ZW50IHRyYWNlZmlsZXMuICBUaGlzIHdhcyBm aXhlZC4KCi0gU29tZSBleHByZXNzaW9uIHBhcnNlIGZhaWx1cmUgbWVtb3J5IGxlYWtzIHdlcmUg Y2xvc2VkLgoKLSBBIGhvc3QgYnl0ZSBvcmRlciBwcm9ibGVtIGluIHRyYWNlZmlsZXMgd2FzIHJl cGFpcmVkLgoKLSBQb29scyBjb25maWd1cmVkIGluIERIQ1BEIGZvciBmYWlsb3ZlciBwb3NzZXNz aW5nIHBlcm1pc3Npb24gbGlzdHMgdGhhdAogIHByZXZpb3VzbHkgd2VyZSBhc3N1bWVkIHRvIG5v dCBpbmNsdWRlIGR5bmFtaWMgYm9vdHAgY2xpZW50cyBhcmUgbm93CiAgYSBsaXR0bGUgbW9yZSBw ZXNzaW1pc3RpYy4gIFRoZSByZXN1bHQgaXMsIGRoY3BkIHdpbGwgbmFnIHlvdSBhYm91dCBqdXN0 CiAgYWJvdXQgbW9zdCBwb29scyB0aGF0IHBvc3Nlc3MgYSAnYWxsb3cnIHN0YXRlbWVudCB3aXRo IG5vICdkZW55JyB0aGF0CiAgd291bGQgZGVmaW5pdGVseSBtYXRjaCBhIGR5bmFtaWMgYm9vdHAg Y2xpZW50LgoKLSBUaGUgJ2RkbnMtdXBkYXRlLXN0eWxlJyBjb25maWd1cmF0aW9uIHdhcm5pbmcg Yml0IG5vdyBpbnNpc3RzIHRoYXQKICB0aGUgY29uZmlndXJhdGlvbiBiZSBnbG9iYWxseSBzY29w ZWQuCgotIFR3byBtZW1vcnkgbGVha3MgaW4gZGhjbGllbnQgd2VyZSBjbG9zZWQgdGhhbmtzIHRv IGEgcGF0Y2ggZnJvbSBGZWxpeAogIEZhcmthcy4KCi0gU29tZSBtaW5vciBidXQgZXhjZWxsZW50 bHkgcGVkYW50aWMgZG9jdW1lbnRhdGlvbiBlcnJvcnMgd2VyZSBmaXhlZAogIHRoYW5rcyB0byBh IHBhdGNoIGZyb20gVGhvbWFzIEtsYXVzbmVyLgoKLSBCdWdzIGluIG9wZXJhdG9yIHByZWNlZGVu Y2UgaW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnRzIGhhdmUgYmVlbiByZXBhaXJlZAogIG9uY2UgYWdh aW4uICBNb3JlIGxlZ2FsIHN5bnRheGVzIHNob3VsZCBiZSBwYXJzZWQgbGVnYWxseS4KCi0gRmFp bGluZyB0byBpbml0aWFsaXplIGEgdHJhY2VmaWxlIGZvciBhbnkgcmVhc29uIGlmIGEgdHJhY2Vm aWxlIHdhcwogIHNwZWNpZmllZCBpcyBub3cgYSBmYXRhbCBlcnJvci4gIFRoYW5rcyB0byBhIHBh dGNoIGZyb20gQWxiZXJ0IEhlcnJhbnouCgotIENvcnJlY3RlZCBhIGJ1ZyBpbiB3aGljaCB0aGUg bnVtYmVyIG9mIGxlYXNlcyB0cmFuc2ZlcnJlZCBhcyBjYWxjdWxhdGVkCiAgYnkgdGhlIGZhaWxv dmVyIHByaW1hcnkgYW5kIHNlbnQgdG8gcGVlcnMgaW4gUE9PTFJFU1AgcmVzcG9uc2VzIG1heSBi ZQogIGluY29ycmVjdC4gIFRoaXMgdmFsdWUgaXMgbm90IGJlbGlldmVkIHRvIGJlIHVzZWQgYnkg b3RoZXIgZmFpbG92ZXIKICBpbXBsZW1lbnRhdGlvbnMsIGV4Y2VwdGluZyBwZXJoYXBzIGFzIGxv Z2dlZCBpbmZvcm1hdGlvbi4KCi0gQ29ycmVjdGVkIGEgYnVnIGluIHdoaWNoICdkaGNwX2ZhaWxv dmVyX3NlbmRfcG9vbHJlc3AoKScgd2FzIGluIGZhY3QKICBzZW5kaW5nIFBPT0xSRVEgbWVzc2Fn ZXMgaW5zdGVhZCBvZiBQT09MUkVTUCBtZXNhc2dlcy4gIFRoaXMgbWVzc2FnZQogIHdhcyBlc3Nl bnRpYWxseSBpZ25vcmVkIHNpbmNlIGZhaWxvdmVyIHNlY29uZGFyaWVzIGVmZmVjdGl2ZWx5IGRv IG5vdAogIHJlc3BvbmQgdG8gUE9PTFJFUSBtZXNzYWdlcy4KCi0gVHlwZSBkZWZpbml0aW9ucyBm b3IgdmFyaW91cyBiaXR3aWR0aHMgb2YgaW50ZWdlcnMgaW4gdGhlIHN1bm9zNS01CiAgYnVpbGQg b2YgSVNDIERIQ1AgaGF2ZSBiZWVuIGZpeGVkLiAgSXQgc2hvdWxkIGNvbXBpbGUgYW5kIHJ1biBt b3JlCiAgZWFzaWx5IHdoZW4gYnVpbHQgaW4gNjQtYml0IGZvciB0aGlzIHBsYXRmb3JtLgoKLSAi YWxsb3cga25vd24tY2xpZW50czsiIGlzIG5vdyBhIGxlZ2FsIHN5bnRheCwgdG8gYXZvaWQgY29u ZnVzaW9uLgoKLSBJZiBvbmUgZGhjcCBzZXJ2ZXIgY2hvb3NlcyB0byAnbG9hZCBiYWxhbmNlJyBh IHJlcXVlc3QgdG8gaXRzIGZhaWxvdmVyCiAgcGVlciwgaXQgZmlyc3QgY2hlY2tzIHRvIHNlZSBp ZiBpdCBiZWxpZXZlcyBzYWlkIHBlZXIgaGFzIGEgZnJlZQogIGxlYXNlIHRvIGFsbG9jYXRlIGJl Zm9yZSBpZ25vcmluZyB0aGUgRElTQ09WRVIuCgotIGxvZygpIHdhcyBsb2dnaW5nIGEgd29yayBi dWZmZXIsIHJhdGhlciB0aGFuIHRoZSB2YWx1ZSByZXR1cm5lZCBieQogIGV4ZWN1dGluZyB0aGUg c3RhdGVtZW50cyBjb25maWd1cmVkIGJ5IHRoZSB1c2VyLiAgSW4gc29tZSBjYXNlcywKICB0aGUg d29yayBidWZmZXIgYW5kIHRoZSBpbnRlbmRlZCByZXN1bHRzIHdlcmUgdGhlIHNhbWUuICBJbiBz b21lIG90aGVyCiAgY2FzZXMsIHRoZXkgd2VyZSBub3QuICBUaGlzIHdhcyBmaXhlZCB0aGFua3Mg dG8gYSBwYXRjaCBmcm9tIEd1bm5hcgogIEZqb25lIGFuZCBkaXJlY3Rjb25uZWN0Lm5vLgoKLSBD b21waWxlciB3YXJuaW5ncyBmb3Igc29tZSBzdHJpbmcgdHlwZSBjb252ZXJzaW9ucyB3YXMgZml4 ZWQsIHRoYW5rcwogIHRvIEFuZHJlYXMgR3VzdGFmc3Nvbi4KCi0gVGhlIG5ldGJzZCBidWlsZCBl bnZpcm9ubWVudHMgd2VyZSBzaW1wbGlmaWVkIHRvIG9uZSwgaW4gd2hpY2gKICAtV2NvbnZlcnNp b24gaXMgbm90IHVzZWQsIHRoYW5rcyB0byBBbmRyZWFzIEd1c3RhZnNzb24uCgotIEhvdyByYW5k b21uZXNzIGluIHRoZSBiYWNrb2ZmLWN1dG9mZiBkaGNsaWVudCBjb25maWd1cmF0aW9uIHZhcmlh YmxlCiAgaXMgaW1wbGVtZW50ZWQgd2FzIGJldHRlciBkb2N1bWVudGVkIGluIHRoZSBtYW5wYWdl LCBhbmQgdGhlIGJlaGF2aW91cgogIG9mIGRoY2xpZW50IGluIFJFUVVFU1QgdGltZW91dCBoYW5k bGluZyB3YXMgY2hhbmdlZCB0byBtYXRjaCB0aGF0IG9mCiAgRElTQ09WRVIgdGltZW91dCBoYW5k bGluZy4KCi0gT21hcGkgd2FzIGhhcmRlbmVkIGFnYWluc3QgY2xpZW50cyB0aGF0IHBhc3MgaW4g bnVsbCB2YWx1ZXMsIHRoYW5rcwogIHRvIGEgcGF0Y2ggZnJvbSBNYXJrIEphc29uIERvbWludXMu CgotIEEgYnVnIHdhcyBmaXhlZCBpbiBkaGNsaWVudCB0aGF0IGtlcHQgaXQgZnJvbSBkb2luZyBj bGllbnQtc2lkZQogIGRkbnMgdXBkYXRlcy4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gQW5kcmVh cyBHdXN0YWZzc29uLCB3aGljaAogIHVuZGVyd2VudCBzb21lIG1vZGlmaWNhdGlvbiBhZnRlciBy ZXZpZXcgYnkgSmFzb24gVmFzIERpYXMuCgotIEZhaWxvdmVyIGltcGxlbWVudGF0aW9ucyBkaXNj b25uZWN0ZWQgZHVlIHRvIHRoZSBuZXR3b3JrIGJldHdlZW4KICB0aGVtIChyYXRoZXIgdGhhbiBv bmUgb2YgdGhlIHR3byBzaHV0dGluZyBkb3duKSB3aWxsIG5vdyB0cnkgdG8KICByZS1lc3RhYmxp c2ggdGhlIGZhaWxvdmVyIGNvbm5lY3Rpb24gZXZlcnkgNSBzZWNvbmRzLCByYXRoZXIgdGhhbgog IHRvIHNpbXBseSB0cnkgb25jZSBhbmQgZ2l2ZSB1cCB1bnRpbCBvbmUgb2YgdGhlbSBpcyByZXN0 YXJ0ZWQuCiAgVGhhbmtzIHRvIGEgcGF0Y2ggZnJvbSBVbGYgRWtiZXJnIGZyb20gSW5mb2Jsb3gs IGFuZCBmaWVsZCB0ZXN0aW5nCiAgYnkgR3JlZ2VyIFYuIFRlaWdyZSB3aGljaCBsZWQgdG8gYW4g ZW5oYW5jZW1lbnQgdG8gaXQuCgotIEEgcHJvYmxlbSB0aGF0IGtlcHQgREhDUCBGYWlsb3ZlciBz ZWNvbmRhcmllcyBmcm9tIHRlYXJpbmcgZG93bgogIGRkbnMgcmVjb3JkcyB3YXMgcmVwYWlyZWQu ICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIFVsZiBFa2JlcmcgZnJvbQogIEluZm9ibG94LgoKLSA2 NGJpdCBwb2ludGVyIHNpemVzIGFyZSBkZXRlY3RlZCBwcm9wZXJseSBvbiBGcmVlQlNEIG5vdy4K Ci0gQSBidWcgd2FzIHJlcGFpcmVkIHdoZXJlIHRoZSBESENQIHNlcnZlciB3b3VsZCBsZWF2ZSBz dGFsZSByZWZlcmVuY2VzCiAgdG8gaG9zdCByZWNvcmRzIG9uIGxlYXNlcyBpdCBvbmNlIHRob3Vn aHQgYWJvdXQgb2ZmZXJpbmcgdG8gY2VydGFpbgogIGNsaWVudHMuICBUaGUgcmVzdWx0IHdvdWxk IGJlIHRvIGFwcGx5IGhvc3QgYW5kICdrbm93bicgc2NvcGVzIHRvIHRoZQogIHdyb25nIGNsaWVu dHMgKHBvc3NpYmx5IGRlbnlpbmcgYm9vdGluZykuICBOT1RFOiAgVGhlICdtaXMtaG9zdCcgcGF0 Y2gKICB0aGF0IHdhcyBiZWluZyBjaXJjdWxhdGVkIGFzIGEgd29ya2Fyb3VuZCBpcyBub3QgdGhl IHdheSB0aGlzIGJ1ZyB3YXMKICBmaXhlZC4gIElmIHlvdSB3ZXJlIGEgdmljdGltIG9mIHRoaXMg YnVnIGluIDMuMC4xLCB5b3UgYXJlIGNhdXRpb25lZAogIHRvIHByb2NlZWQgY2FyZWZ1bGx5IGFu ZCBzZWUgaWYgaXQgZml4ZXMgeW91ciBwcm9ibGVtLgoKLSBBIGJ1ZyB3YXMgcmVwYWlyZWQgaW4g dGhlIHNlcnZlcidzIERIQ1BJTkZPUk0gaGFuZGxpbmcsIHdoZXJlIGl0CiAgdHJpZWQgdG8gZGl2 aW5lIHRoZSBjbGllbnQncyBhZGRyZXNzIGZyb20gdGhlIHNvdXJjZSBwYWNrZXQgYW5kCiAgd291 bGQgZ2V0IGl0IHdyb25nLiAgVGhhbmtzIHRvIEFuc2h1bWFuIFNpbmdoIFJhd2F0LgoKLSBBIGxv ZyBtZXNzYWdlIHdhcyBpbnRyb2R1Y2VkIHRvIGhlbHAgaWxsdW1pbmF0ZSB0aGUgY2FzZSB3aGVy ZSB0aGUKICBzZXJ2ZXIgd2FzIHVuYWJsZSB0byBmaW5kIGEgbGVhc2UgdG8gYXNzaWduIHRvIGFu eSBCT09UUCBjbGllbnQuCiAgVGhhbmtzIHRvIERhbmllbCBCYWtlci4KCi0gQSBtaW5vciBkaGNw ZC5jb25mLjUgbWFucGFnZSBlcnJvciB3YXMgZml4ZWQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4x cmMxNAoKLSBUaGUgZ2xvYmFsIHZhcmlhYmxlICdjdXJfdGltZScgd2FzIGNlbnRyYWxpemVkIGFu ZCBpcyBub3cgdW5pZm9ybWx5IG9mIGEKICB0eXBlICNkZWZpbmVkIGluIHN5c3RlbS1kZXBlbmRl bnQgaGVhZGVycy4gIEl0IGhhZCBwcmV2aW91c2x5IGJlZW4gZGVmaW5lZAogIGluIG9uZSBvZiBt YW55IHBsYWNlcyBhcyBhIDMyLWJpdCB2YWx1ZSwgYW5kIHRoaXMgY2F1c2VzIG1heWhlbSBvbiA2 NC1iaXQKICBiaWcgZW5kaWFuIHN5c3RlbXMuICBJdCBwcm9iYWJseSB3YXNuJ3QgdG9vIGhlYWx0 aHkgb24gbGl0dGxlIGVuZGlhbgogIHN5c3RlbXMgZWl0aGVyLgoKLSBBIHByaW50ZiBmb3JtYXQg c3RyaW5nIGVycm9yIGludHJvZHVjZWQgaW4gcmMxNCB3YXMgcmVwYWlyZWQuCgotIEFJWCBzeXN0 ZW0tZGVwZW5kZW50IGhlYWRlciBmaWxlIHdhcyBhbHRlcmVkIHRvIG9ubHkgZGVmaW5lIE5PX1NO UFJJTlRGCiAgaWYgdGhlIGNvbmRpdGlvbiB1c2VkIHRvICNpZmRlZiBpbiB2c25wcmludGYgaW4g QUlYJyBoZWFkZXIgZmlsZXMKICBpcyBmYWxzZS4KCi0gVGhlIEFscGhhL09TRiBzeXN0ZW0tZGVw ZW5kZW50IGhlYWRlciBmaWxlIHdhcyBhbHRlcmVkIHRvIGRlZmluZQogIE5PX1NOUFJJTlRGIG9u IE9TIHJldmlzaW9ucyBvbGRlciB0aGFuIDQuMEcuCgotIG9tYXBpcC90ZXN0LmMgaGFkIHN0cmlu Zy5oIGFkZGVkIHRvIGl0cyBpbmNsdWRlcy4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzEzCgoh IENBTi0yMDA0LTA0NjAgLSBDRVJUIFZVIzMxNzM1MDogRml2ZSBzdGFjayBvdmVyZmxvdyBleHBs b2l0cyB3ZXJlIGNsb3NlZAogIGluIGxvZ2dpbmcgbWVzc2FnZXMgd2l0aCBleGNlc3NpdmVseSBs b25nIGhvc3RuYW1lcyBwcm92aWRlZCBieSB0aGUKICBjbGllbnRzLiAgSXQgaXMgaGlnaGx5IHBy b2JhYmxlIHRoYXQgdGhlc2UgY291bGQgaGF2ZSBiZWVuIHVzZWQgYnkKICBhdHRhY2tlcnMgdG8g Z2FpbiBhcmJpdHJhcnkgcm9vdCBhY2Nlc3Mgb24gc3lzdGVtcyB1c2luZyBJU0MgREhDUCAzLjAu MQogIHJlbGVhc2UgY2FuZGlkYXRlcyAxMiBvciAxMy4gIFNwZWNpYWwgdGhhbmtzIHRvIEdyZWdv cnkgRHVjaGVtaW4gZm9yCiAgYm90aCBmaW5kaW5nIGFuZCBzb2x2aW5nIHRoZSBwcm9ibGVtLgoK ISBDQU4tMjAwNC0wNDYxIC0gQ0VSVCBWVSM2NTQzOTA6IE9uY2UgdGhlIGFib3ZlIHdhcyBjbG9z ZWQsIGFuIG9wZW5pbmcKICBpbiBsb2dfKigpIGZ1bmN0aW9ucyB3YXMgZXZpZGVuY2VkLCBvbiBz b21lIHNwZWNpZmljIHBsYXRmb3JtcyB3aGVyZQogIHZzbnByaW50ZigpIHdhcyBub3QgYmVsaWV2 ZWQgdG8gYmUgYXZhaWxhYmxlIGFuZCBjYWxscyB3ZXJlIHdyYXBwZWQgdG8KICBzcHJpbnRmKCkg aW5zdGVhZC4gIEFnYWluLCBjcmVkaXQgZ29lcyB0byBHcmVnb3J5IER1Y2hlbWluIGZvciBmaW5k aW5nCiAgdGhlIHByb2JsZW0uICBDYWxscyB0byBzbnByaW50ZigpIGFyZSBub3cgbGlua2VkIHRv IGEgZGlzdHJpYnV0aW9uLWxvY2FsCiAgc25wcmludGYgaW1wbGVtZW50YXRpb24sIG9ubHkgaW4g dGhvc2UgY2FzZXMgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZSBpcwogIG5vdCBrbm93biB0byBwcm92 aWRlIG9uZSAoc2VlIGluY2x1ZGVzL2NmL1thcmNoXS5oKS4gIElmIHlvdSBleHBlcmllbmNlCiAg bGlua2luZyBwcm9ibGVtcyB3aXRoIHNucHJpbnRmL3ZzbnByaW50ZiBvciAnaXNjX3ByaW50Xycg ZnVuY3Rpb25zLCB0aGlzCiAgaXMgd2hlcmUgdG8gbG9vay4gIFRoaXMgdnVsbmVyYWJpbGl0eSBk aWQgbm90IGV4aXN0IGluIGFueSBwcmV2aW91c2x5CiAgcHVibGlzaGVkIHZlcnNpb24gb2YgSVND IERIQ1AuCgotIENvbXBpbGF0aW9uIG9uIGhwdXggMTEuMTEgd2FzIHJlcGFpcmVkLgoKLSAnVGhl IGNyb3NzLWNvbXBpbGUgYnVnIGZpeCcgd2FzIGJhY2tlZCBvdXQuCgoJCQlDaGFuZ2VzIHNpbmNl IDMuMC4xcmMxMgoKLSBGaXhlZCBhIGJ1ZyBpbiBvbWFwaSBsZWFzZSBsb29rdXAgZnVuY3Rpb24s IHRvIGZvcm0gdGhlIGhhcmR3YXJlCiAgYWRkcmVzcyBmb3IgdGhlIGhhc2ggbG9va3VwIGNvcnJl Y3RseSwgdGhhbmtzIHRvIGEgcGF0Y2ggZnJvbQogIFJpY2hhcmQgSGlyc3QuCgotIEZpeGVkIGEg YnVnIHdoZXJlIGRoY3JlbGF5IHdhcyBzZW5kaW5nIHJlbGF5ZWQgcmVzcG9uc2VzIGJhY2sgdG8g dGhlCiAgYnJvYWRjYXN0IGFkZHJlc3MsIGJ1dCB3aXRoIHRoZSBzb3VyY2UncyB1bmljYXN0IG1h YyBhZGRyZXNzLiAgU2hvdWxkCiAgbm93IGNvbmZvcm0gdG8gcmZjMjEzMSBzZWN0aW9uIDQuMS4K Ci0gQ3Jvc3MtY29tcGlsZSBidWcgZml4OyB1c2UgJChBUikgaW5zdGVhZCBvZiBhci4gIFRoYW5r cyB0byBNb3J0ZW4gQnJvcnVwLgoKLSBGaXhlZCBhIGNyYXNoIGJ1ZyBpbiBkaGNsaWVudCB3aGVy ZSBkaGNwZCBzZXJ2ZXJzIHRoYXQgZG8gbm90IHByb3ZpZGUKICByZW5ld2FsIHRpbWVzIHJlc3Vs dHMgaW4gYW4gRlBFLiAgQXMgYSBzaWRlIGVmZmVjdCwgZGhjbGllbnQgY2FuIG5vdwogIHByb3Bl cmx5IGhhbmRsZSAweEZGRkZGRkZGICgtMSkgZXhwaXJ5IHRpbWVzIHN1cHBsaWVkIGJ5IHNlcnZl cnMuICBUaGFua3MKICB0byBhIHBhdGNoIGZyb20gQnVydCBTaWx2ZXJtYW4uCgotIFRoZSAncGlu ZyB0aW1lb3V0JyBkZWJ1Z3MgZnJvbSByYzEyIHdlcmUgcmVtb3ZlZCB0byAtRERFQlVHIG9ubHks CiAgYW5kIHJlZm9ybWF0dGVkIHRvIGNvcnJlY3QgYSBjb21waWxhdGlvbiBlcnJvciBvbiBTb2xh cmlzIHBsYXRmb3Jtcy4KCi0gQSBwYXRjaCB3YXMgYXBwbGllZCB3aGljaCBmaXhlcyBhIGNhc2Ug d2hlcmUgbGVhc2VzIHJlYWQgZnJvbSB0aGUKICBsZWFzZXMgZGF0YWJhc2UgZG8gbm90IHByb3Bl cmx5IG92ZXItcmlkZSBwcmV2aW91c2x5IHJlYWQgbGVhc2VzLgoKLSBkaGNwY3RsLjMgbWFucGFn ZSB3YXMgdHdlYWtlZC4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzExCgotIEEgcGF0Y2ggZnJv bSBTdGV2ZSBDYW1wYmVsbCB3YXMgYXBwbGllZCB3aXRoIG1pbm9yIG1vZGlmaWNhdGlvbnMgdG8K ICBwZXJtaXQgcmV2ZXJzZSBkbnMgUFRSIHJlY29yZCB1cGRhdGVzIHdpdGggdmFsdWVzIGNvbnRh aW5pbmcgc3BhY2VzLgoKLSBBIHBhdGNoIGZyb20gRmxvcmlhbiBMb2hvZmYgd2FzIGFwcGxpZWQg d2l0aCBzb21lIG1vZGlmaWNhdGlvbnMgdG8KICBkaGNyZWxheS4gIEl0IG5vdyBkaXNjYXJkcyBw YWNrZXRzIHdob3NlIGhvcCBjb3VudCBleGNlZWRzIDEwIGJ5IGRlZmF1bHQsCiAgYW5kIGEgY29t bWFuZC1saW5lIG9wdGlvbiAoLWMpIGNhbiBiZSB1c2VkIHRvIHNldCB0aGlzIHRocmVzaG9sZC4K Ci0gQSBmYWlsb3ZlciBidWcgcmVsYXRpbmcgdG8gaWRlbnRpZnlpbmcgcGVlcnMgYnkgbmFtZSBs ZW5ndGggaW5zdGVhZCBvZgogIGJ5IG5hbWUgd2FzIGZpeGVkLgoKLSBEZWNsYXJpbmcgZmFpbG92 ZXIgY29uZmlncyB3aXRoaW4gc2hhcmVkLW5ldHdvcmsgc3RhdGVtZW50cyBzaG91bGQgbm8KICBs b25nZXIgcmVzdWx0IGluIGVycm9yLgoKLSBUaGUgLW53IGNvbW1hbmQgbGluZSBvcHRpb24gdG8g ZGhjbGllbnQgbm93IHdvcmtzLgoKLSBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIE1pY2hhZWwgUmlj aGFyZHNvbjoKCS0gU29tZSBwcm9ibGVtcyB3aXRoIGxvbmcgb3B0aW9uIHByb2Nlc3NpbmcgaGF2 ZSBiZWVuIGZpeGVkLgoJLSBTb21lIGZpeGVzIHRvIG1pbmlyZXMgc28gdGhhdCB1cGRhdGVzIG9m IEtFWSByZWNvcmRzIHdpbGwgd29yay4KCi0gY29udHJpYi9tczJpc2Mgd2FzIHVwZGF0ZWQgYnkg U2h1LU1pbiBDaGFuZyBvZiB0aGUgSW50ZWwgQ29ycG9yYXRpb24uCiAgc2VlIGNvbnRyaWIvbXMy aXNjL3JlYWRtZS50eHQgZm9yIHJldmlzaW9uIG5vdGVzLgoKLSBEaGNsaWVudCBubyBsb25nZXIg dXNlcyBzaGVsbCBjb21tYW5kcyB0byBraWxsIGFub3RoZXIgaW5zdGFuY2Ugb2YKICBpdHNlbGYs IGl0IHNlbmRzIHRoZSBzaWduYWwgZGlyZWN0bHkuICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIE1h cnRpbgogIEJsYXBwLgoKLSBUaGUgRnJlZUJTRCBkaGNsaWVudC1zY3JpcHQgd2FzIGNoYW5nZWQg c28gdGhhdCBhIGZhaWx1cmUgdG8gd3JpdGUgdG8KICAvZXRjL3Jlc29sdi5jb25mIGRvZXMgbm90 IHByZW1hdHVyZWx5IGVuZCB0aGUgc2NyaXB0LiAgVGhpcyBrZWVwcyBkaGNsaWVudAogIGZyb20g bG9vcGluZyBpbmZpbml0ZWx5IHdoZW4gdGhpcyBpcyB0aGUgY2FzZS4gIFRoYW5rcyB0byBhIHBh dGNoIGZyb20KICBNYXJ0aW4gQmxhcHAuCgotIEEgcGF0Y2ggZnJvbSBCaWxsIFN0ZXBoZW5zIHdh cyBhcHBsaWVkIHdoaWNoIHJlc29sdmVzIGEgcHJvYmxlbSB3aXRoIGxlYXNlCiAgZXhwaXJ5IHRp bWVzIGluIGZhaWxvdmVyIGNvbmZpZ3VyYXRpb25zLgoKLSBBIG1lbW9yeSBsZWFrIGluIGNvbmZp Z3VyYXRpb24gcGFyc2luZyB3YXMgY2xvc2VkIHRoYW5rcyB0byBhIHBhdGNoIGZyb20KICBTdGV2 ZSBHLgoKLSBUaGUgZnVuY3Rpb24gd2hpY2ggZGlzY292ZXJzIGludGVyZmFjZXMgd2lsbCBub3cg c2tpcCBub24tYnJvYWRjYXN0IG9yCiAgcG9pbnQtdG8tcG9pbnQgaW50ZXJmYWNlcywgdGhhbmtz IHRvIGEgcGF0Y2ggZnJvbSBEYXZpZCBCcm93bmxlZS4KCi0gT3B0aW9ucyBub3QgeWV0IGtub3du IGJ5IHRoZSBkaGNwZCBvciBkaGNsaWVudCBoYXZlIGhhZCB0aGVpciBuYW1lcwogIGNoYW5nZWQg c3VjaCB0aGF0IHRoZXkgZG8gbm90IGNvbnRhaW4gIyBzeW1ib2xzLCBpbiBjYXNlIHRoZXkgc2hv dWxkIGV2ZXIKICBhcHBlYXIgaW4gYSBsZWFzZSBmaWxlLiAgQW4gb3B0aW9uIHRoYXQgbWlnaHQg aGF2ZSBiZWVuIG5hbWVkICIjMTQ0IiBpcwogIG5vdyAidW5rbm93bi0xNDQiLgoKLSBBbm90aGVy IHBhdGNoIGZyb20gQmlsbCBTdGVwaGVucyB3aGljaCBhbGxvd3MgdGhlIHBpbmctY2hlY2sgdGlt ZW91dCB0bwogIGJlIGNvbmZpZ3VyZWQgYXMgJ3BpbmctdGltZW91dCcuICBEZWZhdWx0cyB0byAx LgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMXJjMTAKCi0gUG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxv d3MgaW4gbWluaXJlcyByZXBhaXJlZC4KCi0gQSBjaGFuZ2UgdG8gdGhlIGxpbnV4IGNsaWVudCBz Y3JpcHQgdG8gdXNlIC9iaW4vYmFzaCwgc2luY2UgL2Jpbi9zaCBtYXkKICBub3QgYmUgYmFzaC4K Ci0gU29tZSBtaXNzaW5nIHZhX2VuZCBjbGVhbnVwcyB0aGFua3MgdG8gYSBwYXRjaCBmcm9tIFRo b21hcyBLbGF1c25lci4KCi0gQSBjb3JyZWN0aW9uIG9mIGJvb2xlYW4gcGFyc2luZyBzeW50YXgg dmFsaWRhdGlvbiAtIHNvbWUgaWxsZWdhbCBzeW50YXhlcwogIHRoYXQgd29ya2VkIGJlZm9yZSBh cmUgbm93IGRldGVjdGVkIGFuZCBwcm9kdWNlIGVycnMsIHNvbWUgbGVnYWwgc3ludGF4ZXMKICB0 aGF0IGVycm9yZWQgYmVmb3JlIHdpbGwgbm93IHdvcmsgcHJvcGVybHkuCgotIFNvbWUgc2VhcmNo LWFuZC1yZXBsYWNlIGVycm9ycyB0aGF0IGNhdXNlZCBzb21lIG9wdGlvbnMgdG8gY2hhbmdlIHRo ZWlyCiAgbmFtZXMgd2FzIHJlcGFpcmVkLgoKLSBTaHUtbWluIENoYW5nIG9mIHRoZSBJbnRlbCBj b3Jwb3JhdGlvbiBoYXMgY29udHJpYnV0ZWQgYSBwZXJsIHNjcmlwdCBhbmQKICBtb2R1bGUgdGhh dCBjb252ZXJ0cyB0aGUgTVMgTlQ0IERIQ1AgY29uZmlndXJhdGlvbiB0byBhIElTQyBESENQMwog IGNvbmZpZ3VyYXRpb24gZmlsZS4KCi0gQXBwbGllZCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkaGNw Y3RsIG1lbW9yeSBsZWFrIHBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwKICBTcXVpZXIgYXQgUmVlZkVk Z2UsIEluYy4gIChncm9vQHJlZWZlZGdlLmNvbSkuCgotIE1pc3Npbmcgbm9uLW9wdGlvbmFsIGZh aWxvdmVyIHBlZXIgY29uZmlndXJhdGlvbnMgd2lsbCBub3cgcmVzdWx0IGluIGEKc29mdAogIGVy cm9yIHJhdGhlciB0aGFuIGEgbnVsbCBkZXJlZmVyZW5jZS4KCgkJCUNoYW5nZXMgc2luY2UgMy4w LjFyYzkKCi0gQSBmb3JtYXQgc3RyaW5nIHdhcyBjb3JyZWN0ZWQgdG8gZml4IGNvbXBpbGVyIHdh cm5pbmdzLgoKLSBBIG51bWJlciBvZiBzcGVsbGluZyBjb3JyZWN0aW9ucyB3ZXJlIG1hZGUgaW4g dGhlIG1hbiBwYWdlcy4KCi0gVGhlIGRoY2xpZW50LmNvbmYuNSBtYW4gcGFnZSB3YXMgY2hhbmdl ZCB0byByZWZlciB0byBkby1mb3J3YXJkLXVwZGF0ZXMKICByYXRoZXIgdGhhbiBhIGNvbmZpZ3Vy YXRpb24gb3B0aW9uIHRoYXQgZG9lc24ndCBleGlzdC4KCi0gQSBGcmVlQlNELXNwZWNpZmljIGJ1 ZyBpbiB0aGUgaW50ZXJmYWNlIHJlbW92YWwgaGFuZGxpbmcgd2FzIGZpeGVkLgoKLSBBIExpbnV4 LXNwZWNpZmljIFRva2VuIFJpbmcgZGV0ZWN0aW9uIHByb2JsZW0gd2FzIGZpeGVkLgoKLSBIYXNo ZXMgcmVtb3ZlZCBmcm9tIGFzLXlldC11bmtub3duIGFnZW50IG9wdGlvbnMsIGhhdmluZyB0aG9z ZSBvcHRpb25zCiAgYXBwZWFyIGluIHJlYWxpdHkgYmVmb3JlIHdlIGtub3cgYWJvdXQgdGhlbSB3 aWxsIG5vIGxvbmdlciBwcm9kdWNlCiAgc2VsZi1jb3JydXB0aW5nIGxlYXNlIGRhdGFiYXNlcy4K Ci0gZGhjbGllbnQgd2lsbCB1c2UgdGhlIHByb3BlciBwb3J0IG51bWJlcnMgbm93IHdoZW4gdXNp bmcgdGhlIC1nIG9wdGlvbi4KCi0gQSBvcmRlci1vZi1vcGVyYXRpb25zIGJ1ZyB3aXRoIDIgbWF0 Y2ggY2xhdXNlcyBpbiAxIGNsYXNzIHN0YXRlbWVudCBpcwogIGZpeGVkIHRoYW5rcyB0byBhIHBh dGNoIGZyb20gQW5kcmV3IE1hdGhlc29uLgoKLSBDb21waWxhdGlvbiBwcm9ibGVtcyBvbiBTb2xh cmlzIHdlcmUgZml4ZWQuCgotIENvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gYnVpbHQgd2l0aCBE RUJVRyBvciBERUJVR19QQUNLRVQgd2VyZSByZXBhaXJlZC4KCi0gQSBmaXggdG8gdGhlIGRoY3Ag YWNrIHByb2Nlc3Mgd2hpY2ggbWFrZXMgY2VydGFpbiBncm91cCBvcHRpb25zIHdpbGwgYmUKICBp bmNsdWRlZCBpbiB0aGUgZmlyc3QgREhDUE9GRkVSIG1lc3NhZ2Ugd2FzIG1hZGUgdGhhbmtzIHRv IGEgcGF0Y2ggZnJvbQogIExpbmcgR291LgoKLSBBIGZldyBtZW1vcnkgbGVha3Mgd2VyZSByZXBh aXJlZCB0aGFua3MgdG8gcGF0Y2hlcyBmcm9tIEJpbGwgU3F1aWVyIGF0CiAgUmVlZkVkZ2UsIElu Yy4gIChncm9vQHJlZWZlZGdlLmNvbSkuCgotIEEgZml4IGZvciBzaGFyZWQtbmV0d29ya3MgdGhh dCBzb21ldGltZXMgZ2l2ZSBjbGllbnRzIG9wdGlvbnMgZm9yIHRoZQogIHdyb25nIHN1Ym5ldHMg KGluIHBhcnRpY3VsYXIsICdvcHRpb24gcm91dGVycycpIHdhcyBhcHBsaWVkLCB0aGFua3MgdG8K ICBUZWQgTGVtb24gZm9yIHRoZSBwYXRjaC4KCi0gT21zaGVsbCdzIGhhbmRsaW5nIG9mIGRvdHRl ZCBvY3RldHMgYXMgdmFsdWVzIHdhcyBjaGFuZ2VkIHN1Y2ggdGhhdCBkb3RzCiAgb25lIGFmdGVy IHRoZSBvdGhlciBwcm9kdWNlIHplcm8gdmFsdWVzIGluIHRoZSBpbnRlZ2VyIHN0cmluZy4KCgkJ CUNoYW5nZXMgc2luY2UgMy4wLjFyYzgKCi0gRml4IGEgZm9ybWF0IHN0cmluZyB2dWxuZXJhYmls aXR5IGluIHRoZSBzZXJ2ZXIgdGhhdCBjb3VsZCBsZWFkIHRvIGEKICByZW1vdGUgcm9vdCBjb21w cm9taXNlIChkaXNjb3ZlcmVkIGJ5IE5HU0VDIFJlc2VhcmNoIFRlYW0sIHd3dy5uZ3NlYy5jb20p LgoKLSBBZGQgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBOZXRCU0Qvc3BhcmM2NC4KCi0gRml4IGEg YnVnIGluIHRoZSBjb21tYW5kLWxpbmUgcGFyc2luZyBvZiB0aGUgY2xpZW50LiAgQWxzbywgcmVz b2x2ZQogIGEgbWVtb3J5IGxlYWsuCgotIEFkZCBiZXR0ZXIgc3VwcG9ydCBmb3Igc2hlbGxzIG90 aGVyIHRoYW4gYmFzaCBpbiB0aGUgTGludXggY2xpZW50CiAgc2NyaXB0LgoKLSBWYXJpb3VzIGJ1 aWxkIGZpeGVzIGZvciBtb2Rlcm4gdmVyc2lvbnMgb2YgRnJlZUJTRCBhbmQgTGludXguCgotIEZp eCBhIGJhZCBib3VuZHMgY2hlY2sgd2hlbiBwcmludGluZyBiaW5kaW5nIHN0YXRlIG5hbWVzLgoK LSBDbGFyaWZ5IGRvY3VtZW50YXRpb24gYWJvdXQgZml4ZWQtYWRkcmVzcyBhbmQgbXVsdGlwbGUg YWRkcmVzc2VzLgoKLSBGaXggYSB0eXBvIGluIHRoZSBhdXRob3JpdGF0aXZlIGVycm9yIG1lc3Nh Z2UuCgotIE1ha2UgYSBsb2cgZW50cnkgd2hlbiB3ZSBjYW4ndCB3cml0ZSBhIGJpbGxpbmcgY2xh c3MuCgotIFVzZSBjb252ZXJzaW9uIHRhcmdldHMgdGhhdCBhcmUgdGhlIHJpZ2h0IHNpemUgb24g YWxsIGFyY2hpdGVjdHVyZXMuCgotIEluY3JlbWVudCB0aGUgaG9wIGNvdW50IHdoZW4gcmVsYXlp bmcuCgotIExvZyBhIG1lc3NhZ2Ugd2hlbiBsZWFzZSBzdGF0ZSBpcyBjaGFuZ2VkIHRocm91Z2gg T01BUEkuCgotIERvbid0IHJlcnVuIHRoZSBzaGFyZWRfbmV0d29yayB3aGVuIGV2YWx1YXRpbmcg dGhlIHBvb2wuCgotIEZpeCBhIHJldmVyc2VkIHRlc3QgaW4gdGhlIHBhcnNlci4KCi0gQ2hhbmdl IHRoZSB0eXBlIG9mIHJidWZfbWF4LgoKLSBNYWtlIEZUU19MQVNUIGEgbWFuaWZlc3QgY29uc3Rh bnQgdG8gcXVpZXQgd2FybmluZ3MuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4xcmM3CgotIEZpeCB0 d28gY29tcGlsZXIgd2FybmluZ3MgdGhhdCBhcmUgZ2VuZXJhdGVkIHdoZW4gY29tcGlsaW5nIG9u IFNvbGFyaXMKICB3aXRoIGdjYy4gICBUaGVzZSBzdG9wIHRoZSBidWlsZCwgZXZlbiB0aG91Z2gg dGhleSB3ZXJlbid0IGFjdHVhbGx5CiAgZXJyb3JzLCBiZWNhdXNlIHdlIHByZWZlciB0aGF0IG91 ciBidWlsZHMgZ2VuZXJhdGUgbm8gd2FybmluZ3MuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4xcmM2 CgotIERvbid0IGFsbG93IGEgbGVhc2UgdGhhdCdzIGluIHRoZSBFWFBJUkVELCBSRUxFQVNFRCBv ciBSRVNFVCBzdGF0ZQogIHRvIGJlIHJlbmV3ZWQuCgotIEltcGxlbWVudCBsZWFzZSBzdGVhbGlu ZyBmb3IgY2FzZXMgd2hlcmUgdGhlIHByaW1hcnkgaGFzIGZld2VyIGxlYXNlcwogIHRoYW4gdGhl IHNlY29uZGFyeSwgYXMgY2FsbGVkIGZvciBieSB0aGUgc3RhbmRhcmQuCgotIEFkZCBhIGZ1ZGdl IGZhY3RvciB0byB0aGUgbGVhc2UgZXhwaXJ5IGFjY2VwdGFuY2UgY29kZSwgKHN1Z2dlc3RlZAog IGJ5IEtldmluIE1pbGxlciBvZiBDTVUpLgoKLSBGaXggYSBidWcgaW4gcGVybWl0X2xpc3RfbWF0 Y2ggdGhhdCBtYWRlIGl0IG11Y2ggdG9vIHdpbGxpbmcgdG8gc2F5CiAgdGhhdCB0d28gcGVybWl0 IGxpc3RzIG1hdGNoZWQuCgotIFVubGVzcyBERUJVR19ETlNfVVBEQVRFUyBpcyBkZWZpbmVkLCBw cmludCBtb3JlIHVzZXItZnJpZW5kbHkgKGFuZAogIGFsc28gbW9yZSBjb21wYWN0KSBtZXNzYWdl cyBhYm91dCBETlMgdXBkYXRlcy4KCi0gRml4IGEgYnVnIGluIGdlbmVyYXRpbmcgd2lyZS1mb3Jt YXQgZG9tYWluIG5hbWVzIGZvciB0aGUgRlFETiBvcHRpb24uCgotIEZpeCBhIGJ1ZyB3aGVyZSB0 aGUgRlFETiBvcHRpb24gd291bGQgbm90IGJlIHJldHVybmVkIGlmIHRoZSBjbGllbnQKICByZXF1 ZXN0ZWQgaXQsIGNvbnRyYXJ5IHRvIHRoZSBzdGFuZGFyZC4KCi0gT24gRGFyd2luLCB1c2UgdGhl IEZyZWVCU0QgREhDUCBjbGllbnQgc2NyaXB0LgoKLSBPbiBOZXRCU0Qvc3BhcmMsIGRvbid0IGNo ZWNrIGZvciBjYXN0aW5nIHdhcm5pbmdzLgoKLSBBZGQgYSBmbGFnIGluIHRoZSBESENQIGNsaWVu dCB0byBkaXNhYmxlIHVwZGF0aW5nIHRoZSBjbGllbnQncyBBCiAgcmVjb3JkIHdoZW4gc2VuZGlu ZyBhbiBGUUROIG9wdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIGNsaWVudCBpcwogIGdvaW5nIHRv IHVwZGF0ZSBpdHMgQSByZWNvcmQuCgotIEluIHRoZSBjbGllbnQsIGRvbid0IGF0dGVtcHQgYSBE TlMgdXBkYXRlIHVudGlsIG9uZSBzZWNvbmQgYWZ0ZXIKICBjb25maWd1cmluZyB0aGUgbmV3IElQ IGFkZHJlc3MsIGFuZCBpZiB0aGUgdXBkYXRlIHRpbWVzIG91dCwga2VlcAogIHRyeWluZyB1bnRp bCBhIHJlc3BvbnNlLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZSwgaXMgcmVjZWl2ZWQgZnJvbSB0aGUK ICBETlMgc2VydmVyLgoKLSBGaXggYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgYnVnIGluIHRoZSBE SENQIGNsaWVudC4KCi0gQXBwbHkgc29tZSBGcmVlQlNELXNwZWNpZmljIGJ1ZyBmaXhlcyBzdWdn ZXN0ZWQgYnkgTXVycmF5IFN0b2tlbHkuCgotIEZpeCBhIGJ1ZyBpbiBuc19wYXJzZXJyKCksIHdo ZXJlIGl0IHdhcyByZXR1cm5pbmcgdGhlIHdyb25nIHNvcnQKICBvZiByZXN1bHQgY29kZSBpbiBz b21lIGNhc2VzIChzdWdnZXN0ZWQgYnkgQmVuIEhhcnJpcyBvZiB0aGUKICBOZXRCU0QgcHJvamVj dCkuCgotIEZpeCBhIGJ1ZyBpbiBpc19pZGVudGlmaWVyKCksIHdoZXJlIGl0IHdhcyBjaGVja2lu ZyBhZ2FpbnN0IEVPRgogIGluc3RlYWQgb2YgdGhlIEVORF9PRl9GSUxFIHRva2VuIChhbHNvIHN1 Z2dlc3RlZCBieSBCZW4gSGFycmlzKS4KCi0gRml4IGEgYnVnIHdoZXJlIGlmIGFuIG9wdGlvbiB1 bml2ZXJzZSBjb250YWluZWQgbm8gb3B0aW9ucywgdGhlCiAgREhDUCBzZXJ2ZXIgY291bGQgZHVt cCBjb3JlIChXYWx0ZXIgU3RlaW5lcikuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgaGFuZGxpbmcgb2Yg ZW5jYXBzdWxhdGVkIG9wdGlvbnMuCgotIEZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBOV0lQIHN1 Ym9wdGlvbnMgZnJvbSBiZWluZyBwcm9jZXNzZWQuCgotIERlbGV0ZSB0aGUgRlRTX0JPT1RQIGFu ZCBGVFNfUkVTRVJWRUQgc3RhdGVzIGFuZCBpbXBsZW1lbnQgdGhlbQogIGFzIG1vZGlmaWVyIGZs YWdzIHRvIHRoZSBGVFNfQUNUSVZFIHN0YXRlLCBhcyBjYWxsZWQgZm9yIGluIHRoZQogIGZhaWxv dmVyIHByb3RvY29sIHN0YW5kYXJkLgoKLSBGaXggYnVncyBpbiB0aGUgcG9vbCBtZXJnaW5nIGNv ZGUgdGhhdCByZXN1bHRlZCBpbiByZWZlcmVuY2VzIGFuZAogIGRlcmVmZXJlbmNlcyBvZiBudWxs IHBvaW50ZXJzLiAgIFRoaXMgYnVnIGhhZCBubyBpbXBhY3QgdW5sZXNzIHRoZQogIFBPSU5URVJf REVCVUcgZmxhZyB3YXMgZGVmaW5lZC4KCi0gSW4gdGhlIHNlcnZlciwgYWRkZWQgYSBkby1mb3J3 YXJkLXVwZGF0ZXMgZmxhZyB0aGF0IGNhbiBiZSB1c2VkIHRvCiAgZGlzYWJsZSBmb3J3YXJkIHVw ZGF0ZXMgaW4gYWxsIGNhc2VzLCBzbyB0aGF0IHNpdGVzIHRoYXQgd2FudCB0aGUKICBjbGllbnRz IHRvIHRha2Ugc29sZSByZXNwb25zaWJpbGl0eSBmb3IgdXBkYXRpbmcgdGhlaXIgQSByZWNvcmQg Y2FuCiAgZG8gc28uCgotIE1ha2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBvcHRpbWl6YXRpb24g b2YgUFRSIHJlY29yZCB1cGRhdGVzLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMXJjNQoKLSBJbmNs dWRlIHNvbWUgbmV3IGRvY3VtZW50YXRpb24gYW5kIGNoYW5nZXMgcHJvdmlkZWQgYnkgS2FybCBB dWVyLgoKLSBBZGQgYSB3b3JrYXJvdW5kIGZvciBzb21lIExleG1hcmsgcHJpbnRlcnMgdGhhdCBz ZW5kIGEgZG91YmxlLU5VTC0KICB0ZXJtaW5hdGVkIGhvc3QtbmFtZSBvcHRpb24sIHdoaWNoIHdv dWxkIGJyZWFrIEROUyB1cGRhdGVzLgoKLSBGaXggYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiB0aGUg TUFDLWFkZHJlc3MgY2hlY2tpbmcgY29kZSBmb3IKICBESENQUkVMRUFTRSB0aGF0IHdhcyBhZGRl ZCBpbiAzLjAuMXJjNS4KCi0gRml4IGEgYnVnIHdoZXJlIGNsaWVudC1zcGVjaWZpYyBpbmZvcm1h dGlvbiB3YXMgbm90IGJlaW5nIGRpc2NhcmRlZAogIGZyb20gdGhlIGxlYXNlIHdoZW4gaXQgZXhw aXJlZCBvciB3YXMgcmVsZWFzZWQsIHJlc3VsdGluZyBpbgogIHByb2JsZW1zIGlmIHRoZSBsZWFz ZSB3YXMgcmVhbGxvY2F0ZWQgdG8gYSBkaWZmZXJlbnQgY2xpZW50LgoKLSBJZiBtb3JlIHRoYW4g b25lIGFsbG9jYXRpb24gcG9vbCBpcyBzcGVjaWZpZWQgdGhhdCBoYXMgdGhlIHNhbWUgc2V0CiAg b2YgY29uc3RyYWludHMgYXMgYW5vdGhlciBhbGxvY2F0aW9uIHBvb2wgb24gdGhlIHNhbWUgc2hh cmVkCiAgbmV0d29yaywgbWVyZ2UgdGhlIHR3byBwb29scy4KCi0gRG9uJ3QgcHJpbnQgYW4gZXJy b3IgaW4gZmFsbGJhY2tfZGlzY2FyZCwgc2luY2UgdGhpcyBqdXN0IGNhdXNlcwogIGNvbmZ1c2lv biBhbmQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGhlbHBpbmcgdG8gZW5jb3VyYWdlIGFueW9uZSB0 bwogIGZpeCB0aGlzIGJ1Zy4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzQKCi0gRml4IGEgYnVn IHRoYXQgd291bGQgY2F1c2UgdGhlIERIQ1Agc2VydmVyIHRvIHNwaW4gaWYgYXNrZWQgdG8gcGFy c2UKICBhIGNlcnRhaW4ga2luZCBvZiBpbmNvcnJlY3Qgc3RhdGVtZW50LgoKLSBGaXggYSByZWxh dGVkIGJ1ZyB0aGF0IHdvdWxkIHByZXZlbnQgYW4gZXJyb3IgZnJvbSBiZWluZyByZXBvcnRlZCBp bgogIHRoZSBzYW1lIGNhc2UuCgotIEFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbi4KCi0gTWFrZSBz dXJlIHRoYXQgdGhlIGhhcmR3YXJlIGFkZHJlc3MgbWF0Y2hlcyB0aGUgbGVhc2Ugd2hlbgogIHBy b2Nlc3NpbmcgYSBESENQUkVMRUFTRSBtZXNzYWdlLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMXJj MwoKLSBBIG1pbm9yIGJ1ZyBmaXggaW4gdGhlIGFyZ3VtZW50cyB0byBhIGxvZ2dpbmcgZnVuY3Rp b24gY2FsbC4KLSBEb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgZGhjcGQuY29uZi4KCgkJICAgICAg ICBDaGFuZ2VzIHNpbmNlIDMuMC4xcmMyCgotIEFsbG93IHRoZSBwcmltYXJ5IHRvIHNlbmQgYSBQ T09MUkVRIG1lc3NhZ2UuICAgVGhpcyBpc24ndCB3aGF0IHRoZSBjdXJyZW50CiAgZmFpbG92ZXIg ZHJhZnQgc2F5cyB0byBkbywgc28gd2UgbWF5IGhhdmUgdG8gYmFjayBpdCBvdXQgaWYgSSBjYW4n dApnZXQgdGhlCiAgYXV0aG9ycyB0byByZWxlbnQsIGJ1dCB0aGUgc2NoZW1lIGZvciBiYWxhbmNp bmcgdGhhdCdzIHNwZWNpZmllZCBpbiB0aGUKICBjdXJyZW50IGRyYWZ0IHNlZW1zIG5lZWRsZXNz bHkgaGFpcnksIHNvIEknbSBmbG9hdGluZyBhIHRyaWFsIGJhbGxvb24uCiAgVGhlIHJjMSBjb2Rl IGRpZCBub3QgaW1wbGVtZW50IHRoZSBtZXRob2QgZGVzY3JpYmVkIGluIHRoZSBkcmFmdCBlaXRo ZXIuCgoJCSAgICAgICAgQ2hhbmdlcyBzaW5jZSAzLjAuMXJjMQoKLSBUcmVhdCBOWERPTUFJTiBh bmQgTlhSUlNFVCBhcyBzdWNjZXNzIHdoZW4gd2UgYXJlIHRyeWluZyB0byBkZWxldGUgYQogIGRv bWFpbiBvciBSUlNFVC4gICBUaGlzIGFsbG93cyB0aGUgREhDUCBzZXJ2ZXIgdG8gZm9yZ2V0IGFi b3V0IGEgbmFtZQogIGl0IGFkZGVkIHRvIHRoZSBETlMgb25jZSBpdCdzIGJlZW4gcmVtb3ZlZCwg ZXZlbiBpZiB0aGUgREhDUCBzZXJ2ZXIKICB3YXNuJ3QgdGhlIG9uZSB0aGF0IHJlbW92ZWQgaXQu CgotIEluc3RhbGwgZGVmYXVsdHMgZm9yIGZhaWxvdmVyIG1heGltdW0gb3V0c3RhbmRpbmcgdXBk YXRlcyBhbmQgbWF4aW11bQogIHNpbGVudCB0aW1lLiAgIFRoaXMgcHJldmVudHMgcHJvYmxlbXMg dGhhdCBtaWdodCBvY2N1ciBpZiB0aGVzZSB2YWx1ZXMKICB3ZXJlIG5vdCBjb25maWd1cmVkLgoK LSBEb24ndCBkbyBERE5TIGRlbGV0ZXMgaWYgZGRucy11cGRhdGUtc3R5bGUgaXMgbm9uZS4KCi0g UmV0dXJuIHJlbGF5IGFnZW50IGluZm9ybWF0aW9uIG9wdGlvbnMgaW4gREhDUE5BSy4gICBUaGlz IHByZXZlbnRzIERIQ1BOQUsKICBtZXNzYWdlcyBmcm9tIGJlaW5nIGRyb3BwZWQgd2hlbiB0aGUg cmVsYXkgYWdlbnQgaW5mb3JtYXRpb24gb3B0aW9uCmNvbnRhaW5zCiAgcm91dGluZyBpbmZvcm1h dGlvbi4KCi0gRml4IGEgcHJvYmxlbSB3aGVyZSBjb21pbmcgdXAgaW4gcmVjb3ZlciB3b3VsZG4n dCByZXN1bHQgaW4gYW4gdXBkYXRlCiAgcmVxdWVzdCBiZWluZyBzZW50LgoKLSBBZGQgc29tZSBt b3JlIGNoYXR0eSBtZXNzYWdlcyB3aGVuIHdlIHN0YXJ0IGEgcmVjb3ZlcnkgdXBkYXRlIGFuZCB3 aGVuCml0J3MKICBkb25lLgoKLSBGaXggYSBwb3NzaWJsZSBwcm9ibGVtIHdoZXJlIHNvbWUgc3Rh dGUgbWlnaHQgaGF2ZSBiZWVuIGxlZnQgYXJvdW5kCiAgYWZ0ZXIgdGhlIHBlZXIgbG9zdCBjb250 YWN0IGFuZCByZWdhaW5lZCBjb250YWN0IGFib3V0IGhvdyBtYW55IHVwZGF0ZXMKICB3ZXJlIHBl bmRpbmcuCgotIERvbid0IG5peCBhIGxlYXNlIHVwZGF0ZSBiZWNhdXNlIG9mIGEgbGVhc2UgY29u ZmxpY3QuICAgVGhpcyB0ZXN0IGhhcwogIG5ldmVyIChhcyBmYXIgYXMgSSBrbm93KSBwcmV2ZW50 ZWQgYSBtaXN0YWtlLCBhbmQgaXQgYXBwZWFycyB0byBjYXVzZQogIHByb2JsZW1zIHdpdGggZmFp bG92ZXIuCgotIEFkZCBzdXBwb3J0IGluIHJjIGhpc3RvcnkgY29kZSBmb3Iga2VlcGluZyBhIHNl bGVjdGl2ZSBoaXN0b3J5LCByYXRoZXIKICB0aGFuIGEgaGlzdG9yeSBvZiBhbGwgcmVmZXJlbmNl cyBhbmQgZGVyZWZlcmVuY2VzLiAgIFRoaXMgY29kZSBpcyBvbmx5CnVzZWQKICB3aGVuIGV4dGVu c2l2ZSBhZGRpdGlvbmFsIGRlYnVnZ2luZyBpcyBlbmFibGVkLgoKCQkgICAgICAgICAgIENoYW5n ZXMgc2luY2UgMy4wCgotIE1ha2UgYWxsb2NhdG9ycyBmb3IgaGFzaCB0YWJsZXMuICAgQXMgYSBz aWRlIGVmZmVjdCwgdGhpcyBmaXhlcyBhIG1lbW9yeQogIHNtYXNoIGluIHRoZSBzdWJjbGFzcyBh bGxvY2F0aW9uIGNvZGUuCgotIEZpeCBhIHNtYWxsIGJ1ZyBpbiBvbXNoZWxsIHdoZXJlIGlmIHlv dSB0cnkgdG8gY2xvc2UgYW4gb2JqZWN0IHdoZW4KICBubyBvYmplY3QgaXMgb3BlbiwgaXQgZHVt cHMgY29yZS4KCi0gRml4IGFuIG9ic2N1cmUgY29yZWR1bXAgdGhhdCBjb3VsZCBvY2N1ciBvbiBz aHV0ZG93bi4KCi0gRml4IGEgYnVnIGluIHRoZSByZWNvcmRpbmcgb2YgaG9zdCBkZWNsYXJhdGlv biBydWJvdXRzIGluIHRoZSBsZWFzZSBmaWxlLgoKLSBGaXggdHdvIHBvdGVudGlhbCBzcGlucyBp biB0aGUgaG9zdCBkZWxldGlvbiBjb2RlLgoKLSBGaXggYSBjb3JlIGR1bXAgdGhhdCB3b3VsZCBo YXBwZW4gaWYgYW4gYXBwbGljYXRpb24gdHJpZWQgdG8gdXBkYXRlCiAgYSBob3N0IG9iamVjdCBh dHRyaWJ1dGUgd2l0aCBhIG51bGwgdmFsdWUuCgoJCUNoYW5nZXMgc2luY2UgMy4wIFJlbGVhc2Ug Q2FuZGlkYXRlIDEyCgotIEZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSBldmFsdWF0aW9uIGNvZGUu CgotIEZpeCBhbiBvYnNjdXJlIGNvcmUgZHVtcC4KCi0gUHJpbnQgYSBjb3VwbGUgb2YgbmV3IHdh cm5pbmdzIHdoZW4gcGFyc2luZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlCiAgd2hlbiBjcnVjaWFs IGluZm9ybWF0aW9uIGlzIGxlZnQgb3V0LgoKLSBMb2cgIm5vIGZyZWUgbGVhc2VzIiBhcyBhbiBl cnJvci4KCi0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBSZWxl YXNlIENhbmRpZGF0ZSAxMQoKLSBBbHdheXMgcmV0dXJuIGEgc3VibmV0IHNlbGVjdGlvbiBvcHRp b24gaWYgb25lIGlzIHNlbnQuCgotIEZpeCBhIHdhcm5pbmcgdGhhdCB3YXMgYmVpbmcgcHJpbnRl ZCBiZWNhdXNlIGFuIGF1dG9tYXRpYyBkYXRhCiAgc3RydWN0dXJlIHdhc24ndCB6ZXJvZWQuCgot IEZpeCBzb21lIGZhaWxvdmVyIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgd2VyZSBiZWluZyBoYW5k bGVkCiAgaW5jb3JyZWN0bHkuCgotIFdoZW4gc3VwZXJzZWRlX2xlYXNlIGlzIGNhbGxlZCBvbiBh IGxlYXNlIHdob3NlIGVuZCB0aW1lIGhhcyBhbHJlYWR5CiAgZXhwaXJlZCwgYnV0IGZvciB3aGlj aCBhIHN0YXRlIHRyYW5zaXRpb24gaGFzIG5vdCB5ZXQgYmVlbiBkb25lLCBkbwogIGEgc3RhdGUg dHJhbnNpdGlvbi4gICBUaGlzIGZpeGVzIHRoZSBjYXNlIHdoZXJlIGlmIHRoZSBzZWNvbmRhcnkK ICBhbGxvY2F0ZWQgYSBsZWFzZSB0byBhIGNsaWVudCBhbmQgdGhlIGxlYXNlICJleHBpcmVkIiB3 aGlsZSB0aGUKICBzZWNvbmRhcnkgd2FzIGluIHBhcnRuZXItZG93biwgbm8gZXhwaXJ5IGV2ZW50 IHdvdWxkIGFjdHVhbGx5CiAgaGFwcGVuLCBzbyB0aGUgbGVhc2Ugd291bGQgcmVtYWluIGFjdGl2 ZSB1bnRpbCB0aGUgcHJpbWFyeSB3YXMKICByZXN0YXJ0ZWQuCgoJCUNoYW5nZXMgc2luY2UgMy4w IFJlbGVhc2UgQ2FuZGlkYXRlIDEwCgotIEZpeCBhIGJ1ZyB0aGF0IHdhcyBwcmV2ZW50aW5nIHJl bGVhc2VkIGxlYXNlcyBmcm9tIGNoYW5naW5nIHN0YXRlCiAgaW4gZmFpbG92ZXItZW5hYmxlZCBw b29scy4KCi0gRml4IGEgY29yZSBkdW1wIGluIHRoZSBjbGllbnQgaWRlbnRpZmllciBmaW5kZXIg Y29kZSAoZm9yIGhvc3QKICBkZWNsYXJhdGlvbnMpLgoKLSBGaW5pc2ggZml4aW5nIGEgYnVnIHdo ZXJlIGJvZ3VzIGRhdGEgd291bGQgc29tZXRpbWVzIGdldCBsb2dnZWQgdG8KICB0aGUgZGhjbGll bnQubGVhc2VzIGZpbGUgYmVjYXVzZSBpdCB3YXMgb3BlbmVkIGFzIGRlc2NyaXB0b3IgMi4KCi0g Rml4IHRoZSBMaW51eCBkaGNsaWVudC1zY3JpcHQgYWNjb3JkaW5nIHRvIHN1Z2dlc3Rpb25zIG1h ZGUgYnkKICBzZXZlcmFsIHBlb3BsZSBvbiB0aGUgZGhjcC1jbGllbnQgbWFpbGluZyBsaXN0LgoK LSBMb2cgc3VjY2Vzc2Z1bCBETlMgdXBkYXRlcyBhdCBMT0dfSU5GTywgbm90IExPR19FUlJPUi4K Ci0gUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgcmVmdXNlIHRvIHJ1biBpZiBhIGZhaWxvdmVy IHBlZXIgaXMKICBkZWZpbmVkIGJ1dCBub3QgcmVmZXJlbmNlZCBieSBhbnkgcG9vbHMuCgotIENv cnJlY3QgYSBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZSBpbiBmYWlsb3Zlci4KCgkJQ2hhbmdlcyBz aW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgOQoKLSBGaXggYSBidWcgaW4gbGVhc2UgYWxsb2Nh dGlvbiBmb3IgRHluYW1pYyBCT09UUCBjbGllbnRzLgoKCSAgQ2hhbmdlcyBzaW5jZSAzLjAgUmVs ZWFzZSBDYW5kaWRhdGUgOCBQYXRjaGxldmVsIDIKCi0gRml4IGEgYnVnIHRoYXQgcHJldmVudGVk IHVwZGF0ZS1zdGF0aWMtbGVhc2VzIGZyb20gd29ya2luZy4KCi0gRG9jdW1lbnQgZmFpbG92ZXIt c3RhdGUgT01BUEkgb2JqZWN0LgoKLSBGaXggYSBjb21waWxhdGlvbiBlcnJvciBvbiBTdW5PUyA0 LgoKCSAgQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgOCBQYXRjaGxldmVsIDEK Ci0gRml4IGEgcGFyc2luZyBidWcgdGhhdCBicm9rZSBkbnMgdXBkYXRlcyAoYm90aCBpbnRlcmlt IGFuZCBhZC1ob2MpLgogIFRoaXMgd2FzIGludHJvZHVjZWQgaW4gcmM4cGwxIGFzIGFuIHVuaW50 ZW5kZWQgcmVzdWx0IG9mIHRoZSBtZW1vcnkKICBsZWFrYWdlIGZpeGVzIHRoYXQgd2VyZSBpbiBw bDEuCgotIEZpeCBhIGxvbmctc3RhbmRpbmcgYnVnIHdoZXJlIHRoZSBzZXJ2ZXIgd291bGQgcmVj b3JkIHRoYXQgYW4gdXBkYXRlCiAgaGFkIGJlZW4gZG9uZSBmb3IgYSBjbGllbnQgd2l0aCBubyBu YW1lLCBldmVuIHRob3VnaCBubyB1cGRhdGUgaGFkCiAgYmVlbiBkb25lLCBhbmQgdGhlbiB3aGVu IHRoZSBjbGllbnQncyBsZWFzZSBleHBpcmVkIHRoZSBkZWxldGlvbiBvZgogIHRoYXQgbm9uZXhp c3RhbnQgcmVjb3JkIHdvdWxkIHRpbWUgb3V0IGJlY2F1c2UgdGhlIG5hbWUgd2FzIHRoZSBudWxs CiAgc3RyaW5nLgoKLSBDbGVhbiB1cCB0aGUgb21zaGVsbCwgZGhjcGN0bCBhbmQgb21hcGkgbWFu IHBhZ2VzIGEgYml0LgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBSZWxlYXNlIENhbmRpZGF0ZSA4Cgot IEZpeCBhIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHRoZSBESENQIHNlcnZlciB0byBzcGluIGlmCiAg b25lLWxlYXNlLXBlci1jbGllbnQgd2FzIGVuYWJsZWQuCgotIEZpeCBhIGJ1ZyB0aGF0IHdhcyBj YXVzaW5nIGNvcmUgZHVtcHMgb24gQlNEL29zIGluIHRoZSBwcmVzZW5jZSBvZgogIG1hbGZvcm1l ZCBwYWNrZXRzLgoKLSBJbiBwYXJ0bmVyLWRvd24gc3RhdGUsIGRvbid0IHJlc3RyaWN0IGxlYXNl IGxlbmd0aHMgdG8gTUNMVC4KCi0gT24gdGhlIGZhaWxvdmVyIHNlY29uZGFyeSwgcmVjb3JkIHRo ZSBNQ0xUIHJlY2VpdmVkIGZyb20gdGhlIHByaW1hcnkKICBzbyB0aGF0IGlmIHdlIGNvbWUgdXAg d2l0aG91dCBhIGNvbm5lY3Rpb24gdG8gdGhlIHByaW1hcnkgd2UgZG9uJ3QKICB3aW5kIHVwIGdp dmluZyBvdXQgemVyby1sZW5ndGggbGVhc2VzLgoKLSBGaXggc29tZSBjb21waWxhdGlvbiBwcm9i bGVtcyBvbiBCU0Qvb3MuCgotIEZpeCBhIGJ1bmNoIG9mIG1lbW9yeSBsZWFrcy4KCi0gRml4IGEg Y291cGxlIG9mIGJ1Z3MgaW4gdGhlIG9wdGlvbiBwcmludGVyLgoKLSBGaXggYW4gb2JzY3VyZSBl cnJvciByZXBvcnRpbmcgYnVnIGluIHRoZSBkbnMgdXBkYXRlIGNvZGUsIGFuZCBhbHNvCiAgbWFr ZSB0aGUgbWVzc2FnZSBjbGVhcmVyIHdoZW4gYSBrZXkgYWxnb3JpdGhtIGlzbid0IHN1cHBvcnRl ZC4KCi0gRml4IGEgYnVnIGluIHRoZSB0cmFjaW5nIGNvZGUgdGhhdCBwcmV2ZW50ZWQgdHJhY2Ug cnVucyB0aGF0IHVzZWQKICB0Y3AgY29ubmVjdGlvbnMgZnJvbSBiZWluZyBwbGF5ZWQgYmFjay4K Ci0gQWRkIHNvbWUgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBmb3IgY2F0Y2hpbmcg bWVtb3J5IGxlYWtzCiAgb24gZXhpdC4KCi0gTWFrZSB0aGUgY2xpZW50IHJlbGVhc2UgdGhlIGxl YXNlIGNvcnJlY3RseSBvbiBzaHV0ZG93bi4KCi0gQWRkIHNvbWUgY29uZmlndXJhYmlsaXR5IHRv IHRoZSBidWlsZCBzeXN0ZW0uCgotIEluc3RhbGwgb21zaGVsbCBtYW51YWwgcGFnZSBpbiBtYW4x LCBub3QgbWFuOC4KCi0gQ3JhaWcgR3d5ZGlyIHNlbnQgaW4gYSBwYXRjaCB0aGF0IGZpeGVzIGEg bG9uZy1zdGFuZGluZyBidWcgaW4gdGhlCiAgREhDUCBjbGllbnQgdGhhdCBjb3VsZCBjYXVzZSBj b3JlIGR1bXBzLCBidXQgdGhhdCBmb3Igc29tZSByZWFzb24KICBoYWRuJ3QgYmVlbiBub3RpY2Vk IHVudGlsIG5vdy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgNwoKLSBG aXggYSBidWcgaW4gZmFpbG92ZXIgd2hlcmUgd2Ugd2VyZW4ndCBzZW5kaW5nIHVwZGF0ZXMgYWZ0 ZXIgYQogIHRyYW5zaXRpb24gZnJvbSBjb21tdW5pY2F0aW9ucy1pbnRlcnJ1cHRlZCB0byBub3Jt YWwuCgotIEhhbmRsZSBleHBpcmVkL3JlbGVhc2VkL3Jlc2V0IC0+IGZyZWUgdHJhbnNpdGlvbiBh Y2NvcmRpbmcgdG8gdGhlCiAgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiAodGhpcyB3b3JrcyAtIHRo ZSBvdGhlciB3YXkgbm90IG9ubHkgd2Fzbid0CiAgY29uZm9ybWFudCwgYnV0IGFsc28gZGlkbid0 IHdvcmspLgoKLSBBZGQgYSBjb250cm9sIG9iamVjdCBpbiBib3RoIGNsaWVudCBhbmQgc2VydmVy IHRoYXQgYWxsb3dzIGVpdGhlcgogIGRhZW1vbiB0byBiZSBzaHV0IGRvd24gY2xlYW5seS4KCi0g V2hlbiB3cml0aW5nIGEgbGVhc2UsIGlmIHdlIHJ1biBvdXQgb2YgZGlzayBzcGFjZSwgc2h1dCBk b3duIHRoZQogIG91dHB1dCBmaWxlIGFuZCBpbnNpc3Qgb24gd3JpdGluZyBhIG5ldyBvbmUgYmVm b3JlIHByb2NlZWRpbmcuCgotIEluIHRoZSBzZXJ2ZXIsIGlmIHRoZSBPTUFQSSBsaXN0ZW5lciBw b3J0IGlzIG9jY3VwaWVkLCBrZWVwIHRyeWluZwogIHRvIGdldCBpdCwgcmF0aGVyIHRoYW4gc2lt cGx5IGdpdmluZyB1cCBhbmQgZXhpdGluZy4KCi0gU3VwcG9ydCBmZXRjaGluZyB2YXJpYWJsZXMg ZnJvbSBsZWFzZXMgYW5kIGFsc28gdXBkYXRpbmcgYW5kIGFkZGluZwogIHZhcmlhYmxlcyB0byBs ZWFzZXMgdmlhIE9NQVBJLgoKLSBJZiB0d28gZmFpbG92ZXIgcGVlcnMgaGF2ZSB3aWxkbHkgZGlm ZmVyZW50IGNsb2NrcywgcmVmdXNlIHRvIHN0YXJ0CiAgZG9pbmcgZmFpbG92ZXIuCgotIEZpeCBh IGJ1ZyBpbiB0aGUgRE5TIHVwZGF0ZSBjb2RlIHRoYXQgY291bGQgY2F1c2UgY29yZSBkdW1wcyB3 aGVuCiAgcnVubmluZyBvbiBhbHBoYSBwcm9jZXNzb3JzLgoKLSBGaXhlZCBhIGJ1ZyBpbiBkZG5z IHVwZGF0ZXMgZm9yIHN0YXRpYyBsZWFzZSBlbnRyaWVzLCB0aGFua3MgdG8gYQogIHBhdGNoIGZy b20gQW5kcmV5IE0gTGlua2V2aXRjaC4KCi0gQWRkIHN1cHBvcnQgZm9yIERhcndpbi9NYWNPUyBY CgotIEluc3RhbGwgb21zaGVsbCAoaW5jbHVkaW5nIG5ldyBkb2N1bWVudGF0aW9uKS4KCi0gU3Vw cG9ydCBETlMgdXBkYXRlcyBpbiB0aGUgY2xpZW50ICh0aGlzIGlzIGEgdmVyeSBvYnNjdXJlIGZl YXR1cmUKICB0aGF0IG1vc3QgREhDUCBjbGllbnQgdXNlcnMgcHJvYmFibHkgd2lsbCBub3QgYmUg YWJsZSB0byB1c2UpLgoKLSBTb21ld2hhdCBjbGVhbmVyIHN0YXR1cyBsb2dnaW5nIGluIHRoZSBj bGllbnQuCgotIE1ha2UgT01BUEkga2V5IG5hbWluZyBzeW50YXggY29tcGF0aWJsZSB3aXRoIHRo ZSB3YXkga2V5cyBhcmUKICBhY3R1YWxseSBuYW1lZCAoa2V5IG5hbWVzIGFyZSBkb21haW4gbmFt ZXMpLgoKLSBGaXggYSBidWcgaW4gdGhlIGxlYXNlIGZpbGUgd3JpdGVyLgoKLSBJbnN0YWxsIERI Q1AgSVNDIGhlYWRlcnMgaW4gYSBkaWZmZXJlbnQgcGxhY2UgdGhhbiBCSU5EIDkgSVNDCiAgaGVh ZGVycywgdG8gYXZvaWQgY2F1c2luZyB0cm91YmxlIGluIEJJTkQgOSBidWlsZHMuCgotIERvbid0 IHNlbmQgdXBkYXRlcyBmb3IgYXR0cmlidXRlcyBvbiBhbiBvYmplY3Qgd2hlbiB0aGUgYXR0cmli dXRlcwogIGhhdmVuJ3QgY2hhbmdlZC4gICBTdXBwb3J0IGRlbGV0aW5nIGF0dHJpYnV0ZXMgb24g cmVtb3RlIG9iamVjdHMuCgotIEZpeCBhIG51bWJlciBvZiBidWdzIGluIG9tc2hlbGwsIGFuZCBh ZGQgdGhlIHVuc2V0IGFuZCByZWZyZXNoCiAgc3RhdGVtZW50cy4KCi0gSGFuZGxlIGRpc2Nvbm5l Y3RzIGluIE9NQVBJIGEgbGl0dGxlIGJpdCBtb3JlIGludGVsbGlnZW50bHkgKHNvIHRoYXQKICB0 aGUgY2FsbGVyIGdldHMgRUNPTk5SRVNFVCBpbnN0ZWFkIG9mIEVJTlZBTCkuCgotIEZpeCBhIGJ1 bmNoIG9mIGJ1Z3MgaW4gdGhlIGhhbmRsaW5nIG9mIGNsaWVudHMgdGhhdCBoYXZlIGV4aXN0aW5n CiAgbGVhc2VzIHdoZW4gdGhlIHRyeSB0byByZW5ldyB0aGVpciBsZWFzZXMgd2hpbGUgZmFpbG92 ZXIgaXMKICBvcGVyYXRpbmcuCgoJCUNoYW5nZXMgc2luY2UgMy4wIFJlbGVhc2UgQ2FuZGlkYXRl IDYKCi0gRml4IGEgY29yZSBkdW1wIHRoYXQgY291bGQgaGFwcGVuIHdoZW4gcHJvY2Vzc2luZyBh IERIQ1BSRVFVRVNUIGZyb20KICBhIGNsaWVudCB0aGF0IGhhZCBhIGhvc3QgZGVjbGFyYXRpb24g dGhhdCBjb250YWluZWQgYm90aCBhCiAgZml4ZWQtYWRkcmVzcyBkZWNsYXJhdGlvbiBhbmQgYSBk aGNwLWNsaWVudC1pZGVudGlmaWVyIG9wdGlvbgogIGRlY2xhcmF0aW9uLCBpZiB0aGUgY2xpZW50 IGlkZW50aWZpZXIgd2FzIGxvbmdlciB0aGFuIG5pbmUgYnl0ZXMuCgotIEZpeCBhIG1lbW9yeSBs ZWFrIHRoYXQgY291bGQgaGFwcGVuIGluIGNlcnRhaW4gb2JzY3VyZSBjYXNlcyB3aGVuCiAgdXNp bmcgb21hcGkgdG8gbWFuaXB1bGF0ZSBsZWFzZXMuCgotIEZpeCBzb21lIGJ1Z3MgYW5kIG9taXNz aW9ucyBpbiBvbXNoZWxsLgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBSZWxlYXNlIENhbmRpZGF0ZSA1 CgotIEZpeCBhIGJ1ZyBpbiBvbWFwaV9vYmplY3RfZGVyZWZlcmVuY2UgdGhhdCBwcmV2ZW50ZWQg b2JqZWN0cyBpbgogIGNoYWlucyBmcm9tIGhhdmluZyB0aGVpciByZWZlcmVuY2UgY291bnRzIGRl Y3JlYXNlZCBvbiBkZXJlZmVyZW5jZS4KCi0gRml4IGEgYnVnIGluIG9tYXBpX29iamVjdF9kZXJl ZmVyZW5jZSB0aGF0IHdvdWxkIHByZXZlbnQgb2JqZWN0CiAgY2hhaW5zIGZyb20gYmVpbmcgZnJl ZWQgdXBvbiByZW1vdmFsIG9mIHRoZSBsYXN0IHJlZmVyZW5jZSBleHRlcm5hbAogIHRvIHRoZSBj aGFpbi4KCi0gRml4IGEgbnVtYmVyIG9mIG90aGVyIG1lbW9yeSBsZWFrcyBpbiB0aGUgT01BUEkg cHJvdG9jb2wgc3Vic3lzdGVtLgoKLSBBZGQgY29kZSBpbiB0aGUgT01BUEkgcHJvdG9jb2wgaGFu ZGxlciB0byB0cmFjZSBtZW1vcnkgbGVha2FnZS4KCi0gQ2xlYW4gdXAgdGhlIG1lbW9yeSBhbGxv Y2F0aW9uL3JlZmVyZW5jZSBoaXN0b3J5IHByaW50ZXIuCgotIFN1cHBvcnQgaW5wdXQgb2YgZG90 dGVkIHF1YWRzIGFuZCBjb2xvbi1zZXBhcmF0ZWQgaGV4IGxpc3RzIGFzCiAgYXR0cmlidXRlIHZh bHVlcyBpbiBvbXNoZWxsLgoKLSBGaXggYSB0eXBvIGluIHRoZSBMaW51eCBpbnRlcmZhY2UgZGlz Y292ZXJ5IGNvZGUuCgotIENvbmRpdGlvbmFsaXplIGEgcGllY2Ugb2YgdHJhY2UgY29kZSB0aGF0 IHdhc24ndCBjb25kaXRpb25hbC4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRh dGUgNAoKLSBGaXggYSBidWcgdGhhdCB3b3VsZCBwcmV2ZW50IGxlYXNlcyBmcm9tIGJlaW5nIGFi YW5kb25lZCBwcm9wZXJseSBvbgogIERIQ1BERUNMSU5FLgoKLSBGaXggZmFpbG92ZXIgcGVlciBP TUFQSSBzdXBwb3J0LgoKLSBJbiBmYWlsb3ZlciwgY29ycmVjdGx5IGhhbmRsZSBleHBpcmF0aW9u IG9mIGxlYXNlcy4gICBQcmV2aW91c2x5LAogIGxlYXNlcyB3b3VsZCBuZXZlciBiZSByZWNsYWlt ZWQgYmVjYXVzZSB0aGV5IGNvdWxkbid0IG1ha2UgdGhlCiAgdHJhbnNpdGlvbiBmcm9tIEVYUElS RUQgdG8gRlJFRS4KCi0gRml4IHNvbWUgYnJva2VuIGZhaWxvdmVyIHN0YXRlIHRyYW5zaXRpb25z LgoKLSBEb2N1bWVudGF0aW9uIGZpeGVzLgoKLSBUYWtlIG91dCBhbiB1bm5lY2Vzc2FyeSBjaGVj ayBpbiBESENQIHJlbGF5IGFnZW50IGluZm9ybWF0aW9uIG9wdGlvbgogIHN0YXNoaW5nIGNvZGUg dGhhdCB3YXMgcHJldmVudGluZyBSRUJJTkRJTkcgY2xpZW50cyBmcm9tIHJlYmluZGluZy4KCi0g UHJldmVudCBmYWlsb3ZlciBwZWVycyBmcm9tIGFsbG9jYXRpbmcgbGVhc2VzIGluIERIQ1BSRVFV RVNUCiAgcHJvY2Vzc2luZyBpZiB0aGUgbGVhc2UgYmVsb25ncyB0byB0aGUgb3RoZXIgc2VydmVy LgoKLSBSZWNvcmQgc2VydmVyIHZlcnNpb24gaW4gbGVhc2UgZmlsZSBpbnRyb2R1Y3RvcnkgY29t bWVudC4KCi0gQ29ycmVjdGx5IHJlcG9ydCBjb25uZWN0aW9uIGVycm9ycyBpbiBPTUFQSSBhbmQg ZmFpbG92ZXIuCgotIE1ha2UgYXV0aGVudGljYXRpb24gc2lnbmF0dXJlIGFsZ29yaXRobSBuYW1l IGNvbXBhcmlzb25zIGluIE9NQVBJCiAgY2FzZS1pbnNlbnNpdGl2ZS4KCi0gRml4IGNvbXBpbGUg cHJvYmxlbSBvbiBTdW5PUyA0LngKCi0gSWYgYSBzaWduYXR1cmUgYWxnb3JpdGhtIGlzIG5vdCB0 ZXJtaW5hdGVkIHdpdGggJy4nLCB0ZXJtaW5hdGUgaXQgc28KICB0aGF0IGNvbXBhcmlzb25zIGJl dHdlZW4gZnVsbHktcXVhbGlmaWVkIG5hbWVzIHdpbGwgd29yawogIGNvbnNpc3RlbnRseS4KCi0g RGlmZmVyZW50IFNJT0NHSUZDT05GIHByb2JlIGNvZGUsIG1heSAiZml4IiBwcm9ibGVtIG9uIHNv bWUgTGludXgKICBzeXN0ZW1zIHdpdGggdGhlIHByb2JlIG5vdCB3b3JraW5nIGNvcnJlY3RseS4K Ci0gRG9uJ3QgYWxsb3cgdXNlciB0byB0eXBlIG9tYXBpIGtleSBvbiBjb21tYW5kIGxpbmUgb2Yg b21zaGVsbC4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgMwoKLSBEbyBs ZWFzZSBiaWxsaW5nIG9uIHN0YXJ0dXAgaW4gYSB3YXkgdGhhdCBJICp0aGluayogd2lsbCBmaW5h bGx5IGRvCiAgdGhlIGJpbGxpbmcgY29ycmVjdGx5IC0gdGhlIHByZXZpb3VzIG1ldGhvZCBjb3Vs ZCBvdmVyYmlsbCBhcyBhCiAgcmVzdWx0IG9mIGR1cGxpY2F0ZSBsZWFzZXMuCgotIERvY3VtZW50 IE9NQVBJIHNlcnZlciBvYmplY3RzLgoKCSAgQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5k aWRhdGUgMiBQYXRjaGxldmVsIDEKCi0gRml4IHNvbWUgcHJvYmxlbXMgaW4gdGhlIERETlMgdXBk YXRlIGNvZGUuICAgVGhhbmtzIHRvIEFsYmVydAogIEhlcnJhbnogZm9yIGZpZ3VyaW5nIG91dCB0 aGUgbWFpbiBwcm9ibGVtLgoKLSBGaXggc29tZSByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIG9u IGhvc3QgZW50cmllcyB0aGF0IHdlcmUgY2F1c2luZwogIGNvcmUgZHVtcHMuCgotIEZpeCBhIGJ5 dGUtc3dhcCBidWcgaW4gdGhlIHRva2VuIHJpbmcgY29kZSwgdGhhbmtzIHRvIEpvY2hlbgogIEZy aWVkcmljaC4KCi0gRml4IGEgYnVnIGluIGxlYXNlIGJpbGxpbmcsIHRoYW5rcyB0byBKb25hcyBC dWxvdy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgMgoKLSBDaGFuZ2Ug dGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBESENQUkVMRUFTRSBpcyBhY3R1YWxseQogIGNv bW1pdHRlZCB0byBiZSBjb25zaXN0ZW50IHdpdGggbGVhc2UgYmluZGluZyBzdGF0ZXMgcmF0aGVy IHRoYW4KICB1c2luZyB0aGUgbGVhc2UgZW5kIHRpbWUuICAgVGhpcyBtYXkgZml4IHNvbWUgcHJv YmxlbXMgd2l0aCB0aGUKICBiaWxsaW5nIGNsYXNzIGNvZGUuCgotIEZpeCBhIGJ1ZyB3aGVyZSBs ZWFzZSB1cGRhdGVzIHdvdWxkIGZhaWwgb24gRGlnaXRhbCBVbml4IChhbmQgbWF5YmUKICBvdGhl cnMpIGJlY2F1c2UgbWFsbG9jIHdhcyBjYWxsZWQgd2l0aCBhIHNpemUgb2YgemVyby4KCi0gRml4 IGEgY29yZSBkdW1wIHRoYXQgaGFwcGVucyB3aGVuIHRoZSBESENQIHNlcnZlciBjYW4ndCBjcmVh dGUgaXRzCiAgdHJhY2UgZmlsZS4KCgkgIENoYW5nZXMgc2luY2UgMy4wIFJlbGVhc2UgQ2FuZGlk YXRlIDEgUGF0Y2hsZXZlbCAxCgotIEZpeCB0aGUgZGhjcF9mYWlsb3Zlcl9wdXRfbWVzc2FnZSB0 byBub3QgYXR0ZW1wdCB0byBhbGxvY2F0ZSBhCiAgemVyby1sZW5ndGggYnVmZmVyLiAgIFNvbWUg dmVyc2lvbnMgb2YgbWFsbG9jKCkgZmFpbCBpZiB5b3UgdHJ5IHRvCiAgYWxsb2NhdGUgYSB6ZXJv LWxlbmd0aCBidWZmZXIsIGFuZCB0aGlzIHdhcyBjYXVzaW5nIHByb2JsZW1zIG9uLAogIGUuZy4s IERpZ2l0YWwgVW5peC4KCi0gRml4IGEgY2FzZSB3aGVyZSB0aGUgZmFpbG92ZXIgY29kZSB3YXMg cHJpbnRpbmcgYW4gZXJyb3IgbWVzc2FnZQogIHdoZW4gbm8gZXJyb3IgaGFkIG9jY3VycmVkLgoK LSBGaXggYSBwcm9ibGVtIHdoZXJlIHdoZW4gYSBzZXJ2ZXIgd2VudCBkb3duIGFuZCBiYWNrIHVw IGFnYWluLCB0aGUKICBwZWVyIHdvdWxkIG5vdCBzZWUgYSBzdGF0ZSB0cmFuc2l0aW9uIGFuZCBz byB3b3VsZCBzdGF5IGluIHRoZQogIG5vbi1jb21tdW5pY2F0aW5nIHN0YXRlLgoKLSBCZSBzbWFy dCBhYm91dCBnb2luZyBpbnRvIHJlY292ZXJfd2FpdC4KCi0gRml4IGEgcHJvYmxlbSBpbiB0aGUg ZmFpbG92ZXIgaW1wbGVtZW50YXRpb24gd2hlcmUgcGVlcnMgd291bGQgZmFpbAogIHRvIGNvbWUg aW50byBzeW5jIGlmIGludGVycnVwdGVkIGluIHRoZSBSRUNPVkVSIHN0YXRlLiAgIFRoaXMgY291 bGQKICBoYXZlIGJlZW4gdGhlIGNhdXNlIG9mIHNvbWUgcHJvYmxlbXMgcGVvcGxlIGhhdmUgcmVw b3J0ZWQgcmVjZW50bHkuCgotIEZpeCBhIHByb2JsZW0gd2l0aCBiaWxsaW5nIGNsYXNzZXMgd2hl cmUgdGhleSB3b3VsZCBub3QgYmUgdW5iaWxsZWQKICB3aGVuIHRoZSBjbGllbnQgbGVhc2UgZXhw aXJlZC4KCi0gSWYgc2VsZWN0IGZhaWxzLCBmaWd1cmUgb3V0IHdoaWNoIGRlc2NyaXB0b3IgaXMg YmFkLCBhbmQgY3V0IGl0IG91dAogIG9mIHRoZSBJL08gbG9vcC4gICBUaGlzIHByZXZlbnRzIGEg cG90ZW50aWFsbHkgbmFzdHkgc3Bpbi4gIEkKICBoYXZlbid0IGhlYXJkIGFueSByZXBvcnQgaXQg aW4gYSB3aGlsZSwgYnV0IGl0IGNhbWUgdXAgY29uc2lzdGVudGx5CiAgaW4gdGVzdGluZy4KCi0g Rml4IGEgYnVnIGluIHRoZSByZWxheSBhZ2VudCB3aGVyZSBpZiB5b3Ugc3BlY2lmaWVkIGludGVy ZmFjZXMgb24KICB0aGUgY29tbWFuZCBsaW5lLCBpdCB3b3VsZCBmYWlsLgoKLSBGaXggYSBjb3Vw bGUgb2Ygc21hbGwgYnVncyBpbiB0aGUgb21hcGkgY29ubmVjdGlvbiBvYmplY3QgKG5vIGtub3du CiAgdXNlciBpbXBhY3QpLgoKLSBBZGQgdGhlIG1pc3NpbmcgMy4wIEJldGEgMSBsZWFzZSBjb252 ZXJzaW9uIHNjcmlwdC4KCi0gUmVhZCBkaGNwIGNsaWVudCBzY3JpcHQgaG9va3MgaWYgdGhleSBl eGlzdCwgcmF0aGVyIHRoYW4gb25seSBpZgogIHRoZXkncmUgZXhlY3V0YWJsZS4KCgkJQ2hhbmdl cyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgMQoKLSBGaXggYSBtZW1vcnkgc21hc2ggdGhh dCBoYXBwZW5zIHdoZW4gZml4ZWQtYWRkcmVzcyBsZWFzZXMgYXJlIHVzZWQuCiAgQU5ZIFNJVEUg QVQgV0hJQ0ggRklYRUQtQUREUkVTUyBTVEFURU1FTlRTIEFSRSBCRUlORyBVU0VEIFNIT1VMRAog IFVQR1JBREUgSU1NRURJQVRFTFkuICAgVGhpcyBoYXMgYmVlbiBhIGxvbmctc3RhbmRpbmcgYnVn IC0gdGhhbmtzIHRvCiAgQWx2aXNlIE5vYmlsZSBmb3IgZGlzY292ZXJpbmcgaXQgYW5kIGhlbHBp bmcgbWUgdG8gZmluZCBpdCEKCi0gRml4IGEgc21hbGwgYnVnIGluIGJpbmFyeS10by1hc2NpaSwg dGhhbmtzIHRvIEguIFBldGVyIEFudmluIG9mCiAgVHJhbnNtZXRhLgoKLSBUaGVyZSBpcyBhIGtu b3duIHByb2JsZW0gd2l0aCB0aGUgREhDUCBzZXJ2ZXIgZG9pbmcgZmFpbG92ZXIgb24KICBDb21w YXEgQWxwaGEgc3lzdGVtcy4gICBUaGlzIHBhdGNobGV2ZWwgaXMgbm90IGEgcmVsZWFzZSBjYW5k aWRhdGUKICBiZWNhdXNlIG9mIHRoaXMgYnVnLiAgIFRoZSBidWcgc2hvdWxkIGJlIHN0cmFpZ2h0 Zm9yd2FyZCB0byBmaXgsIHNvCiAgYSBuZXcgcmVsZWFzZSBjYW5kaWRhdGUgaXMgZXhwZWN0ZWQg c2hvcnRseS4KCi0gVGhlcmUgaXMgYSBrbm93biBwcm9ibGVtIGluIHRoZSBERE5TIHVwZGF0ZSBj b2RlIHRoYXQgaXMgcHJvYmFibHkgYQogIGJ1ZywgYW5kIGlzIG5vdCwgYXMgZmFyIGFzIHdlIGtu b3csIGZpeGVkIGluIHRoaXMgcGF0Y2hsZXZlbC4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAy IFBhdGNobGV2ZWwgMjQKCi0gV2VudCBvdmVyIHByb2JsZW1hdGljIGZhaWxvdmVyIHN0YXRlIHRy YW5zaXRpb25zIGFuZCBtYWRlIHRoZW0gYWxsCiAgd29yaywgc28gdGhhdCBmYWlsb3ZlciBzaG91 bGQgbm93IG11Y2ggbGVzcyBmcmFnaWxlLgoKLSBBZGQgc29tZSBkaGNwY3RsIGFuZCBvbWFwaSBk b2N1bWVudGF0aW9uCgotIEZpeCBjb21waWxlIGVycm9ycyB3aGVuIGNvbXBpbGluZyB3aXRoIHVu dXN1YWwgcHJlZGVmaW5lcy4KCi0gTWFrZSBUb2tlbiBSaW5nIHdvcmsgb24gTGludXggMi40Cgot IEZpeCB0aGUgRGlnaXRhbCBVbml4IEJQRl9XT1JEQUxJR04gYnVnLgoKLSBGaXggc29tZSBkaGNw IGNsaWVudCBkb2N1bWVudGF0aW9uIGVycm9ycy4KCi0gVXBkYXRlIHNvbWUgcGFydHMgb2YgdGhl IFJFQURNRSBmaWxlLgoKLSBTdXBwb3J0IEdDQyBvbiBTQ08uCgoJICAgICAgICBDaGFuZ2VzIHNp bmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAyMwoKLSBGaXggYSBidWcgaW4gdGhlIEROUyB1cGRh dGUgY29kZSB3aGVyZSBhIHN0YXR1cyBjb2RlIHdhcyBub3QgYmVpbmcKICBjaGVja2VkLiAgIFRo aXMgbWF5IGhhdmUgYmVlbiBjYXVzaW5nIGNvcmUgZHVtcHMuCgotIFdoZW4gcGFyc2luZyB0aGUg bGVhc2UgZmlsZSwgaWYgYSBsZWFzZSBkZWNsYXJhdGlvbiBpbmNsdWRlcyBhCiAgYmlsbGluZyBj bGFzcyBzdGF0ZW1lbnQsIGFuZCB0aGUgbGVhc2UgYWxyZWFkeSBoYXMgYSBiaWxsaW5nIGNsYXNz LAogIHVuYmlsbCB0aGUgb2xkIGNsYXNzLgoKLSBXaGVuIHByb2Nlc3NpbmcgZmFpbG92ZXIgdHJh bnNhY3Rpb25zLCB3aGVyZSBhY2tzIHdpbGwgYmUgZGVmZXJyZWQsCiAgcHJvY2VzcyB0aGUgc3Rh dGUgdHJhbnNpdGlvbiBpbW1lZGlhdGVseS4KCi0gIERvbid0IHRyeSB0byB1c2UgdGhlIG5ldyBT SU9DR0lGQ09ORiBidWZmZXIgc2l6ZSBkZXRlY3Rpb24gY29kZSBvbgogICBMaW51eCAyLjAsIHdo aWNoIGRvZXNuJ3QgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgotIEFwcGx5IGEgcGF0Y2gg c3VnZ2VzdGVkIGJ5IFR1YW4gVW9uZyBmb3IgYSBwcm9ibGVtIGluIGRscGkuYy4KCi0gRml4IGEg cHJvYmxlbSBpbiB1c2luZyB0aGUgd2hpY2ggY29tbWFuZCBpbiB0aGUgY29uZmlndXJlIHNjcmlw dC4KCi0gRml4IGEgcGFyc2UgZXJyb3IgaW4gdGhlIGNsaWVudCB3aGVuIHNldHRpbmcgdXAgYW4g b21hcGkgbGlzdGVuZXIuCgotIERvY3VtZW50IHRoZSAtbiBhbmQgLWcgZmxhZ3MgdG8gdGhlIGNs aWVudC4KCi0gTWFrZSBzdXJlIHRoZXJlIGlzIGFsd2F5cyBhIHN0ZGluIGFuZCBzdGRvdXQgb24g c3RhcnR1cC4gICBUaGlzCiAgcHJldmVudHMgc2hlbGwgc2NyaXB0cyBmcm9tIGFjY2lkZW50YWxs eSB3cml0aW5nIGVycm9yIG1lc3NhZ2VzIGludG8KICBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQg aGFwcGVuIHRvIGJlIG9wZW5lZCBhcyBzdGRlcnIuCgotIElmIGFuIGludGVyZmFjZSBpcyByZW1v dmVkLCB0aGUgY2xpZW50IHdpbGwgbm93IG5vdGljZSB0aGF0IGl0IGlzCiAgZ29uZSByYXRoZXIg dGhhbiBzcGlubmluZy4gICBUaGlzIGhhcyBvbmx5IGJlZW4gdGVzdGVkIG9uIE5ldEJTRC4KCi0g VGhlIGNsaWVudCB3aWxsIGF0dGVtcHQgdG8gZ2V0IGFuIGFkZHJlc3MgZXZlbiBpZiBpdCBjYW4n dCBjcmVhdGUgYQogIGxlYXNlIGZpbGUuCgotIERvbid0IG92ZXJ3cml0ZSB0cmFjZWZpbGVzLgoK LSBGaXggc29tZSBtZW1vcnkgYWxsb2NhdGlvbiBidWdzIGluIGZhaWxvdmVyLgoKCSAgICAgICAg Q2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMjIKCi0gQXBwbHkgc29tZSBwYXRj aGVzIHN1Z2dlc3RlZCBieSBDeXJpbGxlIExlZmV2cmUsIHdobyBpcyBtYWludGFpbmluZwogIHRo ZSBGcmVlQlNEIElTQyBESENQIERpc3RyaWJ1dGlvbiBwb3J0LgoKLSBGaXggYSBjb3JlIGR1bXAg aW4gREhDUFJFTEVBU0UuCgoJICAgICAgICBDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hs ZXZlbCAyMQoKLSBUaGlzIHRpbWUgZm9yIHN1cmU6IGZpeCB0aGUgc3BpbiBkZXNjcmliZWQgaW4g dGhlIGNoYW5nZXMgZm9yIHBsMjAuCgoJICAgICAgICBDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIg UGF0Y2hsZXZlbCAyMAoKLSBGaXggYSBwcm9ibGVtIHdpdGggTGludXggZGV0ZWN0aW5nIGxhcmdl IG51bWJlcnMgb2YgaW50ZXJmYWNlcyAoQmVuKQoKLSBGaXggYSBtZW1vcnkgc21hc2ggaW4gdGhl IHF1b3RpZnkgY29kZSwgd2hpY2ggd2FzIGludHJvZHVjZWQgaW4KICBwbDE5LgoKLSBBY3R1YWxs eSBmaXggdGhlIHNwaW4gZGVzY3JpYmVkIGluIHRoZSBjaGFuZ2VzIGZvciBwbDIwLiAgIFRoZQog IHByZXZpb3VzIGZpeCBvbmx5IHBhcnRpYWxseSBmaXhlZCB0aGUgcHJvYmxlbSAtIGVub3VnaCB0 byBnZXQgaXQKICBwYXN0IHRoZSByZWdyZXNzaW9uIHRlc3QuCgoJICAgICAgICBDaGFuZ2VzIHNp bmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAxOQoKLSBGaXggYSBidWcgdGhhdCBjb3VsZCBjYXVz ZSB0aGUgc2VydmVyIHRvIGFib3J0IGlmIGNvbXBpbGVkIHdpdGgKICBQT0lOVEVSX0RFQlVHIGVu YWJsZWQuCgotIEZpeCBhIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gc3BpbiB3 aGVuIHJlc3BvbmRpbmcgdG8gYQogIERIQ1BSRVFVRVNULgoKLSBBcHBseSBKb29zdCBNdWxkZXJz JyBzdWdnZXN0ZWQgcGF0Y2hlcyBmb3IgRExQSSBvbiB4ODYuCgotIFN1cHBvcnQgTlVMIGNoYXJh Y3RlcnMgaW4gcXVvdGVkIHN0cmluZ3MuCgotIEluc3RhbGwgdW5mb3JtYXR0ZWQgbWFuIHBhZ2Vz IG9uIFN1bk9TLgoKCSAgICAgICAgQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwg MTgKCi0gQWxsb3cgdGhlIHNlcnZlciB0byBiZSBwbGFjZWQgaW4gcGFydG5lci1kb3duIHN0YXRl IHVzaW5nIE9NQVBJLgogIChEYW1pZW4gTmVpbCkKCi0gSW1wbGVtZW50IG9tc2hlbGwsIHdoaWNo IGNhbiBiZSB1c2VkIHRvIGRvIGFyYml0cmFyeSB0aGluZ3MgdG8gdGhlCiAgc2VydmVyIChpbiB0 aGVvcnkpLiAoRGFtaWVuIE5laWwpCgotIEZpeCBhIGNhc2Ugd2hlcmUgaWYgYSBjbGllbnQgaGFk IHR3byBkaWZmZXJlbnQgbGVhc2VzIHRoZSBzZXJ2ZXIgY291bGQKICBhY3R1YWxseSBkZXJlZmVy ZW5jZSB0aGUgc2Vjb25kIG9uZSB3aGVuIGl0IGhhZG4ndCBiZWVuIHJlZmVyZW5jZWQsCiAgbGVh ZGluZyB0byBtZW1vcnkgY29ycnVwdGlvbiBhbmQgYSBjb3JlIGR1bXAuIChKYW1lcyBCcmlzdGVy KQoKLSBGaXggYSBjYXNlIHdoZXJlIGEgY2xpZW50IGNvdWxkIHJlcXVlc3QgdGhlIGFkZHJlc3Mg b2YgYW5vdGhlciBjbGllbnQncwogIGxlYXNlLCBidXQgZmluZF9sZWFzZSB3b3VsZG4ndCBkZXRl Y3QgdGhhdCB0aGUgb3RoZXIgY2xpZW50IGhhZCBpdCwgYW5kCiAgd291bGQgYXR0ZW1wdCB0byBh bGxvY2F0ZSBpdCB0byB0aGUgY2xpZW50LCByZXN1bHRpbmcgaW4gYSBsZWFzZSBjb25mbGljdAog IG1lc3NhZ2UuCgotIEZpeCBhIGNhc2Ugd2hlcmUgYSBjbGllbnQgd2l0aCBtb3JlIHRoYW4gb25l IGNsaWVudCBpZGVudGlmaWVyIGNvdWxkIGJlCiAgZ2l2ZW4gYSBsZWFzZSB3aGVyZSB0aGUgaGFy ZHdhcmUgYWRkcmVzcyB3YXMgY29ycmVjdCBidXQgdGhlIGNsaWVudAogIGlkZW50aWZpZXIgd2Fz IG5vdCwgcmVzdWx0aW5nIGluIGEgbGVhc2UgY29uZmxpY3QgbWVzc2FnZS4KCi0gRml4IGEgcHJv YmxlbSB3aGVyZSB0aGUgc2VydmVyIGNvdWxkIHdyaXRlIG91dCBhIGNvbG9uLXNlcGFyYXRlZAog IGhleCBsaXN0IGFzIGEgdmFsdWUgZm9yIGEgdmFyaWFibGUsIHdoaWNoIHdvdWxkIHRoZW4gbm90 IHBhcnNlLgogIFRoZSBmaXggaXMgdG8gYWx3YXlzIHdyaXRlIHN0cmluZ3MgYXMgcXVvdGVkIHN0 cmluZ3MsIHdpdGggYW55CiAgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIHF1b3RlZCBhcyBvY3Rh bCBlc2NhcGUgc2VxdWVuY2VzLiAgIFNvCiAgYSBmaWxlIHdyaXR0ZW4gdGhlIG9sZCB3YXkgc3Rp bGwgd29uJ3Qgd29yaywgYnV0IG5ldyBmaWxlcyB3cml0dGVuCiAgdGhpcyB3YXkgd2lsbCB3b3Jr LgoKLSBGaXggZG9jdW1lbnRhdGlvbiBmb3Igc2VuZGluZyBub24tc3RhbmRhcmQgb3B0aW9ucy4K Ci0gVXNlIHVucGFyc2FibGUgbmFtZXMgZm9yIHVua25vd24gb3B0aW9ucy4gICAgV0FSTklORzog dGhpcyB3aWxsCiAgYnJlYWsgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCB1c2UgdGhlIG9w dGlvbi1ubm4gY29udmVudGlvbi4KICBJZiB5b3Ugd2FudCB0byBjb250aW51ZSB0byB1c2UgdGhp cyBjb252ZW50aW9uIGZvciBzb21lIG9wdGlvbnMsCiAgcGxlYXNlIGJlIHN1cmUgdG8gd3JpdGUg YSBkZWZpbml0aW9uLCBsaWtlIHRoaXM6CgogIG9wdGlvbiBvcHRpb24tbm5uIGNvZGUgbm5uID0g c3RyaW5nOwoKICBZb3UgY2FuIHVzZSBhIGRlc2NyaXB0aXZlIG5hbWUgaW5zdGVhZCBvZiBvcHRp b24tbm5uIGlmIHlvdSBsaWtlLgoKLSBGaXggYSBwcm9ibGVtIHdoZXJlIHdlIHdvdWxkIHNlZSBh IERIQ1BESVNDT1ZFUi9ESENQT0ZGRVIvCiAgREhDUFJFUVVFU1QvREhDUEFDSy9ESENQUkVRVUVT VC9ESENQTkFLIHNlcXVlbmNlLiAgIFRoaXMgd2FzIHRoZQogIHJlc3VsdCBvZiBhIGRlY2VwdGl2 ZWx5IHNpbGx5IGJ1ZyBpbiBzdXBlcnNlZGVfbGVhc2UuCgotIEZpeCBjbGllbnQgc2NyaXB0IGV4 aXQgc3RhdHVzIGNoZWNrLCBhY2NvcmRpbmcgdG8gYSBmaXggc3VwcGxpZWQgYnkKICBIZXJtYW5u IExhdWVyLgoKLSBGaXggYW4gZW5kaWFubmVzcyBidWcgaW4gdGhlIHRyYWNlZmlsZSBzdXBwb3J0 LCByZWdhcmRpbmcgSUNNUAogIG1lc3NhZ2VzLgoKLSBGaXggYSBidWcgaW4gdGhlIGNsaWVudCB3 aGVyZSB0aGUgbWVkaXVtIHdvdWxkIG5vdCB3b3JrIGNvcnJlY3RseSBpZgogIGl0IGNvbnRhaW5l ZCBxdW90ZWQgc3RyaW5ncy4KCgkJICAgICAgICoqIHRoZXJlIHdhcyBubyBwbDE3ICoqCgoJICAg ICAgICBDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAxNgoKLSBBZGQgc3VwcG9y dCBmb3IgdHJhbnNhY3Rpb24gdHJhY2luZy4gICBUaGlzIGFsbG93cyB0aGUgc3RhdGUgb2YgdGhl CiAgREhDUCBzZXJ2ZXIgb24gc3RhcnR1cCwgYW5kIGFsbCB0aGUgc3Vic2VxdWVudCB0cmFuc2Fj dGlvbnMsIHRvIGJlCiAgcmVjb3JkZWQgaW4gYSBmaWxlIHdoaWNoIGNhbiB0aGVuIGJlIHBsYXll ZCBiYWNrIHRvIHJlcHJvZHVjZSB0aGUKICBiZWhhdmlvdXIgb2YgdGhlIERIQ1Agc2VydmVyLiAg IFRoaXMgY2FuIGJlIHVzZWQgdG8gcXVpY2tseQogIHJlcHJvZHVjZSBidWdzIHRoYXQgY2F1c2Ug Y29yZSBkdW1wcyBvciBjb3JydXB0aW9uLCBhbmQgYWxzbyBmb3IKICB0cmFja2luZyBkb3duIG1l bW9yeSBsZWFrcy4KCi0gSW5jb3Jwb3JhdGUgc29tZSBidWcgZml4ZXMgcHJvdmlkZWQgYnkgSm9v c3QgTXVsZGVycyBmb3IgdGhlIERMUEkKICBwYWNrYWdlIHdoaWNoIHNob3VsZCBjbGVhciB1cCBw cm9ibGVtcyBwZW9wbGUgaGF2ZSBiZWVuIHNlZWluZyBvbgogIFNvbGFyaXMuCgotIEZpeCBidWdz IGluIHRoZSBoYW5kbGluZyBvZiBvcHRpb25zIHN0b3JlZCBhcyBsaW5rZWQgbGlzdHMgKGFnZW50 CiAgb3B0aW9ucywgZnFkbiBvcHRpb25zIGFuZCBud2lwIG9wdGlvbnMpIHRoYXQgY291bGQgY2F1 c2UgbWVtb3J5CiAgY29ycnVwdGlvbiBhbmQgY29yZSBkdW1wcy4KCi0gRml4IGEgYnVnIGluIERI Q1BSRVFVRVNUIGhhbmRsaW5nIHRoYXQgcmVzdWx0ZWQgaW4gREhDUE5BSyBtZXNzYWdlcwogIG5v dCBiZWluZyBzZW5kIGluIHNvbWUgY2FzZXMgd2hlbiB0aGV5IHdlcmUgbmVlZGVkLgoKLSBNYWtl IHRoZSBsZWFzZSBzdHJ1Y3R1cmUgc29tZXdoYXQgbW9yZSBjb21wYWN0LgoKLSBNYWtlIGluaXRp YWwgZmFpbG92ZXIgc3RhcnR1cCAqbXVjaCogZmFzdGVyLiAgIFRoaXMgd2FzIHJlc2VhcmNoZWQK ICBhbmQgaW1wbGVtZW50ZWQgYnkgRGFtaWVuIE5laWwuCgotIEFkZCBhIC0tdmVyc2lvbiBmbGFn IHRvIGFsbCBleGVjdXRhYmxlcywgd2hpY2ggcHJpbnRzIHRoZSBwcm9ncmFtCiAgbmFtZSBhbmQg dmVyc2lvbiB0byBzdGFuZGFyZCBvdXRwdXQuCgotIERvbid0IHJld3JpdGUgdGhlIGxlYXNlIGZp bGUgZXZlcnkgdGhvdXNhbmQgbGVhc2VzLgoKLSBBIGJ1ZyBpbiBuaXQuYyBmb3Igb2xkZXIgU3Vu T1MgbWFjaGluZXMgd2FzIGZpeGVkIGJ5IGEgcGF0Y2ggc2VudCBpbgogIGJ5IFRha2VzaGkgSGFn aXdhcmEuCgotIEZpeCBhIG1lbW9yeSBjb3JydXB0aW9uIGJ1ZyBpbiB0aGUgREhDUCBjbGllbnQu CgotIExvdHMgb2YgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKLSBBZGQgYSBmZWF0dXJlIGFsbG93 aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSBwYXNzZWQgdG8gdGhlCiAgREhDUCBjbGll bnQgc2NyaXB0IG9uIHRoZSBESENQIGNsaWVudCBjb21tYW5kIGxpbmUuCgotIEZpeCBjbGllbnQg bWVkaXVtIHN1cHBvcnQsIHdoaWNoIGhhZCBiZWVuIGJyb2tlbiBmb3Igc29tZSB0aW1lLgoKLSBG aXggYSBidWcgaW4gdGhlIERIQ1AgY2xpZW50IGluaXRpYWwgc3RhcnR1cCBiYWNrb2ZmIGludGVy dmFsLCB3aGljaAogIHdvdWxkIGNhdXNlIHR3byBESENQRElTQ09WRVJTIHRvIGJlIHNlbnQgYmFj ay10by1iYWNrIG9uIHN0YXJ0dXAuCgoJICAgICAgICBDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIg UGF0Y2hsZXZlbCAxNQoKLSBTb21lIGRvY3VtZW50YXRpb24gdHdlYWtzLgoKLSBNYXliZSBmaXgg YSBwcm9ibGVtIGluIHRoZSBETFBJIGNvZGUuCgotIEZpeCBzb21lIGVycm9yIGNvZGUgc3BhY2Ug aW5jb25zaXN0ZW5jaWVzIGluIGRkbnMgdXBkYXRlIGNvZGUuCgotIFN1cHBvcnQgcmVsYXkgYWdl bnRzIHRoYXQgaW50ZXJjZXB0IHVuaWNhc3QgREhDUCBtZXNzYWdlcyB0byBzdHVmZgogIGFnZW50 IG9wdGlvbnMgaW50byB0aGVtLgoKLSBGaXggYSBzbWFsbCBtZW1vcnkgbGVhayBpbiB0aGUgcmVs YXkgYWdlbnQgb3B0aW9uIHN1cHBvcnQgY29kZS4KCi0gRml4IGEgY29yZSBkdW1wIHRoYXQgd291 bGQgb2NjdXIgaWYgYSBwYWNrZXQgd2FzIHNlbnQgd2l0aCBubwogIG9wdGlvbnMuCgoJICAgICAg ICBDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAxNAoKLSBGaW5pc2ggZml4aW5n IGEgbG9uZy1zdGFuZGluZyBidWcgaW4gdGhlIGFnZW50IG9wdGlvbnMgY29kZS4gICBUaGlzCiAg d2FzIGNhdXNpbmcgY29yZSBkdW1wcyBhbmQgZmFpbGluZyB0byBvcGVyYXRlIGNvcnJlY3RseSAt IGluCiAgcGFydGljdWxhciwgYWdlbnQgb3B0aW9uIHN0YXNoaW5nIHdhc24ndCB3b3JraW5nLiAg IEFnZW50IG9wdGlvbgogIHN0YXNoaW5nIHNob3VsZCBub3cgYmUgd29ya2luZywgbWVhbmluZyB0 aGF0IGFnZW50IG9wdGlvbnMgY2FuIGJlCiAgdXNlZCBpbiBjbGFzcyBzdGF0ZW1lbnRzIHRvIGNv bnRyb2wgYWRkcmVzcyBhbGxvY2F0aW9uLgoKLSBGaXggdXAgZG9jdW1lbnRhdGlvbi4KCi0gRml4 IGEgY291cGxlIG9mIHNtYWxsIG1lbW9yeSBsZWFrcyB0aGF0IHdvdWxkIGhhdmUgYWRkZWQgdXAK ICBzaWduaWZpY2FudGx5IGluIGEgaGlnaC1kZW1hbmQgc2l0dWF0aW9uLgoKLSBBZGQgYSBsb2ct ZmFjaWxpdHkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCgotIEZpeCBhIGNvbXBpbGUgZXJyb3Ig b24gc29tZSBvbGRlciBvcGVyYXRpbmcgc3lzdGVtcy4KCi0gQWRkIHRoZSBhYmlsaXR5IGluIHRo ZSBjbGllbnQgdG8gZXhlY3V0ZSBjZXJ0YWluIHN0YXRlbWVudHMgYmVmb3JlCiAgdHJhbnNtaXR0 aW5nIHBhY2tldHMgdG8gdGhlIHNlcnZlci4gICBIYW5keSBmb3IgZGVidWdnaW5nOyBub3QgbXVj aAogIHByYWN0aWNhbCB1c2Ugb3RoZXJ3aXNlLgoKLSBEb24ndCBzZW5kIGZha2VkLW91dCBnaWFk ZHIgd2hlbiByZW5ld2luZyBvciBib3VuZCAtIGFnYWluLCB1c2VmdWwKICBmb3IgZGVidWdnaW5n LgoKCSAgICAgICAgQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMTMKCi0gRml4 ZWQgYSBwcm9ibGVtIHdoZXJlIHRoZSBmcWRuIGRlY29kZXIgd291bGQgc29tZXRpbWVzIHRyeSB0 byBzdG9yZQogIGFuIG9wdGlvbiB3aXRoIGFuICh1bnNpZ25lZCkgbmVnYXRpdmUgbGVuZ3RoLCBy ZXN1bHRpbmcgaW4gYSBjb3JlCiAgZHVtcCBvbiBzb21lIHN5c3RlbXMuCgotIFdvcmsgYXJvdW5k IHRoZSBXaW45OCBESENQIGNsaWVudCwgd2hpY2ggTlVMLXRlcm1pbmF0ZXMgdGhlIEZRRE4KICBv cHRpb24uCgotIFdvcmsgYXJvdW5kIFdpbjk4IGFuZCBXaW4yayBjbGllbnRzIHRoYXQgd2lsbCBj bGFpbSB0aGV5IHdhbnQgdG8gZG8KICB0aGUgdXBkYXRlIGV2ZW4gd2hlbiB0aGV5IGRvbid0IGhh dmUgYW55IHdheSB0byBkbyBpdC4KCi0gRml4IHNvbWUgbG9nIG1lc3NhZ2VzIHRoYXQgY2FuIGJl IHByaW50ZWQgd2hlbiBmYWlsb3ZlciBpcyBvcGVyYXRpbmcKICB0aGF0IHdlcmUgbm90IHByaW50 aW5nIGVub3VnaCBpbmZvcm1hdGlvbi4KCi0gSXQgd2FzIHBvc3NpYmxlIGZvciBhIERIQ1BESVND T1ZFUiB0byBnZXQgYW4gYWxsb2NhdGlvbiBldmVuIHdoZW4KICB0aGUgc3RhdGUgbWFjaGluZSBz YWlkIHRoZSBzZXJ2ZXIgc2hvdWxkbid0IGJlIHJlc3BvbmRpbmcuCgotIERvbid0IGxvYWQgYmFs YW5jZSBESENQUkVRVUVTVHMgZnJvbSBjbGllbnRzIGluIFJFTkVXSU5HIGFuZAogIFJFQklORElO Rywgc2luY2UgaW4gUkVORVdJTkcsIGlmIHdlIGhlYXJkIGl0LCBpdCdzIGZvciB1cywgYW5kIGlu CiAgUkVCSU5ESU5HLCB0aGUgY2xpZW50IHdvdWxkbid0IGhhdmUgZ290IHRvIFJFQklORElORyBp ZiBpdHMgcHJpbWFyeQogIHdlcmUgYW5zd2VyaW5nLgoKLSBXaGVuIHdlIGdldCBhIGJvZ3VzIHN0 YXRlIGxlYXNlIGJpbmRpbmcgc3RhdGUgdHJhbnNpdGlvbiwgZG9uJ3QgZG8KICB0aGUgdHJhbnNp dGlvbi4KCgoJICAgICAgICBDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAxMgoK LSBGaXhlZCBhIGNvdXBsZSBvZiBzaWxseSBjb21waWxlIGVycm9ycy4KCgkJQ2hhbmdlcyBzaW5j ZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMTEKCi0gQWxiZXJ0IEhlcnJhbnogdHJhY2tlZCBkb3du IGFuZCBmaXhlZCBhIHN1YnRsZSBidWcgaW4gdGhlIGJhc2U2NAogIGRlY29kZXIgdGhhdCB3b3Vs ZCBwcmV2ZW50IGFueSBrZXkgd2l0aCBhbiAneCcgaW4gaXRzIGJhc2U2NAogIHJlcHJlc2VudGF0 aW9uIGZyb20gd29ya2luZyBjb3JyZWN0bHkuCgotIFRoYW5rcyB0byBDaHJpcyBDaGVuZXkgYW5k IE1pY2hhZWwgU2FuZGVycywgd2UgaGF2ZSBhIGZpeCBmb3IgdGhlCiAgaGFuZyB0aGF0IHRoZXkg Ym90aCBzcG90dGVkIGluIHRoZSBESENQIHNlcnZlciAtIHdoZW4KICBvbmUtbGVhc2UtcGVyLWNs aWVudCB3YXMgc2V0LCB0aGUgY29kZSB0byByZWxlYXNlIHRoZSAib3RoZXIiIGxlYXNlCiAgY291 bGQgc3Bpbi4KCi0gRml4IGEgcHJvYmxlbSB3aXRoIGFsaWdubWVudCBvZiB0aGUgaW5wdXQgYnVm ZmVyIGluIGJwZiBpbiBjYXNlcwogIHdoZXJlIHR3byBwYWNrZXRzIGFycml2ZSBpbiB0aGUgc2Ft ZSBicGYgcmVhZC4KCi0gRml4IGEgcHJvYmxlbSB3aGVyZSB0aGUgcmVsYXkgYWdlbnQgd291bGQg Y3Jhc2ggaWYgeW91IHNwZWNpZmllZCBhbgogIGludGVyZmFjZSBuYW1lIG9uIHRoZSBjb21tYW5k IGxpbmUuCgotIEFkZCB0aGUgYWJpbGl0eSB0byBjb25kaXRpb25hbGl6ZSBjbGllbnQgYmVoYXZp b3VyIGJhc2VkIG9uIHRoZQogIGNsaWVudCBzdGF0ZS4KCi0gQWRkIHN1cHBvcnQgZm9yIHRoZSBG UUROIG9wdGlvbiwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIGEgbmV3IHdheSBvZgogIGRvaW5nIGRk bnMgdXBkYXRlcyAoZGRucyB1cGRhdGUgc3R5bGUgaW50ZXJpbSkgdGhhdCBhbGxvd3MgbW9yZSB0 aGFuCiAgb25lIERIQ1Agc2VydmVyIHRvIHVwZGF0ZSB0aGUgRE5TIGZvciB0aGUgc2FtZSBuZXR3 b3JrKHMpLiAgIFRoaXMKICB3YXMgaW1wbGVtZW50ZWQgYnkgRGFtaWVuIE5laWwgd2l0aCBzb21l IGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eQogIGFkZGVkIGJ5IFRlZCBMZW1vbi4KCi0gRGFtaWVu IGFkZGVkIGEgImxvZyIgc3RhdGVtZW50LCBzbyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUg Y2FuCiAgYmUgbWFkZSB0byBsb2cgZGVidWdnaW5nIGluZm9ybWF0aW9uIGFuZCBvdGhlciBpbmZv cm1hdGlvbi4KCi0gRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgb3B0aW9uIGJ1ZmZlcnMgbm90IHRv IGJlIHRlcm1pbmF0ZWQgd2l0aCBhbgogIGVuZCBvcHRpb24uCgotIEZpeGVkIGEgbG9uZy1zdGFu ZGluZyBidWcgaW4gdGhlIHN1cHBvcnQgZm9yIG9wdGlvbiBzcGFjZXMgd2hlcmUgdGhlCiAgb3B0 aW9ucyBhcmUgc3RvcmVkIGFzIGFuIG9yZGVyZWQgbGlzdCByYXRoZXIgdGhhbiBpbiBhIGhhc2gg dGFibGUsCiAgd2hpY2ggY291bGQgdGhlb3JldGljYWxseSByZXN1bHQgaW4gbWVtb3J5IHBvb2wg Y29ycnVwdGlvbi4KCi0gUHJldmVudCBoYXJkd2FyZSBkZWNsYXJhdGlvbnMgd2l0aCBubyBhY3R1 YWwgaGFyZHdhcmUgYWRkcmVzcyBmcm9tCiAgYmVpbmcgd3JpdHRlbiBhcyBzb21ldGhpbmcgdW5w YXJzYWJsZSwgYW5kIGJlaGF2ZSBjb3JyZWN0bHkgaW4gdGhlCiAgZmFjZSBvZiBhIG51bGwgaGFy ZHdhcmUgYWRkcmVzcyBvbiBpbnB1dC4KCi0gQWxsb3cga2V5IG5hbWVzIHRvIGJlIEZRRE5zLCBh bmQgcXVhbGlmeSB0aGUgYWxnb3JpdGhtIG5hbWUgaWYgaXQgaXMKICBzcGVjaWZpZWQgdW5xdWFs aWZpZWQuCgotIE1vZGlmeSB0aGUgREROUyB1cGRhdGUgY29kZSBzbyB0aGF0IGl0IG5ldmVyIHBy aW50cyB0aGUgInJlc29sdmVyCiAgZmFpbGVkIiBtZXNzYWdlLCBidXQgaW5zdGVhZCBzYXlzICp3 aHkqIHRoZSByZXNvbHZlciBmYWlsZWQuCgotIE9mZmljaWFsbHkgc3VwcG9ydCB0aGUgc3VibmV0 IHNlbGVjdGlvbiBvcHRpb24sIHdoaWNoIG5vdyBoYXMgYW4KICBSRkMuCgotIEZpeCBhIGJ1aWxk IGJ1ZyBvbiBNYWNPUyBYLgoKLSBBbGxvdyBhZG1pbmlzdHJhdG9yIHRvIGRpc2FibGUgcGluZyBj aGVja2luZy4KCi0gQ2xlYW4gdXAgZGhjcGQuY29uZiBkb2N1bWVudGF0aW9uIGFuZCBhZGQgbW9y ZSBpbmZvcm1hdGlvbiBhYm91dCBob3cKICBpdCB3b3Jrcy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAg QmV0YSAyIFBhdGNobGV2ZWwgMTAKCi0gRml4IGEgYnVnIGludHJvZHVjZWQgZHVyaW5nIGRlYnVn Z2luZyAoISkgYW5kIGFjY2lkZW50YWxseSBjb21taXR0ZWQKICB0byBDVlMuCgoJCUNoYW5nZXMg c2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVsIDkKCi0gRml4IERIQ1AgY2xpZW50IGhhbmRsaW5n IG9mIHZlbmRvciBlbmNhcHN1bGF0ZWQgb3B0aW9ucy4KCi0gRml4IGEgYnVnIGluIHRoZSBoYW5k bGluZyBvZiByZWxheSBhZ2VudCBpbmZvcm1hdGlvbiBvcHRpb25zIGludHJvZHVjZWQKICBpbiBw YXRjaGxldmVsIDkuCgotIFN0YXNoIGFnZW50IG9wdGlvbnMgb24gY2xpZW50IGxlYXNlcyBieSBk ZWZhdWx0LCBhbmQgdXNlIHRoZSBzdGFzaGVkCiAgb3B0aW9ucyBhdCByZW5ld2FsIHRpbWUuCgot IEFkZCB0aGUgYWJpbGl0eSB0byB0ZXN0IHRoZSBjbGllbnQncyBiaW5kaW5nIHN0YXRlIGluIHRo ZSBjbGllbnQKICBjb25maWd1cmF0aW9uIGxhbmd1YWdlLgoKLSBGaXggYSBjb3JlIGR1bXAgaW4g dGhlIEROUyB1cGRhdGUgY29kZS4KCi0gRml4IHNvbWUgZXhwcmVzc2lvbiBldmFsdWF0aW9uIGJ1 Z3MgdGhhdCB3ZXJlIGNhdXNpbmcgdXBkYXRlcyB0byBiZQogIGRvbmUgd2hlbiBubyBjbGllbnQg aG9zdG5hbWUgd2FzIHJlY2VpdmVkLgoKLSBGaXggZXhwcmVzc2lvbiBldmFsdWF0aW9uIGRlYnVn Z2luZyBwcmludGZzLgoKLSBUZWFjaCBwcmV0dHlfcHJpbnRfb3B0aW9uIHRvIHByaW50IG9wdGlv bnMgaW4gb3B0aW9uIHNwYWNlcyBvdGhlciB0aGFuCiAgdGhlIERIQ1Agb3B0aW9uIHNwYWNlLgoK LSBBZGQgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgdGhlIFJIUyBvZiBhIG5vdCBpcyBub3QgYm9vbGVh bi4KCi0gTmV2ZXIgc2VsZWN0IGZvciBtb3JlIHRoYW4gYSBkYXksIGJlY2F1c2Ugc29tZSBpbXBs ZW1lbnRhdGlvbnMgb2YKICBzZWxlY3Qgd2lsbCBqdXN0IGZhaWwgaWYgdGhlIHRpbWVvdXQgaXMg dG9vIGxvbmcgKCEpLgoKLSBGaXggYSBjYXNlIHdoZXJlIGEgREhDUERJU0NPVkVSIGZyb20gYW4g dW5rbm93biBuZXR3b3JrIHdvdWxkIGJlCiAgc2lsZW50bHkgZHJvcHBlZC4KCi0gRml4IGEgYnVn IHdoZXJlIGlmIGEgY2xpZW50IHJlcXVlc3RlZCBhbiBJUCBhZGRyZXNzIGZvciB3aGljaCBhIGRp ZmZlcmVudAogIGNsaWVudCBoYWQgdGhlIGxlYXNlLCB0aGUgREhDUCBzZXJ2ZXIgd291bGQgcmVh bGxvY2F0ZSBpdCBhbnl3YXkuCgotIEZpeCB0aGUgRE5TIHVwZGF0ZSBjb2RlIHNvIHRoYXQgaWYg dGhlIGNsaWVudCBjaGFuZ2VzIGl0cyBuYW1lLCB0aGUgRE5TCiAgd2lsbCBiZSBjb3JyZWN0bHkg dXBkYXRlZC4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgOAoKLSBPb3Bz LCB0aGVyZSB3YXMgYW5vdGhlciBzdWJ0bGUgbWF0aCBlcnJvciBpbiB0aGUgaGVhZGVyLWxlbmd0 aAogIGJvdW5kcy1jaGVja2luZy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2 ZWwgNwoKLSBPb3BzLCBmb3Jnb3QgdG8gYnl0ZS1zd2FwIHVkcCBoZWFkZXIgbGVuZ3RoIGJlZm9y ZSBib3VuZHMtY2hlY2tpbmcgaXQuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxl dmVsIDYKCi0gRml4IGEgcG9zc2libGUgRG9TIGF0dGFjayB3aGVyZSBhIGNsaWVudCBjb3VsZCBj YXVzZSB0aGUgY2hlY2tzdW1tZXIKICB0byBkdW1wIGNvcmUuICAgVGhpcyB3YXMgYSByZWFkLCBu b3QgYSB3cml0ZSwgc28gaXQgc2hvdWxkbid0IGJlCiAgcG9zc2libGUgdG8gZXhwbG9pdCBpdCBh bnkgZnVydGhlciB0aGFuIHRoYXQuCgotIEltcGxlbWVudCBjbGllbnQtIGFuZCBzZXJ2ZXItc2lk ZSBzdXBwb3J0IGZvciB1c2luZyB0aGUgQ2xpZW50IEZRRE4KICBvcHRpb24uCgotIFN1cHBvcnQg Zm9yIG90aGVyIG9wdGlvbiBzcGFjZXMgaW4gdGhlIGNsaWVudCBoYXMgYmVlbiBhZGRlZC4gICBU aGlzCiAgbWVhbnMgdGhhdCBpdCBpcyBub3cgcG9zc2libGUgdG8gZGVmaW5lIGEgdmVuZG9yIG9w dGlvbiBzcGFjZSBvbiB0aGUKICBjbGllbnQsIHJlcXVlc3Qgb3B0aW9ucyBpbiB0aGF0IHNwYWNl IGZyb20gdGhlIHNlcnZlciAod2hpY2ggbXVzdAogIGRlZmluZSB0aGUgc2FtZSBvcHRpb24gc3Bh Y2UpLCBhbmQgdGhlbiB1c2UgdGhvc2Ugb3B0aW9ucyBpbiB0aGUKICBjbGllbnQuICAgVGhpcyBh bHNvIGFsbG93cyBOV0lQIGFuZCBDbGllbnQgRlFETiBvcHRpb25zIHRvIGJlIHVzZWQKICBtZWFu aW5nZnVsbHkuCgotIEFkZCBvYmplY3QgaW5pdGlhbGl6ZXIgc3VwcG9ydC4gICBUaGlzIG1lYW5z IHRoYXQgb2JqZWN0cyBjYW4gbm93IGJlCiAgaW5pdGlhbGl6ZWQgdG8gc29tZXRoaW5nIG90aGVy IHRoYW4gYWxsLXplcm9zIHdoZW4gYWxsb2NhdGVkLCB3aGljaAogIG1ha2VzLCBlLmcuLCB0aGUg aW50ZXJmYWNlIG9iamVjdCBzdXBwb3J0IGNvZGUgYSBsaXR0bGUgbW9yZSByb2J1c3QuCgotIEZp eCBhbiBvZmYtYnktb25lIGJ1ZyBpbiB0aGUgaG9zdCBzdHVmZmVyLiAgIFRoaXMgd2FzIGNhdXNp bmcgaG9zdAogIGRlbGV0ZXMgbm90IHRoZSB3b3JrLCBhbmQgbWF5IGFsc28gaGF2ZSBiZWVuIGNh dXNpbmcgT01BUEkKICBjb25uZWN0aW9ucyB0byBnZXQgZHJvcHBlZC4gICBUaGFua3MgdG8gSmFt ZXMgQnJpc3RlciBmb3IgdHJhY2tpbmcKICB0aGlzIG9uZSBkb3duIQoKLSBGaXhlZCBhIGNvcmUg ZHVtcCBpbiB0aGUgaW50ZXJmYWNlIGRpc2NvdmVyeSBjb2RlIHRoYXQgaXMgdHJpZ2dlcmVkCiAg d2hlbiB0aGVyZSBpcyBubyBzdWJuZXQgZGVjbGFyYXRpb24gZm9yIGFuIGludGVyZmFjZSwgYnV0 IHRoZSBzZXJ2ZXIKICBkZWNpZGVzIHRvIGNvbnRpbnVlIHJ1bm5pbmcuICAgVGhhbmtzIHRvIFNo YW5lIEtlcnIgZm9yIHRyYWNraW5nCiAgZG93biBhbmQgZml4aW5nIHRoaXMgcHJvYmxlbS4KCgkJ Q2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgNQoKLSBGaXggYSBidWcgaW4gdGhl IHJlY2VudCBlbmhhbmNlbWVudCB0byB0aGUgaW50ZXJmYWNlIGRpc2NvdmVyeSBjb2RlCiAgdG8g c3VwcG9ydCBhcmJpdHJhcnktbGVuZ3RoIGludGVyZmFjZSBsaXN0cy4KCi0gU3VwcG9ydCBOVUwt dGVybWluYXRlZCBESENQIG9wdGlvbnMgd2hlbiBpbml0aWFsaXppbmcgY2xpZW50LXNjcmlwdAog IGVudmlyb25tZW50LgoKLSBGaXggc3VmZml4IG9wZXJhdG9yLgoKLSBGaXggTmV0V2FyZS9JUCBv cHRpb24gcGFyc2luZy4KCi0gQmV0dGVyIGVycm9yL3N0YXR1cyBjaGVja2luZyBpbiBkaGNwY3Rs IGluaXRpYWxpemF0aW9uIGFuZCBvbWFwaQogIGNvbm5lY3Rpb24gY29kZS4KCi0gRml4IGEgcG90 ZW50aWFsIG1lbW9yeSBzbWFzaCBpbiBkaGNwY3RsIGNvZGUuCgotIEZpeCBTdW5PUzQgYW5kICht YXliZSkgVWx0cml4IGJ1aWxkcy4KCi0gRml4IGEgYnVnIHdoZXJlIGEgY2VydGFpbiBzb3J0IG9m IGluY29taW5nIHBhY2tldCBjb3VsZCBjYXVzZSBhIGNvcmUKICBkdW1wIG9uIFNvbGFyaXMgKGFu ZCBwcm9iYWJseSBlbHNld2hlcmUpLgoKLSBBZGQgc29tZSBtb3JlIHNhZmV0eSBjaGVja3MgaW4g ZXJyb3IgbG9nZ2luZyBjb2RlLgoKLSBBZGQgc3VwcG9ydCBmb3IgSVNDX1JfSU5DT01QTEVURSBp biBPTUFQSSBwcm90b2NvbCBjb25uZWN0aW9uIGNvZGUuCgotIEZpeCByZWxheSBhZ2VudCBzbyB0 aGF0IGlmIGFuIGludGVyZmFjZSBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQKICBsaW5lLCB0 aGUgcmVsYXkgYWdlbnQgZG9lcyBub3QgZHVtcCBjb3JlLgoKLSBGaXggY2xhc3MgbWF0Y2hpbmcg c28gdGhhdCBtYXRjaCBpZiBjYW4gYmUgY29tYmluZWQgd2l0aCBtYXRjaCBvcgogIHNwYXduIHdp dGguCgotIERvIG5vdCBhbGxvdyBzcHVyaW91cyBsZWFzZXMgaW4gdGhlIGxlYXNlIGRhdGFiYXNl IHRvIGludHJvZHVjZQogIHBvdGVudGlhbGx5IGJvZ3VzIGxlYXNlcyBpbnRvIHRoZSBpbi1tZW1v cnkgZGF0YWJhc2UuCgotIEZpeCBhIGJ5dGUtb3JkZXIgcHJvYmxlbSBpbiB0aGUgY2xpZW50IGhh cmR3YXJlIGFkZHJlc3MgdHlwZSBjb2RlCiAgZm9yIE9NQVBJLgoKLSBCZSBzbGlnaHRseSBsZXNz IHBpY2t5IGFib3V0IHdoYXQgc29ydCBvZiBoYXJkd2FyZSBhZGRyZXNzZXMgT01BUEkKICBjYW4g aW5zdGFsbCBpbiBob3N0IGRlY2xhcmF0aW9ucy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAy IFBhdGNobGV2ZWwgNAoKLSBJbmNvcnBvcmF0ZWQgUGV0ZXIgTWFyc2NoYWxsJ3MgcHJvcG9zZWQg Y2hhbmdlIHRvIGFycmF5L3JlY29yZAogIHBhcnNpbmcsIHdoaWNoIGFsbG93cyB0aGluZ3MgbGlr ZSB0aGUgc2xwLWFnZW50IG9wdGlvbiB0byBiZSBlbmNvZGVkCiAgY29ycmVjdGx5LiAgIFRoYW5r cyB2ZXJ5IG11Y2ggdG8gUGV0ZXIgZm9yIHRha2luZyB0aGUgaW5pdGlhdGl2ZSB0bwogIGRvIHRo aXMsIGFuZCBmb3IgZG9pbmcgc3VjaCBhIGNhcmVmdWwgam9iIG9mIGl0IChlLmcuLCB1cGRhdGlu ZyB0aGUKICBjb21tZW50cykhCgotIEFkZGVkIGFuIGVuY29kaW5nIGZvciB0aGUgc2xwLWFnZW50 IG9wdGlvbi4gICA6JykKCi0gRml4ZWQgU3VuT1MgNCBidWlsZC4gIFRoYW5rcyB0byBSb2JlcnQg RWx6IGZvciByZXNwb25kaW5nIHRvIG15CiAgcmVxdWVzdCBmb3IgaGVscCBvbiB0aGlzIHdpdGgg cGF0Y2hlcyEKCi0gSW5jb3Jwb3JhdGVkIGEgY2hhbmdlIHRoYXQgc2hvdWxkIGZpeCBhIHByb2Js ZW0gcmVwb3J0ZWQgYnkgUGhpbGlwcGUKICBKdW1lbGxlIHdoZXJlIHdoZW4gdGhlIG5ldHdvcmsg Y29ubmVjdGlvbiBiZXR3ZWVuIHR3byBzZXJ2ZXJzIGlzCiAgbG9zdCwgdGhleSBuZXZlciByZWNv bm5lY3QuCgotIEZpeCBjbGllbnQgc2NyaXB0IGZpbGVzIG90aGVyIHRoYW4gdGhhdCBmb3IgTmV0 QlNEIHRvIGFjdHVhbGx5IHVzZQogIG1ha2VfcmVzb2x2X2NvbmYgYXMgZG9jdW1lbnRlZCBpbiB0 aGUgbWFudWFsIHBhZ2UuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgcGFja2V0IGhhbmRsaW5nIGNvZGUg dGhhdCBjb3VsZCByZXN1bHQgaW4gYSBjb3JlCiAgZHVtcC4KCi0gRml4IGEgYnVnIGluIHRoZSBi b290cCBjb2RlIHdoZXJlIHJlc3BvbnNlcyBvbiB0aGUgbG9jYWwgbmV0IHdvdWxkCiAgYmUgc2Vu dCB0byB0aGUgd3JvbmcgTUFDIGFkZHJlc3MuICAgVGhhbmtzIHRvIEplcnJ5IFNjaGF2ZSBmb3IK ICBjYXRjaGluZyB0aGlzIG9uZS4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2 ZWwgMwoKLSBJbiB0aGUgREhDUCBjbGllbnQsIGV4ZWN1dGUgY2xpZW50IHN0YXRlbWVudHMgcHJp b3IgdG8gdXNpbmcgdGhlIHZhbHVlcwogIG9mIG9wdGlvbnMsIHNvIHRoYXQgdGhlIGNsaWVudCBj b25maWd1cmF0aW9uIGNhbiBvdmVycmlkZGVuLCBlLmcuLCB0aGUKICBsZWFzZSByZW5ld2FsIHRp bWUuCgotIEZpeCBhIHJlZmVyZW5jZSBjb3VudGluZyBlcnJvciB0aGF0IHdvdWxkIHJlc3VsdCBp biB2ZXJ5IHJlcHJvZHVjaWJsZQogIGZhaWx1cmVzIGluIHVwZGF0ZXMsIGFzIHdlbGwgYXMgb2Nj YXNpb25hbCBjb3JlIGR1bXBzLCBpZiBhIHpvbmUgd2FzCiAgZGVjbGFyZWQgd2l0aG91dCBhIGtl eS4KCi0gRml4IHNvbWUgTGludXggMi4wIGNvbXBpbGF0aW9uIHByb2JsZW1zLgoKLSBGaXggYSBi dWcgaW4gc2NvcGUgZXZhbHVhdGlvbiBkdXJpbmcgZXhlY3V0aW9uIG9mICJvbiIgc3RhdGVtZW50 cyB0aGF0CiAgY2F1c2VkIHZhbHVlcyBub3QgdG8gYmUgcmVjb3JkZWQgb24gbGVhc2VzLgoKLSBJ ZiB0aGUgZGhjcC1tYXgtbWVzc2FnZS1zaXplIG9wdGlvbiBpcyBzcGVjaWZpZWQgaW4gc2NvcGUs IGFuZCB0aGUKICBjbGllbnQgZGlkbid0IHNlbmQgdGhpcyBvcHRpb24sIHVzZSB0aGUgb25lIHNw ZWNpZmllZCBpbiBzY29wZSB0bwogIGRldGVybWluZSB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBy ZXNwb25zZS4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMgoKLSBGaXgg YSBjYXNlIHdoZXJlIHNwYXduaW5nIHN1YmNsYXNzZXMgd2VyZSBiZWluZyBhbGxvY2F0ZWQKICBp bmNvcnJlY3RseSwgcmVzdWx0aW5nIGluIGEgY29yZSBkdW1wLgoKLSBGaXggYSBjYXNlIHdoZXJl IHRoZSBESENQIHNlcnZlciBtaWdodCBpbmFwcHJvcHJpYXRlbHkgTkFLIGEKICBSRU5FV0lORyBj bGllbnQuCgotIEZpeCBhIHBsYWNlIGRoY3ByZXF1ZXN0KCkgd2hlcmUgc3RhdGljIGxlYXNlcyBj b3VsZCBsZWFrLgoKLSBJbmNsdWRlIG1lbW9yeS5oIGluIG9tYXBpcF9wLmggc28gdGhhdCB3ZSBk b24ndCBnZXQgd2FybmluZ3MgYWJvdXQKICB1c2luZyBtZW1jbXAoKS4KCgkJQ2hhbmdlcyBzaW5j ZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMQoKLSBOb3RpY2Ugd2hlbiBTSU9DRklHQ09ORiByZXR1 cm5zIG1vcmUgZGF0YSB0aGFuIGZpdCBpbiB0aGUgYnVmZmVyIC0KICBhbGxvY2F0ZSBhIGxhcmdl ciBidWZmZXIsIGFuZCByZXRyeS4gICBUaGFua3MgdG8gR3JlZyBGYXVzYWsgZm9yCiAgcG9pbnRp bmcgdGhpcyBvdXQuCgotIEluIHRoZSBzZXJ2ZXIsIGlmIG5vIGludGVyZmFjZXMgd2VyZSBjb25m aWd1cmVkLCByZXBvcnQgYW4gZXJyb3IgYW5kCiAgZXhpdC4KCi0gRG9uJ3QgZXZlciByZWNvcmQg YSBzdGF0ZSBvZiAnc3RhcnR1cCcuCgotIERvbid0IHRyeSB0byBldmFsdWF0ZSB0aGUgbG9jYWwg ZmFpbG92ZXIgYmluZGluZyBhZGRyZXNzIGlmIG5vbmUgd2FzCiAgc3BlY2lmaWVkLiAgIFRoYW5r cyB0byBKb3NlcGggQnJldSBmb3IgZmluZGluZyB0aGlzLgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkaGNwLWFubm91bmNlIG1haWxpbmcgbGlzdApkaGNw LWFubm91bmNlQGxpc3RzLmlzYy5vcmcKaHR0cHM6Ly9saXN0cy5pc2Mub3JnL21haWxtYW4vbGlz dGluZm8vZGhjcC1hbm5vdW5jZQ==